/********************************************************************/ /* */ /* Serial Port Driver */ /* */ /* (c)Copyright Sealevel Systems Incorporated, 1993 - 1995 */ /* */ /* Please refer to the READ.ME file for Technical Support */ /********************************************************************/ /* SCOM.h */ /********************************************************************/ #ifdef __cplusplus extern "C" { #endif #define LOBYTE(w) ((unsigned char)(w)) #define HIBYTE(w) ((unsigned char)(((unsigned short)(w) >> 8) & 0xFF)) #define LOWORD(l) ((unsigned short)(unsigned long)(l)) #define HIWORD(l) ((unsigned short)((((unsigned long)(l)) >> 16) & 0xFFFF)) /*This struct type def is used to access the Get System Information */ /* function 0eh */ #pragma pack(1) /* Align on Byte boundary */ typedef struct tSYS_INFO_COM {unsigned short DriverSeg; /* Segment of Driver*/ unsigned short CodeSize; /* Resident Code Size in Paragraphs*/ unsigned char Mux2F_ID; /* short 2Fh ID */ unsigned char MaxPorts; /* Max Ports Serviced */ unsigned short Extra1; /* Reserved */ unsigned short Extra2; /* Reserved */ } SYS_INFO_COM, __far *fpSYS_INFO_STRUCT; #pragma pack() /* Revert to default packing */ /********************************************************************/ /* Define Software Interrupt */ /********************************************************************/ #ifdef SWINT60 #define COM_INT 0x60 #elseif SWINT61 #define COM_INT 0x61 #elseif SWINT62 #define COM_INT 0x62 #elseif SWINT63 #define COM_INT 0x63 #elseif SWINT64 #define COM_INT 0x64 #elseif SWINT65 #define COM_INT 0x65 #elseif SWINT66 #define COM_INT 0x66 #elseif SWINT67 #define COM_INT 0x67 #else #define COM_INT 0x14 #endif #define INIT_COM 0x00 #define PUT_CHAR_COM 0x01 #define GET_CHAR_COM 0x02 #define REQ_STAT_COM 0x03 #define INIT_EX_COM 0x04 #define REQ_STAT_EX_COM 0x05 #define GET_BUF_CNT_COM 0x06 #define FLUSH_BUF_COM 0x07 #define PUT_BLOCK_COM 0x08 #define GET_BLOCK_COM 0x09 #define HAND_SHAKE_COM 0x0a #define BAUD_RATE_COM 0x0b #define WRITE_REG_COM 0x0c #define READ_REG_COM 0x0d #define DRV_INFO_COM 0x0e extern unsigned short InitPortCOM(unsigned short, unsigned char); /*ret in AX*/ extern unsigned short PutCharCOM(unsigned short ,unsigned char ); /*ret in AX*/ extern unsigned short GetCharCOM(unsigned short ); /*ret in AX*/ extern unsigned short ReqPortStatCOM(unsigned short ); /*ret in AX*/ extern unsigned short InitPortExCOM(unsigned short ,unsigned char ,\ unsigned char , unsigned char , unsigned char ); /*ret in AX*/ extern unsigned short ReqPortStatExCOM(unsigned short , unsigned short ); /*ret in AX*/ extern unsigned short GetBufferCountCOM(unsigned short , unsigned char ); /*ret in AX*/ extern void FlushBufferCOM(unsigned short , unsigned char ); /*ret in AX*/ extern unsigned long PutBlockCOM(unsigned short ,unsigned char __far *, unsigned short ); /*return long, 32 bits */ extern unsigned long GetBlockCOM(unsigned short , unsigned char __far *, unsigned short ); /*return long, 32 bits*/ extern unsigned char HandShakeConfigCOM(unsigned short , unsigned short ); /*ret in AX*/ extern unsigned short BaudRateConfigCOM(unsigned short , unsigned short ); /*ret in AX*/ extern void WritePortRegCOM(unsigned short , unsigned char, unsigned char ); /*ret nothing*/ extern unsigned char ReadPortRegCOM(unsigned short , unsigned char ); /*ret in AL*/ extern void GetDrvInfoCOM(SYS_INFO_COM __far *); /*ret void*/ /*******************************************************************/ /* Port Status */ /*******************************************************************/ #define RX_BUFFER_STAT 0x01 #define OVERRUN_ERROR 0x02 #define PARITY_ERROR 0x04 #define FRAME_ERROR 0x08 #define BREAK_DETECTED 0x10 #define TX_BUFFER_STAT 0x20 #define TX_TIME_OUT 0x80 /*******************************************************************/ /* Modem Status */ /*******************************************************************/ #define DELTA_CTS 0x01 #define DELTA_DSR 0x02 #define TRAIL_RI 0x04 #define DELTA_DCD 0x08 #define CTS_STAT 0x10 #define DSR_STAT 0x20 #define RI_STAT 0x40 #define DCD_STAT 0x80 /*******************************************************************/ /* Function 00: Initialize Port */ /*******************************************************************/ #define LBAUD_110 0x00 #define LBAUD_150 0x20 #define LBAUD_300 0x40 #define LBAUD_600 0x60 #define LBAUD_1200 0x80 #define LBAUD_2400 0xa0 #define LBAUD_4800 0xc0 #define LBAUD_9600 0xe0 #define PARITY_NONE 0x00 #define PARITY_ODD 0x08 #define PARITY_EVEN 0x18 #define LSTOP_BIT_1 0x00 #define LSTOP_BIT_2 0x04 #define WORD_LENGTH_7 0x02 #define WORD_LENGTH_8 0x03 /*******************************************************************/ /* Function 01: Transmit Character */ /*******************************************************************/ #define TX_FAILED 0x80 /* Returns 0x80 if failed*/ /*******************************************************************/ /* Function 02: Receive Character */ /*******************************************************************/ #define NO_CHAR 0x80 /*******************************************************************/ /* Function 03: Request Port Status */ /* see Port Stauts and Modem Status above /*******************************************************************/ /* Function 04: Extended Initialize Port */ /* also see Port Status and Modem Status */ /*******************************************************************/ #define NO_BREAK 0x00 #define BREAK 0x01 #define NO_PARITY 0x00 #define ODD_PARITY 0x01 #define EVEN_PARITY 0x02 #define STICK_ODD_PARITY 0x03 #define STICK_EVEN_PARITY 0x04 #define STOP_BIT_1 0x00 #define STOP_BIT_2 0x01 #define STOP_BIT_1_5 0x01 /* valid if 5 data bits*/ #define DATA_BITS_5 0x00 #define DATA_BITS_6 0x01 #define DATA_BITS_7 0x02 #define DATA_BITS_8 0x03 #define BAUD_110 0x00 #define BAUD_150 0x01 #define BAUD_300 0x02 #define BAUD_600 0x03 #define BAUD_1200 0x04 #define BAUD_2400 0x05 #define BAUD_4800 0x06 #define BAUD_9600 0x07 #define BAUD_19_2K 0x08 #define BAUD_38_4K 0x09 #define BAUD_56K 0x0a #define BAUD_115_2K 0x0b /*******************************************************************/ /* Function 05: Extended Port Control */ /* also see Port Status and Modem Status */ /*******************************************************************/ #define READ_MCR 0x0000 #define WRITE_MCR 0x0100 #define DTR 0x01 #define RTS 0x02 #define OUT1 0x04 #define OUT2 0x08 #define LOOP_BIT 0x10 /*******************************************************************/ /* Function 06: Get Buffer Count */ /*******************************************************************/ #define TX_BUFF_COUNT 0x00 #define RX_BUFF_COUNT 0x01 #define TX_BUFF_FREE 0x02 #define RX_BUFF_FREE 0x03 /*******************************************************************/ /* Function 07: Flush Buffer */ /*******************************************************************/ #define TX_FLUSH 0x01 #define RX_FLUSH 0x02 /*******************************************************************/ /* Function 08: Block Transmit */ /*******************************************************************/ #define PARTIAL_TX 0x01 /*******************************************************************/ /* Function 09: Block Receive */ /* none */ /*******************************************************************/ /* Function 0A: Get / Set Handshake Mode */ /*******************************************************************/ #define SET_HAND_SHAKE 0x0000 #define GET_HAND_SHAKE 0x0100 #define SW_TX 0x01 #define SW_RX 0x02 #define DSR_TX 0x04 #define DTR_RX 0x08 #define CTS_TX 0x10 #define RTS_TX 0x20 #define RS_485 0x20 #define RTS_ON 0x40 #define DTR_ON 0x80 /*******************************************************************/ /* Function 0B: Get / Set Non-Standard Baud Divisor */ /*******************************************************************/ #define GET_DIVISOR 0x00 /*******************************************************************/ /* Function 0C: Write to Any Port Register */ /*******************************************************************/ #define DATA_REG 0x00 /* Can also read */ #define IER_REG 0x01 /* Can also read */ #define FIFO_REG 0x02 #define LCR_REG 0x03 /* Can also read */ #define MCR_REG 0x04 /* Can also read */ #define SCRATCH_REG 0x07 /* Can also read */ #define DLAB_LS_REG 0x00 /* Can also read */ #define DLAB_MS_REG 0x01 /* Can also read */ /*******************************************************************/ /* Function 0D: Read Any Port Register */ /*******************************************************************/ #define IIR_REG 0x02 #define LSR_REG 0x05 #define MSR_REG 0x06 /*******************************************************************/ /* Function 0E: Get System Information */ /* see SYS_INFO_COM struct above */ /*******************************************************************/ #ifdef __cplusplus } #endif /*******************************************************************/ /* End of File */ /*******************************************************************/