65   :General Information on CP/M
.break
     CP/M   is	a  monitor  control  program  for  microcomputer   software 
development  which  uses IBM-compatible flexible disks (floppy	disks)	for 
mass  storage.	 Using a microcomputer mainframe based on Intel's  8080  or 
Zilog's Z80 microprocessor, CP/M provides a general environment for program 
construction,  storage,  and editing, along with assembly and program debug 
facilities.   An important feature of CP/M is that it can be easily altered 
to  execute  with  any computer configuration which uses an Intel  8080  or 
Zilog Z80 Microprocessor and has at least 20K bytes of main memory with  up 
to eight IBM-compatable diskette drives.
     The  CP/M monitor provides access to programs through a  comprehensive 
file  management  system.    The  file	subsystem  supports  a	named  file 
structure,  allowing dynamic allocation of file space as well as sequential 
and  random  file  access.   Using this file system,  up  to  128  distinct 
programs can be stored in both source and machine-executable form.
     Digital  Research,  the designer of CP/M,	has provided a set of  nine 
manuals which describe the use and operation of CP/M in detail.
.pause
.break
     These manuals are:
	  1.  An Introduction to CP/M Features and Facilities
	  2.  ED:  A Context Editor for the CP/M Disk System
	  3.  ASM:  CP/M Assembler User's Manual
	  4.  DDT:  CP/M Dynamic Debugging Tool User's Manual
	  5.  CP/M 1.4 Interface Guide
	  6.  CP/M 1.4 System Alteration Guide
	  7.  CP/M 2.0 User's Guide
	  8.  CP/M 2.0 Interface Guide
	  9.  CP/M 2.0 System Alteration Guide
     As the reader can see,  CP/M supports a context editor,  an  assembler 
(Intel-compatable),  and  a  debugger system.	These are available in	the 
basic CP/M package.   There is a large variety of other software  available 
which  can  run under CP/M with little or no modification.   Such  software 
includes  several  assemblers (both 8080 and  Z80),  a	symbolic  debugger, 
several  high-level  languages (including FORTRAN  IV  {compiler},  BASIC-E 
{translator},  CBASIC {translator}, many interpretive BASICs, ALGOL, FOCAL, 
and  C),  and  several special-purpose applications programs (such as  text 
formatting systems and accounting systems).
     This HELP File addresses itself specifically to the CP/M 2.x Operating 
Systems.
.pause
.end
66   :CP/M File References
.break
     A	file reference identifies a particular file or group of files on  a 
particular  disk  attached to CP/M.   These file references can  be  either 
unambiguous  (ufn)  or	ambiguous (afn).   An  unambiguous  file  reference 
uniquely identifies a single file, while an ambiguous file reference may be 
satisfied by a number of different files.

     An  unambiguous file reference is an exact name of the specified file.  
It consists of up to eight characters in the file name and three characters 
in the file type.  An unambiguous file reference is of the form --

	       pppppppp.sss

     The  characters used in specifying an unambiguous file  reference	may 
not contain any of --

	       < > . , ; : = ? * [ ]

     An  ambiguous file reference is used for directory search and  pattern 
matching.   The  form  of  an  ambiguous file reference is  similar  to  an 
unambiguous reference, except the symbol '?' may be interspersed throughout 
the file reference.   In various commands throughout CP/M,  the '?'  symbol 
.pause
.break
matches  any  character of a file name in the '?' position.   For  example, 
X?Y.C?M  will match XZY.COM and X3Y.CEM.   The '*' symbol is used to  match 
all characters of a file name or file type.   For example, *.COM will match 
XZY.COM and HELP.COM, while HELP.* will match HELP.COM and HELP.HLP.
.pause
.end
67   :CP/M Line Editing and Output Control
.break
     The following are the line editing functions supported by CP/M --

	  rubout    Delete and echo the last character typed at the
		    console.
	  Ctrl-H    Delete   the   last  character  typed;   Backspace	one 
		    character; CRT-oriented
	  Ctrl-U    Delete the entire line typed at the console.
	  Ctrl-X    Delete the entire line typed at the console;  Backspace 
		    to the beginning of the current line; CRT-oriented.
	  Ctrl-R    Retype current command line:  types a "clean line"
		    following character deletion with rubouts.
	  Ctrl-E    Physical end of line:  carriage is returned, but line
		    is not sent until the carriage return key is depressed.
	  Ctrl-M    Terminates input (carriage return).
	  Ctrl-J    Terminates current input (line feed); CRT-oriented
	  Ctrl-C    This is used in CP/M to re-initialize the system.
		    Anytime you change diskettes in a drive, you should
		    type control-C so that the operating system will know
		    that a diskette was changed.  
	  Ctrl-Z    End input from the console (used in PIP and ED).
