big_dir: F_FIRST ¨ F_NEXT ¯®ç⨠OK

-bugfix: fdd-drv.asm GetBPB RomanRom2 bug fix))
This commit is contained in:
Tolik 2026-01-14 22:22:32 +10:00
parent ef258143e7
commit 32dca48eaf
4 changed files with 92 additions and 38 deletions

View File

@ -29,7 +29,6 @@ F_FIRST: CALL .INIT_VARS
LD A,(CORE_BUFFERS.FS_Buffer.DirBlock) LD A,(CORE_BUFFERS.FS_Buffer.DirBlock)
AND A AND A
CALL NZ,LOADDIR ;!FIXIT check error CALL NZ,LOADDIR ;!FIXIT check error
;
CALL MASK CALL MASK
RET C RET C
; ;
@ -47,15 +46,9 @@ F_FIRST: CALL .INIT_VARS
LD (DE),A LD (DE),A
; ¯à¨ ¯à릪¥ á ­  á⥪¥ ¤®«¦¥­ «¥¦ âì record index ; ¯à¨ ¯à릪¥ á ­  á⥪¥ ¤®«¦¥­ «¥¦ âì record index
.FIND_S: INC DE .FIND_S: INC DE
;!TODO «ãçè¥ âã⠨ᯮ«ì§®¢ âì ª ª ¢ record index ¤«ï ¯¥à¥¡®à  ª â «®£  > #4000 bytes
;LD BC,FAT_DIRECTORY_RECORD
;ADD IX,BC
LD (F_NEXT.CURHND),IX LD (F_NEXT.CURHND),IX
POP HL ; record index POP HL ; record index
;!FIXIT ­¥â ¯à®¢¥àª¨ ­  ¯¥à¥¯®«­¥­¨¥ LD (F_NEXT.RecordIndex),HL ; ­¥â ¯à®¢¥àª¨ ­  ¯¥à¥¯®«­¥­¨¥. ­ ¤¥¥¬áï, çâ® FAT ¡¥§ ª®á类¢
; ­ ¤¥¥¬áï, çâ® FAT ¡¥§ ª®á类¢
;INC 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
LD BC,CORE_BUFFERS.HANDBUF.SIZE - FAT_DIRECTORY_RECORD.RESERVED_NT LD BC,CORE_BUFFERS.HANDBUF.SIZE - FAT_DIRECTORY_RECORD.RESERVED_NT
@ -67,27 +60,34 @@ F_FIRST: CALL .INIT_VARS
.FNDMODE+1: LD A,0 .FNDMODE+1: LD A,0
AND %0111'1111 AND %0111'1111
JR NZ,.FIND_M2 JR NZ,.FIND_M2
;
LD BC,11 ;!HARDCODE LD BC,11 ;!HARDCODE
LDIR LDIR
.exit: LD A,F_NEXT.NO_NEXT.NO .exit: LD A,F_NEXT.NO_NEXT.NO
LD (F_NEXT.NO_NEXT),A LD (F_NEXT.NO_NEXT),A
.FindCounter+1: LD HL,0 .FindCounter+1: LD HL,0
INC HL DEC HL
LD (.FindCounter),HL LD (.FindCounter),HL
XOR A ; CF=0
;XOR A
RET RET
;
.FIND_M2: ;!TODO LFN .FIND_M2: ;!TODO LFN
;CP 2 ;CP 2
;CALL NC,GetName_LFN ;CALL NC,GetName_LFN
;CALL C,GetName ;CALL C,GetName
;
CALL GetName CALL GetName
;
JR .exit JR .exit
; ;
.INIT_VARS: LD (.SEARCH_ATTRIBUT),A .INIT_VARS: LD (.SEARCH_ATTRIBUT),A
LD (.DTABUF),DE LD (.DTABUF),DE
LD DE,0 LD DE,0 ; [ ] big dir for new directory read functions
LD (.FindCounter),DE RLA
JR C,.setCounter
;
LD DE,512 ; for old directory read functions
.setCounter: LD (.FindCounter),DE
LD A,B LD A,B
LD (.FNDMODE),A LD (.FNDMODE),A
RET RET
@ -112,17 +112,14 @@ F_NEXT:
; ;
XOR A ; F_NEXT.NO_NEXT.YES XOR A ; F_NEXT.NO_NEXT.YES
LD (F_NEXT.NO_NEXT),A LD (F_NEXT.NO_NEXT),A
; ¯à®¢¥àª  ­  ०¨¬ ªãç¨ ä ©«®¢ ¨«¨ ­¥ ¡®«ìè¥ 512 ; ¯à®¢¥àª  ­  ०¨¬. ªãç  ä ©«®¢ ¨«¨ ­¥ ¡®«ìè¥ 512?
LD A,(F_FIRST.FindCounter + 1) ; áâ à訩 ¡ ©â áçñâ稪  LD BC,(F_FIRST.FindCounter)
CP 2 LD A,B
JR C,.nextSearch OR C
;
LD A,(F_FIRST.FNDMODE) ;!FIXIT big dir - ­¥¯à ¢¨«ì­® ¨á¯®«ì§®¢ âì íâ®, ­ ¤® ­®¢ãî ¯¥à¥¬¥­­ãî
RLA
LD A,DSS_Error.sys.TOO_MANY_FILES_IN_DIR LD A,DSS_Error.sys.TOO_MANY_FILES_IN_DIR
CCF SCF
RET C RET Z
; ; ;
.nextSearch: LD A,(HL) .nextSearch: LD A,(HL)
PUSH HL PUSH HL
CALL .NSEARCH CALL .NSEARCH
@ -139,7 +136,6 @@ F_NEXT:
EX AF,AF' EX AF,AF'
CPL CPL
LD C,A LD C,A
;!TEST 9/11/23 record index
EXX EXX
.RecordIndex+1: LD DE,0 ; record index ¬®¦¥â ¨ ­¥ ­ã¦­® .RecordIndex+1: LD DE,0 ; record index ¬®¦¥â ¨ ­¥ ­ã¦­®
EXX EXX
@ -149,6 +145,3 @@ F_NEXT:
PUSH DE ; ¢ë室 ¢ SEARCH ¨§ SEARCH_RECORD_IN_DIR_CACHE PUSH DE ; ¢ë室 ¢ SEARCH ¨§ SEARCH_RECORD_IN_DIR_CACHE
JP SEARCH_RECORD_IN_DIR_CACHE.next_record JP SEARCH_RECORD_IN_DIR_CACHE.next_record
; ;
/*
î¡ë¥ ¨§¬¥­¥­¨ï ¢ ¤¨à¥ªâ®à¨¨ ã¡ìîâ ¥ñ.
*/

