==================================================================== Release Notes IntelliPort(tm) II Driver Version 1.0.2 for MS-DOS October 5, 1993 P/N 0-13065-1 ==================================================================== ------------ Introduction ------------ The IntelliPort II MS-DOS device driver is intended for use in appli- cations that can access ports by device name or through the INT 14 interface. For those who wish to use the IntelliPort II in custom applications, a Developer's Kit is available from Computone. Pro- grams written with the Developer's Kit can take full advantage of the high performance offered by the IntelliPort II. This Release Note describes how to install IntelliPort II hardware and software on an MS-DOS or PC-DOS system. Version 1.0.2 of the IntelliPort II MS-DOS device driver supports new IntelliPort II EXpandable expansion modules, including all Slimline modules and the RJ-45 Tower module. You must install version 1.0.2 to use these new modules. Before you begin, review the IntelliPort II Hardware Reference Guide for an overview of product features and operation. We recommend that you install the IntelliPort II hardware before the IntelliPort II software. +--------------------------------------------------------------+ | Important! To avoid damage to hardware, always turn off the | | power to the system before you plug or unplug IntelliPort II | | cables or components. | +--------------------------------------------------------------+ Computone and IntelliPort are trademarks of Computone Corporation. All other company and product names are trademarks or registered trademarks of their respective companies. ------------------- System Dependencies ------------------- The MS-DOS driver imposes the following dependencies: - You can install up to four controllers in a system. - The driver supports a maximum of 32 ports. - All IntelliPort II controllers must share the same IRQ. - If you have an EISA system, you cannot install IntelliPort II ISA and IntelliPort II EISA controllers in one system. For complete hardware installation procedures, see the IntelliPort II Hardware Reference Guide. --------------------- Software Installation --------------------- This section describes how to install the IntelliPort II software device drivers for MS-DOS. Before you begin, make sure that MS-DOS is installed and active on your system. Copying the Files onto the System 1. Insert the IntelliPort II MS-DOS Driver diskette into the A: or B: drive. 2. Create a directory to place the IntelliPort II driver and support files, as follows: MKDIR C:\CTON 3. At the command line prompt, type the following: COPY A:*.* C:\CTON This copies the IntelliPort II driver and support files into the C:\CTON directory. You can set up the IntelliPort II driver to load from CONFIG.SYS or run the driver as a TSR from the command line. We recommend that you use CONFIG.SYS since you can then access IntelliPort II ports as DOS devices. Notes for EISA Controllers IntelliPort II EISA controllers have an I/O address based on the slot number in which you installed the controller. The addressing scheme is as follows: Slot I/O Addr. slot 1 1C88 slot 2 2C88 ... ... slot n nC88 Configuring from CONFIG.SYS This section discusses configuring the system to load the IntelliPort II driver from CONFIG.SYS. This method provides DOS devices and INT 14 BIOS-compatible support for the IntelliPort II serial ports. Follow these steps: 1. Open the CONFIG.SYS file with a non-formatting text editor and add the following line: DEVICE=C:\CTON\I2DOS.EXE PORT=308 INT=10 2. If you have installed the IntelliPort II driver in a different directory, change the path name in this DEVICE= line to reflect the actual location of the driver. 3. Change the PORT= parameter to reflect the actual base I/O address (in hexadecimal) assigned to the IntelliPort II controller as shown in the Hardware Reference Log of the Product Reference Guide. If you installed more than one IntelliPort II controller, separate each base address with commas (for example, PORT=308,310,318). If you omit this parameter, the driver assumes you have one IntelliPort II controller installed with a base I/O address of 308. 4. Change the INT= parameter to reflect the actual IRQ assigned to the IntelliPort II controller as shown in the Hardware Reference Log of the Product Reference Guide. All IntelliPort II controllers installed in a system must share the same IRQ. If you omit this parameter, the driver assumes the IRQ is 10. +--------------------------------------------------------------+ | Important: If you have any INT 14 enhancers or other driver | | software that chains to INT 14, you must install them before | | the IntelliPort II driver software. | +--------------------------------------------------------------+ Configuring from the Command Line This section discusses configuring the system to load the IntelliPort II driver as a TSR. This method provides only INT 14 BIOS-compatible support for the IntelliPort II serial ports. Use this method if you do not required DOS devices or the I2MODE command. Follow these steps: 1. Move to the directory that contains the IntelliPort II driver. If you prefer, you can add this directory to your path. 2. Type the following command at the DOS prompt: I2DOS.EXE PORT=308 INT=10 Change the PORT= and INT= parameters to reflect the actual base I/O address (in hexadecimal) and IRQ assigned to the IntelliPort II controller, as shown in the Hardware Reference Log of the Product Reference Guide. If you installed more than one IntelliPort II controller, separate each base address with commas (for example, PORT=308,310,318). If you omit these parameters, the driver assumes you have one IntelliPort II controller installed with a base I/O address of 308 and an IRQ of 10. If you want your system to boot with the IntelliPort II driver loaded as a TSR, you can place this command in your AUTOEXEC.BAT file: C:\CTON\I2DOS.EXE PORT=308 INT=10 Be sure to modify the path and the PORT= and INT= parameters to reflect your installation. Startup Information When you install the IntelliPort II driver from CONFIG.SYS, the driver displays the number of ports found and the highest port device allocated (for example, II07 for an eight-port con- troller). The number of ports may not always correspond to the number of devices. This can happen when you have an IntelliPort II EXpandable with two 8-port expansion modules; the first expansion module is assigned II00: through II07: and the second module is assigned II16: through II23:. This may also happen if the driver finds one or more bad ports. For example, if port 5 of an eight-port standard IntelliPort II were bad, the driver would assign devices II00: through II03: and II05: through II07:. ----------------- Application Notes ----------------- DOS Device Support Before using the IntelliPort II devices, you should first initialize them using the I2MODE.EXE command supplied with the IntelliPort II driver. All 32 devices (II00 through II31) are recognized as devices regardless of how many IntelliPort II ports you installed. However, if you attempt to access an invalid device (for example, accessing II10: in an 8-port system), DOS responds with an "Invalid unit reading device" error. The IntelliPort II handler assumes that COM3 and COM4 are not installed on your system. If these ports are installed, they can cause conflicts with II00 and II01. You should remove or disable COM3 and COM4 if these ports are installed on your system. INT 14 Support Existing software that uses INT 14 to access serial ports may be able to access the first two IntelliPort II ports. Using standard INT 14 functions, you can operate IntelliPort II ports at up to 9600 bps. The following software is known to work (other software may work as well): MS-Kermit set port bios3 (or bios4) Procomm Plus for Windows INT14:3 (or INT14:4) INT 14 Function Summary When you start the IntelliPort II driver (either from CONFIG.SYS or by running it as a TSR), the driver adds itself to the INT 14 chain. The driver provides functions that are compatible with the MS-DOS INT 14 functions, but with several extensions. The functions are: Function Description -------- ----------- 0 Initialize port 1 Write a character to the port. 2 Read a character from the port. 3 Read port status. 4 Extended initialize (includes extended support for data rates up to 115,200 bps). 5 Extended port control. F1 Write a character string to the port (extended function). F2 Read a character string from the port (extended function). For more information, see the section "INT 14 Functions." ------------------------------------ I2MODE - Set up IntelliPort II Ports ------------------------------------ The I2MODE.EXE utility lets you set up each IntelliPort II port from the DOS command line. This utility provides the same function as the DOS MODE command for serial ports, with several extensions. The I2MODE command has several formats as follows: I2MODE [/H] I2MODE port [speed,parity,length,stopbits[,flow_ctrl]] I2MODE port LOCKED|UNLOCKED Typing I2MODE with no parameters displays a brief listing of the parameters allowed. The /H option displays a longer help message with allowable values. Typing I2MODE with a port name and no other parameters displays the current settings of that port. You can set IntelliPort II port parameters as follows: speed The data rate, in bps. Valid settings are: 110, 150, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 56700, 76800, or 115200. parity The parity. Valid settings are: N (none), E (even), O (odd), M (mark), or S (space). length The number of data bits per character. Valid settings are: 5, 6, 7, or 8. stopbits The number of stop bits per character. Valid settings are: 1, 1.5, or 2. flow_ctrl The flow control method to use. Valid settings are: XON_XOFF, -XON_XOFF, CTS_RTS, -CTS_RTS, DSR_DTR, or -DSR_DTR. The dash disables the specified flow control method. You can set more than one flow control method on a port. Finally, you can lock or unlock the settings for a particular IntelliPort II. If you use the keyword LOCKED, the speed, parity, length, and stop bits settings cannot be changed until you reboot or issue the command I2MODE [port] UNLOCKED. This is useful, for example, to run programs such as MS-Kermit at data rates above 9600 bps and prevent the program from changing the port. You can change the flow control of a port whether or not the port is locked. The default port settings are 2400 bps, 8 bit characters, no parity, one stop bit, no flow control (2400,N,8,1), and unlocked. The following are examples of using the I2MODE command: I2MODE /H displays a help message I2MODE II00: 115200,N,8,1,CTS_RTS sets up port 0 for 115,200 bps, 8 bit characters, no parity, one stop bit, and CTS/RTS flow control I2MODE II00: LOCKED locks port 0, allowing changes only to flow control I2MODE II03: UNLOCKED allows changes to port 3's settings ---------------- INT 14 Functions ---------------- This section describes the INT 14 functions available in the IntelliPort II driver. These functions are compatible with the standard MS-DOS INT 14 functions, but with some extensions. In all functions, you load DX with the port number. DX is 0 for COM1, 1 for COM2, and 2 for II00 (the first IntelliPort II port). This gives you access to COM1 and COM2 as well as the IntelliPort II ports. Initialize Port (function 0) This function sets the data rate, word length, parity, and stop bits for the specified port. In most cases, you should use function 4 (Extended Initialize Port) instead. Registers: DX = the port number (0 for COM1, 1 for COM2, 2 for II00, etc.) AH = 0 (specifies Initialize Port function) AL = the port setting, as an unsigned byte. The format of register AL is as follows: +---------------------+--------------+-------+---------------+ | Bit 7 Bit 6 Bit 5 | Bit 4 Bit 3 | Bit 2 | Bit 1 Bit 0 | | Data rate | Parity | Stop | Char. Length | +---------------------+--------------+-------+---------------+ Bits 5 through 7 specify the data rate as follows: 000 = 110 bps 001 = 150 bps 010 = 300 bps 011 = 600 bps 100 = 1200 bps 101 = 2400 bps 110 = 4800 bps 111 = 9600 bps Bits 3 and 4 specify the parity as follows: 00 = no parity 01 = odd parity 10 = no parity 11 = even parity Bit 2 specifies the number of stop bits as follows: 0 = 1 stop bit 1 = 2 stop bits Bits 0 and 1 specify the word length as follows: 10 = 7 bits 11 = 8 bits Returns: AH = the port status, as follows: Bit 7 = time-out (never happens) Bit 6 = transmitter empty Bit 5 = transmitter holding register empty Bit 4 = BREAK detected Bit 3 = Framing error Bit 2 = Parity error Bit 1 = Overrun error Bit 0 = Received data ready AL = the modem status register, as follows: Bit 7 = DCD (Data Carrier Detect) Bit 6 = RI (Ring Indicator) Bit 5 = DSR (Data Set Ready) Bit 4 = CTS (Clear to Send) Bit 3 = DCD state has changed since last read Bit 2 = RI state has changed from low to high since last read Bit 1 = DSR state has changed since last read Bit 0 = CTS state has changed since last read Send Character (function 1) This function transmits a character to the attached serial device on the specified port. Registers: DX = the port number (0 for COM1, 1 for COM2, 2 for II00, etc.) AH = 1 (specifies Send Character function) AL = the character to send Returns: AH = the port status, as follows: Bit 7 = time-out Bit 6 = transmitter empty Bit 5 = transmitter holding register empty Bit 4 = BREAK detected Bit 3 = Framing error Bit 2 = Parity error Bit 1 = Overrun error Bit 0 = Received data ready Receive Character (function 2) This function receives a character from the attached serial device on the specified port. Registers: DX = the port number (0 for COM1, 1 for COM2, 2 for II00, etc.) AH = 2 (specifies Receive Character function) Returns: AL = the character received AH = the port status, as follows: Bit 7 = success/failure (0 = function was successful) Bit 6 = transmitter empty* Bit 5 = transmitter holding register empty* Bit 4 = BREAK detected* Bit 3 = Framing error* Bit 2 = Parity error* Bit 1 = Overrun error* Bit 0 = Received data ready* *valid only if bit 7 is set Read Status (function 3) This function reads the port and modem status for the specified port. Registers: DX = the port number (0 for COM1, 1 for COM2, 2 for II00, etc.) AH = 3 (specifies Read Status function) Returns: AH = the port status, as follows: Bit 7 = time-out (never happens) Bit 6 = transmitter empty Bit 5 = transmitter holding register empty Bit 4 = BREAK detected Bit 3 = Framing error Bit 2 = Parity error Bit 1 = Overrun error Bit 0 = Received data ready AL = the modem status register, as follows: Bit 7 = DCD (Data Carrier Detect) Bit 6 = RI (Ring Indicator) Bit 5 = DSR (Data Set Ready) Bit 4 = CTS (Clear to Send) Bit 3 = DCD state has changed since last read Bit 2 = RI state has changed from low to high since last read Bit 1 = DSR state has changed since last read Bit 0 = CTS state has changed since last read Extended Initialize (function 4) This function sets the data rate, word length, parity, and stop bits for the specified port. This function is compatible with the PS/2 INT 14 function 4 BIOS call, with extended data rate selections. Registers: DX = the port number (0 for COM1, 1 for COM2, 2 for II00, etc.) AH = 4 (specifies Extended Initialize Port function) AL = 01 to send a BREAK; 00 otherwise. BH = the parity, as follows: 0 = none 1 = odd 2 = even 3 = mark (stick parity odd) 4 = space (stick parity even) BL = the number of stop bits, as follows: 0 = 1 stop bit 1 = 2 stop bits (1.5 stop bits if the word length is 5 bits) CH = the word length, as follows: 0 = 5 bits 1 = 6 bits 2 = 7 bits 3 = 8 bits CL = the data rate, in hexadecimal, as follows: 00h = 110 bps 01h = 150 bps 02h = 300 bps 03h = 600 bps 04h = 1200 bps 05h = 2400 bps 06h = 4800 bps 07h = 9600 bps 08h = 19200 bps 09h = 38400 bps (IntelliPort II extension) 0Ah = 57600 bps (IntelliPort II extension) 0Bh = 76800 bps (IntelliPort II extension) 0Ch = 115200 bps (IntelliPort II extension) Returns: AH = the port status, as follows: Bit 7 = time-out (never happens) Bit 6 = transmitter empty Bit 5 = transmitter holding register empty Bit 4 = BREAK detected Bit 3 = Framing error Bit 2 = Parity error Bit 1 = Overrun error Bit 0 = Received data ready AL = the modem status register, as follows: Bit 7 = DCD (Data Carrier Detect) Bit 6 = RI (Ring Indicator) Bit 5 = DSR (Data Set Ready) Bit 4 = CTS (Clear to Send) Bit 3 = DCD state has changed since last read Bit 2 = RI state has changed from low to high since last read Bit 1 = DSR state has changed since last read Bit 0 = CTS state has changed since last read Extended Port Control (function 5) This function reads or sets the modem control register for the specified port. Registers: DX = the port number (0 for COM1, 1 for COM2, 2 for II00, etc.) AH = 5 (specifies Extended Port Control function) AL = 00 to read the MCR; 01 to write BL = if AL is 1, the bits to set in the MCR, as follows: Bit 4 = Loopback Bit 3 = OUT2 Bit 2 = OUT1 Bit 1 = RTS Bit 0 = DTR Bits 5 through 7 are reserved and should be set to 0. Returns: BL = the modem control register, in the same format as shown above Send String (function F1) The Send String function is an extension unique to the IntelliPort II driver. This function sends a string of characters to the specified port until one of the following occurs: - All the requested characters are sent. - The time-out period elapses. This could happen, for example, if the device attached to the port is off-line. Registers: DX = the port number (0 for COM1, 1 for COM2, 2 for II00, etc.) AH = F1 hexadecimal (specifies Send String function) BX = the string address (offset) DS = the string address (segment) CX = the number of characters to send SI = time-out period, in multiples of 10 ms Returns: AH = the port status, as follows: Bit 7 = time-out Bit 6 = transmitter empty Bit 5 = transmitter holding register empty Bit 4 = BREAK detected Bit 3 = Framing error Bit 2 = Parity error Bit 1 = Overrun error Bit 0 = Received data ready CX = the number of characters actually sent Notes: - If you set up the Send String function with SI=0, the function sends as many characters as possible without waiting. This is useful when you want the function to return without blocking. - Regardless of what timeout value you set, you must set the maximum number of characters to send in CX. This value is replaced with the number of characters actually sent. Receive String (function F2) The Receive String function is an extension unique to the Intelli- Port II driver. This function reads data from the specified port until one of the following occurs: - the receive buffer becomes full - the termination character is received - the time-out period elapses Registers: DX = the port number (0 for COM1, 1 for COM2, 2 for II00, etc.) AH = F2 hexadecimal (specifies Receive String function) BX = the string address (offset) DS = the string address (segment) CX = the size of the receive buffer AL = the termination character (set to 0 to read data until the buffer fills up or until the time-out period elapses) SI = time-out period, in multiples of 10 ms Returns: AH = the port status, as follows: Bit 7 = time-out Bit 6 = transmitter empty Bit 5 = transmitter holding register empty Bit 4 = BREAK detected Bit 3 = Framing error Bit 2 = Parity error Bit 1 = Overrun error Bit 0 = Received data ready CX = the length of the returned string Notes: - If you set up the Receive String function with SI=0, the function performs a single read to get as much data as is available (subject to the size of the receive buffer and the termination character) without waiting for more data to come in.