From e1a4e815dcaee36a3d29f8c1cd50fef67a3b163a Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Thu, 17 Aug 2023 12:53:59 -0700 Subject: [PATCH] Fix S100 Z180 Board LED Operation - Status LED for S100 Z180 board was not enabled. Credit to Jay Cotton for finding this. --- Doc/ChangeLog.txt | 1 + Source/HBIOS/cfg_s100.asm | 2 +- Source/HBIOS/hbios.asm | 43 ++++++++++++++++++++------------------- 3 files changed, 24 insertions(+), 22 deletions(-) diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index 04fd5a39..4e7147bb 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -18,6 +18,7 @@ Version 3.3 - WBW: Preliminary support for Dan Werner's ESP32 MBC Module - WBW: Early support for Duodyne base system (CPU/UART/ROM/RAM/RTC/SPK) - M?C: Fixed XM to allow specifying HBIOS port for send operations +- WBW: Fix S100 Z180 LED operation (credit to Jay Cotton for finding this issue) Version 3.2.1 ------------- diff --git a/Source/HBIOS/cfg_s100.asm b/Source/HBIOS/cfg_s100.asm index 0438ba27..935b3978 100644 --- a/Source/HBIOS/cfg_s100.asm +++ b/Source/HBIOS/cfg_s100.asm @@ -77,7 +77,7 @@ FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES ; DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING ; -LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED) +LEDENABLE .EQU TRUE ; ENABLES STATUS LED (SINGLE LED) LEDMODE .EQU LEDMODE_STD ; LEDMODE_[STD|RTC] LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index c3bbccc6..4cf4aff2 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -105,13 +105,13 @@ MODCNT .SET MODCNT + 1 ; ; #IF (FPLED_ENABLE) -#DEFINE DIAG(N) PUSH AF - #DEFCONT \ LD A,N -; #DEFCONT \ OUT (DIAGPORT),A - #DEFCONT \ CALL FP_SETLEDS - #DEFCONT \ POP AF + #DEFINE DIAG(N) PUSH AF + #DEFCONT \ LD A,N +; #DEFCONT \ OUT (DIAGPORT),A + #DEFCONT \ CALL FP_SETLEDS + #DEFCONT \ POP AF #ELSE -#DEFINE DIAG(N) \; + #DEFINE DIAG(N) \; #ENDIF ; ; SCxxx: LED Port=0x0E, bit 2, inverted, dedicated port @@ -119,31 +119,32 @@ MODCNT .SET MODCNT + 1 ; Z80-512K: LED Port=0x6E, bit 0, inverted, dedicated port ; MBC: LED Port=0x70, bits 1-0, normal, shared w/ RTC port ; DUO: LED Port=0x94, bits 1-0, normal, shared w/ RTC port +; S100: LED Port = $0E, bit 2, inverted, dedicated port ; #IF (LEDENABLE) #IF (LEDMODE == LEDMODE_STD) -#DEFINE LED(N) PUSH AF - #DEFCONT \ LD A,~N - #DEFCONT \ OUT (LEDPORT),A - #DEFCONT \ POP AF + #DEFINE LED(N) PUSH AF + #DEFCONT \ LD A,~N + #DEFCONT \ OUT (LEDPORT),A + #DEFCONT \ POP AF #ENDIF #IF (LEDMODE == LEDMODE_RTC) -#DEFINE LED(N) PUSH AF - #DEFCONT \ LD A,(HB_RTCVAL) - #DEFCONT \ AND %11111100 - #DEFCONT \ OR (N & %00000011) - #DEFCONT \ LD (HB_RTCVAL),A - #DEFCONT \ OUT (LEDPORT),A - #DEFCONT \ POP AF + #DEFINE LED(N) PUSH AF + #DEFCONT \ LD A,(HB_RTCVAL) + #DEFCONT \ AND %11111100 + #DEFCONT \ OR (N & %00000011) + #DEFCONT \ LD (HB_RTCVAL),A + #DEFCONT \ OUT (LEDPORT),A + #DEFCONT \ POP AF #ENDIF #ELSE -#DEFINE LED(N) \; + #DEFINE LED(N) \; #ENDIF ; #DEFINE SYSCHKERR(HB_ERR) \ - #DEFCONT \ CALL SYSCHKA - #DEFCONT \ LD A,HB_ERR - #DEFCONT \ OR A +#DEFCONT \ CALL SYSCHKA +#DEFCONT \ LD A,HB_ERR +#DEFCONT \ OR A ; ; ;