RC-Project-Board/projects/PB-002 Covox Sound/software/RC-ONE/003-Tone/tone.asm

57 lines
1.4 KiB
NASM

.CR 6502
.TF tone.hex,INT
.LF tone.list
* ----------------------------------------------------------------------
* PLAY A SINGLE NOTE USING TIMER1 ON 6522 (VIA) FOUND ON THE PROJECT
* BOARD. REQUIRES INTERRUPT VECTOR CONFIGURED TO POINT TO INTR (SEE
* LISTING).
*
VOLUME .EQ $D0
POINTH .EQ $FB DIGITS 1-2
POINTL .EQ $FA DIGITS 3-4
INH .EQ $F9 DIGITS 5-6
SCANDS .EQ $1F1F
VIA .EQ $1700
IRB .EQ VIA
ORA .EQ VIA + $1
DDRB .EQ VIA + $2
DDRA .EQ VIA + $3
T1CL .EQ VIA + $4
T1CH .EQ VIA + $5
ACR .EQ VIA + $B
IER .EQ VIA + $E
.OR $0200
.TA $0200
SETUP LDA #$FF SET PORT A
STA DDRA AS OUTPUTS
TIMER LDA #$FF RESET TIMER1
STA T1CL
STA T1CH
LDA #$40 FREE-RUN MODE WITHOUT
STA ACR ENABLING OUTPUT ON PB7
LDA #$C0 ENABLE VIA
STA IER INTERRUPT
CLI ENABLE CPU INTERRUPT
SETNOTE LDA #$E4
STA T1CL
LDA #$17
STA T1CH
WAIT LDX #$7F
MORE NOP
DEX
BNE MORE
JMP WAIT
INTR LDA #$FF
EOR VOLUME
STA VOLUME
STA ORA
CLI
RTI