diff --git a/src/bios/rom/SETUP/MAIN.asm b/src/bios/rom/SETUP/MAIN.asm index 4c8d145..3598fb3 100644 --- a/src/bios/rom/SETUP/MAIN.asm +++ b/src/bios/rom/SETUP/MAIN.asm @@ -651,13 +651,21 @@ CHEKOK: ;CALL ScreenPOS.GET_CUR JR INFO_MESSAGE CMOS_ABSENT: CALL POSTMSG -INFO_MESSAGE: ;!FIXIT название неправильное +INFO_MESSAGE: + ; For alternative boot + LD DE,#0428 + CALL LP_SET_PLACE + LD A,msgStrings.forCtrlBootButton + LD E,COLORS.CGA.INC.WHITE + CALL POSTMSC + ; for recovery boot LD DE,#0528 CALL LP_SET_PLACE LD A,msgStrings.forAltBootButton LD E,COLORS.CGA.INC.WHITE CALL POSTMSC + POP DE CALL LP_SET_PLACE @@ -666,12 +674,18 @@ INFO_MESSAGE: ;!FIXIT CALL CONFIGURE_IDE_DRIVES.START CALL CTRLKEY LD A,B - AND #10 - JR NZ,ABOOT - + ; [ ] 05/07/2024 + BIT X_CTRL,A + LD BC,#FFFF ; маркер для PrepareToBOOT, чтоб грузил Recovery + JR NZ,RECOVERY_BOOT + ; + BIT X_ALT,A + JR NZ,ALT_BOOT + ; CALL TSETUP - + ; LD BC,CMOS_CELL.BootDrives.Mask.SysDisk ;#0710 +RECOVERY_BOOT: CALL PrepareToBOOT LD A,msgStrings.bootFail LD E,COLORS.CGA.INC.LRED @@ -679,7 +693,8 @@ INFO_MESSAGE: ;!FIXIT CALL ScreenPOS.CRLF ; CALL INT_ON -ABOOT: LD A,msgStrings.bootAltDrv +ALT_BOOT: + LD A,msgStrings.bootAltDrv LD E,COLORS.CGA.INC.LGREEN CALL POSTMSC @@ -703,31 +718,32 @@ ABOOT: LD A,msgStrings.bootAltDrv ;EI CALL INT_ON -AGAKEY: CALL WAITKEY - LD HL,#4F00 ; DEL - go to settings - ;AND A - SBC HL,DE - JR Z,ENTER_SETUP - CP #1B ; ESC - go to zx spectrum mode - JP Z,EXIT_SETUP - CP #0D ; ENTER - restart - JP NZ,AGAKEY - XOR A - JP Start_again +AGAKEY: CALL WAITKEY + LD HL,#4F00 ; DEL - go to settings + ;AND A + SBC HL,DE + JR Z,ENTER_SETUP + ; + CP #1B ; ESC - go to zx spectrum mode + JP Z,EXIT_SETUP + CP #0D ; ENTER - restart + JP NZ,AGAKEY + XOR A + JP Start_again -TSETUP: - CALL SCANKEY - RET Z - LD HL,#4F00 ; DEL - go to settings - AND A - SBC HL,DE - JR Z,ENTER_SETUP - LD HL,#011B - AND A - SBC HL,DE - JR NZ,TSETUP - POP HL ; убираем лишнее - JP EXIT_SETUP +TSETUP: CALL SCANKEY + RET Z + LD HL,#4F00 ; DEL - go to settings + AND A + SBC HL,DE + JR Z,ENTER_SETUP + ; + LD HL,#011B ; ESC + AND A + SBC HL,DE + JR NZ,TSETUP + POP HL ; убираем лишнее + JP EXIT_SETUP ENTER_SETUP: XOR A LD (ITEM_Restore),A @@ -890,43 +906,49 @@ RECOVERYstart: ;[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] ; -PrepareToBOOT: - ;CALL INT_ON - HALT - CALL PORTS_INIT.clean_kbd_buf ;Clearing the keyboard buffer - CALL PORTS_INIT.clean_mouse_buf ;Clearing the mouse buffer - CALL INT_OFF +PrepareToBOOT: ;CALL INT_ON + HALT + CALL PORTS_INIT.clean_kbd_buf ;Clearing the keyboard buffer + CALL PORTS_INIT.clean_mouse_buf ;Clearing the mouse buffer + CALL INT_OFF ; тут не должно быть испорчено значение BC - CALL G_VALUE - LD B,0 - ; FDD - OR A - JR Z,FDSTART ; FDD A: - INC B - DEC A - JR Z,FDSTART ; FDD B: - ; IDE - LD B,#80 - DEC A - JR Z,HDSTART - INC B ;LD B,#81 - DEC A - JR Z,HDSTART - INC B ;LD B,#82 - DEC A - JR Z,HDSTART - INC B ;LD B,#83 - DEC A - JR Z,HDSTART - ; RAM - DEC A - JR Z,RDSTART - ; ROM - DEC A - JP Z,RECOVERYstart - ; Error - SCF - RET + ; [ ] 05/07/2024 + INC BC + LD A,B + OR C + JP Z,RECOVERYstart + DEC BC + ; + CALL G_VALUE + LD B,0 + ; FDD + OR A + JR Z,FDSTART ; FDD A: + INC B + DEC A + JR Z,FDSTART ; FDD B: + ; IDE + LD B,#80 + DEC A + JR Z,HDSTART + INC B ;LD B,#81 + DEC A + JR Z,HDSTART + INC B ;LD B,#82 + DEC A + JR Z,HDSTART + INC B ;LD B,#83 + DEC A + JR Z,HDSTART + ; RAM + DEC A + JR Z,RDSTART + ; ROM + DEC A + JP Z,RECOVERYstart + ; Error + SCF + RET FDSTART: PUSH BC diff --git a/src/bios/rom/SETUP/SETTINGS.asm b/src/bios/rom/SETUP/SETTINGS.asm index b7f90f7..c6fc779 100644 --- a/src/bios/rom/SETUP/SETTINGS.asm +++ b/src/bios/rom/SETUP/SETTINGS.asm @@ -868,6 +868,8 @@ setInt: ld a,CMOS_CELL.ScreenSET jp SETTINGS ENDMODULE ; +;-----------------------------------------------------------------------; +;!FIXIT прибраться тут MEMTEST EQU #80 SAVERAM EQU #40 EXTBIOS EQU #20 @@ -928,6 +930,7 @@ TRD48 EQU #04 BAS48 EQU #05 REBOOTM EQU #02 HDDWP EQU #01 +;-----------------------------------------------------------------------; STYLES: ; Color Style 0 @@ -1013,7 +1016,7 @@ STYLES: DEFVAL: DB SAVERAM+EXTBIOS+SDELAY1 ;X0E - OPTIONS DB TDL250+TRATE30 ;X0F - KEYBOARD - DB SDIDE1+ASDRECOVERY ;X10 - SYSTEM DISKS + DB SDIDE1+SDFDD1 ;X10 - SYSTEM DISKS DB FD1720+FD2720+HD1AUTO+HD2AUTO ;X11 - FDD & Primary HDD's DB 0 ;X12 - CYLINDERS LOW MASTER DB 0 ;X13 - CYLINDERS HIGH MASTER diff --git a/src/bios/rom/SETUP/messages.z80 b/src/bios/rom/SETUP/messages.z80 index 4accc0a..666e0eb 100644 --- a/src/bios/rom/SETUP/messages.z80 +++ b/src/bios/rom/SETUP/messages.z80 @@ -140,27 +140,27 @@ folderLine EQU 1 ENDIF ; -firstColumn EQU 03 ; смещение по X для первого столбца -secondColumn EQU 43 ; смещение по X для второго столбца -firstLine EQU 07 ; смещение по Y для первой строки +firstColumn EQU 03 ; смещение по X для первого столбца +secondColumn EQU 43 ; смещение по X для второго столбца +firstLine EQU 07 ; смещение по Y для первой строки SettingsItemsTabs: _mSETitemParams Lang - DW OnChangeAction.setLang ; действие при изменении - IF NEW_FEATURE : DB paramLine : ENDIF ; тип параметра (строка со значением или каталог) - DB columnNum,lineNum ; столбец, строка - DB paramName ; Название параметра - DB #0E,%0000'0100,%0000'0100 ; CMOS, MASK - DB msgStrings.valLangEng ; 1-й вариант параметра - DB msgStrings.valLangRus ; 2-й вариант параметра + DW OnChangeAction.setLang ; действие при изменении + IF NEW_FEATURE : DB paramLine : ENDIF ; тип параметра (строка со значением или каталог) + DB columnNum,lineNum ; столбец, строка + DB paramName ; Название параметра + DB CMOS_CELL.BootUpParams,%0000'0100,%0000'0100 ; CMOS, MASK + DB msgStrings.valLangEng ; 1-й вариант параметра + DB msgStrings.valLangRus ; 2-й вариант параметра _mSETitemParams MemTest DW OnChangeAction.nothing IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #0E,%1000'0000,%1000'0000 + DB CMOS_CELL.BootUpParams,%1000'0000,%1000'0000 DB msgStrings.valDisabled DB msgStrings.valEnabled @@ -169,7 +169,7 @@ SettingsItemsTabs: IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #0E,%0100'0000,%0100'0000 + DB CMOS_CELL.BootUpParams,%0100'0000,%0100'0000 DB msgStrings.valDisabled DB msgStrings.valEnabled @@ -178,7 +178,7 @@ SettingsItemsTabs: IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #0E,%0010'0000,%0010'0000 + DB CMOS_CELL.BootUpParams,%0010'0000,%0010'0000 DB msgStrings.valDisabled DB msgStrings.valEnabled @@ -187,7 +187,7 @@ SettingsItemsTabs: IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #0E,%0001'1000,%0001'0000 + DB CMOS_CELL.BootUpParams,%0001'1000,%0001'0000 DB msgStrings.valDisabled DB msgStrings.valNormal DB msgStrings.valEnabled @@ -197,7 +197,7 @@ SettingsItemsTabs: IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #0F,%0000'0111,%0000'0111 + DB CMOS_CELL.Typematic,%0000'0111,%0000'0111 DB msgStrings.val_6 DB msgStrings.val_8 DB msgStrings.val_10 @@ -212,7 +212,7 @@ SettingsItemsTabs: IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #0F,%0110'0000,%0110'0000 + DB CMOS_CELL.Typematic,%0110'0000,%0110'0000 DB msgStrings.val_250 DB msgStrings.val_500 DB msgStrings.val_750 @@ -223,7 +223,7 @@ SettingsItemsTabs: IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #1D,%0000'0010,%0000'0010 + DB CMOS_CELL.Options,%0000'0010,%0000'0010 DB msgStrings.valDisabled DB msgStrings.valEnabled @@ -232,7 +232,7 @@ SettingsItemsTabs: IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #10,%0000'0111,%0000'0111 ; !!!!! + DB CMOS_CELL.BootDrives,%0000'0111,%0000'0111 ; !!!!! DB msgStrings.val1stFDD DB msgStrings.val2ndFDD DB msgStrings.val1stIDE @@ -247,7 +247,7 @@ SettingsItemsTabs: IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #10,%0111'0000,%0111'0000 + DB CMOS_CELL.BootDrives,%0111'0000,%0111'0000 DB msgStrings.val1stFDD DB msgStrings.val2ndFDD DB msgStrings.val1stIDE @@ -262,7 +262,7 @@ SettingsItemsTabs: IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #11,%0000'0011,%0000'0000 + DB CMOS_CELL.DrivesSetup_1,%0000'0011,%0000'0000 DB msgStrings.valAuto ; DB msgStrings.val720 ; DB msgStrings.val1440 @@ -273,7 +273,7 @@ SettingsItemsTabs: IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #11,%0000'1100,%0000'0000 + DB CMOS_CELL.DrivesSetup_1,%0000'1100,%0000'0000 DB msgStrings.valAuto ; DB msgStrings.val720 ; DB msgStrings.val1440 @@ -284,7 +284,7 @@ SettingsItemsTabs: IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #11,%0011'0000,%0011'0000 + DB CMOS_CELL.DrivesSetup_1,%0011'0000,%0011'0000 DB msgStrings.valAuto DB msgStrings.valSetup DB msgStrings.valCdRom @@ -295,7 +295,7 @@ SettingsItemsTabs: IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #11,%1100'0000,%1100'0000 + DB CMOS_CELL.DrivesSetup_1,%1100'0000,%1100'0000 DB msgStrings.valAuto DB msgStrings.valSetup DB msgStrings.valCdRom @@ -306,7 +306,7 @@ SettingsItemsTabs: IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #20,%0011'0000,%0011'0000 + DB CMOS_CELL.DrivesSetup_2,%0011'0000,%0011'0000 DB msgStrings.valAuto DB msgStrings.valSetup DB msgStrings.valCdRom @@ -317,7 +317,7 @@ SettingsItemsTabs: IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #20,%1100'0000,%1100'0000 + DB CMOS_CELL.DrivesSetup_2,%1100'0000,%1100'0000 DB msgStrings.valAuto DB msgStrings.valSetup DB msgStrings.valCdRom @@ -329,7 +329,7 @@ SettingsItemsTabs: IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #1D,%0000'0001,%0000'0001 + DB CMOS_CELL.Options,%0000'0001,%0000'0001 DB msgStrings.valDisabled DB msgStrings.valEnabled ENDIF @@ -339,7 +339,7 @@ SettingsItemsTabs: IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #1F,%1111'0000,%1110'0000 + DB CMOS_CELL.ScreenPosition,%1111'0000,%1110'0000 DB msgStrings.valMinus7 DB msgStrings.valMinus6 DB msgStrings.valMinus5 @@ -361,7 +361,7 @@ SettingsItemsTabs: IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #1F,%0000'1111,%0000'1110 + DB CMOS_CELL.ScreenPosition,%0000'1111,%0000'1110 DB msgStrings.valPlus7 DB msgStrings.valPlus6 DB msgStrings.valPlus5 @@ -383,7 +383,7 @@ SettingsItemsTabs: IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #1A,%0011'0000,%0011'0000 + DB CMOS_CELL.ScreenSET,%0011'0000,%0011'0000 DB msgStrings.valDash8 DB msgStrings.valScorpion DB msgStrings.valPentagon @@ -394,7 +394,7 @@ SettingsItemsTabs: IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #1A,%1100'0000,%1000'0000 + DB CMOS_CELL.ScreenSET,%1100'0000,%1000'0000 DB msgStrings.valDash8 DB msgStrings.val312_50 DB msgStrings.val320_49 @@ -404,7 +404,7 @@ SettingsItemsTabs: IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #0E,%0000'0001,%0000'0001 + DB CMOS_CELL.BootUpParams,%0000'0001,%0000'0001 DB msgStrings.valDisabled DB msgStrings.valEnabled @@ -413,7 +413,7 @@ SettingsItemsTabs: IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #1E,%0000'0011,%0000'0010 + DB CMOS_CELL.TRDOSmount,%0000'0011,%0000'0010 DB msgStrings.valDefault DB msgStrings.valFDD DB msgStrings.valHDD @@ -423,7 +423,7 @@ SettingsItemsTabs: IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #1E,%0000'1100,%0000'1000 + DB CMOS_CELL.TRDOSmount,%0000'1100,%0000'1000 DB msgStrings.valDefault DB msgStrings.valFDD DB msgStrings.valHDD @@ -433,7 +433,7 @@ SettingsItemsTabs: IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #1E,%0011'0000,%0010'0000 + DB CMOS_CELL.TRDOSmount,%0011'0000,%0010'0000 DB msgStrings.valDefault DB msgStrings.valFDD DB msgStrings.valHDD @@ -443,7 +443,7 @@ SettingsItemsTabs: IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName - DB #1E,%1100'0000,%1000'0000 + DB CMOS_CELL.TRDOSmount,%1100'0000,%1000'0000 DB msgStrings.valDefault DB msgStrings.valFDD DB msgStrings.valHDD @@ -514,7 +514,8 @@ msgStrings: _mSetStr setupHelpStr3, tmp_Counter : DZ 'F5 : Old Values PU/PD/+/- : Modify' _mSetStr setupHelpStr4, tmp_Counter : DZ 'F7 : Default Values F3 : Color ' _mSetStr toSetupButton, tmp_Counter : DZ ' to enter SETUP' - _mSetStr forAltBootButton, tmp_Counter : DZ ' for Alternative boot' + _mSetStr forCtrlBootButton, tmp_Counter : DZ ' for Recovery boot' + _mSetStr forAltBootButton, tmp_Counter : DZ ' for Alternative boot' _mSetStr cmosChecksumErr, tmp_Counter : DZ 'WARNING! CMOS CHECKSUM ERROR, DEFAULT VALUES SET!' _mSetStr cmosDateTimeErr, tmp_Counter : DZ 'WARNING! CMOS DATE/TIME ERROR, DEFAULT VALUES SET!' _mSetStr detectIdePrMA, tmp_Counter : DZ ' Detecting IDE Primary Master ... [Press F4 to skip]' @@ -665,7 +666,8 @@ msgRusStrings: _mSetStrRus setupHelpStr3, tmp_Counter : DZ 'F5 : Старые значения PU/PD/+/- : Изменение' _mSetStrRus setupHelpStr4, tmp_Counter : DZ 'F7 : Значения по умолчанию F3 : Цвета ' _mSetStrRus toSetupButton, tmp_Counter : DZ ' для входа в SETUP' - _mSetStrRus forAltBootButton, tmp_Counter : DZ ' для Альтернативной загрузки' + _mSetStrRus forCtrlBootButton, tmp_Counter : DZ ' для загрузки Recovery' + _mSetStrRus forAltBootButton, tmp_Counter : DZ ' для Альтернативной загрузки' _mSetStrRus cmosChecksumErr, tmp_Counter : DZ 'ВНИМАНИЕ! ОШИБКА КОНТРОЛЬНОЙ СУММЫ CMOS, УСТАНОВЛЕНЫ ЗНАЧЕНИЯ ПО УМОЛЧАНИЮ' _mSetStrRus cmosDateTimeErr, tmp_Counter : DZ 'ВНИМАНИЕ! ОШИБКА ДАТЫ/ВРЕМЕНИ CMOS, УСТАНОВЛЕНЫ ЗНАЧЕНИЯ ПО УМОЛЧАНИЮ' _mSetStrRus detectIdePrMA, tmp_Counter : DZ ' Определяем Первичный IDE Master ... [F4 для пропуска] ' diff --git a/src/bios/shared/DEFINES.INC b/src/bios/shared/DEFINES.INC index 6c248da..150ba86 100644 --- a/src/bios/shared/DEFINES.INC +++ b/src/bios/shared/DEFINES.INC @@ -1,9 +1,6 @@ ; ;---------[All shared defines]---------- DEFINE BETA_BUILD 1 ; добавляет строку и сообщение о тестовой сборке на стартовом экране - IF BETA_BUILD - DEFINE BETA_str_ver 'BETA 3' - ENDIF DEFINE PACKED_MAIN 0 ; паковать MAIN или влезает без этого? DEFINE SP2000_Loader_Flag #0107 DEFINE IDE_Optimization 1 ; слегка оптимизирует некоторые процедуры работы с HDD diff --git a/src/bios/shared/RECOVERY.IMG b/src/bios/shared/RECOVERY.IMG index bcb3770..9e7f4fe 100755 Binary files a/src/bios/shared/RECOVERY.IMG and b/src/bios/shared/RECOVERY.IMG differ diff --git a/src/bios/shared/VERSION.inc b/src/bios/shared/VERSION.inc index c418309..b0bbaa9 100644 --- a/src/bios/shared/VERSION.inc +++ b/src/bios/shared/VERSION.inc @@ -6,6 +6,10 @@ EXP_ID: BIOS_ver_hex EQU EXP_ID.VER*256+EXP_ID.MOD DEFINE BIOS_ver_string '0'+EXP_ID.VER, '.', '0'+EXP_ID.MOD/10, '0'+EXP_ID.MOD-(EXP_ID.MOD/10)*10 + + IF BETA_BUILD + DEFINE BETA_str_ver 'BETA 4' + ENDIF ;---------------------------------------