mirror of https://github.com/wwarthen/RomWBW.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
1.9 KiB
82 lines
1.9 KiB
;
|
|
;=============================================================================
|
|
; HWMON.ASM - BARE METAL HARDWARE MONITOR
|
|
;=============================================================================
|
|
;
|
|
; THIS IS JUST A STUB FOR NOW.
|
|
;
|
|
#INCLUDE "std.asm"
|
|
;
|
|
; MONITOR WILL BE LOADED AT HWMON_LOC
|
|
;
|
|
.ORG HWMON_LOC
|
|
;;;.ORG 0
|
|
;
|
|
LD HL,STR_NOTIMPL ; POINT TO STRING
|
|
CALL PSTR ; AND SEND TO CONSOLE
|
|
;
|
|
; NOT IMPLEMENTED, WARM BOOT TO RETURN TO BOOT LOADER
|
|
LD B,BF_SYSRESET ; SYSTEM RESTART
|
|
LD C,BF_SYSRES_WARM ; WARM START
|
|
CALL $FFF0 ; CALL HBIOS
|
|
;
|
|
;=======================================================================
|
|
; UTILITY FUNCTIONS
|
|
;=======================================================================
|
|
;
|
|
; PRINT STRING AT HL ON CONSOLE, NULL TERMINATED, HL INCREMENTED
|
|
;
|
|
PSTR:
|
|
PUSH AF ; SAVE AF
|
|
PSTR1:
|
|
LD A,(HL) ; GET NEXT CHARACTER
|
|
INC HL ; BUMP POINTER REGARDLESS
|
|
OR A ; SET FLAGS
|
|
JR Z,PSTR2 ; DONE IF NULL
|
|
CALL COUT ; DISPLAY CHARACTER
|
|
JR PSTR1 ; LOOP TILL DONE
|
|
PSTR2:
|
|
POP AF ; RESTORE AF
|
|
RET ; RETURN
|
|
;
|
|
; OUTPUT CHARACTER FROM A
|
|
;
|
|
COUT: PUSH AF
|
|
PUSH BC
|
|
PUSH DE
|
|
PUSH HL
|
|
LD B,BF_CIOOUT
|
|
LD C,CIO_CONSOLE
|
|
LD E,A
|
|
;RST 08
|
|
CALL $FFF0
|
|
POP HL
|
|
POP DE
|
|
POP BC
|
|
POP AF
|
|
RET
|
|
;
|
|
;=======================================================================
|
|
; STORAGE
|
|
;=======================================================================
|
|
;
|
|
STR_NOTIMPL .DB 13,10,13,10,"*** Not Implemented ***",13,10,0
|
|
;
|
|
; IT IS CRITICAL THAT THE FINAL BINARY BE EXACTLY HWMON_SIZ BYTES.
|
|
; THIS GENERATES FILLER AS NEEDED. IT WILL ALSO FORCE AN ASSEMBLY
|
|
; ERROR IF THE SIZE EXCEEDS THE SPACE ALLOCATED.
|
|
;
|
|
SLACK .EQU (HWMON_END - $)
|
|
;;;SLACK .EQU (HWMON_SIZ - $)
|
|
;
|
|
#IF (SLACK < 0)
|
|
.ECHO "*** HWMON IS TOO BIG!!!\n"
|
|
!!! ; FORCE AN ASSEMBLY ERROR
|
|
#ENDIF
|
|
;
|
|
.FILL SLACK,$00
|
|
.ECHO "Hardware Monitor space remaining: "
|
|
.ECHO SLACK
|
|
.ECHO " bytes.\n"
|
|
;
|
|
.END
|
|
|