fat32 - 80% (но это не точно)

This commit is contained in:
Anatoliy Belyanskiy 2024-04-06 04:27:47 +10:00
parent 53dbf83712
commit ada25b0fe1
20 changed files with 866 additions and 754 deletions

View File

@ -18,13 +18,8 @@ ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
; ;
; ;
INC B INC B
DEC B DJNZ .B_1
JP Z,.READ ; B = 0
DEC B
JP Z,.WRITE_FN
LD A,DSS_Error.sys.INVALID_FUNCTION
SCF
RET
.READ: ;!TEST ;[x] 16/11/23 optimize get attribute .READ: ;!TEST ;[x] 16/11/23 optimize get attribute
;XOR A ;XOR A
; ;
@ -41,6 +36,11 @@ ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
; ;
RET RET
; ;
.error_fn: LD A,DSS_Error.sys.INVALID_FUNCTION
SCF
RET
;
.B_1: DJNZ .error_fn
.WRITE_FN: .WRITE_FN:
AND FAT_ATTR.NoVolID ; [x] 2/12/23 ¢à¥¬¥­­ë© ä¨ªá ¤«ï volume ID AND FAT_ATTR.NoVolID ; [x] 2/12/23 ¢à¥¬¥­­ë© ä¨ªá ¤«ï volume ID
.WRITE: PUSH AF .WRITE: PUSH AF

View File

@ -1,3 +1,4 @@
; [x] fat32 ;!TEST
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
;<3B>絎き襯 Л<>腑⑧<E88591>: ;<3B>絎き襯 Л<>腑⑧<E88591>:
; C - #12 ; C - #12
@ -18,18 +19,30 @@ CLOSE_FN:
RET NZ RET NZ
BIT 7,(IY+_sFM.ACCESS_MODE) BIT 7,(IY+_sFM.ACCESS_MODE)
JR Z,.NOTMODF JR Z,.NOTMODF
LD E,(IY+_sFM.DIR_CLUSTER) LD E,(IY+_sFM.DIR_CLUSTER_L)
LD D,(IY+_sFM.DIR_CLUSTER+1) LD D,(IY+_sFM.DIR_CLUSTER_L+1)
PUSH DE PUSH DE
; [x] fat32
LD E,(IY+_sFM.DIR_CLUSTER_H)
LD D,(IY+_sFM.DIR_CLUSTER_H+1)
PUSH DE
;
; [x] 15/11/2023 -bug with bad clusters ;!TEST ; [x] 15/11/2023 -bug with bad clusters ;!TEST
LD A,(IY+_sFM.DRIVE) LD A,(IY+_sFM.DRIVE)
CALL OPENDSK CALL OPENDSK
; ;
XOR A XOR A
CALL SET_FM CALL SET_FM
; [x] fat32
POP DE POP DE
LD (IY+_sFM.DIR_CLUSTER),E LD (IY+_sFM.DIR_CLUSTER_H),E
LD (IY+_sFM.DIR_CLUSTER+1),D LD (IY+_sFM.DIR_CLUSTER_H+1),D
LD (IY+_sFM.FS_REC.FIRST_CLUSTER_H),E
LD (IY+_sFM.FS_REC.FIRST_CLUSTER_H+1),D
;
POP DE
LD (IY+_sFM.DIR_CLUSTER_L),E
LD (IY+_sFM.DIR_CLUSTER_L+1),D
; [x] 15/11/2023 -bug with bad clusters ;!TEST ; [x] 15/11/2023 -bug with bad clusters ;!TEST
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

View File

@ -68,18 +68,8 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23
INC HL INC HL
DJNZ .loop1 DJNZ .loop1
;AaRR ;AaRR
PUSH HL CALL WRITE_DATE_TIME_TO_DIRECTORY_RECORD
CALL SYSTIME ;
CALL MK_TIME
POP HL
LD (HL),E
INC HL
LD (HL),D
INC HL
LD (HL),C
INC HL
LD (HL),B
INC HL
LD BC,#0600 LD BC,#0600
; ;
.loop2: LD (HL),C .loop2: LD (HL),C
@ -89,13 +79,12 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23
CALL WRT_HND CALL WRT_HND
RET C RET C
;CALL SAVEDIR ;CALL SAVEDIR
.PATH0+1: .PATH0+1: LD HL,0
LD HL,0
XOR A XOR A
LD (OPEN_FN.TMP),A LD (OPEN_FN.TMP),A
JP OPEN_FN.FILE ;R008 JP OPEN_FN.FILE ;R008
.Prepare: ;
;AND #E7 ;R004 %76A00SHR = !FAT_ATTR ;!HARDCODE .Prepare: ;AND #E7 ;R004 %76A00SHR = !FAT_ATTR ;!HARDCODE
AND FAT_ATTR.NoDIRnoVolID AND FAT_ATTR.NoDIRnoVolID
LD (.TMP),A LD (.TMP),A
LD (.PATH0),HL LD (.PATH0),HL
@ -106,8 +95,7 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23
JP MASK JP MASK
; ;
; [x] fixed a bug with incorrect search when there were too many files in the directory 12/03/2024 ; [x] fixed a bug with incorrect search when there were too many files in the directory 12/03/2024
.FILE_EXISTS: .FILE_EXISTS: LD A,DSS_Error.sys.FILE_EXISTS
LD A,DSS_Error.sys.FILE_EXISTS
CCF CCF
RET RET
; ;

View File

