Current Directory

This commit is contained in:
Anatoliy Belyanskiy 2023-10-15 03:34:27 +10:00
parent 66c77848ed
commit 2df0b56e56
4 changed files with 169 additions and 370 deletions

View File

@ -561,8 +561,6 @@ F_NEXT:
;
;
////////////////////////////////////////////////////////////////////////
;!TODO ᤥ« âì ¤«ï ª ¦¤®£® ¤à ©¢  § ¯®¬¨­ ­¨¥ ⥪ã饩 ¤¨à४â®à¨¨, ¯®ª  âãâ § £«ã誠
; RestoreDIR:
CHNDISK_FN:
CALL CHNDISK
RET C
@ -577,8 +575,6 @@ CHNDISK:
;
;????? R10
RET C
;LD HL,CurrentDirectory+1
;LD HL,CurrentDirectory
LD HL,WorkDirectory
LD (HL),0
PUSH AF
@ -1553,6 +1549,8 @@ GETWORD:
INC HL
CP '\'
JR Z,.DIR_NAME
; AND A
; JR Z,.DIR_NAME
;CP ':'
;JR Z,.DRV_NAME
LD (DE),A
@ -1760,17 +1758,18 @@ FINDDIR:
;LD BC,CurrentDirectory.DEPTH-1
LD HL,WorkDirectory+1
LD BC,WorkDirectory.DEPTH-1
XOR A
CPIR ;!FIXIT ­¥â ¯à®¢¥àª¨ ­  § ¢¥à襭¨¥ ¯® BC=0
DEC HL
DEC HL
LD A,'\' ; #5C
CP (HL)
INC HL
JR Z,.ADDSPE0
LD (HL),A
INC HL
.ADDSPE0:
; XOR A
; CPIR ;!FIXIT ­¥â ¯à®¢¥àª¨ ­  § ¢¥à襭¨¥ ¯® BC=0
; DEC HL
; DEC HL
; LD A,'\' ; #5C
; CP (HL)
; INC HL
; JR Z,.ADDSPE0
; LD (HL),A
; INC HL
; .ADDSPE0:
CALL .CHECK_SLASH
;R11
LD A,B
AND A
@ -1815,6 +1814,18 @@ FINDDIR:
OUT (SLOT3),A
AND A
RET
.CHECK_SLASH:
XOR A
CPIR ;!FIXIT ­¥â ¯à®¢¥àª¨ ­  § ¢¥à襭¨¥ ¯® BC=0
DEC HL
DEC HL
LD A,'\' ; #5C
CP (HL)
INC HL
RET Z
LD (HL),A
INC HL
RET
;----------------------------------------------------------------------;
@ -2099,7 +2110,10 @@ DIR_PATH_CHECK: LD A,(HL)
CP ':'
RET Z
;
.forceCheck: CALL .checkDrive
.forceCheck: LD HL,CurrentDirectory+1
LD BC,CurrentDirectory.DEPTH-1
CALL FINDDIR.CHECK_SLASH
CALL .checkDrive
JR Z,.checkDir
;
LD HL,CurrentPath
@ -2122,7 +2136,7 @@ DIR_PATH_CHECK: LD A,(HL)
JR .ReDir
.end: CP (HL)
RET Z
.ReDir: LD HL,CurrentDirectory
.ReDir: LD HL,CurrentPath
JP GETWORD
;
.checkDrive: LD HL,CurrentPath

View File

