diff --git a/Source/HBIOS/bqrtc.asm b/Source/HBIOS/bqrtc.asm index 34854e22..f1c6a751 100644 --- a/Source/HBIOS/bqrtc.asm +++ b/Source/HBIOS/bqrtc.asm @@ -159,6 +159,10 @@ BQRTC_DISPATCH: JP Z, BQRTC_GETALM ; Get Alarm DEC A JP Z, BQRTC_SETALM ; Set Alarm + DEC A + JP Z, BQRTC_DEVICE ; Report RTC device info + CALL PANIC + ; ; NVRAM FUNCTIONS ARE NOT AVAILABLE ; @@ -328,6 +332,14 @@ BQRTC_SETALM: ; clean up and return XOR A ; Signal success RET ; And return +; +; REPORT RTC DEVICE INFO +; +BQRTC_DEVICE: + LD D,RTCDEV_BQ ; D := DEVICE TYPE + LD E,0 ; E := PHYSICAL DEVICE NUMBER + XOR A ; SIGNAL SUCCESS + RET BQRTC_SUSPEND: IN0 A, (BQRTC_CONTROL) ; Suspend Clock diff --git a/Source/HBIOS/dsrtc.asm b/Source/HBIOS/dsrtc.asm index 5bcd596f..01d2f171 100644 --- a/Source/HBIOS/dsrtc.asm +++ b/Source/HBIOS/dsrtc.asm @@ -235,12 +235,20 @@ DSRTC_DISPATCH: JP Z,DSRTC_GETBLK ; GET NVRAM DATA BLOCK VALUES DEC A JP Z,DSRTC_SETBLK ; SET NVRAM DATA BLOCK VALUES + DEC A + JP Z,DSRTC_GETALM ; GET ALARM + DEC A + JP Z,DSRTC_SETALM ; SET ALARM + DEC A + JP Z,DSRTC_DEVICE ; REPORT RTC DEVICE INFO CALL PANIC ; ; NVRAM FUNCTIONS ARE NOT AVAILABLE IN SIMULATOR ; DSRTC_GETBLK: DSRTC_SETBLK: +DSRTC_GETALM: +DSRTC_SETALM: CALL PANIC ; ; RTC GET TIME @@ -350,6 +358,14 @@ DSRTC_SETBYT: XOR A ; SIGNAL SUCCESS RET ; DONE ; +; REPORT RTC DEVICE INFO +; +DSRTC_DEVICE: + LD D,RTCDEV_DS ; D := DEVICE TYPE + LD E,0 ; E := PHYSICAL DEVICE NUMBER + XOR A ; SIGNAL SUCCESS + RET +; ; CONVERT DATA IN CLOCK BUFFER TO TIME BUFFER AT HL ; DSRTC_CLK2TIM: diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 865e2005..2fe314ab 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -2427,6 +2427,8 @@ SYS_GET: CP BF_SYSGET_CIOCNT JR Z,SYS_GETCIOCNT CP BF_SYSGET_DIOCNT + JR Z,SYS_GETRTCCNT + CP BF_SYSGET_RTCCNT JR Z,SYS_GETDIOCNT CP BF_SYSGET_VDACNT JR Z,SYS_GETVDACNT @@ -2543,6 +2545,18 @@ SYS_GETDIOCNT: XOR A ; SIGNALS SUCCESS RET ; +; GET RTC UNIT COUNT +; +SYS_GETRTCCNT: + LD E,0 ; ASSUME 0 RTC DEVICES + LD A,(RTC_DISPACT) ; IS RTC ACTIVE? + OR A ; SET FLAGS + JR Z,SYS_GETRTCCNT1 ; IF NONE, DONE + INC E ; SET ONE DEVICE +SYS_GETRTCCNT1: + XOR A ; SIGNALS SUCCESS + RET +; ; GET VIDEO UNIT COUNT ; SYS_GETVDACNT: diff --git a/Source/HBIOS/hbios.inc b/Source/HBIOS/hbios.inc index e3fe6667..6fb98bc1 100644 --- a/Source/HBIOS/hbios.inc +++ b/Source/HBIOS/hbios.inc @@ -32,6 +32,9 @@ BF_RTCGETBYT .EQU BF_RTC + 2 ; GET NVRAM BYTE BY INDEX BF_RTCSETBYT .EQU BF_RTC + 3 ; SET NVRAM BYTE BY INDEX BF_RTCGETBLK .EQU BF_RTC + 4 ; GET NVRAM DATA BLOCK BF_RTCSETBLK .EQU BF_RTC + 5 ; SET NVRAM DATA BLOCK +BF_RTCGETALM .EQU BF_RTC + 6 ; GET ALARM +BF_RTCSETALM .EQU BF_RTC + 7 ; SET ALARM +BF_RTCDEVICE .EQU BF_RTC + 8 ; RTC DEVICE INFO REPORT ; BF_EMU .EQU $30 ; DEPRECATED ; @@ -89,6 +92,7 @@ BF_SYSINT .EQU BF_SYS + 12 ; MANAGE INTERRUPT VECTORS ; BF_SYSGET_CIOCNT .EQU $00 ; GET CHAR UNIT COUNT BF_SYSGET_DIOCNT .EQU $10 ; GET DISK UNIT COUNT +BF_SYSGET_RTCCNT .EQU $20 ; GET RTC UNIT COUNT BF_SYSGET_VDACNT .EQU $40 ; GET VDA UNIT COUNT BF_SYSGET_SNDCNT .EQU $50 ; GET VDA UNIT COUNT BF_SYSGET_TIMER .EQU $D0 ; GET CURRENT TIMER VALUE @@ -140,6 +144,13 @@ DIODEV_PRPSD .EQU $70 DIODEV_PPPSD .EQU $80 DIODEV_HDSK .EQU $90 ; +; RTC DEVICE IDS +; +RTCDEV_DS .EQU $00 ; DS1322 +RTCDEV_BQ .EQU $10 ; BQ4845P +RTCDEV_SIMH .EQU $30 ; SIMH +RTCDEV_INT .EQU $40 ; PERIODIC INT TIMER +; ; VIDEO DEVICE IDS ; VDADEV_VDU .EQU $00 ; ECB VDU - MOTOROLA 6545 diff --git a/Source/HBIOS/intrtc.asm b/Source/HBIOS/intrtc.asm index 0414a286..a7d05ac7 100644 --- a/Source/HBIOS/intrtc.asm +++ b/Source/HBIOS/intrtc.asm @@ -50,6 +50,12 @@ INTRTC_DISPATCH: JP Z,INTRTC_GETBLK ; GET NVRAM DATA BLOCK VALUES DEC A JP Z,INTRTC_SETBLK ; SET NVRAM DATA BLOCK VALUES + DEC A + JP Z,INTRTC_GETALM ; GET ALARM + DEC A + JP Z,INTRTC_SETALM ; SET ALARM + DEC A + JP Z,INTRTC_DEVICE ; REPORT RTC DEVICE INFO CALL PANIC ; ; NVRAM FUNCTIONS ARE NOT AVAILABLE IN SIMULATOR @@ -58,6 +64,8 @@ INTRTC_GETBYT: INTRTC_SETBYT: INTRTC_GETBLK: INTRTC_SETBLK: +INTRTC_GETALM: +INTRTC_SETALM: CALL PANIC ; ; RTC GET TIME @@ -119,6 +127,14 @@ INTRTC_SETTIM: XOR A ; SIGNAL SUCCESS RET ; AND RETURN ; +; REPORT RTC DEVICE INFO +; +INTRTC_DEVICE: + LD D,RTCDEV_INT ; D := DEVICE TYPE + LD E,0 ; E := PHYSICAL DEVICE NUMBER + XOR A ; SIGNAL SUCCESS + RET +; ; HANDLER FOR TIMER SECONDS INTERRUPT ; INTRTC_INT: diff --git a/Source/HBIOS/simrtc.asm b/Source/HBIOS/simrtc.asm index 8be545c3..0185bd93 100644 --- a/Source/HBIOS/simrtc.asm +++ b/Source/HBIOS/simrtc.asm @@ -49,6 +49,12 @@ SIMRTC_DISPATCH: JP Z,SIMRTC_GETBLK ; GET NVRAM DATA BLOCK VALUES DEC A JP Z,SIMRTC_SETBLK ; SET NVRAM DATA BLOCK VALUES + DEC A + JP Z,SIMRTC_GETALM ; GET ALARM + DEC A + JP Z,SIMRTC_SETALM ; SET ALARM + DEC A + JP Z,SIMRTC_DEVICE ; REPORT RTC DEVICE INFO CALL PANIC ; ; NVRAM FUNCTIONS ARE NOT AVAILABLE IN SIMULATOR @@ -57,6 +63,8 @@ SIMRTC_GETBYT: SIMRTC_SETBYT: SIMRTC_GETBLK: SIMRTC_SETBLK: +SIMRTC_GETALM: +SIMRTC_SETALM: CALL PANIC ; ; RTC GET TIME @@ -121,6 +129,14 @@ SIMRTC_SETTIM: XOR A ; SIGNAL SUCCESS RET ; AND RETURN ; +; REPORT RTC DEVICE INFO +; +SIMRTC_DEVICE: + LD D,RTCDEV_SIMH ; D := DEVICE TYPE + LD E,0 ; E := PHYSICAL DEVICE NUMBER + XOR A ; SIGNAL SUCCESS + RET +; ; WORKING VARIABLES ; SIMRTC_BUF: ; ALL IN BCD!!! diff --git a/Source/ver.inc b/Source/ver.inc index e46787ec..f107c6e7 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,4 +2,4 @@ #DEFINE RMN 1 #DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "3.1-pre.13" +#DEFINE BIOSVER "3.1-pre.14" diff --git a/Source/ver.lib b/Source/ver.lib index 5a798e0a..d54675fa 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 1 rup equ 0 rtp equ 0 biosver macro - db "3.1-pre.13" + db "3.1-pre.14" endm