From 6ab3ecd0ccf6711287401ba939028a26f38a0f6c Mon Sep 17 00:00:00 2001 From: Phillip Stevens Date: Sat, 9 Nov 2019 18:32:08 +1100 Subject: [PATCH 1/7] hbios - sys/time.h functions --- Source/HBIOS/cfg_master.asm | 1 + Source/HBIOS/hbios.asm | 21 +++++++++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/Source/HBIOS/cfg_master.asm b/Source/HBIOS/cfg_master.asm index e8677023..7f7851bc 100644 --- a/Source/HBIOS/cfg_master.asm +++ b/Source/HBIOS/cfg_master.asm @@ -20,6 +20,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/hbios.asm b/Source/HBIOS/hbios.asm index f43b6745..478bc971 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -2396,12 +2396,25 @@ SYS_GETTIMER: ; GET SECONDS ; RETURNS: ; DE:HL: SECONDS VALUE (32 BIT) +; C TICKS OF TICKSPERSEC (8 BIT) ; SYS_GETSECS: - LD HL,HB_SECS + LD HL,HB_SECTCK + LD A,TICKSPERSEC-1 HB_DI - CALL LD32 + 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) HB_EI + LD L,C + LD H,B + LD C,A XOR A RET ; @@ -2739,7 +2752,7 @@ HB_TIMINT2: 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 A,TICKSPERSEC-1 ; 50 TICKS PER SECOND LD (HL),A ; RESET COUNTDOWN REGISTER ; INCREMENT SECONDS COUNTER LD HL,HB_SECS ; POINT TO SECONDS COUNTER @@ -4049,7 +4062,7 @@ 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_SECTCK .DB TICKSPERSEC-1 ; TICK COUNTER FOR FRACTIONAL SECONDS HB_SECS .FILL 4,0 ; 32 BIT SECONDS COUNTER ; HB_CPUTYPE .DB 0 ; 0=Z80, 1=80180, 2=SL1960, 3=ASCI BRG From 8fb0d9019b97397efcef7b61dc393ffc8b64a4bd Mon Sep 17 00:00:00 2001 From: Phillip Stevens Date: Sat, 9 Nov 2019 18:44:06 +1100 Subject: [PATCH 2/7] hbios - optimise INC32HL --- Source/HBIOS/util.asm | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/Source/HBIOS/util.asm b/Source/HBIOS/util.asm index d4bd7f49..253ec8fb 100644 --- a/Source/HBIOS/util.asm +++ b/Source/HBIOS/util.asm @@ -258,7 +258,7 @@ DB_BLKRD: LD C,16 ; SET FOR 16 LOCS PUSH HL ; SAVE STARTING HL DB_NXTONE: - LD A,(HL) ; GET BYTE + LD A,(HL) ; GET BYTE CALL PRTHEXBYTE ; PRINT IT CALL PC_SPACE ; DB_UPDH: @@ -789,7 +789,7 @@ DIV32X8: XOR A LD B,32 DIV32X8A: - ADD HL,HL + ADD HL,HL RL E RL D RLA @@ -798,7 +798,7 @@ DIV32X8A: SUB C INC L DIV32X8B: - DJNZ DIV32X8A + DJNZ DIV32X8A RET ; ; FILL MEMORY AT HL WITH VALUE A, LENGTH IN BC, ALL REGS USED @@ -984,19 +984,15 @@ SUB32: ; INCREMENT 32 BIT BINARY AT ADDRESS ; INC32HL: - PUSH HL - PUSH BC - LD B,4 -INC32HL1: INC (HL) + RET NZ INC HL - JR NZ,INC32HL2 - DJNZ INC32HL1 -INC32HL2: - POP BC - POP HL + INC (HL) + RET NZ + INC HL + INC (HL) + RET NZ + INC HL + INC (HL) RET - - - From d78229a8759dad8a310c7387789c8ecbd02cce56 Mon Sep 17 00:00:00 2001 From: Phillip Stevens Date: Sat, 9 Nov 2019 20:36:52 +1100 Subject: [PATCH 3/7] hbios - z180 PRT0 configuration --- Source/HBIOS/hbios.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 478bc971..10ca4b4f 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -1245,7 +1245,7 @@ HB_CPU1: LD (IVT(INT_TIM0)),HL ; Z180 TIMER 0 ; SETUP PERIODIC TIMER INTERRUPT ON TIMER 0 - LD HL,(CB_CPUKHZ) ; 50HZ = 18432000 / 20 / 50 / X, SO X = CPU KHZ + LD HL,__CPU_CLOCK/TICKSPERSEC/20-1 ; 50HZ = 18432000/ 50 / 20 LD B,0 LD C,Z180_RLDR0L ; INITIALIZE TIMER 0 RELOAD REGISTER OUT (C),L From 6cb051ec522734bcccb7f115dd2f4c7443028c0d Mon Sep 17 00:00:00 2001 From: Phillip Stevens Date: Sat, 9 Nov 2019 20:51:29 +1100 Subject: [PATCH 4/7] hbios - z180 PRT0 configuration again --- Source/HBIOS/hbios.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 10ca4b4f..3843d789 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -1245,7 +1245,7 @@ HB_CPU1: LD (IVT(INT_TIM0)),HL ; Z180 TIMER 0 ; SETUP PERIODIC TIMER INTERRUPT ON TIMER 0 - LD HL,__CPU_CLOCK/TICKSPERSEC/20-1 ; 50HZ = 18432000/ 50 / 20 + LD HL,CPUOSC/TICKSPERSEC/20-1 ; 50HZ = 18432000/ 50 / 20 LD B,0 LD C,Z180_RLDR0L ; INITIALIZE TIMER 0 RELOAD REGISTER OUT (C),L From 976ef858d0c7dac676015d1edce3c2096a17c4d3 Mon Sep 17 00:00:00 2001 From: Phillip Stevens Date: Sun, 10 Nov 2019 15:29:16 +1100 Subject: [PATCH 5/7] hbios - fix HB_SECTCK setting --- Source/HBIOS/hbios.asm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 3843d789..fc42fd30 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -1245,7 +1245,7 @@ HB_CPU1: LD (IVT(INT_TIM0)),HL ; Z180 TIMER 0 ; SETUP PERIODIC TIMER INTERRUPT ON TIMER 0 - LD HL,CPUOSC/TICKSPERSEC/20-1 ; 50HZ = 18432000/ 50 / 20 + LD HL,CPUOSC/TICKSPERSEC/20-1 ; 50HZ = 18432000 / 50 / 20 LD B,0 LD C,Z180_RLDR0L ; INITIALIZE TIMER 0 RELOAD REGISTER OUT (C),L @@ -2400,7 +2400,7 @@ SYS_GETTIMER: ; SYS_GETSECS: LD HL,HB_SECTCK - LD A,TICKSPERSEC-1 + LD A,TICKSPERSEC HB_DI SUB (HL) INC HL ; NOW POINTING TO HB_SECS @@ -2752,7 +2752,7 @@ HB_TIMINT2: DEC (HL) ; COUNTDOWN 50 TICKS JR NZ,HB_TIMINT3 ; NOT ZERO YET, DONE FOR THIS CYCLE ; 50 TICKS HAVE ELAPSED - LD A,TICKSPERSEC-1 ; 50 TICKS PER SECOND + LD A,TICKSPERSEC ; 50 TICKS PER SECOND LD (HL),A ; RESET COUNTDOWN REGISTER ; INCREMENT SECONDS COUNTER LD HL,HB_SECS ; POINT TO SECONDS COUNTER @@ -4062,7 +4062,7 @@ IDLECOUNT .DB 0 HEAPCURB .DW 0 ; MARK HEAP ADDRESS AFTER INITIALIZATION ; HB_TICKS .FILL 4,0 ; 32 BIT TICK COUNTER -HB_SECTCK .DB TICKSPERSEC-1 ; TICK COUNTER FOR FRACTIONAL SECONDS +HB_SECTCK .DB TICKSPERSEC ; TICK COUNTER FOR FRACTIONAL SECONDS HB_SECS .FILL 4,0 ; 32 BIT SECONDS COUNTER ; HB_CPUTYPE .DB 0 ; 0=Z80, 1=80180, 2=SL1960, 3=ASCI BRG From 04f374a4da41b4ebc92651cd50d43d2bfe91e57d Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Sun, 10 Nov 2019 11:57:04 -0800 Subject: [PATCH 6/7] Misc Cleanup --- Doc/ChangeLog.txt | 2 +- Source/Apps/Timer.asm | 6 +++++- Source/HBIOS/cfg_ezz80.asm | 1 + Source/HBIOS/cfg_mk4.asm | 1 + Source/HBIOS/cfg_n8.asm | 1 + Source/HBIOS/cfg_rcz180.asm | 1 + Source/HBIOS/cfg_rcz80.asm | 1 + Source/HBIOS/cfg_sbc.asm | 1 + Source/HBIOS/cfg_scz180.asm | 1 + Source/HBIOS/cfg_zeta.asm | 1 + Source/HBIOS/cfg_zeta2.asm | 1 + Source/HBIOS/dbgmon.asm | 17 ++++++++++++++++- Source/HBIOS/hbios.asm | 22 +++++++--------------- Source/HBIOS/std.asm | 4 ++-- 14 files changed, 40 insertions(+), 20 deletions(-) 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 From 8f2754b0f713d6274c9639715fd2411a360bda02 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Sun, 10 Nov 2019 18:59:43 -0800 Subject: [PATCH 7/7] Minor Cleanup --- Source/HBIOS/cfg_ezz80.asm | 1 - Source/HBIOS/cfg_master.asm | 1 - Source/HBIOS/cfg_mk4.asm | 1 - Source/HBIOS/cfg_n8.asm | 1 - Source/HBIOS/cfg_rcz180.asm | 1 - Source/HBIOS/cfg_rcz80.asm | 1 - Source/HBIOS/cfg_sbc.asm | 1 - Source/HBIOS/cfg_scz180.asm | 1 - Source/HBIOS/cfg_zeta.asm | 1 - Source/HBIOS/cfg_zeta2.asm | 1 - Source/HBIOS/hbios.asm | 10 ++++++---- Source/HBIOS/std.asm | 10 ++++++---- 12 files changed, 12 insertions(+), 18 deletions(-) diff --git a/Source/HBIOS/cfg_ezz80.asm b/Source/HBIOS/cfg_ezz80.asm index 288f9865..08a2a9ac 100644 --- a/Source/HBIOS/cfg_ezz80.asm +++ b/Source/HBIOS/cfg_ezz80.asm @@ -23,7 +23,6 @@ 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_master.asm b/Source/HBIOS/cfg_master.asm index 7f7851bc..e8677023 100644 --- a/Source/HBIOS/cfg_master.asm +++ b/Source/HBIOS/cfg_master.asm @@ -20,7 +20,6 @@ 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_mk4.asm b/Source/HBIOS/cfg_mk4.asm index 30d8bd4c..c52d0817 100644 --- a/Source/HBIOS/cfg_mk4.asm +++ b/Source/HBIOS/cfg_mk4.asm @@ -23,7 +23,6 @@ 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 698a567f..fe7542af 100644 --- a/Source/HBIOS/cfg_n8.asm +++ b/Source/HBIOS/cfg_n8.asm @@ -23,7 +23,6 @@ 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 ea4a096b..ca3bfb1f 100644 --- a/Source/HBIOS/cfg_rcz180.asm +++ b/Source/HBIOS/cfg_rcz180.asm @@ -23,7 +23,6 @@ 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 1f70644c..818e0274 100644 --- a/Source/HBIOS/cfg_rcz80.asm +++ b/Source/HBIOS/cfg_rcz80.asm @@ -23,7 +23,6 @@ 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 76c9c314..7576fbe1 100644 --- a/Source/HBIOS/cfg_sbc.asm +++ b/Source/HBIOS/cfg_sbc.asm @@ -23,7 +23,6 @@ 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 d4d3f762..9f8e35ef 100644 --- a/Source/HBIOS/cfg_scz180.asm +++ b/Source/HBIOS/cfg_scz180.asm @@ -23,7 +23,6 @@ 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 b8e94a16..eb5d675b 100644 --- a/Source/HBIOS/cfg_zeta.asm +++ b/Source/HBIOS/cfg_zeta.asm @@ -23,7 +23,6 @@ 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 2917447c..f83f0788 100644 --- a/Source/HBIOS/cfg_zeta2.asm +++ b/Source/HBIOS/cfg_zeta2.asm @@ -23,7 +23,6 @@ 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/hbios.asm b/Source/HBIOS/hbios.asm index f19e9aa4..16b76ac3 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -1245,13 +1245,15 @@ HB_CPU1: LD (IVT(INT_TIM0)),HL ; Z180 TIMER 0 ; SETUP PERIODIC TIMER INTERRUPT ON TIMER 0 - LD HL,CPUOSC/TICKSPERSEC/20-1 ; 50HZ = 18432000 / 50 / 20 - LD B,0 - LD C,Z180_RLDR0L ; INITIALIZE TIMER 0 RELOAD REGISTER +; LD HL,CPUOSC/TICKSPERSEC/20-1 ; 50HZ = 18432000 / 50 / 20 + LD HL,(CPUKHZ) ; 50HZ = 18432000 / 20 / 50 / X, SO X = CPU KHZ + LD B,0 ; 16-BIT I/O ADDRESS + LD C,Z180_TMDR0L ; INITIALIZE TIMER 0 DATA REGISTER OUT (C),L INC C OUT (C),H - LD C,Z180_TMDR0L ; INITIALIZE TIMER 0 DATA REGISTER + DEC HL ; RELOAD OCCURS *AFTER* ZERO + LD C,Z180_RLDR0L ; INITIALIZE TIMER 0 RELOAD REGISTER OUT (C),L INC C OUT (C),H diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index ac6aae8f..625c0f98 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -297,20 +297,22 @@ FORCECON .EQU 0 ; DEFAULT IS TO FOLLOW NORMAL SEQUENCE ; ; SETUP DEFAULT CPU SPEED VALUES ; -CPUKHZ .EQU CPUOSC / 1000 ; CPU FREQ IN KHZ +CPUKHZ .EQU CPUOSC / 1000 ; CPU FREQ IN KHZ ; #IF (BIOS == BIOS_WBW) #IF (CPUFAM == CPU_Z180) #IF (Z180_CLKDIV == 0) -CPUKHZ .SET CPUKHZ / 2 ; ADJUST FOR HALF SPEED OPERATION +CPUKHZ .SET CPUKHZ / 2 ; ADJUST FOR HALF SPEED OPERATION #ENDIF #IF (Z180_CLKDIV == 2) -CPUKHZ .SET CPUKHZ * 2 ; ADJUST FOR DOUBLE SPEED OPERATION +CPUKHZ .SET CPUKHZ * 2 ; ADJUST FOR DOUBLE SPEED OPERATION #ENDIF #ENDIF #ENDIF ; -CPUMHZ .EQU CPUKHZ / 1000 ; CPU FREQ IN MHZ +CPUMHZ .EQU CPUKHZ / 1000 ; CPU FREQ IN MHZ +; +TICKSPERSEC .EQU 50 ; ; MEMORY BANK CONFIGURATION ;