beautypg.com

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

Page 313

background image

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