.bp
.op
.cs 5
.mt 5
.mb 6
.pl 66
.ll 65
.po 10
.hm 2
.fm 2
.he CP/M Operating System Manual              1.6  Transient Commands
.ft                                1-%
.pc 1
.pp 5
It is emphasized that the physical device names might not actually
correspond to devices that the names imply.  That is, you can 
implement the PTP: device as a cassette write operation.  The exact
correspondence and driving subroutine is defined in the BIOS portion of
CP/M.  In the standard distribution version of CP/M, these devices correspond
to their names on the Model 800 development system.
.pp
The command,
.sp
.ti 8
STAT VAL:
.sp
produces a summary of the available status commands, resulting in 
the output:
.sp
.in 8
.nf
Temp R/O Disk d:$R/O
Set Indicator: filename.typ $R/O $R/W $SYS $DIR
Disk Status: DSK: d:DSK
Iobyte Assign:
.sp
.in 0
.fi
which gives an instant summary of the possible STAT commands and shows the
permissible logical-to-physical device assignments:
.sp
.in 8
.nf
CON: = TTY: CRT: BAT: UC1:
RDR: = TTY: PTR: UR1: UR2:
PUN: = TTY: PTP: UP1: UP2:
LST: = TTY: CRT: LPT: UL1:
.fi
.in 0
.sp
The logical device to the left takes any of the four physical assignments
shown to the right.  The current logical-to-physical mapping is displayed by
typing the command:
.sp
.ti 8
STAT DEV:
.sp
This command produces a list of each logical device to the left and
the current
corresponding physical device to the right.  For example, the list might
appear as follows:
.sp
.in 8
.nf
CON: = CRT:
RDR: = UR1:
PUN: = PTP:
LST: = TTY:
.fi
.in 0
.sp
The current logical-to-physical device assignment is changed by typing a STAT
command of the form:
.sp
.ti 8
STAT ld1 = pd1, ld2 = pd2, ... , ldn = pdn
.sp
where ld1 through ldn are logical device names and pd1 through pdn are
compatible physical device names.  For example, ldi and pdi appear on the
same line
in the VAL: command shown above.  The following example shows valid STAT
commands that change the
current logical-to-physical device assignments:
.sp
.in 8
.nf
STAT CON:=CRT:
STAT PUN:=TTY:, LST:=LPT:, RDR:=TTY:
.in 0
.fi
.pp
The command form,
.sp
.ti 8
STAT d:filename.typ $S
.sp
where d: is an optional drive name and filename.typ is an unambiguous or
ambiguous filename, produces the following output display format:
.sp 2
.in 8
.nf
Size        Recs      Bytes          Ext Acc
.sp
   48        48         6K       1 R/O A:ED.COM
   55        55        12K       1 R/O (A:PIP.COM)
65536       128        16K       2 R/W A:X.DAT
.in 0
.fi
.sp 2
where the $S parameter causes the Size field to be displayed.  Without the
$S, the Size field is skipped, but the remaining fields are displayed.  The
Size field lists the virtual file size in records, while the Recs field
sums the number of virtual records in each extent.  For files constructed
sequentially, the Size and Recs fields are identical.  The Bytes field
lists the actual number of bytes allocated to the corresponding file.  The
minimum allocation unit is determined at configuration time; thus, the number
of bytes corresponds to the record count plus the remaining unused space in
the last allocated block for sequential files.  Random access files are given
data areas only when written, so the Bytes field contains the only accurate
allocation figure.  In the case of random access, the Size field gives the
logical end-of-file record position and the Recs field counts the logical
records of each extent.  Each of these extents, however, can contain
unallocated holes even though they are added into the record count.
.pp
The Ext field counts the number of physical extents allocated to the file.
The Ext count corresponds to the number of directory entries given to the
file.  Depending on allocation size, there can be up to 128K 
bytes (8 logical extents) directly addressed by a single directory entry.  In a special case,
there are actually 256K bytes that can be directly addressed by a physical
extent.
.pp
The Acc field gives the R/O or R/W file indicator, which you can 
change using the commands shown.  The four command forms,
.sp
.nf
.in 8
STAT d:filename.typ $R/O
STAT d:filename.typ $R/W
STAT d:filename.typ $SYS
STAT d:filename.typ $DIR
.in 0
.fi
.sp
set or reset various permanent file indicators.  The R/O indicator places the
file, or set of files, in a Read-Only status until changed by a subsequent
STAT command.  The R/O status is recorded in the directory with the file so
that it remains R/O through intervening cold start operations.  The R/W
indicator places the file in a permanent Read-Write status.  The SYS
indicator attaches the system indicator to the file, while the DIR command
removes the system indicator.  The filename.typ may be ambiguous or
unambiguous, but files whose attributes are changed are listed at the console
when the change occurs.  The drive name denoted by d: is optional.
.pp
When a file is marked R/O, subsequent attempts to erase or write into the
file produce the following BDOS message at your screen:
.sp
.ti 8
BDOS Err on d: File R/O
.sp
lists the drive characteristics of the disk named by d: that is in the range
A:, B:,...,P:.  The drive characteristics are listed in the 
following format:
.sp
.nf
            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