@ -1,3 +1,4 @@
; [x] fat32 ;!TEST
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
; INPUT: HL - "c:\dir\filename.ext",#00 without simbols * ? ; INPUT: HL - "c:\dir\filename.ext",#00 without simbols * ?
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
@ -27,26 +28,46 @@ DEL_FN: ;!TEST
CALL SEARCH.File CALL SEARCH.File
RET C RET C
; ¯®¬¥â¨âì § ¯¨áì ª ª "㤠«¥­­ ï" ; ¯®¬¥â¨âì § ¯¨áì ª ª "㤠«¥­­ ï"
;!TODO record index. ¢®§¬®¦­®, çâ® ¬®¦¥â á«®¬ âìáï, ¥á«¨ ¡®«ìè¥ áâà ­¨æë
.DELETE: .DELETE:
SET_PAGE_X DIRPAGE SET_PAGE_X DIRPAGE
EX AF,AF'
LD (IX + _sFAT_DIRECTORY_RECORD.NAME),#E5 ; ¯à¨§­ ª 㤠«¥­¨ï ä ©«  LD (IX + _sFAT_DIRECTORY_RECORD.NAME),#E5 ; ¯à¨§­ ª 㤠«¥­¨ï ä ©« 
; [ ] fat32 ; fat32
LD E,(IX+_sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L) ; ü ¯¥à¢®£® ª« áâ¥à  LD E,(IX+_sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_H) ; ü ¯¥à¢®£® ª« áâ¥à 
LD D,(IX+_sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L+1) LD D,(IX+_sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_H+1)
;
OUT (SLOT3),A
LD A,E LD A,E
OR D OR D
EXX
LD E,(IX+_sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L) ; ü ¯¥à¢®£® ª« áâ¥à 
LD D,(IX+_sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L+1)
OR D
OR E
;
EX AF,AF'
OUT (SLOT3),A
EX AF,AF'
JP Z,SAVEDIR ; á¡à®á¨âì ª¥è ª â «®£  ­  ¤¨áª JP Z,SAVEDIR ; á¡à®á¨âì ª¥è ª â «®£  ­  ¤¨áª
; ¥á«¨ à §¬¥à ä ©«  ­¥ ­®«ì
.loop: EX DE,HL ; hl=­®¬¥à ª« áâ¥à  .loop: EX DE,HL ; hl=­®¬¥à ª« áâ¥à 
EXX
EX DE,HL
EXX
CALL READ_FROM_FAT ; ¯à®ç¨â âì ¨§ ª¥è  FAT-  ­®¬¥à á«¥¤. ª« áâ¥à  CALL READ_FROM_FAT ; ¯à®ç¨â âì ¨§ ª¥è  FAT-  ­®¬¥à á«¥¤. ª« áâ¥à 
EXX
PUSH DE ; ­®¬¥à á«¥¤. ª« áâ¥à  PUSH DE ; ­®¬¥à á«¥¤. ª« áâ¥à 
PUSH AF PUSH AF
LD DE,#0000 ; ­®¬¥à ª« áâ¥à  LD DE,#0000 ; ­®¬¥à ª« áâ¥à 
EXX
PUSH DE
LD DE,#0000 ; ­®¬¥à ª« áâ¥à 
CALL WRITE_TO_FAT.Custom ; § ¯¨á âì ¢ ª¥è FAT-  ­®¬¥à ª« áâ¥à  CALL WRITE_TO_FAT.Custom ; § ¯¨á âì ¢ ª¥è FAT-  ­®¬¥à ª« áâ¥à 
POP AF POP AF
POP DE POP DE
EXX
POP DE
EXX
JP NC,.loop JP NC,.loop
CALL WRITE_FAT_TABLE ;!FIXIT ¬®¦¥â ­¥ ­ã¦­  âãâ? ’ ¬ ¤ «ìè¥ ¡ã¤¥â CALL WRITE_FAT_TABLE
JP SAVEDIR ; á¡à®á¨âì ª¥è ª â «®£  ­  ¤¨áª JP SAVEDIR ; á¡à®á¨âì ª¥è ª â «®£  ­  ¤¨áª
; ;

View File

@ -266,13 +266,13 @@ ERREXE: PUSH AF
_mDECTASK _mDECTASK
POP AF POP AF
RET RET
; ;!TODO áà ¢­¨âì á EXEC02
PRELOAD: EX DE,HL PRELOAD: EX DE,HL
LD DE,(CORE_BUFFERS.EXEBUFF.LD_ADDR) LD DE,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
LD A,D LD A,D
AND #3F AND #3F
LD D,A LD D,A
ADC HL,DE ADD HL,DE
XOR A XOR A
SLA H SLA H
RLA RLA

View File

@ -3,11 +3,11 @@
; B = 1 ‚ë§®¢ ä㭪樨 SETUP_CURSORS ¤«ï ¢®ááâ ­®¢«¥­¨ï á¨á⥬­ëå èà¨ä⮢ DSS ; ; B = 1 ‚ë§®¢ ä㭪樨 SETUP_CURSORS ¤«ï ¢®ááâ ­®¢«¥­¨ï á¨á⥬­ëå èà¨ä⮢ DSS ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LIB_SUB: LIB_SUB:
DJNZ 1F DJNZ .B_2
; func B = 1 ; func B = 1
JP SETUP_CURSORS JP SETUP_CURSORS
; ;
1: ; func B > 1 or 0 .B_2: ; func B > 1 or 0
SCF SCF
RET RET
; ;

View File

