Jump to content
IGNORED

Memoirs of an X register - Learning POKEY


RSS Bot

Recommended Posts

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....

 

CODE

;

; 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: atari000.wav

 

http://www.atariage.com/forums/index.php?a...;showentry=1672

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...