3 rom example 1: calling, Maxq7667 user’s guide – Maxim Integrated MAXQ7667 User Manual
Page 313

18-7
__________________________________________________________________________________________________________
18.3 ROM Example 1: Calling A MAXQ7667 Utility ROM Function Directly
This example shows the direct addressing method for calling MAXQ7667 utility functions, using the function
moveDP1inc to read a
static string from code space. Note the equate UROM_MOVEDP1INC.
UROM_MOVEDP1INC EQU 0857Eh
Text:
DB “Hello World!”,0
; Define a string in code space.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Function:
PrintText
;; Description:
Prints the string stored at the “Text” label.
;; Returns:
N/A
;; Destroys:
ACC, DP[1], DP[0], and GR.
;; Notes:
This function assumes that DP[0] is set to word mode, and
;;
DP[1] is in byte mode.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PrintText:
move DP[1], #Text
; Point to the string to display.
move ACC, DP[1]
; “Text” is a word address and we need a
sla
; byte address, so shift left 1 bit.
or #08000h
; Code space is mapped to 8000h when running
move DP[1], ACC
; from the ROM, so the address must be masked.
PrintText_Loop:
call UROM_MOVEDP1INC
; Fetch the byte from code space.
move ACC, GR
jump Z, PrintText_Done
; Reached the null terminator.
call PrintChar
; Call a routine to output the char in ACC
jump PrintText_Loop
; Process the next byte.
PrintText_Done:
ret
MAXQ7667 User’s Guide