mirror of https://github.com/wwarthen/RomWBW.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
915 lines
30 KiB
915 lines
30 KiB
.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
|
|
|