.pause
.break
     Other control functions affect console output --

	  Ctrl-P    This code is used to tell CP/M that characters sent
		    to the screen should also be sent to the printer.
		    This will remain in effect until you press control-P
		    a second time to turn off the routing to the printer,
		    or until you reset the system.

	  Ctrl-S    This is used to pause or "freeze" the characters that
		    are scrolling by on the screen.  Pressing any other
		    character will resume output (scrolling) to the screen.

     Input lines can generally be up to 255 characters in length.  They are 
not acted upon until the carriage return key is typed.
.pause
.end
68   :CP/M Built-In Commands
.break
			     The ERA Command

 This command is used to erase files from a diskette. The format is:
			      ERA FILENAME
Where FILENAME is any valid CP/M filename.  The filename may be
prefixed by a drive designator (i.e. ERA B:FILENAME ).	If no
designator is given then the currently logged drive will be used. 

EXAMPLE  To erase a file called "LETTER.TXT" from drive B, you
would type:
			    ERA B:LETTER.TXT
.pause
.break
			The DIR Command

 This command displays a list of all files on a diskette.
 Its format is:
			    DIR x:
 Where x: is an optional drive designator (A:, B:, etc.). If no disk
drive is specified, then CP/M will give you a listing of the files
on the drive that is currently logged.

EXAMPLE
 To get a listing of all the files on drive B, you would type:
			    DIR B:
.pause
.break
			The REN Command

 You may change the name that you have given to a file with the REN
command.  To use the REN command, you would type:

			   REN NEWNAME=OLDNAME
EXAMPLE To change the name of the file "LETTER.TXT" on drive B
to the new name "MEMO.TXT," you would type:

		       REN B:MEMO.TXT=B:LETTER.TXT



			The SAVE Command

 The SAVE command places n pages (256-byte blocks) onto disk from the
TPA and names this file ufn.
The form of the SAVE command is:
			SAVE xx FILE.COM
.pause
.break
		       The TYPE Command

 The TYPE command is used in CP/M to display a file on the screen.
To use the TYPE command, enter the following:

			 TYPE FILENAME

 This will cause the file to be  sent to the screen of the terminal.
When the file is being displayed, you may press CONTROL-S to stop
the scrolling.	To continue scrolling, press any other character.
By preceding the TYPE command with a CONTROL-P, the output will
also be sent to the printer.

EXAMPLE  To view a file called "LETTER.TXT" on drive B, enter:

		       TYPE B:LETTER.TXT
 This command will only work to display text files.  Displaying
non-text files such as files ending in "COM," may cause your
terminal to do strange things.
.pause
.break
			The USER Command

 Upon cold boot, the user is automatically logged in to User Area 0,
which is compatible with CP/M 1.4 directories.	The USER command allows
the user to move to another logical area within the same directory; areas
are numbered 0-15.  The ERA, DIR, REN, SAVE, and TYPE commands apply to
the current User Area.
.pause
.end
69   :CP/M Transient Commands
.break
     The CP/M standard transient commands are --

	  STAT	    List the number of bytes of storage and data on the
		    currently logged-in disk, provide statistical 
		    information about particular files, and display or
		    alter device assignment.
	  PIP	    Load the Peripheral Interchange Program for later
		    disk file and peripheral transfer operations.
	  ED	    Load and execute the CP/M text editor program.
	  SUBMIT    Submit a file of commands for batch processing.
	  XSUB	    Used in conjunction with SUBMIT, transfers all buffered 
		    console input from CON: to the SUBMIT File.
	  ASM	    Load  the  CP/M assembler and  assemble  the  specified 
		    program from disk.
	  LOAD	    Load  the file in Intel "hex" machine code	format	and 
		    produce  a file in machine executable form which can be 
		    loaded into the TPA (this loaded program becomes a	new 
		    command under the CCP).
.pause
.break
	  DDT	    Load the CP/M debugger into the TPA and execute it.
	  DUMP	    Dump the contents of a file in hex.
	  SYSGEN    Create a new CP/M system diskette.
	  MOVCPM    Regenerate	the  CP/M system  for a  particular  memory 
		    size.
