/* "ns16550A.h" National Semiconductor Corporation Microcomputer Systems Group Header file for the NS16550A UART in the IBM PC environment Written by : Louis Shay 1/11/89 */ #define SERIAL_1 0x03f8 #define SERIAL_2 0x02f8 #define SERIAL_3 0x3220 #define SERIAL_4 0x3228 #define SERIAL_5 0x4220 #define SERIAL_6 0x4228 #define SERIAL_7 0x5220 #define SERIAL_8 0x5228 /* UART register definitions using UART base address, int ubase */ #define RBR (ubase+0) /* Receive Buffer Register (R )(DLAB==0)*/ #define THR (ubase+0) /* Transmitter Holding Register ( W)(DLAB==0)*/ #define IER (ubase+1) /* Interrupt Enable Register (R/W)(DLAB==0)*/ #define IIR (ubase+2) /* Interrupt Ident. Register (R ) */ #define FCR (ubase+2) /* FIFO Control Register ( W) */ #define LCR (ubase+3) /* Line Control Register (R/W) */ #define MCR (ubase+4) /* MODEM Control Register (R/W) */ #define LSR (ubase+5) /* Line Status Register (R ) */ #define MSR (ubase+6) /* MODEM Status Register (R/W) */ #define SCR (ubase+7) /* SCratch Register (R/W) */ #define DLL (ubase+0) /* Divisor Latch (LSB) (R/W)(DLAB==1)*/ #define DLM (ubase+1) /* Divisor Latch (MSB) (R/W)(DLAB==1)*/ #define AFR (ubase+2) /* Alternate Function Register(R/W) */ /* register read/write macros */ #define rdRBR() ((int)inp(RBR)) /* read RBR */ #define rdDLL() ((int)inp(DLL)) /* read DLL */ #define rdDLM() ((int)inp(DLM)) /* read DLM */ #define rdIER() ((int)inp(IER)) /* read IER */ #define rdIIR() ((int)inp(IIR)) /* read IIR */ #define rdLCR() ((int)inp(LCR)) /* read LCR */ #define rdMCR() ((int)inp(MCR)) /* read MCR */ #define rdLSR() ((int)inp(LSR)) /* read LSR */ #define rdMSR() ((int)inp(MSR)) /* read MSR */ #define rdSCR() ((int)inp(SCR)) /* read SCR */ #define rdAFR() ((int)inp(AFR)) /* read AFR */ #define wrTHR(val) (outp(THR, val)) /* write THR */ #define wrDLL(val) (outp(DLL, val)) /* write DLL */ #define wrDLM(val) (outp(DLM, val)) /* write DLM */ #define wrIER(val) (outp(IER, val)) /* write IER */ #define wrFCR(val) (outp(FCR, val)) /* write FCR */ #define wrLCR(val) (outp(LCR, val)) /* write LCR */ #define wrMCR(val) (outp(MCR, val)) /* write MCR */ #define wrLSR(val) (outp(LSR, val)) /* write LSR */ #define wrMSR(val) (outp(MSR, val)) /* write MSR */ #define wrSCR(val) (outp(SCR, val)) /* write SCR */ #define wrAFR(val) (outp(AFR, val)) /* write AFR */ #define RBR2 (ubase2+0) /* Receive Buffer Register (R )(DLAB==0)*/ #define THR2 (ubase2+0) /* Transmitter Holding Register ( W)(DLAB==0)*/ #define IER2 (ubase2+1) /* Interrupt Enable Register (R/W)(DLAB==0)*/ #define IIR2 (ubase2+2) /* Interrupt Ident. Register (R ) */ #define FCR2 (ubase2+2) /* FIFO Control Register ( W) */ #define LCR2 (ubase2+3) /* Line Control Register (R/W) */ #define MCR2 (ubase2+4) /* MODEM Control Register (R/W) */ #define LSR2 (ubase2+5) /* Line Status Register (R ) */ #define MSR2 (ubase2+6) /* MODEM Status Register (R/W) */ #define SCR2 (ubase2+7) /* SCratch Register (R/W) */ #define DLL2 (ubase2+0) /* Divisor Latch (LSB) (R/W)(DLAB==1)*/ #define DLM2 (ubase2+1) /* Divisor Latch (MSB) (R/W)(DLAB==1)*/ #define AFR2 (ubase2+2) /* Alternate Function Register(R/W) */ /* register read/write macros */ #define rdRBR2() ((int)inp(RBR2)) /* read RBR */ #define rdDLL2() ((int)inp(DLL2)) /* read DLL */ #define rdDLM2() ((int)inp(DLM2)) /* read DLM */ #define rdIER2() ((int)inp(IER2)) /* read IER */ #define rdIIR2() ((int)inp(IIR2)) /* read IIR */ #define rdLCR2() ((int)inp(LCR2)) /* read LCR */ #define rdMCR2() ((int)inp(MCR2)) /* read MCR */ #define rdLSR2() ((int)inp(LSR2)) /* read LSR */ #define rdMSR2() ((int)inp(MSR2)) /* read MSR */ #define rdSCR2() ((int)inp(SCR2)) /* read SCR */ #define rdAFR2() ((int)inp(AFR2)) /* read AFR */ #define wrTHR2(val) (outp(THR2, val)) /* write THR */ #define wrDLL2(val) (outp(DLL2, val)) /* write DLL */ #define wrDLM2(val) (outp(DLM2, val)) /* write DLM */ #define wrIER2(val) (outp(IER2, val)) /* write IER */ #define wrFCR2(val) (outp(FCR2, val)) /* write FCR */ #define wrLCR2(val) (outp(LCR2, val)) /* write LCR */ #define wrMCR2(val) (outp(MCR2, val)) /* write MCR */ #define wrLSR2(val) (outp(LSR2, val)) /* write LSR */ #define wrMSR2(val) (outp(MSR2, val)) /* write MSR */ #define wrSCR2(val) (outp(SCR2, val)) /* write SCR */ #define wrAFR2(val) (outp(AFR2, val)) /* write AFR */ /* end of ns16550A.h */