X00 Utility (XU) Copyright 1990, by Raymond L. Gwinn 12469 Cavalier Drive Woodbridge, Virginia 22192 All Rights Reserved i INTRODUCTION XU is a utility program intended to support the Serial Input/Output (SIO) device driver X00. XU combines several individual utilities that were previously distributed with X00. XU gives the user the ability to change most of the X00 command line options that were specified in the CONFIG.SYS file, or when X00 was installed as a TSR. Future versions of XU will provide additional functions such as port/IRQ re-mapping. Use this program at your own risk. No warranties or guarantees are given or implied. You may enter as many commands as you wish in a single XU execution. The only limitation is the length of DOS command lines. All references in this manual to the 16550A apply to the 16550AF, 16550AFN, 16C551 aka 16551, and 16C552 aka 16552. See the appendix in X00USER.DOC for a discussion on the various chip types. ii TABLE OF CONTENTS INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . i BOOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 CAPTURE . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 DTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 DV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 LOCK . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Valid baud rates . . . . . . . . . . . . . . . . . . . . 6 Valid parity . . . . . . . . . . . . . . . . . . . . . . 6 data bits per character . . . . . . . . . . . . . . . . 6 stop bits . . . . . . . . . . . . . . . . . . . . . . . 7 NASTY . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 PORT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 SET . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 STATUS or S . . . . . . . . . . . . . . . . . . . . . . . . 11 USEBIOS . . . . . . . . . . . . . . . . . . . . . . . . . . 12 WATCHCD . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1 BOOT This function should cause a warm boot. The BOOT functions works in most environments, including DESQview on most systems. The BOOT function will not work on some 386 systems running protected mode software. An example of the usage is: XU BOOT One appropriate place to use this function is in a batch file that is controlling an automated system like a BBS. If a condition is detected that is considered by the user to be severe enough, the BOOT command can be issued to restart the system. 2 CAPTURE X00 is a FOSSIL serial I/O device driver. A FOSSIL is normally entered (called) using an 80x86 INT 14h. This means that the vector (pointer) for interrupt 14h must point to X00. Some programs will alter the interrupt 14h vector (pointer). If the INT 14h vector is changed, X00 may not function properly. Application programmers please note that the INT 14h vector can be avoided by using the HLLAPI routines included in the X00 distribution file. The CAPTURE function is provided to instruct X00 to take control of, or to release the INT 14h vector. Examples of usage are: XU CAPTURE:ON XU CAPTURE:OFF XU CAPTURE CAPTURE:ON means that X00 will take/re-take the vector for interrupt 14h. That is, X00 will make the INT 14h vector (pointer) point to the X00 function dispatcher. The value of the old INT 14h vector is saved. X00 does not save the INT 14h vector if it already points to X00. CAPTURE:OFF means that X00 is to release the INT 14h vector. When X00 is initialized, or when a CAPTURE:ON is issued, the INT 14h vector is saved. The CAPTURE:OFF function tells X00 to restore the last INT 14h vector that it saved. It should be noted that the last INT 14h vector that X00 saved is not necessary the correct vector. An explanation is beyond the scope of this document. CAPTURE:OFF will also disable the BIOS emulator. CAPTURE:OFF does not deactivate any FOSSIL active ports. If you are having problems with a FOSSIL aware program, try CAPTURE:ON just prior to executing the program. If you are having problems with a communications program that is not FOSSIL aware, try CAPTURE:OFF just prior to executing the program. This function takes effect immediately upon execution. 3 FIFO This function is provided to give the user control of FIFOs in the SIO chip. At this time the only FIFOed chip that is supported is the 16550A and later versions. Other FIFOed chips are being worked on and will be supported in the future. Some early PS/2 systems had 16550 (non A) chips installed. X00 will identify the non A versions (and tell you that you have one) but it will not use the FIFOs. The FIFOs of the 16550 (non A) are not reliable. If the SIO chip is not a FIFOed device, this command has no effect. Examples of usage are: XU FIFO:15 XU FIFO:8 XU FIFO:OFF X00 defaults to 8 for a 16550A. If an invalid FIFO value is specified, the default value will be substituted. When a number parameter is given, it specifies the number of characters that can be loaded into the transmit FIFO of the SIO chip. The receive FIFO is always set at the maximum. The FIFO:OFF command disables both the receive and transmit FIFOs. I have seen problems with the 16550A when the FIFO is set to the maximum of 16. The problems go away with the FIFO value set to 15. If you are seeing an occasional error during file transfers, try lowering the FIFO value. This command will not take effect for ports that are already FOSSIL active. Once the port is reactivated, the specified FIFO parameters will take effect. 4 DTR This function is provided to turn on and or off DTR for a given port. Examples of usage are: XU DTR:0:ON XU DTR:0:OFF XU DTR:0:OFF DTR:0:ON In the third example note that DTR is first turned off and then back on in the same execution of XU. Some modems may require that DTR be off for a given period of time before being recognized as a valid off. If this is the case for your modem, turning DTR off, then on in the same execution may not work. 5 DV This function is provided to support software running under DESQview. Normally DESQview will provide a full time slice to a program whether it is doing anything productive or not. However, DESQview provides a method, called PAUSE, that allows a program to end its current time slice. Examples of usage are: XU DV:ON XU DV:OFF When the DV option is enabled (DV:ON) X00 will make a guess as to whether the program is doing anything productive. For example, if the program is simply waiting for the next character and there is no character available, then time can be made available to another program running under DESQview. DV:OFF will disable the releasing of time to other programs. As stated above, X00 tries to guess if the program is doing something productive. In some cases for some programs, the guess is going to be wrong. That is, X00 will incorrectly assume the program is, in effect, idle when it is not. In such cases, your application program may slow down considerably. The only thing you can do to correct this is to issue a DV:OFF command. As time goes on, I believe X00's guesses will get better. So, if you have problems with DV:ON, try it again with new releases of X00. This function takes effect immediately upon execution. 6 LOCK Some modems allow or require a fixed baud rate from the computer to the modem. This function is intended to support those modems. Note that LOCK does not set the specified parameters in the hardware when issued. See the following SET command to immediately set the operational characteristics of a port. This function locks the operational characteristics only for FOSSIL aware programs and programs using the BIOS emulator. Programs that perform direct I/O to the serial I/O registers can change the operational characteristics. Examples of usage are: XU LOCK:0:19200 XU LOCK:0:19200:8N1 XU LOCK:0:OFF XU LOCK:0:7E1 XU LOCK:0:OFF:7S1 The command LOCK:0:19200 will cause the computer to modem baud rate (for logical port 0, usually COM1) to be 19200 baud even if the application program requests that the baud rate be changed to another value. RTS/CTS hardware handshaking is implied (forced) when a locked baud rate is specified. Valid baud rates for locking are: 75, 110, 134.5, 150, 300, 600, 1200, 1800, 2000, 2400, 3600, 4800, 7200, 9600, 19200, 28800, 38400, 57600, and 115200. Valid parity etc settings can be made up of any combination of the following first second and third characters. First Second Third 5 N 1 6 E 2 7 M 8 O S The first number specifies the number of data bits per character. 7 The second character specifies the parity as follows: N = None E = Even M = Mark (always 1) O = Odd S = Space (always 0) The third character specifies the number of stop bits, 1 or 2. If 5 data bits are specified, 2 really means 1.5 stop bits. The command LOCK:0:OFF turns the locking off for both baud and parity for port 0 off. Request from the application program for baud rate changes will be honored. If the indicated port (0 in the above examples) is FOSSIL active, the locking or unlocking will not take effect until the port is reactivated. Note that a single OFF parameter ie XU LOCK:0:OFF will reset all locked parameters on the specified port. If you wish to turn off only one of the locked parameters, use a command similar to this: XU LOCK:0:19200:OFF 8 NASTY This function is not very nice to other programs. It will also slow down processing when it is in effect. NASTY should only be turned on if you can not get your program to work any other way. There is also a good chance that this option will lock up your system randomly. This option will cause X00 to alter memory of programs that have taken interrupt vectors away from X00. This may allow the user to achieve desired results in a hostile program environment. Examples of usage are: XU NASTY:ON XU NASTY:OFF Again, use this function only if it is absolutely necessary. The potential for subtle and major problems is not worth it if you do not need the NASTY feature. This function takes effect immediately upon execution. 9 PORT This function allows the user to make a port FOSSIL active or inactive. This function is provided to (attempt to) make programs that are not FOSSIL aware use the FOSSIL. Thus, these programs gain the advantages of interrupt driven serial I/O. Examples of usage are: XU PORT:0:ON XU PORT:0:OFF The command PORT:0:ON will make the indicated port (0 in this case) FOSSIL active. This means that interrupts will be enabled for the port and I/O will be buffered. The command PORT:0:OFF will restore the indicated port to normal operation. The OFF command is also useful for poorly tested programs that unintentionally leaves the FOSSIL hot when they terminate. Several of the alpha testers of XU seemed compelled to issue a PORT:0:ON command prior to running a FOSSIL aware program, like BINKLEY or OPUS, with mixed results. There is no need to turn on the port for FOSSIL aware programs. In fact it may cause problems if you do. You should not use XU to activate or deactivate a port that is currently being used by a program. For example, do not use XU in one DESQview window to activate or deactivate a port that is being used by a program in another window. Random problems will result if you do. Remember, this function is intended to get programs that are NOT FOSSIL aware to use the FOSSIL. You must not activate and deactivate ports for FOSSIL aware programs. This function takes effect immediately upon execution. 10 SET The syntax for the SET command is identical to the LOCK command above. This command is use to immediately set the operational characteristics of a serial I/O port. This command does not lock the settings. An application program using INT 14h is allowed to change the operational characteristics. Examples of usage are: XU SET:0:19200 XU SET:1:1200:8N2 XU SET:0:115200 11 STATUS or S This command will display the current operational characteristics of X00 and the serial I/O ports that X00 knows about. 12 USEBIOS This function is provided to maintain compatibility with older versions of X00. Out of self defense, I found it necessary to include a BIOS INT 14h emulator in X00. The emulator processes INT 14h calls to serial I/O ports that are not FOSSIL active. This function allows the user to enable and disable the emulator. Examples of usage are: XU USEBIOS:ON XU USEBIOS:OFF The USEBIOS:ON command tells X00 to pass calls to the BIOS INT 14h processor. That is, it disables the X00 BIOS emulator. The USEBIOS:OFF command tells X00 to use the BIOS emulator for INT 14h calls to FOSSIL inactive ports. That is, it enables the X00 BIOS emulator. Many DOOR type programs would not work with X00 until the emulator was added. By default, X00 uses the emulator. If a program normally uses BIOS INT 14h (and it will not work with a FOSSIL), you will probably see improved performance when the BIOS emulator is used. Especially if you have a 16550A installed. The emulator provides X00 with a fixed frame of reference with respect to the serial I/O ports. The emulator should be enabled (default or USEBIOS:OFF) for the vast majority of programs. This function takes effect immediately upon execution. 13 WATCHCD This function is provided to enable and disable a monitor of carrier detect. A description for the need of this function is beyond the scope of this document. The reason is obvious to those who need it. Examples of usage are: XU WATCHCD:0:ON XU WATCHCD:0:OFF The WATCHCD:0:ON command enables the monitor. If carrier for the specified port (0 in the above examples) goes away, the system will be booted. The WATCHCD:0:OFF command disables the monitor. This function takes effect immediately upon execution. 14 INDEX 16550 (non A) . . . . . . . . . . . . . . . . . . . . . . . . . 3 16550A . . . . . . . . . . . . . . . . . . . . . . . . i, 3, 12 16550AF . . . . . . . . . . . . . . . . . . . . . . . . . . . . i 16550AFN . . . . . . . . . . . . . . . . . . . . . . . . . . . i 16C551 aka 16551 . . . . . . . . . . . . . . . . . . . . . . . i 16C552 aka 16552 . . . . . . . . . . . . . . . . . . . . . . . i BOOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 CAPTURE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Data bits per character . . . . . . . . . . . . . . . . . . . . 6 DTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 DV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 FOSSIL . . . . . . . . . . . . . . . . . . . . 2, 3, 6, 7, 9, 12 INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . i LOCK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 data bits per character . . . . . . . . . . . . . . . . . 6 parity . . . . . . . . . . . . . . . . . . . . . . . . 6, 7 stop bits . . . . . . . . . . . . . . . . . . . . . . . . 7 Valid baud rates . . . . . . . . . . . . . . . . . . . . . 6 NASTY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Parity . . . . . . . . . . . . . . . . . . . . . . . . . . 6, 7 PORT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 RTS/CTS hardware handshaking . . . . . . . . . . . . . . . . . 6 SET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 STATUS or S . . . . . . . . . . . . . . . . . . . . . . . . . 11 Stop bits . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 TABLE OF CONTENTS . . . . . . . . . . . . . . . . . . . . . . ii USEBIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 WATCHCD . . . . . . . . . . . . . . . . . . . . . . . . . . . 13