SEARCH_RECORD_IN_DIR_CACHE

допилить переключение страницы кэша при достижении конца директории (напоролись на ноль)
This commit is contained in:
Tolik 2026-01-13 22:01:15 +10:00
parent e8cf44ae6b
commit ef258143e7
8 changed files with 158 additions and 128 deletions

View File

@ -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?
;

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
; ; ;
////////////////////////////////////////////////////////////////////////

View File

@ -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

View File

@ -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
;
XOR A
LD (CORE_BUFFERS.FS_Buffer.DirBlock),A
RET
;
;
LD HL,(CORE_BUFFERS.FS_Buffer.RootDirFirstSector_H);!TODO ¢®§¬®¦­®, 墠â¨â LD HL,0
.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,38 +2624,36 @@ 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
LD E,A
LD A,H
LD H,E
AND #FE
RRA
RR E
LD (CORE_BUFFERS.FS_Buffer.DirBlock),A
RRA
RR E
RRA
RR E
LD XH,E
LD L,A
; ;
XOR A
LD XL,A
LD E,A
LD A,H
LD H,E
AND #FE
RRA
RR E
LD (CORE_BUFFERS.FS_Buffer.DirBlock),A
RRA
RR E
RRA
RR E
LD XH,E
LD L,A
;
XOR A ; FILE MANIPULATOR = 0
LD B,A ; ®â ­ ç «  ä ©« 
CALL MOVE_FP
SET_PAGE_X DIRPAGE
SET_PAGE_X DIRPAGE
POP DE
AND A
PUSH AF
;
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
@ -2669,14 +2687,14 @@ LOAD_SAVE_DIR_PREPARE:
;
; DE - à §¬¥à ¤¨à¥ªâ®à¨¨ ¢ ª« áâ¥à å
;!FIXIT ¬®¦­® ®¯â¨¬¨§­ãâì ª®«-¢® ᤢ¨£®¢
;0001 0000 0000 0000 max ª®«-¢® ª« áâ¥à®¢
; ¯à¨¬¥à
;0000 0000 0000 0111 Clusters
; 0100 0000 SectorsPerCluster
;0000 0010 0000 0000 BytesPerSector
; D' E' D E
;0000 0000 0000 0011 1000 0000 0000 0000
;
;0001 0000 0000 0000 max ª®«-¢® ª« áâ¥à®¢
; ¯à¨¬¥à
;0000 0000 0000 0111 Clusters
; 0100 0000 SectorsPerCluster
;0000 0010 0000 0000 BytesPerSector
; D' E' D E
;0000 0000 0000 0011 1000 0000 0000 0000
;
LD A,(CORE_BUFFERS.FS_Buffer.SectorsPerCluster)
LD BC,(CORE_BUFFERS.FS_Buffer.BytesPerSector)
; DE':DE - ª®«-¢® ª« áâ¥à®¢
@ -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

View File

@ -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