; scr, dsc, rgb, img, ani, vsp, pt3, 888, Y viewer 0.5

TestDOS EQU 8345
Out_DOS EQU 10835
WaitDOS EQU 16117
SaveDOS EQU 16330
LoadDOS EQU 16357

cat_adr EQU #6000
tab_adr EQU #6800
vsplens EQU #BF20

        MACRO DBW
        DB :0
        DW :1
        ENDM 

        ORG #6900
PT3addr INCBIN "PT3?69"

        ORG $
BEGIN
        LD A,(23798)
        CALL DRIVE
        EI 
        LD (stack+1),SP
        CALL FF_TEST
        CALL ATMTEST
        CALL PAL_ATM
        CALL DEVTEST

        LD HL,cat_adr
        LD DE,0
        LD B,8
        CALL LOAD
        CALL FINDFNT
        CALL MAKETAB
        CALL PANEL

        LD HL,KeysTab
INKEYS  LD (tabadr+1),HL
prog_1  CALL WAITKEY
tabadr  LD HL,0
        LD C,A
prog_2  LD A,(HL)
        AND A
        JR Z,prog_1
        INC HL
        CP C
        JR Z,prog_3
        INC HL
        INC HL
        JR prog_2
        RET 
prog_3  LD A,(HL)
        INC HL
        LD H,(HL)
        LD L,A
        OR H
        SCF 
        RET Z
        CALL CALL_HL
        JR prog_1

CALL_HL JP (HL)

KeysTab
        DBW "Q",CRS_UP
        DBW "9",CRS_UP
        DBW 11,CRS_UP

        DBW "A",CRS_DN
        DBW "8",CRS_DN
        DBW 10,CRS_DN

        DBW "O",CRS_PU
        DBW "6",CRS_PU
        DBW 8,CRS_PU

        DBW "P",CRS_PD
        DBW "7",CRS_PD
        DBW 9,CRS_PD

        DBW " ",SHOW
        DBW 13,SHOW

        DBW "1",DIZK
        DBW "2",DIZK
        DBW "3",DIZK
        DBW "4",DIZK

        DBW "F",CAT_ALL
        DBW "T",TXTVIEW

        DBW "!",0
        DB 0

CAT_ALL CALL CURSOR
        LD HL,filter+1
        RR (HL)
        LD A,31
        ADC A,0
        LD (HL),A
        RRA 
        LD A,(tab_adr)
        JR NC,call_1
        CP 31
        JR C,call_B

        XOR A
        LD (CursPos),A
        LD HL,tab_adr
        LD (UpTab),HL
        JP PRN_CAT

call_B  LD DE,(UpTab)
car_1   LD A,(CursPos)
        LD L,A
        LD H,0
        ADD HL,HL
        ADD HL,DE
        LD A,(HL)
        CP 31
        JR C,car_E
        LD HL,tab_adr
        SBC HL,DE
        JR Z,car_2
        DEC DE
        DEC DE
        JR car_1
car_2   LD HL,CursPos
        LD A,(HL)
        DEC (HL)
        AND A
        JR NZ,car_1
        LD (HL),0
car_E   LD (UpTab),DE

call_1
call_X  CALL PRN_CAT
        JP CURSOR

DIZK    LD A,C
        SUB "1"
        AND 3
        CALL DRIVE
        LD HL,0
        LD (cat_adr),HL
        LD HL,cat_adr
        LD DE,0
        LD B,8
        CALL LOAD
        CALL MAKETAB
        JP PANEL

CRS_PD  LD B,17
cpd_1   PUSH BC
        CALL CRS_DN
        POP BC
        DJNZ cpd_1
        RET 

CRS_DN  LD A,(CursPos)
        INC A
        LD HL,(UpTab)
        LD E,A
        LD D,0
        ADD HL,DE
        ADD HL,DE
        LD A,(filter+1)
        DEC A
        CP (HL)
        RET C
        LD A,(CursPos)
        INC A
        CP 18
        JR C,cup_1
        LD DE,(UpTab)
        INC DE
        INC DE
        JR cup_2

