DELETE  LD A,(IX-84)
        AND A
        JP Z,FILE6
        CALL SETCURS,ADRF1
        LD A,(HL)
        DEC A
        OR (IX-82)
        JP Z,FILE6
        LD HL,DELTXT
        CALL PRWAIT
        LD A,(IX-82)
        AND A
        CALL Z,MARKF
DEL0    LD A,(IX-84)
        DEC A
        CALL ADRF2
        LD IY,(VARS-55)
        LD DE,16
        LD C,D
DEL1    LD A,(HL)
        AND A
        JP M,DEL2
        LD C,1
        SBC HL,DE
        JR DEL1
DEL2    LD A,(HL)
        AND A
        JP M,DEL4
        DEC A
        JR NZ,DEL5
        OR C
        JR NZ,DEL5
        DEC (IX-58)
DEL3    LD (HL),A
        PUSH HL
        LD E,13
        ADD HL,DE
        LD E,(HL)
        ADD IY,DE
        INC HL
        LD E,(HL)
        LD (IX-57),E
        INC HL
        LD E,(HL)
        LD (IX-56),E
        LD E,16
        POP HL
        DEC (IX-59)
        JR DEL6
DEL4    LD A,C
        AND A
        JR Z,DEL3
        LD (HL),C
        INC (IX-58)
        JR DEL6
DEL5    LD C,1
DEL6    AND A
        SBC HL,DE
        PUSH DE
        LD DE,BUFFCAT
        SBC HL,DE
        ADD HL,DE
        POP DE
        JR NC,DEL2
        LD (VARS-55),IY
        CALL SAVECAT
        JP RELOAD

SQUEEZE LD A,(IX-58)
        AND A
        JP Z,FILE6
        CALL SETCURS
        LD HL,SQTXT
        CALL PRWAIT,INIMARK,CLEAR21
        LD IY,0
        LD HL,BUFFCAT
        LD DE,16
        LD BC,#FFFF
SQ0     LD A,(HL)
        ADD HL,DE
        INC B,C
        DEC A
        JR NZ,SQ0
SQ1     LD A,(HL)
        ADD HL,DE
        INC C
        DEC A
        JR Z,SQ1
        SBC HL,DE
        PUSH BC,BC
SQ2     LD BC,13
        LD A,(HL)
        AND A
        JR Z,SQ4
        DEC A
        JR Z,SQ3
        PUSH HL
        SET 7,(HL)
        INC (IX-82)
        ADD HL,BC
        LD C,(HL)
        ADD IY,BC
        POP HL
SQ3     ADD HL,DE
        JR SQ2
SQ4     LD (VARS-81),IY
        POP AF
        CALL ADRF2
        LD DE,HL
        LD BC,14
        ADD HL,BC
        LD A,(HL)
        INC HL
        LD H,(HL)
        LD L,A
        LD (VARS-46),HL
        POP BC
        PUSH HL,DE
        LD A,C
        CALL ADRF2
        PUSH HL,DE
        CALL MARK_I,SETSCR,PBUFF,RESET
SQ5     CALL RDBUFF,WRBUFF
        LD A,(IX-82)
        AND A
        JR NZ,SQ5
        LD IY,(VARS-55)
        LD HL,#4000
        LD DE,BUFFCAT
        LD BC,#0800
        LDIR
        POP HL
SQ6     LD A,(HL)
        AND A
        JR Z,SQ8
        DEC A
        JR NZ,SQ7
        PUSH HL
        LD C,13
        ADD HL,BC
        LD C,(HL)
        ADD IY,BC
        POP HL
SQ7     LD C,16
        ADD HL,BC
        JR SQ6
SQ8     LD (VARS-55),IY
        LD BC,#4801
        EXX
        POP HL,DE
        PUSH DE
        CALL MOVEMRK
        LD A,(IX-59)
        SUB (IX-58)
        LD (IX-59),A
        LD (IX-58),C
        POP HL,DE
        CALL SETST
        LD (VARS-57),DE
        CALL SAVECAT
        JP RELOAD

MOVE    LD DE,MOVETXT
        XOR A
        JR COPY0
