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.

TITLE<br />

550APP.ASM - NS16550A INITIALIZATION<br />

;ESTABLISH NS16550A REGISTER ADDRESS/DATA EQUATES<br />

;************ UART REGISTERS ************************<br />

rxd EQU 3F8H ;RECEIVE DATA REG<br />

txd EQU 3F8H ;TRANSMITT DATA REG<br />

ier EQU 3F9H ;INTERRUPT ENABLE REG<br />

dll EQU 3F8H ;DIVISOR LATCH LOW<br />

dlh EQU 3F9H ;DIVISOR LATCH HIGH<br />

iir EQU 3FAH ;INTERRUPT IDENTIFICATION REG<br />

fer EQU 3FAH ;FIFO CONTROL REG<br />

ler EQU 3FBH ;LINE CONTROL REG<br />

mer EQU 3FCH ;MODEM CONTROL REG<br />

lsr EQU 3FDH ;LINE STATUS REG<br />

msr EQU 3FEH ;MODEM STATUS REG<br />

ser EQU 3FFH ;SCRATCH PAD REG<br />

;**************** DATA EQUATES *****************<br />

bufs1ze EQU 7CFH<br />

dosrout EQU 25H<br />

intnum EQU OCH<br />

ieumask EQU OEFH<br />

divaee EQU 80H<br />

lowdiv EQU 06H<br />

uppdiv EQU OOH<br />

dataspe EQU lAH<br />

fifospe EQU OC1H<br />

setout2 EQU 08H<br />

intmask EQU OFH<br />

;TX AND RX BUFFER SIZE<br />

;DOS ROUTINE SPECIFICATION<br />

;INTERRUPT NUMBER (OCH = COM1)<br />

;ICU INTERRUPT ENABLE MASK<br />

;DIVISOR LATCH ACCESS CODE<br />

;LOWER DIVISOR<br />

;UPPER DIVISOR<br />

;DLAB = 0, 7 BITS, 1 STOP, EVEN<br />

;FIFOS ENABLED, TRIG = 14, DMA MODE = 0<br />

;SETTING OUT2 ENABLES INTRa TO THE ICU<br />

;UART INTERRUPT ENABLE MASK<br />

;*********** ESTABLISH CODE AND DATA SEGMENTS ******************<br />

eseg<br />

INIT:<br />

SEGMENT PARA PUBLIC "code"<br />

ORG lOOH<br />

ASSUME CS:eseg,DS:cseg<br />

PUSH CS<br />

POP DS<br />

JMP START<br />

;********* ESTABLISH DATA BUFFERS AND RAM REGISTERS ********<br />

msflag DB<br />

txflag DB<br />

sbuf DB<br />

rbuf DB<br />

sbufe EQU<br />

rbufe EQU<br />

0<br />

0<br />

bufsize DUP ("S")<br />

bufsize DUP ("R")<br />

sbuf + bufsize<br />

rbuf + bufsize<br />

STRING BUFFER<br />

RECEIVE BUFFER<br />

END OF STRING BUFFER<br />

END OF RECEIVE BUFFER<br />

START:<br />

CLI<br />

;»> DISABLE CPU INTERRUPTS «<<br />

4-63

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

Saved successfully!

Ooh no, something went wrong!