CRS_PU  LD B,17
cpu_1   PUSH BC
        CALL CRS_UP
        POP BC
        DJNZ cpu_1
        RET 

CRS_UP  LD A,(CursPos)
        SUB 1
        JR C,TAB_UP
cup_1   PUSH AF
        CALL CURSOR
        POP AF
        LD (CursPos),A
        JP CURSOR
TAB_UP  LD HL,tab_adr
        LD DE,(UpTab)
        AND A
        SBC HL,DE
        RET Z
        DEC DE
        DEC DE
cup_2   LD (UpTab),DE
        CALL CURSOR
        CALL PRN_CAT
        JP CURSOR
DLINE
        LD (HL),C
        CALL NEXT_HL
        DJNZ DLINE
        RET 
ALINE
        LD (HL),C
        ADD HL,DE
        DJNZ ALINE
        RET 
HLINE
        LD (HL),C
        INC HL
        DJNZ HLINE
        RET 
PANEL
        LD A,7
        LD (color+1),A
        LD A,#37
        LD (colflag),A
        CALL CLS
        LD HL,#4000
        LD BC,#C010
        CALL DLINE
        LD HL,#4009
        LD BC,#C010
        CALL DLINE
        LD HL,#5800
        LD DE,32
        LD BC,#1802
        CALL ALINE
        LD HL,#5809
        LD BC,#1802
        CALL ALINE
        LD HL,#43A0
        LD BC,#0AFF
        CALL HLINE
        LD HL,#58A0
        LD BC,#0A02
        CALL HLINE
        CALL PRN_CAT
        LD A,2
        LD (color+1),A
        LD DE,#40A3
        CALL PRINTS
        LD A,(POSIT+1)
        AND 3
        ADD A,"A"
        CALL PRINT
        LD A,":"
        CALL PRINT
        CALL PRINTS
        XOR A
        LD (crsfla+1),A

        LD HL,KeysTab
        LD (tabadr+1),HL
        LD HL,#010F
        LD (23561),HL

        CALL NOKEY
CURSOR
        LD HL,tab_adr
        LD A,(filter+1)
        DEC A
        CP (HL)
        RET C
        LD DE,#58C1
        LD A,(CursPos)
        LD L,A
        LD H,0
        ADD HL,HL
        ADD HL,HL
        ADD HL,HL
        ADD HL,HL
        ADD HL,HL
        ADD HL,DE
crsfla  LD A,0
        CPL 
        LD (crsfla+1),A
        AND A
crscol  LD A,0
        JR Z,crz_0
        LD A,(HL)
        LD (crscol+1),A
        LD A,#28
crz_0   LD B,8
crz_1   LD (HL),A
        INC L
        DJNZ crz_1
skip    RET 

        INCLUDE "LV_SHOW",13
        INCLUDE "LV_SHOW2",14

LOAD_1  LD E,(IX+14)
        LD D,(IX+15)
        LD B,1
        LD HL,#BF00
        CALL LOAD
        LD (nextTRS+1),DE
        LD HL,#BF00
        RET 

LOAD_NX PUSH AF
        PUSH BC
        PUSH DE
        LD HL,#BF00
nextTRS LD DE,0
        LD B,1
        CALL LOAD
        LD (nextTRS+1),DE
        POP DE
        POP BC
        POP AF
        LD HL,#BF00
        RET 

LOADALL LD A,(IX+13)
        LD E,(IX+14)
        LD D,(IX+15)
        LD C,0
ish_1   SUB 64
        JR C,ish_2
        PUSH AF
        PUSH BC
        LD B,64
        CALL IMLOAD
        POP BC
        POP AF
        INC C
        JR ish_1
ish_2   ADD A,64
        AND A
        RET Z
        LD B,A
        CP 63
        JP NZ,IMLOAD
        LD B,64
        JP IMLOAD

GET_MIN AND A
        SBC HL,DE
        EX DE,HL
        RET NC
        ADD HL,DE
        RET 

IMGBANK PUSH BC
        LD (imgyet+1),A
        LD BC,ImgRams
vspage  ADD A,C
        LD C,A
        JR NC,$+3
        INC B
        LD A,(BC)
        JR bank_1

