Learning POKEY
I took some time out, today, to learn the basics of bit-banging the POKEY chip.. I will be doing more complicated experiments as my development with the invaders game continues....
; ; SOUND01 - PLAY A MUSICAL SCALE ; .INCLUDE atariequ.asm ; ATARI EQUATES *=$0600 ; CRAM OURSELVES IN PAGE 6 JMP START ; GO TO START, SKIP OVER TABLE ; ; TABLES ; PCHTBL .BYTE $79,$6C,$60,$5B,$51,$48,$40,$3C ; C MAJOR SCALE DLYTBL .BYTE $3C,$1E,$1E,$1E,$1E,$1E,$1E,$FF ; QUARTERS ON THE ENDS, EIGHTHS IN THE MIDDLE CTLTBL .BYTE $A8,$A8,$A8,$A8,$A8,$A8,$A8,$A8 ; ALL HALF VOLUME, PURE TONES (SQUARE) ; ; START ; START CLD ; CLEAR DECIMAL FLAG CLC ; CLEAR CARRY FLAG RESET LDA #$00 ; STA AUDCTL ; CLEAR AUDIO CONTROL REGISTER LDX #$00 ; X = OFFSET COUNTER FOR TABLES LOOP LDA PCHTBL,X ; GRAB CURRENT PITCH STA COLOR2 ; CHANGE COLOR TO DENOTE WHAT IS BEING PLAYED. STA AUDF1 ; STORE IT LDA CTLTBL,X ; GRAB CURRENT DISTORTION/VOLUME STA AUDC1 ; STORE IT DELAY LDA RTCLOK+2 ; GRAB LOW BYTE OF REAL TIME CLOCK AND DLYTBL,X ; LOP OFF EVERYTHING BUT NEWHAT WE WANT TO COUNT TO BNE DELAY ; ELSE WAIT SOME MORE. DECLIK LDA RTCLOK+2 ; READ RTCLOK AGAIN AND DLYTBL,X ; CHECK AGAIN BEQ DECLIK ; WAIT IF IT MATCHES NEXTNOTE INX ; INCREMENT X CPX #$08 ; HAVE ALL 8 NOTES PASSED? BEQ STOP ; YES, STOP BCC LOOP STOP LDA #$00 ; CLEAR EVERYTHING STA AUDF1 ; FREQUENCY STA AUDC1 ; AND DISTORTION/VOLUME INFINITE JMP INFINITE ; AND HIT THE INFINITE LOOP
the resulting sound output is here: arcadia.zip
0 Comments
Recommended Comments
There are no comments to display.