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: CHNDISK_FN:
CALL CHNDISK CALL CHNDISK
RET C RET C
@ -577,8 +575,6 @@ CHNDISK:
; ;
;????? R10 ;????? R10
RET C RET C
;LD HL,CurrentDirectory+1
;LD HL,CurrentDirectory
LD HL,WorkDirectory LD HL,WorkDirectory
LD (HL),0 LD (HL),0
PUSH AF PUSH AF
@ -1553,6 +1549,8 @@ GETWORD:
INC HL INC HL
CP '\' CP '\'
JR Z,.DIR_NAME JR Z,.DIR_NAME
; AND A
; JR Z,.DIR_NAME
;CP ':' ;CP ':'
;JR Z,.DRV_NAME ;JR Z,.DRV_NAME
LD (DE),A LD (DE),A
@ -1760,17 +1758,18 @@ FINDDIR:
;LD BC,CurrentDirectory.DEPTH-1 ;LD BC,CurrentDirectory.DEPTH-1
LD HL,WorkDirectory+1 LD HL,WorkDirectory+1
LD BC,WorkDirectory.DEPTH-1 LD BC,WorkDirectory.DEPTH-1
XOR A ; XOR A
CPIR ;!FIXIT ­¥â ¯à®¢¥àª¨ ­  § ¢¥à襭¨¥ ¯® BC=0 ; CPIR ;!FIXIT ­¥â ¯à®¢¥àª¨ ­  § ¢¥à襭¨¥ ¯® BC=0
DEC HL ; DEC HL
DEC HL ; DEC HL
LD A,'\' ; #5C ; LD A,'\' ; #5C
CP (HL) ; CP (HL)
INC HL ; INC HL
JR Z,.ADDSPE0 ; JR Z,.ADDSPE0
LD (HL),A ; LD (HL),A
INC HL ; INC HL
.ADDSPE0: ; .ADDSPE0:
CALL .CHECK_SLASH
;R11 ;R11
LD A,B LD A,B
AND A AND A
@ -1815,6 +1814,18 @@ FINDDIR:
OUT (SLOT3),A OUT (SLOT3),A
AND A AND A
RET 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 ':' CP ':'
RET Z RET Z
; ;
.forceCheck: CALL .checkDrive .forceCheck: LD HL,CurrentDirectory+1
LD BC,CurrentDirectory.DEPTH-1
CALL FINDDIR.CHECK_SLASH
CALL .checkDrive
JR Z,.checkDir JR Z,.checkDir
; ;
LD HL,CurrentPath LD HL,CurrentPath
@ -2122,7 +2136,7 @@ DIR_PATH_CHECK: LD A,(HL)
JR .ReDir JR .ReDir
.end: CP (HL) .end: CP (HL)
RET Z RET Z
.ReDir: LD HL,CurrentDirectory .ReDir: LD HL,CurrentPath
JP GETWORD JP GETWORD
; ;
.checkDrive: LD HL,CurrentPath .checkDrive: LD HL,CurrentPath

View File

