mirror of
https://github.com/Tolik-Trek/ZX-SP-ROMs.git
synced 2026-06-15 09:21:45 +03:00
7227 lines
122 KiB
NASM
7227 lines
122 KiB
NASM
;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
||
;º TR-DOS ver. 5.04Em ³ ELSY Co. 23.11.95 º
|
||
;ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ
|
||
;º RE-SOURCE'd by Z80MU PROFESSIONAL version 5.2b º
|
||
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
|
||
;!TODO ¨á¯®«ì§®¢ âì ¢¥è¨¥ ¯®àâë #E0 ¨ #E3 ¤«ï á®åà ¥¨ï ॣ¨áâ஢ ¯à¨ ¯¥à¥å¢ ⥠¢á直å #3D2F
|
||
|
||
; [ ] boot loader from TR-DOS vROM
|
||
DEFINE DEFtrd_boot_small 0
|
||
LUA PASS1
|
||
-- --define
|
||
local sjasmplus_run = "sjasmplus --nologo --syntax=f --fullpath --color=on --exp=trdos/boot/boot.inc --lst=Build/boot.lst --raw=Build/boot.bin trdos/boot/boot.asm --define DEFtrd_boot_small=" .. sj.get_define("DEFtrd_boot_small")
|
||
compiling_boot = (os.execute(sjasmplus_run))
|
||
if compiling_boot then
|
||
print("--[ BOOT Build OK ]--")
|
||
else
|
||
print("--[ BOOT Build ERROR!!! ]--")
|
||
os.exit(1)
|
||
end
|
||
ENDLUA
|
||
|
||
|
||
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'
|
||
INCLUDE 'Shared_Includes/constants/ZX_VARS.inc'
|
||
INCLUDE 'Shared_Includes/macroses/macros.z80'
|
||
MODULE vROM_Boot
|
||
INCLUDE 'trdos/boot/boot.inc'
|
||
ENDMODULE
|
||
|
||
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_5E34 EQU #5E34
|
||
AUTO_5F00 EQU #5F00
|
||
AUTO_5F10 EQU #5F10
|
||
AUTO_5F12 EQU #5F12
|
||
PORT_128 EQU #7FFD
|
||
AUTO_A1DB EQU #A1DB
|
||
AUTO_B0ED EQU #B0ED
|
||
AUTO_C000 EQU #C000
|
||
AUTO_C130 EQU #C130
|
||
|
||
;****************************************
|
||
START: DI
|
||
LD DE,#FFFF
|
||
LD A,7
|
||
JR CONT_1
|
||
RST08: NOP
|
||
CONT_1: OUT (#FE),A
|
||
LD A,'?'
|
||
JR CONT_2
|
||
|
||
////////////////////////////////////////////////////////////////////////
|
||
_mInfoBLOCK #10-$,0
|
||
RST10:
|
||
JP PRINT_SYM
|
||
////////////////////////////////////////////////////////////////////////
|
||
|
||
CONT_2:
|
||
LD I,A
|
||
JP CONT_3
|
||
|
||
////////////////////////////////////////////////////////////////////////
|
||
_mInfoBLOCK #18-$,0
|
||
PRINT_LN:
|
||
JP PRINT_L
|
||
CONT_3:
|
||
NOP
|
||
NOP
|
||
NOP
|
||
AUTO_001E:
|
||
JR CONT_4
|
||
|
||
////////////////////////////////////////////////////////////////////////
|
||
_mInfoBLOCK #20-$,0
|
||
RST20:
|
||
JP RST20_EXE
|
||
RET
|
||
////////////////////////////////////////////////////////////////////////
|
||
|
||
CONT_4:
|
||
LD H,D
|
||
LD L,E
|
||
JR CONT_5
|
||
|
||
////////////////////////////////////////////////////////////////////////
|
||
_mInfoBLOCK #28-$,0
|
||
RST28:
|
||
JP RST28_EXE
|
||
////////////////////////////////////////////////////////////////////////
|
||
|
||
CONT_5:
|
||
LD (HL),2
|
||
DEC HL
|
||
CP H
|
||
JR NZ,CONT_5
|
||
JR CONT_6
|
||
|
||
////////////////////////////////////////////////////////////////////////
|
||
|
||
REDIR_RST38:
|
||
_mInfoBLOCK #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 ;ª®¤ ª®¬ ¤ë LDDR
|
||
AUTO_0064:
|
||
JR CONT_8
|
||
////////////////////////////////////////////////////////////////////////
|
||
|
||
|
||
////////////////////////////////////////////////////////////////////////
|
||
_mInfoBLOCK #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 ;!FIXIT check disasm
|
||
LD (ZX_VARS.ERR_BEEP),BC
|
||
LD (ZX_VARS.TOP_CLEAR),HL
|
||
LD HL,#3C00
|
||
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,#15AF ;!HARDCODE ¤à¥á ®¡« á⨠®¯¨á ⥫¥© ª «®¢ ¢ <20>‡“ ¡¥©á¨ª
|
||
LD BC,#15
|
||
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
|
||
LD (HL),"\r"
|
||
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,#15C6
|
||
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 BASIC_FN.x48.clear_prb
|
||
LD HL,ZX_VARS.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 BASIC_FN.x48.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 BASIC_FN.x48.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:;!TODO
|
||
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,TRDOS_CMD.LIST.Size
|
||
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)
|
||
|
||
|
||
|
||
; [x] 13/06/2025 boot loader from TR-DOS vROM
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
; PREPARE_TO_vROM_BOOT:
|
||
; LD A,(ZX_VARS.RUN_AUTO_BOOT)
|
||
; AND A ; ¯à¨§ ª ¯®¯ë⪨ § ¯ã᪠boot ª®¬ ¤®© RUN ¡¥§ ¯ à ¬¥â஢
|
||
; JP Z,AUTO_03D9
|
||
; ;
|
||
; DI
|
||
; JP vROM_BOOT
|
||
|
||
vROM_BOOT: LD HL,(ZX_VARS.ADR_RET)
|
||
LD (ZX_VARS.FL_START),HL ; ¢à¥¬¥® á®åà 塞 ADR_RET
|
||
LD HL,vROM_BOOT.continue ; ¤à¥á ¢®§¢à â ¨§ AUTO_01D3
|
||
LD (ZX_VARS.ADR_RET),HL
|
||
JP AUTO_01D3
|
||
;
|
||
;vROM_BOOT:
|
||
.continue: LD HL,(ZX_VARS.FL_START)
|
||
LD (ZX_VARS.ADR_RET),HL ; ¢®ááâ ¢«¨¢ ¥¬ ADR_RET
|
||
;
|
||
IF DEFtrd_boot_small
|
||
LD HL,BOOT_PART_1.SIZE + BOOT_PART_2.SIZE
|
||
ELSE
|
||
LD HL,BOOT_PART_1.SIZE + BOOT_PART_2.SIZE + BOOT_PART_3.SIZE
|
||
ENDIF
|
||
LD (ZX_VARS.FL_START),HL ; ¤«¨ ¯à®£à ¬¬ë á ¯¥à¥¬¥ë¬¨.
|
||
LD (ZX_VARS.FL_LEN),HL ; ¤«¨ ¯à®£à ¬¬ë á ¯¥à¥¬¥ë¬¨.
|
||
;
|
||
CALL AUTO_1A01 ; <20>®¤£®â®¢ª ª § £à㧪¥ ¯à®£à ¬¬ë ¡¥©á¨ª¥.
|
||
;
|
||
LD HL,.LoadAddr
|
||
LD (ZX_VARS.BAS_PROG),HL ; ¤à¥á ç « ¯à®£à ¬¬ë ¡¥©á¨ª¥.
|
||
; loading
|
||
LD HL,BOOT_PART_1
|
||
LD DE,.LoadAddr
|
||
LD BC,BOOT_PART_1.SIZE
|
||
LDIR
|
||
LD HL,BOOT_PART_2
|
||
LD BC,BOOT_PART_2.SIZE
|
||
LDIR
|
||
IFN DEFtrd_boot_small
|
||
LD HL,BOOT_PART_3
|
||
LD BC,BOOT_PART_3.SIZE
|
||
LDIR
|
||
ENDIF
|
||
|
||
LD HL,vROM_Boot.StartLineNum
|
||
LD (ZX_VARS.E_LINE),HL
|
||
;
|
||
EI
|
||
JP AUTO_012A
|
||
;
|
||
.LoadAddr EQU vROM_Boot.org_addr ;#5D3B
|
||
.StartAddr EQU vROM_Boot.org_addr ;#5D3B
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
;-----------------------------------------------------------------------
|
||
_mInfoBLOCK #03AC-$,#FF
|
||
; 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_2723
|
||
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.WORK_SPACE.Size
|
||
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.WORK_SPACE.Size
|
||
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:
|
||
_mInfoBLOCK #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
|
||
;**************************************
|
||
|
||
|
||
;**************************************
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
; [x] 13/06/2025 boot loader from TR-DOS vROM
|
||
IFN DEFtrd_boot_small
|
||
BOOT_PART_3: INCBIN 'build/boot.bin',429
|
||
.SIZE EQU $-BOOT_PART_3
|
||
ENDIF
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
;**************************************
|
||
|
||
|
||
;**************************************
|
||
;INCLUDE 'trdos/tr_HDD_4.asz'
|
||
; _mInfoBLOCK #0840-$,255
|
||
INCLUDE 'trdos/tr_msd_3.asz'
|
||
|
||
|
||
; _mInfoBLOCK #0B00-$,255
|
||
;!TODO russian charset
|
||
;ZG_RUS: DB 3 ; ¨¤¥â¨ä¨ª â®à ¢¥àᨨ TR-DOS ???
|
||
;**************************************
|
||
;INCLUDE 'trdos/tr_msd_2.asz'
|
||
|
||
; DSS 0E00h,255
|
||
|
||
;**************************************
|
||
;!TODO russian charset
|
||
; <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_HDD_4.asz'
|
||
_mInfoBLOCK #1000 - $,255
|
||
|
||
;**************************************
|
||
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 BASIC_FN.x48.key_scan
|
||
;AUTO_1059:
|
||
LD C,0
|
||
JR NZ,AUTO_1056
|
||
RST_ROM BASIC_FN.x48.key_test
|
||
JR NC,AUTO_1056
|
||
DEC D
|
||
LD E,A
|
||
RST_ROM BASIC_FN.x48.key_decode
|
||
POP DE
|
||
POP BC
|
||
POP HL
|
||
AND %1101'1111
|
||
EI
|
||
RET
|
||
AUTO_106E:
|
||
LD HL,#58E8 ; ¤à¥á «¨¨¨ âਡã⮢
|
||
LD B,10
|
||
AUTO_1073:
|
||
LD (HL),7
|
||
INC HL
|
||
DJNZ AUTO_1073
|
||
LD (HL),2
|
||
INC HL
|
||
LD (HL),#16
|
||
INC HL
|
||
LD (HL),#34
|
||
INC HL
|
||
LD (HL),#25
|
||
INC HL
|
||
LD (HL),#28
|
||
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 16 + 1
|
||
JP NC,CMD_ERROR
|
||
CALL AUTO_1D84
|
||
LD A,#FF
|
||
LD (ZX_VARS.DISK_1_FLG),A
|
||
CALL AUTO_1151 ; !FIXIT ¢ë¤¥«ï¥â ¯ ¬ïâì, ® ¥ ®á¢®¡®¦¤ ¥â
|
||
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,8
|
||
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.WORK_SPACE.Size
|
||
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.WORK_SPACE.Size
|
||
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
|
||
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.WORK_SPACE.Size
|
||
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.WORK_SPACE.Size
|
||
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 BASIC_FN.x48.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.WORK_SPACE.Size),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.WORK_SPACE.Size)
|
||
SUB 9
|
||
LD (ZX_VARS.WORK_SPACE.Size),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.WORK_SPACE.Size)
|
||
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,8
|
||
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.WORK_SPACE.Size
|
||
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.WORK_SPACE.Size
|
||
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
|
||
;
|
||
;
|
||
;
|
||
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:
|
||
; [x] 13/06/2025 boot loader from TR-DOS vROM
|
||
;JP NZ,AUTO_03D9
|
||
JP NZ,PREPARE_TO_vROM_BOOT
|
||
;
|
||
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 BASIC_FN.x48.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 BASIC_FN.x48.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 BASIC_FN.x48.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 BASIC_FN.x48.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 ZX_Token.screen_dollar
|
||
JR NZ,AUTO_1B0D
|
||
LD HL,AUTO_4000 ; ç «® ä ©« - #4000
|
||
LD (#5CD7),HL
|
||
LD HL,#1B00 ;¥£® ¤«¨ - #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 BASIC_FN.x48.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 BASIC_FN.x48.chan_open
|
||
RET
|
||
OPEN_CH2:
|
||
LD A,2
|
||
JR AUTO_1D84
|
||
AUTO_1D8C:
|
||
RST_ROM BASIC_FN.x48.get_char
|
||
;AUTO_1D8F:
|
||
RET
|
||
|
||
GET_CMD:
|
||
CALL OPEN_CH0
|
||
RST_ROM BASIC_FN.x48.editor
|
||
RET
|
||
AUTO_1D97:
|
||
RST_ROM BASIC_FN.x48.cls
|
||
RET
|
||
AUTO_1D9B:
|
||
RST_ROM BASIC_FN.x48.look_vars
|
||
RET
|
||
AUTO_1D9F:
|
||
RST_ROM BASIC_FN.x48.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 BASIC_FN.x48.out_num_1
|
||
CALL xchg_intf1
|
||
RET
|
||
BAS_2BF1:
|
||
RST_ROM BASIC_FN.x48.stack_fetch
|
||
RET
|
||
AUTO_1DB9:
|
||
RST_ROM BASIC_FN.x48.find_int2
|
||
RET
|
||
AUTO_1DBD:
|
||
RST_ROM BASIC_FN.x48.expt_exp
|
||
RET
|
||
AUTO_1DC1:
|
||
RST_ROM BASIC_FN.x48.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 BASIC_FN.x48.remove_fp
|
||
RET
|
||
AUTO_1E23:
|
||
LD HL,(ZX_VARS.WORK_SPACE)
|
||
RST_ROM BASIC_FN.x48.bc_spaces
|
||
AUTO_1E29:
|
||
RET
|
||
BASIC_RST20:
|
||
RST_ROM BASIC_FN.x48.next_char
|
||
AUTO_1E2D:
|
||
RET
|
||
AUTO_1E2E:
|
||
RST_ROM BASIC_FN.x48.reclaim_2
|
||
RET
|
||
AUTO_1E32:
|
||
RST_ROM BASIC_FN.x48.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>… ¨á¯. !!!
|
||
_mInfoBLOCK #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,8
|
||
LD (HL),' '
|
||
LDIR
|
||
LD HL,ZX_VARS.FL_NAME
|
||
LD DE,ZX_VARS.DISK_NAME
|
||
LD BC,8
|
||
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:
|
||
;€¤à¥á #1FB9. ’ ¡«¨æ ᥪâ®à®¢ ¤«ï ä®à¬ â¨à®¢ ¨ï ®¡ë箣® ¤¨áª . ˆá¯®«ì§ã¥âáï â ª¦¥ á ¤à¥á #1FBA ¤«ï ¯à®¢¥àª¨ ¤®à®¦ª¨.
|
||
DB 1
|
||
DB 9,2,#A,3,#B,4,#C,5,#D,6,#E,7,#F,8,#10,1
|
||
|
||
test_d_traks:
|
||
CALL get_disk_time
|
||
OR 17
|
||
LD B,A
|
||
LD A,#32
|
||
CALL Goto_trk
|
||
LD A,2
|
||
CALL Goto_trk
|
||
CALL pause_50ms
|
||
IN A,(FDC_93.Command)
|
||
AND 4
|
||
LD A,#50
|
||
JR Z,AUTO_1FE7
|
||
LD A,#28
|
||
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 #F4
|
||
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,#2D
|
||
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 ;!FIXIT § 祬 ¢¬¥áâ® #1D90 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 BASIC_FN.x48.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 BASIC_FN.x48.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,BASIC_FN.x48.ed_error ;48 basic routine
|
||
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 BASIC_FN.x48.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 BASIC_FN.x48.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
|
||
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,20
|
||
LDIR
|
||
RET
|
||
;
|
||
; TEST 128/48 ROM ¯à®£à ¬¬ ¢ RAM !!!
|
||
;
|
||
AUTO_2A41:
|
||
LD A,(AUTO_03B5)
|
||
CP #F3
|
||
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
|
||
;[x] fixing port #1F to #0F
|
||
OUT (C),A
|
||
RET
|
||
;JP Port_1F_Fix
|
||
;
|
||
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,8
|
||
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,8
|
||
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,#3C
|
||
OUT (FDC_93.DrvCTRL),A
|
||
CALL AUTO_2F65
|
||
LD HL,AUTO_4000
|
||
LD DE,8
|
||
LD B,1
|
||
CALL AUTO_2F1B
|
||
POP DE
|
||
LD HL,(AUTO_40E1)
|
||
LD (AUTO_40E1),DE
|
||
PUSH HL
|
||
LD HL,AUTO_4000
|
||
LD DE,8
|
||
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,8
|
||
CALL AUTO_2F1B
|
||
RET
|
||
AUTO_2D34:
|
||
LD HL,AUTO_4000
|
||
LD DE,8
|
||
CALL AUTO_2D73
|
||
RET
|
||
AUTO_2D3E:
|
||
CALL AUTO_2F65
|
||
LD C,D
|
||
CALL AUTO_2F3A
|
||
LD HL,AUTO_C000
|
||
LD B,#40
|
||
JR AUTO_2D58
|
||
AUTO_2D4C:
|
||
CALL AUTO_2F65
|
||
LD C,D
|
||
CALL AUTO_2F3A
|
||
LD HL,AUTO_4000
|
||
LD B,#C0
|
||
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 (BorderColor),A
|
||
LD A,(ZX_VARS.SWAP_ROM_PRESENCE) ;¡¥à¥¬ ¡ ©â ¨§ #5B08
|
||
CP #EE ;â ¬ #EE? ®¯ª®¤ XOR ¢ ¯à®æ¥¤ãॠ¯¥à¥ª«îç¥¨ï ¡ ®ª ROM Basic 48<->128
|
||
;Žè¨¡ª !!! —¨á«® #EE ¯® ¤à¥áã #5B08 ¥é¥ ¨ ® 祬 ¥ £®¢®p¨â.
|
||
JR NZ,AUTO_2EF7 ;¥á«¨ ¥â, â® á¨á⥬ëå ¯¥à¥¬¥ëå 128Š ¥â
|
||
PUSH BC
|
||
LD BC,PORT_128
|
||
LD A,(ZX_VARS.COPY_P128)
|
||
OUT (C),A
|
||
POP BC
|
||
AUTO_2EF7:
|
||
LD A,(ZX_VARS.K_STATE) ;¡¥à¥¬ ä« £ ¯à¥àë¢ ¨©
|
||
OR A
|
||
LD A,#C9 ;ãáâ ®¢ª ¯¥à¥ª«îç ⥫ï <20>‡“ ¡¥©á¨ª
|
||
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 #3C
|
||
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 '/'
|
||
;
|
||
.LIST.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 BASIC_FN.x48.differ
|
||
PUSH BC
|
||
RST_ROM BASIC_FN.x48.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 BASIC_FN.x48.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
|
||
;
|
||
;
|
||
;
|
||
_mInfoBLOCK #31F3 - $,255
|
||
AUTO_31F3:
|
||
LD HL,(ZX_VARS.CHANS)
|
||
OR A
|
||
LD BC,ZX_VARS.BUFFER
|
||
SBC HL,BC
|
||
RET
|
||
|
||
|
||
_mInfoBLOCK #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 BASIC_FN.x48.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 BASIC_FN.x48.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: ;!FIXIT § 祬 ¢¬¥áâ® #1D90 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 #15D4
|
||
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 #0F58
|
||
JR EDIT_X01
|
||
EDIT_X03:
|
||
RST RST20 ; áâ ¤. ¢¢®¤ ¢ ¡ãä¥à । ªâ¨à®¢ ¨ï
|
||
DW #0F81
|
||
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 #0F92
|
||
JR EDIT_X01
|
||
|
||
|
||
EDIT_X05:
|
||
CALL AUTO_1D9F
|
||
JP AUTO_0239
|
||
|
||
;******************************************
|
||
|
||
;!TODO russian charset
|
||
; RUS_PRINT:
|
||
; AND #3F
|
||
; LD L,A
|
||
; LD H,0
|
||
; ADD HL,HL
|
||
; ADD HL,HL
|
||
; ADD HL,HL
|
||
; LD BC,ZG_RUS
|
||
; ADD HL,BC
|
||
; LD DE,#5C92
|
||
; LD BC,8
|
||
; LDIR
|
||
; LD A,#C9
|
||
; LD (ZX_VARS.AUTO_5C9A),A
|
||
; JP ZX_VARS.AUTO_5C9A
|
||
|
||
;**************************************
|
||
; DSS 3900H,'#'
|
||
BOOT_PART_1: INCBIN 'build/boot.bin', 0, 248
|
||
.SIZE EQU $-BOOT_PART_1
|
||
;**********************************
|
||
_mInfoBLOCK #3C00 - $,255
|
||
AUTO_3C00:
|
||
RST R38
|
||
JR AUTO_3C06
|
||
RST R38
|
||
JR AUTO_3C09
|
||
;
|
||
;
|
||
_mInfoBLOCK #3C06 - $,255
|
||
AUTO_3C06:
|
||
JP AUTO_3D00
|
||
;
|
||
;
|
||
_mInfoBLOCK #3C09 - $,255
|
||
AUTO_3C09:
|
||
JP AUTO_3D03
|
||
|
||
;************************************
|
||
;!FIXIT not used
|
||
_mInfoBLOCK #3C10 - $,255
|
||
;KBD_EXP:
|
||
LD A,CNF_PORT.ZX_BIOS
|
||
OUT (CNF_PORT.ON),A
|
||
RET
|
||
;
|
||
;************************************
|
||
;!FIXIT not used
|
||
_mInfoBLOCK #3C18 - $,255
|
||
;KBD_OFF:
|
||
LD A,CNF_PORT.ZX_BIOS
|
||
OUT (CNF_PORT.ON),A
|
||
RET
|
||
;************************************
|
||
|
||
////////////////////////////////////////////////////////////////////////
|
||
; Port_1F_Fix_JP:
|
||
; JP Port_1F_Fix_2
|
||
////////////////////////////////////////////////////////////////////////
|
||
|
||
;************************************
|
||
;!FIXIT not used
|
||
_mInfoBLOCK #3C20 - $,255
|
||
READR_X:
|
||
CALL get_disk_time
|
||
LD B,A
|
||
JP set_side_0
|
||
;************************************
|
||
|
||
////////////////////////////////////////////////////////////////////////
|
||
; Port_1F_Fix:
|
||
; OUT (CELL_PORT.TMP_1),A
|
||
; LD A,C
|
||
; OUT (CELL_PORT.TMP_2),A
|
||
; IN A,(CELL_PORT.TMP_1)
|
||
; JR Port_1F_Fix_JP
|
||
////////////////////////////////////////////////////////////////////////
|
||
|
||
;************************************
|
||
;!FIXIT not used
|
||
_mInfoBLOCK #3C30 - $,255
|
||
IN A,(FDC_93.Command)
|
||
RET
|
||
|
||
;*****************************
|
||
|
||
NEW_NAME:
|
||
DB 22,1,3, "* Sprinter TR-DOS v.7.03 *"
|
||
DB 22,3,6, "(c) 2025 Sprinter Team"
|
||
DB 22,5,14, "*R.F.*"
|
||
DB 22,7,9, "BETA 4Mb",0
|
||
|
||
;*****************************
|
||
|
||
;FORMATER:
|
||
; LD HL,TX_FORMAT
|
||
; LD DE,(ZX_VARS.E_LINE)
|
||
; 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
|
||
;*******************************
|
||
_mInfoBLOCK #3CC0 - $,255
|
||
MAGIC_1:
|
||
PUSH AF
|
||
LD A,CNF_PORT.ZX_BIOS
|
||
OUT (CNF_PORT.ON),A
|
||
POP AF
|
||
JP MAGIC_2
|
||
;*******************************
|
||
_mInfoBLOCK #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 BASIC_FN.x48.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
|
||
;
|
||
|
||
; [x] 13/06/2025 boot loader from TR-DOS vROM
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
PREPARE_TO_vROM_BOOT:
|
||
LD A,(ZX_VARS.RUN_AUTO_BOOT)
|
||
AND A ; ¯à¨§ ª ¯®¯ë⪨ § ¯ã᪠boot ª®¬ ¤®© RUN ¡¥§ ¯ à ¬¥â஢
|
||
JP Z,AUTO_03D9
|
||
DI
|
||
JP vROM_BOOT
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
;*****************************
|
||
_mInfoBLOCK #3CFA - $,255
|
||
AUTO_3CFA:
|
||
JP xchg_intf1
|
||
|
||
;****** 3D13 redirection ******
|
||
_mInfoBLOCK #3CFD - $,255
|
||
AUTO_3CFD:
|
||
JP REDIR_3D13
|
||
; JP AUTO_283C
|
||
;***********************************************************************;
|
||
_mInfoBLOCK #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 !!! ****
|
||
_mInfoBLOCK #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,ZX_VARS.PROG.MAKE_ROOM
|
||
PUSH HL
|
||
LD HL,ZX_VARS.TSTACK
|
||
PUSH HL
|
||
LD (HL),#C9 ; RET code
|
||
LD HL,ZX_VARS.P_RAMTOP+1
|
||
LD BC,CONT_8+7
|
||
RET
|
||
PRINT_CR:
|
||
LD A,#0D ; enter
|
||
PRINT_SYM:
|
||
JP PRINT_RED
|
||
|
||
////////////////////////////////////////////////////////////////////////
|
||
; Port_1F_Fix_2:
|
||
; RES 4,C
|
||
; OUT (C),A
|
||
; IN A,(CELL_PORT.TMP_2)
|
||
; LD C,A
|
||
; IN A,(CELL_PORT.TMP_1)
|
||
; RET
|
||
////////////////////////////////////////////////////////////////////////
|
||
|
||
;=======================================================================
|
||
|
||
_mInfoBLOCK #3D8F-$,#FF ; •…<E280A2>
|
||
DW 0000 ; ‡<>€…’
|
||
_mInfoBLOCK 3,#FF ; ‡€—…Œ
|
||
|
||
;=======================================================================
|
||
;!TODO russian charset
|
||
; PRINT_CR:
|
||
; LD A,#0D ; enter
|
||
; PRINT_SYM:
|
||
; CP #80
|
||
; JP C,PRINT_RED
|
||
; JP RUS_PRINT
|
||
;=======================================================================
|
||
|
||
|
||
AUTO_3D94:
|
||
RST_ROM BASIC_FN.x48.print_a
|
||
RET
|
||
AUTO_3D98:
|
||
LD A,8
|
||
WG93_EXE:
|
||
OUT (FDC_93.Command),A
|
||
AUTO_3D9C:
|
||
PUSH HL
|
||
RST_ROM BASIC_FN.x48.break_key
|
||
;RET_1F54:
|
||
JR C,AUTO_3DA5
|
||
RST_ROM BASIC_FN.x48.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,#3C
|
||
OR C
|
||
OUT (FDC_93.DrvCTRL),A
|
||
LD (HL),A
|
||
CALL get_disk_time
|
||
AND #80
|
||
JR Z,AUTO_3DFA
|
||
CALL RESET_WG
|
||
CALL test_disk
|
||
CALL get_disk_type
|
||
CP #FF
|
||
JR NZ,AUTO_3DFA
|
||
PUSH HL
|
||
CALL test_d_traks
|
||
POP HL
|
||
CP #50
|
||
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 ; #50
|
||
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 ]-------
|
||
_mInfoBLOCK #3FF0-$, #FF
|
||
HD_CMD: PUSH AF
|
||
DI
|
||
LD A,SYS_PORT.EXTENSION
|
||
OUT (SYS_PORT.ROM),A
|
||
POP AF
|
||
RET
|
||
;---------------------------------------
|
||
|
||
;
|
||
;----[ From TR-DOS to API #80..#FF]-----
|
||
_mInfoBLOCK #3FF8-$, #FF
|
||
EXP_FNS: JP EXP_FNS_PREPARE
|
||
EXP_FNS_PREPARE_RET:
|
||
OUT (SYS_PORT.ROM),A
|
||
POP AF
|
||
RET
|
||
;---------------------------------------
|
||
;
|
||
|
||
;
|
||
_mInfoBLOCK #4000-$, #FF
|
||
;
|
||
DISPLAY "\n\rNEW RAMDRV READ = ",/D,NEW_RAMDRV_READ
|
||
; |