
|
Wave routine TBM, 00-00-94
;===============================================================================
; WAVE routine, niet op een hook...
;
; (c) 1994 by TBM, TECHNO CREW
;
ORG &HC000
ST: LD A,5 ; screen 5
CALL &H5F
LD A,63 ; page 2
OUT (&H99),A ;
LD A,2 OR 128
OUT (&H99),A
MAIN: EI ; 2 int's wachten
; HALT ; haal rem teken weg voor een leuk effect
HALT
DI ; no breaks
LD A,2 ; status reg. #2
OUT (&H99),A
LD A,15 OR 128
OUT (&H99),A
LD A,18 OR 128 ; register 18 (vdp(19)) instellen op &H9B
OUT (&H99),A
LD A,17 OR 128
OUT (&H99),A
LD HL,(POINTR) ; zet pointer goed
LD A,(HL)
CP -1
JR NZ,VERDER
LD HL,DATA
VERDER: INC HL
LD (POINTR),HL
CHK_VR: IN A,(&H99) ; check op Vertical interrupt
AND &H40
JR NZ,CHK_VR
LD B,127 ; aantal lijnen
LOOP: IN A,(&H99) ; check op Horizontal interrupt
AND &H20
JR Z,LOOP
LD A,(HL) ; zorg dat de pointer goed staat
CP -1
JR NZ,VERDE2
LD HL,DATA
VERDE2: LD A,(HL) ; reg #18=wave data
OUT (&H9B),A
INC HL ; verhoog teller
DJNZ LOOP ; herhaal tot aantal lijnen 0 is
XOR A ; zet status reg #0 (noodzakelijk)
OUT (&H99),A
LD A,15 OR 128
OUT (&H99),A
LD A,0 ; reg #18=0 (leuk effect als dit weg is...)
OUT (&H9B),A
IN A,(&HAA) ; check op spatie...
AND &HF0
OR 8
OUT (&HAA),A
IN A,(&HA9)
AND 1
JR NZ,MAIN ; nee, gelukkig herhaal wave
XOR A ; screen 0
JP &H5F
POINTR: DW DATA ; pointer
DATA: DB 7,5,3,2,2,1,1,1,0,0,0,0 ; wave data
DB 1,1,1,2,2,3,5,7 ; laatste en eerste gelijk !!!
DB -1 ; einde
|