Freescale Semiconductor MC9S12XDP512 Microscope & Magnifier User Manual


 
Chapter 9 XGATE (S12XGATEV2)
MC9S12XDP512 Data Sheet, Rev. 2.11
484 Freescale Semiconductor
STD 2,X+
STD 2,X+
MOVW #$FF00, XGSWT ;clear all software triggers
;###########################################
;# INITIALIZE XGATE VECTOR SPACE #
;###########################################
INIT_XGATE_VECTOR_SPACE MOVB #(RAM_START_GLOBAL>>12), RPAGE ;set all vectors to dummy
service routine
LDX #128
LDY #RAM_START_S12
LDD #XGATE_DUMMY+XGATE_OFFSET
INIT_XGATE_VECTOR_SPACE_LOOP
STD 4,Y+
DBNE X,INIT_XGATE_VECTOR_SPACE_LOOP
;set SCI INTERRUPT VECTOR
MOVW #XGATE_CODE_BEGIN+XGATE_OFFSET, RAM_START_S12+(2*SCI_VEC)
MOVW #XGATE_DATA_BEGIN+XGATE_OFFSET, RAM_START_S12+(2*SCI_VEC)+2
;###########################################
;# COPY XGATE CODE #
;###########################################
COPY_XGATE_CODE LDX #XGATE_DATA_BEGIN
COPY_XGATE_CODE_LOOP MOVW 2,X+, 2,Y+
MOVW 2,X+, 2,Y+
MOVW 2,X+, 2,Y+
MOVW 2,X+, 2,Y+
CPX #XGATE_CODE_END
BLS COPY_XGATE_CODE_LOOP
;###########################################
;# START XGATE #
;###########################################
START_XGATE MOVB #(XGE|XGDBGM|XGSWEIF), XGMCTL ;enable XGATE
BRA *
CPU XGATE
;###########################################
;# XGATE DATA #
;###########################################
ALIGN 1
XGATE_DATA_BEGIN
XGATE_DATA_SCI_PTR DW SCI_REGS ;pointer to SCI register space
XGATE_DATA_MSG_IDX DB XGATE_DATA_MSG-XGATE_DATA_BEGIN ;string pointer
XGATE_DATA_MSG FCC "Hello World!" ;ASCII string
XGATE_DATA_END DB $0D ;CR
;###########################################
;# XGATE CODE #
;###########################################
ALIGN 1
XGATE_CODE_BEGIN LDW R2,(R1,#(XGATE_DATA_SCI_PTR-XGATE_DATA_BEGIN));SCI -> R2
LDB R3,(R1,#(XGATE_DATA_MSG_IDX-XGATE_DATA_BEGIN));msg -> R3
LDB R4,(R1,R3+) ;curr. char -> R4
STB R3,(R1,#(XGATE_DATA_MSG_IDX-XGATE_DATA_BEGIN));R3 -> idx
LDB R0,(R2,#(SCISR1-SCI_REGS)) ;initiate SCI transmit