Support DLP Connection on S100 Serial I/O

This commit is contained in:
Wayne Warthen
2025-10-11 15:10:58 -07:00
parent 1195a82ab9
commit affc47efc2
6 changed files with 51 additions and 3 deletions

View File

@@ -56,6 +56,14 @@ MEMMGR .SET MM_SZ80 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ51
FPLED_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS
FPLED_IO .SET $05 ; FP: PORT ADDRESS FOR FP LEDS
;
SSERENABLE .SET TRUE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM)
SSERSTATUS .SET $AA ; SSER: STATUS PORT
SSERDATA .SET $AC ; SSER: DATA PORT
SSERIRDY .SET %10000000 ; SSER: INPUT READY BIT MASK
SSERIINV .SET TRUE ; SSER: INPUT READY BIT INVERTED
SSERORDY .SET %01000000 ; SSER: OUTPUT READY BIT MASK
SSEROINV .SET TRUE ; SSER: OUTPUT READY BIT INVERTED
;
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
;
ESPSDENABLE .SET TRUE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)

View File

@@ -188,7 +188,7 @@ SUPCTS .EQU FALSE ; SUPPRESS CTS DURING HBIOS BOOT
; MBC: LED Port=0x70, bits 1-0, normal, shared w/ RTC port (LEDMODE_RTC)
; RPH?
; DUO: LED Port=0x94, bits 1-0, normal, shared w/ RTC port (LEDMODE_RTC)
; S100: LED Port = $0E, bit 2, inverted, dedicated port (LEDMODE_SC)
; S100 Z180 SBC: LED Port = $0E, bit 2, inverted, dedicated port (LEDMODE_SC)
; NABU: LED Port = $00, bits 5-3, normal, shared w/ control port (LEDMODE_NABU)
;
#IF (LEDENABLE)
@@ -3702,6 +3702,12 @@ HB_WDZ:
AND %00000001 ; ISOLATE CONSOLE BIT
JR NZ,INITSYS3 ; NOT SET, BYPASS CONSOLE SWITCH
#ENDIF
;
#IF ((PLATFORM == PLT_SZ80) & (MEMMGR == MM_SZ80))
IN A,($EF) ; GET IO BYTE
AND %00100000 ; ISOLATE CONSOLE BIT
JR Z,INITSYS3 ; IF ZERO, BYPASS CONSOLE SWITCH
#ENDIF
;
#IF ((PLATFORM == PLT_SZ80) & (MEMMGR == MM_Z2))
; IOBYTE: XXXXXVVC

View File

@@ -13,6 +13,15 @@
;
SSER_PREINIT:
;
; TEST FOR PRESENCE
;
XOR A ; CLEAR ACCUM
LD (SSER_PRESENT),A ; PRESET TO NOT PRESENT
CALL SSER_DETECT ; CHECK FOR HARDWARE, Z=PRESENT
RET NZ ; ABORT IF NOT PRESENT
OR $FF ; PRESENT FLAG
LD (SSER_PRESENT),A ; STORE IT
;
; ADD OURSELVES TO CIO DISPATCH TABLE
;
LD D,0 ; PHYSICAL UNIT IS ZERO
@@ -26,6 +35,9 @@ SSER_PREINIT:
;
;
SSER_INIT:
LD A,(SSER_PRESENT) ; PRESENT FLAG
OR A ; SET FLAGS
RET Z ; ABORT IF NOT PRESENT
CALL NEWLINE
PRTS("SSER:$")
PRTS(" IO=0x$") ; FORMATTING
@@ -114,3 +126,24 @@ SSER_DEVICE:
LD L,SSERSTATUS ; L := BASE I/O ADDRESS
XOR A ; SIGNAL SUCCESS
RET
;
; TEST FOR HARDWARE PRESENCE BY CHECKING THE STATUS PORT. IF IT IS
; $FF, WE ASSUME NOT PRESENT. THEN READ PORT A DIFFERENT WAY. IF
; PRESENT PORT SHOULD HAVE SAME VALUE.
;
;
SSER_DETECT:
IN A,(SSERSTATUS) ; GET DATA PORT VALUE DIRECTLY
CP $FF ; CHECK FOR $FF
JR NZ,SSER_DETECT1 ; IF NOT $FF, MAY BE ACTIVE, CONTINUE
OR A ; SWITCH ZF BACK TO NZ
RET ; DONE
SSER_DETECT1:
LD C,SSERSTATUS ; PORT ADR TO C
IN B,(C) ; GET DATA PORT VALUE VIA (C)
CP B ; COMPARE, EQUAL IMPLIES ACTIVE PORT
RET
;
;
;
SSER_PRESENT .DB 0 ; FLAG FOR HARDWARE PRESENT