added "HDDwriteProtect" define

This commit is contained in:
Anatoliy Belyanskiy 2023-07-11 20:49:58 +10:00
parent 5dce9279bc
commit d3467450ac
3 changed files with 226 additions and 196 deletions

View File

@ -73,6 +73,10 @@ IDE3 EQU #C1D8
; DB #FF ;SECTOR PER CYLINDER HIGH ;06 ; DB #FF ;SECTOR PER CYLINDER HIGH ;06
; DB #FF ;RESERVED ;07 ; DB #FF ;RESERVED ;07
WRITE_OUTI_DUPs EQU 32 ; bytes
HDD_5x.RESET: ; !FIXIT ­¥ à¥á¥â¨âáï? HDD_5x.RESET: ; !FIXIT ­¥ à¥á¥â¨âáï?
;For non-ATAPI drives, the only method a driver has of resetting a drive ;For non-ATAPI drives, the only method a driver has of resetting a drive
; after a major error is to do a "software reset" on the bus. ; after a major error is to do a "software reset" on the bus.
@ -448,13 +452,14 @@ WRS000:
EX AF,AF' EX AF,AF'
PUSH AF PUSH AF
PUSH DE PUSH DE
IF HDDwriteProtect
PUSH BC PUSH BC
;!FIXIT write protect - remove LD D,#1D ;!HARDCODE CMOS Write Protect
LD D,#1D ;!!!!! CMOS £«ï­ãâì
CALL CMOS_RD CALL CMOS_RD
POP BC POP BC
AND 1 AND 1
JR Z,NOWP JR Z,NO_WriteProtect
POP HL POP HL
POP AF POP AF
EX AF,AF' EX AF,AF'
@ -462,8 +467,9 @@ WRS000:
LD A,8 ;WRITE PROTECT LD A,8 ;WRITE PROTECT
SCF SCF
RET RET
; ENDIF
NOWP CALL PRESET NO_WriteProtect:
CALL PRESET
POP HL POP HL
POP AF POP AF
LD XL,0 LD XL,0
@ -486,9 +492,10 @@ WRS002: EXX
OUT (SLOT3),A OUT (SLOT3),A
LD BC,IDE.Write.Data LD BC,IDE.Write.Data
LD D,#20 ;LD D,#20
LD D,512/WRITE_OUTI_DUPs
WRS003: WRS003:
DUP 16 DUP WRITE_OUTI_DUPs
OUTI OUTI
EDUP EDUP
DEC D DEC D
@ -615,7 +622,6 @@ PRESET: LD A,B
RET RET
; HL:DE - SECTOR OFFSET ; HL:DE - SECTOR OFFSET
LBA_CHS: LBA_CHS:
LD C,(IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderLow) LD C,(IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderLow)
LD B,(IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderHigh) LD B,(IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderHigh)

View File