.pause
.end
70   :Physical Device Assignments for ARIES-1
.break
     Logical Device	      Physical Device

	  CON:		      TTY: Model 43 Teletype
			      CRT: Hazeltine 1500 CRT
			      BAT: CRT and Modem
			      UC1: In=CRT, Out=CRT and Modem
	  RDR:		      TTY: Model 43 Teletype
			      PTR: Modem
			      UR1: CRT and Modem w/CRT Output
			      UR2: CRT and Modem
	  PUN:		      TTY: Model 43 Teletype
			      PTP: Modem
			      UP1: CRT and Modem
			      UP2: CRT and Modem
	  LST:		      TTY: Model 43 Teletype
			      CRT: Hazeltine 1500 CRT
			      LPT: Modem
			      UL1: CRT and Modem
.pause
.end
71   :CP/M STAT Command
.break
     The STAT Command takes any of the following forms --

STAT	  Calculate the storage remaining on all active drives and print  a 
	  message like
	       x: R/W, SPACE: nnnK  -- if disk is Read/Write
	       x: R/O, SPACE: nnnK  -- if disk is Read Only
STAT x:   Calculate the storage remaining on the specified drive and print
	       BYTES REMAINING ON x: nnnK
.pause
.break
STAT x:afn [$S]
	  Scan the specified files on the specified drive (x: is optional), 
	  and  list  all files which satisfy the unambiguous  reference  in 
	  alphabetical	order with storage requirements.   A table like the 
	  following is generated --

	       Size Recs Bytes Ext Acc
	      sssss rrrr  nnnk	ee a/b d:pppppppp.sss

	  where
	       sssss -- number of virtual 128-byte records in file
		    This field is display if the optional $S is given
	       rrrr -- number of 128-byte records in each extent of the file
	       nnnK -- number of bytes (in K, K=1024) allocated to the file
	       ee -- number of 16K extensions
	       a/b -- access mode of file; R/O or R/W
	       d:pppppppp.sss -- drive name (d may be A, B, C, D) and file
			 name
.pause
.break
STAT x:=R/O
	  Set the specified drive to Read Only.   This is cleared by a warm 
	  boot.  When a disk is Read Only, the message
	       BDOS ERR ON x: READ ONLY
	  will appear if there is an attempt to write to it.
STAT VAL:
	  Summarize the status commands.  STAT VAL: will print the list --

	       Temp R/O Disk:  d:=R/O
	       Set Indicator:  d:filename.typ $R/O $R/W $SYS $DIR
	       Disk Status  :  DSK: d:DSK:
	       User Status  :  USR:
	       Iobyte Assign:
	       CON: = TTY:  CRT:  BAT:	UC1:
	       RDR: = TTY:  PTR:  UR1:	UR2:
	       PUN: = TTY:  PTP:  UP1:	UP2:
	       LST: = TTY:  CRT:  LPT:	UL1:
.pause
.break
STAT DEV:
	  Display  the	current logical to physical  device  mapping.	For 
	  example, the list may appear as --

	       CON: = CRT:	   PUN: = PTP:
	       RDR: = UR1:	   LST: = TTY:

STAT d:afn [$R/O or $R/W or $SYS or $DIR]
	  Set  the  various  permanent	file  indicators.    R/O=Read/Only, 
	  R/W=Read/Write, SYS=System, DIR=Non-System

STAT ld1=pd1, ld2=pd2, ...
	  Change  the  logical	to physical  device  assignments.   Logical 
	  device ld1 is assigned to physical device pd1,  etc.	 The  valid 
	  logical device names are --

	       CON:	 The system console device
	       RDR:	 The paper tape reader device
	       PUN:	 The paper tape punch device
	       LST:	 The output list device
.pause
.break
	  The valid physical device names are --

	       TTY:	 Slow speed output device (teletype)
	       CRT:	 High speed output device (cathode ray tube)
	       BAT:	 Batch processing (CON: input is RDR:,	CON: output 
			 is LST:)
	       UC1:	 User-defined console
	       PTR:	 Paper tape reader
	       PTP:	 Paper tape punch
	       UR1:	 User-defined reader #1
	       UR2:	 User-defined reader #2
	       UP1:	 User-defined punch #1
	       UP2:	 User-defined punch #2
	       LPT:	 Line printer
	       UL1:	 User-defined list device #1
