********************************************************************* DRV.TXT - SeaCOM Serial Port Driver Notes Serial Utility Diskette 1997 ********************************************************************* This document is organized with the following conventions: Section 1. Upgrade Notice and General Information Section 2. Diskette Layout Section 3. Programming Information Section 4. Available Diagnostics Section 5. Documentation Updates Section 6. Known Problems, Bugs, and Conflicts ********************************************************************* Section 1. Upgrade Notice and General Information Developer assistance programs may be available over the Internet. To find out, visit the URL listed on the label of this diskette or contact technical support. This version of the DOS Serial Port Driver is fully operational. SeaCOM is a serial communications software driver that provides fully buffered interrupt driven input and output to multiple asynchronous serial communication (COM:) ports. SeaCOM provides the programmer with a robust and reliable means for servicing multiple serial ports while maintaining a straightforward and consistent software interface. SeaCOM was designed to operate on an IBM PC / XT / AT or compatible computer. The driver is a BIOS extension and / or replacement that provides extended capabilities in the form of block I/O and user configurable flow control support in addition to emulating standard BIOS interrupt 14h calls. SeaCOM currently supports the following specifications: -Bi-directional buffered I/O on all ports. -Supports XT (2-7) and AT (8-15) IRQs (Interrupt Request). -Interrupt sharing between multiple ports and / or multiple boards. -Supports up to 32 ports per installation, multiple installations allow for a maximum of 288 ports. -Configurable flow control options allow hardware and / or software handshake support. * XON / XOFF transmit and / or receive flow control. * Hardware transmit / receive flow control supports DTR, DSR , CTS, and / or block RTS mode enable (RS-485). -Block and character I/O supported. -Emulates interrupt 14H PC / AT BIOS calls (00H-03H) and PS/2 extended BIOS calls (04H and 05H) for compatibility with existing software. -Support for 16550 buffered UART. -Written in 100% optimized assembly language for maximum performance. -Supports data rates to 115.2 Kbps with standard COM: configuration. -Independently configurable input and output buffers up to 64 kilobytes in size. -High Level Language Library Supports C, C++, and BASIC. LOW LEVEL ASSEMBLER FUNCTION CALLS This section details the function calls supported by SeaCOM. All examples assume that software interrupt 14h was selected during the configuration and all baud rate selections that are listed assume that a standard 1.8432 MHz oscillator is used. For further documentation on the serial port register definitions, please refer to the 8250, 16450, or 16550 data book. For additional reference on SeaCOM function calls, refer to the Quick Reference Sheet included with this manual. Port Initialization +Function 00h-Programs the port with specified communication parameters. Standard data rates up to 9600 can be obtained. (compatible with int 14h BIOS call 00h). +Function 04h-Provides all the functionality of InitPortCOM while allowing access to baud rates. +Function 0Ah-Configures the selected port for various flow control options. +Function 0Bh-Allows the selected port to be configured to a non- standard baud rate (i.e. 3600 baud). +Function 0Ch-Writes a specified value to any UART register. Transmit and Receive +Function 01h-Places a single character into the transmit buffer. +Function 02h-Gets a single character from the receive buffer. +Function 08h-Places a string or buffer of data into the transmit buffer. +Function 09h-Retrieves a block of data from the receive buffer. Port Information +Function 05h-Provides status of Modem Status and Port Status. +Function 03h-Same features as ReqPortStatCOM with additional read back capabilities. +Function 06h-Returns the value of any UART register. Buffer Routines +Function 06h-Returns the logistics of the transmit or receive buffer. +Function 07h-Purges the contents of the transmit or receive buffer. System Information +Function 0Eh-Provides miscellaneous system information such as number of ports being serviced, resident memory requirements, and driver code segment. HIGH LEVEL LANGUAGE INTERFACE This section details the High Level Language Interface. Although all examples are in the C language, sample programs and syntax explanation for other languages are available on the distribution diskette. Differences in language usage will be noted under the Remarks section of each function. The following is a list of the routines supported by SeaCOM. The routines are organized by functionality. Port Initialization +InitPortCOM-Programs the port with specified communication parameters. Standard data rates up to 9600 can be obtained. (compatible with int 14h BIOS call 00h. +InitPortExCOM-Provides all the functionality of InitPortCOM while allowing access to baud rates. +HandShakeConfigCOM-Configures the selected port for various flow control options. +BaudRateConfigCOM-Allows the selected port to be configured to a non- standard baud rate (i.e. 3600 baud). +WritePortRegCOM-Writes a specified value to any UART register. Transmit and Receive +PutCharCOM-Places a single character into the transmit buffer. +GetCharCOM-Gets a single character from the receive buffer. +PutBlockCOM-Places a string or buffer of data into the transmit buffer. +GetBlockCOM-Retrieves a block of data from the receive buffer. Port Information +ReqPortStatCOM-Provides status of Modem Status and Port Status. +ReqPortStatExCOM-Same features as ReqPortStatCOM with additional read back capabilities. +ReadPortRegCOM-Returns the value of any UART register. Buffer Routines +GetBufferCountCOM-Returns the logistics of the transmit or receive buffer. +FlushBufferCOM-Purges the contents of the transmit or receive buffer. System Information +GetDrvInfoCOM-Provides miscellaneous system information such as number of ports being serviced, resident memory requirements, and driver code segment. Miscellaneous Macros +HIBYTE(word)-This macro will return the high byte of a word size variable. +LOBYTE(word)-This macro will return the low byte of a word size variable. +HIWORD(long)-This macro will return the high word of a long size variable. +LOWORD(long)-This macro will return the low word of a long size variable. Note: The provided macros are not supported under all high level language interfaces. Please refer to the include file associated with the high level language that you intend to use. Object files (.OBJ) and Quick Basic Library (.QLB) are provided on the diskette for all memory models and software interrupts. Please refer to the text files on the diskette for information on filenames that correspond to a specific configurations. All high level language interface modules were written using MASM 6.0 or higher. ********************************************************************* Section 2. Distribution Diskette Layout The following is a summary of the files and directories that are in the DRV sub-directory on this diskette. \ - Root Directory contains main executables \SEACOM.EXE - Terminate and Stay Resident (TSR) Driver \SETUP.EXE - Driver Configuration Utility Program \DRV.TXT - The file you are viewing \EXAMPLES\ - Sub directory containing sample programs demonstrating the use of the Serial Port Driver \LIB\ - Contains all object and library files for static linking with various high level languages. ********************************************************************* Section 3. Programming Information The LIB sub-directory contains all object and library files that should be linked to your application. Although these library files are not required to use the Driver, however they do provide a high level interface to access the Drivers services. All accesses to the driver are done via a software interrupt. The following is a description of the naming convention used for all object and library files on this diskette: SCxyyz.OBJ or SCxyyz.QLB x = Language, 'C' for the C or C++ language or 'B' for BASIC. yy = Software interrupt; 14, 60, 61, 62, 63, 64, 65, 66 , or 67 z = Memory model; Small-S, Medium-M, Large-L, Tiny-T. BASIC Note: All constant values in the header file SCOM.BI are the same as the C language examples with the exception of the underscore ( _ ) is removed. For example, the C language calls may use BAUD_300, but the BASIC calls will use BAUD300. All library files for BASIC are in the Quick Library format (*.QLB). All BASIC files are SCB??M.QLB, where ?? is the software interrupt that is being used. C and C++ Note: When using the Driver with the C++ language the header file will declare all calls extern "C". This will allow you to link the .obj files to you application. Assembly Note: The C and C++ object files that are provided on the distribution diskette can be used in an assembly language program. The calling program must use the C calling convention. If you are using MASM 6.0 or greater you can use the INVOKE directive. The prototypes for the INVOKE directive are located in the SCOM.INC file in the \INCLUDE directory. ********************************************************************* Section 4. Available Diagnostics Please refer to the README.TXT file in the root directory for information regarding serial port diagnostics. ********************************************************************* Section 5. Documentation Updates Presently there are no documentation updates. ********************************************************************* Section 6. Know Problems or Conflicts Presently there are no known problems or conflicts with the Serial Driver. *********************************************************************