COPY    LD DE,COPYTXT
        LD A,255
COPY0   LD (COPY4+1),A
        LD A,(IX-84)
        AND A
        JP Z,FILE6
        CALL SETCURS,ADRF1
        LD A,(HL)
        DEC A
        OR (IX-82)
        JP Z,FILE6
        LD A,(IX-96)
        LD (IX-94),A
        EX DE,HL
        CALL SETDD
        JP C,FILE6
        LD A,(IX-82)
        AND A
        CALL Z,MARKF,CLEAR21,SETSCR
        CALL SETSUM
        LD (VARS-44),HL
        XOR A
        CALL DDEST,SETD2,RESDRV
        CALL LOADCAT,SETD1,SETSUM
        LD (VARS-42),HL
        CALL EXISTF
        LD A,(IX-82)
        AND A
        JP Z,RELOAD
        LD HL,(VARS-57)
        LD (VARS-46),HL
        LD HL,(VARS-55)
        LD DE,(VARS-81)
        SBC HL,DE
        JR C,COPY1
        LD A,(IX-59)
        LD B,A
        ADD A,(IX-82)
        CP 129
        JR C,COPY2
COPY1   LD HL,DIRFULL
        CALL KEYPRES
        JP RELOAD
COPY2   PUSH HL,AF
        LD A,B
        CALL ADRF2
        PUSH HL,HL
        CALL PBUFF
COPY3   CALL SETD1,RESDRV
        LD A,255
        CALL DSOUR,RDBUFF,SETD2,RESDRV
        LD A,255
        CALL DDEST,WRBUFF
        LD A,(IX-82)
        AND A
        JR NZ,COPY3
        CALL LOADCAT
        LD BC,#4800
        EXX
        POP DE
        LD HL,#4000
        CALL MOVEMRK,OVERWR
        POP HL
        LD DE,(VARS-57)
        CALL SETST
        POP AF,HL
        LD (VARS-55),HL
        LD (VARS-57),DE
        LD (IX-59),A
        CALL SAVECAT,SETD1,RESDRV
        CALL CLEAR20
COPY4   LD A,0
        INC A
        JP Z,RELOAD
        LD A,(IX-94)
        CP (IX-93)
        JR NZ,COPY5
        LD HL,(VARS-44)
        LD DE,(VARS-42)
        AND A
        SBC HL,DE
        JP Z,RELOAD
COPY5   CALL RESET
        LD A,255
        CALL DSOUR,LOADCAT
        LD HL,#4000
        LD DE,BUFFCAT
        LD BC,#0800
        LDIR
        JP DEL0

BCOPY   LD (IX-89),4
        CALL SETCURS,CLS,HEADERS
        LD HL,BCOPTXT
        CALL PRINT
        LD HL,BCOPATR
        CALL ATTRIB
BCOPY1  CALL D_INFO
BCOPY2  CALL PRBCOPY
BCOPY3  CALL CURS4
BCOPY4  CALL INKEY_A,KEYMAIN
        LD HL,KBCOPY1
        LD DE,KBCOPY2
        CALL JPKEY
        JR BCOPY4
B_LF    XOR A
B_LF1   CALL CURS4
        LD (IX-29),A
        JR BCOPY3
B_RT    LD A,5
        JR B_LF1
B_UP    LD A,(IX-29)
        DEC A
        JP M,BCOPY4
        JR B_LF1
B_DN    LD A,(IX-29)
        INC A
        CP 6
        JR NC,BCOPY4,B_LF1
B_EDIT  LD HL,B_EDADR
        LD A,(IX-29)
        JP S_EDIT2
B_EXIT  CALL INIFILE
        JP FILE3

EBCOP0  LD HL,VARS-28
        LD A,(IX-29)
        PUSH AF
        CALL #172D
        LD DE,NUMBER1
        LD A,C
        PUSH HL
        CALL GETNUM
        LD D,A
        POP HL,AF
        ADD A,9
        LD B,A
        LD C,#90
        CALL INPNUM2
        JR EBCOP11
