diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index 287f4059..c747390b 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -28,7 +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 +- P?S: Added seconds register in HBIOS Version 2.9.1 ------------- diff --git a/Source/Apps/Timer.asm b/Source/Apps/Timer.asm index e4ed216b..57fd8a1e 100644 --- a/Source/Apps/Timer.asm +++ b/Source/Apps/Timer.asm @@ -139,6 +139,10 @@ process1a: ld c,bf_sysgetsecs ; SECONDS subfunction rst 08 ; call HBIOS, DE:HL := seconds value call prthex32 ; display it + ld a,'.' ; fraction separator + call prtchr ; print it + ld a,c ; get fractional component + call prthex ; print it ld de,strsec ; tag call prtstr ; display it ; @@ -476,7 +480,7 @@ stack .equ $ ; stack top ; ; Messages ; -msgban .db "TIMER v1.1, 8-Nov-2019",13,10 +msgban .db "TIMER v1.1, 10-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 diff --git a/Source/HBIOS/cfg_ezz80.asm b/Source/HBIOS/cfg_ezz80.asm index 08a2a9ac..288f9865 100644 --- a/Source/HBIOS/cfg_ezz80.asm +++ b/Source/HBIOS/cfg_ezz80.asm @@ -23,6 +23,7 @@ BOOT_TIMEOUT .EQU 20 ; AUTO BOOT TIMEOUT IN SECONDS, 0 FOR IMMEDIATE BOOT BOOT_DEFAULT .EQU 'Z' ; AUTO BOOT SELECTION TO INVOKE AT TIMEOUT ; CPUOSC .EQU 10000000 ; CPU OSC FREQ IN MHZ +TICKSPERSEC .EQU 50 ; TICKS PER SECOND INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2 DEFSERCFG .EQU SER_115200_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) ; diff --git a/Source/HBIOS/cfg_mk4.asm b/Source/HBIOS/cfg_mk4.asm index c52d0817..30d8bd4c 100644 --- a/Source/HBIOS/cfg_mk4.asm +++ b/Source/HBIOS/cfg_mk4.asm @@ -23,6 +23,7 @@ BOOT_TIMEOUT .EQU 20 ; AUTO BOOT TIMEOUT IN SECONDS, 0 FOR IMMEDIATE BOOT BOOT_DEFAULT .EQU 'Z' ; AUTO BOOT SELECTION TO INVOKE AT TIMEOUT ; CPUOSC .EQU 18432000 ; CPU OSC FREQ IN MHZ +TICKSPERSEC .EQU 50 ; TICKS PER SECOND INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2 DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) ; diff --git a/Source/HBIOS/cfg_n8.asm b/Source/HBIOS/cfg_n8.asm index fe7542af..698a567f 100644 --- a/Source/HBIOS/cfg_n8.asm +++ b/Source/HBIOS/cfg_n8.asm @@ -23,6 +23,7 @@ BOOT_TIMEOUT .EQU 20 ; AUTO BOOT TIMEOUT IN SECONDS, 0 FOR IMMEDIATE BOOT BOOT_DEFAULT .EQU 'Z' ; AUTO BOOT SELECTION TO INVOKE AT TIMEOUT ; CPUOSC .EQU 18432000 ; CPU OSC FREQ IN MHZ +TICKSPERSEC .EQU 50 ; TICKS PER SECOND INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2 DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) ; diff --git a/Source/HBIOS/cfg_rcz180.asm b/Source/HBIOS/cfg_rcz180.asm index ca3bfb1f..ea4a096b 100644 --- a/Source/HBIOS/cfg_rcz180.asm +++ b/Source/HBIOS/cfg_rcz180.asm @@ -23,6 +23,7 @@ BOOT_TIMEOUT .EQU 20 ; AUTO BOOT TIMEOUT IN SECONDS, 0 FOR IMMEDIATE BOOT BOOT_DEFAULT .EQU 'Z' ; AUTO BOOT SELECTION TO INVOKE AT TIMEOUT ; CPUOSC .EQU 18432000 ; CPU OSC FREQ IN MHZ +TICKSPERSEC .EQU 50 ; TICKS PER SECOND INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2 DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) ; diff --git a/Source/HBIOS/cfg_rcz80.asm b/Source/HBIOS/cfg_rcz80.asm index 818e0274..1f70644c 100644 --- a/Source/HBIOS/cfg_rcz80.asm +++ b/Source/HBIOS/cfg_rcz80.asm @@ -23,6 +23,7 @@ BOOT_TIMEOUT .EQU 20 ; AUTO BOOT TIMEOUT IN SECONDS, 0 FOR IMMEDIATE BOOT BOOT_DEFAULT .EQU 'Z' ; AUTO BOOT SELECTION TO INVOKE AT TIMEOUT ; CPUOSC .EQU 7372800 ; CPU OSC FREQ IN MHZ +TICKSPERSEC .EQU 50 ; TICKS PER SECOND INTMODE .EQU 1 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2 DEFSERCFG .EQU SER_115200_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) ; diff --git a/Source/HBIOS/cfg_sbc.asm b/Source/HBIOS/cfg_sbc.asm index 7576fbe1..76c9c314 100644 --- a/Source/HBIOS/cfg_sbc.asm +++ b/Source/HBIOS/cfg_sbc.asm @@ -23,6 +23,7 @@ BOOT_TIMEOUT .EQU 20 ; AUTO BOOT TIMEOUT IN SECONDS, 0 FOR IMMEDIATE BOOT BOOT_DEFAULT .EQU 'Z' ; AUTO BOOT SELECTION TO INVOKE AT TIMEOUT ; CPUOSC .EQU 8000000 ; CPU OSC FREQ IN MHZ +TICKSPERSEC .EQU 50 ; TICKS PER SECOND INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2 DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) ; diff --git a/Source/HBIOS/cfg_scz180.asm b/Source/HBIOS/cfg_scz180.asm index 9f8e35ef..d4d3f762 100644 --- a/Source/HBIOS/cfg_scz180.asm +++ b/Source/HBIOS/cfg_scz180.asm @@ -23,6 +23,7 @@ BOOT_TIMEOUT .EQU 20 ; AUTO BOOT TIMEOUT IN SECONDS, 0 FOR IMMEDIATE BOOT BOOT_DEFAULT .EQU 'Z' ; AUTO BOOT SELECTION TO INVOKE AT TIMEOUT ; CPUOSC .EQU 18432000 ; CPU OSC FREQ IN MHZ +TICKSPERSEC .EQU 50 ; TICKS PER SECOND INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2 DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) ; diff --git a/Source/HBIOS/cfg_zeta.asm b/Source/HBIOS/cfg_zeta.asm index eb5d675b..b8e94a16 100644 --- a/Source/HBIOS/cfg_zeta.asm +++ b/Source/HBIOS/cfg_zeta.asm @@ -23,6 +23,7 @@ BOOT_TIMEOUT .EQU 20 ; AUTO BOOT TIMEOUT IN SECONDS, 0 FOR IMMEDIATE BOOT BOOT_DEFAULT .EQU 'Z' ; AUTO BOOT SELECTION TO INVOKE AT TIMEOUT ; CPUOSC .EQU 20000000 ; CPU OSC FREQ IN MHZ +TICKSPERSEC .EQU 50 ; TICKS PER SECOND INTMODE .EQU 0 ; INTERRUPT MODE: 0=NONE, 1=MODE 1, 2=MODE 2 DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) ; diff --git a/Source/HBIOS/cfg_zeta2.asm b/Source/HBIOS/cfg_zeta2.asm index f83f0788..2917447c 100644 --- a/Source/HBIOS/cfg_zeta2.asm +++ b/Source/HBIOS/cfg_zeta2.asm @@ -23,6 +23,7 @@ BOOT_TIMEOUT .EQU 20 ; AUTO BOOT TIMEOUT IN SECONDS, 0 FOR IMMEDIATE BOOT BOOT_DEFAULT .EQU 'Z' ; AUTO BOOT SELECTION TO INVOKE AT TIMEOUT ; CPUOSC .EQU 20000000 ; CPU OSC FREQ IN MHZ +TICKSPERSEC .EQU 50 ; TICKS PER SECOND INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2 DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) ; diff --git a/Source/HBIOS/dbgmon.asm b/Source/HBIOS/dbgmon.asm index e93e6c38..4698655f 100644 --- a/Source/HBIOS/dbgmon.asm +++ b/Source/HBIOS/dbgmon.asm @@ -42,6 +42,7 @@ BUFLEN .EQU 40 ; INPUT LINE LENGTH UART_ENTRY: LD SP,MON_STACK ; SET THE STACK POINTER EI ; INTS OK NOW + LD HL,UART_ENTRY ; RESTART ADDRESS CALL INITIALIZE ; INITIALIZE SYSTEM LD HL,TXT_READY ; POINT AT TEXT @@ -108,9 +109,14 @@ SERIALCMDLOOP: ;__INITIALIZE_________________________________________________________________ ; ; INITIALIZE SYSTEM +; AT ENTRY, HL SHOULD HAVE ADDRESS OF DESIRED RESTART ADDRESS ;_____________________________________________________________________________ ; INITIALIZE: + LD A,$C3 ; JP OPCODE + LD (0),A ; STORE AT $0000 + LD (1),HL ; STORE AT $0001 + #IF (BIOS == BIOS_UNA) ; INSTALL UNA INVOCATION VECTOR FOR RST 08 LD A,$C3 ; JP INSTRUCTION @@ -932,6 +938,7 @@ KY_PW .EQU KY_BK ; USE [BW] FOR [PW] (PORT WRITE) DSKY_ENTRY: LD SP,MON_STACK ; SET THE STACK POINTER EI ; INTS OK NOW + LD HL,DSKY_ENTRY ; RESTART ADDRESS CALL INITIALIZE ; ;__FRONT_PANEL_STARTUP________________________________________________________ @@ -1381,5 +1388,13 @@ MON_STACK .EQU $ .ECHO "DBGMON space remaining: " .ECHO SLACK .ECHO " bytes.\n" - +; +; DBGMON CURRENTLY OCCUPIES $F000-$FDFF BECAUSE THE +; HBIOS PROXY OCCUPIES $FE00-$FFFF. HOWEVER THE DBGMON +; IMAGE MUST OCCUPY A FULL $1000 BYTES IN THE ROM. +; BELOW WE JUST PAD OUT THE IMAGE BY $200 SO IT +; OCCUPIES THE FULL $1000 BYTES IN ROM. +; + .FILL $200,$00 +; .END diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index fc42fd30..f19e9aa4 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -2396,24 +2396,16 @@ SYS_GETTIMER: ; GET SECONDS ; RETURNS: ; DE:HL: SECONDS VALUE (32 BIT) -; C TICKS OF TICKSPERSEC (8 BIT) +; C: NUM TICKS WITHIN CURRENT SECOND ; SYS_GETSECS: - LD HL,HB_SECTCK - LD A,TICKSPERSEC + LD HL,HB_SECS HB_DI - SUB (HL) - INC HL ; NOW POINTING TO HB_SECS - LD C,(HL) - INC HL - LD B,(HL) - INC HL - LD E,(HL) - INC HL - LD D,(HL) + CALL LD32 + LD A,(HB_SECTCK) HB_EI - LD L,C - LD H,B + NEG ; CONVERT DOWNCOUNTER TO UPCOUNTER + ADD A,TICKSPERSEC LD C,A XOR A RET @@ -2533,7 +2525,7 @@ SYS_SETTIMER: ; ; SET SECS ; ON ENTRY: -; DE:HL: TIMER VALUE (32 BIT) +; DE:HL: SECONDS VALUE (32 BIT) ; SYS_SETSECS: LD BC,HB_SECS diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index aa385538..ac6aae8f 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -371,8 +371,8 @@ CPM_ENT .EQU CBIOS_LOC ; CPM ENTRY POINT (IN CBIOS) LDR_SIZ .EQU $0E00 -MON_LOC .EQU $C000 ; LOCATION OF MONITOR FOR RUNNING SYSTEM -MON_SIZ .EQU $1000 ; SIZE OF MONITOR BINARY IMAGE +MON_LOC .EQU $F000 ; LOCATION OF MONITOR FOR RUNNING SYSTEM +MON_SIZ .EQU $0E00 ; SIZE OF MONITOR BINARY IMAGE MON_END .EQU MON_LOC + MON_SIZ ; END OF MONITOR BAS_LOC .EQU $0200 ; NASCOM BASIC