mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
доделать OPENDIR
This commit is contained in:
parent
cfb3543373
commit
53d3408ec0
@ -27,6 +27,8 @@ MAX_SECTORS_PER_PAGE EQU #20 ;
|
|||||||
LOAD_SECTORS EQU SECTORS_OF_LOADER.AFTER_BPB
|
LOAD_SECTORS EQU SECTORS_OF_LOADER.AFTER_BPB
|
||||||
LOADER_IN_BPB:
|
LOADER_IN_BPB:
|
||||||
.MAX_SIZE EQU _sBOOT_SECTOR.PARTITION_TABLE - _sBOOT_SECTOR_PARAMS_FAT32
|
.MAX_SIZE EQU _sBOOT_SECTOR.PARTITION_TABLE - _sBOOT_SECTOR_PARAMS_FAT32
|
||||||
|
FATPAGE:
|
||||||
|
.cache EQU #C000
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
DISP ORG_ADDRESS
|
DISP ORG_ADDRESS
|
||||||
|
|||||||
@ -10,7 +10,7 @@
|
|||||||
; INPUT: HL - "C:\DIR\DIR\DIR_NAME[\]",0
|
; INPUT: HL - "C:\DIR\DIR\DIR_NAME[\]",0
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
CHDIR_FN:
|
CHDIR_FN:
|
||||||
;!TEST Current Dir ;[x] 15/10/23
|
; Current Dir 15/10/23
|
||||||
;
|
;
|
||||||
PUSH HL
|
PUSH HL
|
||||||
CALL DIR_PATH_CHECK
|
CALL DIR_PATH_CHECK
|
||||||
@ -32,5 +32,5 @@ CHDIR: CALL SetPath_GetName ;
|
|||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
OR A
|
OR A
|
||||||
RET Z
|
RET Z
|
||||||
JP OPENDIR
|
JP OPENDIR ; !FIXIT ¢®§¬®¦®, çâ® ¨§¡ëâ®ç® ¯®á«¥ SetPath_GetName
|
||||||
;
|
;
|
||||||
@ -1,24 +0,0 @@
|
|||||||
////////////////////////////////////////////////////////////////////////
|
|
||||||
;
|
|
||||||
;
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
|
||||||
CHDISK_FN: CALL CHDISK
|
|
||||||
RET C
|
|
||||||
PUSH AF
|
|
||||||
CALL DIR_PATH_CHANGE.FullCurrent
|
|
||||||
POP AF
|
|
||||||
RET
|
|
||||||
CHDISK: ;[x] ¡®«¥¥ ª®à४â ï ᬥ ¤¨áª
|
|
||||||
CALL OPENDSK
|
|
||||||
;
|
|
||||||
;R010
|
|
||||||
RET C
|
|
||||||
LD HL,CORE_BUFFERS.WorkDirectory
|
|
||||||
LD (HL),0
|
|
||||||
PUSH AF
|
|
||||||
CALL OPENDIR
|
|
||||||
POP BC
|
|
||||||
RET C
|
|
||||||
LD A,B
|
|
||||||
RET
|
|
||||||
;
|
|
||||||
@ -1,4 +1,3 @@
|
|||||||
; [x] fat32 ;!TEST
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
;‚å®¤ë¥ § 票ï:
|
;‚å®¤ë¥ § 票ï:
|
||||||
; C - #12
|
; C - #12
|
||||||
@ -28,14 +27,14 @@ CLOSE_FN: LD (.TMP),A
|
|||||||
LD D,(IY+_sFM.DIR_CLUSTER_H+1)
|
LD D,(IY+_sFM.DIR_CLUSTER_H+1)
|
||||||
PUSH DE
|
PUSH DE
|
||||||
;
|
;
|
||||||
; [x] 15/11/2023 -bug with bad clusters ;!TEST
|
; 15/11/2023 -bug with bad clusters
|
||||||
LD A,(IY+_sFM.DRIVE)
|
LD A,(IY+_sFM.DRIVE)
|
||||||
CALL OPENDSK
|
CALL OPENDSK
|
||||||
JR C,.error
|
JR C,.error
|
||||||
;
|
;
|
||||||
XOR A
|
XOR A
|
||||||
CALL SET_FM
|
CALL SET_FM
|
||||||
; [x] fat32
|
; fat32
|
||||||
POP DE
|
POP DE
|
||||||
LD (IY+_sFM.DIR_CLUSTER_H),E
|
LD (IY+_sFM.DIR_CLUSTER_H),E
|
||||||
LD (IY+_sFM.DIR_CLUSTER_H+1),D
|
LD (IY+_sFM.DIR_CLUSTER_H+1),D
|
||||||
@ -45,11 +44,13 @@ CLOSE_FN: LD (.TMP),A
|
|||||||
POP DE
|
POP DE
|
||||||
LD (IY+_sFM.DIR_CLUSTER_L),E
|
LD (IY+_sFM.DIR_CLUSTER_L),E
|
||||||
LD (IY+_sFM.DIR_CLUSTER_L+1),D
|
LD (IY+_sFM.DIR_CLUSTER_L+1),D
|
||||||
; [x] 15/11/2023 -bug with bad clusters ;!TEST
|
; 15/11/2023 -bug with bad clusters
|
||||||
LD (IY+_sFM.FS_REC.FIRST_CLUSTER_L),E
|
LD (IY+_sFM.FS_REC.FIRST_CLUSTER_L),E
|
||||||
LD (IY+_sFM.FS_REC.FIRST_CLUSTER_L+1),D
|
LD (IY+_sFM.FS_REC.FIRST_CLUSTER_L+1),D
|
||||||
;
|
;
|
||||||
CALL LOADDIR ; [ ] big dir
|
LD L,(IY+_sFM.HANDLE)
|
||||||
|
LD H,(IY+_sFM.HANDLE+1)
|
||||||
|
CALL LOADDIR.Custom ; [ ] big dir
|
||||||
; [ ] big dir
|
; [ ] big dir
|
||||||
;!TODO ®â¬®â âì ªíè ¤® 㦮£® record index?
|
;!TODO ®â¬®â âì ªíè ¤® 㦮£® record index?
|
||||||
;
|
;
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
; A - File attribute
|
; A - File attribute
|
||||||
; OUTPUT: A - FM
|
; OUTPUT: A - FM
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
CREATE: ;!TEST Current Dir ;[x] 15/10/23 ;CREATE_FN:
|
CREATE: ; Current Dir 15/10/23 ;CREATE_FN:
|
||||||
PUSH HL
|
PUSH HL
|
||||||
LD C,A
|
LD C,A
|
||||||
;
|
;
|
||||||
@ -31,7 +31,7 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23 ;CREATE_FN:
|
|||||||
;
|
;
|
||||||
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
|
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
|
||||||
; OUTPUT: A - FM
|
; OUTPUT: A - FM
|
||||||
.NEW: ;!TEST Current Dir ;[x] 15/10/23
|
.NEW: ; Current Dir 15/10/23
|
||||||
PUSH HL
|
PUSH HL
|
||||||
LD C,A
|
LD C,A
|
||||||
;
|
;
|
||||||
@ -97,7 +97,7 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23 ;CREATE_FN:
|
|||||||
LD (.PATH0),HL
|
LD (.PATH0),HL
|
||||||
CALL SetPath_GetName
|
CALL SetPath_GetName
|
||||||
RET C
|
RET C
|
||||||
; [x] 26/06/2024 {64 kb cluster}
|
; 26/06/2024 {64 kb cluster}
|
||||||
CALL CHECK_64kb_CLUSTER
|
CALL CHECK_64kb_CLUSTER
|
||||||
RET C
|
RET C
|
||||||
;
|
;
|
||||||
|
|||||||
@ -1,31 +1,22 @@
|
|||||||
; [x] fat32 ;!TEST
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
; INPUT: HL - "c:\dir\filename.ext",#00 without simbols * ?
|
; INPUT: HL - "c:\dir\filename.ext",#00 without simbols * ?
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
DEL_FN: ;Current Dir ;[x] 15/10/23
|
DEL_FN: ; Current Dir 15/10/23
|
||||||
PUSH HL
|
PUSH HL
|
||||||
CALL DIR_PATH_CHECK
|
CALL DIR_PATH_CHECK
|
||||||
POP HL
|
POP HL
|
||||||
RET C
|
RET C
|
||||||
;
|
;
|
||||||
CALL SetPath_GetName ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
CALL SetPath_GetName ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
||||||
RET C
|
RET C
|
||||||
; [x] 26/06/2024 {64 kb cluster}
|
; [x] 26/06/2024 {64 kb cluster}
|
||||||
CALL CHECK_64kb_CLUSTER
|
CALL CHECK_64kb_CLUSTER
|
||||||
RET C
|
|
||||||
;
|
|
||||||
CALL MASK
|
|
||||||
RET C
|
RET C
|
||||||
;
|
;
|
||||||
;!TEST optimization
|
CALL MASK
|
||||||
;LD HL,MASKARE
|
RET C
|
||||||
;LD BC,11
|
|
||||||
;LD A,"?"
|
|
||||||
;CPIR
|
|
||||||
;LD A,DSS_Error.sys.INVALID_NAME
|
|
||||||
;SCF
|
|
||||||
CALL CHECK_NAME
|
|
||||||
;
|
;
|
||||||
|
CALL CHECK_NAME
|
||||||
RET Z
|
RET Z
|
||||||
;
|
;
|
||||||
CALL LOADDIR ; [ ] big dir
|
CALL LOADDIR ; [ ] big dir
|
||||||
|
|||||||
@ -350,18 +350,17 @@ _TST_PROC: CALL GETMEM
|
|||||||
LD DE,RAMMAP
|
LD DE,RAMMAP
|
||||||
LD A,H
|
LD A,H
|
||||||
AND #C0
|
AND #C0
|
||||||
;!TEST
|
|
||||||
CP #80
|
CP #80
|
||||||
JR Z,FR8000
|
JR Z,.from_8000
|
||||||
JR NC,FRC000
|
JR NC,.from_C000
|
||||||
;
|
; from_4000
|
||||||
FR4000: LD A,(DE)
|
LD A,(DE)
|
||||||
OUT (SLOT1),A
|
OUT (SLOT1),A
|
||||||
INC DE
|
INC DE
|
||||||
FR8000: LD A,(DE)
|
.from_8000: LD A,(DE)
|
||||||
OUT (SLOT2),A
|
OUT (SLOT2),A
|
||||||
INC DE
|
INC DE
|
||||||
FRC000: LD A,(DE)
|
.from_C000: LD A,(DE)
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
;CALL M_PSP
|
;CALL M_PSP
|
||||||
;
|
;
|
||||||
@ -388,11 +387,9 @@ _TST_PROC_2:
|
|||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD XH,D
|
LD XH,D
|
||||||
LD XL,E
|
LD XL,E
|
||||||
;LD HL,(CORE_BUFFERS.EXEBUFF.PC_REG)
|
|
||||||
LD DE,RETFAR ; ¤à¥á ¯/¯ "¥®¦¨¤ ®¥ § ¢¥à襨¥ ¯à®æ¥áá "
|
LD DE,RETFAR ; ¤à¥á ¯/¯ "¥®¦¨¤ ®¥ § ¢¥à襨¥ ¯à®æ¥áá "
|
||||||
PUSH DE
|
PUSH DE
|
||||||
;PUSH HL
|
; Current Dir 15/10/23
|
||||||
;!TEST Current Dir ;[x] 15/10/23
|
|
||||||
PUSH IX
|
PUSH IX
|
||||||
LD HL,CORE_BUFFERS.CurrentPath
|
LD HL,CORE_BUFFERS.CurrentPath
|
||||||
LD A,(CORE_BUFFERS.EXEBUFF.VERSION)
|
LD A,(CORE_BUFFERS.EXEBUFF.VERSION)
|
||||||
@ -711,12 +708,12 @@ FINDPATH:
|
|||||||
POP AF
|
POP AF
|
||||||
RET
|
RET
|
||||||
.MAKE_PATH_ARRAY:
|
.MAKE_PATH_ARRAY:
|
||||||
LD HL,ENVPAGE.PATH_PNT_ARRAY-1 ;R04 -1
|
LD HL,ENVPAGE.PATH_PNT_ARRAY-1
|
||||||
LD DE,ENVPAGE.ENVTEMP-1
|
LD DE,ENVPAGE.ENVTEMP-1
|
||||||
LD B,#00
|
LD B,#00
|
||||||
.NEXTAR:
|
.NEXTAR:
|
||||||
LD (HL),C ;R04
|
LD (HL),C
|
||||||
INC HL ;R04
|
INC HL
|
||||||
XOR A
|
XOR A
|
||||||
LD (DE),A
|
LD (DE),A
|
||||||
LD C,A
|
LD C,A
|
||||||
@ -725,8 +722,6 @@ FINDPATH:
|
|||||||
INC HL
|
INC HL
|
||||||
LD (HL),D
|
LD (HL),D
|
||||||
INC HL
|
INC HL
|
||||||
;R04 LD (HL),C
|
|
||||||
;R04 INC HL
|
|
||||||
INC B
|
INC B
|
||||||
.NEXTRT:
|
.NEXTRT:
|
||||||
LD A,(DE)
|
LD A,(DE)
|
||||||
@ -747,8 +742,8 @@ FINDPATH:
|
|||||||
JR Z,.NEXTRT
|
JR Z,.NEXTRT
|
||||||
OR A
|
OR A
|
||||||
JR NZ,.NEXTCH
|
JR NZ,.NEXTCH
|
||||||
LD (HL),C ;R04
|
LD (HL),C
|
||||||
INC HL ;R04
|
INC HL
|
||||||
LD (HL),A
|
LD (HL),A
|
||||||
INC HL
|
INC HL
|
||||||
LD (HL),A
|
LD (HL),A
|
||||||
|
|||||||
@ -15,7 +15,7 @@
|
|||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
F_FIRST_FN: CALL F_FIRST.INIT_VARS
|
F_FIRST_FN: CALL F_FIRST.INIT_VARS
|
||||||
PUSH HL
|
PUSH HL
|
||||||
;!TEST Current Dir ;[x] 15/10/23
|
; Current Dir 15/10/23
|
||||||
CALL DIR_PATH_CHECK
|
CALL DIR_PATH_CHECK
|
||||||
POP HL
|
POP HL
|
||||||
RET C
|
RET C
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
; [x] fat32 ;!TEST
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
; ”γ<CEB3>ζ¨ο #1B. ‘®§¤ ¨¥ <20> β «®£ .
|
; ”γ<CEB3>ζ¨ο #1B. ‘®§¤ ¨¥ <20> β «®£ .
|
||||||
;
|
;
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
; [x] fat32 ;!TEST
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
; ”ãªæ¨ï #11. Žâªàë⨥ ä ©« .
|
; ”ãªæ¨ï #11. Žâªàë⨥ ä ©« .
|
||||||
;
|
;
|
||||||
@ -12,7 +11,7 @@
|
|||||||
; ¢ë室: CF=0, A - ¤¥áªà¨¯â®à ä ©« .
|
; ¢ë室: CF=0, A - ¤¥áªà¨¯â®à ä ©« .
|
||||||
; CF=1, A - ª®¤ ®è¨¡ª¨.
|
; CF=1, A - ª®¤ ®è¨¡ª¨.
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
OPEN_FN: ;!TEST Current Dir ;[x] 15/10/23
|
OPEN_FN: ; Current Dir 15/10/23
|
||||||
;AND #7F ; ACCESS_MODE bit7 - ¤«ï ¢ãâ॥£® ¨á¯®«ì§®¢ ¨ï))) ;!TODO
|
;AND #7F ; ACCESS_MODE bit7 - ¤«ï ¢ãâ॥£® ¨á¯®«ì§®¢ ¨ï))) ;!TODO
|
||||||
LD (.TMP),A
|
LD (.TMP),A
|
||||||
PUSH HL
|
PUSH HL
|
||||||
|
|||||||
@ -146,14 +146,11 @@ READ: LD (.R_POINT),HL
|
|||||||
ADD HL,DE
|
ADD HL,DE
|
||||||
;
|
;
|
||||||
EXX
|
EXX
|
||||||
;LD DE,0 ;!TEST
|
|
||||||
LD L,(IY+_sFM.F_POSITION+2) ;FP HIGH
|
LD L,(IY+_sFM.F_POSITION+2) ;FP HIGH
|
||||||
LD H,(IY+_sFM.F_POSITION+3)
|
LD H,(IY+_sFM.F_POSITION+3)
|
||||||
;!TEST
|
JR NC,.no_inc_hl
|
||||||
JR NC,.no_inc_hl
|
|
||||||
INC HL
|
|
||||||
;ADC HL,DE
|
|
||||||
;
|
;
|
||||||
|
INC HL
|
||||||
.no_inc_hl: EXX ;HL':HL - NEW FP
|
.no_inc_hl: EXX ;HL':HL - NEW FP
|
||||||
;
|
;
|
||||||
LD C,(IY+_sFM.FS_REC.F_SIZE)
|
LD C,(IY+_sFM.FS_REC.F_SIZE)
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
; INPUT: HL - "old_name.ext",#00 without simbols * ?
|
; INPUT: HL - "old_name.ext",#00 without simbols * ?
|
||||||
; DE - "new_name.ext",#00 without simbols * ?
|
; DE - "new_name.ext",#00 without simbols * ?
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
RENAME: ;!TEST Current Dir ;[x] 15/10/23
|
RENAME: ; Current Dir 15/10/23
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH DE
|
PUSH DE
|
||||||
CALL DIR_PATH_CHECK.forceCheck
|
CALL DIR_PATH_CHECK.forceCheck
|
||||||
@ -30,19 +30,12 @@ RENAME: ;!TEST Current Dir ;[x] 15/10/23
|
|||||||
CALL MASK.name
|
CALL MASK.name
|
||||||
POP DE
|
POP DE
|
||||||
RET C
|
RET C
|
||||||
;!TEST optimization
|
|
||||||
;LD HL,MASKARE
|
|
||||||
;LD BC,11
|
|
||||||
;LD A,"?"
|
|
||||||
;CPIR
|
|
||||||
;LD A,DSS_Error.sys.INVALID_NAME
|
|
||||||
;SCF
|
|
||||||
CALL CHECK_NAME
|
|
||||||
;
|
;
|
||||||
|
CALL CHECK_NAME
|
||||||
RET Z
|
RET Z
|
||||||
|
;
|
||||||
PUSH DE
|
PUSH DE
|
||||||
CALL LOADDIR ; [ ] big dir ; ¯à®ç¨â âì ᯨ᮪ ª â «®£
|
CALL LOADDIR ; [ ] big dir ; ¯à®ç¨â âì ᯨ᮪ ª â «®£
|
||||||
;LD A,#33
|
|
||||||
LD A,FAT_ATTR.NoSYSnoVolID
|
LD A,FAT_ATTR.NoSYSnoVolID
|
||||||
CALL SEARCH.Custom ; ¯®¨áª § ¯¨á¨ "old_name.ext" ¢ ᯨ᪥ ¤¨áª
|
CALL SEARCH.Custom ; ¯®¨áª § ¯¨á¨ "old_name.ext" ¢ ᯨ᪥ ¤¨áª
|
||||||
POP HL
|
POP HL
|
||||||
@ -50,16 +43,10 @@ RENAME: ;!TEST Current Dir ;[x] 15/10/23
|
|||||||
;LD DE,MASKARE
|
;LD DE,MASKARE
|
||||||
CALL MASK.name
|
CALL MASK.name
|
||||||
RET C
|
RET C
|
||||||
;!TEST optimization
|
|
||||||
;LD HL,MASKARE
|
|
||||||
;LD BC,11
|
|
||||||
;LD A,"?"
|
|
||||||
;CPIR
|
|
||||||
;LD A,DSS_Error.sys.INVALID_NAME
|
|
||||||
;SCF
|
|
||||||
CALL CHECK_NAME
|
|
||||||
;
|
;
|
||||||
|
CALL CHECK_NAME
|
||||||
RET Z
|
RET Z
|
||||||
|
;
|
||||||
PUSH IX
|
PUSH IX
|
||||||
LD A,FAT_ATTR.NoSYSnoVolID
|
LD A,FAT_ATTR.NoSYSnoVolID
|
||||||
CALL SEARCH.Custom ; ¯®¨áª § ¯¨á¨ "new_name.ext" ¢ ᯨ᪥ ¤¨áª
|
CALL SEARCH.Custom ; ¯®¨áª § ¯¨á¨ "new_name.ext" ¢ ᯨ᪥ ¤¨áª
|
||||||
@ -67,7 +54,7 @@ RENAME: ;!TEST Current Dir ;[x] 15/10/23
|
|||||||
LD A,DSS_Error.sys.FILE_EXISTS
|
LD A,DSS_Error.sys.FILE_EXISTS
|
||||||
CCF
|
CCF
|
||||||
RET C
|
RET C
|
||||||
|
;
|
||||||
SET_PAGE_X DIRPAGE
|
SET_PAGE_X DIRPAGE
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
;
|
;
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
; [x] fat32 ;!TEST
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
; ”ãªæ¨ï #1C. “¤ «¥¨¥ ª â «®£ .
|
; ”ãªæ¨ï #1C. “¤ «¥¨¥ ª â «®£ .
|
||||||
; Œ®¦® 㤠«¨âì ⮫쪮 ¯ãá⮩ ª â «®£.
|
; Œ®¦® 㤠«¨âì ⮫쪮 ¯ãá⮩ ª â «®£.
|
||||||
@ -8,7 +7,7 @@
|
|||||||
;
|
;
|
||||||
; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0
|
; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
RMDIR: ;!TEST Current Dir ;[x] 15/10/23
|
RMDIR: ; Current Dir 15/10/23
|
||||||
PUSH HL
|
PUSH HL
|
||||||
CALL DIR_PATH_CHECK
|
CALL DIR_PATH_CHECK
|
||||||
POP HL
|
POP HL
|
||||||
|
|||||||
@ -209,7 +209,7 @@ OPENDSK: ;!TEST DRV.Open
|
|||||||
|
|
||||||
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
;!TEST Current Dir ;[x] 15/10/23
|
;! Current Dir 15/10/23
|
||||||
DIR_PATH_CHANGE:
|
DIR_PATH_CHANGE:
|
||||||
.FullCurrent: LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
.FullCurrent: LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
||||||
ADD 'A'
|
ADD 'A'
|
||||||
|
|||||||
170
DSS/FS/FAT.asm
170
DSS/FS/FAT.asm
@ -318,7 +318,6 @@ SEARCH:
|
|||||||
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
; FIND "MASKAREA" IN DIRECTORY
|
; FIND "MASKAREA" IN DIRECTORY
|
||||||
; [x] fat32 ;!TEST
|
|
||||||
; ¢ë室: IY:DE - cluster number
|
; ¢ë室: IY:DE - cluster number
|
||||||
FINDDIR: SET_PAGE_X DIRPAGE
|
FINDDIR: SET_PAGE_X DIRPAGE
|
||||||
;
|
;
|
||||||
@ -467,30 +466,77 @@ FINDDIR: SET_PAGE_X DIRPAGE
|
|||||||
RET
|
RET
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
âãâ ¤®¤¥« âì
|
||||||
|
; ‚室: IY - 㪠§ ⥫ì ç «® ä ©«®¢®£® ¬ ¨¯ã«ïâ®à
|
||||||
CHECK_ROOT_CLUSTER:
|
CHECK_ROOT_CLUSTER:
|
||||||
EX DE,HL
|
;EX DE,HL
|
||||||
LD HL,(CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L) ;R005
|
; LD HL,(CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L)
|
||||||
LD A,L
|
; LD A,L
|
||||||
OR H
|
; OR H
|
||||||
LD HL,(CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H)
|
; LD HL,(CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H)
|
||||||
|
; OR L
|
||||||
|
; OR H
|
||||||
|
;EX DE,HL
|
||||||
|
CALL CHECK_FIRST_CLUSTER
|
||||||
|
; RET NZ
|
||||||
|
|
||||||
|
; LD A,(CORE_BUFFERS.FS_Buffer.FAT_TYPE)
|
||||||
|
; CP FAT_TYPE.x32
|
||||||
|
; CALL Z,SET_FAT_ROOT_DIR_CLUSTER
|
||||||
|
; ;
|
||||||
|
; XOR A
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
; .fat32root: CALL SET_FAT32_ROOT_DIR_CLUSTER
|
||||||
|
; OR A
|
||||||
|
; RET
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
SET_FAT_ROOT_DIR_CLUSTER:
|
||||||
|
LD HL,(CORE_BUFFERS.FS_Buffer.RootDirStartCluster_L)
|
||||||
|
LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L),HL
|
||||||
|
LD HL,(CORE_BUFFERS.FS_Buffer.RootDirStartCluster_H)
|
||||||
|
LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H),HL
|
||||||
|
RET
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------
|
||||||
|
; ¢å®¤: IY - 㪠§ ⥫ì ç «® ä ©«®¢®£® ¬ ¨¯ã«ïâ®à
|
||||||
|
; ¢ë室: HL':HL - first cluster
|
||||||
|
; ZF = 0 ¥á«¨ ¯¥à¢®£® ª« áâ¥à ¥â
|
||||||
|
CHECK_FIRST_CLUSTER:
|
||||||
|
EXX
|
||||||
|
LD L,(IY+_sFM.FS_REC.FIRST_CLUSTER_H) ; START CLUSTER High
|
||||||
|
LD H,(IY+_sFM.FS_REC.FIRST_CLUSTER_H+1)
|
||||||
|
LD A,L
|
||||||
|
OR H
|
||||||
|
EXX
|
||||||
|
LD L,(IY+_sFM.FS_REC.FIRST_CLUSTER_L) ; START CLUSTER
|
||||||
|
LD H,(IY+_sFM.FS_REC.FIRST_CLUSTER_L+1)
|
||||||
OR L
|
OR L
|
||||||
OR H
|
OR H
|
||||||
EX DE,HL
|
|
||||||
RET
|
RET
|
||||||
|
;-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
; ¢å®¤: HL - ¨¬ï ¤¨à¥ªâ®à¨¨
|
; ¢å®¤: HL - ¨¬ï ¤¨à¥ªâ®à¨¨
|
||||||
; [x] fat32 ;!TEST
|
|
||||||
|
|
||||||
OPENDIR: LD IY,CORE_BUFFERS.FM_BUF
|
OPENDIR: LD IY,CORE_BUFFERS.FM_BUF
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
OR A
|
OR A
|
||||||
JR NZ,.SUBDIR
|
JR NZ,.SUBDIR
|
||||||
;
|
;
|
||||||
.REROOT: LD DE,0 ; !FIXIT ; [ ] CDFS - ¡à âì ¯¥à¢ë© ª« áâ¥à ¨§ ¯¥à¥¬¥®©
|
âãâ ¤®¤¥« âì
|
||||||
LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L),DE
|
.REROOT: CALL SET_FAT_ROOT_DIR_CLUSTER
|
||||||
LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H),DE
|
;LD DE,0 ; ¯à¨§ ª root dir ; !FIXIT ; [ ] CDFS - ¡à âì ¯¥à¢ë© ª« áâ¥à ¨§ ¯¥à¥¬¥®©
|
||||||
CALL LOADDIR ; [ ] big dir
|
;LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L),DE
|
||||||
|
;LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H),DE
|
||||||
|
.reroot: CALL LOADDIR ; [ ] big dir
|
||||||
; CF=0
|
; CF=0
|
||||||
LD HL,CORE_BUFFERS.WorkDirectory
|
LD HL,CORE_BUFFERS.WorkDirectory
|
||||||
LD (HL),'\'
|
LD (HL),'\'
|
||||||
@ -502,7 +548,12 @@ OPENDIR: LD IY,CORE_BUFFERS.FM_BUF
|
|||||||
.SUBDIR: CP "."
|
.SUBDIR: CP "."
|
||||||
JR NZ,.SUBDIR2
|
JR NZ,.SUBDIR2
|
||||||
; fat32
|
; fat32
|
||||||
CALL CHECK_ROOT_CLUSTER
|
; !TEST 04/01/2026
|
||||||
|
EX DE,HL
|
||||||
|
CALL CHECK_ROOT_CLUSTER
|
||||||
|
;CALL CHECK_FIRST_CLUSTER
|
||||||
|
EX DE,HL
|
||||||
|
;
|
||||||
JR NZ,.no_root ;R005
|
JR NZ,.no_root ;R005
|
||||||
; "cd ." or "cd .."
|
; "cd ." or "cd .."
|
||||||
;R005
|
;R005
|
||||||
@ -546,7 +597,8 @@ OPENDIR: LD IY,CORE_BUFFERS.FM_BUF
|
|||||||
; <20>à®ç¨â âì ᯨ᮪ ª â «®£
|
; <20>à®ç¨â âì ᯨ᮪ ª â «®£
|
||||||
; ¢å®¤ (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L), (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H)
|
; ¢å®¤ (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L), (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H)
|
||||||
LOADDIR: ;!TODO optimize
|
LOADDIR: ;!TODO optimize
|
||||||
CALL LOAD_SAVE_DIR_PREPARE
|
LD HL,0
|
||||||
|
.Custom: CALL LOAD_SAVE_DIR_PREPARE
|
||||||
.next: PUSH AF
|
.next: PUSH AF
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
JR NZ,.read_dir ; root dir or not
|
JR NZ,.read_dir ; root dir or not
|
||||||
@ -582,8 +634,7 @@ LOADDIR: ;!TODO optimize
|
|||||||
JR NC,.RTD1
|
JR NC,.RTD1
|
||||||
;
|
;
|
||||||
LD B,A ; ç¨á«® ᥪâ®à®¢
|
LD B,A ; ç¨á«® ᥪâ®à®¢
|
||||||
.RTD1: LD A,(CORE_BUFFERS.FS_Buffer.DRIVE) ; ®¬
|
.RTD1: LD A,(CORE_BUFFERS.FS_Buffer.DRIVE) ; ®¬¥à ¤¨áª
|
||||||
¥à ¤¨áª
|
|
||||||
LD DE,DIRPAGE.buffer ; ¡ãä¥à
|
LD DE,DIRPAGE.buffer ; ¡ãä¥à
|
||||||
LD C,Dss.DRV.Read ; ç⥨¥ ᥪâ®à®¢
|
LD C,Dss.DRV.Read ; ç⥨¥ ᥪâ®à®¢
|
||||||
RST ToDSS.DRV
|
RST ToDSS.DRV
|
||||||
@ -601,8 +652,7 @@ LOADDIR: ;!TODO optimize
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
ld
|
; [ ] ¤®¤¥« âì ¯¥à¥¤ çã ID § ¯¨á¨ ¤¨à¥ªâ®à¨¨ ¨ § £à㧪¨ ¯® ¥© 㦮£® ªã᪠¢ ªíè
|
||||||
; ¤®¤¥« âì ¯¥à¥¤ çã ID § ¯¨á¨ ¤¨à¥ªâ®à¨¨ ¨ § £à㧪¨ ¯® ¥© 㦮£® ªã᪠¢ ªíè
|
|
||||||
;!TODO FAT procedures
|
;!TODO FAT procedures
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
; ‚室:
|
; ‚室:
|
||||||
@ -613,27 +663,21 @@ LOAD_SAVE_DIR_PREPARE:
|
|||||||
; HLIX = (HL*32) & #1FC000 ᬥ饨¥ ã¦ë© ¡«®ª ¯® #4000 ¡ ©â®¢
|
; HLIX = (HL*32) & #1FC000 ᬥ饨¥ ã¦ë© ¡«®ª ¯® #4000 ¡ ©â®¢
|
||||||
XOR A
|
XOR A
|
||||||
LD XL,A
|
LD XL,A
|
||||||
LD L,A
|
LD E,A
|
||||||
LD A,H
|
LD A,H
|
||||||
AND #0E
|
LD H,E
|
||||||
|
AND #FE
|
||||||
RRA
|
RRA
|
||||||
RR L
|
RR E
|
||||||
|
LD (CORE_BUFFERS.FS_Buffer.DIR_BLOCK),A
|
||||||
RRA
|
RRA
|
||||||
RR L
|
RR E
|
||||||
RRA
|
RRA
|
||||||
RR L
|
RR E
|
||||||
LD E,L
|
|
||||||
LD XH,E
|
LD XH,E
|
||||||
LD L,A
|
LD L,A
|
||||||
; ;
|
; ;
|
||||||
;
|
;
|
||||||
; A = ®¬¥à ¡«®ª ªíè ¤¨à¥ªâ®à¨¨
|
|
||||||
RL E
|
|
||||||
RLA
|
|
||||||
RL E
|
|
||||||
RLA
|
|
||||||
LD (CORE_BUFFERS.FS_Buffer.DIR_BLOCK),A
|
|
||||||
;
|
|
||||||
XOR A ; FILE MANIPULATOR = 0
|
XOR A ; FILE MANIPULATOR = 0
|
||||||
;LD H,A
|
;LD H,A
|
||||||
;LD L,A
|
;LD L,A
|
||||||
@ -648,11 +692,6 @@ LOAD_SAVE_DIR_PREPARE:
|
|||||||
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
||||||
LD (CORE_BUFFERS.FM_BUF.DRIVE),A
|
LD (CORE_BUFFERS.FM_BUF.DRIVE),A
|
||||||
;;;;;;;;
|
;;;;;;;;
|
||||||
;LD A,(IY+_sFM.FS_REC.FIRST_CLUSTER_L)
|
|
||||||
;OR (IY+_sFM.FS_REC.FIRST_CLUSTER_L+1)
|
|
||||||
;OR (IY+_sFM.FS_REC.FIRST_CLUSTER_H)
|
|
||||||
;OR (IY+_sFM.FS_REC.FIRST_CLUSTER_H+1)
|
|
||||||
;
|
|
||||||
XOR A
|
XOR A
|
||||||
LD D,#40
|
LD D,#40
|
||||||
LD E,A
|
LD E,A
|
||||||
@ -755,9 +794,10 @@ LOAD_SAVE_DIR_PREPARE:
|
|||||||
#1FFFE0 & #3FFF €¤à¥á 㦮© ¯®§¨æ¨¨ ¢ ªíè
|
#1FFFE0 & #3FFF €¤à¥á 㦮© ¯®§¨æ¨¨ ¢ ªíè
|
||||||
(#1FFFE0 & #1FC000)<<2 ¤¢¨£ ¥¬ ¡ ©â 2 ¨ 3 ç⮡ ¯®«ãç¨âì ®¬¥à ¡«®ª
|
(#1FFFE0 & #1FC000)<<2 ¤¢¨£ ¥¬ ¡ ©â 2 ¨ 3 ç⮡ ¯®«ãç¨âì ®¬¥à ¡«®ª
|
||||||
*/
|
*/
|
||||||
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; [ ] big dir
|
; [ ] big dir
|
||||||
; ᪮¯¨à®¢ âì § ¯¨áì ¢ ᯨ᮪ ¤¨áª (ª â «®£ ) de ix iy
|
; ᪮¯¨à®¢ âì § ¯¨áì ¢ ᯨ᮪ ¤¨áª (ª â «®£ ) de ix iy
|
||||||
; ¨ á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
; ¨ á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
||||||
@ -1409,7 +1449,7 @@ FS_Buffer:
|
|||||||
;!TODO record index. ¢®§¬®¦®, çâ® ¬®¦¥â á«®¬ âìáï, ¥á«¨ ¡®«ìè¥ áâà ¨æë
|
;!TODO record index. ¢®§¬®¦®, çâ® ¬®¦¥â á«®¬ âìáï, ¥á«¨ ¡®«ìè¥ áâà ¨æë
|
||||||
DELETE_REC_FAT: SET_PAGE_X DIRPAGE
|
DELETE_REC_FAT: SET_PAGE_X DIRPAGE
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
CALL DELETE_LFN_RECORDS ; [x] 㤠«¥¨¥ § ¯¨á¨ LFN
|
CALL DELETE_LFN_RECORDS ; [ ] big dir ; [x] 㤠«¥¨¥ § ¯¨á¨ LFN
|
||||||
LD (IX + FAT_DIRECTORY_RECORD.NAME),#E5 ; ¯à¨§ ª 㤠«¥¨ï ä ©«
|
LD (IX + FAT_DIRECTORY_RECORD.NAME),#E5 ; ¯à¨§ ª 㤠«¥¨ï ä ©«
|
||||||
; fat32
|
; fat32
|
||||||
LD L,(IX+FAT_DIRECTORY_RECORD.FIRST_CLUSTER_H) ; ü ¯¥à¢®£® ª« áâ¥à
|
LD L,(IX+FAT_DIRECTORY_RECORD.FIRST_CLUSTER_H) ; ü ¯¥à¢®£® ª« áâ¥à
|
||||||
@ -1495,7 +1535,6 @@ SET_NEW_FREE_CLUSTER:
|
|||||||
; RET
|
; RET
|
||||||
|
|
||||||
;
|
;
|
||||||
; [x] fat32 ;!TEST
|
|
||||||
; ©â¨ ¯¥à¢ë© ᢮¡®¤ë© ª« áâ¥à ;!TODO ¯à®¢¥à¨âì ¯¥à¥¡®à ª« áâ¥à®¢
|
; ©â¨ ¯¥à¢ë© ᢮¡®¤ë© ª« áâ¥à ;!TODO ¯à®¢¥à¨âì ¯¥à¥¡®à ª« áâ¥à®¢
|
||||||
; ¢ë室: HL - ¬« ¤è¨© ®¬¥à ᢮¡®¤®£® ª« áâ¥à
|
; ¢ë室: HL - ¬« ¤è¨© ®¬¥à ᢮¡®¤®£® ª« áâ¥à
|
||||||
; HL' - áâ à訩 ®¬¥à ᢮¡®¤®£® ª« áâ¥à
|
; HL' - áâ à訩 ®¬¥à ᢮¡®¤®£® ª« áâ¥à
|
||||||
@ -1590,7 +1629,6 @@ SET_NEW_FREE_CLUSTERS:
|
|||||||
; ;
|
; ;
|
||||||
|
|
||||||
;
|
;
|
||||||
; [x] fat32 ;!TEST
|
|
||||||
; <20>ਪ९¨âì ª ¯®á«¥¤¥¬ã ª« áâ¥àã æ¥¯®çª¨ ®¢ë© ¯ãá⮩ ª« áâ¥à
|
; <20>ਪ९¨âì ª ¯®á«¥¤¥¬ã ª« áâ¥àã æ¥¯®çª¨ ®¢ë© ¯ãá⮩ ª« áâ¥à
|
||||||
; ‚室: HL':HL - ®¬¥à ª« áâ¥à ª ª®â®à®¬ã ¯à¨ªà¥¯¨âì ¯ãá⮩
|
; ‚室: HL':HL - ®¬¥à ª« áâ¥à ª ª®â®à®¬ã ¯à¨ªà¥¯¨âì ¯ãá⮩
|
||||||
; ‚ë室: HL':HL - ®¬¥à ª« áâ¥à ª ª®â®à®¬ã ¯à¨ªà¥¯¨«áï ¯ãá⮩
|
; ‚ë室: HL':HL - ®¬¥à ª« áâ¥à ª ª®â®à®¬ã ¯à¨ªà¥¯¨«áï ¯ãá⮩
|
||||||
@ -1625,7 +1663,7 @@ INC_FAT: PUSH HL ; ⥪
|
|||||||
EXX
|
EXX
|
||||||
;
|
;
|
||||||
CALL WRITE_TO_FAT ; § ¯¨á âì ¢ ª¥è FAT- ®¬¥à ª« áâ¥à
|
CALL WRITE_TO_FAT ; § ¯¨á âì ¢ ª¥è FAT- ®¬¥à ª« áâ¥à
|
||||||
;!TEST ;!TODO 2/12/23 ; [ ] ¡ £ á ¨§¡ëâ®ç®© § ¯¨áìî WRITE_FAT_TABLE?
|
; 02/12/23 ¡ £ á ¨§¡ëâ®ç®© § ¯¨áìî WRITE_FAT_TABLE
|
||||||
;CALL WRITE_FAT_TABLE ; ¯®¤ª«. ¡ ªã ª¥è FAT ¨ § ¯¨á âì ¥£® ¤¨áª
|
;CALL WRITE_FAT_TABLE ; ¯®¤ª«. ¡ ªã ª¥è FAT ¨ § ¯¨á âì ¥£® ¤¨áª
|
||||||
;
|
;
|
||||||
EXX
|
EXX
|
||||||
@ -1639,10 +1677,9 @@ INC_FAT: PUSH HL ; ⥪
|
|||||||
XOR A ; 㬥ìè¨âì
|
XOR A ; 㬥ìè¨âì
|
||||||
CALL SET_NEW_FREE_CLUSTERS ; [ ] free clusters for FSInfo
|
CALL SET_NEW_FREE_CLUSTERS ; [ ] free clusters for FSInfo
|
||||||
RET
|
RET
|
||||||
;RX01
|
|
||||||
|
|
||||||
|
|
||||||
; [x] fat32 ;!TEST
|
|
||||||
; ¢å®¤: hl = ¬« ¤è¥¥ á«®¢® ®¬¥à ª« áâ¥à ¤«ï áà ¢¥¨ï á FAT_Max_Cluster
|
; ¢å®¤: hl = ¬« ¤è¥¥ á«®¢® ®¬¥à ª« áâ¥à ¤«ï áà ¢¥¨ï á FAT_Max_Cluster
|
||||||
; hl' = áâ à襥 á«®¢® ®¬¥à ª« áâ¥à ¤«ï áà ¢¥¨ï á FAT_Max_Cluster (⮫쪮 ¤«ï fat32)
|
; hl' = áâ à襥 á«®¢® ®¬¥à ª« áâ¥à ¤«ï áà ¢¥¨ï á FAT_Max_Cluster (⮫쪮 ¤«ï fat32)
|
||||||
CHECK_CLUSTER_IS_SMALLER:
|
CHECK_CLUSTER_IS_SMALLER:
|
||||||
@ -1670,7 +1707,6 @@ CHECK_CLUSTER_IS_SMALLER:
|
|||||||
;
|
;
|
||||||
|
|
||||||
;
|
;
|
||||||
;[x] fat32 ;!TEST
|
|
||||||
;------------------------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------------------------
|
||||||
; <20>à®ç¨â âì ¨§ ª¥è FAT- ®¬¥à á«¥¤. ª« áâ¥à
|
; <20>à®ç¨â âì ¨§ ª¥è FAT- ®¬¥à á«¥¤. ª« áâ¥à
|
||||||
; ¢å®¤: hl - ®¬¥à ª« áâ¥à (¬« ¤è¥¥ á«®¢®)
|
; ¢å®¤: hl - ®¬¥à ª« áâ¥à (¬« ¤è¥¥ á«®¢®)
|
||||||
@ -1802,8 +1838,6 @@ SET_FAT32_CACHE_BLOCK_CHANGED_REGION:
|
|||||||
LD (CORE_BUFFERS.FS_Buffer.CacheUpdated),A
|
LD (CORE_BUFFERS.FS_Buffer.CacheUpdated),A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
;
|
|
||||||
; [x] fat32 ;!TEST
|
|
||||||
;
|
;
|
||||||
; !TODO optimize
|
; !TODO optimize
|
||||||
; ¯à¨ § ¯¨á¨ ¢ ªíè § ç¥¨ï ®â¬¥ç âì ç¥à¥§ OR ¢ ï祩ª¥ FS_Buffer.SectorOfCacheBlock
|
; ¯à¨ § ¯¨á¨ ¢ ªíè § ç¥¨ï ®â¬¥ç âì ç¥à¥§ OR ¢ ï祩ª¥ FS_Buffer.SectorOfCacheBlock
|
||||||
@ -1913,8 +1947,7 @@ WRITE_TO_FAT: LD DE,(CORE_BUFFERS.FS_Buffer.END_CHAIN_CLUSTER_L) ;
|
|||||||
POP DE
|
POP DE
|
||||||
JR .exit
|
JR .exit
|
||||||
;
|
;
|
||||||
.FAT32: ; [x] fat32 ;!TEST
|
.FAT32: EXX
|
||||||
EXX
|
|
||||||
PUSH DE ; áâ à訩 ®¬¥à ª« áâ¥à ª®â®àë© ¢¯¨á âì
|
PUSH DE ; áâ à訩 ®¬¥à ª« áâ¥à ª®â®àë© ¢¯¨á âì
|
||||||
PUSH HL ; áâ à襥 á«®¢® ®¬¥à ª« áâ¥à ¢ ª®â®àë© § ¯¨á âì
|
PUSH HL ; áâ à襥 á«®¢® ®¬¥à ª« áâ¥à ¢ ª®â®àë© § ¯¨á âì
|
||||||
EXX
|
EXX
|
||||||
@ -1942,7 +1975,6 @@ WRITE_TO_FAT: LD DE,(CORE_BUFFERS.FS_Buffer.END_CHAIN_CLUSTER_L) ;
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
; [x] fat32 ;!TEST
|
|
||||||
;FAT_BLOCK * Sectors_in_Block = SECTOR_OF_FAT
|
;FAT_BLOCK * Sectors_in_Block = SECTOR_OF_FAT
|
||||||
; in: HL - Cache block
|
; in: HL - Cache block
|
||||||
; out: C:HL - logical number
|
; out: C:HL - logical number
|
||||||
@ -1981,7 +2013,6 @@ GET_SECTOR_OF_FAT:
|
|||||||
;;;;;;;;;
|
;;;;;;;;;
|
||||||
|
|
||||||
|
|
||||||
; [x] fat32 ;!TEST
|
|
||||||
;RE_FAT:
|
;RE_FAT:
|
||||||
;RX01
|
;RX01
|
||||||
; <20>à®ç¨â âì ¢ ª¥è •• ᥪâ®à®¢ FAT-
|
; <20>à®ç¨â âì ¢ ª¥è •• ᥪâ®à®¢ FAT-
|
||||||
@ -2021,7 +2052,7 @@ READ_FAT_TABLE: PUSH HL
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
||||||
; [x] fat32 ;!TEST
|
|
||||||
; <20>®¤ª«îç¨âì ¡ ªã ª¥è FAT ¨ § ¯¨á âì ¥£® ¤¨áª
|
; <20>®¤ª«îç¨âì ¡ ªã ª¥è FAT ¨ § ¯¨á âì ¥£® ¤¨áª
|
||||||
WRITE_FAT_TABLE:
|
WRITE_FAT_TABLE:
|
||||||
SET_PAGE_X FATPAGE
|
SET_PAGE_X FATPAGE
|
||||||
@ -2228,9 +2259,9 @@ WRITE_FAT_TABLE:
|
|||||||
POP DE
|
POP DE
|
||||||
POP AF
|
POP AF
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
;
|
|
||||||
;[x] fat32 ;!TEST
|
|
||||||
;¢å®¤: HL':HL - ®¬¥à ª« áâ¥à
|
;¢å®¤: HL':HL - ®¬¥à ª« áâ¥à
|
||||||
;¢ë室: HL - ¤à¥á 㦮© ï祩ª¨ ¢ áâà ¨æ¥ FATPAGE
|
;¢ë室: HL - ¤à¥á 㦮© ï祩ª¨ ¢ áâà ¨æ¥ FATPAGE
|
||||||
GET_FAT32_CELL: ; ¤¢¨£ ¥¬ ¢«¥¢® HL':H
|
GET_FAT32_CELL: ; ¤¢¨£ ¥¬ ¢«¥¢® HL':H
|
||||||
@ -2344,8 +2375,6 @@ GET_FAT12_CELL: LD D,H
|
|||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;[x] fat32 ;!TEST
|
|
||||||
;CLUSTER_TO_SECTOR:
|
;CLUSTER_TO_SECTOR:
|
||||||
; in: HL':HL - CLUSTER
|
; in: HL':HL - CLUSTER
|
||||||
; out: HL:IX - SECTOR
|
; out: HL:IX - SECTOR
|
||||||
@ -2394,7 +2423,6 @@ CLUSTER_TO_SECTOR:
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
; [x] fat32 ;!TEST
|
|
||||||
; READ SECTORS OF FILE
|
; READ SECTORS OF FILE
|
||||||
; ¢å®¤: HL:DE - FP (in sectors)
|
; ¢å®¤: HL:DE - FP (in sectors)
|
||||||
; IY - FM
|
; IY - FM
|
||||||
@ -2561,24 +2589,8 @@ BLOCK_READ: LD (READ.PointerOnBuffer),IX
|
|||||||
RET
|
RET
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
|
|
||||||
; [x] fat32
|
|
||||||
; ¢å®¤: IY - FM
|
|
||||||
; ¢ë室: HL':HL - first cluster
|
|
||||||
; ZF = 0 ¥á«¨ ¯¥à¢®£® ª« áâ¥à ¥â
|
|
||||||
CHECK_FIRST_CLUSTER:
|
|
||||||
EXX
|
|
||||||
LD L,(IY+_sFM.FS_REC.FIRST_CLUSTER_H) ; START CLUSTER High
|
|
||||||
LD H,(IY+_sFM.FS_REC.FIRST_CLUSTER_H+1)
|
|
||||||
LD A,L
|
|
||||||
OR H
|
|
||||||
EXX
|
|
||||||
LD L,(IY+_sFM.FS_REC.FIRST_CLUSTER_L) ; START CLUSTER
|
|
||||||
LD H,(IY+_sFM.FS_REC.FIRST_CLUSTER_L+1)
|
|
||||||
OR L
|
|
||||||
OR H
|
|
||||||
RET
|
|
||||||
|
|
||||||
; [x] fat32
|
;-----------------------------------------------------------------------
|
||||||
; WRITE SECTORS OF FILE
|
; WRITE SECTORS OF FILE
|
||||||
; ¢å®¤: HL:DE - FP (in sectors)
|
; ¢å®¤: HL:DE - FP (in sectors)
|
||||||
; IX - data in RAM
|
; IX - data in RAM
|
||||||
@ -2595,16 +2607,6 @@ BLOCK_WRITE: LD (READ.PointerOnBuffer),IX
|
|||||||
PUSH BC ; ¬« ¤è¥¥ á«®¢® ®¬¥à ª« áâ¥à
|
PUSH BC ; ¬« ¤è¥¥ á«®¢® ®¬¥à ª« áâ¥à
|
||||||
PUSH DE ; fat32 áâ à襥 á«®¢® ®¬¥à ª« áâ¥à
|
PUSH DE ; fat32 áâ à襥 á«®¢® ®¬¥à ª« áâ¥à
|
||||||
;
|
;
|
||||||
; EXX
|
|
||||||
; LD L,(IY+_sFM.FS_REC.FIRST_CLUSTER_H) ; START CLUSTER High
|
|
||||||
; LD H,(IY+_sFM.FS_REC.FIRST_CLUSTER_H+1)
|
|
||||||
; LD A,L
|
|
||||||
; OR H
|
|
||||||
; EXX
|
|
||||||
; LD L,(IY+_sFM.FS_REC.FIRST_CLUSTER_L) ; START CLUSTER
|
|
||||||
; LD H,(IY+_sFM.FS_REC.FIRST_CLUSTER_L+1)
|
|
||||||
; OR L
|
|
||||||
; OR H
|
|
||||||
CALL CHECK_FIRST_CLUSTER
|
CALL CHECK_FIRST_CLUSTER
|
||||||
JR NZ,.FindCluster
|
JR NZ,.FindCluster
|
||||||
;
|
;
|
||||||
|
|||||||
@ -37,8 +37,8 @@
|
|||||||
; .CREATE_DATE_FAT32: WORD #0000 ;+ #10 +16 RESERVED
|
; .CREATE_DATE_FAT32: WORD #0000 ;+ #10 +16 RESERVED
|
||||||
; .RESERVED_FAT32_1: WORD #0000 ;+ #12 +18 RESERVED
|
; .RESERVED_FAT32_1: WORD #0000 ;+ #12 +18 RESERVED
|
||||||
; .FIRST_CLUSTER_H: WORD #0000 ;+ #14 +20 RESERVED
|
; .FIRST_CLUSTER_H: WORD #0000 ;+ #14 +20 RESERVED
|
||||||
; .TIME: WORD #0000 ;+ #16 +22 TIME
|
; .TIME: WORD #0000 ;+ #16 +22 TIME
|
||||||
; .DATE: WORD #0000 ;+ #18 +24 DATE
|
; .DATE: WORD #0000 ;+ #18 +24 DATE
|
||||||
; .FIRST_CLUSTER_L: WORD #0000 ;+ #1A +26 START CLUSTER ; [ ] fat32
|
; .FIRST_CLUSTER_L: WORD #0000 ;+ #1A +26 START CLUSTER ; [ ] fat32
|
||||||
; .F_SIZE: DWORD #00000000 ;+ #1C +28 SIZE FILE
|
; .F_SIZE: DWORD #00000000 ;+ #1C +28 SIZE FILE
|
||||||
; from Core
|
; from Core
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
3
|
4
|
||||||
@ -69,6 +69,7 @@ MINIMUM_BIOS_VERSION EQU 3*256 + 06 ; version 3.06
|
|||||||
;-----------------------------------------------[^^^^^^]
|
;-----------------------------------------------[^^^^^^]
|
||||||
|
|
||||||
;-----------------------------------------------[«®£.®¬¥à áâà ¨æ]
|
;-----------------------------------------------[«®£.®¬¥à áâà ¨æ]
|
||||||
|
IFUSED DIRPAGE
|
||||||
DEFINE USING_MEMPAGES 4 ; à §¬¥à ¡«®ª ¤®¯®«¨â¥«ìëå áâà ¨æ
|
DEFINE USING_MEMPAGES 4 ; à §¬¥à ¡«®ª ¤®¯®«¨â¥«ìëå áâà ¨æ
|
||||||
; ªíè ᯨ᪠ª â «®£
|
; ªíè ᯨ᪠ª â «®£
|
||||||
DIRPAGE EQU 0 + (low BANKTBL)
|
DIRPAGE EQU 0 + (low BANKTBL)
|
||||||
@ -85,6 +86,7 @@ ENVPAGE EQU TXTPAGE
|
|||||||
DRVPAGE EQU 3 + (low BANKTBL)
|
DRVPAGE EQU 3 + (low BANKTBL)
|
||||||
;
|
;
|
||||||
COREPAGE EQU 4 + (low BANKTBL) ; ® ®â¤¥«ì® ¨ ¥ á ¡«®ª®¬ ¢ëè¥.
|
COREPAGE EQU 4 + (low BANKTBL) ; ® ®â¤¥«ì® ¨ ¥ á ¡«®ª®¬ ¢ëè¥.
|
||||||
|
ENDIF
|
||||||
;-----------------------------------------------[^^^^^^^^^^^^^^^^^^]
|
;-----------------------------------------------[^^^^^^^^^^^^^^^^^^]
|
||||||
|
|
||||||
DIRECTORY_PATH_LENGTH EQU 256 ; '\' + 255, 0
|
DIRECTORY_PATH_LENGTH EQU 256 ; '\' + 255, 0
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
527
|
531
|
||||||
148
TMP_CODE.ASM
148
TMP_CODE.ASM
@ -375,3 +375,151 @@ SAVEDIR: ;!TODO optimize
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; [ ] ¤®¤¥« âì ¯¥à¥¤ çã ID § ¯¨á¨ ¤¨à¥ªâ®à¨¨ ¨ § £à㧪¨ ¯® ¥© 㦮£® ªã᪠¢ ªíè
|
||||||
|
;!TODO FAT procedures
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
; ‚室:
|
||||||
|
; HL - ID § ¯¨á¨, ª®â®àë© ¤®«¦¥ ¯®¯ áâì ¢ Š<>˜
|
||||||
|
; ‚ë室: A - ‘âà ¨æ , ª®â®à ï ¡ë« ¢ SLOT3 ¤® ¢ë§®¢
|
||||||
|
; ZF' - RootDir
|
||||||
|
LOAD_SAVE_DIR_PREPARE:
|
||||||
|
; [ ] ‚室: HL - ID § ¯¨á¨, ª®â®àë© ¤®«¦¥ ¯®¯ áâì ¢ Š<>˜
|
||||||
|
; [ ] ‚ë室: HLIX - ᬥ饨¥ ¢ ä ©«¥ ª â «®£ ã¦ë© ¡«®ª ¯® #4000 ¡ ©â®¢
|
||||||
|
; HLIX = (HL*32) & #1FC000 ᬥ饨¥ ã¦ë© ¡«®ª ¯® #4000 ¡ ©â®¢
|
||||||
|
XOR A
|
||||||
|
LD XL,A
|
||||||
|
LD E,A
|
||||||
|
LD A,H
|
||||||
|
LD H,E
|
||||||
|
AND #FE
|
||||||
|
RRA
|
||||||
|
RR E
|
||||||
|
LD (CORE_BUFFERS.FS_Buffer.DIR_BLOCK),A
|
||||||
|
RRA
|
||||||
|
RR E
|
||||||
|
RRA
|
||||||
|
RR E
|
||||||
|
LD XH,E
|
||||||
|
LD L,A
|
||||||
|
; ;
|
||||||
|
;
|
||||||
|
XOR A ; FILE MANIPULATOR = 0
|
||||||
|
;LD H,A
|
||||||
|
;LD L,A
|
||||||
|
;LD IX,0
|
||||||
|
LD B,A ; ®â ç « ä ©«
|
||||||
|
CALL MOVE_FP
|
||||||
|
|
||||||
|
SET_PAGE_X DIRPAGE
|
||||||
|
AND A
|
||||||
|
PUSH AF
|
||||||
|
;
|
||||||
|
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
||||||
|
LD (CORE_BUFFERS.FM_BUF.DRIVE),A
|
||||||
|
;;;;;;;;
|
||||||
|
XOR A
|
||||||
|
LD D,#40
|
||||||
|
LD E,A
|
||||||
|
LD HL,(CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L)
|
||||||
|
EXX
|
||||||
|
LD D,A
|
||||||
|
LD E,A
|
||||||
|
LD HL,(CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H)
|
||||||
|
OR H
|
||||||
|
OR L
|
||||||
|
EXX
|
||||||
|
OR H
|
||||||
|
OR L
|
||||||
|
;;;;;;;;
|
||||||
|
PUSH AF
|
||||||
|
CALL NZ,.CalcDirSize
|
||||||
|
;
|
||||||
|
LD (CORE_BUFFERS.FM_BUF.FS_REC.F_SIZE),DE
|
||||||
|
EXX
|
||||||
|
LD (CORE_BUFFERS.FM_BUF.FS_REC.F_SIZE + 2),DE
|
||||||
|
POP AF
|
||||||
|
EX AF,AF'
|
||||||
|
POP AF
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
.CalcDirSize: ; calc dir size in clusters
|
||||||
|
LD DE,0
|
||||||
|
;LD HL,(CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L)
|
||||||
|
;EXX
|
||||||
|
; LD HL,(CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H)
|
||||||
|
.loop: ; ;
|
||||||
|
;EXX
|
||||||
|
INC DE ; <20> ¤¥¥¬áï âãâ â®, ç⮠ᯥæ¨ä¨ª æ¨ï ¢ë¯®«ï¥âáï ¨ ¯¥à¥¯®«¥¨ï ¥ ¡ã¤¥â
|
||||||
|
PUSH DE
|
||||||
|
CALL READ_FROM_FAT
|
||||||
|
EX DE,HL
|
||||||
|
POP DE
|
||||||
|
EXX
|
||||||
|
EX DE,HL
|
||||||
|
EXX
|
||||||
|
JR NC,.loop
|
||||||
|
;
|
||||||
|
; DE - à §¬¥à ¤¨à¥ªâ®à¨¨ ¢ ª« áâ¥à å
|
||||||
|
;!FIXIT ¬®¦® ®¯â¨¬¨§ãâì ª®«-¢® ᤢ¨£®¢
|
||||||
|
;0001 0000 0000 0000 max ª®«-¢® ª« áâ¥à®¢
|
||||||
|
; ¯à¨¬¥à
|
||||||
|
;0000 0000 0000 0111 Clusters
|
||||||
|
; 0100 0000 SectorsPerCluster
|
||||||
|
;0000 0010 0000 0000 BytesPerSector
|
||||||
|
; D' E' D E
|
||||||
|
;0000 0000 0000 0011 1000 0000 0000 0000
|
||||||
|
;
|
||||||
|
LD A,(CORE_BUFFERS.FS_Buffer.SectorsPerCluster)
|
||||||
|
LD BC,(CORE_BUFFERS.FS_Buffer.BytesPerSector)
|
||||||
|
; DE':DE - ª®«-¢® ª« áâ¥à®¢
|
||||||
|
; A - à §¬¥à ª« áâ¥à ¢ ᥪâ®à å
|
||||||
|
; BC - à §¬¥à ᥪâ®à ¢ ¡ ©â å
|
||||||
|
; --> DE*BC*A = DE':DE ¤«ï ®â¢¥â å¢ â¨â, ¯®å®¤ã, 4å ॣ¨áâ஢
|
||||||
|
EXX
|
||||||
|
LD DE,0
|
||||||
|
EXX
|
||||||
|
SRL B
|
||||||
|
RR C
|
||||||
|
RRCA
|
||||||
|
JR C,.loop2
|
||||||
|
;
|
||||||
|
.loop1: ;
|
||||||
|
SLA E
|
||||||
|
RL D
|
||||||
|
EXX
|
||||||
|
RL E
|
||||||
|
RL D
|
||||||
|
;RL C
|
||||||
|
EXX
|
||||||
|
;
|
||||||
|
RRCA
|
||||||
|
JR NC,.loop1
|
||||||
|
;
|
||||||
|
.loop2: ;
|
||||||
|
SLA E
|
||||||
|
RL D
|
||||||
|
EXX
|
||||||
|
RL E
|
||||||
|
RL D
|
||||||
|
;RL C
|
||||||
|
EXX
|
||||||
|
;
|
||||||
|
SRL B
|
||||||
|
RR C
|
||||||
|
JR NC,.loop2
|
||||||
|
; <-- DE*BC*A = DE':DE
|
||||||
|
RET
|
||||||
|
|
||||||
|
/* 4 3 2 1
|
||||||
|
#FFFF<<5 = #1FFFE0 = 0000 0000 0001 1111 1111 1111 1110 0000
|
||||||
|
|
||||||
|
#FFFF ®¬¥à § ¯¨á¨
|
||||||
|
#1FFFE0 ᬥ饨¥ § ¯¨áì ¢ ä ©«¥ ¤¨à¥ªâ®à¨¨
|
||||||
|
#1FFFE0 & #1FC000 ᬥ饨¥ ã¦ë© ¡«®ª ¯® #4000 ¡ ©â®¢
|
||||||
|
#1FFFE0 & #3FFF €¤à¥á 㦮© ¯®§¨æ¨¨ ¢ ªíè
|
||||||
|
(#1FFFE0 & #1FC000)<<2 ¤¢¨£ ¥¬ ¡ ©â 2 ¨ 3 ç⮡ ¯®«ãç¨âì ®¬¥à ¡«®ª
|
||||||
|
*/
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
Loading…
Reference in New Issue
Block a user