start EQU 0x200 wr377 EQU 0x08A1 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 j 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 ; ton 1 aus CALL wr76489 LDI 0xbf ; ton 2 aus CALL wr76489 LDI 0xdf ; ton 3 aus CALL wr76489 LDI 0xff ; rauschen aus CALL wr76489 LDI 0x90 CALL wr76489 LDI 0x05 ST j loopJ LD j ; FOR J=5 TO 17 SUBI 0x12 ; 0x12=18=Abbruch BEQ NextJ LDI 0x80 ST i loopI LD i ; FOR I=128 TO 143 SUBI 0x90 ; 0x90=144=Abbruch BEQ NextI LD i CALL wr76489 ; OUT N, I (0x80..8F) LD j CALL wr76489 ; OUT N, J (0x05..11) LDWI -150 ; FOR D=0 TO 10; NEXT D; REM DELAY LOOP 10ms [-300 ~20..23ms] STW Temp wait1 LDW Temp ; delay ADDI 0x01 STW Temp BNE wait1 INC i BRA loopI NextI INC j ; nach NEXT I BRA loopJ NextJ LDI 0x9f ; nach NEXT J / ton 1 aus CALL wr76489 LDI 0xe4 ; 0xe4=228 rauschen auf maximum CALL wr76489 LDI 0xf0 ; 0xe4=240 ST i loopI2 LD i ; FOR I=240 TO 255 SUBI 0x00 BEQ NextI2 LD i CALL wr76489 LDWI -1600 ; FOR D=0 TO 75; NEXT D; REM DELAY LOOP 114ms [-300 ~180..182ms] STW Temp wait2 LDW Temp ; delay ADDI 0x01 STW Temp BNE wait2 INC i BRA loopI2 NextI2 LDWI -30000 ; 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