[net.sources] NANSI.SYS docs

dpz@topaz.RUTGERS.EDU (David P. Zimmerman) (05/11/86)

nansi	- enhanced MS-DOS ansi console driver

SYNOPSIS
	Include in \config.sys the line
		device=nansi.sys

DESCRIPTION
	Nansi.sys is a console driver which understands ANSI control
	sequences. It has several advantages over ANSI.SYS (the driver
	supplied with DOS):
	1. It supports new escape sequences (see below).
	2. It provides MUCH faster output under certain conditions.
	3. It supports the 43-line mode of the EGA.
	4. The darned bell is now 1/4 second instead of 1/2 second long.

	What a console driver does:
	When you, for example, type
		C:> type foo.txt
	COMMAND.COM opens the file foo.txt, reads it, and writes it to
	the console driver, which puts it up on the screen.

	Both ansi.sys and nansi.sys use IBM Video BIOS to control the screen.
	However, nansi.sys bypasses BIOS if the screen is in a text mode; this
	allows much faster operation under certain conditions.

	While putting text up on the screen, (n)ansi.sys keeps a lookout for
	the escape character (chr(27), known as ESC); this character signals
	the start of a terminal control sequence.
	Terminal control sequences follow the format
		ESC [ param; param; ...; param cmd
	where
		ESC	is the escape character chr$(27).
		[	is the left bracket character.
		param	is an ASCII decimal number, or a string in quotes.
		cmd	is a case-specific letter identifying the command.
	Usually, zero, one, or two parameters are given.  If parameters
	are omitted, they usually default to 1; however, some commands
	(KKR and DKOCT) treat the no-parameter case specially.
	Spaces are not allowed between parameters.

	For example, both ESC[1;1H and ESC[H send the cursor to the home
	position (1,1), which is the upper left.

	Either single or double quotes may be used to quote a string.
	Each character inside a quoted string is equivalent to one numeric
	parameter.  Quoted strings are normally used only for the Keyboard
	Key Reassignment command.

Control Sequences
	The following table lists the sequences understood by nansi.sys.
	Differences between nansi.sys and the standard ansi.sys are marked
	with a vertical bar (|).

Cursor Positioning
Short	Long name		Format		Notes
CUP	cursor position		ESC[y;xH	Sets cursor position.
HVP	cursor position		ESC[y;xf	Same as CUP; not recommended.
CUU	cursor up		ESC[nA		n = # of lines to move
CUD	cursor down		ESC[nB
CUF	cursor forward		ESC[nC		n = # of columns to move
CUB	cursor backward		ESC[nD
DSR	Device Status, Report!	ESC[6n		Find out cursor position.
CPR	Cursor Position report	ESC[y;xR	Response to DSR, as if typed.
SCP	Save Cursor Position	ESC[s		Not nestable.
RCP	Restore Cursor Position ESC[u

Editing
ED	Erase in Display	ESC[2J	Clears screen.
EL	Erase in Line		ESC[K	Clears to end of line.
IL  |	Insert Lines		ESC[nL	Inserts n blank lines at cursor line.
DL  |	Delete Lines		ESC[nM	Deletes n lines including cursor line.
ICH |	Insert Characters	ESC[n@	Inserts n blank chars at cursor.
DCH |	Delete Characters	ESC[nP	Deletes n chars including cursor char.


Mode-Setting
SGR	Set Graphics Rendition	ESC[n;n;...nm	See character attribute table.
SM	Set Mode		ESC[=nh		See screen mode table.
RM	Reset Mode		ESC[=nl		See screen mode table.
IBMKKR	Keyboard Key Reass.	ESC["string"p
	The first char of the string gives the key to redefine; the rest
	of the string is the key's new value.
	To specify unprintable chars, give the ASCII value of the char
	outside of quotes, as a normal parameter.
	IBM function keys are two byte strings; see the IBM Basic manual.
	For instance, ESC[0;";dir a:";13;p redefines function key 1 to
	have the value "dir a:" followed by the ENTER key.
      | If no parameters given, all keys are reset to their default values.

DKOCT | Output char translate	ESC[n;ny
      | When first char is encountered in output request, it is replaced with
      | the second char.  This might be useful for previewing text before
      | sending it to a printer with a funny print wheel.
      | If no parameters are given, all chars are reset to normal.


Character Attributes
	The Set Graphics Rendition command is used to select foreground
	and background colors or attributes.
	When you use multiple parameters, they are executed in sequence, and
	the effects are cumulative.
	   Attrib code		Value
		0		All attributes off (normal white on black)
		1		Bold
		4		Underline
		5		Blink
		7		Reverse Video
		8		Invisible (but why?)
		30-37		foregnd blk/red/grn/yel/blu/magenta/cyan/white
		40-47		background

Screen Modes
	The IBM BIOS supports several video modes; the codes given in the
	BIOS documentation are used as parameters to the Set Mode command.
      | (In bitmap modes, the cursor is simulated with a small blob (^V).)
	    Mode Code		Value
		0		text 40x25 Black & White
		1		text 40x25 Color
		2		text 80x25 Black & White
		3		text 80x25 Color
		4		bitmap 320x200 4 bits/pixel
		5		bitmap 320x200 1 bit/pixel
		6		bitmap 640x200 1 bit/pixel
		7		(cursor wrap kludge)
		13 (EGA)	bitmap 320x200 4 bits/pixel ?
		14 (EGA)	bitmap 640x200 4 bits/pixel
		16 (EGA)	bitmap 640x350 4 bits/pixel
	Mode 7 is an unfortunate kludge; Setting mode 7 tells the cursor
	to wrap around to the next line when it passes the end of a line;
	Resetting mode 7 tells the cursor to not wrap, but rather stay put.
      | If your computer has the Enhanced Graphics Adaptor, modes between
      | 8 and 15 are also supported; see the EGA BIOS for info.
      | The EGA also lets you use a shorter character cell in text modes
      | in order to squeeze 43 lines of text out of the 25-line text modes.
      | To enter 43 line mode, set the desired 25-line text mode (0 to 3),
      | then Set Mode 43.  For instance: ESC[=3h ESC[=43h.
      | To exit 43 line mode, set the desired 25-line text mode again.
      | Nansi.sys ignores mode 43 unless there is an EGA on your computer.

Faster Output
      | Any program that sets the console to RAW mode, and buffers its
      | output properly, can achieve extremely high screen update speeds in
      | return for giving up the special functions of the keys ^C, ^S, and ^P.
      | See IOCTL in the MS-DOS 3.x Technical Reference for more info.
	Also, a small improvement in speed may be noticed with some
	programs that use the DOS console in normal mode, as this driver
	efficiently implements the (standard but undocumented) INT 29h
	most-favored-device putchar used by DOS.

EXAMPLES
	See the file setraw.doc for Macro Assembler, Lattice C,
	and Microsoft C routines for entering and leaving raw mode.

BUGS
	Insert and delete character do not work in graphics modes.
	Graphics mode writing is slow.
	The simulated cursor in graphics mode slows down single-char
	writes by a factor of 3; it should be disable-able.
	Does not support erase-to-end-of-screen and other useful functions.

Version
	This version, 2.2, created February 1986.  Problems should
	be reported to Daniel Kegel, 1-60 CIT, Pasadena, CA 91126
	(or, after June 1986, 2648 169th Ave SE, Bellevue, Wa. 98008).
	Your suggestions for improvement would be most welcome.

NOTE
	This program may be distributed for educational and personal use
	only.  Commercial use is verboten; get in touch with the author.

FILES
	nansi.doc	- this file
	nansi.hex	- compiled version  <Not supported by INFO-IBMPC>
		Convert nansi.hex into nansi.sys with the following commands
		(you'll end up with 256 extra bytes at end, but who cares?):
			debug			# Run DOS debugger
			N nansi.hex		# Load the hex file
			L
			N nansi.sys		# Write it out
			W
			Q			# Quit- back to DOS.
	nansi.cat	- concatenated sources
		nansi	- makefile- shows how to assemble & link
		nansi.asm	- device driver guts
		nansi_d.asm	- definitions
		nansi_p.asm	- ANSI parameter grabber
		nansi_f.asm	- ANSI function handlers
		nansi_i.asm	- device driver init routine
	setraw.cat	- concatenated examples
		setraw.asm	- for assembly programs
		setraw.msc	- for Microsoft C programs
		setraw.lc	- for Lattice C programs
		rawtest.lc	- example for Lattice C only
-- 
Name: David P. Zimmerman	Nickname: "Davidann" (don't ask)
Cute quote: " (well, *I* think it's cute!)
Arpa: dzimmerman@blue.rutgers.edu
Uucp: ...{harvard, allegra, seismo}!topaz!dpz