mirror of https://github.com/wwarthen/RomWBW.git
committed by
GitHub
126 changed files with 4512 additions and 2800 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,32 @@ |
|||||
|
; |
||||
|
;================================================================================================== |
||||
|
; NABU Z80 STANDARD CONFIGURATION |
||||
|
;================================================================================================== |
||||
|
; |
||||
|
; THE COMPLETE SET OF DEFAULT CONFIGURATION SETTINGS FOR THIS PLATFORM ARE FOUND IN THE |
||||
|
; CFG_<PLT>.ASM INCLUDED FILE WHICH IS FOUND IN THE PARENT DIRECTORY. THIS FILE CONTAINS |
||||
|
; COMMON CONFIGURATION SETTINGS THAT OVERRIDE THE DEFAULTS. IT IS INTENDED THAT YOU MAKE |
||||
|
; YOUR CUSTOMIZATIONS IN THIS FILE AND JUST INHERIT ALL OTHER SETTINGS FROM THE DEFAULTS. |
||||
|
; EVEN BETTER, YOU CAN MAKE A COPY OF THIS FILE WITH A NAME LIKE <PLT>_XXX.ASM AND SPECIFY |
||||
|
; YOUR FILE IN THE BUILD PROCESS. |
||||
|
; |
||||
|
; THE SETTINGS BELOW ARE THE SETTINGS THAT ARE MOST COMMONLY MODIFIED FOR THIS PLATFORM. |
||||
|
; MANY OF THEM ARE EQUAL TO THE SETTINGS IN THE INCLUDED FILE, SO THEY DON'T REALLY DO |
||||
|
; ANYTHING AS IS. THEY ARE LISTED HERE TO MAKE IT EASY FOR YOU TO ADJUST THE MOST COMMON |
||||
|
; SETTINGS. |
||||
|
; |
||||
|
; N.B., SINCE THE SETTINGS BELOW ARE REDEFINING VALUES ALREADY SET IN THE INCLUDED FILE, |
||||
|
; TASM INSISTS THAT YOU USE THE .SET OPERATOR AND NOT THE .EQU OPERATOR BELOW. ATTEMPTING |
||||
|
; TO REDEFINE A VALUE WITH .EQU BELOW WILL CAUSE TASM ERRORS! |
||||
|
; |
||||
|
; 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_nabu.asm" |
||||
|
; |
||||
|
CRTACT .SET TRUE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP |
||||
|
; |
||||
|
TMSMODE .SET TMSMODE_NABU80 ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO|DUO|NABU40|NABU80] |
||||
|
|
||||
@ -0,0 +1,338 @@ |
|||||
|
; |
||||
|
;================================================================================================== |
||||
|
; ROMWBW 3.X CONFIGURATION DEFAULTS FOR NABU Z80 W/ OPTION BOARD |
||||
|
;================================================================================================== |
||||
|
; |
||||
|
; THIS FILE CONTAINS THE FULL SET 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. |
||||
|
; |
||||
|
; THIS FILE CAN BE CONSIDERED A REFERENCE THAT LISTS ALL POSSIBLE CONFIGURATION SETTINGS |
||||
|
; FOR THE PLATFORM. |
||||
|
; |
||||
|
#DEFINE PLATFORM_NAME "NABU Personal Computer", " [", CONFIG, "]" |
||||
|
; |
||||
|
#INCLUDE "hbios.inc" |
||||
|
; |
||||
|
PLATFORM .EQU PLT_NABU ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON] |
||||
|
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] |
||||
|
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] |
||||
|
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 |
||||
|
TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) |
||||
|
; |
||||
|
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE |
||||
|
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT |
||||
|
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT |
||||
|
; |
||||
|
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO |
||||
|
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW |
||||
|
CPUOSC .EQU 3580000 ; CPU OSC FREQ IN MHZ |
||||
|
INTMODE .EQU 1 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) |
||||
|
DEFSERCFG .EQU SER_38400_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) |
||||
|
; |
||||
|
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) |
||||
|
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) |
||||
|
APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) |
||||
|
MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON] |
||||
|
MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY) |
||||
|
MPGSEL_1 .EQU $79 ; Z2 MEM MGR BANK 1 PAGE SELECT REG (WRITE ONLY) |
||||
|
MPGSEL_2 .EQU $7A ; Z2 MEM MGR BANK 2 PAGE SELECT REG (WRITE ONLY) |
||||
|
MPGSEL_3 .EQU $7B ; Z2 MEM MGR BANK 3 PAGE SELECT REG (WRITE ONLY) |
||||
|
MPGENA .EQU $7C ; Z2 MEM MGR PAGING ENABLE REGISTER (BIT 0, WRITE ONLY) |
||||
|
; |
||||
|
RTCIO .EQU $C0 ; RTC LATCH REGISTER ADR |
||||
|
; |
||||
|
KIOENABLE .EQU FALSE ; ENABLE ZILOG KIO SUPPORT |
||||
|
KIOBASE .EQU $80 ; KIO BASE I/O ADDRESS |
||||
|
; |
||||
|
CTCENABLE .EQU FALSE ; ENABLE ZILOG CTC SUPPORT |
||||
|
CTCDEBUG .EQU FALSE ; ENABLE CTC DRIVER DEBUG OUTPUT |
||||
|
CTCBASE .EQU $88 ; CTC BASE I/O ADDRESS |
||||
|
CTCTIMER .EQU FALSE ; ENABLE CTC PERIODIC TIMER |
||||
|
CTCMODE .EQU CTCMODE_TIM16 ; CTC MODE: CTCMODE_[NONE|CTR|TIM16|TIM256] |
||||
|
CTCPRE .EQU 256 ; PRESCALE CONSTANT (1-256) |
||||
|
CTCPRECH .EQU 2 ; PRESCALE CHANNEL (0-3) |
||||
|
CTCTIMCH .EQU 3 ; TIMER CHANNEL (0-3) |
||||
|
CTCOSC .EQU CPUOSC ; CTC CLOCK FREQUENCY |
||||
|
; |
||||
|
PCFENABLE .EQU FALSE ; ENABLE PCF8584 I2C CONTROLLER |
||||
|
PCFBASE .EQU $F0 ; PCF8584 BASE I/O ADDRESS |
||||
|
; |
||||
|
EIPCENABLE .EQU FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION |
||||
|
; |
||||
|
SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES |
||||
|
SKZDIV .EQU DIV_1 ; UART CLK (CLK2) DIVIDER FOR Z80-512K |
||||
|
; |
||||
|
WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] |
||||
|
WDOGIO .EQU $6E ; WATCHDOG REGISTER ADR |
||||
|
; |
||||
|
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS |
||||
|
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS |
||||
|
FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED |
||||
|
FPLED_DSKACT .EQU FALSE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS |
||||
|
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES |
||||
|
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES |
||||
|
FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED |
||||
|
; |
||||
|
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING |
||||
|
; |
||||
|
LEDENABLE .EQU TRUE ; ENABLES STATUS LED (SINGLE LED) |
||||
|
LEDMODE .EQU LEDMODE_NABU ; LEDMODE_[STD|SC|RTC|NABU] |
||||
|
LEDPORT .EQU $00 ; STATUS LED PORT ADDRESS |
||||
|
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED |
||||
|
; |
||||
|
DSKYENABLE .EQU FALSE ; ENABLES DSKY FUNCTIONALITY |
||||
|
DSKYDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY |
||||
|
ICMENABLE .EQU FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218) |
||||
|
ICMPPIBASE .EQU $60 ; BASE I/O ADDRESS OF ICM PPI |
||||
|
PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259) |
||||
|
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI |
||||
|
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ) |
||||
|
H8PENABLE .EQU FALSE ; ENABLES HEATH H8 FRONT PANEL |
||||
|
; |
||||
|
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE |
||||
|
SECCON .EQU $FF ; SECONDARY CONSOLE DEVICE |
||||
|
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP |
||||
|
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI] |
||||
|
VDAEMU_SERKBD .EQU $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD |
||||
|
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL) |
||||
|
PPKTRACE .EQU 1 ; PPK DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL) |
||||
|
KBDTRACE .EQU 1 ; KBD DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL) |
||||
|
KBDKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE] |
||||
|
PPKKBLOUT .EQU KBD_US ; PPK KEYBOARD LANGUAGE: KBD_[US|DE] |
||||
|
MKYENABLE .EQU FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) |
||||
|
MKYKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE] |
||||
|
; |
||||
|
DSRTCENABLE .EQU FALSE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM) |
||||
|
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC] |
||||
|
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!) |
||||
|
; |
||||
|
DS1501RTCENABLE .EQU FALSE ; DS1501RTC: ENABLE DS-1501 CLOCK DRIVER (DS1501RTC.ASM) |
||||
|
DS1501RTC_BASE .EQU $50 ; DS1501RTC: I/O BASE ADDRESS |
||||
|
; |
||||
|
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM) |
||||
|
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS |
||||
|
; |
||||
|
INTRTCENABLE .EQU FALSE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM) |
||||
|
; |
||||
|
RP5RTCENABLE .EQU FALSE ; RP5C01 RTC BASED CLOCK (RP5RTC.ASM) |
||||
|
; |
||||
|
HTIMENABLE .EQU FALSE ; ENABLE SIMH TIMER SUPPORT |
||||
|
SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) |
||||
|
; |
||||
|
DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM) |
||||
|
DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF] |
||||
|
; |
||||
|
DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM) |
||||
|
DUARTCNT .EQU 1 ; DUART: NUMBER OF CHIPS TO DETECT (1-2) |
||||
|
DUART0BASE .EQU $A0 ; DUART 0: BASE ADDRESS OF CHIP |
||||
|
DUART0ACFG .EQU DEFSERCFG ; DUART 0A: SERIAL LINE CONFIG |
||||
|
DUART0BCFG .EQU DEFSERCFG ; DUART 0B: SERIAL LINE CONFIG |
||||
|
DUART1BASE .EQU $40 ; DUART 1: BASE ADDRESS OF CHIP |
||||
|
DUART1ACFG .EQU DEFSERCFG ; DUART 1A: SERIAL LINE CONFIG |
||||
|
DUART1BCFG .EQU DEFSERCFG ; DUART 1B: SERIAL LINE CONFIG |
||||
|
; |
||||
|
UARTENABLE .EQU TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM) |
||||
|
UARTOSC .EQU 1843200 ; UART: OSC FREQUENCY IN MHZ |
||||
|
UARTINTS .EQU FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3 |
||||
|
UARTCFG .EQU DEFSERCFG | SER_RTS ; UART: LINE CONFIG FOR UART PORTS |
||||
|
UARTSBC .EQU TRUE ; UART: AUTO-DETECT SBC/ZETA/DUO/NABU ONBOARD UART |
||||
|
UARTSBCFORCE .EQU FALSE ; UART: FORCE DETECTION OF SBC UART (FOR SIMH) |
||||
|
UARTAUX .EQU FALSE ; UART: AUTO-DETECT AUX UART |
||||
|
UARTCAS .EQU FALSE ; UART: AUTO-DETECT ECB CASSETTE UART |
||||
|
UARTMFP .EQU FALSE ; UART: AUTO-DETECT MF/PIC UART |
||||
|
UART4 .EQU FALSE ; UART: AUTO-DETECT 4UART UART |
||||
|
UARTRC .EQU FALSE ; UART: AUTO-DETECT RC UART |
||||
|
UARTDUAL .EQU FALSE ; UART: AUTO-DETECT DUAL UART |
||||
|
; |
||||
|
ASCIENABLE .EQU FALSE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM) |
||||
|
; |
||||
|
Z2UENABLE .EQU FALSE ; Z2U: ENABLE Z280 UART SERIAL DRIVER (Z2U.ASM) |
||||
|
; |
||||
|
ACIAENABLE .EQU FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM) |
||||
|
ACIADEBUG .EQU FALSE ; ACIA: ENABLE DEBUG OUTPUT |
||||
|
ACIACNT .EQU 1 ; ACIA: NUMBER OF CHIPS TO DETECT (1-2) |
||||
|
ACIA0BASE .EQU $80 ; ACIA 0: REGISTERS BASE ADR |
||||
|
ACIA0CLK .EQU CPUOSC ; ACIA 0: OSC FREQ IN HZ |
||||
|
ACIA0DIV .EQU 1 ; ACIA 0: SERIAL CLOCK DIVIDER |
||||
|
ACIA0CFG .EQU DEFSERCFG ; ACIA 0: SERIAL LINE CONFIG (SEE STD.ASM) |
||||
|
ACIA1BASE .EQU $40 ; ACIA 1: REGISTERS BASE ADR |
||||
|
ACIA1CLK .EQU CPUOSC ; ACIA 1: OSC FREQ IN HZ |
||||
|
ACIA1DIV .EQU 1 ; ACIA 1: SERIAL CLOCK DIVIDER |
||||
|
ACIA1CFG .EQU DEFSERCFG ; ACIA 1: SERIAL LINE CONFIG (SEE STD.ASM) |
||||
|
; |
||||
|
SIOENABLE .EQU FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM) |
||||
|
SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT |
||||
|
SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED) |
||||
|
SIOCNT .EQU 2 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP |
||||
|
SIO0MODE .EQU SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R] |
||||
|
SIO0BASE .EQU $80 ; SIO 0: REGISTERS BASE ADR |
||||
|
SIO0ACLK .EQU CPUOSC ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800 |
||||
|
SIO0ACFG .EQU DEFSERCFG ; SIO 0A: SERIAL LINE CONFIG |
||||
|
SIO0ACTCC .EQU -1 ; SIO 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE |
||||
|
SIO0BCLK .EQU CPUOSC ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800 |
||||
|
SIO0BCFG .EQU DEFSERCFG ; SIO 0B: SERIAL LINE CONFIG |
||||
|
SIO0BCTCC .EQU -1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE |
||||
|
SIO1MODE .EQU SIOMODE_RC ; SIO 1: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R] |
||||
|
SIO1BASE .EQU $84 ; SIO 1: REGISTERS BASE ADR |
||||
|
SIO1ACLK .EQU CPUOSC ; SIO 1A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800 |
||||
|
SIO1ACFG .EQU DEFSERCFG ; SIO 1A: SERIAL LINE CONFIG |
||||
|
SIO1ACTCC .EQU -1 ; SIO 1A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE |
||||
|
SIO1BCLK .EQU CPUOSC ; SIO 1B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800 |
||||
|
SIO1BCFG .EQU DEFSERCFG ; SIO 1B: SERIAL LINE CONFIG |
||||
|
SIO1BCTCC .EQU -1 ; SIO 1B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE |
||||
|
; |
||||
|
XIOCFG .EQU DEFSERCFG ; XIO: SERIAL LINE CONFIG |
||||
|
; |
||||
|
VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM) |
||||
|
CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) |
||||
|
GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM) |
||||
|
TMSENABLE .EQU TRUE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) |
||||
|
TMSMODE .EQU TMSMODE_NABU80 ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO|DUO|NABU40|NABU80] |
||||
|
TMSTIMENABLE .EQU TRUE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) |
||||
|
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) |
||||
|
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) |
||||
|
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM) |
||||
|
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) |
||||
|
; |
||||
|
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) |
||||
|
MDROM .EQU TRUE ; MD: ENABLE ROM DISK |
||||
|
MDRAM .EQU TRUE ; MD: ENABLE RAM DISK |
||||
|
MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) |
||||
|
MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM |
||||
|
; |
||||
|
FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) |
||||
|
FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC] |
||||
|
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2) |
||||
|
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL) |
||||
|
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS |
||||
|
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8] |
||||
|
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8] |
||||
|
; |
||||
|
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER |
||||
|
; |
||||
|
IDEENABLE .EQU FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM) |
||||
|
IDETRACE .EQU 1 ; IDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) |
||||
|
IDECNT .EQU 1 ; IDE: NUMBER OF IDE INTERFACES TO DETECT (1-3), 2 DRIVES EACH |
||||
|
IDE0MODE .EQU IDEMODE_RC ; IDE 0: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC] |
||||
|
IDE0BASE .EQU $10 ; IDE 0: IO BASE ADDRESS |
||||
|
IDE0DATLO .EQU $00 ; IDE 0: DATA LO PORT FOR 16-BIT I/O |
||||
|
IDE0DATHI .EQU $00 ; IDE 0: DATA HI PORT FOR 16-BIT I/O |
||||
|
IDE0A8BIT .EQU TRUE ; IDE 0A (MASTER): 8 BIT XFER |
||||
|
IDE0B8BIT .EQU TRUE ; IDE 0B (MASTER): 8 BIT XFER |
||||
|
IDE1MODE .EQU IDEMODE_NONE ; IDE 1: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC] |
||||
|
IDE1BASE .EQU $00 ; IDE 1: IO BASE ADDRESS |
||||
|
IDE1DATLO .EQU $00 ; IDE 1: DATA LO PORT FOR 16-BIT I/O |
||||
|
IDE1DATHI .EQU $00 ; IDE 1: DATA HI PORT FOR 16-BIT I/O |
||||
|
IDE1A8BIT .EQU TRUE ; IDE 1A (MASTER): 8 BIT XFER |
||||
|
IDE1B8BIT .EQU TRUE ; IDE 1B (MASTER): 8 BIT XFER |
||||
|
IDE2MODE .EQU IDEMODE_NONE ; IDE 2: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC] |
||||
|
IDE2BASE .EQU $00 ; IDE 2: IO BASE ADDRESS |
||||
|
IDE2DATLO .EQU $00 ; IDE 2: DATA LO PORT FOR 16-BIT I/O |
||||
|
IDE2DATHI .EQU $00 ; IDE 2: DATA HI PORT FOR 16-BIT I/O |
||||
|
IDE2A8BIT .EQU TRUE ; IDE 2A (MASTER): 8 BIT XFER |
||||
|
IDE2B8BIT .EQU TRUE ; IDE 2B (MASTER): 8 BIT XFER |
||||
|
; |
||||
|
PPIDEENABLE .EQU TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM) |
||||
|
PPIDETRACE .EQU 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) |
||||
|
PPIDECNT .EQU 1 ; PPIDE: NUMBER OF PPI CHIPS TO DETECT (1-3), 2 DRIVES PER CHIP |
||||
|
PPIDE0BASE .EQU $60 ; PPIDE 0: PPI REGISTERS BASE ADR |
||||
|
PPIDE0A8BIT .EQU FALSE ; PPIDE 0A (MASTER): 8 BIT XFER |
||||
|
PPIDE0B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER |
||||
|
PPIDE1BASE .EQU $00 ; PPIDE 1: PPI REGISTERS BASE ADR |
||||
|
PPIDE1A8BIT .EQU FALSE ; PPIDE 1A (MASTER): 8 BIT XFER |
||||
|
PPIDE1B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER |
||||
|
PPIDE2BASE .EQU $00 ; PPIDE 2: PPI REGISTERS BASE ADR |
||||
|
PPIDE2A8BIT .EQU FALSE ; PPIDE 2A (MASTER): 8 BIT XFER |
||||
|
PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER |
||||
|
; |
||||
|
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM) |
||||
|
SDMODE .EQU SDMODE_MT ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|PIO|Z80R|USR] |
||||
|
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE |
||||
|
SDCNT .EQU 2 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY |
||||
|
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) |
||||
|
SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE |
||||
|
SDMTSWAP .EQU FALSE ; SD: SWAP THE LOGICAL ORDER OF THE SPI PORTS OF THE MT011 |
||||
|
; |
||||
|
CHENABLE .EQU FALSE ; CH: ENABLE CH375/376 USB SUPPORT |
||||
|
CHTRACE .EQU 1 ; CH: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) |
||||
|
CHUSBTRACE .EQU 1 ; CHUSB: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) |
||||
|
CHSDTRACE .EQU 1 ; CHSD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) |
||||
|
CHCNT .EQU 2 ; CH: NUMBER OF BOARDS TO DETECT (1-2) |
||||
|
CH0BASE .EQU $3E ; CH 0: BASE I/O ADDRESS |
||||
|
CH0USBENABLE .EQU TRUE ; CH 0: ENABLE USB DISK |
||||
|
CH0SDENABLE .EQU FALSE ; CH 0: ENABLE SD DISK |
||||
|
CH1BASE .EQU $3C ; CH 1: BASE I/O ADDRESS |
||||
|
CH1USBENABLE .EQU TRUE ; CH 1: ENABLE USB DISK |
||||
|
CH1SDENABLE .EQU FALSE ; CH 1: ENABLE SD DISK |
||||
|
; |
||||
|
PRPENABLE .EQU FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM) |
||||
|
PRPSDENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER SD CARD SUPPORT |
||||
|
PRPSDTRACE .EQU 1 ; PRP: SD CARD TRACE LEVEL (0=NO,1=ERRORS,2=ALL) |
||||
|
PRPCONENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER VIDEO/KBD SUPPORT |
||||
|
; |
||||
|
PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM) |
||||
|
; |
||||
|
ESPENABLE .EQU FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM) |
||||
|
; |
||||
|
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM) |
||||
|
; |
||||
|
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM) |
||||
|
PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP |
||||
|
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR |
||||
|
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR |
||||
|
; |
||||
|
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM) |
||||
|
LPTMODE .EQU LPTMODE_MG014 ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014] |
||||
|
LPTCNT .EQU 1 ; LPT: NUMBER OF CHIPS TO DETECT (1-2) |
||||
|
LPTTRACE .EQU 1 ; LPT: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) |
||||
|
LPT0BASE .EQU $0C ; LPT 0: REGISTERS BASE ADR |
||||
|
LPT1BASE .EQU $00 ; LPT 1: REGISTERS BASE ADR |
||||
|
; |
||||
|
PPAENABLE .EQU FALSE ; PPA: ENABLE PPA DISK DRIVER (PPA.ASM) |
||||
|
PPACNT .EQU 1 ; PPA: NUMBER OF PPA DEVICES (1-2) |
||||
|
PPATRACE .EQU 1 ; PPA: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) |
||||
|
PPAMODE .EQU PPAMODE_MG014 ; PPA: DRIVER MODE: PPAMODE_[NONE|SPP|MG014] |
||||
|
PPA0BASE .EQU LPT0BASE ; PPA 0: BASE I/O ADDRESS OF PPI FOR PPA |
||||
|
PPA1BASE .EQU LPT1BASE ; PPA 1: BASE I/O ADDRESS OF PPI FOR PPA |
||||
|
; |
||||
|
IMMENABLE .EQU FALSE ; IMM: ENABLE IMM DISK DRIVER (IMM.ASM) |
||||
|
IMMCNT .EQU 1 ; IMM: NUMBER OF IMM DEVICES (1-2) |
||||
|
IMMTRACE .EQU 1 ; IMM: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) |
||||
|
IMMMODE .EQU IMMMODE_MG014 ; IMM: DRIVER MODE: IMMMODE_[NONE|SPP|MG014] |
||||
|
IMM0BASE .EQU LPT0BASE ; IMM 0: BASE I/O ADDRESS OF PPI FOR IMM |
||||
|
IMM1BASE .EQU LPT1BASE ; IMM 1: BASE I/O ADDRESS OF PPI FOR IMM |
||||
|
; |
||||
|
SYQENABLE .EQU FALSE ; SYQ: ENABLE IMM DISK DRIVER (SYQ.ASM) |
||||
|
SYQCNT .EQU 1 ; SYQ: NUMBER OF SYQ DEVICES (1-2) |
||||
|
SYQTRACE .EQU 1 ; SYQ: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) |
||||
|
SYQMODE .EQU IMMMODE_MG014 ; SYQ: DRIVER MODE: SYQMODE_[NONE|SPP|MG014] |
||||
|
SYQ0BASE .EQU LPT0BASE ; SYQ 0: BASE I/O ADDRESS OF PPI FOR SYQ |
||||
|
SYQ1BASE .EQU LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ |
||||
|
; |
||||
|
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD |
||||
|
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) |
||||
|
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP |
||||
|
; |
||||
|
UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) |
||||
|
; |
||||
|
SN76489ENABLE .EQU FALSE ; SN: ENABLE SN76489 SOUND DRIVER |
||||
|
AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER |
||||
|
SN7CLK .EQU 3579545 ; SN: PSG CLOCK FREQ, ASSUME MSX STD |
||||
|
SNMODE .EQU SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] |
||||
|
; |
||||
|
AY38910ENABLE .EQU TRUE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER |
||||
|
AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD |
||||
|
AYMODE .EQU AYMODE_NABU ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU] |
||||
|
; |
||||
|
SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) |
||||
|
; |
||||
|
DMAENABLE .EQU FALSE ; DMA: ENABLE DMA DRIVER (DMA.ASM) |
||||
|
DMABASE .EQU $E0 ; DMA: DMA BASE ADDRESS |
||||
|
DMAMODE .EQU DMAMODE_RC ; DMA: DMA MODE (NONE|ECB|Z180|Z280|RC|MBC|DUO) |
||||
|
; |
||||
|
YM2612ENABLE .EQU FALSE ; YM2612: ENABLE YM2612 DRIVER |
||||
|
VGMBASE .EQU $C0 ; YM2612: BASE ADDRESS FOR VGM BOARD (YM2612/SN76489s/CTC) |
||||
File diff suppressed because it is too large
@ -0,0 +1,123 @@ |
|||||
|
; |
||||
|
;================================================================================================== |
||||
|
; NABU INTERRUPT INTERCEPTOR |
||||
|
;================================================================================================== |
||||
|
; |
||||
|
NABU_INT1CLR .EQU $68 |
||||
|
NABU_TICCNT .EQU $FFEA ; TICCNT AT $FFEA IS COPIED DOWN TO $000B |
||||
|
; |
||||
|
; NABU INTERRUPT ENABLE PORT AND STATUS PORTS ARE MANAGED BY THE |
||||
|
; PSG IO PORTS. |
||||
|
; |
||||
|
; INTERRUPT ENABLE (OUTPUT) - PSG PORT A |
||||
|
; |
||||
|
; D7 - HCCA Receive |
||||
|
; D6 - HCCA Send |
||||
|
; D5 - Keyboard |
||||
|
; D4 - Video Frame Sync |
||||
|
; D3 - Option Card 0 (J9) |
||||
|
; D2 - Option Card 1 (J10) |
||||
|
; D1 - Option Card 2 (J11) |
||||
|
; DO - Option Card 3 (J12) |
||||
|
; |
||||
|
; STATUS BYTE (INPUT) - PSG PORT B |
||||
|
; |
||||
|
; D7 - N.C. |
||||
|
; D6 - Overrun Error (HCCA UART) |
||||
|
; D5 - Framing Error (HCCA UART) |
||||
|
; D4 - Printer Busy |
||||
|
; D3 - A2 Priority |
||||
|
; D2 - A1 Priority |
||||
|
; D1 - AO Priority |
||||
|
; DO - Interrupt Request |
||||
|
; |
||||
|
; PORTS TO MANAGE PSG |
||||
|
; |
||||
|
NABU_RSEL .EQU $41 ; SELECT PSG REGISTER |
||||
|
NABU_RDAT .EQU $40 ; WRITE TO SELECTED REGISTER |
||||
|
NABU_RIN .EQU $40 ; READ FROM SELECTED REGISTER |
||||
|
; |
||||
|
DEVECHO "NABU: IO=" |
||||
|
DEVECHO NABU_INT1CLR |
||||
|
DEVECHO "\n" |
||||
|
; |
||||
|
; |
||||
|
; HARDWARE RESET PRIOR TO ROMWBW CONSOLE INITIALIZATION |
||||
|
; |
||||
|
NABU_PREINIT: |
||||
|
; INITIALIZE THE NABU PSG I/O PORTS |
||||
|
; PORT A IN WRITE MODE AND SET ALL BITS TO ZERO |
||||
|
; PORT B IN READ MODE |
||||
|
; |
||||
|
CALL NABU_SETPSG |
||||
|
; |
||||
|
;#IF (INTMODE == 1) |
||||
|
; ; ADD TO INTERRUPT CHAIN |
||||
|
; LD HL,NABU_STAT |
||||
|
; CALL HB_ADDIM1 ; ADD TO IM1 CALL LIST |
||||
|
;#ENDIF |
||||
|
; |
||||
|
;#IF (INTMODE == 2) |
||||
|
; LD HL,NABU_STAT |
||||
|
; LD (IVT(INT_NABUKB)),HL ; IVT INDEX |
||||
|
;#ENDIF |
||||
|
; RET |
||||
|
; |
||||
|
NABU_INIT: |
||||
|
CALL NEWLINE ; FORMATTING |
||||
|
PRTS("NABU: INT1$") |
||||
|
; XOR A |
||||
|
; OUT (NABU_INT1CLR),A |
||||
|
RET ; DONE |
||||
|
; |
||||
|
NABU_SETPSG: |
||||
|
; SET I/O PORT MODES |
||||
|
LD A,7 ; PSG R7 (ENABLE REG) |
||||
|
OUT (NABU_RSEL),A ; SELECT IT |
||||
|
LD A,%01111111 ; PORT B INPUT, PORT A OUPUT |
||||
|
OUT (NABU_RDAT),A ; SET IT |
||||
|
; |
||||
|
; SET PORT A TO VALUE 0 |
||||
|
LD A,14 ; PSG R14 (PORT A DATA) |
||||
|
OUT (NABU_RSEL),A ; SELECT IT |
||||
|
#IF (INTMODE > 0) |
||||
|
#IF (TMSTIMENABLE == TRUE) |
||||
|
LD A,%00110000 ; ENABLE NABU KB & VDP INTS |
||||
|
#ELSE |
||||
|
LD A,%00100000 ; ENABLE NABU KB INTS |
||||
|
#ENDIF |
||||
|
#ELSE |
||||
|
XOR A |
||||
|
#ENDIF |
||||
|
OUT (NABU_RDAT),A ; SET IT |
||||
|
; |
||||
|
LD A,15 |
||||
|
OUT (NABU_RSEL),A |
||||
|
IN A,(NABU_RIN) |
||||
|
RET |
||||
|
; |
||||
|
; INTERRUPT ENTRY POINT |
||||
|
; |
||||
|
NABU_STAT: |
||||
|
; CALL NABU_SETPSG |
||||
|
; XOR A |
||||
|
; OUT (NABU_INT1CLR),A ; CLEAR THE INTERRUPT |
||||
|
LD HL,(NABU_TICCNT) ; INCREMENT NABU TICK COUNTER |
||||
|
|
||||
|
|
||||
|
INC HL ; ... IN HBIOS PROXY |
||||
|
LD (NABU_TICCNT),HL |
||||
|
; LD A,(NABU_HBTICK) ; INCREMENT INTERNAL TICK CTR |
||||
|
; INC A |
||||
|
; LD (NABU_HBTICK),A |
||||
|
; CP $0A ; CALL HB_TICK EVERY 10 INTERRUPTS (50HZ) |
||||
|
; RET NZ ; NOT TIME THEN JUST RETURN |
||||
|
CALL HB_TICK ; DO NORMAL HBIOS TICK |
||||
|
XOR A |
||||
|
; LD (NABU_HBTICK),A ; RESET HBTICK COUNTER |
||||
|
INC A ; INTERRUPT HANDLED |
||||
|
RET |
||||
|
; |
||||
|
NABU_HBTICK: |
||||
|
.DB 0 ; INTERNAL TICK CTR |
||||
|
; |
||||
@ -0,0 +1,265 @@ |
|||||
|
;====================================================================== |
||||
|
; NABU KEYBOARD DRIVER |
||||
|
; |
||||
|
; CREATED BY: LES BIRD |
||||
|
; |
||||
|
;====================================================================== |
||||
|
; |
||||
|
; NABU KEYBOARD CODES: |
||||
|
; |
||||
|
; $00-$7F STANDARD ASCII CODES |
||||
|
; $80-$8F JOYSTICK PREFIXES ($80 = JS1, $81 = JS2) |
||||
|
; $90-$9F KEYBOARD ERROR CODES |
||||
|
; $A0-$BF JOYSTICK DATA |
||||
|
; $C0-$DF UNUSED |
||||
|
; $E0-$EF SPECIAL KEYS |
||||
|
; |
||||
|
; NOTE THAT THE ERROR CODE $94 IS A WATCHDOG TIMER THAT WILL BE |
||||
|
; SENT BY THE KEYBOARD EVERY 3.7 SECONDS. |
||||
|
; |
||||
|
; THE CODE BELOW WILL IGNORE (SWALLOW) THE ERROR CODES ($90-$9F) AND |
||||
|
; WILL TRANSLATE SPECIAL KEYS ($E0-$FF) TO ROMWBW EQUIVALENTS. ALL |
||||
|
; OTHER KEYS WILL BE PASSED THROUGH AS IS. |
||||
|
; |
||||
|
; KBPORT EQU $90 |
||||
|
; |
||||
|
; POLL FOR INPUT |
||||
|
; KBLOOP: |
||||
|
; IN A,(KBPORT+1) |
||||
|
; BIT 1,A |
||||
|
; JR Z,KBLOOP |
||||
|
; IN A,(KBPORT) |
||||
|
; |
||||
|
; INIT: |
||||
|
; XOR A |
||||
|
; CALL SUB12 |
||||
|
; CALL SUB12 |
||||
|
; CALL SUB12 |
||||
|
; CALL SUB12 |
||||
|
; CALL SUB12 |
||||
|
; LD A,40H |
||||
|
; CALL SUB12 |
||||
|
; LD A,4EH |
||||
|
; CALL SUB12 |
||||
|
; LD A,04H |
||||
|
; CALL SUB12 |
||||
|
; |
||||
|
NABUKB_IODAT .EQU $90 ; KEYBOARD DATA (READ) |
||||
|
NABUKB_IOSTAT .EQU $91 ; STATUS (READ), CMD (WRITE) |
||||
|
; |
||||
|
DEVECHO "NABUKB: IO=" |
||||
|
DEVECHO NABUKB_IODAT |
||||
|
DEVECHO "\n" |
||||
|
; |
||||
|
; SETUP INTERRUPT HANDLING, IF ENABLED |
||||
|
; |
||||
|
NABUKB_PREINIT: |
||||
|
#IF (INTMODE == 1) |
||||
|
; ADD TO INTERRUPT CHAIN |
||||
|
LD HL,NABUKB_INT |
||||
|
CALL HB_ADDIM1 ; ADD TO IM1 CALL LIST |
||||
|
#ENDIF |
||||
|
; |
||||
|
#IF (INTMODE == 2) |
||||
|
; INSTALL VECTOR |
||||
|
LD HL,NABUKB_INT |
||||
|
LD (IVT(INT_NABUKB)),HL ; IVT INDEX |
||||
|
#ENDIF |
||||
|
RET |
||||
|
; |
||||
|
; INITIALZIZE THE KEYBOARD CONTROLLER. |
||||
|
; |
||||
|
NABUKB_INIT: |
||||
|
CALL NEWLINE |
||||
|
PRTS("NABUKB: IO=0x$") |
||||
|
LD A,NABUKB_IODAT |
||||
|
CALL PRTHEXBYTE |
||||
|
; |
||||
|
XOR A |
||||
|
CALL NABUKB_PUT |
||||
|
CALL NABUKB_PUT |
||||
|
CALL NABUKB_PUT |
||||
|
CALL NABUKB_PUT |
||||
|
CALL NABUKB_PUT |
||||
|
LD A,$40 ; RESET 8251 |
||||
|
CALL NABUKB_PUT |
||||
|
LD A,$4E ; 1 STOP BIT, 8 BITS, 64X CLK |
||||
|
CALL NABUKB_PUT |
||||
|
LD A,$04 ; ENABLE RECV |
||||
|
CALL NABUKB_PUT |
||||
|
; |
||||
|
XOR A |
||||
|
RET |
||||
|
; |
||||
|
#IF (INTMODE > 0) |
||||
|
; |
||||
|
; INTERRUPT HANDLER FOR NABU KEYBOARD. HANDLES INTERRUPTS FOR EITHER |
||||
|
; INT MODE 1 OR INT MODE 2. THE KEYBOARD BUFFER IS JUST A SINGLE CHAR |
||||
|
; AT THIS POINT. NEW CHARACTERS ARRIVING WHEN THE BUFFER IS FULL WILL |
||||
|
; BE DISCARDED. |
||||
|
; |
||||
|
NABUKB_INT: |
||||
|
IN A,(NABUKB_IOSTAT) ; GET KBD STATUS |
||||
|
AND $02 ; CHECK DATA RDY BIT |
||||
|
RET Z ; ABORT W/ Z (INT NOT HANDLED) |
||||
|
; |
||||
|
;CALL PC_LT ; *DEBUG* |
||||
|
IN A,(NABUKB_IODAT) ; GET THE KEY |
||||
|
LD E,A ; STASH IN REG E |
||||
|
;CALL PRTHEXBYTE ; *DEBUG* |
||||
|
;CALL PC_GT ; *DEBUG* |
||||
|
; |
||||
|
LD A,(NABUKB_KSTAT) ; GET KEY BUFFER STAT |
||||
|
OR A ; SET FLAGS |
||||
|
RET NZ ; BUFFER FULL, BAIL OUT W/ NZ (INT HANDLED), KEY DISCARDED |
||||
|
; |
||||
|
LD A,E ; RECOVER THE KEY CODE |
||||
|
CALL NABUKB_XB ; TRANSLATE AND BUFFER KEY |
||||
|
OR $FF ; SIGNAL INT HANDLED |
||||
|
RET ; DONE |
||||
|
; |
||||
|
#ENDIF |
||||
|
; |
||||
|
; NORMAL HBIOS CHAR INPUT STATUS. IF INTERRUPTS ARE NOT ACTIVE, THEN |
||||
|
; KEYBOARD POLLING IS IMPLEMENTED HERE. |
||||
|
; |
||||
|
NABUKB_STAT: |
||||
|
LD A,(NABUKB_KSTAT) ; GET KEY WAITING STATUS |
||||
|
OR A ; SET FLAGS |
||||
|
#IF (INTMODE > 0) |
||||
|
JR Z,NABUKB_STATX ; BAIL OUT W/ Z (NO KEY) |
||||
|
RET ; KEY WAITING, ALL SET |
||||
|
#ELSE |
||||
|
RET NZ ; KEY WAITING, ALL SET |
||||
|
IN A,(NABUKB_IOSTAT) ; GET KBD STATUS |
||||
|
AND $02 ; CHECK DATA RDY BIT |
||||
|
JR Z,NABUKB_STATX ; BAIL OUT W/ Z (NO KEY) |
||||
|
IN A,(NABUKB_IODAT) ; GET THE KEY |
||||
|
CALL NABUKB_XB ; TRANSLATE AND BUFFER KEY |
||||
|
LD A,(NABUKB_KSTAT) ; GET NEW KEY WAITING STATUS |
||||
|
OR A ; SET FLAGS |
||||
|
RET ; DONE |
||||
|
#ENDIF |
||||
|
; |
||||
|
NABUKB_STATX: |
||||
|
XOR A ; SIGNAL NO CHAR READY |
||||
|
JP CIO_IDLE ; RETURN VIA IDLE PROCESSOR |
||||
|
; |
||||
|
; ROUTINE TO TRANSLATE AND BUFFER INCOMING NABU KEYBOARD KEYCODES |
||||
|
; |
||||
|
NABUKB_XB: |
||||
|
BIT 7,A ; HIGH BIT IS SPECIAL CHAR |
||||
|
JR Z,NABUKB_XB2 ; IF NORMAL CHAR, BUFFER IT |
||||
|
CP $90 ; START OF ERR CODES |
||||
|
JR C,NABUKB_XB1 ; NOT ERR CODE, CONTINUE |
||||
|
CP $A0 ; END OF ERR CODES |
||||
|
JR NC,NABUKB_XB1 ; NOT ERR CODE, CONTINUE |
||||
|
RET ; DISCARD ERR CODE AND RETURN |
||||
|
NABUKB_XB1: |
||||
|
CP $E0 ; SPECIAL CHARACTER? |
||||
|
JR C,NABUKB_XB2 ; IF NOT, SKIP XLAT, BUFFER KEY |
||||
|
CALL NABUKB_XLAT ; IF SO, TRANSLATE IT |
||||
|
RET C ; CF INDICATES INVALID, DISCARD AND RETURN |
||||
|
NABUKB_XB2: |
||||
|
LD (NABUKB_KEY),A ; BUFFER IT |
||||
|
LD A,1 ; SIGNAL KEY WAITING |
||||
|
LD (NABUKB_KSTAT),A ; SAVE IT |
||||
|
RET ; DONE |
||||
|
; |
||||
|
; ROUTINE TO TRANSLATE SPECIAL NABU KEYBOARD KEY CODES |
||||
|
; |
||||
|
NABUKB_XLAT: |
||||
|
; NABU KEYBOARD USES $E0-$FF FOR SPECIAL KEYS |
||||
|
; HERE WE TRANSLATE TO ROMWBW SPECIAL KEYS AS BEST WE CAN |
||||
|
; CF IS SET ON RETURN IF KEY IS INVALID (NO TRANSLATION) |
||||
|
SUB $E0 ; ZERO OFFSET |
||||
|
RET C ; ABORT IF < $E0, CF SET! |
||||
|
LD HL,NABUKB_XTBL ; POINT TO XLAT TABLE |
||||
|
CALL ADDHLA ; OFFSET BY SPECIAL KEY VAL |
||||
|
LD A,(HL) ; GET TRANSLATED VALUE |
||||
|
OR A ; CHECK FOR N/A (0) |
||||
|
RET NZ ; XLAT OK, RET W/ CF CLEAR |
||||
|
SCF ; SIGNAL INVALID |
||||
|
RET ; DONE |
||||
|
; |
||||
|
NABUKB_XLAT1: |
||||
|
SCF ; SIGNAL INVALID |
||||
|
RET ; AND DONE |
||||
|
; |
||||
|
; FLUSH KEYBOARD BUFFER |
||||
|
; |
||||
|
NABUKB_FLUSH: |
||||
|
XOR A |
||||
|
LD (NABUKB_KSTAT),A |
||||
|
RET |
||||
|
; |
||||
|
; WAIT FOR A KEY TO BE READY AND RETURN IT. |
||||
|
; |
||||
|
NABUKB_READ: |
||||
|
CALL NABUKB_STAT ; CHECK FOR KEY READY |
||||
|
JR Z,NABUKB_READ ; LOOP TIL ONE IS READY |
||||
|
LD A,(NABUKB_KEY) ; GET THE BUFFERED KEY |
||||
|
LD E,A ; PUT IN E FOR RETURN |
||||
|
XOR A ; ZERO TO ACCUM |
||||
|
LD C,A ; NO SCANCODE |
||||
|
LD D,A ; NO KEYSTATE |
||||
|
LD (NABUKB_KSTAT),A ; CLEAR KEY WAITING STATUS |
||||
|
RET ; AND RETURN |
||||
|
; |
||||
|
; HELPER ROUTINE TO WRITE |
||||
|
; |
||||
|
NABUKB_PUT: |
||||
|
OUT (NABUKB_IOSTAT),A |
||||
|
NOP |
||||
|
NOP |
||||
|
NOP |
||||
|
NOP |
||||
|
NOP |
||||
|
RET |
||||
|
; |
||||
|
; |
||||
|
; |
||||
|
NABUKB_KSTAT .DB 0 ; KEY STATUS |
||||
|
NABUKB_KEY .DB 0 ; KEY BUFFER |
||||
|
; |
||||
|
; THIS TABLE TRANSLATES THE NABU KEYBOARD SPECIAL CHARS INTO |
||||
|
; ANALOGOUS ROMWBW STANDARD SPECIAL CHARACTERS. THE TABLE STARTS WITH |
||||
|
; NABU KEY CODE $E0 AND HANDLES $20 POSSIBLE VALUES ($E0-$FF) |
||||
|
; THE SPECIAL KEYS SEND A SPECIFIC KEYCODE TO INDICATE DOWN (KEY |
||||
|
; PRESSED) AND UP (KEY RELEASED). WE WILL ARBITRARILY CHOOSE TO |
||||
|
; RESPOND TO KEY PRESSED. a TRANSLATION VALUE OF $00 MEANS THAT THE |
||||
|
; KEY CODE SHOULD BE DISCARDED. |
||||
|
; |
||||
|
NABUKB_XTBL: |
||||
|
.DB $F9 ; $E0, RIGHT ARROW (DN) -> RIGHT ARROW |
||||
|
.DB $F8 ; $E1, LEFT ARROW (DN) -> LEFT ARROW |
||||
|
.DB $F6 ; $E2, UP ARROW (DN) -> UP ARROW |
||||
|
.DB $F7 ; $E3, DOWN ARROW (DN) -> DOWN ARROW |
||||
|
.DB $F5 ; $E4, PAGE RIGHT (DN) -> PAGE DOWN |
||||
|
.DB $F4 ; $E5, PAGE LEFT (DN) -> PAGE UP |
||||
|
.DB $F3 ; $E6, NO (DN) -> END |
||||
|
.DB $F2 ; $E7, YES (DN) -> HOME |
||||
|
.DB $EE ; $E8, SYM (DN) -> SYSRQ |
||||
|
.DB $EF ; $E9, PAUSE (DN) -> PAUSE |
||||
|
.DB $00 ; $EA, TV/NABU (DN) -> APP |
||||
|
.DB $00 ; $EB, N/A |
||||
|
.DB $00 ; $EC, N/A |
||||
|
.DB $00 ; $ED, N/A |
||||
|
.DB $00 ; $EE, N/A |
||||
|
.DB $00 ; $EF, N/A |
||||
|
.DB $00 ; $F0, RIGHT ARROW (UP) |
||||
|
.DB $00 ; $F1, LEFT ARROW (UP) |
||||
|
.DB $00 ; $F2, UP ARROW (UP) |
||||
|
.DB $00 ; $F3, DOWN ARROW (UP) |
||||
|
.DB $00 ; $F4, PAGE RIGHT (UP) |
||||
|
.DB $00 ; $F5, PAGE LEFT (UP) |
||||
|
.DB $00 ; $F6, NO (UP) |
||||
|
.DB $00 ; $F7, YES (UP) |
||||
|
.DB $00 ; $F8, SYM (UP) |
||||
|
.DB $00 ; $F9, PAUSE (UP) |
||||
|
.DB $00 ; $FA, TV/NABU (UP) |
||||
|
.DB $00 ; $FB, N/A |
||||
|
.DB $00 ; $FC, N/A |
||||
|
.DB $00 ; $FD, N/A |
||||
|
.DB $00 ; $FE, N/A |
||||
|
.DB $00 ; $FF, N/A |
||||
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue