mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:13:13 -06:00
Support DLP Connection on S100 Serial I/O
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user