Extend serial device type to support 4 devices including parallel port device.

This commit is contained in:
b1ackmai1er
2018-10-07 15:45:46 +08:00
committed by GitHub
parent f4953e6394
commit a69218877c
2 changed files with 70 additions and 25 deletions

View File

@@ -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
;

View File

@@ -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
;