mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
New ROMLDR and INTRTC driver
- Refactored romldr.asm - Added new periodic timer based RTC driver
This commit is contained in:
@@ -22,6 +22,8 @@
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#define BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_dyno.asm"
|
||||
;
|
||||
CPUOSC .SET 18432000 ; CPU OSC FREQ IN MHZ
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#define BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_ezz80.asm"
|
||||
;
|
||||
CPUOSC .SET 10000000 ; CPU OSC FREQ IN MHZ
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#define BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_mk4.asm"
|
||||
;
|
||||
Z180_CLKDIV .SET 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#define BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_n8.asm"
|
||||
;
|
||||
Z180_CLKDIV .SET 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#define BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_rcz180.asm"
|
||||
;
|
||||
CPUOSC .SET 18432000 ; CPU OSC FREQ IN MHZ
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#define BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_rcz180.asm"
|
||||
;
|
||||
CPUOSC .SET 18432000 ; CPU OSC FREQ IN MHZ
|
||||
|
||||
@@ -22,7 +22,9 @@
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#DEFINE PLATFORM_NAME "RC2014 (KIO)"
|
||||
#define PLATFORM_NAME "RC2014 (KIO)"
|
||||
;
|
||||
#define BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "Config/RCZ80_std.asm"
|
||||
;
|
||||
|
||||
@@ -22,7 +22,9 @@
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#DEFINE PLATFORM_NAME "RC2014 (MT)"
|
||||
#define BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#define PLATFORM_NAME "RC2014 (MT)"
|
||||
;
|
||||
#include "Config/RCZ80_std.asm"
|
||||
;
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#define BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_rcz80.asm"
|
||||
;
|
||||
CPUOSC .SET 7372800 ; CPU OSC FREQ IN MHZ
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#define BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#DEFINE PLATFORM_NAME "SBC (simh)"
|
||||
;
|
||||
#include "cfg_sbc.asm"
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#define BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_sbc.asm"
|
||||
;
|
||||
CRTACT .SET TRUE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
|
||||
@@ -22,7 +22,9 @@
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#DEFINE PLATFORM_NAME "SC126"
|
||||
#define PLATFORM_NAME "SC126"
|
||||
;
|
||||
#define BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_scz180.asm"
|
||||
;
|
||||
|
||||
@@ -22,7 +22,9 @@
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#DEFINE PLATFORM_NAME "SC130"
|
||||
#define PLATFORM_NAME "SC130"
|
||||
;
|
||||
#define BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_scz180.asm"
|
||||
;
|
||||
@@ -38,6 +40,7 @@ LEDENABLE .SET TRUE ; ENABLE STATUS LED (SINGLE LED)
|
||||
;
|
||||
DIAGENABLE .SET FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
;
|
||||
TIMRTCENABLE .SET TRUE ; ENABLE PERIODIC TIMER CLOCK DRIVER (TIMRTC.ASM)
|
||||
DSRTCENABLE .SET FALSE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
|
||||
;
|
||||
ASCIENABLE .SET TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
|
||||
|
||||
@@ -22,7 +22,9 @@
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#DEFINE PLATFORM_NAME "SC131"
|
||||
#define PLATFORM_NAME "SC131"
|
||||
;
|
||||
#define BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_scz180.asm"
|
||||
;
|
||||
@@ -38,6 +40,7 @@ LEDENABLE .SET TRUE ; ENABLE STATUS LED (SINGLE LED)
|
||||
;
|
||||
DIAGENABLE .SET FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
;
|
||||
TIMRTCENABLE .SET TRUE ; ENABLE PERIODIC TIMER CLOCK DRIVER (TIMRTC.ASM)
|
||||
DSRTCENABLE .SET FALSE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
|
||||
;
|
||||
ASCIENABLE .SET TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
|
||||
|
||||
@@ -22,5 +22,6 @@
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#include "cfg_una.asm"
|
||||
#define BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_una.asm"
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#define BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_zeta2.asm"
|
||||
;
|
||||
UARTCFG .SET UARTCFG | SER_RTS
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#define BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_zeta.asm"
|
||||
;
|
||||
CRTACT .SET TRUE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
; ROMWBW 2.X CONFIGURATION DEFAULTS FOR DYNO
|
||||
;==================================================================================================
|
||||
;
|
||||
; THIS FILE CONTAINS THE FULL SET OF DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
|
||||
; THIS FILE CONTAINS THE FULL EQU OF DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
|
||||
; INDICATED ABOVE. THIS FILE SHOULD *NOT* NORMALLY BE CHANGED. INSTEAD, YOU SHOULD
|
||||
; OVERRIDE ANY SETTINGS YOU WANT USING A CONFIGURATION FILE IN THE CONFIG DIRECTORY
|
||||
; UNDER THIS DIRECTORY.
|
||||
@@ -20,9 +20,7 @@ BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
;
|
||||
BOOTTYPE .EQU BT_MENU ; BT_[MENU|AUTO], IF AUTO, BOOT DEFAULT AFTER TIMEOUT
|
||||
BOOT_TIMEOUT .EQU 20 ; AUTO BOOT TIMEOUT IN SECONDS, 0 FOR IMMEDIATE BOOT
|
||||
BOOT_DEFAULT .EQU 'Z' ; AUTO BOOT SELECTION TO INVOKE AT TIMEOUT
|
||||
BOOT_TIMEOUT .EQU 0 ; AUTO BOOT TIMEOUT IN SECONDS, 0 TO DISABLE
|
||||
;
|
||||
CPUOSC .EQU 18432000 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
|
||||
@@ -63,6 +61,8 @@ CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
|
||||
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
;
|
||||
TIMRTCENABLE .EQU FALSE ; ENABLE PERIODIC TIMER CLOCK DRIVER (TIMRTC.ASM)
|
||||
;
|
||||
HTIMENABLE .EQU FALSE ; ENABLE SIMH TIMER SUPPORT
|
||||
SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM)
|
||||
;
|
||||
|
||||
@@ -20,9 +20,7 @@ BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
;
|
||||
BOOTTYPE .EQU BT_MENU ; BT_[MENU|AUTO], IF AUTO, BOOT DEFAULT AFTER TIMEOUT
|
||||
BOOT_TIMEOUT .EQU 20 ; AUTO BOOT TIMEOUT IN SECONDS, 0 FOR IMMEDIATE BOOT
|
||||
BOOT_DEFAULT .EQU 'Z' ; AUTO BOOT SELECTION TO INVOKE AT TIMEOUT
|
||||
BOOT_TIMEOUT .EQU 0 ; AUTO BOOT TIMEOUT IN SECONDS, 0 TO DISABLE
|
||||
;
|
||||
CPUOSC .EQU 10000000 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
|
||||
@@ -60,6 +58,8 @@ CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
|
||||
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
;
|
||||
TIMRTCENABLE .EQU FALSE ; ENABLE PERIODIC TIMER CLOCK DRIVER (TIMRTC.ASM)
|
||||
;
|
||||
HTIMENABLE .EQU FALSE ; ENABLE SIMH TIMER SUPPORT
|
||||
SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM)
|
||||
;
|
||||
|
||||
@@ -17,9 +17,7 @@ BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
;
|
||||
BOOTTYPE .EQU BT_MENU ; BT_[MENU|AUTO], IF AUTO, BOOT DEFAULT AFTER TIMEOUT
|
||||
BOOT_TIMEOUT .EQU 20 ; AUTO BOOT TIMEOUT IN SECONDS, 0 FOR IMMEDIATE BOOT
|
||||
BOOT_DEFAULT .EQU 'Z' ; AUTO BOOT SELECTION TO INVOKE AT TIMEOUT
|
||||
BOOT_TIMEOUT .EQU 0 ; AUTO BOOT TIMEOUT IN SECONDS, 0 TO DISABLE
|
||||
;
|
||||
CPUOSC .EQU 8000000 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
|
||||
@@ -82,6 +80,8 @@ KBDTRACE .EQU 1 ; KBD DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPKKBLOUT .EQU KBD_US ; PPK KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
KBDKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
;
|
||||
TIMRTCENABLE .EQU FALSE ; ENABLE PERIODIC TIMER CLOCK DRIVER (TIMRTC.ASM)
|
||||
;
|
||||
HTIMENABLE .EQU FALSE ; ENABLE SIMH TIMER SUPPORT
|
||||
SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM)
|
||||
;
|
||||
|
||||
@@ -20,9 +20,7 @@ BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
;
|
||||
BOOTTYPE .EQU BT_MENU ; BT_[MENU|AUTO], IF AUTO, BOOT DEFAULT AFTER TIMEOUT
|
||||
BOOT_TIMEOUT .EQU 20 ; AUTO BOOT TIMEOUT IN SECONDS, 0 FOR IMMEDIATE BOOT
|
||||
BOOT_DEFAULT .EQU 'Z' ; AUTO BOOT SELECTION TO INVOKE AT TIMEOUT
|
||||
BOOT_TIMEOUT .EQU 0 ; AUTO BOOT TIMEOUT IN SECONDS, 0 TO DISABLE
|
||||
;
|
||||
CPUOSC .EQU 18432000 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
|
||||
@@ -67,6 +65,8 @@ KBDTRACE .EQU 1 ; KBD DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPKKBLOUT .EQU KBD_US ; PPK KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
KBDKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
;
|
||||
TIMRTCENABLE .EQU FALSE ; ENABLE PERIODIC TIMER CLOCK DRIVER (TIMRTC.ASM)
|
||||
;
|
||||
HTIMENABLE .EQU FALSE ; ENABLE SIMH TIMER SUPPORT
|
||||
SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM)
|
||||
;
|
||||
|
||||
@@ -20,9 +20,7 @@ BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
;
|
||||
BOOTTYPE .EQU BT_MENU ; BT_[MENU|AUTO], IF AUTO, BOOT DEFAULT AFTER TIMEOUT
|
||||
BOOT_TIMEOUT .EQU 20 ; AUTO BOOT TIMEOUT IN SECONDS, 0 FOR IMMEDIATE BOOT
|
||||
BOOT_DEFAULT .EQU 'Z' ; AUTO BOOT SELECTION TO INVOKE AT TIMEOUT
|
||||
BOOT_TIMEOUT .EQU 0 ; AUTO BOOT TIMEOUT IN SECONDS, 0 TO DISABLE
|
||||
;
|
||||
CPUOSC .EQU 18432000 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
|
||||
@@ -70,6 +68,8 @@ KBDTRACE .EQU 1 ; KBD DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPKKBLOUT .EQU KBD_US ; PPK KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
KBDKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
;
|
||||
TIMRTCENABLE .EQU FALSE ; ENABLE PERIODIC TIMER CLOCK DRIVER (TIMRTC.ASM)
|
||||
;
|
||||
HTIMENABLE .EQU FALSE ; ENABLE SIMH TIMER SUPPORT
|
||||
SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM)
|
||||
;
|
||||
|
||||
@@ -20,9 +20,7 @@ BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
;
|
||||
BOOTTYPE .EQU BT_MENU ; BT_[MENU|AUTO], IF AUTO, BOOT DEFAULT AFTER TIMEOUT
|
||||
BOOT_TIMEOUT .EQU 20 ; AUTO BOOT TIMEOUT IN SECONDS, 0 FOR IMMEDIATE BOOT
|
||||
BOOT_DEFAULT .EQU 'Z' ; AUTO BOOT SELECTION TO INVOKE AT TIMEOUT
|
||||
BOOT_TIMEOUT .EQU 0 ; AUTO BOOT TIMEOUT IN SECONDS, 0 TO DISABLE
|
||||
;
|
||||
CPUOSC .EQU 18432000 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
|
||||
@@ -63,6 +61,8 @@ CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
|
||||
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
;
|
||||
TIMRTCENABLE .EQU FALSE ; ENABLE PERIODIC TIMER CLOCK DRIVER (TIMRTC.ASM)
|
||||
;
|
||||
HTIMENABLE .EQU FALSE ; ENABLE SIMH TIMER SUPPORT
|
||||
SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM)
|
||||
;
|
||||
|
||||
@@ -20,9 +20,7 @@ BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
;
|
||||
BOOTTYPE .EQU BT_MENU ; BT_[MENU|AUTO], IF AUTO, BOOT DEFAULT AFTER TIMEOUT
|
||||
BOOT_TIMEOUT .EQU 20 ; AUTO BOOT TIMEOUT IN SECONDS, 0 FOR IMMEDIATE BOOT
|
||||
BOOT_DEFAULT .EQU 'Z' ; AUTO BOOT SELECTION TO INVOKE AT TIMEOUT
|
||||
BOOT_TIMEOUT .EQU 0 ; AUTO BOOT TIMEOUT IN SECONDS, 0 TO DISABLE
|
||||
;
|
||||
CPUOSC .EQU 7372800 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .EQU 1 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
|
||||
@@ -59,6 +57,8 @@ CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
|
||||
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
;
|
||||
TIMRTCENABLE .EQU FALSE ; ENABLE PERIODIC TIMER CLOCK DRIVER (TIMRTC.ASM)
|
||||
;
|
||||
HTIMENABLE .EQU FALSE ; ENABLE SIMH TIMER SUPPORT
|
||||
SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM)
|
||||
;
|
||||
|
||||
@@ -20,9 +20,7 @@ BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
;
|
||||
BOOTTYPE .EQU BT_MENU ; BT_[MENU|AUTO], IF AUTO, BOOT DEFAULT AFTER TIMEOUT
|
||||
BOOT_TIMEOUT .EQU 20 ; AUTO BOOT TIMEOUT IN SECONDS, 0 FOR IMMEDIATE BOOT
|
||||
BOOT_DEFAULT .EQU 'Z' ; AUTO BOOT SELECTION TO INVOKE AT TIMEOUT
|
||||
BOOT_TIMEOUT .EQU 0 ; AUTO BOOT TIMEOUT IN SECONDS, 0 TO DISABLE
|
||||
;
|
||||
CPUOSC .EQU 8000000 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
|
||||
@@ -61,6 +59,8 @@ KBDTRACE .EQU 1 ; KBD DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPKKBLOUT .EQU KBD_US ; PPK KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
KBDKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
;
|
||||
TIMRTCENABLE .EQU FALSE ; ENABLE PERIODIC TIMER CLOCK DRIVER (TIMRTC.ASM)
|
||||
;
|
||||
HTIMENABLE .EQU FALSE ; ENABLE SIMH TIMER SUPPORT
|
||||
SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM)
|
||||
;
|
||||
|
||||
@@ -20,9 +20,7 @@ BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
;
|
||||
BOOTTYPE .EQU BT_MENU ; BT_[MENU|AUTO], IF AUTO, BOOT DEFAULT AFTER TIMEOUT
|
||||
BOOT_TIMEOUT .EQU 20 ; AUTO BOOT TIMEOUT IN SECONDS, 0 FOR IMMEDIATE BOOT
|
||||
BOOT_DEFAULT .EQU 'Z' ; AUTO BOOT SELECTION TO INVOKE AT TIMEOUT
|
||||
BOOT_TIMEOUT .EQU 0 ; AUTO BOOT TIMEOUT IN SECONDS, 0 TO DISABLE
|
||||
;
|
||||
CPUOSC .EQU 18432000 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
|
||||
@@ -58,6 +56,8 @@ CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
|
||||
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
;
|
||||
TIMRTCENABLE .EQU FALSE ; ENABLE PERIODIC TIMER CLOCK DRIVER (TIMRTC.ASM)
|
||||
;
|
||||
HTIMENABLE .EQU FALSE ; ENABLE SIMH TIMER SUPPORT
|
||||
SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM)
|
||||
;
|
||||
|
||||
@@ -16,9 +16,7 @@
|
||||
PLATFORM .EQU PLT_UNA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
|
||||
BIOS .EQU BIOS_UNA ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
;
|
||||
BOOTTYPE .EQU BT_MENU ; BT_[MENU|AUTO], IF AUTO, BOOT DEFAULT AFTER TIMEOUT
|
||||
BOOT_TIMEOUT .EQU 20 ; AUTO BOOT TIMEOUT IN SECONDS, 0 FOR IMMEDIATE BOOT
|
||||
BOOT_DEFAULT .EQU 'Z' ; AUTO BOOT SELECTION TO INVOKE AT TIMEOUT
|
||||
BOOT_TIMEOUT .EQU 0 ; AUTO BOOT TIMEOUT IN SECONDS, 0 TO DISABLE
|
||||
;
|
||||
CPUOSC .EQU 18432000 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
|
||||
|
||||
@@ -20,9 +20,7 @@ BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
;
|
||||
BOOTTYPE .EQU BT_MENU ; BT_[MENU|AUTO] IF AUTO, BOOT DEFAULT AFTER TIMEOUT
|
||||
BOOT_TIMEOUT .EQU 20 ; AUTO BOOT TIMEOUT IN SECONDS, 0 FOR IMMEDIATE BOOT
|
||||
BOOT_DEFAULT .EQU 'Z' ; AUTO BOOT SELECTION TO INVOKE AT TIMEOUT
|
||||
BOOT_TIMEOUT .EQU 0 ; AUTO BOOT TIMEOUT IN SECONDS, 0 TO DISABLE
|
||||
;
|
||||
CPUOSC .EQU 20000000 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .EQU 0 ; INTERRUPT MODE: 0=NONE, 1=MODE 1, 2=MODE 2
|
||||
@@ -55,6 +53,8 @@ CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
|
||||
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
;
|
||||
TIMRTCENABLE .EQU FALSE ; ENABLE PERIODIC TIMER CLOCK DRIVER (TIMRTC.ASM)
|
||||
;
|
||||
HTIMENABLE .EQU FALSE ; ENABLE SIMH TIMER SUPPORT
|
||||
SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM)
|
||||
;
|
||||
|
||||
@@ -20,9 +20,7 @@ BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
;
|
||||
BOOTTYPE .EQU BT_MENU ; BT_[MENU|AUTO], IF AUTO, BOOT DEFAULT AFTER TIMEOUT
|
||||
BOOT_TIMEOUT .EQU 20 ; AUTO BOOT TIMEOUT IN SECONDS, 0 FOR IMMEDIATE BOOT
|
||||
BOOT_DEFAULT .EQU 'Z' ; AUTO BOOT SELECTION TO INVOKE AT TIMEOUT
|
||||
BOOT_TIMEOUT .EQU 0 ; AUTO BOOT TIMEOUT IN SECONDS, 0 TO DISABLE
|
||||
;
|
||||
CPUOSC .EQU 20000000 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
|
||||
@@ -60,6 +58,8 @@ CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
|
||||
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
;
|
||||
TIMRTCENABLE .EQU FALSE ; ENABLE PERIODIC TIMER CLOCK DRIVER (TIMRTC.ASM)
|
||||
;
|
||||
HTIMENABLE .EQU FALSE ; ENABLE SIMH TIMER SUPPORT
|
||||
SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM)
|
||||
;
|
||||
|
||||
@@ -31,7 +31,7 @@ BUFLEN .EQU 40 ; INPUT LINE LENGTH
|
||||
JP DSKY_ENTRY
|
||||
JP UART_ENTRY
|
||||
;
|
||||
#DEFINE USEDELAY
|
||||
;#DEFINE USEDELAY
|
||||
#INCLUDE "util.asm"
|
||||
;
|
||||
;__UART_ENTRY_________________________________________________________________
|
||||
@@ -125,9 +125,9 @@ INITIALIZE:
|
||||
LD (9),HL ; STORE AT 0x0009
|
||||
#ENDIF
|
||||
|
||||
#IF (BIOS == BIOS_WBW)
|
||||
CALL DELAY_INIT
|
||||
#ENDIF
|
||||
;#IF (BIOS == BIOS_WBW)
|
||||
; CALL DELAY_INIT
|
||||
;#ENDIF
|
||||
|
||||
RET
|
||||
;
|
||||
@@ -890,7 +890,7 @@ KEYBUF: .FILL BUFLEN,0
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
TXT_PROMPT .TEXT "\r\n>$"
|
||||
TXT_READY .TEXT "\r\nMonitor Ready$"
|
||||
TXT_READY .TEXT "\r\n\r\nMonitor Ready$"
|
||||
TXT_COMMAND .TEXT "\r\nUnknown Command$"
|
||||
TXT_ERR .TEXT "\r\nSyntax Error$"
|
||||
TXT_CKSUMERR .TEXT "\r\nChecksum Error$"
|
||||
|
||||
@@ -896,6 +896,21 @@ HB_START:
|
||||
INC A ; 1 MEANS BAT OK
|
||||
LD (HBX_LOC - 1),A ; OVERWRITE IF NVC ALLOWS IT
|
||||
;
|
||||
; IF APPBOOT, SAVE CURRENT BANKID
|
||||
;
|
||||
; THIS IS NOT GOING TO WORK IF THE APP BOOT IMAGE IS LOADED
|
||||
; USING THE UNA FAT32 LOADER. SHOULD PROBABLY CHECK THAT THERE
|
||||
; IS A VALID ROMWBW PROXY IN MEMORY BEFORE DOING THIS. HOWEVER,
|
||||
; THIS USE CASE IS PROBABLY NON-EXISTENT. THE IMG BOOT IMAGE
|
||||
; SHOULD WORK FINE WITH THE UNA FAT32 LOADER.
|
||||
;
|
||||
#IFDEF APPBOOT
|
||||
LD A,(HB_CURBNK)
|
||||
DEC SP ; RESERVE A STACK BYTE
|
||||
LD (HBX_LOC - 2),A ; SAVE BANK
|
||||
PUSH AF ; ALSO ON STACK
|
||||
#ENDIF
|
||||
;
|
||||
; INSTALL PROXY IN UPPER MEMORY
|
||||
;
|
||||
LD DE,HBX_LOC ; AS PER ABOVE
|
||||
@@ -903,6 +918,13 @@ HB_START:
|
||||
LD BC,HBX_SIZ
|
||||
LDIR
|
||||
;
|
||||
; IF APPBOOT, RESTORE CURRENT BANK ID
|
||||
;
|
||||
#IFDEF APPBOOT
|
||||
POP AF
|
||||
LD (HB_CURBNK),A
|
||||
#ENDIF
|
||||
;
|
||||
; IF ALREADY EXECUTING IN RAM, BYPASS RAM BANK INSTALLATION
|
||||
;
|
||||
LD A,(HB_RAMFLAG)
|
||||
@@ -945,6 +967,11 @@ HB_START1: ; BNKCALL ARRIVES HERE, BUT NOW RUNNING IN RAM BANK
|
||||
; IF APPBOOT, WE NEED TO FIX UP A FEW THINGS IN PAGE ZERO
|
||||
;
|
||||
#IFDEF APPBOOT
|
||||
;
|
||||
; GET AND SAVE APP BOOT BANK ID
|
||||
LD A,(HBX_LOC - 2)
|
||||
LD (HB_APPBNK),A
|
||||
|
||||
; MAKE SURE RST 08 VECTOR IS RIGHT
|
||||
LD A,$C3
|
||||
LD ($0008),A
|
||||
@@ -1520,7 +1547,9 @@ INITSYS3:
|
||||
;CALL HBX_BNKCPY
|
||||
LD B,BF_SYSSETCPY ; HBIOS FUNC: SETUP BANK COPY
|
||||
LD D,BID_USR ; D = DEST BANK = USER BANK
|
||||
LD E,BID_USR ; E = SRC BANK = USER BANK
|
||||
;LD E,BID_USR ; E = SRC BANK = USER BANK
|
||||
LD A,(HB_APPBNK) ; GET APP LOAD BANK
|
||||
LD E,A ; USE AS SOURCE
|
||||
LD HL,$8000 ; HL = COPY LEN = ENTIRE BANK
|
||||
RST 08 ; DO IT
|
||||
LD B,BF_SYSBNKCPY ; HBIOS FUNC: PERFORM BANK COPY
|
||||
@@ -1633,6 +1662,9 @@ HB_INITTBL:
|
||||
#IF (ACIAENABLE)
|
||||
.DW ACIA_INIT
|
||||
#ENDIF
|
||||
#IF (TIMRTCENABLE)
|
||||
.DW TIMRTC_INIT
|
||||
#ENDIF
|
||||
#IF (SIMRTCENABLE)
|
||||
.DW SIMRTC_INIT
|
||||
#ENDIF
|
||||
@@ -2115,6 +2147,9 @@ HB_IOBNK .DB 0 ; CURRENT IO BUFFER BANK ID
|
||||
; B: FUNCTION
|
||||
;
|
||||
RTC_DISPATCH:
|
||||
#IF (TIMRTCENABLE)
|
||||
JP TIMRTC_DISPATCH
|
||||
#ENDIF
|
||||
#IF (SIMRTCENABLE)
|
||||
JP SIMRTC_DISPATCH
|
||||
#ENDIF
|
||||
@@ -2672,42 +2707,29 @@ HB_IM1PTR .DW HB_IVT ; POINTER FOR NEXT IM1 ENTRY
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
; TIMER INTERRUPT
|
||||
; TIMER HANDLER VECTORS
|
||||
; THESE CAN BE HOOKED AS DESIRED BY DRIVERS
|
||||
;
|
||||
HB_TIMINT:
|
||||
VEC_TICK:
|
||||
JP HB_TICK ; TICK PROCESSING VECTOR
|
||||
VEC_SECOND:
|
||||
JP HB_SECOND ; SECOND PROCESSING VECTOR
|
||||
;
|
||||
; TIMER HANDLERS
|
||||
;
|
||||
HB_TICK:
|
||||
; INCREMENT TICK COUNTER (32 BIT)
|
||||
LD HL,HB_TICKS ; POINT TO TICK COUNTER
|
||||
CALL INC32HL
|
||||
;
|
||||
HB_TIMINT1:
|
||||
;
|
||||
#IF 0
|
||||
;
|
||||
LD HL,TEMPCNT
|
||||
DEC (HL)
|
||||
JR NZ,HB_TIMINT2
|
||||
LD (HL),250
|
||||
;
|
||||
LD A,'*'
|
||||
CALL COUT
|
||||
JR HB_TIMINT2
|
||||
;
|
||||
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
|
||||
JR NZ,HB_TICK1 ; NOT DONE, SKIP AHEAD
|
||||
LD A,TICKSPERSEC ; 50 TICKS PER SECOND
|
||||
LD (HL),A ; RESET COUNTDOWN REGISTER
|
||||
; INCREMENT SECONDS COUNTER
|
||||
LD HL,HB_SECS ; POINT TO SECONDS COUNTER
|
||||
CALL INC32HL
|
||||
CALL VEC_SECOND ; DO SECONDS PROCESSING VIA VECTOR
|
||||
;
|
||||
HB_TIMINT3:
|
||||
HB_TICK1:
|
||||
;
|
||||
#IF (CPUFAM == CPU_Z180)
|
||||
; ACK/RESET Z180 TIMER INTERRUPT
|
||||
@@ -2723,6 +2745,12 @@ HB_TIMINT3:
|
||||
OR $FF ; NZ SET TO INDICATE INT HANDLED
|
||||
RET
|
||||
;
|
||||
HB_SECOND:
|
||||
; INCREMENT SECONDS COUNTER
|
||||
LD HL,HB_SECS ; POINT TO SECONDS COUNTER
|
||||
JP INC32HL ; INCREMENT AND RETURN
|
||||
|
||||
;
|
||||
; BAD INTERRUPT HANDLER
|
||||
;
|
||||
HB_BADINT:
|
||||
@@ -2899,6 +2927,14 @@ HB_TMPREF .DW 0
|
||||
; DEVICE DRIVERS
|
||||
;==================================================================================================
|
||||
;
|
||||
#IF (TIMRTCENABLE)
|
||||
ORG_TIMRTC .EQU $
|
||||
#INCLUDE "timrtc.asm"
|
||||
SIZ_TIMRTC .EQU $ - ORG_TIMRTC
|
||||
.ECHO "TIMRTC occupies "
|
||||
.ECHO SIZ_TIMRTC
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
#IF (SIMRTCENABLE)
|
||||
ORG_SIMRTC .EQU $
|
||||
#INCLUDE "simrtc.asm"
|
||||
@@ -4082,6 +4118,8 @@ STR_LOWBAT .DB "\r\n\r\n+++ LOW BATTERY +++$"
|
||||
MSG_HBVER .DB $BE,$FF,$8A,$FB,$80,$80,$80,$80 ; "HBIO "
|
||||
#ENDIF
|
||||
;
|
||||
HB_APPBNK .DB 0 ; START BANK WHEN RUN IN APP MODE
|
||||
;
|
||||
HB_CURSEC .DB 0 ; CURRENT SECOND (TEMP)
|
||||
;
|
||||
HB_BCDTMP .FILL 5,0 ; BCD NUMBER STORAGE (TEMP)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -71,13 +71,7 @@ SIMRTC_GETTIM:
|
||||
LD HL,SIMRTC_BUF ; SOURCE ADR
|
||||
POP DE ; DEST ADR
|
||||
LD BC,SIMRTC_BUFSIZ ; LENGTH
|
||||
#IF (INTMODE == 1)
|
||||
DI
|
||||
#ENDIF
|
||||
CALL HB_BNKCPY ; COPY THE CLOCK DATA
|
||||
#IF (INTMODE == 1)
|
||||
EI
|
||||
#ENDIF
|
||||
;
|
||||
LD DE,60 ; DELAY 60 * 16US = ~1MS
|
||||
CALL VDELAY ; SLOW DOWN SIMH FOR CLOCK TICKING TEST
|
||||
@@ -107,13 +101,7 @@ SIMRTC_SETTIM:
|
||||
LD (HB_DSTBNK),A ; SET IT
|
||||
LD DE,SIMRTC_BUF ; DEST ADR
|
||||
LD BC,SIMRTC_BUFSIZ ; LENGTH
|
||||
#IF (INTMODE == 1)
|
||||
DI
|
||||
#ENDIF
|
||||
CALL HB_BNKCPY ; COPY THE CLOCK DATA
|
||||
#IF (INTMODE == 1)
|
||||
EI
|
||||
#ENDIF
|
||||
;
|
||||
LD HL,SIMRTC_BUF ; POINT TO TEMP BUF
|
||||
LD A,SIMRTC_CLKWRITE ; WRITE CLOCK COMMAND
|
||||
|
||||
230
Source/HBIOS/timrtc.asm
Normal file
230
Source/HBIOS/timrtc.asm
Normal file
@@ -0,0 +1,230 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; SYSTEM TIMER BASED CLOCK DRIVER
|
||||
;==================================================================================================
|
||||
;
|
||||
TIMRTC_BUFSIZ .EQU 6 ; SIX BYTE BUFFER (YYMMDDHHMMSS)
|
||||
;
|
||||
; RTC DEVICE INITIALIZATION ENTRY
|
||||
;
|
||||
TIMRTC_INIT:
|
||||
CALL NEWLINE ; FORMATTING
|
||||
PRTS("TIMRTC: $")
|
||||
;
|
||||
; HOOK THE HBIOS SECONDS VECTOR
|
||||
LD HL,(VEC_SECOND+1) ; GET CUR SECONDS VECTOR
|
||||
LD (TIMRTC_VEC),HL ; SAVE IT INTERNALLY
|
||||
LD HL,TIMRTC_INT ; OUR SECONDS INT ENTRY
|
||||
LD (VEC_SECOND+1),HL ; REPLACE IT
|
||||
;
|
||||
; DISPLAY CURRENT TIME
|
||||
CALL TIMRTC_GETTIM0
|
||||
LD HL,TIMRTC_BCDBUF ; POINT TO BCD BUF
|
||||
CALL PRTDT
|
||||
;
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
; RTC DEVICE FUNCTION DISPATCH ENTRY
|
||||
; A: RESULT (OUT), 0=OK, Z=OK, NZ=ERR
|
||||
; B: FUNCTION (IN)
|
||||
;
|
||||
TIMRTC_DISPATCH:
|
||||
LD A,B ; GET REQUESTED FUNCTION
|
||||
AND $0F ; ISOLATE SUB-FUNCTION
|
||||
JP Z,TIMRTC_GETTIM ; GET TIME
|
||||
DEC A
|
||||
JP Z,TIMRTC_SETTIM ; SET TIME
|
||||
DEC A
|
||||
JP Z,TIMRTC_GETBYT ; GET NVRAM BYTE VALUE
|
||||
DEC A
|
||||
JP Z,TIMRTC_SETBYT ; SET NVRAM BYTE VALUE
|
||||
DEC A
|
||||
JP Z,TIMRTC_GETBLK ; GET NVRAM DATA BLOCK VALUES
|
||||
DEC A
|
||||
JP Z,TIMRTC_SETBLK ; SET NVRAM DATA BLOCK VALUES
|
||||
CALL PANIC
|
||||
;
|
||||
; NVRAM FUNCTIONS ARE NOT AVAILABLE IN SIMULATOR
|
||||
;
|
||||
TIMRTC_GETBYT:
|
||||
TIMRTC_SETBYT:
|
||||
TIMRTC_GETBLK:
|
||||
TIMRTC_SETBLK:
|
||||
CALL PANIC
|
||||
;
|
||||
; RTC GET TIME
|
||||
; A: RESULT (OUT), 0=OK, Z=OK, NZ=ERR
|
||||
; HL: DATE/TIME BUFFER (OUT)
|
||||
; BUFFER FORMAT IS BCD: YYMMDDHHMMSS
|
||||
; 24 HOUR TIME FORMAT IS ASSUMED
|
||||
;
|
||||
TIMRTC_GETTIM:
|
||||
; GET THE TIME INTO TEMP BUF
|
||||
PUSH HL ; SAVE PTR TO CALLERS BUFFER
|
||||
CALL TIMRTC_GETTIM0 ; GET TIME TO WORK BUFFER
|
||||
;
|
||||
; NOW COPY TO REAL DESTINATION (INTERBANK SAFE)
|
||||
LD A,BID_BIOS ; COPY FROM BIOS BANK
|
||||
LD (HB_SRCBNK),A ; SET IT
|
||||
LD A,(HB_INVBNK) ; COPY TO CURRENT USER BANK
|
||||
LD (HB_DSTBNK),A ; SET IT
|
||||
LD HL,TIMRTC_BCDBUF ; SOURCE ADR
|
||||
POP DE ; DEST ADR
|
||||
LD BC,TIMRTC_BUFSIZ ; LENGTH
|
||||
CALL HB_BNKCPY ; COPY THE CLOCK DATA
|
||||
;
|
||||
LD DE,60 ; DELAY 60 * 16US = ~1MS
|
||||
CALL VDELAY ; SLOW DOWN SIMH FOR CLOCK TICKING TEST
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET ; AND RETURN
|
||||
;
|
||||
TIMRTC_GETTIM0:
|
||||
LD HL,TIMRTC_BINBUF ; FROM BINARY BUFFER
|
||||
LD DE,TIMRTC_BCDBUF ; TO BCD BUFFER
|
||||
HB_DI
|
||||
CALL TIMRTC_BIN2BCD ; COPY AND CONVERT
|
||||
HB_EI
|
||||
RET
|
||||
;
|
||||
; RTC SET TIME
|
||||
; A: RESULT (OUT), 0=OK, Z=OK, NZ=ERR
|
||||
; HL: DATE/TIME BUFFER (IN)
|
||||
; BUFFER FORMAT IS BCD: YYMMDDHHMMSSWW
|
||||
; 24 HOUR TIME FORMAT IS ASSUMED
|
||||
;
|
||||
TIMRTC_SETTIM:
|
||||
; COPY TO BCD BUF
|
||||
LD A,(HB_INVBNK) ; COPY FROM CURRENT USER BANK
|
||||
LD (HB_SRCBNK),A ; SET IT
|
||||
LD A,BID_BIOS ; COPY TO BIOS BANK
|
||||
LD (HB_DSTBNK),A ; SET IT
|
||||
LD DE,TIMRTC_BCDBUF ; DEST ADR
|
||||
LD BC,TIMRTC_BUFSIZ ; LENGTH
|
||||
CALL HB_BNKCPY ; COPY THE CLOCK DATA
|
||||
;
|
||||
LD HL,TIMRTC_BCDBUF ; FROM BCD BUF
|
||||
LD DE,TIMRTC_BINBUF ; TO BIN BUF
|
||||
HB_DI
|
||||
CALL TIMRTC_BCD2BIN ; COPY AND CONVERT
|
||||
HB_EI
|
||||
;
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET ; AND RETURN
|
||||
;
|
||||
; HANDLER FOR TIMER SECONDS INTERRUPT
|
||||
;
|
||||
TIMRTC_INT:
|
||||
LD HL,TIMRTC_BINBUF + TIMRTC_BUFSIZ - 1
|
||||
INC (HL) ; INC SECONDS
|
||||
LD A,59 ; MAX VALUE
|
||||
CP (HL) ; OVERFLOW?
|
||||
JR NC,TIMRTC_INTX ; NOPE, DONE
|
||||
LD (HL),0 ; BACK TO ZERO
|
||||
|
||||
DEC HL ; POINT TO MINUTES
|
||||
INC (HL) ; INCREMENT MINUTE
|
||||
CP (HL) ; OVERFLOW?
|
||||
JR NC,TIMRTC_INTX ; NOPE, DONE
|
||||
LD (HL),0 ; BACK TO ZERO
|
||||
|
||||
DEC HL ; POINT TO HOURS
|
||||
INC (HL) ; INCREMENT HOURS
|
||||
LD A,23 ; MAX VALUE
|
||||
CP (HL) ; OVERFLOW?
|
||||
JR NC,TIMRTC_INTX ; NOPE, DONE
|
||||
LD (HL),0 ; BACK TO ZERO
|
||||
|
||||
DEC HL ; POINT TO DATE
|
||||
LD A,(TIMRTC_MO) ; GET CURRENT MONTH
|
||||
DEC A ; ZERO OFFSET
|
||||
LD DE,TIMRTC_MONTBL ; POINT TO DAYS IN MON TBL
|
||||
ADD A,E ; ADD OFFSET
|
||||
LD E,A ; BACK TO E
|
||||
JR NC,TIMRTC_INT1 ; NO CARRY, SKIP
|
||||
INC D ; HANDLE CARRY
|
||||
TIMRTC_INT1:
|
||||
LD A,(DE) ; A := DAYS IN MONTH
|
||||
LD C,A ; COPY TO C FOR LATER
|
||||
LD A,(TIMRTC_MO) ; GET CURRENT MONTH
|
||||
CP 2 ; FEBRUARY?
|
||||
JR NZ,TIMRTC_INT2 ; IF NOT, NOT LEAY, SKIP
|
||||
LD A,(TIMRTC_YR) ; GET CURRENT YEAR
|
||||
AND $03 ; CHECK FOR LEAP
|
||||
JR NZ,TIMRTC_INT2 ; IF NOT LEAP, SKIP AHEAD
|
||||
INC C ; BUMP DAYS IN FEB FOR LEAP
|
||||
TIMRTC_INT2:
|
||||
INC (HL) ; INCREMENT DATE
|
||||
LD A,C ; A := TRUE DAYS IN MONTH + 1
|
||||
CP (HL) ; OVERFLOW?
|
||||
JR NZ,TIMRTC_INTX ; NOPE, DONE
|
||||
LD (HL),1 ; BACK TO DAY ONE
|
||||
|
||||
DEC HL ; POINT TO MONTH
|
||||
INC (HL) ; INCREMENT MONTH
|
||||
LD A,13 ; PAST MAX?
|
||||
CP (HL) ; OVERFLOW?
|
||||
JR NZ,TIMRTC_INTX ; NOPE, DONE
|
||||
LD (HL),1 ; BACK TO MONTH ONE
|
||||
|
||||
DEC HL ; POINT TO YEAR
|
||||
INC (HL) ; INCREMENT YEAR
|
||||
LD A,100 ; PAST MAX?
|
||||
CP (HL) ; OVERFLOW?
|
||||
JR NZ,TIMRTC_INTX ; NOPE, DONE
|
||||
LD (HL),0 ; BACK TO YEAR ZERO
|
||||
TIMRTC_INTX:
|
||||
JP PANIC
|
||||
TIMRTC_VEC .EQU $-2
|
||||
;
|
||||
; CONVERT FROM BINARY BUF (HL) TO BCD BUF (DE)
|
||||
;
|
||||
TIMRTC_BIN2BCD:
|
||||
LD B,TIMRTC_BUFSIZ
|
||||
TIMRTC_BIN2BCD1:
|
||||
LD A,(HL)
|
||||
CALL BYTE2BCD
|
||||
LD (DE),A
|
||||
INC HL
|
||||
INC DE
|
||||
DJNZ TIMRTC_BIN2BCD1
|
||||
RET
|
||||
;
|
||||
; CONVERT FROM BCD BUF (HL) TO BINARY BUF (DE)
|
||||
;
|
||||
TIMRTC_BCD2BIN
|
||||
LD B,TIMRTC_BUFSIZ
|
||||
TIMRTC_BCD2BIN1:
|
||||
LD A,(HL)
|
||||
CALL BCD2BYTE
|
||||
LD (DE),A
|
||||
INC HL
|
||||
INC DE
|
||||
DJNZ TIMRTC_BCD2BIN1
|
||||
RET
|
||||
;
|
||||
; WORKING VARIABLES
|
||||
;
|
||||
TIMRTC_BINBUF: ; ALL IN BINARY
|
||||
TIMRTC_YR .DB 20
|
||||
TIMRTC_MO .DB 01
|
||||
TIMRTC_DT .DB 01
|
||||
TIMRTC_HH .DB 00
|
||||
TIMRTC_MM .DB 00
|
||||
TIMRTC_SS .DB 00
|
||||
;
|
||||
TIMRTC_BCDBUF .FILL TIMRTC_BUFSIZ
|
||||
;
|
||||
TIMRTC_MONTBL: ; DAYS IN MONTH + 1
|
||||
.DB 32 ; JANUARY
|
||||
.DB 29 ; FEBRUARY (NON-LEAP)
|
||||
.DB 32 ; MARCH
|
||||
.DB 31 ; APRIL
|
||||
.DB 32 ; MAY
|
||||
.DB 31 ; JUNE
|
||||
.DB 32 ; JULY
|
||||
.DB 32 ; AUGUST
|
||||
.DB 31 ; SEPTEMBER
|
||||
.DB 32 ; OCTOBER
|
||||
.DB 31 ; NOVEMBER
|
||||
.DB 32 ; DECEMBER
|
||||
@@ -67,8 +67,9 @@ CIN: PUSH BC
|
||||
POP BC
|
||||
RET
|
||||
;
|
||||
BOOTMSG:.DB "No User ROM Installed."
|
||||
.DB CR,LF
|
||||
BOOTMSG:.DB CR,LF,CR,LF
|
||||
.DB "No User ROM Installed."
|
||||
.DB CR,LF,CR,LF
|
||||
.DB "Press a key to return to Boot Loader.$"
|
||||
;
|
||||
SLACK .EQU (USR_END - $)
|
||||
|
||||
@@ -566,8 +566,6 @@ BYTE2BCD1:
|
||||
POP BC
|
||||
RET
|
||||
|
||||
#IF (BIOS == BIOS_WBW)
|
||||
|
||||
#IFDEF USEDELAY
|
||||
|
||||
;
|
||||
@@ -592,9 +590,11 @@ DELAY: ; 17TS (FROM INVOKING CALL) |
|
||||
DELAY1: ; |
|
||||
; --- LOOP = ((CPUSCL * 16) - 5) TS ------------+ |
|
||||
DEC A ; 4TS | |
|
||||
#IF (CPUFAM == CPU_Z180) ; | |
|
||||
#IF (BIOS == BIOS_WBW) ; | |
|
||||
#IF (CPUFAM == CPU_Z180) ; | |
|
||||
OR A ; +4TS FOR Z180 | |
|
||||
#ENDIF ; | |
|
||||
#ENDIF ; | |
|
||||
#ENDIF ; | |
|
||||
JR NZ,DELAY1 ; 12TS (NZ) / 7TS (Z) | |
|
||||
; ----------------------------------------------+ |
|
||||
; |
|
||||
@@ -623,17 +623,21 @@ VDELAY: ; 17TS (FROM INVOKING CALL) |
|
||||
; | |
|
||||
VDELAY1: ; | |
|
||||
; --- INNER LOOP = ((CPUSCL * 16) - 5) TS ------+ | |
|
||||
#IF (CPUFAM == CPU_Z180) ; | | |
|
||||
#IF (BIOS == BIOS_WBW) ; | | |
|
||||
#IF (CPUFAM == CPU_Z180) ; | | |
|
||||
OR A ; +4TS FOR Z180 | | |
|
||||
#ENDIF ; | | |
|
||||
#ENDIF ; | | |
|
||||
#ENDIF ; | | |
|
||||
DEC A ; 4TS | | |
|
||||
JR NZ,VDELAY1 ; 12TS (NZ) / 7TS (Z) | | |
|
||||
; ----------------------------------------------+ | |
|
||||
; | |
|
||||
DEC DE ; 6TS | |
|
||||
#IF (CPUFAM == CPU_Z180) ; | |
|
||||
#IF (BIOS == BIOS_WBW) ; | | |
|
||||
#IF (CPUFAM == CPU_Z180) ; | |
|
||||
OR A ; +4TS FOR Z180 | |
|
||||
#ENDIF ; | |
|
||||
#ENDIF ; | |
|
||||
#ENDIF ; | |
|
||||
LD A,D ; 4TS | |
|
||||
OR E ; 4TS | |
|
||||
JP NZ,VDELAY ; 10TS | |
|
||||
@@ -659,7 +663,7 @@ LDELAY:
|
||||
; CPU SCALER := MAX(1, (PHIMHZ - 2))
|
||||
;
|
||||
DELAY_INIT:
|
||||
#IF (BIOS == BIOS_UNA)
|
||||
#IF (BIOS == BIOS_UNA)
|
||||
LD C,$F8 ; UNA BIOS GET PHI FUNCTION
|
||||
RST 08 ; RETURNS SPEED IN HZ IN DE:HL
|
||||
LD B,4 ; DIVIDE MHZ IN DE:HL BY 100000H
|
||||
@@ -669,12 +673,12 @@ DELAY_INIT0:
|
||||
DJNZ DELAY_INIT0 ; ...RIGHT SHIFT DE BY 4.
|
||||
INC E ; FIX UP FOR VALUE TRUNCATION
|
||||
LD A,E ; PUT IN A
|
||||
#ELSE
|
||||
#ELSE
|
||||
LD B,BF_SYSGET ; HBIOS FUNC=GET SYS INFO
|
||||
LD C,BF_SYSGET_CPUINFO ; HBIOS SUBFUNC=GET CPU INFO
|
||||
RST 08 ; CALL HBIOS, RST 08 NOT YET INSTALLED
|
||||
LD A,L ; PUT SPEED IN MHZ IN ACCUM
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
CP 3 ; TEST FOR <= 2 (SPECIAL HANDLING)
|
||||
JR C,DELAY_INIT1 ; IF <= 2, SPECIAL PROCESSING
|
||||
SUB 2 ; ADJUST AS REQUIRED BY DELAY FUNCTIONS
|
||||
@@ -685,13 +689,11 @@ DELAY_INIT2:
|
||||
LD (CPUSCL),A ; UPDATE CPU SCALER VALUE
|
||||
RET
|
||||
|
||||
#IF (CPUMHZ < 3)
|
||||
#IF (CPUMHZ < 3)
|
||||
CPUSCL .DB 1 ; CPU SCALER MUST BE > 0
|
||||
#ELSE
|
||||
#ELSE
|
||||
CPUSCL .DB CPUMHZ - 2 ; OTHERWISE 2 LESS THAN PHI MHZ
|
||||
#ENDIF
|
||||
;
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
@@ -700,13 +702,15 @@ CPUSCL .DB CPUMHZ - 2 ; OTHERWISE 2 LESS THAN PHI MHZ
|
||||
; NUMBER OF CALL/RET INVOCATIONS. A SINGLE CALL/RET IS
|
||||
; 27 T-STATES ON A Z80, 25 T-STATES ON A Z180
|
||||
;
|
||||
DLY64: CALL DLY32
|
||||
DLY32: CALL DLY16
|
||||
DLY16: CALL DLY8
|
||||
DLY8: CALL DLY4
|
||||
DLY4: CALL DLY2
|
||||
DLY2: CALL DLY1
|
||||
DLY1: RET
|
||||
; ; Z80 Z180
|
||||
; ; ---- ----
|
||||
DLY64: CALL DLY32 ; 1728 1600
|
||||
DLY32: CALL DLY16 ; 864 800
|
||||
DLY16: CALL DLY8 ; 432 400
|
||||
DLY8: CALL DLY4 ; 216 200
|
||||
DLY4: CALL DLY2 ; 108 100
|
||||
DLY2: CALL DLY1 ; 54 50
|
||||
DLY1: RET ; 27 25
|
||||
;
|
||||
; MULTIPLY 8-BIT VALUES
|
||||
; IN: MULTIPLY H BY E
|
||||
|
||||
Reference in New Issue
Block a user