diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index ad708734..287f4059 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -28,6 +28,7 @@ Version 2.9.2 - WBW: Updated FAT to add MD and FORMAT commands - WBW: Add CP/M 3 (experimental) - M?T: Support Shift register SPI WIZNET for RC2014 +- WBW: Added seconds register in HBIOS Version 2.9.1 ------------- diff --git a/Doc/RomWBW Architecture.pdf b/Doc/RomWBW Architecture.pdf index b7842049..7ac59612 100644 Binary files a/Doc/RomWBW Architecture.pdf and b/Doc/RomWBW Architecture.pdf differ diff --git a/ReadMe.txt b/ReadMe.txt index 899657a3..da4427e1 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -7,7 +7,7 @@ *********************************************************************** 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/ RomWBW is a ROM-based implementation of CP/M-80 2.2 and Z-System for diff --git a/Source/Apps/Timer.asm b/Source/Apps/Timer.asm index fa8d737c..e4ed216b 100644 --- a/Source/Apps/Timer.asm +++ b/Source/Apps/Timer.asm @@ -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 diff --git a/Source/CBIOS/ver.inc b/Source/CBIOS/ver.inc index 315bcced..0e4b5f8e 100644 --- a/Source/CBIOS/ver.inc +++ b/Source/CBIOS/ver.inc @@ -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" diff --git a/Source/Doc/RomWBW Architecture.docx b/Source/Doc/RomWBW Architecture.docx index 576208b1..e11a75de 100644 Binary files a/Source/Doc/RomWBW Architecture.docx and b/Source/Doc/RomWBW Architecture.docx differ diff --git a/Source/HBIOS/API.txt b/Source/HBIOS/API.txt index 3ec55a3c..33f8fb3e 100644 --- a/Source/HBIOS/API.txt +++ b/Source/HBIOS/API.txt @@ -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) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index b518104d..f43b6745 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -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 ; diff --git a/Source/HBIOS/hbios.inc b/Source/HBIOS/hbios.inc index 6eeeae25..87016ecd 100644 --- a/Source/HBIOS/hbios.inc +++ b/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_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 diff --git a/Source/HBIOS/ver.inc b/Source/HBIOS/ver.inc index 315bcced..0e4b5f8e 100644 --- a/Source/HBIOS/ver.inc +++ b/Source/HBIOS/ver.inc @@ -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"