		FIGURE 3.  TALKER HOST PROGRAM COMMANDS
		=======================================

COMMAND FUNCTION
======= ========

CMEM    selects Z8 "C" (code) memory for subsequent DUMPs and SETs.

EMEM    selects Z8 "E" (external) memory for  "       "    "   "

REGS    selects Z8 registers for              "       "    "   "

	Note: many commands leave CMEM selected.  When in doubt, always
	explicitly specify the desired memory space.


DUMP    "address length DUMP" will dump a range of memory or registers.
	"address" and "length" are both hex values; note that they
	PRECEDE the DUMP command word.  BOTH MUST BE GIVEN.  DUMP will
	use the latest CMEM, EMEM, or REGS selection.

	Example:        EMEM 8000 50 DUMP

	>>> LIMITATIONS <<<

	The current version of DUMP will always dump a multiple of 16
	bytes.

	There is, at present, no way to abort a long DUMP.


SET     "address SET"  will examine memory or registers one byte at a
	time, and allow optional modification.  Starting at "address",
	the program displays the address, its contents, and then awaits
	input.  You may either enter
	    <CR>          to leave unchanged & advance to next address
	    number <CR>   to change the contents to "number" and advance
	    Q <CR>        to end the SET command

	This is intended to resemble the Zilog "D address" command.
	Note that the address must PRECEDE the SET command word.  SET
	will use the latest CMEM, EMEM, or REGS selection.  All values
	are given in hex.

	Example:        REGS 0 SET

	>>> LIMITATIONS <<<

	An invalid "number" will abort the SET command.

	In a future incarnation we will allow decimal numbers or Forth
	arithmetic expressions to be used for the SET values.


FILL    "address length value FILL"  fills a range of memory or
	registers with the a byte value.  "address", "length", and
	"value" are all hex values; note that they PRECEDE the FILL
	command word.  ALL MUST BE GIVEN.  FILL will use the latest
	CMEM, EMEM, or REGS selection.

	Example:        CMEM  FF00 100 55 FILL


		    HEX FILE SAVE AND LOAD FUNCTIONS
		    --------------------------------

LOAD    "LOAD filename"  loads the Intel format hex file into the
	Z8's "C" (code) memory.  The address and length are
	obtained from the file.  Note that the filename FOLLOWS the
	LOAD command word.

	Example:        LOAD P4TEST.HEX

	NOTE that LOAD will leave CMEM selected when done.


SAVE    "address length SAVE filename"  saves a range of "C" (code)
	memory as an Intel format hex file.  "address" and "length"
	are both hex values, and must PRECEDE the SAVE command; the
	filename must FOLLOW the SAVE command.  All of these must be
	given.

	Example:        8000 300 SAVE TEST.HEX

	NOTE that SAVE will leave CMEM selected when done.

	"length" must not exceed 7FFF hex (32K bytes minus 1).


			  BREAKPOINT FUNCTIONS
			  --------------------

The talker host program allows ten independent breakpoints to be set
in a target program.  Note that all breakpoint information is kept in
the host PC.

BPn     "address BPn"  (where n is 0 to 9) sets breakpoint 'n'
	at the given Z8 hex address.  If breakpoint 'n' was
	already set somewhere else, the previous breakpoint is
	cleared.

	Example:        807F BP2        (sets breakpoint #2)

	"0 BPn"  (where n is 0 to 9) CLEARS breakpoint 'n'.  If
	breakpoint 'n' was not set, this performs no function.

	Example:        0 BP0           (clears breakpoint #0)

	Implementation notes (Z8): a breakpoint is set by patching a
	3-byte CALL instruction at the given address.  The previous
	contents of those three bytes are saved inside the host PC.
	When the breakpoint is re-set to a new address, or cleared
	(set to address 0), the original three bytes are put back into
	the Z8 memory.

	>>> LIMITATIONS <<<

	The breakpoint address MUST be the address of an instruction
	in the application program.

	Each breakpoint uses 3 bytes in the application program.  So,
	a breakpoint should not be set (for example) on a RET
	instruction if the following two bytes are the beginning of
	another subroutine.  Also, two independent breakpoints cannot be
	set less than 3 bytes apart.

	If you reload a new version program while breakpoints are set,
	the stored 3-byte code fragments may no longer be valid, and
	clearing a breakpoint may patch these old fragments into the
	new program.  To avoid this, use INITBP.


INITBP  clears ALL breakpoints, WITHOUT patching any code fragments
	back into the Z8's memory.

	NOTE that if you do this when breakpoints are set, you will
	leave some breakpoint CALLs patched into the Z8 program,
	with no way to find them and no record of their previous
	contents.  In general, use INITBP only when you are reloading
	the application program.


.BP     prints a list of all the currently set breakpoints, and their
	addresses.

GO      "address GO" starts a Z8 program at the given hex address.
	The host PC will then wait for one of three events:

	1. A breakpoint is encountered.  This causes the message
	   "BREAKPOINT n at: aaaa  flags=dd"  to appear on the
	   screen.  "aaaa" is the address of breakpoint "n", and "dd"
	   is the contents of the flags register when the breakpoint
	   occurred.

	   If a breakpoint CALL is encountered that does not correspond
	   to a currently set breakpoint (such as a breakpoint left
	   in memory by an ill-timed INITBP command), the message is
	   "BREAKPOINT unknown at: aaaa  flags=dd".

	2. A reset (or a JP 0Ch) occurs, restarting the Z8 talker
	   program.  This simply causes the "Ok" message to appear.

	   Actually, ANY character transmitted over the Z8 UART,
	   except an asterisk (*), will cause this to happen.  (The '*'
	   character is the signal of a breakpoint.)

	3. ESC is typed at the PC keyboard.  This aborts the wait loop,
	   but leaves the application program running in the Z8.

RESUME  continues program execution from the location of the last
	encountered breakpoint.  The Z8 flags are restored to the
	values they had when the breakpoint was encountered.

	Note: you must clear the breakpoint before you can RESUME at
	that address.  If you try to RESUME without clearing the
	breakpoint, you will simply trip the breakpoint again,
	instantly!


			   SPECIAL FUNCTIONS
			   -----------------

TERM    activates a "dumb terminal" program over the COM1 serial link.
	The serial port is set at 4800 baud, 8 bits, 1 stop, no parity.
	Characters typed at the PC keyboard are sent over the serial
	port; characters received from the serial port are displayed
	on the PC screen.  Note that this is a "full duplex" terminal:
	characters typed on the keyboard are NOT automatically echoed
	to the screen.

	The ESC key ends the terminal program and returns to the
	talker host program.
