BOOT: Fixed a bug that caused the inability to boot from a FAT32 partition.

This commit is contained in:
Tolik 2025-04-19 03:46:13 +10:00 committed by Tolik
parent fb13b0231b
commit fba891fcf5
8 changed files with 91 additions and 13 deletions

View File

@ -40,7 +40,7 @@ LOADER_IN_BPB:
DRIVE: _mSYSID DRIVE: _mSYSID
DI DI
; ;!TEST 26/03/2024 ; ;!TEST 26/03/2024
; LD SP,#C000 LD SP,#C000
; ; ; ;
LD (DRIVE),A LD (DRIVE),A
;[ ] 17.12.2023 § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£® ;[ ] 17.12.2023 § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£®
@ -131,9 +131,9 @@ PRINTX: CP "\r" ;
;R01 End ;R01 End
MESSAGES:; 0 10 20 30 40 50 60 70 80 MESSAGES:; 0 10 20 30 40 50 60 70 80
.FAILURE: DB "\r\nFatal error! Press RESET to restart.\r\n",0
.INCORR: DB "\r\nOld BIOS version.\r\n",0 .INCORR: DB "\r\nOld BIOS version.\r\n",0
.ERRPART: DB "\r\nUnknown partition table.",0 .ERRPART: DB "\r\nUnknown partition table.",0
.FAILURE: DB "\r\nFatal error! Press RESET to restart.\r\n",0
.ERRIBPB: DB "\r\nInvalid BOOT sector.",0 .ERRIBPB: DB "\r\nInvalid BOOT sector.",0
.NO_SYS: DB "\r\nCan't open SYSTEM.DOS...",0 .NO_SYS: DB "\r\nCan't open SYSTEM.DOS...",0
.NOSHELL: DB "\r\nCan't open SYSTEM.EXE...",0 .NOSHELL: DB "\r\nCan't open SYSTEM.EXE...",0
@ -401,7 +401,8 @@ GET_BPB: XOR A
;[ ] 17.12.2023 § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£® ;[ ] 17.12.2023 § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£®
LD (DRIVE+1),HL LD (DRIVE+1),HL
; ;
.NX1: CP #00 .NX1: ;CP #00
AND A
JR NZ,.NX2 JR NZ,.NX2
; ;
; SET_PRM if FDD ; SET_PRM if FDD

View File

@ -80,6 +80,7 @@
DEFINE EXEinfoMACRO 0 DEFINE EXEinfoMACRO 0
DEFINE App_EXE_Version 1 DEFINE App_EXE_Version 1
MACRO _mEXEinfo MACRO _mEXEinfo
IF EXEinfoMACRO
BLOCK 10,' ' ; ‚ëà ¢­¨¢ ­¨¥ ¤«ï ªà á¨¢®£® ®â®¡à ¦¥­¨ï ¢ HEX BLOCK 10,' ' ; ‚ëà ¢­¨¢ ­¨¥ ¤«ï ªà á¨¢®£® ®â®¡à ¦¥­¨ï ¢ HEX
BYTE ' Bootloader ' BYTE ' Bootloader '
BYTE ' installer ' BYTE ' installer '
@ -88,13 +89,14 @@
BYTE ' Anatoliy ' BYTE ' Anatoliy '
BYTE ' Belyanskiy. ' BYTE ' Belyanskiy. '
BYTE ' Sprinter Team, ' BYTE ' Sprinter Team, '
BYTE ' 2024 ' BYTE ' 2025 '
ENDIF
ENDM ENDM
; ¢¥àá¨ï ¯à®£à ¬¬ë ; ¢¥àá¨ï ¯à®£à ¬¬ë
major_version equ 2 ; áâ. ­®¬¥à ¢¥àᨨ major_version equ 3 ; áâ. ­®¬¥à ¢¥àᨨ
minor_version equ 1 ; ¬«. ­®¬¥à minor_version equ 0 ; ¬«. ­®¬¥à
;; ;;
SECTORS_OF_LOADER EQU 4 ; ᥪâ®à®¢ § £àã§ç¨ª  SECTORS_OF_LOADER EQU 4 ; ᥪâ®à®¢ § £àã§ç¨ª 
.IN_BPB EQU 1 .IN_BPB EQU 1
@ -636,7 +638,7 @@ messages: db 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-2024 Sprinter Team." db "\r\nCopyright (c) 2023-2025 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

