diff --git a/BOOT/DSSBOOT.ASM b/BOOT/DSSBOOT.ASM index d451e3a..3c9381e 100644 --- a/BOOT/DSSBOOT.ASM +++ b/BOOT/DSSBOOT.ASM @@ -40,7 +40,7 @@ LOADER_IN_BPB: DRIVE: _mSYSID DI ; ;!TEST 26/03/2024 - ; LD SP,#C000 + LD SP,#C000 ; ; LD (DRIVE),A ;[ ] 17.12.2023 загрузка с активного раздела, а не с первого @@ -131,9 +131,9 @@ PRINTX: CP "\r" ; ;R01 End 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 .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 .NO_SYS: DB "\r\nCan't open SYSTEM.DOS...",0 .NOSHELL: DB "\r\nCan't open SYSTEM.EXE...",0 @@ -401,7 +401,8 @@ GET_BPB: XOR A ;[ ] 17.12.2023 загрузка с активного раздела, а не с первого LD (DRIVE+1),HL ; -.NX1: CP #00 +.NX1: ;CP #00 + AND A JR NZ,.NX2 ; ; SET_PRM if FDD diff --git a/BOOT/boot.asm b/BOOT/boot.asm index 12a388e..b71bbbb 100644 --- a/BOOT/boot.asm +++ b/BOOT/boot.asm @@ -80,6 +80,7 @@ DEFINE EXEinfoMACRO 0 DEFINE App_EXE_Version 1 MACRO _mEXEinfo + IF EXEinfoMACRO BLOCK 10,' ' ; Выравнивание для красивого отображения в HEX BYTE ' Bootloader ' BYTE ' installer ' @@ -88,13 +89,14 @@ BYTE ' Anatoliy ' BYTE ' Belyanskiy. ' BYTE ' Sprinter Team, ' - BYTE ' 2024 ' + BYTE ' 2025 ' + ENDIF ENDM ; версия программы -major_version equ 2 ; ст. номер версии -minor_version equ 1 ; мл. номер +major_version equ 3 ; ст. номер версии +minor_version equ 0 ; мл. номер ;; SECTORS_OF_LOADER EQU 4 ; секторов загрузчика .IN_BPB EQU 1 @@ -636,7 +638,7 @@ messages: db 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-2024 Sprinter Team." + db "\r\nCopyright (c) 2023-2025 Sprinter Team." db "\r\n\n",0 ; db "System successfully installed on disk " ;1 diff --git a/DSS/DRV-MAIN.ASM b/DSS/DRV-MAIN.ASM index aadbf45..f8ea974 100644 --- a/DSS/DRV-MAIN.ASM +++ b/DSS/DRV-MAIN.ASM @@ -205,7 +205,7 @@ PORTAL.out_DRV: PUSH BC POP AF .ADCALL+1: CALL DISPATCH ; патчится на INTDISK JR NC,PORTAL.out_DRV - XOR DSS_Error.DRV_MASK + OR DSS_Error.DRV_MASK SCF JP PORTAL.out_DRV //////////////////////////////////////////////////////////////////////// diff --git a/DSS/DSS-MAIN.ASM b/DSS/DSS-MAIN.ASM index f1328f4..3c84133 100644 --- a/DSS/DSS-MAIN.ASM +++ b/DSS/DSS-MAIN.ASM @@ -186,7 +186,6 @@ NMI_0x66: RETN ;JP NMI ; ; RST_10: PUSH HL LD L,C - IF SHORT_RSTx10_TABLE ;[ ] R09 LD H,A @@ -405,7 +404,7 @@ DSS_API_TABLE: ;DS 512 ;,0 INCLUDE "DOS_Proc.asm" INCLUDE "FS_Module.asm" INCLUDE "Procedures.asm" - + ;INCLUDE "drivers/drv_to_sys_errors.asm" ; !TODO ; [ ] 26/06/2024& read only 64kb cluster ; !TODO cluster 64kb CHECK_64kb_CLUSTER: diff --git a/DSS/build.txt b/DSS/build.txt index dc7b54a..3e932fe 100644 --- a/DSS/build.txt +++ b/DSS/build.txt @@ -1 +1 @@ -33 \ No newline at end of file +34 \ No newline at end of file diff --git a/DSS/drivers/DRV_TO_SYS_ERRORS.ASM b/DSS/drivers/DRV_TO_SYS_ERRORS.ASM new file mode 100644 index 0000000..437136e --- /dev/null +++ b/DSS/drivers/DRV_TO_SYS_ERRORS.ASM @@ -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 - $ \ No newline at end of file diff --git a/SHELL/build.txt b/SHELL/build.txt index 0316458..fc42ce4 100644 --- a/SHELL/build.txt +++ b/SHELL/build.txt @@ -1 +1 @@ -503 \ No newline at end of file +504 \ No newline at end of file diff --git a/Shared_Includes b/Shared_Includes index 5a36cbe..040541d 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 5a36cbee9ca6df7f7c1008fed7f242d0a505bc50 +Subproject commit 040541dcbc42338505524aae36b43aecca4dee47