mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 01:11:48 +03:00
SEARCH_RECORD_IN_DIR_CACHE
допилить переключение страницы кэша при достижении конца директории (напоролись на ноль)
This commit is contained in:
parent
e8cf44ae6b
commit
ef258143e7
@ -50,7 +50,7 @@ CLOSE_FN: LD (.TMP),A
|
||||
;
|
||||
LD L,(IY+_sFM.HANDLE)
|
||||
LD H,(IY+_sFM.HANDLE+1)
|
||||
CALL LOADDIR.Custom ; [ ] big dir
|
||||
CALL LOADDIR.Custom ; [ ] big dir ;!FIXIT check error
|
||||
; [ ] big dir
|
||||
;!TODO ®â¬®â âì ªíè ¤® 㦮£® record index?
|
||||
;
|
||||
|
||||
@ -18,7 +18,7 @@ DEL_FN: ; Current Dir 15/10/23
|
||||
;
|
||||
CALL CHECK_NAME
|
||||
RET Z
|
||||
;
|
||||
;!FIXIT check error
|
||||
CALL LOADDIR ; [ ] big dir ; !FIXIT ¤ã¡«¨àã¥â ¤¥©á⢨¥ ¨§ SetPath_GetName?
|
||||
CALL SEARCH.File
|
||||
RET C
|
||||
|
||||
@ -24,10 +24,15 @@ F_FIRST_FN: CALL F_FIRST.INIT_VARS
|
||||
;
|
||||
F_FIRST: CALL .INIT_VARS
|
||||
.begin: CALL SetPath_GetName ;!FIXIT ¥ ¤ã¡«¨àã¥âáï «¨ ¯®á«¥ DIR_PATH_CHECK ¢ëè¥?
|
||||
;CALL LOADDIR
|
||||
RET C
|
||||
;
|
||||
LD A,(CORE_BUFFERS.FS_Buffer.DirBlock)
|
||||
AND A
|
||||
CALL NZ,LOADDIR ;!FIXIT check error
|
||||
;
|
||||
CALL MASK
|
||||
RET C
|
||||
;
|
||||
LD A,(.SEARCH_ATTRIBUT)
|
||||
CALL SEARCH.Custom
|
||||
RET C
|
||||
|
||||
@ -16,9 +16,10 @@ READ: LD (.R_POINT),HL
|
||||
LD A,(IY+_sFM.DRIVE)
|
||||
CALL OPENDSK
|
||||
JP C,.ERR_1
|
||||
CALL GET_OFFSET_IN_SECTORS
|
||||
;
|
||||
CALL GET_OFFSET_IN_SECTORS
|
||||
JP NZ,.ROV1
|
||||
;
|
||||
.ROV4: POP BC
|
||||
PUSH BC
|
||||
SRL B
|
||||
@ -29,6 +30,7 @@ READ: LD (.R_POINT),HL
|
||||
.R_POINT+2: LD IX,0
|
||||
CALL BLOCK_READ
|
||||
JP C,.ERR_1
|
||||
;
|
||||
LD DE,(.R_POINT)
|
||||
.PointerOnBuffer+1:
|
||||
LD HL,0 // LD HL,(READMEM)
|
||||
@ -64,6 +66,7 @@ READ: LD (.R_POINT),HL
|
||||
LD C,SLOT3
|
||||
OUT (C),B
|
||||
JP C,.ERR_1
|
||||
;
|
||||
LD HL,CORE_BUFFERS.BUFFER
|
||||
LD DE,(.R_POINT)
|
||||
POP BC
|
||||
@ -71,7 +74,6 @@ READ: LD (.R_POINT),HL
|
||||
LD (.R_POINT),DE
|
||||
.ROV6: LD HL,(.R_POINT)
|
||||
.S_POINT+1: LD DE,0
|
||||
;EX DE,HL
|
||||
AND A
|
||||
SBC HL,DE
|
||||
PUSH HL
|
||||
@ -108,7 +110,6 @@ READ: LD (.R_POINT),HL
|
||||
POP HL
|
||||
LD C,B
|
||||
ADC HL,BC
|
||||
;
|
||||
EXX
|
||||
POP DE
|
||||
LD HL,512 ;!HARDCODE ;!FIXIT ; [ ] sector size
|
||||
|
||||
@ -35,7 +35,7 @@ RENAME: ; Current Dir 15/10/23
|
||||
RET Z
|
||||
;
|
||||
PUSH DE
|
||||
; !FIXIT ¤ã¡«¨àã¥â ¤¥©á⢨¥ ¨ ¤¨à¥ªâ®à¨ï 㦥 § £à㦥 ?
|
||||
; !FIXIT ¤ã¡«¨àã¥â ¤¥©á⢨¥ ¨ ¤¨à¥ªâ®à¨ï 㦥 § £à㦥 ? ;!FIXIT check error
|
||||
CALL LOADDIR ; [ ] big dir ; ¯à®ç¨â âì ᯨ᮪ ª â «®£
|
||||
;
|
||||
LD A,FAT_ATTR.NoSYSnoVolID
|
||||
@ -65,13 +65,13 @@ RENAME: ; Current Dir 15/10/23
|
||||
RET C
|
||||
;
|
||||
SET_PAGE_X DIRPAGE
|
||||
EX AF,AF'
|
||||
PUSH AF
|
||||
; á«ãç © ¯¥à¥ª«î票ï áâà ¨æë ªíè ¯®á«¥ SEARCH.Custom "new_name.ext"
|
||||
LD A,(CORE_BUFFERS.FS_Buffer.DirBlock)
|
||||
.DirBlock+1: CP 0
|
||||
.recordIndex+1: LD DE,0
|
||||
.recordIndex+1: LD HL,0
|
||||
SCF ; ¥ ¯¥à¥áç¨âë¢ âì à §¬¥à ¤¨à¥ªâ®à¨¨
|
||||
CALL NZ,LOADDIR.next
|
||||
CALL NZ,LOADDIR.next ;!FIXIT check error
|
||||
;
|
||||
LD HL,CORE_BUFFERS.MASKARE
|
||||
.recordAddr+1: LD DE,0
|
||||
@ -80,8 +80,9 @@ RENAME: ; Current Dir 15/10/23
|
||||
;
|
||||
;CALL DELETE_LFN_RECORDS ; [ ] 㤠«¥¨¥ § ¯¨á¨ LFN
|
||||
;
|
||||
EX AF,AF'
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
LD HL,(.recordIndex)
|
||||
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||||
JP SAVEDIR
|
||||
; ; ;
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
@ -50,8 +50,10 @@ SetPath_GetName:
|
||||
LD A,(HL)
|
||||
CP 'a'
|
||||
JR C,.next
|
||||
;
|
||||
CP 'z'+1
|
||||
JR NC,.next
|
||||
;
|
||||
SUB %0010'0000
|
||||
.next: SUB 'A'
|
||||
INC HL
|
||||
@ -60,17 +62,20 @@ SetPath_GetName:
|
||||
CALL CHDISK
|
||||
POP HL
|
||||
RET C
|
||||
;
|
||||
LD A,(HL)
|
||||
OR A
|
||||
JR Z,.done
|
||||
;
|
||||
CP ' '
|
||||
JR Z,.done
|
||||
;
|
||||
CP '\' ;
|
||||
SCF
|
||||
LD A,DSS_Error.sys.PATH_NOT_FOUND
|
||||
RET NZ
|
||||
INC HL
|
||||
;
|
||||
INC HL
|
||||
.dir_loop: LD DE,CORE_BUFFERS.TMPNAME
|
||||
LD BC,256*CORE_BUFFERS.TMPNAME.Size + #FF
|
||||
.loop: LD A,(HL)
|
||||
@ -83,7 +88,9 @@ SetPath_GetName:
|
||||
CP ' '+1
|
||||
CCF
|
||||
RET NC
|
||||
;
|
||||
DJNZ .loop
|
||||
;
|
||||
LD A,DSS_Error.sys.INVALID_NAME
|
||||
SCF
|
||||
RET
|
||||
|
||||
185
DSS/FS/FAT.asm
185
DSS/FS/FAT.asm
@ -2172,9 +2172,13 @@ SEARCH:
|
||||
SEARCH_RECORD_IN_DIR_CACHE:
|
||||
;CPL
|
||||
LD C,A
|
||||
LD A,(CORE_BUFFERS.FS_Buffer.DirBlock)
|
||||
LD (.StartPage),A
|
||||
SLA A
|
||||
;!TEST 9/11/23 record index
|
||||
EXX
|
||||
LD DE,0
|
||||
LD D,A
|
||||
LD E,0
|
||||
EXX
|
||||
;
|
||||
.loop_big: LD IX,DIRPAGE.buffer
|
||||
@ -2232,8 +2236,24 @@ SEARCH_RECORD_IN_DIR_CACHE:
|
||||
POP DE
|
||||
EXX
|
||||
POP BC
|
||||
JR NC,.loop_big ; !FIXIT ¬®¦¥â ¡ëâì ®è¨¡ª çâ¥¨ï ¨«¨ ¯à¨ ZF - ª®¥æ ¤¨à¥ªâ®à¨¨
|
||||
;JR NC,.loop_big ; !FIXIT ¬®¦¥â ¡ëâì ®è¨¡ª çâ¥¨ï ¨«¨ ¯à¨ ZF - ª®¥æ ¤¨à¥ªâ®à¨¨
|
||||
;RET
|
||||
|
||||
RET C
|
||||
;
|
||||
; ¯®«ë© ®¡å®¤ ª â «®£ ç¨ ï á § £à㦥®© áâà ¨æë
|
||||
LD A,(CORE_BUFFERS.FS_Buffer.DirBlock)
|
||||
AND A
|
||||
JR NZ,.toStartPage
|
||||
;
|
||||
EXX
|
||||
LD DE,0
|
||||
EXX
|
||||
.toStartPage: ;
|
||||
.StartPage+1: CP 0
|
||||
JR NZ,.loop_big
|
||||
;
|
||||
SCF
|
||||
RET
|
||||
;
|
||||
.next_char: INC HL
|
||||
@ -2252,10 +2272,10 @@ SEARCH_RECORD_IN_DIR_CACHE:
|
||||
FINDDIR: SET_PAGE_X DIRPAGE
|
||||
;
|
||||
PUSH AF
|
||||
;[ ] big dir ; !FIXIT § ¬¥¨âì æ¨ª«¨çë© ¯¥à¥¡®à ¤¨à¥ªâ®à¨¨ ¯® áâà ¨æ ¬, ç⮡ ¥ ¤¥« âì «¨è¨å § £àã§®ª
|
||||
LD A,(CORE_BUFFERS.FS_Buffer.DirBlock)
|
||||
AND A
|
||||
CALL NZ,LOADDIR
|
||||
;
|
||||
;LD A,(CORE_BUFFERS.FS_Buffer.DirBlock)
|
||||
;AND A
|
||||
;CALL NZ,LOADDIR ;!FIXIT check error
|
||||
;
|
||||
LD A,#28 ; JR Z,...
|
||||
LD (SEARCH_RECORD_IN_DIR_CACHE.type),A ; search directory
|
||||
@ -2491,29 +2511,22 @@ OPENDIR: ; init
|
||||
;
|
||||
;-------------; JP LOADDIR
|
||||
;----------------------------------------------------------------------;
|
||||
;!TODO optimize
|
||||
; <20>à®ç¨â âì ᯨ᮪ ª â «®£
|
||||
; ¢å®¤ (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L), (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H)
|
||||
LOADDIR: ;!TODO optimize
|
||||
;!FIXIT ¥á«¨ HL ¢ë©¤¥â § à §¬¥àë ¤¨à¥ªâ®à¨¨ ¨ DirBlock ¡ã¤¥â ¥ª®à४âë¬?
|
||||
LD HL,0 ; ID § ¯¨á¨, ª®â®àë© ¤®«¦¥ ¯®¯ áâì ¢ Š<>˜
|
||||
; ‚室: (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L), (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H)
|
||||
LOADDIR: LD HL,0 ;!FIXIT ¥á«¨ HL ¢ë©¤¥â § à §¬¥àë ¤¨à¥ªâ®à¨¨ ¨ DirBlock ¡ã¤¥â ¥ª®à४âë¬?
|
||||
;[-------------]
|
||||
; ‚室: HL - ID § ¯¨á¨, ª®â®àë© ¤®«¦¥ ¯®¯ áâì ¢ Š<>˜
|
||||
; (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L), (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H)
|
||||
.Custom: AND A ; ¢ LOAD_SAVE_DIR_PREPARE ¯®áç¨â ¥âáï à §¬¥à ª â «®£ ¤¨à¥ªâ®à¨¨
|
||||
;[-------------]
|
||||
; ‚室: HL - ID § ¯¨á¨, ª®â®àë© ¤®«¦¥ ¯®¯ áâì ¢ Š<>˜
|
||||
; (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L), (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H)
|
||||
; CF - ¥ à ááç¨âë¢ âì à §¬¥à ¤¨à¥ªâ®à¨¨
|
||||
.next: CALL LOAD_SAVE_DIR_PREPARE
|
||||
PUSH AF
|
||||
EX AF,AF'
|
||||
;JR NZ,.read_dir ; root dir or not
|
||||
; root dir
|
||||
;LD A,(CORE_BUFFERS.FS_Buffer.FAT_TYPE)
|
||||
;CP FAT_TYPE.x32
|
||||
JR Z,.LoadRootDirFAT12_16
|
||||
;CALL LOAD_SAVE_DIR_PREPARE.CalcDirSize
|
||||
; fat32
|
||||
; LD HL,(CORE_BUFFERS.FS_Buffer.RootDirStartCluster_L)
|
||||
; LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L),HL
|
||||
; LD HL,(CORE_BUFFERS.FS_Buffer.RootDirStartCluster_H)
|
||||
; LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H),HL
|
||||
; ;LD HL,(CORE_BUFFERS.FS_Buffer.BytesPerCluster) ; !FIXIT ¢ëç¨âë¢ âì ¯®«®áâìî ª â «®£
|
||||
; LD HL,DIRPAGE.size ; à §¬¥à ¤¨à¥ªâ®à¨¨ ;!HARDCODE
|
||||
; LD (CORE_BUFFERS.FM_BUF.FS_REC.F_SIZE),HL
|
||||
;
|
||||
.read_dir: LD HL,DIRPAGE.buffer ; ªã¤
|
||||
LD DE,DIRPAGE.size ; ᪮«ìª®
|
||||
@ -2532,18 +2545,23 @@ LOADDIR: ;!TODO optimize
|
||||
OR E
|
||||
RET NZ
|
||||
; ç¨â ¥¬ á ç «
|
||||
CALL LOADDIR
|
||||
.no_more: XOR A ;!FIXIT ãç¨âì í⮬㠢ë§ë¢ î騥 ¯à®æ¥¤ãàë ; 0 - ¥â ®è¨¡®ª. ¯à¨§ ª ª®æ ª â «®£
|
||||
SCF
|
||||
RET
|
||||
JR LOADDIR
|
||||
; .no_more: LD A,#FF
|
||||
; SCF
|
||||
; RET
|
||||
;
|
||||
.LoadRootDirFAT12_16:
|
||||
; [ ] big dir
|
||||
LD A,(CORE_BUFFERS.FS_Buffer.DirBlock)
|
||||
AND A
|
||||
JR NZ,.no_more
|
||||
JR Z,.ok
|
||||
;
|
||||
LD HL,(CORE_BUFFERS.FS_Buffer.RootDirFirstSector_H);!TODO ¢®§¬®¦®, å¢ â¨â LD HL,0
|
||||
XOR A
|
||||
LD (CORE_BUFFERS.FS_Buffer.DirBlock),A
|
||||
RET
|
||||
;
|
||||
;
|
||||
.ok: LD HL,(CORE_BUFFERS.FS_Buffer.RootDirFirstSector_H);!TODO ¢®§¬®¦®, å¢ â¨â LD HL,0
|
||||
LD IX,(CORE_BUFFERS.FS_Buffer.RootDirFirstSector_L); ®¬¥à «®£. ᥪâ®à
|
||||
LD A,(CORE_BUFFERS.FS_Buffer.DirSizeInSectors)
|
||||
LD B,32 ; !HARDCODE sector size 512. 16384/(sector 512). à §¬¥à root-ª â «®£ ; [ ] sector size 512
|
||||
@ -2569,6 +2587,33 @@ LOADDIR: ;!TODO optimize
|
||||
|
||||
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
; ‚室: HL - ID § ¯¨á¨, ª®â®àë© ¤®«¦¥ ¯®¯ áâì ¢ Š<>˜
|
||||
; ‚ë室: HLIX - ᬥ饨¥ ¢ ä ©«¥ ª â «®£ ã¦ë© ¡«®ª ¯® #4000 ¡ ©â®¢
|
||||
; A - <20>®¬¥à ¡«®ª DirBlock
|
||||
; GET_DIRCACHE_BLOCK_ADDR:
|
||||
; ; HLIX = (HL*32) & #1FC000 ᬥ饨¥ ã¦ë© ¡«®ª ¯® #4000 ¡ ©â®¢
|
||||
; XOR A
|
||||
; LD XL,A
|
||||
; LD E,A
|
||||
; LD A,H
|
||||
; LD H,E
|
||||
; AND #FE
|
||||
; RRA
|
||||
; RR E
|
||||
; LD D,A ; DirBlock
|
||||
; RRA
|
||||
; RR E
|
||||
; RRA
|
||||
; RR E
|
||||
; LD XH,E
|
||||
; LD L,A
|
||||
; LD A,D
|
||||
; RET
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
; [ ] ¤®¤¥« âì ¯¥à¥¤ çã ID § ¯¨á¨ ¤¨à¥ªâ®à¨¨ ¨ § £à㧪¨ ¯® ¥© 㦮£® ªã᪠¢ ªíè
|
||||
;!TODO FAT procedures
|
||||
@ -2579,8 +2624,8 @@ LOADDIR: ;!TODO optimize
|
||||
; ZF' - RootDir FAT12-16
|
||||
LOAD_SAVE_DIR_PREPARE:
|
||||
PUSH AF
|
||||
; [ ] ‚室: HL - ID § ¯¨á¨, ª®â®àë© ¤®«¦¥ ¯®¯ áâì ¢ Š<>˜
|
||||
; [ ] ‚ë室: HLIX - ᬥ饨¥ ¢ ä ©«¥ ª â «®£ ã¦ë© ¡«®ª ¯® #4000 ¡ ©â®¢
|
||||
;CALL GET_DIRCACHE_BLOCK_ADDR
|
||||
;LD (CORE_BUFFERS.FS_Buffer.DirBlock),A
|
||||
; HLIX = (HL*32) & #1FC000 ᬥ饨¥ ã¦ë© ¡«®ª ¯® #4000 ¡ ©â®¢
|
||||
XOR A
|
||||
LD XL,A
|
||||
@ -2597,12 +2642,10 @@ LOAD_SAVE_DIR_PREPARE:
|
||||
RR E
|
||||
LD XH,E
|
||||
LD L,A
|
||||
; ;
|
||||
;
|
||||
XOR A ; FILE MANIPULATOR = 0
|
||||
LD B,A ; ®â ç « ä ©«
|
||||
CALL MOVE_FP
|
||||
|
||||
SET_PAGE_X DIRPAGE
|
||||
POP DE
|
||||
AND A
|
||||
@ -2610,7 +2653,7 @@ LOAD_SAVE_DIR_PREPARE:
|
||||
;
|
||||
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
||||
LD (CORE_BUFFERS.FM_BUF.DRIVE),A
|
||||
;;;;;;;;
|
||||
; check fat12-16 root dir
|
||||
XOR A
|
||||
LD HL,(CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L)
|
||||
EXX
|
||||
@ -2620,7 +2663,6 @@ LOAD_SAVE_DIR_PREPARE:
|
||||
EXX
|
||||
OR H
|
||||
OR L
|
||||
;;;;;;;;
|
||||
JR Z,.exit
|
||||
;
|
||||
PUSH AF
|
||||
@ -2631,32 +2673,8 @@ LOAD_SAVE_DIR_PREPARE:
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
.CalcDirSize: ; check dir cache
|
||||
;LD A,(CORE_BUFFERS.FS_Buffer.DirBlockDrive)
|
||||
;LD E,A
|
||||
;LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
||||
;LD (CORE_BUFFERS.FM_BUF.DRIVE),A
|
||||
;RET Z
|
||||
;;
|
||||
;CP E
|
||||
;JR NZ,.goCalc
|
||||
;;
|
||||
;EX DE,HL
|
||||
;LD HL,(CORE_BUFFERS.FS_Buffer.DirBlockStartCluster_L)
|
||||
;SBC HL,DE
|
||||
;EX DE,HL
|
||||
;JR NZ,.goCalc
|
||||
;;
|
||||
;EXX
|
||||
; EX DE,HL
|
||||
; LD HL,(CORE_BUFFERS.FS_Buffer.DirBlockStartCluster_H)
|
||||
; SBC HL,DE
|
||||
; EX DE,HL
|
||||
;EXX
|
||||
;RET Z
|
||||
;
|
||||
; calc dir size in clusters
|
||||
.goCalc: LD DE,0
|
||||
.CalcDirSize: LD DE,0
|
||||
.loop: INC DE ; <20> ¤¥¥¬áï âãâ â®, ç⮠ᯥæ¨ä¨ª æ¨ï ¢ë¯®«ï¥âáï ¨ ¯¥à¥¯®«¥¨ï ¥ ¡ã¤¥â
|
||||
PUSH DE
|
||||
CALL READ_FROM_FAT
|
||||
@ -2691,25 +2709,20 @@ LOAD_SAVE_DIR_PREPARE:
|
||||
RRCA
|
||||
JR C,.loop2
|
||||
;
|
||||
.loop1: ;
|
||||
SLA E
|
||||
.loop1: SLA E
|
||||
RL D
|
||||
EXX
|
||||
RL E
|
||||
RL D
|
||||
;RL C
|
||||
EXX
|
||||
;
|
||||
RRCA
|
||||
JR NC,.loop1
|
||||
;
|
||||
.loop2: ;
|
||||
SLA E
|
||||
.loop2: SLA E
|
||||
RL D
|
||||
EXX
|
||||
RL E
|
||||
RL D
|
||||
;RL C
|
||||
EXX
|
||||
;
|
||||
SRL B
|
||||
@ -2721,7 +2734,7 @@ LOAD_SAVE_DIR_PREPARE:
|
||||
LD (CORE_BUFFERS.FM_BUF.FS_REC.F_SIZE + 2),DE
|
||||
RET
|
||||
|
||||
/* 4 3 2 1
|
||||
/* ¯à¨¬¥à 4 3 2 1
|
||||
#FFFF<<5 = #1FFFE0 = 0000 0000 0001 1111 1111 1111 1110 0000
|
||||
|
||||
#FFFF ®¬¥à § ¯¨á¨
|
||||
@ -2735,32 +2748,21 @@ LOAD_SAVE_DIR_PREPARE:
|
||||
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
; ASSERT 0, "TODO! GET_ADDR_IN_DIR_CACHE"
|
||||
;!TODO
|
||||
; .DIRSIZE ¯®¬¥è ¥â ¥á«¨ ¢ ªíè ¡ã¤¥â ¤à㣠ï áâà ¨æ ?
|
||||
; LOAD_SAVE_DIR_PREPARE ¢®§¬®¦® ¥ 㦥, 㦮 ⮫쪮 ãáâ ®¢¨âì ¯à ¢¨«ì®¥ ᬥ饨¥ ¢ FM
|
||||
; Œ®¦¥â ¢®®¡é¥ ¯¥à¥¤¥« âì ¥ñ ¯®¤ à ¡®âã á Š<>˜
|
||||
|
||||
;!TODO optimize
|
||||
;!TODO .DIRSIZE ¯®¬¥è ¥â ¥á«¨ ¢ ªíè ¡ã¤¥â ¤à㣠ï áâà ¨æ ?
|
||||
;!TODO LOAD_SAVE_DIR_PREPARE ¢®§¬®¦® ¥ 㦥, 㦮 ⮫쪮 ãáâ ®¢¨âì ¯à ¢¨«ì®¥ ᬥ饨¥ ¢ FM
|
||||
;!TODO Œ®¦¥â ¢®®¡é¥ ¯¥à¥¤¥« âì ¥ñ ¯®¤ à ¡®âã á Š<>˜
|
||||
;!TODO ; [ ] big dir ¯®«ãç âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||||
;
|
||||
; ‘¡à®á¨âì ª¥è ª â «®£ ¤¨áª.
|
||||
; ¢å®¤: iy=áâàãªâãà ¤¥áªà¨¯â®à
|
||||
; [ ] big dir ¯®«ãç âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||||
SAVEDIR: ;!TODO optimize
|
||||
SCF ; ¥ áç¨â âì à §¬¥à ¤¨à¥ªâ®à¨¨
|
||||
; ¢å®¤: HL - ID § ¯¨á¨, ª®â®à ï ¨§¬¥¨« áì ¢ Š<>˜
|
||||
; ¢ ªíè ¤®«¦ ¡ëâì ª®à४â ï áâà ¨æ ¤¨à¥ªâ®à¨¨, DirBlkSize ª®à४âë© â®¦¥
|
||||
SAVEDIR: SCF ; ¥ áç¨â âì à §¬¥à ¤¨à¥ªâ®à¨¨
|
||||
CALL LOAD_SAVE_DIR_PREPARE
|
||||
PUSH AF
|
||||
EX AF,AF'
|
||||
;JR NZ,.save_dir
|
||||
JR Z,.SaveRootDir
|
||||
;
|
||||
;LD A,(CORE_BUFFERS.FS_Buffer.FAT_TYPE)
|
||||
;CP FAT_TYPE.x32
|
||||
;JR NZ,.SaveRootDir
|
||||
; fat32
|
||||
;LD HL,(CORE_BUFFERS.FS_Buffer.RootDirStartCluster_L)
|
||||
;LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L),HL
|
||||
;LD HL,(CORE_BUFFERS.FS_Buffer.RootDirStartCluster_H)
|
||||
;LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H),HL
|
||||
;
|
||||
.save_dir: LD HL,DIRPAGE.buffer
|
||||
; à §¬¥à ᯨ᪠ª â «®£ size_cash_directory
|
||||
;!FIXIT ¥á«¨ ® 㦠, â® ¯à®¢¥à¨âì ¡ £¨ ( ¯à¨¬¥à, à §¬¥à ¤¨à४â®à¨¨ ¬¥ìè¥ ¯à¨ ®âªàë⨨ ¨ ¡®«ìè¥ ¯®á«¥ ¯à ¢®ª)
|
||||
@ -2779,6 +2781,7 @@ SAVEDIR: ;!TODO optimize
|
||||
LD B,32 ;!HARDCODE sector size 512, Root Dir max size in sectors
|
||||
SUB B
|
||||
JR NC,.RTD1S
|
||||
;
|
||||
ADD A,B
|
||||
LD B,A
|
||||
.RTD1S: LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
||||
@ -2967,6 +2970,7 @@ WRITE_DATE_TIME_TO_DIRECTORY_RECORD:
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
; <20>८¡à §®¢ âì ¨¬ï 8.3 -> 11 ä®à¬ â
|
||||
; !FIXIT ¯¨á âì ®à¬ «ì®¥ ®¯¨á ¨¥ ¢å®¤ /¢ë室
|
||||
; ¢å®¤: hl = 8.3 ¨¬ï
|
||||
; de = ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||||
; ¯à¨ ®è¨¡ª¥ CF - ¥¤®¯. ¨¬ï
|
||||
@ -2976,7 +2980,12 @@ WRITE_DATE_TIME_TO_DIRECTORY_RECORD:
|
||||
; RET: C=2 FILE WITHOUT EXTENTION
|
||||
; C=1 FILE WITH EXTENTION
|
||||
MASK: LD HL,CORE_BUFFERS.TMPNAME
|
||||
;[-------------]
|
||||
; ¢å®¤: hl = 8.3 ¨¬ï
|
||||
.name: LD DE,CORE_BUFFERS.MASKARE
|
||||
;[-------------]
|
||||
; ¢å®¤: hl = 8.3 ¨¬ï
|
||||
; de = ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||||
.custom: PUSH HL
|
||||
PUSH DE
|
||||
LD H,D
|
||||
|
||||
11
DSS/ToDo.txt
11
DSS/ToDo.txt
@ -1,5 +1,12 @@
|
||||
<EFBFBD>® ¯®«ë¬ ¤¨à¥ªâ®à¨ï¬.
|
||||
;[x] LOADDIR ¯®á«¥ READ ¢ë室¨âì á CF, ¥á«¨ ¯à®ç¨â ® 0
|
||||
‹¥£¥¤ : [ ] ᤥ« âì
|
||||
[x] ᤥ« ®
|
||||
[!] ¯¥à¥¤¥« ® ¨ ¥ ᮢ¯ ¤ ¥â á ¯¨á ë¬
|
||||
|
||||
<EFBFBD>® ¯®«ë¬ ¤¨à¥ªâ®à¨ï¬:
|
||||
;[ ] F_FIRST ¢ .INIT_VARS § ¯®¬¨ âì ¤¨áª ¨ ª« áâ¥àë ¤¨à¥ªâ®à¨¨ ¤«ï ¢®ááâ ®¢«¥¨ï ¯à¨ ¢ë§®¢¥ F_NEXT
|
||||
;[ ] F_NEXT ¥á«¨ ¢ ªíè ¤¨à¥ªâ®à¨© ¥ â , çâ® ¡ë« ¯à¨ ¢ë§®¢¥ F_FIRST, â® § ¯®¬¨âì çâ® ¥áâì, ¢®áâ ®¢¨âì, çâ® ¡ë«®,
|
||||
; ®âà ¡®â âì ¨ § £à㧨âì ®¡à â®, çâ® ¡ë«® ¢å®¤¥ ¢ äãªæ¨î. € ¥ä¨£ ¢® ¢à¥¬ï F_NEXT « § âì ¯® ¤¨à¥ªâ®à¨ï¬.
|
||||
;[!] LOADDIR ¯®á«¥ READ ¢ë室¨âì á CF, ¥á«¨ ¯à®ç¨â ® 0
|
||||
;[x] FINDDIR - ¯®ª à ¡®â ¥â ⮫쪮 á ⥬, çâ® ¡ë«® § £à㦥® ¢ ªíè ¨ ¬ «® ç⮠室¨â, ¥á«¨ áâà ¨æ ¡®«ìè¥ 1.
|
||||
;[ ] <20>¥à¥¤¥« âì WRITE_DIR_HANDLE ¤«ï à ¡®âë á «î¡®© § ¯¨áìî ¢ ª â «®£¥ (ᥩç á ¨é¥â ¯¥à¢ãî ¯ãáâãî, ç⮡ § ¯¨á âì ¢ ¥ñ)
|
||||
;[ ] ‚ᥠ¨§¬¥¥¨ï ¢ § ¯¨áïå ª â «®£ ¤¥« âì ¢ ¡ãä¥à¥ CORE_BUFFERS.HANDBUF ¨ á®åà ïâì ç¥à¥§ WRITE_DIR_HANDLE
|
||||
|
||||
Loading…
Reference in New Issue
Block a user