@ -1,3 +1,4 @@
; [x] fat32 ;!TEST
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #1B. ‘®§¤ ­¨¥ ª â «®£ . ; ”ã­ªæ¨ï #1B. ‘®§¤ ­¨¥ ª â «®£ .
; ;
@ -6,15 +7,14 @@
; ;
; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0 ; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
MKDIR:
;error ;error
MKDIR.DIR_EXISTS: .DIR_EXISTS: LD A,DSS_Error.sys.DIR_EXISTS
LD A,DSS_Error.sys.DIR_EXISTS
CCF CCF
RET RET
;
; Entry point ;!TEST Current Dir ;[x] 15/10/23
MKDIR: ;!TEST Current Dir ;[x] 15/10/23 .B: PUSH HL
PUSH HL
CALL DIR_PATH_CHECK CALL DIR_PATH_CHECK
POP HL POP HL
RET C RET C
@ -46,7 +46,7 @@ MKDIR: ;!TEST Current Dir ;[x] 15/10/23
; ;
CALL G_CLUST CALL G_CLUST
RET C RET C
; [x] fat32 ; fat32
PUSH HL ; ¬« ¤è¨© ­®¬¥à ᥪâ®à  PUSH HL ; ¬« ¤è¨© ­®¬¥à ᥪâ®à 
EXX EXX
PUSH HL ; áâ à訩 ­®¬¥à ᥪâ®à  PUSH HL ; áâ à訩 ­®¬¥à ᥪâ®à 
@ -69,28 +69,15 @@ MKDIR: ;!TEST Current Dir ;[x] 15/10/23
INC HL INC HL
DJNZ .loop1 DJNZ .loop1
; _sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_H ; _sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_H
; [x] fat32 § ¯¨áì áâ à襣® ­®¬¥à  ª« áâ¥à  .FIRST_CLUSTER_H ; fat32 § ¯¨áì áâ à襣® ­®¬¥à  ª« áâ¥à  .FIRST_CLUSTER_H
POP DE POP DE
PUSH DE ; áâ à訩 ­®¬¥à ᥪâ®à  PUSH DE ; áâ à訩 ­®¬¥à ᥪâ®à 
LD (HL),E LD (HL),E
INC HL INC HL
LD (HL),D LD (HL),D
INC HL INC HL
; [ ] fat32 & VFAT ;
PUSH HL CALL WRITE_DATE_TIME_TO_DIRECTORY_RECORD
CALL SYSTIME ; ã§­ âì ⥪. ¤ âã ¨ ¢à¥¬ï
CALL MK_TIME ; § ª®¤¨à®¢ âì ¢à¥¬ï/¤ âã
POP HL
; _sFAT_DIRECTORY_RECORD.TIME
LD (HL),E ; de=¢à¥¬ï
INC HL
LD (HL),D
INC HL
; _sFAT_DIRECTORY_RECORD.DATE
LD (HL),C ; ¤¥­ì
INC HL
LD (HL),B ; ¬¥áïæ
INC HL
; § ¯¨áì ¬« ¤è¥£® ­®¬¥à  ª« áâ¥à  .FIRST_CLUSTER_L ; § ¯¨áì ¬« ¤è¥£® ­®¬¥à  ª« áâ¥à  .FIRST_CLUSTER_L
POP BC ; áâ à訩 ­®¬¥à ᥪâ®à  POP BC ; áâ à訩 ­®¬¥à ᥪâ®à 
POP DE ; ¬« ¤è¨© ­®¬¥à ᥪâ®à  POP DE ; ¬« ¤è¨© ­®¬¥à ᥪâ®à 
@ -109,6 +96,9 @@ MKDIR: ;!TEST Current Dir ;[x] 15/10/23
; ;
CALL WRT_HND ; ᪮¯¨à. ­®¢ãî § ¯¨áì ¢ ᯨ᮪ ¤¨áª  (ª â «®£ ) CALL WRT_HND ; ᪮¯¨à. ­®¢ãî § ¯¨áì ¢ ᯨ᮪ ¤¨áª  (ª â «®£ )
;CALL SAVEDIR ; ¨ á¡à®á¨âì ª¥è ª â «®£  ­  ¤¨áª ;CALL SAVEDIR ; ¨ á¡à®á¨âì ª¥è ª â «®£  ­  ¤¨áª
;
; á®§¤ ñ¬ á«ã¦¥¡­ë¥ ª â «®£¨ "." ¨ ".." ¢ á®§¤ ­­®¬ ª â «®£¥
; Š€’€‹Žƒ "."
LD HL,CORE_BUFFERS.SECBUF ; ¡ãä¥à LD HL,CORE_BUFFERS.SECBUF ; ¡ãä¥à
LD (HL),"." ; § ¯¨áì ⥪. ª â «®£  LD (HL),"." ; § ¯¨áì ⥪. ª â «®£ 
LD BC,10*256 + ' ' ; !HARDCODE b=áç¥â稪, c=¯à®¡¥« LD BC,10*256 + ' ' ; !HARDCODE b=áç¥â稪, c=¯à®¡¥«
@ -120,32 +110,48 @@ MKDIR: ;!TEST Current Dir ;[x] 15/10/23
INC HL INC HL
LD DE,HANDBUF+_sFAT_DIRECTORY_RECORD.ATTRIBUT ; ï祩ª   âਡã⮢ ä ©«  LD DE,HANDBUF+_sFAT_DIRECTORY_RECORD.ATTRIBUT ; ï祩ª   âਡã⮢ ä ©« 
EX DE,HL EX DE,HL
LD BC,21 LD BC,21 ; !HARDCODE
LDIR LDIR
; Š€’€‹Žƒ ".."
EX DE,HL EX DE,HL
LD (HL),"." ; § ¯¨áì த¨â. ª â «®£  LD (HL),"." ; § ¯¨áì த¨â. ª â «®£ 
INC HL INC HL
LD (HL),"." LD (HL),"."
LD BC,9*256 + ' ' ; b=áç¥â稪, c=¯à®¡¥« LD BC,9*256 + ' ' ; b=áç¥â稪, c=¯à®¡¥«
.MKD03: INC HL .loop4: INC HL
LD (HL),C LD (HL),C
DJNZ .MKD03 DJNZ .loop4
; ;
INC HL INC HL
SET_PAGE_X DIRPAGE SET_PAGE_X DIRPAGE
PUSH AF PUSH AF
; ;
LD DE,DIRPAGE.buffer + _sFAT_DIRECTORY_RECORD.ATTRIBUT ;  âਡãâë § ¯¨á¨
;
LD A,(DIRPAGE.buffer) LD A,(DIRPAGE.buffer)
CP "." CP "."
LD DE,DIRPAGE.buffer + _sFAT_DIRECTORY_RECORD.ATTRIBUT ;  âਡãâë § ¯¨á¨ JR Z,.copy_dir_record
JP Z,.MKD04 ; fat32
LD IX,HANDBUF LD A,(FatBuffer.FAT_TYPE)
CP FAT_TYPE.x32
JR NZ,.fat16_root_dir
; fat 32
EX DE,HL
LD HL,(FatBuffer.RootDirStartCluster_L)
LD (HANDBUF + _sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L),HL
LD HL,(FatBuffer.RootDirStartCluster_H)
LD (HANDBUF + _sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_H),HL
EX DE,HL
JR .set_rec
;
.fat16_root_dir:; fat 12/16
;LD IX,HANDBUF
XOR A XOR A
; [ ] fat32 à §®¡à âìáï LD (HANDBUF + _sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L),A
LD (IX+_sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L),A LD (HANDBUF + _sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L+1),A
LD (IX+_sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L+1),A .set_rec: LD DE,HANDBUF + _sFAT_DIRECTORY_RECORD.ATTRIBUT ; ï祩ª   âਡã⮢ ä ©« 
LD DE,HANDBUF + _sFAT_DIRECTORY_RECORD.ATTRIBUT ; ï祩ª   âਡã⮢ ä ©«  .copy_dir_record:
.MKD04: EX DE,HL EX DE,HL
LD BC,HANDBUF.SIZE - _sFAT_DIRECTORY_RECORD.ATTRIBUT ; 21 LD BC,HANDBUF.SIZE - _sFAT_DIRECTORY_RECORD.ATTRIBUT ; 21
LDIR LDIR
POP AF POP AF
@ -181,11 +187,16 @@ MKDIR: ;!TEST Current Dir ;[x] 15/10/23
OUT (SLOT3),A OUT (SLOT3),A
; ;
LD HL,CORE_BUFFERS.SECBUF LD HL,CORE_BUFFERS.SECBUF
; [x] optimization
LD A,(HL)
OR A
JR Z,.skip_clean
;
LD DE,CORE_BUFFERS.SECBUF+1 LD DE,CORE_BUFFERS.SECBUF+1
LD BC,511 LD BC,511 ;!HARDCODE
LD (HL),0 LD (HL),0
LDIR LDIR
; .skip_clean: ;
POP IX POP IX
POP HL POP HL
INC IX INC IX

