ctrl for boot recovery

This commit is contained in:
Tolik 2024-07-05 03:38:58 +10:00
parent 95e6385690
commit ed203cce4f
6 changed files with 135 additions and 107 deletions

View File

@ -651,13 +651,21 @@ CHEKOK: ;CALL ScreenPOS.GET_CUR
JR INFO_MESSAGE
CMOS_ABSENT:
CALL POSTMSG
INFO_MESSAGE: ;!FIXIT ­ §¢ ­¨¥ ­¥¯à ¢¨«ì­®¥
INFO_MESSAGE:
; <ALT> For alternative boot
LD DE,#0428
CALL LP_SET_PLACE
LD A,msgStrings.forCtrlBootButton
LD E,COLORS.CGA.INC.WHITE
CALL POSTMSC
; <CTRL> 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 <CTRL for Recover>
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 <CTRL for Recover>
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

View File

@ -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

View File

@ -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 ; <20> §¢ ­¨¥ ¯ à ¬¥âà 
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 ; <20> §¢ ­¨¥ ¯ à ¬¥âà 
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 '<DEL> to enter SETUP'
_mSetStr forAltBootButton, tmp_Counter : DZ '<ALT> for Alternative boot'
_mSetStr forCtrlBootButton, tmp_Counter : DZ '<CTRL> for Recovery boot'
_mSetStr forAltBootButton, tmp_Counter : DZ '<ALT> 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 '<DEL> ¤«ï ¢å®¤  ¢ SETUP'
_mSetStrRus forAltBootButton, tmp_Counter : DZ '<ALT> ¤«ï «ìâ¥à­ â¨¢­®© § £à㧪¨'
_mSetStrRus forCtrlBootButton, tmp_Counter : DZ '<CTRL> ¤«ï § £à㧪¨ Recovery'
_mSetStrRus forAltBootButton, tmp_Counter : DZ '<ALT> ¤«ï «ìâ¥à­ â¨¢­®© § £à㧪¨'
_mSetStrRus cmosChecksumErr, tmp_Counter : DZ '<EFBFBD>ˆŒ<EFBFBD>ˆ! Ž˜ˆ<EFBFBD>Š ŠŽ<EFBFBD><EFBFBD>Žœ<EFBFBD>Ž ŒŒ CMOS, <EFBFBD>Ž<EFBFBD> <EFBFBD><EFBFBD>ˆŸ <EFBFBD>Ž ŒŽ<EFBFBD>ˆž'
_mSetStrRus cmosDateTimeErr, tmp_Counter : DZ '<EFBFBD>ˆŒ<EFBFBD>ˆ! Ž˜ˆ<EFBFBD>Š /<EFBFBD>Œ<EFBFBD>ˆ CMOS, <EFBFBD>Ž<EFBFBD> <EFBFBD><EFBFBD>ˆŸ <EFBFBD>Ž ŒŽ<EFBFBD>ˆž'
_mSetStrRus detectIdePrMA, tmp_Counter : DZ ' Ž¯à¥¤¥«ï¥¬ <EFBFBD>¥à¢¨ç­ë© IDE Master ... [F4 ¤«ï ¯à®¯ã᪠] '

View File

@ -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

Binary file not shown.

View File

@ -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
;---------------------------------------