        ORG #61FD
        JP #8F00
RELOAD  LD SP,#5E00
        CALL GBUFF,RESCMOS,MAINSTR
        XOR A
        OUT (#FE)
        CALL PAGE,SETDRV0
        BIT 2,A
        CALL Z,RESDRV,LOADCAT,SORTCAT
        LD (VARS-84),BC
        BIT 1,(IX-95)
        JR Z,RELOAD0
        CALL RESERR
        AND #40
        LD (CDISK1+1),A
RELOAD0 CALL INIMARK,CLEAR21
        JP MODE
RELOAD1 LD SP,#5E00
        CALL MAINSTR
        LD HL,CHANDRV
        CALL PRCL20,RESCURS
RELOAD2 LD A,(IX-96)
        CALL ASKDRV
        JR C,RELOAD2
        CP 4
        JR NZ,RELOAD3
        LD B,(IX-120)
        INC B
        DEC B
        JR Z,RELOAD1
        LD B,(IX-89)
        DEC B
        JR Z,RELOAD1
RELOAD3 LD (IX-96),A
        JR RELOAD

MAINSTR LD HL,FILEAT1
        CALL ATTRIB
        LD (IX-77),255
        CALL CLEAR20
        LD A,(IX-96)
        CALL SETD21
        EI
        HALT
        RET

        INCL "TC_P1"

D_INFO  CALL DISK_I,MARK_I
SYS_I   LD BC,#140C
        LD A,(IX-96)
        ADD A,65
        RST 16
        LD A,58
        RST 16
        CALL CLEAR20
        LD BC,#16A8
        LD A,(IX-120)
        CALL NUMBER1
SYS_I1  LD BC,#97A8
        LD A,(IX-92)
        SUB (IX-120)
        LD (IX-90),A
        LD L,A
        LD H,0
        CALL MULT64
        LD (VARS-52),HL
        LD (VARS-50),HL
        JR MARK_I1

DISK_I  LD HL,VARS-70
        LD BC,#0048
        CALL PRLEN8
        SET 7,B
        LD E,3
        CALL PRLEN
        LD BC,#0148
        LD A,(IX-59)
        CALL NUMBER1
        LD BC,#0248
        LD A,(IX-58)
        CALL NUMBER1
        LD BC,#00D8
        LD A,(IX-56)
        CALL NUMBER1
        LD BC,#01D8
        LD A,(IX-57)
        CALL NUMBER1
        LD HL,(VARS-55)
        LD BC,#02D8
        JR MARK_I1

MARK_I  LD BC,#1648
        LD A,(IX-82)
        CALL NUMBER1
        LD HL,(VARS-81)
        LD BC,#9748
MARK_I1 JP NUMBER2

MULT64  ADD HL,HL
MULT32  ADD HL,HL
MULT16  ADD HL,HL
.3      ADD HL,HL
        RET

ADRF1   LD A,(IX-88)
ADRF2   PUSH AF,BC
        EXA
        LD A,(IX-89)
        DEC A
        LD BC,BUFFCAT
        LD A,41
        JR NZ,ADRF21
        LD BC,BUFFEXE
        XOR A
ADRF21  LD (ADRF22),A
        EXA
        LD L,A
        LD H,0
ADRF22
.4      ADD HL,HL
        ADD HL,BC
        POP BC,AF
        RET

HEXDEC0 CALL EXHD,CURS1
        JP FILE4

HEXDEC1 CALL EXHD,CURS2,D_INFO
        JP CAT1

HEXDEC2 CALL EXHD
        JP SYS1

HEXDEC3 CALL EXHD,CURS4
        JP BCOPY1

HEXDEC4 CALL EXHD,CURS5
        JP MS1

EXHD    LD A,(IX-115)
        CPL
        LD (IX-115),A
        RET

SETXY1  LD A,(IX-88)
        LD D,A
        RRA
        AND 24
        LD E,A,A,D
        AND 15
        ADD A,4
        LD D,A
        RET

INIEXE  LD A,1
        JR INI_FE1

INIFILE XOR A
INI_FE1 LD (IX-89),A
        LD HL,KFILE1
        AND A
        JR Z,INI_FE2
        LD HL,KEXE1
INI_FE2 LD (FILE6+7),HL
        ADD A,#AC
        LD (CPBE1+2),A
        LD (F_RT1+2),A
        LD (F_RT2+2),A
        LD (PRFE1+2),A
        LD (PRFE2+2),A
        XOR A
        LD (IX-88),A
        LD (IX-85),A
        LD A,(IX-89)
        DEC A
        RET Z
        LD A,(IX-72)
        AND A
        RET Z
        LD A,(IX-71)
        CP (IX-84)
        JR C,INI_FE3
        LD A,(IX-84)
        AND A
        JR Z,INI_FE3
        DEC A
INI_FE3 LD (IX-88),A
        RET

SETCURS LD A,(IX-88)
        LD (IX-71),A
        LD (IX-72),255
        RET

RESCURS LD (IX-72),0
        RET

INIMARK XOR A
        LD (IX-82),A
        LD (IX-81),A
        LD (IX-80),A
        LD HL,BUFFCAT
        LD DE,16
        LD B,(IX-84)
        INC B
        DEC B
        RET Z
INIMRK1 RES 7,(HL)
        ADD HL,DE
        DJNZ INIMRK1
        RET

INTERR  PUSH IY,IX,HL,DE,BC,AF
        EXX
        EXA
        PUSH HL,DE,BC,AF
        LD IX,VARS
        LD HL,BUFF_N
        LD DE,#5C0D
        PUSH HL,DE
.3      LDI
        CALL CLOCK
        POP HL,DE
.3      LDI
        POP AF,BC,DE,HL
        EXX
        EXA
        POP AF,BC,DE,HL,IX,IY
        EI
        RET

CLOCK   LD A,(IX-78)
        INC A
        RET NZ
        LD A,2
        CALL RDCMOS
        CP (IX-77)
        LD (IX-77),A
        RET Z
CLOCK1  LD BC,#14DE
        LD A,4
        CALL PRCMOS
        LD A,58
        RST 16
        LD A,2
PRCMOS  CALL RDCMOS,PRD1B
        LD HL,BUFF_N+1
        LD DE,2
        JP PRLEN

RDCMOS  PUSH BC,AF
        LD A,#0B
        CALL RDCMOS2
        LD (RDCMOS1+1),A
        POP AF
        CALL RDCMOS2
        POP BC
RDCMOS1 LD D,0
        BIT 2,D
        RET NZ
        LD D,A
.4      RRCA
        AND #0F
        ADD A,A
        LD E,A
        ADD A,A,A,A,A,E
        LD E,A,A,D
        AND #0F
        ADD A,E
        RET
RDCMOS2 LD BC,#EFF7
        LD D,128
        OUT D
        LD B,#DF
        OUT A
        LD B,#BF
        IN A
        LD B,#EF
        LD D,0
        OUT D
        RET

INPUT   LD HL,BUFF_I
        LD E,0
        LD (IX-75),D
        LD (VARS-74),BC
INPUT0  CALL PRELINE
INPUT1  CALL CURS_I
INPUT2  PUSH HL,DE,BC
        CALL INKEY_A
        POP BC,DE,HL
        CP 6
        JR Z,I_CP
        CP 8
        JR Z,I_LF
        CP 9
        JR Z,I_RT
        CP 12
        JR Z,I_BS
        CP 13
        JR Z,CURS_I
        CP 15
        JR Z,INPUT3
        CP 32
        JR C,INPUT2
        BIT 3,(IY+48)
        JR Z,INPUT4
        CP 97
        JR C,INPUT4
        CP 123
        JR NC,INPUT4
        SUB 32
        JR INPUT4
INPUT3  XOR A
INPUT4  LD (HL),A
        LD A,D
        DEC A
        JR Z,INPUT0
        DEC D
        INC HL,E
        LD A,C
        ADD A,6
        LD C,A
        JR INPUT0
I_CP    LD A,(IY+48)
        XOR 8
        LD (IY+48),A
        JR INPUT2
I_LF    LD A,E
        AND A
        JR Z,INPUT2
        CALL CURS_I
        DEC HL,E
        INC D
        LD A,C
        SUB 6
        LD C,A
        JR INPUT1
I_RT    LD A,D
        DEC A
        JR Z,INPUT2
        CALL CURS_I
        DEC D
        INC HL,E
        LD A,C
        ADD A,6
        LD C,A
        JR INPUT1
I_BS    LD A,E
        AND A
        JR Z,INPUT2
        LD (HL),32
        DEC HL,E
        INC D
        LD A,C
        SUB 6
        LD C,A
        JP INPUT0

CURS_I  PUSH HL,DE,BC
        LD A,B
        CALL INVERT
        POP BC,DE,HL
        RET

PRELINE PUSH HL,DE,BC
        LD HL,BUFF_I
        LD BC,(VARS-74)
        LD D,0
        LD E,(IX-75)
        CALL PRLEN
        POP BC,DE,HL
        RET

INKEY_A XOR A
        JR INKEY0
INKEY_B LD A,255
INKEY0  LD (IX-76),A
        LD IY,#5C3A
        EI
        LD A,(IY+48)
        PUSH AF
        XOR A
        LD (IY-50),A
        LD (IY+48),A
        LD (IY+62),246
INKEY1  LD HL,(VARS-124)
        LD (INKEY6+1),HL
        RES 5,(IY+1)
INKEY2  HALT
        LD A,(IX-76)
        AND A
        JR NZ,INKEY3
        BIT 2,(IX-96)
        JR NZ,INKEY3
        CALL CDISK
        JR Z,INKEY3
        CALL RESCURS
        JP RELOAD
INKEY3  RST 56
        BIT 5,(IY+1)
        JR NZ,INKEY4
        LD A,(IX-76)
        AND A
        JR Z,INKEY6
        LD A,(IY+62)
        AND A
        JR NZ,INKEY2
INKEY4  POP AF
        LD (IY+48),A
        LD A,(IY-50)
        AND A
        RET P
        LD HL,KEYTAB-1
INKEY5  INC HL
        EXA
        LD A,(HL)
        AND A
        RET Z
        EXA
        CP (HL)
        INC HL
        JR NZ,INKEY5
        LD A,(HL)
        RET
INKEY6  LD HL,0
        DEC HL
        LD (INKEY6+1),HL
        LD A,H
        OR L
        JR NZ,INKEY2
        CALL SCRSAVE
        JR INKEY1

KEYMAIN LD HL,KEYCOM
KMAIN0  LD C,A
KMAIN1  LD B,(HL)
KMAIN2  INC HL
        LD A,(HL)
        AND A
        JR Z,KMAIN3
        JP M,KMAIN1
        CP C
        JR NZ,KMAIN2
        LD A,B
        RET
KMAIN3  LD A,C
        RET

JPKEY   AND A
        JP M,JPKEY3
        DEC HL,HL
JPKEY1  INC HL,HL
        EXA
        LD A,(HL)
        AND A
        RET Z
        EXA
        CP (HL)
        INC HL
        JR NZ,JPKEY1
JPKEY2  POP AF
        LD A,(HL)
        INC HL
        LD H,(HL)
        LD L,A
        JP (HL)
JPKEY3  ADD A,A
        LD L,A
        LD H,0
        ADD HL,DE
        JR JPKEY2

CLEAR20 LD BC,#1418
        LD D,32
CL201   LD A,32
        RST 16
        DEC D
        JR NZ,CL201
        RET

CLEAR21 LD BC,#0800
        LD A,#A8
        JR CL1

CLEAR   LD HL,#5880
        LD (HL),7
        CALL LDIRHL0
        LD BC,#8000
        LD A,#20
CL1     PUSH BC,AF
        CALL #22B0
        LD BC,31
        LD (HL),B
        CALL LDIRHL
        POP AF,BC
        INC A
        DJNZ CL1
        RET

CLS     LD HL,#4000
        LD BC,#1AFF
        LD (HL),L
        JR LDIRHL

LDIRHL0 LD BC,#01FF
LDIRHL  LD DE,HL
        INC DE
        LDIR
        RET

ERRDOS  LD BC,HL
        POP DE
        PUSH DE
        LD HL,#1F54
        AND A
        SBC HL,DE
        RET Z
        LD HL,#1B7B
        AND A
        SBC HL,DE
        JR NZ,ERRDOS1
        LD (IX-53),3
        BIT 0,(IX-95)
        JR NZ,ERRDOS1
        LD HL,#0010
        ADD HL,SP
        LD SP,HL
        POP BC,DE,HL
        JR ERRDRV
ERRDOS1 LD (IX-53),0
        LD HL,#1111
        AND A
        SBC HL,DE
        JR Z,ERRDOS3
        INC (IX-53)
        LD HL,#29D8
        AND A
        SBC HL,BC
        JR Z,ERRDOS2
        INC (IX-53)
ERRDOS2 LD HL,#000A
        ADD HL,SP
        LD SP,HL
        JR ERRDOS4
ERRDOS3 LD SP,#5E00
ERRDOS4 LD DE,(#5CF4)
ERRDRV  PUSH HL,DE,BC
        CALL IM2ON
        PUSH DE
        LD HL,ERRTXT
        CALL PRCL21
        POP DE
        LD BC,#1500
        LD A,(IX-96)
        ADD A,65
        RST 16
        LD C,#6C
        LD A,D
        PUSH DE
        CALL NUMBER1
        POP DE
        LD C,#9C
        LD A,E
        SET 7,B
        CALL NUMBER1
        LD HL,ERRTAB
        LD A,(IX-53)
        ADD A,A
        CALL #172D
        LD HL,BC
        LD BC,#150C
        PUSH AF
        CALL PRINT
        POP AF
        JP Z,RELOAD1
ERRDRV1 CALL INKEY_B
        AND A
        JR Z,ERRDRV1
        CP 7
        JP Z,RELOAD1
        CP 105
        PUSH AF
        CALL Z,CLEAR21
        POP AF
        JR Z,ERRDRV3
        CP 114
        PUSH AF
        CALL Z,CLEAR21
        POP AF
        JR NZ,ERRDRV1
ERRDRV2 LD IY,DISK1
        LD HL,#3F94
        JR ERRDRV4
ERRDRV3 LD IY,DISK3
        LD HL,#3D2F
ERRDRV4 CALL IM1ON
        BIT 0,(IX-95)
        JR NZ,ERRDRV5
        CALL RESET
        POP BC,DE,HL
        JP (IY)
ERRDRV5 LD IY,#5C3A
        POP AF,AF
        EX (SP),HL
        JP #3D2F

DESCR   LD A,(IX-89)
        DEC A
        RET Z
        CALL ADRF1
        LD C,A
        LD A,21
DESCR1  PUSH HL,AF
        LD A,C
        POP BC
        LD C,6
        CALL NUMBER1
        POP HL
        LD C,#1E
        CALL PRFEXT
        DEC HL,HL
        LD C,#6C
        LD A,2
DESCR2  EXA
        LD E,(HL)
        INC HL
        LD D,(HL)
        INC HL
        PUSH HL
        EX DE,HL
        CALL NUMBER2
        LD A,32
        RST 16
        POP HL
        EXA
        DEC A
        JR NZ,DESCR2
        LD A,3
DESCR3  EXA
        LD A,(HL)
        INC HL
        PUSH HL
        CALL NUMBER1
        LD A,32
        RST 16
        POP HL
        EXA
        DEC A
        JR NZ,DESCR3
        RET

HEADERS LD (IX-77),255
        LD HL,FILETXT
        CALL PRINT
        LD HL,FILEATR
        CALL ATTRIB
HEAD1   LD HL,HOTOVR
        LD BC,#0308
        LD A,4
HEAD2   PUSH AF
        CALL PRLEN8
        LD A,C
        ADD A,16
        LD C,A
        POP AF
        DEC A
        JR NZ,HEAD2
        RET

ATTRIB  LD A,(HL)
        AND A
        RET Z
        INC HL
        LD B,(HL)
        INC HL
        LD C,(HL)
        INC HL
        LD D,(HL)
        INC HL
        LD E,(HL)
        INC HL
        PUSH HL
        CALL ATRDE
        LD DE,32
ATTRIB1 PUSH HL,BC
        CALL #0B4C
        POP BC,HL
        ADD HL,DE
        DJNZ ATTRIB1
        POP HL
        JR ATTRIB

ATRDE   LD L,D
        LD H,0
        LD D,#58
        CALL MULT32
        ADD HL,DE
        RET

NUMBER1 LD D,(IX-115)
        INC D
        JR NZ,NUM11
        CALL PRH1B
        LD A,35
        RST 16
        LD E,2
        JR NUM22
NUM11   CALL PRD1B
        LD E,3
        JR NUM22

NUMBER2 LD D,(IX-115)
        INC D
        JR NZ,NUM21
        CALL PRH2B
        LD A,35
        RST 16
        LD E,4
        JR NUM22
NUM21   CALL PRD2B
        LD E,5
NUM22   LD HL,BUFF_N
        BIT 7,B
        JR Z,NUM23
        INC HL
        DEC E
NUM23   LD D,0
        JR PRLEN

PRFEXT  CALL PRLEN8A
        LD DE,3
        LD A,32
        RST 16
        JR PRLEN

PRLEN8A LD A,(HL)
        PUSH HL,AF
        RES 7,(HL)
        CALL PRLEN8
        POP AF,DE
        LD (DE),A
        RET

PRLEN8  LD DE,8

PRLEN   LD A,(HL)
        CP 32
        JR C,PRLEN1
        CP 128
        JR C,PRLEN2
PRLEN1  BIT 7,B
        LD A,31
        JR Z,PRLEN2
        INC A
PRLEN2  RST 16
        INC HL
        DEC DE
        LD A,D
        OR E
        JR NZ,PRLEN
        RET

PRWAIT  CALL PRCL20,INKEY_A
        CP 13
        RET Z
        LD HL,FILE6
        EX (SP),HL
        JP CLEAR20

PRCL20  PUSH HL
        CALL CLEAR20
        POP HL
        LD BC,#1418
        JR PRINT

PRCL21  PUSH HL
        CALL CLEAR21
        POP HL
        LD BC,#1500

PRINT   LD A,(HL)
        CP 29
        RET Z
        CP 30
        JR Z,PRINT2
        RST 16
PRINT1  INC HL
        JR PRINT
PRINT2  INC HL
        LD B,(HL)
        INC HL
        LD C,(HL)
        CALL MULT6X
        JR PRINT1

MULT6X  LD A,C
        ADD A,A,A,C,A,A
        LD C,A
        RET

PRD1B   LD IY,BUFF_N
        LD DE,#2F64
        CALL PRD1B1
        LD DE,#2F0A
        CALL PRD1B1
        LD DE,#2F01
PRD1B1  INC D
        SUB E
        JR NC,PRD1B1
        ADD A,E
        LD (IY),D
        JR PRD2B4
PRD2B   LD IY,BUFF_N
        LD DE,10000
        CALL PRD2B1
        LD DE,1000
        CALL PRD2B1
        LD DE,100
        CALL PRD2B1
        LD E,10
        CALL PRD2B1
        LD E,1
PRD2B1  LD A,47
PRD2B2  ADD A,1
        SBC HL,DE
        JR NC,PRD2B2
        ADD HL,DE
PRD2B3  LD (IY),A
PRD2B4  INC IY
        RET
PRH1B   LD IY,BUFF_N
        JR PRH2B1
PRH2B   LD IY,BUFF_N
        LD A,H
        CALL PRH2B1
        LD A,L
PRH2B1  PUSH AF
.4      RRCA
        CALL PRH2B2
        POP AF
PRH2B2  AND 15
        ADD A,48
        CP 58
        JR C,PRD2B3
        ADD A,7
        JR PRD2B3

PRSYM42 EXX
        PUSH DE,BC,BC
        LD DE,#03FF
        EXX
        POP BC
        RES 7,B
        LD L,A
        LD H,0
        LD DE,FONTADR-256
.3      ADD HL,HL
        ADD HL,DE
        EX DE,HL
        CALL ADRXY
        LD B,A
        LD C,8
        JR Z,PRSYM2
PRSYM1  EXX
        SCF
        RR D,E
        EXX
        DJNZ PRSYM1
        LD B,A
PRSYM2  PUSH BC
        LD A,B
        AND A
        LD A,(DE)
        LD C,0
        JR Z,PRSYM5
PRSYM3  SRL A
        RR C
        DJNZ PRSYM3
        LD B,A
        LD A,(HL)
        EXX
        AND D
        EXX
        OR B
        LD (HL),A
        INC HL
        LD A,(HL)
        EXX
        AND E
        EXX
        OR C
        LD (HL),A
        DEC HL
PRSYM4  POP BC
        INC DE,H
        DEC C
        JR NZ,PRSYM2
        POP BC
        LD A,6
        ADD A,C
        LD C,A
        PUSH BC
        EXX
        POP BC,DE
        EXX
        RET
PRSYM5  LD C,A
        LD A,(HL)
        AND 3
        OR C
        LD (HL),A
        JR PRSYM4

ADRXY   LD A,B
        AND #18
        OR #40
        LD H,A,A,B
.3      RRCA
        AND #E0
        LD L,A,A,C
.3      RRCA
        AND #1F
        ADD A,L
        LD L,A,A,C
        AND 7
        RET

RUNHOVR LD A,(IY-50)
        CP 64
        JR NZ,RUNH1
        LD A,34
RUNH1   SUB 33
        LD (IX-44),A
        CALL EH_N4
        PUSH HL
        LD BC,#0800
RUNH2   LD A,(HL)
        CP 32
        JR NZ,RUNH3
        INC C
RUNH3   INC HL
        DJNZ RUNH2
        POP HL
        LD A,C
        CP 8
        JR C,TVIEW1
        JP FILE6

DOCTOR  LD HL,DOCT
        JR TVIEW1
KEYHELP LD HL,HELP
        JR TVIEW1
TVIEWER LD HL,TXTV
TVIEW1  LD DE,FILE6
        JR RUNOVR
SCRSAVE LD HL,SCRS
        LD DE,#0052
RUNOVR  PUSH DE
        LD DE,OVREXT
        CALL SRFRAM
        RET NZ
        CALL SETTRK
        PUSH HL
        POP IY
        LD C,4
        JP RUNTCP1

SRFRAM  PUSH DE
        LD DE,#5CDD
        LD BC,8
        LDIR
        POP HL
        LD C,3
        LDIR
        LD A,(IX-91)
        PUSH AF
        LD A,(IX-92)
        CALL PAGE
        LD HL,#C000
        LD DE,#5CDD
        LD A,11
        PUSH DE,DE
        CALL SRFCAT
        POP DE
        EXA
        LD BC,16
        LDIR
        POP HL,AF
        CALL PAGE
        EXA
        RET

SRFCAT  LD (SRFC2+1),A
        LD B,128
SRFC1   LD A,(HL)
        AND A
        JR Z,SRFC5
        LD C,(HL)
        RES 7,(HL)
        PUSH BC,HL,DE
SRFC2   LD B,0
        CALL SRFC4
        POP DE,HL
        LD (HL),C
        JR Z,SRFC3
        LD BC,16
        ADD HL,BC
SRFC3   POP BC
        RET Z
        DJNZ SRFC1
        JR SRFC5
SRFC4   LD A,(DE)
        CP (HL)
        RET NZ
        INC HL,DE
        DJNZ SRFC4
        RET
SRFC5   INC B
        RET

EHOVR   LD HL,0
        LD (VARS-44),HL
EHOVR1  CALL HEAD1
EHOVR2  CALL CURS5
EHOVR3  CALL INKEY_A,KEYMAIN
        LD HL,KEHOVR1
        LD DE,KEHOVR2
        CALL JPKEY
        JR EHOVR3
EH_LF   CALL CURS5
        LD A,(IX-44)
        DEC A
EH_LF1  AND 3
        LD (IX-44),A
        JR EHOVR2
EH_RT   CALL CURS5
        LD A,(IX-44)
        INC A
        JR EH_LF1
EH_DEL  CALL CURS5,EH_N4
        LD BC,7
        LD (HL),32
        CALL LDIRHL
        JR EHOVR1
EH_NEW  LD A,(IX-43)
        CALL ADRF2
        LD B,128
EH_N1   INC (IX-43)
        LD A,(HL)
        AND A
        JR Z,EH_N2
        PUSH HL,BC
        LD DE,8
        ADD HL,DE
        LD DE,OVREXT
        LD B,3
        CALL SRFC4
        JR Z,EH_N3
        POP BC,HL
        LD DE,16
        ADD HL,DE
        DJNZ EH_N1
EH_N2   LD (IX-43),0
        JR EHOVR3
EH_N3   POP DE,DE
        CALL EH_N4
        EX DE,HL
        LD BC,8
        PUSH DE
        LDIR
        POP HL
        RES 7,(HL)
        CALL CURS5
        JR EHOVR1
EH_N4   LD HL,HOTOVR
        LD A,(IX-44)
        ADD A,A,A,A,A,A
        JP #172D

EH_EXIT LD HL,FILE6
        PUSH HL

CURS5   LD A,(IX-44)
        ADD A,A,A,A,A,A
        LD E,A
        LD D,3
        CALL ATRDE
        LD B,8
CURS51  LD A,(HL)
        XOR #18
        LD (HL),A
        INC HL
        DJNZ CURS51
        RET

KFILE1  DB 7:DW RELOAD1
        DB 33:DW RUNHOVR
        DB 34:DW PACKSCR
        DB 35:DW RUNHOVR
        DB 36:DW RUNHOVR
        DB 43:DW MARKALL
        DB 45:DW UNMKALL
        DB 50:DW SQUEEZE
        DB 51:DW TVIEWER
        DB 52:DW DOCTOR
        DB 53:DW COPY
        DB 54:DW CAT
        DB 55:DW SYS
        DB 56:DW DELETE
        DB 57:DW MOVE
        DB 64:DW RUNHOVR
        DB 76:DW GETCAT
        DB 82:DW ERRAMD
        DB 83:DW PUTCAT
        DB 94:DW HEXDEC0
        DB 98:DW BCOPY
        DB 99:DW COPY
        DB 100:DW DELETE
        DB 101:DW EXE
        DB 104:DW KEYHELP
        DB 109:DW MOVE
        DB 110:DW CHRAMD
        DB 111:DW EHOVR
        DB 114:DW CAT
        DB 121:DW SYS
        DB 122:DW SQUEEZE
        DB 0
KFILE2  DW F_LF,F_RT,F_UP,F_DN
        DW F_PGUP,F_PGDN,RUN,MARK
KEXE1   DB 7:DW RELOAD1
        DB 14:DW FILE1
        DB 0
KCAT1   DB 7:DW RELOAD1
        DB 14:DW C_EXIT
        DB 55:DW SYS
        DB 94:DW HEXDEC1
        DB 121:DW SYS
        DB 0
KCAT2   DW C_LF,C_RT,C_UP,C_DN,C_PGUP
        DW C_PGDN,C_EDIT,CAT3
KSYS1   DB 7:DW RELOAD1
        DB 14:DW S_EXIT
        DB 94:DW HEXDEC2
        DB 0
KSYS2   DW S_LF,S_RT,S_UP,S_DN,SYS5,SYS5
        DW S_EDIT,SYS5
KBCOPY1 DB 7:DW RELOAD1
        DB 14:DW B_EXIT
        DB 94:DW HEXDEC3
        DB 0
KBCOPY2 DW B_LF,B_RT,B_UP,B_DN,BCOPY4
        DW BCOPY4,B_EDIT,BCOPY4
KEHOVR1 DB 14:DW EH_EXIT
        DB 0
KEHOVR2 DW EH_LF,EH_RT,EHOVR3,EHOVR3
        DW EHOVR3,EHOVR3,EH_NEW,EH_DEL

TPOWER  DW 1,10,100,1000,10000

FILETXT DB 30,0,0,"Disk title :"
        DB 30,1,0,"Files",30,1,11,58
        DB 30,2,0,"Del. files :"
        DB 30,0,24,"First track:"
        DB 30,1,24,"First sect.:"
        DB 30,2,24,"Free sect. :"
        DB 30,22,0,"Mark files :"
        DB 30,23,0,"Mark sect. :"
        DB 30,22,20,"Ramdisk:"
        DB 30,22,32,"pages"
        DB 30,23,20,"Buffer :"
        DB 30,23,33,"sect.",29
FILEATR DB "@04030900000403090012"
        DB "@0703090009070203001B"
        DB "@070105021B0F01200300"
        DB "@44020916000702041609"
        DB "@440206160F07020B1615"
FILEAT1 DB "@0D010314000F011D1403"
        DB "@460120150000"

BCOPTXT DB 30,9,12,"From track :"
        DB 30,10,12,"From sector:"
        DB 30,11,12,"To track   :"
        DB 30,12,12,"To sector  :"
        DB 30,13,12,"Block size :"
        DB 30,14,12,"Start copy :OK",29
BCOPATR DB "@44060909090705040912"
        DB "@4601030E1200"

RAMDTXT DB "Ramdisk E: "
CHANDRV DB "Drive:",29
MASKTXT DB "Mask:",29
DELTXT  DB "Delete files",29
RDTXT   DB "Reading ",29
WRTXT   DB "Writing ",29
SQTXT   DB "Squeeze disk",29
MOVETXT DB "Move to ",29
COPYTXT DB "Copy to ",29
OVRTXT  DB " exists, overwrite?",29
DIRFULL DB "Disk / directory full",29
INSSD   DB "Insert source disk",29
INSDD   DB "Insert destination disk",29

ERRTAB  DW ERR0,ERR1,ERR2,ERR3
ERRTXT  DB 32,58,30,21,12
        DB "  Trk:    Sec:",29
ERR0    DB "No disk",29
ERR1    DB "Read only",29
ERR2    DB "Disk error",29
ERR3    DB "Break",29

FTRK    DB "@0102030405060708"
        DB "@090A0B0C0D0E0F10"

C_EDADR DW ECAT00,ECAT01,ECAT02,ECAT03
        DW ECAT03,ECAT04,ECAT04,ECAT04
S_EDADR DW ESYS00,ESYS01,ESYS01,ESYS01
        DW ESYS01,ESYS02
B_EDADR DW EBCOP0,EBCOP0,EBCOP0,EBCOP0
        DW EBCOP1,BC1
S_EDBYT DB "@C8C5C7C6"

KEYCOM  DB "@80088109820B830A84048505"
        DB "@860D870F00"
KEYTAB  DB "@C65BCD5CC55DCC7B"
        DB "@C37CCB7DE27EAC7F00"
COL_XL  DB "@010305080E0312051805"
        DB "@1E0322032603"

RUNEXT  DB "TXT"
        DW TVIEWER
        DB "faq"
        DW TVIEWER
        DB "hlp"
        DW TVIEWER
        DB "inf"
        DW TVIEWER
        DB "lst"
        DW TVIEWER
        DB "psc"
        DW PACKSCR
        DB "ram"
        DW RUNRAM
OVREXT  DB "tcp"
        DW RUNTCP
        DB "txt"
        DW TVIEWER
        DB 0

SCRS    DB "scrsaver"
HELP    DB "help    "
TXTV    DB "textview"
DOCT    DB "dmanager"

HOTOVR  DS 32,32

BUFF_S  EQU #5B00; [256]
PAGE    EQU #5C10; [24]
BUFF_I  EQU #5D40; [32]
BUFF_X  EQU #5D60; [64]
BUFF_N  EQU #5DA0; [6]
VARS    EQU #5E80; [<256>]
FONTADR EQU #5F00; [768]
BUFFCAT EQU #8C00; [2048]
BUFFSYS EQU #9400; [256]
BUFFEXE EQU #9500; [1024]
BUFFEXF EQU #9900; [256]

        ORG #0066,#9800
CHMAGIC LD (#0064),SP
        LD SP,#0064
        PUSH AF
        LD A,R
        DI
        PUSH AF
        LD A,I
        PUSH AF,BC,DE,HL
        EXX
        EXA
        PUSH AF,BC,DE,HL,IX,IY
        LD HL,CHM1
        PUSH HL
        RETN
CHM1    CALL IM1ON-#5800
        LD IX,VARS-#5800
        LD HL,#C000
        LD DE,#0300
        XOR A
CHM2    LDI
        LD BC,63
        ADD HL,BC
        DEC A
        JR NZ,CHM2
        CALL PAGE-#5800
        LD A,(IX-90)
        CP 9
        JP C,#34AA
        CALL PAGE-#5800
        LD HL,#4000
        LD DE,#C000
        LD BC,#4000
        PUSH DE,BC
        LDIR
        LD A,(IX-90)
        DEC A
        CALL PAGE-#5800
        POP BC,DE
        LDIR
        XOR A
        CALL PAGE-#5800
        LD HL,#0400
        LD DE,#5C00
        LD BC,#3000
        LDIR
        LD HL,#3500
        LD DE,#9A00
        LD BC,M_EDADR-MSERV+20
        LDIR
        JP MSERV

CPROG   LD SP,#004C
        LD IX,VARS-#5800
        LD A,(IX-90)
        CALL PAGE-#5800
        LD HL,#C000
        LD DE,#4000
        LD BC,#4000
        PUSH HL,BC
        LDIR
        LD A,(IX-90)
        DEC A
        CALL PAGE-#5800
        POP BC,HL
        LDIR
        LD A,(#0028)
        CALL PAGE-#5800
        AND 7
        LD HL,#0029
        OR (HL)
        LD HL,#002D
        OR (HL)
        LD (CPROG4+1),A
        LD HL,(#002A)
        LD BC,CPROG7-CPROG6+4
        SBC HL,BC
        LD (CPROG5+1),HL
        EX DE,HL
        LD HL,CPROG6
        LD C,CPROG7-CPROG6
        LDIR
        EX DE,HL
        DEC HL,HL
        LD (CPROG3+1),HL
        LD HL,#0018
        LD BC,#1000
CPROG1  PUSH BC
        LD E,C
        LD BC,#FFFD
        OUT E
        LD BC,#BFFD
        OUTI
        POP BC
        INC C
        DJNZ CPROG1
        LD A,(#002C)
        AND 7
        OUT (#FE)
        POP IY,IX,HL,DE,BC,AF
        EXX
        EXA
        POP HL,DE,BC,AF
        LD I,A
        CP 63
        JR Z,CPROG2
        IM 2
CPROG2  POP AF
        LD R,A
        LD A,#F3
        JP PO,CPROG3
        LD A,#FB
CPROG3  LD (0),A
        POP AF
        LD SP,(#002A)
        PUSH BC,AF
        LD BC,#7FFD
CPROG4  LD A,0
CPROG5  JP 0
CPROG6  OUT A
        IN (#7B)
        POP AF,BC
        NOP
        RET
CPROG7

        ORG #9A00
MSERV   LD SP,#5E00
        CALL INIRAM
        IN (#7B)
        LD IX,VARS
        XOR A
        LD (IX-116),A
        LD (IX-89),A
        CALL IM2ON
MSERV1  CALL CLS,INTF
        JP RELOAD

MSRELOA LD HL,CHANDRV
        CALL PRCL20,RESCURS
MSREL1  LD A,(IX-96)
        CALL ASKDRV
        JR C,MSREL1
        LD (IX-96),A
        JR MSERV1

LDIMAGE CALL SETTRK
        LD HL,BUFFEXF
        LD E,(IY+14)
        LD D,(IY+15)
        LD B,1
        PUSH IY
        CALL LOAD
        POP HL
        LD DE,BUFF_I
        LD BC,8
        LDIR
        LD HL,AF_RAM
        LDI
        LD BC,#2000
LDIM1   PUSH BC,BC
        LD A,C
        CALL RDCMOS1+5,IRAM4,PAGE
        POP BC
        CALL SVIM3
        LD IY,BUFF_I
        LD HL,BUFFCAT
        LD (IY+9),E
        LD (IY+10),D
        PUSH IY
        POP DE
        LD A,11
        CALL SRFCAT
        PUSH HL
        POP IY
        LD HL,#C000
        LD B,#40
        LD E,(IY+14)
        LD D,(IY+15)
        CALL Z,LOAD
        POP BC
        LD A,C
        INC A
        DAA
        LD C,A
        DJNZ LDIM1
        JP CONTIN

MS0     CALL D_INFO,INTF
        LD HL,MSTXT
        CALL PRINT
        LD HL,MSATR
        CALL ATTRIB
MS1     CALL MSINFO
MS2     CALL CURS6
MS3     CALL INKEY_B,KEYMAIN
        LD HL,KMSERV1
        LD DE,KMSERV2
        CALL JPKEY
        JR MS3

MS_UP   LD A,(IX-116)
        AND A
        JR Z,MS3
        DEC A
MS_UP1  CALL CURS6
        LD (IX-116),A
        JR MS2
MS_DN   LD A,(IX-116)
        INC A
        CP 11
        JR Z,MS3,MS_UP1

MS_EDIT LD HL,M_EDADR
        LD A,(IX-116)
        CALL CURS25
        PUSH BC
        RET

SVIM128 LD A,8
        JR SVIM0

SVIM256 LD A,16
        JR SVIM0

SVIM512 LD A,32
SVIM0   LD L,A
        LD H,0
        CALL MULT64
        EX DE,HL
        INC DE
        LD HL,(VARS-55)
        SBC HL,DE
        JR C,MS3
        LD B,A
        LD C,0
        LD A,(IX-59)
        ADD A,B
        JP M,MS3
        PUSH AF,HL,BC
        CALL INFNAME
        POP BC
        LD DE,(VARS-57)
        PUSH DE,BC
SVIM1   PUSH BC
        LD A,C
        CALL IRAM4,PAGE
        LD HL,#C000
        LD B,#40
        CALL SAVE
        POP BC
        INC C
        DJNZ SVIM1
        LD HL,BUFFEXF
        INC B
        CALL SAVE
        POP BC
        LD A,(IX-59)
        CALL ADRF2
        EX DE,HL
        PUSH DE,BC
SVIM2   PUSH BC,BC
        LD HL,BUFF_I
        LD BC,8
        LDIR
        POP BC
        PUSH HL
        EX DE,HL
        CALL SVIM3
        LD (HL),114
        INC HL
        LD (HL),E
        INC HL
        LD (HL),D
        INC HL
        LD (HL),0
        INC HL
        LD (HL),64
        INC HL
        LD (HL),64
        INC HL,HL,HL
        EX DE,HL
        POP HL,BC
        LD A,C
        INC A
        DAA
        LD C,A
        DJNZ SVIM2
        LD HL,BUFF_I
        LD C,8
        LDIR
        LD HL,AF_RAM
        LD C,3
        LDIR
        EX DE,HL
        LD (HL),B
        INC HL
        LD (HL),1
        INC HL
        LD (HL),1
        POP AF
        ADD A,(IX-59)
        INC A
        LD (IX-59),A
        JR SVSCR1
SVIM3   LD A,C
.4      RRA
        AND #0F
        ADD A,48
        LD E,A,A,C
        AND #0F
        ADD A,48
        LD D,A
        RET

SV1SCR  LD A,(IX-90)
        JR SVSCR0

SV2SCR  LD A,7
SVSCR0  EXA
        BIT 7,(IX-59)
        JP NZ,MS3
        LD HL,(VARS-55)
        LD BC,27
        AND A
        SBC HL,BC
        JP C,MS3
        PUSH HL
        EXA
        CALL PAGE,INFNAME
        LD HL,#C000
        LD DE,(VARS-57)
        LD B,#1B
        PUSH DE
        CALL SAVE
        LD A,(IX-59)
        CALL ADRF2
        EX DE,HL
        LD HL,BUFF_I
        LD BC,8
        PUSH DE
        LDIR
        LD HL,AF_SCR
        LD C,6
        LDIR
        INC (IX-59)
SVSCR1  POP HL,DE
        CALL SETST
        POP HL
        LD (VARS-55),HL
        LD (VARS-57),DE
        CALL SAVECAT,CLEAR20
        XOR A
        CALL PAGE,DISK_I
        JP MS3

CONTIN  CALL IM1ON,INSCACH
        IN (#FB)
        LD HL,BUFFEXF
        LD DE,#004C
        LD BC,24
        LDIR
        LD DE,#0018
        LD BC,22
        LDIR
        JP CPROG

CHBORD  LD HL,BUFFEXF+44
        LD BC,#0E48
CHBORD1 LD DE,NUMBER1
        LD A,(HL)
        PUSH HL,BC,AF
        CALL GETNUM
        LD D,A
        POP AF,BC,HL
        CALL INPNUM2
CHBORD2 CALL CURS6
        JP MS1

CHROM   LD A,(BUFFEXF+41)
        XOR #10
        LD (BUFFEXF+41),A
        JR CHBORD2

CHPAGE  LD HL,BUFFEXF+40
        LD BC,#1048
        JR CHBORD1

CHSCRN  LD A,(BUFFEXF+45)
        XOR 8
        LD (BUFFEXF+45),A
        JR CHBORD2

INFNAME LD HL,BUFF_I
        LD BC,7
        LD (HL),32
        CALL LDIRHL
        LD HL,FNTXT
        CALL PRCL20
        LD D,8
        CALL INPUT
        JP SETTRK

MSINFO  LD BC,#0E48
        LD A,(BUFFEXF+44)
        CALL NUMBER1
        LD HL,R48TXT
        LD BC,#0F48
        LD A,(BUFFEXF+41)
        AND #10
        JR NZ,MS_I1
        LD HL,R128TXT
MS_I1   CALL PRINT
        LD BC,#1048
        LD A,(BUFFEXF+40)
        CALL NUMBER1
        LD BC,#1148
        LD A,(BUFFEXF+45)
.3      RRA
        AND 1
        ADD A,49
        RST 16
        RET

INIRAM  LD HL,BUFFEXF
        LD BC,#00FF
        LD (HL),B
        PUSH HL
        CALL LDIRHL
        POP DE
        LD HL,#004C
        LD BC,24
        LDIR
        EX DE,HL
        LD BC,#1000
IRAM1   PUSH BC
        LD B,0
        PUSH BC
        LD E,C
        LD BC,#FFFD
        OUT E
        INI
        POP DE
        LD BC,#FFFD
        OUT E
        LD BC,#BFFD
        OUT D
        POP BC
        INC C
        DJNZ IRAM1
        PUSH HL
        LD BC,#2000
IRAM2   PUSH BC
        LD A,C
        CALL IRAM4,PAGE
        LD HL,#C000
        LD DE,#0300
        LD B,E
        CALL IRAM6
        POP BC
        JR Z,IRAM3
        INC C
        DJNZ IRAM2
IRAM3   POP HL
        LD DE,(#0064)
        XOR A
        LD (HL),C
        INC HL
        LD (HL),#10
        INC HL
        LD (HL),E
        INC HL
        LD (HL),D
        INC HL
        LD (HL),A
        INC HL
        LD (HL),A
        JP PAGE
IRAM4   CP 2
        JR Z,IRAM5
        CP 5
        RET NZ
        LD A,(IX-90)
        RET
IRAM5   LD A,(IX-90)
        DEC A
        RET
IRAM6   LD A,(DE)
        CP (HL)
        RET NZ
        PUSH BC
        LD BC,64
        ADD HL,BC
        POP BC
        INC DE
        DJNZ IRAM6
        RET

CURS6   EXA
        LD A,(IX-116)
        ADD A,7
        LD D,A
        LD E,0
        CALL ATRDE
        LD B,12
CURS61  LD A,(HL)
        XOR #50
        LD (HL),A
        INC HL
        DJNZ CURS61
        EXA
        RET

INTF    LD HL,FILE3
        LD DE,INTF2
        LD B,3
INTF1   LD A,(DE)
        EXA
        LD A,(HL)
        LD (DE),A
        EXA
        LD (HL),A
        INC HL,DE
        DJNZ INTF1
        RET
INTF2   JP MS0

KMSERV1 DB 7:DW MSRELOA
        DB 94:DW HEXDEC4
        DB 0
KMSERV2 DW MS3,MS3,MS_UP,MS_DN,MS3,MS3
        DW MS_EDIT,MS3

MSTXT   DB 30,5,4,"Turbo Commander "
        DB "magic service v1.0"
        DB 30,7,0,"Turbo Commander"
        DB 30,8,0,"Save 128K image"
        DB 30,9,0,"Save 256K image"
        DB 30,10,0,"Save 512K image"
        DB 30,11,0,"Save 1st screen"
        DB 30,12,0,"Save 2nd screen"
        DB 30,13,0,"Continue program"
        DB 30,14,0,"Border col.:"
        DB 30,15,0,"ROM type   :"
        DB 30,16,0,"Page number:"
        DB 30,17,0,"Screen     :",29
MSATR   DB "@4601200500070D20070000"

R48TXT  DB "48 ",29
R128TXT DB "128",29
FNTXT   DB "Filename:",29

AF_SCR  DB "@430040001B1B"
AF_RAM  DB "@72616D004040"

M_EDADR DW RELOAD,SVIM128,SVIM256
        DW SVIM512,SV1SCR,SV2SCR
        DW CONTIN,CHBORD,CHROM,CHPAGE
        DW CHSCRN

        INCL "TC_P2"

        ORG #8C00
FONT42  INCB "font42"

        ORG #A100
SCR1    INCB "SC096_01"
SCR2    INCB "SC096_02"