mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
добить:
LOAD_NEXT_DIR_PART_TO_DIR_CACHE WRITE_DIR_HANDLE ;-bug: GenIOCTL.GetParams - выдавала неправильное количество секторов для FDD
This commit is contained in:
parent
32dca48eaf
commit
05c9224a7b
@ -5,6 +5,7 @@
|
|||||||
;‚ëå®¤ë¥ § 票ï:
|
;‚ëå®¤ë¥ § 票ï:
|
||||||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||||||
;CLOSE:
|
;CLOSE:
|
||||||
CLOSE_FN: LD (.TMP),A
|
CLOSE_FN: LD (.TMP),A
|
||||||
CALL SET_FM
|
CALL SET_FM
|
||||||
@ -18,8 +19,7 @@ CLOSE_FN: LD (.TMP),A
|
|||||||
;
|
;
|
||||||
BIT 7,(IY+_sFM.ACCESS_MODE)
|
BIT 7,(IY+_sFM.ACCESS_MODE)
|
||||||
JR Z,.NOTMODF
|
JR Z,.NOTMODF
|
||||||
;
|
; ä ©« ¨§¬¥ñ
|
||||||
; ä ©« ¨§¬¥ñ
|
|
||||||
LD E,(IY+_sFM.DIR_CLUSTER_L)
|
LD E,(IY+_sFM.DIR_CLUSTER_L)
|
||||||
LD D,(IY+_sFM.DIR_CLUSTER_L+1)
|
LD D,(IY+_sFM.DIR_CLUSTER_L+1)
|
||||||
PUSH DE
|
PUSH DE
|
||||||
@ -50,39 +50,64 @@ CLOSE_FN: LD (.TMP),A
|
|||||||
;
|
;
|
||||||
LD L,(IY+_sFM.HANDLE)
|
LD L,(IY+_sFM.HANDLE)
|
||||||
LD H,(IY+_sFM.HANDLE+1)
|
LD H,(IY+_sFM.HANDLE+1)
|
||||||
CALL LOADDIR.Custom ; [ ] big dir ;!FIXIT check error
|
; CF=0
|
||||||
; [ ] big dir
|
CALL LOADDIR.Custom ; [x] big dir ;!FIXIT check error
|
||||||
;!TODO ®â¬®â âì ªíè ¤® 㦮£® record index?
|
|
||||||
;
|
|
||||||
.TMP+1: LD A,0
|
.TMP+1: LD A,0
|
||||||
CALL SET_FM
|
CALL SET_FM
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
; ;
|
||||||
|
; SET_PAGE_X DIRPAGE
|
||||||
|
; EX AF,AF'
|
||||||
|
; LD HL,DIRPAGE.buffer
|
||||||
|
; LD DE,FAT_DIRECTORY_RECORD
|
||||||
|
; LD C,(IY+_sFM.HANDLE)
|
||||||
|
; LD B,(IY+_sFM.HANDLE+1)
|
||||||
|
; PUSH BC ; record index
|
||||||
|
; LD A,1 ; [x] big dir
|
||||||
|
; AND B
|
||||||
|
; LD B,A
|
||||||
|
; JR .next_add
|
||||||
|
; ;
|
||||||
|
; .loop_add: ADD HL,DE
|
||||||
|
; DEC BC
|
||||||
|
; LD A,B
|
||||||
|
; .next_add: OR C
|
||||||
|
; JR NZ,.loop_add
|
||||||
|
; ;
|
||||||
|
; LD D,YH
|
||||||
|
; LD E,YL
|
||||||
|
; EX DE,HL
|
||||||
|
; LD BC,FAT_DIRECTORY_RECORD
|
||||||
|
; LDIR
|
||||||
|
; EX AF,AF'
|
||||||
|
; OUT (SLOT3),A
|
||||||
|
; POP HL
|
||||||
|
; CALL SAVEDIR
|
||||||
|
; .NOTMODF: LD A,(.TMP)
|
||||||
|
; JP RES_FM
|
||||||
|
; ;
|
||||||
|
; .error: POP DE
|
||||||
|
; POP DE
|
||||||
|
; RET
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
;
|
;
|
||||||
SET_PAGE_X DIRPAGE
|
SET_PAGE_X DIRPAGE
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
; [ ] big dir
|
LD L,(IY+_sFM.OffsetInDirCache)
|
||||||
;!TEST 9/11/23 record index
|
LD H,(IY+_sFM.OffsetInDirCache+1)
|
||||||
LD HL,DIRPAGE.buffer
|
PUSH HL
|
||||||
LD DE,FAT_DIRECTORY_RECORD
|
LD E,YL
|
||||||
LD C,(IY+_sFM.HANDLE)
|
LD D,YH
|
||||||
LD B,(IY+_sFM.HANDLE+1)
|
EX DE,HL
|
||||||
JR .CLOSE2
|
LD BC,FAT_DIRECTORY_RECORD
|
||||||
;
|
LDIR
|
||||||
.CLOSE1: ADD HL,DE
|
|
||||||
DEC BC
|
|
||||||
.CLOSE2: LD A,B
|
|
||||||
OR C
|
|
||||||
JR NZ,.CLOSE1
|
|
||||||
;LD L,(IY+_sFM.HANDLE)
|
|
||||||
;LD H,(IY+_sFM.HANDLE+1)
|
|
||||||
;;;;;;;;;
|
|
||||||
LD D,YH
|
|
||||||
LD E,YL
|
|
||||||
EX DE,HL
|
|
||||||
LD BC,FAT_DIRECTORY_RECORD
|
|
||||||
LDIR
|
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
POP HL
|
||||||
CALL SAVEDIR
|
CALL SAVEDIR
|
||||||
.NOTMODF: LD A,(.TMP)
|
.NOTMODF: LD A,(.TMP)
|
||||||
JP RES_FM
|
JP RES_FM
|
||||||
@ -90,4 +115,3 @@ CLOSE_FN: LD (.TMP),A
|
|||||||
.error: POP DE
|
.error: POP DE
|
||||||
POP DE
|
POP DE
|
||||||
RET
|
RET
|
||||||
;
|
|
||||||
@ -17,6 +17,7 @@ CREATE: ; Current Dir 15/10/23 ;CREATE_FN:
|
|||||||
CALL .Prepare
|
CALL .Prepare
|
||||||
RET C
|
RET C
|
||||||
CALL SEARCH.File
|
CALL SEARCH.File
|
||||||
|
; DE - record index
|
||||||
; [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
|
||||||
@ -45,16 +46,11 @@ CREATE: ; Current Dir 15/10/23 ;CREATE_FN:
|
|||||||
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
|
JR NC,.FILE_EXISTS
|
||||||
; LD A,DSS_Error.sys.FILE_EXISTS
|
|
||||||
; CCF
|
|
||||||
; RET C
|
|
||||||
JR NC,.FILE_EXISTS
|
|
||||||
CP DSS_Error.sys.FILE_NOT_FOUND
|
|
||||||
SCF
|
|
||||||
RET NZ
|
|
||||||
;
|
|
||||||
;
|
;
|
||||||
|
CP DSS_Error.sys.FILE_NOT_FOUND
|
||||||
|
SCF
|
||||||
|
RET NZ
|
||||||
;no_file_found
|
;no_file_found
|
||||||
.DO: ; FAT_DIRECTORY_RECORD.NAME + .EXT
|
.DO: ; FAT_DIRECTORY_RECORD.NAME + .EXT
|
||||||
LD HL,CORE_BUFFERS.MASKARE
|
LD HL,CORE_BUFFERS.MASKARE
|
||||||
@ -72,10 +68,8 @@ CREATE: ; Current Dir 15/10/23 ;CREATE_FN:
|
|||||||
INC HL
|
INC HL
|
||||||
DJNZ .loop1
|
DJNZ .loop1
|
||||||
; .TIME .. .DATE
|
; .TIME .. .DATE
|
||||||
CALL WRITE_DATE_TIME_TO_DIRECTORY_RECORD
|
CALL WRITE_DATE_TIME_FOR_DIRECTORY_RECORD
|
||||||
;
|
|
||||||
LD BC,#0600
|
LD BC,#0600
|
||||||
;
|
|
||||||
.loop2: LD (HL),C
|
.loop2: LD (HL),C
|
||||||
INC HL
|
INC HL
|
||||||
DJNZ .loop2
|
DJNZ .loop2
|
||||||
|
|||||||
@ -459,6 +459,7 @@ M_PSP: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
|
|||||||
CP (HL)
|
CP (HL)
|
||||||
INC HL
|
INC HL
|
||||||
JR Z,.YP_ESLA
|
JR Z,.YP_ESLA
|
||||||
|
;
|
||||||
LD (HL),A
|
LD (HL),A
|
||||||
INC HL
|
INC HL
|
||||||
.YP_ESLA: EX DE,HL
|
.YP_ESLA: EX DE,HL
|
||||||
@ -467,6 +468,7 @@ M_PSP: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
|
|||||||
LDI
|
LDI
|
||||||
CP ' '+1
|
CP ' '+1
|
||||||
JR NC,.loop
|
JR NC,.loop
|
||||||
|
;
|
||||||
DEC DE
|
DEC DE
|
||||||
XOR A
|
XOR A
|
||||||
LD (DE),A
|
LD (DE),A
|
||||||
|
|||||||
@ -8,8 +8,8 @@
|
|||||||
; B = #01 - ¨¬ï ©¤¥®£® ä ©« ¢ ä®à¬ ⥠DOS "filename.ext",0
|
; B = #01 - ¨¬ï ©¤¥®£® ä ©« ¢ ä®à¬ ⥠DOS "filename.ext",0
|
||||||
; ¯®¨áª ¡¥§ ®£à ¨ç¥¨¥ à §¬¥à ª â «®£ :
|
; ¯®¨áª ¡¥§ ®£à ¨ç¥¨¥ à §¬¥à ª â «®£ :
|
||||||
; !TODO B = #02 - ¨¬ï ©¤¥®£® ä ©« ¢ ä®à¬ ⥠DOS + LFN
|
; !TODO B = #02 - ¨¬ï ©¤¥®£® ä ©« ¢ ä®à¬ ⥠DOS + LFN
|
||||||
; !TODO B = #80 - ¨¬ï ©¤¥®£® ä ©« ¢ ä®à¬ ⥠11 ¡ ©â "FilenameExt"
|
; B = #80 - ¨¬ן ©¤¥®£® ה ©« ¢ ה®א¬ ג¥ 11 <20> ©ג "FilenameExt"
|
||||||
; !TODO B = #81 - ¨¬ï ©¤¥®£® ä ©« ¢ ä®à¬ ⥠DOS "filename.ext",0
|
; B = #81 - ¨¬ן ©¤¥®£® ה ©« ¢ ה®א¬ ג¥ DOS "filename.ext",0
|
||||||
;‚ëå®¤ë¥ § 票ï:
|
;‚ëå®¤ë¥ § 票ï:
|
||||||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
@ -39,7 +39,7 @@ F_FIRST: CALL .INIT_VARS
|
|||||||
PUSH DE ; record index ¬®¦¥â ¨ ¥ 㦮
|
PUSH DE ; record index ¬®¦¥â ¨ ¥ 㦮
|
||||||
LD HL,CORE_BUFFERS.MASKARE
|
LD HL,CORE_BUFFERS.MASKARE
|
||||||
.DTABUF+1: LD DE,0
|
.DTABUF+1: LD DE,0
|
||||||
LD BC,FAT_DIRECTORY_RECORD.ATTRIBUT ; ª®¯¨à㥬 .NAME ¨ .EXT
|
LD BC,FAT_DIRECTORY_RECORD.ATTRIBUT ; ×®¯¨אד¥¬ .NAME ¨ .EXT
|
||||||
LDIR
|
LDIR
|
||||||
.SEARCH_ATTRIBUT+1:
|
.SEARCH_ATTRIBUT+1:
|
||||||
LD A,0 ; DSS_FCB_MAIN.SEARCH_ATTRIBUT
|
LD A,0 ; DSS_FCB_MAIN.SEARCH_ATTRIBUT
|
||||||
@ -144,4 +144,4 @@ F_NEXT:
|
|||||||
LD DE,SEARCH.for_F_NEXT
|
LD DE,SEARCH.for_F_NEXT
|
||||||
PUSH DE ; ¢ë室 ¢ SEARCH ¨§ SEARCH_RECORD_IN_DIR_CACHE
|
PUSH DE ; ¢ë室 ¢ SEARCH ¨§ SEARCH_RECORD_IN_DIR_CACHE
|
||||||
JP SEARCH_RECORD_IN_DIR_CACHE.next_record
|
JP SEARCH_RECORD_IN_DIR_CACHE.next_record
|
||||||
;
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@ -83,7 +83,7 @@ MKDIR:
|
|||||||
LD (HL),D
|
LD (HL),D
|
||||||
INC HL
|
INC HL
|
||||||
;
|
;
|
||||||
CALL WRITE_DATE_TIME_TO_DIRECTORY_RECORD
|
CALL WRITE_DATE_TIME_FOR_DIRECTORY_RECORD
|
||||||
; § ¯¨áì ¬« ¤è¥£® ®¬¥à ª« áâ¥à .FIRST_CLUSTER_L
|
; § ¯¨áì ¬« ¤è¥£® ®¬¥à ª« áâ¥à .FIRST_CLUSTER_L
|
||||||
POP BC ; áâ à訩 ®¬¥à ᥪâ®à
|
POP BC ; áâ à訩 ®¬¥à ᥪâ®à
|
||||||
POP DE ; ¬« ¤è¨© ®¬¥à ᥪâ®à
|
POP DE ; ¬« ¤è¨© ®¬¥à ᥪâ®à
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
; A - FILE MANIPULATOR
|
; A - FILE MANIPULATOR
|
||||||
MOVE_FP: CALL SET_FM
|
MOVE_FP: CALL SET_FM
|
||||||
RET C
|
RET C
|
||||||
|
;
|
||||||
INC B
|
INC B
|
||||||
DJNZ .B_1
|
DJNZ .B_1
|
||||||
;from Start File
|
;from Start File
|
||||||
|
|||||||
123
DSS/API/Open.asm
123
DSS/API/Open.asm
@ -28,24 +28,21 @@ OPEN_FN: ; Current Dir 15/10/23
|
|||||||
.FILE: CALL SEARCH.File ; enter point from EXEC, CREATE
|
.FILE: CALL SEARCH.File ; enter point from EXEC, CREATE
|
||||||
RET C
|
RET C
|
||||||
;
|
;
|
||||||
|
; IX - ᬥ饨¥ § ¯¨áì ¢ SLOT3 DIRPAGE.buffer
|
||||||
.FM: ; enter point from ATTRIB
|
.FM: ; enter point from ATTRIB
|
||||||
;R002 ;!TEST 9/11/23 record index
|
PUSH DE ; á®åà 塞 㪠§ â¥«ì § ¯¨áì ¢ ª â «®£¥ FS (¯®«ãç¥ ¨§ SEARCH)
|
||||||
PUSH DE ; á®åà 塞 㪠§ â¥«ì § ¯¨áì ¢ ª â «®£¥ FS (¯®«ãç¥ ¨§ SEARCH)
|
|
||||||
;
|
|
||||||
CALL GET_FM
|
CALL GET_FM
|
||||||
;!TEST 9/11/23 record index 㪠§ â¥«ì § ¯¨áì ¢ ª â «®£¥ FS
|
POP DE
|
||||||
POP DE
|
|
||||||
;
|
|
||||||
RET C
|
RET C
|
||||||
|
;
|
||||||
LD A,C ; ¤¥áªà¨¯â®à ä ©«
|
LD A,C ; ¤¥áªà¨¯â®à ä ©«
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
;!TEST 9/11/23 record index 㪠§ â¥«ì § ¯¨áì ¢ ª â «®£¥ FS
|
LD (IY+_sFM.HANDLE),E
|
||||||
;POP DE
|
LD (IY+_sFM.HANDLE+1),D
|
||||||
; EXX
|
LD D,XH
|
||||||
LD (IY+_sFM.HANDLE),E
|
LD E,XL
|
||||||
LD (IY+_sFM.HANDLE+1),D
|
LD (IY+_sFM.OffsetInDirCache),E
|
||||||
; EXX
|
LD (IY+_sFM.OffsetInDirCache+1),D
|
||||||
;
|
|
||||||
LD D,YH
|
LD D,YH
|
||||||
LD E,YL
|
LD E,YL
|
||||||
LD HL,CORE_BUFFERS.HANDBUF
|
LD HL,CORE_BUFFERS.HANDBUF
|
||||||
@ -53,95 +50,53 @@ OPEN_FN: ; Current Dir 15/10/23
|
|||||||
LDIR
|
LDIR
|
||||||
.TMP+1: LD A,0
|
.TMP+1: LD A,0
|
||||||
LD (IY+_sFM.ACCESS_MODE),A
|
LD (IY+_sFM.ACCESS_MODE),A
|
||||||
; !FIXIT ®¯â¨¬¨§ã« âãâ
|
|
||||||
;LD A,(TASK)
|
|
||||||
;LD (IY+_sFM.TASK_NUM),A
|
|
||||||
;XOR A
|
|
||||||
;LD (IY+_sFM.OptimizedClusters),A
|
|
||||||
;LD (IY+_sFM.KnownCluster_L),A
|
|
||||||
;LD (IY+_sFM.KnownCluster_L+1),A
|
|
||||||
;LD (IY+_sFM.KnownOffset_L),A
|
|
||||||
;LD (IY+_sFM.KnownOffset_L+1),A
|
|
||||||
;; fat32
|
|
||||||
; LD (IY+_sFM.KnownCluster_H),A
|
|
||||||
; LD (IY+_sFM.KnownCluster_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+2),A
|
|
||||||
;LD (IY+_sFM.F_POSITION+3),A
|
|
||||||
;LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
|
||||||
;LD (IY+_sFM.DRIVE),A
|
|
||||||
;; fat32
|
|
||||||
;LD HL,CORE_BUFFERS.FM_BUF + _sFM.FS_REC.FIRST_CLUSTER_H
|
|
||||||
;LD E,(HL)
|
|
||||||
;INC HL
|
|
||||||
;LD D,(HL)
|
|
||||||
;LD (IY+_sFM.DIR_CLUSTER_H),E
|
|
||||||
;LD (IY+_sFM.DIR_CLUSTER_H+1),D
|
|
||||||
;;
|
|
||||||
;LD HL,CORE_BUFFERS.FM_BUF + _sFM.FS_REC.FIRST_CLUSTER_L ; work directory FM
|
|
||||||
;LD E,(HL)
|
|
||||||
;INC HL
|
|
||||||
;LD D,(HL)
|
|
||||||
;LD (IY+_sFM.DIR_CLUSTER_L),E
|
|
||||||
;LD (IY+_sFM.DIR_CLUSTER_L+1),D
|
|
||||||
;
|
|
||||||
PUSH IY
|
PUSH IY
|
||||||
POP HL
|
POP HL
|
||||||
LD DE,_sFM.F_POSITION
|
LD DE,_sFM.F_POSITION
|
||||||
ADD HL,DE
|
ADD HL,DE
|
||||||
XOR A
|
; ‡ ã«ï¥¬
|
||||||
LD (HL),A ; _sFM.F_POSITION
|
; _sFM.F_POSITION
|
||||||
INC HL
|
; _sFM.F_POSITION + 1
|
||||||
LD (HL),A ; _sFM.F_POSITION + 1
|
; _sFM.F_POSITION + 2
|
||||||
INC HL
|
; _sFM.F_POSITION + 3
|
||||||
LD (HL),A ; _sFM.F_POSITION + 2
|
LD BC,#0400 ; B - áç¥â稪
|
||||||
INC HL
|
.loopZ0: LD (HL),C
|
||||||
LD (HL),A ; _sFM.F_POSITION + 3
|
INC HL
|
||||||
INC HL
|
DJNZ .loopZ0
|
||||||
;
|
;
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD HL,CORE_BUFFERS.FM_BUF + _sFM.FS_REC.FIRST_CLUSTER_L
|
LD HL,CORE_BUFFERS.FM_BUF + _sFM.FS_REC.FIRST_CLUSTER_L
|
||||||
LDI ; _sFM.DIR_CLUSTER_L
|
LDI ; _sFM.DIR_CLUSTER_L
|
||||||
LDI ; _sFM.DIR_CLUSTER_L + 1
|
LDI ; _sFM.DIR_CLUSTER_L + 1
|
||||||
LD HL,CORE_BUFFERS.FM_BUF + _sFM.FS_REC.FIRST_CLUSTER_H
|
LD HL,CORE_BUFFERS.FM_BUF + _sFM.FS_REC.FIRST_CLUSTER_H
|
||||||
LDI ; _sFM.DIR_CLUSTER_H
|
LDI ; _sFM.DIR_CLUSTER_H
|
||||||
LDI ; _sFM.DIR_CLUSTER_H + 1
|
LDI ; _sFM.DIR_CLUSTER_H + 1
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
;
|
;
|
||||||
INC HL
|
INC HL
|
||||||
INC HL
|
INC HL
|
||||||
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
||||||
LD (HL),A ; _sFM.DRIVE
|
LD (HL),A ; _sFM.DRIVE
|
||||||
INC HL
|
INC HL
|
||||||
INC HL
|
INC HL
|
||||||
LD A,(TASK)
|
LD A,(TASK)
|
||||||
LD (HL),A ; _sFM.TASK_NUM
|
LD (HL),A ; _sFM.TASK_NUM
|
||||||
INC HL
|
INC HL
|
||||||
|
; ‡ ã«ï¥¬
|
||||||
|
; _sFM.OptimizedClusters
|
||||||
|
; _sFM.KnownCluster_L
|
||||||
|
; _sFM.KnownCluster_L + 1
|
||||||
|
; _sFM.KnownCluster_H
|
||||||
|
; _sFM.KnownCluster_H + 1
|
||||||
|
; _sFM.KnownOffset_L
|
||||||
|
; _sFM.KnownOffset_L + 1
|
||||||
|
; _sFM.KnownOffset_H
|
||||||
|
; _sFM.KnownOffset_H + 1
|
||||||
|
LD BC,#0900 ; B - áç¥â稪
|
||||||
|
.loopZ1: LD (HL),C
|
||||||
|
INC HL
|
||||||
|
DJNZ .loopZ1
|
||||||
;
|
;
|
||||||
XOR A
|
|
||||||
LD (HL),A ; _sFM.OptimizedClusters
|
|
||||||
INC HL
|
|
||||||
LD (HL),A ; _sFM.KnownCluster_L
|
|
||||||
INC HL
|
|
||||||
LD (HL),A ; _sFM.KnownCluster_L + 1
|
|
||||||
INC HL
|
|
||||||
LD (HL),A ; _sFM.KnownCluster_H
|
|
||||||
INC HL
|
|
||||||
LD (HL),A ; _sFM.KnownCluster_H + 1
|
|
||||||
INC HL
|
|
||||||
LD (HL),A ; _sFM.KnownOffset_L
|
|
||||||
INC HL
|
|
||||||
LD (HL),A ; _sFM.KnownOffset_L + 1
|
|
||||||
INC HL
|
|
||||||
LD (HL),A ; _sFM.KnownOffset_H
|
|
||||||
INC HL
|
|
||||||
LD (HL),A ; _sFM.KnownOffset_H + 1
|
|
||||||
; ;
|
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
;
|
|
||||||
|
|||||||
@ -6,8 +6,8 @@ READ: LD (.R_POINT),HL
|
|||||||
LD (.S_POINT),HL
|
LD (.S_POINT),HL
|
||||||
CALL SET_FM
|
CALL SET_FM
|
||||||
RET C
|
RET C
|
||||||
CALL .TEST_SIZE
|
|
||||||
;
|
;
|
||||||
|
CALL .TEST_SIZE
|
||||||
LD A,D
|
LD A,D
|
||||||
OR E
|
OR E
|
||||||
JP Z,.NOREAD
|
JP Z,.NOREAD
|
||||||
|
|||||||
@ -367,9 +367,11 @@ FM_FIND: CP FMCOUNT+1
|
|||||||
LD DE,CORE_BUFFERS.FM_BUF.Size
|
LD DE,CORE_BUFFERS.FM_BUF.Size
|
||||||
AND A
|
AND A
|
||||||
JR Z,.endLoop
|
JR Z,.endLoop
|
||||||
|
;
|
||||||
.loop: ADD IY,DE
|
.loop: ADD IY,DE
|
||||||
DEC A
|
DEC A
|
||||||
JR NZ,.loop
|
JR NZ,.loop
|
||||||
|
;
|
||||||
.endLoop: POP DE
|
.endLoop: POP DE
|
||||||
; A=0
|
; A=0
|
||||||
OR (IY) ;+00 NAME
|
OR (IY) ;+00 NAME
|
||||||
@ -378,29 +380,25 @@ FM_FIND: CP FMCOUNT+1
|
|||||||
.error: XOR A
|
.error: XOR A
|
||||||
LD A,DSS_Error.sys.INVALID_HANDLE
|
LD A,DSS_Error.sys.INVALID_HANDLE
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
SET_FM: CALL FM_FIND
|
SET_FM: CALL FM_FIND
|
||||||
|
RET NZ ; no error
|
||||||
; error
|
; error
|
||||||
;LD A,DSS_Error.sys.INVALID_HANDLE
|
|
||||||
; CF = 1
|
|
||||||
SCF
|
SCF
|
||||||
RET Z
|
|
||||||
; no error
|
|
||||||
XOR A ;LD A,DSS_Error.sys.NO_ERROR
|
|
||||||
; CF = 0
|
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
|
||||||
RES_FM: CALL FM_FIND
|
RES_FM: CALL FM_FIND
|
||||||
; error
|
|
||||||
; LD A,DSS_Error.sys.INVALID_HANDLE
|
|
||||||
SCF
|
SCF
|
||||||
RET Z
|
RET Z ; error
|
||||||
; no error
|
; no error
|
||||||
XOR A
|
XOR A
|
||||||
LD (IY + _sFM.FS_REC.NAME),A
|
LD (IY + _sFM.FS_REC.NAME),A
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
|
|
||||||
;!TODO CHECK LOCKING
|
;!TODO CHECK LOCKING
|
||||||
GET_FM: LD B,FMCOUNT
|
GET_FM: LD B,FMCOUNT
|
||||||
LD C,#FF
|
LD C,#FF
|
||||||
@ -411,10 +409,12 @@ GET_FM: LD B,FMCOUNT
|
|||||||
LD A,(IY + _sFM.FS_REC.NAME)
|
LD A,(IY + _sFM.FS_REC.NAME)
|
||||||
OR A
|
OR A
|
||||||
RET Z
|
RET Z
|
||||||
|
;
|
||||||
DJNZ .loop
|
DJNZ .loop
|
||||||
LD A,DSS_Error.sys.NO_HANDLES
|
LD A,DSS_Error.sys.NO_HANDLES
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
|
||||||
;FP COMPARE
|
;FP COMPARE
|
||||||
; CY - FILE POINTER > SIZE
|
; CY - FILE POINTER > SIZE
|
||||||
@ -439,6 +439,7 @@ UPPER: CP 'a'
|
|||||||
RET C
|
RET C
|
||||||
CP 'z' + 1
|
CP 'z' + 1
|
||||||
JR NC,.CheckRUS
|
JR NC,.CheckRUS
|
||||||
|
;
|
||||||
.Dec: SUB #20
|
.Dec: SUB #20
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
|
|||||||
199
DSS/FS/FAT.asm
199
DSS/FS/FAT.asm
@ -2168,18 +2168,29 @@ SEARCH:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
; ‚室:
|
||||||
|
; ‚ë室: DE'
|
||||||
|
;
|
||||||
|
SET_RECORD_INDEX_FROM_DIR_BLOCK:
|
||||||
|
SLA A
|
||||||
|
EXX
|
||||||
|
; record index
|
||||||
|
LD D,A
|
||||||
|
LD E,0
|
||||||
|
EXX
|
||||||
|
RET
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
SEARCH_RECORD_IN_DIR_CACHE:
|
SEARCH_RECORD_IN_DIR_CACHE:
|
||||||
;CPL
|
;CPL
|
||||||
LD C,A
|
LD C,A
|
||||||
LD A,(CORE_BUFFERS.FS_Buffer.DirBlock)
|
LD A,(CORE_BUFFERS.FS_Buffer.DirBlock)
|
||||||
LD (.StartPage),A
|
LD (LOAD_NEXT_DIR_PART_TO_DIR_CACHE.StartPage),A
|
||||||
SLA A
|
CALL SET_RECORD_INDEX_FROM_DIR_BLOCK
|
||||||
;!TEST 9/11/23 record index
|
|
||||||
EXX
|
|
||||||
LD D,A
|
|
||||||
LD E,0
|
|
||||||
EXX
|
|
||||||
;
|
;
|
||||||
.loop_big: LD IX,DIRPAGE.buffer
|
.loop_big: LD IX,DIRPAGE.buffer
|
||||||
.loop: LD A,(IX + FAT_DIRECTORY_RECORD.NAME)
|
.loop: LD A,(IX + FAT_DIRECTORY_RECORD.NAME)
|
||||||
@ -2216,19 +2227,35 @@ SEARCH_RECORD_IN_DIR_CACHE:
|
|||||||
;JR NZ,.next_record
|
;JR NZ,.next_record
|
||||||
JR Z,.next_char
|
JR Z,.next_char
|
||||||
;
|
;
|
||||||
.next_record: ;!TEST 9/11/23 record index
|
.next_record: EXX
|
||||||
EXX
|
INC DE ; record index
|
||||||
INC DE
|
EXX
|
||||||
EXX
|
|
||||||
;
|
|
||||||
LD DE,FAT_DIRECTORY_RECORD
|
LD DE,FAT_DIRECTORY_RECORD
|
||||||
ADD IX,DE
|
ADD IX,DE
|
||||||
JR NC,.loop
|
JR NC,.loop
|
||||||
;
|
;
|
||||||
; CF=1
|
CALL LOAD_NEXT_DIR_PART_TO_DIR_CACHE
|
||||||
|
RET C
|
||||||
|
JR NZ,.loop_big
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
|
||||||
|
.next_char: INC HL
|
||||||
|
INC DE
|
||||||
|
DJNZ .loop_compare
|
||||||
|
; CF=0
|
||||||
|
RET
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;----------------------------------------------------------------------; LOAD_NEXT_DIR_PART_TO_DIR_CACHE
|
||||||
; !FIXIT root dir in LOADDIR
|
; !FIXIT root dir in LOADDIR
|
||||||
; !FIXIT ¥á«¨ ¢ ªíè ¡ë«¨ ¨§¬¥¥¨ï?
|
; !FIXIT ¥á«¨ ¢ ªíè ¡ë«¨ ¨§¬¥¥¨ï?
|
||||||
.readDirNext: PUSH BC
|
; CF=1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
LOAD_NEXT_DIR_PART_TO_DIR_CACHE:
|
||||||
|
PUSH BC
|
||||||
EXX
|
EXX
|
||||||
PUSH DE ; record index
|
PUSH DE ; record index
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
@ -2238,8 +2265,7 @@ SEARCH_RECORD_IN_DIR_CACHE:
|
|||||||
POP BC
|
POP BC
|
||||||
;JR NC,.loop_big ; !FIXIT ¬®¦¥â ¡ëâì ®è¨¡ª çâ¥¨ï ¨«¨ ¯à¨ ZF - ª®¥æ ¤¨à¥ªâ®à¨¨
|
;JR NC,.loop_big ; !FIXIT ¬®¦¥â ¡ëâì ®è¨¡ª çâ¥¨ï ¨«¨ ¯à¨ ZF - ª®¥æ ¤¨à¥ªâ®à¨¨
|
||||||
;RET
|
;RET
|
||||||
|
RET C ; ¥á«¨ ¢áñ ¯¥à¥¡à «¨
|
||||||
RET C
|
|
||||||
;
|
;
|
||||||
; ¯®«ë© ®¡å®¤ ª â «®£ ç¨ ï á § £à㦥®© áâà ¨æë
|
; ¯®«ë© ®¡å®¤ ª â «®£ ç¨ ï á § £à㦥®© áâà ¨æë
|
||||||
LD A,(CORE_BUFFERS.FS_Buffer.DirBlock)
|
LD A,(CORE_BUFFERS.FS_Buffer.DirBlock)
|
||||||
@ -2251,15 +2277,81 @@ SEARCH_RECORD_IN_DIR_CACHE:
|
|||||||
EXX
|
EXX
|
||||||
.toStartPage: ;
|
.toStartPage: ;
|
||||||
.StartPage+1: CP 0
|
.StartPage+1: CP 0
|
||||||
JR NZ,.loop_big
|
;JR NZ,.loop_big
|
||||||
|
;;
|
||||||
|
;SCF
|
||||||
|
;RET
|
||||||
|
SCF
|
||||||
|
CCF
|
||||||
|
RET ; ¥á«¨ ¢áñ ¯¥à¥¡à «¨
|
||||||
;
|
;
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
; [ ] big dir ;!FIXIT ç¨ âì ¯à®å®¤ á ç « ¤¨à¥ªâ®à¨¨ ¢á¥£¤ , ç⮡ ¥ § å« ¬«ïâì
|
||||||
|
; !FIXIT â®ç® «¨ ¢ ã«¥¢®¬ FM ª®®à¤¨ âë 㦮© ¤¨à¥ªâ®à¨¨?
|
||||||
|
; ᪮¯¨à®¢ âì § ¯¨áì ¢ ᯨ᮪ ¤¨áª (ª â «®£ ) de ix iy
|
||||||
|
; ¨ á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
||||||
|
; ¢å®¤: (HANDBUF) - § ¯¨áì ª â «®£
|
||||||
|
; ¢ë室: DE - record index
|
||||||
|
WRITE_DIR_HANDLE:
|
||||||
|
SET_PAGE_X DIRPAGE
|
||||||
|
EX AF,AF'
|
||||||
|
LD IX,DIRPAGE.buffer ; IX
|
||||||
|
;!TEST 9/11/23 record index
|
||||||
|
EXX
|
||||||
|
LD DE,0
|
||||||
|
EXX
|
||||||
|
;
|
||||||
|
LD DE,FAT_DIRECTORY_RECORD
|
||||||
|
.loop: LD A,(IX + FAT_DIRECTORY_RECORD.NAME); IX
|
||||||
|
OR A
|
||||||
|
JR Z,.WRT_HN2
|
||||||
|
;
|
||||||
|
CP #E5
|
||||||
|
JR Z,.WRT_HN2
|
||||||
|
;
|
||||||
|
EXX
|
||||||
|
INC DE ; record index
|
||||||
|
EXX
|
||||||
|
ADD IX,DE ; IX,
|
||||||
|
JR NC,.loop ;!FIXIT ª®«¨ç¥á⢮ § ¯¨á¥© ª â «®£ = áâà ¨æ
|
||||||
|
;
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (SLOT3),A
|
||||||
|
LD A,DSS_Error.sys.ROOT_OVERFLOW
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
.next_char: INC HL
|
.WRT_HN2: EX DE,HL
|
||||||
INC DE
|
LD HL,CORE_BUFFERS.HANDBUF
|
||||||
DJNZ .loop_compare
|
LD BC,CORE_BUFFERS.HANDBUF.SIZE
|
||||||
; CF=0
|
LDIR
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (SLOT3),A
|
||||||
|
; ¯à®¢¥à塞, 㢥«¨ç¨«áï «¨ à §¬¥à ¤ ëå ¤¨à¥ªâ®à¨¨
|
||||||
|
LD HL,DIRPAGE.buffer
|
||||||
|
LD BC,(SAVEDIR.DirBlkSize)
|
||||||
|
DEC BC
|
||||||
|
ADD HL,BC
|
||||||
|
AND A
|
||||||
|
SBC HL,DE
|
||||||
|
JR NC,.SAVEDIR
|
||||||
|
;
|
||||||
|
; à §¬¥à ¤ ëå ¤¨à¥ªâ®à¨¨ 㢥«¨ç¨«áï
|
||||||
|
LD HL,(SAVEDIR.DirBlkSize)
|
||||||
|
LD BC,(CORE_BUFFERS.FS_Buffer.BytesPerCluster)
|
||||||
|
ADD HL,BC
|
||||||
|
LD (SAVEDIR.DirBlkSize),HL
|
||||||
|
AND A
|
||||||
|
.SAVEDIR: EXX
|
||||||
|
PUSH DE
|
||||||
|
EXX
|
||||||
|
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||||||
|
CALL SAVEDIR
|
||||||
|
POP DE
|
||||||
RET
|
RET
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
@ -2811,13 +2903,12 @@ WRITE_DIR_HANDLE:
|
|||||||
EXX
|
EXX
|
||||||
;
|
;
|
||||||
LD BC,FAT_DIRECTORY_RECORD
|
LD BC,FAT_DIRECTORY_RECORD
|
||||||
.loop: ;LD A,(IX+00)
|
.loop: LD A,(HL)
|
||||||
LD A,(HL)
|
|
||||||
OR A
|
OR A
|
||||||
JR Z,.WRT_HN2
|
JR Z,.WRT_HN2
|
||||||
|
;
|
||||||
CP #E5
|
CP #E5
|
||||||
JR Z,.WRT_HN2
|
JR Z,.WRT_HN2
|
||||||
;ADD IX,BC
|
|
||||||
ADD HL,BC
|
ADD HL,BC
|
||||||
JR NC,.loop ;!FIXIT ª®«¨ç¥á⢮ § ¯¨á¥© ª â «®£ = áâà ¨æ
|
JR NC,.loop ;!FIXIT ª®«¨ç¥á⢮ § ¯¨á¥© ª â «®£ = áâà ¨æ
|
||||||
;
|
;
|
||||||
@ -2827,9 +2918,7 @@ WRITE_DIR_HANDLE:
|
|||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
.WRT_HN2: ;LD D,XH
|
.WRT_HN2: EX DE,HL
|
||||||
;LD E,XL
|
|
||||||
EX DE,HL
|
|
||||||
LD HL,CORE_BUFFERS.HANDBUF
|
LD HL,CORE_BUFFERS.HANDBUF
|
||||||
LD BC,CORE_BUFFERS.HANDBUF.SIZE
|
LD BC,CORE_BUFFERS.HANDBUF.SIZE
|
||||||
LDIR
|
LDIR
|
||||||
@ -2889,47 +2978,51 @@ GET_ADDR_IN_DIR_CACHE:
|
|||||||
|
|
||||||
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
; !TODO ®¯â¨¬¨§¨à®¢ âì ¯®áâ®ïë¥ á®åà ¥¨ï Dir Cache
|
||||||
; “¤ «ï¥â § ¯¨áì ¢ ª â «®£¥ ¨ ®á¢®¡®¦¤ ¥â § ïâãî æ¥¯®çªã ª« áâ¥à®¢
|
; “¤ «ï¥â § ¯¨áì ¢ ª â «®£¥ ¨ ®á¢®¡®¦¤ ¥â § ïâãî æ¥¯®çªã ª« áâ¥à®¢
|
||||||
; ‚室: IX - 㪠§ ⥫ì 㤠«ï¥¬ãî § ¯¨áì ¢ DIRPAGE
|
; ‚室: IX - 㪠§ ⥫ì 㤠«ï¥¬ãî § ¯¨áì ¢ DIRPAGE
|
||||||
; ¢ Š<>˜ ¤¨à¥ªâ®à¨¨ ¤®«¦ ¡ëâì § £à㦥 ç áâì á 㦮© § ¯¨áìî
|
; ¢ Š<>˜ ¤¨à¥ªâ®à¨¨ ¤®«¦ ¡ëâì § £à㦥 ç áâì á 㦮© § ¯¨áìî
|
||||||
;!TODO record index. ¢®§¬®¦®, çâ® ¬®¦¥â á«®¬ âìáï, ¥á«¨ ¡®«ìè¥ áâà ¨æë
|
;!TODO record index. ¢®§¬®¦®, çâ® ¬®¦¥â á«®¬ âìáï, ¥á«¨ ¡®«ìè¥ áâà ¨æë
|
||||||
DELETE_REC_FAT: SET_PAGE_X DIRPAGE
|
DELETE_REC_FAT: SET_PAGE_X DIRPAGE
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
;CALL DELETE_LFN_RECORDS ; [ ] big dir ; [x] 㤠«¥¨¥ § ¯¨á¨ LFN
|
LD A,(CORE_BUFFERS.FS_Buffer.DirBlock)
|
||||||
LD (IX + FAT_DIRECTORY_RECORD.NAME),#E5 ; ¯à¨§ ª 㤠«¥¨ï ä ©«
|
CALL SET_RECORD_INDEX_FROM_DIR_BLOCK
|
||||||
; fat32
|
; DE' - record index
|
||||||
LD L,(IX+FAT_DIRECTORY_RECORD.FIRST_CLUSTER_H) ; ü ¯¥à¢®£® ª« áâ¥à
|
;CALL DELETE_LFN_RECORDS ; [ ] big dir ; [x] 㤠«¥¨¥ § ¯¨á¨ LFN
|
||||||
LD H,(IX+FAT_DIRECTORY_RECORD.FIRST_CLUSTER_H+1)
|
LD (IX + FAT_DIRECTORY_RECORD.NAME),#E5 ; ¯à¨§ ª 㤠«¥¨ï ä ©«
|
||||||
LD A,L
|
; fat32
|
||||||
OR H
|
LD L,(IX + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_H) ; ü ¯¥à¢®£® ª« áâ¥à
|
||||||
EXX
|
LD H,(IX + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_H+1)
|
||||||
LD L,(IX+FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L) ; ü ¯¥à¢®£® ª« áâ¥à
|
LD A,L
|
||||||
LD H,(IX+FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L+1)
|
OR H
|
||||||
OR L
|
EXX
|
||||||
OR H
|
LD L,(IX + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L) ; ü ¯¥à¢®£® ª« áâ¥à
|
||||||
;
|
LD H,(IX + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L+1)
|
||||||
|
OR L
|
||||||
|
OR H
|
||||||
|
;
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
|
; ¥á«¨ ¤«¨ ä ©« ã«¥¢ ï, â® ¤ «ìè¥ «®¢¨âì âã⠥祣®.
|
||||||
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||||||
JP Z,SAVEDIR ; á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
EX DE,HL ; record index ¨§ SET_RECORD_INDEX_FROM_DIR_BLOCK
|
||||||
|
JP Z,SAVEDIR ; á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
||||||
; ¥á«¨ à §¬¥à ä ©« ¥ ®«ì
|
; ¥á«¨ à §¬¥à ä ©« ¥ ®«ì
|
||||||
.loop: ;EX DE,HL ; hl=®¬¥à ª« áâ¥à
|
PUSH HL ; record index
|
||||||
;EXX
|
.loop: ; hl=®¬¥à ª« áâ¥à
|
||||||
; EX DE,HL
|
CALL READ_FROM_FAT ; ¯à®ç¨â âì ¨§ ª¥è FAT- ®¬¥à á«¥¤. ª« áâ¥à
|
||||||
;EXX
|
|
||||||
CALL READ_FROM_FAT ; ¯à®ç¨â âì ¨§ ª¥è FAT- ®¬¥à á«¥¤. ª« áâ¥à
|
|
||||||
EXX
|
EXX
|
||||||
PUSH DE ; ®¬¥à á«¥¤. ª« áâ¥à
|
PUSH DE ; ®¬¥à á«¥¤. ª« áâ¥à
|
||||||
PUSH AF
|
PUSH AF
|
||||||
LD DE,#0000 ; ®¬¥à ª« áâ¥à
|
LD DE,#0000 ; ®¬¥à ª« áâ¥à
|
||||||
EXX
|
EXX
|
||||||
PUSH DE
|
PUSH DE
|
||||||
;
|
;
|
||||||
CALL SET_NEW_FREE_CLUSTER
|
CALL SET_NEW_FREE_CLUSTER
|
||||||
;
|
;
|
||||||
LD DE,#0000 ; ®¬¥à ª« áâ¥à
|
LD DE,#0000 ; ®¬¥à ª« áâ¥à
|
||||||
CALL WRITE_TO_FAT.Custom ; § ¯¨á âì ¢ ª¥è FAT- ®¬¥à ª« áâ¥à
|
CALL WRITE_TO_FAT.Custom ; § ¯¨á âì ¢ ª¥è FAT- ®¬¥à ª« áâ¥à
|
||||||
POP HL
|
POP HL
|
||||||
EXX
|
EXX
|
||||||
POP AF
|
POP AF
|
||||||
@ -2938,9 +3031,11 @@ DELETE_REC_FAT: SET_PAGE_X DIRPAGE
|
|||||||
EXX
|
EXX
|
||||||
;EX DE,HL
|
;EX DE,HL
|
||||||
JP NC,.loop
|
JP NC,.loop
|
||||||
|
;
|
||||||
CALL WRITE_FAT_TABLE
|
CALL WRITE_FAT_TABLE
|
||||||
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||||||
JP SAVEDIR ; á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
POP HL ; record index
|
||||||
|
JP SAVEDIR ; á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
@ -2948,7 +3043,7 @@ DELETE_REC_FAT: SET_PAGE_X DIRPAGE
|
|||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
; ‚室: HL - ¤à¥á ªã¤ ¯¨á âì
|
; ‚室: HL - ¤à¥á ªã¤ ¯¨á âì
|
||||||
; ‚ë室: HL - ¤à¥á á«¥¤ãî騩 ¯®á«¥ § ¯¨á ®£®
|
; ‚ë室: HL - ¤à¥á á«¥¤ãî騩 ¯®á«¥ § ¯¨á ®£®
|
||||||
WRITE_DATE_TIME_TO_DIRECTORY_RECORD:
|
WRITE_DATE_TIME_FOR_DIRECTORY_RECORD:
|
||||||
; [ ] VFAT date
|
; [ ] VFAT date
|
||||||
PUSH HL
|
PUSH HL
|
||||||
CALL SYSTIME ; ã§ âì ⥪. ¤ âã ¨ ¢à¥¬ï
|
CALL SYSTIME ; ã§ âì ⥪. ¤ âã ¨ ¢à¥¬ï
|
||||||
|
|||||||
@ -310,6 +310,20 @@ DIV_by_Shifts:
|
|||||||
LD L,A
|
LD L,A
|
||||||
RET
|
RET
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
;
|
||||||
|
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
; ‚•Ž„: HL - ¤à¥á ¢ ¯ ¬ï⨠¤«ï § ã«¥¨ï
|
||||||
|
; B - ª®«¨ç¥á⢮ ¡ ©â®¢
|
||||||
|
; ‚›•Ž„: HL - á«¥¤ãî騩 ¤à¥á
|
||||||
|
; SET_HL_MEM_ZERO:
|
||||||
|
; XOR A
|
||||||
|
; LD (HL),A
|
||||||
|
; INC HL
|
||||||
|
; DJNZ .loop
|
||||||
|
; RET
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
;
|
||||||
|
|
||||||
;===============================================================================================================================
|
;===============================================================================================================================
|
||||||
MACRO PRINT_LINE_KERNEL_PANIC coordY, txtString, txtStringSize, txtColor
|
MACRO PRINT_LINE_KERNEL_PANIC coordY, txtString, txtStringSize, txtColor
|
||||||
|
|||||||
@ -39,13 +39,13 @@
|
|||||||
; .FIRST_CLUSTER_H: WORD #0000 ;+ #14 +20 RESERVED
|
; .FIRST_CLUSTER_H: WORD #0000 ;+ #14 +20 RESERVED
|
||||||
; .TIME: WORD #0000 ;+ #16 +22 TIME
|
; .TIME: WORD #0000 ;+ #16 +22 TIME
|
||||||
; .DATE: WORD #0000 ;+ #18 +24 DATE
|
; .DATE: WORD #0000 ;+ #18 +24 DATE
|
||||||
; .FIRST_CLUSTER_L: WORD #0000 ;+ #1A +26 START CLUSTER ; [ ] fat32
|
; .FIRST_CLUSTER_L: WORD #0000 ;+ #1A +26 START CLUSTER
|
||||||
; .F_SIZE: DWORD #00000000 ;+ #1C +28 SIZE FILE
|
; .F_SIZE: DWORD #00000000 ;+ #1C +28 SIZE FILE
|
||||||
; from Core
|
; from Core
|
||||||
.F_POSITION DWORD #00000000 ;+ #20 +32 FILE POSITION (FP)
|
.F_POSITION DWORD #00000000 ;+ #20 +32 FILE POSITION (FP)
|
||||||
.DIR_CLUSTER_L WORD #0000 ;+ #24 +36 DIRECTORY CLUSTER LOW
|
.DIR_CLUSTER_L WORD #0000 ;+ #24 +36 DIRECTORY CLUSTER LOW
|
||||||
.DIR_CLUSTER_H WORD #0000 ;+ #24 +38 DIRECTORY CLUSTER HIGH ; [x] fat32
|
.DIR_CLUSTER_H WORD #0000 ;+ #24 +38 DIRECTORY CLUSTER HIGH ; fat32
|
||||||
.HANDLE WORD #0000 ;+ #28 +40 HANDLE NUMBER
|
.HANDLE WORD #0000 ;+ #28 +40 HANDLE NUMBER (record index)
|
||||||
.DRIVE BYTE #00 ;+ #2A +42 DRIVE OR CURRENT
|
.DRIVE BYTE #00 ;+ #2A +42 DRIVE OR CURRENT
|
||||||
.ACCESS_MODE BYTE #00 ;+ #2B +43 ACCESS MODE
|
.ACCESS_MODE BYTE #00 ;+ #2B +43 ACCESS MODE
|
||||||
.TASK_NUM BYTE #00 ;+ #2C +44 TASK
|
.TASK_NUM BYTE #00 ;+ #2C +44 TASK
|
||||||
@ -54,6 +54,7 @@
|
|||||||
.KnownCluster_H WORD #0000 ;+ #30 +48 ‘â à襥 á«®¢® ®¬¥à ª« áâ¥à ¤«ï ª®â®à®£® ¨§¢¥áâ® ®â®á¨â¥«ì®¥ ᬥ饨¥ ¢ãâà¨ ä ©«
|
.KnownCluster_H WORD #0000 ;+ #30 +48 ‘â à襥 á«®¢® ®¬¥à ª« áâ¥à ¤«ï ª®â®à®£® ¨§¢¥áâ® ®â®á¨â¥«ì®¥ ᬥ饨¥ ¢ãâà¨ ä ©«
|
||||||
.KnownOffset_L WORD #0000 ;+ #32 +50 Œ« ¤è¥¥ á«®¢® ᬥ饨ï (¢ ª« áâ¥à å) ®â®á¨â¥«ì® ç « ä ©« ¤«ï á®åà ¥®£® ®¬¥à ª« áâ¥à .
|
.KnownOffset_L WORD #0000 ;+ #32 +50 Œ« ¤è¥¥ á«®¢® ᬥ饨ï (¢ ª« áâ¥à å) ®â®á¨â¥«ì® ç « ä ©« ¤«ï á®åà ¥®£® ®¬¥à ª« áâ¥à .
|
||||||
.KnownOffset_H WORD #0000 ;+ #34 +52 ‘â à襥 á«®¢® ᬥ饨ï (¢ ª« áâ¥à å) ®â®á¨â¥«ì® ç « ä ©« ¤«ï á®åà ¥®£® ®¬¥à ª« áâ¥à .
|
.KnownOffset_H WORD #0000 ;+ #34 +52 ‘â à襥 á«®¢® ᬥ饨ï (¢ ª« áâ¥à å) ®â®á¨â¥«ì® ç « ä ©« ¤«ï á®åà ¥®£® ®¬¥à ª« áâ¥à .
|
||||||
|
.OffsetInDirCache WORD #0000 ;+ #36 +54 ᬥ饨¥ § ¯¨áì ¢ SLOT3 DIRPAGE.buffer
|
||||||
ENDS
|
ENDS
|
||||||
|
|
||||||
;ACCESS MODE: A=0 ç⥨¥/§ ¯¨áì
|
;ACCESS MODE: A=0 ç⥨¥/§ ¯¨áì
|
||||||
|
|||||||
@ -22,10 +22,16 @@
|
|||||||
;[x] FINDDIR
|
;[x] FINDDIR
|
||||||
;[x] LOAD_SAVE_DIR_PREPARE
|
;[x] LOAD_SAVE_DIR_PREPARE
|
||||||
;[x] LOADDIR
|
;[x] LOADDIR
|
||||||
;[ ] SAVEDIR
|
;[x] DELETE_REC_FAT
|
||||||
|
;[x] SAVEDIR
|
||||||
;[ ] RENAME
|
;[ ] RENAME
|
||||||
;[ ] CLOSE_FN
|
;[ ] CLOSE_FN
|
||||||
;[ ] DEL_FN
|
;[ ] DEL_FN
|
||||||
;[ ] RMDIR
|
;[ ] RMDIR
|
||||||
;[ ] OPENDIR
|
;[ ] OPENDIR
|
||||||
;[ ] DELETE_LFN_RECORDS
|
;[ ] DELETE_LFN_RECORDS
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
Current dir ¤«ï ª ¦¤®£® ¤¨áª :
|
||||||
|
;[ ] ‘®åà ïâì ¯ãâì ª ª [¤«¨ ¬ áᨢ ][RECORD_INDEX,DIR_CLUSTER][RECORD_INDEX,DIR_CLUSTER]..[RECORD_INDEX,DIR_CLUSTER]
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
5
|
6
|
||||||
@ -357,9 +357,11 @@ GenIOCTL: BIT 7,B
|
|||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH DE
|
PUSH DE
|
||||||
LD A,H
|
LD A,H
|
||||||
LD H,0
|
LD C,L
|
||||||
|
LD HL,0
|
||||||
|
LD B,H
|
||||||
;
|
;
|
||||||
.mull_loop1: ADD HL,HL
|
.mull_loop1: ADD HL,BC
|
||||||
DEC A
|
DEC A
|
||||||
JR NZ,.mull_loop1
|
JR NZ,.mull_loop1
|
||||||
;
|
;
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
Subproject commit f5f85b3d14c65bfc2f8619b596815e350f1a9d5b
|
Subproject commit 2fec6202f716cfa3ed48fb9bfd79d1081cc2721b
|
||||||
Loading…
Reference in New Issue
Block a user