BANK    PUSH BC
bank_1  LD BC,#7FFD
        AND 7
        OR #10
        LD (CurBank),A
        OUT (C),A
        POP BC
        RET 

CurBank DB 0

ImgRams DB #16,#14,#13,#17
VspRams DB #11,#13,#10,#14,#16,#10,#17

NEXT_HL INC H
        LD A,H
        AND 7
        RET NZ
HALF_HL LD A,32
        ADD A,L
        LD L,A
        RET C
        LD A,-8
        ADD A,H
        LD H,A
        RET 

IMLOAD  LD A,C
        CALL IMGBANK
        LD HL,#C000
        JP LOAD

INPUTJ  LD C,0
        LD HL,PORTS
        LD A,#FE
        IN A,(254)
        AND 1
        JR NZ,INPJ_1
        LD HL,PORTS1
INPJ_1  LD A,(HL)
        AND A
        RET Z
        IN A,(254)
        INC HL
        AND (HL)
        INC HL
        JR NZ,INPJ_2
        LD A,C
        OR (HL)
        LD C,A
INPJ_2  INC HL
        JR INPJ_1
PORTS   DB #EF,1,16,#EF,2,8,#EF,4,4,#EF,8,1,#EF,16,2
PORTS1  DB #7F,1,16,#7F,4,16
        DB #DF,1,1,#DF,2,2
        DB #FB,1,8
        DB #FD,1,4
        DB 0

NOKEY   XOR A
        IN A,(254)
        CPL 
        AND 31
        JR NZ,NOKEY
        RET 

DLOAD   LD DE,0
        JR flo_1
FLOAD
        LD E,(IX+14)
        LD D,(IX+15)
flo_1   CALL LOAD
        LD (DLOAD+1),DE
        RET 
PRN_CAT
        LD DE,#40C1
        LD HL,(UpTab)
        LD A,#A7
        LD (PRINT),A
        LD (colflag),A
pcat_1  PUSH DE
        LD A,#F0
        LD (scrmask+1),A
        CPL 
        LD (fntmask+1),A
        LD C,(HL)
        INC HL
        LD B,(HL)
        INC HL
        LD A,C
filter  CP 31           ; 31 -  , 32 - 
        JR C,pcat_1A

        LD BC,FreFile
        DEC HL
        DEC HL
        JR pcat_2

pcat_1A PUSH HL
        LD L,B
        LD H,0
        LD A,C
        LD BC,col_tab
        ADD A,C
        LD C,A
        ADC A,B
        SUB C
        LD B,A
        LD A,(BC)
        LD (color+1),A
        LD BC,cat_adr
        ADD HL,HL
        ADD HL,HL
        ADD HL,HL
        ADD HL,HL
        ADD HL,BC
        EX (SP),HL
        POP BC

pcat_2  PUSH BC
        EX (SP),HL
        CALL PRINTS
        LD B,8
        CALL B_PRN
        CALL PRINTS
        LD A,(HL)
        CALL PRINT
        CALL TESTEXT
        JR C,pcat_3
        LD B,A
        CALL TESTEXT
        LD C,A
        JR NC,pcat_4
pcat_3  LD BC,"  "
pcat_4  LD A,B
        CALL PRINT
        LD A,C
        CALL PRINT
        CALL PRINTS
        POP HL
        POP DE
        LD A,E
        AND #E0
        INC A
        ADD A,32
        LD E,A
        JR NC,pcat_1
        LD A,D
        ADD A,8
        LD D,A
        CP #58
        JR C,pcat_1
        LD (DownTab),HL
        RET 

col_tab
        DB #05,#05,#45,#42,#42,#42,#03,#04
        DB #44,#06,#47,#43,#07,#02,#45,#45
        DB #46,#46,#01,#01,#01,#01,#01,#01
        DB #01,#01,#01,#01,#01,#01,#01,#01

TESTEXT INC HL
        LD A,(HL)
        CP 32
        RET C
        CP 128
        CCF 
        RET 

FreFile DB "           "
MAKETAB
        LD DE,#C000
        LD HL,cat_adr
        LD BC,16