View File

@ -1,3 +1,4 @@
; [x] fat32 ;!TEST
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #11. Žâªàë⨥ ä ©« . ; ”ã­ªæ¨ï #11. Žâªàë⨥ ä ©« .
; ;
@ -12,6 +13,7 @@
; CF=1, A - ª®¤ ®è¨¡ª¨. ; CF=1, A - ª®¤ ®è¨¡ª¨.
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
OPEN_FN: ;!TEST Current Dir ;[x] 15/10/23 OPEN_FN: ;!TEST Current Dir ;[x] 15/10/23
;AND #7F ; ACCESS_MODE bit7 - ¤«ï ¢­ãâ७­¥£® ¨á¯®«ì§®¢ ­¨ï))) ;!TODO
LD (.TMP),A LD (.TMP),A
PUSH HL PUSH HL
CALL DIR_PATH_CHECK.forceCheck CALL DIR_PATH_CHECK.forceCheck
@ -50,12 +52,12 @@ OPEN_FN:;!TEST Current Dir ;[x] 15/10/23
LD A,(TASK) LD A,(TASK)
LD (IY+_sFM.TASK_NUM),A LD (IY+_sFM.TASK_NUM),A
XOR A XOR A
LD (IY+_sFM.OptimizedClusters),A
LD (IY+_sFM.KnownCluster_L),A LD (IY+_sFM.KnownCluster_L),A
LD (IY+_sFM.KnownCluster_L+1),A LD (IY+_sFM.KnownCluster_L+1),A
LD (IY+_sFM.KnownOffset_L),A LD (IY+_sFM.KnownOffset_L),A
LD (IY+_sFM.KnownOffset_L+1),A LD (IY+_sFM.KnownOffset_L+1),A
LD (IY+_sFM.OptimizedClusters),A ; fat32
; [x] fat32
LD (IY+_sFM.KnownCluster_H),A LD (IY+_sFM.KnownCluster_H),A
LD (IY+_sFM.KnownCluster_H+1),A LD (IY+_sFM.KnownCluster_H+1),A
LD (IY+_sFM.KnownOffset_H),A LD (IY+_sFM.KnownOffset_H),A
@ -67,14 +69,21 @@ OPEN_FN:;!TEST Current Dir ;[x] 15/10/23
LD (IY+_sFM.F_POSITION+3),A LD (IY+_sFM.F_POSITION+3),A
LD A,(FatBuffer.DRIVE) LD A,(FatBuffer.DRIVE)
LD (IY+_sFM.DRIVE),A LD (IY+_sFM.DRIVE),A
; [ ] fat32 ; fat32
LD HL,CORE_BUFFERS.FM_BUF+_sFM.FS_REC.FIRST_CLUSTER_L LD HL,CORE_BUFFERS.FM_BUF+_sFM.FS_REC.FIRST_CLUSTER_H
LD E,(HL) LD E,(HL)
INC HL INC HL
LD D,(HL) LD D,(HL)
; [ ] fat32 LD (IY+_sFM.DIR_CLUSTER_H),E
LD (IY+_sFM.DIR_CLUSTER),E LD (IY+_sFM.DIR_CLUSTER_H+1),D
LD (IY+_sFM.DIR_CLUSTER+1),D ;
LD HL,CORE_BUFFERS.FM_BUF+_sFM.FS_REC.FIRST_CLUSTER_L ; work directory FM
LD E,(HL)
INC HL
LD D,(HL)
LD (IY+_sFM.DIR_CLUSTER_L),E
LD (IY+_sFM.DIR_CLUSTER_L+1),D
;
EX AF,AF' EX AF,AF'
AND A AND A
RET RET

View File

@ -15,22 +15,23 @@ READ: LD (.R_POINT),HL
LD A,(IY+_sFM.DRIVE) LD A,(IY+_sFM.DRIVE)
CALL OPENDSK CALL OPENDSK
JP C,.ERR_1 JP C,.ERR_1
;<3B> áçñâ ᬥ饭¨ï ¢ ᥪâ®à å ;!HARDCODE sectro size CALL GET_OFFSET_IN_SECTORS
LD H,0 ;!HARDCODE max file size = 8 gb ; ;<3B> áçñâ ᬥ饭¨ï ¢ ᥪâ®à å ;!HARDCODE sector size
LD E,(IY+_sFM.F_POSITION+1) ; LD H,0 ;!HARDCODE max file size = 8 gb
LD D,(IY+_sFM.F_POSITION+2) ; LD E,(IY+_sFM.F_POSITION+1)
LD L,(IY+_sFM.F_POSITION+3) ; LD D,(IY+_sFM.F_POSITION+2)
LD A,E ; LD L,(IY+_sFM.F_POSITION+3)
AND #01 ; LD A,E
LD B,A ; AND #01
LD C,(IY+_sFM.F_POSITION) ; LD B,A
RR L ; LD C,(IY+_sFM.F_POSITION)
RR D ; RR L
RR E ; RR D
;HL:DE FP (in sectors) ; RR E
;BC FP residue (in bytes) ; ;HL:DE FP (in sectors)
; ; ;BC FP residue (in bytes)
OR C ; ;
; OR C
JP NZ,.ROV1 JP NZ,.ROV1
.ROV4: POP BC .ROV4: POP BC
PUSH BC PUSH BC
@ -145,9 +146,9 @@ READ: LD (.R_POINT),HL
JP .ROV4 JP .ROV4
; ;
.ERR_3: POP HL .ERR_3: POP HL
.ERR_2: POP HL POP HL
.ERR_1: POP BC .ERR_1: POP BC
SCF ;SCF
RET RET
; ;
.TEST_SIZE: XOR A .TEST_SIZE: XOR A

