mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 01:11:48 +03:00
SYS.EXE: исправлено несколько багов с загрузкой и буферами.
LOADDIR: fix мусор в странице каталога, если каталог меньше страницы
This commit is contained in:
parent
02b4f7b39f
commit
a8d7de8517
@ -22,10 +22,11 @@
|
||||
DEFINE UNIVERSAL_BOOT 1
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
ORG_ADDRESS EQU #8000
|
||||
LOAD_SECTORS EQU SECTORS_OF_LOADER.AFTER_BPB
|
||||
ORG_ADDRESS EQU #8000
|
||||
MAX_SECTORS_PER_PAGE EQU #20 ;¬ ªá¨¬ «ì®¥ ª®«-¢® ᥪâ®à®¢ ¢ áâà ¨æ¥ ;!TODO ¥á«¨ ᥪâ®à ¡®«ìè¥ 512?
|
||||
LOAD_SECTORS EQU SECTORS_OF_LOADER.AFTER_BPB
|
||||
LOADER_IN_BPB:
|
||||
.MAX_SIZE EQU _sBOOT_SECTOR.PARTITION_TABLE - _sBOOT_SECTOR_PARAMS_FAT32
|
||||
.MAX_SIZE EQU _sBOOT_SECTOR.PARTITION_TABLE - _sBOOT_SECTOR_PARAMS_FAT32
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
DISP ORG_ADDRESS
|
||||
@ -154,7 +155,6 @@ CONTINUE: LD HL,0
|
||||
LD BC,1*256 + BIOS.GetMem
|
||||
RST ToBIOS_18 ;GET PAGE FOR DOS
|
||||
LD (LOAD_CORE.BANKDOS),A
|
||||
;
|
||||
OUT (SLOT0),A
|
||||
;
|
||||
CALL GET_BPB ;READ BPB
|
||||
@ -183,6 +183,10 @@ CONTINUE: LD HL,0
|
||||
EXX
|
||||
LD HL,(FCLUSTR_L)
|
||||
LD DE,#C000
|
||||
; -bug: áçñâ稪 ¤«ï .SMALL_CLUSTER, ¡ £ ®â९®à⨫ Vasil Ivanov
|
||||
; LD A,MAX_SECTORS_PER_PAGE
|
||||
; LD (LOAD_CORE.BIG_CORE),A
|
||||
;
|
||||
CALL LOAD_CORE
|
||||
; [ ] § £à㧪 system.dos ¡®«ìè¥ #4000 ¡ ©â®¢
|
||||
EX AF,AF'
|
||||
@ -193,12 +197,12 @@ CONTINUE: LD HL,0
|
||||
;
|
||||
IN A,(SLOT1)
|
||||
LD (LOAD_CORE.BANKDOS),A
|
||||
LD A,SUBLOAD_SIZE
|
||||
LD A,SUBLOAD_SIZE + 1
|
||||
LD (LOAD_CORE.max_sectors),A
|
||||
LD (LOAD_CORE.BIG_CORE),A ; ⥯¥àì íâ® áçñâ稪 ®áâ ¢è¨åáï ᥪâ®à®¢
|
||||
;
|
||||
LD A,(BOOT_BUFFER + BOOT_SECTOR.SectorsPerCluster)
|
||||
CP #20 + 1 ; !HARDCODE ª®«-¢® § £à㦠¥¬ëå ᥪâ®à®¢
|
||||
CP MAX_SECTORS_PER_PAGE + 1 ; ª®«-¢® § £à㦠¥¬ëå ᥪâ®à®¢
|
||||
JP NC,INC_SECTOR_NUM
|
||||
CALL READ_FROM_FAT ; next cluster in chain
|
||||
EX DE,HL
|
||||
@ -209,6 +213,11 @@ CONTINUE: LD HL,0
|
||||
CALL NC,LOAD_CORE
|
||||
.no_big_core: ;
|
||||
RUN_CORE: DI
|
||||
;
|
||||
LD A,(READ_FAT_TABLE.FAT_PAGE)
|
||||
LD C,BIOS.FreeMem
|
||||
RST ToBIOS_18
|
||||
;
|
||||
XOR A
|
||||
OUT (SYS_PORT.OFF),A
|
||||
;
|
||||
@ -264,7 +273,7 @@ RUN_CORE: DI
|
||||
INC_SECTOR_NUM: PUSH DE
|
||||
CALL CLUSTER_TO_SECTOR
|
||||
CALL GET_ABSOLUTE_SECTOR
|
||||
LD DE,#20 ;!HARDCODE ª®«¨ç¥á⢮ ¯à®ç¨â ëå ᥪâ®à®¢
|
||||
LD DE,MAX_SECTORS_PER_PAGE ; ª®«¨ç¥á⢮ ¯à®ç¨â ëå ᥪâ®à®¢
|
||||
ADD IX,DE
|
||||
JR NC,.no_inc
|
||||
INC HL
|
||||
@ -371,11 +380,17 @@ YEPDOS: ;[ ] 17.12.2023
|
||||
|
||||
;
|
||||
GET_BPB: XOR A
|
||||
LD HL,FatBuffer
|
||||
LD B,_sysFatBuffer
|
||||
.loop_clear: LD (HL),A
|
||||
INC HL
|
||||
DJNZ .loop_clear
|
||||
|
||||
LD H,A
|
||||
LD L,A
|
||||
LD (FatBuffer.FAT1_SEC_H),HL ; high word first sector FAT #1
|
||||
LD (FatBuffer.RootDirFirstSector_H),HL
|
||||
LD (FatBuffer.SectorsPerFAT_H),A
|
||||
; LD (FatBuffer.FAT1_SEC_H),HL ; high word first sector FAT #1
|
||||
; LD (FatBuffer.RootDirFirstSector_H),HL
|
||||
; LD (FatBuffer.SectorsPerFAT_H),A
|
||||
;
|
||||
PUSH HL
|
||||
POP IX
|
||||
@ -390,6 +405,12 @@ GET_BPB: XOR A
|
||||
LD BC,ZERO_SECTOR_OF_BPB.Size
|
||||
LDIR
|
||||
;
|
||||
; -bug: ¯¥à¥á¥ç¥¨¥ ¡ãä¥à®¢ FAT ¨ SYSTEM.DOS, ¡ £ ®â९®à⨫ Vasil Ivanov
|
||||
LD BC,1*256 + BIOS.GetMem
|
||||
RST ToBIOS_18 ;GET PAGE FOR DOS
|
||||
LD (READ_FAT_TABLE.FAT_PAGE),A
|
||||
;
|
||||
;
|
||||
LD A,(DRIVE)
|
||||
LD B,A
|
||||
AND #F0
|
||||
@ -427,7 +448,7 @@ GET_BPB: XOR A
|
||||
CP #F0
|
||||
RET C
|
||||
;
|
||||
LD HL,(BOOT_BUFFER + BOOT_SECTOR.BytesPerSector)
|
||||
;LD HL,(BOOT_BUFFER + BOOT_SECTOR.BytesPerSector)
|
||||
LD A,(BOOT_BUFFER + BOOT_SECTOR.SectorsPerCluster)
|
||||
LD (FatBuffer.SectorsPerCluster),A
|
||||
; calc. first sector FAT
|
||||
@ -625,8 +646,8 @@ GET_BPB: XOR A
|
||||
OR E
|
||||
JR NZ,.its_FAT32
|
||||
; DE=0
|
||||
LD (FatBuffer.RootDirStartCluster_L),DE
|
||||
LD (FatBuffer.RootDirStartCluster_H),DE
|
||||
; LD (FatBuffer.RootDirStartCluster_L),DE
|
||||
; LD (FatBuffer.RootDirStartCluster_H),DE
|
||||
LD HL,4084
|
||||
SBC HL,BC
|
||||
LD A,FAT_TYPE.x12
|
||||
@ -786,9 +807,9 @@ GETROOT: LD HL,(FatBuffer.RootDirStartCluster_L)
|
||||
LD BC,1
|
||||
; [x] 28/04/2024. Bug with incorrect reading root dir. Reported by Roman "Romychs" Boykov.
|
||||
ADD IX,BC
|
||||
ADC HL,BC
|
||||
DEC HL
|
||||
;
|
||||
JR NC,.no_inc_HL
|
||||
INC HL
|
||||
.no_inc_HL: ;
|
||||
DEC A
|
||||
JR NZ,.NEXT_SECTOR
|
||||
RET
|
||||
@ -870,7 +891,7 @@ LOAD_CORE: LD (READMEM),DE
|
||||
;.skip_it: ;
|
||||
LD DE,(READMEM)
|
||||
LD A,(BOOT_BUFFER + BOOT_SECTOR.SectorsPerCluster)
|
||||
.max_sectors+1: CP #20
|
||||
.max_sectors+1: CP MAX_SECTORS_PER_PAGE
|
||||
JR C,.SMALL_CLUSTER
|
||||
;
|
||||
.subload: LD A,(.max_sectors)
|
||||
@ -1082,7 +1103,7 @@ READ_FAT_TABLE: PUSH HL
|
||||
;
|
||||
IN A,(SLOT3)
|
||||
PUSH AF
|
||||
LD A,SHARED_PAGE
|
||||
.FAT_PAGE+1: LD A,0
|
||||
OUT (SLOT3),A
|
||||
;
|
||||
LD A,(FatBuffer.FAT_TYPE)
|
||||
@ -1151,7 +1172,7 @@ READ_FROM_FAT: PUSH HL
|
||||
;
|
||||
IN A,(SLOT3)
|
||||
PUSH AF
|
||||
LD A,SHARED_PAGE
|
||||
LD A,(READ_FAT_TABLE.FAT_PAGE)
|
||||
OUT (SLOT3),A
|
||||
;
|
||||
LD A,(FatBuffer.FAT_TYPE)
|
||||
@ -1277,6 +1298,7 @@ PARTITION_START_H EQU FSIZE1+2
|
||||
PARTITION_START_L EQU PARTITION_START_H+2
|
||||
READMEM EQU PARTITION_START_L+2
|
||||
;BIG_CORE EQU READMEM+2
|
||||
;FAT_PAGE EQU READMEM+2
|
||||
|
||||
|
||||
|
||||
|
||||
@ -637,8 +637,8 @@ messages: db 0
|
||||
db major_version + '0','.'
|
||||
db (minor_version / 10) + '0',(minor_version % 10) + '0','.'
|
||||
db "\r\nBuild date ",SYS_BUILD_DATE
|
||||
db "\r\nCopyright (c) 2006 Vasil Ivanov."
|
||||
db "\r\nCopyright (c) 2023-2025 Sprinter Team."
|
||||
;db "\r\nCopyright (c) 2006 Vasil Ivanov."
|
||||
db "\r\nCopyright (c) Sprinter Team."
|
||||
db "\r\n\n",0
|
||||
;
|
||||
db "System successfully installed on disk " ;1
|
||||
|
||||
@ -548,11 +548,19 @@ LOADDIR: ;!TODO optimize
|
||||
CP B
|
||||
JR NC,.RTD1
|
||||
LD B,A ; ç¨á«® ᥪâ®à®¢
|
||||
.RTD1: LD A,(CORE_BUFFERS.FS_Buffer.DRIVE) ; ®¬¥à ¤¨áª
|
||||
.RTD1: PUSH AF ; 21/04/2025 fix ¬ãá®à ¢ áâà ¨æ¥ ª â «®£ , ¥á«¨ ª â «®£ ¬¥ìè¥ áâà ¨æë
|
||||
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE) ; ®¬¥à ¤¨áª
|
||||
LD DE,DIRPAGE.buffer ; ¡ãä¥à
|
||||
LD C,Dss.DRV.Read ; ç⥨¥ ᥪâ®à®¢
|
||||
RST ToDSS.DRV
|
||||
POP AF
|
||||
; !FIXIT ¥â ¯à®¢¥àª¨ ®è¨¡ªã
|
||||
; 21/04/2025 fix ¬ãá®à ¢ áâà ¨æ¥ ª â «®£ , ¥á«¨ ª â «®£ ¬¥ìè¥ áâà ¨æë
|
||||
POP AF
|
||||
JR NC,.exit
|
||||
XOR A
|
||||
LD (DE),A
|
||||
;
|
||||
.exit: POP AF
|
||||
OUT (SLOT3),A
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
@ -1 +1 @@
|
||||
34
|
||||
35
|
||||
@ -156,6 +156,5 @@ MOUSE_BAUD:
|
||||
|
||||
;
|
||||
;----------------------------------------------------;
|
||||
; <EFBFBD>ЈЌ ЈЅ, стЅЊ хр Јтся Ђ тЎЉ ІЅ стр ЈцЅ!
|
||||
SUBLOAD_SIZE EQU 2 ; ª®«-¢® ᥪâ®à®¢ ª®â®à®¥ ¤® ¯®¤£à㧨âì ¯®á«¥ § £à㧪¨ system.dos ¢ áâà ¨æã
|
||||
;----------------------------------------------------;
|
||||
|
||||
@ -1 +1 @@
|
||||
Subproject commit 040541dcbc42338505524aae36b43aecca4dee47
|
||||
Subproject commit e0dd54cb5615a23ea55bd217578aab57481fcf77
|
||||
Loading…
Reference in New Issue
Block a user