@ -671,18 +671,18 @@ ABSOLUTE_DIR EQU 1
FINDPATH:
SET_PAGE_X ENVPAGE
PUSH AF
CALL CURRDSK_FN
ADD A,"A"
LD HL,TMP_CURDIR
LD (HL),A
INC HL
LD A,":"
LD (HL),A
INC HL
CALL CURRDIR_FN
CALL MAKE_PATH_ARRAY
;!TEST
;CALL CURRDSK_FN
;ADD A,"A"
;LD HL,TMP_CURDIR
;LD (HL),A
;INC HL
;LD A,":"
;LD (HL),A
;INC HL
;CALL CURRDIR_FN
;
CALL .MAKE_PATH_ARRAY
LD HL,PATH_PNT_ARRAY
.NEXTPATHI:
LD E,(HL)
@ -694,8 +694,8 @@ FINDPATH:
PUSH HL
PUSH BC
EX DE,HL
CALL Z,GOTO_CURDIR
CALL CHDIR
CALL Z,.GOTO_CURDIR
CALL NZ,CHDIR
JR C,.BADPATH
LD HL,CORE_BUFFERS.EXEBUFF
LD DE,MASKARE
@ -716,19 +716,21 @@ FINDPATH:
OUT (SLOT3),A
LD A,DSS_Error.sys.PATH_NOT_FOUND
RET
GOTO_CURDIR:
.GOTO_CURDIR:
PUSH AF
PUSH HL
LD HL,TMP_CURDIR
;LD HL,TMP_CURDIR
LD HL,CurrentDirectory
CALL CHDIR
POP HL
POP AF
RET
MAKE_PATH_ARRAY:
.MAKE_PATH_ARRAY:
LD HL,PATH_PNT_ARRAY-1 ;R04 -1
LD DE,ENVTEMP-1
LD B,#00
NEXTAR: LD (HL),C ;R04
.NEXTAR:
LD (HL),C ;R04
INC HL ;R04
XOR A
LD (DE),A
@ -741,21 +743,25 @@ NEXTAR: LD (HL),C ;R04
;R04 LD (HL),C
;R04 INC HL
INC B
NEXTRT: LD A,(DE)
.NEXTRT:
LD A,(DE)
CP '\'
JR NZ,NEXTCH
NEXTDR: SET ABSOLUTE_DIR,C
NEXTRL: ;SET RELATIVE_DIR,C ;!TODO ????
NEXTCH: LD A,(DE)
JR NZ,.NEXTCH
.NEXTDR:
SET ABSOLUTE_DIR,C
.NEXTRL:
;SET RELATIVE_DIR,C ;!TODO ????
.NEXTCH:
LD A,(DE)
CP ";"
JR Z,NEXTAR
JR Z,.NEXTAR
INC DE
; CP "."
; JR Z,NEXTRL
CP ":"
JR Z,NEXTRT
JR Z,.NEXTRT
OR A
JR NZ,NEXTCH
JR NZ,.NEXTCH
LD (HL),C ;R04
INC HL ;R04
LD (HL),A
@ -953,93 +959,6 @@ NOINK: LD A,H
LD HL,_RET_1
LD (_ret),HL
JP _TST_PROC
/*
;!FIXIT double 1
CALL GETMEM
JP C,ERREXE0
LD (EXE_MEM),A
EXX
POP DE ;á­¨¬ ¥¬ á® á⥪   ¤à¥á ¢®§¢à â 
LD HL,#0000
ADD HL,SP
LD SP,(EXSTACK)
PUSH HL
PUSH DE
IN A,(SLOT3)
LD D,A
IN A,(SLOT2)
LD E,A
IN A,(SLOT1)
PUSH DE
PUSH AF
LD (EXSTACK),SP
LD SP,HL
EXX
; <20>Ž•<C5BD><EFBFBD>Ÿ…Ÿ DE ¯¥à¥¤ ¢ë§®¢®¬ BIOS,   ¡¨®á ¯®ª  ¥£® ¨ ­¥ ¯®àâ¨â
LD A,(EXE_MEM)
LD DE,RAMMAP
LD BC,0*256 + BIOS.GetMemPage
RST ToBIOS
LD (DE),A
INC DE
LD A,(EXE_MEM)
LD BC,1*256 + BIOS.GetMemPage
RST ToBIOS
LD (DE),A
INC DE
LD A,(EXE_MEM)
LD BC,2*256 + BIOS.GetMemPage
RST ToBIOS
LD (DE),A
INC DE
LD A,(EXE_MEM)
LD BC,3*256 + BIOS.GetMemPage
RST ToBIOS
LD (DE),A
;^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^;
LD HL,(CMDLINE)
LD DE,CORE_BUFFERS.SECBUF+1
CALL SCOPYS
LD A,#80 ;!HARDCODE cmd line size
SUB B
LD (CORE_BUFFERS.SECBUF),A
;R02
LD SP,CORE_BUFFERS.EXEBUFF+510 ;‚áâ ¢«ï¥âáï ¢ SHARED_PAGE
;
LD A,SHARED_PAGE
OUT (SLOT1),A
OUT (SLOT2),A
OUT (SLOT3),A
LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
LD DE,RAMMAP
LD A,H
AND #C0
CP #40
JR Z,FR4000
CP #80
JR Z,FR8000
CP #C0
JR Z,FRC000
FR4000: LD A,(DE)
OUT (SLOT1),A
INC DE
FR8000: LD A,(DE)
OUT (SLOT2),A
INC DE
FRC000: LD A,(DE)
OUT (SLOT3),A
CALL M_PSP
LD HL,(CORE_BUFFERS.EXEBUFF.OFFCOD2)
LD IX,(CORE_BUFFERS.EXEBUFF.OFFCOD1)
LD B,Dss.Move_FP.FrStart
LD A,(EXE_FM)
CALL MOVE_FP
;R02
LD SP,#403F ;!HARDCODE STACK before start EXE. “áâ ­ ¢«¨¢ ¥âáï ª®£¤  ¢®âª­ãâë SHARED_PAGE
;
;
*/
_RET_1: LD DE,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
XOR A
@ -1053,30 +972,7 @@ _RET_1: LD DE,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
LD A,(EXE_FM) ; ¤¥áªà. ä ©« 
CALL CLOSE ; § ªàëâì ä ©«
JP _TST_PROC_2
/*
;!FIXIT double 2
;R09
;_mRestorePath
;
LD SP,(CORE_BUFFERS.EXEBUFF.SP_REG)
LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
LD DE,#0080
AND A
SBC HL,DE
EX DE,HL
LD XH,D
LD XL,E
LD HL,(CORE_BUFFERS.EXEBUFF.PC_REG)
LD DE,RETFAR ;  ¤à¥á ¯/¯ "­¥®¦¨¤ ­­®¥ § ¢¥à襭¨¥ ¯à®æ¥áá "
PUSH DE
PUSH HL
_mRestorePath
RET
;
*/
;[ ]
RETFAR: LD B,DSS_Error.sys.UNEXPECTED_APP_TRMN
JP LEAVE ; § ¢¥àè¨âì ¯à®£à ¬¬ã (¯à®æ¥áá)
@ -1133,127 +1029,16 @@ PRELOAD: EX DE,HL
NOINK2: LD HL,_RET_2
LD (_ret),HL
JR _TST_PROC
/*
;!FIXIT double 1
CALL GETMEM
JP C,ERREXE0
LD (EXE_MEM),A
EXX
POP DE
LD HL,#0000
ADD HL,SP
LD SP,(EXSTACK)
PUSH HL
PUSH DE
IN A,(SLOT3)
LD D,A
IN A,(SLOT2)
LD E,A
IN A,(SLOT1)
PUSH DE
PUSH AF
LD (EXSTACK),SP
LD SP,HL
EXX
; <20>Ž•<C5BD><EFBFBD>Ÿ…Ÿ DE ¯¥à¥¤ ¢ë§®¢®¬ BIOS,   ¡¨®á ¯®ª  ¥£® ¨ ­¥ ¯®àâ¨â
LD A,(EXE_MEM)
LD DE,RAMMAP
LD BC,#00*256 + BIOS.GetMemPage
RST ToBIOS
LD (DE),A
INC DE
LD A,(EXE_MEM)
LD BC,1*256 + BIOS.GetMemPage
RST ToBIOS
LD (DE),A
INC DE
LD A,(EXE_MEM)
LD BC,2*256 + BIOS.GetMemPage
RST ToBIOS
LD (DE),A
INC DE
LD A,(EXE_MEM)
LD BC,3*256 + BIOS.GetMemPage
RST ToBIOS
LD (DE),A
;^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^;
LD HL,(CMDLINE)
LD DE,CORE_BUFFERS.SECBUF+1
CALL SCOPYS
LD A,#80
SUB B
LD (CORE_BUFFERS.SECBUF),A
;R02
LD SP,CORE_BUFFERS.EXEBUFF+510 ;‚áâ ¢«ï¥âáï ¢ SHARED_PAGE
;
LD A,SHARED_PAGE
OUT (SLOT1),A
OUT (SLOT2),A
OUT (SLOT3),A
LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
LD DE,RAMMAP
LD A,H
AND #C0
CP #40
JR Z,FR4000H
CP #80
JR Z,FR8000H
CP #C0
JR Z,FRC000H
FR4000H: LD A,(DE)
OUT (SLOT1),A
INC DE
FR8000H: LD A,(DE)
OUT (SLOT2),A
INC DE
FRC000H: LD A,(DE)
OUT (SLOT3),A
CALL M_PSP
LD HL,(CORE_BUFFERS.EXEBUFF.OFFCOD2)
LD IX,(CORE_BUFFERS.EXEBUFF.OFFCOD1)
LD B,Dss.Move_FP.FrStart
LD A,(EXE_FM)
CALL MOVE_FP
;R02
LD SP,#403F ;!HARDCODE STACK before start EXE. “áâ ­ ¢«¨¢ ¥âáï ª®£¤  ¢®âª­ãâë SHARED_PAGE
;
;
*/
_RET_2: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR) ; ¡ãä¥à
LD DE,(CORE_BUFFERS.EXEBUFF.LOADER) ; ç¨á«® ç¨â. ¡ ©â
LD A,(EXE_FM) ; ¤¥áªà. ä ©« 
CALL READ ; ç⥭¨¥ ¨§ ä ©« 
JP _TST_PROC_2
/*
;!FIXIT double 2
;R09
;_mRestorePath
;
LD SP,(CORE_BUFFERS.EXEBUFF.SP_REG)
LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
LD DE,#0080
AND A
SBC HL,DE
EX DE,HL
LD XH,D
LD XL,E
LD HL,(CORE_BUFFERS.EXEBUFF.PC_REG)
LD DE,RETFAR
PUSH DE
PUSH HL
_mRestorePath
RET
;
*/
;-----------------------------------------------------------------------
;-------------------------------------------------------------------;[ ]
_TST_PROC:
;!FIXIT double 1
CALL GETMEM
JP C,ERREXE0
LD (EXE_MEM),A
@ -1295,7 +1080,7 @@ _TST_PROC:
LD BC,3*256 + BIOS.GetMemPage
RST ToBIOS
LD (DE),A
;^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^;
LD HL,(CMDLINE)
LD DE,CORE_BUFFERS.SECBUF+1
CALL SCOPYS
@ -1338,13 +1123,8 @@ FRC000: LD A,(DE)
LD SP,#403F ;!HARDCODE STACK before start EXE. “áâ ­ ¢«¨¢ ¥âáï ª®£¤  ¢®âª­ãâë SHARED_PAGE
;
_ret+1: JP 0
;
_TST_PROC_2:
;!FIXIT double 2
;R09
;_mRestorePath
;
LD SP,(CORE_BUFFERS.EXEBUFF.SP_REG)
LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
LD DE,#0080
@ -1360,6 +1140,11 @@ _TST_PROC_2:
_mRestorePath
PUSH IX
LD HL,CurrentDirectory
CALL CHDIR_FN
POP IX
RET
;
;-----------------------------------------------------------------------
@ -1451,7 +1236,7 @@ M_PSP: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
LD (HL),B
INC HL
;!FIXIT âãâ ¢®ááâ ­ ¢«¨¢ âì ¯à ¢¨«ì­ë© ª â «®£
CALL CURRDSK_FN
CALL CURRDSK
ADD A,'A'
LD (HL),A
INC HL
@ -1459,7 +1244,7 @@ M_PSP: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
LD (HL),A
INC HL
PUSH HL
CALL CURRDIR_FN
CALL CURRDIR
;
POP HL
XOR A

View File

@ -1 +1 @@
483
495

@ -1 +1 @@
Subproject commit a7128fd1547d624249d95fdcbbb3aaa090f90357
Subproject commit 12ce1947adb0a8d902cd6d89042fe23cb9a33c21