mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
...
This commit is contained in:
parent
f93e0ad5b2
commit
497344d117
216
DSS/DOS5.ASM
216
DSS/DOS5.ASM
@ -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
|
||||
|
||||
@ -1 +1 @@
|
||||
618
|
||||
607
|
||||
@ -1 +1 @@
|
||||
Subproject commit b69773d50cb2c0e1da44f7f20c7daa32871f2308
|
||||
Subproject commit 18269745815d90e76686f5693e0cb45f8f31741c
|
||||
Loading…
Reference in New Issue
Block a user