Browse Source

Support DLP Connection on S100 Serial I/O

pull/626/head v3.6.0-dev.33
Wayne Warthen 4 months ago
parent
commit
affc47efc2
No known key found for this signature in database GPG Key ID: 8B34ED29C07EEB0A
  1. 1
      Doc/ChangeLog.txt
  2. 8
      Source/HBIOS/Config/SZ80_std.asm
  3. 8
      Source/HBIOS/hbios.asm
  4. 33
      Source/HBIOS/sser.asm
  5. 2
      Source/ver.inc
  6. 2
      Source/ver.lib

1
Doc/ChangeLog.txt

@ -32,6 +32,7 @@ Version 3.6
- HJB: Update PPIDE driver, add support for MSX BEER IDE interface - HJB: Update PPIDE driver, add support for MSX BEER IDE interface
- HJB: Added loader for MSX - HJB: Added loader for MSX
- HJB: Added IDE driver master media detect option - HJB: Added IDE driver master media detect option
- WBW: Add support for S100 Serial I/O DLP Serial connection
Version 3.5.1 Version 3.5.1
------------- -------------

8
Source/HBIOS/Config/SZ80_std.asm

@ -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_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS
FPLED_IO .SET $05 ; FP: PORT ADDRESS FOR FP 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) PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
; ;
ESPSDENABLE .SET TRUE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET TRUE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)

8
Source/HBIOS/hbios.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) ; MBC: LED Port=0x70, bits 1-0, normal, shared w/ RTC port (LEDMODE_RTC)
; RPH? ; RPH?
; DUO: LED Port=0x94, bits 1-0, normal, shared w/ RTC port (LEDMODE_RTC) ; 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) ; NABU: LED Port = $00, bits 5-3, normal, shared w/ control port (LEDMODE_NABU)
; ;
#IF (LEDENABLE) #IF (LEDENABLE)
@ -3702,6 +3702,12 @@ HB_WDZ:
AND %00000001 ; ISOLATE CONSOLE BIT AND %00000001 ; ISOLATE CONSOLE BIT
JR NZ,INITSYS3 ; NOT SET, BYPASS CONSOLE SWITCH JR NZ,INITSYS3 ; NOT SET, BYPASS CONSOLE SWITCH
#ENDIF #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)) #IF ((PLATFORM == PLT_SZ80) & (MEMMGR == MM_Z2))
; IOBYTE: XXXXXVVC ; IOBYTE: XXXXXVVC

33
Source/HBIOS/sser.asm

@ -13,6 +13,15 @@
; ;
SSER_PREINIT: 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 ; ADD OURSELVES TO CIO DISPATCH TABLE
; ;
LD D,0 ; PHYSICAL UNIT IS ZERO LD D,0 ; PHYSICAL UNIT IS ZERO
@ -26,6 +35,9 @@ SSER_PREINIT:
; ;
; ;
SSER_INIT: SSER_INIT:
LD A,(SSER_PRESENT) ; PRESENT FLAG
OR A ; SET FLAGS
RET Z ; ABORT IF NOT PRESENT
CALL NEWLINE CALL NEWLINE
PRTS("SSER:$") PRTS("SSER:$")
PRTS(" IO=0x$") ; FORMATTING PRTS(" IO=0x$") ; FORMATTING
@ -114,3 +126,24 @@ SSER_DEVICE:
LD L,SSERSTATUS ; L := BASE I/O ADDRESS LD L,SSERSTATUS ; L := BASE I/O ADDRESS
XOR A ; SIGNAL SUCCESS XOR A ; SIGNAL SUCCESS
RET 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

2
Source/ver.inc

@ -2,7 +2,7 @@
#DEFINE RMN 6 #DEFINE RMN 6
#DEFINE RUP 0 #DEFINE RUP 0
#DEFINE RTP 0 #DEFINE RTP 0
#DEFINE BIOSVER "3.6.0-dev.32"
#DEFINE BIOSVER "3.6.0-dev.33"
#define rmj RMJ #define rmj RMJ
#define rmn RMN #define rmn RMN
#define rup RUP #define rup RUP

2
Source/ver.lib

@ -3,5 +3,5 @@ rmn equ 6
rup equ 0 rup equ 0
rtp equ 0 rtp equ 0
biosver macro biosver macro
db "3.6.0-dev.32"
db "3.6.0-dev.33"
endm endm

Loading…
Cancel
Save