mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
Compare commits
1 Commits
v3.1.1-pre
...
v3.1.1-pre
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
44b17ccc3a |
@@ -183,7 +183,7 @@ HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
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)
|
||||
|
||||
@@ -224,7 +224,7 @@ HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
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)
|
||||
|
||||
@@ -300,10 +300,10 @@ 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
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
CENCNT .EQU 1 ; CEN: NUMBER OF CHIPS TO DETECT (1-2)
|
||||
CEN0BASE .EQU $E8 ; CEN 0: REGISTERS BASE ADR
|
||||
CEN1BASE .EQU $EC ; CEN 1: REGISTERS BASE ADR
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
LPTCNT .EQU 1 ; LPT: NUMBER OF CHIPS TO DETECT (1-2)
|
||||
LPT0BASE .EQU $E8 ; LPT 0: REGISTERS BASE ADR
|
||||
LPT1BASE .EQU $EC ; LPT 1: REGISTERS BASE ADR
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
|
||||
|
||||
@@ -224,10 +224,10 @@ 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
|
||||
;
|
||||
CENENABLE .EQU TRUE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
CENCNT .EQU 1 ; CEN: NUMBER OF CHIPS TO DETECT (1-2)
|
||||
CEN0BASE .EQU $E8 ; CEN 0: REGISTERS BASE ADR
|
||||
CEN1BASE .EQU $EC ; CEN 1: REGISTERS BASE ADR
|
||||
LPTENABLE .EQU TRUE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
LPTCNT .EQU 1 ; LPT: NUMBER OF CHIPS TO DETECT (1-2)
|
||||
LPT0BASE .EQU $E8 ; LPT 0: REGISTERS BASE ADR
|
||||
LPT1BASE .EQU $EC ; LPT 1: REGISTERS BASE ADR
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
|
||||
|
||||
@@ -226,7 +226,7 @@ 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
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
|
||||
|
||||
@@ -224,7 +224,7 @@ 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
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
|
||||
|
||||
@@ -240,7 +240,7 @@ 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
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
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)
|
||||
|
||||
@@ -255,7 +255,7 @@ 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
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
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)
|
||||
|
||||
@@ -244,7 +244,7 @@ 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
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
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)
|
||||
|
||||
@@ -224,7 +224,7 @@ 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
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
|
||||
|
||||
@@ -224,7 +224,7 @@ 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
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
|
||||
|
||||
@@ -230,13 +230,13 @@ PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (P
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.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)
|
||||
;
|
||||
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
|
||||
|
||||
@@ -164,11 +164,8 @@ PPPCONENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER VIDEO/KBD SUPPORT
|
||||
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
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
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)
|
||||
|
||||
@@ -176,7 +176,7 @@ HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
;
|
||||
CENENABLE .EQU FALSE ; CEN: ENABLE CENTRONICS DRIVER (CEN.ASM)
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
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)
|
||||
|
||||
@@ -2970,8 +2970,8 @@ HB_PCINITTBL:
|
||||
#IF (PIOENABLE)
|
||||
.DW PIO_PREINIT
|
||||
#ENDIF
|
||||
#IF CENENABLE)
|
||||
.DW CEN_PREINIT
|
||||
#IF LPTENABLE)
|
||||
.DW LPT_PREINIT
|
||||
#ENDIF
|
||||
#IF (PIO_4P | PIO_ZP)
|
||||
.DW PIO_PREINIT
|
||||
@@ -3025,6 +3025,18 @@ HB_INITTBL:
|
||||
#IF (ACIAENABLE)
|
||||
.DW ACIA_INIT
|
||||
#ENDIF
|
||||
#IF (PIOENABLE)
|
||||
.DW PIO_INIT
|
||||
#ENDIF
|
||||
#IF (LPTENABLE)
|
||||
.DW LPT_INIT
|
||||
#ENDIF
|
||||
#IF (PIO_4P | PIO_ZP)
|
||||
.DW PIO_INIT
|
||||
#ENDIF
|
||||
#IF (UFENABLE)
|
||||
.DW UF_INIT
|
||||
#ENDIF
|
||||
#IF (DSRTCENABLE)
|
||||
.DW DSRTC_INIT
|
||||
#ENDIF
|
||||
@@ -3092,18 +3104,6 @@ HB_INITTBL:
|
||||
#IF (PPPENABLE)
|
||||
.DW PPP_INIT
|
||||
#ENDIF
|
||||
#IF (PIOENABLE)
|
||||
.DW PIO_INIT
|
||||
#ENDIF
|
||||
#IF (CENENABLE)
|
||||
.DW CEN_INIT
|
||||
#ENDIF
|
||||
#IF (PIO_4P | PIO_ZP)
|
||||
.DW PIO_INIT
|
||||
#ENDIF
|
||||
#IF (UFENABLE)
|
||||
.DW UF_INIT
|
||||
#ENDIF
|
||||
|
||||
;
|
||||
HB_INITTBLLEN .EQU (($ - HB_INITTBL) / 2)
|
||||
@@ -4153,10 +4153,10 @@ SYS_GETCPUSPD:
|
||||
;
|
||||
#IF (((PLATFORM == PLT_SBC) | (PLATFORM == PLT_MBC)) & (CPUSPDCAP==SPD_HILO))
|
||||
LD A,(HB_RTCVAL)
|
||||
BIT 3,A
|
||||
#IF (PLATFORM == PLT_SBC)
|
||||
XOR %00001000 ; SBC SPEED BIT IS INVERTED
|
||||
#ENDIF
|
||||
BIT 3,A
|
||||
LD L,0 ; ASSUME HALF SPEED
|
||||
JR Z,SYS_GETCPUSPD1
|
||||
LD L,1
|
||||
@@ -5824,6 +5824,15 @@ SIZ_ASCI .EQU $ - ORG_ASCI
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (Z2UENABLE)
|
||||
ORG_Z2U .EQU $
|
||||
#INCLUDE "z2u.asm"
|
||||
SIZ_Z2U .EQU $ - ORG_Z2U
|
||||
.ECHO "Z2U occupies "
|
||||
.ECHO SIZ_Z2U
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (UARTENABLE)
|
||||
ORG_UART .EQU $
|
||||
#INCLUDE "uart.asm"
|
||||
@@ -5860,12 +5869,39 @@ SIZ_ACIA .EQU $ - ORG_ACIA
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (Z2UENABLE)
|
||||
ORG_Z2U .EQU $
|
||||
#INCLUDE "z2u.asm"
|
||||
SIZ_Z2U .EQU $ - ORG_Z2U
|
||||
.ECHO "Z2U occupies "
|
||||
.ECHO SIZ_Z2U
|
||||
#IF (PIOENABLE)
|
||||
ORG_PIO .EQU $
|
||||
#INCLUDE "pio.asm"
|
||||
SIZ_PIO .EQU $ - ORG_PIO
|
||||
.ECHO "PIO occupies "
|
||||
.ECHO SIZ_PIO
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (LPTENABLE)
|
||||
ORG_LPT .EQU $
|
||||
#INCLUDE "lpt.asm"
|
||||
SIZ_LPT .EQU $ - ORG_LPT
|
||||
.ECHO "LPT occupies "
|
||||
.ECHO SIZ_LPT
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (PIO_4P | PIO_ZP | PIO_SBC)
|
||||
ORG_PIO .EQU $
|
||||
#INCLUDE "pio.asm"
|
||||
SIZ_PIO .EQU $ - ORG_PIO
|
||||
.ECHO "PIO occupies "
|
||||
.ECHO SIZ_PIO
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (UFENABLE)
|
||||
ORG_UF .EQU $
|
||||
#INCLUDE "uf.asm"
|
||||
SIZ_UF .EQU $ - ORG_UF
|
||||
.ECHO "UF occupies "
|
||||
.ECHO SIZ_UF
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
@@ -6100,42 +6136,6 @@ SIZ_SPK .EQU $ - ORG_SPK
|
||||
.ECHO SIZ_SPK
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (PIOENABLE)
|
||||
ORG_PIO .EQU $
|
||||
#INCLUDE "pio.asm"
|
||||
SIZ_PIO .EQU $ - ORG_PIO
|
||||
.ECHO "PIO occupies "
|
||||
.ECHO SIZ_PIO
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (CENENABLE)
|
||||
ORG_CEN .EQU $
|
||||
#INCLUDE "cen.asm"
|
||||
SIZ_CEN .EQU $ - ORG_CEN
|
||||
.ECHO "CEN occupies "
|
||||
.ECHO SIZ_CEN
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (PIO_4P | PIO_ZP | PIO_SBC)
|
||||
ORG_PIO .EQU $
|
||||
#INCLUDE "pio.asm"
|
||||
SIZ_PIO .EQU $ - ORG_PIO
|
||||
.ECHO "PIO occupies "
|
||||
.ECHO SIZ_PIO
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (UFENABLE)
|
||||
ORG_UF .EQU $
|
||||
#INCLUDE "uf.asm"
|
||||
SIZ_UF .EQU $ - ORG_UF
|
||||
.ECHO "UF occupies "
|
||||
.ECHO SIZ_UF
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
#IF (KIOENABLE)
|
||||
ORG_KIO .EQU $
|
||||
#INCLUDE "kio.asm"
|
||||
@@ -6960,7 +6960,7 @@ PS_FLP_DSTR: .TEXT "SD$" ; PS_FLPSD
|
||||
;
|
||||
PS_SDSTRREF:
|
||||
.DW PS_SDUART, PS_SDASCI, PS_SDTERM, PS_SDPRPCON, PS_SDPPPCON
|
||||
.DW PS_SDSIO, PS_SDACIA, PS_SDPIO, PS_SDUF, PS_SDDUART, PS_SDZ2U, PS_SDCEN
|
||||
.DW PS_SDSIO, PS_SDACIA, PS_SDPIO, PS_SDUF, PS_SDDUART, PS_SDZ2U, PS_SDLPT
|
||||
;
|
||||
PS_SDUART .TEXT "UART$"
|
||||
PS_SDASCI .TEXT "ASCI$"
|
||||
@@ -6973,7 +6973,7 @@ PS_SDPIO .TEXT "PIO$"
|
||||
PS_SDUF .TEXT "UF$"
|
||||
PS_SDDUART .TEXT "DUART$"
|
||||
PS_SDZ2U .TEXT "Z2U$"
|
||||
PS_SDCEN .TEXT "CEN$"
|
||||
PS_SDLPT .TEXT "LPT$"
|
||||
;
|
||||
; CHARACTER SUB TYPE STRINGS
|
||||
;
|
||||
|
||||
@@ -183,7 +183,7 @@ CIODEV_PIO .EQU $70
|
||||
CIODEV_UF .EQU $80
|
||||
CIODEV_DUART .EQU $90
|
||||
CIODEV_Z2U .EQU $A0
|
||||
CIODEV_CEN .EQU $B0
|
||||
CIODEV_LPT .EQU $B0
|
||||
;
|
||||
; SUB TYPES OF CHAR DEVICES
|
||||
;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; CENTRONICS INTERFACE DRIVER
|
||||
; CENTRONICS (LPT) INTERFACE DRIVER
|
||||
;==================================================================================================
|
||||
;
|
||||
; CENTRONICS-STYLE PARALLEL PRINTER DRIVER. ASSUMES MBC PRINT BOARD
|
||||
; AS HARDWARE.
|
||||
; CENTRONICS-STYLE PARALLEL PRINTER DRIVER. ASSUMES IBM STYLE
|
||||
; HARDWARE INTERFACE AS DESCRIBED BELOW.
|
||||
;
|
||||
; IMPLEMENTED AS A ROMWBW CHARACTER DEVICE. CURRENTLY HANDLES OUPUT
|
||||
; ONLY.
|
||||
@@ -30,56 +30,56 @@
|
||||
; | STAT1 | STAT0 | ENBL | PINT | SEL | RES | LF | STB |
|
||||
; +-------+-------+-------+-------+-------+-------+-------+-------+
|
||||
;
|
||||
CEN_NONE .EQU 0
|
||||
CEN_MBC .EQU 1
|
||||
LPT_NONE .EQU 0 ; NOT PRESENT
|
||||
LPT_IBM .EQU 1 ; IBM PC STYLE INTERFACE
|
||||
;
|
||||
; PRE-CONSOLE INITIALIZATION - DETECT AND INIT HARDWARE
|
||||
;
|
||||
CEN_PREINIT:
|
||||
LPT_PREINIT:
|
||||
;
|
||||
; SETUP THE DISPATCH TABLE ENTRIES
|
||||
; NOTE: INTS WILL BE DISABLED WHEN PREINIT IS CALLED AND THEY MUST REMIAIN
|
||||
; DISABLED.
|
||||
;
|
||||
LD B,CEN_CFGCNT ; LOOP CONTROL
|
||||
LD B,LPT_CFGCNT ; LOOP CONTROL
|
||||
XOR A ; ZERO TO ACCUM
|
||||
LD (CEN_DEV),A ; CURRENT DEVICE NUMBER
|
||||
LD IY,CEN_CFG ; POINT TO START OF CFG TABLE
|
||||
CEN_PREINIT0:
|
||||
LD (LPT_DEV),A ; CURRENT DEVICE NUMBER
|
||||
LD IY,LPT_CFG ; POINT TO START OF CFG TABLE
|
||||
LPT_PREINIT0:
|
||||
PUSH BC ; SAVE LOOP CONTROL
|
||||
CALL CEN_INITUNIT ; HAND OFF TO UNIT INIT CODE
|
||||
CALL LPT_INITUNIT ; HAND OFF TO UNIT INIT CODE
|
||||
POP BC ; RESTORE LOOP CONTROL
|
||||
;
|
||||
LD A,(IY+1) ; GET THE CEN TYPE DETECTED
|
||||
LD A,(IY+1) ; GET THE LPT TYPE DETECTED
|
||||
OR A ; SET FLAGS
|
||||
JR Z,CEN_PREINIT2 ; SKIP IT IF NOTHING FOUND
|
||||
JR Z,LPT_PREINIT2 ; SKIP IT IF NOTHING FOUND
|
||||
;
|
||||
PUSH BC ; SAVE LOOP CONTROL
|
||||
PUSH IY ; CFG ENTRY ADDRESS
|
||||
POP DE ; ... TO DE
|
||||
LD BC,CEN_FNTBL ; BC := FUNCTION TABLE ADDRESS
|
||||
CALL NZ,CIO_ADDENT ; ADD ENTRY IF CEN FOUND, BC:DE
|
||||
LD BC,LPT_FNTBL ; BC := FUNCTION TABLE ADDRESS
|
||||
CALL NZ,CIO_ADDENT ; ADD ENTRY IF LPT FOUND, BC:DE
|
||||
POP BC ; RESTORE LOOP CONTROL
|
||||
;
|
||||
CEN_PREINIT2:
|
||||
LD DE,CEN_CFGSIZ ; SIZE OF CFG ENTRY
|
||||
LPT_PREINIT2:
|
||||
LD DE,LPT_CFGSIZ ; SIZE OF CFG ENTRY
|
||||
ADD IY,DE ; BUMP IY TO NEXT ENTRY
|
||||
DJNZ CEN_PREINIT0 ; LOOP UNTIL DONE
|
||||
DJNZ LPT_PREINIT0 ; LOOP UNTIL DONE
|
||||
;
|
||||
CEN_PREINIT3:
|
||||
LPT_PREINIT3:
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET ; AND RETURN
|
||||
;
|
||||
; CEN INITIALIZATION ROUTINE
|
||||
; LPT INITIALIZATION ROUTINE
|
||||
;
|
||||
CEN_INITUNIT:
|
||||
CALL CEN_DETECT ; DETERMINE CEN TYPE
|
||||
LPT_INITUNIT:
|
||||
CALL LPT_DETECT ; DETERMINE LPT TYPE
|
||||
LD (IY+1),A ; SAVE IN CONFIG TABLE
|
||||
OR A ; SET FLAGS
|
||||
RET Z ; ABORT IF NOTHING THERE
|
||||
;
|
||||
; UPDATE WORKING CEN DEVICE NUM
|
||||
LD HL,CEN_DEV ; POINT TO CURRENT DEVICE NUM
|
||||
; UPDATE WORKING LPT DEVICE NUM
|
||||
LD HL,LPT_DEV ; POINT TO CURRENT DEVICE NUM
|
||||
LD A,(HL) ; PUT IN ACCUM
|
||||
INC (HL) ; INCREMENT IT (FOR NEXT LOOP)
|
||||
LD (IY),A ; UPDATE UNIT NUM
|
||||
@@ -88,44 +88,44 @@ CEN_INITUNIT:
|
||||
LD DE,-1 ; LEAVE CONFIG ALONE
|
||||
; CALL INITDEV TO IMPLEMENT CONFIG, BUT NOTE THAT WE CALL
|
||||
; THE INITDEV ENTRY POINT THAT DOES NOT ENABLE/DISABLE INTS!
|
||||
JP CEN_INITDEVX ; IMPLEMENT IT AND RETURN
|
||||
JP LPT_INITDEVX ; IMPLEMENT IT AND RETURN
|
||||
;
|
||||
;
|
||||
;
|
||||
CEN_INIT:
|
||||
LD B,CEN_CFGCNT ; COUNT OF POSSIBLE CEN UNITS
|
||||
LD IY,CEN_CFG ; POINT TO START OF CFG TABLE
|
||||
CEN_INIT1:
|
||||
LPT_INIT:
|
||||
LD B,LPT_CFGCNT ; COUNT OF POSSIBLE LPT UNITS
|
||||
LD IY,LPT_CFG ; POINT TO START OF CFG TABLE
|
||||
LPT_INIT1:
|
||||
PUSH BC ; SAVE LOOP CONTROL
|
||||
LD A,(IY+1) ; GET CEN TYPE
|
||||
LD A,(IY+1) ; GET LPT TYPE
|
||||
OR A ; SET FLAGS
|
||||
CALL NZ,CEN_PRTCFG ; PRINT IF NOT ZERO
|
||||
CALL NZ,LPT_PRTCFG ; PRINT IF NOT ZERO
|
||||
POP BC ; RESTORE LOOP CONTROL
|
||||
LD DE,CEN_CFGSIZ ; SIZE OF CFG ENTRY
|
||||
LD DE,LPT_CFGSIZ ; SIZE OF CFG ENTRY
|
||||
ADD IY,DE ; BUMP IY TO NEXT ENTRY
|
||||
DJNZ CEN_INIT1 ; LOOP TILL DONE
|
||||
DJNZ LPT_INIT1 ; LOOP TILL DONE
|
||||
;
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET ; DONE
|
||||
;
|
||||
; DRIVER FUNCTION TABLE
|
||||
;
|
||||
CEN_FNTBL:
|
||||
.DW CEN_IN
|
||||
.DW CEN_OUT
|
||||
.DW CEN_IST
|
||||
.DW CEN_OST
|
||||
.DW CEN_INITDEV
|
||||
.DW CEN_QUERY
|
||||
.DW CEN_DEVICE
|
||||
#IF (($ - CEN_FNTBL) != (CIO_FNCNT * 2))
|
||||
.ECHO "*** INVALID CEN FUNCTION TABLE ***\n"
|
||||
LPT_FNTBL:
|
||||
.DW LPT_IN
|
||||
.DW LPT_OUT
|
||||
.DW LPT_IST
|
||||
.DW LPT_OST
|
||||
.DW LPT_INITDEV
|
||||
.DW LPT_QUERY
|
||||
.DW LPT_DEVICE
|
||||
#IF (($ - LPT_FNTBL) != (CIO_FNCNT * 2))
|
||||
.ECHO "*** INVALID LPT FUNCTION TABLE ***\n"
|
||||
!!! ; FORCE AN ASSEMBLY ERROR
|
||||
#ENDIF
|
||||
;
|
||||
; BYTE INTPUT
|
||||
;
|
||||
CEN_IN:
|
||||
LPT_IN:
|
||||
; INPUT NOT SUPPORTED - RETURN NULL BYTE
|
||||
LD E,0 ; NULL BYTE
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
@@ -133,20 +133,19 @@ CEN_IN:
|
||||
;
|
||||
; BYTE OUTPUT
|
||||
;
|
||||
CEN_OUT:
|
||||
CALL CEN_OST ; READY TO SEND?
|
||||
JR Z,CEN_OUT ; LOOP IF NOT
|
||||
; *** ADD CODE TO OUTPUT BYTE ***
|
||||
LPT_OUT:
|
||||
CALL LPT_OST ; READY TO SEND?
|
||||
JR Z,LPT_OUT ; LOOP IF NOT
|
||||
LD A,(IY+3)
|
||||
LD C,A ; PORT 0 (DATA)
|
||||
OUT (C),E ; OUTPUT DATA TO PORT
|
||||
call DELAY ; ignore anything back after a reset
|
||||
ld A,%00001101 ; select & strobe, LEDS OFF
|
||||
CALL DELAY ; IGNORE ANYTHING BACK AFTER A RESET
|
||||
LD A,%00001101 ; SELECT & STROBE, LEDS OFF
|
||||
INC C ; PUT CONTROL PORT IN C
|
||||
INC C
|
||||
OUT (C),A ; OUTPUT DATA TO PORT
|
||||
call DELAY ; ignore anything back after a reset
|
||||
ld A,%00001100 ; select, LEDS OFF
|
||||
CALL DELAY ; IGNORE ANYTHING BACK AFTER A RESET
|
||||
LD A,%00001100 ; SELECT, LEDS OFF
|
||||
OUT (C),A ; OUTPUT DATA TO PORT
|
||||
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
@@ -154,14 +153,14 @@ CEN_OUT:
|
||||
;
|
||||
; INPUT STATUS
|
||||
;
|
||||
CEN_IST:
|
||||
LPT_IST:
|
||||
; INPUT NOT SUPPORTED - RETURN NOT READY
|
||||
XOR A ; ZERO BYTES AVAILABLE
|
||||
RET ; DONE
|
||||
;
|
||||
; OUTPUT STATUS
|
||||
;
|
||||
CEN_OST:
|
||||
LPT_OST:
|
||||
LD A,(IY+3)
|
||||
LD C,A ; PORT 0 (DATA)
|
||||
INC C ; SELECT STATUS PORT
|
||||
@@ -171,16 +170,16 @@ CEN_OST:
|
||||
;
|
||||
; INITIALIZE DEVICE
|
||||
;
|
||||
CEN_INITDEV:
|
||||
LPT_INITDEV:
|
||||
HB_DI ; AVOID CONFLICTS
|
||||
CALL CEN_INITDEVX ; DO THE REAL WORK
|
||||
CALL LPT_INITDEVX ; DO THE REAL WORK
|
||||
HB_EI ; INTS BACK ON
|
||||
RET ; DONE
|
||||
;
|
||||
; THIS ENTRY POINT BYPASSES DISABLING/ENABLING INTS WHICH IS REQUIRED BY
|
||||
; PREINIT ABOVE. PREINIT IS NOT ALLOWED TO ENABLE INTS!
|
||||
;
|
||||
CEN_INITDEVX:
|
||||
LPT_INITDEVX:
|
||||
LD A,(IY+3)
|
||||
LD C,A ; PORT 0 (DATA)
|
||||
XOR A ; CLEAR ACCUM
|
||||
@@ -197,7 +196,7 @@ CEN_INITDEVX:
|
||||
;
|
||||
;
|
||||
;
|
||||
CEN_QUERY:
|
||||
LPT_QUERY:
|
||||
LD E,(IY+4) ; FIRST CONFIG BYTE TO E
|
||||
LD D,(IY+5) ; SECOND CONFIG BYTE TO D
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
@@ -205,8 +204,8 @@ CEN_QUERY:
|
||||
;
|
||||
;
|
||||
;
|
||||
CEN_DEVICE:
|
||||
LD D,CIODEV_CEN ; D := DEVICE TYPE
|
||||
LPT_DEVICE:
|
||||
LD D,CIODEV_LPT ; D := DEVICE TYPE
|
||||
LD E,(IY) ; E := PHYSICAL UNIT
|
||||
LD C,$40 ; C := DEVICE TYPE, 0x40 IS PIO
|
||||
LD H,(IY+1) ; H := MODE
|
||||
@@ -214,62 +213,71 @@ CEN_DEVICE:
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
; CEN DETECTION ROUTINE
|
||||
; LPT DETECTION ROUTINE
|
||||
;
|
||||
CEN_DETECT:
|
||||
LPT_DETECT:
|
||||
LD A,(IY+3) ; BASE PORT ADDRESS
|
||||
ADD A,2 ; USE PORT 2 FOR DETECT
|
||||
LD C,A ; PUT IN C FOR I/O
|
||||
CALL CEN_DETECT2 ; CHECK IT
|
||||
JR Z,CEN_DETECT1 ; FOUND IT, RECORD IT
|
||||
LD A,CEN_NONE ; NOTHING FOUND
|
||||
CALL LPT_DETECT2 ; CHECK IT
|
||||
JR Z,LPT_DETECT1 ; FOUND IT, RECORD IT
|
||||
LD A,LPT_NONE ; NOTHING FOUND
|
||||
RET ; DONE
|
||||
;
|
||||
CEN_DETECT1:
|
||||
; CEN FOUND, RECORD IT
|
||||
LD A,CEN_MBC ; RETURN CHIP TYPE
|
||||
LPT_DETECT1:
|
||||
; LPT FOUND, RECORD IT
|
||||
LD A,LPT_IBM ; RETURN CHIP TYPE
|
||||
RET ; DONE
|
||||
;
|
||||
CEN_DETECT2:
|
||||
; LOOK FOR CEN AT PORT ADDRESS IN C
|
||||
XOR A ; DEFAULT VALUE
|
||||
LPT_DETECT2:
|
||||
; LOOK FOR LPT AT BASE PORT ADDRESS IN C
|
||||
INC C ; PORT C FOR I/O
|
||||
INC C ; ...
|
||||
XOR A ; DEFAULT VALUE (TRI-STATE OFF)
|
||||
OUT (C),A ; SEND IT
|
||||
IN A,(C) ; READ IT
|
||||
AND %11000000 ; ISOLATE STATUS BITS
|
||||
CP %00000000 ; CORRECT VALUE?
|
||||
RET NZ ; IF NOT, RETURN
|
||||
LD A,%11000000 ; STATUS BITS ON (LEDS OFF)
|
||||
;
|
||||
;IN A,(C) ; READ IT
|
||||
;AND %11000000 ; ISOLATE STATUS BITS
|
||||
;CP %00000000 ; CORRECT VALUE?
|
||||
;RET NZ ; IF NOT, RETURN
|
||||
;LD A,%11000000 ; STATUS BITS ON (LEDS OFF)
|
||||
;OUT (C),A ; SEND IT
|
||||
;IN A,(C) ; READ IT
|
||||
;AND %11000000 ; ISOLATE STATUS BITS
|
||||
;CP %11000000 ; CORRECT VALUE?
|
||||
;
|
||||
DEC C ; BACK TO BASE PORT
|
||||
DEC C ; ...
|
||||
LD A,$A5 ; TEST VALUE
|
||||
OUT (C),A ; SEND IT
|
||||
IN A,(C) ; READ IT
|
||||
AND %11000000 ; ISOLATE STATUS BITS
|
||||
CP %11000000 ; CORRECT VALUE?
|
||||
IN A,(C) ; READ IT BACK
|
||||
CP $A5 ; CORRECT?
|
||||
RET ; RETURN (ZF SET CORRECTLY)
|
||||
;
|
||||
;
|
||||
;
|
||||
CEN_PRTCFG:
|
||||
LPT_PRTCFG:
|
||||
; ANNOUNCE PORT
|
||||
CALL NEWLINE ; FORMATTING
|
||||
PRTS("CEN$") ; FORMATTING
|
||||
PRTS("LPT$") ; FORMATTING
|
||||
LD A,(IY) ; DEVICE NUM
|
||||
CALL PRTDECB ; PRINT DEVICE NUM
|
||||
PRTS(": IO=0x$") ; FORMATTING
|
||||
LD A,(IY+3) ; GET BASE PORT
|
||||
CALL PRTHEXBYTE ; PRINT BASE PORT
|
||||
|
||||
; PRINT THE CEN TYPE
|
||||
; PRINT THE LPT TYPE
|
||||
CALL PC_SPACE ; FORMATTING
|
||||
LD A,(IY+1) ; GET CEN TYPE BYTE
|
||||
LD A,(IY+1) ; GET LPT TYPE BYTE
|
||||
RLCA ; MAKE IT A WORD OFFSET
|
||||
LD HL,CEN_TYPE_MAP ; POINT HL TO TYPE MAP TABLE
|
||||
LD HL,LPT_TYPE_MAP ; POINT HL TO TYPE MAP TABLE
|
||||
CALL ADDHLA ; HL := ENTRY
|
||||
LD E,(HL) ; DEREFERENCE
|
||||
INC HL ; ...
|
||||
LD D,(HL) ; ... TO GET STRING POINTER
|
||||
CALL WRITESTR ; PRINT IT
|
||||
;
|
||||
; ALL DONE IF NO CEN WAS DETECTED
|
||||
LD A,(IY+1) ; GET CEN TYPE BYTE
|
||||
; ALL DONE IF NO LPT WAS DETECTED
|
||||
LD A,(IY+1) ; GET LPT TYPE BYTE
|
||||
OR A ; SET FLAGS
|
||||
RET Z ; IF ZERO, NOT PRESENT
|
||||
;
|
||||
@@ -280,41 +288,41 @@ CEN_PRTCFG:
|
||||
;
|
||||
;
|
||||
;
|
||||
CEN_TYPE_MAP:
|
||||
.DW CEN_STR_NONE
|
||||
.DW CEN_STR_MBC
|
||||
LPT_TYPE_MAP:
|
||||
.DW LPT_STR_NONE
|
||||
.DW LPT_STR_IBM
|
||||
;
|
||||
CEN_STR_NONE .DB "<NOT PRESENT>$"
|
||||
CEN_STR_MBC .DB "MBC$"
|
||||
LPT_STR_NONE .DB "<NOT PRESENT>$"
|
||||
LPT_STR_IBM .DB "IBM$"
|
||||
;
|
||||
; WORKING VARIABLES
|
||||
;
|
||||
CEN_DEV .DB 0 ; DEVICE NUM USED DURING INIT
|
||||
LPT_DEV .DB 0 ; DEVICE NUM USED DURING INIT
|
||||
;
|
||||
; CEN DEVICE CONFIGURATION TABLE
|
||||
; LPT DEVICE CONFIGURATION TABLE
|
||||
;
|
||||
CEN_CFG:
|
||||
LPT_CFG:
|
||||
;
|
||||
CEN0_CFG:
|
||||
; CEN MODULE A CONFIG
|
||||
LPT0_CFG:
|
||||
; LPT MODULE A CONFIG
|
||||
.DB 0 ; DEVICE NUMBER (SET DURING INIT)
|
||||
.DB 0 ; CEN TYPE (SET DURING INIT)
|
||||
.DB 0 ; LPT TYPE (SET DURING INIT)
|
||||
.DB 0 ; MODULE ID
|
||||
.DB CEN0BASE ; BASE PORT
|
||||
.DB LPT0BASE ; BASE PORT
|
||||
.DW 0 ; LINE CONFIGURATION
|
||||
;
|
||||
CEN_CFGSIZ .EQU $ - CEN_CFG ; SIZE OF ONE CFG TABLE ENTRY
|
||||
LPT_CFGSIZ .EQU $ - LPT_CFG ; SIZE OF ONE CFG TABLE ENTRY
|
||||
;
|
||||
#IF (CENCNT >= 2)
|
||||
#IF (LPTCNT >= 2)
|
||||
;
|
||||
CEN1_CFG:
|
||||
; CEN MODULE B CONFIG
|
||||
LPT1_CFG:
|
||||
; LPT MODULE B CONFIG
|
||||
.DB 0 ; DEVICE NUMBER (SET DURING INIT)
|
||||
.DB 0 ; CEN TYPE (SET DURING INIT)
|
||||
.DB 0 ; LPT TYPE (SET DURING INIT)
|
||||
.DB 1 ; MODULE ID
|
||||
.DB CEN1BASE ; BASE PORT
|
||||
.DB LPT1BASE ; BASE PORT
|
||||
.DW 0 ; LINE CONFIGURATION
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
CEN_CFGCNT .EQU ($ - CEN_CFG) / CEN_CFGSIZ
|
||||
LPT_CFGCNT .EQU ($ - LPT_CFG) / LPT_CFGSIZ
|
||||
@@ -2,4 +2,4 @@
|
||||
#DEFINE RMN 1
|
||||
#DEFINE RUP 1
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "3.1.1-pre.174"
|
||||
#DEFINE BIOSVER "3.1.1-pre.175"
|
||||
|
||||
@@ -3,5 +3,5 @@ rmn equ 1
|
||||
rup equ 1
|
||||
rtp equ 0
|
||||
biosver macro
|
||||
db "3.1.1-pre.174"
|
||||
db "3.1.1-pre.175"
|
||||
endm
|
||||
|
||||
Reference in New Issue
Block a user