mtb_Z1  LD A,(HL)
        LD (DE),A
        INC DE
        ADD HL,BC
        AND A
        JR NZ,mtb_Z1

        LD HL,tab_adr
        LD (UpTab),HL
        XOR A
        LD (CursPos),A

        LD DE,BAS_TST           ;11 BASIC
        LD A,11
        CALL ADD_TAB
        LD DE,BWS_TST           ; 0 bw-SCR
        XOR A
        CALL ADD_TAB
        LD A,1
        LD DE,SCR_TST           ; 1 SCR+atr
        CALL ADD_TAB
        LD A,2
        LD DE,MCX_TST           ; 2 2scr
        CALL ADD_TAB
        LD A,3
        LD DE,RGB_TST           ; 3 RGB
        CALL ADD_TAB
        LD A,4
        LD DE,T8T_TST           ; 4 888
        CALL ADD_TAB
        LD A,5
        LD DE,Y_TST             ; 5 Y
        CALL ADD_TAB
        LD A,6
        LD DE,IMG_TST           ; 6 image
        CALL ADD_TAB
        LD A,7
        LD DE,ANI_TST           ; 7 animation
        CALL ADD_TAB
        LD A,8
        LD DE,VSP_TST           ; 8 VSP-movie
        CALL ADD_TAB
        LD A,9
        LD DE,PT3_TST           ; 9 PT3 muzix
        CALL ADD_TAB
        LD A,10
        LD DE,TXT_TST           ;10 text
        CALL ADD_TAB
        LD A,12
        LD DE,PAK_TST           ;12 .p, start<#4000 - pack txt
        CALL ADD_TAB
        LD A,(EXTFLAG)
        AND A
        LD A,13
        LD DE,LAY_TST           ;13 *.16c : 4layer-screen
        CALL NZ,ADD_TAB
        LD A,14
        LD DE,CH6_TST           ;14: chunkz 1536
        CALL ADD_TAB
        LD A,15
        LD DE,CHC_TST           ;15: chunkz 3076
        CALL ADD_TAB
        LD A,16
        LD DE,FN8_TST           ;16: font 2048
        CALL ADD_TAB
        LD A,17
        LD DE,FN3_TST           ;17: font 768
        CALL ADD_TAB

        LD A,31
        LD DE,ALL_TST           ;31 - 
        CALL ADD_TAB

        LD (HL),#21

        LD DE,#C000
        LD HL,cat_adr
        LD BC,16
mta_1   LD A,(DE)
        LD (HL),A
        INC DE
        ADD HL,BC
        AND A
        JR NZ,mta_1
        RET 

ADD_TAB LD (testad+1),DE
        LD D,0
        LD E,A
        LD IX,cat_adr
        LD BC,16
mtab_1  LD A,(IX)
        AND A
        RET Z
        CP 1
        JR Z,mtab_N

        PUSH DE
testad  CALL 82
        POP DE
        JR NZ,mtab_N
mtab_Y
        LD (IX),1
        LD (HL),E
        INC HL
        LD (HL),D
        INC HL
mtab_N  ADD IX,BC
        INC D
        JR mtab_1

ALL_TST XOR A
        RET 

CH6_TST CALL CHK_EXT
        RET NZ
        LD D,#06
        JR len_tst
CHC_TST CALL CHK_EXT
        RET NZ
        LD D,#0C
        JR len_tst
FN8_TST LD D,#08
        JR len_tst
FN3_TST LD D,#03
        JR len_tst
BWS_TST LD D,#18
        JR len_tst
SCR_TST LD D,#1B
        JR len_tst
MCX_TST LD D,#36
        JR len_tst
RGB_TST LD D,#48
len_tst LD A,(IX+13)
        CP D
        RET NZ
        CP (IX+12)
        RET NZ
        LD A,(IX+11)
        AND A
        RET 

PAK_TST LD A,(IX+8)
        CP "p"
        JR Z,pts_1
        CP "P"
        RET NZ
pts_1   LD A,(IX+10)
        AND #C0
        RET 