View File

@ -6,6 +6,7 @@ GetName: LD BC,#08FF ;!HARDCODE
LD A,' ' LD A,' '
.loop: CP (HL) .loop: CP (HL)
JR Z,.skip JR Z,.skip
;
LDI LDI
DJNZ .loop DJNZ .loop
JR .extension JR .extension
@ -17,6 +18,7 @@ GetName: LD BC,#08FF ;!HARDCODE
.extension: CP (HL) .extension: CP (HL)
LD A,"." LD A,"."
JR NZ,.copy_ext JR NZ,.copy_ext
;
XOR A XOR A
.copy_ext: LD (DE),A .copy_ext: LD (DE),A
INC DE INC DE
@ -26,6 +28,7 @@ GetName: LD BC,#08FF ;!HARDCODE
LD A,' ' LD A,' '
.loop2: CP (HL) .loop2: CP (HL)
JR Z,.exit JR Z,.exit
;
LDI LDI
DJNZ .loop2 DJNZ .loop2
.exit: XOR A .exit: XOR A

View File

@ -217,6 +217,13 @@ MediaCheck: CALL Open
;DE - ADDRESS ;DE - ADDRESS
GetBPB: LD IX,0 GetBPB: LD IX,0
; fix bug 14/01/2026. ¥á«¨ ­¥â MBR, â® ­¨ª ª¨å ¬ã⮪
LD H,D
LD L,E
LD BC,BOOT_SECTOR.MBR_SIGNATURE
ADD HL,BC
LD (HL),C
;
LD HL,0 LD HL,0
PUSH DE PUSH DE
PUSH AF PUSH AF
@ -225,18 +232,38 @@ GetBPB: LD IX,0
POP DE POP DE
POP HL POP HL
RET C RET C
;
LD BC,BOOT_SECTOR.SectorsPerTrack LD BC,BOOT_SECTOR.SectorsPerTrack
ADD HL,BC ADD HL,BC
LD E,(HL) LD E,(HL)
PUSH DE ; fix bug 14/01/2026. ¥á«¨ ­¥â MBR, â® ­¨ª ª¨å ¬ã⮪
LD BC,BOOT_SECTOR.MBR_SIGNATURE - BOOT_SECTOR.SectorsPerTrack
ADD HL,BC
LD C,(HL)
INC HL
LD B,(HL)
LD HL,#AA55
SBC HL,BC
LD A,DSS_Error.drv.UNKNOWN_FORMAT
SCF
RET NZ
;
PUSH DE ; D - drive, E - Sectors Per Track
LD A,D LD A,D
LD C,BIOS.DRV_GET_PAR LD C,BIOS.DRV_GET_PAR
RST ToBIOS RST ToBIOS
LD A,H ; !TEST
POP HL ;LD A,H ; A heads
PUSH HL ;POP HL ; H - drive, L - Sectors Per Track
LD H,A ;PUSH HL
POP AF ;LD H,A ; H - heads, L - Sectors Per Track
;POP AF ; A - drive
;
LD C,H ; C heads
POP HL ; H - drive, L - Sectors Per Track
LD A,H ; A - drive
LD H,C ; H - heads, L - Sectors Per Track
;
LD C,BIOS.DRV_SET_PAR LD C,BIOS.DRV_SET_PAR
RST ToBIOS RST ToBIOS
XOR A XOR A

