/* Copyright (C) Magna Carta Software, Inc. 1988-1991. All Rights Reserved C COMMUNICATIONS TOOLKIT INS8250.H -- C Telecommunications Toolkit header file for INS 8250/8250A/8250B/16450/NS16550x */ #if !defined(INS8250_H_INCLUDED) #define INS8250 1 /* Denotes an 8250/16450 family UART */ #define NS16550A 3 /* Denotes an NS16550A UART */ #define U8250_OUT1_MASK 4 /* modem control reg. 00000100 */ #define U8250_OUT2_MASK 8 /* modem control reg. 00001000 */ #define U8250_LOOP_MASK 0X10 /* modem control reg. 00010000 */ #define U8250_DCTS_MASK 0X1 /* modem status reg. 00000001 */ #define U8250_DDSR_MASK 0X2 /* modem status reg. 00000010 */ #define U8250_DRI_MASK 0X4 /* modem status reg. 00000100 */ #define U8250_DDCD_MASK 0X8 /* modem status reg. 00001000 */ /* REGISTER LOCATIONS */ #define U8250_RBR_OFF 0 /* offset of UART data port from base */ #define U8250_THR_OFF 0 /* offset of UART data port from base */ #define U8250_IER_OFF 1 /* offset of UART int. enable from base */ #define U8250_IID_OFF 2 /* offset of UART int. id. from base */ #define U8250_LCR_OFF 3 /* offset of UART line contrl from base */ #define U8250_MCR_OFF 4 /* offset of UART modem ctl. from base */ #define U8250_LSR_OFF 5 /* offset of UART line status from base */ #define U8250_MSR_OFF 6 /* offset of UART modem stst. from base */ #define U8250_SR_OFF 7 /* offset of UART modem stst. from base */ /* UART INTERRUPT ENABLE TYPES -- INS8250 ONLY */ #define U8250_RX_DATA_AVAILABLE 1 #define U8250_TX_BUFFER_EMPTY 2 #define U8250_LINE_STATUS 4 #define U8250_MODEM_STATUS 8 #if defined(CCT_DEVELOPMENT) /* DATA FORMATS */ #define U8250_DATABITS5 0 #define U8250_DATABITS6 1 /* 0000 0001 */ #define U8250_DATABITS7 2 /* 0000 0010 */ #define U8250_DATABITS8 3 /* 0000 0011 */ #define U8250_STOPBITS1 0 #define U8250_STOPBITS15 4 /* 0000 0100 */ #define U8250_STOPBITS2 4 /* 0000 0100 */ #define U8250_PARITY_NONE 0 #define U8250_PARITY_ODD 8 /* 0000 1000 */ #define U8250_PARITY_EVEN 0X18 /* 0001 1000 */ #define U8250_PARITY_MARK 0X28 /* 0010 1000 */ #define U8250_PARITY_SPACE 0X38 /* 0011 1000 */ #define U8250_RX_MASK 1 /* UART receive ready mask */ #define U8250_TX_MASK 0X20 /* UART transmit ready mask */ #define U8250_DATABITS_MASK 0X03 /* line control reg. = 00000011 */ #define U8250_PARITY_MASK 0X38 /* line control reg. = 00111000 */ #define U8250_STOPBITS_MASK 0X04 /* line control reg. = 00000100 */ /* RS-232 FUNCTIONS */ #define U8250_BREAK 1 #define U8250_DTR_MASK 1 /* modem control reg. 00000001 */ #define U8250_RTS_MASK 2 /* modem control reg. 00000010 */ #define U8250_BREAK_MASK 0XBF /* line control reg. 01000000 */ #define U8250_CTS_MASK 0X10 /* modem status reg. 00010000 */ #define U8250_DSR_MASK 0X20 /* modem status reg. 00100000 */ #define U8250_RI_MASK 0X40 /* modem status reg. 01000000 */ #define U8250_DCD_MASK 0X80 /* modem status reg. 10000000 */ #define U8250_IN1_MASK NULL /* not supported on PC */ #define U8250_IN2_MASK -1 /* not supported on PC */ #endif short FCALL_ isauart(WORD addr); short FCALL_ set_16550_threshold(COMM_PORT *p, WORD count); short FCALL_ u8250_deinit_(COMM_PORT *p); short FCALL_ u8250_deinstall_ipr_(COMM_PORT *p, WORD itype); short FCALL_ u8250_disable_comm_int_(COMM_PORT *p_port, WORD int_type); short FCALL_ u8250_enable_comm_int_(COMM_PORT *p_port, WORD int_type); short FCALL_ u8250_get_(COMM_PORT *p, short cmd); short FCALL_ u8250_get_reg_(WORD reg, WORD mask); short FCALL_ u8250_get_rx_xlat_(COMM_PORT *p, short item); long FCALL_ u8250_get_speed_(COMM_PORT *p_port); short FCALL_ u8250_get_tx_xlat_(COMM_PORT *p, short item); short FCALL_ u8250_init(COMM_PORT *p, WORD addr, long speed, short databits, short parity, short stopbits); short FCALL_ u8250_install_ipr_(COMM_PORT *p, WORD type, void FAR_ *fn, BYTE FAR_ *buf, WORD len); short FCALL_ u8250_int_set_(COMM_PORT *p_port, WORD type, WORD state); void FCALL_ u8250_iwrite_(COMM_PORT *p_port, short c); void FCALL_ u8250_mod_reg_(WORD reg, WORD mask, WORD value); #define u8250_set_reg_(a, b) u8250_mod_reg_((a), 0X0, (b)) short FCALL_ u8250_read_(COMM_PORT *p_port); void FCALL_ u8250_restore_status_(COMM_PORT *p); short FCALL_ u8250_rxstat_(COMM_PORT *p_port); void FCALL_ u8250_save_status_(COMM_PORT *p); short FCALL_ u8250_set_(COMM_PORT *p, short cmd, short value); short FCALL_ u8250_send_break_(COMM_PORT *p_port); short FCALL_ u8250_set_databits_(COMM_PORT *p_port, short value); short FCALL_ u8250_set_parity_(COMM_PORT *p_port, short value); short FCALL_ u8250_set_rx_xlat_(COMM_PORT *p, short item, short value); short FCALL_ u8250_set_speed_(COMM_PORT *p_port, long value); short FCALL_ u8250_set_stopbits_(COMM_PORT *p_port, short value); short FCALL_ u8250_set_tx_xlat_(COMM_PORT *p, short item, short value); short FCALL_ u8250_txstat_(COMM_PORT *p_port); void FCALL_ u8250_write_(COMM_PORT *p_port, WORD c); #define INS8250_H_INCLUDED #endif