BAS_TST LD A,(IX+8)
        CP "B"
        RET NZ
        LD (IX+9),"A"
        LD (IX+10),"S"
        RET 

Y_TST   LD A,(IX+8)
        CP "Y"
        RET NZ
        LD A,(IX+9)
        AND A
        RET NZ
        LD A,(IX+10)
        CP #B8
        RET 

TXT_TST LD A,(IX+8)
        CP "W"
        RET Z
        LD DE,txt_EXT
        CALL CP_EXT
        RET Z
        LD DE,nfo_EXT
        CALL CP_EXT
        RET Z
        LD DE,diz_EXT
        JR CP_EXT
CHK_EXT LD DE,chk_EXT
        JR CP_EXT
LAY_TST LD DE,lay_EXT
        JR CP_EXT
T8T_TST LD DE,t8t_EXT
        JR CP_EXT
IMG_TST LD DE,img_EXT
        JR CP_EXT
ANI_TST LD DE,ani_EXT
        JR CP_EXT
VSP_TST LD DE,vsp_EXT
        JR CP_EXT
PT3_TST LD DE,pt3_EXT
        CALL CP_EXT
        JR Z,muz_tst
        LD A,(IX+8)
        CP "m"
        RET NZ
muz_tst LD A,(IX+13)
        DEC A
        CP 63
        RET NC
        XOR A
        RET 

img_EXT DB "img"
ani_EXT DB "ani"
vsp_EXT DB "vsp"
pt3_EXT DB "pt3"
t8t_EXT DB "888"
txt_EXT DB "txt"
nfo_EXT DB "nfo"
diz_EXT DB "diz"
lay_EXT DB "16c"
chk_EXT DB "ch$"

CP_EXT  LD A,(IX+8)
        CALL CP_ONE
        RET NZ
        LD A,(IX+9)
        CALL CP_ONE
        RET NZ
        LD A,(IX+10)
CP_ONE  CP "A"
        JR C,cpo_1
        CP "Z"+1
        JR NC,cpo_1
        ADD A,32
cpo_1   EX DE,HL
        CP (HL)
        EX DE,HL
        INC DE
        RET 

WAITKEY RES 5,(IY+1)
wkey_1  HALT 
        BIT 5,(IY+1)
        JR Z,wkey_1
        LD A,(23560)
        CP "a"
        RET C
        CP "z"+1
        RET NC
        SUB 32
        RET 

ADDING  INC A
add_1   DEC A
        RET Z
        ADD HL,DE
        JR add_1

CLS     LD HL,#4000
        LD DE,#4001
        LD BC,#1800
        LD (HL),L
        LDIR 
        LD BC,767
        LD (HL),7
        LDIR 
        XOR A
        OUT (254),A
        RET 

B_PRN   LD A,(HL)
        INC HL
        CALL PRINT
        DJNZ B_PRN
        RET 

STRING  LD A,(HL)
        AND A
        RET Z
        INC HL
        CP 1
        JR Z,str_1
        CP 32
        CALL NC,PRINT
        JR STRING
str_1   LD E,(HL)
        INC HL
        LD D,(HL)
        INC HL
        JR STRING

PRINTS  XOR A
PRINT   AND A
        RET C
        PUSH BC
        PUSH DE
        PUSH HL
        EX DE,HL
        LD DE,FONT
        ADD A,E
        LD E,A
        JR NC,$+3
        INC D
        LD B,#08
        PUSH HL
prn_1   LD A,(HL)
scrmask AND #F0
        LD (HL),A
        EX DE,HL
fntmask LD A,#0F
        AND (HL)
        EX DE,HL
        OR (HL)
        LD (HL),A
        INC H
        INC D
        DJNZ prn_1
        POP HL
colflag SCF 
        JR C,prn_2
        LD A,H
        RRA 
        RRA 
        RRA 
        AND 3
        OR #58
        LD H,A
color   LD (HL),0

prn_2   LD A,(scrmask+1)
        LD (fntmask+1),A
        CPL 
        LD (scrmask+1),A
        CP #0F

