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