	DPY is a display package for programs.  Its purpose is to provide
an easy interface for programs who wish to produce nicely formatted dis-
plays which update only those characters on the screen which have changed.
The following macros are defined (in DPYDEF.MAR):

	STR$		<descriptor address>
	CHR$		<character address>
	DPY$
	INI$		<flags>
	SIZ$		minlin,maxlin,mincol,maxcol
	TTY$		func
	REF$
	LOC$

These and there arguments are described below:

1.  STR$
	The STR$ call sets up to output an ASCII string to the terminal.
The argument is the descriptor for the string.  If the string overflows
the current window to the write, it will be truncated.  If the current
window has overflowed off the bottom, the string will in reality not
be displayed.  The argument is passed by address (PUSHAQ)

2.  CHR$
	The CHR$ call outputs a single ASCII character, which is its argument.
	The argument is passed by value (PUSHL)
3.  DPY$
	This call is called at the end of an update cycle.  Until it is
called, nothing is actually output to the terminal.  This call checks which
characters have been updated by the STR$ and CHR$ calls between the last
DPY$ call and this one and changes only those characters on the screen.

4.  INI$
	The INI$ call must be called before all other calls to DPY.  It
initializes the terminal data base.  There is one argument which can
take several forms:

	a.  If the argument is -1, DPY will use the setting of the terminal
	    (determined by $GETCHN) if the terminal is set /VT52 or
	    /VT100, or ask for the terminal type if it is not.

	b.  If the argument is between 0 and the maximum type of terminal
	    known to DPY, it will assume the terminal is of that type.
	    The terminal types are DPY$C_xxx constants defined by the
	    $DPYDEF macro in DPYDEF.MAR.

	c.  If the argument is neither of the above, it is assumed to be
	    the address of a terminal descriptor block (created with the
	    TRMDEF macro from DPYDEF.MAR).

5.  SIZ$
	This call has four arguments:  MINLIN, MAXLIN, MINCOL, and MAXCOL.
These aruments specify the minimum and maximum limits of a "window" on the
screen, and are useful for dividing up the screen into smaller displays which
do not encroach upon each other.  The arguments are passed by value (PUSHL).
The numbers are 1-based, 0 signifies the mininum defined value for the
terminal being run on; -1 implies the maximum.

6.  TTY$
	This call takes one argument by value, which is the function code.
It forces output to the terminal immediately, bypassing the update algorithm.
The function codes are defined by the $DPYDEF macro and are of the form
DPY$C_TTY_xxxx.

7.  REF$
	This call may be used in place of the DPY$ call at the end of the
update cycle.  It forces all characters on the screen to be updated and is
handy if the screen has glitched or a message has been sent to the terminal.

8.  LOC$
	This call takes the address of a quadword in which the current screen
co-ordinates are returned in the form:

		.LONG	line,column

These numbers are zero-based.

Note that DPY does NOT use the terminal independent screen package,
and hence its data base must be configured for the terminals you
have if they do not already exist.  This is done with the TRMDEF macro
(also in DPYDEF.MAR).  Alternatively, an individual program can have
the terminal defined in it (see the description of the INI$ call above).
The following terminals are defined currently:

	Name (as input to INI$)		Terminal type

	VT52				DEC VT52
	VT100				DEC VT100
	I100				Infoton I100
	HZ1500				Hazeltine 1500
	ADM3A				Lear-Siegler ADM 3A
	VT100D				Alternative to VT100; same as VT100
					but uses no direct addressing
	HP2645				Hewlett-Packard 2645
	LA120				DEC LA-120
