SIO2K.SYS

Excellent replacement driver for COM.SYS. If you utilise communications software on a regular basis at high speeds (e.g. 57,600), then the SIO drivers are the way to go. DEVICE=\..\SIO2K.SYS NOTE: REM all other serial drivers like COM.SYS or SIO.SYS

The SIO2K set of drivers have some interesting new techniques and implementations.

Block input and output. If the UART is a FIFOed device, the interrupt service routines (there are several) always use block input and output instructions to read and write characters. During high communications activity, this means the 16550 interrupt routine is 5 to 10 times faster (possibly more) than previous implementations. UARTs with larger FIFOs will execute even faster. Now boys and girls, it is the interrupt service routines that are faster. Nothing on Earth can make your modem go faster than it is capable of. However, faster interrupt service routines means less processor overhead.

Automatic FIFO sizing. The SIO2K drivers now support 16650, 16550A, 16750, 16850 and 16950 UARTs. However, knowing the chip type does not necessarily mean the FIFO size is know. For example, the 16654 is the equivalent of four (or more) 16650A UARTs on a single chip. The normal 16650 UARTs have a 32 byte FIFO, but the UARTS on the 16654 have 64 byte FIFOs. Only probing will determine this.

The first time a UART is touched by an application the SIO2K drivers automatically probe the size of the FIFO and the found size is used. Note that a UART with no FIFOs can be thought of as having a FIFO size of 1 byte. My thanks to Sam Detweiler, of IBM, for the idea of probing for FIFO size.

Automatic Crystal Frequency. Most UARTs are capable of bit rates to 921600 bps or more. However, on most serial devices, the bit rate is limited to 115200bps by the crystal oscillator attached to the UART. Many boards, like those from Lava, offer bit rates greater than by using faster crystal oscillator. The downside is one must tell the driver to use a bit rate of 28800 to really get a bit rate of.

The first time a UART is touched by an app, the SIO2K drivers probe the UART to determine if it is using a standard crystal oscillator or not. If the frequency is not standard, then the SIO2K drivers automatically adjust so that a request of 115200 bps yields an actual bit rate of 115200 bps. In addition, the maximum bit rate is adjusted and reported to applications that request the maximum bit rate. Boards like the Blue Heat from CTI use a 12x crystal and its top bit rate is 1382.4 kbps.

Minimum touch during boot. The SIO2K drivers do not touch the UART hardware during boot. This was very difficult to do, while maintaining a compatible OS/2 serial driver. The "no touch" practically eliminates the possibility of traps occurring during the boot process when they are difficult to deal with. This does mean that a lot of processing will occur the first time a port is opened.