mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
big_dir: F_FIRST ¨ F_NEXT ¯®ç⨠OK
-bugfix: fdd-drv.asm GetBPB RomanRom2 bug fix))
This commit is contained in:
parent
ef258143e7
commit
32dca48eaf
@ -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,DSS_Error.sys.TOO_MANY_FILES_IN_DIR
|
||||||
|
SCF
|
||||||
|
RET Z
|
||||||
;
|
;
|
||||||
LD A,(F_FIRST.FNDMODE) ;!FIXIT big dir - ¥¯à ¢¨«ì® ¨á¯®«ì§®¢ âì íâ®, ¤® ®¢ãî ¯¥à¥¬¥ãî
|
|
||||||
RLA
|
|
||||||
LD A,DSS_Error.sys.TOO_MANY_FILES_IN_DIR
|
|
||||||
CCF
|
|
||||||
RET C
|
|
||||||
; ;
|
|
||||||
.nextSearch: LD A,(HL)
|
.nextSearch: LD A,(HL)
|
||||||
PUSH HL
|
PUSH HL
|
||||||
CALL .NSEARCH
|
CALL .NSEARCH
|
||||||
@ -139,16 +136,12 @@ 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
|
|
||||||
;
|
;
|
||||||
.CURHND+2: LD IX,0 ; ¤à¥á á«¥¤ãî饩 § ¯¨á¨ ¢ ªíè¥ ¤¨à¥ªâ®à¨¨
|
.CURHND+2: LD IX,0 ; ¤à¥á á«¥¤ãî饩 § ¯¨á¨ ¢ ªíè¥ ¤¨à¥ªâ®à¨¨
|
||||||
LD DE,SEARCH.for_F_NEXT
|
LD DE,SEARCH.for_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
|
||||||
;
|
;
|
||||||
/*
|
|
||||||
‹î¡ë¥ ¨§¬¥¥¨ï ¢ ¤¨à¥ªâ®à¨¨ ã¡ìîâ ¥ñ.
|
|
||||||
*/
|
|
||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user