mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
Add Seconds Counter to HBIOS
This commit is contained in:
@@ -28,6 +28,7 @@ Version 2.9.2
|
|||||||
- WBW: Updated FAT to add MD and FORMAT commands
|
- WBW: Updated FAT to add MD and FORMAT commands
|
||||||
- WBW: Add CP/M 3 (experimental)
|
- WBW: Add CP/M 3 (experimental)
|
||||||
- M?T: Support Shift register SPI WIZNET for RC2014
|
- M?T: Support Shift register SPI WIZNET for RC2014
|
||||||
|
- WBW: Added seconds register in HBIOS
|
||||||
|
|
||||||
Version 2.9.1
|
Version 2.9.1
|
||||||
-------------
|
-------------
|
||||||
|
|||||||
Binary file not shown.
@@ -7,7 +7,7 @@
|
|||||||
***********************************************************************
|
***********************************************************************
|
||||||
|
|
||||||
Wayne Warthen (wwarthen@gmail.com)
|
Wayne Warthen (wwarthen@gmail.com)
|
||||||
Version 2.9.2-pre.18, 2019-10-14
|
Version 2.9.2-pre.19, 2019-10-14
|
||||||
https://www.retrobrewcomputers.org/
|
https://www.retrobrewcomputers.org/
|
||||||
|
|
||||||
RomWBW is a ROM-based implementation of CP/M-80 2.2 and Z-System for
|
RomWBW is a ROM-based implementation of CP/M-80 2.2 and Z-System for
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
; Change Log:
|
; Change Log:
|
||||||
; 2018-01-14 [WBW] Initial release
|
; 2018-01-14 [WBW] Initial release
|
||||||
; 2018-01-17 [WBW] Add HBIOS check
|
; 2018-01-17 [WBW] Add HBIOS check
|
||||||
|
; 2019-11-08 [WBW] Add seconds support
|
||||||
;_______________________________________________________________________________
|
;_______________________________________________________________________________
|
||||||
;
|
;
|
||||||
; ToDo:
|
; ToDo:
|
||||||
@@ -41,6 +42,7 @@ rmn .equ 9 ; intended CBIOS version - minor
|
|||||||
bf_sysver .equ $F1 ; BIOS: VER function
|
bf_sysver .equ $F1 ; BIOS: VER function
|
||||||
bf_sysget .equ $F8 ; HBIOS: SYSGET function
|
bf_sysget .equ $F8 ; HBIOS: SYSGET function
|
||||||
bf_sysgettimer .equ $D0 ; TIMER subfunction
|
bf_sysgettimer .equ $D0 ; TIMER subfunction
|
||||||
|
bf_sysgetsecs .equ $D1 ; SECONDS subfunction
|
||||||
;
|
;
|
||||||
;===============================================================================
|
;===============================================================================
|
||||||
; Code Section
|
; Code Section
|
||||||
@@ -127,7 +129,18 @@ process1a:
|
|||||||
ld a,l ; new LSB value to A
|
ld a,l ; new LSB value to A
|
||||||
ld (last),a ; save as last value
|
ld (last),a ; save as last value
|
||||||
call prtcr ; back to start of line
|
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:
|
process2:
|
||||||
ld a,(cont) ; continuous display?
|
ld a,(cont) ; continuous display?
|
||||||
@@ -463,8 +476,8 @@ stack .equ $ ; stack top
|
|||||||
;
|
;
|
||||||
; Messages
|
; Messages
|
||||||
;
|
;
|
||||||
msgban .db "TIMER v1.0, 14-Jan-2018",13,10
|
msgban .db "TIMER v1.1, 8-Nov-2019",13,10
|
||||||
.db "Copyright (C) 2018, Wayne Warthen, GNU GPL v3",0
|
.db "Copyright (C) 2019, Wayne Warthen, GNU GPL v3",0
|
||||||
msguse .db "Usage: TIMER [/C] [/?]",13,10
|
msguse .db "Usage: TIMER [/C] [/?]",13,10
|
||||||
.db " ex. TIMER (display current timer value)",13,10
|
.db " ex. TIMER (display current timer value)",13,10
|
||||||
.db " TIMER /? (display version and usage)",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
|
msgprm .db "Parameter error (TIMER /? for usage)",0
|
||||||
msgbio .db "Incompatible BIOS or version, "
|
msgbio .db "Incompatible BIOS or version, "
|
||||||
.db "HBIOS v", '0' + rmj, ".", '0' + rmn, " required",0
|
.db "HBIOS v", '0' + rmj, ".", '0' + rmn, " required",0
|
||||||
|
strtick .db " Ticks, ",0
|
||||||
|
strsec .db " Seconds",0
|
||||||
;
|
;
|
||||||
.end
|
.end
|
||||||
|
|||||||
@@ -2,4 +2,4 @@
|
|||||||
#DEFINE RMN 9
|
#DEFINE RMN 9
|
||||||
#DEFINE RUP 2
|
#DEFINE RUP 2
|
||||||
#DEFINE RTP 0
|
#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
|
BC=Function/Subfunction A=Result
|
||||||
DE:HL=Timer Value (32 bit)
|
DE:HL=Timer Value (32 bit)
|
||||||
|
|
||||||
|
SECONDS ($D1):
|
||||||
|
BC=Function/Subfunction A=Result
|
||||||
|
DE:HL=Seconds Value (32 bit)
|
||||||
|
|
||||||
BOOTINFO ($E0):
|
BOOTINFO ($E0):
|
||||||
BC=Function/Subfunction A=Result
|
BC=Function/Subfunction A=Result
|
||||||
DE=Boot Volume (Disk Unit/Slice)
|
DE=Boot Volume (Disk Unit/Slice)
|
||||||
@@ -85,6 +89,10 @@ SET ($F9):
|
|||||||
BC=Function/Subfunction A=Result
|
BC=Function/Subfunction A=Result
|
||||||
DE:HL=Timer Value (32 bit)
|
DE:HL=Timer Value (32 bit)
|
||||||
|
|
||||||
|
SECONDS ($D1):
|
||||||
|
BC=Function/Subfunction A=Result
|
||||||
|
DE:HL=Seconds Value (32 bit)
|
||||||
|
|
||||||
BOOTINFO ($E0):
|
BOOTINFO ($E0):
|
||||||
BC=Function/Subfunction A=Result
|
BC=Function/Subfunction A=Result
|
||||||
DE=Boot Volume (Disk Unit/Slice)
|
DE=Boot Volume (Disk Unit/Slice)
|
||||||
|
|||||||
@@ -2368,6 +2368,8 @@ SYS_GET:
|
|||||||
JR Z,SYS_GETVDACNT
|
JR Z,SYS_GETVDACNT
|
||||||
CP BF_SYSGET_TIMER
|
CP BF_SYSGET_TIMER
|
||||||
JR Z,SYS_GETTIMER
|
JR Z,SYS_GETTIMER
|
||||||
|
CP BF_SYSGET_SECS
|
||||||
|
JR Z,SYS_GETSECS
|
||||||
CP BF_SYSGET_BOOTINFO
|
CP BF_SYSGET_BOOTINFO
|
||||||
JR Z,SYS_GETBOOTINFO
|
JR Z,SYS_GETBOOTINFO
|
||||||
CP BF_SYSGET_CPUINFO
|
CP BF_SYSGET_CPUINFO
|
||||||
@@ -2391,6 +2393,18 @@ SYS_GETTIMER:
|
|||||||
XOR A
|
XOR A
|
||||||
RET
|
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
|
; GET BOOT INFORMATION
|
||||||
; RETURNS:
|
; RETURNS:
|
||||||
; L: BOOT BANK ID
|
; L: BOOT BANK ID
|
||||||
@@ -2473,6 +2487,8 @@ SYS_SET:
|
|||||||
LD A,C ; GET REQUESTED SUB-FUNCTION
|
LD A,C ; GET REQUESTED SUB-FUNCTION
|
||||||
CP BF_SYSSET_TIMER
|
CP BF_SYSSET_TIMER
|
||||||
JR Z,SYS_SETTIMER
|
JR Z,SYS_SETTIMER
|
||||||
|
CP BF_SYSSET_SECS
|
||||||
|
JR Z,SYS_SETSECS
|
||||||
CP BF_SYSSET_BOOTINFO
|
CP BF_SYSSET_BOOTINFO
|
||||||
JR Z,SYS_SETBOOTINFO
|
JR Z,SYS_SETBOOTINFO
|
||||||
OR $FF ; SIGNAL ERROR
|
OR $FF ; SIGNAL ERROR
|
||||||
@@ -2502,6 +2518,18 @@ SYS_SETTIMER:
|
|||||||
XOR A
|
XOR A
|
||||||
RET
|
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
|
; RETURN A BYTE OF MEMORY FROM SPECIFIED BANK
|
||||||
; ENTRY: D=BANK ID, HL=ADDRESS
|
; ENTRY: D=BANK ID, HL=ADDRESS
|
||||||
; RETURN: E=BYTE VALUE
|
; RETURN: E=BYTE VALUE
|
||||||
@@ -2687,16 +2715,7 @@ HB_IM1PTR .DW HB_IVT ; POINTER FOR NEXT IM1 ENTRY
|
|||||||
HB_TIMINT:
|
HB_TIMINT:
|
||||||
; INCREMENT TICK COUNTER (32 BIT)
|
; INCREMENT TICK COUNTER (32 BIT)
|
||||||
LD HL,HB_TICKS ; POINT TO TICK COUNTER
|
LD HL,HB_TICKS ; POINT TO TICK COUNTER
|
||||||
INC (HL)
|
CALL INC32HL
|
||||||
JR NZ,HB_TIMINT1
|
|
||||||
INC HL
|
|
||||||
INC (HL)
|
|
||||||
JR NZ,HB_TIMINT1
|
|
||||||
INC HL
|
|
||||||
INC (HL)
|
|
||||||
JR NZ,HB_TIMINT1
|
|
||||||
INC HL
|
|
||||||
INC (HL)
|
|
||||||
;
|
;
|
||||||
HB_TIMINT1:
|
HB_TIMINT1:
|
||||||
;
|
;
|
||||||
@@ -2716,6 +2735,17 @@ TEMPCNT .DB 250
|
|||||||
#ENDIF
|
#ENDIF
|
||||||
;
|
;
|
||||||
HB_TIMINT2:
|
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)
|
#IF (CPUFAM == CPU_Z180)
|
||||||
; ACK/RESET Z180 TIMER INTERRUPT
|
; ACK/RESET Z180 TIMER INTERRUPT
|
||||||
@@ -4019,6 +4049,8 @@ IDLECOUNT .DB 0
|
|||||||
HEAPCURB .DW 0 ; MARK HEAP ADDRESS AFTER INITIALIZATION
|
HEAPCURB .DW 0 ; MARK HEAP ADDRESS AFTER INITIALIZATION
|
||||||
;
|
;
|
||||||
HB_TICKS .FILL 4,0 ; 32 BIT TICK COUNTER
|
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
|
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_DIOCNT .EQU $10 ; GET DISK UNIT COUNT
|
||||||
BF_SYSGET_VDACNT .EQU $40 ; GET VDA UNIT COUNT
|
BF_SYSGET_VDACNT .EQU $40 ; GET VDA UNIT COUNT
|
||||||
BF_SYSGET_TIMER .EQU $D0 ; GET CURRENT TIMER VALUE
|
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_BOOTINFO .EQU $E0 ; GET BOOT INFORMATION
|
||||||
BF_SYSGET_CPUINFO .EQU $F0 ; GET CPU INFORMATION
|
BF_SYSGET_CPUINFO .EQU $F0 ; GET CPU INFORMATION
|
||||||
BF_SYSGET_MEMINFO .EQU $F1 ; GET MEMORY CAPACTITY INFO
|
BF_SYSGET_MEMINFO .EQU $F1 ; GET MEMORY CAPACTITY INFO
|
||||||
BF_SYSGET_BNKINFO .EQU $F2 ; GET BANK ASSIGNMENT INFO
|
BF_SYSGET_BNKINFO .EQU $F2 ; GET BANK ASSIGNMENT INFO
|
||||||
;
|
;
|
||||||
BF_SYSSET_TIMER .EQU $D0 ; SET TIMER VALUE
|
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_SYSSET_BOOTINFO .EQU $E0 ; SET BOOT INFORMATION
|
||||||
;
|
;
|
||||||
BF_SYSINT_INFO .EQU $00 ; GET INTERRUPT SYSTEM INFO
|
BF_SYSINT_INFO .EQU $00 ; GET INTERRUPT SYSTEM INFO
|
||||||
|
|||||||
@@ -2,4 +2,4 @@
|
|||||||
#DEFINE RMN 9
|
#DEFINE RMN 9
|
||||||
#DEFINE RUP 2
|
#DEFINE RUP 2
|
||||||
#DEFINE RTP 0
|
#DEFINE RTP 0
|
||||||
#DEFINE BIOSVER "2.9.2-pre.18"
|
#DEFINE BIOSVER "2.9.2-pre.19"
|
||||||
|
|||||||
Reference in New Issue
Block a user