@ -8,7 +8,23 @@
; DEFINE SPTeam_year '2022' ; DEFINE SPTeam_year '2022'
; DEFINE Disk_subsystem_ver_txt '3.05' ; DEFINE Disk_subsystem_ver_txt '3.05'
; DEFINE SetupVer '2.55' ; DEFINE SetupVer '2.55'
LUA ALLPASS
function get_key_for_value(t, value)
for column=1,2 do
for line,name in pairs(t[column]) do
if name==value then return column,line end
end
end
return nil
end
function DeleteValueByDEFINE (t,zero_def,value)
if tonumber(sj.get_define(zero_def)) then
local delCol, delLine = get_key_for_value(t, value)
table.remove (t[delCol], delLine)
end
end
ENDLUA
LUA PASS1 LUA PASS1
local date, month, year = Get_date_RU(sj.get_define("__DATE__")) local date, month, year = Get_date_RU(sj.get_define("__DATE__"))
@ -22,37 +38,46 @@
LUA PASS1 LUA PASS1
SettingsTabsOrder = { SettingsTabsOrder = {
[1]={ [1]={
"Lang", "Lang", -- 1
"MemTest", "MemTest", -- 2
"SaveRAMdrvs", "SaveRAMdrvs", -- 3
"UpdBios", "UpdBios", -- 4
"StartDelay", "StartDelay", -- 5
"TypRate", "TypRate", -- 6
"TypDelay", "TypDelay", -- 7
"RebootMsg", "RebootMsg", -- 8
"SysDsk", "SysDsk", -- 9
"AltSysDsk", "AltSysDsk", -- 10
"FddFirst", "FddFirst", -- 11
"FddSecond", "FddSecond", -- 12
"PriIdeMA", "PriIdeMA", -- 13
"PriIdeSl", "PriIdeSl", -- 14
"SecIdeMA", "SecIdeMA", -- 15
"SecIdeSl", "SecIdeSl", -- 16
"HddWrPr", -- 17
}, },
[2]={ [2]={
"ScreenY", "ScreenY", -- 1
"ScreenX", "ScreenX", -- 2
"FrameInt", "FrameInt", -- 3
"VSync", "VSync", -- 4
"QuickStartROM", "QuickStartROM", -- 5
"TrDosA", "TrDosA", -- 6
"TrDosB", "TrDosB", -- 7
"TrDosC", "TrDosC", -- 8
"TrDosD", "TrDosD", -- 9
--"SetTime", "SetTime", -- 10 DEFINES.INC --> NEW_FEATURE
"HddWrPr", -- 11 DEFINES.INC --> HDDwriteProtect
-- 12
-- 13
-- 14
-- 15
-- 16
-- 17
} }
} }
DeleteValueByDEFINE(SettingsTabsOrder,"NEW_FEATURE","SetTime")
DeleteValueByDEFINE(SettingsTabsOrder,"HDDwriteProtect","HddWrPr")
ENDLUA ENDLUA
; ;
@ -61,15 +86,6 @@
@.itemName? EQU $ @.itemName? EQU $
DEFINE TmpDef itemName? DEFINE TmpDef itemName?
LUA ALLPASS LUA ALLPASS
function get_key_for_value(t, value)
for column=1,2 do
for line,name in pairs(t[column]) do
if name==value then return column,line end
end
end
return nil
end
local tmpName = sj.get_define("TmpDef") local tmpName = sj.get_define("TmpDef")
local column,line = get_key_for_value(SettingsTabsOrder, tmpName) local column,line = get_key_for_value(SettingsTabsOrder, tmpName)
if (column == nil or line == nil) then sj.error("Settings Tab not found",tmpName) end if (column == nil or line == nil) then sj.error("Settings Tab not found",tmpName) end
@ -316,6 +332,7 @@ SettingsItemsTabs:
DB msgStrings.valCdRom DB msgStrings.valCdRom
DB msgStrings.valDash6 DB msgStrings.valDash6
IF HDDwriteProtect
_mSETitemParams HddWrPr _mSETitemParams HddWrPr
DW OnChangeAction.nothing DW OnChangeAction.nothing
IF NEW_FEATURE : DB paramLine : ENDIF IF NEW_FEATURE : DB paramLine : ENDIF
@ -324,6 +341,7 @@ SettingsItemsTabs:
DB #1D,%0000'0001,%0000'0001 DB #1D,%0000'0001,%0000'0001
DB msgStrings.valDisabled DB msgStrings.valDisabled
DB msgStrings.valEnabled DB msgStrings.valEnabled
ENDIF
_mSETitemParams ScreenY _mSETitemParams ScreenY
DW OnChangeAction.setXYpos DW OnChangeAction.setXYpos
@ -581,7 +599,9 @@ msgStrings:
_mSetStr parPriIdeSl, tmp_Counter : DZ 'Primary IDE Slave : ' _mSetStr parPriIdeSl, tmp_Counter : DZ 'Primary IDE Slave : '
_mSetStr parSecIdeMA, tmp_Counter : DZ 'Secondary IDE Master : ' _mSetStr parSecIdeMA, tmp_Counter : DZ 'Secondary IDE Master : '
_mSetStr parSecIdeSl, tmp_Counter : DZ 'Secondary IDE Slave : ' _mSetStr parSecIdeSl, tmp_Counter : DZ 'Secondary IDE Slave : '
IF HDDwriteProtect
_mSetStr parHddWrPr, tmp_Counter : DZ 'HDD Write protect : ' _mSetStr parHddWrPr, tmp_Counter : DZ 'HDD Write protect : '
ENDIF
_mSetStr parScreenY, tmp_Counter : DZ 'Y-Screen position : ' _mSetStr parScreenY, tmp_Counter : DZ 'Y-Screen position : '
_mSetStr valMinus7, tmp_Counter : DZ '-7' _mSetStr valMinus7, tmp_Counter : DZ '-7'
_mSetStr valMinus6, tmp_Counter : DZ '-6' _mSetStr valMinus6, tmp_Counter : DZ '-6'
@ -727,7 +747,9 @@ msgRusStrings:
_mSetStrRus parPriIdeSl, tmp_Counter : DZ 'Primary IDE Slave : ' _mSetStrRus parPriIdeSl, tmp_Counter : DZ 'Primary IDE Slave : '
_mSetStrRus parSecIdeMA, tmp_Counter : DZ 'Secondary IDE Master : ' _mSetStrRus parSecIdeMA, tmp_Counter : DZ 'Secondary IDE Master : '
_mSetStrRus parSecIdeSl, tmp_Counter : DZ 'Secondary IDE Slave : ' _mSetStrRus parSecIdeSl, tmp_Counter : DZ 'Secondary IDE Slave : '
IF HDDwriteProtect
_mSetStrRus parHddWrPr, tmp_Counter : DZ ' é¨â  § ¯¨á¨ ­  HDD : ' _mSetStrRus parHddWrPr, tmp_Counter : DZ ' é¨â  § ¯¨á¨ ­  HDD : '
ENDIF
_mSetStrRus parScreenY, tmp_Counter : DZ '¤¢¨£ íªà ­  ¯® Y : ' _mSetStrRus parScreenY, tmp_Counter : DZ '¤¢¨£ íªà ­  ¯® Y : '
_mSetStrRus valMinus7, tmp_Counter : DZ '-7' _mSetStrRus valMinus7, tmp_Counter : DZ '-7'
_mSetStrRus valMinus6, tmp_Counter : DZ '-6' _mSetStrRus valMinus6, tmp_Counter : DZ '-6'

