Browse Source

Add Seconds Counter to HBIOS

patch
Wayne Warthen 6 years ago
parent
commit
dc9dd8e8ca
  1. 1
      Doc/ChangeLog.txt
  2. BIN
      Doc/RomWBW Architecture.pdf
  3. 2
      ReadMe.txt
  4. 21
      Source/Apps/Timer.asm
  5. 2
      Source/CBIOS/ver.inc
  6. BIN
      Source/Doc/RomWBW Architecture.docx
  7. 8
      Source/HBIOS/API.txt
  8. 52
      Source/HBIOS/hbios.asm
  9. 2
      Source/HBIOS/hbios.inc
  10. 2
      Source/HBIOS/ver.inc

1
Doc/ChangeLog.txt

@ -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
------------- -------------

BIN
Doc/RomWBW Architecture.pdf

Binary file not shown.

2
ReadMe.txt

@ -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

21
Source/Apps/Timer.asm

@ -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
.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 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
Source/CBIOS/ver.inc

@ -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"

BIN
Source/Doc/RomWBW Architecture.docx

Binary file not shown.

8
Source/HBIOS/API.txt

@ -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)

52
Source/HBIOS/hbios.asm

@ -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)
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: 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
; ;

2
Source/HBIOS/hbios.inc

@ -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
Source/HBIOS/ver.inc

@ -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"

Loading…
Cancel
Save