mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 17:31:47 +03:00
FAT_X done
This commit is contained in:
parent
4fd82287e9
commit
b515b2429f
@ -40,7 +40,7 @@ CLOSE_FN:
|
|||||||
;
|
;
|
||||||
SET_PAGE_X DIRPAGE
|
SET_PAGE_X DIRPAGE
|
||||||
;
|
;
|
||||||
;TEST 9/11/23
|
;!TEST 9/11/23 record index
|
||||||
; LD HL,DIR
|
; LD HL,DIR
|
||||||
; LD DE,#0020
|
; LD DE,#0020
|
||||||
; LD C,(IY+_sFM.HANDLE)
|
; LD C,(IY+_sFM.HANDLE)
|
||||||
|
|||||||
@ -3,26 +3,17 @@
|
|||||||
; C - #19
|
; C - #19
|
||||||
; HL - 㪠§ ⥫ì ä ©«®¢ãî ᯥæ¨ä¨ª æ¨î
|
; HL - 㪠§ ⥫ì ä ©«®¢ãî ᯥæ¨ä¨ª æ¨î
|
||||||
; DE - à ¡®ç¨© ¡ãä¥à 44 ¡ ©â , ¥á«¨ B=0, ¨ ç¥ 256 ¡ ©â
|
; DE - à ¡®ç¨© ¡ãä¥à 44 ¡ ©â , ¥á«¨ B=0, ¨ ç¥ 256 ¡ ©â
|
||||||
; ;!!!!! á ¬®¬ ¤¥«¥ ¯®ª çâ® ¥á«¨ B=1, à ¡®ç¨© ¡ãä¥à 46 ¡ ©â
|
|
||||||
; A - âਡãâë, ¨á¯®«ì§ã¥¬ë¥ ¯à¨ ¯®¨áª¥
|
; A - âਡãâë, ¨á¯®«ì§ã¥¬ë¥ ¯à¨ ¯®¨áª¥
|
||||||
; B = 0 - ¨¬ï ©¤¥®£® ä ©« ¢ ä®à¬ ⥠11 ¡ ©â "FilenameExt"
|
; B = #00 - ¨¬ï ©¤¥®£® ä ©« ¢ ä®à¬ ⥠11 ¡ ©â "FilenameExt"
|
||||||
; B = 1 - ¨¬ï ©¤¥®£® ä ©« ¢ ä®à¬ ⥠DOS "filename.ext",0
|
; B = #01 - ¨¬ï ©¤¥®£® ä ©« ¢ ä®à¬ ⥠DOS "filename.ext",0
|
||||||
|
; ¯®¨áª ¡¥§ ®£à ¨ç¥¨¥ à §¬¥à ª â «®£ :
|
||||||
|
; !TODO B = #02 - ¨¬ï ©¤¥®£® ä ©« ¢ ä®à¬ ⥠DOS + LFN
|
||||||
|
; !TODO B = #80 - ¨¬ï ©¤¥®£® ä ©« ¢ ä®à¬ ⥠11 ¡ ©â "FilenameExt"
|
||||||
|
; !TODO B = #81 - ¨¬ï ©¤¥®£® ä ©« ¢ ä®à¬ ⥠DOS "filename.ext",0
|
||||||
;‚ëå®¤ë¥ § 票ï:
|
;‚ëå®¤ë¥ § 票ï:
|
||||||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
F_FIRST:
|
F_FIRST:
|
||||||
; Current Dir [x] 15/10/23
|
|
||||||
; LD C,A
|
|
||||||
; PUSH HL
|
|
||||||
; PUSH DE
|
|
||||||
; PUSH BC
|
|
||||||
; CALL DIR_PATH_CHECK
|
|
||||||
; POP BC
|
|
||||||
; POP DE
|
|
||||||
; POP HL
|
|
||||||
; RET C
|
|
||||||
; LD A,C
|
|
||||||
; ;
|
|
||||||
LD (.TMP),A
|
LD (.TMP),A
|
||||||
LD (.DTABUF),DE
|
LD (.DTABUF),DE
|
||||||
LD A,B
|
LD A,B
|
||||||
@ -50,7 +41,8 @@ F_FIRST:
|
|||||||
LD (DE),A
|
LD (DE),A
|
||||||
.FIND_S:
|
.FIND_S:
|
||||||
INC DE
|
INC DE
|
||||||
LD BC,#0020
|
;!TODO «ãçè¥ âã⠨ᯮ«ì§®¢ âì ª ª ¢ record index ¤«ï ¯¥à¥¡®à ª â «®£ > #4000 bytes
|
||||||
|
LD BC,#0020 ;!HARDCODE à §¬¥à ®¤®© § ¯¨á¨ ª â «®£
|
||||||
ADD IX,BC
|
ADD IX,BC
|
||||||
LD (F_NEXT.CURHND),IX
|
LD (F_NEXT.CURHND),IX
|
||||||
LD HL,HANDBUF+12 ;!HARDCODE
|
LD HL,HANDBUF+12 ;!HARDCODE
|
||||||
@ -112,7 +104,7 @@ F_NEXT:
|
|||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
CPL
|
CPL
|
||||||
LD C,A
|
LD C,A
|
||||||
;TEST 9/11/23
|
;!TEST 9/11/23 record index
|
||||||
; EXX
|
; EXX
|
||||||
; LD DE,0
|
; LD DE,0
|
||||||
; EXX
|
; EXX
|
||||||
|
|||||||
@ -26,14 +26,14 @@ OPEN_FN:;!TEST Current Dir ;[x] 15/10/23
|
|||||||
RET C
|
RET C
|
||||||
.FILE: CALL SEARCH.File ; enter point from EXEC, CREATE
|
.FILE: CALL SEARCH.File ; enter point from EXEC, CREATE
|
||||||
RET C
|
RET C
|
||||||
;!TEST 㪠§ â¥«ì § ¯¨áì ¢ ª â «®£¥ FS
|
;!TEST 9/11/23 record index
|
||||||
PUSH DE ; á®åà 塞 㪠§ â¥«ì § ¯¨áì ¢ ª â «®£¥ FS (¯®«ãç¥ ¨§ SEARCH)
|
PUSH DE ; á®åà 塞 㪠§ â¥«ì § ¯¨áì ¢ ª â «®£¥ FS (¯®«ãç¥ ¨§ SEARCH)
|
||||||
;R002 ;
|
;R002 ;
|
||||||
.FM: CALL GET_FM ; enter point from ATTRIB
|
.FM: CALL GET_FM ; enter point from ATTRIB
|
||||||
RET C
|
RET C
|
||||||
LD A,C
|
LD A,C
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
;!TEST 㪠§ â¥«ì § ¯¨áì ¢ ª â «®£¥ FS
|
;!TEST 9/11/23 record index 㪠§ â¥«ì § ¯¨áì ¢ ª â «®£¥ FS
|
||||||
POP DE
|
POP DE
|
||||||
; EXX
|
; EXX
|
||||||
LD (IY+_sFM.HANDLE),E
|
LD (IY+_sFM.HANDLE),E
|
||||||
|
|||||||
@ -64,7 +64,7 @@ WRITE: ;!TEST ;!TODO 5/12/23 ; [ ]
|
|||||||
PUSH BC
|
PUSH BC
|
||||||
.R_POINT+2:
|
.R_POINT+2:
|
||||||
LD IX,0
|
LD IX,0
|
||||||
CALL BLOK_WR
|
CALL BLOK_WRITE
|
||||||
POP BC
|
POP BC
|
||||||
JR C,.ERR3
|
JR C,.ERR3
|
||||||
LD C,B
|
LD C,B
|
||||||
@ -114,7 +114,7 @@ WRITE: ;!TEST ;!TODO 5/12/23 ; [ ]
|
|||||||
PUSH AF
|
PUSH AF
|
||||||
IN A,(SLOT0)
|
IN A,(SLOT0)
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
CALL BLOK_WR
|
CALL BLOK_WRITE
|
||||||
POP BC
|
POP BC
|
||||||
LD C,SLOT3
|
LD C,SLOT3
|
||||||
OUT (C),B
|
OUT (C),B
|
||||||
@ -192,7 +192,7 @@ WRITE: ;!TEST ;!TODO 5/12/23 ; [ ]
|
|||||||
PUSH AF
|
PUSH AF
|
||||||
IN A,(SLOT0)
|
IN A,(SLOT0)
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
CALL BLOK_WR
|
CALL BLOK_WRITE
|
||||||
POP BC
|
POP BC
|
||||||
LD C,SLOT3
|
LD C,SLOT3
|
||||||
OUT (C),B
|
OUT (C),B
|
||||||
|
|||||||
@ -276,8 +276,8 @@ OPENDIR:;[x] some optimizations
|
|||||||
.REROOT1:
|
.REROOT1:
|
||||||
LD DE,0
|
LD DE,0
|
||||||
;[x] some optimizations
|
;[x] some optimizations
|
||||||
;LD (IY+_sFM.FIRST_CLUSTER_L),E
|
; LD (IY+_sFM.FIRST_CLUSTER_L),E
|
||||||
;LD (IY+_sFM.FIRST_CLUSTER_L+1),D
|
; LD (IY+_sFM.FIRST_CLUSTER_L+1),D
|
||||||
; [ ] fat32
|
; [ ] fat32
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD (CORE_BUFFERS.FM_BUF + _sFM.FS_REC.FIRST_CLUSTER_L),HL
|
LD (CORE_BUFFERS.FM_BUF + _sFM.FS_REC.FIRST_CLUSTER_L),HL
|
||||||
|
|||||||
@ -18,7 +18,7 @@
|
|||||||
SEARCH:
|
SEARCH:
|
||||||
.Dir: ;LD A,FAT_ATTR.DIRECTORY
|
.Dir: ;LD A,FAT_ATTR.DIRECTORY
|
||||||
LD A,FAT_ATTR.HiddenSysDir
|
LD A,FAT_ATTR.HiddenSysDir
|
||||||
CALL SEARCH.Custom
|
CALL .Custom
|
||||||
RET NC
|
RET NC
|
||||||
CP DSS_Error.sys.PATH_NOT_FOUND + 1
|
CP DSS_Error.sys.PATH_NOT_FOUND + 1
|
||||||
RET C
|
RET C
|
||||||
@ -36,7 +36,9 @@ SEARCH:
|
|||||||
CPL
|
CPL
|
||||||
LD C,A
|
LD C,A
|
||||||
LD IX,DIRPAGE.buffer
|
LD IX,DIRPAGE.buffer
|
||||||
;[x] 9/11/23 <20>―⨬¨§ ζ¨ο €«ο ¨€₯ͺα § ―¨α¨ ’ α―¨αͺ₯ ͺ β «<C2A0>£ (’<>§¬<C2A7>¦<C2A6> ―<> €<C2A0>‘¨βαο ’₯ΰγβμ)
|
;!TEST 9/11/23 record index
|
||||||
|
; ®¯â¨¬¨§ æ¨ï ¤«ï ¨¤¥ªá § ¯¨á¨ ¢ ᯨ᪥ ª â «®£ .
|
||||||
|
; <09>® ¤®¡¨âáï ¢¥àãâì ¤«ï ¯¥à¥¡®à ª â «®£ > #4000 ¡ ©â
|
||||||
; EXX
|
; EXX
|
||||||
; LD DE,0
|
; LD DE,0
|
||||||
; EXX
|
; EXX
|
||||||
@ -67,18 +69,17 @@ SEARCH:
|
|||||||
;
|
;
|
||||||
LD D,XH
|
LD D,XH
|
||||||
LD E,XL
|
LD E,XL
|
||||||
;[x] 9/11/23 <20>―⨬¨§ ζ¨ο €«ο ¨€₯ͺα § ―¨α¨ ’ α―¨αͺ₯ ͺ β «<C2A0>£ (’<>§¬<C2A7>¦<C2A6> ―<> €<C2A0>‘¨βαο ’₯ΰγβμ)
|
;!TEST 9/11/23 record index
|
||||||
EXX
|
; EXX
|
||||||
; LD D,XH
|
; PUSH DE
|
||||||
; LD E,XL
|
; EXX
|
||||||
PUSH IX
|
PUSH IX
|
||||||
EXX
|
|
||||||
;
|
;
|
||||||
LD HL,HANDBUF
|
LD HL,HANDBUF
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD BC,HANDBUF.SIZE
|
LD BC,HANDBUF.SIZE
|
||||||
LDIR
|
LDIR
|
||||||
;[x] 9/11/23 <20>―⨬¨§ ζ¨ο €«ο ¨€₯ͺα § ―¨α¨ ’ α―¨αͺ₯ ͺ β «<C2A0>£ (’<>§¬<C2A7>¦<C2A6> ―<> €<C2A0>‘¨βαο γ€ «¨βμ)
|
;!TEST 9/11/23 record index
|
||||||
POP DE
|
POP DE
|
||||||
;
|
;
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
@ -87,7 +88,7 @@ SEARCH:
|
|||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
.next_record:
|
.next_record:
|
||||||
;[x] 9/11/23 <20>―⨬¨§ ζ¨ο €«ο ¨€₯ͺα § ―¨α¨ ’ α―¨αͺ₯ ͺ β «<C2A0>£ (’<>§¬<C2A7>¦<C2A6> ―<> €<C2A0>‘¨βαο ’₯ΰγβμ)
|
;!TEST 9/11/23 record index
|
||||||
; EXX
|
; EXX
|
||||||
; INC DE
|
; INC DE
|
||||||
; EXX
|
; EXX
|
||||||
@ -96,7 +97,6 @@ SEARCH:
|
|||||||
ADD IX,DE
|
ADD IX,DE
|
||||||
JR NC,.loop
|
JR NC,.loop
|
||||||
.error_too_many_files:
|
.error_too_many_files:
|
||||||
;POP AF
|
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD A,DSS_Error.sys.TOO_MANY_FILES_IN_DIR
|
LD A,DSS_Error.sys.TOO_MANY_FILES_IN_DIR
|
||||||
@ -104,7 +104,6 @@ SEARCH:
|
|||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
.error_file_not_found:
|
.error_file_not_found:
|
||||||
;POP AF
|
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD A,DSS_Error.sys.FILE_NOT_FOUND
|
LD A,DSS_Error.sys.FILE_NOT_FOUND
|
||||||
@ -383,7 +382,7 @@ WRT_HND: SET_PAGE_X DIRPAGE
|
|||||||
;
|
;
|
||||||
;LD IX,DIRPAGE.buffer
|
;LD IX,DIRPAGE.buffer
|
||||||
LD HL,DIRPAGE.buffer
|
LD HL,DIRPAGE.buffer
|
||||||
;TEST 9/11/23
|
;!TEST 9/11/23 record index
|
||||||
; EXX
|
; EXX
|
||||||
; LD DE,0
|
; LD DE,0
|
||||||
; EXX
|
; EXX
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
; FAT 12-16
|
; FAT 12-16-32
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
;[BEGIN]
|
;[BEGIN]
|
||||||
@ -13,8 +13,8 @@
|
|||||||
;RX01 10-02-1999 DNS UPGRADE FAT CASH
|
;RX01 10-02-1999 DNS UPGRADE FAT CASH
|
||||||
;---------------------------------------------------------------
|
;---------------------------------------------------------------
|
||||||
|
|
||||||
; “áâ ®¢¨âì ç «ìë© ª« áâ¥à ¤«ï ç⥨ï
|
|
||||||
; [x] fat32 ;!TEST
|
; [x] fat32 ;!TEST
|
||||||
|
; “áâ ®¢¨âì ç «ìë© ª« áâ¥à ¤«ï ç⥨ï
|
||||||
R_CLUST: LD HL,#0001
|
R_CLUST: LD HL,#0001
|
||||||
LD (G_CLUST.low),HL
|
LD (G_CLUST.low),HL
|
||||||
DEC L
|
DEC L
|
||||||
@ -22,6 +22,7 @@ R_CLUST: LD HL,#0001
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
;
|
||||||
; [x] fat32 ;!TEST
|
; [x] fat32 ;!TEST
|
||||||
; ©â¨ ¯¥à¢ë© ᢮¡®¤ë© ª« áâ¥à ;!TODO ¯à®¢¥à¨âì ¯¥à¥¡®à ª« áâ¥à®¢
|
; ©â¨ ¯¥à¢ë© ᢮¡®¤ë© ª« áâ¥à ;!TODO ¯à®¢¥à¨âì ¯¥à¥¡®à ª« áâ¥à®¢
|
||||||
; ¢ë室: HL - ¬« ¤è¨© ®¬¥à ᢮¡®¤®£® ª« áâ¥à
|
; ¢ë室: HL - ¬« ¤è¨© ®¬¥à ᢮¡®¤®£® ª« áâ¥à
|
||||||
@ -56,11 +57,12 @@ G_CLUST: ;
|
|||||||
EXX
|
EXX
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
;
|
||||||
|
; [x] fat32 ;!TEST
|
||||||
; <20>ਪ९¨âì ª ¯®á«¥¤¥¬ã ª« áâ¥àã æ¥¯®çª¨ ®¢ë© ¯ãá⮩ ª« áâ¥à
|
; <20>ਪ९¨âì ª ¯®á«¥¤¥¬ã ª« áâ¥àã æ¥¯®çª¨ ®¢ë© ¯ãá⮩ ª« áâ¥à
|
||||||
; ‚室: HL':HL - ®¬¥à ª« áâ¥à ª ª®â®à®¬ã ¯à¨ªà¥¯¨âì ¯ãá⮩
|
; ‚室: HL':HL - ®¬¥à ª« áâ¥à ª ª®â®à®¬ã ¯à¨ªà¥¯¨âì ¯ãá⮩
|
||||||
; ‚ë室: HL':HL - ®¬¥à ª« áâ¥à ª ª®â®à®¬ã ¯à¨ªà¥¯¨«áï ¯ãá⮩
|
; ‚ë室: HL':HL - ®¬¥à ª« áâ¥à ª ª®â®à®¬ã ¯à¨ªà¥¯¨«áï ¯ãá⮩
|
||||||
; DE':DE - ®¬¥à ¯ãá⮣® ª« áâ¥à
|
; DE':DE - ®¬¥à ¯ãá⮣® ª« áâ¥à
|
||||||
; [x] fat32 ;!TEST
|
|
||||||
INC_FAT:
|
INC_FAT:
|
||||||
PUSH HL ; ⥪ã騩 ª« áâ¥à
|
PUSH HL ; ⥪ã騩 ª« áâ¥à
|
||||||
EXX
|
EXX
|
||||||
@ -107,9 +109,9 @@ INC_FAT:
|
|||||||
;RX01
|
;RX01
|
||||||
|
|
||||||
|
|
||||||
; ¢å®¤: de = ¬« ¤è¥¥ á«®¢® ®¬¥à ª« áâ¥à ¤«ï áà ¢¥¨ï á FAT_Max_Cluster
|
|
||||||
; de' = áâ à襥 á«®¢® ®¬¥à ª« áâ¥à ¤«ï áà ¢¥¨ï á FAT_Max_Cluster (⮫쪮 ¤«ï fat32)
|
|
||||||
; [x] fat32 ;!TEST
|
; [x] fat32 ;!TEST
|
||||||
|
; ¢å®¤: hl = ¬« ¤è¥¥ á«®¢® ®¬¥à ª« áâ¥à ¤«ï áà ¢¥¨ï á FAT_Max_Cluster
|
||||||
|
; hl' = áâ à襥 á«®¢® ®¬¥à ª« áâ¥à ¤«ï áà ¢¥¨ï á FAT_Max_Cluster (⮫쪮 ¤«ï fat32)
|
||||||
CHECK_CLUSTER_IS_SMALLER:
|
CHECK_CLUSTER_IS_SMALLER:
|
||||||
LD A,(FatBuffer.FAT_TYPE)
|
LD A,(FatBuffer.FAT_TYPE)
|
||||||
XOR FAT_TYPE.x32
|
XOR FAT_TYPE.x32
|
||||||
@ -133,20 +135,21 @@ CHECK_CLUSTER_IS_SMALLER:
|
|||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD A,DSS_Error.sys.DISK_FULL
|
LD A,DSS_Error.sys.DISK_FULL
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
|
|
||||||
|
;
|
||||||
|
;[x] fat32 ;!TEST
|
||||||
;------------------------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------------------------
|
||||||
; <20>à®ç¨â âì ¨§ ª¥è FAT- ®¬¥à á«¥¤. ª« áâ¥à
|
; <20>à®ç¨â âì ¨§ ª¥è FAT- ®¬¥à á«¥¤. ª« áâ¥à
|
||||||
; ¢å®¤: hl - ®¬¥à ª« áâ¥à (¬« ¤è¥¥ á«®¢®)
|
; ¢å®¤: hl - ®¬¥à ª« áâ¥à (¬« ¤è¥¥ á«®¢®)
|
||||||
; hl' - ®¬¥à ª« áâ¥à (áâ à襥 á«®¢®. ⮫쪮 ¤«ï FAT32)
|
; hl' - ®¬¥à ª« áâ¥à (áâ à襥 á«®¢®. ⮫쪮 ¤«ï FAT32)
|
||||||
; ¢ë室: hl - ®¬¥à ª« áâ¥à (¬« ¤è¥¥ á«®¢®)
|
; ¢ë室: hl - ®¬¥à ª« áâ¥à (¬« ¤è¥¥ á«®¢®)
|
||||||
; hl' - ®¬¥à ª« áâ¥à (áâ à襥 á«®¢®)
|
; hl' - ®¬¥à ª« áâ¥à (áâ à襥 á«®¢®)
|
||||||
; de - ®¬¥à á«¥¤. ª« áâ¥à (¬« ¤è¥¥ á«®¢®)
|
; de - ®¬¥à á«¥¤. ª« áâ¥à (¬« ¤è¥¥ á«®¢®)
|
||||||
; de' - ®¬¥à á«¥¤. ª« áâ¥à (áâ à襥 á«®¢®)
|
; de' - ®¬¥à á«¥¤. ª« áâ¥à (áâ à襥 á«®¢®)
|
||||||
; ¥á«¨ DE':DE = 0, â® ª« áâ¥à HL':HL ᢮¡®¤¥
|
; ¥á«¨ DE':DE = 0, â® ª« áâ¥à HL':HL ᢮¡®¤¥
|
||||||
; CF - ª®¥æ 楯®çª¨
|
; CF - ª®¥æ 楯®çª¨
|
||||||
;------------------------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------------------------
|
||||||
;[x] fat32 ;!TEST
|
|
||||||
READ_FROM_FAT: CALL CHECK_CLUSTER_IS_SMALLER
|
READ_FROM_FAT: CALL CHECK_CLUSTER_IS_SMALLER
|
||||||
RET C
|
RET C
|
||||||
;
|
;
|
||||||
@ -172,6 +175,7 @@ READ_FROM_FAT: CALL CHECK_CLUSTER_IS_SMALLER
|
|||||||
; ¯à®¢¥àª á«ã¦. ª« áâ¥àë
|
; ¯à®¢¥àª á«ã¦. ª« áâ¥àë
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
POP HL
|
POP HL
|
||||||
|
;!FIXIT fat32 ¯¥à¥áâà 客ª
|
||||||
EXX
|
EXX
|
||||||
LD H,A
|
LD H,A
|
||||||
LD L,A
|
LD L,A
|
||||||
@ -180,6 +184,7 @@ READ_FROM_FAT: CALL CHECK_CLUSTER_IS_SMALLER
|
|||||||
EXX
|
EXX
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
|
;
|
||||||
.FAT12: CALL GET_FAT12_CELL
|
.FAT12: CALL GET_FAT12_CELL
|
||||||
LD E,(HL)
|
LD E,(HL)
|
||||||
INC HL
|
INC HL
|
||||||
@ -236,17 +241,20 @@ READ_FROM_FAT: CALL CHECK_CLUSTER_IS_SMALLER
|
|||||||
LD A,B
|
LD A,B
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
;
|
||||||
|
; [x] fat32 ;!TEST
|
||||||
;------------------------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------------------------
|
||||||
; ‡ ¯¨á âì ¢ ª¥è FAT- ®¬¥à ª« áâ¥à
|
; ‡ ¯¨á âì ¢ ª¥è FAT- ®¬¥à ª« áâ¥à
|
||||||
; ¢å®¤: hl = ¬« ¤è¥¥ á«®¢® ®¬¥à ª« áâ¥à ¢ ª®â®àë© § ¯¨á âì
|
; ¢å®¤: hl = ¬« ¤è¥¥ á«®¢® ®¬¥à ª« áâ¥à ¢ ª®â®àë© § ¯¨á âì
|
||||||
; hl' = áâ à襥 á«®¢® ®¬¥à ª« áâ¥à ¢ ª®â®àë© § ¯¨á âì (⮫쪮 ¤«ï fat32)
|
; hl' = áâ à襥 á«®¢® ®¬¥à ª« áâ¥à ¢ ª®â®àë© § ¯¨á âì (⮫쪮 ¤«ï fat32)
|
||||||
|
; .Custom:
|
||||||
; de = ¬« ¤è¥¥ á«®¢® ®¬¥à ª« áâ¥à ª®â®à®¥ ¢¯¨á âì
|
; de = ¬« ¤è¥¥ á«®¢® ®¬¥à ª« áâ¥à ª®â®à®¥ ¢¯¨á âì
|
||||||
; de' = áâ à襥 á«®¢® ®¬¥à ª« áâ¥à ª®â®à®¥ ¢¯¨á âì (⮫쪮 ¤«ï fat32)
|
; de' = áâ à襥 á«®¢® ®¬¥à ª« áâ¥à ª®â®à®¥ ¢¯¨á âì (⮫쪮 ¤«ï fat32)
|
||||||
; ¢ë室: HL':HL â ª¨¥ ¦¥ ª ª ¨ ¢å®¤¥
|
; ¢ë室: HL':HL â ª¨¥ ¦¥ ª ª ¨ ¢å®¤¥
|
||||||
; .Custom:
|
; .Custom:
|
||||||
; HL':HL ¨ DE':DE â ª¨¥ ¦¥ ª ª ¨ ¢å®¤¥
|
; HL':HL ¨ DE':DE â ª¨¥ ¦¥ ª ª ¨ ¢å®¤¥
|
||||||
;------------------------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------------------------
|
||||||
; [x] fat32 ;!TEST
|
|
||||||
WRITE_TO_FAT: LD DE,(FatBuffer.ENDCLUS_LOW) ; ®¬¥à ª« áâ¥à
|
WRITE_TO_FAT: LD DE,(FatBuffer.ENDCLUS_LOW) ; ®¬¥à ª« áâ¥à
|
||||||
EXX
|
EXX
|
||||||
LD DE,(FatBuffer.ENDCLUS_HIGH) ; ®¬¥à ª« áâ¥à
|
LD DE,(FatBuffer.ENDCLUS_HIGH) ; ®¬¥à ª« áâ¥à
|
||||||
@ -346,11 +354,11 @@ WRITE_TO_FAT: LD DE,(FatBuffer.ENDCLUS_LOW) ;
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; [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
|
||||||
; B = 0
|
; B = 0
|
||||||
; [x] fat32 ;!TEST
|
|
||||||
GET_SECTOR_OF_FAT:
|
GET_SECTOR_OF_FAT:
|
||||||
LD A,(FatBuffer.FAT_TYPE)
|
LD A,(FatBuffer.FAT_TYPE)
|
||||||
LD B,FAT_CACHE.Degree_32 ;!FIXIT ᤥ« âì ç¥à¥§ ¯¥à¥¬¥ãî
|
LD B,FAT_CACHE.Degree_32 ;!FIXIT ᤥ« âì ç¥à¥§ ¯¥à¥¬¥ãî
|
||||||
@ -385,10 +393,10 @@ GET_SECTOR_OF_FAT:
|
|||||||
;;;;;;;;;
|
;;;;;;;;;
|
||||||
|
|
||||||
|
|
||||||
|
; [x] fat32 ;!TEST
|
||||||
;RE_FAT:
|
;RE_FAT:
|
||||||
;RX01
|
;RX01
|
||||||
; <20>à®ç¨â âì ¢ ª¥è •• ᥪâ®à®¢ FAT-
|
; <20>à®ç¨â âì ¢ ª¥è •• ᥪâ®à®¢ FAT-
|
||||||
; [x] fat32 ;!TEST
|
|
||||||
; DE - NEW FAT BLOCK
|
; DE - NEW FAT BLOCK
|
||||||
READ_FAT_TABLE: PUSH HL
|
READ_FAT_TABLE: PUSH HL
|
||||||
PUSH DE
|
PUSH DE
|
||||||
@ -425,8 +433,8 @@ READ_FAT_TABLE: PUSH HL
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
||||||
; <20>®¤ª«îç¨âì ¡ ªã ª¥è FAT ¨ § ¯¨á âì ¥£® ¤¨áª
|
|
||||||
; [x] fat32 ;!TEST
|
; [x] fat32 ;!TEST
|
||||||
|
; <20>®¤ª«îç¨âì ¡ ªã ª¥è FAT ¨ § ¯¨á âì ¥£® ¤¨áª
|
||||||
WRITE_FAT_TABLE:
|
WRITE_FAT_TABLE:
|
||||||
SET_PAGE_X FATPAGE
|
SET_PAGE_X FATPAGE
|
||||||
PUSH AF
|
PUSH AF
|
||||||
@ -543,10 +551,10 @@ WRITE_FAT_TABLE:
|
|||||||
JP ToDSS.DRV
|
JP ToDSS.DRV
|
||||||
|
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
;¢å®¤: HL':HL - ®¬¥à ª« áâ¥à
|
|
||||||
;¢ë室: HL - ¤à¥á 㦮© ï祩ª¨ ¢ áâà ¨æ¥ FATPAGE
|
|
||||||
;
|
;
|
||||||
;[x] fat32 ;!TEST
|
;[x] fat32 ;!TEST
|
||||||
|
;¢å®¤: HL':HL - ®¬¥à ª« áâ¥à
|
||||||
|
;¢ë室: HL - ¤à¥á 㦮© ï祩ª¨ ¢ áâà ¨æ¥ FATPAGE
|
||||||
GET_FAT32_CELL:
|
GET_FAT32_CELL:
|
||||||
; ¤¢¨£ ¥¬ ¢«¥¢® HL':H
|
; ¤¢¨£ ¥¬ ¢«¥¢® HL':H
|
||||||
LD A,H
|
LD A,H
|
||||||
@ -572,7 +580,7 @@ GET_FAT32_CELL:
|
|||||||
LD H,A
|
LD H,A
|
||||||
ADD HL,HL
|
ADD HL,HL
|
||||||
ADD HL,HL
|
ADD HL,HL
|
||||||
PUSH HL ; [ ] fat32 á®åà 塞 á«ãç ©, ¥á«¨ READ_FAT_TABLE ¨á¯®àâ¨â
|
PUSH HL ; [ç] fat32 á®åà 塞 á«ãç ©, ¥á«¨ READ_FAT_TABLE ¨á¯®àâ¨â
|
||||||
AND A
|
AND A
|
||||||
;
|
;
|
||||||
EXX
|
EXX
|
||||||
@ -663,10 +671,10 @@ GET_FAT12_CELL:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;[x] fat32 ;!TEST
|
||||||
;NSECTOR:
|
;NSECTOR:
|
||||||
; in: HL':HL - CLUSTER
|
; in: HL':HL - CLUSTER
|
||||||
; out: HL:IX - SECTOR
|
; out: HL:IX - SECTOR
|
||||||
;[x] fat32 ;!TEST
|
|
||||||
CLUSTER_TO_SECTOR:
|
CLUSTER_TO_SECTOR:
|
||||||
EXX
|
EXX
|
||||||
PUSH HL
|
PUSH HL
|
||||||
@ -705,17 +713,16 @@ CLUSTER_TO_SECTOR:
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
; [x] fat32 ;!TEST
|
||||||
; 225ÿ937ÿ408 / 512 = 0x6BBC4 / 4 = 0x1AEF1
|
; READ SECTORS OF FILE
|
||||||
;
|
; ¢å®¤: HL:DE - FP (in sectors)
|
||||||
;READ SECTORS OF FILE
|
; IY - FM
|
||||||
;HL:DE - FP (in sectors)
|
|
||||||
; B - Amount sectors
|
|
||||||
; IX - buffer in RAM
|
; IX - buffer in RAM
|
||||||
; [ ] fat32
|
; B - ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥨ï
|
||||||
BLOCK_READ: PUSH BC
|
BLOCK_READ: LD (READ.PointerOnBuffer),IX
|
||||||
LD (READ.PointerOnBuffer),IX
|
|
||||||
LD A,(CORE_BUFFERS.BootSector.SectorsPerCluster) ;SECTORS PER CLUSTER
|
LD A,(CORE_BUFFERS.BootSector.SectorsPerCluster) ;SECTORS PER CLUSTER
|
||||||
|
LD C,A
|
||||||
|
PUSH BC ; B - ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥨ï, C - SectorsPerCluster
|
||||||
; HL:DE / A => DE:BC, H=0, L - ®áâ ⮪
|
; HL:DE / A => DE:BC, H=0, L - ®áâ ⮪
|
||||||
CALL DIV_for_SPC
|
CALL DIV_for_SPC
|
||||||
PUSH HL ; ®áâ ⮪ DIV_for_SPC
|
PUSH HL ; ®áâ ⮪ DIV_for_SPC
|
||||||
@ -723,16 +730,17 @@ BLOCK_READ: PUSH BC
|
|||||||
PUSH BC ; ¬« ¤è¥¥ á«®¢® ®¬¥à ª« áâ¥à
|
PUSH BC ; ¬« ¤è¥¥ á«®¢® ®¬¥à ª« áâ¥à
|
||||||
PUSH DE ; [x] fat32 áâ à襥 á«®¢® ®¬¥à ª« áâ¥à
|
PUSH DE ; [x] fat32 áâ à襥 á«®¢® ®¬¥à ª« áâ¥à
|
||||||
;
|
;
|
||||||
EXX
|
; EXX
|
||||||
LD L,(IY+_sFM.FS_REC.FIRST_CLUSTER_H) ; START CLUSTER High
|
; LD L,(IY+_sFM.FS_REC.FIRST_CLUSTER_H) ; START CLUSTER High
|
||||||
LD H,(IY+_sFM.FS_REC.FIRST_CLUSTER_H+1)
|
; LD H,(IY+_sFM.FS_REC.FIRST_CLUSTER_H+1)
|
||||||
LD A,L
|
; LD A,L
|
||||||
OR H
|
; OR H
|
||||||
EXX
|
; EXX
|
||||||
LD L,(IY+_sFM.FS_REC.FIRST_CLUSTER_L) ; START CLUSTER Low
|
; LD L,(IY+_sFM.FS_REC.FIRST_CLUSTER_L) ; START CLUSTER Low
|
||||||
LD H,(IY+_sFM.FS_REC.FIRST_CLUSTER_L+1)
|
; LD H,(IY+_sFM.FS_REC.FIRST_CLUSTER_L+1)
|
||||||
OR L
|
; OR L
|
||||||
OR H
|
; OR H
|
||||||
|
CALL CHECK_FIRST_CLUSTER
|
||||||
JR Z,.fast_exit_4
|
JR Z,.fast_exit_4
|
||||||
CALL GetSavedCluster
|
CALL GetSavedCluster
|
||||||
;HL': HL - ¨§¢¥áâë© ª« áâ¥à ä ©« ¤«ï ®âáçñâ
|
;HL': HL - ¨§¢¥áâë© ª« áâ¥à ä ©« ¤«ï ®âáçñâ
|
||||||
@ -771,28 +779,32 @@ BLOCK_READ: PUSH BC
|
|||||||
;;;;
|
;;;;
|
||||||
;
|
;
|
||||||
;[x] GET/SAVE CLUSTER NUMBER BEFORE/AFTER READ/WRITE
|
;[x] GET/SAVE CLUSTER NUMBER BEFORE/AFTER READ/WRITE
|
||||||
POP DE
|
POP DE ; [x] fat32 áâ à襥 á«®¢® ®¬¥à ª« áâ¥à
|
||||||
POP BC ; B - Amount sectors
|
POP BC ; ¬« ¤è¥¥ á«®¢® ®¬¥à ª« áâ¥à
|
||||||
CALL SaveGotCluster
|
CALL SaveGotCluster
|
||||||
;
|
;
|
||||||
POP DE ; D = 0, E = ®áâ ⮪ DIV_for_SPC
|
POP DE ; D = 0, E = ®áâ ⮪ DIV_for_SPC
|
||||||
POP BC ; B = Amount sectors
|
POP BC ; B - ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥨ï, C - SectorsPerCluster
|
||||||
; (SP) = (RET)
|
; (SP) = (RET)
|
||||||
; à ¡®â á ®áâ ⪮¬ ®â ¤¥«¥¨ï
|
; à ¡®â á ®áâ ⪮¬ ®â ¤¥«¥¨ï
|
||||||
LD A,(CORE_BUFFERS.BootSector.SectorsPerCluster)
|
LD A,C
|
||||||
SUB E
|
SUB E
|
||||||
LD C,A
|
LD C,A
|
||||||
CP B
|
CP B ; (SectorsPerCluster - ®áâ ⮪) - ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥨ï
|
||||||
JR C,.skip1 ;SIZE > RESIDUE CLUSTER
|
JR C,.skip1 ; SIZE > RESIDUE CLUSTER
|
||||||
LD C,B ;SIZE < CLUSTER
|
LD C,B ; SIZE < CLUSTER
|
||||||
.skip1: LD A,B
|
.skip1: LD A,B
|
||||||
SUB C
|
SUB C
|
||||||
LD B,A
|
LD B,A
|
||||||
|
;
|
||||||
|
EXX
|
||||||
|
PUSH HL ; ®¬¥à ª« áâ¥à áâ àè ï ç áâì
|
||||||
|
EXX
|
||||||
PUSH HL ; ®¬¥à ª« áâ¥à ¬« ¤è ï ç áâì
|
PUSH HL ; ®¬¥à ª« áâ¥à ¬« ¤è ï ç áâì
|
||||||
PUSH BC
|
PUSH BC ; B = ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤®ç¨âªã, C = (SectorsPerCluster - ®áâ ⮪) «¨¡® ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥨ï
|
||||||
PUSH DE
|
PUSH DE ; D = 0, E = ®áâ ⮪ DIV_for_SPC
|
||||||
CALL CLUSTER_TO_SECTOR
|
CALL CLUSTER_TO_SECTOR
|
||||||
POP DE
|
POP DE ; D = 0, E = ®áâ ⮪ DIV_for_SPC
|
||||||
ADD IX,DE
|
ADD IX,DE
|
||||||
JR NC,.skip2
|
JR NC,.skip2
|
||||||
INC HL
|
INC HL
|
||||||
@ -801,23 +813,24 @@ BLOCK_READ: PUSH BC
|
|||||||
LD B,C
|
LD B,C
|
||||||
LD C,Dss.DRV.Read
|
LD C,Dss.DRV.Read
|
||||||
RST ToDSS.DRV
|
RST ToDSS.DRV
|
||||||
|
;
|
||||||
JR C,.Error
|
JR C,.Error
|
||||||
; [ ] fat32 ???
|
POP BC ; B = ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤®ç¨âªã, C = (SectorsPerCluster - ®áâ ⮪) «¨¡® ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥨ï
|
||||||
POP BC
|
|
||||||
LD HL,(READ.PointerOnBuffer)
|
LD HL,(READ.PointerOnBuffer)
|
||||||
LD DE,(CORE_BUFFERS.BootSector.BytesPerSector)
|
LD DE,(CORE_BUFFERS.BootSector.BytesPerSector)
|
||||||
;!TEST
|
;!TEST
|
||||||
LD A,B
|
LD A,B
|
||||||
LD B,C
|
LD B,C
|
||||||
.loop2: ADD HL,DE
|
.loop2: ADD HL,DE
|
||||||
;DEC C
|
|
||||||
;JR NZ,.loop2
|
|
||||||
DJNZ .loop2
|
DJNZ .loop2
|
||||||
|
;
|
||||||
LD (READ.PointerOnBuffer),HL
|
LD (READ.PointerOnBuffer),HL
|
||||||
POP DE
|
POP DE ; ®¬¥à ª« áâ¥à ¬« ¤è ï ç áâì
|
||||||
;LD A,B
|
EXX
|
||||||
|
POP HL ; ®¬¥à ª« áâ¥à áâ àè ï ç áâì
|
||||||
|
EXX
|
||||||
OR A
|
OR A
|
||||||
RET Z
|
RET Z ; ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤®ç¨âªã = 0?
|
||||||
LD B,A
|
LD B,A
|
||||||
;
|
;
|
||||||
.loop4: LD HL,CORE_BUFFERS.BootSector.SectorsPerCluster
|
.loop4: LD HL,CORE_BUFFERS.BootSector.SectorsPerCluster
|
||||||
@ -834,11 +847,17 @@ BLOCK_READ: PUSH BC
|
|||||||
;
|
;
|
||||||
.BLOKRD7: EX DE,HL
|
.BLOKRD7: EX DE,HL
|
||||||
PUSH BC
|
PUSH BC
|
||||||
|
; HL':HL - ®¬¥à ª« áâ¥à
|
||||||
CALL READ_FROM_FAT
|
CALL READ_FROM_FAT
|
||||||
POP BC
|
POP BC
|
||||||
JR C,.ECL1 ;RY01
|
JR C,.ECL1 ;RY01
|
||||||
|
;
|
||||||
|
EXX
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
PUSH HL
|
PUSH HL ; ®¬¥à á«¥¤. ª« áâ¥à (áâ à襥 á«®¢®)
|
||||||
|
EXX
|
||||||
|
EX DE,HL
|
||||||
|
PUSH HL ; ®¬¥à á«¥¤. ª« áâ¥à (¬« ¤è¥¥ á«®¢®)
|
||||||
PUSH BC
|
PUSH BC
|
||||||
CALL CLUSTER_TO_SECTOR
|
CALL CLUSTER_TO_SECTOR
|
||||||
LD DE,(READ.PointerOnBuffer)
|
LD DE,(READ.PointerOnBuffer)
|
||||||
@ -847,6 +866,7 @@ BLOCK_READ: PUSH BC
|
|||||||
LD C,Dss.DRV.Read
|
LD C,Dss.DRV.Read
|
||||||
RST ToDSS.DRV
|
RST ToDSS.DRV
|
||||||
JR C,.Error
|
JR C,.Error
|
||||||
|
;
|
||||||
POP BC
|
POP BC
|
||||||
LD HL,(READ.PointerOnBuffer)
|
LD HL,(READ.PointerOnBuffer)
|
||||||
LD DE,(CORE_BUFFERS.BootSector.BytesPerSector)
|
LD DE,(CORE_BUFFERS.BootSector.BytesPerSector)
|
||||||
@ -854,11 +874,15 @@ BLOCK_READ: PUSH BC
|
|||||||
DEC C
|
DEC C
|
||||||
JR NZ,.loop3
|
JR NZ,.loop3
|
||||||
LD (READ.PointerOnBuffer),HL
|
LD (READ.PointerOnBuffer),HL
|
||||||
POP DE
|
POP DE ; ®¬¥à á«¥¤. ª« áâ¥à (¬« ¤è¥¥ á«®¢®)
|
||||||
|
EXX
|
||||||
|
POP HL ; ®¬¥à á«¥¤. ª« áâ¥à (áâ à襥 á«®¢®)
|
||||||
|
EXX
|
||||||
JP .loop4
|
JP .loop4
|
||||||
;
|
;
|
||||||
.Error: POP BC
|
.Error: POP BC
|
||||||
POP DE
|
POP DE
|
||||||
|
POP HL
|
||||||
;SCF
|
;SCF
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
@ -866,34 +890,12 @@ BLOCK_READ: PUSH BC
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
; BLOK_WR.Error:
|
|
||||||
; POP BC
|
|
||||||
; ;[x] GET/SAVE CLUSTER NUMBER BEFORE/AFTER READ/WRITE
|
|
||||||
; POP BC
|
|
||||||
;
|
|
||||||
; BLOK_WR.ErrorWrite:
|
|
||||||
; POP BC
|
|
||||||
; POP DE
|
|
||||||
; LD A,DSS_Error.sys.WRITE_ERROR
|
|
||||||
; SCF
|
|
||||||
; RET
|
|
||||||
;
|
|
||||||
|
|
||||||
|
; [x] fat32
|
||||||
;WRITE SECTORS OF FILE
|
; ¢å®¤: IY - FM
|
||||||
;HL:DE - FP (in sectors), IX - data in RAM
|
; ¢ë室: HL':HL - first cluster
|
||||||
; B - Amount sectors
|
; ZF = 0 ¥á«¨ ¯¥à¢®£® ª« áâ¥à ¥â
|
||||||
; [ ] fat32
|
CHECK_FIRST_CLUSTER:
|
||||||
BLOK_WR: PUSH BC
|
|
||||||
LD (READ.PointerOnBuffer),IX
|
|
||||||
LD A,(CORE_BUFFERS.BootSector.SectorsPerCluster) ;SECTORS PER CLUSTER
|
|
||||||
; HL:DE / A => DE:BC, H=0, L - ®áâ ⮪
|
|
||||||
CALL DIV_for_SPC
|
|
||||||
PUSH HL ; ®áâ ⮪ DIV_for_SPC
|
|
||||||
;[x] GET/SAVE CLUSTER NUMBER BEFORE/AFTER READ/WRITE
|
|
||||||
PUSH BC ; ¬« ¤è¥¥ á«®¢® ®¬¥à ª« áâ¥à
|
|
||||||
PUSH DE ; [x] fat32 áâ à襥 á«®¢® ®¬¥à ª« áâ¥à
|
|
||||||
;
|
|
||||||
EXX
|
EXX
|
||||||
LD L,(IY+_sFM.FS_REC.FIRST_CLUSTER_H) ; START CLUSTER High
|
LD L,(IY+_sFM.FS_REC.FIRST_CLUSTER_H) ; START CLUSTER High
|
||||||
LD H,(IY+_sFM.FS_REC.FIRST_CLUSTER_H+1)
|
LD H,(IY+_sFM.FS_REC.FIRST_CLUSTER_H+1)
|
||||||
@ -904,19 +906,48 @@ BLOK_WR: PUSH BC
|
|||||||
LD H,(IY+_sFM.FS_REC.FIRST_CLUSTER_L+1)
|
LD H,(IY+_sFM.FS_REC.FIRST_CLUSTER_L+1)
|
||||||
OR L
|
OR L
|
||||||
OR H
|
OR H
|
||||||
|
RET
|
||||||
|
|
||||||
|
; [x] fat32 ;!TEST
|
||||||
|
; WRITE SECTORS OF FILE
|
||||||
|
; ¢å®¤: HL:DE - FP (in sectors)
|
||||||
|
; IX - data in RAM
|
||||||
|
; IY - FM
|
||||||
|
; B - ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï § ¯¨á¨
|
||||||
|
BLOK_WRITE: LD (READ.PointerOnBuffer),IX
|
||||||
|
LD A,(CORE_BUFFERS.BootSector.SectorsPerCluster) ;SECTORS PER CLUSTER
|
||||||
|
LD C,A
|
||||||
|
PUSH BC ; B - ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥨ï, C - SectorsPerCluster
|
||||||
|
; HL:DE / A => DE:BC, H=0, L - ®áâ ⮪
|
||||||
|
CALL DIV_for_SPC
|
||||||
|
PUSH HL ; ®áâ ⮪ DIV_for_SPC
|
||||||
|
;[x] GET/SAVE CLUSTER NUMBER BEFORE/AFTER READ/WRITE
|
||||||
|
PUSH BC ; ¬« ¤è¥¥ á«®¢® ®¬¥à ª« áâ¥à
|
||||||
|
PUSH DE ; [x] 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
|
||||||
JR NZ,.FindCluster
|
JR NZ,.FindCluster
|
||||||
;
|
;
|
||||||
PUSH BC ; ¬« ¤è¥¥ á«®¢® ®¬¥à ª« áâ¥à
|
PUSH BC ; ¬« ¤è¥¥ á«®¢® ®¬¥à ª« áâ¥à
|
||||||
PUSH DE ; [x] fat32 áâ à襥 á«®¢® ®¬¥à ª« áâ¥à
|
PUSH DE ; [x] fat32 áâ à襥 á«®¢® ®¬¥à ª« áâ¥à
|
||||||
; [ ] fat32
|
; [x] fat32
|
||||||
CALL G_CLUST
|
CALL G_CLUST
|
||||||
JP C,.Error_6
|
JP C,.Error_6
|
||||||
;
|
;
|
||||||
LD (IY+_sFM.FS_REC.FIRST_CLUSTER_L),L
|
LD (IY+_sFM.FS_REC.FIRST_CLUSTER_L),L
|
||||||
LD (IY+_sFM.FS_REC.FIRST_CLUSTER_L+1),H
|
LD (IY+_sFM.FS_REC.FIRST_CLUSTER_L+1),H
|
||||||
; [ ] fat32
|
; [x] fat32
|
||||||
EXX
|
EXX
|
||||||
LD HL,0 ;!FIXIT
|
|
||||||
LD (IY+_sFM.FS_REC.FIRST_CLUSTER_H),L ; START CLUSTER High
|
LD (IY+_sFM.FS_REC.FIRST_CLUSTER_H),L ; START CLUSTER High
|
||||||
LD (IY+_sFM.FS_REC.FIRST_CLUSTER_H+1),H
|
LD (IY+_sFM.FS_REC.FIRST_CLUSTER_H+1),H
|
||||||
EXX
|
EXX
|
||||||
@ -949,19 +980,11 @@ BLOK_WR: PUSH BC
|
|||||||
CALL READ_FROM_FAT
|
CALL READ_FROM_FAT
|
||||||
JR NC,.next
|
JR NC,.next
|
||||||
; end of chain - get new cluster
|
; end of chain - get new cluster
|
||||||
; [ ] fat32
|
|
||||||
; PUSH HL
|
|
||||||
; EXX
|
|
||||||
; PUSH HL
|
|
||||||
; EXX
|
|
||||||
CALL INC_FAT
|
CALL INC_FAT
|
||||||
; EXX
|
|
||||||
; POP HL
|
|
||||||
; EXX
|
|
||||||
; POP HL
|
|
||||||
JP C,.Error_6
|
JP C,.Error_6
|
||||||
|
; [x] ¨§¡ëâ®ç®¥ ®¡à 饨¥ 01/04/2024
|
||||||
|
;CALL READ_FROM_FAT
|
||||||
;
|
;
|
||||||
CALL READ_FROM_FAT
|
|
||||||
.next: POP BC
|
.next: POP BC
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
EXX
|
EXX
|
||||||
@ -981,49 +1004,58 @@ BLOK_WR: PUSH BC
|
|||||||
POP BC
|
POP BC
|
||||||
CALL SaveGotCluster
|
CALL SaveGotCluster
|
||||||
;
|
;
|
||||||
POP DE
|
POP DE ; D = 0, E = ®áâ ⮪ DIV_for_SPC
|
||||||
POP BC
|
POP BC ; B - ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥨ï, C - SectorsPerCluster
|
||||||
; (SP) = (RET)
|
; (SP) = (RET)
|
||||||
;
|
;
|
||||||
LD A,(CORE_BUFFERS.BootSector.SectorsPerCluster)
|
LD A,C
|
||||||
SUB E
|
SUB E
|
||||||
LD C,A
|
LD C,A
|
||||||
CP B
|
CP B ; (SectorsPerCluster - ®áâ ⮪) - ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥨ï
|
||||||
JR C,.WR3 ;SIZE > RESIDUE CLUSTER
|
JR C,.skip1 ;SIZE > RESIDUE CLUSTER
|
||||||
LD C,B ;SIZE < CLUSTER
|
LD C,B ;SIZE < CLUSTER
|
||||||
.WR3: LD A,B
|
.skip1: LD A,B
|
||||||
SUB C
|
SUB C
|
||||||
LD B,A
|
LD B,A
|
||||||
PUSH HL
|
;
|
||||||
PUSH BC
|
EXX
|
||||||
PUSH DE
|
PUSH HL ; ®¬¥à ª« áâ¥à áâ àè ï ç áâì
|
||||||
|
EXX
|
||||||
|
PUSH HL ; ®¬¥à ª« áâ¥à ¬« ¤è ï ç áâì
|
||||||
|
PUSH BC ; B = ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤®ç¨âªã, C = (SectorsPerCluster - ®áâ ⮪) «¨¡® ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥨ï
|
||||||
|
PUSH DE ; D = 0, E = ®áâ ⮪ DIV_for_SPC
|
||||||
CALL CLUSTER_TO_SECTOR
|
CALL CLUSTER_TO_SECTOR
|
||||||
POP DE
|
POP DE ; D = 0, E = ®áâ ⮪ DIV_for_SPC
|
||||||
ADD IX,DE
|
ADD IX,DE
|
||||||
JR NC,.WR4
|
JR NC,.skip2
|
||||||
INC HL
|
INC HL
|
||||||
; DOUBLE 1
|
; DOUBLE 1
|
||||||
.WR4: LD DE,(READ.PointerOnBuffer)
|
.skip2: LD DE,(READ.PointerOnBuffer)
|
||||||
LD A,(FatBuffer.DRIVE)
|
LD A,(FatBuffer.DRIVE)
|
||||||
LD B,C
|
LD B,C
|
||||||
LD C,Dss.DRV.Write
|
LD C,Dss.DRV.Write
|
||||||
RST ToDSS.DRV
|
RST ToDSS.DRV
|
||||||
|
;
|
||||||
LD A,DSS_Error.sys.WRITE_ERROR
|
LD A,DSS_Error.sys.WRITE_ERROR
|
||||||
JR C,.ErrorWrite
|
JR C,.Error_3
|
||||||
POP BC
|
POP BC
|
||||||
LD HL,(READ.PointerOnBuffer)
|
LD HL,(READ.PointerOnBuffer)
|
||||||
LD DE,(CORE_BUFFERS.BootSector.BytesPerSector)
|
LD DE,(CORE_BUFFERS.BootSector.BytesPerSector)
|
||||||
;
|
;
|
||||||
|
LD A,B
|
||||||
|
LD B,C
|
||||||
.loop2: ADD HL,DE
|
.loop2: ADD HL,DE
|
||||||
DEC C
|
DJNZ .loop2
|
||||||
JR NZ,.loop2
|
|
||||||
;
|
;
|
||||||
LD (READ.PointerOnBuffer),HL
|
LD (READ.PointerOnBuffer),HL
|
||||||
POP DE
|
POP DE ; ®¬¥à ª« áâ¥à ¬« ¤è ï ç áâì
|
||||||
|
EXX
|
||||||
|
POP HL ; ®¬¥à ª« áâ¥à áâ àè ï ç áâì
|
||||||
|
EXX
|
||||||
;
|
;
|
||||||
LD A,B
|
|
||||||
OR A
|
OR A
|
||||||
RET Z
|
RET Z ; ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤®ç¨âªã = 0?
|
||||||
|
LD B,A
|
||||||
;
|
;
|
||||||
.big_loop: LD HL,CORE_BUFFERS.BootSector.SectorsPerCluster
|
.big_loop: LD HL,CORE_BUFFERS.BootSector.SectorsPerCluster
|
||||||
LD A,B
|
LD A,B
|
||||||
@ -1036,18 +1068,24 @@ BLOK_WR: PUSH BC
|
|||||||
LD C,A
|
LD C,A
|
||||||
OR A ;CLEAR CF
|
OR A ;CLEAR CF
|
||||||
RET Z
|
RET Z
|
||||||
|
;
|
||||||
.WR7: EX DE,HL
|
.WR7: EX DE,HL
|
||||||
PUSH BC
|
PUSH BC
|
||||||
|
; HL':HL - ®¬¥à ª« áâ¥à
|
||||||
CALL READ_FROM_FAT
|
CALL READ_FROM_FAT
|
||||||
JR NC,.WR9
|
JR NC,.WR9
|
||||||
;PUSH HL
|
|
||||||
CALL INC_FAT
|
CALL INC_FAT
|
||||||
;POP HL
|
|
||||||
JR C,.ErrorFull
|
JR C,.ErrorFull
|
||||||
|
; [x] ¨§¡ëâ®ç®¥ ®¡à 饨¥ 01/04/2024
|
||||||
;CALL READ_FROM_FAT
|
;CALL READ_FROM_FAT
|
||||||
|
;
|
||||||
.WR9: POP BC
|
.WR9: POP BC
|
||||||
|
EXX
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
PUSH HL
|
PUSH HL ; ®¬¥à á«¥¤. ª« áâ¥à (áâ à襥 á«®¢®)
|
||||||
|
EXX
|
||||||
|
EX DE,HL
|
||||||
|
PUSH HL ; ®¬¥à á«¥¤. ª« áâ¥à (¬« ¤è¥¥ á«®¢®)
|
||||||
PUSH BC
|
PUSH BC
|
||||||
CALL CLUSTER_TO_SECTOR
|
CALL CLUSTER_TO_SECTOR
|
||||||
; DOUBLE 1
|
; DOUBLE 1
|
||||||
@ -1057,7 +1095,7 @@ BLOK_WR: PUSH BC
|
|||||||
LD C,Dss.DRV.Write
|
LD C,Dss.DRV.Write
|
||||||
RST ToDSS.DRV
|
RST ToDSS.DRV
|
||||||
LD A,DSS_Error.sys.WRITE_ERROR
|
LD A,DSS_Error.sys.WRITE_ERROR
|
||||||
JR C,.ErrorWrite
|
JR C,.Error_3
|
||||||
POP BC
|
POP BC
|
||||||
LD HL,(READ.PointerOnBuffer)
|
LD HL,(READ.PointerOnBuffer)
|
||||||
LD DE,(CORE_BUFFERS.BootSector.BytesPerSector)
|
LD DE,(CORE_BUFFERS.BootSector.BytesPerSector)
|
||||||
@ -1065,15 +1103,17 @@ BLOK_WR: PUSH BC
|
|||||||
DEC C
|
DEC C
|
||||||
JR NZ,.loop3
|
JR NZ,.loop3
|
||||||
LD (READ.PointerOnBuffer),HL
|
LD (READ.PointerOnBuffer),HL
|
||||||
POP DE
|
POP DE ; ®¬¥à á«¥¤. ª« áâ¥à (¬« ¤è¥¥ á«®¢®)
|
||||||
;
|
EXX
|
||||||
|
POP HL ; ®¬¥à á«¥¤. ª« áâ¥à (áâ à襥 á«®¢®)
|
||||||
|
EXX
|
||||||
JP .big_loop
|
JP .big_loop
|
||||||
;
|
;
|
||||||
.Error_6: POP BC
|
.Error_6: POP BC
|
||||||
POP BC
|
POP BC
|
||||||
POP BC
|
POP BC
|
||||||
POP BC ;[x] GET/SAVE CLUSTER NUMBER BEFORE/AFTER READ/WRITE
|
.Error_3: POP BC ;[x] GET/SAVE CLUSTER NUMBER BEFORE/AFTER READ/WRITE
|
||||||
.ErrorWrite: POP BC
|
POP BC
|
||||||
POP DE
|
POP DE
|
||||||
;LD A,DSS_Error.sys.WRITE_ERROR
|
;LD A,DSS_Error.sys.WRITE_ERROR
|
||||||
;SCF
|
;SCF
|
||||||
@ -1084,54 +1124,8 @@ BLOK_WR: PUSH BC
|
|||||||
;SCF
|
;SCF
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
;
|
||||||
; ;GET/SAVE CLUSTER NUMBER BEFORE/AFTER READ/WRITE
|
;[x] fat32
|
||||||
; ; ‚室: HL - ¯¥à¢ë© ª« áâ¥à ä ©« (¬« ¤è¥¥ á«®¢®)
|
|
||||||
; ; BC - ᬥ饨¥ ¢ ä ©«¥ ¢ ª« áâ¥à å (¬« ¤è¥¥ á«®¢®)
|
|
||||||
; ; ‚ë室: HL - ¨§¢¥áâë© ª« áâ¥à ä ©« ¤«ï ®âáçñâ (¬« ¤è¥¥ á«®¢®)
|
|
||||||
; ; BC - ®á⠢襥áï ᬥ饨¥ ¢ ä ©«¥ ¢ ª« áâ¥à å (¬« ¤è¥¥ á«®¢®)
|
|
||||||
; GetSavedCluster:
|
|
||||||
; INC B
|
|
||||||
; ;PUSH DE ; ¯¥à¢ë© ª« áâ¥à ä ©« (áâ à襥 á«®¢®)
|
|
||||||
; LD E,(IY+_sFM.KnownCluster_L)
|
|
||||||
; LD D,(IY+_sFM.KnownCluster_L+1)
|
|
||||||
; LD A,E
|
|
||||||
; OR D
|
|
||||||
; RET Z
|
|
||||||
; ;
|
|
||||||
; DEC B
|
|
||||||
; PUSH DE ; KnownCluster_H
|
|
||||||
; PUSH HL ; ¯¥à¢ë© ª« áâ¥à ä ©« (¬« ¤è¥¥ á«®¢®)
|
|
||||||
; PUSH BC ; ᬥ饨¥ ¢ ä ©«¥ ¢ ª« áâ¥à å
|
|
||||||
; LD E,(IY+_sFM.KnownOffset_L)
|
|
||||||
; LD D,(IY+_sFM.KnownOffset_L+1)
|
|
||||||
; LD A,D
|
|
||||||
; OR E
|
|
||||||
; JR Z,.noOptimization_3
|
|
||||||
; ;
|
|
||||||
; POP HL ; ᬥ饨¥ ¢ ä ©«¥ ¢ ª« áâ¥à å
|
|
||||||
; SBC HL,DE
|
|
||||||
; JR C,.noOptimization_2
|
|
||||||
; LD C,L
|
|
||||||
; LD B,H
|
|
||||||
; POP DE ; ¡ « á á⥪
|
|
||||||
; POP HL
|
|
||||||
; ; ®¯â¨¬¨§ æ¨ï: HL - ¥ ¯¥à¢ë© ª« áâ¥à ä ©« , KnownCluster
|
|
||||||
; ; BC - à ááâ®ï¨¥ ¤® âॡ㥬®£® á¬¥é¥¨ï ®â KnownCluster
|
|
||||||
; ;
|
|
||||||
; INC B
|
|
||||||
; RET
|
|
||||||
; ;
|
|
||||||
; .noOptimization_3:
|
|
||||||
; POP BC
|
|
||||||
; .noOptimization_2:
|
|
||||||
; POP HL
|
|
||||||
; .noOptimization_1:
|
|
||||||
; POP DE
|
|
||||||
; INC B
|
|
||||||
; RET
|
|
||||||
|
|
||||||
|
|
||||||
;[x] GET/SAVE CLUSTER NUMBER BEFORE/AFTER READ/WRITE
|
;[x] GET/SAVE CLUSTER NUMBER BEFORE/AFTER READ/WRITE
|
||||||
; ‚室: DE - ᬥ饨¥ ¢ ä ©«¥ ¢ ª« áâ¥à å (áâ à襥 á«®¢®)
|
; ‚室: DE - ᬥ饨¥ ¢ ä ©«¥ ¢ ª« áâ¥à å (áâ à襥 á«®¢®)
|
||||||
; BC - ᬥ饨¥ ¢ ä ©«¥ ¢ ª« áâ¥à å (¬« ¤è¥¥ á«®¢®)
|
; BC - ᬥ饨¥ ¢ ä ©«¥ ¢ ª« áâ¥à å (¬« ¤è¥¥ á«®¢®)
|
||||||
@ -1142,7 +1136,6 @@ BLOK_WR: PUSH BC
|
|||||||
; DE - ®á⠢襥áï ᬥ饨¥ ¢ ä ©«¥ ¢ ª« áâ¥à å (áâ à襥 á«®¢®, D=D+1)
|
; DE - ®á⠢襥áï ᬥ饨¥ ¢ ä ©«¥ ¢ ª« áâ¥à å (áâ à襥 á«®¢®, D=D+1)
|
||||||
; BC - ®á⠢襥áï ᬥ饨¥ ¢ ä ©«¥ ¢ ª« áâ¥à å (¬« ¤è¥¥ á«®¢®, B=B+1)
|
; BC - ®á⠢襥áï ᬥ饨¥ ¢ ä ©«¥ ¢ ª« áâ¥à å (¬« ¤è¥¥ á«®¢®, B=B+1)
|
||||||
; ¥ ¯®àâ¨â HL, HL' ¨ DE:BC ¥á«¨ ®¯â¨¬¨§ æ¨ï ¥ áà ¡®â «
|
; ¥ ¯®àâ¨â HL, HL' ¨ DE:BC ¥á«¨ ®¯â¨¬¨§ æ¨ï ¥ áà ¡®â «
|
||||||
;[ ] fat32
|
|
||||||
GetSavedCluster:
|
GetSavedCluster:
|
||||||
XOR A
|
XOR A
|
||||||
CP (IY+_sFM.OptimizedClusters)
|
CP (IY+_sFM.OptimizedClusters)
|
||||||
@ -1239,148 +1232,5 @@ SaveGotCluster: LD A,C
|
|||||||
;LD (FatBuffer.MaxClusterLow),HL
|
;LD (FatBuffer.MaxClusterLow),HL
|
||||||
;=======================================================================
|
;=======================================================================
|
||||||
|
|
||||||
|
|
||||||
;FatCache:
|
|
||||||
;.Block WORD #0000
|
|
||||||
;.Update BYTE 0
|
|
||||||
;FAT_Max_Cluster_L: WORD #0FF0 ; ¬ ªá. ç¨á«® ª« áâ¥à®¢ (¡¥§ á«ã¦.)
|
|
||||||
;FAT_Max_Cluster_H: WORD #0000 ; ¬ ªá. ç¨á«® ª« áâ¥à®¢ (¡¥§ á«ã¦.)
|
|
||||||
|
|
||||||
;//MODULE: FAT_X
|
;//MODULE: FAT_X
|
||||||
;[END]
|
;[END]
|
||||||
|
|
||||||
|
|
||||||
;RX01
|
|
||||||
;; HL - CLUSTER
|
|
||||||
;; DE - (CLUSTER)
|
|
||||||
;
|
|
||||||
;READ_FROM_FAT EX DE,HL
|
|
||||||
; LD HL,(FAT_Max_Cluster)
|
|
||||||
; AND A
|
|
||||||
; SBC HL,DE
|
|
||||||
; EX DE,HL
|
|
||||||
; LD A,10
|
|
||||||
; RET C
|
|
||||||
; PUSH HL
|
|
||||||
; LD A,(FAT_TYP)
|
|
||||||
; CP "2"
|
|
||||||
; JP Z,R_F_F12
|
|
||||||
;R_F_F16 LD DE,768 ; DE - CLUSTERS IN CASH
|
|
||||||
; XOR A
|
|
||||||
;R_F_00H INC A ; HL - CLUSTER
|
|
||||||
; SBC HL,DE
|
|
||||||
; JP NC,R_F_00H
|
|
||||||
; ADD HL,DE
|
|
||||||
; ADD HL,HL ; HL - FAT OFFSET (FROM CASH)
|
|
||||||
; DEC A
|
|
||||||
; LD BC,(FatCache) ; A - ELEMENT OF CASH
|
|
||||||
; CP C
|
|
||||||
; CALL NZ,READ_FAT_TABLE
|
|
||||||
; LD DE,FAT
|
|
||||||
; ADD HL,DE
|
|
||||||
; LD E,(HL)
|
|
||||||
; INC HL
|
|
||||||
; LD D,(HL)
|
|
||||||
; LD HL,#FFEF
|
|
||||||
; AND A
|
|
||||||
; SBC HL,DE
|
|
||||||
; POP HL
|
|
||||||
; LD A,0
|
|
||||||
; RET
|
|
||||||
;
|
|
||||||
;R_F_F12 LD D,H
|
|
||||||
; LD E,L
|
|
||||||
; ADD HL,HL
|
|
||||||
; ADD HL,DE
|
|
||||||
; RR H
|
|
||||||
; RR L
|
|
||||||
; PUSH AF
|
|
||||||
; EX DE,HL
|
|
||||||
; LD HL,(B_P_S)
|
|
||||||
; LD B,H
|
|
||||||
; LD C,L
|
|
||||||
; ADD HL,HL
|
|
||||||
; ADD HL,BC
|
|
||||||
; EX DE,HL
|
|
||||||
; XOR A ; DE - SIZE SECTOR * 3
|
|
||||||
;R_F_00 INC A ; HL - FAT OFFSET
|
|
||||||
; SBC HL,DE
|
|
||||||
; JP NC,R_F_00
|
|
||||||
; ADD HL,DE
|
|
||||||
; DEC A
|
|
||||||
;
|
|
||||||
;
|
|
||||||
|
|
||||||
;WRITE_FAT_TABLE LD HL,(FatCache)
|
|
||||||
; LD H,0
|
|
||||||
; LD (FatCache),HL
|
|
||||||
; LD E,L
|
|
||||||
; LD D,H
|
|
||||||
; ADD HL,HL
|
|
||||||
; ADD HL,DE
|
|
||||||
; PUSH HL
|
|
||||||
; LD B,H
|
|
||||||
; LD C,L
|
|
||||||
; INC HL
|
|
||||||
; INC HL
|
|
||||||
; INC HL
|
|
||||||
; LD DE,(S_P_F)
|
|
||||||
; LD A,3
|
|
||||||
; AND A
|
|
||||||
; SBC HL,DE
|
|
||||||
; JP C,WR_FAT1
|
|
||||||
; EX DE,HL
|
|
||||||
; LD HL,3
|
|
||||||
; AND A
|
|
||||||
; SBC HL,DE
|
|
||||||
; JP C,FATERR
|
|
||||||
; LD A,L
|
|
||||||
;WR_FAT1 LD H,B
|
|
||||||
; LD L,C
|
|
||||||
; LD DE,(FAT_FRM)
|
|
||||||
; ADD HL,DE
|
|
||||||
; EX DE,HL
|
|
||||||
; LD IX,0
|
|
||||||
; ADD IX,DE
|
|
||||||
; LD DE,FAT
|
|
||||||
; LD HL,0
|
|
||||||
; LD B,A
|
|
||||||
; LD C,6
|
|
||||||
; LD A,(DRIVE)
|
|
||||||
; PUSH BC
|
|
||||||
; RST #18
|
|
||||||
; POP BC
|
|
||||||
; POP HL
|
|
||||||
; LD DE,(FAT2_SEC_L)
|
|
||||||
; ADD HL,DE
|
|
||||||
; EX DE,HL
|
|
||||||
; LD IX,0
|
|
||||||
; ADD IX,DE
|
|
||||||
; LD DE,FAT
|
|
||||||
; LD HL,0
|
|
||||||
; LD A,(DRIVE)
|
|
||||||
; LD C,6
|
|
||||||
; RST #18
|
|
||||||
; RET
|
|
||||||
|
|
||||||
|
|
||||||
////////////// OLD ////////////////
|
|
||||||
; HL - CLUSTER
|
|
||||||
; HL:IX - SECTOR
|
|
||||||
; CLUSTER_TO_SECTOR: DEC HL
|
|
||||||
; DEC HL
|
|
||||||
; EX DE,HL
|
|
||||||
; LD A,(CORE_BUFFERS.BootSector.SectorsPerCluster)
|
|
||||||
; LD B,A
|
|
||||||
; LD HL,0
|
|
||||||
; LD IX,0
|
|
||||||
; ADD_DE1: ADD IX,DE
|
|
||||||
; JR NC,ADD_DE2
|
|
||||||
; INC HL
|
|
||||||
; ADD_DE2: DJNZ ADD_DE1
|
|
||||||
; LD DE,(FatBuffer.FirstDataSector_L) ;first data sector
|
|
||||||
; ADD IX,DE
|
|
||||||
; LD DE,#0000
|
|
||||||
; ADC HL,DE
|
|
||||||
; RET
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
@ -1 +1 @@
|
|||||||
948
|
953
|
||||||
Loading…
Reference in New Issue
Block a user