;
        ORG     #8000
CHUN8   EQU     #E000
ATRTAB  EQU     #DA00
FONT    EQU     #DB00
FNTTAB  EQU     #DE00
FRMBUF  EQU     #E000
;MASKBUF EQU     #E040
BRIGBUF EQU     #E080
;
;INIT SECTION
;WARNING!!! EXIT GUARANTED IF SP<=8000
        XOR     A
        OUT     (#FE),A
        LD      L,A
        LD      H,#5B
SCRN
        DEC     HL
        LD      (HL),A
        BIT     6,H
        JR      NZ,SCRN
        LD      L,A
        LD      H,#83
        LD      D,H
        LD      E,1
        LD      BC,#7D00
        LD      (HL),L
        LDIR; CLEANUP FROM #8300 TO #FFFF

;FONT MASK DEPACKING
        LD      D,FONT&H;H=#DB
        LD      L,E
        LD      H,#3D
        PUSH    DE
IFN0
        LD      A,(HL)
        SLA     A
        OR      (HL)
        LD      (DE),A
        INC     HL
        INC     DE
        BIT     6,H
        JR      Z,IFN0
        POP     HL
        LD      C,8
        LD      E,#20
TBFAN
        EX      DE,HL
        LD      (HL),E
        INC     H
        LD      (HL),D
        DEC     H
        EX      DE,HL
        ADD     HL,BC
        INC     E
        JR      NZ,TBFAN
        LD      C,L
        LD      L,B;0
LIP1
        LD      DE,CN8
LIP2
        LD      H,CHUN8&H;H=#E0
LIP3
        LD      A,(DE)
        BIT     0,H
        JR      Z,SKP1
        XOR     #10
        INC     DE
SKP1
        CP      L
        JR      NC,SKP2
        PUSH    HL
        SET     6,L
        LD      A,C
        OR      (HL)
        LD      (HL),A
        POP     HL
SKP2
        INC     H
        BIT     3,H
        JR      Z,LIP3
        RLC     C
        JR      NC,LIP2
        INC     L
        BIT     5,L
        JR      Z,LIP1
;MATRIX INIT
        LD      H,FRMBUF&H;H=#E0
LLFAI
        LD      L,0
        LD      A,#20
        CALL    FILL
        CALL    FILLA
        INC     H
        JR      NZ,LLFAI
        LD      H,ATRTAB&H;H=#DA
        LD      A,4
        CALL    LFILL
        LD      L,#5A
        LD      A,#44
        CALL    S_FILL
        INC     A
        CALL    S_FILL
        CALL    S_FILL
;
;END OF INIT SECTION
;
        LD      B,5
LOOP
        XOR     A
        CALL    LGOZA
        CALL    FRAME
        LD      A,#F8
        CALL    LGOZA
        LD      B,150
        CALL    FRAME
;CHARS CYCLE
        LD      HL,MSG-1
MESSA
        INC     HL
        LD      A,(HL)
        CP      #20
        JR      C,E_MESS
        LD      (CDSYM+1),A
        LD      (CDSYM2+1),A
        PUSH    HL
        CALL    FADE_ON
        LD      B,6
LPCYR
        PUSH    BC
        CALL    PRNMX
        POP     BC
        DJNZ    LPCYR
        INC     B
        CALL    FRAME
        CALL    FADE_OFF
        POP     HL
        JR      MESSA
E_MESS
;B=#5A
        CALL    FRAME
        CALL    FADE_ON
        LD      B,80
FRAME
        PUSH    BC
        CALL    OUTFRM
        POP     BC
        DJNZ    FRAME
        LD      HL,10072
        PUSH    HL
        EXX
        POP     HL
        RET
FADE_ON
        LD      HL,FADEFRM
        JR      FD_TR
FADE_OFF
        LD      HL,SUBFRM
FD_TR
        LD      (FADE_F+1),HL
        RET
SDFRM
        LD      (SDRAM+1),DE
        LD      B,0
LSDFR
        LD      A,R
        ADD     A,LX
        RRCA
        LD      LX,A
        SBC     A,HX
        RRCA
        LD      HX,A
        JR      C,NOSDV
        PUSH    HL
        LD      D,H
        LD      E,L
        DEC     E
        LD      C,#17
        LDIR
SDRAM   CALL    0
        LD      (DE),A
        POP     HL
NOSDV
        INC     H
        JR      NZ,LSDFR
        RET
SUBFRM
        AND     #7F
        CP      #21
        RET     NC
        ADD     A,#40
        RET
FADEFRM
        LD      A,#20
        RET
SUBBRG
        AND     1
        INC     A
        LD      C,A
        LD      A,(DE)
        SUB     C
        CP      #40
        RET     NC
CMNA    LD      A,#20;ADD/LD
        RET
LGOZA
        LD      (XRTU+1),A
        LD      A,#3E
        LD      (CMNA),A
        RET
PRNMX
CDSYM2  LD      HL,FNTTAB
        LD      A,(HL)
        INC     H
        LD      H,(HL)
        LD      L,A
        LD      E,#17
LPSH2
        LD      C,4
LPSH0
        LD      D,FRMBUF&H;D=#E0
LPSH
        RLC     (HL)
        JR      C,YPSYM
        LD      A,#20
        JR      YYS
YPSYM
CDSYM   LD      A,0
YYS
        LD      B,4
LYU
        LD      (DE),A
        INC     D
        DJNZ    LYU
        JR      NZ,LPSH
        DEC     E
        DEC     C
        JR      NZ,LPSH0
        INC     L
        BIT     7,E
        JR      Z,LPSH2
OUTFRM
        LD      HL,FRMBUF+1
FADE_F  LD      DE,SUBFRM
        CALL    SDFRM
        LD      HL,BRIGBUF+1
        LD      DE,SUBBRG
        CALL    SDFRM
        LD      A,(CMNA);ADD/LD
XRTU    XOR     #F8
        LD      (CMNA),A
        XOR     A
        LD      B,#58
        LD      C,A
        LD      H,ATRTAB&H;H=#DA
        EXX
        LD      C,A
        LD      L,#17
        LD      A,(RMSC+1)
        XOR     1
        LD      (RMSC+1),A
        ADD     A,FRMBUF&H+2;A=E2/E3
        LD      (MSK+1),A
        AND     1
        ADD     A,#41;41/42
        LD      B,A
NLIN
        LD      H,FRMBUF&H;H=#E0
LIN0
        PUSH    HL
        LD      L,(HL)
        LD      H,FNTTAB&H;H=#DE
        LD      A,(HL)
RMSC    ADD     A,0
        LD      E,A
        INC     H
        LD      D,(HL)
        POP     HL
        PUSH    HL
        SET     7,L
        LD      L,(HL)
MSK     LD      H,FRMBUF&H;H=#E0
        LD      A,(DE)
        AND     (HL)
        LD      (BC),A
        INC     B
        INC     B
        INC     E
        INC     E
        INC     H
        INC     H
        LD      A,(DE)
        AND     (HL)
        LD      (BC),A
        INC     B
        INC     B
        INC     E
        INC     E
        INC     H
        INC     H
        LD      A,(DE)
        AND     (HL)
        LD      (BC),A
        LD      A,L
        EXX
        LD      L,A
        LD      A,(HL)
        LD      (BC),A
        INC     BC
        EXX
        POP     HL
        LD      A,#FC;-4
        INC     C
        JR      NZ,NPS0
        NEG     ;+4
NPS0
        ADD     A,B
        LD      B,A
        INC     H
        JR      NZ,LIN0
        DEC     L
        JP      P,NLIN
        RET
S_FILL
        LD      B,2
        JR      LFILL
FILLA
        LD      L,#80
        LD      A,#5F
FILL
        LD      B,#18
LFILL
        LD      (HL),A
        INC     L
        DJNZ    LFILL
        INC     A
        RET
MSG     DEFM    "CHAOS HAS YOU"
;PACKED CHUNKS 8X8 - MASK IMAGE
CN8
        DEFB    #1E,#1B,#1E,#1A,7,3,6,3
        DEFB    #19,#1D,#18,#1C,1,5,0,4
        DEFB    #1D,#19,#1E,#1A,5,1,6,2
        DEFB    #17,#1B,#18,#1C,0,3,1,4

