General Information on CP/M
CP/M File References
CP/M Line Editing and Output Control
CP/M Built-In  Commands
CP/M Transient Commands
Non-CP/M       Commonly used utility commands.
CP/M STAT      Command
CP/M PIP       Command
CP/M ED        Command	(use only if you do not have a word processor!)
CP/M ASM       Command
CP/M LOAD      Command
The UNLOAD     Command
CP/M DDT       Command (also applies to SID.COM version)
The ZSID       Command (also called ZDT on some systems)
CP/M SYSGEN    Command
CP/M SUBMIT and XSUB Commands
CP/M BDOS -- Basic I/O Operations      (Technically heavy stuff)
CP/M BDOS -- Basic Disk Operations     (Technically heavy stuff)
CP/M File Types
CP/M BIOS Jump Vector		       (Technically heavy stuff)
:General Information on CP/M
    The term "CP/M" comes from Control
			       Program for
			       Microcomputers.
    A control program is sometimes called an operating system by computer
people.  In this outline, the term "operating system" will be used in
preference to "control program": but you should realize that the terms
mean exactly the same thing.
    Simply stated, a operating system is the program that MUST be in
your computer to bring it to life.  It is the first program you load into
your computer.	You do that by "booting-up", or "booting". The "booting-up"
process transfers the operating system program from a storage device (usually
a disk) into your computer's random access memory (RAM).
    The operating system program will work with your other programs such as
MBASIC to perform many essential functions. We will not go into those right
now, but just be aware that all those other programs are useless without an
operating system.

    An important feature of CP/M is that it can easily be altered to run on
any microprocessor which uses the Intel 8080, Intel 8085, or Zilog Z80. This
means that about three humdred "brands" of microcomputer can run CP/M.
    IBM, Hewlett-Packard, Xerox, and Wang have joined Apple (with special
card), TRS-80, Zenith, and many others in offering CP/M.  CP/M is by far the
most widely used operating system for small computers. This has resulted in
a larger selection of ready-to-run programs than any other alternative.
    Until 1984 or 1985, CP/M seems to be in a dominant position so far as
small computers are concerned. There are one or two candidates which may
begin to displace CP/M by the mid-eighties, but that is far from certain.

     CP/M has a few "big brothers" like MP/M and CP/M-86 which provide
support for more complicated operating arrangements such as when more than
one person is using the computer at the same time.

     Digital Research, Pacific Grove, California is the creator and
supplier of CP/M.  They provide the following manuals for detailed 
information about CP/M.  These manuals are geared to the technically
skilled reader, and should not be attempted by beginners.
	  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.
:CP/M File References

     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 
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.
:CP/M Line Editing and Output Control

     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    CP/M system reboot (warm start).
	  Ctrl-Z    End input from the console (used in PIP and ED).

     Other control functions affect console output --

	  Ctrl-P    Copy all subsequent console output to the currently-
		    assigned list device (LST:).  Output is sent to both
		    the list device and the console device until the next
		    Ctrl-P is typed.
	  Ctrl-S    Stop the console output temporarily.  Program execution
		    and output continue when the next character is typed
		    at the console.  Typing Ctrl-C returns control to CP/M.

     Input lines can generally be up to 255 characters in length.  They are 
not acted upon until the carriage return key is typed.
:CP/M Built-In Commands
	  ERA  afn  -- The  ERA  (erase) command  removes  files  from	the 
	       currently logged-in disk.
	  DIR  afn -- The DIR (directory) command causes the names  of	all 
	       files which satisfy the ambiguous file name afn to be listed 
	       on  the console device.	 All files are listed if no afn  is 
	       given.
	  REN  ufn1=ufn2  -- The  REN (rename) command allows the  user  to 
	       change the names of files on disk.  The file satisfying ufn2 
	       is changed to ufn1.
	  SAVE	n ufn -- The SAVE command places n pages (256-byte  blocks) 
	       onto disk from the TPA and names this file ufn.
	  TYPE	ufn -- The TYPE command displays the contents of the  ASCII 
	       source  file  ufn  on the currently logged-in  disk  at	the 
	       console device.
	  USER n -- Upon cold boot,  the user is automatically logged in to 
	       User Area 0,  which is compatable 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.
:CP/M Transient Commands

     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  subsequent 
		    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).

	  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.
::UTILIT.HLP
:CP/M STAT Command

     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

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

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:

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

	  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


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
:CP/M PIP Command
     PIP  (Peripheral  Interchange  Program) is the  CP/M utility program
which allows you to make copies of files (as from one disk to another), to
combine two or more files into one file, and to display a printable file on
your display screen or printer.

	  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.
			 NOTE: This method of using PIP allows you to change
			       the SOURCE diskette (NOT the destination)
			       after transferring one file, and before
			       beginning the transfer of the next.

	  PIP  cmnd	 Engage PIP,  execute  the specified  command,	and 
			 return to CP/M, ie. to the A> prompt.

     The form of each command line in PIP is --
	  destination = source#1, source#2, source#3, ..., source#n

     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:


     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.
     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.
:CP/M ED Command  NOTE: Use a word processor intead of ED!!!!!

     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.  If you are a genius, or extremely persistent, you may become
good enough to do some of the functions that a word processor such as Magic
Wand or Wordstar provide easily!!! Good Luck.

     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)
	  ^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
	  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)
:CP/M ASM Command.  NOTE: MAC.COM may be freely substituted for ASM.COM.

     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.
:CP/M LOAD Command

     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'.

     The LOAD command is the second step of the two step process of creating
an executable .COM file from an .ASM assembly sourse file. The output of the
ASM.COM (or MAC.COM) program is a filename ending in .HEX.  That .HEX file
is the input to this LOAD.COM program.	The output of this LOAD.COM program
is an executable file with a filename ending in .COM.

:The UNLOAD Command

     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'.

Some versions of the UNLOAD.COM program allow you to specify an optional
start address after the filename. The default is the normal 0100 hex.

:CP/M DDT Command.  NOTE, Later versions of this may be called SID.COM.

     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.

     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.

     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
:The ZSID Command.  NOTE: This program is called ZDT on some systems.

     ZSID is a Z80 version of DDT.  It is invoked by typing --

	  ZSID

     The  commands  recognized by ZSID 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 ZSID 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.
	  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.
	  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.
	  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.
:CP/M SYSGEN Command

     The  SYSGEN program creates a bootable diskette. The diskette must have
been previously "formatted" and thus contain a directory.

     It is invoked by typing

	  SYSGEN

     Once invoked,  the user is prompted through the session.  Refer to the 
CP/M Manual for further details.
:CP/M SUBMIT and XSUB Commands. See also the /.COM commonly used utility.

     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
:CP/M BDOS -- Basic I/O Operations
     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.

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)


:CP/M BIOS -- Basic Disk Operations

     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

     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

     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

     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

:CP/M File Types
     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	 Asm listing or other print-ready
     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

	NOTE:	Any filetype containing the letter "Q" has been
		squeezed/compressed, and must be run through the
		USQ.COM program before being used.

:CP/M BIOS Jump Vector

     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)

     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
Translate  sector number in Reg C  using 
				    table pointed to by DE; physical 