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