.pause
.break
STAT d:DSK:
	  List	the characteristics of the disk named "d:";  if "d:" is not 
specified, list the characteristics of all active disks.  A sample listing:

	       d: Drive Characteristics
	   65536: 128 Byte Record Capacity
	    8192: Kilobyte Drive Capacity
	     128: 32  Byte Directory Entries
	       0: Checked  Directory Entries
	    1024: Records/ Extent
	     128: Records/ Block
	      58: Sectors/ Track
	       2: Reserved Tracks

STAT USR:
	  List	the  User  Number the user is currently  in  and  the  User 
Numbers  which	have  files  on the currently  addressed  disk.   A  sample 
listing:
	       Active User : 0
	       Active Files: 0 1 3
.pause
.end
72   :CP/M PIP Command
.break
     PIP  (Peripheral  Interchange  Program) is the  CP/M  transient  which 
implements the basic media conversion operations necessary to load,  print, 
punch,	copy,  and  combine  disk files.   PIP is initiated by one  of	the 
following forms --

	  PIP		 Engage  PIP,  prompt the user with '*',  and  read 
			 command lines directly from the console.  PIP used 
			 in  this  way is exited by either typing an  empty 
			 command line (just a carriage return) or a  Ctrl-C 
			 as the first character of the line.
	  PIP  cmnd	 Engage PIP,  execute  the specified  command,	and 
			 return to CP/M.

     The form of each command line in PIP is --

	  destination = source#1, source#2, source#3, ..., source#n
.pause
.break
     The general forms of PIP command lines are --

	  x:=y:afn	 Copy  all  files  satisfying afn from drive  y  to 
			 drive x.   'y' may be omitted,  and,  if  so,	the 
			 currently logged-in drive is selected.
	  x:ufn=y:	 Copy  the file given by ufn from y to x.   'x' may 
			 be omitted,  and,  if so,  the currently logged-in 
			 drive is selected.
	  x:afn=y:afn	 Like the above, but x and/or y may be omitted; the 
			 default   drive  is  selected	for   the   omitted 
			 drive(s).
	  ld=pd 	 Copy  from  the specified physical device  to	the 
			 specified  logical device.   Valid logical devices 
			 are --
			      CON:, RDR:, PUN:, LST:
			 Valid physical devices are --
			      TTY:, CRT:, UC1:, PTR:, PTP:, UR1:, UR2:,
			      UP1:, UP2:, LPT:, UL1:
.pause
.break
There are many different ways to use PIP. The following examples illustrate
the most common forms

	A>PIP B:=A:FILENAME - Makes a duplicate copy on drive B, of
			      the file "FILENAME" on drive A.

	A>PIP C:NEWNAME=B:FILENAME  - Makes a duplicate copy on drive
				      C, of the file "FILENAME" on
				      drive B,	calling it "NEWNAME"
				      on drive C.

	A>PIP B:=A:*.* - Copies all files from drive A to drive B.

.pause
.break
     Additional device names which may be used in PIP commands are --

	  NUL:	    Send 40 Nulls (ASCII 0) to the device.
	  EOF:	    Send a CP/M End of File character (ASCII Ctrl-Z).
	  INP:	    Special PIP input source to be patched (see manual).
	  OUT:	    Special  PIP  output  destination to  be  patched  (see 
		    manual).
	  PRN:	    Same as LST:,  but	tabs are expanded at  every  eighth 
		    character position, lines are numbered, and page ejects 
		    are inserted every 60 lines with an initial eject.


     The  user	can  also specify one or more PIP  parameters  enclosed  in 
square brackets separated by zero or more blanks.  These parameters are --

     B	  Block mode  transfer.   Data is buffered by PIP until an ASCII X-
	  Off character (Ctrl-S) is received from the source device.
     Dn   Delete characters  which extend past column n in the transfer  of 
	  data to the destination from the character source.
     E	  Echo all transfer operations to the console.
     F	  Filter (remove) form feeds from the file.