View File

@ -1,3 +1,4 @@
; [x] fat32 ;!TEST
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #1C. “¤ «¥­¨¥ ª â «®£ . ; ”ã­ªæ¨ï #1C. “¤ «¥­¨¥ ª â «®£ .
; Œ®¦­® 㤠«¨âì ⮫쪮 ¯ãá⮩ ª â «®£. ; Œ®¦­® 㤠«¨âì ⮫쪮 ¯ãá⮩ ª â «®£.
@ -37,15 +38,25 @@ RMDIR: ;!TEST Current Dir ;[x] 15/10/23
CALL LOADDIR CALL LOADDIR
CALL SEARCH.Dir CALL SEARCH.Dir
RET C RET C
; [ ] fat32 ; fat32
LD HL,(HANDBUF+_sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_H)
EXX
LD HL,(HANDBUF+_sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L) LD HL,(HANDBUF+_sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L)
PUSH IX PUSH IX ;!TODO record index. ¢®§¬®¦­®, çâ® ¬®¦¥â á«®¬ âìáï, ¥á«¨ ¡®«ìè¥ áâà ­¨æë
.RMD17: PUSH HL ;
;!TODO <20>à®æ¥¤ãà  ¯®«­®£® ¢ëç¨â뢠­¨ï ª â «®£  (¢á¥ ª« áâ¥àë). Œ®¦­® § ¤¥©á⢮¢ âì ¢ ¤àã£¨å ¬¥áâ å
.read_dir_big_loop:
PUSH HL
EXX
PUSH HL
EXX
CALL CLUSTER_TO_SECTOR CALL CLUSTER_TO_SECTOR
LD A,(CORE_BUFFERS.BootSector.SectorsPerCluster) LD A,(CORE_BUFFERS.BootSector.SectorsPerCluster)
LD B,A
LD C,Dss.DRV.Read
; ­ ç¨­ ¥¬ ¢ëç¨â뢠âì ᮤ¥à¦¨¬®¥ ª â «®£  ¯®á¥ªâ®à­® ; ­ ç¨­ ¥¬ ¢ëç¨â뢠âì ᮤ¥à¦¨¬®¥ ª â «®£  ¯®á¥ªâ®à­®
.read_dir_loop: .read_dir_loop: ;PUSH AF
PUSH AF PUSH BC
PUSH HL PUSH HL
PUSH IX PUSH IX
; ;
@ -54,7 +65,8 @@ RMDIR: ;!TEST Current Dir ;[x] 15/10/23
IN A,(SLOT0) IN A,(SLOT0)
OUT (SLOT3),A OUT (SLOT3),A
LD DE,CORE_BUFFERS.SECBUF+#C000 LD DE,CORE_BUFFERS.SECBUF+#C000
LD BC,1*256 + Dss.DRV.Read ;LD BC,1*256 + Dss.DRV.Read
LD B,1
LD A,(FatBuffer.DRIVE) LD A,(FatBuffer.DRIVE)
RST ToDSS.DRV RST ToDSS.DRV
POP AF POP AF
@ -77,8 +89,7 @@ RMDIR: ;!TEST Current Dir ;[x] 15/10/23
SBC HL,DE SBC HL,DE
AND FAT_ATTR.VOLUME_ID AND FAT_ATTR.VOLUME_ID
JP Z,.error ;DIR NOT EMPTY JP Z,.error ;DIR NOT EMPTY
.next_record: .next_record: LD DE,#0020
LD DE,#0020
ADD HL,DE ADD HL,DE
DJNZ .check_dir_loop DJNZ .check_dir_loop
; ;
@ -89,29 +100,39 @@ RMDIR: ;!TEST Current Dir ;[x] 15/10/23
OR XL OR XL
JR NZ,.no_inc_hl JR NZ,.no_inc_hl
INC HL INC HL
.no_inc_hl: .no_inc_hl: ; POP AF
POP AF ; DEC A
DEC A ; JR NZ,.read_dir_loop
JR NZ,.read_dir_loop POP BC
; [ ] fat32 DJNZ .read_dir_loop
; fat32
EXX
POP HL ; ­®¬¥à ª« áâ¥à 
EXX
POP HL ; ­®¬¥à ª« áâ¥à  POP HL ; ­®¬¥à ª« áâ¥à 
CALL READ_FROM_FAT ; ¯à®ç¨â âì ¨§ ª¥è  FAT-  ­®¬¥à á«¥¤. ª« áâ¥à  CALL READ_FROM_FAT ; ¯à®ç¨â âì ¨§ ª¥è  FAT-  ­®¬¥à á«¥¤. ª« áâ¥à 
EX DE,HL ; hl=­®¬¥à á«¥¤. ª« áâ¥à  EX DE,HL ; hl=­®¬¥à á«¥¤. ª« áâ¥à 
JR NC,.RMD17 ; ­¥ ª®­¥æ 楯®çª¨ EXX
.delete: EX DE,HL ; hl=­®¬¥à á«¥¤. ª« áâ¥à 
POP IX EXX
JR NC,.read_dir_big_loop ; ­¥ ª®­¥æ 楯®çª¨
;
.delete: POP IX
JP DEL_FN.DELETE ; ¯®¬¥â¨âì § ¯¨áì ª ª "㤠«¥­­ ï" JP DEL_FN.DELETE ; ¯®¬¥â¨âì § ¯¨áì ª ª "㤠«¥­­ ï"
.RMD15: POP IX ;
.RMD15: POP HL
POP HL
POP HL
POP HL POP HL
POP AF
POP HL POP HL
JR .delete JR .delete
; ;
.error: POP IX .error: POP HL
POP HL
POP HL
POP HL
POP HL POP HL
POP AF
POP HL POP HL
POP IX
LD A,DSS_Error.sys.DIR_NOT_EMPTY LD A,DSS_Error.sys.DIR_NOT_EMPTY
SCF SCF
RET RET

View File

