122 lines
3.2 KiB
Plaintext
122 lines
3.2 KiB
Plaintext
; 10 REM ** BELL OR CHIME **
|
|
; 20 N=7; REM PORT NUMBER OF SN76489
|
|
; 30 OUT N, 159; REM TURN OFF TONE 1
|
|
; 40 OUT N, 191; REM TURN OFF TONE 3
|
|
; 50 OUT N, 223; REM TURN OFF TONE 4
|
|
; 60 OUT N, 255; REM TURN OFF NOISE
|
|
; 70 OUT N, 140; REM TONE 1 AT 679HZ
|
|
; 80 OUT N, 5
|
|
; 90 OUT N, 170; REM TONE 2 AT 694HZ
|
|
; 100 OUT N, 5
|
|
; 110 FOR B=0 TO 11; REM B=NUMBER OF BELLS
|
|
; 120 FOR I=145 TO 159; REM LOOP TO GENERATE VOLUME STEPS
|
|
; 130 OUT N, I; OUT N, (I+32); REM CHANGE VOLUME FOR TONE 1&2
|
|
; 140 FOR D=0 TO 75; NEXT D; REM DELAY LOOP
|
|
; 150 NEXT I
|
|
; 160 NEXT B
|
|
; 190 PRINT "END OF SOUND"
|
|
|
|
start EQU 0x200
|
|
|
|
SYS_ExpanderControl_v4_40 EQU 0x0b09
|
|
SYS_SpiExchangeBytes_v4_134 EQU 0x0b15
|
|
|
|
sysFn EQU 0x22
|
|
sysArgs0 EQU 0x24
|
|
sysArgs2 EQU 0x26
|
|
sysArgs4 EQU 0x28
|
|
sysArgs6 EQU 0x2A
|
|
|
|
Temp EQU 0x81
|
|
Counter EQU 0x83
|
|
TLow EQU 0x84
|
|
THigh EQU 0x85
|
|
IOAddr EQU 0x84
|
|
OutValue EQU 0x85
|
|
b EQU 0x86
|
|
i EQU 0x87
|
|
|
|
frame EQU 0x9E
|
|
giga_frameCount EQU 0x0E
|
|
|
|
_startAddress_ EQU 0x0200
|
|
|
|
_callTable_ EQU 0x007E
|
|
|
|
start LDWI SYS_ExpanderControl_v4_40
|
|
STW sysFn
|
|
LDWI 0x0100 ; /WR auf high
|
|
SYS 40
|
|
|
|
LDI 0x9f ; OUT N, 159; REM TURN OFF TONE 1
|
|
CALL wr76489
|
|
LDI 0xbf ; OUT N, 191; REM TURN OFF TONE 3
|
|
CALL wr76489
|
|
LDI 0xdf ; OUT N, 223; REM TURN OFF TONE 4
|
|
CALL wr76489
|
|
LDI 0xff ; OUT N, 255; REM TURN OFF NOISE
|
|
CALL wr76489
|
|
LDI 0x8c ; OUT N, 140; REM TONE 1 AT 679HZ
|
|
CALL wr76489
|
|
LDI 0x05 ; OUT N, 5
|
|
CALL wr76489
|
|
LDI 0xaa ; OUT N, 170; REM TONE 2 AT 694HZ
|
|
CALL wr76489
|
|
LDI 0x05 ; OUT N, 5
|
|
CALL wr76489
|
|
|
|
|
|
LDI 0x00
|
|
ST b
|
|
loopB LD b ; FOR B=0 TO 11; REM B=NUMBER OF BELLS
|
|
SUBI 0x0c ; 0x0c=12=Abbruch
|
|
BEQ NextB
|
|
LDI 0x91 ; I=145=0x91
|
|
ST i
|
|
loopI LD i ; FOR I=145 TO 159; REM LOOP TO GENERATE VOLUME STEPS
|
|
SUBI 0xa0 ; 0xa0=160=Abbruch
|
|
BEQ NextI
|
|
LD i
|
|
CALL wr76489 ; OUT N, I; OUT N, (I+32); REM CHANGE VOLUME FOR TONE 1&2
|
|
LD i
|
|
ADDI 0x20 ; 32=0x20
|
|
CALL wr76489 ; OUT N, J (0x05..11)
|
|
|
|
LDWI -1600 ; FOR D=0 TO 75; NEXT D; REM DELAY LOOP 114ms [-300 ~180..182ms]
|
|
STW Temp
|
|
wait1 LDW Temp ; delay
|
|
ADDI 0x01
|
|
STW Temp
|
|
BNE wait1
|
|
|
|
INC i
|
|
BRA loopI
|
|
NextI INC b ; nach NEXT I
|
|
BRA loopB
|
|
|
|
NextB LDI 0x9f ; nach NEXT J
|
|
|
|
|
|
NextI2 LDWI 0 ; maximum warteschleife [0 ~ 4,9s | 1 ~ 76,3µs]
|
|
STW Temp
|
|
wait3 LDW Temp ; delay
|
|
ADDI 0x01
|
|
STW Temp
|
|
BNE wait3
|
|
|
|
BRA start ; nach NEXT I
|
|
|
|
wr76489 ST OutValue
|
|
LDWI SYS_ExpanderControl_v4_40
|
|
STW sysFn
|
|
LDI 0x10 ; DEVADDR0 = 0x00, DEVADDR1 = 0x10
|
|
ST IOAddr
|
|
LDW IOAddr ; vAC = (0x82,0x83) Low Byte = DEVADDRx, High Byte = Data = Couter
|
|
SYS 40
|
|
LDWI 0x0000 ; /WR low
|
|
SYS 40
|
|
LDWI 0x0100 ; dalay 8µS nötig
|
|
LDWI 0x0100 ; /WR high
|
|
SYS 40
|
|
RET
|