Browse Source

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

pull/14/head
b1ackmai1er 7 years ago
committed by GitHub
parent
commit
a69218877c
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 52
      Source/HBIOS/hbios.asm
  2. 43
      Source/HBIOS/pio.asm

52
Source/HBIOS/hbios.asm

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

43
Source/HBIOS/pio.asm

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

Loading…
Cancel
Save