
2 IMPLEMENTING THE DEBUG MONITOR
(2) void m_snd_1byte(unsigned char)This is a routine that sends
;******************************************************************************
;
;void m_snd_1byte( sdata )
;1 byte send function
;IN : uchar sdata (R12) send data
;******************************************************************************
.global m_snd_1byte m_snd_1byte:
pushn | %r3 | ;save |
snd000: |
|
|
xbtst | [SSR1],0x1 | ;TDBE1(bit1) == 0(full) ? |
jreq | snd000 | ;if full, jp snd000 |
xld.b | [STDR1],%r12 | ;write data |
popn | %r3 | ;restore |
ret |
|
|
This is a routine that receives
;******************************************************************************
;
;uchar m_rcv_1byte()
;1 byte receive function
;OUT : 0 receive OK
; | 1 receive ERROR (framing | err) | |
; | 2 | (parity | err) |
; | 3 | (over run err) | |
; |
|
|
|
;****************************************************************************** | |||
.global | m_rcv_1byte |
|
|
m_rcv_1byte: |
|
|
|
pushn | %r3 | ;save |
|
rcv000: |
|
|
|
xbtst | [SSR1],0x0 | ;RDBF1(bit0) == 0(empty) ? | |
jreq | rcv000 | ;if empty, jp rcv000 | |
ld.w | %r10,0x0 |
|
|
xbtst | [SSR1],0x4 | ;FER1(bit4) == 0 ? | |
jreq | rcv010 |
|
|
xbclr | [SSR1],0x4 | ;FER1(bit4) 0 clear | |
ld.w | %r10,0x1 | ;return 1 |
|
rcv010: |
|
|
|
xbtst | [SSR1],0x3 | ;PER1(bit3) == 0 ? | |
jreq | rcv020 |
|
|
xbclr | [SSR1],0x3 | ;PER1(bit3) 0 clear | |
ld.w | %r10,0x2 | ;return 2 |
|
rcv020: |
|
|
|
xbtst | [SSR1],0x2 | ;OER1(bit2) == 0 ? | |
jreq | rcv030 |
|
|
xbclr | [SSR1],0x2 | ;OER1(bit2) 0 clear | |
ld.w | %r10,0x3 | ;return 3 |
|
rcv030: |
|
|
|
xld.b | %r0,[SRDR1] | ;read data |
|
xld.b | [m_rcv_data],%r0 | ;read data set |
|
popn | %r3 | ;restore |
|
ret
8 | EPSON | S1C33 FAMILY DEBUG MONITOR |
|
| OPERATION MANUAL |