EBCOP1  LD HL,(VARS-24)
        LD DE,NUMBER2
        CALL GETNUM
        LD BC,#0D90
        LD D,A
        CALL INPNUM1
        LD (VARS-24),HL
EBCOP11 CALL CURS4
        JR BCOPY2
BC1     LD HL,(VARS-24)
        LD A,H
        OR L
        JR Z,BCOPY4
        LD (VARS-81),HL
        LD (IX-82),0
        CALL MARK_I
        LD A,(IX-96)
        LD (IX-94),A
        LD HL,COPYTXT
        CALL SETDD
        JP C,BCOPY4
        CALL SETSCR,PBUFF
        LD HL,(VARS-28)
        LD (IX-48),H
        LD (IX-47),L
        LD HL,(VARS-26)
        LD (IX-46),H
        LD (IX-45),L
BC2     CALL SETD1,RESDRV
        XOR A
        CALL DSOUR,INIBANK
        LD HL,RDTXT
        CALL PRCL20
BC3     LD HL,(VARS-81)
        LD DE,64
        SBC HL,DE
        ADD HL,DE
        JR NC,BC4
        EX DE,HL
BC4     LD B,E
        LD DE,(VARS-48)
        CALL RDFILE
        LD A,(IX-81)
        OR (IX-80)
        JR Z,BC5
        LD A,(IX-38)
        INC A
        JR Z,BC3
BC5     CALL SETD2,RESDRV
        XOR A
        CALL DDEST,INIBANK
        LD HL,WRTXT
        CALL PRCL20
BC6     LD HL,(VARS-52)
        LD DE,(VARS-50)
        SBC HL,DE
        LD DE,64
        SBC HL,DE
        ADD HL,DE
        JR NC,BC7
        EX DE,HL
BC7     LD B,E
        LD DE,(VARS-46)
        CALL WRFILE
        LD A,(IX-38)
        INC A
        JR Z,BC6
        LD A,(IX-81)
        OR (IX-80)
        JR NZ,BC2
        CALL SETD1
        JP RELOAD

CURS4   EXA
        LD E,9
        LD A,(IX-29)
        ADD A,E
CURS41  LD D,A
        JP CURS31

MARKF   CALL INIMARK,ADRF1
        SET 7,(HL)
        LD A,13
        CALL #172D
        LD (IX-81),C
        INC (IX-82)
        JP MARK_I

EXISTF  LD HL,CLEAR20
        PUSH HL
        LD HL,BUFF_I
        LD BC,15
        LD (HL),B
        CALL LDIRHL
        LD HL,#4000
        LD BC,#8000
        XOR A
        LD (EXF4+1),A
        LD (EXF6+1),A
EXF1    LD A,(HL)
        AND A
        JP P,EXF2
        LD C,A
        RES 7,(HL)
        PUSH BC,HL
        EX DE,HL
        LD HL,BUFFCAT
        LD A,11
        CALL SRFCAT,Z,EXF3
        POP HL,BC
        LD (HL),C
EXF2    LD DE,16
        ADD HL,DE
        DJNZ EXF1
        RET
EXF3    PUSH DE,HL,HL
        CALL CLEAR20
        POP HL
EXF4    LD A,0
        INC A
        JR Z,EXF5
        LD BC,#1418
        CALL PRFEXT
        LD HL,OVRTXT
        CALL PRINT
EXF5    POP HL
        LD DE,BUFFCAT
        SBC HL,DE
        LD A,L
.3      RR H:RRA
        RRA
        AND #7F
        LD C,A
        PUSH BC
        CALL OWR3
        PUSH HL
EXF6    LD A,0
        INC A
        JR Z,EXF7
        CALL INKEY_B
        CP 97
        JR Z,EXF10
        CP 100
        JR Z,EXF8
        CP 110
        JR Z,EXF11
        CP 121
        JR NZ,EXF6
EXF7    POP HL,BC
        CALL EXF12
        OR (HL)
        JR EXF9
EXF8    POP HL,BC
        CALL EXF12
        CPL
        AND (HL)
EXF9    LD (HL),A
        POP DE
        RET
