mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 01:11:48 +03:00
FINDDIR вроде OK
This commit is contained in:
parent
48b9504b37
commit
e8cf44ae6b
@ -140,7 +140,9 @@ F_NEXT:
|
||||
EXX
|
||||
;
|
||||
.CURHND+2: LD IX,0 ; ¤à¥á á«¥¤ãî饩 § ¯¨á¨ ¢ ªíè¥ ¤¨à¥ªâ®à¨¨
|
||||
JP SEARCH.next_record
|
||||
LD DE,SEARCH.for_F_NEXT
|
||||
PUSH DE ; ¢ë室 ¢ SEARCH ¨§ SEARCH_RECORD_IN_DIR_CACHE
|
||||
JP SEARCH_RECORD_IN_DIR_CACHE.next_record
|
||||
;
|
||||
/*
|
||||
‹î¡ë¥ ¨§¬¥¥¨ï ¢ ¤¨à¥ªâ®à¨¨ ã¡ìîâ ¥ñ.
|
||||
|
||||
@ -53,7 +53,7 @@ OPEN_FN: ; Current Dir 15/10/23
|
||||
LDIR
|
||||
.TMP+1: LD A,0
|
||||
LD (IY+_sFM.ACCESS_MODE),A
|
||||
; <EFBFBD><EFBFBD>⨬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
; !FIXIT ®¯â¨¬¨§ã« âãâ
|
||||
;LD A,(TASK)
|
||||
;LD (IY+_sFM.TASK_NUM),A
|
||||
;XOR A
|
||||
|
||||
@ -40,29 +40,41 @@ RENAME: ; Current Dir 15/10/23
|
||||
;
|
||||
LD A,FAT_ATTR.NoSYSnoVolID
|
||||
CALL SEARCH.Custom ; ¯®¨áª § ¯¨á¨ "old_name.ext" ¢ ᯨ᪥ ¤¨áª
|
||||
; DE - record index
|
||||
POP HL
|
||||
RET C
|
||||
;LD DE,MASKARE
|
||||
;
|
||||
LD (.recordAddr),IX
|
||||
; á«ãç © ¯¥à¥ª«î票ï áâà ¨æë ªíè ¯®á«¥ SEARCH.Custom "new_name.ext"
|
||||
LD A,(CORE_BUFFERS.FS_Buffer.DirBlock)
|
||||
LD (.DirBlock),A
|
||||
LD (.recordIndex),DE
|
||||
;
|
||||
CALL MASK.name
|
||||
RET C
|
||||
;
|
||||
CALL CHECK_NAME
|
||||
RET Z
|
||||
;
|
||||
PUSH IX
|
||||
;PUSH IX
|
||||
LD A,FAT_ATTR.NoSYSnoVolID
|
||||
CALL SEARCH.Custom ; ¯®¨áª § ¯¨á¨ "new_name.ext" ¢ ᯨ᪥ ¤¨áª
|
||||
POP IX
|
||||
;POP IX
|
||||
LD A,DSS_Error.sys.FILE_EXISTS
|
||||
CCF
|
||||
RET C
|
||||
;
|
||||
SET_PAGE_X DIRPAGE
|
||||
EX AF,AF'
|
||||
; á«ãç © ¯¥à¥ª«î票ï áâà ¨æë ªíè ¯®á«¥ SEARCH.Custom "new_name.ext"
|
||||
LD A,(CORE_BUFFERS.FS_Buffer.DirBlock)
|
||||
.DirBlock+1: CP 0
|
||||
.recordIndex+1: LD DE,0
|
||||
SCF ; ¥ ¯¥à¥áç¨âë¢ âì à §¬¥à ¤¨à¥ªâ®à¨¨
|
||||
CALL NZ,LOADDIR.next
|
||||
;
|
||||
LD HL,CORE_BUFFERS.MASKARE
|
||||
LD D,XH
|
||||
LD E,XL
|
||||
.recordAddr+1: LD DE,0
|
||||
LD BC,11
|
||||
LDIR
|
||||
;
|
||||
|
||||
@ -29,13 +29,15 @@ WRITE: ;!TEST ;!TODO 5/12/23 ; [ ]
|
||||
PUSH DE
|
||||
CALL SET_FM
|
||||
JR C,.ERR1
|
||||
;
|
||||
LD A,(IY+_sFM.ACCESS_MODE)
|
||||
AND Dss.Open.R
|
||||
JR NZ,.RD_ONLY
|
||||
;
|
||||
SET 7,(IY + _sFM.ACCESS_MODE)
|
||||
SET 5,(IY + _sFM.FS_REC.ATTRIBUT)
|
||||
LD A,(IY + _sFM.DRIVE)
|
||||
CALL OPENDSK
|
||||
CALL OPENDSK ;!FIXIT ¤«ï á®åà ¥¨ï ¤¨à¥ªâ®à¨¨ ¨á¯®«ì§ã¥âáï. Œ®¦¥â «¨ á«ãç¨âìáï, çâ® ¤¨áª ᬥ¨âáï?
|
||||
JR C,.ERR1
|
||||
; [x] 26/06/2024 {64 kb cluster}
|
||||
CALL CHECK_64kb_CLUSTER
|
||||
@ -49,6 +51,7 @@ WRITE: ;!TEST ;!TODO 5/12/23 ; [ ]
|
||||
PUSH BC
|
||||
SRL B
|
||||
JR Z,.WOV2
|
||||
;
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
PUSH BC
|
||||
@ -56,6 +59,7 @@ WRITE: ;!TEST ;!TODO 5/12/23 ; [ ]
|
||||
CALL BLOCK_WRITE
|
||||
POP BC
|
||||
JR C,.ERR3
|
||||
;
|
||||
LD C,B
|
||||
LD HL,(.R_POINT)
|
||||
LD DE,#0200 ;!HARDCODE sector size
|
||||
@ -76,6 +80,7 @@ WRITE: ;!TEST ;!TODO 5/12/23 ; [ ]
|
||||
LD B,A
|
||||
OR C
|
||||
JR Z,.WOV6
|
||||
;
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
PUSH BC
|
||||
@ -93,6 +98,7 @@ WRITE: ;!TEST ;!TODO 5/12/23 ; [ ]
|
||||
LD HL,(.R_POINT)
|
||||
POP BC
|
||||
JP C,.ERR2
|
||||
;
|
||||
LDIR
|
||||
LD (.R_POINT),HL
|
||||
POP DE
|
||||
@ -108,6 +114,7 @@ WRITE: ;!TEST ;!TODO 5/12/23 ; [ ]
|
||||
LD C,SLOT3
|
||||
OUT (C),B
|
||||
RET C
|
||||
;
|
||||
.WOV6: LD HL,(.R_POINT)
|
||||
.S_POINT+1: LD DE,0
|
||||
; CF=0
|
||||
@ -152,6 +159,7 @@ WRITE: ;!TEST ;!TODO 5/12/23 ; [ ]
|
||||
EXX
|
||||
POP DE
|
||||
JP C,.ERR1
|
||||
;
|
||||
LD HL,512 ;!HARDCODE ;!FIXIT ; [ ] sector size
|
||||
AND A
|
||||
SBC HL,DE
|
||||
@ -161,6 +169,7 @@ WRITE: ;!TEST ;!TODO 5/12/23 ; [ ]
|
||||
AND A
|
||||
SBC HL,BC
|
||||
JR NC,.WOV3
|
||||
;
|
||||
ADD HL,BC
|
||||
LD B,H
|
||||
LD C,L
|
||||
@ -187,6 +196,7 @@ WRITE: ;!TEST ;!TODO 5/12/23 ; [ ]
|
||||
OUT (C),B
|
||||
POP HL
|
||||
JP C,.ERR2
|
||||
;
|
||||
LD BC,1
|
||||
ADD HL,BC
|
||||
EX DE,HL
|
||||
|
||||
@ -114,12 +114,15 @@ OPENDSK: ;!TEST DRV.Open
|
||||
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
||||
CP B
|
||||
JR NZ,.open
|
||||
;
|
||||
PUSH BC
|
||||
LD C,Dss.DRV.MediaCheck
|
||||
RST ToDSS.DRV
|
||||
POP BC
|
||||
JR Z,.exit
|
||||
;
|
||||
JR C,.error
|
||||
;
|
||||
JR .skip_open ;!FIXIT ª®£¤ DRV.MediaCheck ¨ DRV.Open ¡ã¤ã⠮⫨ç âìáï
|
||||
;
|
||||
.open: LD A,B
|
||||
|
||||
222
DSS/FS/FAT.asm
222
DSS/FS/FAT.asm
@ -2116,12 +2116,14 @@ DELETE_LFN_RECORDS:
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
|
||||
; [ ] big dir £à㧨âì âãâ ç «ìãî áâà ¨æã ¢ dir cache ¨«¨ ¯¥à¥¤ ¢ë§®¢®¬?
|
||||
; [ ] big dir ¢á¥£¤ «¨ ¯à¨ ¢ë§®¢¥ ã á ¯à ¢¨«ìë¥ (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L ¨ H) ¤«ï LOADDIR?
|
||||
;----------------------------------------------------------------------;
|
||||
; <20>®¨áª § ¯¨á¨ ª â «®£ ¢ ᯨ᪥ ª â «®£
|
||||
; ¢å®¤: a = âਡãâ § ¯¨á¨ (.Custom)
|
||||
; ¢å®¤: A = âਡãâ § ¯¨á¨ (.Custom)
|
||||
; (CORE_BUFFERS.MASKARE) - ¬ ᪠¤«ï ¯®¨áª
|
||||
; ¢ë室: de = ¨¤¥ªá § ¯¨á¨ ¢ ᯨ᪥ ª â «®£
|
||||
; ¢ë室: DE - ¨¤¥ªá § ¯¨á¨ ¢ ᯨ᪥ ª â «®£
|
||||
; IX - ¤à¥á ©¤¥®© § ¯¨á¨ ¢ SLOT3
|
||||
; (HANDBUF) = file's directory record
|
||||
; CF - ª â «®£ ¥ ©¤¥
|
||||
SEARCH:
|
||||
@ -2141,8 +2143,34 @@ SEARCH:
|
||||
SET_PAGE_X DIRPAGE
|
||||
PUSH AF
|
||||
EX AF,AF'
|
||||
;
|
||||
CPL
|
||||
CALL SEARCH_RECORD_IN_DIR_CACHE
|
||||
.for_F_NEXT: JR C,.error
|
||||
;
|
||||
LD D,XH
|
||||
LD E,XL
|
||||
LD HL,CORE_BUFFERS.HANDBUF
|
||||
EX DE,HL
|
||||
LD BC,CORE_BUFFERS.HANDBUF.SIZE
|
||||
LDIR
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
AND A
|
||||
EXX ; record index
|
||||
RET
|
||||
;
|
||||
.error: POP AF
|
||||
OUT (SLOT3),A
|
||||
LD A,DSS_Error.sys.FILE_NOT_FOUND
|
||||
SCF
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
SEARCH_RECORD_IN_DIR_CACHE:
|
||||
;CPL
|
||||
LD C,A
|
||||
;!TEST 9/11/23 record index
|
||||
EXX
|
||||
@ -2152,13 +2180,16 @@ SEARCH:
|
||||
.loop_big: LD IX,DIRPAGE.buffer
|
||||
.loop: LD A,(IX + FAT_DIRECTORY_RECORD.NAME)
|
||||
OR A
|
||||
JR Z,.error_file_not_found
|
||||
SCF
|
||||
RET Z ; not found
|
||||
;
|
||||
CP #E5 ;!HARDCODE #E5 - § ¯¨áì ¢ ¤¨à¥ªâ®à¨¨ ᢮¡®¤ , â ª ª ª ä ©«/¤¨à¥ªâ®à¨ï ¡ë«¨ 㤠«¥ë
|
||||
JR Z,.next_record
|
||||
;
|
||||
LD A,(IX + FAT_DIRECTORY_RECORD.ATTRIBUT)
|
||||
LD D,A
|
||||
AND C
|
||||
JR NZ,.next_record
|
||||
.type+0: JR NZ,.next_record
|
||||
;
|
||||
LD A,C
|
||||
INC A
|
||||
@ -2170,55 +2201,27 @@ SEARCH:
|
||||
.found_attr: LD HL,CORE_BUFFERS.MASKARE
|
||||
LD D,XH
|
||||
LD E,XL
|
||||
LD B,11
|
||||
LD B,11 ;!HARDCODE dos name not LFN
|
||||
EX DE,HL
|
||||
;
|
||||
.loop_compare: LD A,(DE)
|
||||
CP '?'
|
||||
JR Z,.next_char
|
||||
;
|
||||
CP (HL)
|
||||
JR NZ,.next_record
|
||||
;
|
||||
.next_char: INC HL
|
||||
INC DE
|
||||
DJNZ .loop_compare
|
||||
;
|
||||
LD D,XH
|
||||
LD E,XL
|
||||
;!TEST 9/11/23 record index
|
||||
; EXX
|
||||
; PUSH DE ; record index
|
||||
; EXX
|
||||
;PUSH IX
|
||||
;
|
||||
LD HL,CORE_BUFFERS.HANDBUF
|
||||
EX DE,HL
|
||||
LD BC,CORE_BUFFERS.HANDBUF.SIZE
|
||||
LDIR
|
||||
; record index
|
||||
;POP DE
|
||||
POP AF
|
||||
;EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
;EX AF,AF'
|
||||
AND A
|
||||
EXX ; record index
|
||||
RET
|
||||
;JR NZ,.next_record
|
||||
JR Z,.next_char
|
||||
;
|
||||
.next_record: ;!TEST 9/11/23 record index
|
||||
EXX
|
||||
INC DE
|
||||
EXX
|
||||
;
|
||||
.inc_rec_num: LD DE,FAT_DIRECTORY_RECORD
|
||||
LD DE,FAT_DIRECTORY_RECORD
|
||||
ADD IX,DE
|
||||
JR NC,.loop
|
||||
;
|
||||
; [ ] big dir
|
||||
; LD A,(F_FIRST.FNDMODE) ;!FIXIT big dir - ¥¯à ¢¨«ì® ¨á¯®«ì§®¢ âì íâ®, ¤® ®¢ãî ¯¥à¥¬¥ãî
|
||||
; RLA
|
||||
; JR NC,.error_too_many_files
|
||||
;
|
||||
; CF=1
|
||||
; CF=1
|
||||
; !FIXIT root dir in LOADDIR
|
||||
; !FIXIT ¥á«¨ ¢ ªíè ¡ë«¨ ¨§¬¥¥¨ï?
|
||||
.readDirNext: PUSH BC
|
||||
@ -2229,59 +2232,40 @@ SEARCH:
|
||||
POP DE
|
||||
EXX
|
||||
POP BC
|
||||
JR NC,.loop_big ; !FIXIT â ¬ ¥â CF ¢ë室¥
|
||||
JR NC,.loop_big ; !FIXIT ¬®¦¥â ¡ëâì ®è¨¡ª çâ¥¨ï ¨«¨ ¯à¨ ZF - ª®¥æ ¤¨à¥ªâ®à¨¨
|
||||
;
|
||||
.error_file_not_found:
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
LD A,DSS_Error.sys.FILE_NOT_FOUND
|
||||
SCF
|
||||
RET
|
||||
;
|
||||
; .error_too_many_files:
|
||||
; POP AF
|
||||
; OUT (SLOT3),A
|
||||
; LD A,DSS_Error.sys.TOO_MANY_FILES_IN_DIR
|
||||
; SCF
|
||||
; RET
|
||||
;
|
||||
|
||||
.next_char: INC HL
|
||||
INC DE
|
||||
DJNZ .loop_compare
|
||||
; CF=0
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
;----------------------------------------------------------------------; 20 28
|
||||
; FIND "MASKAREA" IN DIRECTORY
|
||||
; ¢ë室: IY:DE - cluster number
|
||||
; [ ] big dir ¢á¥£¤ «¨ ¯à¨ ¢ë§®¢¥ ã á ¯à ¢¨«ìë¥ (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L ¨ H) ¤«ï LOADDIR?
|
||||
FINDDIR: SET_PAGE_X DIRPAGE
|
||||
;
|
||||
PUSH AF
|
||||
LD IX,DIRPAGE.buffer
|
||||
.big_loop: LD A,(IX + FAT_DIRECTORY_RECORD.NAME)
|
||||
OR A
|
||||
JR Z,.error
|
||||
;[ ] big dir ; !FIXIT § ¬¥¨âì æ¨ª«¨çë© ¯¥à¥¡®à ¤¨à¥ªâ®à¨¨ ¯® áâà ¨æ ¬, ç⮡ ¥ ¤¥« âì «¨è¨å § £àã§®ª
|
||||
LD A,(CORE_BUFFERS.FS_Buffer.DirBlock)
|
||||
AND A
|
||||
CALL NZ,LOADDIR
|
||||
;
|
||||
CP #E5
|
||||
JR Z,.next_step
|
||||
;
|
||||
LD A,(IX + FAT_DIRECTORY_RECORD.ATTRIBUT)
|
||||
AND FAT_ATTR.DIRECTORY
|
||||
JR Z,.next_step
|
||||
;
|
||||
LD HL,CORE_BUFFERS.MASKARE
|
||||
LD D,XH
|
||||
LD E,XL
|
||||
EX DE,HL
|
||||
LD B,11 ;!HARDCODE
|
||||
.loop: LD A,(DE)
|
||||
CP "?"
|
||||
JR Z,.compared
|
||||
CP (HL)
|
||||
JR NZ,.next_step
|
||||
;
|
||||
.compared: INC HL
|
||||
INC DE
|
||||
DJNZ .loop
|
||||
LD A,#28 ; JR Z,...
|
||||
LD (SEARCH_RECORD_IN_DIR_CACHE.type),A ; search directory
|
||||
LD A,FAT_ATTR.DIRECTORY
|
||||
CALL SEARCH_RECORD_IN_DIR_CACHE
|
||||
EX AF,AF
|
||||
LD A,#20 ; JR NZ,...
|
||||
LD (SEARCH_RECORD_IN_DIR_CACHE.type),A ; search
|
||||
EX AF,AF
|
||||
JR C,.error
|
||||
;
|
||||
LD A,(IX + FAT_DIRECTORY_RECORD.NAME)
|
||||
CP "."
|
||||
@ -2315,10 +2299,6 @@ FINDDIR: SET_PAGE_X DIRPAGE
|
||||
.MM3: LD (HL),0
|
||||
JP .ITs_DIR
|
||||
;
|
||||
.next_step: LD BC,FAT_DIRECTORY_RECORD
|
||||
ADD IX,BC
|
||||
JR NC,.big_loop
|
||||
;
|
||||
.error: POP AF
|
||||
OUT (SLOT3),A
|
||||
LD A,DSS_Error.sys.PATH_NOT_FOUND
|
||||
@ -2344,36 +2324,6 @@ FINDDIR: SET_PAGE_X DIRPAGE
|
||||
CALL GetName
|
||||
EX DE,HL
|
||||
;
|
||||
; LD BC,256*8 + ' ' ;!HARDCODE
|
||||
; .MM1: LD A,(DE)
|
||||
; INC DE
|
||||
; CP C
|
||||
; JR Z,.MM2
|
||||
; LD (HL),A
|
||||
; INC HL
|
||||
; .MM2 DJNZ .MM1 ;x42-40 50-55
|
||||
; LD A,(DE)
|
||||
; INC DE
|
||||
; CP C
|
||||
; JR Z,.MM3
|
||||
; LD (HL),"."
|
||||
; INC HL
|
||||
; LD (HL),A
|
||||
; INC HL
|
||||
; LD A,(DE)
|
||||
; INC DE
|
||||
; CP C
|
||||
; JR Z,.MM3
|
||||
; LD (HL),A
|
||||
; INC HL
|
||||
; LD A,(DE)
|
||||
; CP C
|
||||
; JR Z,.MM3
|
||||
; LD (HL),A
|
||||
; .MM2_5: INC HL
|
||||
; .MM3: LD (HL),0
|
||||
; ; JP IT_DIR
|
||||
;
|
||||
.ITs_DIR: ; fat32
|
||||
LD E,(IX + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_H)
|
||||
LD D,(IX + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_H+1)
|
||||
@ -2488,8 +2438,8 @@ OPENDIR: ; init
|
||||
JR NZ,.SUBDIR2
|
||||
; fat32
|
||||
; !TEST 04/01/2026
|
||||
;EX DE,HL
|
||||
CALL CHECK_ROOT_CLUSTER
|
||||
EX DE,HL
|
||||
CALL CHECK_ROOT_CLUSTER
|
||||
;CALL CHECK_FIRST_CLUSTER
|
||||
EX DE,HL
|
||||
;
|
||||
@ -2524,21 +2474,29 @@ OPENDIR: ; init
|
||||
RET C
|
||||
;
|
||||
EX DE,HL
|
||||
LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L),HL ; fat32
|
||||
LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H),IY ; fat32
|
||||
LD A,(CORE_BUFFERS.FS_Buffer.FAT_TYPE)
|
||||
CP FAT_TYPE.x32
|
||||
JR NZ,.setCluster
|
||||
; [ ] big dir
|
||||
; ...
|
||||
LD A,H
|
||||
OR L
|
||||
OR YH
|
||||
OR YL
|
||||
JR NZ,.setCluster
|
||||
; set root dir for fat32
|
||||
LD HL,(CORE_BUFFERS.FS_Buffer.RootDirStartCluster_L)
|
||||
LD IY,(CORE_BUFFERS.FS_Buffer.RootDirStartCluster_H)
|
||||
.setCluster: LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L),HL
|
||||
LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H),IY ; fat32
|
||||
;
|
||||
;LD HL,#4000 ;!HARDCODE
|
||||
;LD (CORE_BUFFERS.FM_BUF.FS_REC.F_SIZE),HL
|
||||
;-------------; EX DE,HL
|
||||
; JP LOADDIR
|
||||
;-------------; JP LOADDIR
|
||||
;----------------------------------------------------------------------;
|
||||
; <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 § ¯¨á¨, ª®â®àë© ¤®«¦¥ ¯®¯ áâì ¢ Š<>˜
|
||||
.Custom: AND A ; ¢ LOAD_SAVE_DIR_PREPARE ¯®áç¨â ¥âáï à §¬¥à ª â «®£ ¤¨à¥ªâ®à¨¨
|
||||
.Custom: AND A ; ¢ LOAD_SAVE_DIR_PREPARE ¯®áç¨â ¥âáï à §¬¥à ª â «®£ ¤¨à¥ªâ®à¨¨
|
||||
.next: CALL LOAD_SAVE_DIR_PREPARE
|
||||
PUSH AF
|
||||
EX AF,AF'
|
||||
@ -2546,7 +2504,7 @@ LOADDIR: ;!TODO optimize
|
||||
; root dir
|
||||
;LD A,(CORE_BUFFERS.FS_Buffer.FAT_TYPE)
|
||||
;CP FAT_TYPE.x32
|
||||
JR Z,.LoadRootDir
|
||||
JR Z,.LoadRootDirFAT12_16
|
||||
;CALL LOAD_SAVE_DIR_PREPARE.CalcDirSize
|
||||
; fat32
|
||||
; LD HL,(CORE_BUFFERS.FS_Buffer.RootDirStartCluster_L)
|
||||
@ -2575,10 +2533,17 @@ LOADDIR: ;!TODO optimize
|
||||
RET NZ
|
||||
; ç¨â ¥¬ á ç «
|
||||
CALL LOADDIR
|
||||
.no_more: XOR A ;!FIXIT ãç¨âì í⮬㠢ë§ë¢ î騥 ¯à®æ¥¤ãàë ; 0 - ¥â ®è¨¡®ª. ¯à¨§ ª ª®æ ª â «®£
|
||||
SCF
|
||||
RET
|
||||
;
|
||||
.LoadRootDir: LD HL,(CORE_BUFFERS.FS_Buffer.RootDirFirstSector_H);!TODO ¢®§¬®¦®, å¢ â¨â LD HL,0
|
||||
.LoadRootDirFAT12_16:
|
||||
; [ ] big dir
|
||||
LD A,(CORE_BUFFERS.FS_Buffer.DirBlock)
|
||||
AND A
|
||||
JR NZ,.no_more
|
||||
;
|
||||
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
|
||||
@ -2780,6 +2745,7 @@ LOAD_SAVE_DIR_PREPARE:
|
||||
; ¢å®¤: iy=áâàãªâãà ¤¥áªà¨¯â®à
|
||||
; [ ] big dir ¯®«ãç âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||||
SAVEDIR: ;!TODO optimize
|
||||
SCF ; ¥ áç¨â âì à §¬¥à ¤¨à¥ªâ®à¨¨
|
||||
CALL LOAD_SAVE_DIR_PREPARE
|
||||
PUSH AF
|
||||
EX AF,AF'
|
||||
@ -2800,7 +2766,7 @@ SAVEDIR: ;!TODO optimize
|
||||
;!FIXIT ¥á«¨ ® 㦠, â® ¯à®¢¥à¨âì ¡ £¨ ( ¯à¨¬¥à, à §¬¥à ¤¨à४â®à¨¨ ¬¥ìè¥ ¯à¨ ®âªàë⨨ ¨ ¡®«ìè¥ ¯®á«¥ ¯à ¢®ª)
|
||||
; ª®£¤ ¡ã¤¥â ç⥨¥ ªã᪠¬¨ ª â «®£ ¢ ªíè, âãâ ¥éñ áçñâ稪 ¯à¨ªàãâ¨âì
|
||||
.DirBlkSize+1: LD DE,0
|
||||
XOR A
|
||||
XOR A ; FM
|
||||
CALL WRITE
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<EFBFBD>® ¯®«ë¬ ¤¨à¥ªâ®à¨ï¬.
|
||||
;[x] LOADDIR ¯®á«¥ READ ¢ë室¨âì á CF, ¥á«¨ ¯à®ç¨â ® 0
|
||||
;[ ] FINDDIR - ¯®ª à ¡®â ¥â ⮫쪮 á ⥬, çâ® ¡ë«® § £à㦥® ¢ ªíè ¨ ¬ «® ç⮠室¨â, ¥á«¨ áâà ¨æ ¡®«ìè¥ 1.
|
||||
;[x] FINDDIR - ¯®ª à ¡®â ¥â ⮫쪮 á ⥬, çâ® ¡ë«® § £à㦥® ¢ ªíè ¨ ¬ «® ç⮠室¨â, ¥á«¨ áâà ¨æ ¡®«ìè¥ 1.
|
||||
;[ ] <20>¥à¥¤¥« âì WRITE_DIR_HANDLE ¤«ï à ¡®âë á «î¡®© § ¯¨áìî ¢ ª â «®£¥ (ᥩç á ¨é¥â ¯¥à¢ãî ¯ãáâãî, ç⮡ § ¯¨á âì ¢ ¥ñ)
|
||||
;[ ] ‚ᥠ¨§¬¥¥¨ï ¢ § ¯¨áïå ª â «®£ ¤¥« âì ¢ ¡ãä¥à¥ CORE_BUFFERS.HANDBUF ¨ á®åà ïâì ç¥à¥§ WRITE_DIR_HANDLE
|
||||
;[x] <20>¥à¥¬¥ ï DirBlock ¯®ª §ë¢ îé ï ª ª®© ¡«®ª ¤¨à¥ªâ®à¨¨ ¢ ªíè.
|
||||
@ -12,9 +12,9 @@
|
||||
|
||||
|
||||
<EFBFBD>¥à¥«®¯ â¨âì
|
||||
;[ ] FINDDIR
|
||||
;[ ] LOAD_SAVE_DIR_PREPARE
|
||||
;[ ] LOADDIR
|
||||
;[x] FINDDIR
|
||||
;[x] LOAD_SAVE_DIR_PREPARE
|
||||
;[x] LOADDIR
|
||||
;[ ] SAVEDIR
|
||||
;[ ] RENAME
|
||||
;[ ] CLOSE_FN
|
||||
|
||||
Loading…
Reference in New Issue
Block a user