mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
fat32 - 80% (но это не точно)
This commit is contained in:
parent
53dbf83712
commit
ada25b0fe1
@ -6,41 +6,41 @@
|
|||||||
; B = #01 SET ATTRIB
|
; B = #01 SET ATTRIB
|
||||||
; OUTPUT: A - ATTRIB
|
; OUTPUT: A - ATTRIB
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
|
ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
|
||||||
LD C,A
|
LD C,A
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH BC
|
PUSH BC
|
||||||
CALL DIR_PATH_CHECK
|
CALL DIR_PATH_CHECK
|
||||||
POP BC
|
POP BC
|
||||||
POP HL
|
POP HL
|
||||||
RET C
|
RET C
|
||||||
LD A,C
|
LD A,C
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
INC B
|
INC B
|
||||||
DEC B
|
DJNZ .B_1
|
||||||
JP Z,.READ
|
; B = 0
|
||||||
DEC B
|
.READ: ;!TEST ;[x] 16/11/23 optimize get attribute
|
||||||
JP Z,.WRITE_FN
|
;XOR A
|
||||||
LD A,DSS_Error.sys.INVALID_FUNCTION
|
;
|
||||||
SCF
|
CALL .OPENATR ;R002
|
||||||
RET
|
RET C
|
||||||
.READ: ;!TEST ;[x] 16/11/23 optimize get attribute
|
;!TEST ;[x] 16/11/23 optimize get attribute
|
||||||
;XOR A
|
LD A,(HANDBUF + _sFAT_DIRECTORY_RECORD.ATTRIBUT)
|
||||||
;
|
;LD B,(IY+_sFM.ATTRIBUT)
|
||||||
CALL .OPENATR ;R002
|
;PUSH BC
|
||||||
RET C
|
;CALL CLOSE
|
||||||
;!TEST ;[x] 16/11/23 optimize get attribute
|
;POP BC
|
||||||
LD A,(HANDBUF + _sFAT_DIRECTORY_RECORD.ATTRIBUT)
|
;RET C
|
||||||
;LD B,(IY+_sFM.ATTRIBUT)
|
;LD A,B
|
||||||
;PUSH BC
|
;
|
||||||
;CALL CLOSE
|
RET
|
||||||
;POP BC
|
;
|
||||||
;RET C
|
.error_fn: LD A,DSS_Error.sys.INVALID_FUNCTION
|
||||||
;LD A,B
|
SCF
|
||||||
;
|
RET
|
||||||
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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -3,111 +3,99 @@
|
|||||||
; A - File attribute
|
; A - File attribute
|
||||||
; OUTPUT: A - FM
|
; OUTPUT: A - FM
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
CREATE: ;!TEST Current Dir ;[x] 15/10/23
|
CREATE: ;!TEST Current Dir ;[x] 15/10/23
|
||||||
PUSH HL
|
PUSH HL
|
||||||
LD C,A
|
LD C,A
|
||||||
PUSH BC
|
PUSH BC
|
||||||
CALL DIR_PATH_CHECK
|
CALL DIR_PATH_CHECK
|
||||||
POP BC
|
POP BC
|
||||||
POP HL
|
POP HL
|
||||||
RET C
|
RET C
|
||||||
LD A,C
|
LD A,C
|
||||||
;
|
;
|
||||||
CALL .Prepare
|
CALL .Prepare
|
||||||
RET C
|
RET C
|
||||||
CALL SEARCH.File
|
CALL SEARCH.File
|
||||||
; [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
|
||||||
;CALL NC,DEL_FN.DELETE ;FILE EXIST RECREAT
|
;CALL NC,DEL_FN.DELETE ;FILE EXIST RECREAT
|
||||||
CALL NC,.FILE_EXISTS_DEL ;FILE EXIST RECREAT
|
CALL NC,.FILE_EXISTS_DEL ;FILE EXIST RECREAT
|
||||||
CP DSS_Error.sys.FILE_NOT_FOUND
|
CP DSS_Error.sys.FILE_NOT_FOUND
|
||||||
JR Z,.DO
|
JR Z,.DO
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
.FILE_EXISTS_DEL:
|
.FILE_EXISTS_DEL:
|
||||||
CALL DEL_FN.DELETE
|
CALL DEL_FN.DELETE
|
||||||
LD A,DSS_Error.sys.FILE_NOT_FOUND
|
LD A,DSS_Error.sys.FILE_NOT_FOUND
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
; 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: ;!TEST Current Dir ;[x] 15/10/23
|
||||||
PUSH HL
|
PUSH HL
|
||||||
LD C,A
|
LD C,A
|
||||||
PUSH BC
|
PUSH BC
|
||||||
CALL DIR_PATH_CHECK
|
CALL DIR_PATH_CHECK
|
||||||
POP BC
|
POP BC
|
||||||
POP HL
|
POP HL
|
||||||
RET C
|
RET C
|
||||||
LD A,C
|
LD A,C
|
||||||
;
|
;
|
||||||
CALL .Prepare
|
CALL .Prepare
|
||||||
RET C
|
RET C
|
||||||
CALL SEARCH.File
|
CALL SEARCH.File
|
||||||
; [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
|
||||||
; LD A,DSS_Error.sys.FILE_EXISTS
|
; LD A,DSS_Error.sys.FILE_EXISTS
|
||||||
; CCF
|
; CCF
|
||||||
; RET C
|
; RET C
|
||||||
JR NC,.FILE_EXISTS
|
JR NC,.FILE_EXISTS
|
||||||
CP DSS_Error.sys.FILE_NOT_FOUND
|
CP DSS_Error.sys.FILE_NOT_FOUND
|
||||||
SCF
|
SCF
|
||||||
RET NZ
|
RET NZ
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
;no_file_found
|
;no_file_found
|
||||||
.DO: LD HL,MASKARE
|
.DO: LD HL,MASKARE
|
||||||
LD DE,HANDBUF
|
LD DE,HANDBUF
|
||||||
LD BC,11
|
LD BC,11
|
||||||
LDIR
|
LDIR
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
.TMP+1: LD A,0
|
.TMP+1: LD A,0
|
||||||
LD (HL),A
|
LD (HL),A
|
||||||
INC HL
|
INC HL
|
||||||
LD BC,#0A00 ;!HARDCODE
|
LD BC,#0A00 ;!HARDCODE
|
||||||
;
|
;
|
||||||
.loop1: LD (HL),C
|
.loop1: LD (HL),C
|
||||||
INC HL
|
INC HL
|
||||||
DJNZ .loop1
|
DJNZ .loop1
|
||||||
;AaRR
|
;AaRR
|
||||||
PUSH HL
|
CALL WRITE_DATE_TIME_TO_DIRECTORY_RECORD
|
||||||
CALL SYSTIME
|
;
|
||||||
CALL MK_TIME
|
LD BC,#0600
|
||||||
POP HL
|
;
|
||||||
LD (HL),E
|
.loop2: LD (HL),C
|
||||||
INC HL
|
INC HL
|
||||||
LD (HL),D
|
DJNZ .loop2
|
||||||
INC HL
|
;
|
||||||
LD (HL),C
|
CALL WRT_HND
|
||||||
INC HL
|
RET C
|
||||||
LD (HL),B
|
;CALL SAVEDIR
|
||||||
INC HL
|
.PATH0+1: LD HL,0
|
||||||
LD BC,#0600
|
XOR A
|
||||||
;
|
LD (OPEN_FN.TMP),A
|
||||||
.loop2: LD (HL),C
|
JP OPEN_FN.FILE ;R008
|
||||||
INC HL
|
;
|
||||||
DJNZ .loop2
|
.Prepare: ;AND #E7 ;R004 %76A00SHR = !FAT_ATTR ;!HARDCODE
|
||||||
;
|
AND FAT_ATTR.NoDIRnoVolID
|
||||||
CALL WRT_HND
|
LD (.TMP),A
|
||||||
RET C
|
LD (.PATH0),HL
|
||||||
;CALL SAVEDIR
|
CALL GETWORD
|
||||||
.PATH0+1:
|
RET C
|
||||||
LD HL,0
|
; LD HL,TMPNAME
|
||||||
XOR A
|
; LD DE,MASKARE
|
||||||
LD (OPEN_FN.TMP),A
|
JP MASK
|
||||||
JP OPEN_FN.FILE ;R008
|
;
|
||||||
.Prepare:
|
|
||||||
;AND #E7 ;R004 %76A00SHR = !FAT_ATTR ;!HARDCODE
|
|
||||||
AND FAT_ATTR.NoDIRnoVolID
|
|
||||||
LD (.TMP),A
|
|
||||||
LD (.PATH0),HL
|
|
||||||
CALL GETWORD
|
|
||||||
RET C
|
|
||||||
; LD HL,TMPNAME
|
|
||||||
; LD DE,MASKARE
|
|
||||||
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
|
|
||||||
;
|
;
|
||||||
@ -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- ®¬¥à á«¥¤. ª« áâ¥à
|
||||||
PUSH DE ; ®¬¥à á«¥¤. ª« áâ¥à
|
EXX
|
||||||
PUSH AF
|
PUSH DE ; ®¬¥à á«¥¤. ª« áâ¥à
|
||||||
|
PUSH AF
|
||||||
|
LD DE,#0000 ; ®¬¥à ª« áâ¥à
|
||||||
|
EXX
|
||||||
|
PUSH DE
|
||||||
LD DE,#0000 ; ®¬¥à ª« áâ¥à
|
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 ; á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
||||||
;
|
;
|
||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
;
|
;
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
; [x] fat32 ;!TEST
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
; ”ãªæ¨ï #1B. ‘®§¤ ¨¥ ª â «®£ .
|
; ”ãªæ¨ï #1B. ‘®§¤ ¨¥ ª â «®£ .
|
||||||
;
|
;
|
||||||
@ -6,196 +7,206 @@
|
|||||||
;
|
;
|
||||||
; 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
|
||||||
|
.B: PUSH HL
|
||||||
MKDIR: ;!TEST Current Dir ;[x] 15/10/23
|
CALL DIR_PATH_CHECK
|
||||||
PUSH HL
|
POP HL
|
||||||
CALL DIR_PATH_CHECK
|
RET C
|
||||||
POP HL
|
CALL .START
|
||||||
RET C
|
PUSH AF
|
||||||
CALL .START
|
LD HL,CurrentDirectory
|
||||||
PUSH AF
|
CALL CHDIR
|
||||||
LD HL,CurrentDirectory
|
POP AF
|
||||||
CALL CHDIR
|
RET
|
||||||
POP AF
|
;
|
||||||
RET
|
.START: CALL GETWORD ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
||||||
|
RET C
|
||||||
|
;LD HL,TMPNAME ; 8.3 ¨¬ï
|
||||||
|
;LD DE,MASKARE ; ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||||||
|
CALL MASK ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
|
||||||
|
RET C
|
||||||
|
;!TEST optimization à ¥¥ GETWORD 㦥 § £à㧨« ¤¨à¥ªâ®à¨î
|
||||||
|
;CALL LOADDIR ; ¯à®ç¨â âì ᯨ᮪ ª â «®£
|
||||||
|
;
|
||||||
|
CALL SEARCH.Dir ; ¯®¨áª § ¯¨á¨ ª â «®£ ¢ ᯨ᪥ ¤¨áª
|
||||||
|
; [x] fixed a bug with incorrect search when there were too many files in the directory 12/03/2024
|
||||||
|
; LD A,DSS_Error.sys.DIR_EXISTS
|
||||||
|
; CCF
|
||||||
|
; RET C ; ª â «®£ ©¤¥
|
||||||
|
JR NC,.DIR_EXISTS
|
||||||
|
CP DSS_Error.sys.FILE_NOT_FOUND
|
||||||
|
SCF
|
||||||
|
RET NZ
|
||||||
|
;
|
||||||
|
CALL G_CLUST
|
||||||
|
RET C
|
||||||
|
; fat32
|
||||||
|
PUSH HL ; ¬« ¤è¨© ®¬¥à ᥪâ®à
|
||||||
|
EXX
|
||||||
|
PUSH HL ; áâ à訩 ®¬¥à ᥪâ®à
|
||||||
|
EXX
|
||||||
|
;
|
||||||
|
CALL WRITE_TO_FAT ; § ¯¨á âì ¢ ª¥è FAT- ®¬¥à ª« áâ¥à
|
||||||
|
CALL WRITE_FAT_TABLE ; ¯®¤ª«. ¡ ªã ª¥è FAT ¨ § ¯¨á âì ¥£® ¤¨áª
|
||||||
|
LD HL,MASKARE
|
||||||
|
LD DE,HANDBUF
|
||||||
|
LD BC,11
|
||||||
|
LDIR
|
||||||
|
EX DE,HL
|
||||||
|
LD A,FAT_ATTR.DIRECTORY ; âਡãâ § ¯¨á¨ ª â «®£
|
||||||
|
; _sFAT_DIRECTORY_RECORD.ATTRIBUT
|
||||||
|
LD (HL),A
|
||||||
|
INC HL
|
||||||
|
LD BC,#0800 ; b=áç¥â稪
|
||||||
|
;
|
||||||
|
.loop1: LD (HL),C
|
||||||
|
INC HL
|
||||||
|
DJNZ .loop1
|
||||||
|
; _sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_H
|
||||||
|
; fat32 § ¯¨áì áâ à襣® ®¬¥à ª« áâ¥à .FIRST_CLUSTER_H
|
||||||
|
POP DE
|
||||||
|
PUSH DE ; áâ à訩 ®¬¥à ᥪâ®à
|
||||||
|
LD (HL),E
|
||||||
|
INC HL
|
||||||
|
LD (HL),D
|
||||||
|
INC HL
|
||||||
|
;
|
||||||
|
CALL WRITE_DATE_TIME_TO_DIRECTORY_RECORD
|
||||||
|
; § ¯¨áì ¬« ¤è¥£® ®¬¥à ª« áâ¥à .FIRST_CLUSTER_L
|
||||||
|
POP BC ; áâ à訩 ®¬¥à ᥪâ®à
|
||||||
|
POP DE ; ¬« ¤è¨© ®¬¥à ᥪâ®à
|
||||||
|
PUSH DE
|
||||||
|
PUSH BC
|
||||||
|
; _sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L
|
||||||
|
LD (HL),E
|
||||||
|
INC HL
|
||||||
|
LD (HL),D
|
||||||
|
INC HL
|
||||||
|
; _sFAT_DIRECTORY_RECORD.F_SIZE
|
||||||
|
LD BC,#0400 ; b=áç¥â稪
|
||||||
|
.loop2: LD (HL),C
|
||||||
|
INC HL
|
||||||
|
DJNZ .loop2
|
||||||
|
;
|
||||||
|
CALL WRT_HND ; ᪮¯¨à. ®¢ãî § ¯¨áì ¢ ᯨ᮪ ¤¨áª (ª â «®£ )
|
||||||
|
;CALL SAVEDIR ; ¨ á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
||||||
;
|
;
|
||||||
.START: CALL GETWORD ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
; á®§¤ ñ¬ á«ã¦¥¡ë¥ ª â «®£¨ "." ¨ ".." ¢ á®§¤ ®¬ ª â «®£¥
|
||||||
RET C
|
; Š€’€‹Žƒ "."
|
||||||
;LD HL,TMPNAME ; 8.3 ¨¬ï
|
LD HL,CORE_BUFFERS.SECBUF ; ¡ãä¥à
|
||||||
;LD DE,MASKARE ; ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
LD (HL),"." ; § ¯¨áì ⥪. ª â «®£
|
||||||
CALL MASK ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
|
LD BC,10*256 + ' ' ; !HARDCODE b=áç¥â稪, c=¯à®¡¥«
|
||||||
RET C
|
;
|
||||||
;!TEST optimization à ¥¥ GETWORD 㦥 § £à㧨« ¤¨à¥ªâ®à¨î
|
.loop3: INC HL
|
||||||
;CALL LOADDIR ; ¯à®ç¨â âì ᯨ᮪ ª â «®£
|
LD (HL),C
|
||||||
;
|
DJNZ .loop3
|
||||||
CALL SEARCH.Dir ; ¯®¨áª § ¯¨á¨ ª â «®£ ¢ ᯨ᪥ ¤¨áª
|
; ᪮¯¨à®¢ âì ¡ ©âë 11..31 _sFAT_DIRECTORY_RECORD
|
||||||
; [x] fixed a bug with incorrect search when there were too many files in the directory 12/03/2024
|
INC HL
|
||||||
; LD A,DSS_Error.sys.DIR_EXISTS
|
LD DE,HANDBUF+_sFAT_DIRECTORY_RECORD.ATTRIBUT ; ï祩ª âਡã⮢ ä ©«
|
||||||
; CCF
|
EX DE,HL
|
||||||
; RET C ; ª â «®£ ©¤¥
|
LD BC,21 ; !HARDCODE
|
||||||
JR NC,.DIR_EXISTS
|
LDIR
|
||||||
CP DSS_Error.sys.FILE_NOT_FOUND
|
; Š€’€‹Žƒ ".."
|
||||||
SCF
|
EX DE,HL
|
||||||
RET NZ
|
LD (HL),"." ; § ¯¨áì த¨â. ª â «®£
|
||||||
;
|
INC HL
|
||||||
CALL G_CLUST
|
LD (HL),"."
|
||||||
RET C
|
LD BC,9*256 + ' ' ; b=áç¥â稪, c=¯à®¡¥«
|
||||||
; [x] fat32
|
.loop4: INC HL
|
||||||
PUSH HL ; ¬« ¤è¨© ®¬¥à ᥪâ®à
|
LD (HL),C
|
||||||
EXX
|
DJNZ .loop4
|
||||||
PUSH HL ; áâ à訩 ®¬¥à ᥪâ®à
|
;
|
||||||
EXX
|
INC HL
|
||||||
;
|
SET_PAGE_X DIRPAGE
|
||||||
CALL WRITE_TO_FAT ; § ¯¨á âì ¢ ª¥è FAT- ®¬¥à ª« áâ¥à
|
PUSH AF
|
||||||
CALL WRITE_FAT_TABLE ; ¯®¤ª«. ¡ ªã ª¥è FAT ¨ § ¯¨á âì ¥£® ¤¨áª
|
;
|
||||||
LD HL,MASKARE
|
LD DE,DIRPAGE.buffer + _sFAT_DIRECTORY_RECORD.ATTRIBUT ; âਡãâë § ¯¨á¨
|
||||||
LD DE,HANDBUF
|
;
|
||||||
LD BC,11
|
LD A,(DIRPAGE.buffer)
|
||||||
LDIR
|
CP "."
|
||||||
EX DE,HL
|
JR Z,.copy_dir_record
|
||||||
LD A,FAT_ATTR.DIRECTORY ; âਡãâ § ¯¨á¨ ª â «®£
|
; fat32
|
||||||
; _sFAT_DIRECTORY_RECORD.ATTRIBUT
|
LD A,(FatBuffer.FAT_TYPE)
|
||||||
LD (HL),A
|
CP FAT_TYPE.x32
|
||||||
INC HL
|
JR NZ,.fat16_root_dir
|
||||||
LD BC,#0800 ; b=áç¥â稪
|
; fat 32
|
||||||
;
|
EX DE,HL
|
||||||
.loop1: LD (HL),C
|
LD HL,(FatBuffer.RootDirStartCluster_L)
|
||||||
INC HL
|
LD (HANDBUF + _sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L),HL
|
||||||
DJNZ .loop1
|
LD HL,(FatBuffer.RootDirStartCluster_H)
|
||||||
; _sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_H
|
LD (HANDBUF + _sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_H),HL
|
||||||
; [x] fat32 § ¯¨áì áâ à襣® ®¬¥à ª« áâ¥à .FIRST_CLUSTER_H
|
EX DE,HL
|
||||||
POP DE
|
JR .set_rec
|
||||||
PUSH DE ; áâ à訩 ®¬¥à ᥪâ®à
|
;
|
||||||
LD (HL),E
|
.fat16_root_dir:; fat 12/16
|
||||||
INC HL
|
;LD IX,HANDBUF
|
||||||
LD (HL),D
|
XOR A
|
||||||
INC HL
|
LD (HANDBUF + _sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L),A
|
||||||
; [ ] fat32 & VFAT
|
LD (HANDBUF + _sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L+1),A
|
||||||
PUSH HL
|
.set_rec: LD DE,HANDBUF + _sFAT_DIRECTORY_RECORD.ATTRIBUT ; ï祩ª âਡã⮢ ä ©«
|
||||||
CALL SYSTIME ; ã§ âì ⥪. ¤ âã ¨ ¢à¥¬ï
|
.copy_dir_record:
|
||||||
CALL MK_TIME ; § ª®¤¨à®¢ âì ¢à¥¬ï/¤ âã
|
EX DE,HL
|
||||||
POP HL
|
LD BC,HANDBUF.SIZE - _sFAT_DIRECTORY_RECORD.ATTRIBUT ; 21
|
||||||
; _sFAT_DIRECTORY_RECORD.TIME
|
LDIR
|
||||||
LD (HL),E ; de=¢à¥¬ï
|
POP AF
|
||||||
INC HL
|
OUT (SLOT3),A
|
||||||
LD (HL),D
|
;
|
||||||
INC HL
|
EX DE,HL
|
||||||
; _sFAT_DIRECTORY_RECORD.DATE
|
LD D,H
|
||||||
LD (HL),C ; ¤¥ì
|
LD E,L
|
||||||
INC HL
|
INC DE
|
||||||
LD (HL),B ; ¬¥áïæ
|
LD (HL),0
|
||||||
INC HL
|
LD BC,512-65 ;!HARDCODE
|
||||||
; § ¯¨áì ¬« ¤è¥£® ®¬¥à ª« áâ¥à .FIRST_CLUSTER_L
|
LDIR
|
||||||
POP BC ; áâ à訩 ®¬¥à ᥪâ®à
|
;
|
||||||
POP DE ; ¬« ¤è¨© ®¬¥à ᥪâ®à
|
POP HL ; áâ à訩 ®¬¥à ᥪâ®à
|
||||||
PUSH DE
|
EXX
|
||||||
PUSH BC
|
POP HL ; ¬« ¤è¨© ®¬¥à ᥪâ®à
|
||||||
; _sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L
|
CALL CLUSTER_TO_SECTOR
|
||||||
LD (HL),E
|
LD A,(CORE_BUFFERS.BootSector.SectorsPerCluster) ; ᥪâ®à®¢ ª« áâ¥à
|
||||||
INC HL
|
.MKD12: PUSH AF
|
||||||
LD (HL),D
|
PUSH HL ; áâ. à §àï¤
|
||||||
INC HL
|
PUSH IX ; ®¬¥à «®£. ᥪâ®à
|
||||||
; _sFAT_DIRECTORY_RECORD.F_SIZE
|
IN A,(SLOT3)
|
||||||
LD BC,#0400 ; b=áç¥â稪
|
PUSH AF
|
||||||
.loop2: LD (HL),C
|
IN A,(SLOT0)
|
||||||
INC HL
|
OUT (SLOT3),A
|
||||||
DJNZ .loop2
|
;
|
||||||
;
|
LD A,(FatBuffer.DRIVE)
|
||||||
CALL WRT_HND ; ᪮¯¨à. ®¢ãî § ¯¨áì ¢ ᯨ᮪ ¤¨áª (ª â «®£ )
|
LD DE,CORE_BUFFERS.SECBUF+#C000
|
||||||
;CALL SAVEDIR ; ¨ á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
LD BC,1*256 + Dss.DRV.Write
|
||||||
LD HL,CORE_BUFFERS.SECBUF ; ¡ãä¥à
|
RST ToDSS.DRV
|
||||||
LD (HL),"." ; § ¯¨áì ⥪. ª â «®£
|
;
|
||||||
LD BC,10*256 + ' ' ; !HARDCODE b=áç¥â稪, c=¯à®¡¥«
|
POP AF
|
||||||
;
|
OUT (SLOT3),A
|
||||||
.loop3: INC HL
|
;
|
||||||
LD (HL),C
|
LD HL,CORE_BUFFERS.SECBUF
|
||||||
DJNZ .loop3
|
; [x] optimization
|
||||||
; ᪮¯¨à®¢ âì ¡ ©âë 11..31 _sFAT_DIRECTORY_RECORD
|
LD A,(HL)
|
||||||
INC HL
|
OR A
|
||||||
LD DE,HANDBUF+_sFAT_DIRECTORY_RECORD.ATTRIBUT ; ï祩ª âਡã⮢ ä ©«
|
JR Z,.skip_clean
|
||||||
EX DE,HL
|
;
|
||||||
LD BC,21
|
LD DE,CORE_BUFFERS.SECBUF+1
|
||||||
LDIR
|
LD BC,511 ;!HARDCODE
|
||||||
EX DE,HL
|
LD (HL),0
|
||||||
LD (HL),"." ; § ¯¨áì த¨â. ª â «®£
|
LDIR
|
||||||
INC HL
|
.skip_clean: ;
|
||||||
LD (HL),"."
|
POP IX
|
||||||
LD BC,9*256 + ' ' ; b=áç¥â稪, c=¯à®¡¥«
|
POP HL
|
||||||
.MKD03: INC HL
|
INC IX
|
||||||
LD (HL),C
|
LD A,XH
|
||||||
DJNZ .MKD03
|
OR XL
|
||||||
;
|
JR NZ,.MKD11
|
||||||
INC HL
|
INC HL
|
||||||
SET_PAGE_X DIRPAGE
|
.MKD11 POP AF
|
||||||
PUSH AF
|
DEC A
|
||||||
;
|
JR NZ,.MKD12
|
||||||
LD A,(DIRPAGE.buffer)
|
AND A
|
||||||
CP "."
|
RET
|
||||||
LD DE,DIRPAGE.buffer + _sFAT_DIRECTORY_RECORD.ATTRIBUT ; âਡãâë § ¯¨á¨
|
|
||||||
JP Z,.MKD04
|
|
||||||
LD IX,HANDBUF
|
|
||||||
XOR A
|
|
||||||
; [ ] fat32 à §®¡à âìáï
|
|
||||||
LD (IX+_sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L),A
|
|
||||||
LD (IX+_sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L+1),A
|
|
||||||
LD DE,HANDBUF + _sFAT_DIRECTORY_RECORD.ATTRIBUT ; ï祩ª âਡã⮢ ä ©«
|
|
||||||
.MKD04: EX DE,HL
|
|
||||||
LD BC,HANDBUF.SIZE - _sFAT_DIRECTORY_RECORD.ATTRIBUT ; 21
|
|
||||||
LDIR
|
|
||||||
POP AF
|
|
||||||
OUT (SLOT3),A
|
|
||||||
;
|
|
||||||
EX DE,HL
|
|
||||||
LD D,H
|
|
||||||
LD E,L
|
|
||||||
INC DE
|
|
||||||
LD (HL),0
|
|
||||||
LD BC,512-65 ;!HARDCODE
|
|
||||||
LDIR
|
|
||||||
;
|
|
||||||
POP HL ; áâ à訩 ®¬¥à ᥪâ®à
|
|
||||||
EXX
|
|
||||||
POP HL ; ¬« ¤è¨© ®¬¥à ᥪâ®à
|
|
||||||
CALL CLUSTER_TO_SECTOR
|
|
||||||
LD A,(CORE_BUFFERS.BootSector.SectorsPerCluster) ; ᥪâ®à®¢ ª« áâ¥à
|
|
||||||
.MKD12: PUSH AF
|
|
||||||
PUSH HL ; áâ. à §àï¤
|
|
||||||
PUSH IX ; ®¬¥à «®£. ᥪâ®à
|
|
||||||
IN A,(SLOT3)
|
|
||||||
PUSH AF
|
|
||||||
IN A,(SLOT0)
|
|
||||||
OUT (SLOT3),A
|
|
||||||
;
|
|
||||||
LD A,(FatBuffer.DRIVE)
|
|
||||||
LD DE,CORE_BUFFERS.SECBUF+#C000
|
|
||||||
LD BC,1*256 + Dss.DRV.Write
|
|
||||||
RST ToDSS.DRV
|
|
||||||
;
|
|
||||||
POP AF
|
|
||||||
OUT (SLOT3),A
|
|
||||||
;
|
|
||||||
LD HL,CORE_BUFFERS.SECBUF
|
|
||||||
LD DE,CORE_BUFFERS.SECBUF+1
|
|
||||||
LD BC,511
|
|
||||||
LD (HL),0
|
|
||||||
LDIR
|
|
||||||
;
|
|
||||||
POP IX
|
|
||||||
POP HL
|
|
||||||
INC IX
|
|
||||||
LD A,XH
|
|
||||||
OR XL
|
|
||||||
JR NZ,.MKD11
|
|
||||||
INC HL
|
|
||||||
.MKD11 POP AF
|
|
||||||
DEC A
|
|
||||||
JR NZ,.MKD12
|
|
||||||
AND A
|
|
||||||
RET
|
|
||||||
;
|
;
|
||||||
143
DSS/API/Open.asm
143
DSS/API/Open.asm
@ -1,3 +1,4 @@
|
|||||||
|
; [x] fat32 ;!TEST
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
; ”ãªæ¨ï #11. Žâªàë⨥ ä ©« .
|
; ”ãªæ¨ï #11. Žâªàë⨥ ä ©« .
|
||||||
;
|
;
|
||||||
@ -11,71 +12,79 @@
|
|||||||
; ¢ë室: CF=0, A - ¤¥áªà¨¯â®à ä ©« .
|
; ¢ë室: CF=0, A - ¤¥áªà¨¯â®à ä ©« .
|
||||||
; CF=1, A - ª®¤ ®è¨¡ª¨.
|
; CF=1, A - ª®¤ ®è¨¡ª¨.
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
OPEN_FN:;!TEST Current Dir ;[x] 15/10/23
|
OPEN_FN: ;!TEST Current Dir ;[x] 15/10/23
|
||||||
LD (.TMP),A
|
;AND #7F ; ACCESS_MODE bit7 - ¤«ï ¢ãâ॥£® ¨á¯®«ì§®¢ ¨ï))) ;!TODO
|
||||||
PUSH HL
|
LD (.TMP),A
|
||||||
CALL DIR_PATH_CHECK.forceCheck
|
PUSH HL
|
||||||
POP HL
|
CALL DIR_PATH_CHECK.forceCheck
|
||||||
RET C
|
POP HL
|
||||||
;JR .start
|
RET C
|
||||||
;!FIXIT ᤥ« âì ª ª ¢ mkdir ¨«¨ rmdir?
|
;JR .start
|
||||||
;R008 ;
|
;!FIXIT ᤥ« âì ª ª ¢ mkdir ¨«¨ rmdir?
|
||||||
.start: CALL GETWORD
|
;R008 ;
|
||||||
RET C
|
.start: CALL GETWORD
|
||||||
CALL MASK
|
RET C
|
||||||
RET C
|
CALL MASK
|
||||||
.FILE: CALL SEARCH.File ; enter point from EXEC, CREATE
|
RET C
|
||||||
RET C
|
.FILE: CALL SEARCH.File ; enter point from EXEC, CREATE
|
||||||
;!TEST 9/11/23 record index
|
RET C
|
||||||
PUSH DE ; á®åà 塞 㪠§ â¥«ì § ¯¨áì ¢ ª â «®£¥ FS (¯®«ãç¥ ¨§ SEARCH)
|
;!TEST 9/11/23 record index
|
||||||
;R002 ;
|
PUSH DE ; á®åà 塞 㪠§ â¥«ì § ¯¨áì ¢ ª â «®£¥ FS (¯®«ãç¥ ¨§ SEARCH)
|
||||||
.FM: CALL GET_FM ; enter point from ATTRIB
|
;R002 ;
|
||||||
RET C
|
.FM: CALL GET_FM ; enter point from ATTRIB
|
||||||
LD A,C
|
RET C
|
||||||
EX AF,AF'
|
LD A,C
|
||||||
;!TEST 9/11/23 record index 㪠§ â¥«ì § ¯¨áì ¢ ª â «®£¥ FS
|
EX AF,AF'
|
||||||
POP DE
|
;!TEST 9/11/23 record index 㪠§ â¥«ì § ¯¨áì ¢ ª â «®£¥ FS
|
||||||
; EXX
|
POP DE
|
||||||
LD (IY+_sFM.HANDLE),E
|
; EXX
|
||||||
LD (IY+_sFM.HANDLE+1),D
|
LD (IY+_sFM.HANDLE),E
|
||||||
; EXX
|
LD (IY+_sFM.HANDLE+1),D
|
||||||
;
|
; EXX
|
||||||
LD D,YH
|
;
|
||||||
LD E,YL
|
LD D,YH
|
||||||
LD HL,HANDBUF
|
LD E,YL
|
||||||
LD BC,HANDBUF.SIZE
|
LD HL,HANDBUF
|
||||||
LDIR
|
LD BC,HANDBUF.SIZE
|
||||||
.TMP+1: LD A,0
|
LDIR
|
||||||
LD (IY+_sFM.ACCESS_MODE),A
|
.TMP+1: LD A,0
|
||||||
LD A,(TASK)
|
LD (IY+_sFM.ACCESS_MODE),A
|
||||||
LD (IY+_sFM.TASK_NUM),A
|
LD A,(TASK)
|
||||||
XOR A
|
LD (IY+_sFM.TASK_NUM),A
|
||||||
LD (IY+_sFM.KnownCluster_L),A
|
XOR A
|
||||||
LD (IY+_sFM.KnownCluster_L+1),A
|
LD (IY+_sFM.OptimizedClusters),A
|
||||||
LD (IY+_sFM.KnownOffset_L),A
|
LD (IY+_sFM.KnownCluster_L),A
|
||||||
LD (IY+_sFM.KnownOffset_L+1),A
|
LD (IY+_sFM.KnownCluster_L+1),A
|
||||||
LD (IY+_sFM.OptimizedClusters),A
|
LD (IY+_sFM.KnownOffset_L),A
|
||||||
; [x] fat32
|
LD (IY+_sFM.KnownOffset_L+1),A
|
||||||
LD (IY+_sFM.KnownCluster_H),A
|
; fat32
|
||||||
LD (IY+_sFM.KnownCluster_H+1),A
|
LD (IY+_sFM.KnownCluster_H),A
|
||||||
LD (IY+_sFM.KnownOffset_H),A
|
LD (IY+_sFM.KnownCluster_H+1),A
|
||||||
LD (IY+_sFM.KnownOffset_H+1),A
|
LD (IY+_sFM.KnownOffset_H),A
|
||||||
;
|
LD (IY+_sFM.KnownOffset_H+1),A
|
||||||
LD (IY+_sFM.F_POSITION),A
|
;
|
||||||
LD (IY+_sFM.F_POSITION+1),A
|
LD (IY+_sFM.F_POSITION),A
|
||||||
LD (IY+_sFM.F_POSITION+2),A
|
LD (IY+_sFM.F_POSITION+1),A
|
||||||
LD (IY+_sFM.F_POSITION+3),A
|
LD (IY+_sFM.F_POSITION+2),A
|
||||||
LD A,(FatBuffer.DRIVE)
|
LD (IY+_sFM.F_POSITION+3),A
|
||||||
LD (IY+_sFM.DRIVE),A
|
LD A,(FatBuffer.DRIVE)
|
||||||
; [ ] fat32
|
LD (IY+_sFM.DRIVE),A
|
||||||
LD HL,CORE_BUFFERS.FM_BUF+_sFM.FS_REC.FIRST_CLUSTER_L
|
; fat32
|
||||||
LD E,(HL)
|
LD HL,CORE_BUFFERS.FM_BUF+_sFM.FS_REC.FIRST_CLUSTER_H
|
||||||
INC HL
|
LD E,(HL)
|
||||||
LD D,(HL)
|
INC HL
|
||||||
; [ ] fat32
|
LD D,(HL)
|
||||||
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
|
||||||
EX AF,AF'
|
;
|
||||||
AND A
|
LD HL,CORE_BUFFERS.FM_BUF+_sFM.FS_REC.FIRST_CLUSTER_L ; work directory FM
|
||||||
RET
|
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'
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
;
|
;
|
||||||
@ -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
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
; [x] fat32 ;!TEST
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
; ”ãªæ¨ï #1C. “¤ «¥¨¥ ª â «®£ .
|
; ”ãªæ¨ï #1C. “¤ «¥¨¥ ª â «®£ .
|
||||||
; Œ®¦® 㤠«¨âì ⮫쪮 ¯ãá⮩ ª â «®£.
|
; Œ®¦® 㤠«¨âì ⮫쪮 ¯ãá⮩ ª â «®£.
|
||||||
@ -7,112 +8,132 @@
|
|||||||
;
|
;
|
||||||
; 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: ;!TEST Current Dir ;[x] 15/10/23
|
||||||
PUSH HL
|
PUSH HL
|
||||||
CALL DIR_PATH_CHECK
|
CALL DIR_PATH_CHECK
|
||||||
POP HL
|
POP HL
|
||||||
RET C
|
RET C
|
||||||
CALL .START
|
CALL .START
|
||||||
PUSH AF
|
PUSH AF
|
||||||
LD HL,CurrentDirectory
|
LD HL,CurrentDirectory
|
||||||
CALL CHDIR
|
CALL CHDIR
|
||||||
CALL DIR_PATH_CHANGE.Current
|
CALL DIR_PATH_CHANGE.Current
|
||||||
POP AF
|
POP AF
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
.START: CALL GETWORD
|
.START: CALL GETWORD
|
||||||
RET C
|
RET C
|
||||||
CALL MASK
|
CALL MASK
|
||||||
RET C
|
RET C
|
||||||
;!TEST optimization
|
;!TEST optimization
|
||||||
;LD HL,MASKARE
|
;LD HL,MASKARE
|
||||||
;LD BC,11
|
;LD BC,11
|
||||||
;LD A,"?"
|
;LD A,"?"
|
||||||
;CPIR
|
;CPIR
|
||||||
;LD A,DSS_Error.sys.INVALID_NAME
|
;LD A,DSS_Error.sys.INVALID_NAME
|
||||||
;SCF
|
;SCF
|
||||||
CALL CHECK_NAME
|
CALL CHECK_NAME
|
||||||
;
|
;
|
||||||
RET Z
|
RET Z
|
||||||
CALL LOADDIR
|
CALL LOADDIR
|
||||||
CALL SEARCH.Dir
|
CALL SEARCH.Dir
|
||||||
RET C
|
RET C
|
||||||
; [ ] fat32
|
; fat32
|
||||||
LD HL,(HANDBUF+_sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L)
|
LD HL,(HANDBUF+_sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_H)
|
||||||
PUSH IX
|
EXX
|
||||||
.RMD17: PUSH HL
|
LD HL,(HANDBUF+_sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L)
|
||||||
CALL CLUSTER_TO_SECTOR
|
PUSH IX ;!TODO record index. ¢®§¬®¦®, çâ® ¬®¦¥â á«®¬ âìáï, ¥á«¨ ¡®«ìè¥ áâà ¨æë
|
||||||
LD A,(CORE_BUFFERS.BootSector.SectorsPerCluster)
|
;
|
||||||
; ç¨ ¥¬ ¢ëç¨âë¢ âì ᮤ¥à¦¨¬®¥ ª â «®£ ¯®á¥ªâ®à®
|
;!TODO <20>à®æ¥¤ãà ¯®«®£® ¢ëç¨âë¢ ¨ï ª â «®£ (¢á¥ ª« áâ¥àë). Œ®¦® § ¤¥©á⢮¢ âì ¢ ¤àã£¨å ¬¥áâ å
|
||||||
.read_dir_loop:
|
.read_dir_big_loop:
|
||||||
PUSH AF
|
PUSH HL
|
||||||
PUSH HL
|
EXX
|
||||||
PUSH IX
|
PUSH HL
|
||||||
;
|
EXX
|
||||||
IN A,(SLOT3)
|
CALL CLUSTER_TO_SECTOR
|
||||||
PUSH AF
|
LD A,(CORE_BUFFERS.BootSector.SectorsPerCluster)
|
||||||
IN A,(SLOT0)
|
LD B,A
|
||||||
OUT (SLOT3),A
|
LD C,Dss.DRV.Read
|
||||||
LD DE,CORE_BUFFERS.SECBUF+#C000
|
; ç¨ ¥¬ ¢ëç¨âë¢ âì ᮤ¥à¦¨¬®¥ ª â «®£ ¯®á¥ªâ®à®
|
||||||
LD BC,1*256 + Dss.DRV.Read
|
.read_dir_loop: ;PUSH AF
|
||||||
LD A,(FatBuffer.DRIVE)
|
PUSH BC
|
||||||
RST ToDSS.DRV
|
PUSH HL
|
||||||
POP AF
|
PUSH IX
|
||||||
OUT (SLOT3),A
|
;
|
||||||
;
|
IN A,(SLOT3)
|
||||||
;!HARDCODE 16 * 32 = 512; 32 - à §¬¥à § ¯¨á¨, 512 - à §¬¥à áç¨â ®£® ᥪâ®à
|
PUSH AF
|
||||||
LD B,16
|
IN A,(SLOT0)
|
||||||
LD HL,CORE_BUFFERS.SECBUF
|
OUT (SLOT3),A
|
||||||
|
LD DE,CORE_BUFFERS.SECBUF+#C000
|
||||||
|
;LD BC,1*256 + Dss.DRV.Read
|
||||||
|
LD B,1
|
||||||
|
LD A,(FatBuffer.DRIVE)
|
||||||
|
RST ToDSS.DRV
|
||||||
|
POP AF
|
||||||
|
OUT (SLOT3),A
|
||||||
|
;
|
||||||
|
;!HARDCODE 16 * 32 = 512; 32 - à §¬¥à § ¯¨á¨, 512 - à §¬¥à áç¨â ®£® ᥪâ®à
|
||||||
|
LD B,16
|
||||||
|
LD HL,CORE_BUFFERS.SECBUF
|
||||||
.check_dir_loop:
|
.check_dir_loop:
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
OR A
|
OR A
|
||||||
JP Z,.RMD15 ;DIR EMPTY
|
JP Z,.RMD15 ;DIR EMPTY
|
||||||
CP "."
|
CP "."
|
||||||
JR Z,.next_record
|
JR Z,.next_record
|
||||||
CP #E5 ;!HARDCODE ¡ ©â 㤠«¥¨ï ä ©«
|
CP #E5 ;!HARDCODE ¡ ©â 㤠«¥¨ï ä ©«
|
||||||
JR Z,.next_record
|
JR Z,.next_record
|
||||||
LD DE,_sFAT_DIRECTORY_RECORD.ATTRIBUT ; ᬥé. ¤® ¡ ©â âਡã⮢
|
LD DE,_sFAT_DIRECTORY_RECORD.ATTRIBUT ; ᬥé. ¤® ¡ ©â âਡã⮢
|
||||||
ADD HL,DE
|
ADD HL,DE
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
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
|
;
|
||||||
;
|
POP IX
|
||||||
POP IX
|
POP HL
|
||||||
POP HL
|
INC IX
|
||||||
INC IX
|
LD A,XH
|
||||||
LD A,XH
|
OR XL
|
||||||
OR XL
|
JR NZ,.no_inc_hl
|
||||||
JR NZ,.no_inc_hl
|
INC HL
|
||||||
INC HL
|
.no_inc_hl: ; POP AF
|
||||||
.no_inc_hl:
|
; DEC A
|
||||||
POP AF
|
; JR NZ,.read_dir_loop
|
||||||
DEC A
|
POP BC
|
||||||
JR NZ,.read_dir_loop
|
DJNZ .read_dir_loop
|
||||||
; [ ] fat32
|
; fat32
|
||||||
POP HL ; ®¬¥à ª« áâ¥à
|
EXX
|
||||||
CALL READ_FROM_FAT ; ¯à®ç¨â âì ¨§ ª¥è FAT- ®¬¥à á«¥¤. ª« áâ¥à
|
POP HL ; ®¬¥à ª« áâ¥à
|
||||||
EX DE,HL ; hl=®¬¥à á«¥¤. ª« áâ¥à
|
EXX
|
||||||
JR NC,.RMD17 ; ¥ ª®¥æ 楯®çª¨
|
POP HL ; ®¬¥à ª« áâ¥à
|
||||||
.delete:
|
CALL READ_FROM_FAT ; ¯à®ç¨â âì ¨§ ª¥è FAT- ®¬¥à á«¥¤. ª« áâ¥à
|
||||||
POP IX
|
EX DE,HL ; hl=®¬¥à á«¥¤. ª« áâ¥à
|
||||||
JP DEL_FN.DELETE ; ¯®¬¥â¨âì § ¯¨áì ª ª "㤠«¥ ï"
|
EXX
|
||||||
.RMD15: POP IX
|
EX DE,HL ; hl=®¬¥à á«¥¤. ª« áâ¥à
|
||||||
POP HL
|
EXX
|
||||||
POP AF
|
JR NC,.read_dir_big_loop ; ¥ ª®¥æ 楯®çª¨
|
||||||
POP HL
|
;
|
||||||
JR .delete
|
.delete: POP IX
|
||||||
;
|
JP DEL_FN.DELETE ; ¯®¬¥â¨âì § ¯¨áì ª ª "㤠«¥ ï"
|
||||||
.error: POP IX
|
;
|
||||||
POP HL
|
.RMD15: POP HL
|
||||||
POP AF
|
POP HL
|
||||||
POP HL
|
POP HL
|
||||||
POP IX
|
POP HL
|
||||||
LD A,DSS_Error.sys.DIR_NOT_EMPTY
|
POP HL
|
||||||
SCF
|
JR .delete
|
||||||
RET
|
;
|
||||||
|
.error: POP HL
|
||||||
|
POP HL
|
||||||
|
POP HL
|
||||||
|
POP HL
|
||||||
|
POP HL
|
||||||
|
POP HL
|
||||||
|
LD A,DSS_Error.sys.DIR_NOT_EMPTY
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
;
|
;
|
||||||
@ -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
|
||||||
|
|||||||
@ -15,194 +15,194 @@ WRITE.RD_ONLY:
|
|||||||
; HL - ADDRESS
|
; HL - ADDRESS
|
||||||
; DE - SIZE
|
; DE - SIZE
|
||||||
; A - FM
|
; A - FM
|
||||||
WRITE: ;!TEST ;!TODO 5/12/23 ; [ ] ¨§¡ëâ®çë¥ ¢ë§®¢ë WRITE_FAT_TABLE
|
WRITE: ;!TEST ;!TODO 5/12/23 ; [ ] ¨§¡ëâ®çë¥ ¢ë§®¢ë WRITE_FAT_TABLE
|
||||||
CALL .Start
|
CALL .Start
|
||||||
PUSH AF
|
PUSH AF
|
||||||
LD A,(FatBuffer.CacheUpdated)
|
LD A,(FatBuffer.CacheUpdated)
|
||||||
OR A
|
OR A
|
||||||
CALL NZ,WRITE_FAT_TABLE ; ¯®¤ª«. ¡ ªã ª¥è FAT ¨ § ¯¨á âì ¥£® ¤¨áª
|
CALL NZ,WRITE_FAT_TABLE ; ¯®¤ª«. ¡ ªã ª¥è FAT ¨ § ¯¨á âì ¥£® ¤¨áª
|
||||||
POP AF
|
POP AF
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
.Start: LD (.R_POINT),HL
|
.Start: LD (.R_POINT),HL
|
||||||
LD (.S_POINT),HL
|
LD (.S_POINT),HL
|
||||||
PUSH DE
|
PUSH DE
|
||||||
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
|
;
|
||||||
PUSH BC
|
.WOV4: POP BC
|
||||||
SRL B
|
PUSH BC
|
||||||
JR Z,.WOV2
|
SRL B
|
||||||
PUSH HL
|
JR Z,.WOV2
|
||||||
PUSH DE
|
PUSH HL
|
||||||
PUSH BC
|
PUSH DE
|
||||||
.R_POINT+2:
|
PUSH BC
|
||||||
LD IX,0
|
.R_POINT+2: LD IX,0
|
||||||
CALL BLOK_WRITE
|
CALL BLOK_WRITE
|
||||||
POP BC
|
POP BC
|
||||||
JR C,.ERR3
|
JR C,.ERR3
|
||||||
LD C,B
|
LD C,B
|
||||||
LD HL,(.R_POINT)
|
LD HL,(.R_POINT)
|
||||||
LD DE,#0200 ;!HARDCODE
|
LD DE,#0200 ;!HARDCODE
|
||||||
.WOV5: ADD HL,DE
|
.WOV5: ADD HL,DE
|
||||||
DJNZ .WOV5
|
DJNZ .WOV5
|
||||||
; B=0
|
; B=0
|
||||||
LD (.R_POINT),HL
|
LD (.R_POINT),HL
|
||||||
;LD B,0
|
;LD B,0
|
||||||
POP HL
|
POP HL
|
||||||
ADD HL,BC
|
ADD HL,BC
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
POP HL
|
POP HL
|
||||||
LD C,B
|
LD C,B
|
||||||
ADC HL,BC
|
ADC HL,BC
|
||||||
.WOV2: POP BC
|
.WOV2: POP BC
|
||||||
LD A,B
|
LD A,B
|
||||||
AND #01
|
AND #01
|
||||||
LD B,A
|
LD B,A
|
||||||
OR C
|
OR C
|
||||||
JR Z,.WOV6
|
JR Z,.WOV6
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH DE
|
PUSH DE
|
||||||
PUSH BC
|
PUSH BC
|
||||||
LD IX,CORE_BUFFERS.BUFFER+#C000
|
LD IX,CORE_BUFFERS.BUFFER+#C000
|
||||||
LD B,1
|
LD B,1
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
PUSH AF
|
PUSH AF
|
||||||
IN A,(SLOT0)
|
IN A,(SLOT0)
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
CALL BLOCK_READ
|
CALL BLOCK_READ
|
||||||
POP BC
|
POP BC
|
||||||
LD C,SLOT3
|
LD C,SLOT3
|
||||||
OUT (C),B
|
OUT (C),B
|
||||||
LD DE,CORE_BUFFERS.BUFFER
|
LD DE,CORE_BUFFERS.BUFFER
|
||||||
LD HL,(.R_POINT)
|
LD HL,(.R_POINT)
|
||||||
POP BC
|
POP BC
|
||||||
JP C,.ERR2
|
JP C,.ERR2
|
||||||
LDIR
|
LDIR
|
||||||
LD (.R_POINT),HL
|
LD (.R_POINT),HL
|
||||||
POP DE
|
POP DE
|
||||||
POP HL
|
POP HL
|
||||||
LD IX,CORE_BUFFERS.BUFFER+#C000
|
LD IX,CORE_BUFFERS.BUFFER+#C000
|
||||||
LD B,1
|
LD B,1
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
PUSH AF
|
PUSH AF
|
||||||
IN A,(SLOT0)
|
IN A,(SLOT0)
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
CALL BLOK_WRITE
|
CALL BLOK_WRITE
|
||||||
POP BC
|
POP BC
|
||||||
LD C,SLOT3
|
LD C,SLOT3
|
||||||
OUT (C),B
|
OUT (C),B
|
||||||
RET C
|
RET C
|
||||||
.WOV6: LD HL,(.R_POINT)
|
.WOV6: LD HL,(.R_POINT)
|
||||||
.S_POINT+1: LD DE,0
|
.S_POINT+1: LD DE,0
|
||||||
; CF=0
|
; CF=0
|
||||||
;AND A
|
;AND A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
PUSH HL
|
PUSH HL
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD XH,D
|
LD XH,D
|
||||||
LD XL,E
|
LD XL,E
|
||||||
LD HL,0
|
LD HL,0
|
||||||
CALL MOVE_FP.F_current
|
CALL MOVE_FP.F_current
|
||||||
CALL MOVE_CP
|
CALL MOVE_CP
|
||||||
POP DE
|
POP DE
|
||||||
RET NC ; …᫨ à §¬¥à ä ©« ¤¨áª¥ <20>… áâ « ¡®«ìè¥, 祬 ¡ë«
|
RET NC ; …᫨ à §¬¥à ä ©« ¤¨áª¥ <20>… áâ « ¡®«ìè¥, 祬 ¡ë«
|
||||||
; …᫨ à §¬¥à ä ©« ¤¨áª¥ áâ « ¡®«ìè¥, 祬 ¡ë«
|
; …᫨ à §¬¥à ä ©« ¤¨áª¥ áâ « ¡®«ìè¥, 祬 ¡ë«
|
||||||
LD L,(IY + _sFM.F_POSITION+0)
|
LD L,(IY + _sFM.F_POSITION+0)
|
||||||
LD H,(IY + _sFM.F_POSITION+1)
|
LD H,(IY + _sFM.F_POSITION+1)
|
||||||
LD C,(IY + _sFM.F_POSITION+2)
|
LD C,(IY + _sFM.F_POSITION+2)
|
||||||
LD B,(IY + _sFM.F_POSITION+3)
|
LD B,(IY + _sFM.F_POSITION+3)
|
||||||
LD (IY + _sFM.FS_REC.F_SIZE+0),L
|
LD (IY + _sFM.FS_REC.F_SIZE+0),L
|
||||||
LD (IY + _sFM.FS_REC.F_SIZE+1),H
|
LD (IY + _sFM.FS_REC.F_SIZE+1),H
|
||||||
LD (IY + _sFM.FS_REC.F_SIZE+2),C
|
LD (IY + _sFM.FS_REC.F_SIZE+2),C
|
||||||
LD (IY + _sFM.FS_REC.F_SIZE+3),B
|
LD (IY + _sFM.FS_REC.F_SIZE+3),B
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
.WOV1: PUSH BC
|
.WOV1: PUSH BC
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH DE
|
PUSH DE
|
||||||
LD IX,CORE_BUFFERS.BUFFER+#C000
|
LD IX,CORE_BUFFERS.BUFFER+#C000
|
||||||
LD B,1
|
LD B,1
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
PUSH AF
|
PUSH AF
|
||||||
IN A,(SLOT0)
|
IN A,(SLOT0)
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
CALL BLOCK_READ
|
CALL BLOCK_READ
|
||||||
POP BC
|
POP BC
|
||||||
LD C,SLOT3
|
LD C,SLOT3
|
||||||
OUT (C),B
|
OUT (C),B
|
||||||
POP DE
|
POP DE
|
||||||
POP HL
|
POP HL
|
||||||
EXX
|
EXX
|
||||||
POP DE
|
POP DE
|
||||||
JP C,.ERR1
|
JP C,.ERR1
|
||||||
LD HL,512 ;!HARDCODE sector size!
|
LD HL,512 ;!HARDCODE sector size!
|
||||||
AND A
|
AND A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
LD B,H
|
LD B,H
|
||||||
LD C,L
|
LD C,L
|
||||||
POP HL
|
POP HL
|
||||||
AND A
|
AND A
|
||||||
SBC HL,BC
|
SBC HL,BC
|
||||||
JR NC,.WOV3
|
JR NC,.WOV3
|
||||||
ADD HL,BC
|
ADD HL,BC
|
||||||
LD B,H
|
LD B,H
|
||||||
LD C,L
|
LD C,L
|
||||||
LD HL,0
|
LD HL,0
|
||||||
.WOV3: PUSH HL
|
.WOV3: PUSH HL
|
||||||
LD HL,CORE_BUFFERS.BUFFER
|
LD HL,CORE_BUFFERS.BUFFER
|
||||||
ADD HL,DE
|
ADD HL,DE
|
||||||
LD DE,(.R_POINT)
|
LD DE,(.R_POINT)
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LDIR
|
LDIR
|
||||||
LD (.R_POINT),HL
|
LD (.R_POINT),HL
|
||||||
EXX
|
EXX
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH DE
|
PUSH DE
|
||||||
LD IX,CORE_BUFFERS.BUFFER+#C000
|
LD IX,CORE_BUFFERS.BUFFER+#C000
|
||||||
LD B,1
|
LD B,1
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
PUSH AF
|
PUSH AF
|
||||||
IN A,(SLOT0)
|
IN A,(SLOT0)
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
CALL BLOK_WRITE
|
CALL BLOK_WRITE
|
||||||
POP BC
|
POP BC
|
||||||
LD C,SLOT3
|
LD C,SLOT3
|
||||||
OUT (C),B
|
OUT (C),B
|
||||||
POP HL
|
POP HL
|
||||||
JP C,.ERR2
|
JP C,.ERR2
|
||||||
LD BC,1
|
LD BC,1
|
||||||
ADD HL,BC
|
ADD HL,BC
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
POP HL
|
POP HL
|
||||||
LD C,B
|
LD C,B
|
||||||
ADC HL,BC
|
ADC HL,BC
|
||||||
JP .WOV4
|
JP .WOV4
|
||||||
;
|
;
|
||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -446,6 +446,3 @@ CHECK_NAME:
|
|||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
;=======================================================================
|
;=======================================================================
|
||||||
|
|||||||
@ -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
|
||||||
;
|
;
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
956
|
949
|
||||||
Loading…
Reference in New Issue
Block a user