EXF10   LD A,255
        LD (EXF4+1),A
        LD (EXF6+1),A
        JR EXF7
EXF11   POP BC,BC,IY
        RES 7,(IY)
        LD HL,(VARS-81)
        LD B,0
        LD C,(IY+13)
        SBC HL,BC
        LD (VARS-81),HL
        DEC (IX-82)
        RET
EXF12   LD A,C
        AND 7
        LD B,A
        LD A,#80
        RET Z
EXF13   RRCA
        DJNZ EXF13
        RET

OVERWR  LD B,(IX-59)
        LD C,0
OWR1    PUSH BC,BC
        CALL OWR3
        POP BC
        CALL EXF12
        AND (HL)
        JR Z,OWR2
        LD A,C
        CALL ADRF2
        LD (HL),1
        INC (IX-58)
OWR2    POP BC
        INC C
        DJNZ OWR1
        RET
OWR3    LD HL,BUFF_I
        LD A,C
.3      RRCA
        AND #0F
        JP #172D

ASKDRV  CALL ASKDRV2
        LD (ASKDRV3+1),A
ASKDRV1 CALL INKEY_B
        AND A
        JR Z,ASKDRV1
        CP 13
        JR Z,ASKDRV3
        CP 32
        RET C
        SUB 97
        JR C,ASKDRV1
        CP 5
        JR NC,ASKDRV1
        CP 4
        JR NZ,ASKDRV2
        EXA
        LD A,(IX-120)
        AND A
        JR Z,ASKDRV1
        EXA
ASKDRV2 PUSH AF,BC
        ADD A,65
        RST 16
        POP BC,AF
        AND A
        RET
ASKDRV3 LD A,0
        AND A
        RET

SETDRV0 LD A,(IX-96)
SETDRV  LD HL,VARS-128
        CALL 5933
        LD (IX-96),A
        LD (IX-95),C
        RET

