;(C)BAZon/offT -> AMDiNtRo1998!
;    /
;    >>> sPeCiAlLy FoR mAd GyE cAllEd WRECKER!

FONT    EQU     #8300
AMD_    EQU     31100
MUZ     EQU     49152
TEXT    EQU     36000

        ORG     AMD_
        +INCBIN "#AMD6#"

        ORG     FONT
        +INCBIN "FONT"

        ORG     TEXT
        +INCBIN "4INTRO.W"

        ORG     MUZ
        +INCBIN  "MAKEASI"

        ORG     32768
        CALL    CLSKA
        CALL    AMD_
        CALL    PRE
        JP      PODP

CLSKA   LD      HL,#4000
        LD      DE,#4001
        LD      BC,6911
        LD      (HL),L
        LDIR 
        XOR     A
        OUT     (254),A
        RET 

PRE     CALL    MUZ
        LD HL,PRER
        LD A,24
        LD (65535),A
        LD A,195
        LD (65524),A
        LD (65525),HL
        LD HL,#FE00
        LD DE,#FE01
        LD BC,256
        LD (HL),#FF
        LD A,H
        LDIR 
        DI 
        LD I,A
        IM 2
        EI 
        RET 

IMOFF   LD      A,2
        OUT     (254),A
        EI 
        HALT 
        XOR     A
        OUT     (254),A
        POP     BC
        POP     HL
        DI 
        LD A,63
        LD I,A
        IM 1
        CALL    MUZ
        CALL    CLSKA
        LD      IY,23610
        EXX 
        LD      HL,10072
        EXX 
        EI 
MMJ     LD      A,0
        RET 

PRER    PUSH HL
        PUSH DE
        PUSH BC
        PUSH AF
        PUSH IX
        PUSH IY
        CALL    MUZ+6
        POP IY
        POP IX
        POP AF
        POP BC
        POP DE
        POP HL
        EI 
        RETI 

OPSA    LD      HL,SPR
SUX     LD      A,(HL)
        CP      #FF
        RET     Z
REK1    CP      14
        JR      NZ,SEX
REK2    LD      A,22
        LD      (HL),A
SEX     INC     HL
        JR      SUX

KWADRA  LD      IX,ADRS
        LD      B,25
SD3     PUSH    BC
        LD      L,(IX+0)
        LD      H,(IX+1)
METKA2  LD      DE,SPR
        LD      B,5
SD2     PUSH    HL
        PUSH    BC
        LD      B,4
SD0     PUSH    BC
        LD      B,4
SD1     LD      A,(DE)
        LD      (HL),A
METKA1  INC     DE
        INC     HL
        DJNZ    SD1
        PUSH    DE
        LD      DE,28
        ADD     HL,DE
        POP     DE
        POP     BC
        DJNZ    SD0
        EI 
        HALT 
        POP     BC
        POP     HL
        DJNZ    SD2
        INC     IX
        INC     IX
        POP     BC
        DJNZ    SD3
        RET 

ADRS    DEFB    #49,#58,#51,#59,#D5,#58,#C9,#59,#55,#5A
        DEFB    #59,#58,#C9,#58,#D9,#59,#D1,#58,#51,#58
        DEFB    #49,#5A,#59,#59,#CD,#59,#4D,#5A,#55,#58
        DEFB    #59,#5A,#49,#59,#55,#59,#4D,#58,#CD,#58
        DEFB    #D5,#59,#D9,#58,#D1,#59,#4D,#59,#51,#5A

SPR     DEFB    14,14,14,14
        DEFB    14,14,14,14
        DEFB    14,14,14,14
        DEFB    14,14,14,14

        DEFB    14,14,14,0
        DEFB    14,14,14,0
        DEFB    14,14,14,0
        DEFB    0,0,0,0

        DEFB    14,14,0,0
        DEFB    14,14,0,0
        DEFB    0,0,0,0
        DEFB    0,0,0,0

        DEFB    14,0,0,0
        DEFB    0,0,0,0
        DEFB    0,0,0,0
        DEFB    0,0,0,0

        DEFB    0,0,0,0
        DEFB    0,0,0,0
        DEFB    0,0,0,0
        DEFB    0,0,0
SPREND  DEFB    0
        DEFB    #FF

PODP    LD      HL,TEXT
        XOR     A
        LD      (STRAN),A
PODP1   LD      A,(STRAN)
        CP      6            ;KOL-VO STRAN
        JR      Z,PODP
        INC     A
        LD      (STRAN),A
        CALL    PRINT
        PUSH    HL
        LD      A,#1B
        LD      (METKA1),A
        LD      HL,SPREND
        LD      (METKA2+1),HL
        LD      A,22
        LD      (REK1+1),A
        LD      A,14
        LD      (REK2+1),A
        CALL    OPSA
        CALL    KWADRA
        LD      BC,666 ;-)