View File

@ -205,7 +205,7 @@ PORTAL.out_DRV: PUSH BC
POP AF POP AF
.ADCALL+1: CALL DISPATCH ; ¯ âç¨âáï ­  INTDISK .ADCALL+1: CALL DISPATCH ; ¯ âç¨âáï ­  INTDISK
JR NC,PORTAL.out_DRV JR NC,PORTAL.out_DRV
XOR DSS_Error.DRV_MASK OR DSS_Error.DRV_MASK
SCF SCF
JP PORTAL.out_DRV JP PORTAL.out_DRV
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////

View File

@ -186,7 +186,6 @@ NMI_0x66: RETN ;JP NMI ;
; ;
RST_10: PUSH HL RST_10: PUSH HL
LD L,C LD L,C
IF SHORT_RSTx10_TABLE IF SHORT_RSTx10_TABLE
;[ ] R09 ;[ ] R09
LD H,A LD H,A
@ -405,7 +404,7 @@ DSS_API_TABLE: ;DS 512 ;,0
INCLUDE "DOS_Proc.asm" INCLUDE "DOS_Proc.asm"
INCLUDE "FS_Module.asm" INCLUDE "FS_Module.asm"
INCLUDE "Procedures.asm" INCLUDE "Procedures.asm"
;INCLUDE "drivers/drv_to_sys_errors.asm" ; !TODO
; [ ] 26/06/2024& read only 64kb cluster ; !TODO cluster 64kb ; [ ] 26/06/2024& read only 64kb cluster ; !TODO cluster 64kb
CHECK_64kb_CLUSTER: CHECK_64kb_CLUSTER:

View File

@ -1 +1 @@
33 34

View File

