118 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
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
 |