@ -20,6 +20,7 @@ PUT_D_T:
POP BC POP BC
POP DE POP DE
RET C RET C
; [ ] VFAT
LD (IY + _sFM.FS_REC.TIME),E LD (IY + _sFM.FS_REC.TIME),E
LD (IY + _sFM.FS_REC.TIME+1),D LD (IY + _sFM.FS_REC.TIME+1),D
LD (IY + _sFM.FS_REC.DATE),C LD (IY + _sFM.FS_REC.DATE),C

View File

@ -30,31 +30,32 @@ WRITE: ;!TEST ;!TODO 5/12/23 ; [ ]
CALL SET_FM CALL SET_FM
JR C,.ERR1 JR C,.ERR1
LD A,(IY+_sFM.ACCESS_MODE) LD A,(IY+_sFM.ACCESS_MODE)
AND FAT_ATTR.READ_ONLY AND Dss.Open.R
JR NZ,.RD_ONLY JR NZ,.RD_ONLY
SET 7,(IY + _sFM.ACCESS_MODE) SET 7,(IY + _sFM.ACCESS_MODE)
SET 5,(IY + _sFM.FS_REC.ATTRIBUT) SET 5,(IY + _sFM.FS_REC.ATTRIBUT)
LD A,(IY + _sFM.DRIVE) LD A,(IY + _sFM.DRIVE)
CALL OPENDSK CALL OPENDSK
JR C,.ERR1 JR C,.ERR1
; CALL GET_OFFSET_IN_SECTORS
LD C,(IY+_sFM.F_POSITION) ; ;<3B> áçñâ ᬥ饭¨ï ¢ ᥪâ®à å ;!HARDCODE sector size
LD A,(IY+_sFM.F_POSITION+1) ; LD H,0 ;!HARDCODE max file size = 8 gb
LD E,A ; LD E,(IY+_sFM.F_POSITION+1)
AND #01 ; LD D,(IY+_sFM.F_POSITION+2)
LD B,A ; LD L,(IY+_sFM.F_POSITION+3)
LD D,(IY+_sFM.F_POSITION+2) ; LD A,E
LD L,(IY+_sFM.F_POSITION+3) ; AND #01
LD H,0 ; LD B,A
OR A ; LD C,(IY+_sFM.F_POSITION)
RR L ; RR L
RR D ; RR D
RR E ; RR E
; HL:DE - FP (in sectors) ; ;HL:DE FP (in sectors)
; BC - FP residue (in bytes) ; ;BC FP residue (in bytes)
LD A,B ; ;
OR C ; OR C
JP NZ,.WOV1 JP NZ,.WOV1
;
.WOV4: POP BC .WOV4: POP BC
PUSH BC PUSH BC
SRL B SRL B
@ -62,8 +63,7 @@ WRITE: ;!TEST ;!TODO 5/12/23 ; [ ]
PUSH HL PUSH HL
PUSH DE PUSH DE
PUSH BC PUSH BC
.R_POINT+2: .R_POINT+2: LD IX,0
LD IX,0
CALL BLOK_WRITE CALL BLOK_WRITE
POP BC POP BC
JR C,.ERR3 JR C,.ERR3

View File

@ -131,6 +131,7 @@ DISKINF:; [ ] 22/11/23
LD HL,2 LD HL,2
LD BC,0 LD BC,0
.FRESP: PUSH BC .FRESP: PUSH BC
; [ ] fat32
CALL READ_FROM_FAT CALL READ_FROM_FAT
POP BC POP BC
CP DSS_Error.sys.DISK_FULL CP DSS_Error.sys.DISK_FULL

View File

@ -96,7 +96,6 @@ SET_FM: CALL FM_FIND
RET RET
RES_FM: CALL FM_FIND RES_FM: CALL FM_FIND
; error ; error
; LD A,DSS_Error.sys.INVALID_HANDLE ; LD A,DSS_Error.sys.INVALID_HANDLE

View File

@ -446,6 +446,3 @@ CHECK_NAME:
SCF SCF
RET RET
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;

View File

@ -297,7 +297,7 @@ ADRST10: ;DS 512 ;,0
; 0 1 2 3 4 5 6 7 8 9 DEC HEX ; 0 1 2 3 4 5 6 7 8 9 DEC HEX
DB low F_START, low CHNDISK_FN, low CURDISK_FN,low DISKINF, low NOPS, low NOPS, low NOPS, low NOPS, low SCANDRV, low BOOTDSK ; 0 00..09 DB low F_START, low CHNDISK_FN, low CURDISK_FN,low DISKINF, low NOPS, low NOPS, low NOPS, low NOPS, low SCANDRV, low BOOTDSK ; 0 00..09
DB low CREATE, low CREATE.NEW, low NOPS, low NOPS, low DEL_FN, low NOPS, low RENAME, low OPEN_FN, low CLOSE_FN, low READ ; 1 0A..13 DB low CREATE, low CREATE.NEW, low NOPS, low NOPS, low DEL_FN, low NOPS, low RENAME, low OPEN_FN, low CLOSE_FN, low READ ; 1 0A..13
DB low WRITE, low MOVE_FP, low ATTRIB, low GET_D_T, low PUT_D_T, low F_FIRST, low F_NEXT, low MKDIR, low RMDIR, low CHDIR_FN ; 2 14..1D DB low WRITE, low MOVE_FP, low ATTRIB, low GET_D_T, low PUT_D_T, low F_FIRST, low F_NEXT, low MKDIR.B, low RMDIR, low CHDIR_FN ; 2 14..1D
DB low CURRDIR_FN,low NOPS, low NOPS, low SYSTIME, low SETTIME, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 3 1E..27 DB low CURRDIR_FN,low NOPS, low NOPS, low SYSTIME, low SETTIME, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 3 1E..27
DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low WAITKEY, low SCANKEY ; 4 28..31 DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low WAITKEY, low SCANKEY ; 4 28..31
DB low ECHOKEY, low CTRLKEY, low NOPS, low K_CLEAR, low K_SETUP, low TESTKEY, low SETWIN, low SETWIN1, low SETWIN2, low SETWIN3 ; 5 32..3B DB low ECHOKEY, low CTRLKEY, low NOPS, low K_CLEAR, low K_SETUP, low TESTKEY, low SETWIN, low SETWIN1, low SETWIN2, low SETWIN3 ; 5 32..3B
@ -324,7 +324,7 @@ ADRST10: ;DS 512 ;,0
;...............................................[HIGH ADDRESS]: ;...............................................[HIGH ADDRESS]:
DB high F_START, high CHNDISK_FN,high CURDISK_FN,high DISKINF,high NOPS, high NOPS, high NOPS, high NOPS, high SCANDRV, high BOOTDSK DB high F_START, high CHNDISK_FN,high CURDISK_FN,high DISKINF,high NOPS, high NOPS, high NOPS, high NOPS, high SCANDRV, high BOOTDSK
DB high CREATE, high CREATE.NEW,high NOPS, high NOPS, high DEL_FN, high NOPS, high RENAME, high OPEN_FN,high CLOSE_FN,high READ DB high CREATE, high CREATE.NEW,high NOPS, high NOPS, high DEL_FN, high NOPS, high RENAME, high OPEN_FN,high CLOSE_FN,high READ
DB high WRITE, high MOVE_FP, high ATTRIB, high GET_D_T,high PUT_D_T,high F_FIRST,high F_NEXT, high MKDIR, high RMDIR, high CHDIR_FN DB high WRITE, high MOVE_FP, high ATTRIB, high GET_D_T,high PUT_D_T,high F_FIRST,high F_NEXT, high MKDIR.B,high RMDIR, high CHDIR_FN
DB high CURRDIR_FN,high NOPS, high NOPS, high SYSTIME,high SETTIME,high NOPS, high NOPS, high NOPS, high NOPS, high NOPS DB high CURRDIR_FN,high NOPS, high NOPS, high SYSTIME,high SETTIME,high NOPS, high NOPS, high NOPS, high NOPS, high NOPS
DB high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high WAITKEY, high SCANKEY DB high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high WAITKEY, high SCANKEY
DB high ECHOKEY, high CTRLKEY, high NOPS, high K_CLEAR,high K_SETUP,high TESTKEY,high SETWIN, high SETWIN1,high SETWIN2, high SETWIN3 DB high ECHOKEY, high CTRLKEY, high NOPS, high K_CLEAR,high K_SETUP,high TESTKEY,high SETWIN, high SETWIN1,high SETWIN2, high SETWIN3