.fi
.sp
where d: is the selected drive, followed by the total record capacity
(65536 is an eight-megabyte drive), followed by the total capacity listed in
kilobytes.  The directory size is listed next, followed by the checked
entries.  The number of checked entries is usually identical to the directory
size for removable media, because this mechanism is used to detect changed
media during CP/M operation without an intervening warm start.  For fixed
media, the number is usually zero, because the media are not changed without
at least a cold or warm start.
.pp
The number of records per extent determines
the addressing capacity of each directory entry (1024 times 128 bytes, or
128K in the previous example).  The number of records per block shows the
basic allocation size (in the example, 128 records/block times 128 bytes per
record, or 16K bytes per block).  The listing is then followed by the number
of physical sectors per track and the number of reserved tracks.
.pp
For logical
drives that share the same physical disk, the number of reserved tracks can
be quite large because this mechanism is used to skip lower-numbered disk
areas allocated to other logical disks.  The command form
.sp
.ti 8
STAT DSK:
.sp
produces a drive characteristics table for all currently active drives.  The
final STAT command form is
.sp
.ti 8
STAT USR:
.sp
which produces a list of the user numbers that have files on the currently
addressed disk.  The display format is
.sp
.nf
.in 8
Active User:   0
Active Files:  0 1 3
.in 0
.fi
.sp
where the first line lists the currently addressed user number, as set by the
last CCP USER command, followed by a list of user numbers scanned from the
current directory. In this case, the active user number is 0 (default at cold
start) with three user numbers that have active files on the current disk.
The operator can subsequently examine the directories of the other user
numbers by logging in with USER 1 or USER 3 commands, followed by a DIR
command at the CCP level.
.sp 2
.tc         1.6.2  ASM Command
.sh
1.6.2  ASM Command
.qs
.sp
Syntax:
.sp
.ti 8
ASM ufn
.pp
The ASM command loads and executes the CP/M 8080 assembler.  The ufn
specifies a source file containing assembly language statements, where the
filetype is assumed to be ASM and is not specified.  The following ASM
commands are valid:
.sp
.nf
.in 8
ASM X
ASM GAMMA
.in 0
.fi
.sp
The two-pass assembler is automatically executed.  Assembly errors that occur
during the second pass are printed at the console.
.pp
The assembler produces a file:
.sp
.ti 8
X.PRN
.sp
where X is the primary name specified in the ASM command.  The PRN file
contains a listing of the source program with embedded tab characters if
present in the source program, along with the machine code generated for
each statement and diagnostic error messages, if any.  The PRN file is listed
at the console using the TYPE command, or sent to a peripheral device
using PIP (see Section 1.6.4).  Note that the PRN file
contains the original source program, augmented by miscellaneous assembly
information in the leftmost 16 columns; for example, program addresses and
hexadecimal
machine code.  The PRN file serves as a backup for the original
source file.  If the source file is accidentally removed or destroyed, the
PRN file can be edited by removing the leftmost 16 characters
of each line (see Section 2).  This is done by issuing a single editor macro
command.
The resulting file is identical to the original source file and can be
renamed from PRN to ASM for subsequent editing and assembly.  The file
.sp
.ti 8
X.HEX
.sp
is also produced, which contains 8080 machine language in Intel HEX format
suitable for subsequent loading and execution (see Section 1.6.3).  For
complete details of CP/M's assembly language program, see Section 3.
.pp
The source file for assembly is taken from an alternate disk by prefixing the
assembly language filename by a disk drive name.  The command
.sp
.ti 8
ASM B:ALPHA
.sp
loads the assembler from the currently logged drive and processes the source
program ALPHA.ASM on drive B.  The HEX and PRN files are also placed on
drive B in this case.
.he CP/M Operating System Manual              1.6  Transient Commands
.sp 2
.tc         1.6.3  LOAD Command
.sh
1.6.3  LOAD Command
.qs
.sp
Syntax:
.sp
.ti 8
LOAD ufn
.pp 5
The LOAD command reads the file ufn, which is assumed to contain HEX format
machine code, and produces a memory image file that can subsequently be
executed.  The filename ufn is assumed to be of the form:
.sp
.ti 8
X.HEX
.sp
and only the filename X need be specified in the command.  The LOAD command
creates a file named
.sp
.ti 8
X.COM
.sp
that marks it as containing machine executable code.  The file is actually
loaded into memory and executed when the user types the filename X
immediately after the prompting character > printed by the CCP.
.pp
Generally, the CCP reads the filename X following the prompting character and
looks for a built-in function name.  If no function name is found, the CCP
searches the system disk directory for a file by the name
.sp
.ti 8
X.COM
.mb 5
.fm 1
.sp
If found, the machine code is loaded into the TPA, and the program executes.
Thus, the user need only LOAD a hex file once; it can be subsequently
executed any number of times by typing the primary name.  This 
way, you can invent new commands in the CCP.  Initialized disks contain
the transient commands as COM files, which are optionally deleted.  The
operation takes place on an alternate drive if the filename is prefixed
by a drive name.  Thus,
.bp
.mb 6
.fm 2
.sp
.ti 8
LOAD B:BETA
.sp
brings the LOAD program into the TPA from the currently logged disk and
operates on drive B after execution begins.
.sp
.sh
Note:  \c
.qs
the BETA.HEX file must contain valid Intel format
hexadecimal machine code records (as produced by the ASM program, for
example) that begin at 100H of the TPA.  The addresses in the hex records
must be in ascending order; gaps in unfilled memory regions are filled with
zeroes by the LOAD command as the hex records are read.  Thus, LOAD must be
used only for creating CP/M standard COM files that operate in the TPA.
Programs that occupy regions of memory other than the TPA are loaded under
DDT.
.sp 2
.tc         1.6.4  PIP
.sh
1.6.4  PIP
.qs
.sp
.ul
Syntax:
.qu
.sp
.in 8
.nf
PIP
PIP destination=source#1, source#2, ..., source #n
.fi
.in 0
.pp
PIP is the CP/M Peripheral Interchange Program that implements the basic
media conversion operations necessary to load, print, punch, copy, and
combine disk files.  The PIP program is initiated by typing one of the
following forms:
.sp
.nf
.in 8
PIP
PIP command line
.fi
.in 0
.sp
In both cases PIP is loaded into the TPA and executed.  In the 
first form, PIP reads command lines directly from the console, prompted with
the * character, until an empty command line is typed (for example, a single
carriage return is issued by
the operator).  Each successive command line causes some media conversion
to take place according to the rules shown below.
.pp
In the second form, the PIP
command is equivalent to the first, except that the single command line
given with the PIP command is automatically executed, and PIP terminates
immediately with no further prompting of the console for input command
lines.  The form of each command line is
.sp
.ti 8
destination = source#1, source#2, ..., source#n
.sp
where destination is the file or peripheral device to receive the 
data,
and source#1, ..., source#n is a series of one or more files or devices
that are copied from left to right to the destination.
.pp
When multiple files are given in the command line (for example, 
n>1), the individual
files are assumed to contain ASCII characters, with an assumed CP/M
end-of-file character (CTRL-Z) at the end of each file (see the O parameter
to override this assumption).  Lower-case ASCII alphabetics are internally
translated to upper-case to be consistent with CP/M file and device name
conventions.  Finally, the total command line length cannot exceed 255
characters.  CTRL-E can be used to force a physical carriage return for lines
that exceed the console width.
.pp
The destination and source elements are unambiguous references to CP/M source
files with or without a preceding disk drive name.  That is, any file can be
referenced with a preceding drive name (A: through P:) that defines the
particular drive where the file can be obtained or stored.  When the drive
name is not included, the currently logged disk is assumed.  The
destination file can also appear as one or more of the source files, in
which case the source file is not altered until the entire concatenation is
complete.  If it already exists, the destination file is removed if the
command line is properly formed.  It is not removed if an error condition
arises.  The following command lines, with explanations to the 
right, are
valid as input to PIP:
.sp 2
.in 31
.ti -23
X=Y                    Copies to file X from file Y, where X and Y are
unambiguous filenames; Y remains unchanged.
.sp
.ti -23
X=Y,Z                  Concatenates files Y and z and copies to file X,
with Y and Z unchanged.
.sp
.ti -23
X.ASM=Y.ASM,Z.ASM      Creates the file X.ASM from the concatenation of the
Y and Z.ASM files.
.sp
.ti -23
NEW.ZOT=B:OLD.ZAP      Moves a copy of OLD.ZAPP from drive B to the currently
logged disk; names the file NEW.ZOT.
.sp
.ti -23
B:A.U=B:B.V,A:C.W,D.X  Concatenates file B.V from drive B with C.W from drive
a and D.X from the logged disk; creates the file A.U on drive b.
.in 0
.sp
.pp
For convenience, PIP allows abbreviated commands for transferring files
between disk drives.  The abbreviated PIP forms are
.sp
.in 8
.nf
PIP d:=afn
PIP d\d1\u=d\d2\u:afn
PIP ufn = d\d2\u:
PIP d\d1\u:ufn = d\d2\u:
.fi
.in 0
.sp
The first form copies all files from the currently logged disk that satisfy
the afn to the same files on drive d, where d = A...P.  The second form is
equivalent to the first, where the source for the copy is drive 
d\d2\u, where d\d2\u = A...P.  The third form is equivalent to the command PIP
d\d1\u:ufn=d\d2\u:ufn which copies the file given by ufn from drive
d\d2\u to the file ufn on drive d\d1\u:.  The fourth form is equivalent to
the third, where the source disk is explicitly given by d\d2\u:.
.pp
The source and destination disks must be different in all of these cases.
If an afn is specified, PIP lists each ufn that satisfies the afn as it
is being copied.  If a file exists by the same name as the destination file,
it is removed after successful completion of the copy and replaced by the
copied file.
.pp
The following PIP commands give examples of valid disk-to-disk copy operations:
.sp 2
.in 24
.ti -16
B:=*.COM        Copies all files that have the secondary name COM to
drive B from the current drive.
.sp
.ti -16
A:=B:ZAP.*      Copies all files that have the primary name ZAP to
drive A from drive B.
.sp
.ti -16
ZAP.ASM=B:      Same as ZAP.ASM=B:ZAP.ASM
.sp
.ti -16
B:ZOT.COM=A:    Same as B:ZOT.COM=A:ZOT.COM
.sp
.ti -16
B:=GAMMA.BAS    Same as B:GAMMA.BAS=GAMMA.BAS
.sp
.ti -16
B:=A:GAMMA.BAS  Same as B:GAMMA.BAS=A:GAMMA.BAS
.in 0
.sp
.pp
PIP allows reference to physical and logical devices that are attached to the
CP/M system.  The device names are the same as given under the STAT command,
along with a number of specially named devices.  The following is 
a list of logical devices given in the STAT command
.sp
.in 8
.nf
CON: (console)
RDR: (reader)
PUN: (punch)
LST: (list)
.fi
.in 0
.sp
while the physical devices are
.sp
.in 8
.nf
TTY: (console), reader, punch, or list)
CRT: (console, or list), UC1: (console)
PTR: (reader), UR1: (reader), UR2: (reader)
PTP: (punch), UP1: (punch), UP2: (punch)
LPT: (list), UL1: (list)
.fi
.in 0
.sp
The BAT: physical device is not included, because this assignment is used
only to indicate that the RDR: and LST: devices are used for console
input/output.
.pp
The RDR, LST, PUN, and CON devices are all defined within the BIOS portion of
CP/M, and are easily altered for any particular I/O system.  The current
physical device mapping is defined by IOBYTE; see Section 6 for a discussion
of this function.  The destination device must be capable of 
receiving data, for example, data cannot be sent to the punch, and the
source devices must be
capable of generating data, for example, the LST: device cannot be read.
.pp
The following list describes additional device names that can be used in
PIP commands.
.sp 2
.in 5
.ti -2
o NUL: sends 40 nulls (ASCII 0s) to the device.  This can be issued
at the end of punched output.
.sp
.ti -2
o EOF: sends a CP/M end-of-file (ASCII CTRL-Z) to the destination
device (sent automatically at the end of all ASCII data transfers through PIP).
.sp
.ti -2
o INP: is a special PIP input source that can be patched into the PIP
program.  PIP gets the input data character-by-character, by CALLing location
103H, with data returned in location 109H (parity bit must be zero).
.sp
.ti -2
o OUT: is a special PIP output destination that can be patched into the
PIP program.  PIP CALLs location 106H with data in register C for each
character to transmit.  Note that locations 109H through
1FFH of the PIP memory image are not used and can be replaced by special
purpose drivers using DDT (see Section 4).
.sp
.ti -2
o PRN: is the same as LST:, except that tabs are expanded at every eighth
character position, lines are numbered, and page ejects are inserted every
60 lines with an initial eject (same as using PIP options [t8np]).
.in 0
.sp
.pp
File and device names can be interspersed in the PIP commands.  In each case,
the specific device is read until end-of-file (CTRL-Z for ASCII files, and
end-of-data for non-ASCII disk files).  Data from each device or file are
concatenated from left to right until the last data source has been read.
.pp
The destination device or file is written using the data from the source
files, and an end-of-file character, CTRL-Z, is appended to the result
for ASCII files.  If the destination is a disk file, a temporary file is
created ($$$ secondary name) that is changed to the actual filename only
on successful completion of the copy.  Files with the extension COM are
always assumed to be non-ASCII.
.pp
The copy operation can be aborted at any time by pressing any key on the
keyboard.  PIP responds with the message ABORTED to
indicate that the operation has not been completed.  If any operation is
aborted, or if an error occurs during processing, PIP removes any pending
commands that were set up while using the SUBMIT command.
.pp
PIP performs a special function if the destination is a disk file with type
HEX (an Intel hex-formatted machine code file), and the source is an
external peripheral device, such as a paper tape reader.  In this case, the
PIP program checks to ensure that the source file contains a properly formed
hex file, with legal hexadecimal values and checksum records.
.pp
When an
invalid input record is found, PIP reports an error message at the console
and waits for corrective action.  Usually, you can open the reader
and rerun a section of the tape (pull the tape back about 20 inches).  When
the tape is ready for the reread, a single carriage return is typed at the
console, and PIP attempts another read.  If the tape position cannot be
properly read, continue the read by typing a return following the
error message, and enter the record manually with the ED program after
the disk file is constructed.
.pp
PIP allows the end-of-file to
be entered from the console if the source file is an RDR: device.  In
this case, the PIP program reads the device and monitors the keyboard.  If
CTRL-Z is typed at the keyboard, the read operation is terminated normally.
.pp
The following are valid PIP commands:
.sp 2
.in 24
.ti 8
PIP LST: = X.PRN
.sp
Copies X.PRN to the LST device and
terminates the PIP program.
.sp
.ti 8
PIP
.sp
Starts PIP for a sequence of 
commands.  PIP prompts with *.
.sp
.ti 8
*CON:=X.ASM,Y.ASM,Z.ASM
.sp
Concatenates three ASM files and copies to
the CON device.
.sp
.ti 8
*X.HEX=CON:,Y.HEX,PTR:
.sp
Creates a HEX file by reading the CON
until a CTRL-Z is typed, followed by data from Y.HEX and PTR until
a CTRL-Z is encountered.
.sp
.ti 8
PIP PUN:=NUL:,X.ASM,EOF:,NUL:
.mb 4
.fm 1
.sp
Sends 40 nulls to the punch device; copies the X.ASM file to the punch,
followed by an end-of-file, CTRL-Z, and 40 more null characters.
.sp
.ti 8
(carriage return)
.sp
A single carriage return stops PIP.
.in 0
.bp
.pp
You can also specify one or more PIP parameters, enclosed in left and
right square brackets, separated by zero or more blanks.  Each parameter
affects the copy operation, and the enclosed list of parameters must
immediately follow the affected file or device.  Generally, each parameter
can be followed by an optional decimal integer value (the S and Q parameters
are exceptions).  Table 1-4 describes valid PIP parameters.
.sp 2
.ce
.sh
Table 1-4.  PIP Parameters
.ll 60
.in 5
.nf
.sp
Parameter                      Meaning
.fi
.mb 6
.fm 2
.sp
.in 17
.ti -10
B         Blocks mode transfer.  Data are buffered by PIP until an ASCII x-off
character, CTRL-S, is received from the source device.  This allows transfer
of data to a disk file from a continuous reading device, such as a cassette
reader.  Upon receipt of the x-off, PIP clears the disk buffers and returns
for more input data.  The amount of data that can be buffered depends on the
memory size of the host system.  PIP issues an error message if the
buffers overflow.
.sp
.ti -10
Dn        Deletes characters that extend past column n in the transfer of data
to the destination from the character source.  This parameter is generally
used to truncate long lines that are sent to a narrow printer or
console device.
.sp
.ti -10
E         Echoes all transfer operations to the console as they are being
performed.
.sp
.ti -10
F         Filters form-feeds from the file.  All embedded form-feeds are
removed.  The P parameter can be used simultaneously to insert new form-feeds.
.sp
.ti -10
Gn        Gets file from user number n (n in the range 0-15).
.sp
.ti -10
H         Transfers HEX data.  All data are checked for proper Intel hex file
format.  Nonessential characters between hex records are removed during the
copy operation.  The console is prompted for corrective action in case
errors occur.
.sp
.ti -10
I         Ignores :00 records in the transfer of Intel hex format 
file.  The I parameter automatically sets the H parameter.
.bp
.ll 65
.in 0
.ce
.sh
Table 1-4.  (continued)
.ll 60
.in 5
.nf
.sp
Parameter                      Meaning
.fi
.sp
.in 17
.ti -10
L         Translates upper-case alphabetics to lower-case.
.sp
.ti -10
N         Adds line numbers to each line transferred to the destination,
starting at one and incrementing by 1.  Leading zeroes are suppressed, and
the number is followed by a colon.  If N2 is specified, leading zeroes are
included and a tab is inserted following the number.  The tab is expanded if
T is set.
.sp
.ti -10
O         Transfers non-ASCII object files.  The normal CP/M end-of-file is
ignored.
.sp
.ti -10
Pn        Includes page ejects at every n lines with an initial page eject.
If n = 1 or is excluded altogether, page ejects occur every 60 lines.  If
the F parameter is used, form-feed suppression takes place before the new
page ejects are inserted.
.sp
.ti -10
Qs^Z      Quits copying from the source device or file when the 
string s, terminated by CTRL-Z, is encountered.
.sp
.ti -10
R         Reads system files.
.sp
.ti -10
Ss^Z      Start copying from the source device when the string 
s, terminated by CTRL-Z, is encountered.  The S and Q parameters can be used
to abstract a particular section of a file, such as a subroutine.  The
start and quit strings are always included in the copy operation.
.sp
If you specify a command line after the PIP command keyword, the CCP
translates strings
following the S and Q parameters to upper-case.  If you do not 
specify a command line, PIP does not perform the automatic upper-case
translation.
.sp
.ti -10
Tn        Expands tabs, CTRL-I characters, to every nth column during the
transfer of characters to the destination from the source.
.sp
.ti -10
U         Translates lower-case alphabetics to upper-case during the copy
operation.
.bp
.ll 65
.in 0
.ce
.sh
Table 1-4.  (continued)
.ll 60
.in 5
.nf
.sp
Parameter                      Meaning
.fi
.sp
.in 17
.ti -10
V         Verifies that data have been copied correctly by rereading after the
write operation (the destination must be a disk file).
.sp
.ti -10
W         Writes over R/O files without console interrogation.
.sp
.ti -10
Z         Zeros the parity bit on input for each ASCII character.
.in 0
.ll 65
.sp
.pp
The following examples show valid PIP commands that specify parameters in
the file transfer.
.sp 2
.in 24
.ti 8
PIP X.ASM=B:[v]
.sp
Copies X.ASM from drive B to the current drive and verifies that the data were
properly copied.
.sp 2
.ti 8
PIP LPT:=X.ASM[nt8u]
.sp
Copies X.ASM to the LPT: device; numbers each line, expands tabs to every
eighth column, and translates lower-case alphabetics to upper-case.
.sp 2
.ti 8
PIP PUN:=X.HEX[i],Y.ZOT[h]
.sp
First copies X.HEX to the PUN: device
and ignores the trailing :00 record in X.HEX; continues the transfer of data
by reading Y.ZOT, which contains HEX records, including any :00 records
it contains.
.sp 2
.ti 8
PIP X.LIB=Y.ASM[sSUBRI:^z qJMP L3^z]
.sp
Copies from the file Y.ASM into the
file X.LIB.  The command starts the copy when the string SUBR1: has been
found, and quits copying after the string JMP L3 is encountered.
.bp
.ti 8
PIP PRN:=X.ASM[p50]
.sp
Sends X.ASM to the LST: device with
line numbers, expands tabs to every eighth column, and ejects 
pages at every
50th line.  The assumed parameter list for a PRN file is nt8p60; p50
overrides the default value.
.in 0
.sp
.pp
Under normal operation, PIP does not overwrite a file that is set to a
permanent R/O status.  If an attempt is made to overwrite an R/O file, the
following prompt appears:
.sp
.ti 8
DESTINATION FILE IS R/O, DELETE (Y/N)?
.sp
If you type Y, the file is overwritten.  Otherwise, the following response
appears:
.sp
.ti 8
** NOT DELETED **
.sp
The file transfer is skipped, and PIP continues with the next
operation in sequence.  To avoid the prompt and response in the case of R/O
file overwrite, the command line can include the W parameter, as 
shown in this example:
.sp
.ti 8
PIP A:=B:*.COM[W]
.sp
The W parameter copies all nonsystem files to the A drive from the B drive and
overwrites any R/O files in the process.  If the operation involves several
concatenated files, the W parameter need only be included with the last file
in the list, as in this example:
.sp
.ti 8
PIP A.DAT=B.DAT,F:NEW.DAT,G:OLD.DAT[W]
.pp
Files with the system attribute can be included in PIP transfers if the R
parameter is included; otherwise, system files are not 
recognized.  For example, the command line:
.sp
.ti 8
PIP ED.COM=B:ED.COM[R]
.sp
reads the ED.COM file from the B drive, even if it has been
marked as an R/O and system file.  The system file attributes are copied, if
present.
.pp
Downward compatibility with previous versions of CP/M is only maintained if
the file does not exceed one megabyte, no file attributes are set, and the
file is created by user 0.  If compatibility is required with 
nonstandard, for example, double-density versions of 1.4, it 
might be
necessary to select 1.4
compatibility mode when constructing the internal disk parameter block.  See
Section 6 and refer to Section 6.10, which describes BIOS differences.
.bp
.sh
Note:  \c
.qs
to copy files into another user area, PIP.COM must be located in that user
area.  Use the following procedure to make a copy of PIP.COM in another
user area.
.sp 2
.in 8
.nf
USER 0                            Log in user 0.

DDT PIP.COM (note PIP size s)     Load PIP to memory.

GO                                Return to CCP.

USER 3                            Log in user 3.

SAVEs PIP.COM
.fi
.in 0
.sp 2
In this procedure, s is the integral number of memory pages, 256-byte 
segments, occupied
by PIP.  The number s can be determined when PIP.COM is loaded under DDT,
by referring to the value under the NEXT display.  If, for example, the next
available address is 1D00, then PIP.COM requires 1C hexadecimal 
pages, or
1 times 16 + 12 = 28 pages, and the value of s is 28 in the subsequent
save.  Once PIP is copied in this manner, it can be copied to another disk
belonging to the same user number through normal PIP transfers.
.nx onec