.pause
.break
     Gn   Get File from User Number n (n in the range 0 - 15)
     H	  Hex data transfer.  All data is checked for proper Intel hex file 
	  format.
     I	  Ignore ':00' records in the transfer of Intel hex format file.
     L	  Translate upper case to lower case alphabetics.
     N	  Add line numbers to each line transferred to the destination.
     O	  Object file (non-ASCII) transfer.  Ignore End of File.

     Pn   Include page ejects at every n lines.
     Qs^Z Quit	copying  from the source device or file when the  string  s 
	  (terminated by Ctrl-Z) is encountered.
     R	  Read system files
     Ss^Z Start copying from the source file when the string s is seen.
     Tn   Expand tabs to every nth column.
     U	  Translate lower case to upper case alphabetics.
     V	  Verify that data has been copied correctly.
     W	  Write over R/O files without console interrogation
     Z	  Zero the parity bit on input for each ASCII character.
.pause
.end
73   :CP/M ED Command
.break
     The  ED  Program  is the CP/M  system  context  editor,  which  allows 
creation and alteration of ASCII files.   Complete details are given in the 
user's manual.

     The following are the error indicators given by ED --

	  ?    Unrecognized Command
	  >    Memory buffer full
	  #    Cannot apply command the number of times specified
	  O    Cannot open LIB file in R command


     The following are the control characters recognized by ED --

	  ^C	    System reboot
	  ^E	    Physical <CR> <LF> (not entered in command)
	  ^H	    Character delete (backspace)
	  ^I	    Logical tab
	  ^J	    New line (line feed)
	  ^L	    Logical <CR> <LF> in search and substitute strings
	  ^M	    New line (carriage return)
.pause
.break
	  ^U	    Line delete
	  ^X	    Line delete and backspace
	  ^Z	    String terminator
	  Rubout    Character delete
	  Break     Discontinue command


     The following are the commands recognized by ED --

	  nA	    Append lines
	  +/- B     Beginning/Bottom of buffer
	  +/- nC    Move character positions
	  +/- nD    Delete characters
	  E	    Exit
	  nFs^Z     Find string
	  H	    End edit, close and reopen files
	  Is^Z	    Insert characters
	  nJ	    Place strings in juxtaposition
	  +/- nK    Kill (delete) lines
	  +/- nL    Move down/up lines
.pause
.break
	  nM	    Macro definition
	  O	    Return to original file
	  +/- nP    Move and print pages
	  Q	    Quit with no file changes
	  R	    Read library file

	  nSs1^Zs2^Z
		    Substitute s2 for s1
	  +/- nT    Type lines
	  +/- U     Translate lower to upper case if U; none if -U
	  +/- V     Engage/disengage line numbers (verify)
	  0V	    Print memory buffer info (free/total usage)
	  nW	    Write lines
	  nX	    Transfer n lines to X$$$$$$$.LIB
	  0X	    Empty X$$$$$$$.LIB
	  nZ	    Sleep
	  +/- n     Move and type (+/- nLT)
	  n:	    Move to absolute line (V engaged)
	  :n	    Process from current line to specified line (V engaged)
.pause
.end
74   :CP/M ASM Command
.break
     The ASM Command loads and executes the CP/M 8080 assembler.   It is of 
the form --

	  ASM filename.xyz

where

	  filename  ... is the name of the file 'filename.ASM' to assemble
	  x	    ... designates the disk name which contains the source
	  y	    ... designates the disk name to contain the hex file
			 (y=Z suppresses generation of the hex file)
	  z	    ... designates the disk name to contain the print file
			 (y=X lists on CON:, y=Z suppresses listing)

     Refer to the ASM Manual for further details.
.pause
.end
75   :CP/M LOAD Command
.break
     The LOAD Command reads the file specified, which is assumed to contain 
Intel hex format machine code and produces a memory image file which can be 
subsequently executed (converts .HEX to .COM files).  It is of the form --

	  LOAD filename

where filename is the name of the file 'filename.HEX'.
.pause
.end
76   :The UNLOAD Command
.break
     The UNLOAD Command does the reverse of the LOAD Command -- it converts 
COM files to HEX files.  It is of the form --

	  UNLOAD filename

where filename is the name of the file 'filename.COM'.
.pause
.end
77   :CP/M DDT Command
.break
     The  DDT  Program allows dynamic interactive testing and debugging  of 
programs generated in the CP/M environment.  It is invoked by --

	  DDT
	  DDT filename.HEX
	  DDT filename.COM

