Computer Hardware User's Guide
TMS320C31 Boot Loader Source Code
B-6
LDI *+AR0(4Ch),R1
LDI R0,R0 ; test load address flag
BNN end_s
load_s STI R1,*AR4++(1) ; store new word to dest. address
end_s RETSU ; return from subroutine
.space 22
loop_h RPTB load_h ; PGM load loop
sub_h LDI *AR1++(1),R1 ; load LSB half word
AND 0FFFFh,R1
LDI *AR1++(1),R2 ; load MSB half word
LSH 16,R2
OR R2,R1 ; R1 = a new 32-bit word
LDI R0,R0 ; test load address flag
BNN end_h
load_h STI R1,*AR4++(1) ; store new word to dest. address
end_h RETSU ; return from subroutine
.space 26
loop_w RPTB load_w ; PGM load loop
sub_w LDI *AR1++(1),R1 ; read a new 32-bit word
LDI R0,R0 ; test load address flag
BNN end_w
load_w STI R1,*AR4++(1) ; store new word to dest. address
end_w RETSU ; return from subroutine
.space 14
loop_b RPTB load_b ; PGM load loop
sub_b LDI *AR1++(1),R1
AND 0FFh,R1 ; load 1st byte ( LSB )
LDI *AR1++(1),R2
AND 0FFh,R2
LSH 8,R2
OR R2,R1 ; load 2nd byte
LDI *AR1++(1),R2
AND 0FFh,R2
LSH 16,R2
OR R2,R1 ; load 3rd byte
LDI *AR1++(1),R2 ; load 4th byte ( MSB )
LSH 24,R2
OR R2,R1 ; R1 = a new 32-bit word
LDI R0,R0 ; test load address flag
BNN end_b
load_b STI R1,*AR4++(1) ; store new word to dest. address
end_b RETSU ; return from subroutine
.space 1
.end