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 ;RESERVED ;07
WRITE_OUTI_DUPs EQU 32 ; bytes
HDD_5x.RESET: ; !FIXIT ­¥ à¥á¥â¨âáï?
;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.
@ -448,13 +452,14 @@ WRS000:
EX AF,AF'
PUSH AF
PUSH DE
IF HDDwriteProtect
PUSH BC
;!FIXIT write protect - remove
LD D,#1D ;!!!!! CMOS £«ï­ãâì
LD D,#1D ;!HARDCODE CMOS Write Protect
CALL CMOS_RD
POP BC
AND 1
JR Z,NOWP
JR Z,NO_WriteProtect
POP HL
POP AF
EX AF,AF'
@ -462,8 +467,9 @@ WRS000:
LD A,8 ;WRITE PROTECT
SCF
RET
;
NOWP CALL PRESET
ENDIF
NO_WriteProtect:
CALL PRESET
POP HL
POP AF
LD XL,0
@ -486,9 +492,10 @@ WRS002: EXX
OUT (SLOT3),A
LD BC,IDE.Write.Data
LD D,#20
;LD D,#20
LD D,512/WRITE_OUTI_DUPs
WRS003:
DUP 16
DUP WRITE_OUTI_DUPs
OUTI
EDUP
DEC D
@ -615,7 +622,6 @@ PRESET: LD A,B
RET
; HL:DE - SECTOR OFFSET
LBA_CHS:
LD C,(IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderLow)
LD B,(IY+IDE.HDD_INIT_TABLE.SectorsPerCylinderHigh)

View File

@ -8,7 +8,23 @@
; DEFINE SPTeam_year '2022'
; DEFINE Disk_subsystem_ver_txt '3.05'
; 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
local date, month, year = Get_date_RU(sj.get_define("__DATE__"))
@ -22,37 +38,46 @@
LUA PASS1
SettingsTabsOrder = {
[1]={
"Lang",
"MemTest",
"SaveRAMdrvs",
"UpdBios",
"StartDelay",
"TypRate",
"TypDelay",
"RebootMsg",
"SysDsk",
"AltSysDsk",
"FddFirst",
"FddSecond",
"PriIdeMA",
"PriIdeSl",
"SecIdeMA",
"SecIdeSl",
"HddWrPr",
"Lang", -- 1
"MemTest", -- 2
"SaveRAMdrvs", -- 3
"UpdBios", -- 4
"StartDelay", -- 5
"TypRate", -- 6
"TypDelay", -- 7
"RebootMsg", -- 8
"SysDsk", -- 9
"AltSysDsk", -- 10
"FddFirst", -- 11
"FddSecond", -- 12
"PriIdeMA", -- 13
"PriIdeSl", -- 14
"SecIdeMA", -- 15
"SecIdeSl", -- 16
-- 17
},
[2]={
"ScreenY",
"ScreenX",
"FrameInt",
"VSync",
"QuickStartROM",
"TrDosA",
"TrDosB",
"TrDosC",
"TrDosD",
--"SetTime",
"ScreenY", -- 1
"ScreenX", -- 2
"FrameInt", -- 3
"VSync", -- 4
"QuickStartROM", -- 5
"TrDosA", -- 6
"TrDosB", -- 7
"TrDosC", -- 8
"TrDosD", -- 9
"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
;
@ -61,15 +86,6 @@
@.itemName? EQU $
DEFINE TmpDef itemName?
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 column,line = get_key_for_value(SettingsTabsOrder, tmpName)
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.valDash6
IF HDDwriteProtect
_mSETitemParams HddWrPr
DW OnChangeAction.nothing
IF NEW_FEATURE : DB paramLine : ENDIF
@ -324,6 +341,7 @@ SettingsItemsTabs:
DB #1D,%0000'0001,%0000'0001
DB msgStrings.valDisabled
DB msgStrings.valEnabled
ENDIF
_mSETitemParams ScreenY
DW OnChangeAction.setXYpos
@ -581,7 +599,9 @@ msgStrings:
_mSetStr parPriIdeSl, tmp_Counter : DZ 'Primary IDE Slave : '
_mSetStr parSecIdeMA, tmp_Counter : DZ 'Secondary IDE Master : '
_mSetStr parSecIdeSl, tmp_Counter : DZ 'Secondary IDE Slave : '
IF HDDwriteProtect
_mSetStr parHddWrPr, tmp_Counter : DZ 'HDD Write protect : '
ENDIF
_mSetStr parScreenY, tmp_Counter : DZ 'Y-Screen position : '
_mSetStr valMinus7, tmp_Counter : DZ '-7'
_mSetStr valMinus6, tmp_Counter : DZ '-6'
@ -727,7 +747,9 @@ msgRusStrings:
_mSetStrRus parPriIdeSl, tmp_Counter : DZ 'Primary IDE Slave : '
_mSetStrRus parSecIdeMA, tmp_Counter : DZ 'Secondary IDE Master : '
_mSetStrRus parSecIdeSl, tmp_Counter : DZ 'Secondary IDE Slave : '
IF HDDwriteProtect
_mSetStrRus parHddWrPr, tmp_Counter : DZ ' é¨â  § ¯¨á¨ ­  HDD : '
ENDIF
_mSetStrRus parScreenY, tmp_Counter : DZ '¤¢¨£ íªà ­  ¯® Y : '
_mSetStrRus valMinus7, tmp_Counter : DZ '-7'
_mSetStrRus valMinus6, tmp_Counter : DZ '-6'

View File

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