where 'filename' is the name of the program to be loaded or tested.

     DDT responds to the normal CP/M input line editing characters.


   DDT responds to the following commands --

     As   Perform inline assembly starting at the specified address s.
     D	  Display memory from the current address for 16 display lines.
     Ds   Display memory from address s for 16 display lines.
     Ds,f Display memory from address s to address f.
     Fs,f,c
	  Fill memory from start address s to final address f with byte c.
.pause
.break
     G	  Start execution at the current value of the PC.
     Gs   Start execution at the specified address s.
     Gs,b Start execution  at the specified address s and set a  breakpoint 
	  at the address b.
     Gs,b,c
	  Same as above with breakpoints at b and c.
     G,b  Start execution at the current value of the PC with breakpoint b.
     G,b,c
	  Same as above with breakpoints at b and c.
     If   Insert a file name f into the default FCB.
     L	  List 12 lines of disassembled code from the current address.
     Ls   List 12 lines from the specified address s.
     Ls,f List lines of disassembled code from s to f.
     Ms,f,d
	  Move the block from address s to f to destination at address d.
     R	  Read file in FCB into memory at 100H.
     Rb   Read file in FCB into memory with offset b from 100H.
     Ss   Set (examine and alter) memory starting at address s.
     T	  Trace the next instruction.
     Tn   Trace the next n instructions.
.pause
.break
     U	  Untrace -- like Trace, but intermediate steps are not displayed.
     X	  Examine all registers and flags.
     Xr   Examine specified registers or flag, where r may be --
	       C    Carry flag
	       Z    Zero flag
	       M    Minus (sign) flag
	       I    Interdigit Carry flag
	       A    Accumulator
	       B    BC Reg pair
	       D    DE Reg pair
	       H    HL Reg pair
	       S    Stack pointer
	       P    PC
.pause
.end
78   :The ZDT Command
.break
     ZDT is a Z80 version of DDT.  It is invoked by typing --

	  ZDT

     The  commands  recognized by ZDT are input in  single-character  input 
mode.	No  input line editing is done,  and each command expects an  exact 
input.	 All byte values are exactly two characters,  and all addresses are 
exactly four characters.


     The commands recognized by ZDT are --

	  A bbbb
	       Enter ASCII characters into memory from keyboard starting at 
	       address bbbb.
	  B
	       Warm Boot -- Return to CP/M.
	  C bbbb eeee nnnn
	       Compare	memory from address bbbb to address eeee  to  block 
	       starting at nnnn.
.pause
.break
	  D bbbb eeee
	       Dump memory from bbbb to eeee.
	  E bbbb eeee <ASCII string>
	       Search  for  ASCII string from bbbb to eeee.   String is  at 
	       most 16 characters.  String is terminated by <CR>.
	  F bbbb eeee <hex string>
	       Search  for  hex  string  from  bbbb  to  eeee.	 String  is 
	       terminated by <CR>.
	  G
	       Go to next breakpoint.
	  H aaaa nnnn
	       Hex add and subtract.  Computes aaaa+nnnn and aaaa-nnnn.
	  I nn
	       Input.  Prints value at port nn.
	  J nnnn
	       Jump to and execute at location nnnn.
	  K
	       Keyboard echo.
	  L filename.typ nnnn
	       Loads specified disk file into location nnnn.
.pause
.break
	  M bbbb eeee nnnn
	       Move block from bbbb to eeee-1 to nnnn.
	  N aaaa
	       Enter offset aaaa for loading.
	  O nn dd
	       Output byte dd to port nn.
	  P bbbb
	       Input hex into memory from keyboard starting at bbbb.   <sp> 
	       advances pointer, <rub> or <del> backs pointer.
	  Q bbbb eeee
	       Dumps from bbbb to eeee in ASCII.
	  R n ll tt ss bbbb
	       Read block of data from disk n of length ll (256-byte pages) 
	       starting at track tt and sector ss placing the data at bbbb.
	  S bbbb eeee
	       Disassembly (symbolic dump) from bbbb to eeee.
	  T bbbb eeee
	       Destructive memory test from bbbb to eeee-1.
	  U bbbb
	       Set breakpoint at bbbb.
.pause
.break
	  V
	       Display all currently-set breakpoints.
	  W n ll tt ss bbbb
	       Write on disk n the data at bbbb for a length of ll starting 
	       at track tt, sector ss.	ll is in 256-byte pages.
	  X
	       Display registers.
	  Z bbbb eeee dd
	       Zero or set memory from bbbb to eeee-1 with byte dd.