View File

@ -1,18 +1,20 @@
; _________________ ;
;---------[All shared defines]----------\/ \/ ;---------[All shared defines]----------
DEFINE DEBUG 1;| ; ¤®¡ ¢«ï¥â áâப㠨 á®®¡é¥­¨¥ ® â¥á⮢®© ᡮથ ­  áâ à⮢®¬ íªà ­¥ DEFINE DEBUG 1 ; ¤®¡ ¢«ï¥â áâப㠨 á®®¡é¥­¨¥ ® â¥á⮢®© ᡮથ ­  áâ à⮢®¬ íªà ­¥
DEFINE NEW_FEATURE 0;| /\ ; !TODO ¯ã­ªâë ¢ á¥â ¯ DEFINE NEW_FEATURE 0 ; !TODO ¯ã­ªâë ¢ á¥â ¯
DEFINE TEST_INT 1;| \/ \/ ; ’¥áâ®¢ë© ®¡à ¡®â稪 ¯®«ì§®¢ â¥«ì᪮£® INT DEFINE TEST_INT 1 ; ’¥áâ®¢ë© ®¡à ¡®â稪 ¯®«ì§®¢ â¥«ì᪮£® INT
DEFINE PACKED_MAIN 0;| | ; ¯ ª®¢ âì MAIN ¨«¨ ¢«¥§ ¥â ¡¥§ í⮣®? DEFINE PACKED_MAIN 0 ; ¯ ª®¢ âì MAIN ¨«¨ ¢«¥§ ¥â ¡¥§ í⮣®?
DEFINE SP2000_ConfID #FEFF;| ; DEFINE SP2000_ConfID #FEFF ;
DEFINE IDE_Optimization 1;| ; á«¥£ª  ®¯â¨¬¨§¨àã¥â ­¥ª®â®àë¥ ¯à®æ¥¤ãàë à ¡®âë á HDD DEFINE IDE_Optimization 1 ; á«¥£ª  ®¯â¨¬¨§¨àã¥â ­¥ª®â®àë¥ ¯à®æ¥¤ãàë à ¡®âë á HDD
DEFINE NeedSafePort_Y 1;| ============== ; !!!!! ¥á«¨ 0, â® ¢ ०¨¬¥ sp-ᯥªâà㬠 ­¥ª®â®àë¥ ¯à®æ¥¤ãàë ¬®£ãâ § áà âì íªà ­ DEFINE NeedSafePort_Y 1 ; !!!!! ¥á«¨ 0, â® ¢ ०¨¬¥ sp-ᯥªâà㬠 ­¥ª®â®àë¥ ¯à®æ¥¤ãàë ¬®£ãâ § áà âì íªà ­
DEFINE Pashalki 0; \__________________/\ DEFINE Pashalki 0 ;
DEFINE PICTURE_FILE './src/bios/logo/psfathers.bmp';| DEFINE PICTURE_FILE './src/bios/logo/psfathers.bmp'
;____________________________________________________________/
DEFINE RECOVERYrdChooseTYPE 1 ; 1 - RECOVERY ¢á¥£¤  £à㧨âáï ¢ ¤¨áª 15, 2 - ¨é¥âáï ᢮¡®¤­ë© à ¬¤¨áª ¨ ¥á«¨ â ª®£® ­¥â, â® § ­¨¬ ¥âáï 15ë© DEFINE RECOVERYrdChooseTYPE 1 ; 1 - RECOVERY ¢á¥£¤  £à㧨âáï ¢ ¤¨áª 15, 2 - ¨é¥âáï ᢮¡®¤­ë© à ¬¤¨áª ¨ ¥á«¨ â ª®£® ­¥â, â® § ­¨¬ ¥âáï 15ë©
DEFINE RECOVERYmountTYPE 1 ; 1 - ¡ëáâàë© ­¥¬­®£® § å à¤ª®¦¥­ë© ¢ à¨ ­â. 2 - ¡®«¥¥ "¯à ¢¨«ì­ë©" DEFINE RECOVERYmountTYPE 1 ; 1 - ¡ëáâàë© ­¥¬­®£® § å à¤ª®¦¥­ë© ¢ à¨ ­â. 2 - ¡®«¥¥ "¯à ¢¨«ì­ë©"
DEFINE HDDwriteProtect 0
; ‡ ¤¥à¦ª  ¢ ª ¤à å ¯®á«¥ ®âà¨á®¢ª¨ «®£®â¨¯  (0 = 256) ; ‡ ¤¥à¦ª  ¢ ª ¤à å ¯®á«¥ ®âà¨á®¢ª¨ «®£®â¨¯  (0 = 256)
DEFINE LOGO_DELAY_MIN 25 DEFINE LOGO_DELAY_MIN 25
DEFINE LOGO_DELAY_NORM 100 DEFINE LOGO_DELAY_NORM 100