beautypg.com

Motorola DSP56301 User Manual

Page 308

background image

A

-12

DSP56301 User’s Manual

do #6,_LOOP9 ; read number of words and starting address

movem p:(r2)+,a2 ; Get the 8 LSB from ext. P mem.

asr #8,a,a ; Shift 8 bit data into A1

_LOOP9 ;

move a1,r0 ; starting address for load

move a1,r1 ; save it in r1

; a0 holds the number of words

do a0,_LOOP10 ; read program words

do #3,_LOOP11 ; Each instruction has 3 bytes

movem p:(r2)+,a2 ; Get the 8 LSB from ext. P mem.

asr #8,a,a ; Shift 8 bit data into A1

_LOOP11 ; Go get another byte.

movem a1,p:(r0)+ ; Store 24-bit result in P mem.

nop ; movem cannot be at LA.

_LOOP10 ; and go get another 24-bit word.

bra

;========================================================================

TERMINATE

enddo ; End the loop before exit.

FINISH

; This is the exit handler that returns execution to normal

; expanded mode and jumps to the RESET vector.

andi #$0,ccr ; Clear CCR as if RESET to 0.

jmp (r1) ; Then go to starting Prog addr.

; End of bootstrap code. Number of program words: 191.

BURN

;; get PATTERN pointer

clr b #PATTERNS,r6 ;; b is the error accumulator

move #<(NUM_PATTERNS-1),m6 ;; program runs forever in

;; cyclic form

;; configure SCK0 as gpio output. PRRC register is cleared at reset.

movep b,x:M_PDRC ;; clear GPIO data register

bset #SCK0,x:M_PRRC ;; Define SCK0 as output GPIO pin

;; SCK0 toggles means test pass

do #9,burn1

;;----------------------------

;; test RAM

;; each pass checks 1 pattern

;;----------------------------

move p:(r6)+,x1 ;; pattern for x memory

move p:(r6)+,x0 ;; pattern for y memory

move p:(r6)+,y0 ;; pattern for p memory

;; write pattern to all memory locations

if (EQUALDATA) ;; x/y ram symmetrical

;; write x and y memory

clr a #start_dram,r0 ;; start of x/y ram

move #>length_dram,n0 ;; length of x/y ram