.pause
.end
79   :CP/M SYSGEN Command
.break
		      The SYSGEN Command

 This command is used to place a copy of CP/M in its reserved place on a
diskette.  Anytime you want to create a diskette that can be used in drive A
of your computer, you must use SYSGEN to place a copy of CP/M on the diskette
first.  This is because the CP/M operating system always expects to find a
copy of itself on the diskette in drive A.  It is invoked by typing:
			  SYSGEN
 Once invoked, the user may be expected to see the following prompts:
	A>SYSGEN

	CP/M System Generation Program

	Source Drive (or CR to skip): a
	Source on A, then type CR


	Destination Drive (or CR to abort): b
	Destination on B, then type CR


	Destination Drive (or CR to abort): 
.pause
.end
80   :CP/M SUBMIT and XSUB Commands
.break
     The  SUBMIT  command allows CP/M commands to be batched  together	for 
automatic processing.  The form of this command is

	  SUBMIT ufn parm1 parm2 ... parmn

     The ufn given in the SUBMIT command must be the filename (not type) of 
a  file which exists on the currently logged-in disk with an  assumed  file 
type of '.SUB'.  Refer to the CP/M Manual for further details.
     The  XSUB	command extends the power of  the  SUBMIT  facility.   When 
specified  as the first line of a SUBMIT File,	it self-relocates  directly 
below the CCP.	 All subsequent SUBMIT command lines are processed by XSUB, 
so  that  programs  which read buffered console input  (BDOS  Function	10) 
receive input directly from the SUBMIT File.   While XSUB is in memory,  it 
prints	the message "(xsub active)" on each warm boot.	 An example of	the 
use of XSUB to display memory from 100H to 1FFH is --
		    XSUB
		    DDT
		    D100,1FF
		    G0
.pause
.end
81   :CP/M BDOS -- Basic I/O Operations
.break
     Function and Number      Input Parameters	  Output Parameters

     System Reset      0      None		  None
     Read Console      1      None		  ASCII Char in A
     Write Console     2      ASCII Char in E	  None
     Read Reader       3      None		  ASCII Char in A
     Write Punch       4      ASCII Char in E	  None
     Write List        5      ASCII Char in E	  None
     Direct Con I/O    6      ASCII Char in E	  I/O Status in A if E=0FFH
     Get I/O Status    7      None		  I/O Status in A
     Put I/O Status    8      I/O Status in E	  None
     Print Buffer      9      Address of string   None
			       terminated by $
			       in DE
     Read Buffer      10      Address of Read	  Read Buffer is filled
			       Buffer in DE
     Console Ready    11      None		  LSB of A is 1 if char
						   ready
*All function numbers are passed in Reg C.
.pause
.break
I/O Status Byte --

     Value     Bits 6&7  Bits 4&5  Bits 2&3  Bits 0&1

       00      CON:=TTY: RDR:=TTY: PUN:=TTY: LST:=TTY:
       01	    CRT:      PTR:	PTP:	  CRT:
       10	    BAT:      UR1:	UP1:	  LPT:
       11	    UC1:      UR2:	UP2:	  UL1:

Read Buffer --

     Byte      Function

       1       Maximum Buffer Length
       2       Current Buffer Length (returned value)
     3-n       Data (returned values)
.pause
.end
82   :CP/M BIOS -- Basic Disk Operations
.break
     Function and Number      Input Parameters	  Output Parameters

     Return Version # 12      None		  Version Info in HL
						  H=0 CP/M, H=1 MP/M
						  L=00 CP/M 1.x, 2x 2.x
     Init BDOS	      13      None		  None
     Log-In Disk      14      Value in Reg E	  None
			       A=0, B=1, C=2,
			       D=3
     Open File	      15      Address of FCB	  Byte address of FCB
			       in DE		   if found or 0FFH if not
     Close File       16      Address of FCB	  Byte address of FCB
			       in DE		   if found or 0FFH if not
     Search for File  17      Address of FCB	  Byte address of FCB (0-3)
			       in DE		   if found or 0FFH if not
     Search for Next  18      Address of FCB	  Byte address of next FCB
			       in DE		   if found or 0FFH if not
     Delete File      19      Address of FCB	  Byte address of FCB (0-3)
			       in DE		   if found or 0FFH if not