@ -0,0 +1,76 @@
; 19/04/2025  ¢â®¯¥à¥¢®¤ ­®¬¥à  ®è¨¡ª¨ DRV/BIOS ¢ SYS
DRV_ERROR_TO_SYS:
RET NC
RLA
JR NC,.no_correction
;
PUSH HL
PUSH AF
;
SRL A
CP .Size
LD HL,.TABLE
ADD A,L
JR NC,.no_inc
;
INC H
.no_inc: LD L,A
LD L,(HL)
POP AF
LD A,L
POP HL
RET
;
.no_correction: RRA
RET
.TABLE: DB DSS_Error.sys.Unknown_Error ;BIOS.Error.NoErrors ; 0
DB DSS_Error.sys.INVALID_FUNCTION ;BIOS.Error.InvalidSubFunction ; 1
DB DSS_Error.sys.INVALID_DRIVE ;BIOS.Error.BadNumber ; 2
DB DSS_Error.sys.UNKNOWN_FORMAT ;BIOS.Error.UnknownDevice ; 3
DB DSS_Error.sys.NOT_READY ;BIOS.Error.NotReady ; 4
DB DSS_Error.sys.SEEK_ERROR ;BIOS.Error.Seek ; 5
DB DSS_Error.sys.SECTOR_NOT_FOUND ;BIOS.Error.SectorNotFound ; 6
DB DSS_Error.sys.CRC_ERROR ;BIOS.Error.CRC ; 7
DB DSS_Error.sys.WRITE_PROTECT ;BIOS.Error.WriteProtect ; 8
DB DSS_Error.sys.READ_ERROR ;BIOS.Error.Read ; 9
DB DSS_Error.sys.WRITE_ERROR ;BIOS.Error.Write ; 10
DB DSS_Error.sys.DRIVE_FAILURE ;BIOS.Error.Failure ; 11
DB DSS_Error.sys.BUSY_NO_MEDIA ;BIOS.Error.Busy ; 12
DB DSS_Error.sys.Unknown_Error ;#8D ; 13
DB DSS_Error.sys.Unknown_Error ;#8E ; 14
DB DSS_Error.sys.Unknown_Error ;#8F ; 15
DB DSS_Error.sys.Unknown_Error ;#90 ; 16
DB DSS_Error.sys.Unknown_Error ;#91 ; 17
DB DSS_Error.sys.Unknown_Error ;#92 ; 18
DB DSS_Error.sys.Unknown_Error ;#93 ; 19
DB DSS_Error.sys.Unknown_Error ;#94 ; 20
DB DSS_Error.sys.Unknown_Error ;#95 ; 21
DB DSS_Error.sys.Unknown_Error ;#96 ; 22
DB DSS_Error.sys.Unknown_Error ;#97 ; 23
DB DSS_Error.sys.Unknown_Error ;#98 ; 24
DB DSS_Error.sys.Unknown_Error ;#99 ; 25
DB DSS_Error.sys.Unknown_Error ;#9A ; 26
DB DSS_Error.sys.Unknown_Error ;#9B ; 27
DB DSS_Error.sys.Unknown_Error ;#9C ; 28
DB DSS_Error.sys.Unknown_Error ;#9D ; 29
DB DSS_Error.sys.Unknown_Error ;#9E ; 30
DB DSS_Error.sys.NOT_SUPPORTED ;BIOS.Error.NotSupported ; 31
DB DSS_Error.sys.Unknown_Error ;BIOS.Error.ATAPI.NoSence ; 32
DB DSS_Error.sys.Unknown_Error ;BIOS.Error.ATAPI.RecoveredError; 33
DB DSS_Error.sys.NOT_READY ;BIOS.Error.ATAPI.NotReady ; 34
DB DSS_Error.sys.BUSY_NO_MEDIA ;BIOS.Error.ATAPI.MediumError ; 35
DB DSS_Error.sys.DRIVE_FAILURE ;BIOS.Error.ATAPI.HardwareError ; 36
DB DSS_Error.sys.INVALID_ACCESS ;BIOS.Error.ATAPI.IllegalRequest; 37
DB DSS_Error.sys.MEDIA_CHANGED ;BIOS.Error.ATAPI.UnitAttention ; 38
DB DSS_Error.sys.ACCESS_DENIED ;BIOS.Error.ATAPI.DataProtect ; 39
DB DSS_Error.sys.Unknown_Error ;BIOS.Error.ATAPI; ; 40
DB DSS_Error.sys.Unknown_Error ;BIOS.Error.ATAPI; ; 41
DB DSS_Error.sys.Unknown_Error ;BIOS.Error.ATAPI; ; 42
DB DSS_Error.sys.NOT_READY ;BIOS.Error.ATAPI.AbortedCommand; 43
DB DSS_Error.sys.Unknown_Error ;BIOS.Error.ATAPI; ; 44
DB DSS_Error.sys.Unknown_Error ;BIOS.Error.ATAPI; ; 45
DB DSS_Error.sys.WRITE_ERROR ;BIOS.Error.ATAPI.Miscompare ; 46
DB DSS_Error.sys.Unknown_Error ;BIOS.Error.ATAPI; ; 47
DB DSS_Error.sys.NOT_READY ;BIOS.Error.ATAPI.TimeOut ; 48
.Size EQU .TABLE - $

View File

@ -1 +1 @@
503 504

@ -1 +1 @@
Subproject commit 5a36cbee9ca6df7f7c1008fed7f242d0a505bc50 Subproject commit 040541dcbc42338505524aae36b43aecca4dee47