;===============================================================================
; 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

,0,0,0,0 ; wave data
        DB    1,1,1,2,2,3,5,7 ; laatste en eerste gelijk !!!

        DB    -1      