.pause
.break
     Function and Number      Input Parameters	  Output Parameters
     Read Next Record 20      Address of FCB	  0=successful read
			       in DE		  1=read past EOF
						  2=reading random data
     Write Next Rec   21      Address of FCB	  0=successful write
			       in DE		  1=error in extending
						  2=end of disk data
						  255=no more dir space
     Make File	      22      Address of FCB	  Byte address of FCB or
			       in DE		   255 if no more dir space
     Rename FCB       23      Address of FCB	  Byte Address of Dir entry
			       in DE		   or 255 if no match
     Return Log Code  24      None		  Login vector in HL
     Read Drive No    25      None		  Number of logged-in drive
						   (A=0, B=1, C=2, D=3)
     Set DMA Address  26      Address of 128	  None
			      byte buffer in DE
.pause
.break
     Function and Number      Input Parameters	  Output Parameters

     Get Alloc Vect   27      None		  Allocation  Vect Addr  in 
						   HL
     Write Prot Disk  28      None		  None
     Get R/O Vect     29      None		  HL=R/O Vect Val
     Set File Attrib  30      Ptr to FCB in DE	  Dir code in A
     Get Disk Parms   31      None		  HL=DPB Address
     Set/Get Usr Code 32      E=0FFH (get)/Code   A=Current code (get)/no
			       (set)		   value (set)
     Read Random      33      DE=FCB addr	  A=return code
						  1=reading unwritten data
						  2=(not used)
						  3=can't close curr ext
						  4=seek to unwritten ext
						  5=(not used)
						  6=seek past end of disk
.pause
.break
     Function and Number      Input Parameters	  Output Parameters

     Write Random     34      DE=FCB addr	  A=return code
						  1=reading unwritten data
						  2=(not used)
						  3=can't close curr ext
						  4=seek to unwritten ext
						  5=dir overflow
						  6=seek past end of disk
     Compute File Siz 35      DE=FCB addr	  Random Rec Field set
						   to file size
     Set Random Rec   36      DE=FCB addr	  Random Rec Field set


*All function numbers are passed in Reg C
.pause
.end
83   :CP/M File Types
.break
     AIN   ALGOL 60 Intermediate   ALG	 ALGOL 60 Source File
     ASM   Assembler Source File   BAK	 Backup File
     BAS   BASIC Source File	   C	 C Source File
     COB   COBOL Source File	   COM	 "Command" File
     FOR   FORTRAN IV Source File  HEX	 Intel "hex" code file
     HLP   HELP File		   INT	 BASIC Intermediate File
     LST   Listing File 	   MAC	 MACRO-80 Source File
     PAS   PASCAL Source File	   PRN	 Assembler Listing File
     REL   Relocatable Module	   SRC	 PASCAL/MT Source File
     SUB   SUBMIT File		   SYM	 Symbol File
     TC    Tiny-C Source File	   TFS	 TFS Source File
     TXT   Text File		   $$$	 Temporary File
.pause
.end
84   :CP/M BIOS Jump Vector
.break
     The  following is a table representing the entry points into the  CP/M 
BIOS of the major routines accessable to the user --


     Routine   Relative Offset	   Comment

     BOOT	    00H 	   Cold Start
     WBOOT	    03H 	   Warm Start
     CONST	    06H 	   Console Status
				    Reg A = 00 if no char ready
				    Reg A = FF if char ready
     CONIN	    09H 	   Console char in (Reg A)
     CONOUT	    0CH 	   Console char out (Reg C)
     LIST	    0FH 	   List out (Reg C)
     PUNCH	    12H 	   Punch out (Reg C)
     READER	    15H 	   Reader in (Reg A)
.pause
.break
     Routine   Relative Offset	   Comment

     HOME	    18H 	   Move to track 00
     SELDSK	    1BH 	   Select disk given by Reg C (A=0,B=1,...)
     SETTRK	    1EH 	   Set	track  address	given  by  Reg	C 
				      (0...76)
     SETSEC	    21H 	   Set	sector	address given  by  Reg	C 
				      (1...26)
     SETDMA	    24H 	   Set subsequent DMA address (RP B&C)
     READ	    27H 	   Read track/sector (block)
     WRITE	    2AH 	   Write track/sector (block)
     LISTST	    2DH 	   List Device Status
				    Reg A = 00 if no char ready
				    Reg A = FF if char ready
     SECTRAN	    30H 	   Translate  sector number in Reg C  using 
				    table pointed to by DE; physical sector 
				    number returned in Reg L
.pause
.end
