mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
prepare for FAT "big dir" support, step 2
This commit is contained in:
parent
4da5e6c350
commit
0a649252ab
@ -42,14 +42,14 @@ F_FIRST: CALL .INIT_VARS
|
|||||||
; ¯à¨ ¯à릪¥ áî¤ á⥪¥ ¤®«¦¥ «¥¦ âì record index
|
; ¯à¨ ¯à릪¥ áî¤ á⥪¥ ¤®«¦¥ «¥¦ âì record index
|
||||||
.FIND_S: INC DE
|
.FIND_S: INC DE
|
||||||
;!TODO «ãçè¥ âã⠨ᯮ«ì§®¢ âì ª ª ¢ record index ¤«ï ¯¥à¥¡®à ª â «®£ > #4000 bytes
|
;!TODO «ãçè¥ âã⠨ᯮ«ì§®¢ âì ª ª ¢ record index ¤«ï ¯¥à¥¡®à ª â «®£ > #4000 bytes
|
||||||
LD BC,FAT_DIRECTORY_RECORD
|
;LD BC,FAT_DIRECTORY_RECORD
|
||||||
ADD IX,BC
|
;ADD IX,BC
|
||||||
LD (F_NEXT.CURHND),IX
|
LD (F_NEXT.CURHND),IX
|
||||||
; record index ¬®¦¥â ¨ ¥ 㦮
|
; record index ¬®¦¥â ¨ ¥ 㦮
|
||||||
POP HL
|
POP HL
|
||||||
;!FIXIT ¥â ¯à®¢¥àª¨ ¯¥à¥¯®«¥¨¥
|
;!FIXIT ¥â ¯à®¢¥àª¨ ¯¥à¥¯®«¥¨¥
|
||||||
; ¤¥¥¬áï, çâ® FAT ¡¥§ ª®á类¢
|
; ¤¥¥¬áï, çâ® FAT ¡¥§ ª®á类¢
|
||||||
INC HL
|
;INC HL
|
||||||
LD (F_NEXT.RecordIndex),HL
|
LD (F_NEXT.RecordIndex),HL
|
||||||
;
|
;
|
||||||
LD HL,CORE_BUFFERS.HANDBUF + FAT_DIRECTORY_RECORD.RESERVED_NT
|
LD HL,CORE_BUFFERS.HANDBUF + FAT_DIRECTORY_RECORD.RESERVED_NT
|
||||||
@ -60,7 +60,7 @@ F_FIRST: CALL .INIT_VARS
|
|||||||
INC DE
|
INC DE
|
||||||
LD HL,CORE_BUFFERS.HANDBUF
|
LD HL,CORE_BUFFERS.HANDBUF
|
||||||
.FNDMODE+1: LD A,0
|
.FNDMODE+1: LD A,0
|
||||||
OR A
|
AND %0111'1111
|
||||||
JR NZ,.FIND_M2
|
JR NZ,.FIND_M2
|
||||||
LD BC,11 ;!HARDCODE
|
LD BC,11 ;!HARDCODE
|
||||||
LDIR
|
LDIR
|
||||||
@ -114,7 +114,7 @@ F_NEXT:
|
|||||||
;
|
;
|
||||||
.NSEARCH: EX AF,AF'
|
.NSEARCH: EX AF,AF'
|
||||||
SET_PAGE_X DIRPAGE
|
SET_PAGE_X DIRPAGE
|
||||||
;PUSH AF
|
PUSH AF
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
CPL
|
CPL
|
||||||
LD C,A
|
LD C,A
|
||||||
@ -124,8 +124,12 @@ F_NEXT:
|
|||||||
EXX
|
EXX
|
||||||
;
|
;
|
||||||
.CURHND+2: LD IX,0 ; ¤à¥á á«¥¤ãî饩 § ¯¨á¨ ¢ ªíè¥ ¤¨à¥ªâ®à¨¨
|
.CURHND+2: LD IX,0 ; ¤à¥á á«¥¤ãî饩 § ¯¨á¨ ¢ ªíè¥ ¤¨à¥ªâ®à¨¨
|
||||||
LD A,XH
|
;LD A,XH
|
||||||
OR XL
|
;OR XL
|
||||||
JP Z,SEARCH.error_too_many_files ; [ ] big dir
|
;JP Z,SEARCH.error_too_many_files ; [ ] big dir
|
||||||
JP SEARCH.loop
|
;JP SEARCH.loop
|
||||||
|
JP SEARCH.next_record
|
||||||
;
|
;
|
||||||
|
/*
|
||||||
|
‹î¡ë¥ ¨§¬¥¥¨ï ¢ ¤¨à¥ªâ®à¨¨ ã¡ìîâ ¥ñ.
|
||||||
|
*/
|
||||||
@ -278,8 +278,14 @@ DIR_PATH_CHECK: LD A,(HL)
|
|||||||
CALL FINDDIR.CHECK_SLASH
|
CALL FINDDIR.CHECK_SLASH
|
||||||
LD A,DSS_Error.sys.PATH_NOT_FOUND
|
LD A,DSS_Error.sys.PATH_NOT_FOUND
|
||||||
RET C
|
RET C
|
||||||
|
PUSH HL
|
||||||
LD HL,CORE_BUFFERS.CurrentPath
|
LD HL,CORE_BUFFERS.CurrentPath
|
||||||
JP SetPath_GetName
|
CALL SetPath_GetName
|
||||||
|
POP HL
|
||||||
|
RET C
|
||||||
|
DEC HL
|
||||||
|
LD (HL),0
|
||||||
|
RET
|
||||||
;
|
;
|
||||||
.end: CP (HL)
|
.end: CP (HL)
|
||||||
RET Z
|
RET Z
|
||||||
|
|||||||
@ -137,19 +137,17 @@ SEARCH:
|
|||||||
.File: LD A,FAT_ATTR.NoDIRnoVolID
|
.File: LD A,FAT_ATTR.NoDIRnoVolID
|
||||||
.Custom: EX AF,AF' ; A = 76ADLSHR
|
.Custom: EX AF,AF' ; A = 76ADLSHR
|
||||||
SET_PAGE_X DIRPAGE
|
SET_PAGE_X DIRPAGE
|
||||||
;PUSH AF
|
PUSH AF
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
;
|
;
|
||||||
CPL
|
CPL
|
||||||
LD C,A
|
LD C,A
|
||||||
LD IX,DIRPAGE.buffer
|
|
||||||
;!TEST 9/11/23 record index
|
;!TEST 9/11/23 record index
|
||||||
; ®¯â¨¬¨§ æ¨ï ¤«ï ¨¤¥ªá § ¯¨á¨ ¢ ᯨ᪥ ª â «®£ .
|
|
||||||
; <09>® ¤®¡¨âáï ¢¥àãâì ¤«ï ¯¥à¥¡®à ª â «®£ > #4000 ¡ ©â
|
|
||||||
EXX
|
EXX
|
||||||
LD DE,0
|
LD DE,0
|
||||||
EXX
|
EXX
|
||||||
;
|
;
|
||||||
|
.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
|
JR Z,.error_file_not_found
|
||||||
@ -184,11 +182,10 @@ SEARCH:
|
|||||||
;
|
;
|
||||||
LD D,XH
|
LD D,XH
|
||||||
LD E,XL
|
LD E,XL
|
||||||
;!FIXIT ¬®¦¥â ¢ë室¥ ¯à®áâ® EXX?
|
|
||||||
;!TEST 9/11/23 record index
|
;!TEST 9/11/23 record index
|
||||||
EXX
|
; EXX
|
||||||
PUSH DE ; record index
|
; PUSH DE ; record index
|
||||||
EXX
|
; EXX
|
||||||
;PUSH IX
|
;PUSH IX
|
||||||
;
|
;
|
||||||
LD HL,CORE_BUFFERS.HANDBUF
|
LD HL,CORE_BUFFERS.HANDBUF
|
||||||
@ -196,11 +193,13 @@ SEARCH:
|
|||||||
LD BC,CORE_BUFFERS.HANDBUF.SIZE
|
LD BC,CORE_BUFFERS.HANDBUF.SIZE
|
||||||
LDIR
|
LDIR
|
||||||
; record index
|
; record index
|
||||||
POP DE
|
;POP DE
|
||||||
EX AF,AF'
|
POP AF
|
||||||
|
;EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
EX AF,AF'
|
;EX AF,AF'
|
||||||
AND A
|
AND A
|
||||||
|
EXX ; record index
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
.next_record: ;!TEST 9/11/23 record index
|
.next_record: ;!TEST 9/11/23 record index
|
||||||
@ -209,22 +208,53 @@ SEARCH:
|
|||||||
EXX
|
EXX
|
||||||
;
|
;
|
||||||
LD DE,FAT_DIRECTORY_RECORD
|
LD DE,FAT_DIRECTORY_RECORD
|
||||||
ADD IX,DE ; [ ] big dir
|
ADD IX,DE
|
||||||
JR NC,.loop
|
JR NC,.loop
|
||||||
;
|
|
||||||
.error_too_many_files:
|
.error_too_many_files:
|
||||||
EX AF,AF'
|
; [ ] big dir
|
||||||
|
LD A,(F_FIRST.FNDMODE) ;!FIXIT big dir - ¥¯à ¢¨«ì® ¨á¯®«ì§®¢ âì íâ®, ¤® ®¢ãî ¯¥à¥¬¥ãî
|
||||||
|
RLA
|
||||||
|
JR C,.readDirNext
|
||||||
|
;
|
||||||
|
;EX AF,AF'
|
||||||
|
POP AF
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD A,DSS_Error.sys.TOO_MANY_FILES_IN_DIR
|
LD A,DSS_Error.sys.TOO_MANY_FILES_IN_DIR
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
.error_file_not_found:
|
.error_file_not_found:
|
||||||
EX AF,AF'
|
;EX AF,AF'
|
||||||
|
POP AF
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD A,DSS_Error.sys.FILE_NOT_FOUND
|
LD A,DSS_Error.sys.FILE_NOT_FOUND
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
; SLOT3 = DIRPAGE
|
||||||
|
; CF=1
|
||||||
|
; A' = áâà ¨æ ¤® ¢ë§®¢ äãªæ¨¨
|
||||||
|
; !FIXIT root dir in LOADDIR
|
||||||
|
; !FIXIT ¥á«¨ ¢ ªíè ¡ë«¨ ¨§¬¥¥¨ï?
|
||||||
|
.readDirNext: SBC A,A ; ZF=0
|
||||||
|
IN A,(SLOT3)
|
||||||
|
LD B,A
|
||||||
|
EX AF,AF'
|
||||||
|
PUSH HL
|
||||||
|
PUSH BC
|
||||||
|
EXX
|
||||||
|
PUSH DE ; record index
|
||||||
|
;
|
||||||
|
CALL LOADDIR.next
|
||||||
|
;
|
||||||
|
POP DE
|
||||||
|
EXX
|
||||||
|
POP BC
|
||||||
|
POP HL
|
||||||
|
LD A,B
|
||||||
|
OUT (SLOT3),A
|
||||||
|
JR NC,.loop_big
|
||||||
|
JR .error_file_not_found
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
;
|
;
|
||||||
@ -511,7 +541,7 @@ OPENDIR: LD IY,CORE_BUFFERS.FM_BUF
|
|||||||
; [x] fat32 ;!TEST
|
; [x] fat32 ;!TEST
|
||||||
LOADDIR: ;!TODO optimize
|
LOADDIR: ;!TODO optimize
|
||||||
CALL LOAD_SAVE_DIR_PREPARE
|
CALL LOAD_SAVE_DIR_PREPARE
|
||||||
PUSH AF
|
.next: PUSH AF
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
JR NZ,.read_dir ; root dir or not
|
JR NZ,.read_dir ; root dir or not
|
||||||
; root dir
|
; root dir
|
||||||
@ -532,9 +562,11 @@ LOADDIR: ;!TODO optimize
|
|||||||
LD DE,#4000 ; ᪮«ìª®
|
LD DE,#4000 ; ᪮«ìª®
|
||||||
XOR A ; ¤¥áªà¨¯â®à
|
XOR A ; ¤¥áªà¨¯â®à
|
||||||
CALL READ ; ç⥨¥ ¨§ ä ©«
|
CALL READ ; ç⥨¥ ¨§ ä ©«
|
||||||
|
EX AF,AF'
|
||||||
LD (SAVEDIR.DIRSIZE),DE ; ç¨á«® ¯à®ç¨â. ¡ ©â®¢
|
LD (SAVEDIR.DIRSIZE),DE ; ç¨á«® ¯à®ç¨â. ¡ ©â®¢
|
||||||
POP AF
|
POP AF
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
EX AF,AF'
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
.LoadRootDir: LD HL,(CORE_BUFFERS.FS_Buffer.RootDirFirstSector_H) ;!TODO ¢®§¬®¦®, å¢ â¨â LD HL,0
|
.LoadRootDir: LD HL,(CORE_BUFFERS.FS_Buffer.RootDirFirstSector_H) ;!TODO ¢®§¬®¦®, å¢ â¨â LD HL,0
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
2
|
3
|
||||||
@ -124,10 +124,11 @@ cmd_dir: push de
|
|||||||
;
|
;
|
||||||
.NeXt: CALL Print_Header
|
.NeXt: CALL Print_Header
|
||||||
; [ ] 01/10/23
|
; [ ] 01/10/23
|
||||||
ld hl,Buffers.work.free ; ¨¬ï ä ©«
|
ld hl,Buffers.work.free ; ¨¬ï ä ©«
|
||||||
ld de,Buffers.work.buffer1 ; 80 ¡ãä¥à
|
ld de,Buffers.work.buffer1 ; 80 ¡ãä¥à
|
||||||
ld a,FAT_ATTR.NoVolID ; âਡãâ (¢á¥, ªà®¬¥ ¬¥âª¨ ⮬ )
|
ld a,FAT_ATTR.NoVolID ; âਡãâ (¢á¥, ªà®¬¥ ¬¥âª¨ ⮬ )
|
||||||
ld bc,Dss.F_First.FATname ; f_first (ä®à¬ â 11)
|
;ld bc,Dss.F_First.FATname ; f_first (ä®à¬ â 11)
|
||||||
|
ld bc,Dss.F_First.All_FATname ; f_first (ä®à¬ â 11) ; [ ] bigdir
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
JR C,.Dir_Empty ;R14
|
JR C,.Dir_Empty ;R14
|
||||||
;
|
;
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
526
|
527
|
||||||
@ -1 +1 @@
|
|||||||
Subproject commit 97d5ea8a4b1359d49fb706f24aae6af6bb4eef66
|
Subproject commit f5f85b3d14c65bfc2f8619b596815e350f1a9d5b
|
||||||
Loading…
Reference in New Issue
Block a user