new macro _mCHECK_SYS_VERSIONS

This commit is contained in:
Anatoliy Belyanskiy 2024-02-11 23:03:18 +10:00
parent b8a215d38a
commit c9539a188d
2 changed files with 67 additions and 1 deletions

View File

@ -273,7 +273,7 @@ sys:
.WRITE_PROTECT EQU #18 ; 24 - § é¨â  § ¯¨á¨
.READ_ERROR EQU #19 ; 25 - ®è¨¡ª  ç⥭¨ï
.WRITE_ERROR EQU #1A ; 26 - ®è¨¡ª  § ¯¨á¨
;.GENERAL_FAILURE EQU #1B ; 27 - ®¡é ï ®è¨¡ª 
;.GENERAL_FAILURE EQU #1B ; 27 - ®¡é ï ®è¨¡ª 
.DRIVE_FAILURE EQU #1B ; 27 - á¡®© ¤¨áª 
;.RESERVED_28 EQU #1C ; 28 - § à¥§¥à¢¨à®¢ ­
;.RESERVED_29 EQU #1D ; 29 - § à¥§¥à¢¨à®¢ ­

View File

@ -140,6 +140,72 @@
ENDM
;=======================================
;=======================================
MACRO _mCHECK_SYS_VERSIONS dss_v, dss_m, dss_b, bios_v, bios_m
DEFINE MIN_DSS_VERSION dss_v*256 + dss_m
DEFINE MIN_DSS_BUILD dss_b
DEFINE MIN_BIOS_VERSION bios_v*256 + bios_m
;
DEFINE TXT_DSS_VERSION ('0'+dss_v),\
'.',\
('0'+dss_m/10),\
('0'+dss_m-(dss_m/10)*10),\
'.',\
('0'+dss_b/100),\
('0'+(dss_b/10 - dss_b/100*10)),\
('0'+(dss_b - dss_b/10*10)) ;
;
DEFINE TXT_BIOS_VERSION '0'+bios_v,\
'.',\
'0'+bios_m/10,\
'0'+bios_m-(bios_m/10)*10
;
LD C,Dss.Version
RST ToDSS
JR C,.Error_DOS
LD HL,MIN_DSS_VERSION
EX DE,HL
SBC HL,DE
JR C,.Error_DOS
;
LD HL,-(MIN_DSS_BUILD)
ADD HL,BC
JR NC,.Error_DOS
;
LD C,BIOS.DRV_VERSION
RST ToBIOS
JR C,.Error_BIOS
LD HL,-(MIN_BIOS_VERSION)
ADD HL,DE
RET C
.Error_BIOS:
LD HL,.MSG.Error_BIOS
JR .next
.Error_DOS:
LD HL,.MSG.Error_DSS
.next: LD C,Dss.PChars
RST ToDSS
;
.loop: LD B,DSS_Error.sys.COMMON_ERROR
.error: LD C,Dss.Exit
RST ToDSS
JR .loop
;
.MSG.Error_BIOS:
DB "\r\nERROR! Uncompatible version of BIOS. Needs version ",TXT_BIOS_VERSION," or higher.\r\n",0
.MSG.Error_DSS:
DB "\r\nERROR! Uncompatible version of DSS. Needs version ",TXT_DSS_VERSION," or higher.\r\n",0
;
UNDEFINE MIN_DSS_VERSION
UNDEFINE MIN_DSS_BUILD
UNDEFINE MIN_BIOS_VERSION
UNDEFINE TXT_DSS_VERSION
UNDEFINE TXT_BIOS_VERSION
ENDM
;=======================================
;=======================================
MACRO _mCollectInfo_begin
IF COLLECT_INFO