ZX-SP-ROMs/SP_TRDOS.ASM
Anatoliy Belyanskiy 66d3e3bb6b SetHDD --> HDD
2024-07-21 01:35:28 +10:00

7115 lines
117 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
;º TR-DOS ver. 5.04Em ³ ELSY Co. 23.11.95 º
;ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ
;º RE-SOURCE'd by Z80MU PROFESSIONAL version 5.2b º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
;!TODO ¨á¯®«ì§®¢ âì ¢­¥è­¨¥ ¯®àâë #E0 ¨ #E3 ¤«ï á®åà ­¥­¨ï ॣ¨áâ஢ ¯à¨ ¯¥à¥å¢ â¥ ¢á直å #3D2F
DEVICE ZXSPECTRUM128
ORG 0
;***************************************
INCLUDE 'Shared_Includes/constants/sp2000.inc'
INCLUDE 'inc/rom_routines.inc'
INCLUDE 'Shared_Includes/constants/zx_char_codes.inc'
INCLUDE 'Shared_Includes/constants/BIOS_equ.inc'
TRDOS_ROM_CMD:
.READ_BPB EQU BIOS.HDD_READ_BPB and #BF
.READ EQU BIOS.HDD_READ and #BF
.WRITE EQU BIOS.HDD_WRITE and #BF
;***************************************
;CNF_PORT EQU #74
AUTO_4000 EQU #4000
AUTO_4010 EQU #4010
AUTO_4011 EQU #4011
AUTO_4020 EQU #4020
AUTO_4080 EQU #4080
AUTO_40E1 EQU #40E1
AUTO_40E3 EQU #40E3
AUTO_40E4 EQU #40E4
AUTO_40E5 EQU #40E5
AUTO_40F0 EQU #40F0
AUTO_40F1 EQU #40F1
AUTO_40FF EQU #40FF
AUTO_4100 EQU #4100
AUTO_4101 EQU #4101
AUTO_4102 EQU #4102
AUTO_4103 EQU #4103
AUTO_4110 EQU #4110
AUTO_4111 EQU #4111
AUTO_4118 EQU #4118
AUTO_4119 EQU #4119
AUTO_411B EQU #411B
AUTO_411D EQU #411D
AUTO_411E EQU #411E
AUTO_4130 EQU #4130
AUTO_4140 EQU #4140
AUTO_41FF EQU #41FF
AUTO_5220 EQU #5220
AUTO_58E8 EQU #58E8
AUTO_5E34 EQU #5E34
AUTO_5F00 EQU #5F00
AUTO_5F10 EQU #5F10
AUTO_5F12 EQU #5F12
AUTO_6000 EQU #6000
PORT_128 EQU #7FFD
AUTO_A1DB EQU #A1DB
AUTO_B0ED EQU #B0ED
AUTO_B8ED EQU #B8ED
AUTO_C000 EQU #C000
AUTO_C130 EQU #C130
AUTO_C308 EQU #C308
AUTO_C916 EQU #C916
AUTO_FE15 EQU #FE15
AUTO_FF00 EQU #FF00
AUTO_FFFF EQU #FFFF
;****************************************
DISPLAY "Start."
START: DI
LD DE,#FFFF
LD A,7
JR CONT_1
RST08:
NOP
CONT_1:
OUT (#FE),A
LD A,'?'
JR CONT_2
////////////////////////////////////////////////////////////////////////
BLOCK #10-$,0
RST10:
JP PRINT_SYM
////////////////////////////////////////////////////////////////////////
CONT_2:
LD I,A
JP CONT_3
////////////////////////////////////////////////////////////////////////
BLOCK #18-$,0
PRINT_LN:
JP PRINT_L
CONT_3:
NOP
NOP
NOP
AUTO_001E:
JR CONT_4
////////////////////////////////////////////////////////////////////////
BLOCK #20-$,0
RST20:
JP RST20_EXE
RET
////////////////////////////////////////////////////////////////////////
CONT_4:
LD H,D
LD L,E
JR CONT_5
////////////////////////////////////////////////////////////////////////
BLOCK #28-$,0
RST28:
JP RST28_EXE
////////////////////////////////////////////////////////////////////////
CONT_5:
LD (HL),2
DEC HL
CP H
JR NZ,CONT_5
JR CONT_6
////////////////////////////////////////////////////////////////////////
REDIR_RST38:
BLOCK #38-$,#FF
; JP RST38X
; EI
; RET
R38: EI
RET
CONT_6:
OR A
SBC HL,DE
ADD HL,DE
INC HL
JR NC,CONT_7
DEC (HL)
JR Z,CONT_7
DEC (HL)
JR Z,CONT_6
CONT_7:
DEC HL
LD (ZX_VARS.P_RAMTOP),HL
LD DE,#3EAF
LD BC,#00A8
LD A,E
EX DE,HL
LD SP,#6000
LD (AUTO_5F00),HL
LD HL,RET_1
PUSH HL
LD HL,#3D2F
PUSH HL
LD HL,#B8ED
////////////////////////////////////////////////////////////////////////
BLOCK #64-$,0
AUTO_0064:
JR CONT_8
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
BLOCK #66-$,0
;********** MAGIC ***********
; JP MAGIC_1 ;AUTO_2A56
RETN
NOP
////////////////////////////////////////////////////////////////////////
CONT_8:
LD (AUTO_5F10),HL
PUSH AF
LD A,201
LD (AUTO_5F12),A
POP AF
LD HL,(AUTO_5F00)
JP AUTO_5F10
RET_1:
EX DE,HL
INC HL
LD (ZX_VARS.UDG),HL
DEC HL
LD BC,AUTO_0540
LD (ZX_VARS.ERR_BEEP),BC
LD (ZX_VARS.TOP_CLEAR),HL
LD HL,03C00h
LD (ZX_VARS.ZG),HL
LD HL,(ZX_VARS.TOP_CLEAR)
LD (HL),'>'
DEC HL
LD SP,HL
DEC HL
DEC HL
LD (ZX_VARS.ERR_SP),HL
LD DE,01303h
PUSH DE
IM 1
LD IY,ZX_VARS.ERR_NR
LD HL,ZX_VARS.BEG_ADRESS
AUTO_00A8:
LD (ZX_VARS.CHANS),HL
LD DE,AUTO_15AF
LD BC,15h
EX DE,HL
CALL AUTO_0117
EX DE,HL
DEC HL
LD (ZX_VARS.DATA_ADR),HL
INC HL
LD (ZX_VARS.BAS_PROG),HL
LD (ZX_VARS.BAS_VARS),HL
LD (HL),128
INC HL
LD (ZX_VARS.E_LINE),HL
DB 54
AUTO_00C8:
DEC C
INC HL
LD (HL),128
INC HL
LD (ZX_VARS.WORK_SPACE),HL
LD (ZX_VARS.STK_BOT),HL
LD (ZX_VARS.STK_END),HL
LD A,'8'
LD (ZX_VARS.ATTR_P),A
LD (ZX_VARS.ATTR_T),A
LD (ZX_VARS.BORDER),A
LD HL,0223h
LD (ZX_VARS.KEY_TIME),HL
DEC (IY-58)
DEC (IY-54)
LD HL,015C6h
LD DE,ZX_VARS.REP_K_TYME
LD BC,14
CALL AUTO_0117
SET 1,(IY+1)
LD HL,ZX_VARS.RET_INS
AUTO_0100:
LD (HL),201
RST_ROM ROUTINE.clear_prb
LD HL,ZX_VARS.L_SCR_SIZE
LD (HL),2
LD HL,AUTO_128B
PUSH HL
LD A,170
LD (ZX_VARS.PRINTER_BUFFER),A
EI
JP AUTO_3D31
AUTO_0117:
LD (AUTO_5F00),HL
LD HL,AUTO_3D2F
PUSH HL
LD HL,AUTO_B0ED
LD (AUTO_5F10),HL
AUTO_0124:
LD HL,(AUTO_5F00)
JP AUTO_5F10
AUTO_012A:
CALL AUTO_20E5
CALL AUTO_1D97
LD HL,(ZX_VARS.E_LINE)
INC HL
LD E,(HL)
INC HL
LD D,(HL)
LD A,D
OR E
EX DE,HL
JR Z,AUTO_0140
XOR A
LD (ZX_VARS.ERR_3D00),A
AUTO_0140:
PUSH HL
CALL AUTO_0232
POP HL
LD (ZX_VARS.NEW_PPC),HL
XOR A
LD (ZX_VARS.NEW_S_PPC),A
RST_ROM ROUTINE.set_min
LD HL,(ZX_VARS.BAS_PROG)
DEC HL
LD (ZX_VARS.DATA_ADR),HL
LD SP,(ZX_VARS.ERR_SP)
LD A,(ZX_VARS.ERR_3D00)
OR A
LD HL,AUTO_1B76
JR Z,AUTO_0166
RST_ROM ROUTINE.report_0
AUTO_0166:
PUSH HL
LD HL,ZX_VARS.RET_INS
PUSH HL
RET
AUTO_016C: ; ¢å®¤ ç¥à¥§ 3D03
CALL xchg_intf1
CALL BUFER_ON
LD A,255
LD (ZX_VARS.MSG_FLAG),A
XOR A
LD (ZX_VARS.DOS_FLAG),A
LD A,170
LD (ZX_VARS.FLAG_BOOT),A
LD HL,AUTO_0201
LD (ZX_VARS.ADR_RET),HL
LD HL,0
ADD HL,SP
LD (ZX_VARS.DOS_SP),HL
DEC HL
DEC HL
LD SP,HL
CALL AUTO_021D
LD HL,(ZX_VARS.TOP_CLEAR)
LD DE,(ZX_VARS.CH_ADR)
SBC HL,DE
EX DE,HL
JR NC,AUTO_01A5
OR A
LD DE,101h
SBC HL,DE
AUTO_01A5:
LD (ZX_VARS.CH_ADR),HL
AUTO_01A8:
CALL AUTO_01C7
AUTO_01AB:
JP Z,AUTO_01D3
CP 234
INC HL
JR NZ,AUTO_01A8
CALL AUTO_01C7
JR Z,AUTO_01AB
CP ':'
JP NZ,AUTO_01D3
INC HL
CALL AUTO_3048 ; convert words
LD HL,(ZX_VARS.ADR_DOS_COM)
JP AUTO_030A
AUTO_01C7:
LD A,(HL)
CP 13
RET Z
CP 128
RET Z
OR A
RET
CALL AUTO_1E43
AUTO_01D3:
LD HL,0
LD (ZX_VARS.DISK_1_FLG),HL
CALL AUTO_20E5
CALL AUTO_1D63
LD HL,ZX_VARS.FLAG_BOOT
LD (HL),170
LD HL,ZX_VARS.FL_NUMBER+1
LD A,(HL)
OR A
LD (HL),0
JR NZ,AUTO_01F3
CALL AUTO_1E1C
CALL AUTO_0212
AUTO_01F3:
LD SP,(ZX_VARS.DOS_SP)
LD HL,(ZX_VARS.ADR_RET)
LD BC,(ZX_VARS.DOS_ERR_2)
LD B,0
AUTO_0200:
JP (HL)
AUTO_0201:
CALL AUTO_0232
BIT 7,(IY+0)
RET NZ
LD DE,ZX_VARS.RET_INS
LD SP,(ZX_VARS.ERR_SP)
PUSH DE
RET
AUTO_0212:
CALL AUTO_1D8C
CP 13
RET Z
CALL BASIC_RST20
JR AUTO_0212
AUTO_021D:
LD HL,(ZX_VARS.ERR_SP)
LD (ZX_VARS.ERR_SP_COPY),HL
LD HL,(ZX_VARS.DOS_SP)
DEC HL
DEC HL
LD (ZX_VARS.ERR_SP),HL
LD DE,AUTO_3D16
LD (HL),E
INC HL
LD (HL),D
RET
AUTO_0232:
LD HL,(ZX_VARS.ERR_SP_COPY)
LD (ZX_VARS.ERR_SP),HL
RET
AUTO_0239: ; ¢å®¤ ç¥à¥§ 3D00
LD HL,0
LD (ZX_VARS.DOS_FLAG),HL
ADD HL,SP
LD (ZX_VARS.DOS_SP),HL
DEC HL
DEC HL
LD SP,HL
CALL LOAD_CR
LD HL,ZX_VARS.FLAG_BOOT
LD A,(HL)
CP 170
LD A,0
LD (ZX_VARS.DOS_ERR_2),A
JP Z,AUTO_02CB
LD (HL),170
CALL AUTO_1D97
CALL OPEN_CH2
LD HL,NEW_NAME
RST PRINT_LN
CALL INIT_2X80
LD A,(ZX_VARS.BEG_ADRESS)
CP 244
JR Z,AUTO_0271
LD HL,AUTO_1000
AUTO_0270:
RST PRINT_LN
AUTO_0271:
LD A,(ZX_VARS.PRINTER_BUFFER)
CP 170
JR NZ,AUTO_02CB
CALL xchg_intf1
AUTO_027B:
LD HL,(ZX_VARS.E_LINE)
LD A,254
AUTO_0280:
LD (ZX_VARS.BAS_DOS_FLG),A
LD (HL),247
INC HL
LD (HL),'"'
INC HL
LD (HL),'b'
INC HL
LD (HL),'o'
INC HL
LD (HL),'o'
INC HL
LD (HL),'t'
INC HL
LD (HL),'"'
INC HL
CMD_NEW_EXEC:
LD (ZX_VARS.K_CUR),HL
LD (HL),13
INC HL
LD (HL),128
INC HL
LD (ZX_VARS.WORK_SPACE),HL
LD (ZX_VARS.STK_BOT),HL
LD (ZX_VARS.STK_END),HL
SET 3,(IY+1)
JR AUTO_02EF
AUTO_02B0:
LD B,3
AUTO_02B2:
LD A,(HL)
LD (DE),A
INC HL
INC DE
DJNZ AUTO_02B2
RET
AUTO_02B9:
LD B,' '
AUTO_02BB:
PUSH BC
XOR 8
OUT (FDC_93.DrvCTRL),A
PUSH AF
LD A,5
CALL pause_1ms
POP AF
POP BC
DJNZ AUTO_02BB
RET
AUTO_02CB:
LD HL,(ZX_VARS.DOS_SP)
DEC HL
DEC HL
LD SP,HL
CALL xchg_intf1
CALL OPEN_CH0
LD A,(ZX_VARS.PDOS_COPY)
OR 3
CALL AUTO_02B9
LD A,(ZX_VARS.PDOS_COPY)
CALL AUTO_02B9
XOR A
LD (ZX_VARS.MSG_FLAG),A
CALL INPUT_LINE
CALL AUTO_3032 ; <20><>…Ž<E280A6><C5BD>€‡Ž<E2809A>ˆ<E28098>ŽŠˆ
AUTO_02EF:
CALL AUTO_1D9F ; ”“<E2809D>ŠˆŸ BASIC ??? ( CLS LOW SCR )
LD HL,AUTO_02CB
LD (ZX_VARS.ADR_RET),HL
XOR A
LD (ZX_VARS.DOS_ERR_2),A
LD HL,(ZX_VARS.E_LINE)
PUSH HL
LD DE,ZX_VARS.COM_LN_COPY
CALL AUTO_02B0
POP HL
LD (ZX_VARS.ADR_DOS_COM),HL
AUTO_030A:
LD A,(HL)
LD B,A
AND 128
LD A,B
JR Z,AUTO_031A ; <E28098>ŽŠ€ <20>…‡ ‘‹Ž‚€-ŠŽŒ€<C592>
CP 254 ; RETURN
JR Z,AUTO_031A
PUSH AF
CALL AUTO_3DC8 ; SET ZX_VARS.CONT_DISK
POP AF
AUTO_031A:
LD HL,TRDOS_CMD.LIST ; <>ˆŽŠ ŠŽŒ€<C592>
DEC HL
LD C,0
AUTO_0320:
INC C
LD D,A
LD A,22 ; 21 !!! Add new comand !!
CP C
JP C,AUTO_01D3 ; …‘‹ˆ <20><20>€‰„…<E2809E>Ž-‚›‰’ˆ
LD A,D
INC HL
CP (HL)
JR NZ,AUTO_0320
CP 254
CALL NZ,BUFER_ON ; ‚ª«îç¨âì ¡ãä¥à, ¥á«¨ ­¥ RETURN
LD A,9
LD (ZX_VARS.S_NAME_NUM),A
XOR A
LD (ZX_VARS.DOS_ERR_2),A
LD (ZX_VARS.DOS_ERROR),A
LD (ZX_VARS.ERR_3D00),A
LD HL,ZX_VARS.FLAGS
RES 7,(HL)
LD B,0
LD HL,TRDOS_CMD.TABLE
DEC C
SLA C
ADD HL,BC
LD E,(HL)
INC HL
LD D,(HL)
EX DE,HL
PUSH HL
LD DE,AUTO_0359
PUSH DE
JP (HL)
AUTO_0359:
LD HL,ZX_VARS.FLAGS
SET 7,(HL)
POP HL
JP (HL)
NAME_TRD:
DB 127," 1986 Technology Research. "
DB "version 5.05 by Makarchenco Ivan. "
DB " <PeterS>",0,0
AUTO_03AC:
CALL AUTO_03FD
CALL PRINT_CR
CALL PRINT_CR
AUTO_03B5:
LD BC,(ZX_VARS.FREE_SEC)
CALL AUTO_1DA9
LD HL,AUTO_29D2
RST PRINT_LN
AUTO_03C0:
JP AUTO_01D3
AUTO_03C3:
PUSH AF
LD A,(ZX_VARS.BAS_DOS_FLG)
CP 254
JR NZ,AUTO_03CD
POP AF
RET
AUTO_03CD:
POP AF
LD (ZX_VARS.DOS_ERR_2),A
LD A,(ZX_VARS.MSG_FLAG)
OR A
CALL Z,PRINT_L
;!FIXIT Žè¨¡ª !!! <20>¥à¥¤ ¯¥ç âìî ­ ¤® ®âªàëâì ¯®â®ª 0 ¨ ®ç¨áâ¨âì ­¨§ íªà ­ .
RET
AUTO_03D9:
LD HL,AUTO_2A28
LD A,1
JP AUTO_1C4A
AUTO_03E1:
LD HL,AUTO_2766
AUTO_03E4:
XOR A
JP AUTO_1C4A
AUTO_03E8:
XOR A
LD (ZX_VARS.CAT_SEC),A
AUTO_03EC:
LD DE,(ZX_VARS.CAT_SEC)
LD D,0
AUTO_03F2:
CALL BUFER_ON
LD HL,ZX_VARS.BUFFER
LD B,1
JP READ_DISK
AUTO_03FD:
CALL BUFER_ON
LD DE,8
JR AUTO_03F2
RD_HEAD_DSK:
CALL AUTO_03FD
LD A,(ZX_VARS.CODE_10H)
CP 16
JR Z,AUTO_0415
;!TEST
; <20>¥¯à ¢¨«ì­® ®¡à ¡ â뢠« áì ®è¨¡ª . <20>ணࠬ¬  ­¥ ¯®«ãç «  ª®¤
; ®è¨¡ª¨,   ¢­¨§ã íªà ­  ᮢ¥à襭­® ­¥ ª ¬¥áâã ¯®ï¢«ï«áï DISK ERROR.
;LD HL,DISK_ERROR_MSG
;RST PRINT_LN
;JR AUTO_03C0
LD HL,DISK_ERROR_MSG
JP RD_HEAD_DSK.FIXED
;
AUTO_0415:
CALL get_disk_type
RES 0,(HL)
RES 1,(HL)
LD A,(ZX_VARS.TYPE_DISK)
BIT 0,A
JR NZ,AUTO_0425
SET 0,(HL)
AUTO_0425:
BIT 3,A
RET NZ
SET 1,(HL)
RET
TEST_CR:
LD HL,(ZX_VARS.ADR_DOS_COM)
INC HL
LD A,(HL)
CP 13
RET
;
;
;
CMD_CAT:
CALL TEST_CR
LD BC,2
LD (ZX_VARS.MED_LEN),BC
JR Z,AUTO_046A
CP '#'
JR NZ,AUTO_045D
LD (ZX_VARS.CH_ADR),HL ; Š€<C5A0> „‹Ÿ CAT
CALL AUTO_1E0B
CALL AUTO_1D8C
CP 13
JR Z,AUTO_046A
CP ','
JP NZ,CMD_ERROR
CALL BASIC_RST20
CALL AUTO_1DBD
JR AUTO_0460
AUTO_045D:
CALL INPUT_TXT
AUTO_0460:
CALL SINTAX_RET
CALL BAS_2BF1
EX DE,HL
CALL SET_DRIVE
AUTO_046A:
CALL SINTAX_RET
LD A,(ZX_VARS.OPER_DISK)
LD (ZX_VARS.DISK_2_FLG),A
CALL RD_HEAD_DSK
LD A,(ZX_VARS.MED_LEN)
AUTO_0479:
CP 2
PUSH AF
CALL Z,AUTO_1D97
POP AF
;!TEST
;CP 17
CP #10
;
JP NC,CMD_ERROR
CALL AUTO_1D84
LD A,255
LD (ZX_VARS.DISK_1_FLG),A
LD HL,AUTO_29F7
RST PRINT_LN
LD HL,ZX_VARS.DISK_NAME
RST PRINT_LN
CALL PRINT_CR
LD A,(ZX_VARS.N_FILES)
LD HL,ZX_VARS.N_DEL_FL
SUB (HL)
PUSH HL
CALL AUTO_1DA3
LD HL,AUTO_2A2B
RST PRINT_LN
POP HL
LD C,(HL)
CALL AUTO_1DA4
LD HL,AUTO_2A1D
RST PRINT_LN
CALL AUTO_03E8
LD HL,ZX_VARS.BUFFER
AUTO_04B6:
CALL AUTO_04F6
CALL PRINT_CR
LD A,(ZX_VARS.OPER_DISK)
ADD A,'A'
RST RST10
LD B,2
AUTO_04C4:
CALL AUTO_04F6
PUSH BC
LD A,':'
RST RST10
PUSH HL
CALL AUTO_2938
LD BC,CONT_1+4
POP HL
PUSH HL
ADD HL,BC
LD C,(HL)
PUSH BC
LD A,C
LD B,2
CP 10
JR C,AUTO_04DF
DEC B
AUTO_04DF:
CP 'd'
JR NC,AUTO_04E8
AUTO_04E3:
LD A,' '
RST RST10
DJNZ AUTO_04E3
AUTO_04E8:
POP BC
CALL AUTO_1DA9
POP HL
POP BC
LD DE,RST10
ADD HL,DE
DJNZ AUTO_04C4
JR AUTO_04B6
AUTO_04F6:
PUSH HL
PUSH BC
LD A,(ZX_VARS.DISK_2_FLG)
LD HL,ZX_VARS.OPER_DISK
CP (HL)
CALL NZ,SET_DISK
POP BC
POP HL
JP AUTO_2FC6
AUTO_0507:
LD DE,RST10
ADD HL,DE
RET
AUTO_050C:
PUSH HL
PUSH BC
LD BC,AUTO_A1DB
ADD HL,BC
JR C,AUTO_0517
POP BC
POP HL
RET
AUTO_0517:
LD HL,ZX_VARS.CAT_SEC
INC (HL)
CALL AUTO_03EC
POP BC
POP HL
LD HL,ZX_VARS.BUFFER
RET
GET_DISK:
AND 223
SBC A,'A'
JP C,CMD_ERROR
CP 4
JP NC,CMD_ERROR
RET
AUTO_0531:
CALL BAS_2BF1
LD A,C
CP B
JP Z,CMD_ERROR
RET
;
;
;
CMD_NEW:
CALL AUTO_1DCD
CALL SINTAX_RET
AUTO_0540:
CALL AUTO_102E
CALL AUTO_1CB0
LD A,(ZX_VARS.OPER_DISK)
LD (ZX_VARS.DISK_1_FLG),A
JP NZ,AUTO_03D9
PUSH BC
CALL AUTO_165D
CALL AUTO_1CB0
PUSH AF
LD A,(ZX_VARS.DISK_1_FLG)
LD HL,ZX_VARS.OPER_DISK
CP (HL)
JP NZ,CMD_ERROR
CALL RD_HEAD_DSK
POP AF
JP Z,AUTO_1C50
POP BC
AUTO_0569:
CALL AUTO_166B
CALL AUTO_1E43
JP AUTO_03E1
AUTO_0572:
LD A,(ZX_VARS.ERR_3D00)
OR A
RET
AUTO_0577:
LD A,(ZX_VARS.N_DEL_FLS)
OR A
JP Z,AUTO_03D9
JP AUTO_03E1
AUTO_0581:
PUSH BC
CALL AUTO_1D97
LD A,(ZX_VARS.OPER_DISK)
ADD A,'A'
CALL PRINT_SYM
LD A,':'
CALL PRINT_SYM
LD HL,ZX_VARS.FL_NAME
CALL AUTO_2938
LD HL,AUTO_2820
CALL PRINT_L
CALL AUTO_1052
CP 'Y'
PUSH AF
CALL AUTO_1D97
POP AF
POP BC
RET NZ
PUSH BC
CALL AUTO_1D97
POP BC
CALL AUTO_0781
XOR A
RET
AUTO_05B4:
LD A,(ZX_VARS.FL_TYPE)
CP '#'
JR Z,AUTO_05BD
XOR A
RET
AUTO_05BD:
LD A,10
LD (ZX_VARS.S_NAME_NUM),A
CALL AUTO_1CB3
LD A,9
LD (ZX_VARS.S_NAME_NUM),A
RET
AUTO_05CB:
LD A,(ZX_VARS.FL_NAME)
CP '*'
;JP NZ,AUTO_03D9
JR Z,.next
RET
.next: CALL BAS_2BF1
EX DE,HL
CALL SET_DRIVE
LD A,(HL)
CP '*'
JP NZ,CMD_ERROR
LD A,(ZX_VARS.OPER_DISK)
LD (ZX_VARS.DISK_2_FLG),A
LD A,(ZX_VARS.DISK_2_FLG)
CALL SET_DISK
CALL RD_HEAD_DSK
LD A,255
LD (ZX_VARS.BUF_FLAG+1),A
AUTO_05F4:
LD A,(ZX_VARS.DISK_1_FLG)
CALL SET_DISK
CALL RD_HEAD_DSK
LD A,(ZX_VARS.BUF_FLAG+1)
INC A
LD (ZX_VARS.BUF_FLAG+1),A
LD C,A
CALL AUTO_165D
LD A,(ZX_VARS.FL_NAME)
CP 0
JP Z,AUTO_03E1
CP 1
JR Z,AUTO_05F4
LD HL,ZX_VARS.FL_START
LD DE,ZX_VARS.VAR_2
LD BC,7
LDIR
LD A,(ZX_VARS.DISK_2_FLG)
CALL SET_DISK
CALL AUTO_1CB3
JR NZ,AUTO_0634
CALL AUTO_05B4
JR NZ,AUTO_0634
CALL AUTO_0581
JR NZ,AUTO_05F4
AUTO_0634:
CALL AUTO_063C
CALL AUTO_1E43
JR AUTO_05F4
AUTO_063C:
CALL AUTO_03FD
LD A,(ZX_VARS.N_FILES)
CP 128
JP Z,AUTO_1C45
LD HL,ZX_VARS.VAR_2
LD DE,ZX_VARS.FL_START
LD BC,7
LDIR
LD DE,(ZX_VARS.FL_SIZE)
LD D,0
OR A
LD HL,(ZX_VARS.FREE_SEC)
SBC HL,DE
JP C,AUTO_1C45
LD (ZX_VARS.FREE_SEC),HL
LD HL,(ZX_VARS.CLEAR_SEC)
LD (ZX_VARS.FL_PLACE),HL
PUSH HL
CALL AUTO_072F
POP HL
LD (ZX_VARS.FL_PLACE),HL
LD HL,(ZX_VARS.CONT_SEC)
LD (ZX_VARS.CLEAR_SEC),HL
LD HL,ZX_VARS.N_FILES
INC (HL)
LD C,(HL)
DEC C
LD B,0
PUSH BC
LD DE,CONT_1
LD (ZX_VARS.CONT_SEC),DE
CALL AUTO_1E43
POP BC
CALL AUTO_166B
RET
;
;
;
CMD_COPY:
LD HL,(ZX_VARS.ADR_DOS_COM)
INC HL
LD A,(HL)
AND 223
CP 'S'
JP Z,AUTO_1360
CP 'B'
JP Z,AUTO_152C
CALL AUTO_1DCD
CALL SINTAX_RET
CALL AUTO_166F
CALL AUTO_102E
CALL AUTO_1CB0
LD A,(ZX_VARS.OPER_DISK)
LD (ZX_VARS.DISK_1_FLG),A
;!TEST Žè¨¡ª !!! COPY "*","*" ­ ¤® ¯à®¢¥àïâì ¢á¥£¤ , ¨­ ç¥ ¯à¨
; ­ «¨ç¨¨ ­  ¤¨áª¥ ä ©«  á ¨¬¥­¥¬ "*" ᪮¯¨àã¥âáï ⮫쪮 íâ®â ä ©«
;JP NZ,AUTO_05CB
CALL CMD_COPY.FIXED
;
CALL AUTO_165D
LD HL,ZX_VARS.FL_START
LD DE,ZX_VARS.VAR_2
LD BC,7
LDIR
CALL AUTO_1CB0
PUSH AF
PUSH BC
LD A,(ZX_VARS.OPER_DISK)
LD (ZX_VARS.DISK_2_FLG),A
LD A,(ZX_VARS.DISK_1_FLG)
CALL SET_DISK
CALL RD_HEAD_DSK
LD A,(ZX_VARS.DISK_2_FLG)
CALL SET_DISK
CALL RD_HEAD_DSK
POP BC
POP AF
JR NZ,AUTO_06F3
CALL AUTO_05B4
JR NZ,AUTO_06F3
CALL AUTO_0581
JP NZ,AUTO_03E1
AUTO_06F3:
CALL AUTO_063C
CALL AUTO_1E43
LD A,(ZX_VARS.FL_TYPE)
CP '#'
JP NZ,AUTO_03E1
LD A,10
LD (ZX_VARS.S_NAME_NUM),A
LD HL,ZX_VARS.FL_START
INC (HL)
LD A,(ZX_VARS.DISK_1_FLG)
CALL SET_DISK
CALL AUTO_05B4
JP NZ,AUTO_03E1
AUTO_0716:
CALL AUTO_165D
LD HL,ZX_VARS.FL_START
LD DE,ZX_VARS.VAR_2
LD BC,7
LDIR
LD A,(ZX_VARS.DISK_2_FLG)
CALL SET_DISK
CALL RD_HEAD_DSK
JR AUTO_06F3
AUTO_072F:
LD A,(ZX_VARS.VAR_2_0)
OR A
RET Z
PUSH HL
LD HL,ZX_VARS.L_5D23
SUB (HL)
POP HL
JR NC,AUTO_0775
LD A,(ZX_VARS.VAR_2_0)
LD B,A
XOR A
LD (ZX_VARS.VAR_2_0),A
AUTO_0744:
PUSH BC
LD A,(ZX_VARS.DISK_1_FLG)
CALL SET_DISK
POP BC
PUSH BC
LD HL,(ZX_VARS.VAR_1)
PUSH HL
LD DE,(ZX_VARS.VAR_2_1)
CALL READ_DISK
LD HL,(ZX_VARS.CONT_SEC)
LD (ZX_VARS.VAR_2_1),HL
LD A,(ZX_VARS.DISK_2_FLG)
CALL SET_DISK
POP HL
POP BC
LD DE,(ZX_VARS.FL_PLACE)
CALL WRITE_DISK
LD HL,(ZX_VARS.CONT_SEC)
LD (ZX_VARS.FL_PLACE),HL
JR AUTO_072F
AUTO_0775:
LD (ZX_VARS.VAR_2_0),A
PUSH HL
LD HL,ZX_VARS.L_5D23
LD B,(HL)
POP HL
XOR A
JR AUTO_0744
AUTO_0781:
XOR A
LD (ZX_VARS.N_DEL_FLS),A
JR AUTO_07A0
;
;
;
CMD_ERASE:
CALL INPUT_TXT
CALL SINTAX_RET
CALL AUTO_102E
XOR A
LD (ZX_VARS.N_DEL_FLS),A
CALL AUTO_292F
CALL AUTO_07A0
JP NZ,AUTO_0577
JP AUTO_03E1
AUTO_07A0:
LD A,(ZX_VARS.FL_NAME)
LD (ZX_VARS.FST_SYM_NAME),A
RET NZ
LD HL,ZX_VARS.N_DEL_FLS
INC (HL)
PUSH BC
CALL AUTO_03FD
LD A,(ZX_VARS.N_FILES)
POP BC
INC C
CP C
JR NZ,AUTO_07BC
DEC A
LD (ZX_VARS.N_FILES),A
XOR A
AUTO_07BC:
PUSH AF
JR Z,AUTO_07C3
LD HL,ZX_VARS.N_DEL_FL
INC (HL)
AUTO_07C3:
PUSH BC
CALL AUTO_1E43
POP BC
DEC C
CALL AUTO_165D
POP AF
JP Z,AUTO_07D2
LD A,1
AUTO_07D2:
LD (ZX_VARS.FL_NAME),A
PUSH AF
CALL AUTO_1E40
LD A,(ZX_VARS.FST_SYM_NAME)
LD (ZX_VARS.FL_NAME),A
POP AF
JR Z,AUTO_07E7
CALL AUTO_1CB3
JR AUTO_07A0
;
AUTO_07E7:
BLOCK #07E7-$,255
CALL AUTO_03FD
LD HL,(ZX_VARS.FL_PLACE)
LD (ZX_VARS.CLEAR_SEC),HL
LD DE,(ZX_VARS.FL_SIZE)
LD HL,(ZX_VARS.FREE_SEC)
LD D,0
ADD HL,DE
LD (ZX_VARS.FREE_SEC),HL
JP AUTO_1E43
WG93_EXE_:
AND 252
JP WG93_EXE
;**************************************
DISPLAY "2k"
;INCLUDE 'trdos/tr_msd_4.asz'
BLOCK #0840-$,255
INCLUDE 'trdos/tr_msd_3.asz'
BLOCK #0B00-$,255
ZG_RUS:
DB 3 ; ¨¤¥­â¨ä¨ª â®à ¢¥àᨨ TR-DOS ???
;**************************************
INCLUDE 'trdos/tr_msd_2.asz'
; DSS 0E00h,255
;**************************************
;
; <20>ãá᪨© §­ ª®£¥­¥à â®à - 40h..7Fh ᨬ¢®«ë.
;
; DSS 0E00h,255
; DB 0,0,76,82,114,82,76,0,0,0,56,4,60,68
; DB 60,0,0,0,120,64,120,68,120,0,0,0,72
; DB 72,72,72,124,4,0,0,24,40,40,40,124,68
; DB 0,0,56,68,120,64,60,0,0,16,56,84,84
; DB 56,16,0,0,0,124,64,64,64,64,0,0,0,68
; DB 40,16,40,68,0,0,0,68,76,84,100,68,0
; DB 0,16,68,76,84,100,68,0,0,0,72,80,112
; DB 72,68,0,0,0,28,36,36,36,68,0,0,0,68
; DB 108,84,84,68,0,0,0,68,68,124,68,68,0
; DB 0,0,56,68,68,68,56,0,0,0,124,68,68,68
; DB 68,0,0,0,60,68,60,36,68,0,0,0,120,68
; DB 68,120,64,64,0,0,56,64,64,64,56,0,0
; DB 0,124,16,16,16,16,0,0,0,68,68,60,4,56
; DB 0,0,0,84,84,56,84,84,0,0,0,120,68,120
; DB 68,120,0,0,0,64,64,120,68,120,0,0,0
; DB 68,68,116,76,116,0,0,0,56,68,24,68,56
; DB 0,0,0,84,84,84,84,124,0,0,0,56,4,28
; DB 4,56,0,0,0,84,84,84,84,126,2,0,0,68
; DB 68,60,4,4,0,0,0,96,32,56,36,56,0,0,76
; DB 82,114,82,82,76,0,0,60,66,66,126,66
; DB 66,0,0,124,64,124,66,66,124,0,0,68,68
; DB 68,68,68,126,2,0,24,36,36,36,36,126
; DB 66,0,126,64,124,64,64,126,0,0,56,84
; DB 84,56,16,16,0,0,126,64,64,64,64,64,0
; DB 0,66,36,24,24,36,66,0,0,66,70,74,82
; DB 98,66,0,0,90,70,74,82,98,66,0,0,68,72
; DB 112,72,68,66,0,0,30,34,34,34,34,66,0
; DB 0,66,102,90,66,66,66,0,0,66,66,126,66
; DB 66,66,0,0,60,66,66,66,66,60,0,0,126
; DB 66,66,66,66,66,0,0,62,66,66,62,34,66
; DB 0,0,124,66,66,124,64,64,0,0,60,66,64
; DB 64,66,60,0,0,254,16,16,16,16,16,0,0
; DB 66,66,62,2,66,60,0,0,84,84,56,84,84
; DB 84,0,0,124,66,124,66,66,124,0,0,64,64
; DB 124,66,66,124,0,0,66,66,114,74,74,114
; DB 0,0,60,66,12,2,66,60,0,0,84,84,84,84
; DB 84,124,0,0,60,66,14,2,66,60,0,0,84,84
; DB 84,84,84,126,2,0,66,66,66,126,2,2,0
; DB 60,66,153,161,161,153,66,60
;
;**************************************
;**************************************
INCLUDE 'trdos/tr_msd_4.asz'
BLOCK #1000 - $,255
;**************************************
DISPLAY "4k"
AUTO_1000:
DB 22,9,5,"Interface one fitted",0
;
;
;
CMD_STAR:
CALL INPUT_TXT
CALL SINTAX_RET
CALL AUTO_0531
LD A,(DE)
CALL GET_DISK
LD (ZX_VARS.CONT_DISK),A
CALL SET_DISK
JP AUTO_03E1
AUTO_102E:
LD B,'C'
LD A,(ZX_VARS.DOS_ERROR)
OR A
JR NZ,AUTO_104D
CALL AUTO_1D8C
CP 175
LD B,'C'
JR Z,AUTO_104D
CP 228
LD B,'D'
JR Z,AUTO_104D
CP '#'
LD B,'#'
JR Z,AUTO_104D
LD B,'B'
AUTO_104D:
LD HL,ZX_VARS.FL_TYPE
LD (HL),B
RET
AUTO_1052:
DI
PUSH HL
PUSH BC
PUSH DE
AUTO_1056:
RST_ROM ROUTINE.key_scan
AUTO_1059:
LD C,0
JR NZ,AUTO_1056
RST_ROM ROUTINE.key_test
JR NC,AUTO_1056
DEC D
LD E,A
RST_ROM ROUTINE.key_decode
POP DE
POP BC
POP HL
AND 223
EI
RET
AUTO_106E:
LD HL,AUTO_58E8
LD B,10
AUTO_1073:
LD (HL),7
INC HL
DJNZ AUTO_1073
LD (HL),2
INC HL
LD (HL),22
INC HL
DB 54
AUTO_107F:
INC (HL)
INC HL
LD (HL),'%'
INC HL
LD (HL),'('
INC HL
LD (HL),7
LD HL,AUTO_40F1
LD B,8
XOR A
AUTO_108F:
PUSH BC
SCF
RLA
PUSH HL
PUSH AF
LD B,5
AUTO_1096:
INC HL
LD (HL),A
DJNZ AUTO_1096
POP AF
POP HL
POP BC
LD DE,AUTO_0100
ADD HL,DE
DJNZ AUTO_108F
RET
RET
AUTO_10A5:
DB " Del."
AUTO_10AA:
DB " File(s)",0
AUTO_10B3:
DB "Title:",160
AUTO_10BA:
DB 23,17," Disk Drive: ",0
AUTO_10CA:
DB 23,16," ",0
AUTO_10CE:
DB 23,16," 40 Track S. Side",0
AUTO_10E2:
DB 23,16," 80 Track S. Side",0
AUTO_10F6:
DB 23,16," 40 Track D. Side",0
AUTO_110A:
DB 23,16," 80 Track D. Side",0
AUTO_111E:
DB 23,16," Free Sector ",0
AUTO_112E:
DB 13,13," File Name Start Length "
DB "Line",0
AUTO_1151:
LD HL,(ZX_VARS.WORK_SPACE)
LD (ZX_VARS.VAR_1),HL
LD BC,AUTO_021D+5
JP AUTO_1E23
AUTO_115D:
XOR A
LD DE,AUTO_2710
AUTO_1161:
SBC HL,DE
JR C,AUTO_1168
INC A
JR AUTO_1161
AUTO_1168:
ADD A,'0'
CALL AUTO_11A8
ADD HL,DE
XOR A
LD DE,AUTO_03E8
AUTO_1172:
SBC HL,DE
JR C,AUTO_1179
INC A
JR AUTO_1172
AUTO_1179:
ADD A,'0'
CALL AUTO_11A8
ADD HL,DE
XOR A
LD DE,AUTO_0064
AUTO_1183:
SBC HL,DE
JR C,AUTO_118A
INC A
JR AUTO_1183
AUTO_118A:
ADD A,'0'
CALL AUTO_11A8
ADD HL,DE
XOR A
LD DE,CONT_1+1
AUTO_1194:
SBC HL,DE
JR C,AUTO_119B
INC A
JR AUTO_1194
AUTO_119B:
ADD A,'0'
CALL AUTO_11A8
ADD HL,DE
LD A,L
ADD A,'0'
CALL AUTO_11A8
RET
AUTO_11A8:
PUSH HL
PUSH DE
CALL PRINT_SYM
POP DE
POP HL
RET
AUTO_11B0:
PUSH HL
PUSH BC
LD A,(ZX_VARS.DISK_2_FLG)
LD HL,ZX_VARS.OPER_DISK
CP (HL)
CALL NZ,SET_DISK
POP BC
POP HL
CALL AUTO_050C
LD A,(HL)
OR A
JP Z,AUTO_01D3
CP 1
CALL Z,AUTO_0507
RET NZ
JR AUTO_11B0
;
;
;
CMD_LIST:
CALL TEST_CR
LD BC,2
LD (ZX_VARS.MED_LEN),BC
JR Z,AUTO_1205
CP '#'
JR NZ,AUTO_11F8
LD (ZX_VARS.CH_ADR),HL
CALL AUTO_1E0B
CALL AUTO_1D8C
CP 13
JR Z,AUTO_1205
CP ','
JP NZ,CMD_ERROR
CALL BASIC_RST20
CALL AUTO_1DBD
JR AUTO_11FB
AUTO_11F8:
CALL INPUT_TXT
AUTO_11FB:
CALL SINTAX_RET
CALL BAS_2BF1
EX DE,HL
CALL SET_DRIVE
AUTO_1205:
CALL SINTAX_RET
LD A,(ZX_VARS.OPER_DISK)
LD (ZX_VARS.DISK_2_FLG),A
CALL RD_HEAD_DSK
LD A,(ZX_VARS.MED_LEN)
CP 2
PUSH AF
CALL Z,AUTO_1D97
POP AF
CP 17
JP NC,CMD_ERROR
CALL AUTO_1D84
LD A,255
LD (ZX_VARS.DISK_1_FLG),A
CALL AUTO_1151
LD HL,ZX_VARS.CLEAR_SEC
LD DE,(ZX_VARS.VAR_1)
LD BC,RST20
LDIR
CALL AUTO_03E8
LD HL,ZX_VARS.BUFFER
PUSH HL
AUTO_123E:
LD HL,AUTO_10B3
PUSH BC
RST PRINT_LN
LD HL,(ZX_VARS.VAR_1)
LD BC,CONT_2+1
ADD HL,BC
RST PRINT_LN
LD HL,AUTO_10BA
RST PRINT_LN
LD A,(ZX_VARS.OPER_DISK)
ADD A,'A'
CALL PRINT_SYM
CALL PRINT_CR
LD HL,(ZX_VARS.VAR_1)
LD BC,3
ADD HL,BC
LD A,(HL)
LD HL,(ZX_VARS.VAR_1)
LD BC,CONT_2
ADD HL,BC
SUB (HL)
PUSH HL
CALL AUTO_1DA3
LD HL,AUTO_10AA
RST PRINT_LN
LD HL,(ZX_VARS.VAR_1)
LD BC,2
ADD HL,BC
LD A,(HL)
LD HL,AUTO_10CE
CP 25
JR Z,AUTO_1292
LD HL,AUTO_10E2
CP 24
JR Z,AUTO_1292
LD HL,AUTO_10F6
AUTO_128B:
CP 23
JR Z,AUTO_1292
LD HL,AUTO_110A
AUTO_1292:
RST PRINT_LN
POP HL
LD C,(HL)
CALL AUTO_1DA4
LD HL,AUTO_10A5
RST PRINT_LN
LD HL,AUTO_111E
RST PRINT_LN
LD HL,(ZX_VARS.VAR_1)
LD BC,4
ADD HL,BC
LD C,(HL)
INC HL
LD B,(HL)
CALL AUTO_1DA9
LD HL,AUTO_112E
RST PRINT_LN
POP BC
POP HL
LD B,16
AUTO_12B5:
CALL AUTO_11B0
CALL PRINT_CR
PUSH BC
PUSH HL
CALL AUTO_2938
LD BC,CONT_1+4
POP HL
PUSH HL
ADD HL,BC
LD C,(HL)
PUSH BC
LD A,C
LD B,2
CP 10
JR C,AUTO_12D0
DEC B
AUTO_12D0:
CP 'd'
JR NC,AUTO_12D9
AUTO_12D4:
LD A,' '
RST RST10
DJNZ AUTO_12D4
AUTO_12D9:
POP BC
CALL AUTO_1DA9
LD HL,AUTO_10CA
RST PRINT_LN
POP HL
PUSH HL
LD BC,CONT_1
ADD HL,BC
LD E,(HL)
INC HL
LD D,(HL)
PUSH HL
EX DE,HL
CALL AUTO_115D
LD A,' '
CALL PRINT_SYM
POP HL
INC HL
LD E,(HL)
INC HL
LD D,(HL)
EX DE,HL
CALL AUTO_115D
POP HL
PUSH HL
LD BC,RST08
ADD HL,BC
AUTO_1303:
LD A,(HL)
CP 'B'
CALL Z,AUTO_131B
POP HL
POP BC
LD DE,RST10
ADD HL,DE
DJNZ AUTO_12B5
PUSH HL
CALL PRINT_CR
CALL PRINT_CR
JP AUTO_123E
AUTO_131B:
LD BC,5
ADD HL,BC
LD B,(HL)
INC HL
LD E,(HL)
INC HL
LD D,(HL)
DEC B
JR Z,AUTO_1335
DEC B
JR Z,AUTO_1335
LD A,16
AUTO_132C:
INC E
CP E
JR NZ,AUTO_1333
LD E,0
INC D
AUTO_1333:
DJNZ AUTO_132C
AUTO_1335:
LD HL,(ZX_VARS.VAR_1)
LD BC,RST20+1
ADD HL,BC
LD B,2
PUSH HL
CALL READ_DISK
LD A,128
POP HL
LD BC,AUTO_0200
CPIR
LD A,(HL)
CP 170
RET NZ
INC HL
LD C,(HL)
INC HL
LD B,(HL)
LD A,B
OR C
RET Z
PUSH BC
LD A,' '
CALL PRINT_SYM
POP BC
CALL AUTO_1DA9
RET
AUTO_1360:
CALL AUTO_1DC5
CALL BASIC_RST20
CALL AUTO_1DBD
CALL SINTAX_RET
CALL AUTO_166F
LD HL,AUTO_27AA
CALL PRINT_L
AUTO_1375:
CALL AUTO_1052
CP 'Y'
JR NZ,AUTO_1375
CALL AUTO_1D9F
CALL AUTO_102E
CALL AUTO_1CB0
JP NZ,AUTO_03D9
CALL AUTO_13B7
LD A,(ZX_VARS.FL_TYPE)
CP '#'
JP NZ,AUTO_03E1
AUTO_1393:
LD A,10
LD (ZX_VARS.S_NAME_NUM),A
LD HL,ZX_VARS.FL_START
INC (HL)
CALL AUTO_1D97
LD HL,AUTO_27AA
CALL PRINT_L
AUTO_13A5:
CALL AUTO_1052
CP 'Y'
JR NZ,AUTO_13A5
CALL AUTO_1CB3
JP NZ,AUTO_03E1
CALL AUTO_13B7
JR AUTO_1393
AUTO_13B7:
CALL AUTO_165D
LD HL,ZX_VARS.FL_START
LD DE,ZX_VARS.VAR_2
LD BC,7
LDIR
LD A,(ZX_VARS.VAR_2_0)
LD (ZX_VARS.ERR_3D00),A
CALL RD_HEAD_DSK
CALL get_disk_type
LD (ZX_VARS.DOS_CH_ADR),A
LD A,255
LD (ZX_VARS.COM_LN_COPY+1),A
CALL AUTO_1451
LD HL,(ZX_VARS.FL_NUMBER+1)
LD (ZX_VARS.FL_PLACE),HL
LD HL,(ZX_VARS.CONT_SEC)
LD (ZX_VARS.CLEAR_SEC),HL
LD HL,ZX_VARS.N_FILES
INC (HL)
LD C,(HL)
DEC C
LD B,0
PUSH BC
LD DE,CONT_1
LD (ZX_VARS.CONT_SEC),DE
CALL AUTO_1E43
POP BC
CALL AUTO_166B
CALL AUTO_1E43
RET
AUTO_1403:
XOR A
LD (ZX_VARS.COM_LN_COPY+1),A
CALL RD_HEAD_DSK
CALL get_disk_type
LD (ZX_VARS.DOS_CH_ADR+1),A
CALL AUTO_1CB3
JP Z,AUTO_1C50
CALL AUTO_03FD
LD A,(ZX_VARS.N_FILES)
CP 128
JP Z,AUTO_2723
LD HL,ZX_VARS.VAR_2
LD DE,ZX_VARS.FL_START
LD BC,7
LDIR
CALL AUTO_03FD
LD A,(ZX_VARS.ERR_3D00)
LD (ZX_VARS.FL_SIZE),A
LD DE,(ZX_VARS.FL_SIZE)
LD D,0
OR A
LD HL,(ZX_VARS.FREE_SEC)
SBC HL,DE
JP C,AUTO_1C45
LD (ZX_VARS.FREE_SEC),HL
LD HL,(ZX_VARS.CLEAR_SEC)
LD (ZX_VARS.FL_PLACE),HL
LD (ZX_VARS.FL_NUMBER+1),HL
RET
AUTO_1451:
LD A,(ZX_VARS.VAR_2_0)
OR A
RET Z
LD A,(ZX_VARS.COM_LN_COPY+1)
OR A
JR NZ,AUTO_146F
CALL AUTO_1D97
LD HL,AUTO_27AA
CALL PRINT_L
AUTO_1465:
CALL AUTO_1052
CP 'Y'
JR NZ,AUTO_1465
CALL AUTO_1D9F
AUTO_146F:
LD A,(ZX_VARS.VAR_2_0)
OR A
RET Z
PUSH HL
LD HL,ZX_VARS.L_5D23
SUB (HL)
POP HL
JR NC,AUTO_14CB
LD A,(ZX_VARS.VAR_2_0)
LD B,A
XOR A
LD (ZX_VARS.VAR_2_0),A
AUTO_1484:
PUSH BC
LD (ZX_VARS.RD_WR_COM),A
LD HL,(ZX_VARS.VAR_1)
PUSH HL
LD DE,(ZX_VARS.VAR_2_1)
CALL AUTO_14D8
CALL READ_DISK
LD HL,(ZX_VARS.CONT_SEC)
LD (ZX_VARS.VAR_2_1),HL
CALL AUTO_1D97
LD HL,AUTO_2785
CALL PRINT_L
AUTO_14A5:
CALL AUTO_1052
CP 'Y'
JR NZ,AUTO_14A5
CALL AUTO_1D9F
LD A,(ZX_VARS.COM_LN_COPY+1)
OR A
CALL NZ,AUTO_1403
POP HL
POP BC
LD DE,(ZX_VARS.FL_PLACE)
CALL AUTO_14E4
CALL WRITE_DISK
LD HL,(ZX_VARS.CONT_SEC)
LD (ZX_VARS.FL_PLACE),HL
JP AUTO_1451
AUTO_14CB:
LD (ZX_VARS.VAR_2_0),A
PUSH HL
LD HL,ZX_VARS.L_5D23
LD B,(HL)
POP HL
XOR A
JP AUTO_1484
AUTO_14D8:
PUSH HL
PUSH DE
CALL get_disk_type
LD A,(ZX_VARS.DOS_CH_ADR)
LD (HL),A
POP DE
POP HL
RET
AUTO_14E4:
PUSH HL
PUSH DE
CALL get_disk_type
LD A,(ZX_VARS.DOS_CH_ADR+1)
LD (HL),A
POP DE
POP HL
RET
AUTO_14F0:
XOR A
LD (ZX_VARS.COM_LN_COPY+1),A
CALL RD_HEAD_DSK
CALL get_disk_type
LD (ZX_VARS.DOS_CH_ADR+1),A
LD A,(ZX_VARS.TYPE_DISK)
LD (ZX_VARS.FL_START+1),A
LD HL,AUTO_0280
CP 25
JR Z,AUTO_151F
LD HL,AUTO_04F6+10
CP 24
JR Z,AUTO_151F
CP 23
JR Z,AUTO_151F
LD HL,0A00h
CP 22
JR Z,AUTO_151F
JP CMD_ERROR
AUTO_151F:
LD (ZX_VARS.FL_NAME),HL
LD BC,(ZX_VARS.FL_N_2)
SBC HL,BC
JP C,AUTO_1C45
RET
AUTO_152C:
CALL SINTAX_RET
CALL AUTO_166F
LD HL,AUTO_2779
CALL PRINT_L
LD HL,AUTO_27AA
CALL PRINT_L
AUTO_153E:
CALL AUTO_1052
CP 'Y'
JR NZ,AUTO_153E
CALL AUTO_1D9F
LD A,255
LD (ZX_VARS.COM_LN_COPY+1),A
CALL RD_HEAD_DSK
CALL get_disk_type
LD (ZX_VARS.DOS_CH_ADR),A
LD A,(ZX_VARS.TYPE_DISK)
CP 25
LD HL,AUTO_0280
JR Z,AUTO_1575
LD HL,AUTO_04F6+10
CP 24
JR Z,AUTO_1575
CP 23
JR Z,AUTO_1575
LD HL,0A00h
CP 22
JR Z,AUTO_1575
JP CMD_ERROR
AUTO_1575:
LD BC,(ZX_VARS.FREE_SEC)
SBC HL,BC
LD (ZX_VARS.FL_TYPE),HL
LD (ZX_VARS.FL_N_2),HL
LD HL,0
LD (ZX_VARS.FL_N_4),HL
LD (ZX_VARS.FL_N_6),HL
CALL AUTO_15B8
CALL RD_HEAD_DSK
LD A,(ZX_VARS.FL_START+1)
LD (ZX_VARS.TYPE_DISK),A
LD HL,(ZX_VARS.FL_NAME)
LD BC,(ZX_VARS.FL_N_2)
SBC HL,BC
LD (ZX_VARS.FREE_SEC),HL
CALL AUTO_14E4
LD DE,CONT_1
LD (ZX_VARS.CONT_SEC),DE
CALL AUTO_1E43
AUTO_15AF:
JP AUTO_03E1
AUTO_15B2:
LD HL,(ZX_VARS.FL_TYPE)
LD A,H
OR L
RET
AUTO_15B8:
CALL AUTO_15B2
RET Z
LD A,(ZX_VARS.COM_LN_COPY+1)
OR A
JR NZ,AUTO_15DB
CALL AUTO_1D97
LD HL,AUTO_2779
CALL PRINT_L
LD HL,AUTO_27AA
CALL PRINT_L
AUTO_15D1:
CALL AUTO_1052
CP 'Y'
JR NZ,AUTO_15D1
CALL AUTO_1D9F
AUTO_15DB:
CALL AUTO_15B2
RET Z
PUSH BC
PUSH HL
LD HL,ZX_VARS.L_5D23
LD C,(HL)
LD B,0
POP HL
SBC HL,BC
POP BC
JP NC,AUTO_1644
LD BC,(ZX_VARS.FL_TYPE)
LD HL,0
LD (ZX_VARS.FL_TYPE),HL
AUTO_15F8:
PUSH BC
LD HL,(ZX_VARS.VAR_1)
PUSH HL
CALL AUTO_14D8
LD DE,(ZX_VARS.FL_N_4)
LD B,C
CALL READ_DISK
LD HL,(ZX_VARS.CONT_SEC)
LD (ZX_VARS.FL_N_4),HL
CALL AUTO_1D97
LD HL,AUTO_2779
CALL PRINT_L
LD HL,AUTO_2785
CALL PRINT_L
AUTO_161D:
CALL AUTO_1052
CP 'Y'
JR NZ,AUTO_161D
CALL AUTO_1D9F
LD A,(ZX_VARS.COM_LN_COPY+1)
AUTO_162A:
OR A
CALL NZ,AUTO_14F0
POP HL
POP BC
LD DE,(ZX_VARS.FL_N_6)
LD B,C
CALL AUTO_14E4
CALL WRITE_DISK
LD HL,(ZX_VARS.CONT_SEC)
LD (ZX_VARS.FL_N_6),HL
JP AUTO_15B8
AUTO_1644:
LD (ZX_VARS.FL_TYPE),HL
PUSH HL
LD HL,ZX_VARS.L_5D23
LD C,(HL)
LD B,0
POP HL
XOR A
JP AUTO_15F8
CALL AUTO_165D
LD A,(ZX_VARS.FL_NAME)
CP 1
RET
AUTO_165C:
LD C,A
AUTO_165D:
XOR A
AUTO_165E:
PUSH BC
CALL AUTO_17E9
POP BC
RET
AUTO_1664:
LD C,A
AUTO_1665:
CALL AUTO_166B
JP AUTO_1E43
AUTO_166B:
LD A,255
JR AUTO_165E
AUTO_166F:
LD A,255
LD (ZX_VARS.BAS_DOS_FLG),A
CALL AUTO_1680
LD HL,(ZX_VARS.WORK_SPACE)
LD (ZX_VARS.VAR_1),HL
JP AUTO_1E23
AUTO_1680:
RST_ROM ROUTINE.free_mem
LD HL,#FFFF
SBC HL,BC
LD A,H
CP 16
JR NC,AUTO_168F
LD A,17
AUTO_168F:
DEC A
LD (ZX_VARS.L_5D23),A
LD B,A
LD C,0
RET
;
LD (ZX_VARS.MED_START),HL
LD (ZX_VARS.MED_LEN),HL
LD DE,(ZX_VARS.FL_SIZE)
LD HL,(ZX_VARS.DOS_CH_ADR)
LD D,0
ADD HL,DE
LD (ZX_VARS.DOS_CH_ADR),HL
RET
;
;
;
CMD_MOVE:
CALL TEST_CR
JP NZ,AUTO_1775
CALL SINTAX_RET
CALL AUTO_166F
LD HL,(ZX_VARS.VAR_1)
LD (ZX_VARS.FL_N_4),HL
LD DE,0900h
ADD HL,DE
LD (ZX_VARS.VAR_1),HL
LD A,(ZX_VARS.L_5D23)
SUB 9
LD (ZX_VARS.L_5D23),A
LD HL,(ZX_VARS.FL_N_4)
LD DE,0
LD B,9
CALL READ_DISK
LD HL,(ZX_VARS.FL_N_4)
LD (ZX_VARS.FL_N_2),HL
LD HL,AUTO_0100
LD (ZX_VARS.MED_START),HL
LD (ZX_VARS.FL_NAME),HL
XOR A
LD (ZX_VARS.FL_N_6),HL
LD (ZX_VARS.FL_N_7),A
CALL MOVE_X00
LD DE,(ZX_VARS.FL_N_4)
LD HL,(ZX_VARS.FL_N_2)
EX DE,HL
LD BC,WG93_EXE_
ADD HL,BC
AND A
SBC HL,DE
DEC HL
LD C,L
LD B,H
EX DE,HL
LD D,H
LD E,L
INC DE
LD (HL),0
LDIR
LD HL,(ZX_VARS.FL_N_4)
LD DE,08E1h
ADD HL,DE
LD E,(HL)
INC HL
LD D,(HL)
LD BC,(ZX_VARS.MED_START)
LD (HL),B
DEC HL
LD (HL),C
INC HL
INC HL
INC HL
INC HL
LD C,(HL)
INC HL
LD B,(HL)
EX DE,HL
LD A,L
AND 15
LD L,H
LD H,0
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD A,L
LD L,A
ADD HL,BC
LD BC,(ZX_VARS.MED_START)
LD (ZX_VARS.MED_START),HL
LD L,B
LD H,0
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD A,C
AND 15
ADD A,L
LD C,A
LD B,H
LD HL,(ZX_VARS.MED_START)
AND A
SBC HL,BC
EX DE,HL
LD (HL),D
DEC HL
LD (HL),E
DEC HL
LD A,(ZX_VARS.FL_N_6)
LD (HL),A
LD DE,RST10
ADD HL,DE
LD (HL),0
LD HL,(ZX_VARS.FL_N_4)
LD DE,0
LD B,9
CALL WRITE_DISK
LD A,(ZX_VARS.L_5D23)
ADD A,9
LD B,A
LD C,0
LD HL,(ZX_VARS.VAR_1)
CALL AUTO_1E2E
JP AUTO_03E1
AUTO_1775:
CALL INPUT_TXT
CALL SINTAX_RET
CALL AUTO_1C57
CALL AUTO_03FD
LD HL,ZX_VARS.FL_NAME
LD DE,ZX_VARS.DISK_NAME
LD BC,RST08
LDIR
CALL AUTO_1E43
JP AUTO_03E1
RST R38
RST R38
RST R38
RST R38
RST R38
RST R38
RST R38
RST R38
RST R38
RST R38
RST R38
RST R38
RST R38
RST R38
RST R38
RST R38
RST R38
RST R38
RST R38
AUTO_17A5:
LD A,(ZX_VARS.AUTO_5CD3)
OR A
RET Z
PUSH HL
LD HL,ZX_VARS.L_5D23
SUB (HL)
POP HL
JR NC,AUTO_17DD
LD A,(ZX_VARS.AUTO_5CD3)
LD B,A
XOR A
LD (ZX_VARS.AUTO_5CD3),A
AUTO_17BA:
PUSH BC
LD HL,(ZX_VARS.VAR_1)
PUSH HL
LD DE,(ZX_VARS.AUTO_5CD5)
CALL READ_DISK
LD HL,(ZX_VARS.CONT_SEC)
LD (ZX_VARS.AUTO_5CD5),HL
POP HL
POP BC
LD DE,(ZX_VARS.MED_START)
CALL WRITE_DISK
LD HL,(ZX_VARS.CONT_SEC)
LD (ZX_VARS.MED_START),HL
JR AUTO_17A5
AUTO_17DD:
LD (ZX_VARS.AUTO_5CD3),A
PUSH HL
LD HL,ZX_VARS.L_5D23
LD B,(HL)
POP HL
XOR A
JR AUTO_17BA
AUTO_17E9:
PUSH AF
LD HL,ZX_VARS.CAT_SEC
LD (HL),0
LD A,C
AUTO_17F0:
SUB 16
JR C,AUTO_17F7
INC (HL)
JR AUTO_17F0
AUTO_17F7:
ADD A,16
LD C,A
PUSH BC
CALL AUTO_03EC
POP BC
POP AF
CALL AUTO_1CA4
LD DE,ZX_VARS.FL_NAME
LD BC,RST10
OR A
JR Z,AUTO_180D
EX DE,HL
AUTO_180D:
LDIR
RET
DISPLAY "6k"
;
;
;
CMD_VERIFY:
LD A,255
LD (ZX_VARS.DISK_2_FLG),A
;
;
;
CMD_LOAD:
CALL AUTO_1852
AUTO_1818:
CALL AUTO_1836
CALL SINTAX_RET
LD A,255
LD (ZX_VARS.ERR_3D00),A
LD A,(ZX_VARS.DISK_2_FLG)
CP 255
JP Z,AUTO_03E1
LD A,(ZX_VARS.FL_TYPE)
CP 'B'
JP Z,AUTO_012A
JP AUTO_03E1
AUTO_1836:
CALL AUTO_187A
CALL SINTAX_RET
CALL AUTO_18AB
JP AUTO_1921
AUTO_1842:
LD HL,(ZX_VARS.CH_ADR)
INC HL
LD A,(HL)
CP 13
RET Z
LD A,1
LD (ZX_VARS.DOS_ERROR),A
CALL AUTO_1DEB
AUTO_1852:
XOR A
LD (ZX_VARS.ERR_3D00),A
RET
AUTO_1857:
CALL AUTO_102E
LD A,'B'
CP B
JR NZ,AUTO_1866
LD HL,(ZX_VARS.CH_ADR)
DEC HL
LD (ZX_VARS.CH_ADR),HL
AUTO_1866:
CALL AUTO_1DEB
LD HL,(ZX_VARS.DOS_CH_ADR)
LD (ZX_VARS.MED_START),HL
LD HL,(ZX_VARS.MED_LEN)
LD (ZX_VARS.DOS_CH_ADR),HL
XOR A
LD (ZX_VARS.DOS_ERROR),A
RET
AUTO_187A:
CALL TEST_CR
JP Z,AUTO_027B
CALL INPUT_TXT
CALL AUTO_0572
CALL NZ,AUTO_1857
CALL AUTO_1D8C
CP 175
CALL Z,AUTO_1842
CP 228
PUSH AF
CALL AUTO_0572
CALL Z,AUTO_102E
POP AF
CALL Z,AUTO_1BFC
CALL SINTAX_RET
CALL AUTO_292F
AUTO_18A4:
JP NZ,AUTO_03D9
CALL AUTO_165D
RET
AUTO_18AB:
CALL TYPE_FL_X00
OR A
LD HL,(ZX_VARS.FL_START)
JR Z,AUTO_18B7
LD HL,(ZX_VARS.DOS_CH_ADR)
AUTO_18B7:
LD DE,(ZX_VARS.FL_PLACE)
CP 3
LD A,(ZX_VARS.FL_SIZE)
PUSH DE
LD DE,(ZX_VARS.FL_LEN)
JR NZ,AUTO_18CB
LD DE,(ZX_VARS.MED_LEN)
AUTO_18CB:
LD B,A
LD (ZX_VARS.MED_LEN),DE
LD A,(ZX_VARS.FL_TYPE)
CP 'C'
LD A,B
JR NZ,AUTO_18FD
LD A,B
CP D
JR Z,AUTO_18F6
DEC A
CP D
LD A,B
JR Z,AUTO_18F6
LD A,(ZX_VARS.DOS_ERROR)
CP 3
LD A,B
JR Z,AUTO_18F6
XOR A
LD (ZX_VARS.DOS_ERROR),A
LD D,B
LD E,0
LD (ZX_VARS.MED_LEN),DE
JR AUTO_18F9
AUTO_18F6:
CALL AUTO_191B
AUTO_18F9:
LD A,B
CALL AUTO_1EAC
AUTO_18FD:
LD B,A
LD A,(ZX_VARS.FL_TYPE)
CP 'C'
POP DE
RET Z
PUSH DE
CP 'B'
PUSH AF
CALL Z,AUTO_1A01
POP AF
CP 'D'
CALL Z,AUTO_1A4C
CALL AUTO_191B
LD A,(ZX_VARS.MED_LEN+1)
LD B,A
POP DE
RET
AUTO_191B:
LD A,3
LD (ZX_VARS.DOS_ERROR),A
RET
AUTO_1921:
CALL AUTO_0572
JR Z,AUTO_192D
PUSH AF
CALL AUTO_1A94
POP AF
CP 255
AUTO_192D:
PUSH AF
CALL Z,AUTO_195C
POP AF
JR Z,AUTO_1937
JP WRITE_DISK
AUTO_1937:
LD A,(ZX_VARS.DOS_ERROR)
CP 3
CALL Z,AUTO_1946
LD HL,(ZX_VARS.E_LINE)
DEC HL
LD (HL),128
RET
AUTO_1946:
LD A,(ZX_VARS.DISK_2_FLG)
CP 255
JP NZ,AUTO_2FDE
LD A,(ZX_VARS.MED_LEN)
OR A
RET Z
LD C,A
LD B,1
LD DE,(ZX_VARS.CONT_SEC)
JR AUTO_196A
AUTO_195C:
LD A,(ZX_VARS.DISK_2_FLG)
CP 255
JP NZ,READ_DISK
LD (ZX_VARS.CONT_SEC),DE
LD C,0
AUTO_196A:
LD A,B
OR A
RET Z
LD (ZX_VARS.MED_START),HL
LD (ZX_VARS.DOS_CH_ADR),DE
AUTO_1974:
PUSH BC
LD B,1
LD DE,(ZX_VARS.DOS_CH_ADR)
LD HL,ZX_VARS.BUFFER
CALL READ_DISK
LD HL,(ZX_VARS.CONT_SEC)
LD (ZX_VARS.DOS_CH_ADR),HL
POP BC
LD HL,(ZX_VARS.MED_START)
LD DE,ZX_VARS.BUFFER
AUTO_198E:
LD A,(DE)
CP (HL)
JR NZ,AUTO_199D
INC HL
INC DE
DEC C
JR NZ,AUTO_198E
LD (ZX_VARS.MED_START),HL
DJNZ AUTO_1974
RET
AUTO_199D:
LD HL,AUTO_276B
LD A,13
JP AUTO_1C4A
;
;
;
CMD_PEEK:
LD A,255
JR AUTO_19AB
;
;
;
CMD_POKE:
LD A,238
AUTO_19AB:
LD (ZX_VARS.ERR_3D00),A
JP AUTO_1818
;
;
;
CMD_MERGE:
LD A,255
LD (ZX_VARS.FL_NUMBER+1),A
CALL AUTO_187A
CALL SINTAX_RET
LD A,(ZX_VARS.FL_TYPE)
CP 'B'
JP NZ,CMD_ERROR
LD BC,(ZX_VARS.FL_START)
LD (ZX_VARS.MED_LEN),BC
PUSH BC
INC BC
RST_ROM ROUTINE.bc_spaces
AUTO_19D1:
LD (HL),128
EX DE,HL
POP DE
PUSH HL
LD DE,(ZX_VARS.FL_PLACE)
CALL AUTO_191B
LD A,(ZX_VARS.MED_LEN+1)
LD B,A
CALL AUTO_1852
CALL AUTO_1921
POP HL
LD DE,(ZX_VARS.BAS_PROG)
RST_ROM ROUTINE.me_new_lp
JP AUTO_03E1
AUTO_19F2:
EX DE,HL
SCF
SBC HL,DE
RET C
LD DE,CONT_1+1
ADD HL,DE
LD B,H
LD C,L
AUTO_19FD:
RST_ROM ROUTINE.test_room
RET
AUTO_1A01:
LD DE,(ZX_VARS.BAS_PROG)
LD HL,(ZX_VARS.E_LINE)
DEC HL
PUSH HL
PUSH DE
SBC HL,DE
LD DE,(ZX_VARS.FL_START)
PUSH DE
PUSH HL
LD HL,0
LD A,(ZX_VARS.DISK_2_FLG)
CP 255
JR Z,AUTO_1A20
LD HL,5
AUTO_1A20:
ADD HL,DE
LD (ZX_VARS.MED_LEN),HL
POP HL
LD A,(ZX_VARS.DISK_2_FLG)
CP 255
JR NZ,AUTO_1A31
POP DE
POP DE
POP HL
JR AUTO_1A48
AUTO_1A31:
CALL AUTO_19F2
POP BC
POP DE
POP HL
PUSH BC
RST_ROM ROUTINE.reclaim_1
POP BC
CALL AUTO_1E32
INC HL
LD BC,(ZX_VARS.FL_LEN)
ADD HL,BC
LD (ZX_VARS.BAS_VARS),HL
AUTO_1A48:
LD HL,(ZX_VARS.BAS_PROG)
RET
AUTO_1A4C:
LD DE,(ZX_VARS.FL_LEN)
LD (ZX_VARS.MED_LEN),DE
LD HL,(ZX_VARS.MED_START)
LD A,(ZX_VARS.DISK_2_FLG)
CP 255
RET Z
LD HL,(ZX_VARS.DOS_CH_ADR)
PUSH HL
CALL AUTO_19F2
POP HL
LD A,H
OR L
JR Z,AUTO_1A79
LD HL,(ZX_VARS.MED_START)
DEC HL
DEC HL
DEC HL
LD BC,(ZX_VARS.DOS_CH_ADR)
INC BC
INC BC
INC BC
CALL AUTO_1E2E
AUTO_1A79:
LD HL,(ZX_VARS.E_LINE)
DEC HL
LD BC,(ZX_VARS.FL_LEN)
PUSH BC
INC BC
INC BC
INC BC
CALL AUTO_1E32
INC HL
LD A,(ZX_VARS.AUTO_5CD2)
LD (HL),A
INC HL
POP DE
LD (HL),E
INC HL
LD (HL),D
INC HL
RET
AUTO_1A94:
LD A,(ZX_VARS.DOS_CH_ADR)
LD C,B
LD B,A
LD A,C
CP B
JR C,AUTO_1AB6
LD A,B
OR A
JP Z,CMD_ERROR
DEC B
JR Z,AUTO_1AB0
LD A,16
AUTO_1AA7:
INC E
CP E
JR NZ,AUTO_1AAE
LD E,0
INC D
AUTO_1AAE:
DJNZ AUTO_1AA7
AUTO_1AB0:
LD B,1
LD HL,(ZX_VARS.MED_START)
RET
AUTO_1AB6:
LD HL,AUTO_29ED
LD A,5
JP AUTO_1C4A
AUTO_1ABE:
CALL AUTO_292F
CALL Z,SET_7_TYPE
AUTO_1AC4:
CALL AUTO_03FD
LD A,(ZX_VARS.N_FILES)
CP 128
JP Z,AUTO_2723
RET
;
;
;
CMD_SAVE:
CALL AUTO_1852
LD HL,0
LD (ZX_VARS.AUTO_5CD1),HL
CALL INPUT_TXT
CALL AUTO_1D8C
CP 175
JR Z,AUTO_1B39
CP 202
JR NZ,AUTO_1AF8
CALL AUTO_1E0B
CALL SINTAX_RET
LD HL,(ZX_VARS.MED_LEN)
LD (ZX_VARS.AUTO_5CD1),HL
LD HL,ZX_VARS.FL_TYPE
JR AUTO_1B1F
AUTO_1AF8:
CP 170
JR NZ,AUTO_1B0D
LD HL,AUTO_4000
DB 34
AUTO_1B00:
RST RST10
LD E,H
LD HL,AUTO_1B00
LD (ZX_VARS.DOS_CH_ADR),HL
LD (ZX_VARS.MED_LEN),HL
JR AUTO_1B48
AUTO_1B0D:
CALL SINTAX_RET
CALL AUTO_1D8C
LD HL,ZX_VARS.FL_TYPE
CP 228
JR Z,AUTO_1B2C
CP 13
JP NZ,CMD_ERROR
AUTO_1B1F:
LD (HL),'B'
CALL AUTO_1ABE
CALL AUTO_1E1C
AUTO_1B27:
CALL AUTO_1BDE
JR AUTO_1B53
AUTO_1B2C:
LD (HL),'D'
CALL AUTO_1ABE
CALL AUTO_1C0F
JR NC,AUTO_1B53
JP C,CMD_ERROR
AUTO_1B39:
CALL AUTO_1DE5
LD HL,(ZX_VARS.DOS_CH_ADR)
LD (ZX_VARS.MED_START),HL
LD HL,(ZX_VARS.MED_LEN)
LD (ZX_VARS.DOS_CH_ADR),HL
AUTO_1B48:
CALL SINTAX_RET
LD A,'C'
LD (ZX_VARS.FL_TYPE),A
CALL AUTO_1ABE
AUTO_1B53:
CALL OWERWR_X01
JP AUTO_0569
AUTO_1B59:
LD HL,(ZX_VARS.MED_START)
LD (ZX_VARS.FL_START),HL
EX DE,HL
LD HL,(ZX_VARS.DOS_CH_ADR)
LD A,L
OR H
JP Z,CMD_ERROR
LD A,L
OR A
JR Z,AUTO_1B6D
INC H
AUTO_1B6D:
LD A,H
LD (ZX_VARS.FL_SIZE),A
LD E,A
LD D,0
DB 42,10
AUTO_1B76:
LD E,(HL)
SBC HL,DE
JP C,AUTO_1C45
PUSH HL
LD HL,(ZX_VARS.E_LINE)
LD (HL),170
INC HL
LD DE,(ZX_VARS.AUTO_5CD1)
LD (HL),E
INC HL
LD (HL),D
LD HL,(ZX_VARS.MED_LEN)
LD (ZX_VARS.FL_LEN),HL
LD HL,(ZX_VARS.CLEAR_SEC)
LD (ZX_VARS.FL_PLACE),HL
EX DE,HL
LD HL,(ZX_VARS.FL_START)
LD A,(ZX_VARS.FL_SIZE)
LD B,A
CALL WRITE_DISK
LD HL,(ZX_VARS.CONT_SEC)
PUSH HL
CALL AUTO_03FD
POP HL
LD (ZX_VARS.CLEAR_SEC),HL
POP HL
LD (ZX_VARS.FREE_SEC),HL
LD HL,ZX_VARS.N_FILES
LD A,(HL)
LD (ZX_VARS.FL_NUMBER),A
INC (HL)
PUSH HL
CALL AUTO_1E43
POP HL
LD C,(HL)
DEC C
AUTO_1BBF:
LD A,(ZX_VARS.FL_TYPE)
CP 'B'
CALL Z,AUTO_1BC8
RET
AUTO_1BC8:
LD HL,(ZX_VARS.E_LINE)
LD DE,(ZX_VARS.BAS_PROG)
SCF
SBC HL,DE
LD (ZX_VARS.FL_START),HL
LD HL,(ZX_VARS.BAS_VARS)
SBC HL,DE
LD (ZX_VARS.FL_LEN),HL
RET
AUTO_1BDE:
LD HL,(ZX_VARS.BAS_VARS)
LD DE,(ZX_VARS.BAS_PROG)
SBC HL,DE
LD (ZX_VARS.MED_LEN),HL
LD HL,(ZX_VARS.BAS_PROG)
LD (ZX_VARS.MED_START),HL
LD HL,(ZX_VARS.E_LINE)
INC HL
INC HL
INC HL
SBC HL,DE
LD (ZX_VARS.DOS_CH_ADR),HL
RET
AUTO_1BFC:
CALL AUTO_1C1B
RET NC
LD HL,0
LD (ZX_VARS.DOS_CH_ADR),HL
LD A,(ZX_VARS.DISK_2_FLG)
CP 255
RET NZ
JP AUTO_1C13
AUTO_1C0F:
CALL AUTO_1C1B
RET NC
AUTO_1C13:
LD A,14
LD HL,AUTO_27DD
JP AUTO_1C4A
AUTO_1C1B:
CALL BASIC_RST20
CALL AUTO_1D9B
SET 7,C
LD A,C
LD (ZX_VARS.AUTO_5CD2),A
JR NC,AUTO_1C2B
AUTO_1C29:
SCF
RET
AUTO_1C2B:
JR NZ,AUTO_1C29
INC HL
LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD (ZX_VARS.MED_START),HL
LD (ZX_VARS.MED_LEN),DE
LD (ZX_VARS.DOS_CH_ADR),DE
CALL BASIC_RST20
CP ')'
JR NZ,AUTO_1C2B
RET
AUTO_1C45:
LD HL,AUTO_29BB
LD A,3
AUTO_1C4A:
CALL AUTO_03C3
JP AUTO_01D3
AUTO_1C50:
LD HL,AUTO_29C5
LD A,2
JR AUTO_1C4A
AUTO_1C57:
LD HL,ZX_VARS.FL_NAME
LD B,8
AUTO_1C5C:
LD (HL),' '
INC HL
DJNZ AUTO_1C5C
CALL AUTO_0531
EX DE,HL
CALL SET_DRIVE
LD A,C
OR A
JP Z,CMD_ERROR
CP 9
JR C,AUTO_1C73
LD C,8
AUTO_1C73:
LD A,(HL)
CP ' '
JP C,CMD_ERROR
LD DE,ZX_VARS.FL_NAME
PUSH BC
LDIR
POP BC
RET
SET_DRIVE:
INC HL
LD A,(HL)
CP ':'
JR NZ,AUTO_1C98
DEC HL
LD A,(HL)
CALL GET_DISK
PUSH BC
PUSH HL
CALL SET_DISK
POP HL
POP BC
DEC BC
DEC BC
INC HL
INC HL
RET
AUTO_1C98:
DEC HL
LD A,(ZX_VARS.CONT_DISK)
PUSH BC
PUSH HL
CALL SET_DISK
POP HL
POP BC
RET
AUTO_1CA4:
LD L,C
LD H,0
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD BC,ZX_VARS.BUFFER
ADD HL,BC
RET
AUTO_1CB0:
CALL AUTO_1C57
AUTO_1CB3:
CALL AUTO_03E8
LD B,128
LD C,0
AUTO_1CBA:
PUSH BC
CALL AUTO_1CA4
CALL AUTO_050C
POP BC
PUSH BC
LD A,C
CP 16
JR NZ,AUTO_1CCD
POP BC
LD C,0
JR AUTO_1CBA
AUTO_1CCD:
LD DE,ZX_VARS.FL_NAME
LD A,(ZX_VARS.S_NAME_NUM)
LD B,A
XOR A
CP (HL)
JR NZ,AUTO_1CDB
POP BC
JR AUTO_1CE4
AUTO_1CDB:
CALL AUTO_2713
POP BC
JR Z,AUTO_1CE7
INC C
DJNZ AUTO_1CBA
AUTO_1CE4:
OR 255
RET
AUTO_1CE7:
LD A,128
SUB B
LD C,A
LD (ZX_VARS.FL_NUMBER),A
XOR A
RET Z
AUTO_1CF0:
CALL AUTO_1CB3
LD HL,ZX_VARS.DOS_ERR_2
LD (HL),C
RET Z
LD (HL),255
RET
;
;
;
CMD_RETURN:
CALL SINTAX_RET
CALL AUTO_20E5
RES 3,(IY+1)
CALL AUTO_0232
LD SP,(ZX_VARS.DOS_SP)
LD HL,(ZX_VARS.ERR_SP)
DEC HL
LD A,18
CP (HL)
JR NZ,AUTO_1D19
DEC HL
LD (ZX_VARS.ERR_SP),HL
AUTO_1D19:
RET
CMD_ERROR:
BIT 7,(IY+0)
JR Z,AUTO_1D25
LD A,11
LD (ZX_VARS.ERR_NR),A
AUTO_1D25:
INC A
LD HL,AUTO_29B2
ERR_EXIT:
CALL AUTO_03C3
JP AUTO_01D3
AUTO_1D2F:
LD A,(ZX_VARS.ERR_NR)
LD HL,AUTO_27CA
CP 20
JR Z,ERR_EXIT
CP 12
JR Z,ERR_EXIT
LD HL,AUTO_27D2
CP 3
JR Z,ERR_EXIT
LD HL,AUTO_27DD
CP 1
JR Z,ERR_EXIT
JR CMD_ERROR
;
;
;
CMD_RUN:
CALL AUTO_1852
CALL AUTO_1836
CALL SINTAX_RET
LD HL,(ZX_VARS.FL_START)
LD A,(ZX_VARS.FL_TYPE)
CP 'B'
JP Z,AUTO_012A
PUSH HL
RET
AUTO_1D63:
LD HL,ZX_VARS.BAS_DOS_FLG
LD A,(HL)
CP #FF
LD (HL),0
RET NZ
RST_ROM ROUTINE.set_work
RET
; <20>஢¥àª , ¨¤¥â «¨ ¯à®¢¥àª  áâப¨ ­  ᨭ⠪á¨á ¨«¨ ¢ë¯®«­¥­¨¥ ª®¬ ­¤ë.
; …᫨ ¨¤¥â ¢ë¯®«­¥­¨¥, â® ä« £ Z ¡ã¤¥â á¡à®è¥­, ¨­ ç¥ ãáâ ­®¢«¥­.
AUTO_1D70:
BIT 7,(IY+1)
RET
SINTAX_RET:
CALL AUTO_1D70
RET NZ
POP HL
RET
AUTO_1D7B:
CALL BASIC_RST20
CALL AUTO_1DC1
JR AUTO_1D70
OPEN_CH0:
XOR A
AUTO_1D84:
RST_ROM ROUTINE.chan_open
RET
OPEN_CH2:
LD A,2
JR AUTO_1D84
AUTO_1D8C:
RST_ROM ROUTINE.get_char
AUTO_1D8F:
RET
CALL OPEN_CH0
RST_ROM ROUTINE.editor
RET
AUTO_1D97:
RST_ROM ROUTINE.cls
RET
AUTO_1D9B:
RST_ROM ROUTINE.look_vars
RET
AUTO_1D9F:
RST_ROM ROUTINE.cls_lower
RET
AUTO_1DA3:
LD C,A
AUTO_1DA4:
LD B,0
JP AUTO_1DA9
AUTO_1DA9:
PUSH BC
CALL xchg_intf1
POP BC
RST_ROM ROUTINE.out_num_1
CALL xchg_intf1
RET
BAS_2BF1:
RST_ROM ROUTINE.stack_fetch
RET
AUTO_1DB9:
RST_ROM ROUTINE.find_int2
RET
AUTO_1DBD:
RST_ROM ROUTINE.expt_exp
RET
AUTO_1DC1:
RST_ROM ROUTINE.expt_1num
RET
AUTO_1DC5:
LD HL,(ZX_VARS.ADR_DOS_COM)
AUTO_1DC8:
INC HL
LD (ZX_VARS.CH_ADR),HL
RET
AUTO_1DCD:
CALL INPUT_TXT
AUTO_1DD0:
CALL AUTO_1D8C
CP ','
JP NZ,CMD_ERROR
CALL BASIC_RST20
CALL AUTO_1DBD
RET
INPUT_TXT:
CALL AUTO_1DC5
JP AUTO_1DBD
AUTO_1DE5:
CALL AUTO_1D8C
CP 175
RET NZ
AUTO_1DEB:
CALL AUTO_1D7B
JR Z,AUTO_1DFB
CALL AUTO_1DB9
LD (ZX_VARS.DOS_CH_ADR),BC
LD (ZX_VARS.MED_LEN),BC
AUTO_1DFB:
CALL AUTO_1D8C
CP ','
JR Z,AUTO_1E0B
CP 13
JP NZ,CMD_ERROR
CALL SINTAX_RET
RET
AUTO_1E0B:
CALL AUTO_1D7B
RET Z
CALL AUTO_1DB9
LD (ZX_VARS.MED_LEN),BC
LD A,3
LD (ZX_VARS.DOS_ERROR),A
RET
AUTO_1E1C:
LD HL,(ZX_VARS.ADR_DOS_COM)
RST_ROM ROUTINE.remove_fp
RET
AUTO_1E23:
LD HL,(ZX_VARS.WORK_SPACE)
RST_ROM ROUTINE.bc_spaces
AUTO_1E29:
RET
BASIC_RST20:
RST_ROM ROUTINE.next_char
AUTO_1E2D:
RET
AUTO_1E2E:
RST_ROM ROUTINE.reclaim_2
RET
AUTO_1E32:
RST_ROM ROUTINE.make_room
RET
READ_TRK_NUM:
CALL READ_ADR_LABL
LD A,H
OUT (FDC_93.Track),A
RET
READ_DISK:
XOR A
JR AUTO_1E64
AUTO_1E40:
CALL AUTO_166B
AUTO_1E43:
LD DE,(ZX_VARS.CONT_SEC)
DEC DE
LD B,1
LD HL,ZX_VARS.BUFFER
WRITE_DISK:
PUSH HL
PUSH DE
CALL get_disk_type
BIT 7,(HL)
JR Z,AUTO_1E60
BIT 0,(HL)
JR NZ,AUTO_1E60
LD HL,READ_ONLY_MSG
JP ERR_EXIT
AUTO_1E60:
POP DE
POP HL
AUTO_1E62:
LD A,255
AUTO_1E64:
LD (ZX_VARS.RD_WR_COM),A
AUTO_1E67:
LD (ZX_VARS.CONT_SEC),DE
JP R_W_REDIR
;LD (HL),30 ; <20>… ¨á¯. !!!
BLOCK #1E70-$,0
AUTO_1E70:
POP HL
POP BC
XOR A
OR B
RET Z
AUTO_1E75:
PUSH BC
PUSH HL
CALL save_bufer
LD A,(ZX_VARS.CONT_SEC)
CALL save_sector
LD A,(ZX_VARS.CONT_TRK)
CALL Global_trk
LD A,(ZX_VARS.RD_WR_COM)
OR A
PUSH AF
CALL Z,AUTO_3F0E
POP AF
CALL NZ,AUTO_3F0A
POP HL
LD DE,AUTO_0100
ADD HL,DE
PUSH HL
LD A,16
LD HL,ZX_VARS.CONT_SEC
INC (HL)
CP (HL)
JR NZ,AUTO_1EA7
LD (HL),0
LD HL,ZX_VARS.CONT_TRK
INC (HL)
AUTO_1EA7:
POP HL
POP BC
DJNZ AUTO_1E75
RET
AUTO_1EAC:
PUSH HL
LD H,A
LD L,0
PUSH HL
SBC HL,DE
CALL C,AUTO_1EBC
POP HL
LD A,H
POP HL
RET C
LD A,D
RET
AUTO_1EBC:
XOR A
LD (ZX_VARS.DOS_ERROR),A
SCF
RET
;
;
;
CMD_FORMAT:
LD HL,0
LD (ZX_VARS.MED_START),HL
LD (ZX_VARS.DOS_CH_ADR),HL
LD (ZX_VARS.AUTO_5CD1),HL
CALL TEST_CR
JP Z,CMD_ERROR ; FORMATER ; !!!!! ( CMD_ERROR )
CALL FORM_STATE ; 1/2/3 INPUT_TXT
CALL SINTAX_RET
CALL FORM_X03
JP RAMD_X14
AUTO_1EE0:
AND 128
LD A,'('
JR Z,AUTO_1EE8
LD A,'P'
AUTO_1EE8:
LD (ZX_VARS.MED_START),A
CALL AUTO_3D98
CALL set_side_1
CALL pause_750ms
LD E,1
CALL AUTO_1FFD
CALL set_side_0
LD E,0
CALL AUTO_1FFD
LD A,(ZX_VARS.FL_NAME)
CP '$'
JR Z,AUTO_1F1B
CALL set_side_1
CALL pause_750ms
CALL READ_ADR_LABL2
LD A,H
CP 1
JR NZ,AUTO_1F1B
LD A,128
LD (ZX_VARS.DOS_CH_ADR+1),A
AUTO_1F1B:
CALL FORM_X02 ; ä®à¬ â¨à®¢ ­¨¥ !!!
LD HL,ZX_VARS.BUFFER
LD (HL),0
LD DE,ZX_VARS.BUFFER+1
LD BC,0FFh
LDIR
LD BC,ZX_VARS.MED_START
LD DE,ZX_VARS.DOS_CH_ADR+1
LD A,(BC)
CP 'P'
JR Z,AUTO_1F49
LD A,(DE)
CP 128
JR Z,AUTO_1F42
LD A,25
LD HL,0270H
JR AUTO_1F55
AUTO_1F42:
LD A,23
AUTO_1F44:
LD HL,04F0h
JR AUTO_1F55
AUTO_1F49:
LD A,(DE)
CP 128
LD A,24
JR NZ,AUTO_1F44
LD A,22
LD HL,09F0h
AUTO_1F55:
LD (ZX_VARS.TYPE_DISK),A
LD (ZX_VARS.FREE_SEC),HL
LD A,1
LD (ZX_VARS.CLEAR_TRK),A
LD A,16
LD (ZX_VARS.CODE_10H),A
LD HL,ZX_VARS.DISK_MRK_1
LD DE,ZX_VARS.DISK_ALT_NM
LD BC,RST08
LD (HL),' '
LDIR
LD HL,ZX_VARS.FL_NAME
LD DE,ZX_VARS.DISK_NAME
LD BC,RST08
LDIR
CALL set_side_0
LD B,1
LD DE,8
LD HL,ZX_VARS.BUFFER
CALL AUTO_1E62
LD A,(ZX_VARS.DOS_ERROR)
PUSH AF
XOR A
LD (ZX_VARS.FL_TYPE),A
LD HL,(ZX_VARS.FREE_SEC)
LD (ZX_VARS.MED_START),HL
LD HL,ZX_VARS.FL_NAME
RST PRINT_LN
LD A,13
RST RST10
LD HL,(ZX_VARS.MED_START)
POP AF
PUSH HL
LD D,0
LD E,A
SBC HL,DE
LD B,H
LD C,L
CALL AUTO_1DA9
LD A,'/'
RST RST10
POP BC
CALL AUTO_1DA9
JP AUTO_01D3
AUTO_1FB9:
DB 1,9,2,10,3,11,4,12,5,13,6,14,7,15,8,16,1
test_d_traks:
CALL get_disk_time
OR 17
LD B,A
LD A,'2'
CALL Goto_trk
LD A,2
CALL Goto_trk
CALL pause_50ms
IN A,(FDC_93.Command)
AND 4
LD A,'P'
JR Z,AUTO_1FE7
LD A,'('
AUTO_1FE7:
LD (ZX_VARS.MED_START),A
RET
set_side_0:
LD A,(ZX_VARS.PDOS_COPY)
OR #3C ; áâ®à®­  0 3C..3F
AUTO_1FF0:
LD (ZX_VARS.PDOS_COPY),A
OUT (FDC_93.DrvCTRL),A
RET
set_side_1:
LD A,(ZX_VARS.PDOS_COPY)
AND #6F ; áâ®à®­  1 2C..2F
JR AUTO_1FF0 ; ld a,(pdos_copy)
AUTO_1FFD: ; add a,0C0h
DI ; ld d,0
LD A,244 ; rl d
AUTO_2000: ;
OUT (FDC_93.Command),A ;
LD HL,(ZX_VARS.FL_START) ;
LD C,127
;////////////////////////////////////
AUTO_2007:
LD B,3Eh ; ¯¥à¢ë© ¯à®¡¥«
LD D,'N'
CALL AUTO_20B1
FORM_TR_LOOP:
LD B,12
LD D,0
CALL AUTO_20B1
LD B,3
LD D,245 ; ᨭåà®
CALL AUTO_20B1
LD D,254 ;  ¤à¥á­ ï ¬¥âª 
CALL AUTO_20AF
LD D,E ; â४
CALL AUTO_20AF
LD D,0 ; áâ®à®­ 
CALL SIDE_FORMAT
LD D,(HL) ; ᥪâ®à
CALL AUTO_20AF
LD D,1 ; ¤«¨­  - 256
CALL AUTO_20AF
LD D,247 ; ª®­â஫ì­ë© ª®¤
CALL AUTO_20AF
LD B,32 ; ¢â®à®© ¯à®¡¥«
LD D,'N'
CALL AUTO_20B1
LD B,12
LD D,0
CALL AUTO_20B1
LD B,3
LD D,245 ; ᨭåà®
CALL AUTO_20B1
LD D,251 ; ¬¥âª  ¤ ­­ëå
CALL AUTO_20AF
LD B,0 ; ¤ ­­ë¥: ¢á¥ ­ã«¨
LD D,0
CALL AUTO_20B1
LD D,247 ; ª®­â஫ì­ë© ª®¤
CALL AUTO_20AF
LD B,3Ch ; âà¥â¨© ¯à®¡¥« ???
LD D,'N'
CALL AUTO_20B1
LD A,(HL)
INC HL
CP 16 ; ¯à®¢¥àª  ­  ¯®á«. ᥪâ®à
JR NZ,FORM_TR_LOOP ; ¥á«¨ ­¥â, â® ¯à®¤®«¦ âì
IN A,(FDC_93.Command)
AND '@'
JP NZ,AUTO_3F39
LD A,216
OUT (FDC_93.Command),A
LD A,208
OUT (FDC_93.Command),A
;//////////////////////////////////////
NOP
NOP
NOP
AUTO_207D:
LD A,(ZX_VARS.MED_START+1)
OR A
RET NZ
LD C,127
LD A,E
OUT (FDC_93.Track),A
CALL SUB_HL_14
AUTO_208A:
LD B,3
LD A,(HL)
OUT (FDC_93.Sector),A
PUSH HL
AUTO_2090:
DI
LD A,128
OUT (FDC_93.Command),A
PUSH BC
CALL AUTO_3FE5
IN A,(FDC_93.Command)
AND 127
POP BC
JR Z,AUTO_20A6
DJNZ AUTO_2090
LD HL,ZX_VARS.DOS_ERROR
INC (HL)
AUTO_20A6:
POP HL
LD A,(HL)
INC HL
CP 1
JR NZ,AUTO_208A
EI
RET
AUTO_20AF:
LD B,1
AUTO_20B1:
IN A,(FDC_93.DrvCTRL)
AND 192
JR Z,AUTO_20B1
RET M
OUT (C),D
DJNZ AUTO_20B1
RET
FORMAT_ALL:
LD HL,ZX_VARS.MED_START
LD B,(HL)
CALL FORM_F01
LD E,255
AUTO_20C6:
PUSH BC
INC E
LD A,E
LD B,27
CALL PRINT_TRK
CALL set_side_0 ; SET SIDE 0
CALL PRINT_SIDE0 ; FORMATING !
LD A,(ZX_VARS.DOS_CH_ADR+1)
CP 128
JR NZ,AUTO_20E1
CALL set_side_1 ; SET SIDE 1
CALL PRINT_SIDE1 ; FORMATING !
AUTO_20E1:
POP BC
DJNZ AUTO_20C6
RET
AUTO_20E5:
PUSH AF
LD A,(ZX_VARS.DISK_1_FLG)
CP 255
JR Z,AUTO_211C
POP AF
CALL BUFER_OFF
xchg_intf1:
PUSH AF
LD A,(ZX_VARS.BEG_ADRESS)
CP 244
JR Z,AUTO_211C
XOR A
LD HL,ZX_VARS.INT_1_VAR
OR (HL)
LD (HL),255
JR Z,AUTO_211C
LD A,(ZX_VARS.BUF_FLAG)
OR A
LD HL,ZX_VARS.AUTO_5CC3
LD DE,ZX_VARS.AUTO_5D33
JR NZ,AUTO_2111
LD DE,AUTO_5E34
AUTO_2111:
LD B,'-'
AUTO_2113:
LD C,(HL)
LD A,(DE)
LD (HL),A
AUTO_2116:
LD A,C
LD (DE),A
INC HL
INC DE
DJNZ AUTO_2113
AUTO_211C:
POP AF
RET
AUTO_211E:
LD HL,(ZX_VARS.E_LINE)
LD (HL),13
LD (ZX_VARS.K_CUR),HL
INC HL
LD (HL),128
RET
AUTO_212A:
LD DE,(ZX_VARS.E_LINE)
LD HL,ZX_VARS.COM_LN_COPY
CALL AUTO_02B0
RET
INPUT_LINE:
LD A,(ZX_VARS.DOS_ERR_2)
OR A
PUSH AF
CALL NZ,AUTO_212A
POP AF
CALL Z,AUTO_211E
LD HL,(ZX_VARS.E_LINE)
CALL PRINT_CR
LD A,(ZX_VARS.CONT_DISK)
ADD A,'A'
RST RST10
LD A,'>'
RST RST10
LD (IY+0),255
EI
JP EDIT_X00
AUTO_2158:
CALL BASIC_RST20
CALL AUTO_1D8C
CP ','
JP NZ,CMD_ERROR
LD HL,(ZX_VARS.MED_LEN)
LD (ZX_VARS.DOS_CH_ADR),HL
CALL AUTO_1E0B
CALL SINTAX_RET
LD HL,(ZX_VARS.MED_LEN)
LD A,H
OR A
JP NZ,CMD_ERROR
INC HL
LD (ZX_VARS.MED_START),HL
LD HL,(ZX_VARS.DOS_CH_ADR)
LD (ZX_VARS.MED_LEN),HL
RET
;
;
;
CMD_OPEN:
LD HL,(ZX_VARS.ADR_DOS_COM)
LD (ZX_VARS.CH_ADR),HL
CALL AUTO_1E0B
CALL AUTO_1DD0
AUTO_218E:
CALL AUTO_1D8C
CP 'A'
JR NC,AUTO_219A
CALL BASIC_RST20
JR AUTO_218E
AUTO_219A:
CP 165
PUSH AF
CALL Z,AUTO_2158
POP AF
JR Z,AUTO_21AE
AND 223
CP 'R'
JR Z,AUTO_21AE
CP 'W'
JP NZ,CMD_ERROR
AUTO_21AE:
LD (ZX_VARS.VAR_3),A
CALL SINTAX_RET
LD A,'#'
LD (ZX_VARS.FL_TYPE),A
LD A,0
LD (ZX_VARS.FL_START),A
CALL AUTO_21DB
PUSH AF
CALL AUTO_220F
POP AF
PUSH AF
CALL NZ,AUTO_2288
POP AF
CALL AUTO_2242
LD HL,(ZX_VARS.ADR_DOS_COM)
LD BC,AUTO_0124
ADD HL,BC
LD (ZX_VARS.ADR_DOS_COM),HL
JP AUTO_01D3
AUTO_21DB:
LD A,10
LD (ZX_VARS.S_NAME_NUM),A
CALL AUTO_1CB0
PUSH AF
CALL RD_HEAD_DSK
POP AF
JR NZ,AUTO_2206
LD A,(ZX_VARS.VAR_3)
CP 'R'
JR Z,AUTO_2201
AUTO_21F1:
LD HL,ZX_VARS.FL_START
INC (HL)
CALL AUTO_1CB3
JR Z,AUTO_21F1
LD HL,ZX_VARS.FL_START
DEC (HL)
CALL AUTO_1CB3
AUTO_2201:
CALL AUTO_165D
XOR A
RET
AUTO_2206:
LD A,(ZX_VARS.VAR_3)
CP 'R'
RET NZ
JP AUTO_03D9
AUTO_220F:
LD A,(ZX_VARS.MED_LEN)
RST_ROM ROUTINE.str_data1
LD A,B
OR C
JP NZ,AUTO_221B
RET
AUTO_221B:
LD A,25
LD (ZX_VARS.ERR_NR),A
LD HL,AUTO_2804
LD A,10
AUTO_2225:
JP AUTO_1C4A
AUTO_2228:
LD A,11
LD HL,AUTO_2812
JR AUTO_2225
AUTO_222F:
PUSH HL
LD C,' '
RST RST28
LD A,(ZX_VARS.MED_START)
LD (HL),A
INC HL
XOR A
LD (HL),A
INC HL
LD (HL),A
INC HL
LD (HL),A
LD A,127
POP HL
RET
AUTO_2242:
PUSH AF
CALL AUTO_220F
EX DE,HL
LD HL,(ZX_VARS.BAS_PROG)
LD BC,(ZX_VARS.CHANS)
SBC HL,BC
EX DE,HL
LD (HL),E
INC HL
LD (HL),D
CALL AUTO_22B2
LD A,(ZX_VARS.VAR_3)
CP 165
CALL Z,AUTO_222F
JR Z,AUTO_226B
LD A,(ZX_VARS.VAR_3)
CP 'R'
LD A,255
JR NZ,AUTO_226B
XOR A
AUTO_226B:
LD (HL),A
POP AF
JP AUTO_2270
AUTO_2270:
PUSH AF
LD BC,CONT_2+1
ADD HL,BC
PUSH HL
CALL AUTO_2423
POP HL
INC HL
LD B,1
POP AF
OR A
PUSH AF
CALL NZ,WRITE_DISK
POP AF
CALL Z,READ_DISK
RET
AUTO_2288:
LD HL,(ZX_VARS.MED_START)
PUSH HL
LD HL,AUTO_2000
LD (ZX_VARS.MED_START),HL
CALL AUTO_229A
POP HL
LD (ZX_VARS.MED_START),HL
RET
AUTO_229A:
LD HL,AUTO_1000
LD (ZX_VARS.DOS_CH_ADR),HL
CALL AUTO_1AC4
CALL AUTO_1B59
LD HL,0
LD (ZX_VARS.FL_LEN),HL
CALL AUTO_166B
JP AUTO_1E43
AUTO_22B2:
LD HL,(ZX_VARS.BAS_PROG)
DEC HL
LD (ZX_VARS.CUR_CHL),HL
PUSH HL
LD BC,AUTO_0124
CALL AUTO_1E32
LD A,0
LD B,0
AUTO_22C4:
LD (DE),A
DEC DE
DJNZ AUTO_22C4
POP HL
PUSH HL
LD DE,AUTO_3D0E
LD (HL),E
INC HL
LD (HL),D
INC HL
LD DE,AUTO_3D06
LD (HL),E
INC HL
LD (HL),D
INC HL
LD (HL),'D'
INC HL
INC HL
INC HL
INC HL
INC HL
LD (HL),'$'
INC HL
LD (HL),1
INC HL
LD A,(ZX_VARS.OPER_DISK)
LD (HL),A
INC HL
LD A,(ZX_VARS.FL_NUMBER)
LD (HL),A
INC HL
LD A,(ZX_VARS.VAR_3)
CP 'R'
LD (HL),0
JR Z,AUTO_22FC
LD A,(ZX_VARS.FL_LEN)
LD (HL),A
AUTO_22FC:
INC HL
LD (HL),B
JR Z,AUTO_2304
LD A,(ZX_VARS.FL_LEN+1)
LD (HL),A
AUTO_2304:
INC HL
EX DE,HL
POP HL
PUSH DE
LD DE,RST10
ADD HL,DE
EX DE,HL
LD HL,ZX_VARS.FL_NAME
LD BC,RST10
LDIR
POP HL
RET
AUTO_2317:
LD C,13
RST RST28
LD C,(HL)
RST RST28
LD BC,CONT_4
ADD HL,BC
RET
AUTO_2321:
LD C,'$'
RST28_EXE:
LD B,0
LD HL,(ZX_VARS.CUR_CHL)
ADD HL,BC
RET
AUTO_232A:
LD C,13
RST RST28
INC (HL)
RET NZ
PUSH HL
CALL AUTO_2443
CALL AUTO_23FC
POP HL
INC HL
INC (HL)
PUSH HL
CALL AUTO_2418
POP HL
LD A,16
CP (HL)
RET NZ
PUSH HL
LD C,15
RST RST28
LD A,(HL)
CP 127
POP HL
JR Z,AUTO_2358
LD HL,(ZX_VARS.CUR_CHL)
CALL AUTO_26E1
LD C,14
RST RST28
JP AUTO_2379
AUTO_2358:
CALL AUTO_23CF
PUSH AF
CALL Z,AUTO_2418
LD C,14
RST RST28
POP AF
CALL NZ,AUTO_2370
RET
AUTO_2367:
LD (HL),0
LD C,25
RST RST28
LD D,' '
LD E,(HL)
RET
AUTO_2370:
CALL AUTO_2367
LD (ZX_VARS.MED_START),DE
JR AUTO_2381
AUTO_2379:
CALL AUTO_2367
INC E
LD (ZX_VARS.MED_START),DE
AUTO_2381:
CALL AUTO_229A
CALL BUFER_OFF
LD C,16
RST RST28
EX DE,HL
LD HL,ZX_VARS.FL_NAME
LD BC,RST10
LDIR
LD C,12
RST RST28
LD A,(ZX_VARS.FL_NUMBER)
LD (HL),A
RET
AUTO_239B:
LD C,13
RST RST28
INC (HL)
RET NZ
INC HL
INC (HL)
PUSH HL
CALL AUTO_2443
LD C,'#'
RST RST28
LD A,(HL)
OR A
JR Z,AUTO_23B6
POP HL
PUSH HL
DEC (HL)
CALL AUTO_23FC
POP HL
PUSH HL
INC (HL)
AUTO_23B6:
CALL AUTO_2418
POP HL
LD A,16
CP (HL)
CALL Z,AUTO_23C1
RET
AUTO_23C1:
CALL AUTO_23CF
PUSH AF
CALL BUFER_OFF
POP AF
JP NZ,AUTO_2492
JP AUTO_2418
AUTO_23CF:
LD (HL),0
LD C,25
RST RST28
INC (HL)
LD C,16
RST RST28
LD DE,ZX_VARS.FL_NAME
LD BC,RST10
LDIR
CALL AUTO_1CB3
RET NZ
AUTO_23E4:
CALL AUTO_165D
LD C,16
RST RST28
EX DE,HL
LD HL,ZX_VARS.FL_NAME
LD BC,RST10
LDIR
LD C,12
RST RST28
LD A,(ZX_VARS.FL_NUMBER)
LD (HL),A
XOR A
RET
AUTO_23FC:
CALL AUTO_2423
CALL AUTO_2321
LD B,1
CALL WRITE_DISK
LD C,15
RST RST28
LD A,(HL)
CP 127
RET Z
CALL AUTO_2321
XOR A
LD B,A
AUTO_2413:
LD (HL),A
INC HL
DJNZ AUTO_2413
RET
AUTO_2418:
CALL AUTO_2423
CALL AUTO_2321
LD B,1
JP READ_DISK
AUTO_2423:
LD HL,(ZX_VARS.CUR_CHL)
LD BC,AUTO_001E
ADD HL,BC
LD E,(HL)
INC HL
LD D,(HL)
LD C,14
RST RST28
LD B,(HL)
DEC B
INC B
PUSH AF
LD A,16
JR Z,AUTO_2441
AUTO_2438:
INC E
CP E
JR NZ,AUTO_243F
LD E,0
INC D
AUTO_243F:
DJNZ AUTO_2438
AUTO_2441:
POP AF
RET
AUTO_2443:
LD C,11
RST RST28
LD A,(HL)
JP SET_DISK
AUTO_244A:
LD HL,ZX_VARS.RET_INS
PUSH HL
LD HL,xchg_intf1
PUSH HL
PUSH AF
CALL xchg_intf1
LD A,10
LD (ZX_VARS.S_NAME_NUM),A
POP AF
CALL AUTO_24A2
PUSH AF
CALL AUTO_2650
JP Z,AUTO_249E
POP AF
CALL AUTO_2317
LD (HL),A
JP AUTO_232A
AUTO_246E:
LD C,13
RST RST28
LD A,(HL)
LD BC,CONT_1+5
ADD HL,BC
CP (HL)
RET NZ
LD C,14
RST RST28
LD A,(HL)
LD BC,CONT_1+5
ADD HL,BC
CP (HL)
RET NZ
LD HL,ZX_VARS.BEG_ADRESS
LD A,(HL)
CP 244
JR Z,AUTO_2492
BIT 4,(HL)
JR Z,AUTO_2492
OR 1
POP HL
RET
AUTO_2492:
LD A,7
AUTO_2494:
LD (ZX_VARS.ERR_NR),A
CALL AUTO_20E5
RST_ROM ROUTINE.error_4
RET
AUTO_249E:
LD A,23
JR AUTO_2494
AUTO_24A2:
LD D,A
LD C,15
RST RST28
LD A,(HL)
CP 127
LD A,D
RET NZ
LD BC,CONT_2
ADD HL,BC
LD A,(HL)
OR A
LD A,D
JR NZ,AUTO_24D5
DEC HL
LD A,(HL)
OR A
JR NZ,AUTO_24C2
PUSH BC
PUSH HL
PUSH DE
CALL AUTO_24F8
POP DE
POP HL
POP BC
AUTO_24C2:
LD C,(HL)
LD A,D
EX DE,HL
LD HL,(ZX_VARS.VAR_1)
ADD HL,BC
CP 6
LD (HL),A
CALL Z,AUTO_2504
LD C,'!'
RST RST28
INC (HL)
POP HL
RET
AUTO_24D5:
DEC HL
LD A,(HL)
DEC HL
INC A
CP (HL)
INC HL
INC (HL)
PUSH HL
PUSH AF
LD C,'#'
RST RST28
LD (HL),255
POP AF
POP HL
JR C,AUTO_24EE
LD A,D
CP 13
JR Z,AUTO_24F2
POP BC
RET
AUTO_24EE:
LD A,D
CP 13
RET NZ
AUTO_24F2:
XOR A
LD (HL),A
INC HL
LD (HL),A
LD A,D
RET
AUTO_24F8:
LD HL,(ZX_VARS.WORK_SPACE)
LD (ZX_VARS.VAR_1),HL
LD BC,RST10
JP AUTO_1E23
AUTO_2504:
LD (HL),13
LD HL,(ZX_VARS.CH_ADR)
LD (ZX_VARS.MED_START),HL
LD HL,(ZX_VARS.VAR_1)
LD (ZX_VARS.CH_ADR),HL
LD HL,ZX_VARS.FLAGS
RES 7,(HL)
CALL AUTO_1DC1
LD HL,ZX_VARS.FLAGS
SET 7,(HL)
LD HL,(ZX_VARS.VAR_1)
LD (ZX_VARS.CH_ADR),HL
CALL AUTO_1DC1
CALL AUTO_1DB9
PUSH BC
POP DE
LD C,' '
RST RST28
LD B,(HL)
XOR A
LD HL,0
LD (ZX_VARS.MED_LEN),HL
AUTO_2538:
ADD HL,DE
JR NC,AUTO_2544
PUSH HL
LD HL,(ZX_VARS.MED_LEN)
INC HL
LD (ZX_VARS.MED_LEN),HL
POP HL
AUTO_2544:
DJNZ AUTO_2538
LD (ZX_VARS.DOS_CH_ADR),HL
LD A,(ZX_VARS.MED_LEN)
LD HL,ZX_VARS.DOS_CH_ADR+1
RRD
AND 15
LD (ZX_VARS.MED_LEN),A
LD HL,(ZX_VARS.MED_START)
LD (ZX_VARS.CH_ADR),HL
CALL AUTO_2568
LD C,'!'
RST RST28
LD A,255
LD (HL),A
INC HL
LD (HL),A
RET
AUTO_2568:
LD C,25
RST RST28
LD A,(ZX_VARS.DOS_CH_ADR+1)
CP (HL)
JP NZ,AUTO_2584
LD C,14
RST RST28
LD A,(ZX_VARS.MED_LEN)
CP (HL)
JP NZ,AUTO_25A7
AUTO_257C:
LD C,13
RST RST28
LD A,(ZX_VARS.DOS_CH_ADR)
LD (HL),A
RET
AUTO_2584:
CALL AUTO_25CA
CALL NZ,AUTO_25C3
LD A,(ZX_VARS.DOS_CH_ADR+1)
LD C,25
RST RST28
LD (HL),A
LD C,16
RST RST28
LD DE,ZX_VARS.FL_NAME
LD BC,RST10
LDIR
CALL AUTO_1CB3
JP NZ,AUTO_25D2
CALL AUTO_23E4
JR AUTO_25AD
AUTO_25A7:
CALL AUTO_25CA
CALL NZ,AUTO_25C3
AUTO_25AD:
LD A,(ZX_VARS.MED_LEN)
LD C,14
RST RST28
LD (HL),A
PUSH HL
CALL AUTO_2443
CALL AUTO_2418
POP HL
DEC HL
LD A,(ZX_VARS.DOS_CH_ADR)
LD (HL),A
JR AUTO_257C
AUTO_25C3:
CALL AUTO_2443
CALL AUTO_23FC
RET
AUTO_25CA:
LD C,'#'
RST RST28
LD A,(HL)
OR A
LD (HL),0
RET
AUTO_25D2:
LD HL,(ZX_VARS.DOS_CH_ADR+1)
LD H,' '
LD (ZX_VARS.MED_START),HL
LD HL,(ZX_VARS.DOS_CH_ADR)
PUSH HL
LD HL,(ZX_VARS.MED_LEN)
PUSH HL
CALL AUTO_2381
POP HL
LD (ZX_VARS.MED_LEN),HL
POP HL
LD (ZX_VARS.DOS_CH_ADR),HL
JR AUTO_25AD
AUTO_25EF:
CALL xchg_intf1
LD HL,ZX_VARS.TV_FLAG
RES 3,(HL)
LD HL,(ZX_VARS.ERR_SP)
LD E,(HL)
INC HL
LD D,(HL)
OR A
LD HL,AUTO_107F
SBC HL,DE
JR NZ,AUTO_2626
LD SP,(ZX_VARS.ERR_SP)
POP DE
POP DE
LD (ZX_VARS.ERR_SP),DE
AUTO_260F:
CALL AUTO_262B
JR C,AUTO_261D
AUTO_2614:
LD HL,ZX_VARS.RET_INS
PUSH HL
LD HL,AUTO_20E5
PUSH HL
RET
AUTO_261D:
CP 13
JR Z,AUTO_2614
RST_ROM ROUTINE.add_char_keeping_current_mode
JR AUTO_260F
AUTO_2626:
CALL AUTO_262B
JR AUTO_2614
AUTO_262B:
LD A,10
LD (ZX_VARS.S_NAME_NUM),A
CALL AUTO_2650
JR Z,AUTO_2642
CP 127
JP NZ,AUTO_249E
LD BC,CONT_2
ADD HL,BC
LD (HL),0
JR AUTO_2645
AUTO_2642:
CALL AUTO_246E
AUTO_2645:
CALL AUTO_2317
LD A,(HL)
PUSH AF
CALL AUTO_239B
POP AF
SCF
RET
AUTO_2650:
LD C,15
RST RST28
LD A,(HL)
OR A
RET
;
;
;
CMD_CLOSE:
LD HL,(ZX_VARS.ADR_DOS_COM)
LD (ZX_VARS.CH_ADR),HL
CALL AUTO_1E0B
CALL SINTAX_RET
LD A,(ZX_VARS.MED_LEN)
RST_ROM ROUTINE.str_data1
LD A,B
OR C
JP Z,AUTO_01D3
PUSH HL
LD HL,(ZX_VARS.CHANS)
ADD HL,BC
LD A,(HL)
LD HL,AUTO_3D0E
CP H
POP HL
JP NZ,AUTO_2228
LD (HL),0
INC HL
LD (HL),0
LD (ZX_VARS.DOS_CH_ADR),BC
LD HL,(ZX_VARS.CHANS)
ADD HL,BC
DEC HL
LD (ZX_VARS.MED_START),HL
CALL AUTO_26CE
LD HL,(ZX_VARS.MED_START)
LD BC,AUTO_0124
CALL AUTO_1E2E
LD HL,ZX_VARS.REP_K_TYME
LD B,16
AUTO_269D:
PUSH BC
LD BC,(ZX_VARS.DOS_CH_ADR)
LD E,(HL)
INC HL
LD D,(HL)
EX DE,HL
SBC HL,BC
EX DE,HL
JR C,AUTO_26BC
LD D,(HL)
DEC HL
LD E,(HL)
INC HL
PUSH HL
EX DE,HL
LD BC,AUTO_0124
SBC HL,BC
EX DE,HL
POP HL
LD (HL),D
DEC HL
LD (HL),E
INC HL
AUTO_26BC:
INC HL
POP BC
DJNZ AUTO_269D
LD HL,(ZX_VARS.ADR_DOS_COM)
LD BC,AUTO_0124
SBC HL,BC
LD (ZX_VARS.ADR_DOS_COM),HL
JP AUTO_01D3
AUTO_26CE:
LD BC,CONT_1+6
ADD HL,BC
LD A,(HL)
OR A
RET Z
LD HL,(ZX_VARS.MED_START)
LD (ZX_VARS.CUR_CHL),HL
CALL AUTO_26E1
JP AUTO_23FC
AUTO_26E1:
LD BC,CONT_1+4
ADD HL,BC
LD E,(HL)
INC HL
LD D,(HL)
LD BC,CONT_1+4
ADD HL,BC
LD (HL),E
INC HL
LD (HL),D
LD C,16
RST RST28
LD DE,ZX_VARS.FL_NAME
LD BC,RST10
LDIR
CALL AUTO_2443
LD C,12
RST RST28
LD C,(HL)
CALL AUTO_166B
JP AUTO_1E43
PRINT_L:
LD A,(HL)
OR A
RET Z
AND 127
RST RST10
BIT 7,(HL)
RET NZ
AUTO_2710:
INC HL
JR PRINT_L
AUTO_2713:
LD A,(DE)
CP (HL)
RET NZ
INC DE
INC HL
DJNZ AUTO_2713
RET
exit_No_disk:
LD HL,AUTO_27FC
LD A,6
JP AUTO_1C4A
AUTO_2723:
LD HL,AUTO_27ED
LD A,4
JP AUTO_1C4A
set_error_26:
LD A,26
JR AUTO_2731
LD A,18
AUTO_2731:
LD (ZX_VARS.ERR_NR),A
RET
LD A,3
JR AUTO_2731
AUTO_2739:
XOR A
LD (ZX_VARS.MED_START+1),A
LD (ZX_VARS.DOS_ERROR),A
IN A,(FDC_93.Command)
LD (ZX_VARS.DRV_READY),A
LD E,D
PUSH DE
LD A,E
OUT (FDC_93.Data),A
LD A,24
CALL WG93_EXE
LD A,(ZX_VARS.DRV_READY)
AND 128
CALL NZ,pause_750ms
POP DE
CALL AUTO_207D
LD A,(ZX_VARS.DOS_ERROR)
OR A
RET Z
LD A,7
LD (ZX_VARS.DOS_ERR_2),A
RET
AUTO_2766:
DB "O.K.",0
AUTO_276B:
DB "Verify Error.",141
AUTO_2779:
DB "BACKUP DISK",141
AUTO_2785:
DB "Insert Destination disk",13
DB "then press Y",0
AUTO_27AA:
DB "Insert Source disk then press Y",0
AUTO_27CA:
DB "*BREAK*",141
AUTO_27D2:
DB "Out of RAM",141
AUTO_27DD:
DB "Array not found",141
AUTO_27ED:
DB "Directory full",141
AUTO_27FC:
DB "No disk",141
DISPLAY "10k"
AUTO_2804:
DB "Stream opened",141
AUTO_2812:
DB "Not disk file",141
AUTO_2820:
DB "File exists",13
DC "Over write?(Y/N)"
AUTO_283C:
PUSH AF
PUSH BC
LD (ZX_VARS.WORK_4),DE
LD (ZX_VARS.WORK_2),HL
CALL xchg_intf1
LD A,255
LD (ZX_VARS.MSG_FLAG),A
LD (ZX_VARS.FL_NUMBER+1),A
POP BC
POP AF
LD HL,AUTO_0201
LD (ZX_VARS.ADR_RET),HL
LD HL,0
ADD HL,SP
LD (ZX_VARS.DOS_SP),HL
DEC HL
DEC HL
LD SP,HL
PUSH AF
CALL AUTO_021D
LD HL,AUTO_288C
AUTO_2869:
LD A,(HL)
CP C
JR NZ,AUTO_287F
POP AF
INC HL
LD E,(HL)
INC HL
LD D,(HL)
LD HL,AUTO_01D3
PUSH HL
PUSH DE
LD HL,(ZX_VARS.WORK_2)
LD DE,(ZX_VARS.WORK_4)
RET
AUTO_287F:
CP 255
JR NZ,AUTO_2887
POP AF
JP AUTO_01D3
AUTO_2887:
INC HL
INC HL
INC HL
JR AUTO_2869
AUTO_288C:
DB 0
DW AUTO_3D98
DB 1
DW SET_DISK
DB 2
DW Global_trk
DB 3
DW save_sector
DB 4
DW save_bufer
DB 5
DW READ_DISK
DB 6
DW WRITE_DISK
DB 7
DW AUTO_28D8
DB 8
DW AUTO_165C
DB 9
DW AUTO_1664
DB 10
DW AUTO_1CF0
DB 11
DW AUTO_28FB
DB 12
DW AUTO_28F2
DB 13
DW AUTO_01D3
DB 14
DW AUTO_290F
DB 15
DW AUTO_01D3
DB 16
DW AUTO_01D3
DB 17
DW AUTO_01D3
DB 18
DW AUTO_2926
DB 19
DW AUTO_28E0
DB 20
DW AUTO_28E3
DB 21
DW AUTO_2739
DB 22
DW set_side_0
DB 23
DW set_side_1
DB 24
DW RD_HEAD_DSK
DB 255
AUTO_28D8:
PUSH AF
CALL RD_HEAD_DSK
POP AF
JP AUTO_0479
AUTO_28E0:
XOR A
JR AUTO_28E5
AUTO_28E3:
LD A,255
AUTO_28E5:
LD DE,ZX_VARS.FL_NAME
LD BC,RST10
OR A
JR Z,AUTO_28EF
EX DE,HL
AUTO_28EF:
LDIR
RET
AUTO_28F2:
CALL RD_HEAD_DSK
CALL AUTO_1AC4
JP AUTO_1B27
AUTO_28FB:
LD (ZX_VARS.MED_START),HL
LD (ZX_VARS.DOS_CH_ADR),DE
LD (ZX_VARS.MED_LEN),DE
JP TYPE_FL_X02
CALL AUTO_1AC4 ; ???
JP FORM_X04 ; ???
AUTO_290F:
OR A
LD (ZX_VARS.DOS_ERROR),A
LD (ZX_VARS.DOS_CH_ADR),HL
LD (ZX_VARS.MED_LEN),DE
CALL AUTO_1CB3
CALL AUTO_18A4
CALL AUTO_18AB
JP AUTO_1921
AUTO_2926:
CALL RD_HEAD_DSK
CALL AUTO_1CB3
JP AUTO_07A0
AUTO_292F:
CALL AUTO_1C57
CALL RD_HEAD_DSK
JP AUTO_1CB3
AUTO_2938:
PUSH BC
LD B,8
AUTO_293B:
LD A,(HL)
RST RST10
INC HL
DJNZ AUTO_293B
LD A,'<'
RST RST10
LD A,(HL)
RST RST10
LD A,'>'
RST RST10
POP BC
RET
BUFER_ON:
PUSH HL
PUSH DE
PUSH BC
PUSH AF
LD HL,ZX_VARS.BUF_FLAG
LD A,(HL)
OR A
JR Z,AUTO_2992
PUSH HL
LD BC,AUTO_0100+1
PUSH BC
CALL AUTO_19FD
POP BC
POP HL
LD (HL),0
LD HL,ZX_VARS.BUFFER
CALL AUTO_1E32
LD HL,(ZX_VARS.ADR_DOS_COM)
LD BC,AUTO_0100+1
ADD HL,BC
JR AUTO_298F
BUFER_OFF:
PUSH HL
PUSH DE
PUSH BC
PUSH AF
LD HL,ZX_VARS.BUF_FLAG
LD A,(HL)
OR A
JR NZ,AUTO_2992
LD (HL),255
LD HL,ZX_VARS.BUFFER
LD BC,AUTO_0100+1
CALL AUTO_1E2E
OR A
LD BC,AUTO_0100+1
LD HL,(ZX_VARS.ADR_DOS_COM)
SBC HL,BC
AUTO_298F:
LD (ZX_VARS.ADR_DOS_COM),HL
AUTO_2992:
POP AF
POP BC
POP DE
POP HL
RET
;
;
; ‚믮«­¥­¨¥ ª®¬ ­¤ë "40". “áâ ­®¢¨â¥ #5D11 ¨ #5C3B. ˆá¯®«ì§ã¥âáï â ª¦¥ á  ¤à¥á :
;#2998 (¢ë¯®«­¥­¨¥ ª®¬ ­¤ë ãáâ ­®¢ª¨ ⨯  ¤¨áª®¢®¤ ; ãáâ ­®¢¨â¥ ¢á¥ ¤«ï #2997 ¯«îá ¢ A ⨯ ¤¨áª®¢®¤ ).
CMD_40: XOR A ;¤¨áª®¢®¤ 40-¤®à®¦¥ç­ë© ®¤­®áâ®à®­­¨©
;Žè¨¡ª !!! ‚®-¯¥à¢ëå, ¯®ç¥¬ã ¤¨áª®¢®¤ ®¤­®áâ®à®­­¨©?
; ¢®-¢â®àëå, ­ ¤® ¯à®¢¥àïâì ¢®§¬®¦­®áâì ¨á¯®«ì§®¢ ­¨ï ¤¨áª®¢®¤  ¢ âॡ㥬®¬ ०¨¬¥.
AUTO_2998:
LD (ZX_VARS.MED_START),A ;á®åà ­¥­¨¥ ⨯  ¤¨áª®¢®¤ 
CALL SINTAX_RET ;¥á«¨ ¨¤¥â ¯à®¢¥àª  ­  ᨭ⠪á¨
CALL TEST_CR ;¯à®¢¥àª  ¢â®à®£® ᨬ¢®«  áâப
JP Z,CMD_ERROR ;¥á«¨ íâ® ENTER, â® *ERROR*
CALL get_disk_type ;¡¥à¥¬  ¤à¥á ï祩ª¨ á ⨯®¬ ¤¨á
LD A,(ZX_VARS.MED_START) ;ãáâ ­®¢ª  ⨯  ¤¨áª®¢®¤ 
LD (HL),A
JP AUTO_03E1 ;á®®¡é¥­¨¥ O.K.
; ‚믮«­¥­¨¥ ª®¬ ­¤ë "80". “áâ ­®¢¨â¥ #5D11 ¨ #5C3B.
CMD_80: LD A,#80 ;¤¨áª®¢®¤ 80-¤®à®¦¥ç­ë© ®¤­®áâ®à®­­¨©
;Žè¨¡ª !!! ‚®-¯¥à¢ëå, ¯®ç¥¬ã ¤¨áª®¢®¤ ®¤­®áâ®à®­­¨©?
; ¢®-¢â®àëå, ­ ¤® ¯à®¢¥àïâì ¢®§¬®¦­®áâì ¨á¯®«ì§®¢ ­¨ï ¤¨áª®¢®¤  ¢ âॡ㥬®¬ ०¨¬¥.
JR AUTO_2998
;
;
;
;€¤à¥á #29B2. ’¥ªáâë á®®¡é¥­¨© TR-DOS.
AUTO_29B2: DB 13, "*ERROR*", 141
AUTO_29BB: DB 13, "No space", 141
AUTO_29C5: DB 13, "File exists", 141
AUTO_29D2: DB " Free", 141
READ_ONLY_MSG: DC 13, "Read Only"
DISK_ERROR_MSG: DC 13, "Disk Error"
AUTO_29ED: DC 13, "Rec. O/F"
AUTO_29F7: DC "Title: "
AUTO_29FE: DZ 13, "Retry,Abort,Ignore?"
AUTO_2A13: DC 13, "Trk "
AUTO_2A18: DC " sec "
AUTO_2A1D: DB " Del. File", 141
AUTO_2A28: DB 13, "No"
AUTO_2A2B: DZ " File(s)", 141
AUTO_2A35:
LD HL,AUTO_2A41
LD DE,AUTO_4080
LD BC,RST20
LDIR
RET
;
; TEST 128/48 ROM ¯à®£à ¬¬  ¢ RAM !!!
;
AUTO_2A41:
LD A,(AUTO_03B5)
CP 243
LD A,16
JR Z,AUTO_2A4B
XOR A
AUTO_2A4B:
LD (ZX_VARS.K_STATE+1),A
LD BC,PORT_128
LD A,16
OUT (C),A
RET
MAGIC_2:
AUTO_2A56:
PUSH AF
PUSH BC
PUSH DE
PUSH HL
PUSH IX
PUSH IY
EXX
PUSH BC
PUSH DE
PUSH HL
EX AF,AF'
PUSH AF
LD A,I
PUSH AF
LD A,R
PUSH AF
LD HL,0
ADD HL,SP
PUSH HL
LD A,3Ch
OUT (FDC_93.DrvCTRL),A
LD A,'?'
LD I,A
IN A,(FDC_93.Command)
AND 128
RRCA
RRCA
RRCA
LD (ZX_VARS.K_STATE+1),A
CALL AUTO_2F65
CALL pause_750ms
CALL pause_750ms
LD DE,CONT_1+1
LD HL,AUTO_4000
PUSH HL
CALL AUTO_2D73
LD HL,AUTO_4100
LD DE,CONT_1+2
CALL AUTO_2D73
POP HL
PUSH HL
LD DE,RST08
CALL AUTO_2F1B
LD HL,AUTO_40E3
LD A,(HL)
LD (ZX_VARS.K_STATE),A
INC HL
LD A,(HL)
INC (HL)
INC HL
LD E,(HL)
INC HL
LD D,(HL)
OR A
EX DE,HL
LD DE,AUTO_00A8+24
SBC HL,DE
LD (AUTO_40E5),HL
LD HL,AUTO_4000
LD DE,RST08
CALL AUTO_2D73
POP HL
LD DE,(AUTO_40E1)
PUSH DE
LD DE,CONT_1+1
CALL AUTO_2F1B
POP DE
CALL AUTO_2D4C
PUSH DE
LD A,3Ch
OUT (FDC_93.DrvCTRL),A
CALL AUTO_2F65
LD HL,AUTO_4000
LD DE,RST08
LD B,1
CALL AUTO_2F1B
POP DE
LD HL,(AUTO_40E1)
LD (AUTO_40E1),DE
PUSH HL
LD HL,AUTO_4000
LD DE,RST08
LD B,1
CALL AUTO_2D73
LD A,(AUTO_40E4)
DEC A
CALL AUTO_2CE5
LD (HL),'@'
INC HL
LD B,7
AUTO_2B09:
LD (HL),' '
INC HL
DJNZ AUTO_2B09
LD (HL),'C'
POP DE
POP BC
INC HL
LD (HL),C
INC HL
LD (HL),B
INC HL
INC HL
INC HL
LD (HL),192
INC HL
LD (HL),E
INC HL
LD (HL),D
LD HL,AUTO_4000
LD DE,0
IN A,(FDC_93.Sector)
DEC A
LD E,A
LD B,1
CALL AUTO_2D73
LD HL,0
ADD HL,SP
LD (AUTO_4140),HL
LD SP,AUTO_41FF
CALL AUTO_2A35
LD HL,AUTO_C000
XOR A
AUTO_2B3F:
ADD A,(HL)
INC HL
LD B,A
LD A,H
OR A
LD A,B
JR NZ,AUTO_2B3F
LD HL,AUTO_4100
LD (HL),A
PUSH HL
LD HL,AUTO_2B58
PUSH HL
LD HL,AUTO_3D2F
PUSH HL
DI
JP AUTO_4080
AUTO_2B58:
POP HL
LD BC,PORT_128
LD A,170
LD (AUTO_4130),A
LD D,5
LD A,(ZX_VARS.K_STATE+1)
OR D
LD D,A
OUT (C),D
LD A,(AUTO_C130)
CP 170
JP NZ,AUTO_2C1B
LD A,D
AND 248
LD D,A
INC HL
LD B,8
AUTO_2B79:
LD (HL),D
OUT (C),D
XOR A
LD HL,AUTO_C000
AUTO_2B80:
ADD A,(HL)
INC HL
LD E,A
LD A,H
OR A
LD A,E
JR NZ,AUTO_2B80
LD HL,AUTO_4100
CP (HL)
INC HL
JR Z,AUTO_2B93
INC D
DJNZ AUTO_2B79
DEC D
AUTO_2B93:
LD B,8
AUTO_2B95:
PUSH BC
CALL AUTO_2C37
POP BC
DJNZ AUTO_2B95
LD C,0
CALL AUTO_2F3A
CALL AUTO_2D2A
LD A,(AUTO_40E4)
LD (AUTO_4102),A
INC A
LD (AUTO_40E4),A
LD HL,(AUTO_40E5)
LD DE,1
SBC HL,DE
LD (AUTO_40E5),HL
RET C
LD HL,(AUTO_40E1)
LD (AUTO_411E),HL
CALL AUTO_2D1E
LD A,'8'
LD (AUTO_4111),A
LD A,1
LD (AUTO_411D),A
LD HL,AUTO_4100
LD (AUTO_4119),HL
LD HL,AUTO_0100
LD (AUTO_411B),HL
LD DE,(AUTO_40E1)
CALL AUTO_2F65
LD C,D
CALL AUTO_2F3A
LD HL,AUTO_4100
LD B,1
CALL AUTO_2D58
LD (AUTO_40E1),DE
LD C,0
CALL AUTO_2F3A
CALL AUTO_2D34
LD A,(AUTO_4102)
CALL AUTO_2CE5
LD DE,AUTO_4110
LD BC,RST10
EX DE,HL
LDIR
IN A,(FDC_93.Sector)
DEC A
LD E,A
LD D,0
LD HL,AUTO_4000
CALL AUTO_2D73
LD BC,PORT_128
LD A,(AUTO_4101)
OUT (C),A
AUTO_2C1B:
LD HL,(AUTO_4140)
LD SP,HL
LD HL,AUTO_4000
LD DE,CONT_1+1
CALL AUTO_2F1B
LD HL,AUTO_4100
LD DE,CONT_1+2
CALL AUTO_2F1B
LD A,'<'
PUSH AF
JP AUTO_2EBC
AUTO_2C37:
LD A,B
DEC A
LD (AUTO_4103),A
LD B,A
LD A,(AUTO_4101)
AND 7
CP B
RET Z
LD A,2
CP B
RET Z
LD A,(AUTO_4101)
AND 8
JR Z,AUTO_2C55
LD A,B
CP 7
RET Z
JR AUTO_2C59
AUTO_2C55:
LD A,B
CP 5
RET Z
AUTO_2C59:
CALL AUTO_2C5D
RET
AUTO_2C5D:
LD HL,AUTO_4101
LD A,(HL)
AND 248
LD C,A
LD A,B
OR C
PUSH BC
LD BC,PORT_128
OUT (C),A
POP BC
LD HL,AUTO_C000
AUTO_2C70:
LD A,(HL)
OR A
JR NZ,AUTO_2C7A
INC HL
LD A,H
OR A
JR NZ,AUTO_2C70
RET
AUTO_2C7A:
CALL AUTO_2C7E
RET
AUTO_2C7E:
LD C,0
CALL AUTO_2F3A
CALL AUTO_2D2A
LD A,(AUTO_40E4)
LD (AUTO_4102),A
INC A
LD (AUTO_40E4),A
LD HL,(AUTO_40E5)
LD DE,CONT_6+6
SBC HL,DE
LD (AUTO_40E5),HL
RET C
LD HL,(AUTO_40E1)
LD (AUTO_411E),HL
CALL AUTO_2D1E
LD A,'@'
LD (AUTO_411D),A
LD HL,AUTO_C000
LD (AUTO_4119),HL
LD HL,AUTO_4000
LD (AUTO_411B),HL
LD DE,(AUTO_40E1)
CALL AUTO_2D3E
LD (AUTO_40E1),DE
LD C,0
CALL AUTO_2F3A
CALL AUTO_2D34
LD A,(AUTO_4102)
CALL AUTO_2CE5
LD DE,AUTO_4110
LD BC,RST10
EX DE,HL
LDIR
IN A,(FDC_93.Sector)
DEC A
LD E,A
LD D,0
LD HL,AUTO_4000
CALL AUTO_2D73
RET
AUTO_2CE5:
LD C,A
AND 240
RRCA
RRCA
RRCA
RRCA
LD B,A
PUSH BC
LD E,B
LD D,0
LD HL,AUTO_4000
PUSH DE
CALL AUTO_2F1B
POP DE
POP BC
LD B,0
LD A,C
AND 15
RLCA
RLCA
RLCA
RLCA
LD HL,AUTO_4000
ADD A,L
LD L,A
RET
AUTO_2D09:
LD HL,AUTO_4110
LD B,9
AUTO_2D0E:
LD (HL),' '
INC HL
DJNZ AUTO_2D0E
LD A,'@'
LD (AUTO_4110),A
LD A,'C'
LD (AUTO_4118),A
RET
AUTO_2D1E:
CALL AUTO_2D09
LD A,(AUTO_4103)
ADD A,'0'
LD (AUTO_4111),A
RET
AUTO_2D2A:
LD HL,AUTO_4000
LD DE,RST08
CALL AUTO_2F1B
RET
AUTO_2D34:
LD HL,AUTO_4000
LD DE,RST08
CALL AUTO_2D73
RET
AUTO_2D3E:
CALL AUTO_2F65
LD C,D
CALL AUTO_2F3A
LD HL,AUTO_C000
LD B,'@'
JR AUTO_2D58
AUTO_2D4C:
CALL AUTO_2F65
LD C,D
CALL AUTO_2F3A
LD HL,AUTO_4000
LD B,192
AUTO_2D58:
PUSH BC
PUSH DE
CALL AUTO_2D73
LD DE,AUTO_0100
ADD HL,DE
POP DE
INC E
LD A,E
CP 16
JR NZ,AUTO_2D6F
LD E,0
INC D
LD C,D
CALL AUTO_2F3A
AUTO_2D6F:
POP BC
DJNZ AUTO_2D58
RET
AUTO_2D73:
LD A,E
INC A
OUT (FDC_93.Sector),A
PUSH HL
LD D,20
PUSH DE
AUTO_2D7B:
DI
LD C,127
LD A,160
OUT (FDC_93.Command),A
CALL AUTO_3FCA
POP DE
POP HL
IN A,(FDC_93.Command)
AND 127
RET Z
DEC D
PUSH HL
PUSH DE
JR NZ,AUTO_2D7B
HALT
AUTO_2D92:
LD HL,(ZX_VARS.FL_START)
LD DE,(ZX_VARS.FL_PLACE)
LD A,(ZX_VARS.FL_SIZE)
LD B,A
CALL READ_DISK
RET
;
;
;
CMD_GOTO:
CALL INPUT_TXT
CALL SINTAX_RET
CALL AUTO_102E
CALL AUTO_1C57
LD (AUTO_4020),BC
LD A,C
CP 8
JR NC,AUTO_2DD2
CALL RD_HEAD_DSK
CALL AUTO_1CB3
JP NZ,AUTO_03D9
LD HL,ZX_VARS.FL_NAME
LD BC,(AUTO_4020)
ADD HL,BC
LD (HL),'8'
PUSH HL
CALL AUTO_1CB3
POP HL
JR Z,AUTO_2DD8
LD (HL),' '
AUTO_2DD2:
CALL AUTO_1CB3
JP AUTO_2E33
AUTO_2DD8:
CALL AUTO_162A
CALL AUTO_2D92
LD SP,AUTO_40FF
LD B,8
AUTO_2DE3:
PUSH BC
LD A,B
LD BC,PORT_128
DEC A
PUSH AF
OR 16
OUT (C),A
POP AF
ADD A,'0'
LD HL,ZX_VARS.FL_NAME
LD BC,(AUTO_4020)
ADD HL,BC
LD (HL),A
CALL AUTO_1CB3
JR NZ,AUTO_2E05
CALL AUTO_165D
CALL AUTO_2D92
AUTO_2E05:
POP BC
DJNZ AUTO_2DE3
LD A,' '
LD HL,ZX_VARS.FL_NAME
LD BC,(AUTO_4020)
ADD HL,BC
LD (HL),A
CALL AUTO_1CB3
CALL AUTO_165D
PUSH BC
PUSH AF
LD BC,PORT_128
LD A,(AUTO_4101)
OUT (C),A
POP AF
POP BC
JR AUTO_2E39
CALL INPUT_TXT
CALL SINTAX_RET
CALL AUTO_102E
CALL AUTO_292F
AUTO_2E33:
JP NZ,AUTO_03D9
CALL AUTO_165D
AUTO_2E39:
LD A,(ZX_VARS.FL_NAME)
CP '$'
DI
JR NZ,AUTO_2E43
IM 2
AUTO_2E43:
LD SP,AUTO_40F0
CALL get_disk_type
LD (AUTO_4010),A
LD A,(ZX_VARS.PDOS_COPY)
LD (AUTO_4011),A
LD HL,(ZX_VARS.FL_START)
PUSH HL
LD DE,(ZX_VARS.FL_PLACE)
PUSH DE
INC E
LD A,E
CP 16
JR NZ,AUTO_2E64
LD E,0
INC D
AUTO_2E64:
LD C,D
CALL AUTO_2F07
LD A,(AUTO_4010)
AND 2
CALL NZ,AUTO_2F0F
LD A,C
CALL AUTO_2F50
LD HL,AUTO_4100
LD B,191
AUTO_2E79:
PUSH BC
PUSH DE
CALL AUTO_2F1B
LD DE,AUTO_0100
ADD HL,DE
POP DE
INC E
LD A,E
CP 16
JR NZ,AUTO_2E9C
LD E,0
INC D
LD C,D
CALL AUTO_2F07
LD A,(AUTO_4010)
AND 2
CALL NZ,AUTO_2F0F
LD A,C
CALL AUTO_2F50
AUTO_2E9C:
POP BC
DJNZ AUTO_2E79
POP DE
POP HL
LD SP,HL
LD A,(AUTO_4011)
PUSH AF
LD C,D
CALL AUTO_2F07
LD A,(AUTO_4010)
AND 2
CALL NZ,AUTO_2F0F
LD A,C
CALL AUTO_2F50
LD HL,AUTO_4000
CALL AUTO_2F1B
AUTO_2EBC:
POP AF
EX AF,AF'
POP AF
LD R,A
POP AF
LD I,A
DI
LD A,255
JP PO,AUTO_2ECC
LD A,0
AUTO_2ECC:
LD (ZX_VARS.K_STATE),A
POP AF
POP HL
POP DE
POP BC
EXX
EX AF,AF'
POP IY
POP IX
POP HL
POP DE
POP BC
LD A,(ZX_VARS.BORDER)
AND '8'
RRCA
RRCA
RRCA
OUT (0FEH),A
LD A,(ZX_VARS.AUTO_5B08)
CP 238
JR NZ,AUTO_2EF7
PUSH BC
LD BC,PORT_128
LD A,(ZX_VARS.AUTO_5B5C)
OUT (C),A
POP BC
AUTO_2EF7:
LD A,(ZX_VARS.K_STATE)
OR A
LD A,201
LD (ZX_VARS.K_STATE),A
JR NZ,AUTO_2F03
EI
AUTO_2F03:
POP AF
JP ZX_VARS.K_STATE
AUTO_2F07:
LD A,(AUTO_4011)
OR 3Ch
AUTO_2F0C:
OUT (FDC_93.DrvCTRL),A
RET
AUTO_2F0F:
LD A,C
OR A
RRA
LD C,A
RET NC
LD A,(AUTO_4011)
AND 'o'
JR AUTO_2F0C
AUTO_2F1B:
LD A,E
INC A
OUT (FDC_93.Sector),A
PUSH HL
LD D,20
PUSH DE
AUTO_2F23:
DI
LD C,127
LD A,128
OUT (FDC_93.Command),A
CALL AUTO_3FE5
POP DE
POP HL
IN A,(FDC_93.Command)
AND 127
RET Z
DEC D
PUSH HL
PUSH DE
JR NZ,AUTO_2F23
HALT
AUTO_2F3A:
LD A,3Ch
OUT (FDC_93.DrvCTRL),A
LD A,(ZX_VARS.K_STATE)
AND 8
JR NZ,AUTO_2F4F
LD A,C
OR A
RRA
LD C,A
JR NC,AUTO_2F4F
LD A,2Ch
OUT (FDC_93.DrvCTRL),A
AUTO_2F4F:
LD A,C
AUTO_2F50:
OUT (FDC_93.Data),A
CALL pause_50ms
LD A,24
AUTO_2F57:
OUT (FDC_93.Command),A
AUTO_2F59:
IN A,(FDC_93.DrvCTRL)
AND 128
JR Z,AUTO_2F59
PUSH BC
CALL pause_50ms
POP BC
RET
AUTO_2F65:
LD A,8
JR AUTO_2F57
AUTO_2F69:
LD HL,(ZX_VARS.DOS_SP)
DEC HL
DEC HL
LD SP,HL
JP AUTO_1D2F
;
; RST20 procedure
;
RST20_EXE:
LD (ZX_VARS.WORK_2),HL
LD (ZX_VARS.WORK_4),DE
POP HL
LD E,(HL)
INC HL
LD D,(HL)
INC HL
PUSH HL
LD HL,AUTO_3D2F
PUSH HL
PUSH DE
LD HL,ZX_VARS.RET_INS
PUSH HL
LD HL,(ZX_VARS.WORK_2)
LD DE,(ZX_VARS.WORK_4)
RET
;
; INIT DOS VARS
;
AUTO_2F90: ; INIT DATA DOS
LD HL,0FFFFh
LD (ZX_VARS.TIME_A),HL
LD (ZX_VARS.TIME_C),HL
LD (ZX_VARS.DISK_C),HL
CALL INIT_2X80_1 ; *** !!! ***
; LD (ZX_VARS.DISK_A),HL
XOR A
LD (ZX_VARS.FLAG_BOOT),A
LD (ZX_VARS.CONT_DISK),A
LD (ZX_VARS.INT_1_VAR),A
LD (ZX_VARS.DOS_ERR_2),A
LD (ZX_VARS.FL_NUMBER+1),A
LD A,255
OUT (FDC_93.DrvCTRL),A
LD (ZX_VARS.ERR_NR),A
LD (ZX_VARS.PDOS_COPY),A
LD (ZX_VARS.BUF_FLAG),A
LD A,201
LD (ZX_VARS.RET_INS),A
LD A,0D0h
OUT (FDC_93.Command),A
RET
;
;
;
AUTO_2FC6:
CALL AUTO_050C
LD A,(HL)
OR A
JP Z,AUTO_03AC
CP 1
CALL Z,AUTO_0507
RET NZ
JR AUTO_2FC6
;
;
;
AUTO_2FD6:
LD B,1
LD HL,ZX_VARS.BUFFER
JP AUTO_1E67
AUTO_2FDE:
PUSH HL
LD DE,(ZX_VARS.CONT_SEC)
CALL AUTO_2FD6
LD A,(ZX_VARS.MED_LEN)
POP DE
OR A
RET Z
LD C,A
LD HL,ZX_VARS.BUFFER
LDIR
RET
////////////////////////////////////////////
TRDOS_CMD:
; ’ ¡«¨æ  ª®¬ ­¤ TR-DOS.
.LIST: DB ZX_Token.cat
DB '*'
DB ZX_Token.format
DB ZX_Token.move
;
DB ZX_Token.new
DB ZX_Token.erase
DB ZX_Token.load
DB ZX_Token.save
;
DB ZX_Token.return
DB ZX_Token.peek
DB ZX_Token.poke
DB ZX_Token.merge
;
DB ZX_Token.run
DB ZX_Token.open_channel
DB ZX_Token.close_channel
DB ZX_Token.copy
;
DB '4'
DB ZX_Token.go_to
DB '8'
DB ZX_Token.list
;
DB ZX_Token.verify
DB '/'
;;
;;
.Size EQU $ - TRDOS_CMD.LIST
; ’ ¡«¨æ   ¤à¥á®¢ ¯®¤¯à®£à ¬¬, ¢ë¯®«­ïîé¨å ª®¬ ­¤ë TR-DOS.
.TABLE: DW CMD_CAT
DW CMD_STAR
DW CMD_FORMAT
DW CMD_MOVE
;
DW CMD_NEW
DW CMD_ERASE
DW CMD_LOAD
DW CMD_SAVE
;
DW CMD_RETURN
DW CMD_PEEK
DW CMD_POKE
DW CMD_MERGE
;
DW CMD_RUN
DW CMD_OPEN
DW CMD_CLOSE
DW CMD_COPY
;
DW CMD_40
DW CMD_GOTO
DW CMD_80
DW CMD_LIST
;
DW CMD_VERIFY
DW CMD_MSDOS
////////////////////////////////////////////
;
;
;
AUTO_3032:
LD HL,(ZX_VARS.E_LINE)
LD (ZX_VARS.ADR_DOS_COM),HL
LD (ZX_VARS.DOS_CH_ADR),HL
LD A,255
LD (ZX_VARS.DOS_ERROR),A
LD HL,ZX_VARS.MED_LEN
JR AUTO_3054
; LD (ZX_VARS.MED_START),HL ; 3 ¡ ©â  § ­ïâë ᯨ᪮¬ ª®¬ ­¤
; nop
; nop
; nop
AUTO_3048:
LD (ZX_VARS.ADR_DOS_COM),HL
LD (ZX_VARS.DOS_CH_ADR),HL
CALL AUTO_30E1
RET NZ
INC HL
INC HL
AUTO_3054:
JP REDIR_LINE_CODING
; LD (ZX_VARS.MED_START),HL
AUTO_3057: ; ¯à¥®¡à §®¢ ­¨¥ ª®¬ ­¤­®© áâப¨ !!!
CALL AUTO_30A9 ; ¯®¨áª á«®¢ 
JR NZ,AUTO_3087 ; ¥á«¨ ­¥â, ¢ë室
EX DE,HL
INC DE
LD B,0
LD HL,AUTO_31C8
ADD HL,BC
LD A,(HL)
LD HL,(ZX_VARS.DOS_CH_ADR)
LD (HL),A
INC HL
EX DE,HL
RST_ROM ROUTINE.differ
PUSH BC
RST_ROM ROUTINE.reclaim_2
POP BC
LD A,(ZX_VARS.DOS_ERROR)
OR A
JR NZ,AUTO_3087
LD HL,(ZX_VARS.MED_START)
LD E,(HL)
INC HL
LD D,(HL)
EX DE,HL
OR A
SBC HL,BC
EX DE,HL
LD (HL),D
DEC HL
LD (HL),E
AUTO_3087:
LD HL,(ZX_VARS.DOS_CH_ADR)
LD A,(HL)
CP 13
RET Z
INC HL ; á«¥¤ãî饥 á«®¢®
LD (ZX_VARS.DOS_CH_ADR),HL
LD A,(HL)
CP 13
RET Z
CP '"'
JR NZ,AUTO_3057
AUTO_309A:
INC HL
LD A,(HL)
CP 13
RET Z
CP '"'
JR NZ,AUTO_309A
INC HL
LD (ZX_VARS.DOS_CH_ADR),HL
JR AUTO_3057
AUTO_30A9:
LD HL,(ZX_VARS.DOS_CH_ADR)
LD DE,AUTO_30FD
LD C,0
AUTO_30B1:
LD A,(HL)
AND 223
LD B,A
OR A
JR NZ,AUTO_30BB
INC HL
JR AUTO_30B1
AUTO_30BB:
LD A,(DE)
AND 128
JR NZ,AUTO_30C8
LD A,(DE)
CP B
JR NZ,AUTO_30D9
INC HL
INC DE
JR AUTO_30B1
AUTO_30C8:
LD A,(DE)
AND 127
CP B
RET Z
AUTO_30CD:
INC C
LD HL,(ZX_VARS.DOS_CH_ADR)
INC DE
LD A,(DE)
CP 255
JR NZ,AUTO_30B1
OR A
RET
AUTO_30D9:
INC DE
LD A,(DE)
AND 128
JR Z,AUTO_30D9
JR AUTO_30CD
AUTO_30E1:
LD HL,(ZX_VARS.PPC)
INC HL
INC HL
LD A,H
OR L
JR Z,AUTO_30F4
XOR A
LD (ZX_VARS.DOS_ERROR),A
DEC HL
DEC HL
RST_ROM ROUTINE.line_addr
RET
AUTO_30F4:
LD A,255
LD (ZX_VARS.DOS_ERROR),A
LD HL,(ZX_VARS.E_LINE)
RET
;
;
;
AUTO_30FD:
DB "SAVE",128, "SAV",197 ; 248,248
DB "LOAD",128, "LOA",196 ; 239,239
DB "RUN",128, "RU",206 ; 247,247
DB "CAT",128, "CA",212 ; 207,207
;
DB "ERASE",128, "ERAS",197 ; 210,210
DB "NEW",128, "NE",215 ; 230,230
DB "MOVE",128, "MOV",197 ; 209,209
DB "MERGE",128, "MERG",197 ; 213,213
;
DB "PEEK",128, "PEE",203 ; 190,190
DB "POKE",128, "POK",197 ; 244,244
DB "OPEN",131, "CLOSE",131 ; 211,212
DB "CODE",128, "COD",197 ; 175,175
;
DB "RND",128, "RN",196 ; 165,165
DB "DATA",128, "DAT",193 ; 228,228
DB "SCREEN",4,132, "SCREEN",132 ; 170,170
DB "COPY",128, "COP",217 ; 255,255
;
DB "FORMAT",128, "FORMA",212 ; 208,208
DB "GOTO",128, "GOT",207 ; 236,236
DB "LIST",128, "LIS",212 ; 240,240
DB "LINE",128, "LIN",197 ; 202,202
;
DB "VERIFY",128, "VERIF",217 ; 214,214
DB 255,255
AUTO_31C8:
DB 248,248
DB 239,239
DB 247,247
DB 207,207
DB 210,210
DB 230,230
DB 209,209
DB 213,213
DB 190,190
DB 244,244
DB 211,212
DB 175,175
DB 165,165
DB 228,228
DB 170,170
DB 255,255
DB 208,208
DB 236,236
DB 240,240
DB 202,202
DB 214,214
DB 0
;
;
;
BLOCK #31F3 - $,255
AUTO_31F3:
LD HL,(ZX_VARS.CHANS)
OR A
LD BC,ZX_VARS.BUFFER
SBC HL,BC
RET
BLOCK #3200-$,#FF
INIT_2X80:
JP AUTO_106E
INIT_2X80_1:
XOR A
LD (ZX_VARS.OPER_DISK),A
LD A,#3C
LD (ZX_VARS.PDOS_COPY),A
OUT (FDC_93.DrvCTRL),A
LD HL,#8383
LD (ZX_VARS.DISK_A),HL
LD (ZX_VARS.DISK_B),HL
LD (ZX_VARS.DISK_C),HL
LD (ZX_VARS.DISK_D),HL
LD HL,#0303
LD (ZX_VARS.TIME_A),HL
LD (ZX_VARS.TIME_B),HL
LD (ZX_VARS.TIME_C),HL
LD (ZX_VARS.TIME_D),HL
; CALL INIT_SYS_PAGE
RET
;
;
;
LOAD_CR:
LD A,13
LD (ZX_VARS.COM_LN_COPY),A
JP AUTO_021D
;
;
;
PRINT_TRK:
PUSH HL
PUSH BC
PUSH AF
PUSH DE
LD A,207
LD (ZX_VARS.SCR_PL_L),A
LD A,15
LD (ZX_VARS.SCR_POS_L),A
LD A,E
JR CONV1
;
;
;
PRINT_LINE:
LD A,(HL)
CP 255
RET Z
RST RST10
INC HL
JR PRINT_LINE
;
;
;
CONV1:
LD B,'0'
CONV2:
SUB 10
JR C,CONV3
INC B
JR CONV2
CONV3:
PUSH AF
LD A,B
RST RST10
POP AF
ADD A,':'
RST RST10
POP DE
POP AF
POP BC
POP HL
EI
JP Goto_trk
MSG_FORM:
DB 22,0,0,"Formating trk:",23,21," side:",255
MSG_FILE_1:
DB 22,0,0,"File ",'"',19,1,255
MSG_FILE_2:
DB 19,0,'"',13," exists.. Overwrite ? (y/n)",255
MSG_DISK:
DB 22,0,0,"Disk : ",255
MSG_FORM_2:
DB 22,0,0,"FORMAT:",23,12," 1 - Original"
DB 13,23,12," 2 - Turbo"
DB 13,23,12," 3 - Turbo/FAST"
DB 13,23,12," 4 - Quick",255
; DB 13,23,12," 5 - RAM-Disk",255
MSG_AT00:
DB 22,0,0,255
FORM_STATE:
CALL INPUT_TXT
CALL SINTAX_RET
LD HL,(ZX_VARS.CH_ADR)
LD A,(HL)
CP '"'
JR NZ,FORM_NO_NEXT
INC HL
LD A,(HL)
FORM_NO_NEXT:
CP #0D
RET Z
CP #80
RET Z
JP NC,CMD_ERROR
CP ' '
JP C,CMD_ERROR
AND #DF
LD (ZX_VARS.MED_START+1),A
RET
;
;
FORM_F01:
INC HL
LD A,(ZX_VARS.FL_LEN)
LD (HL),A
XOR A
RET
;
;
PRINT_SIDE1:
PUSH AF
LD A,'1'
JR PR_SIDE_X
PRINT_SIDE0:
PUSH AF
LD A,'0'
PR_SIDE_X:
PUSH AF
LD A,219
LD (ZX_VARS.SCR_PL_L),A
LD A,27
LD (ZX_VARS.SCR_POS_L),A
POP AF
RST RST10
POP AF
JP AUTO_1FFD
;
;
;
OWERWR_1:
CALL LOW_CLS_AT00
LD HL,MSG_FILE_1
CALL PRINT_LINE
CALL PRINT_NAME
LD HL,MSG_FILE_2
CALL PRINT_LINE
LD HL,AUTO_4000
PAUSE_X01:
DEC HL
LD A,H
OR L
JR NZ,PAUSE_X01
CALL AUTO_1052
JR REWR_CONT1
PRINT_NAME:
LD A,(ZX_VARS.OPER_DISK)
ADD A,'A'
RST RST10
LD A,':'
RST RST10
LD HL,ZX_VARS.FL_NAME
JP AUTO_2938
REWR_CONT1:
PUSH AF
CALL LOW_CLS_AT00
POP AF
CP 'Y'
RET Z
CP 13
RET
SET_7_TYPE:
CALL AUTO_165D
LD HL,ZX_VARS.FL_TYPE
SET 7,(HL)
RET
FORM_X02:
CALL LOW_CLS_AT00
LD HL,MSG_FORM ; 'format track: side:'
CALL PRINT_LINE
CALL FORMAT_ALL ; ¯à®£à ¬¬  ä®à¬ â¨à®¢ ­¨ï !
CALL LOW_CLS_AT00
LD HL,MSG_DISK
CALL PRINT_LINE
RET
FORM_X03:
LD A,(ZX_VARS.MED_START+1)
CP 15H
CALL AUTO_1C57
CALL AUTO_1D97
LD A,2
RST_ROM ROUTINE.chan_open
LD HL,NEW_NAME
RST PRINT_LN
FORM_X04:
CALL AUTO_106E
LD A,(ZX_VARS.MED_START+1)
AND A
JR NZ,FORM_NO_Q
CALL DISK_REDIR
CP 4
LD A,14H
JR NC,FORM_NO_Q
FORM_X05:
CALL LOW_CLS_AT00
LD HL,MSG_FORM_2
CALL PRINT_LINE
CALL AUTO_1052
AND A
JP Z,AUTO_01D3
FORM_NO_Q:
LD (ZX_VARS.MED_START+1),A
SUB 11H
JR Z,F_ORIGINAL
JR C,FORM_X05
DEC A
JR Z,F_TURBO
DEC A
JR Z,F_FAST
DEC A
JR Z,F_TURBO
; JR FORM_LOOP_X
F_ORIGINAL: ; Original FORMAT
LD HL,AUTO_1FB9
FORM_X07:
XOR A
FORM_X08:
LD (ZX_VARS.FL_LEN),A
LD (ZX_VARS.FL_START),HL
CALL LOW_CLS_AT00
RET
F_TURBO: ; Turbo FORMAT
LD HL,F_TURBO_DT
JR FORM_X07
F_FAST: ; Turbo/FAST FORMAT
LD A,1
LD HL,F_TURBO_DT
JR FORM_X08
F_TURBO_DT:
DB 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1
SUB_HL_14:
LD A,L
SUB 14
LD L,A
RET NC
DEC H
RET
LOW_CLS_AT00:
RST_ROM ROUTINE.cls_lower
LD HL,MSG_AT00
JP PRINT_LINE
TYPE_FL_X00:
LD A,(ZX_VARS.FL_TYPE)
CP 'B'
JR Z,TYPE_FL_X01
CP 'D'
JR Z,TYPE_FL_X01
CP '#'
JR Z,TYPE_FL_X01
LD A,'C'
LD (ZX_VARS.FL_TYPE),A
TYPE_FL_X01:
LD A,(ZX_VARS.DOS_ERROR)
RET
TYPE_FL_X02:
CALL AUTO_1CF0
CALL Z,SET_7_TYPE
TYPE_FL_X03:
CALL RD_HEAD_DSK
CALL AUTO_1AC4
JP AUTO_1B53
OWERWR_X01:
LD HL,ZX_VARS.FL_TYPE
BIT 7,(HL)
JR NZ,OWERWR_X02
JP AUTO_1B59
OWERWR_X02:
RES 7,(HL)
CALL OWERWR_1
JP NZ,AUTO_01D3
LD DE,(ZX_VARS.DOS_CH_ADR)
LD A,E
OR A
JR Z,OWERWR_X03
INC D
OWERWR_X03:
LD A,(ZX_VARS.FL_SIZE)
CP D
JR NC,OWERWR_X04
CALL AUTO_2926
JR TYPE_FL_X03
OWERWR_X04:
LD B,D
LD HL,(ZX_VARS.E_LINE)
LD (HL),170
INC HL
LD DE,(ZX_VARS.AUTO_5CD1)
LD (HL),E
INC HL
LD (HL),D
LD C,6
LD HL,(ZX_VARS.MED_LEN)
LD (ZX_VARS.FL_LEN),HL
LD HL,(ZX_VARS.MED_START)
LD (ZX_VARS.FL_START),HL
LD DE,(ZX_VARS.FL_PLACE)
CALL WRITE_DISK
LD BC,(ZX_VARS.FL_NUMBER)
CALL AUTO_1BBF
CALL AUTO_1665
RET
LABEL_X00:
EI
JP AUTO_2F69
;///////////////////////////////////
SIDE_FORMAT: ; „«ï ä®à¬ â¨à®¢ ­¨ï á ­®¬¥à®¬ áâ®à®­ë !!!
LD A,(ZX_VARS.PDOS_COPY)
BIT 5,A
JR Z,SIDE_OUTS
INC D
SIDE_OUTS:
IN A,(FDC_93.DrvCTRL)
AND 192
JR Z,SIDE_OUTS
RET M
OUT (C),D
RET
;**************************************
INCLUDE 'trdos/tr_rmd_s.asz'
INCLUDE 'trdos/tr_msd_s.asz'
;**************************************
; „®¯®«­¥­¨ï ª ¯à®£à ¬¬¥ MOVE
;**************************************
MOVE_X00:
LD HL,(ZX_VARS.FL_N_4)
MOVE_X01:
LD A,(HL)
CP 0
RET Z
CP 1
JR Z,MOVE_X02
CALL MOVE_X03
MOVE_X02:
LD DE,RST10
ADD HL,DE
JR MOVE_X01
MOVE_X03:
PUSH HL
LD DE,CONT_1+4
ADD HL,DE
LD C,(HL)
INC HL
LD E,(HL)
INC HL
LD D,(HL)
LD HL,(ZX_VARS.MED_START)
AND A
SBC HL,DE
ADD HL,DE
JR Z,MOVE_X05
LD (ZX_VARS.AUTO_5CD5),DE
LD A,C
LD (ZX_VARS.AUTO_5CD3),A
CALL AUTO_17A5
MOVE_X04:
POP HL
PUSH HL
LD DE,(ZX_VARS.FL_N_2)
LD BC,RST10
LDIR
LD (ZX_VARS.FL_N_2),DE
EX DE,HL
LD DE,(ZX_VARS.FL_NAME)
DEC HL
LD (HL),D
DEC HL
LD (HL),E
LD HL,(ZX_VARS.MED_START)
LD (ZX_VARS.FL_NAME),HL
LD HL,ZX_VARS.FL_N_6
INC (HL)
POP HL
RET
MOVE_X05:
LD A,C
AND 15
ADD A,E
BIT 4,A
RES 4,A
LD E,A
JR Z,MOVE_X06
INC D
MOVE_X06:
LD A,C
RRC A
RRC A
RRC A
RRC A
AND 15
ADD A,D
LD D,A
LD (ZX_VARS.MED_START),DE
JR MOVE_X04
;*************************************
EDIT_RET:
LD HL,(ZX_VARS.E_LINE)
LD (HL),254
INC HL
LD (HL),13
INC HL
LD (HL),80H
RET
EDIT_X00:
RES 5,(IY+1)
RST RST20 ; ¢¢®¤ ª« ¢¨è¨
DW 15D4h
CP 4
JR Z,EDIT_RET
CP 7
JR NZ,EDIT_X02
CALL BEEP_1
CALL AUTO_212A ; ¢®ááâ ­®¢«¥­¨¥ ª®¬. áâப¨
LD HL,(ZX_VARS.E_LINE)
LD A,13
LD BC,0
CPIR
DEC HL
LD (ZX_VARS.K_CUR),HL
INC HL
INC HL
LD (HL),128
EDIT_X01:
RST RST20 ; ¢¢®¤ ª« ¢¨è¨
DW 015D4H
EDIT_X02:
CALL BEEP_1
CP 24
JR NC,EDIT_X03
CP 7 ; ¤® 7 - ¢¢®¤ ¢ ¡ãä¥à
JR C,EDIT_X03
CP 16 ; ®â 7 ¤® 16 - ।. áâப¨
JR C,EDIT_X04
RST RST20 ; ¢¢®¤ ᯥæ ᨬ¢®«®¢
DW 00F58H
JR EDIT_X01
EDIT_X03:
RST RST20 ; áâ ­¤. ¢¢®¤ ¢ ¡ãä¥à । ªâ¨à®¢ ­¨ï
DW 00F81H
JR EDIT_X01
EDIT_X04:
CP 7 ; ­  7 - ­¥â ®¯¥à æ¨¨
JR Z,EDIT_X01
CP 13 ; CR - ¢®§¢à â ¨§ ।. áâப¨
RET Z
CP 10 ; ¢¢¥àå/¢­¨§ - ­¥â ®¯¥à æ¨¨
JR Z,EDIT_X01
CP 11
JR Z,EDIT_X01
RST RST20 ; ¢ë¯®«­¨âì ®¯¥à æ¨î । ªâ¨à®¢ ­¨ï
DW 00F92H
JR EDIT_X01
EDIT_X05:
CALL AUTO_1D9F
JP AUTO_0239
;******************************************
RUS_PRINT:
AND '?'
LD L,A
LD H,0
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD BC,ZG_RUS
ADD HL,BC
DB 17
SUB D
LD E,H
LD BC,RST08
LDIR
LD A,201
LD (ZX_VARS.AUTO_5C9A),A
JP ZX_VARS.AUTO_5C9A
;**************************************
; DSS 3900H,'#'
;**********************************
DISPLAY "14k"
BLOCK #3C00 - $,255
AUTO_3C00:
RST R38
JR AUTO_3C06
RST R38
JR AUTO_3C09
;
;
BLOCK #3C06 - $,255
AUTO_3C06:
JP AUTO_3D00
;
;
BLOCK #3C09 - $,255
AUTO_3C09:
JP AUTO_3D03
;************************************
;!FIXIT not used
BLOCK #3C10 - $,255
;KBD_EXP:
LD A,CNF_PORT.ZX_BIOS
OUT (CNF_PORT.ON),A
RET
;
;************************************
;!FIXIT not used
BLOCK #3C18 - $,255
;KBD_OFF:
LD A,CNF_PORT.ZX_BIOS
OUT (CNF_PORT.ON),A
RET
;************************************
;!FIXIT not used
BLOCK #3C20 - $,255
READR_X:
CALL get_disk_time
LD B,A
JP set_side_0
;************************************
;!FIXIT not used
BLOCK #3C30 - $,255
IN A,(FDC_93.Command)
RET
;*****************************
NEW_NAME:
DB 22,1,3, "* Sprinter TR-DOS v.7.02 *"
DB 22,3,6, "(c) 2023 Sprinter Team"
DB 22,5,14, "*R.F.*"
DB 22,7,9, "BETA 4Mb",0
;*****************************
;FORMATER:
; LD DE,(ZX_VARS.E_LINE)
; LD HL,TX_FORMAT
; LD BC,LEN_TX_F
; LDIR
; EX DE,HL
; JP CMD_NEW_EXEC
;TX_FORMAT:
; DB 247,'"C:FORMATER"'
;LEN_TX_F EQU $-TX_FORMAT
;******************************
;******************************
PRINT_RED:
PUSH HL
PUSH BC
PUSH DE
PUSH AF
CALL xchg_intf1
POP AF
CALL AUTO_3D94
CALL xchg_intf1
POP DE
POP BC
POP HL
RET
;*******************************
;*******************************
;!TEST 06/01/2024 á®å࠭塞 á®áâ®ï­¨¥ ¯à¥à뢠­¨© § ç¥¬-â®
EXP_FNS_PREPARE:
PUSH HL
PUSH AF
LD A,R
DI
PUSH AF
POP HL
POP AF
EX (SP),HL
CALL EXP_FNS_PREPARE_EXIT
EX (SP),HL
PUSH AF
BIT 2,L
; LD A,L
; AND 4
JR Z,.no_EI
EI
.no_EI: POP AF
POP HL
RET
EXP_FNS_PREPARE_EXIT:
PUSH AF
XOR A ; SYS_PORT.BIOS
JP EXP_FNS_PREPARE_RET
;*******************************
RD_HEAD_DSK.FIXED:
LD A,7
JP AUTO_1C4A
CMD_COPY.FIXED:
PUSH AF
CALL AUTO_05CB
POP AF
RET Z
INC SP
INC SP
JP AUTO_03D9
;*******************************
BLOCK #3CC0 - $,255
MAGIC_1:
PUSH AF
LD A,CNF_PORT.ZX_BIOS
OUT (CNF_PORT.ON),A
POP AF
JP MAGIC_2
;*******************************
BLOCK #3CC9 - $,255
MAGIC_3:
PUSH AF
LD A,CNF_PORT.ZX_BIOS
OUT (CNF_PORT.ON),A
POP AF
RETN
;*******************************
BEEP_1:
PUSH AF
LD HL,200 ; BEEP
LD D,H
LD E,(IY-1)
RST_ROM ROUTINE.beeper
POP AF
RET
; DSS 3CF0H,255
;JP_HL_48:
; PUSH HL
;SW_ROM:
; PUSH AF
; LD A,0
; OUT (CNF_PORT),A
; POP AF
; RET
REDIR_3D13:
BIT 7,C
JP NZ,EXP_FNS ;#3FF8 EXP
BIT 6,C
JP Z,AUTO_283C
;!TEST 06/01/2024 㡨ࠥ¬ «¨è­¨¥ ⥫®¤¢¨¦¥­¨ï
;RES 6,C
;JP HD_CMD ;#3FF0 ROM. DI
JP EXP_FNS
;
;*****************************
BLOCK #3CFA - $,255
AUTO_3CFA:
JP xchg_intf1
;****** 3D13 redirection ******
BLOCK #3CFD - $,255
AUTO_3CFD:
JP REDIR_3D13
; JP AUTO_283C
;***********************************************************************;
BLOCK #3D00-$,#FF
AUTO_3D00:
NOP
JR AUTO_3D31
AUTO_3D03:
NOP
JR AUTO_3D1A
AUTO_3D06:
NOP
JP AUTO_25EF
AUTO_3D0A:
JP AUTO_244A
NOP
AUTO_3D0E:
JR AUTO_3D0A
NOP
JR AUTO_3CFA
;****** 3D13 point !!! ****
BLOCK #3D13-$,#FF
NOP
JR AUTO_3CFD
AUTO_3D16:
NOP
JP LABEL_X00
AUTO_3D1A:
CALL AUTO_3D21
PUSH HL
JP AUTO_016C
AUTO_3D21:
CALL AUTO_31F3 ; ¯à®¢¥à¨âì ¡ë«  ®â¢¥¤¥­  ¯ ¬ïâì ¨«¨ ­¥â
NOP
NOP
CALL C,AUTO_3D4C ; ¥á«¨ ­¥â, â® ¢ë§¢ âì ¯à®£à ¬¬ã ¨­¨æ.
LD HL,ZX_VARS.RET_INS
RET
NOP
NOP
AUTO_3D2F:
NOP
RET
AUTO_3D31:
CALL AUTO_3D21
PUSH HL
JP EDIT_X05
AUTO_3D38:
XOR A
OUT (#F7),A ;¯à®¢¥àª  ˆ­â¥à䥩င<E2809E>)))
IN A,(#F7)
CP 30
JR Z,AUTO_3D44
CP 31
RET NZ
.Size EQU $-AUTO_3D38
AUTO_3D44:
RST RST08
DB 49 ;!HARDCODE
LD A,1
LD (ZX_VARS.INTERF_I),A
RET
.Size EQU $-AUTO_3D44
AUTO_3D4C:
XOR A
OUT (FDC_93.DrvCTRL),A
IN A,(#F6)
LD HL,AUTO_3D38
LD DE,ZX_VARS.MEM_BOT
LD BC,AUTO_3D38.Size + AUTO_3D44.Size
LDIR
LD HL,AUTO_3D67
PUSH HL
LD HL,AUTO_3D2F
PUSH HL
JP ZX_VARS.MEM_BOT
AUTO_3D67: ; ¯®«ãç¨âì ¯ ¬ïâì ¤«ï DOS
LD HL,AUTO_2F90 ; ¨ ¢¥à­ãâìáï ¢ ¯à®£à ¬¬ã ¨­¨æ. VARS
PUSH HL
LD HL,AUTO_3D2F
PUSH HL
LD HL,1655h ;!HARDCODE
PUSH HL
LD HL,ZX_VARS.AUTO_5BFF
PUSH HL
LD (HL),#C9 ; RET code
LD HL,ZX_VARS.P_RAMTOP+1
LD BC,CONT_8+7
RET
PRINT_CR:
LD A,13
PRINT_SYM:
JP PRINT_RED
RST R38
RST R38
NOP
NOP
JP RUS_PRINT
RST R38
RST R38
RST R38
NOP
NOP
RST R38
RST R38
RST R38
AUTO_3D94:
RST_ROM ROUTINE.print_a
RET
AUTO_3D98:
LD A,8
WG93_EXE:
OUT (FDC_93.Command),A
AUTO_3D9C:
PUSH HL
RST_ROM ROUTINE.break_key
;RET_1F54:
JR C,AUTO_3DA5
RST_ROM ROUTINE.report_l
AUTO_3DA5:
POP HL
IN A,(FDC_93.DrvCTRL)
AND 128
JR Z,AUTO_3D9C
RET
RESET_WG:
LD A,8
CALL WG93_EXE
LD DE,0
IN A,(FDC_93.Command)
AND 2
LD B,A
AUTO_3DBA:
IN A,(FDC_93.Command)
AND 2
CP B
RET NZ
INC DE
LD A,E
OR D
JR NZ,AUTO_3DBA
JP AUTO_3EE7
AUTO_3DC8:
LD A,(ZX_VARS.CONT_DISK)
SET_DISK:
JP RAMD_X12
AUTO_3DCE:
LD HL,ZX_VARS.PDOS_COPY
LD C,A
LD A,3Ch
OR C
OUT (FDC_93.DrvCTRL),A
LD (HL),A
CALL get_disk_time
AND 128
JR Z,AUTO_3DFA
CALL RESET_WG
CALL test_disk
CALL get_disk_type
CP 255
JR NZ,AUTO_3DFA
PUSH HL
CALL test_d_traks
POP HL
CP 'P'
LD A,0
JR NZ,AUTO_3DF9
LD A,128
AUTO_3DF9:
LD (HL),A
AUTO_3DFA:
CALL READ_TRK_NUM
pause_50ms:
LD A,12 ;'P'
pause_1ms:
LD C,255
AUTO_3E01:
DEC C
JR NZ,AUTO_3E01
DEC A
JR NZ,pause_1ms
RET
get_disk_time:
LD DE,ZX_VARS.TIME_A
AUTO_3E0B:
LD HL,(ZX_VARS.OPER_DISK)
ADD HL,DE
LD A,(HL)
RET
get_disk_type:
LD DE,ZX_VARS.DISK_A
JR AUTO_3E0B
test_disk:
CALL get_disk_time
LD B,8
LD C,4
AUTO_3E1D:
LD (HL),B
LD A,8
CALL WG93_EXE
LD A,' '
LD B,11
CALL Goto_trk
LD B,(HL)
LD A,1
CALL Goto_trk
IN A,(FDC_93.Command)
AND 4
JR NZ,AUTO_3E3F
XOR A
CALL Goto_trk
IN A,(FDC_93.Command)
AND 4
RET NZ
AUTO_3E3F:
INC B
DEC C
RET Z
JR AUTO_3E1D
Goto_trk:
OUT (FDC_93.Data),A
LD A,B
OR 24
JP WG93_EXE_
Goto_trkx:
OUT (FDC_93.Data),A
PUSH BC
LD B,A
IN A,(FDC_93.Track)
CP B
POP BC
PUSH AF
LD A,B
OR 24
CALL WG93_EXE_
POP AF
RET Z
PUSH BC
CALL pause_50ms
POP BC
RET
Global_trk:
LD C,A
CALL set_side_0
CALL get_disk_type
AND 2
CALL NZ,made_trk_side2
PUSH BC
BIT 7,(HL)
JR Z,AUTO_3E83
BIT 0,(HL)
JR NZ,AUTO_3E83
IN A,(FDC_93.Track)
CP C
JR Z,AUTO_3E82
RLCA
OUT (FDC_93.Track),A
LD A,C
RLCA
AUTO_3E82:
LD C,A
AUTO_3E83:
CALL get_disk_time
LD B,A
IN A,(FDC_93.Track)
CP C
PUSH BC
CALL NZ,pause_50ms
POP BC
LD A,C
CALL Goto_trkx
POP BC
LD A,C
OUT (FDC_93.Track),A
LD A,(ZX_VARS.DRV_READY)
OR A
RET Z
XOR A
LD (ZX_VARS.DRV_READY),A
pause_750ms:
LD B,3
AUTO_3EA2:
LD A,255
CALL pause_1ms
DJNZ AUTO_3EA2
RET
made_trk_side2:
LD A,C
OR A
RRA
LD C,A
RET NC
JP set_side_1 ; SET SIDE 1
READ_ADR_LABL:
CALL set_side_0 ; SET SIDE 0
READ_ADR_LABL2:
IN A,(FDC_93.Command)
AND 128
LD (ZX_VARS.DRV_READY),A
IN A,(FDC_93.Track)
LD H,A ; ­  ⥪ãéãî ¤®à®¦ªã
CALL Goto_trk ; ¯®§¨æ¨®­¨à®¢ ­¨¥
; CALL READR_X
LD C,127
LD D,1
DI
LD A,0C0h ; ç⥭¨¥  ¤à¥á­®© ¬¥âª¨
OUT (FDC_93.Command),A
PUSH BC
LD B,6
AUTO_3ECE:
IN A,(FDC_93.DrvCTRL)
AND 192
JR NZ,AUTO_3EF2
INC DE
LD A,E
OR D
JR NZ,AUTO_3ECE
DJNZ AUTO_3ECE
POP BC
EI
LD A,208 ; ¯à¥à¢ âì ¢ë¯®«­¥­¨¥
OUT (FDC_93.Command),A
LD A,(ZX_VARS.AUTO_5CD1)
CP 255
RET Z
AUTO_3EE7:
CALL set_error_26
LD A,255
LD (ZX_VARS.FLAG_BOOT),A
JP exit_No_disk
AUTO_3EF2:
POP BC
IN H,(C)
AUTO_3EF5:
IN A,(FDC_93.DrvCTRL)
AND 192
JR Z,AUTO_3EF5
EI
RET M
DI
IN A,(FDC_93.Data)
JR AUTO_3EF5
save_sector:
LD (ZX_VARS.SEC_NUM),A
RET
save_bufer:
LD (ZX_VARS.CONT_BUF_ADR),HL
RET
AUTO_3F0A:
LD A,160
JR AUTO_3F10
AUTO_3F0E:
LD A,128
AUTO_3F10:
LD (ZX_VARS.COMAND_WG),A
AUTO_3F13:
LD D,10
AUTO_3F15:
PUSH DE
DI
LD A,(ZX_VARS.SEC_NUM)
INC A
OUT (FDC_93.Sector),A
LD HL,(ZX_VARS.CONT_BUF_ADR)
LD C,127
LD A,(ZX_VARS.COMAND_WG)
OUT (FDC_93.Command),A
CP 160
PUSH AF
CALL Z,AUTO_3FBA
POP AF
CALL NZ,AUTO_3FD5
POP DE
EI
IN A,(FDC_93.Command)
LD B,A
AND 127
RET Z
AUTO_3F39:
LD HL,READ_ONLY_MSG
AND '@'
JR NZ,AUTO_3F4B
LD A,B
AND 4
JR Z,AUTO_3FA0
DEC D
JR NZ,AUTO_3F15
AUTO_3F48:
LD HL,DISK_ERROR_MSG
AUTO_3F4B:
LD A,208
OUT (FDC_93.Command),A
LD A,B
AND 1
JP NZ,AUTO_3EE7
IN A,(FDC_93.Track)
OR A
JR NZ,AUTO_3F5F
IN A,(FDC_93.Sector)
CP 10
RET Z
AUTO_3F5F:
PUSH HL
CALL AUTO_1D97
POP HL
RST PRINT_LN
LD HL,AUTO_2A13
RST PRINT_LN
IN A,(FDC_93.Track)
CALL AUTO_1DA3
LD HL,AUTO_2A18
RST PRINT_LN
IN A,(FDC_93.Sector)
CALL AUTO_1DA3
LD HL,AUTO_29FE
RST PRINT_LN
AUTO_3F7B:
CALL AUTO_1052
CP 'I'
RET Z
CP 'R'
JR Z,AUTO_3F94
CP 'A'
JR NZ,AUTO_3F7B
CALL set_error_26
LD A,7
LD (ZX_VARS.DOS_ERR_2),A
JP AUTO_01D3
AUTO_3F94:
LD A,(ZX_VARS.CONT_TRK)
CALL Global_trk
CALL pause_750ms
JP AUTO_3F13
AUTO_3FA0:
DEC D
JP Z,AUTO_3F48
PUSH DE
CALL get_disk_time
AND 2
JR NZ,AUTO_3FAD
INC (HL)
AUTO_3FAD:
CALL AUTO_3D98
LD A,(ZX_VARS.CONT_TRK)
CALL Global_trk
POP DE
JP AUTO_3F15
;******************************************
; Sector Write !!!
;******************************************
AUTO_3FBA:
LD B,4
AUTO_3FBC:
IN A,(FDC_93.DrvCTRL)
AND 192
JR NZ,AUTO_3FD1
INC DE
LD A,E
OR D
JR NZ,AUTO_3FBC
DJNZ AUTO_3FBC
RET
AUTO_3FCA:
IN A,(FDC_93.DrvCTRL)
AND 192
JR Z,AUTO_3FCA
RET M
AUTO_3FD1:
OUTI
JR AUTO_3FCA
;******************************************
; Sector Read !!!
;******************************************
AUTO_3FD5:
LD B,4
AUTO_3FD7:
IN A,(FDC_93.DrvCTRL)
AND 192
JR NZ,AUTO_3FEC
INC DE
LD A,E
OR D
JR NZ,AUTO_3FD7
DJNZ AUTO_3FD7
RET
AUTO_3FE5:
IN A,(FDC_93.DrvCTRL)
AND 192
JR Z,AUTO_3FE5
RET M
AUTO_3FEC:
INI
JR AUTO_3FE5
;******************************************
;[x]] ¯®¯à ¢«¥­ë ­®¬¥à  ä㭪権 ¯à¨ ¢ë§®¢ å API ¨ ¯à룠¥â áà §ã ¢ BIOS ç¥à¥§ #3FF8
;-------[ From TR-DOS to API 4x ]-------
BLOCK #3FF0-$, #FF
HD_CMD: PUSH AF
DI
;LD A,SYS_PORT.EXTENSION
LD A,1
OUT (SYS_PORT.ROM),A
POP AF
RET
;---------------------------------------
;
;----[ From TR-DOS to API #80..#FF]-----
BLOCK #3FF8-$, #FF
EXP_FNS:;!TEST 06/01/2024 á®å࠭塞 á®áâ®ï­¨¥ ¯à¥à뢠­¨© § ç¥¬-â®
;PUSH AF
;DI ;!TODO ¯®¤ã¬ âì, ª ª á®åà ­ïâì á®áâ®ï­¨¥ ¯à¥à뢠­¨© ¨ ­¨ç¥£® ­¥ á«®¬ âì
;XOR A ; SYS_PORT.BIOS
JP EXP_FNS_PREPARE
EXP_FNS_PREPARE_RET:
;
OUT (SYS_PORT.ROM),A
POP AF
RET
;---------------------------------------
;
;
BLOCK #4000-$, #FF
DISPLAY "16k..ALL!"
;