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

;
;=============================================================================
; 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