ANSI.COM Command Michael J. Mefford 1989 No. 2 (Utilities) Purpose: A memory-resident utility that enables selectable use of the extended screen and keyboard control sequences that normally require loading the ANSI.SYS device driver. Unlike ANSI.SYS, ANSI.COM supports all video modes, permits sizing and clearing the key-assignment buffer, and provides high-speed screen updating. Format: ANSI [FAST | SLOW][ON | OFF][KON | KOFF][PON | POFF][XON | XOFF] [/B nnn][/P nn][/C][/U][/Q][/T] Remarks: ANSI.COM may be installed either at the DOS prompt or through an AUTOEXEC.BAT file. It will not load itself if ANSI.SYS has already been loaded as part of a CONFIG.SYS file. ANSI.COM will not load multiple copies of itself, so its command name may be invoked repeatedly in the same session to change user-selectable parameters. Upon loading, ANSI defaults to the FAST and ON status parameters. For use with IBM CGA video cards (where direct screen writes produce "snow") or with some screen capture software, the SLOW (screen writing via the BIOS, as with ANSI.SYS) status option may be selected. Entering ANSI OFF disables recognition of the ANSI control codes (but reassigned keys are still functional). Also upon loading ANSI defaults to KON and PON status parameters. Entering POFF disables the ANSI reassignment function so no new reassignments can be entered until reactivated by PON. Current assignments are still active. This prevents unauthorized changes to you keyboard being made by silly people who embed ANSI sequences into text documents to do harm to your system. Entering KOFF disables the ANSI reassignments but still allows new assignments to be made to the buffer or old ones removed. This allows simple ON / OFF control of assignments without clearing the buffer and reloading each time when a particular program is affected by the assignments. All keyboard reassignments in the buffer become active again upon the issuing PON. The /Q switch can be used to suppress output when executed. /P nn can be used to protect a number of lines at the top of the screen from being scrolled when the cursor reaches the bottom of the screen. Scrolling will occur starting at the line specified (Zero is the top line and the Default setting.) /P* will use the line above the current line. | The ANSI.COM key assignment buffer defaults to a size of 200 bytes. The buffer may be increased to as much as 60K or decreased to 0 bytes by entering ANSI with the /B switch and the desired number of bytes as nnn. Resizing the buffer after initial installation requires deinstallation, which may be accomplished using the /U switch. Current key assignments are lost if the buffer is resized. The buffer can be cleared without resizing by invoking ANSI with the /C switch. The full command set of IBM-ANSI control sequences is printed in the original article and in the DOS Technical Reference manual. This information can also be downloaded from PC Magnet. Available for downloading from PC MagNet (see the ANSI by Modem sidebar), ANSI.COM is already compiled and ready to run. ANSI.BAS will automatically create ANSI.COM when run once in BASIC. To create ANSI.COM from the ANSI.ASM source code requires use of a macro assembler (IBM or Microsoft, Version 2 or later) and the following commands: New /T option added to test if installed. Attempts to do an uninstall without actually uninstalling. If Not Installed an Errorlevel of 1 occurs. If already installed the status switches are returned in the ErrorLevel as | follows: OFF 1 | ON 2 | SLOW 4 | FAST 8 | KOFF 16 | KON 32 | POFF 64 | PON 128 | If not already installed, the program will not be installed when testing. | New /S option will load stat. data from ANSICOM.SYS file for PCBoard @Variable@ substitution. This file can be created by another program (I will write one soon in QuickBasic) which reads PCBoard.DAT, CNAMES, User.Sys and User.Inf and formats the data into the required format of ANSICOM.SYS. ANSICOM.ASM shows the format of the storage. The length must be 495 Bytes (extra will be ignored, less will issue error message.) Issuing the /S option without ANSICOM.SYS being present in the current directory will result in an error message also. XON Mode (the Default) controls the translation of @Xnn PCBoard color codes into actual screen color changes. XOFF causes the codes to be ignored (they will be translated and removed but will not actually set the color.) This allows viewing a file containing these codes in "Black-and-White" mode to how they will look to Non-Color mode Users on PCBoard. If the position in a set cursor position command is beyond the bounds of the screen then the highest row or column, as appropriate, is used. PCBoard 15.1's @ENV=@ could not be fully duplicated as ANSI.COM releases it's environment when loading and changes to the DOS environment after ANSI.COM was loaded would have been ignored anyways. If I can find a simple way to emulate this without bloating the code too much, I'll add it. For now the fixed text 'Env_Data' will be displayed regardless of what the environment variable is or whether the variable exists or not (since as I said the environment is not checked.) Update 3/2/89 - Fix for DOS function 0Bh, Check Standard Input Status and STDIN in ANSI_INT_21 handler. Leading zero inserted for Device Status Report for single digit cursor positions. INFORMATION typo 40 for 40H. WRITE_FAST modified to handle CR and LF instead of WRITE_CHAR. Update 3/7/89 - Fix for CLS in graphics mode. Version 1.2 Update 8/8/89 - STI added to INT 21 and 29 handler. Version 1.3 Update 01/01/90 - [KON | KOFF] and [PON | POFF] added Version 1.31 Update 03/23/90 - /Q option added for no output when executed 1.32 Update 05/16/90 - removed Syntax from output unless needed 1.33 added /T test for load. Update 10/28/90 - added /P nn command to 'Protect' nn lines 1.34 at the top of the screen from scrolling up when the bottom of the screen is reached. Update 12/01/90 - Added PCBoard @X## color code support 1.35 also added @Variable@ Support added /S to load stats data from file Update 12/12/90 - My mistake, I didn't realize @X00 saved 1.36 the color and @XFF restored it. Works now. Also made prompts return to start of line when cleared (like PCBoard does) & QON now changes @MORE@ & @PAUSE@ into @WAIT@ Gary Meeker (Versions 1.31 to 1.36) Update 4/20/91 - Change set cursor routine. If new position 1.37 is off the screen use the last row or column. Added switch to not include PCB code. Corrected syntax display. Modified CLS to honor protected (/P) lines Modified /T to returned status switches. Modified /P to accept * to mean current row-1. Update 9/19/91 - Allow ESC[p to clear all KB reassigns and 1.38 ESC[np to clear single key reassign. ie: ESC[65p will reset ascii 65 to it's default [A] Update 01/01/92 - Added XON/XOFF to control @X## color codes 1.39 added support for finding relocated copies. This should allow LOADHI under DOS 5 or QRAM/QEMM (all changes marked with ;^ - Gary Meeker) (Was added to my 1.37 version 01/09/91 but now incorporated into this version as 1.39 to include changes by Wayne Mingee) Update 05/15/93 - Added additional support for PCBoard 15.0 1.3J @Variable:nnx@ and new variables (@DELAY:nn@, @POS:nn@, @RFILES@, @RBYTES@, @SFILES@, @SBYTES@, @BICPS@, @RCPS@, @SCPS@, @CARRIER@) and some 14.5a variables not previously supported (@FREESPACE@, @LMR@, @OFFHOURS@, @WHO@) Gary Meeker (Versions 1.39 to 1.3j) Update 06/06/93 - Fixed problem with (:nnR) Right & (:nnC) Center 1.3K justification when variable was full length and var needed no padding. Fixed delay which should have been in tenths of seconds not seconds. (fixes supplied by Chester Loving) Update 11/17/93 - Added additional support for PCBoard 15.1 1.3L @ALIAS@, @DIRNAME@, @LOGDATE@, @LOGTIME@, @NUMCONF@, @NOCHAR@, @YESCHAR@, @DIRNUM@, @FBYTES@, @FFILES@, @FNUM@, @MAXFILES@, @MAXBYTES@, @PWXDAYS@, @PWXDATE@, @RATIOBYTES@, @RATIOFILES@, @BYTECREDIT@, @FILECREDIT@, and @ENV=@ (Note: The environment is not actually checked and the fixed data 'Env_Data' will be displayed). Fixed problem using :nnx with Ratios. Gary Meeker (Versions 1.39 to 1.3l) The files contained in this Archive should be: ------------------------------------------------------------------------------- Name Length Date CRC-32 ANSI.DOC 11438 11-17-93 ???????? Documentation for ANSI.COM (This file) ANSI.ASM 130513 11-17-93 8fa4bc52 Assembly source code for ANSI.COM ANSI.COM 3709 11-17-93 b43a985f Executable version for Non-Sysop use ANSIPCB.COM 6756 11-17-93 b07d1f85 Executable version for Sysop use (includes @codes@ translation) ANSICOM.ASM 6191 11-17-93 f16dc90d Assembly source code for ANSICOM.SYS ANSICOM.SYS 959 11-17-93 8ea68f30 Sample data file for loading into ANSI.COM's buffer area for translation of PCBoard @codes@ FILE_ID.DIZ 326 11-17-93 ca83ef06 Description file ------------------------------------------------------------------------------- To assemble, first change the line in ANSI.ASM: PCB equ 1 ;$ 1 = if PCB code wanted to 1 or 0 depending on whether you want PCBoard support code or not. Then use the following: MASM ANSI; LINK ANSI; EXE2BIN ANSI ANSI.COM; MASM ANSICOM; LINK ANSICOM; EXE2BIN ANSICOM ANSICOM.SYS;