This commit is contained in:
Anatoliy Belyanskiy 2023-11-20 03:59:47 +10:00
parent f93e0ad5b2
commit 497344d117
3 changed files with 118 additions and 102 deletions

View File

@ -49,12 +49,12 @@ ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
SCF
RET
.RATTRIB:
;!TEST ;[ ] 16/11/23 optimize get attribute
;!TEST ;[x] 16/11/23 optimize get attribute
;XOR A
;
CALL .OPENATR ;R02
RET C
;!TEST ;[ ] 16/11/23 optimize get attribute
;!TEST ;[x] 16/11/23 optimize get attribute
LD A,(HANDBUF+_sFM.ATTRIBUT)
;LD B,(IY+_sFM.ATTRIBUT)
;PUSH BC
@ -67,11 +67,11 @@ ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
.WATTRIB:
PUSH AF
XOR A
;!TEST ;[ ] 16/11/23 optimize get attribute
;!TEST ;[x] 16/11/23 optimize get attribute
LD (OPEN.TMP),A
;
CALL .OPENATR ;R02
;!TEST ;[ ] 16/11/23 optimize get attribute
;!TEST ;[x] 16/11/23 optimize get attribute
CALL NC,OPEN.FM
;
POP BC
@ -87,7 +87,7 @@ ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
RET
;R02
.OPENATR:
;!TEST ;[ ] 16/11/23 optimize get attribute
;!TEST ;[x] 16/11/23 optimize get attribute
;LD (OPEN.TMP),A ; à ¡. ï祩ª  (§¤¥áì  âਡãâ § ¯¨á¨)
;
CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
@ -95,7 +95,7 @@ ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
CALL MASK
RET C
LD A,FAT_ATTR.NoVolID
;!TEST ;[ ] 16/11/23 optimize get attribute
;!TEST ;[x] 16/11/23 optimize get attribute
JP SEARCH.Custom
;CALL SEARCH.Custom
;RET C ; § ¯¨áì ­¥ ­ ©¤¥­ 
@ -199,20 +199,18 @@ DEL_FN: ;!TEST
;
CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
RET C
; LD HL,TMPNAME
; LD DE,MASKARE
CALL MASK
RET C
;
; LD DE,MASKARE
; CALL MASK
; RET C
LD HL,MASKARE
LD BC,11
LD A,"?"
CPIR
LD A,DSS_Error.sys.INVALID_NAME
SCF
;!TEST optimization
;LD HL,MASKARE
;LD BC,11
;LD A,"?"
;CPIR
;LD A,DSS_Error.sys.INVALID_NAME
;SCF
CALL CHECK_NAME
;
RET Z
CALL LOADDIR
CALL SEARCH.File
@ -264,12 +262,15 @@ RENAME: ;!TEST Current Dir ;[x] 15/10/23
CALL MASK.name
POP DE
RET C
LD HL,MASKARE
LD BC,11
LD A,"?"
CPIR
LD A,DSS_Error.sys.INVALID_NAME
SCF
;!TEST optimization
;LD HL,MASKARE
;LD BC,11
;LD A,"?"
;CPIR
;LD A,DSS_Error.sys.INVALID_NAME
;SCF
CALL CHECK_NAME
;
RET Z
PUSH DE
CALL LOADDIR ; ¯à®ç¨â âì ᯨ᮪ ª â «®£ 
@ -281,12 +282,15 @@ RENAME: ;!TEST Current Dir ;[x] 15/10/23
;LD DE,MASKARE
CALL MASK.name
RET C
LD HL,MASKARE
LD BC,11
LD A,"?"
CPIR
LD A,DSS_Error.sys.INVALID_NAME
SCF
;!TEST optimization
;LD HL,MASKARE
;LD BC,11
;LD A,"?"
;CPIR
;LD A,DSS_Error.sys.INVALID_NAME
;SCF
CALL CHECK_NAME
;
RET Z
PUSH IX
LD A,FAT_ATTR.NoSYSnoVolID
@ -397,7 +401,7 @@ CLOSE: LD (.TMP),A
LD E,(IY+_sFM.DIR_CLUSTER)
LD D,(IY+_sFM.DIR_CLUSTER+1)
PUSH DE
; [ ] 15/11/2023 -bug with bad clusters ;!TEST
; [x] 15/11/2023 -bug with bad clusters ;!TEST
LD A,(IY+_sFM.DRIVE)
CALL OPENDSK
;
@ -406,7 +410,7 @@ CLOSE: LD (.TMP),A
POP DE
LD (IY+_sFM.DIR_CLUSTER),E
LD (IY+_sFM.DIR_CLUSTER+1),D
; [ ] 15/11/2023 -bug with bad clusters ;!TEST
; [x] 15/11/2023 -bug with bad clusters ;!TEST
LD (IY+_sFM.ST_CLUSTER),E
LD (IY+_sFM.ST_CLUSTER+1),D
;
@ -452,6 +456,7 @@ CLOSE: LD (.TMP),A
; C - #19
; HL - 㪠§ â¥«ì ­  ä ©«®¢ãî ᯥæ¨ä¨ª æ¨î
; DE - à ¡®ç¨© ¡ãä¥à 44 ¡ ©â , ¥á«¨ B=0, ¨­ ç¥ 256 ¡ ©â
; ;!!!!! ­  á ¬®¬ ¤¥«¥ ᥩç á ¥á«¨ B=1, à ¡®ç¨© ¡ãä¥à 46 ¡ ©â
; A -  âਡãâë, ¨á¯®«ì§ã¥¬ë¥ ¯à¨ ¯®¨áª¥
; B = 0 - ¨¬ï ­ ©¤¥­­®£® ä ©«  ¢ ä®à¬ â¥ 11 ¡ ©â "FilenameExt"
; B = 1 - ¨¬ï ­ ©¤¥­­®£® ä ©«  ¢ ä®à¬ â¥ DOS "filename.ext",0
@ -478,13 +483,12 @@ F_FIRST:
PUSH HL
;!TEST Current Dir ;[x] 15/10/23
CALL DIR_PATH_CHECK
RET C
;
CALL LOADDIR
POP HL
CALL GETWORD
RET C
; LD HL,TMPNAME
; LD DE,MASKARE
CALL MASK
RET C
LD A,(.TMP)
@ -556,10 +560,8 @@ F_NEXT:
JP F_FIRST.FIND_S
.NSEARCH:
EX AF,AF'
SET_PAGE_X DIRPAGE
PUSH AF
;PUSH AF
EX AF,AF'
CPL
LD C,A
@ -907,14 +909,10 @@ CHDIR: CALL GETWORD ;
; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0
////////////////////////////////////////////////////////////////////////
MKDIR: ;!TEST Current Dir ;[x] 15/10/23
LD C,A
PUSH HL
PUSH BC
CALL DIR_PATH_CHECK
POP BC
POP HL
RET C
LD A,C
CALL .START
PUSH AF
LD HL,CurrentDirectory
@ -1080,14 +1078,10 @@ MKDIR: ;!TEST Current Dir ;[x] 15/10/23
; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0
////////////////////////////////////////////////////////////////////////
RMDIR: ;!TEST Current Dir ;[x] 15/10/23
LD C,A
PUSH HL
PUSH BC
CALL DIR_PATH_CHECK
POP BC
POP HL
RET C
LD A,C
CALL .START
PUSH AF
LD HL,CurrentDirectory
@ -1098,16 +1092,17 @@ RMDIR: ;!TEST Current Dir ;[x] 15/10/23
;
.START: CALL GETWORD
RET C
; LD HL,TMPNAME
; LD DE,MASKARE
CALL MASK
RET C
LD HL,MASKARE
LD BC,11
LD A,"?"
CPIR
LD A,DSS_Error.sys.INVALID_NAME
SCF
;!TEST optimization
;LD HL,MASKARE
;LD BC,11
;LD A,"?"
;CPIR
;LD A,DSS_Error.sys.INVALID_NAME
;SCF
CALL CHECK_NAME
;
RET Z
CALL LOADDIR
CALL SEARCH.Dir
@ -1372,7 +1367,6 @@ RMKTIME:
;----------------------------------------------------------------------;
; HL - 11 bytes filename "FILENAMEEXT"
; DE - DOS filename "FILENAME.EXT",0
;!FIXIT ­¥ª®à४⭮ à ¡®â ¥â
; GETNAME:
; LD BC,#08FF
; .GETN1: LD A,(HL)
@ -1460,7 +1454,7 @@ SEARCH:
.File: LD A,FAT_ATTR.NoDIRnoVolID
.Custom: EX AF,AF' ; A = 76ADLSHR
SET_PAGE_X DIRPAGE
PUSH AF
;PUSH AF
EX AF,AF'
;
CPL
@ -1508,8 +1502,10 @@ SEARCH:
EX DE,HL
LD BC,HANDBUF.SIZE
LDIR
POP AF
;POP AF
EX AF,AF'
OUT (SLOT3),A
EX AF,AF'
AND A
RET
.next_record:
@ -1522,14 +1518,16 @@ SEARCH:
ADD IX,DE
JR NC,.loop
.error_too_many_files:
POP AF
;POP AF
EX AF,AF'
OUT (SLOT3),A
LD A,DSS_Error.sys.TOO_MANY_FILES_IN_DIR
SCF
RET
;
.error_file_not_found:
POP AF
;POP AF
EX AF,AF'
OUT (SLOT3),A
LD A,DSS_Error.sys.FILE_NOT_FOUND
SCF
@ -1559,10 +1557,8 @@ GETWORD:
INC HL
INC HL
PUSH HL
;!TEST CHNDISK OPENDSK
CALL CHNDISK
;CALL OPENDSK
;
CALL CHNDISK
;CALL OPENDSK
POP HL
RET C
LD A,(HL)
@ -1663,7 +1659,7 @@ OPENDSK:
;----------------------------------------------------------------------;
OPENDIR:;!TEST ;[ ] some optimize
OPENDIR:;!TEST ;[x] some optimize
;XOR A
;CALL SET_FM
LD IY,CORE_BUFFERS.FM_BUF
@ -1673,7 +1669,7 @@ OPENDIR:;!TEST ;[ ] some optimize
JR NZ,.SUBDIR
.REROOT1:
LD DE,0
;!TEST ;[ ] some optimize
;!TEST ;[x] some optimize
;LD (IY+_sFM.ST_CLUSTER),E
;LD (IY+_sFM.ST_CLUSTER+1),D
EX DE,HL
@ -1691,7 +1687,7 @@ OPENDIR:;!TEST ;[ ] some optimize
.SUBDIR:
CP "."
JR NZ,.SUBDIR2
;!TEST ;[ ] some optimize
;!TEST ;[x] some optimize
;LD A,(IY+_sFM.ST_CLUSTER) ;R05
LD A,(CORE_BUFFERS.FM_BUF + _sFM.ST_CLUSTER) ;R05
;
@ -1721,7 +1717,7 @@ OPENDIR:;!TEST ;[ ] some optimize
.SUBDIR3:
CALL FINDDIR
RET C
;!TEST ;[ ] some optimize
;!TEST ;[x] some optimize
;LD (IY+_sFM.ST_CLUSTER),E
;LD (IY+_sFM.ST_CLUSTER+1),D
;LD DE,#4000 ;!HARDCODE
@ -1783,7 +1779,8 @@ FINDDIR:
INC HL
LD BC,WorkDirectory.DEPTH
XOR A
CPIR ;!FIXIT ­¥â ¯à®¢¥àª¨ ­  § ¢¥à襭¨¥ ¯® BC=0
CPIR
JP PO,.error ;[x] 20/11/23 ¯à®¢¥àª  ­  ¢ë室 §  £à ­¨æë
DEC HL ;R09
DEC HL
LD BC,WorkDirectory.DEPTH
@ -1813,52 +1810,53 @@ FINDDIR:
LD HL,WorkDirectory+1
LD BC,WorkDirectory.DEPTH-1
CALL .CHECK_SLASH
JR C,.error
;R11
LD A,B
AND A
JR NZ,.nxt
LD A,C
CP 8+1+3 ;!HARDCODE ¨¬ï ª â «®£  + â®çª  + à áè¨à¥­¨¥
JR C,FINDDIR.error
JR C,.error
.nxt: ;
LD E,XL
LD D,XH
; [ ] ®¯â¨¬¨§ æ¨ï ¯® à §¬¥àã
; [x] ®¯â¨¬¨§ æ¨ï ¯® à §¬¥àã
EX DE,HL
CALL GETNAME
EX DE,HL
;
/*
LD BC,256*8 + ' ' ;!HARDCODE
.MM1: LD A,(DE)
INC DE
CP C
JR Z,.MM2
LD (HL),A ;!FIXIT ¢®â âãâ ¬®¦¥â ¢ë«¥§ âì §  ¯à¥¤¥«ë ¡ãä¥à  ¯à¨ ¤«¨­­®¬ ¯ã⨠¨ £à®å âì ª®¤ ¨ ¤ ­­ë¥. R11 ¢à¥¬¥­® «¥ç¨â ª®áâë«ñ¬
INC HL
.MM2 DJNZ .MM1 ;x42-40 50-55
LD A,(DE)
INC DE
CP C
JR Z,.MM3
LD (HL),"."
INC HL
LD (HL),A
INC HL
LD A,(DE)
INC DE
CP C
JR Z,.MM3
LD (HL),A
INC HL
LD A,(DE)
CP C
JR Z,.MM3
LD (HL),A
.MM2_5: INC HL
.MM3: LD (HL),0
; JP IT_DIR
*/
; LD BC,256*8 + ' ' ;!HARDCODE
; .MM1: LD A,(DE)
; INC DE
; CP C
; JR Z,.MM2
; LD (HL),A
; INC HL
; .MM2 DJNZ .MM1 ;x42-40 50-55
; LD A,(DE)
; INC DE
; CP C
; JR Z,.MM3
; LD (HL),"."
; INC HL
; LD (HL),A
; INC HL
; LD A,(DE)
; INC DE
; CP C
; JR Z,.MM3
; LD (HL),A
; INC HL
; LD A,(DE)
; CP C
; JR Z,.MM3
; LD (HL),A
; .MM2_5: INC HL
; .MM3: LD (HL),0
; ; JP IT_DIR
.IT_DIR:
LD E,(IX+_sFM.ST_CLUSTER)
LD D,(IX+_sFM.ST_CLUSTER+1)
@ -1868,7 +1866,11 @@ FINDDIR:
RET
.CHECK_SLASH:
XOR A
CPIR ;!FIXIT ­¥â ¯à®¢¥àª¨ ­  § ¢¥à襭¨¥ ¯® BC=0
CPIR
;[x] 20/11/23 ¯à®¢¥àª  ­  ¢ë室 §  £à ­¨æë
SCF
RET PO
;
DEC HL
DEC HL
LD A,'\' ; #5C
@ -2254,11 +2256,25 @@ DIR_PATH_CHECK: LD A,(HL)
CP (HL)
RET
.gotoPath: CALL FINDDIR.CHECK_SLASH
LD A,DSS_Error.sys.PATH_NOT_FOUND
RET C
LD HL,CurrentPath
JP GETWORD
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
CHECK_NAME:
LD HL,MASKARE
.custom: LD BC,11 ;!HARDCODE
LD A,"?"
CPIR
LD A,DSS_Error.sys.INVALID_NAME
SCF
RET
;----------------------------------------------------------------------;
;!FIXIT ª ¡ãä¥à ¬
; Œ áᨢ «®£. ­®¬¥à®¢ ¡ ­®ª à áè¨à¥­¨ï DSS
BANKTBL: BLOCK USING_MEMPAGES+1,#FF ; +1 ¤«ï COREPAGE

View File

@ -1 +1 @@
618
607

@ -1 +1 @@
Subproject commit b69773d50cb2c0e1da44f7f20c7daa32871f2308
Subproject commit 18269745815d90e76686f5693e0cb45f8f31741c