From a28bfc157bb79c9e8006d65fa87ed69bc9dc16d9 Mon Sep 17 00:00:00 2001 From: b1ackmai1er <39449559+b1ackmai1er@users.noreply.github.com> Date: Sun, 7 Oct 2018 17:11:52 +0800 Subject: [PATCH] Extend serial device type to support 4 devices including parallel port device. --- Source/HBIOS/hbios.asm | 16 +++++++++++----- Source/HBIOS/hbios.inc | 10 +++++++++- Source/HBIOS/pio.asm | 5 +++-- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 59f40d5f..b52ded07 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -1336,7 +1336,7 @@ CIO_ADDENT: ; WORD UNIT SPECIFIC DATA (TYPICALLY A DEVICE INSTANCE DATA ADDRESS) ; CIO_FNCNT .EQU 7 ; NUMBER OF CIO FUNCS (FOR RANGE CHECK) -CIO_MAX .EQU 32 ; UP TO 16 UNITS +CIO_MAX .EQU 32 ; UP TO UNITS CIO_SIZ .EQU CIO_MAX * 4 ; EACH ENTRY IS 4 BYTES ; .DB CIO_FNCNT ; CIO FUNCTION COUNT (FOR RANGE CHECK) @@ -1399,7 +1399,7 @@ DIO_ADDENT: ; WORD UNIT SPECIFIC DATA (TYPICALLY A DEVICE INSTANCE DATA ADDRESS) ; DIO_FNCNT .EQU 12 ; NUMBER OF DIO FUNCS (FOR RANGE CHECK) -DIO_MAX .EQU 16 ; UP TO 16 UNITS +DIO_MAX .EQU 16 ; UP TO 32 UNITS DIO_SIZ .EQU DIO_MAX * 4 ; EACH ENTRY IS 4 BYTES ; .DB DIO_FNCNT ; DIO FUNCTION COUNT (FOR RANGE CHECK) @@ -2931,10 +2931,15 @@ PS_PRTSC2_1: JP Z,PS_PRTNUL ; $FF == NO CONFIG DEFINED LD A,E OR A - LD HL,PS_STPPTIN + LD HL,PS_STPPTIN ; Parallel Input JR Z,PS_PRTST1 - LD HL,PS_STPPTOUT - JR PS_PRTST1 + LD HL,PS_STPPTOUT ; Parallel Output + DEC A + JR Z,PS_PRTST1 + LD HL,PS_STRPPTBD ; Parallel BiDirectional + DEC A + JP Z,PS_PRTST1 + JP PS_PRTNUL RET ; PS_PRTSC1: @@ -3149,6 +3154,7 @@ PS_STPARMAP .DB "NONENMNS" ; PS_STPPTIN .TEXT "Input$" PS_STPPTOUT .TEXT "Output$" +PS_STRPPTBD .TEXT "Bi-Directional$" ; ; VIDEO DEVICE STRINGS ; diff --git a/Source/HBIOS/hbios.inc b/Source/HBIOS/hbios.inc index ad64b3b5..50e06531 100644 --- a/Source/HBIOS/hbios.inc +++ b/Source/HBIOS/hbios.inc @@ -83,7 +83,7 @@ BF_SYSINT_INFO .EQU $00 ; GET INTERRUPT SYSTEM INFO BF_SYSINT_GET .EQU $10 ; GET INT VECTOR ADDRESS BF_SYSINT_SET .EQU $20 ; SET INT VECTOR ADDRESS ; -; SERIAL DEVICE IDS +; CHAR DEVICE IDS ; CIODEV_UART .EQU $00 CIODEV_ASCI .EQU $10 @@ -93,6 +93,14 @@ CIODEV_PPPCON .EQU $40 CIODEV_SIO .EQU $50 CIODEV_ACIA .EQU $60 CIODEV_CONSOLE .EQU $D0 +CIODEV_PIO .EQU $70 +; +; SUB TYPES OF CHAR DEVICES +; +;00 RS-232 +;01 TERMINAL +;02 PARALLEL PORT +;03 UNUSED ; ; DISK DEVICE IDS ; diff --git a/Source/HBIOS/pio.asm b/Source/HBIOS/pio.asm index d9e2af85..580f0f73 100644 --- a/Source/HBIOS/pio.asm +++ b/Source/HBIOS/pio.asm @@ -15,10 +15,11 @@ PIO5B .EQU ; ECB-4PIO PIO_Input .EQU $0000 PIO_Output .EQU $0001 - +PIO_BiDir .Equ $0002 DEFPIOCFGA .EQU $8000 + PIO_Input DEFPIOCFGB .EQU $8000 + PIO_Output +DEFPIOCFGX .EQU $8000 + PIO_BiDir PIO_NONE .EQU 0 PIO_ZPIO .EQU 1 @@ -160,7 +161,7 @@ PIO_CFG: .DB PIO_ZPIO ; PIO TYPE (SET DURING INIT) .DB 0 ; PIO CHANNEL (A) .DB 4PIOBASE+2 ; BASE PORT (CMD PORT) - .DW DEFPIOCFGA ; LINE CONFIGURATION + .DW DEFPIOCFGX ; LINE CONFIGURATION .DW SIOA_RCVBUF ; POINTER TO RCV BUFFER STRUCT ; ; PIO CHANNEL B