mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
Status LED Support
This commit is contained in:
@@ -47,6 +47,10 @@ DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
;
|
||||
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
|
||||
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
|
||||
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
|
||||
@@ -65,6 +65,10 @@ DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
;
|
||||
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
|
||||
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
|
||||
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
|
||||
@@ -51,6 +51,10 @@ DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
;
|
||||
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
|
||||
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
|
||||
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
|
||||
@@ -54,6 +54,10 @@ DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
;
|
||||
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
|
||||
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
|
||||
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
|
||||
@@ -51,6 +51,10 @@ DIAGENABLE .EQU TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
;
|
||||
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
|
||||
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
|
||||
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
|
||||
@@ -46,6 +46,10 @@ DIAGENABLE .EQU TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
;
|
||||
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
|
||||
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
|
||||
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
|
||||
@@ -43,6 +43,10 @@ DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
;
|
||||
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
|
||||
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
|
||||
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
|
||||
@@ -46,6 +46,10 @@ DIAGENABLE .EQU TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .EQU $0D ; DIAGNOSTIC PORT ADDRESS
|
||||
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
;
|
||||
LEDENABLE .EQU TRUE ; ENABLES STATUS LED (SINGLE LED)
|
||||
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
|
||||
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
|
||||
@@ -43,6 +43,10 @@ DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
;
|
||||
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
|
||||
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
|
||||
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
|
||||
@@ -47,6 +47,10 @@ DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
;
|
||||
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
|
||||
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
|
||||
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
|
||||
@@ -163,16 +163,18 @@ DSRTC_INIT:
|
||||
PRTS("MFPIC$")
|
||||
#ENDIF
|
||||
;
|
||||
LD A,(DSRTC_STAT)
|
||||
OR A
|
||||
JR Z,DSRTC_INIT0
|
||||
; PRINT RTC LATCH PORT ADDRESS
|
||||
PRTS(" IO=0x$") ; LABEL FOR IO ADDRESS
|
||||
LD A,DSRTC_BASE ; GET IO ADDRESS
|
||||
CALL PRTHEXBYTE ; PRINT IT
|
||||
;
|
||||
; HARDWARE NOT PRESENT
|
||||
PRTS(" NOT PRESENT$")
|
||||
; CHECK PRESENCE STATUS
|
||||
LD A,(DSRTC_STAT) ; GET DEVICE STATUS
|
||||
OR A ; SET FLAGS
|
||||
JR Z,DSRTC_INIT1 ; IF ZERO, ALL GOOD
|
||||
PRTS(" NOT PRESENT$") ; NOT ZERO, H/W NOT PRESENT
|
||||
OR $FF ; SIGNAL FAILURE
|
||||
RET
|
||||
;
|
||||
DSRTC_INIT0:
|
||||
RET ; BAIL OUT
|
||||
;
|
||||
DSRTC_INIT1:
|
||||
; DISPLAY CURRENT TIME
|
||||
@@ -183,27 +185,13 @@ DSRTC_INIT1:
|
||||
CALL DSRTC_CLK2TIM
|
||||
LD HL,DSRTC_TIMBUF
|
||||
CALL PRTDT
|
||||
|
||||
;
|
||||
#IF DSRTCCHG ; FORCE_RTC_CHARGE_ENABLE
|
||||
LD E,$8E ; ACCESS WRITE PROT REG
|
||||
CALL DSRTC_CMD ;
|
||||
LD E,$00 ; WRITE PROTECT OFF
|
||||
CALL DSRTC_PUT ;
|
||||
CALL DSRTC_END ; FINISH CMD
|
||||
|
||||
LD E,$90 ; ACCESS CHARGE REGISTER
|
||||
CALL DSRTC_CMD ;
|
||||
LD C,$90 ; ACCESS CHARGE REGISTER
|
||||
LD E,DS1d2k ; STD CHARGE VALUES
|
||||
CALL DSRTC_PUT ;
|
||||
CALL DSRTC_END ; FINISH REG WRITE
|
||||
|
||||
LD E,$8E ; ACCESS WRITE PROT REG
|
||||
CALL DSRTC_CMD ;
|
||||
LD E,$80 ; WRITE PROTECT ON
|
||||
CALL DSRTC_PUT ;
|
||||
CALL DSRTC_END ; FINISH CMD
|
||||
CALL DSRTC_WRBYTWP
|
||||
#ENDIF
|
||||
|
||||
;
|
||||
PRTS(" CHARGE=$") ; DISPLAY
|
||||
CALL DSRTC_TSTCHG ; CHARGING
|
||||
JR NZ,NOCHG1 ; STATUS
|
||||
@@ -318,47 +306,23 @@ DSRTC_GETBYT:
|
||||
LD A,C ; INDEX
|
||||
SLA A ; SHIFT TO INDEX BITS
|
||||
ADD A,$C1 ; CMD OFFSET
|
||||
LD E,A
|
||||
CALL DSRTC_CMD
|
||||
CALL DSRTC_GET
|
||||
CALL DSRTC_END
|
||||
XOR A
|
||||
RET
|
||||
LD C,A ; SAVE READ CMD BYTE
|
||||
CALL DSRTC_RDBYT ; DO IT
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET ; DONE
|
||||
;
|
||||
; RTC SET NVRAM BYTE
|
||||
; C: INDEX
|
||||
; E: VALUE
|
||||
;
|
||||
DSRTC_SETBYT:
|
||||
PUSH DE ; SAVE INCOMING INDEX
|
||||
;
|
||||
; TURN OFF WRITE PROTECT
|
||||
LD E,$8E ; ACCESS WRITE PROT REG
|
||||
CALL DSRTC_CMD ;
|
||||
LD E,$00 ; WRITE PROTECT OFF
|
||||
CALL DSRTC_PUT ;
|
||||
CALL DSRTC_END ; FINISH CMD
|
||||
;
|
||||
; SET REGISTER VALUE
|
||||
LD A,C ; INDEX
|
||||
SLA A ; SHIFT TO INDEX BITS
|
||||
ADD A,$C0 ; CMD OFFSET
|
||||
LD E,A ; INTO E
|
||||
CALL DSRTC_CMD
|
||||
POP DE
|
||||
CALL DSRTC_PUT
|
||||
CALL DSRTC_END
|
||||
;
|
||||
; TURN ON WRITE PROTECT
|
||||
LD E,$8E ; ACCESS WRITE PROT REG
|
||||
CALL DSRTC_CMD ;
|
||||
LD E,$80 ; WRITE PROTECT ON
|
||||
CALL DSRTC_PUT ;
|
||||
CALL DSRTC_END ; FINISH CMD
|
||||
;
|
||||
; SIGNAL SUCCESS
|
||||
XOR A
|
||||
RET
|
||||
LD C,A ; SAVE WRITE CMD BYTE
|
||||
CALL DSRTC_WRBYTWP ; DO IT
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET ; DONE
|
||||
;
|
||||
; CONVERT DATA IN CLOCK BUFFER TO TIME BUFFER AT HL
|
||||
;
|
||||
@@ -412,13 +376,11 @@ DSRTC_TIM2CLK:
|
||||
; TEST CLOCK FOR CHARGE DATA
|
||||
;
|
||||
DSRTC_TSTCHG:
|
||||
LD E,$91 ; CHARGE RESISTOR & DIODE VALUES
|
||||
CALL DSRTC_CMD ; SEND THE COMMAND
|
||||
CALL DSRTC_GET ; READ THE REGISTER
|
||||
CALL DSRTC_END ; FINISH IT
|
||||
LD C,$91 ; CHARGE RESISTOR & DIODE VALUES
|
||||
CALL DSRTC_RDBYT ; GET VALUE
|
||||
LD A,E ; VALUE TO A
|
||||
AND %11110000 ; CHECK FOR
|
||||
CP %10100000 ; ENABLED FLAG
|
||||
CP %10100000 ; ... ENABLED FLAG
|
||||
RET
|
||||
;
|
||||
; DETECT RTC HARDWARE PRESENCE
|
||||
@@ -455,14 +417,61 @@ DSRTC_DETECT1:
|
||||
; 1 = HALTED
|
||||
;
|
||||
DSRTC_TSTCLK:
|
||||
LD E,$81 ; SECONDS REGISTER HAS CLOCK HALT FLAG
|
||||
CALL DSRTC_CMD ; SEND THE COMMAND
|
||||
CALL DSRTC_GET ; READ THE REGISTER
|
||||
CALL DSRTC_END ; FINISH IT
|
||||
LD C,$81 ; SECONDS REGISTER HAS CLOCK HALT FLAG
|
||||
CALL DSRTC_RDBYT ; GET REGISTER VALUE
|
||||
LD A,E ; VALUE TO A
|
||||
AND %10000000 ; HIGH ORDER BIT IS CLOCK HALT
|
||||
RET
|
||||
;
|
||||
; READ RAW BYTE
|
||||
; C=READ CMD BYTE
|
||||
; E=VALUE (OUTPUT)
|
||||
;
|
||||
DSRTC_RDBYT:
|
||||
LD E,C
|
||||
CALL DSRTC_CMD
|
||||
CALL DSRTC_GET
|
||||
CALL DSRTC_END
|
||||
RET
|
||||
;
|
||||
; WRITE RAW BYTE
|
||||
; C=WRITE CMD BYTE
|
||||
; E=VALUE
|
||||
;
|
||||
DSRTC_WRBYT:
|
||||
PUSH DE ; SAVE VALUE TO WRITE
|
||||
LD E,C ; CMD TO E
|
||||
CALL DSRTC_CMD
|
||||
POP DE ; RESTORE VALUE
|
||||
CALL DSRTC_PUT
|
||||
CALL DSRTC_END
|
||||
RET
|
||||
;
|
||||
; WRITE RAW BYTE W/ WRITE PROTECT BRACKETING
|
||||
; C=WRITE CMD BYTE
|
||||
; E=VALUE
|
||||
;
|
||||
DSRTC_WRBYTWP:
|
||||
LD D,C ; WRITE CMD TO D
|
||||
PUSH DE ; SAVE PARMS
|
||||
;
|
||||
; TURN OFF WRITE PROTECT
|
||||
LD C,$8E ; CMD
|
||||
LD E,0 ; WRITE PROTECT OFF
|
||||
CALL DSRTC_WRBYT ; DO IT
|
||||
;
|
||||
; WRITE THE VALUE
|
||||
POP DE ; RESTORE INPUTS
|
||||
LD C,D ; WRITE CMD BACK TO C
|
||||
CALL DSRTC_WRBYT ; DO IT
|
||||
;
|
||||
; TURN WRITE PROTECT BACK ON
|
||||
LD C,$8E ; WRITE CMD TO D
|
||||
LD E,$80 ; WRITE PROTECT ON
|
||||
CALL DSRTC_WRBYT ; DO IT
|
||||
;
|
||||
RET
|
||||
;
|
||||
; BURST READ CLOCK DATA INTO BUFFER AT HL
|
||||
;
|
||||
DSRTC_RDCLK:
|
||||
|
||||
@@ -95,6 +95,15 @@ MODCNT .SET MODCNT + 1
|
||||
#DEFINE DIAG(N) \;
|
||||
#ENDIF
|
||||
;
|
||||
#IF (LEDENABLE)
|
||||
#DEFINE LED(N) PUSH AF
|
||||
#DEFCONT \ LD A,N
|
||||
#DEFCONT \ OUT (LEDPORT),A
|
||||
#DEFCONT \ POP AF
|
||||
#ELSE
|
||||
#DEFINE LED(N) \;
|
||||
#ENDIF
|
||||
;
|
||||
;
|
||||
;
|
||||
#IF (INTMODE == 0)
|
||||
@@ -827,6 +836,7 @@ HB_START:
|
||||
#ENDIF
|
||||
;
|
||||
DIAG(%00000011)
|
||||
LED($FF)
|
||||
;
|
||||
; CHECK BATTERY BACKUP STATUS BEFORE WE COPY PROXY TO UPPER MEMORY
|
||||
;
|
||||
@@ -1388,6 +1398,7 @@ HB_CPU2:
|
||||
#ENDIF
|
||||
;
|
||||
DIAG(%01111111)
|
||||
LED($00)
|
||||
;
|
||||
; PRIOR TO THIS POINT, CONSOLE I/O WAS NOT AVAILABLE UNLESS DIRECTED TO DEBUG OUTPUT I.E. XIO
|
||||
; NOW THAT HBIOS IS READY, SET THE CONSOLE UNIT TO ACTIVATE CONSOLE I/O
|
||||
@@ -2150,12 +2161,18 @@ HB_DSKFN:
|
||||
#IF (DIAGENABLE & DIAGDISKIO)
|
||||
LD A,(HB_DSKBIT) ; LOAD UNIT DISK BIT MASK
|
||||
OUT (DIAGPORT),A ; DISPLAY ON DIAG LEDS
|
||||
#ENDIF
|
||||
#IF (LEDENABLE & LEDDISKIO)
|
||||
LED($FF)
|
||||
#ENDIF
|
||||
LD E,1 ; ONE SECTOR
|
||||
HB_DSKFNADR .EQU $+1
|
||||
CALL PANIC ; READ ONE SECTOR
|
||||
#IF (DIAGENABLE & DIAGDISKIO)
|
||||
DIAG(0) ; CLEAR DIAG LEDS
|
||||
#ENDIF
|
||||
#IF (LEDENABLE & LEDDISKIO)
|
||||
LED($00)
|
||||
#ENDIF
|
||||
POP BC ; RESTORE COUNTERS
|
||||
RET ; RETURN
|
||||
|
||||
Reference in New Issue
Block a user