57 lines
1.4 KiB
NASM
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 |