;   

        ORG     #6400
_12JM
-       INCBIN  "12jm"          ;  

        ORG     #64B0
ONOFF
-       INCBIN  "onoff"         ; ON/OFF

        ORG     #64D0
DATA_R
-       INCBIN  "data"          ;  

        ORG     #6528
SCR1
-       INCBIN  "SCR1"          ; AVANGARD

        ORG     #7968
SCR2
-       INCBIN  "SCR2"          ;

END1

        ORG     #6000

        DI 
        XOR     A
        CALL    8859            ; 
        LD      IY,23610
        RES     4,(IY+1)
        LD      A,#3F
        IM      1

        LD      HL,#5AFF
        LD      DE,#5AFE
        LD      BC,#300
        LD      (HL),#7         ; 
        LDDR 
        LD      BC,#17FF
        LD      (HL),C
        LDDR 
        EI 

        LD      HL,#C9F1
        LD      (#5CC2),HL
        LD      A,#10
        LD      BC,#7FFD
        OUT     (C),A

        LD      HL,_12JM
        LD      DE,#4860+10     ; 
        CALL    LDI11           ; 
        LD      HL,DATA_R
        LD      DE,#50E0+10     ; 
        LD      A,8
        CALL    LDI11+2         ;   

        LD      HL,0            ; KEMPSTON'
        LD      D,L
        LD      E,L
        LD      BC,#FADF        ;KEMPSTON MOUSE
MOUSE   IN      A,(C)
        CPL 
        OR      E
        LD      E,A
        XOR     A
        IN      A,(#1F)         ;KEMPSTON JOY
        OR      D
        LD      D,A
        DEC     L
        JR      NZ,MOUSE

        LD      A,D
        AND     #1F
        JR      Z,$+2+1         ;   
        DEC     L

        LD      A,E
        AND     A
        JR      Z,$+2+1         ; 
        DEC     H

        LD      (K_JOY),HL      ; 

CIKL    HALT 
        LD      A,(K_JOY)
        LD      DE,#4860+10+11
        CALL    _ONOFF
        LD      A,(K_MOUSE)
        LD      DE,#4880+10+10
        CALL    _ONOFF

        LD      A,#F7
        IN      A,(#FE)
        RRA 
        JR      NC,ODIN
        RRA 
        JR      NC,TWO
        LD      A,#7F
        IN      A,(#FE)
        RRA 
        JR      NC,SPACE

COUNTER LD      A,0
        DEC     A
        LD      (COUNTER+1),A
        JR      Z,SPACE
        JR      CIKL
ODIN    LD      HL,K_JOY
ODIN1   LD      A,(HL)
        CPL 
        LD      (HL),A
        HALT 
        HALT 
        HALT 
        HALT 
        JR      CIKL
TWO     LD      HL,K_MOUSE
        JR      ODIN1
SPACE
        LD      LX,4
SPACE_1 LD      C,8
SPACE_2 HALT 
        LD      B,192
ADRES   LD      HL,#4000
        LD      DE,#401F
SPACE_3 SRL     (HL)
        EX      DE,HL
        SLA     (HL)
        CALL    DOWN_DE
        EX      DE,HL
        CALL    DOWN_DE
        DJNZ    SPACE_3
        DEC     C
        JR      NZ,SPACE_2
        LD      HL,ADRES+1
        INC     (HL)
        LD      HL,ADRES+4
        DEC     (HL)
        DEC     LX
        JR      NZ,SPACE_1

        CALL    GASIM
        LD      HL,SCR1
        CALL    PROQWL
        CALL    PAUSE
        CALL    GASIM
        LD      HL,SCR2
        CALL    PROQWL
        CALL    PAUSE

        LD      IY,23610
        LD      HL,#6600
        LD      BC,61*256+5     ;   60 
        LD      DE,(23796)
        CALL    #3D13

        LD      A,#17
        CALL    PAGE
        LD      HL,#6600+#CCF+#716+#1151
        LD      DE,#DB00
        LD      BC,#1800
        LDIR                    ; 
        LD      A,#10
        CALL    PAGE
        LD      HL,#6600+#CCF+#716
        LD      DE,#C000
        LD      BC,#1200
        LDIR                    ;
        LD      HL,#6600+#CCF
        LD      DE,#8000
        LD      BC,#0800
        LDIR                    ;
        LD      HL,#6600
        LD      D,H
        LD      E,L
        DI 
        CALL    #5B00           ;DEHRUST  

        LD      HL,(23796)      ;/
        LD      (#70DB),HL      ; 
        LD      DE,109          ;    

MUS_LEN INC     L
        BIT     4,L
        JR      Z,$+2+3
        LD      L,0
        INC     H
        DEC     DE
        LD      A,D
        OR      E
        JR      NZ,MUS_LEN      ; 

        LD      (#70C7),HL      ; 
        LD      A,(K_JOY)
        LD      (#6600+1),A     ; 
        LD      A,(K_MOUSE)
        LD      (#6600+13),A    ; 
        JP      #6600           ; 


PAGE    LD      BC,#7FFD
        OUT     (C),A
        RET 

PAUSE   LD      B,50
        HALT 
        DJNZ    $-1
        RET 

K_JOY   DEFB    0               ;0 
K_MOUSE DEFB    0               ;#FF 


LDI11   LD      A,16
        EX      AF,AF'
        LD      A,E
       DUP      11
        LDI 
       EDUP 
        LD      E,A
        CALL    DOWN_DE
        EX      AF,AF'
        DEC     A
        JR      NZ,LDI11+2
        RET 

DOWN_DE INC     D
        LD      A,D
        AND     7
        RET     NZ
        LD      A,E
        ADD     A,#20
        LD      E,A
        RET     C
        LD      A,D
        SUB     8
        LD      D,A
        RET 

_ONOFF  LD      HL,ONOFF
        OR      A
        JR      Z,ON
        LD      HL,ONOFF+16
ON      LD      A,8
        EX      AF,AF'
        LDI 
        LDI 
        DEC     E
        DEC     E
        CALL    DOWN_DE
        EX      AF,AF'
        DEC     A
        JR      NZ,ON+2
        RET 

;-------  
GASIM
        LD      HL,CHUNK88_
        LD      HX,16           ;16 
TRACK_0 LD      DE,#4004
        LD      LX,8
TRACK_1 PUSH    DE
        LD      B,24            ;24 
        LD      C,(HL)
        INC     HL
TRACK_2
       DUP      24
        LD      A,(DE)
        AND     C
        LD      (DE),A
        INC     E
       EDUP 
        LD      A,E
        ADD     A,#20-24
        LD      E,A
        JR      NC,$+2+4
        LD      A,D
        ADD     A,8
        LD      D,A             ;  
        DJNZ    TRACK_2
        POP     DE
        INC     D
        DEC     LX
        JR      NZ,TRACK_1
        LD      DE,0-8-8
        ADD     HL,DE
        HALT 
        DEC     HX
        JP      NZ,TRACK_0      ; 
        RET 

;-------  
PROQWL
        HALT 
        LD      A,24            ; 
        LD      DE,#5804
PRO_0  DUP      24
        LDI 
       EDUP 
        EX      DE,HL
        LD      BC,#20-24
        ADD     HL,BC
        EX      DE,HL
        DEC     A
        JR      NZ,PRO_0

        EXX 
        LD      HL,CHUNK88      ; , 
        EXX 
        LD      HX,16           ;16 
PR_0    PUSH    HL
        LD      DE,#4004
        LD      LX,8
PR_1    PUSH    DE
        LD      B,24            ;24 
        EXX 
        LD      A,(HL)
        INC     HL
        EXX 
        LD      C,A
PR_2
       DUP      24
        LD      A,(HL)
        INC     HL
        AND     C
        LD      (DE),A
        INC     E
       EDUP 
        LD      A,E
        ADD     A,#20-24
        LD      E,A
        JR      NC,$+2+4
        LD      A,D
        ADD     A,8
        LD      D,A             ;  
        DEC     B
        JP      NZ,PR_2
        POP     DE
        INC     D
        DEC     LX
        JP      NZ,PR_1
        HALT 
        POP     HL
        DEC     HX
        JP      NZ,PR_0         ; 
        RET 



CHUNK88 DEFB    #00,#00,#00,#00,#00,#00,#00,#00
        DEFB    #88,#00,#00,#00,#88,#00,#00,#00
        DEFB    #88,#00,#22,#00,#88,#00,#22,#00
        DEFB    #88,#00,#AA,#00,#88,#00,#AA,#00
        DEFB    #AA,#00,#AA,#00,#AA,#00,#AA,#00
        DEFB    #AA,#44,#AA,#00,#AA,#44,#AA,#00
        DEFB    #AA,#44,#AA,#11,#AA,#44,#AA,#11
        DEFB    #AA,#44,#AA,#55,#AA,#44,#AA,#55
        DEFB    #AA,#55,#AA,#55,#AA,#55,#AA,#55
        DEFB    #AA,#55,#BB,#55,#AA,#55,#BB,#55
        DEFB    #EE,#55,#BB,#55,#EE,#55,#BB,#55
        DEFB    #FF,#55,#BB,#55,#FF,#55,#BB,#55
        DEFB    #FF,#55,#FF,#55,#FF,#55,#FF,#55
        DEFB    #FF,#77,#FF,#55,#FF,#77,#FF,#55
        DEFB    #FF,#77,#FF,#DD,#FF,#77,#FF,#DD
CHUNK88_ DEFB   #FF,#FF,#FF,#FF,#FF,#FF,#FF,#FF

END

