mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
Extend serial device type to support 4 devices including parallel port device.
This commit is contained in:
@@ -2808,7 +2808,7 @@ PS_SERIAL:
|
||||
PUSH BC ; SAVE UNIT INDEX FOR LATER
|
||||
;
|
||||
; UNIT COLUMN
|
||||
PRTS("Char. $")
|
||||
PRTS("CharIO $")
|
||||
LD A,C ; MOVE UNIT NUM TO A
|
||||
CALL PRTDECB ; PRINT IT, ASSUME SINGLE DIGIT
|
||||
PRTS(" $") ; PAD TO NEXT COLUMN
|
||||
@@ -2833,10 +2833,17 @@ PS_SERIAL:
|
||||
;
|
||||
PS_PRTST:
|
||||
LD HL,PS_STRS232 ; ASSUME RS-232
|
||||
BIT 7,C ; 0=RS-232, 1=TERMINAL
|
||||
JR Z,PS_PRTST1 ; HANDLE TERMINAL TYPE
|
||||
LD HL,PS_STTERM ; TYPE IS TERMINAL
|
||||
;
|
||||
LD A,C
|
||||
AND $C0
|
||||
JR Z,PS_PRTST1 ; 00 TYPE 0 - RS-232
|
||||
LD HL,PS_STTERM
|
||||
CP $40
|
||||
JR Z,PS_PRTST1 ; 40 TYPE 1 - Terminal
|
||||
LD HL,PS_STPPT
|
||||
CP $80
|
||||
JR Z,PS_PRTST1 ; 80 TYPE 2 - Parallel
|
||||
LD HL,PS_STUDEF
|
||||
; ; C0 TYPE 3 - Undefined
|
||||
PS_PRTST1:
|
||||
CALL PS_PRT ; PRINT $ TERM STRING AT (HL), C:=CHARS PRINTED
|
||||
LD A,18 ; 18 CHAR FIELD
|
||||
@@ -2847,9 +2854,15 @@ PS_PRTST1:
|
||||
; PRINT SERIAL CONFIG (UNIT IN E, ATTRIBUTE IN C)
|
||||
;
|
||||
PS_PRTSC:
|
||||
BIT 7,C ; 0=RS-232, 1=TERMINAL
|
||||
JR NZ,PS_PRTSC1 ; PRINT TERMINAL CONFIG
|
||||
;
|
||||
LD A,C
|
||||
AND $C0
|
||||
JR Z,PS_PRTSC0_1 ; 00 TYPE 0 - RS-232
|
||||
CP $40
|
||||
JR Z,PS_PRTSC1 ; 40 TYPE 1 - Terminal
|
||||
CP $80
|
||||
JR Z,PS_PRTSC2_1 ; 80 TYPE 2 - Parallel
|
||||
; ; C0 TYPE 3 - Undefined
|
||||
PS_PRTSC0_1:
|
||||
; PRINT RS-232 CONFIG
|
||||
LD B,BF_CIOQUERY ; HBIOS FUNC: GET CIO CONFIG
|
||||
LD C,E ; SET SERIAL UNIT NUM
|
||||
@@ -2907,6 +2920,23 @@ PS_PRTSC0:
|
||||
;
|
||||
RET
|
||||
;
|
||||
PS_PRTSC2_1:
|
||||
; PRINT PARALLEL CONFIG
|
||||
LD B,BF_CIOQUERY ; HBIOS FUNC: GET CIO CONFIG
|
||||
LD C,E ; SET SERIAL UNIT NUM
|
||||
RST 08 ; DE:HL := I/O CONFIG
|
||||
LD A,D ; TEST FOR $FF
|
||||
AND E
|
||||
INC A ; SET Z IF DE == $FF
|
||||
JP Z,PS_PRTNUL ; $FF == NO CONFIG DEFINED
|
||||
LD A,E
|
||||
OR A
|
||||
LD HL,PS_STPPTIN
|
||||
JR Z,PS_PRTST1
|
||||
LD HL,PS_STPPTOUT
|
||||
JR PS_PRTST1
|
||||
RET
|
||||
;
|
||||
PS_PRTSC1:
|
||||
; PRINT TERMINAL CONFIG
|
||||
LD A,C ; GET ATTRIBUTE VALUE
|
||||
@@ -3111,12 +3141,14 @@ PS_SDPIO .TEXT "PORT$"
|
||||
PS_STRS232 .TEXT "RS-232$"
|
||||
PS_STTERM .TEXT "Terminal$"
|
||||
PS_STPPT .TEXT "Parallel$"
|
||||
PS_STUDEF .TEXT "Undefined$"
|
||||
;
|
||||
PS_STPARMAP .DB "NONENMNS"
|
||||
|
||||
;
|
||||
; SERIAL TYPE STRINGS
|
||||
; PARALLEL TYPE STRINGS
|
||||
;
|
||||
PS_STPPTIN .TEXT "Input$"
|
||||
PS_STPPTOUT .TEXT "Output$"
|
||||
;
|
||||
; VIDEO DEVICE STRINGS
|
||||
;
|
||||
|
||||
@@ -13,6 +13,13 @@ PIO4B .EQU ; ECB-4PIO
|
||||
PIO5A .EQU ; ECB-4PIO
|
||||
PIO5B .EQU ; ECB-4PIO
|
||||
|
||||
PIO_Input .EQU $0000
|
||||
PIO_Output .EQU $0001
|
||||
|
||||
|
||||
DEFPIOCFGA .EQU $8000 + PIO_Input
|
||||
DEFPIOCFGB .EQU $8000 + PIO_Output
|
||||
|
||||
PIO_NONE .EQU 0
|
||||
PIO_ZPIO .EQU 1
|
||||
PIO_8255 .EQU 2
|
||||
@@ -122,7 +129,7 @@ PIO_CFG:
|
||||
.DB PIO_ZPIO ; PIO TYPE (SET DURING INIT)
|
||||
.DB 0 ; PIO CHANNEL (A)
|
||||
.DB PIOBASE+2 ; BASE PORT (CMD PORT)
|
||||
.DW DEFSIOACFG ; LINE CONFIGURATION
|
||||
.DW DEFPIOCFGA ; LINE CONFIGURATION
|
||||
.DW SIOA_RCVBUF ; POINTER TO RCV BUFFER STRUCT
|
||||
;
|
||||
; PIO CHANNEL B
|
||||
@@ -130,7 +137,7 @@ PIO_CFG:
|
||||
.DB PIO_ZPIO ; PIO TYPE (SET DURING INIT)
|
||||
.DB 1 ; PIO CHANNEL (B)
|
||||
.DB PIOBASE+3 ; BASE PORT (CMD PORT)
|
||||
.DW DEFSIOBCFG ; LINE CONFIGURATION
|
||||
.DW DEFPIOCFGB ; LINE CONFIGURATION
|
||||
.DW SIOB_RCVBUF ; POINTER TO RCV BUFFER STRUCT
|
||||
;
|
||||
; PIO CHANNEL A
|
||||
@@ -138,7 +145,7 @@ PIO_CFG:
|
||||
.DB PIO_ZPIO ; PIO TYPE (SET DURING INIT)
|
||||
.DB 0 ; PIO CHANNEL (A)
|
||||
.DB PIOBASE+6 ; BASE PORT (CMD PORT)
|
||||
.DW DEFSIOACFG ; LINE CONFIGURATION
|
||||
.DW DEFPIOCFGA ; LINE CONFIGURATION
|
||||
.DW SIOA_RCVBUF ; POINTER TO RCV BUFFER STRUCT
|
||||
;
|
||||
; PIO CHANNEL B
|
||||
@@ -146,14 +153,14 @@ PIO_CFG:
|
||||
.DB PIO_ZPIO ; PIO TYPE (SET DURING INIT)
|
||||
.DB 1 ; PIO CHANNEL (B)
|
||||
.DB PIOBASE+7 ; BASE PORT (CMD PORT)
|
||||
.DW DEFSIOBCFG ; LINE CONFIGURATION
|
||||
.DW DEFPIOCFGB ; LINE CONFIGURATION
|
||||
.DW SIOB_RCVBUF ; POINTER TO RCV BUFFER STRUCT
|
||||
; PIO CHANNEL A
|
||||
.DB 4 ; DEVICE NUMBER (SET DURING INIT)
|
||||
.DB PIO_ZPIO ; PIO TYPE (SET DURING INIT)
|
||||
.DB 0 ; PIO CHANNEL (A)
|
||||
.DB 4PIOBASE+2 ; BASE PORT (CMD PORT)
|
||||
.DW DEFSIOACFG ; LINE CONFIGURATION
|
||||
.DW DEFPIOCFGA ; LINE CONFIGURATION
|
||||
.DW SIOA_RCVBUF ; POINTER TO RCV BUFFER STRUCT
|
||||
;
|
||||
; PIO CHANNEL B
|
||||
@@ -161,7 +168,7 @@ PIO_CFG:
|
||||
.DB PIO_ZPIO ; PIO TYPE (SET DURING INIT)
|
||||
.DB 1 ; PIO CHANNEL (B)
|
||||
.DB 4PIOBASE+3 ; BASE PORT (CMD PORT)
|
||||
.DW DEFSIOBCFG ; LINE CONFIGURATION
|
||||
.DW DEFPIOCFGB ; LINE CONFIGURATION
|
||||
.DW SIOB_RCVBUF ; POINTER TO RCV BUFFER STRUCT
|
||||
;
|
||||
; PIO CHANNEL A
|
||||
@@ -169,7 +176,7 @@ PIO_CFG:
|
||||
.DB PIO_ZPIO ; PIO TYPE (SET DURING INIT)
|
||||
.DB 0 ; PIO CHANNEL (A)
|
||||
.DB 4PIOBASE+6 ; BASE PORT (CMD PORT)
|
||||
.DW DEFSIOACFG ; LINE CONFIGURATION
|
||||
.DW DEFPIOCFGA ; LINE CONFIGURATION
|
||||
.DW SIOA_RCVBUF ; POINTER TO RCV BUFFER STRUCT
|
||||
;
|
||||
; PIO CHANNEL B
|
||||
@@ -177,7 +184,7 @@ PIO_CFG:
|
||||
.DB PIO_ZPIO ; PIO TYPE (SET DURING INIT)
|
||||
.DB 1 ; PIO CHANNEL (B)
|
||||
.DB 4PIOBASE+7 ; BASE PORT (CMD PORT)
|
||||
.DW DEFSIOBCFG ; LINE CONFIGURATION
|
||||
.DW DEFPIOCFGB ; LINE CONFIGURATION
|
||||
.DW SIOB_RCVBUF ; POINTER TO RCV BUFFER STRUCT
|
||||
;
|
||||
; PIO CHANNEL A
|
||||
@@ -185,7 +192,7 @@ PIO_CFG:
|
||||
.DB PIO_ZPIO ; PIO TYPE (SET DURING INIT)
|
||||
.DB 0 ; PIO CHANNEL (A)
|
||||
.DB 4PIOBASE+10 ; BASE PORT (CMD PORT)
|
||||
.DW DEFSIOACFG ; LINE CONFIGURATION
|
||||
.DW DEFPIOCFGA ; LINE CONFIGURATION
|
||||
.DW SIOA_RCVBUF ; POINTER TO RCV BUFFER STRUCT
|
||||
;
|
||||
; PIO CHANNEL B
|
||||
@@ -193,7 +200,7 @@ PIO_CFG:
|
||||
.DB PIO_ZPIO ; PIO TYPE (SET DURING INIT)
|
||||
.DB 1 ; PIO CHANNEL (B)
|
||||
.DB 4PIOBASE+11 ; BASE PORT (CMD PORT)
|
||||
.DW DEFSIOBCFG ; LINE CONFIGURATION
|
||||
.DW DEFPIOCFGB ; LINE CONFIGURATION
|
||||
.DW SIOB_RCVBUF ; POINTER TO RCV BUFFER STRUCT
|
||||
;
|
||||
; PIO CHANNEL A
|
||||
@@ -201,7 +208,7 @@ PIO_CFG:
|
||||
.DB PIO_ZPIO ; PIO TYPE (SET DURING INIT)
|
||||
.DB 0 ; PIO CHANNEL (A)
|
||||
.DB 4PIOBASE+14 ; BASE PORT (CMD PORT)
|
||||
.DW DEFSIOACFG ; LINE CONFIGURATION
|
||||
.DW DEFPIOCFGA ; LINE CONFIGURATION
|
||||
.DW SIOA_RCVBUF ; POINTER TO RCV BUFFER STRUCT
|
||||
;
|
||||
; PIO CHANNEL B
|
||||
@@ -209,7 +216,7 @@ PIO_CFG:
|
||||
.DB PIO_ZPIO ; PIO TYPE (SET DURING INIT)
|
||||
.DB 1 ; PIO CHANNEL (B)
|
||||
.DB 4PIOBASE+15 ; BASE PORT (CMD PORT)
|
||||
.DW DEFSIOBCFG ; LINE CONFIGURATION
|
||||
.DW DEFPIOCFGB ; LINE CONFIGURATION
|
||||
.DW SIOB_RCVBUF ; POINTER TO RCV BUFFER STRUCT
|
||||
;
|
||||
; PIO CHANNEL A
|
||||
@@ -217,7 +224,7 @@ PIO_CFG:
|
||||
.DB PIO_ZPIO ; PIO TYPE (SET DURING INIT)
|
||||
.DB 0 ; PIO CHANNEL (A)
|
||||
.DB 4PIOBASE+14 ; BASE PORT (CMD PORT)
|
||||
.DW DEFSIOACFG ; LINE CONFIGURATION
|
||||
.DW DEFPIOCFGA ; LINE CONFIGURATION
|
||||
.DW SIOA_RCVBUF ; POINTER TO RCV BUFFER STRUCT
|
||||
;
|
||||
; PIO CHANNEL B
|
||||
@@ -225,7 +232,7 @@ PIO_CFG:
|
||||
.DB PIO_8255 ; PIO TYPE (SET DURING INIT)
|
||||
.DB 1 ; PIO CHANNEL (B)
|
||||
.DB 4PIOBASE+15 ; BASE PORT (CMD PORT)
|
||||
.DW DEFSIOBCFG ; LINE CONFIGURATION
|
||||
.DW DEFPIOCFGB ; LINE CONFIGURATION
|
||||
.DW SIOB_RCVBUF ; POINTER TO RCV BUFFER STRUCT
|
||||
;
|
||||
;
|
||||
@@ -259,6 +266,10 @@ PIO_IST:
|
||||
PIO_OST:
|
||||
RET
|
||||
;
|
||||
; PIO_INITDEV - Configure device.
|
||||
; If DE = FFFF then extract the configuratio information from the table of devices and program the device using those settings.
|
||||
; Otherwise use the configuration information in DE to program those settings and save them in the device table
|
||||
|
||||
PIO_INITDEV:
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
@@ -284,7 +295,9 @@ PIO_QUERY:
|
||||
PIO_DEVICE:
|
||||
LD D,CIODEV_PIO ; D := DEVICE TYPE
|
||||
LD E,(IY) ; E := PHYSICAL UNIT
|
||||
LD C,$80
|
||||
LD A,E
|
||||
SET 7,A
|
||||
LD C,A
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
|
||||
Reference in New Issue
Block a user