RESDRV  BIT 2,(IX-96)
        RET NZ
        LD BC,#2FC1
        CALL TURBO5
        LD HL,#3D13
        LD A,(IX-96)
        LD C,1
        PUSH AF
        CALL JPDOS
        POP AF
        LD (#5D19),A
        RET

JPDOS   CALL IM1ON
        LD (JPDOS1+1),SP
        PUSH HL
        LD IY,#5C3A
        LD HL,0
        LD (#5D0F),HL
        LD HL,JPDOS2
        LD (#5CC3),HL
        POP HL
        CALL #162C
JPDOS1  LD SP,0
        LD HL,ERRDOS
        LD (#5CC3),HL
        JP IM2ON
JPDOS2  POP DE
        LD HL,#1B7B
        AND A
        SBC HL,DE
        RET Z
        LD HL,#1F54
        AND A
        SBC HL,DE
        JR NZ,JPDOS1
        RET

IM1ON   DI
        PUSH AF
        LD A,#3F
        LD I,A
        IM 1
        POP AF
        RET

IM2ON   DI
        PUSH AF
        LD A,#19
        LD I,A
        IM 2
        EI
        POP AF
        RET

FORMTRK LD D,A
        SRL A
        LD E,A
        CALL POSIT1,IM1ON
        LD HL,FTRK
        LD BC,IM2ON
        PUSH BC
        LD BC,#2005
        PUSH BC
        LD BC,#2FC3
        PUSH BC
        LD A,#F4
        JP #3D2F

SETTRK  BIT 2,(IX-96)
        RET NZ
        BIT 1,(IX-95)
        RET Z
        CALL IM1ON
        LD BC,#1E3A
        LD A,(#5CF5)
        SRL A
        CALL TURBO5,IM2ON
        HALT
        RET

DSOUR   LD (DSOUR2+1),A
DSOUR1  LD A,(IX-94)
        CP (IX-93)
        RET NZ
        AND 4
        RET NZ
        LD HL,INSSD
        CALL KEYPRES
DSOUR2  LD A,0
        AND A
        RET Z
        CALL GETSUM
        LD DE,(VARS-44)
        AND A
        SBC HL,DE
        JR NZ,DSOUR1
        RET

DDEST   LD (DDEST2+1),A
DDEST1  LD A,(IX-93)
        CP (IX-94)
        RET NZ
        AND 4
        RET NZ
        LD HL,INSDD
        CALL KEYPRES
DDEST2  LD A,0
        AND A
        RET Z
        CALL GETSUM
        LD DE,(VARS-42)
        AND A
        SBC HL,DE
        JR NZ,DDEST1
        RET

SETSUM  LD HL,BUFFSYS
SETSUM1 LD DE,0
        LD B,D
SETSUM2 LD C,(HL)
        EX DE,HL
        ADD HL,BC
        EX DE,HL
        INC L
        JR NZ,SETSUM2
        EX DE,HL
        RET

GETSUM  LD HL,BUFF_S
        LD DE,8
        LD B,1
        CALL LOAD
        DEC H
        JR SETSUM1

PBUFF   LD A,255
        LD (IX-30),A
        INC A
        JR GBUFF1

GBUFF   LD A,(IX-30)
        INC A
        RET NZ
        LD (IX-30),A
        LD A,#EB
GBUFF1  LD (GBUFF2),A
        LD (GBUFF4),A
        LD (GBUFF5),A
        LD HL,#8000
        LD DE,#4800
        LD BC,#0800
GBUFF2  NOP
        LDIR
        LD HL,#8800
        LD DE,#5000
        LD A,8
GBUFF3  PUSH DE
        LD BC,128
GBUFF4  NOP
        LDIR
GBUFF5  NOP
        POP DE
        INC D
        DEC A
        JR NZ,GBUFF3
        RET

SETSCR  LD BC,#A000
        XOR A
        CALL CL1
        LD HL,#5800
        LD BC,#027F
        LD (HL),L
        CALL LDIRHL
        LD HL,BUFFCAT
        LD DE,#4000
        LD BC,#0800
        LD (VARS-34),DE
        LD (VARS-32),DE
        LDIR
        LD (VARS-37),BC
        RET

KEYPRES CALL PRCL21
        LD HL,CLEAR21
        PUSH HL

WAITKEY CALL INKEY_B
        AND A
        JR Z,WAITKEY
        RET

MOVEMRK LD A,H
        EXX
        CP B
        EXX
        JR Z,MVMRK2
        LD A,(HL)
        AND A
        JR Z,MVMRK2
        JP P,MVMRK1
        RES 7,(HL)
        LD BC,16
        PUSH HL
        LDIR
        POP BC
        EXX
        BIT 0,C
        EXX
        JR NZ,MOVEMRK
        LD (BC),A
        JR MOVEMRK
MVMRK1  LD BC,16
        ADD HL,BC
        JR MOVEMRK
MVMRK2  EXX
        BIT 1,C
        EXX
        RET NZ
        EX DE,HL
        LD BC,#0800
        LD (HL),C
        JP LDIRHL

SETDD   CALL PRCL20
SETDD1  LD A,(IX-93)
        CALL ASKDRV
        JR C,SETDD2
        LD (IX-93),A
SETDD2  PUSH AF
        CALL CLEAR20
        POP AF
        RET

SETD1   LD A,(IX-94)
        JR SETD21
SETD2   LD A,(IX-93)
SETD21  PUSH AF
        LD BC,#140C
        ADD A,65
        RST 16
        LD A,58
        RST 16
        POP AF
        JP SETDRV

SETST   PUSH HL
        POP IY
        LD (IY+14),E
        LD (IY+15),D
SETST1  LD A,(IY+13)
        LD C,A
.4      RRCA
        AND 15
        LD B,A,A,C
        AND 15
        ADD A,(IY+14)
        CP 16
        RES 4,A
        LD E,A
        SBC A,A
        INC A
        ADD A,B,A,(IY+15)
        LD D,A
        LD A,(IY+16)
        AND A
        RET Z
        LD (IY+30),E
        LD (IY+31),D
        LD BC,16
        ADD IY,BC
        JR SETST1

INIBANK LD HL,#C000
        LD (VARS-40),HL
        LD A,(IX-90)
INIBNK1 XOR A
        LD (IX-35),A
        RET

RDBUFF  CALL INIBANK
        LD HL,MARK_I
        PUSH HL
        LD HL,RDTXT
        CALL PRCL20
        LD HL,(VARS-34)
RDB1    BIT 7,(HL)
        JR Z,RDB2
        PUSH HL,HL
        LD BC,#1448
        CALL PRFEXT
        POP IY
        LD B,(IY+13)
        LD E,(IY+14)
        LD D,(IY+15)
        CALL RDFILE
        POP HL
        LD A,(IX-37)
        CPL
        ADD A,(IX-82)
        LD (IX-82),A
        RET Z
        LD A,(IX-38)
        AND A
        RET Z
RDB2    LD DE,16
        ADD HL,DE
        LD (VARS-34),HL
        JR RDB1

WRBUFF  CALL INIBANK
        LD HL,WRTXT
        CALL PRCL20
        LD HL,(VARS-32)
        LD (IX-38),255
WRB1    BIT 7,(HL)
        JR Z,WRB2
        PUSH HL,HL
        LD BC,#1448
        CALL PRFEXT
        POP IY
        LD DE,(VARS-46)
        LD B,(IY+13)
        CALL WRFILE
        POP HL
        LD A,(IX-36)
        INC A
        JR Z,WRB3
WRB2    LD DE,16
        ADD HL,DE
        LD (VARS-32),HL
WRB3    LD A,(IX-38)
        INC A
        JR Z,WRB1
        RET

RDFILE  LD A,(IX-37)
        AND A
        JR Z,RDF1
        LD DE,(VARS-48)
RDF0    LD B,0
RDF1    LD A,(IX-35)
        CP 5
        JR Z,RDF4
        EXX
        CALL PAGE
        EXX
        LD HL,(VARS-50)
        LD A,H
        OR L
        JR Z,RDF5
        LD A,B
        AND A
        JR Z,RDF5
        PUSH BC
        LD HL,(VARS-40)
        XOR A
        SUB H
        CP B
        JR NC,RDF2
        LD B,A
RDF2    PUSH BC,BC
        CALL LOAD
        POP AF
        PUSH DE,HL
        SET 6,H,7,H
        LD (VARS-40),HL
        LD C,A
        AND A
        LD HL,(VARS-81)
        SBC HL,BC
        LD (VARS-81),HL
        LD HL,(VARS-50)
        SBC HL,BC
        LD (VARS-50),HL
        LD BC,#97A8
RDF3    CALL NUMBER2,MARK_I
        POP HL,DE,BC,AF
        SUB B
        LD B,A
        LD (RDF0+1),A
        LD (VARS-48),DE
        LD A,H
        OR L
        JR NZ,RDF1
RDF4    INC (IX-35)
        JR RDF1
RDF5    CALL WRF6
        LD (IX-37),E
        LD (IX-38),D
        RET

WRFILE  LD A,(IX-36)
        AND A
        JR Z,WRF1
        LD DE,(VARS-46)
WRF0    LD B,0
WRF1    LD A,(IX-35)
        CP 5
        JR Z,WRF4
        EXX
        CALL PAGE
        LD HL,(VARS-50)
        LD DE,(VARS-52)
        AND A
        SBC HL,DE
        PUSH HL
        EXX
        POP HL
        JR Z,WRF5
        LD A,B
        AND A
        JR Z,WRF5
        PUSH BC
        LD HL,(VARS-40)
        XOR A
        SUB H
        CP B
        JR NC,WRF2
        LD B,A
WRF2    PUSH BC,BC
        CALL SAVE
        POP AF
        PUSH DE,HL
        SET 6,H,7,H
        LD (VARS-40),HL
        LD C,A
        LD HL,(VARS-50)
        ADD HL,BC
        LD (VARS-50),HL
        LD BC,#97A8
WRF3    CALL NUMBER2
        POP HL,DE,BC,AF
        SUB B
        LD B,A
        LD (WRF0+1),A
        LD (VARS-46),DE
        LD A,H
        OR L
        JR NZ,WRF1
WRF4    INC (IX-35)
        JR WRF1
WRF5    CALL WRF6
        LD (IX-36),E
        LD (IX-38),D
        RET
WRF6    LD A,B
        CALL WRF7
        LD E,A,A,H
        OR L
        CALL WRF7
        LD D,A
        RET
WRF7    AND A
        RET Z
        LD A,255
        RET

LOADCAT LD HL,BUFFCAT
        LD DE,0
        LD B,9
        CALL LOAD
        DEC H
        LD (HL),L
        LD HL,BUFFSYS+#F5
        LD DE,VARS-70
        LD C,11
        LDIR
        LD HL,BUFFSYS+#E4
        LDI
        PUSH HL
        LD HL,BUFFSYS+#F4
        LDI
        LD HL,BUFFSYS+#E1
.2      LDI
        POP HL
.2      LDI
        RET

SAVECAT LD HL,BUFFSYS
        LD DE,8
        LD B,1
        CALL LOAD
        LD HL,BUFFSYS+#E7
        LD (HL),#10
        LD HL,VARS-70
        LD DE,BUFFSYS+#F5
        LD C,11
        LDIR
        LD DE,BUFFSYS+#E4
        LDI
        PUSH DE
        LD DE,BUFFSYS+#F4
        LDI
        LD DE,BUFFSYS+#E1
.2      LDI
        POP DE
.2      LDI
        LD HL,BUFFCAT
        LD DE,0
        LD B,9
        JP SAVE

SORTCAT LD BC,0
        EXX
        LD IY,BUFFCAT
        LD HL,BUFFEXE
        LD BC,1023
        LD (HL),32
        PUSH HL
        CALL LDIRHL
        POP DE
SORT1   LD A,(IY)
        AND #7F
        EXX
        RET Z
        EXX
        DEC A
        JR Z,SORT3
        LD HL,0
        LD A,(IY+8)
        CP 66
        JR Z,SORT2
        CP 67
        JR NZ,SORT4
        LD HL,#FECB
        LD A,(IY+13)
        CP 192
        JR NZ,SORT4
SORT2   EXX
        INC B
        EXX
        LD (SORT3),HL
        PUSH DE,IY
        POP HL
        LD C,8
        LDIR
        POP HL
SORT3   DW 0
SORT4   LD C,16
        ADD IY,BC
        EXX
        INC C
        EXX
        JR SORT1

CDISK   BIT 1,(IX-95)
        RET Z
        LD BC,#2FC1
        CALL TURBO5
        LD BC,#1E3A
        XOR A
        LD D,A
        CALL TURBO5,POSIT11
        LD HL,TURBO8
        CALL JPDOS
        PUSH AF
        XOR A
        CALL TURBO4
        LD A,#3C
        CALL TURBO4
        LD BC,#2FC1
        CALL TURBO5
        POP AF
        AND 64
CDISK1  CP 0
        RET

LOAD    LD C,5
        EXX
        LD HL,#3FD7
        LD DE,LOADRAM
        LD A,#80
        JR DISK0
SAVE    LD C,6
        EXX
        LD HL,#3FBC
        LD DE,SAVERAM
        LD A,#A0
DISK0   LD (TURBO1+1),HL
        LD (TURBO2+1),A
        BIT 2,(IX-96)
        JR NZ,RAMD
        BIT 0,(IX-95)
        JR NZ,DISK6
        EXX
DISK1   CALL POSIT1
DISK2   PUSH HL,DE,BC
        CALL TURBO
        POP BC,DE,HL
        LD (IX-53),0
        RLA
        JR C,DISK7
        INC (IX-53)
        RLA
        JR C,DISK7
        INC (IX-53)
        AND 224
        JR NZ,DISK7
DISK3   INC H,E
        BIT 4,E
        JR Z,DISK5
        LD E,0
        INC D
        BIT 0,D
        JR NZ,DISK5
DISK4   CALL POSIT1
DISK5   DJNZ DISK2
        LD (#5CF4),DE
        RET
DISK6   CALL IM1ON
        LD IY,#5C3A
        LD (IY),255
        LD HL,0
        LD (#5D0F),HL
        PUSH HL
        EXX
        CALL #3D13
        POP BC
        LD HL,(#5D00)
        LD DE,(#5CF4)
        INC H
        JP IM2ON
DISK7   JP ERRDRV

RAMD    LD (RAMD2+4),DE
        EXX
        LD C,(IX-91)
RAMD1   PUSH HL,DE,BC
RAMD2   CALL SETRAM,0
        POP BC,DE,HL
        INC H,E
        BIT 4,E
        JR Z,RAMD3
        LD E,0
        INC D
RAMD3   DJNZ RAMD1
        LD A,C
        EXX
        CALL PAGE
        EXX
        RET

SETRAM  LD A,C
        EXA
        LD A,D
        EXX
        LD B,A
        SRL A,A
        NEG
        ADD A,(IX-92)
        LD E,A
        EXA
        LD D,A,A,B
.4      ADD A,A
        EXX
        ADD A,E
        EXX
        OR #C0
        LD H,A
        LD L,0
        EXX
        RET

LOADRAM EXX
        LD A,E
        CALL PAGE
        PUSH HL
        EXX
        EX (SP),HL
        LD DE,BUFF_S
        LD BC,256
        PUSH DE,BC
        LDIR
        EXX
        LD A,D
        CALL PAGE
        EXX
        POP BC,HL,DE
        LDIR
        RET

SAVERAM EXX
        LD A,D
        CALL PAGE
        EXX
        LD DE,BUFF_S
        LD BC,256
        PUSH DE,BC
        LDIR
        EXX
        LD A,E
        CALL PAGE
        PUSH HL
        EXX
        POP DE,BC,HL
        LDIR
        RET

POSIT1  PUSH HL,DE,BC
        CALL IM1ON
        LD A,#3C
        CALL TURBO4
        LD BC,POSIT13
        PUSH BC
        LD HL,#3EF5
        LD A,(TURBO2+1)
        CP 128
        JR Z,POSIT10
        BIT 2,(IX-95)
        JR Z,POSIT10
        LD HL,POSIT12
        PUSH HL
POSIT10 PUSH HL
POSIT11 LD BC,#2FC3
        PUSH BC
        LD BC,#20B8
        PUSH BC
        LD BC,#017F
        LD A,#18
        SRL D
        JR TURBO3
POSIT12 LD E,15
        CALL TURBO6
        LD HL,0
        LD BC,#3FD7
        LD A,#80
        JR TURBO2+2
POSIT13 POP BC,DE,HL
        JP IM2ON

TURBO   CALL IM1ON
        LD A,#3C
        BIT 0,D
        JR Z,TURBO0
        LD A,#2C
TURBO0  CALL TURBO4,TURBO6
        LD BC,TURBO7
        PUSH DE,BC
TURBO1  LD BC,0
TURBO2  LD A,0
        PUSH BC
        LD BC,#2FC3
        PUSH BC
        LD BC,#037F
TURBO3  JP 15663
TURBO4  LD BC,#2F0C
        OR (IX-96)
TURBO5  PUSH BC
        JR TURBO3
TURBO6  LD BC,#2A53
        PUSH BC
        LD C,#5F
        LD A,E
        INC A
        JR TURBO3
TURBO7  POP DE
        LD A,B
        AND A
        LD A,128
        JP Z,IM2ON
TURBO8  CALL IM1ON
        LD IY,#5C3A
        LD BC,#2740
        SRL D
        CALL TURBO5
        LD A,(#5CCD)
        JP IM2ON

RESERR  BIT 2,(IX-96)
        RET NZ
        BIT 1,(IX-95)
        RET Z
        CALL RESET
        LD D,0
        JR TURBO8

RESET   BIT 2,(IX-96)
        RET NZ
        LD HL,#3D13
        LD C,0
        BIT 0,(IX-95)
        JP NZ,JPDOS
        CALL IM1ON
        LD A,#3C
        CALL TURBO4
        LD BC,IM2ON
        PUSH BC
        LD BC,#2F65
        JR TURBO5