prn_E   POP HL
        POP DE
        POP BC
        RET NZ
        INC E
        LD A,E
        AND 31
        RET NZ
        LD A,#37
        LD (PRINT),A
        RET 

SCR_ADR LD A,C
        RRCA 
        RRCA 
        RRCA 
        AND #E0
        OR B
        LD L,A
        LD A,C
        AND #18
        OR #40
        LD H,A
        RET 

TO_ATR  LD A,H
        RRA 
        RRA 
        RRA 
        AND 3
        OR #58
        LD H,A
        RET 

FONT    INCBIN "z80-6.f"

LOAD    LD A,#A7
        JR loas
SAVE    LD A,#37
loas    LD (discom),A

load_0  DI 
        CALL POSIT
        XOR A
        LD (23766),A

load_1  PUSH BC
        PUSH DE
        PUSH HL
        LD A,E
        INC A
        LD C,95
        CALL OUT_DOS

discom  AND A
        PUSH AF
        CALL NC,LOADER
        POP AF
        CALL C,SAVER
        DI 

        POP HL
        POP DE
        POP BC
        LD A,(23766)
        AND A
        JR NZ,diskERR
        INC E
        LD A,E
        CP 16
        JR C,load_2
        LD E,0
        INC D
        CALL POSIT
load_2  INC H
        DJNZ load_1
        AND A
        EI 
        RET 
diskERR CALL RESETC
        CALL RESETC
        CALL RESETC
        LD A,#FE
        IN A,(254)
        RRA 
        JR C,load_0
        LD A,#7F
        IN A,(254)
        RRA 
        JR C,load_0
        SCF 
        EI 
        RET 

POSIT   LD A,0                  ; (POSIT+1) = 
        AND 3
        OR #3C
        BIT 0,D
        JR Z,LOAD_4
        AND #EF
LOAD_4  LD C,255
        CALL OUT_DOS
        LD A,D
        SRL A
        LD C,127
        CALL OUT_DOS
        LD A,24
        CALL OUT_COM
        CALL WAITDOS
        DI 
        RET 

LOADER  LD A,128
        CALL OUT_COM
        LD C,127
        CALL RD_DOS
        JR IN_1F

SAVER   LD A,160
        CALL OUT_COM
        LD C,127
        CALL WR_DOS
IN_1F   LD BC,IN_1F
        PUSH BC
        LD B,1
        PUSH BC
        PUSH HL
        LD HL,TestDOS
        JR in_dos

DRIVE   AND 3
        LD (POSIT+1),A
        OR #3C
        LD C,255
        CALL OUT_DOS
        CALL RESETC
        CALL RESETC
        CALL RESETC
RESETC  LD A,8
        CALL OUT_COM
        CALL WAITDOS
        DI 
        XOR A
        LD C,95
        JR OUT_DOS

RD_DOS  PUSH HL
        LD HL,LoadDOS
        JR in_dos

WR_DOS  PUSH HL
        LD HL,SaveDOS
        JR in_dos

WAITDOS PUSH HL
        LD HL,WaitDOS
        JR in_dos

OUT_COM LD C,31
OUT_DOS PUSH HL
        LD HL,Out_DOS
in_dos  EX (SP),HL
        JP 15663

UpTab   DW 0
DownTab DW 0
CursPos DB 0

