mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
Add Seconds Counter to HBIOS
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
; Change Log:
|
||||
; 2018-01-14 [WBW] Initial release
|
||||
; 2018-01-17 [WBW] Add HBIOS check
|
||||
; 2019-11-08 [WBW] Add seconds support
|
||||
;_______________________________________________________________________________
|
||||
;
|
||||
; ToDo:
|
||||
@@ -41,6 +42,7 @@ rmn .equ 9 ; intended CBIOS version - minor
|
||||
bf_sysver .equ $F1 ; BIOS: VER function
|
||||
bf_sysget .equ $F8 ; HBIOS: SYSGET function
|
||||
bf_sysgettimer .equ $D0 ; TIMER subfunction
|
||||
bf_sysgetsecs .equ $D1 ; SECONDS subfunction
|
||||
;
|
||||
;===============================================================================
|
||||
; Code Section
|
||||
@@ -127,7 +129,18 @@ process1a:
|
||||
ld a,l ; new LSB value to A
|
||||
ld (last),a ; save as last value
|
||||
call prtcr ; back to start of line
|
||||
call nz,prthex32 ; display it
|
||||
;call nz,prthex32 ; display it
|
||||
call prthex32 ; display it
|
||||
ld de,strtick ; tag
|
||||
call prtstr ; display it
|
||||
|
||||
; get and print seconds value
|
||||
ld b,bf_sysget ; HBIOS SYSGET function
|
||||
ld c,bf_sysgetsecs ; SECONDS subfunction
|
||||
rst 08 ; call HBIOS, DE:HL := seconds value
|
||||
call prthex32 ; display it
|
||||
ld de,strsec ; tag
|
||||
call prtstr ; display it
|
||||
;
|
||||
process2:
|
||||
ld a,(cont) ; continuous display?
|
||||
@@ -463,8 +476,8 @@ stack .equ $ ; stack top
|
||||
;
|
||||
; Messages
|
||||
;
|
||||
msgban .db "TIMER v1.0, 14-Jan-2018",13,10
|
||||
.db "Copyright (C) 2018, Wayne Warthen, GNU GPL v3",0
|
||||
msgban .db "TIMER v1.1, 8-Nov-2019",13,10
|
||||
.db "Copyright (C) 2019, Wayne Warthen, GNU GPL v3",0
|
||||
msguse .db "Usage: TIMER [/C] [/?]",13,10
|
||||
.db " ex. TIMER (display current timer value)",13,10
|
||||
.db " TIMER /? (display version and usage)",13,10
|
||||
@@ -472,5 +485,7 @@ msguse .db "Usage: TIMER [/C] [/?]",13,10
|
||||
msgprm .db "Parameter error (TIMER /? for usage)",0
|
||||
msgbio .db "Incompatible BIOS or version, "
|
||||
.db "HBIOS v", '0' + rmj, ".", '0' + rmn, " required",0
|
||||
strtick .db " Ticks, ",0
|
||||
strsec .db " Seconds",0
|
||||
;
|
||||
.end
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
#DEFINE RMN 9
|
||||
#DEFINE RUP 2
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "2.9.2-pre.18"
|
||||
#DEFINE BIOSVER "2.9.2-pre.19"
|
||||
|
||||
Binary file not shown.
@@ -57,6 +57,10 @@ GET ($F8):
|
||||
BC=Function/Subfunction A=Result
|
||||
DE:HL=Timer Value (32 bit)
|
||||
|
||||
SECONDS ($D1):
|
||||
BC=Function/Subfunction A=Result
|
||||
DE:HL=Seconds Value (32 bit)
|
||||
|
||||
BOOTINFO ($E0):
|
||||
BC=Function/Subfunction A=Result
|
||||
DE=Boot Volume (Disk Unit/Slice)
|
||||
@@ -85,6 +89,10 @@ SET ($F9):
|
||||
BC=Function/Subfunction A=Result
|
||||
DE:HL=Timer Value (32 bit)
|
||||
|
||||
SECONDS ($D1):
|
||||
BC=Function/Subfunction A=Result
|
||||
DE:HL=Seconds Value (32 bit)
|
||||
|
||||
BOOTINFO ($E0):
|
||||
BC=Function/Subfunction A=Result
|
||||
DE=Boot Volume (Disk Unit/Slice)
|
||||
|
||||
@@ -2368,6 +2368,8 @@ SYS_GET:
|
||||
JR Z,SYS_GETVDACNT
|
||||
CP BF_SYSGET_TIMER
|
||||
JR Z,SYS_GETTIMER
|
||||
CP BF_SYSGET_SECS
|
||||
JR Z,SYS_GETSECS
|
||||
CP BF_SYSGET_BOOTINFO
|
||||
JR Z,SYS_GETBOOTINFO
|
||||
CP BF_SYSGET_CPUINFO
|
||||
@@ -2391,6 +2393,18 @@ SYS_GETTIMER:
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
; GET SECONDS
|
||||
; RETURNS:
|
||||
; DE:HL: SECONDS VALUE (32 BIT)
|
||||
;
|
||||
SYS_GETSECS:
|
||||
LD HL,HB_SECS
|
||||
HB_DI
|
||||
CALL LD32
|
||||
HB_EI
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
; GET BOOT INFORMATION
|
||||
; RETURNS:
|
||||
; L: BOOT BANK ID
|
||||
@@ -2473,6 +2487,8 @@ SYS_SET:
|
||||
LD A,C ; GET REQUESTED SUB-FUNCTION
|
||||
CP BF_SYSSET_TIMER
|
||||
JR Z,SYS_SETTIMER
|
||||
CP BF_SYSSET_SECS
|
||||
JR Z,SYS_SETSECS
|
||||
CP BF_SYSSET_BOOTINFO
|
||||
JR Z,SYS_SETBOOTINFO
|
||||
OR $FF ; SIGNAL ERROR
|
||||
@@ -2502,6 +2518,18 @@ SYS_SETTIMER:
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
; SET SECS
|
||||
; ON ENTRY:
|
||||
; DE:HL: TIMER VALUE (32 BIT)
|
||||
;
|
||||
SYS_SETSECS:
|
||||
LD BC,HB_SECS
|
||||
HB_DI
|
||||
CALL ST32
|
||||
HB_EI
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
; RETURN A BYTE OF MEMORY FROM SPECIFIED BANK
|
||||
; ENTRY: D=BANK ID, HL=ADDRESS
|
||||
; RETURN: E=BYTE VALUE
|
||||
@@ -2687,16 +2715,7 @@ HB_IM1PTR .DW HB_IVT ; POINTER FOR NEXT IM1 ENTRY
|
||||
HB_TIMINT:
|
||||
; INCREMENT TICK COUNTER (32 BIT)
|
||||
LD HL,HB_TICKS ; POINT TO TICK COUNTER
|
||||
INC (HL)
|
||||
JR NZ,HB_TIMINT1
|
||||
INC HL
|
||||
INC (HL)
|
||||
JR NZ,HB_TIMINT1
|
||||
INC HL
|
||||
INC (HL)
|
||||
JR NZ,HB_TIMINT1
|
||||
INC HL
|
||||
INC (HL)
|
||||
CALL INC32HL
|
||||
;
|
||||
HB_TIMINT1:
|
||||
;
|
||||
@@ -2716,6 +2735,17 @@ TEMPCNT .DB 250
|
||||
#ENDIF
|
||||
;
|
||||
HB_TIMINT2:
|
||||
LD HL,HB_SECTCK ; POINT TO SECONDS TICK COUNTER
|
||||
DEC (HL) ; COUNTDOWN 50 TICKS
|
||||
JR NZ,HB_TIMINT3 ; NOT ZERO YET, DONE FOR THIS CYCLE
|
||||
; 50 TICKS HAVE ELAPSED
|
||||
LD A,50 ; 50 TICKS PER SECOND
|
||||
LD (HL),A ; RESET COUNTDOWN REGISTER
|
||||
; INCREMENT SECONDS COUNTER
|
||||
LD HL,HB_SECS ; POINT TO SECONDS COUNTER
|
||||
CALL INC32HL
|
||||
;
|
||||
HB_TIMINT3:
|
||||
;
|
||||
#IF (CPUFAM == CPU_Z180)
|
||||
; ACK/RESET Z180 TIMER INTERRUPT
|
||||
@@ -4019,6 +4049,8 @@ IDLECOUNT .DB 0
|
||||
HEAPCURB .DW 0 ; MARK HEAP ADDRESS AFTER INITIALIZATION
|
||||
;
|
||||
HB_TICKS .FILL 4,0 ; 32 BIT TICK COUNTER
|
||||
HB_SECTCK .DB 50 ; TICK COUNTER FOR SECONDS
|
||||
HB_SECS .FILL 4,0 ; 32 BIT SECONDS COUNTER
|
||||
;
|
||||
HB_CPUTYPE .DB 0 ; 0=Z80, 1=80180, 2=SL1960, 3=ASCI BRG
|
||||
;
|
||||
|
||||
@@ -71,12 +71,14 @@ BF_SYSGET_CIOCNT .EQU $00 ; GET CHAR UNIT COUNT
|
||||
BF_SYSGET_DIOCNT .EQU $10 ; GET DISK UNIT COUNT
|
||||
BF_SYSGET_VDACNT .EQU $40 ; GET VDA UNIT COUNT
|
||||
BF_SYSGET_TIMER .EQU $D0 ; GET CURRENT TIMER VALUE
|
||||
BF_SYSGET_SECS .EQU $D1 ; GET CURRENT SECONDS VALUE
|
||||
BF_SYSGET_BOOTINFO .EQU $E0 ; GET BOOT INFORMATION
|
||||
BF_SYSGET_CPUINFO .EQU $F0 ; GET CPU INFORMATION
|
||||
BF_SYSGET_MEMINFO .EQU $F1 ; GET MEMORY CAPACTITY INFO
|
||||
BF_SYSGET_BNKINFO .EQU $F2 ; GET BANK ASSIGNMENT INFO
|
||||
;
|
||||
BF_SYSSET_TIMER .EQU $D0 ; SET TIMER VALUE
|
||||
BF_SYSSET_SECS .EQU $D1 ; SET SECONDS VALUE
|
||||
BF_SYSSET_BOOTINFO .EQU $E0 ; SET BOOT INFORMATION
|
||||
;
|
||||
BF_SYSINT_INFO .EQU $00 ; GET INTERRUPT SYSTEM INFO
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
#DEFINE RMN 9
|
||||
#DEFINE RUP 2
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "2.9.2-pre.18"
|
||||
#DEFINE BIOSVER "2.9.2-pre.19"
|
||||
|
||||
Reference in New Issue
Block a user