View File

@ -170,7 +170,7 @@ SEARCH:
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
; FIND "MASKAREA" IN DIRECTORY ; FIND "MASKAREA" IN DIRECTORY
; [ ] fat32 ; [x] fat32 ;!TEST
; ¢ë室: IY:DE - cluster number ; ¢ë室: IY:DE - cluster number
FINDDIR: FINDDIR:
SET_PAGE_X DIRPAGE SET_PAGE_X DIRPAGE
@ -292,7 +292,7 @@ FINDDIR:
; .MM3: LD (HL),0 ; .MM3: LD (HL),0
; ; JP IT_DIR ; ; JP IT_DIR
; ;
.IT_DIR: ; [ ] fat32 .IT_DIR:; fat32
LD E,(IX + _sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_H) LD E,(IX + _sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_H)
LD D,(IX + _sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_H+1) LD D,(IX + _sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_H+1)
LD YH,D LD YH,D
@ -338,7 +338,7 @@ CHECK_ZERO_CLUSTER:
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
; ¢å®¤: HL - ¨¬ï ¤¨à¥ªâ®à¨¨ ; ¢å®¤: HL - ¨¬ï ¤¨à¥ªâ®à¨¨
; [x] fat32 ; [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
@ -392,8 +392,8 @@ OPENDIR: LD IY,CORE_BUFFERS.FM_BUF
.SUBDIR3: CALL FINDDIR .SUBDIR3: CALL FINDDIR
RET C RET C
EX DE,HL EX DE,HL
LD (CORE_BUFFERS.FM_BUF + _sFM.FS_REC.FIRST_CLUSTER_L),HL ; [ ] fat32 LD (CORE_BUFFERS.FM_BUF + _sFM.FS_REC.FIRST_CLUSTER_L),HL ; fat32
LD (CORE_BUFFERS.FM_BUF + _sFM.FS_REC.FIRST_CLUSTER_H),IY ; [ ] fat32 LD (CORE_BUFFERS.FM_BUF + _sFM.FS_REC.FIRST_CLUSTER_H),IY ; fat32
LD HL,#4000 ;!HARDCODE LD HL,#4000 ;!HARDCODE
LD (CORE_BUFFERS.FM_BUF + _sFM.FS_REC.F_SIZE),HL LD (CORE_BUFFERS.FM_BUF + _sFM.FS_REC.F_SIZE),HL
;EX DE,HL ;EX DE,HL

View File

@ -610,7 +610,7 @@ GET_FAT16_CELL:
AND FAT_CACHE.Part_Mask_16 AND FAT_CACHE.Part_Mask_16
; ;
ADD HL,HL ; HL - FAT OFFSET (FROM CASH) ADD HL,HL ; HL - FAT OFFSET (FROM CASH)
; [ ] fat32 ¯®¬¥­ï«áï ¢å®¤ ¢ ¯à®æ¥¤ãàã READ_FAT_TABLE. <20> ­ìè¥ ­®¬¥à ¡«®ª  ¢ ॣ. A ¯¥à¥¤ ¢ «áï ; [x] fat32 ¯®¬¥­ï«áï ¢å®¤ ¢ ¯à®æ¥¤ãàã READ_FAT_TABLE. <20> ­ìè¥ ­®¬¥à ¡«®ª  ¢ ॣ. A ¯¥à¥¤ ¢ «áï
; LD BC,(FatBuffer.CacheBlock) ; BC - BLOCK FAT IN CASH ; LD BC,(FatBuffer.CacheBlock) ; BC - BLOCK FAT IN CASH
; CP C ; CP C
LD DE,(FatBuffer.CacheBlock) ; BC - BLOCK FAT IN CASH LD DE,(FatBuffer.CacheBlock) ; BC - BLOCK FAT IN CASH
@ -1220,6 +1220,50 @@ SaveGotCluster: LD A,C
RET RET
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
;----------------------------------------------------------------------;
; ‚室: HL -  ¤à¥á ªã¤  ¯¨á âì
; ‚ë室: HL -  ¤à¥á á«¥¤ãî騩 ¯®á«¥ § ¯¨á ­®£®
WRITE_DATE_TIME_TO_DIRECTORY_RECORD:
; [ ] fat32 & VFAT date
PUSH HL
CALL SYSTIME ; ã§­ âì ⥪. ¤ âã ¨ ¢à¥¬ï
CALL MK_TIME ; § ª®¤¨à®¢ âì ¢à¥¬ï/¤ âã
POP HL
; _sFAT_DIRECTORY_RECORD.TIME
LD (HL),E ; de=¢à¥¬ï
INC HL
LD (HL),D
INC HL
; _sFAT_DIRECTORY_RECORD.DATE
LD (HL),C ; ¤¥­ì
INC HL
LD (HL),B ; ¬¥áïæ
INC HL
RET
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
;<3B> áçñâ ᬥ饭¨ï ¢ ᥪâ®à å ;!HARDCODE sector size
GET_OFFSET_IN_SECTORS:
LD H,0 ;!HARDCODE max file size = 8 gb
LD E,(IY+_sFM.F_POSITION+1)
LD D,(IY+_sFM.F_POSITION+2)
LD L,(IY+_sFM.F_POSITION+3)
LD A,E
AND #01
LD B,A
LD C,(IY+_sFM.F_POSITION)
RR L
RR D
RR E
;HL:DE FP (in sectors)
;BC FP residue (in bytes)
;
OR C
RET
;----------------------------------------------------------------------;
;!TODO fat32 ;!TODO fat32
;======================================================================= ;=======================================================================

View File

@ -35,22 +35,28 @@
; .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 ;!TODO 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
.FS_REC: _sFAT_DIRECTORY_RECORD .FS_REC: _sFAT_DIRECTORY_RECORD
; from Core ; from Core
.F_POSITION: DWORD #00000000 ;+ #20 +32 FILE POSITION (FP) .F_POSITION: DWORD #00000000 ;+ #20 +32 FILE POSITION (FP)
.DIR_CLUSTER: WORD #0000 ;+ #24 +36 DIRECTORY CLUSTER .DIR_CLUSTER_L: WORD #0000 ;+ #24 +36 DIRECTORY CLUSTER LOW
.HANDLE: WORD #0000 ;+ #26 +38 HANDLE NUMBER .DIR_CLUSTER_H: WORD #0000 ;+ #24 +38 DIRECTORY CLUSTER HIGH ; [x] fat32
.DRIVE: BYTE #00 ;+ #28 +40 DRIVE OR CURRENT .HANDLE: WORD #0000 ;+ #28 +40 HANDLE NUMBER
.ACCESS_MODE: BYTE #00 ;+ #29 +41 ACCESS MODE ¯à¨§­ ª ¨§¬¥­¥­¨ï ä ©«  .DRIVE: BYTE #00 ;+ #2A +42 DRIVE OR CURRENT
.TASK_NUM: BYTE #00 ;+ #2A +42 TASK .ACCESS_MODE: BYTE #00 ;+ #2B +43 ACCESS MODE
.OptimizedClusters BYTE #00 ;+ #2B +43 .TASK_NUM: BYTE #00 ;+ #2C +44 TASK
.KnownCluster_L: WORD #0000 ;+ #2C +44 Œ« ¤è¥¥ á«®¢® ­®¬¥à  ª« áâ¥à  ¤«ï ª®â®à®£® ¨§¢¥áâ­® ®â­®á¨â¥«ì­®¥ ᬥ饭¨¥ ¢­ãâਠ䠩«  .OptimizedClusters BYTE #00 ;+ #2D +45
.KnownCluster_H: WORD #0000 ;+ #2E +46 ‘â à襥 á«®¢® ­®¬¥à  ª« áâ¥à  ¤«ï ª®â®à®£® ¨§¢¥áâ­® ®â­®á¨â¥«ì­®¥ ᬥ饭¨¥ ¢­ãâਠ䠩«  .KnownCluster_L: WORD #0000 ;+ #2E +46 Œ« ¤è¥¥ á«®¢® ­®¬¥à  ª« áâ¥à  ¤«ï ª®â®à®£® ¨§¢¥áâ­® ®â­®á¨â¥«ì­®¥ ᬥ饭¨¥ ¢­ãâਠ䠩« 
.KnownOffset_L: WORD #0000 ;+ #30 +48 Œ« ¤è¥¥ á«®¢® ᬥ饭¨ï (¢ ª« áâ¥à å) ®â­®á¨â¥«ì­® ­ ç «  ä ©«  ¤«ï á®åà ­¥­­®£® ­®¬¥à  ª« áâ¥à . .KnownCluster_H: WORD #0000 ;+ #30 +48 ‘â à襥 á«®¢® ­®¬¥à  ª« áâ¥à  ¤«ï ª®â®à®£® ¨§¢¥áâ­® ®â­®á¨â¥«ì­®¥ ᬥ饭¨¥ ¢­ãâਠ䠩« 
.KnownOffset_H: WORD #0000 ;+ #32 +50 ‘â à襥 á«®¢® ᬥ饭¨ï (¢ ª« áâ¥à å) ®â­®á¨â¥«ì­® ­ ç «  ä ©«  ¤«ï á®åà ­¥­­®£® ­®¬¥à  ª« áâ¥à . .KnownOffset_L: WORD #0000 ;+ #32 +50 Œ« ¤è¥¥ á«®¢® ᬥ饭¨ï (¢ ª« áâ¥à å) ®â­®á¨â¥«ì­® ­ ç «  ä ©«  ¤«ï á®åà ­¥­­®£® ­®¬¥à  ª« áâ¥à .
.KnownOffset_H: WORD #0000 ;+ #34 +52 ‘â à襥 á«®¢® ᬥ饭¨ï (¢ ª« áâ¥à å) ®â­®á¨â¥«ì­® ­ ç «  ä ©«  ¤«ï á®åà ­¥­­®£® ­®¬¥à  ª« áâ¥à .
ENDS ENDS
;ACCESS MODE: A=0 ç⥭¨¥/§ ¯¨áì
; A=1 ç⥭¨¥
; A=2 § ¯¨áì
; ;!TODO A=3 § ¯¨áì ¡¥§ «¨è­¨å á®åà ­¥­¨© ªíè  FAT
; ;!TODO A=4 § ¯¨á âì ªíè FAT
; ;
; ;

View File

@ -1 +1 @@
956 949