ATMTEST XOR A
        LD (ATMFLAG),A
        DEC A
        LD (#C000),A
        LD BC,#7FFD
        LD A,#10
        OUT (C),A
        LD BC,#FFF7
        LD A,#C0
        CALL OUT_DOS
        XOR A
        LD (#C000),A
        LD BC,#FFF7
        LD A,#F8
        CALL OUT_DOS
        LD A,(#C000)
        LD (ATMFLAG),A
        RET 

DEVTEST LD HL,#4000
        LD (HL),H
        LD A,%0100
        OUT (#DF),A
        LD (HL),L
        XOR A
        OUT (#DF),A
        LD A,(HL)
        LD HL,ATMFLAG
        OR (HL)
        LD (EXTFLAG),A
        RET 

ATMFLAG DB 0
EXTFLAG DB 0

SET_RGB LD A,(ATMFLAG)
        AND A
        LD HL,Paletz
        JR NZ,pal_set
        XOR A
        CALL BANK
        LD HL,#B800
        LD A,%1101      ; R
        CALL DROPLAY
        LD A,%1110      ; G
        CALL DROPLAY
        LD A,%1100      ; B
DROPLAY OUT (#DF),A
        LD DE,#4000
        LD BC,#1800
        LDIR 
        RET 

SET_BRG LD A,(ATMFLAG)
        AND A
        LD HL,Palet2
        JR NZ,pal_set
        XOR A
        CALL BANK
        LD HL,#B800
        LD A,%1100      ; B
        CALL DROPLAY
        LD A,%1101      ; R
        CALL DROPLAY
        LD A,%1110      ; G
        JR DROPLAY

pal_set LD A,#A0
        LD (xip_A+1),A
        OR 8
        LD (xip_B+1),A
        CALL pal_atm
        LD A,#A3
        LD (xip_A+1),A
        OR 8
        LD (xip_B+1),A
        RET 

PAL_ATM LD A,(ATMFLAG)
        AND A
        RET Z
        LD HL,Paletz
pal_atm LD BC,#0177
xip_A   LD A,#A3
        CALL OUT_DOS
        LD BC,#1000
pale_1  LD A,C
        OUT (#FE),A
        LD A,(HL)
        OUT (#FF),A
        INC HL
        INC C
        DJNZ pale_1
        XOR A
        OUT (#FE),A
        LD BC,#FF77
xip_B   LD A,#A3+8
        JP OUT_DOS

Paletz  DB #FF,#DF,#BF,#9F,#7F,#5F,#3F,#1F
        DB #FF,#FE,#FD,#FC,#EF,#EE,#ED,#EC

Palet2  DB #FF,#7F,#DF,#5F,#BF,#3F,#9F,#1F
        DB #FF,#EF,#FE,#EE,#FD,#ED,#FC,#EC

FF_TEST
        LD HL,#4000
        LD DE,#4001
        LD BC,#1AFF
        LD (HL),L
        LDIR 
        HALT 
        LD HL,#4000
        LD BC,#FF
fft_1   IN A,(255)
        LD L,A
        LD (HL),1
        DEC C
        JR NZ,fft_1
        DJNZ fft_1
        LD L,#FF
        LD A,(HL)
        INC L
        ADD A,(HL)
        CP 2
        JR NZ,fft_E
        INC L
        LD B,254
fft_2   ADD A,(HL)
        CP 2
        JR NZ,fft_E
        INC L
        DJNZ fft_2
        LD A,#A7
        JR fft_3
fft_E   LD A,#37
fft_3   LD (FDELAY),A
        RET 

FDELAY  SCF 
        JR C,FF_no
ffy_1   IN A,(#FF)
        INC A
        JR Z,ffy_1
        RET 
FF_no   LD BC,1344                      ; 1120/1344 SCRP/PENT
dsc_1   DEC C
        JR NZ,dsc_1
        DJNZ dsc_1
        RET 

FINDFNT LD HL,cat_adr
ffn_0   LD A,(HL)
        AND A
        RET Z
        LD DE,fontdsc
        LD B,11
        PUSH HL
ffn_1   LD A,(DE)
        CP (HL)
        JR NZ,ffn_2
        INC DE
        INC HL
        DJNZ ffn_1
        POP HL
        JR ffn_F
ffn_2   POP HL
        LD BC,16
        ADD HL,BC
        JR ffn_0
ffn_F   LD DE,14
        ADD HL,DE
        LD E,(HL)
        INC HL
        LD D,(HL)
        LD HL,FONT
        LD B,8
        JP LOAD

fontdsc DB "lv_font fnt"

PT_Tab  INCBIN "tb_PT"
ST_Tab  INCBIN "tb_ST"
ASM_Tab INCBIN "tb_ASM"
RealTab INCBIN "tb_REAL"

HRUST   INCBIN "DEHRUST"

        DISPLAY "end  ",/H,$,":#B800 max"
        DISPLAY "code ",PT3addr,",",$-PT3addr