@ -671,18 +671,18 @@ ABSOLUTE_DIR EQU 1
FINDPATH: FINDPATH:
SET_PAGE_X ENVPAGE SET_PAGE_X ENVPAGE
PUSH AF PUSH AF
;!TEST
CALL CURRDSK_FN ;CALL CURRDSK_FN
ADD A,"A" ;ADD A,"A"
LD HL,TMP_CURDIR ;LD HL,TMP_CURDIR
LD (HL),A ;LD (HL),A
INC HL ;INC HL
LD A,":" ;LD A,":"
LD (HL),A ;LD (HL),A
INC HL ;INC HL
CALL CURRDIR_FN ;CALL CURRDIR_FN
;
CALL MAKE_PATH_ARRAY CALL .MAKE_PATH_ARRAY
LD HL,PATH_PNT_ARRAY LD HL,PATH_PNT_ARRAY
.NEXTPATHI: .NEXTPATHI:
LD E,(HL) LD E,(HL)
@ -694,8 +694,8 @@ FINDPATH:
PUSH HL PUSH HL
PUSH BC PUSH BC
EX DE,HL EX DE,HL
CALL Z,GOTO_CURDIR CALL Z,.GOTO_CURDIR
CALL CHDIR CALL NZ,CHDIR
JR C,.BADPATH JR C,.BADPATH
LD HL,CORE_BUFFERS.EXEBUFF LD HL,CORE_BUFFERS.EXEBUFF
LD DE,MASKARE LD DE,MASKARE
@ -716,19 +716,21 @@ FINDPATH:
OUT (SLOT3),A OUT (SLOT3),A
LD A,DSS_Error.sys.PATH_NOT_FOUND LD A,DSS_Error.sys.PATH_NOT_FOUND
RET RET
.GOTO_CURDIR:
GOTO_CURDIR: PUSH AF
PUSH HL PUSH HL
LD HL,TMP_CURDIR ;LD HL,TMP_CURDIR
LD HL,CurrentDirectory
CALL CHDIR CALL CHDIR
POP HL POP HL
POP AF
RET RET
.MAKE_PATH_ARRAY:
MAKE_PATH_ARRAY:
LD HL,PATH_PNT_ARRAY-1 ;R04 -1 LD HL,PATH_PNT_ARRAY-1 ;R04 -1
LD DE,ENVTEMP-1 LD DE,ENVTEMP-1
LD B,#00 LD B,#00
NEXTAR: LD (HL),C ;R04 .NEXTAR:
LD (HL),C ;R04
INC HL ;R04 INC HL ;R04
XOR A XOR A
LD (DE),A LD (DE),A
@ -741,21 +743,25 @@ NEXTAR: LD (HL),C ;R04
;R04 LD (HL),C ;R04 LD (HL),C
;R04 INC HL ;R04 INC HL
INC B INC B
NEXTRT: LD A,(DE) .NEXTRT:
LD A,(DE)
CP '\' CP '\'
JR NZ,NEXTCH JR NZ,.NEXTCH
NEXTDR: SET ABSOLUTE_DIR,C .NEXTDR:
NEXTRL: ;SET RELATIVE_DIR,C ;!TODO ???? SET ABSOLUTE_DIR,C
NEXTCH: LD A,(DE) .NEXTRL:
;SET RELATIVE_DIR,C ;!TODO ????
.NEXTCH:
LD A,(DE)
CP ";" CP ";"
JR Z,NEXTAR JR Z,.NEXTAR
INC DE INC DE
; CP "." ; CP "."
; JR Z,NEXTRL ; JR Z,NEXTRL
CP ":" CP ":"
JR Z,NEXTRT JR Z,.NEXTRT
OR A OR A
JR NZ,NEXTCH JR NZ,.NEXTCH
LD (HL),C ;R04 LD (HL),C ;R04
INC HL ;R04 INC HL ;R04
LD (HL),A LD (HL),A
@ -953,93 +959,6 @@ NOINK: LD A,H
LD HL,_RET_1 LD HL,_RET_1
LD (_ret),HL LD (_ret),HL
JP _TST_PROC 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) _RET_1: LD DE,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
XOR A XOR A
@ -1053,30 +972,7 @@ _RET_1: LD DE,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
LD A,(EXE_FM) ; ¤¥áªà. ä ©«  LD A,(EXE_FM) ; ¤¥áªà. ä ©« 
CALL CLOSE ; § ªàëâì ä ©« CALL CLOSE ; § ªàëâì ä ©«
JP _TST_PROC_2 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 RETFAR: LD B,DSS_Error.sys.UNEXPECTED_APP_TRMN
JP LEAVE ; § ¢¥àè¨âì ¯à®£à ¬¬ã (¯à®æ¥áá) JP LEAVE ; § ¢¥àè¨âì ¯à®£à ¬¬ã (¯à®æ¥áá)
@ -1133,127 +1029,16 @@ PRELOAD: EX DE,HL
NOINK2: LD HL,_RET_2 NOINK2: LD HL,_RET_2
LD (_ret),HL LD (_ret),HL
JR _TST_PROC 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) ; ¡ãä¥à _RET_2: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR) ; ¡ãä¥à
LD DE,(CORE_BUFFERS.EXEBUFF.LOADER) ; ç¨á«® ç¨â. ¡ ©â LD DE,(CORE_BUFFERS.EXEBUFF.LOADER) ; ç¨á«® ç¨â. ¡ ©â
LD A,(EXE_FM) ; ¤¥áªà. ä ©«  LD A,(EXE_FM) ; ¤¥áªà. ä ©« 
CALL READ ; ç⥭¨¥ ¨§ ä ©«  CALL READ ; ç⥭¨¥ ¨§ ä ©« 
JP _TST_PROC_2 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: _TST_PROC:
;!FIXIT double 1
CALL GETMEM CALL GETMEM
JP C,ERREXE0 JP C,ERREXE0
LD (EXE_MEM),A LD (EXE_MEM),A
@ -1295,7 +1080,7 @@ _TST_PROC:
LD BC,3*256 + BIOS.GetMemPage LD BC,3*256 + BIOS.GetMemPage
RST ToBIOS RST ToBIOS
LD (DE),A LD (DE),A
;^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^;
LD HL,(CMDLINE) LD HL,(CMDLINE)
LD DE,CORE_BUFFERS.SECBUF+1 LD DE,CORE_BUFFERS.SECBUF+1
CALL SCOPYS CALL SCOPYS
@ -1338,13 +1123,8 @@ FRC000: LD A,(DE)
LD SP,#403F ;!HARDCODE STACK before start EXE. “áâ ­ ¢«¨¢ ¥âáï ª®£¤  ¢®âª­ãâë SHARED_PAGE LD SP,#403F ;!HARDCODE STACK before start EXE. “áâ ­ ¢«¨¢ ¥âáï ª®£¤  ¢®âª­ãâë SHARED_PAGE
; ;
_ret+1: JP 0 _ret+1: JP 0
;
_TST_PROC_2: _TST_PROC_2:
;!FIXIT double 2
;R09
;_mRestorePath
;
LD SP,(CORE_BUFFERS.EXEBUFF.SP_REG) LD SP,(CORE_BUFFERS.EXEBUFF.SP_REG)
LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR) LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
LD DE,#0080 LD DE,#0080
@ -1360,6 +1140,11 @@ _TST_PROC_2:
_mRestorePath _mRestorePath
PUSH IX
LD HL,CurrentDirectory
CALL CHDIR_FN
POP IX
RET RET
; ;
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
@ -1451,7 +1236,7 @@ M_PSP: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
LD (HL),B LD (HL),B
INC HL INC HL
;!FIXIT âãâ ¢®ááâ ­ ¢«¨¢ âì ¯à ¢¨«ì­ë© ª â «®£ ;!FIXIT âãâ ¢®ááâ ­ ¢«¨¢ âì ¯à ¢¨«ì­ë© ª â «®£
CALL CURRDSK_FN CALL CURRDSK
ADD A,'A' ADD A,'A'
LD (HL),A LD (HL),A
INC HL INC HL
@ -1459,7 +1244,7 @@ M_PSP: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
LD (HL),A LD (HL),A
INC HL INC HL
PUSH HL PUSH HL
CALL CURRDIR_FN CALL CURRDIR
; ;
POP HL POP HL
XOR A XOR A

View File

@ -1 +1 @@
483 495

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