mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-07 15:03:13 -06:00
Compare commits
18 Commits
v3.5.0-dev
...
v3.5.0-dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2788fa4fdf | ||
|
|
1468cecfad | ||
|
|
8f75441317 | ||
|
|
007e8a372a | ||
|
|
7606abb8f3 | ||
|
|
e3192bfbe6 | ||
|
|
9d7adbec63 | ||
|
|
2d1811dcb4 | ||
|
|
cfa86a9f2a | ||
|
|
7a663e2a3c | ||
|
|
1a73a9614b | ||
|
|
660bb20bba | ||
|
|
f03dcf7193 | ||
|
|
64dbf4ff35 | ||
|
|
ce98947d07 | ||
|
|
5d92341189 | ||
|
|
2a501566d7 | ||
|
|
736e4e276c |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -3,7 +3,7 @@
|
||||
**RomWBW ReadMe** \
|
||||
Version 3.5 \
|
||||
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
|
||||
01 Dec 2024
|
||||
05 Dec 2024
|
||||
|
||||
# Overview
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
RomWBW ReadMe
|
||||
Wayne Warthen (wwarthen@gmail.com)
|
||||
01 Dec 2024
|
||||
05 Dec 2024
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -398,23 +398,23 @@ system configuration.
|
||||
|
||||
### Basic Operation
|
||||
|
||||
The application is an interactive application it does not have command line syntax.
|
||||
The application is an interactive application; it does not have a command line syntax.
|
||||
Instead commands are executed from within the application in a command line structure.
|
||||
|
||||
When you first start the (`SYSCONF`) utility it will display the current switches
|
||||
followed by a command listing.
|
||||
|
||||
When you first run the (`SYSCONF`) utility the NVRAM will be uninitialised, and can
|
||||
be initialised using the (R)eset command, which write default values to NVRAM.
|
||||
be initialised using the (R)eset command, which writes default values to NVRAM.
|
||||
|
||||
Updates are done immediately to NVRAM as you enter them, i.e. there is no confirm
|
||||
changes step. If you make an incorrect changes you simply need to enter a new
|
||||
changes step. If you make any incorrect changes, you simply need to enter a new
|
||||
command to set the Switch value correctly.
|
||||
|
||||
Once a change has been made it is available, however may not take effect until
|
||||
Once a change has been made it is available, however it may not take effect until
|
||||
the next system reboot. This is dependent on the Switch itself.
|
||||
|
||||
If no NVRAM is provided by your hardware then running this application will just
|
||||
If no NVRAM is provided by your hardware, then running this application will just
|
||||
report the missing hardware and exit immediately.
|
||||
|
||||
To exit from the application use the (Q)uit command.
|
||||
@@ -445,7 +445,7 @@ character is used to delimit parameters in the command.
|
||||
|
||||
This switch will define if the system will perform auto boot at the RomWBW boot prompt.
|
||||
Enabling this will not prevent a user from typing a boot command, so long as the timeout is not
|
||||
exceeded. When configured this replaces the (`BOOT_DEFAULT`) variable
|
||||
exceeded. When configured this replaces the (`AUTO_CMD`) variable
|
||||
defined in build configuration.
|
||||
|
||||
Making changes to auto boot has no affect until the next reboot.
|
||||
@@ -465,13 +465,13 @@ Making changes to auto boot has no affect until the next reboot.
|
||||
| S AB E,10 | Enable Auto Boot with 10 second delay |
|
||||
| S AB D | Disable Auto Boot |
|
||||
|
||||
#### Default Boot (DB)
|
||||
#### Boot Options (BO)
|
||||
|
||||
This switch will define the default boot command to be executed when pressing enter
|
||||
at the RomWBW boot prompt. When configured this replaces the (`BOOT_TIMEOUT`) variable
|
||||
defined in build configuration.
|
||||
This switch will define the boot command to be executed when auto boot is
|
||||
enabled. When configured this replaces the (`AUTO_CMD`) variable
|
||||
defined in the ROM build configuration.
|
||||
|
||||
Making changes to auto boot has no affect until the next reboot.
|
||||
Making changes to boot options has no affect until the next reboot.
|
||||
|
||||
**Arguments**
|
||||
|
||||
@@ -487,8 +487,8 @@ Making changes to auto boot has no affect until the next reboot.
|
||||
|
||||
| Command | Description |
|
||||
|-------------|----------------------------------------------------------|
|
||||
| S DB D,2,14 | Set the default boot from Disk; Unit 2, Slice 14 |
|
||||
| S DB R,M | Set the default boot to be the (M)onitor Rom Application |
|
||||
| S BO D,2,14 | Set the default boot from Disk; Unit 2, Slice 14 |
|
||||
| S BO R,M | Set the default boot to be the (M)onitor Rom Application |
|
||||
|
||||
## CP/M 2.2
|
||||
|
||||
|
||||
@@ -531,7 +531,7 @@ The following switch ID's are defined, and described in sections below.
|
||||
| Switch Number | Name | Description |
|
||||
|---------------|--------------|-----------------------------------------------|
|
||||
| 0x00 | -reserved- | Reserved |
|
||||
| 0x01 | Default Boot | Default boot, either a Rom App or Disk Boot |
|
||||
| 0x01 | Boot Options | ROM or Disk Boot Settings |
|
||||
| 0x02 | -n/a- | -n/a- high order byte of previous switch |
|
||||
| 0x03 | Auto Boot | Automatically boot enabled without user input |
|
||||
| 0x04 - 0xFE | -future- | Future general usage |
|
||||
@@ -544,18 +544,19 @@ the bytes in NVRAM to check for authenticity before using the configuration.
|
||||
|-------------|--------------|-----------------------------------|
|
||||
| 0x00 | Header Byte | Header Signature Byte 'W' |
|
||||
| 0x01 - 0x03 | Switch Data | Actual Switch Data |
|
||||
| 0x04 | Parity Check | Parity byte to check authenticity |
|
||||
| 0x04 | Parity Check | Checksum byte to check integrity |
|
||||
|
||||
The above data is copied into the HBIOS Configuration Block (HCB) at startup at
|
||||
the location starting at CB_SWITCHES.
|
||||
|
||||
### Default Boot (NVSW_DEFBOOT)
|
||||
### Boot Options (NVSW_BOOTOPTS)
|
||||
|
||||
16 bit Switch defining the default Rom application or Disk device to boot.
|
||||
16 bit Switch defining the ROM application or Disk device to boot if
|
||||
automatic booting is enabled.
|
||||
|
||||
| Bit 15 | Bits 14-8 | Bits 7-0 |
|
||||
|-------------|-------------------|--------------------|
|
||||
| 1 = Rom App | -undefined- | App to Boot (Char) |
|
||||
| 1 = ROM App | -undefined- | App to Boot (Char) |
|
||||
| 0 = Disk | Disk Unit (0-127) | Disk Slice (0-255) |
|
||||
|
||||
### Auto Boot (NVSW_AUTOBOOT)
|
||||
|
||||
@@ -905,24 +905,24 @@ some limited configuration option options inside this NVRAM.
|
||||
Several configuration options are currently supported, these are known as Switches
|
||||
|
||||
* Specify Automatic boot at startup, after an optional delay (AB)
|
||||
* Define the Default Disk or ROM App to be booted at startup (DB)
|
||||
* Define the Disk or ROM App to be booted at for automatic boot (BO)
|
||||
|
||||
RomWBW uses bytes located at the start of RTC NVRAM, and includes a Parity check of
|
||||
the bytes in NVRAM to check for authenticity before using the configuration.
|
||||
RomWBW uses bytes located at the start of RTC NVRAM, and includes a checksum of
|
||||
the bytes in NVRAM to check for integrity before using the configuration.
|
||||
|
||||
Initially NVRAM has to be reset (with default values), before it can be used.
|
||||
As well as setting defaults, it also writes the correct parity, and allows the
|
||||
NVRAM to be accessed and to store RomWBW config.
|
||||
As well as setting defaults, it also writes the correct checksum, and allows the
|
||||
NVRAM to be accessed and to store the RomWBW config.
|
||||
|
||||
This is an explicit step that must be done, as any existing data stored is overitten.
|
||||
If you are using NVRAM for other purposes then you can continue to do so
|
||||
This is an explicit step that must be done, as any existing data stored is overwritten.
|
||||
If you are using NVRAM for other purposes, then you can continue to do so
|
||||
so long as you do NOT perform this Reset step.
|
||||
|
||||
NVRAM may also need to be reset in these circumstances
|
||||
NVRAM may also need to be reset in these circumstances:
|
||||
|
||||
* When there has been a loss of power to the NVRAM.
|
||||
* When upgrading to a new RomWBW version, or a RomWBW version that has new switches.
|
||||
* If the NVRAM has been overitten by another application.
|
||||
* If the NVRAM has been overwritten by another application.
|
||||
|
||||
If you want to continue to use NVRAM in your applications you may want to consider storing
|
||||
your data above the RomWBW Switch data.
|
||||
|
||||
@@ -173,6 +173,7 @@ 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]
|
||||
MKYKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
KBDINTS .EQU FALSE ; ENABLE KBD (PS2) KEYBOARD INTERRUPTS
|
||||
;
|
||||
DSRTCENABLE .EQU FALSE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
|
||||
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTCMODE_[STD|MFPIC|K80W]
|
||||
|
||||
@@ -921,3 +921,11 @@ CVDU_IDAT:
|
||||
.DB KBDMODE_PS2 ; PS/2 8242 KEYBOARD CONTROLLER
|
||||
.DB CVDU_KBDST
|
||||
.DB CVDU_KBDDATA
|
||||
;
|
||||
; IF WE ARE USING PS2 INTERRUPTS, WE NEED TO PASS THE INSTANCE
|
||||
; DATA POINTER TO PS2IFACE.INC VIA KBDIDAT FOR USE BY THE INTERRUPT
|
||||
; HANDLER IN PS2IFACE.INC.
|
||||
;
|
||||
#IF (KBDINTS)
|
||||
KBDIDAT .EQU CVDU_IDAT
|
||||
#ENDIF
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
;======================================================================
|
||||
; VIDEO DRIVER FOR FPGA VGA
|
||||
; http://s100computers.com/My%20System%20Pages/FPGA%20Z80%20SBC/FPGA%20Z80%20SBC.htm
|
||||
; http://s100computers.com/My%20System%20Pages/FPGA%20Z80%20SBC/FPGA%20Z80%20SBC.htm
|
||||
;
|
||||
; WRITTEN BY: WAYNE WARTHEN -- 9/2/2024
|
||||
;======================================================================
|
||||
@@ -36,8 +36,8 @@ FV_CTL .EQU FV_BASE+2 ; VGA CONTROL PORT
|
||||
;
|
||||
FV_BUFCTL .EQU $08
|
||||
;
|
||||
FV_KBDDATA .EQU $03
|
||||
FV_KBDST .EQU $02
|
||||
FV_KBDDATA .EQU $03 ; KBD CTLR DATA PORT
|
||||
FV_KBDST .EQU $02 ; KBD CTLR STATUS/CMD PORT
|
||||
;
|
||||
FV_ROWS .EQU 40
|
||||
FV_COLS .EQU 80
|
||||
|
||||
@@ -350,3 +350,11 @@ GDC_IDAT:
|
||||
.DB KBDMODE_PS2 ; PS/2 8242 KEYBOARD CONTROLLER
|
||||
.DB GDC_KBDST
|
||||
.DB GDC_KBDDATA
|
||||
;
|
||||
; IF WE ARE USING PS2 INTERRUPTS, WE NEED TO PASS THE INSTANCE
|
||||
; DATA POINTER TO PS2IFACE.INC VIA KBDIDAT FOR USE BY THE INTERRUPT
|
||||
; HANDLER IN PS2IFACE.INC.
|
||||
;
|
||||
#IF (KBDINTS)
|
||||
KBDIDAT .EQU GDC_IDAT
|
||||
#ENDIF
|
||||
|
||||
@@ -462,28 +462,28 @@ CB_HEAPTOP .DW 0
|
||||
;
|
||||
.FILL (HCB + $30 - $),0
|
||||
;
|
||||
; First byte (header) of NVRAM = "W" if fully initialised, or a ststus byte
|
||||
; First byte (header) of NVRAM = "W" if fully initialised, or a status byte
|
||||
; = 0 if no NVRAM detected, or = 1 If NVR exists, but not configured
|
||||
CB_SWITCHES .DB 0 ; this byte is set during init
|
||||
;
|
||||
; Byte 0: (L)
|
||||
; Bit 7-0 DISK BOOT SLice Number to Boot -> default = 0
|
||||
; Bit 7-0 DISK BOOT Slice Number to Boot -> default = 0
|
||||
; Bit 7-0 ROM BOOT (alpha character) Application to boot -> default = "H"
|
||||
; Byte 1: (H)
|
||||
; Bit 7 - ROM/DISK - Rom or Disk Boot -> Default=ROM=1 (BOOT_DEFAULT is Numeric/Alpha)
|
||||
; Bit 7 - ROM/DISK - Rom or Disk Boot -> Default=ROM=1 (AUTO_CMD is Numeric/Alpha)
|
||||
; Bit 6-0 - DISK BOOT Disk Unit to Boot (0-127) -> default = 0
|
||||
CB_SWDEFBOOT .DB 'H' ; (WORD) DEFAULT BOOT NVR OPTIONS. USED By ROMLDR
|
||||
.DB DBOOT_ROM ; Default Boot - ROM Application
|
||||
CB_SW_AB_OPT .DB 'H' ; (WORD) AUTO BOOT NVR OPTIONS. USED By ROMLDR
|
||||
.DB BOPTS_ROM ; Boot Opts - ROM Application
|
||||
;
|
||||
; Byte 0: (L)
|
||||
; Bit 7-6 - Reserved
|
||||
; Bit 5 - AUTO BOOT Auto boot, default=false (BOOT_TIMEOUT != -1)
|
||||
; Bit 4 - Reserved
|
||||
; Bit 3-0 - BOOT_TIMEOUT in seconds (0-15) 0=immediate -> default=3
|
||||
CB_SWAUTOB .DB 0 ; AUTO BOOT NVR OPTIONS. USED By ROMLDR
|
||||
CB_SW_AB_CFG .DB 0 ; AUTO BOOT NVR CONFIG. USED By ROMLDR
|
||||
;
|
||||
; CHECKSUM
|
||||
CB_SWITCHCK .DB 0 ; CHECKSUM (XOR=0), INCLUDES HEADER and CB_VERSION
|
||||
CB_SW_CKSUM .DB 0 ; CHECKSUM (XOR=0), INCLUDES HEADER and CB_VERSION
|
||||
;
|
||||
; STANDARD BANK ID'S START AT $D8. DEFAULT VALUES FOR 512KB SYSTEM WITH NO RESERVED BANKS
|
||||
;
|
||||
@@ -1137,7 +1137,7 @@ HBX_INTSTK .EQU $
|
||||
; --- -------------- -------------- -------------- -------------- --------------
|
||||
; 0 CTC0A INT1 -+ -+ -+ HCCARCV -+
|
||||
; 1 CTC0B INT2 | | | HCCASND |
|
||||
; 2 CTC0C TIM0 | | IM2 | IM2 NABUKB | IM2
|
||||
; 2 CTC0C TIM0 | | IM2 PS2KBD | IM2 NABUKB | IM2
|
||||
; 3 CTC0D TIM1 | | INT | INT VDP | INT
|
||||
; 4 UART0 DMA0 | Z180 UART0 | VEC UART0 | VEC OPTCRD0 | VEC
|
||||
; 5 UART1 DMA1 | CPU UART1 | GEN UART1 | GEN OPTCRD1 | GEN
|
||||
@@ -2361,7 +2361,7 @@ HB_CPU1:
|
||||
CALL SN76489_PREINIT
|
||||
#ENDIF
|
||||
#IF (DSRTCENABLE)
|
||||
; THE DSRTC NEEDS TO BE INITIALIZED IN ORDER TO PERFROM THE
|
||||
; THE DSRTC NEEDS TO BE INITIALIZED IN ORDER TO PERFORM THE
|
||||
; CPU SPEED DETECTION BELOW.
|
||||
CALL DSRTC_PREINIT
|
||||
#ENDIF
|
||||
@@ -3030,6 +3030,23 @@ HB_SPDTST:
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
; ENABLE INTERRUPTS
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
;
|
||||
;;;CALL HB_PREINT_HOOKS ; HACK TO ALLOW SOME DRIVERS TO DO PRE INTERRUPT STUFF
|
||||
;
|
||||
#IFDEF TESTING
|
||||
;
|
||||
INTTEST:
|
||||
; TEST TO SEE IF SOMEBODY ENABLED INTS EARLY!
|
||||
LD A,I
|
||||
JP PO,INTTEST_Z ; IF PO, INTS DISABLED AS EXPECTED
|
||||
PRTX(STR_INTWARN) ; WARNING
|
||||
JR INTTEST_Z ; CONTINUE
|
||||
;
|
||||
STR_INTWARN .TEXT "\r\n\r\nWARNING: INTERRUPTS ENABLED TOO EARLY!!!$"
|
||||
;
|
||||
INTTEST_Z:
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
HB_EI ; INTERRUPTS SHOULD BE OK NOW
|
||||
;
|
||||
@@ -3407,7 +3424,7 @@ NVR_INIT:
|
||||
JR NZ, NVR_INIT_DEF ; failed to correclty read data
|
||||
;
|
||||
CALL NVSW_CHECKSUM ; checksum calc into A
|
||||
LD HL,CB_SWITCHCK ; address of HCB switch checksum value
|
||||
LD HL,CB_SW_CKSUM ; address of HCB switch checksum value
|
||||
CP (HL) ; compare Caculated Check, with hcb Check Value
|
||||
JR Z,NVR_INIT_END ; The same so success
|
||||
NVR_INIT_DEF:
|
||||
@@ -7611,7 +7628,7 @@ NVSW_RESET:
|
||||
;
|
||||
NVSW_UPDATE:
|
||||
CALL NVSW_CHECKSUM ; CALC checksum into A
|
||||
LD (CB_SWITCHCK),A ; store checksum in hcb
|
||||
LD (CB_SW_CKSUM),A ; store checksum in hcb
|
||||
CALL NVSW_WRITE ; write the bytes to nvr
|
||||
RET Z ; Successful write, return
|
||||
; write failed for some reason ???
|
||||
@@ -7695,8 +7712,8 @@ NVSW_WRITE2:
|
||||
;
|
||||
NVSW_DEFAULT:
|
||||
.DB 'W' ; Signature Byte
|
||||
.DB 'H' ; Default Boot - Rom Application [H]elp
|
||||
.DB DBOOT_ROM ; Default Boot - ROM Application
|
||||
.DB 'H' ; Auto Boot - Rom Application [H]elp
|
||||
.DB BOPTS_ROM ; Auto Boot - ROM Application
|
||||
.DB 0 ; Auto Boot - NO auto boot
|
||||
; Configure above byte from (BOOT_TIMEOUT != -1)
|
||||
; SIZE OF NVR BYTES
|
||||
@@ -9357,6 +9374,15 @@ SIZ_EZ80DRVS .EQU $ - ORG_EZ80DRVS
|
||||
MEMECHO "RTCDEF="
|
||||
MEMECHO RTCDEF
|
||||
MEMECHO "\n"
|
||||
;;;;
|
||||
;;;; PRE-INTERRUPT HOOKS
|
||||
;;;;
|
||||
;;;HB_PREINT_HOOKS:
|
||||
;;;;
|
||||
;;;#IF (KBDENABLE)
|
||||
;;; CALL KBD_PREINT_HOOK
|
||||
;;;#ENDIF
|
||||
;;; RET
|
||||
;
|
||||
HB_DRIVERS_END .EQU $
|
||||
;
|
||||
|
||||
@@ -121,7 +121,7 @@ BF_SYSGET_VDAFN .EQU $41 ; GET VDA UNIT FN/DATA ADR
|
||||
BF_SYSGET_SNDCNT .EQU $50 ; GET VDA UNIT COUNT
|
||||
BF_SYSGET_SNDFN .EQU $51 ; GET SND UNIT FN/DATA ADR
|
||||
;
|
||||
BF_SYSGET_SWITCH .EQU $C0 ; GET NON VOLITILE SWITCH VALUE
|
||||
BF_SYSGET_SWITCH .EQU $C0 ; GET NON VOLATILE SWITCH VALUE
|
||||
BF_SYSGET_TIMER .EQU $D0 ; GET CURRENT TIMER VALUE
|
||||
BF_SYSGET_SECS .EQU $D1 ; GET CURRENT SECONDS VALUE
|
||||
BF_SYSGET_BOOTINFO .EQU $E0 ; GET BOOT INFORMATION
|
||||
@@ -132,7 +132,7 @@ BF_SYSGET_CPUSPD .EQU $F3 ; GET CLOCK SPEED & WAIT STATES
|
||||
BF_SYSGET_PANEL .EQU $F4 ; GET FRONT PANEL SWITCHES VAL
|
||||
BF_SYSGET_APPBNKS .EQU $F5 ; GET APP BANK INFORMATION
|
||||
;
|
||||
BF_SYSSET_SWITCH .EQU $C0 ; SET NON VOLITILE SWITCH VALUE
|
||||
BF_SYSSET_SWITCH .EQU $C0 ; SET NON VOLATILE SWITCH VALUE
|
||||
BF_SYSSET_TIMER .EQU $D0 ; SET TIMER VALUE
|
||||
BF_SYSSET_SECS .EQU $D1 ; SET SECONDS VALUE
|
||||
BF_SYSSET_BOOTINFO .EQU $E0 ; SET BOOT INFORMATION
|
||||
@@ -339,18 +339,18 @@ SW_OPT .EQU %00000111 ; SLICE/ROM APP
|
||||
;
|
||||
; NVRAM SWITCHES
|
||||
;
|
||||
; used for identifying Non Volitile Switches
|
||||
NVSW_DEFBOOT .EQU 1 ; Default Boot NVRAM Switch
|
||||
; used for identifying Non Volatile Switches
|
||||
NVSW_BOOTOPTS .EQU 1 ; Boot Options NVRAM Switch
|
||||
NVSW_AUTOBOOT .EQU 3 ; Auto Boot NVRAM Switch
|
||||
;
|
||||
; NVRAM SWITCH BIT MASKS
|
||||
;
|
||||
; AUTO BOOT MASKS
|
||||
ABOOT_AUTO .EQU %00100000 ; AUTO=1/MANUAL=0 BOOT
|
||||
ABOOT_TIMEOUT .EQU %00001111 ; MENU TIMEOUT IN SECONDS, 0=IMMEDIAGE
|
||||
ABOOT_TIMEOUT .EQU %00001111 ; MENU TIMEOUT IN SECONDS, 0=IMMEDIATE
|
||||
; DEFAULT BOOT MASKS
|
||||
DBOOT_ROM .EQU %10000000 ; ROM=1/DISK=0 FLAG
|
||||
DBOOT_UNIT .EQU %01111111 ; DISK UNIT
|
||||
BOPTS_ROM .EQU %10000000 ; ROM=1/DISK=0 FLAG
|
||||
BOPTS_UNIT .EQU %01111111 ; DISK UNIT
|
||||
;
|
||||
; MEDIA ID VALUES
|
||||
;
|
||||
@@ -510,8 +510,8 @@ HCB_BOOTMODE .EQU $14 ; HBIOS BOOTMODE (BYTE)
|
||||
HCB_HEAP .EQU $20 ; DWORD ADDRESS OF START OF HEAP
|
||||
HCB_HEAPTOP .EQU $22 ; DWORD ADDRESS OF TOP OF HEAP
|
||||
;
|
||||
HCB_SW_DBOOT .EQU $31 ; DEFAULT BOOT CONFIG (WORD)
|
||||
HCB_SW_AUTOB .EQU $33 ; AUTO BOOT CONFIG (BYTE)
|
||||
HCB_SW_BOPTS .EQU $31 ; BOOT OPTIONS (WORD)
|
||||
HCB_SW_AUTOB .EQU $33 ; AUTO BOOT (BYTE)
|
||||
;
|
||||
; MEMORY BANK IDS (ONE BYTE EACH)
|
||||
HCB_BIDCOM .EQU $D8 ; COMMON BANK (UPPER 32K)
|
||||
|
||||
@@ -4,6 +4,13 @@
|
||||
;
|
||||
; ORIGINAL CODE BY DR JAMES MOXHAM
|
||||
; ROMWBW ADAPTATION BY WAYNE WARTHEN
|
||||
; INTERRUPT DRIVER ADDITION BY PHIL SUMMERS
|
||||
;
|
||||
;
|
||||
; IN DEBUG MODE:
|
||||
; >>nn SHOWS HEX COMMAND nn BEING WRITTEN TO THE COMMAND PORT
|
||||
; >nn SHOWS HEX VALUE nn BEING WRITTEN TO THE DATA PORT
|
||||
; <nn SHOWS HEX VALUE READ FROM DATA PORT
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
; TODO:
|
||||
@@ -42,7 +49,7 @@ KBD_NUMPAD .EQU 80H ; BIT 7, NUM PAD KEY (KEY PRESSED IS ON NUM PAD)
|
||||
;
|
||||
KBD_DEFRPT .EQU $40 ; DEFAULT REPEAT RATE (.5 SEC DELAY, 30CPS)
|
||||
KBD_DEFSTATE .EQU KBD_NUMLCK ; DEFAULT STATE (NUM LOCK ON)
|
||||
;
|
||||
KBD_ACK .EQU $FA ; CMD ACKNOWLEDGE
|
||||
;__________________________________________________________________________________________________
|
||||
; DATA
|
||||
;__________________________________________________________________________________________________
|
||||
@@ -59,14 +66,43 @@ KBD_IDLE .DB 0 ; IDLE COUNT
|
||||
DEVECHO "KBD: ENABLED\n"
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
; HARDWARE LEVEL INTERFACE
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
#INCLUDE "ps2iface.inc"
|
||||
;;;;
|
||||
;;;; HACK TO ENSURE PS/2 CONTROLLER INTERRUPTS ARE TURNED OFF!!!
|
||||
;;;;
|
||||
;;;KBD_PREINT_HOOK:
|
||||
;;;#IF (KBDINTS)
|
||||
;;; LD IY,KBDIDAT
|
||||
;;; LD A,$60 ; SET COMMAND REGISTER
|
||||
;;; CALL KBD_PUTCMD ; SEND IT
|
||||
;;; LD A,$20 ; XLAT DISABLED, MOUSE DISABLED, NO INTS
|
||||
;;; CALL KBD_PUTDATA ; SEND IT
|
||||
;;;;
|
||||
;;; ; FLUSH ANY PENDING OUTPUT
|
||||
;;; LD B,16
|
||||
;;;KBD_PREINT_HOOK1:
|
||||
;;; CALL KBD_IN_P
|
||||
;;; DJNZ KBD_PREINT_HOOK1
|
||||
;;;#ENDIF
|
||||
RET
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
; KEYBOARD INITIALIZATION
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
KBD_INIT:
|
||||
CALL NEWLINE ; FORMATTING
|
||||
PRTS("KBD: IO=0x$")
|
||||
LD A,(IY+KBD_DAT)
|
||||
PRTS("KBD: IO=0x$") ; DISPLAY
|
||||
LD A,(IY+KBD_DAT) ; PORT SETTING
|
||||
CALL PRTHEXBYTE
|
||||
#IF ((INTMODE == 2) & KBDINTS)
|
||||
PRTS(" INT #$") ; DISPLAY
|
||||
LD A,INT_PS2KB ; INTERRUPT SETTING
|
||||
CALL PRTDECB
|
||||
#ENDIF
|
||||
;
|
||||
LD A,KBD_DEFRPT ; GET DEFAULT REPEAT RATE
|
||||
LD (KBD_REPEAT),A ; SAVE IT
|
||||
@@ -77,9 +113,11 @@ KBD_INIT:
|
||||
CP KBDMODE_VRC ; VRC?
|
||||
JR Z,KBD_INIT1 ; IF SO, MUST ASSUME PRESENT
|
||||
;
|
||||
HB_DI ; DISABLE INTERRUPTS WHILE WE PROBE
|
||||
LD A,$AA ; CONTROLLER SELF TEST
|
||||
CALL KBD_PUTCMD ; SEND IT
|
||||
CALL KBD_GETDATA ; CONTROLLER SHOULD RESPOND WITH $55 (ACK)
|
||||
CALL KBD_GETDATA_P ; CONTROLLER SHOULD RESPOND WITH $55 (ACK)
|
||||
HB_EI ; RESTORE INTERRUPTS
|
||||
;
|
||||
CP $55 ; IS IT THERE?
|
||||
JR Z,KBD_INIT1 ; IF SO, CONTINUE
|
||||
@@ -87,6 +125,11 @@ KBD_INIT:
|
||||
RET ; BAIL OUT
|
||||
;
|
||||
KBD_INIT1:
|
||||
#IF ((INTMODE == 2) & KBDINTS)
|
||||
; CALL KBDQINIT ; INITIALIZE QUEUE
|
||||
LD HL,KBD_INT ; INSTALL VECTOR
|
||||
LD (IVT(INT_PS2KB)),HL ; IVT INDEX
|
||||
#ENDIF
|
||||
PRTS(" MODE=$") ; TAG
|
||||
LD A,(IY+KBD_MODE) ; GET MODE VALUE
|
||||
LD DE,KBD_STR_MODEPS2
|
||||
@@ -101,8 +144,12 @@ KBD_INIT2:
|
||||
;
|
||||
LD A,$60 ; SET COMMAND REGISTER
|
||||
CALL KBD_PUTCMD ; SEND IT
|
||||
; LD A,$60 ; XLAT ENABLED, MOUSE DISABLED, NO INTS
|
||||
|
||||
#IF ((INTMODE == 2) & KBDINTS)
|
||||
LD A,$21 ; XLAT DISABLED, MOUSE DISABLED, WITH INTS
|
||||
#ELSE
|
||||
LD A,$20 ; XLAT DISABLED, MOUSE DISABLED, NO INTS
|
||||
#ENDIF
|
||||
CALL KBD_PUTDATA ; SEND IT
|
||||
|
||||
CALL KBD_GETDATA ; GOBBLE UP $AA FROM POWER UP, AS NEEDED
|
||||
@@ -159,35 +206,6 @@ KBD_FLUSH:
|
||||
RET
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
; HARDWARE INTERFACE
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
KBD_IST:
|
||||
;
|
||||
; KEYBOARD INPUT STATUS
|
||||
; A=0, Z SET FOR NOTHING PENDING, OTHERWISE DATA PENDING
|
||||
;
|
||||
LD C,(IY+KBD_ST) ; STATUS PORT
|
||||
EZ80_IO
|
||||
IN A,(C) ; GET STATUS
|
||||
AND $01 ; ISOLATE INPUT PENDING BIT
|
||||
RET
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
KBD_OST:
|
||||
;
|
||||
; KEYBOARD OUTPUT STATUS
|
||||
; A=0, Z SET FOR NOT READY, OTHERWISE READY TO WRITE
|
||||
;
|
||||
LD C,(IY+KBD_ST) ; STATUS PORT
|
||||
EZ80_IO
|
||||
IN A,(C) ; GET STATUS
|
||||
AND $02 ; ISOLATE OUTPUT EMPTY BIT
|
||||
XOR $02 ; FLIP IT FOR APPROPRIATE RETURN VALUES
|
||||
RET
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
KBD_PUTCMD:
|
||||
;
|
||||
; PUT A CMD BYTE FROM A TO THE KEYBOARD INTERFACE WITH TIMEOUT
|
||||
@@ -211,9 +229,7 @@ KBD_PUTCMD1:
|
||||
CALL PC_GT
|
||||
CALL PRTHEXBYTE
|
||||
#ENDIF
|
||||
LD C,(IY+KBD_CMD) ; COMMAND PORT
|
||||
EZ80_IO
|
||||
OUT (C),A ; WRITE IT
|
||||
CALL KBD_CMDOUT ; OUTPUT CMD TO PORT
|
||||
KBD_PUTCMD2:
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
@@ -241,30 +257,28 @@ KBD_PUTDATA1:
|
||||
CALL PC_GT
|
||||
CALL PRTHEXBYTE
|
||||
#ENDIF
|
||||
LD C,(IY+KBD_DAT) ; DATA PORT
|
||||
EZ80_IO
|
||||
OUT (C),A ; WRITE IT
|
||||
CALL KBD_DTAOUT ; WRITE IT
|
||||
KBD_PUTDATA2:
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
KBD_GETDATA:
|
||||
;
|
||||
; GET A RAW DATA BYTE FROM KEYBOARD INTERFACE INTO A WITH TIMEOUT
|
||||
KBD_GETDATA_P:
|
||||
;
|
||||
; GET A RAW DATA BYTE FROM KEYBOARD INTERFACE INTO A WITH TIMEOUT.
|
||||
; KBD_GETDATA_P ALWAYS READS A BYTE FROM THE KEYBOARD CONTROLLER PORT.
|
||||
;
|
||||
LD B,KBD_WAITTO ; SETUP TO LOOP
|
||||
KBD_GETDATA0:
|
||||
CALL KBD_IST ; GET INPUT REGISTER STATUS
|
||||
JR NZ,KBD_GETDATA1 ; BYTE PENDING, GO GET IT
|
||||
KBD_GETDATA0_P:
|
||||
CALL KBD_IST_P ; GET INPUT REGISTER STATUS
|
||||
JR NZ,KBD_GETDATA1_P ; BYTE PENDING, GO GET IT
|
||||
CALL DELAY ; WAIT A BIT
|
||||
DJNZ KBD_GETDATA0 ; LOOP UNTIL COUNTER EXHAUSTED
|
||||
DJNZ KBD_GETDATA0_P ; LOOP UNTIL COUNTER EXHAUSTED
|
||||
XOR A ; NO DATA, RETURN ZERO
|
||||
RET
|
||||
KBD_GETDATA1:
|
||||
LD C,(IY+KBD_DAT) ; DATA PORT
|
||||
EZ80_IO
|
||||
IN A,(C) ; GET THE DATA VALUE
|
||||
KBD_GETDATA1_P:
|
||||
CALL KBD_IN_P ; GET A KEY
|
||||
#IF (KBDTRACE >= 2)
|
||||
PUSH AF
|
||||
CALL PC_SPACE
|
||||
@@ -275,10 +289,52 @@ KBD_GETDATA1:
|
||||
OR A ; SET FLAGS
|
||||
RET
|
||||
;
|
||||
KBD_GETDATA_Q:
|
||||
;
|
||||
; GET A QUEUED DATA BYTE FROM KEYBOARD INTERFACE INTO A WITH TIMEOUT.
|
||||
; KBD_GETDATA_Q ALWAYS READS A BYTE FROM THE KEYBOARD INTERRUPT QUEUE.
|
||||
;
|
||||
#IF ((INTMODE == 2) & KBDINTS))
|
||||
;
|
||||
LD B,KBD_WAITTO ; SETUP TO LOOP
|
||||
KBD_GETDATA0_Q:
|
||||
CALL KBD_IST_Q ; GET INPUT REGISTER STATUS
|
||||
JR NZ,KBD_GETDATA1_Q ; BYTE PENDING, GO GET IT
|
||||
CALL DELAY ; WAIT A BIT
|
||||
DJNZ KBD_GETDATA0_Q ; LOOP UNTIL COUNTER EXHAUSTED
|
||||
XOR A ; NO DATA, RETURN ZERO
|
||||
RET
|
||||
KBD_GETDATA1_Q:
|
||||
CALL KBD_IN_Q ; GET A KEY
|
||||
#IF (KBDTRACE >= 2)
|
||||
PUSH AF
|
||||
CALL PC_SPACE
|
||||
CALL PC_LT
|
||||
CALL PRTHEXBYTE
|
||||
POP AF
|
||||
#ENDIF
|
||||
OR A ; SET FLAGS
|
||||
RET
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
; GET A DATA BYTE FROM KEYBOARD INTERFACE INTO A WITH TIMEOUT.
|
||||
; DEPENDING ON ASSEMBLY CONFIGURATION KBD_GETDATA READS A BYTE FROM
|
||||
; EITHER THE INTERRUPT QUEUE OR FROM THE KEYBOARD CONTROLLER PORT.
|
||||
;
|
||||
#IF ((INTMODE == 2) & KBDINTS))
|
||||
KBD_GETDATA .EQU KBD_GETDATA_Q
|
||||
KBD_GETDATA1 .EQU KBD_GETDATA1_Q
|
||||
#ELSE
|
||||
KBD_GETDATA .EQU KBD_GETDATA_P
|
||||
KBD_GETDATA1 .EQU KBD_GETDATA1_P
|
||||
#ENDIF
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
KBD_GETDATAX:
|
||||
;
|
||||
; GET A RAW DATA BYTE FROM KEYBOARD INTERFACE INTO A WITH NOTIMEOUT
|
||||
; GET A DATA BYTE FROM KEYBOARD INTERFACE INTO A WITH NO TIMEOUT
|
||||
; IF NOTHING AVAILABLE, RETURN 0.
|
||||
;
|
||||
CALL KBD_IST ; GET INPUT REGISTER STATUS
|
||||
RET Z ; NOTHING THERE, DONE
|
||||
@@ -300,7 +356,7 @@ KBD_RESET0:
|
||||
JR NZ,KBD_RESET1 ; GOT A BYTE? IF SO, GET OUT OF LOOP
|
||||
DJNZ KBD_RESET0 ; LOOP TILL COUNTER EXHAUSTED
|
||||
KBD_RESET1:
|
||||
LD A,B
|
||||
; LD A,B
|
||||
XOR A ; SIGNAL SUCCESS (RESPONSE IS IGNORED...)
|
||||
RET ; DONE
|
||||
;
|
||||
@@ -312,7 +368,7 @@ KBD_SETLEDS:
|
||||
LD A,$ED ; SET/RESET LED'S COMMAND
|
||||
CALL KBD_PUTDATA ; SEND THE COMMAND
|
||||
CALL KBD_GETDATA ; READ THE RESPONSE
|
||||
CP $FA ; MAKE SURE WE GET ACK
|
||||
CP KBD_ACK ; MAKE SURE WE GET ACK
|
||||
RET NZ ; ABORT IF NO ACK
|
||||
LD A,(KBD_STATE) ; LOAD THE STATE BYTE
|
||||
RRCA ; ROTATE TOGGLE KEY BITS AS NEEDED
|
||||
@@ -333,7 +389,7 @@ KBD_SETRPT:
|
||||
LD A,$F3 ; COMMAND = SET TYPEMATIC RATE/DELAY
|
||||
CALL KBD_PUTDATA ; SEND IT
|
||||
CALL KBD_GETDATA ; GET THE ACK
|
||||
CP $FA ; MAKE SURE WE GET ACK
|
||||
CP KBD_ACK ; MAKE SURE WE GET ACK
|
||||
RET NZ ; ABORT IF NO ACK
|
||||
LD A,(KBD_REPEAT) ; LOAD THE CURRENT RATE/DELAY BYTE
|
||||
CALL KBD_PUTDATA ; SEND IT
|
||||
|
||||
@@ -1035,7 +1035,7 @@ MKY_SCNKEY: .FILL MATRIX_ROW_COUNT, $FF
|
||||
; SET TO ZERO AFTER A SCAN CODE CONVERSION
|
||||
MKY_SCANNED: .DB 0
|
||||
;
|
||||
; F3F6: VDP-INTERUPT COUNTER THAT COUNTS FROM SCAN_INT_PERIOD TO 0, WHEN IT REACHES ZERO, THE
|
||||
; F3F6: VDP-INTERRUPT COUNTER THAT COUNTS FROM SCAN_INT_PERIOD TO 0, WHEN IT REACHES ZERO, THE
|
||||
; KEYBOARD MATRIX IS SCANNED, AND THE COUNTERS IS RESET AT SCAN_INT_PERIOD
|
||||
MKY_SCNCNT: .DB SCAN_INT_PERIOD
|
||||
|
||||
|
||||
@@ -416,7 +416,7 @@ SETPIO2:
|
||||
LD A,(IY+5) ; SET I/O DIRECTION
|
||||
OUT (C),A ; FOR MODE 3
|
||||
|
||||
SETPIO3:; INTERUPT HANDLING
|
||||
SETPIO3:; INTERRUPT HANDLING
|
||||
|
||||
JP SETPIO4
|
||||
|
||||
|
||||
239
Source/HBIOS/ps2iface.inc
Normal file
239
Source/HBIOS/ps2iface.inc
Normal file
@@ -0,0 +1,239 @@
|
||||
;__________________________________________________________________________________________________
|
||||
; HARDWARE INTERFACE FOR POLLED AND INTERRUPT DRIVEN PS2 KEYBOARD.
|
||||
;
|
||||
; IN POLLED MODE THE KEYBOARD DEVICE IS IDENTIFIED BY THE TABLE POINTED TO BY IY
|
||||
; IN INTERRUPT MODE THE KEYBOARD DEVICE IS UNKNOWN SO PREDEFINED PORT VALUES ARE USED.
|
||||
;
|
||||
; REQUIRES AN APPROPRIATE INTERRUPT JUMPER TO BE SET.
|
||||
; CURRENTLY CONFIGURED FOR INT #2 ON DUODYNE WITH I/O MULTI BOARD.
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
#IF ((INTMODE == 2) & KBDINTS))
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
; KEYBOARD QUEUE FOR INTERRUPTS
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
;
|
||||
KBDQSIZ .EQU 16 ; MUST BE POWER OF TWO, <=128
|
||||
KBDQGETX .DB 0 ; QUEUE INDEX
|
||||
KBDQPUTX .DB 0 ; QUEUE INDEX
|
||||
.DB $55 ; GUARD BYTE FOR DEBUGGING
|
||||
KBDQ .FILL KBDQSIZ,0 ; CIRCULAR KEYBOARD BUFFER
|
||||
.DB $AA ; GUARD BYTE FOR DEBUGGING
|
||||
|
||||
;__________________________________________________________________________________________________
|
||||
; RESET THE QUEUE TO EMPTY
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
;KBDQINIT:
|
||||
; XOR A
|
||||
; LD (KBDQGETX),A
|
||||
; LD (KBDQPUTX),A
|
||||
; RET
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
; KEYBOARD INTERRUPT VECTOR
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
KBD_INT:
|
||||
; CALL KBDQDBG
|
||||
LD IY,KBDIDAT
|
||||
LD C,(IY+KBD_ST) ; READ CONTROLLER STATUS
|
||||
EZ80_IO
|
||||
IN A,(C)
|
||||
AND 1
|
||||
RET Z
|
||||
LD C,(IY+KBD_DAT) ; GET THE RESPONSE
|
||||
EZ80_IO
|
||||
IN A,(C)
|
||||
; CALL KBDQPUSH ; SAVE KEYBOARD SCAN CODE
|
||||
; RET
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
; ADD A BYTE TO THE KEYBOARD QUEUE
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
KBDQPUSH: ; ADD A SCAN CODE TO THE QUEUE
|
||||
PUSH AF
|
||||
CALL KBDQFULL
|
||||
JR Z,KBDQISF ; EXIT IF THE QUEUE IS FULL
|
||||
;
|
||||
LD HL,KBDQPUTX
|
||||
LD A,(HL) ; CREATE QUEUE INDEX
|
||||
AND KBDQSIZ-1
|
||||
INC (HL) ; UPDATE INDEX
|
||||
;
|
||||
LD HL,KBDQ ; INDEX INTO THE QUEUE
|
||||
LD B,0
|
||||
LD C,A
|
||||
ADD HL,BC
|
||||
POP AF
|
||||
LD (HL),A ; SAVE THE CHARACTER IN THE QUEUE
|
||||
; CALL KBDQDBG
|
||||
;
|
||||
RET
|
||||
;
|
||||
KBDQISF:POP AF
|
||||
RET
|
||||
|
||||
KBDQFULL: ; RETURN Z IF QUEUE IS FULL
|
||||
CALL KBDQLEN ; RETURN NZ IF STILL SPACE IN QUEUE
|
||||
SUB KBDQSIZ
|
||||
RET
|
||||
#ENDIF
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
; KEYBOARD READ
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
; READ DIRECT FROM PORT
|
||||
;
|
||||
KBD_IN_P:
|
||||
LD C,(IY+KBD_DAT) ; DATA PORT
|
||||
EZ80_IO
|
||||
IN A,(C) ; GET THE DATA VALUE
|
||||
RET
|
||||
;
|
||||
; READ FROM INTERRUPT QUEUE
|
||||
;
|
||||
#IF ((INTMODE == 2) & KBDINTS))
|
||||
;
|
||||
KBD_IN_Q:
|
||||
KBDQPOP:
|
||||
CALL KBDQLEN
|
||||
RET Z ; EXIT IF THE QUEUE IS EMPTY
|
||||
;
|
||||
LD HL,KBDQGETX
|
||||
LD A,(HL) ; CREATE QUEUE INDEX
|
||||
AND KBDQSIZ-1
|
||||
INC (HL) ; UPDATE INDEX
|
||||
;
|
||||
LD HL,KBDQ ; INDEX INTO THE QUEUE
|
||||
LD B,0
|
||||
LD C,A
|
||||
ADD HL,BC
|
||||
LD A,(HL) ; GET THE CHARACTER FROM THE QUEUE
|
||||
; LD (HL),B ; DEBUG - CLEAN QUEUE
|
||||
;
|
||||
RET
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
; RETURN A BYTE TO FROM KEYBOARD QUEUE
|
||||
; NOTE THE QUEUE INDEX'S NEVER DECREASE IN SIZE.
|
||||
;
|
||||
#IF ((INTMODE == 2) & KBDINTS))
|
||||
KBD_IN .EQU KBD_IN_Q
|
||||
#ELSE
|
||||
KBD_IN .EQU KBD_IN_P
|
||||
#ENDIF
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
; KEYBOARD INPUT STATUS
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
; DIRECT PORT STATUS READ
|
||||
;
|
||||
KBD_IST_P:
|
||||
LD C,(IY+KBD_ST) ; STATUS PORT
|
||||
EZ80_IO
|
||||
IN A,(C) ; GET STATUS
|
||||
AND $01 ; ISOLATE INPUT PENDING BIT
|
||||
RET
|
||||
;
|
||||
; STATUS FROM INTERRUPT QUEUE
|
||||
;
|
||||
#IF ((INTMODE == 2) & KBDINTS))
|
||||
;
|
||||
KBD_IST_Q:
|
||||
KBDQLEN: ; EXIT WITH NUMBER OF CHARACTERS IN QUEUE
|
||||
LD A,(KBDQPUTX) ; Z STATUS AND ZERO IF NONE
|
||||
LD HL,KBDQGETX
|
||||
SUB (HL)
|
||||
RET
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
; RETURN INDICATION OF KEYBOARD DATA READY
|
||||
;
|
||||
#IF ((INTMODE == 2) & KBDINTS))
|
||||
KBD_IST .EQU KBD_IST_Q
|
||||
#ELSE
|
||||
KBD_IST .EQU KBD_IST_P
|
||||
#ENDIF
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
; OUTPUT TO KEYBOARD COMMAND PORT
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
KBD_CMDOUT:
|
||||
LD C,(IY+KBD_CMD) ; COMMAND PORT
|
||||
EZ80_IO
|
||||
OUT (C),A
|
||||
RET
|
||||
;__________________________________________________________________________________________________
|
||||
; OUTPUT TO KEYBOARD COMMAND DATA
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
KBD_DTAOUT:
|
||||
LD C,(IY+KBD_DAT) ; DATA PORT
|
||||
EZ80_IO
|
||||
OUT (C),A
|
||||
RET
|
||||
;__________________________________________________________________________________________________
|
||||
; KEYBOARD OUTPUT STATUS - A=0, Z SET FOR NOT READY, OTHERWISE READY TO WRITE
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
KBD_OST:
|
||||
LD C,(IY+KBD_ST) ; STATUS PORT
|
||||
EZ80_IO
|
||||
IN A,(C) ; GET STATUS
|
||||
AND $02 ; ISOLATE OUTPUT EMPTY BIT
|
||||
XOR $02 ; FLIP IT FOR APPROPRIATE RETURN VALUES
|
||||
RET
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
; DEBUG QUEUE
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
#IF ((INTMODE == 2) & KBDINTS & 0)
|
||||
KBDQDBG:
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
PUSH BC
|
||||
PUSH AF
|
||||
|
||||
CALL NEWLINE ; PRINT QUEUE CONTENTS WITH PRE AND POST GUARD BYTES
|
||||
LD B,KBDQSIZ+2
|
||||
LD HL,KBDQ-1
|
||||
KBDQPRT:
|
||||
LD A,(HL)
|
||||
CALL PRTHEXBYTE
|
||||
INC HL
|
||||
DJNZ KBDQPRT
|
||||
|
||||
LD A,' ' ; PRINT QUEUE INDEX
|
||||
CALL COUT
|
||||
LD A,(KBDQGETX)
|
||||
AND KBDQSIZ-1
|
||||
CALL PRTHEXBYTE
|
||||
|
||||
LD A,' ' ; PRINT QUEUE INDEX
|
||||
CALL COUT
|
||||
LD A,(KBDQPUTX)
|
||||
AND KBDQSIZ-1
|
||||
CALL PRTHEXBYTE
|
||||
|
||||
LD A,' ' ; PRINT # SCAN CODES IN QUEUE
|
||||
CALL COUT
|
||||
CALL KBDQLEN
|
||||
CALL PRTHEXBYTE
|
||||
CALL NEWLINE
|
||||
|
||||
POP AF
|
||||
POP BC
|
||||
POP DE
|
||||
POP HL
|
||||
RET
|
||||
#ENDIF
|
||||
@@ -742,10 +742,10 @@ fp_flopboot2:
|
||||
;
|
||||
runnvr:
|
||||
ld bc,BC_SYSGET_SWITCH ; HBIOS SysGet NVRAM Switches
|
||||
ld d,NVSW_DEFBOOT ; Read Default Boot (disk/Rom) switch
|
||||
ld d,NVSW_BOOTOPTS ; Read Boot options (disk/Rom) switch
|
||||
rst 08
|
||||
ld a,h
|
||||
and DBOOT_ROM ; Get the Default Boot from ROM Flag
|
||||
and BOPTS_ROM ; Get the Boot Opts ROM Flag
|
||||
jr nz,nvrsw_rom ; IF Set as ROM App BOOT, otherwise Disk
|
||||
;
|
||||
nvrsw_disk:
|
||||
@@ -2495,6 +2495,7 @@ str_help .db "\r\n"
|
||||
.db "\r\n D - Device Inventory"
|
||||
.db "\r\n R - Reboot System"
|
||||
#if (BIOS == BIOS_WBW)
|
||||
.db "\r\n W - RomWBW Configure"
|
||||
.db "\r\n I <u> [<c>] - Set Console Interface/Baud code"
|
||||
.db "\r\n V [<n>] - View/Set HBIOS Diagnostic Verbosity"
|
||||
#endif
|
||||
|
||||
@@ -550,7 +550,7 @@ TBL: DW FLUSH ;"@" SEND FF to LaserJet printer
|
||||
|
||||
|
||||
BEGIN: DI ;No interrupts
|
||||
XOR A ;SET INTERUPT TO PAGE 0H
|
||||
XOR A ;SET INTERRUPT TO PAGE 0H
|
||||
LD I,A ;Z80 Interrupt page 0
|
||||
|
||||
SETUP_STACK:
|
||||
|
||||
@@ -971,6 +971,7 @@ INT_CTC0D .EQU 15 ; ZILOG CTC 0, CHANNEL D
|
||||
;
|
||||
; DUO Z80 IM2 INTERRUPTS
|
||||
;
|
||||
INT_PS2KB .EQU 2 ; KEYBOARD RECEIVE
|
||||
INT_UART0 .EQU 4 ; UART 0
|
||||
INT_UART1 .EQU 5 ; UART 1
|
||||
INT_SIO0 .EQU 8 ; ZILOG SIO 0, CHANNEL A & B
|
||||
|
||||
@@ -208,8 +208,8 @@ helpandloop: ; HELP MENU
|
||||
; the folloiwng is just testing a single charater
|
||||
cp 'A' ; Auto Boot help menu
|
||||
JP Z,HELP_AB
|
||||
cp 'D' ; Default Boot help menu
|
||||
JP Z,HELP_DB
|
||||
cp 'B' ; Boot Options help menu
|
||||
JP Z,HELP_BO
|
||||
;
|
||||
printmainhelp:
|
||||
ld de,MSG_MENU ; nothing found Print the Main Menu
|
||||
@@ -237,8 +237,8 @@ setvalueandloop:
|
||||
; the folloiwng is just testing a single charater
|
||||
cp 'A' ; Auto Boot help menu
|
||||
JP Z,SET_AB
|
||||
cp 'D' ; Default Boot help menu
|
||||
JP Z,SET_DB
|
||||
cp 'B' ; Boot Options help menu
|
||||
JP Z,SET_BO
|
||||
;
|
||||
setvalueerror:
|
||||
ld de,MSG_QUESTION ; nothing found Print the Main Menu
|
||||
@@ -269,8 +269,8 @@ PRT_STATUS:
|
||||
;
|
||||
; print invdividual stats, on all per switch
|
||||
;
|
||||
CALL STAT_DEFBOOT
|
||||
CALL STAT_AUTOB
|
||||
CALL STAT_BO
|
||||
CALL STAT_AB
|
||||
;
|
||||
; end individual stats
|
||||
;
|
||||
@@ -297,31 +297,31 @@ STAT_NOTFOUND1:
|
||||
; Specific Switches Below
|
||||
; ======================================================================
|
||||
;
|
||||
; DEFAULT BOOT
|
||||
; BOOT OPTIONS
|
||||
; Byte 1: (L)
|
||||
; Bit 7-0 DISK BOOT SLice Number to Boot -> default = 0
|
||||
; Bit 7-0 ROM BOOT (alpha character) Application to boot -> default = 0 translates to "H"
|
||||
; Byte 2: (H)
|
||||
; Bit 7 - DISK/ROM - Disk or Rom Boot -> Default=ROM (BOOT_DEFAULT is Numeric/Alpha)
|
||||
; Bit 7 - DISK/ROM - Disk or Rom Boot -> Default=ROM (AUTO_CMD is Numeric/Alpha)
|
||||
; Bit 6-0 - DISK BOOT Disk Unit to Boot (0-127) -> default = 0
|
||||
;
|
||||
; PRINT CURRENT SWITCH VALUE
|
||||
;
|
||||
STAT_DEFBOOT:
|
||||
STAT_BO:
|
||||
LD BC,BC_SYSGET_SWITCH
|
||||
LD D,NVSW_DEFBOOT
|
||||
LD D,NVSW_BOOTOPTS
|
||||
RST 08 ; Should return auto Boot in HL
|
||||
RET NZ ; return if error
|
||||
LD de,MSG_DEFBOOT
|
||||
LD de,MSG_BO
|
||||
CALL prtstr
|
||||
LD A,H ; Byte 2
|
||||
AND DBOOT_ROM ; DISK/ROM
|
||||
JR NZ,STAT_AUTOROM ; is it ROM
|
||||
STAT_AUTODISK:
|
||||
AND BOPTS_ROM ; DISK/ROM
|
||||
JR NZ,STAT_BO_ROM ; is it ROM
|
||||
STAT_BO_DISK:
|
||||
LD de,MSG_DISK ; disk
|
||||
CALL prtstr
|
||||
LD A,H ; Byte 2
|
||||
AND DBOOT_UNIT ; Unit
|
||||
AND BOPTS_UNIT ; Unit
|
||||
CALL prtdecb
|
||||
LD de,MSG_DISK2 ; Slice
|
||||
CALL prtstr
|
||||
@@ -330,7 +330,7 @@ STAT_AUTODISK:
|
||||
LD de,MSG_DISK3 ; close bracket
|
||||
CALL prtstr
|
||||
RET
|
||||
STAT_AUTOROM:
|
||||
STAT_BO_ROM:
|
||||
LD de,MSG_ROM ; ROM
|
||||
CALL prtstr
|
||||
LD A,L ; ROM APP
|
||||
@@ -341,67 +341,67 @@ STAT_AUTOROM:
|
||||
;
|
||||
; SET SWITCH VALUE
|
||||
;
|
||||
SET_DB:
|
||||
SET_BO:
|
||||
CALL findskipws ; skip over WS to first char
|
||||
JR z,SET_DB_ERR ; if empty line, print main help
|
||||
JR z,SET_BO_ERR ; if empty line, print main help
|
||||
call upcase
|
||||
cp 'R' ; ROM
|
||||
JR Z,SET_DB_ROM
|
||||
JR Z,SET_BO_ROM
|
||||
cp 'D' ; DISK
|
||||
JR Z,SET_DB_DISK
|
||||
JR SET_DB_ERR
|
||||
SET_DB_ROM:
|
||||
JR Z,SET_BO_DISK
|
||||
JR SET_BO_ERR
|
||||
SET_BO_ROM:
|
||||
CALL findskipcomma
|
||||
CALL skipws
|
||||
JR z,SET_DB_ERR ; if empty line, print main help
|
||||
JR z,SET_BO_ERR ; if empty line, print main help
|
||||
LD L,A ; LOW BYTE ; next CHAR is the ROM App Name
|
||||
LD A,DBOOT_ROM
|
||||
LD H,A ; HIGH BYTE, has constant. DBOOT_ROM = $80
|
||||
JR SET_DB_SAVE ; SAVE
|
||||
SET_DB_DISK:
|
||||
LD A,BOPTS_ROM
|
||||
LD H,A ; HIGH BYTE, has constant. ABOOT_ROM = $80
|
||||
JR SET_BO_SAVE ; SAVE
|
||||
SET_BO_DISK:
|
||||
CALL findskipcomma
|
||||
CALL skipws
|
||||
JR z,SET_DB_ERR ; if empty line, print main help
|
||||
JR z,SET_BO_ERR ; if empty line, print main help
|
||||
CALL getnum ; next CHAR is the DISK UNIT
|
||||
JR C,SET_DB_ERR ; overflow
|
||||
JR C,SET_BO_ERR ; overflow
|
||||
BIT 7,A ; is > 127
|
||||
JR NZ, SET_DB_ERR
|
||||
JR NZ, SET_BO_ERR
|
||||
LD H,A ; HIGH BYTE, has disk unit < $80
|
||||
CALL findskipcomma
|
||||
CALL skipws
|
||||
JR z,SET_DB_ERR ; if empty line, print main help
|
||||
JR z,SET_BO_ERR ; if empty line, print main help
|
||||
CALL getnum ; next CHAR is the SLICE
|
||||
JR C,SET_DB_ERR ; overflow
|
||||
JR C,SET_BO_ERR ; overflow
|
||||
LD L,A ; LOW BYTE, has the slice number
|
||||
;JR SET_DB_SAVE ; SAVE - Fall Through
|
||||
SET_DB_SAVE:
|
||||
LD D,NVSW_DEFBOOT ; DEFAULT BOOT
|
||||
;JR SET_BO_SAVE ; SAVE - Fall Through
|
||||
SET_BO_SAVE:
|
||||
LD D,NVSW_BOOTOPTS ; BOOT OPTIONS
|
||||
JP setvaluesave ; SAVE THE VALUE
|
||||
SET_DB_ERR:
|
||||
SET_BO_ERR:
|
||||
JP setvalueerror ; ERROR. Added this so can use JR above
|
||||
;
|
||||
; PRINT HELP TEST FOR SWITCH
|
||||
;
|
||||
HELP_DB:
|
||||
ld de,MSG_DEFB_H
|
||||
HELP_BO:
|
||||
ld de,MSG_BO_H
|
||||
JP printhelp
|
||||
;
|
||||
MSG_DEFBOOT .DB CR,LF, " [DB] / Default Boot: ",0
|
||||
MSG_BO .DB CR,LF, " [BO] / Boot Options: ",0
|
||||
MSG_DISK .DB "Disk (Unit = ",0
|
||||
MSG_DISK2 .DB ", Slice = ",0
|
||||
MSG_DISK3 .DB ")",0
|
||||
MSG_ROM .DB "ROM (App = \"",0
|
||||
MSG_ROM2 .DB "\")",0
|
||||
;
|
||||
MSG_DEFB_H .DB "\r\nDefault Boot - Disk or Rom App (DB):\r\n"
|
||||
.DB " DB [R|D],[{romapp}|{unit},{slice}]\r\n"
|
||||
.DB " e.g. S DB D,2,14 ; Disk Boot, unit 2, slice 14\r\n"
|
||||
.DB " S DB R,M ; Rom Application 'M'onitor\r\n"
|
||||
MSG_BO_H .DB "\r\nBoot Options - Disk or Rom App (BO):\r\n"
|
||||
.DB " BO [R|D],[{romapp}|{unit},{slice}]\r\n"
|
||||
.DB " e.g. S BO D,2,14 ; Disk Boot, unit 2, slice 14\r\n"
|
||||
.DB " S BO R,M ; Rom Application 'M'onitor\r\n"
|
||||
.DB " Note: Disk: Unit (0-127); Slice (0-255)\r\n",0
|
||||
;
|
||||
;=======================================================================
|
||||
;
|
||||
; AUTO BOOT
|
||||
; AUTO BOOT CONFIG
|
||||
; Byte 0: (L)
|
||||
; Bit 7-6 - Reserved
|
||||
; Bit 5 - AUTO BOOT Auto boot, default=false (i.e. BOOT_TIMEOUT != -1)
|
||||
@@ -410,7 +410,7 @@ MSG_DEFB_H .DB "\r\nDefault Boot - Disk or Rom App (DB):\r\n"
|
||||
;
|
||||
; PRINT CURRENT SWITCH VALUE
|
||||
;
|
||||
STAT_AUTOB:
|
||||
STAT_AB:
|
||||
LD BC,BC_SYSGET_SWITCH
|
||||
LD D,NVSW_AUTOBOOT
|
||||
RST 08 ; Should return auto Boot in HL
|
||||
@@ -420,14 +420,14 @@ STAT_AUTOB:
|
||||
LD A,L ; Byte 1
|
||||
LD de,MSG_DISABLED
|
||||
AND ABOOT_AUTO ; enabled
|
||||
JR Z, STAT_AUTOB1 ; disabled
|
||||
JR Z, STAT_AB1 ; disabled
|
||||
LD de,MSG_ENABLED ; enabled
|
||||
CALL prtstr
|
||||
LD A,L ; Byte 1
|
||||
AND ABOOT_TIMEOUT ; timeout
|
||||
CALL prtdecb ; print timeout
|
||||
LD de,MSG_ENABLED2 ; and closing bracket
|
||||
STAT_AUTOB1:
|
||||
STAT_AB1:
|
||||
CALL prtstr
|
||||
RET
|
||||
;
|
||||
@@ -458,7 +458,7 @@ SET_AB_DISAB:
|
||||
LD L,0
|
||||
;JR SET_AB_SAVE ; SAVE - Fall Through
|
||||
SET_AB_SAVE:
|
||||
LD D,NVSW_AUTOBOOT ; AUTO BOOT
|
||||
LD D,NVSW_AUTOBOOT ; AUTO BOOT CONFIG
|
||||
JP setvaluesave ; SAVE THE VALUE
|
||||
SET_AB_ERR:
|
||||
JP setvalueerror ; ERROR. Added this so can use JR above
|
||||
@@ -466,7 +466,7 @@ SET_AB_ERR:
|
||||
; PRINT HELP TEST FOR SWITCH
|
||||
;
|
||||
HELP_AB:
|
||||
ld de,MSG_AUTOB_H
|
||||
ld de,MSG_AB_H
|
||||
JP printhelp
|
||||
;
|
||||
MSG_AUTOB: .DB CR,LF," [AB] / Auto Boot: ",0
|
||||
@@ -474,7 +474,7 @@ MSG_ENABLED: .DB "Enabled (Timeout = ",0
|
||||
MSG_ENABLED2: .DB ")",0
|
||||
MSG_DISABLED: .DB "Disabled",0
|
||||
;
|
||||
MSG_AUTOB_H .DB "\r\nAutomatic Boot (AB):\r\n"
|
||||
MSG_AB_H .DB "\r\nAutomatic Boot (AB):\r\n"
|
||||
.DB " AB <D|E>[,{timeout}]\r\n"
|
||||
.DB " e.g. S AB E,3 ; enabled (show menu) with 3 second timout before boot\r\n"
|
||||
.DB " S AB E,0 ; enabled with immediate effect, bypass menu\r\n"
|
||||
@@ -1031,12 +1031,12 @@ stack .equ $ ; stack top
|
||||
SLACK .EQU (NVR_END - $)
|
||||
;
|
||||
#IF (SLACK < 0)
|
||||
.ECHO "*** NVRCONFIG APP IS TOO BIG!!!\n"
|
||||
.ECHO "*** SYSCONF APP IS TOO BIG!!!\n"
|
||||
!!! ; FORCE AN ASSEMBLY ERROR
|
||||
#endif
|
||||
;
|
||||
.FILL SLACK,$00
|
||||
.ECHO "NVRCONFIG space remaining: "
|
||||
.ECHO "SYSCONF space remaining: "
|
||||
.ECHO SLACK
|
||||
.ECHO " bytes.\n"
|
||||
;
|
||||
|
||||
@@ -211,7 +211,7 @@ TMS_PREINIT:
|
||||
RES TMSINTEN, A ; RESET INTERRUPT ENABLE BIT
|
||||
LD (TMS_INITVDU_REG_1), A
|
||||
LD C, TMSCTRL1
|
||||
JP TMS_SET
|
||||
JP TMS_SET_X ; SET REG W/O INT MGMT
|
||||
;
|
||||
TMS_INIT:
|
||||
#IF (CPUFAM == CPU_Z180)
|
||||
@@ -584,10 +584,18 @@ TMS_READ:
|
||||
;----------------------------------------------------------------------
|
||||
; SET TMS9918 REGISTER VALUE
|
||||
; TMS_SET WRITES VALUE IN A TO VDU REGISTER SPECIFIED IN C
|
||||
; TMS_SET_X IS A VARIANT THAT DOES NOT DO INT MGMT (TMS_PREINIT)
|
||||
;----------------------------------------------------------------------
|
||||
;
|
||||
TMS_SET:
|
||||
; NORMALLY, WE WRAP REG CHANGES WITH DI/EI TO AVOID CONFLICTS
|
||||
HB_DI
|
||||
CALL TMS_SET_X
|
||||
HB_EI
|
||||
RET
|
||||
;
|
||||
TMS_SET_X:
|
||||
; ENTRY POINT W/O INT MGMT NEEDED BY TMS_PREINIT
|
||||
EZ80_IO
|
||||
OUT (TMS_CMDREG),A ; WRITE IT
|
||||
TMS_IODELAY
|
||||
@@ -596,7 +604,6 @@ TMS_SET:
|
||||
EZ80_IO
|
||||
OUT (TMS_CMDREG),A ; SELECT THE DESIRED REGISTER
|
||||
TMS_IODELAY
|
||||
HB_EI
|
||||
RET
|
||||
;
|
||||
;----------------------------------------------------------------------
|
||||
@@ -1182,6 +1189,14 @@ TMS_IDAT:
|
||||
.DB TMS_DATREG
|
||||
.DB TMS_CMDREG
|
||||
;
|
||||
; IF WE ARE USING PS2 INTERRUPTS, WE NEED TO PASS THE INSTANCE
|
||||
; DATA POINTER TO PS2IFACE.INC VIA KBDIDAT FOR USE BY THE INTERRUPT
|
||||
; HANDLER IN PS2IFACE.INC.
|
||||
;
|
||||
#IF ((TMSKBD == TMSKBD_KBD) & KBDINTS)
|
||||
KBDIDAT .EQU TMS_IDAT
|
||||
#ENDIF
|
||||
;
|
||||
;==================================================================================================
|
||||
; TMS DRIVER - TMS9918 REGISTER INITIALIZATION
|
||||
;==================================================================================================
|
||||
|
||||
@@ -1056,3 +1056,11 @@ VGA_IDAT:
|
||||
.DB KBDMODE_PS2 ; PS/2 8242 KEYBOARD CONTROLLER
|
||||
.DB VGA_KBDST
|
||||
.DB VGA_KBDDATA
|
||||
;
|
||||
; IF WE ARE USING PS2 INTERRUPTS, WE NEED TO PASS THE INSTANCE
|
||||
; DATA POINTER TO PS2IFACE.INC VIA KBDIDAT FOR USE BY THE INTERRUPT
|
||||
; HANDLER IN PS2IFACE.INC.
|
||||
;
|
||||
#IF (KBDINTS)
|
||||
KBDIDAT .EQU VGA_IDAT
|
||||
#ENDIF
|
||||
|
||||
@@ -15,8 +15,8 @@ VRC_BASE .EQU $00 ; FIRST CHAR DATA PORT
|
||||
VRC_FONTBASE .EQU VRC_BASE + $0C ; FIRST FONT PORT
|
||||
VRC_SCROLLIO .EQU $F5 ; SCROLL REG PORT
|
||||
;
|
||||
VRC_KBDDATA .EQU $F4
|
||||
VRC_KBDST .EQU $F5
|
||||
VRC_KBDDATA .EQU $F4 ; KBD CTLR DATA PORT
|
||||
VRC_KBDST .EQU $F5 ; KBD CTLR STATUS/CMD PORT
|
||||
;
|
||||
VRC_ROWS .EQU 48
|
||||
VRC_COLS .EQU 64
|
||||
@@ -675,3 +675,11 @@ VRC_IDAT:
|
||||
.DB KBDMODE_VRC ; VGARC KEYBOARD CONTROLLER
|
||||
.DB VRC_KBDST
|
||||
.DB VRC_KBDDATA
|
||||
;
|
||||
; IF WE ARE USING PS2 INTERRUPTS, WE NEED TO PASS THE INSTANCE
|
||||
; DATA POINTER TO PS2IFACE.INC VIA KBDIDAT FOR USE BY THE INTERRUPT
|
||||
; HANDLER IN PS2IFACE.INC.
|
||||
;
|
||||
#IF (KBDINTS)
|
||||
KBDIDAT .EQU VRC_IDAT
|
||||
#ENDIF
|
||||
|
||||
Binary file not shown.
@@ -2,7 +2,7 @@
|
||||
#DEFINE RMN 5
|
||||
#DEFINE RUP 0
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "3.5.0-dev.97"
|
||||
#DEFINE BIOSVER "3.5.0-dev.99"
|
||||
#define rmj RMJ
|
||||
#define rmn RMN
|
||||
#define rup RUP
|
||||
|
||||
@@ -3,5 +3,5 @@ rmn equ 5
|
||||
rup equ 0
|
||||
rtp equ 0
|
||||
biosver macro
|
||||
db "3.5.0-dev.97"
|
||||
db "3.5.0-dev.99"
|
||||
endm
|
||||
|
||||
Reference in New Issue
Block a user