View File

@ -1,6 +1,23 @@
;------------------[ „®áâ ñ¬ ⥪ãéãî ¤ âã ¨ BUILD++ ]-----------------[] ;------------------[ „®áâ ñ¬ ⥪ãéãî ¤ âã ¨ BUILD++ ]-----------------[]
LUA PASS1 LUA PASS1
Console_build = increase_build("./SHELL/build.txt") Console_build = increase_build("./SHELL/build.txt")
if Console_build > 999 then
Console_build = 999
print("WARNING! Build > 999","WARNING! Build > 999","WARNING! Build > 999","WARNING! Build > 999","\aWARNING! Build > 999\a")
end
ENDLUA IFNDEF INCREASE_BUILD
DEFINE INCREASE_BUILD 0
ELSE
DEFINE+ INCREASE_BUILD 1
ENDIF
;------------------[ „®áâ ñ¬ ⥪ãéãî ¤ âã ¨ BUILD++ ]-----------------[]
LUA PASS1
if sj.get_define("INCREASE_BUILD") > "0" then
Console_build = increase_build("./SHELL/build.txt")
else
Console_build = get_build("./SHELL/build.txt")
end
if Console_build > 999 then if Console_build > 999 then
Console_build = 999 Console_build = 999
print("WARNING! Build > 999","WARNING! Build > 999","WARNING! Build > 999","WARNING! Build > 999","\aWARNING! Build > 999\a") print("WARNING! Build > 999","WARNING! Build > 999","WARNING! Build > 999","WARNING! Build > 999","\aWARNING! Build > 999\a")
@ -11,6 +28,20 @@
ENDLUA ENDLUA
;---------------------------------------------------------------------[] ;---------------------------------------------------------------------[]
;
; Shell full version
; ­®¬¥à ¢¥àᨨ (0..9)
CONSOLE_VERS EQU 1
; ­®¬¥à ¬®¤¨ä¨ª æ¨¨ (0..99)
CONSOLE_MODF EQU 2
; ­®¬¥à ¡¨«¤  (0..999)
CONSOLE_BUILD EQU lua_BUILD
;
LUA ALLPASS
sj.insert_label("lua_BUILD", Console_build)
ENDLUA
;---------------------------------------------------------------------[]
; ;
; Shell full version ; Shell full version
; ­®¬¥à ¢¥àᨨ (0..9) ; ­®¬¥à ¢¥àᨨ (0..9)