17.05.2015 Views

~ National ~ Semiconductor - Al Kossow's Bitsavers

~ National ~ Semiconductor - Al Kossow's Bitsavers

~ National ~ Semiconductor - Al Kossow's Bitsavers

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

eq rdrbr<br />

movd r6,rbufoff<br />

bsr compare<br />

movb $7,ier<br />

movb $2,mcr<br />

jump popal!<br />

#Read rbr again if set<br />

#Put result of r6 back into rbufoff<br />

#<br />

#Turn on transmitter lnterrupts<br />

#Enable rts<br />

#<br />

#<br />

#****************************** TRANSMIT ROUTINE ********************.**********<br />

#<br />

#Before the transmltter sends data, the data has been loaded into statlc base<br />

#memory for transmission. The transmitter routine is called to send data. (ie<br />

#THREI is set) Data is sent as 16 blocks of 16 bytes and 1 block ot 15 bytes<br />

#continuously. NOTE: Before transmission occurs ICTS is checked to ensure that<br />

ithe receiver is ready.<br />

threl:<br />

stlnd15:<br />

sendnext:<br />

finlsh:<br />

abort:<br />

setsnd16:<br />

reload:<br />

addr sbuf(sb),rO<br />

movw xmitoff,rl<br />

cmpd $O,blk16cnt<br />

beq send15<br />

movd $Ox10,r7<br />

jump sendnext<br />

movd $OxOf,r7<br />

movb O(rO)[rl:b],txd<br />

addqw l,rl<br />

cmpw rl,$256<br />

beq reload<br />

save [r7]<br />

movb msreg,r7<br />

andb $Ox10,r7<br />

cmpb $O,r7<br />

restore [r7]<br />

beq abort<br />

subb $l,r7<br />

cmpb SO,r7<br />

bne sendnext<br />

movw rl,xmitoff<br />

cmpd $O,blk16cnt<br />

beq setsnd16<br />

subb $l,blk16cnt<br />

jump popal!<br />

movd $16,blk16cnt<br />

jump popal!<br />

movd SO,rl<br />

jump flnish<br />

#************************ LINE STATUS<br />

lelnt:<br />

eave [rO,rl,r2,r3]<br />

movd $4,rO<br />

addr message6,rl<br />

movd $25,r2<br />

movd $O,r3<br />

svc<br />

restore [rO,rl,r2,r3]<br />

movb Isr,r3<br />

jump rdai<br />

#************************ MODEM STATUS<br />

#<br />

#RO contains base pOlnter<br />

#setup xmit ptr offset<br />

#Check to see if it is the 16th block *<br />

#Yes, send only 15 bytes instead ot 16 *<br />

#No, send 16 bytes *<br />

#Jump around 15 byte losd *<br />

#Load counter for 15 byte load *<br />

#Load a byte into the transmitter<br />

#<br />

#Are we one address past end of table<br />

iYes, reload ptr<br />

#Read modem status reg<br />

#Mask all bits except CTS (MSR4)<br />

#Check for disabled CTS<br />

iWait for active CTS (MSR4=1)<br />

#No, decrement counter and continue<br />

#Is byte counter O?<br />

#No, send next byte<br />

#save xmit ptr offset ln ram<br />

#Check to see lf it is 16th block *<br />

#Yes, reload block counter *<br />

iDecremant block counter *<br />

#Flnished sending 16 bytes<br />

#Reload block counter *<br />

#Finished sending 15 bytes *<br />

#Reset offset<br />

#Go back and finish<br />

#<br />

INTERRUPT ROUTINE ************************<br />

#<br />

#<br />

#<br />

i<br />

#<br />

#<br />

#<br />

#<br />

#Read lar<br />

i<br />

#<br />

#<br />

#<br />

INTERRUPT ROUTINE ***********************<br />

TL/C/9313-17<br />

4-76

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!