Warp Driver A Fast Console Device by Eric Tauck 1304 Deerpass Road Marengo, IL 60152-9644 U.S.A. Phone: 815-568-1110 Compuserve: 72457,1557 Internet: 72457.1557@compuserve.com Warp is a device driver for speeding up standard output. Addi- tional features of Warp include auto-pause, a shortened BIOS beep, and partial ANSI support. Warp requires a PC/XT/AT compat- ible and DOS 3.0 or higher. Warp may be used and distributed freely. The file WARP.EXE is the standard Warp device driver. The file WARPF.EXE is a faster version of the driver. If WARP.EXE doesn't seem to speed up your display, try using WARPF.EXE. A side effect of WARPF.EXE is that the cursor may not be positioned correctly until the system expects you to type something. Warp is installed by placing the following line in your CONFIG.SYS file: DEVICE=WARP.EXE [switches] or DEVICE=WARPF.EXE [switches] The possible switches are: /E Enable auto-pause. This is the default. /D Disable auto-pause. /C:x Set the output color to x. This value is an attribute byte in the range 0 to 255. You can also set the color with an ANSI sequence described later in this document. The default is 7 (white on black). /P Set the auto-pause prompt to the output color. This is the default. You can set the prompt color to something other than the output color with the switch below. /P:x Set the auto-pause prompt color to x. This value is an attribute byte in the range 0 to 255. /T:x Set the auto-pause timeout to x seconds. If no key is pressed for this period of time, the screen will unpause as if a key had been pressed. The default is 0 (wait indefinitely). Warp will NOT work with other ANSI drivers (like ANSI.SYS or any driver with "ANSI" in its name). Warp should be loaded AFTER any BIOS drivers (any device driver with "BIOS" in its name). The color values for the /C and /P switches are: 1 blue foreground 2 green foreground 3 cyan foreground 4 red foreground 5 magenta foreground 6 brown foreground 7 white foreground 16 blue background 32 green background 48 cyan background 64 red background 80 magenta background 96 brown background 112 white background Add a foreground and background color value together to calculate an attribute byte. If a foreground or background value are omitted, the foreground or background color will be black. Add 8 to the value to make the foreground color brighter. Add 128 to the value to make the foreground blink. If you want to change any of the switch setting after you have installed Warp, you can run WARP.EXE or WARPF.EXE as regular DOS programs. The drivers as DOS programs accept the same switches. The Warp auto-pause feature works like the MORE utility included with DOS. After an entire screen of output, Warp displays the message "Press any key to continue ..." and waits for a key to be pressed. If you press the ESC key when the screen is paused, the auto-pause feature will be disabled until the next time you enter a DOS command. The auto-pause feature is only enabled when scroll-lock is active. The auto-pause feature can also be disa- bled regardless of the scroll-lock state with the /D switch. Make sure you turn off scroll-lock (or disable auto-pause) before running programs unattended, unless you want the screen to pause when you're not there. The same caveat applies to running DOS programs from Windows, particularly Windows applications that run DOS programs in the background (like some ZIP managers and com- pilers). You can set an auto-pause timeout (with the /T switch) to make sure unattended programs keep running. Warp automatically generates a shorter and less annoying beep than produced by DOS or BIOS. This is done by hooking interrupt 10H and trapping all ASCII code 7's sent to the BIOS TTY func- tion. Only a few, mostly older, applications will be affected by this. Warp's ANSI support is limited to clear screen, move cursor, and set color. The specific ANSI sequences supported are as follows: ESC[2J clear screen and home cursor ESC[K clear from cursor to end of line ESC[#;#f move cursor ESC[#;#H move cursor ESC[#A move cursor up ESC[#B move cursor down ESC[#C move cursor right ESC[#D move cursor left ESC[s save cursor location ESC[u restore cursor location ESC[#;...;#m set colors All ANSI sequences begin with ESC (ASCII code 27) and '[' (ASCII code 91). The # in the sequences refer to decimal numbers. The two numbers in the 'f' and 'H' sequences are the row and column location. The single number in the 'A' through 'D' sequences are the number of rows or columns to move. The cursor movement numbers default to 1 if they are absent. The numbers in the 'm' sequence affect the screen colors as follows: 0 all attributes off (white on black) 1 bold on 4 underscore (monochrome adapters only) 5 blink on 7 reverse video (black on white) 8 concealed (black on black) 30 black foreground 31 red foreground 32 green foreground 33 yellow foreground (usually mapped to brown) 34 blue foreground 35 magenta foreground 36 cyan foreground 37 white foreground 40 black background 41 red background 42 green background 43 yellow background (usually mapped to brown) 44 blue background 45 magenta background 46 cyan background 47 white background Warp should work in all text modes. In graphics modes, Warp passes output to the BIOS. Auto-pause and ANSI support is disa- bled in graphics modes. Though the ANSI sequence to clear the screen works in all text modes when using MS DOS 4.01 on my system, the CLS command doesn't completely work (it only clears the first 25 lines in the greater than 25 line modes and does not use the current color). I think this is because this version of DOS calls the to BIOS to clear the screen, rather than using the device driver. If you have this sort of problem, you could clear the screen by display- ing the clear screen ANSI sequence, for instance by ECHOing ESC[2J (the ESC must be the actual character with ASCII code 27). Compatibility considerations: * The length of the beep may be irregular under multi-tasking systems, like Windows or Desqview. * WARP.EXE (but not WARPF.EXE) positions the cursor by directly modifying the video controller ports. This may not work on nonstandard video systems and could cause problems in some operating environments. * Warp never waits for "vertical retrace" when displaying characters, which may cause snow on CGA monitors. * Warp uses the undocumented DOS interrupt 29H. Version changes: 1.00 Original release. 1.01 Traps INT 1B and ignores code 00/00 from INT 16. 1.10 Added /P:n option and cleaned up code. 2.00 Improved ANSI support, improved auto-pause, allow config- uration after installation, and changed switches. The auto-pause feature will no longer work with an arbitrary number of lines. 2.01 Default prompt color is no longer green. 2.02 Command error message and parsing bugs fixed in WARP.SYS and WARPF.SYS. Beep routines partially rewritten. 2.10 The ESC key temporarily disables the auto-pause and the special Paradise text modes 54H to 57H are recognized. 2.11 Fixed the order of the row and column arguments for the H and f ANSI sequences (they were reversed). 2.20 Merged configuration program and device drivers into single EXE files. Added support for Tseng text modes 21H to 24H, 26H, and 2AH. 2.30 Added auto-pause timeout, support for Paradise text modes 66H, 67H, and 69H, and now Warp responds to interrupt 2FH ANSI query. DISCLAIMER OF WARRANTY THIS SOFTWARE AND MANUAL ARE DISTRIBUTED "AS IS" AND WITHOUT WARRANTIES AS TO PERFORMANCE OF MERCHANTABILITY OR ANY OTHER WARRANTIES WHETHER EXPRESSED OR IMPLIED. BECAUSE OF THE VARIOUS HARDWARE AND SOFTWARE ENVIRONMENTS INTO WHICH THIS PROGRAM MAY BE PUT, NO WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE IS OFFERED. GOOD DATA PROCESSING PROCEDURE DICTATES THAT ANY PROGRAM BE THOROUGHLY TESTED WITH NON-CRITICAL DATA BEFORE RELYING ON IT. THE USER MUST ASSUME THE ENTIRE RISK OF USING THE PROGRAM. ANY LIABILITY OF THE SELLER WILL BE LIMITED EXCLUSIVELY TO PRODUCT REPLACEMENT OR REFUND OF PURCHASE PRICE.