LLL1    PUSH    BC
        EI 
        HALT 
        LD      BC,#7FFE
        IN      A,(C)
        BIT     0,A
        JP      Z,IMOFF
        LD      BC,#BFFE
        IN      A,(C)
        BIT     0,A
        POP     BC
        JR      Z,LLL
        DEC     BC
        LD      A,B
        OR      C
        JR      NZ,LLL1
LLL     LD      A,#13
        LD      (METKA1),A
        LD      HL,SPR
        LD      (METKA2+1),HL
        LD      A,14
        LD      (REK1+1),A
        LD      A,22
        LD      (REK2+1),A
        CALL    OPSA
        CALL    KWADRA
        POP     HL
        JR      PODP1

PRINT   LD D,4
        LD B,16
LM      PUSH BC
        LD E,#14
        CALL PRINT64
        POP BC
        DJNZ LM
        RET 

PRINT64 PUSH HL
        PUSH DE
        SRL E
        LD A,D
        AND #18
        OR #40
        LD H,A
        LD A,D
        AND 7
        RRCA 
        RRCA 
        RRCA 
        OR E
        LD L,A
        LD (AD_SCRN+1),HL
        POP DE
        POP HL
PRINT_X LD A,(HL)
        INC HL
        CP 10
        JR Z,PRINT13
        CP 9
        JR Z,PRINT9
        CP 13
        JR Z,PRINT_X
        CALL PR_SYMB
        JP PRINT_X
PRINT9  LD A,7
        OR E
        INC A
        LD C,A
P9_LOOP LD A,E
        CP C
        JR Z,PRINT_X
        LD A," "
        CALL PR_SYMB
        JP P9_LOOP
PRINT13 PUSH HL
        LD A,E
        CP 58
        JR Z,LABEL_9
        LD A," "
        CALL PR_SYMB
        JR $-10
LABEL_9 POP HL
        LD E,0
        INC D
        LD A,D
        CP 24
        RET C
        DEC D
        RET 
PR_SYMB PUSH DE
        EXX 
AD_SCRN LD HL,0
        LD E,A
        LD D,'FONT
        POP AF
        JP NC,MASK_0F
MASK_F0 LD A,L
        INC A
        LD (AD_SCRN+1),A
        LD A,(DE)
        AND #0F
        LD C,A
        LD A,(HL)
        AND #F0
        OR C
        LD (HL),A
        INC H
        INC D
        LD A,(DE)
        AND #0F
        LD C,A
        LD A,(HL)
        AND #F0
        OR C
        LD (HL),A
        INC H
        INC D
        LD A,(DE)
        AND #0F
        LD C,A
        LD A,(HL)
        AND #F0
        OR C
        LD (HL),A
        INC H
        INC D
        LD A,(DE)
        AND #0F
        LD C,A
        LD A,(HL)
        AND #F0
        OR C
        LD (HL),A
        INC H
        INC D
        LD A,(DE)
        AND #0F
        LD C,A
        LD A,(HL)
        AND #F0
        OR C
        LD (HL),A
        INC H
        INC D
        LD A,(DE)
        AND #0F
        LD C,A
        LD A,(HL)
        AND #F0
        OR C
        LD (HL),A
        INC H
        INC D
        LD A,(DE)
        AND #0F
        LD C,A
        LD A,(HL)
        AND #F0
        OR C
        LD (HL),A
        INC H
        INC D
        LD A,(DE)
        AND #0F
        LD C,A
        LD A,(HL)
        AND #F0
        OR C
        LD (HL),A
        EXX 
        INC E
        RET 
MASK_0F LD A,(DE)
        AND #F0
        LD C,A
        LD A,(HL)
        AND #0F
        OR C
        LD (HL),A
        INC H
        INC D
        LD A,(DE)
        AND #F0
        LD C,A
        LD A,(HL)
        AND #0F
        OR C
        LD (HL),A
        INC H
        INC D
        LD A,(DE)
        AND #F0
        LD C,A
        LD A,(HL)
        AND #0F
        OR C
        LD (HL),A
        INC H
        INC D
        LD A,(DE)
        AND #F0
        LD C,A
        LD A,(HL)
        AND #0F
        OR C
        LD (HL),A
        INC H
        INC D
        LD A,(DE)
        AND #F0
        LD C,A
        LD A,(HL)
        AND #0F
        OR C
        LD (HL),A
        INC H
        INC D
        LD A,(DE)
        AND #F0
        LD C,A
        LD A,(HL)
        AND #0F
        OR C
        LD (HL),A
        INC H
        INC D
        LD A,(DE)
        AND #F0
        LD C,A
        LD A,(HL)
        AND #0F
        OR C
        LD (HL),A
        INC H
        INC D
        LD A,(DE)
        AND #F0
        LD C,A
        LD A,(HL)
        AND #0F
        OR C
        LD (HL),A
        EXX 
        INC E
        RET 

STRAN   DEFB    0
