mirror of
https://github.com/open-simh/simtools.git
synced 2026-01-20 09:55:21 +00:00
931 lines
44 KiB
Plaintext
931 lines
44 KiB
Plaintext
PUTR V2.01
|
||
FILE TRANSFER PROGRAM
|
||
Copyright (C) 1995-2001 by John Wilson
|
||
All rights reserved
|
||
Release date: 05-Sep-2001
|
||
|
||
PUTR is a copyrighted but freely distributable utility for
|
||
transferring files between various file systems and various
|
||
media. It is named after PUTR.SAV (Peripheral Utility Transfer
|
||
Routines), the utility which performs the same function under
|
||
the DEC TSS/8.24 operating system for the PDP-8.
|
||
|
||
This program is a companion to the D Bit "Ersatz-11" PDP-11
|
||
emulation package, which emulates a broad range of PDP-11 CPU
|
||
and peripheral models at greatly increased speed. A demo
|
||
version (with reduced features) is available for free download,
|
||
it may be used for 30-day commercial evaluation or unlimited
|
||
hobby use. See www.dbit.com for information. PUTR is generally
|
||
compatible with other emulators and coprocessors as well, and
|
||
can transfer files between PCs and real PDP-11s and PDP-8s using
|
||
a variety of media. Multiple foreign volumes can be mounted at
|
||
once, and files can be copied directly between them (or within a
|
||
single foreign volume) in one step without having to do separate
|
||
extract and insert operations using the PC disk as intermediate
|
||
storage.
|
||
|
||
The file systems currently fully supported are RT-11,
|
||
RSTS/E, DOS/BATCH, XXDP+, OS/8 (and OS/78 etc.), PUTR (TSS/8
|
||
DECtape utility), and PC-DOS. PUTR can also read Files-11 ODS-1
|
||
file systems (i.e. disks from RSX-11M, RSX-11M-PLUS, IAS, and
|
||
P/OS) and TSS/8.24 file systems. COS-310 disks have the same
|
||
structure as OS/8 disks, however the text file format is
|
||
different and is currently not supported by PUTR. COS-310
|
||
binary files may be transferred the same as OS/8 binary files.
|
||
|
||
All file systems other than PC-DOS must be logically
|
||
mounted and assigned a logical device name before use. This is
|
||
done with the MOUNT command. PUTR is mainly intended to work on
|
||
logical devices contained in disk image files (normally a
|
||
block-by-block copy of the foreign disk), but it also supports
|
||
raw SCSI disks (through an ASPI driver), DEC TU58 tape drives
|
||
(plugged into a COM port), RX50 (including a double-sided
|
||
variant) and RX33 floppy disks or RX01/02/03 26-sector workalike
|
||
disks mounted on a 1.2 MB drive, and RX24, RX23, and RX26 720
|
||
KB/1.44 MB/2.88 MB disks on an appropriate 3.5" drive (even
|
||
though none of these was supported by standard DEC controllers
|
||
on machines using these file systems).
|
||
|
||
PUTR can format any of these types of floppy disks. Note
|
||
that most PC floppy controllers don't work correctly in single
|
||
density mode, but some chips made by SMC, WD, Goldstar, Intel
|
||
(but not the 82078), and National Semiconductor are known to
|
||
work. On a controller with a working single density mode, the
|
||
RX01 format is exactly compatible with genuine RX01 disks
|
||
(i.e. IBM 3740 format) mounted in an 8" drive connected in place
|
||
of a 1.2 MB one, using an adapter such as D Bit's "FDADAP" board
|
||
(see http://www.dbit.com/fdadap.html for information). The
|
||
"RX02" format used by PUTR is actually IBM System 34 format,
|
||
since DEC's 8" DD disks use a strange combination of SD headers
|
||
with non-standard ID marks, and DD data fields, that can't be
|
||
accessed with a standard PC FDC regardless of the software used.
|
||
The 26-sector 5.25" disk formats are compatible with those used
|
||
by Ersatz-11.
|
||
|
||
|
||
FILENAMES
|
||
=========
|
||
|
||
[ldevu:][dir][filename]
|
||
|
||
As much as possible, the filename syntax is intended to look
|
||
similar to that of the host operating system for the volume on
|
||
which the file is located.
|
||
|
||
The ldevu: parameter is the logical device and unit number where
|
||
the file is located. The device name is one or two letters with
|
||
an optional unit number in the range 0-255, so that DOS-style
|
||
drive names like "X:" or DEC-style drive names like "SY:" or
|
||
"DL0:" are possible. Logical devices are mounted using the
|
||
MOUNT command, or they may be PC-DOS drives (which are all
|
||
implicitly mounted under the native file system (i.e. PC-DOS)).
|
||
The device name syntax is intended to mimic that of the DEC
|
||
PDP-11 OSes for convenience only, at the moment no significance
|
||
is attached to the device name (different units of the same
|
||
device name have nothing to do with each other, and for example
|
||
DL0: need not be an RL01/02 image). This may change. If the
|
||
ldevu: parameter is omitted, the current logged-in logical
|
||
device is assumed (you log into a device by typing the device
|
||
name and a colon at the prompt, just like in PC-DOS).
|
||
|
||
The dir parameter is the directory in which the file is located
|
||
(by default, the current working directory on that logical
|
||
device). With PC-DOS drives this is the usual sequence of
|
||
directory names separated by \ (or / if that isn't your
|
||
SWITCHAR). RT-11 drives use the same syntax as PC-DOS, to refer
|
||
to nested logical disk files (LD:); the default extension is
|
||
".DSK". "." and ".." are fake directory names and have the same
|
||
meanings as under PC-DOS. Note that PUTR doesn't assume that it
|
||
can tell the difference between a directory and an ordinary file
|
||
(because under RT-11 there is no difference), so all pathname
|
||
elements must end in \ (except the final one in a CD command).
|
||
So if you want to list the parent directory, type "DIR ..\"
|
||
instead of "DIR ..".
|
||
|
||
RSTS drives use directory names of the form [proj,prog], with
|
||
the project and programmer numbers in decimal. The
|
||
one-character logical names !, #, $, %, and & also work.
|
||
DOS/BATCH uses "[proj,prog]" directory names too but the numbers
|
||
are octal instead of decimal, and the directory name comes after
|
||
the filename instead of before it.
|
||
|
||
Files-11 drives (RSX etc.) use either numeric directory names of
|
||
the form [proj,prog], with the project and programmer numbers in
|
||
octal, or named directories with names like [USER]. PUTR
|
||
supports tree-structured directories, with names like
|
||
[USER.FILES.OLD]. P/OS is currently the only DEC PDP-11
|
||
operating system which implements tree-structured Files-11 ODS-1
|
||
disks.
|
||
|
||
The filename syntax depends on the file structure of the drive;
|
||
under all supported file structures it is of the form
|
||
"filename.ext", where the length of the filename and extension
|
||
have fixed limits for each OS. Note that the parsing and
|
||
wildcard matching routines make no assumptions about filename
|
||
syntax (except for adding default "*"s depending on whether they
|
||
see a "." anywhere in the filespec), so it is possible to fool
|
||
them. For example, typing "DIR ????????A.*" on a PC-DOS disk
|
||
will not give an error message, but it's impossible for anything
|
||
to match this spec. The wildcard parser is smarter than the one
|
||
in PC-DOS -- '*' and '?' really work the way they should (in
|
||
PC-DOS a '*' is equivalent to filling out the rest of the field
|
||
with '?'s instead of really matching 0 or more characters, and
|
||
in PC-DOS '?' will match a blank, which isn't true of most other
|
||
systems).
|
||
|
||
Note that each filename on an ODS-1 disk contains a version
|
||
number, which PUTR interprets as a decimal number. Some systems
|
||
use octal but that's a function of the operating system and not
|
||
the disk structure itself, so there's no way for PUTR to
|
||
auto-detect this. PUTR's wildcard lookup code is currently
|
||
operating system independent and does not give special treatment
|
||
to version numbers, they are regarded as simply being part of
|
||
the filename string. So in order to access a file on an ODS-1
|
||
disk, you must either use a wildcard that matches the ";n" on
|
||
the end of the filename, or explicitly specify a version number
|
||
(preceded by a semicolon). Otherwise PUTR's file search code
|
||
will not recognize it as a match against the file on the ODS-1
|
||
disk.
|
||
|
||
This also may cause trouble in output filenames. If X: is an
|
||
ODS-1 disk and C: is a DOS disk, the command "copy
|
||
x:[200,200]foo.txt;1 c:" will attempt to create a file named
|
||
"FOO.TXT;1" on the DOS C: drive. Most versions of DOS will
|
||
ignore everything after the first three letters of the filename
|
||
extension, however DR-DOS treats the semicolon character
|
||
specially, and considers everything after the semicolon to be a
|
||
password, which is used to lock the file. So on DR-DOS, the
|
||
above command will create a file which appears as "FOO.TXT" in a
|
||
directory listing, but you must use the name "FOO.TXT;1" to
|
||
access that file (or delete it). This can be worked around by
|
||
specifying the output filename explicitly, as in "copy
|
||
x:[200,200]foo.txt;1 c:foo.txt".
|
||
|
||
|
||
COMMANDS
|
||
========
|
||
|
||
PUTR is an interactive program with a simple command line
|
||
interface. Many of the basic file-related commands which work
|
||
at a DOS command prompt, such as DIR or TYPE or COPY, will also
|
||
work when typed at PUTR's command prompt. PUTR extends these
|
||
commands by allowing any mixture of real DOS drive letters, and
|
||
PUTR's own logical device names, to be used in file
|
||
specifications. There are also additional commands which allow
|
||
special file operations to be performed, which have no
|
||
equivalent in the DOS command language. In many cases, the
|
||
syntax follows that of the equivalent commands in DEC operating
|
||
systems.
|
||
|
||
A typical PUTR session starts with a MOUNT command for each
|
||
foreign volume which will be accessed, possibly preceded by
|
||
FORMAT and/or INITIALIZE commands to create these volumes if
|
||
they do not already exist. Then the user can use the familiar
|
||
CD, DIR, TYPE, COPY, COPY/B, and DELETE commands to manipulate
|
||
files. Finally, QUIT exits to DOS.
|
||
|
||
When PUTR is run, it looks for an indirect command file named
|
||
"PUTR.INI", first in the current directory, then in the
|
||
directory where the executable is located (for PC-DOS 3.0 and
|
||
later only). If found, this file is opened as an indirect
|
||
command file before the first command prompt. This is a
|
||
convenient place to put SET commands, and MOUNT commands for the
|
||
disk image file(s) that you usually use.
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
ldevu:
|
||
|
||
Simply typing a logical device name (with the colon) on a line
|
||
by itself, switches the "logged-in" drive to that device, just
|
||
as in PC-DOS or CP/M. This drive (and its current working
|
||
directory) will now appear in PUTR's prompt, and it will be used
|
||
as the default for all file specifications which do not include
|
||
an explicit drive name.
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
@ filename[.CMD]
|
||
|
||
Redirects input so that commands come from the specified
|
||
indirect command file (with default extension ".CMD"). Indirect
|
||
files chain rather than nesting, so if an "@" command appears
|
||
inside an indirect file the file is closed and new input comes
|
||
from the specified file. At end of file input reverts to the
|
||
keyboard.
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
BOOT ldevu:
|
||
|
||
On RT-11 volumes only, makes a volume bootable. The volume must
|
||
contain the needed .SYS files (monitor, system device handler,
|
||
TT: device handler), there are prompts that let you choose which
|
||
monitor to boot and which device handler the bootstrap should be
|
||
for. At each prompt you may enter a blank line to display a
|
||
list of all .SYS files on the volume, or a filename (default
|
||
extension ".SYS") to use. The action performed is exactly
|
||
equivalent to COPY/BOOT under RT-11.
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
CD ldevu:dir
|
||
|
||
Changes the current working directory on the specified drive
|
||
(default is the current logged-in drive). If no directory is
|
||
given the current working directory is displayed. For RT-11
|
||
drives, logical disks (*.DSK) are made to look like
|
||
subdirectories so you can CD into them too (and use CD .. to get
|
||
out).
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
CLS
|
||
|
||
Clears the screen.
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
COPY[/BINARY][/OVERRIDE] ldevu:inspec ldevu:outspec
|
||
|
||
Copies the specified file(s), converting between file systems if
|
||
necessary. Files are assumed to be ASCII (NULs are squeezed
|
||
out, two 12-bit words are unpacked to three 8-bit characters,
|
||
etc.) unless the /BINARY switch is given; this default may be
|
||
changed with the SET COPY command. If an output file has the
|
||
same name as an existing file in the same directory, then the
|
||
existing file is deleted, unless it is protected; the /OVERRIDE
|
||
switch overrides this protection. Not all file systems support
|
||
protection. In a binary copy between 12- and 16-bit media, the
|
||
12-bit words are considered to be right-justified in 16-bit
|
||
words (PDP-11 byte order); the remaining four bits are ignored
|
||
on input and written as 0 on output.
|
||
|
||
Additional COPY switches are useful when writing into a RSTS/E
|
||
file system. /CLUSTERSIZE:n writes the output file with the
|
||
specified cluster size, instead of the pack cluster size. This
|
||
value is ignored unless it is a power of two, between the pack
|
||
cluster size and 256, inclusive. Also the /CONTIGUOUS switch
|
||
writes the output file as a contiguous file. Ideally this
|
||
switch would work with DOS/BATCH volumes too, but it is not yet
|
||
implemented.
|
||
|
||
Note that unlike the COPY commands in DOS or RT-11, this command
|
||
cannot concatenate multiple input files into one output file.
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
COPY/DEVICE[/FILES][/BINARY] ldevu:[inspec] ldevu:[outspec]
|
||
|
||
Does an image copy from one device to another, or between a
|
||
device and a file. By default the copy is done in logical block
|
||
order, which is to say the 512-byte blocks are copied in order
|
||
starting at block 0. If you're copying a floppy disk (or an
|
||
image of one) then adding a /BINARY switch tells PUTR to copy in
|
||
physical sector order, starting with cylinder 0 head 0 sector 1,
|
||
and proceeding in sequential sector order, copying both surfaces
|
||
of each cylinder (if double sided) before proceeding to the next
|
||
cylinder. This copies all sectors of the disk, even those not
|
||
used by the DEC interleave schemes (on RX01, RX02, and RX03
|
||
disks, DEC leaves out track 0), and the resulting image files
|
||
are more likely to be in the right order if they aren't really
|
||
DEC disks. This use of /BINARY is not affected by the SET COPY
|
||
command.
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
DELETE[/NOQUERY][/OVERRIDE] ldevu:filespec
|
||
|
||
Deletes the specified file(s), prompting before each unless
|
||
/NOQUERY is specified. If a file is protected, it is not
|
||
deleted unless the /OVERRIDE switch is given.
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
DIRECTORY ldevu:wildcard [/FULL]
|
||
|
||
Displays a directory of the indicated file(s). /FULL gives the
|
||
starting block numbers of files as well on OS/8 or RT-11
|
||
volumes.
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
DISMOUNT ldevu: [/UNLOAD]
|
||
|
||
Undoes the effect of a MOUNT command (q.v.). Closes any image
|
||
file associated with the logical device, or releases the COM
|
||
port or floppy drive or SCSI device, and deletes the logical
|
||
name definition. /UNLOAD ejects the disk on SCSI drives that
|
||
support this.
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
EXIT
|
||
|
||
Returns to PC-DOS.
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
FORMAT d: /devtype /ostype
|
||
|
||
Formats the disk in PC-DOS floppy drive d: to the type specified
|
||
by /devtype (/RX01, /RX02, /RX03, /RX23, /RX24, /RX26, /RX33,
|
||
/RX50, /RX52 -- default depends on drive type and is /RX50 for
|
||
1.2 MB drives or if the drive type is unknown). The /ostype
|
||
switch is optional and tells PUTR to write a blank directory
|
||
structure for the specified OS (see the INITIALIZE command). It
|
||
may also affect the interleave and skew used for formating, if
|
||
appropriate for that OS.
|
||
|
||
Note that for RX50 format, double density disks (e.g. PC 360 KB
|
||
disks) should be used rather than the PC high density 1.2 MB
|
||
disks. Opinion is divided as to whether the hub rings should be
|
||
peeled off before use -- as they age they may slide slightly out
|
||
of place so that the disk doesn't center properly, but then
|
||
again they're there to protect the disk and without them it's
|
||
more likely to get damaged. In any case the 1.2 MB disks don't
|
||
erase/rewrite properly in double density mode (RX50s are double
|
||
density disks), even if they appear to format OK (which might
|
||
happen if they were bulk erased first) they can't be trusted as
|
||
RX50s.
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
FORMAT dev:filename /devtype /ostype
|
||
|
||
Creates an image file of the specified device type. The file is
|
||
initialized to zeros and an empty bad sector file is written if
|
||
appropriate (you will be prompted for a pack serial number for
|
||
device types that have them). As above, if /ostype is specified
|
||
then a blank directory is written.
|
||
|
||
If no device type is given then PUTR assumes nothing and just
|
||
prompts for the file size and creates a zeroed file of that
|
||
size. The value entered for the size should be a decimal
|
||
integer, optionally followed by the units the size represents;
|
||
if no unit is specified then the number is assumed to be the
|
||
number of bytes. Examples of the possibilities are, "100" means
|
||
100 bytes, "100 BLOCKS" means 100 blocks (512 bytes each), "100
|
||
KB" means 100 KB, "100 MB" means 100 MB (1 MB = 2**20 bytes),
|
||
and "100 GB" would mean 100 GB (1 GB = 2**30 bytes) except that
|
||
that exceeds the 2 GB limit on the size of a single DOS file.
|
||
Note that only integers may be used, so you can't say "1.44 MB"
|
||
or "2.1 GB". Those might not mean what you intend anyway, note
|
||
that 2.1 GB is not equal to 2100 MB (unless you're talking about
|
||
"marketing" numbers where MB/GB mean 10**6/10**9 instead of the
|
||
usual 2**20/2**30), so it's probably better to spell it out in
|
||
smaller units.
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
INITIALIZE vol /devtype /ostype
|
||
|
||
Writes a blank directory on the specified volume or image file
|
||
(only /OS8, /PUTR, and /RT11 are allowed as /ostype switches at
|
||
this time). Prompts for any needed information. "vol" is a
|
||
file, floppy drive, SCSI device, or COM port name the same as in
|
||
FORMAT and MOUNT. For initializing RT-11 volumes, there is a
|
||
"/SEGMENTS:n" switch which overrides the default number of
|
||
directory segments created. The default depends on size of
|
||
volume, using the same rules as with RT-11's own DUP.SAV (which
|
||
implements its INITIALIZE command).
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
MOUNT ldevu: image /devtype /ostype
|
||
|
||
Mounts a disk image, and attaches it to logical device name for
|
||
later use in other PUTR commands. "ldevu:" is a logical device
|
||
name (1 or 2 letters) and optional unit number. The device name
|
||
is arbitrary, but future versions of PUTR may change so that the
|
||
device name dictates the emulation (i.e. "DL1:" must be an RL01
|
||
or RL02) since that will make it possible to have useful
|
||
defaults for /devtype in case file size alone isn't enough to
|
||
tell.
|
||
|
||
"image" is the location of the disk image. Possibilities are as
|
||
follows:
|
||
|
||
[d:][path\]filename[.DSK] (name of a PC file)
|
||
|
||
The specified file contains a raw image of the disk.
|
||
This is known as an "image file" or "container file",
|
||
and is commonly obtained by downloading a disk from a
|
||
live machine over a serial or network connection, or
|
||
taking a snapshot of a SCSI disk, although PUTR can
|
||
also create image files from scratch itself (see
|
||
FORMAT).
|
||
|
||
d: (name of a PC floppy drive)
|
||
|
||
The raw floppy disk is used to hold the volume. This
|
||
should not be confused with an image file on a DOS
|
||
diskette, the disk uses the foreign file system and in
|
||
most cases will interchange with the foreign machine.
|
||
In a MOUNT command, if the "ldevu:" logical device
|
||
name is omitted, the floppy name will be used. For
|
||
example you may "MOUNT B: /RT11 /RX50" and then "DIR
|
||
B:".
|
||
|
||
SCSIhtl: (SCSI disk)
|
||
|
||
This form allows a raw SCSI disk to be mounted using a
|
||
foreign file system. The "SCSIhtl:" device name
|
||
specifies a SCSI disk (accessed through an ASPI
|
||
manager) at host adapter "h" (A=0, B=1, etc.), target
|
||
"t", and LUN "l", where h, t, and l (as well as the
|
||
underscore character) are all optional (the defaults
|
||
are "SCSIA00:"). On most systems there will be only
|
||
one SCSI host adapter, and most disks have only one
|
||
logical unit, so in most cases the device name may be
|
||
something like "SCSI5:", which specifies SCSI target
|
||
#5.
|
||
|
||
Note that some DOS ASPI drivers exist which make
|
||
non-SCSI devices look like SCSI drives. These should
|
||
work fine with PUTR, just pretend it's a SCSI drive.
|
||
An example is the ASPIATAP.SYS used with IDE/ATAPI
|
||
versions of the Iomega Zip drive, which makes the
|
||
drive look as if it's SCSI target 1, so
|
||
"SCSI1:" refers to the raw Zip drive in this case.
|
||
|
||
CDROMx: (raw CD-ROM drive)
|
||
|
||
This name can be used to open a raw CD-ROM, using the
|
||
usual MSCDEX.EXE interface (or NWCDEX.EXE under
|
||
DR-DOS). "x" is the CD-ROM drive's DOS drive letter.
|
||
Note that the MSCDEX emulation provided in Windows 95
|
||
and Windows 98 does not allow access to the first
|
||
sixteen sectors of the disk, which will not allow
|
||
PDP-11 format disks to work, except for non-zero RT-11
|
||
partitions. The workaround is to use plain DOS, or
|
||
else use a SCSI CD-ROM drive with the SCSI: device
|
||
type.
|
||
|
||
COMn:bbbbb/DRIVE:u (TU58 tape drive)
|
||
|
||
This specifies an actual DEC TU58 drive connected to
|
||
COM port "n", at baud rate "bbbbb" (default is 38400),
|
||
unit u (0 or 1, default is 0).
|
||
|
||
The /devtype switch specifies the device type of the image; the
|
||
defaults are auto-sensed except for TU58 drives where obviously
|
||
the default is always /TU58. With image files the default
|
||
device type depends on the file size, and is the largest defined
|
||
device less than or equal to the file in length. With floppies
|
||
various reads are attempted to detect the disk type. Raw
|
||
CD-ROMs and SCSI disks always default to /MSCP since their size
|
||
probably has more to do with the physical drive than with
|
||
whatever DEC drive it's supposed to replace.
|
||
|
||
Possible switches are as follows:
|
||
|
||
/RX01 = RX01 disk, 5.25" RX01 workalike
|
||
/RX02 = 5.25" RX02 workalike
|
||
/RX03 = DS 5.25" RX02 workalike
|
||
|
||
NOTE: for image files of the above devices, the file
|
||
size is used to determine which disk type it is and
|
||
whether the file is a block-by-block image (as
|
||
obtained by a "COPY/DEVICE/FILES DY0: FLOPPY.IMG"
|
||
command under RT-11, for example) which has had
|
||
interleave and skew applied to it by the PDP-11 device
|
||
driver that read it, or a sector-by-sector image (as
|
||
might be obtained by any simple program that reads the
|
||
sectors off sequentially and puts them in order into a
|
||
file). Block-by-block image files of 8" disks are
|
||
slightly smaller because the DEC interleave/skew
|
||
scheme skips track 0.
|
||
|
||
/RX23 = 1.44 MB 3.5" disk
|
||
/RX24 = 720 KB 3.5" disk
|
||
/RX26 = 2.88 MB 3.5" disk
|
||
/RX33 = 1.2 MB 5.25" disk
|
||
/RX50 = 400 KB 5.25" disk
|
||
|
||
NOTE: RX50 image files are the same size whether they
|
||
have interleave or not, so PUTR tries it both ways
|
||
while trying to guess the OS type.
|
||
|
||
/RX52 = DS RX50, 800 KB 5.25" disk (PUTR's own name)
|
||
|
||
The following switches are also supported: /MSCP, /RA60, /RA70,
|
||
/RA71, /RA72, /RA73, /RA80, /RA81, /RA82, /RA90, /RA92, /RD32,
|
||
/RD51, /RD52, /RD53, /RD54, /RK02, /RK05, /RK06, /RK07, /RL01,
|
||
/RL02, /RM02, /RM03, /RM05, /RM80, /RP02, /RP03, /RP04, /RP05,
|
||
/RP06, /RP07, /RS03, /RS04, /RS08, /TU56, /TU58. These switches
|
||
set the device type to the indicated DEC drive model. Since
|
||
there is no way to connect most of these devices directly to a
|
||
PC (unlike floppies), the effect of these switches is to specify
|
||
the exact size of the volume. Also, for the FORMAT command,
|
||
there is special handling of RL01, RL02, RK06, and RK07 drives
|
||
for building a blank bad sector track and (in the case of RT-11)
|
||
deducting the correct amount from the volume size to allow for
|
||
driver-implemented replacement blocks. The /MSCP switch means
|
||
that the image is a generic disk device whose actual size should
|
||
be used, instead of assuming the size matches some particular
|
||
model of DEC disk drive.
|
||
|
||
The /ostype switch specifies the file structure on the device;
|
||
one of the switches below may be given. If none is specified
|
||
then PUTR performs tests to guess the disk format. If the
|
||
volume appears to have no known directory, or seems to be valid
|
||
for more than one of the supported file structures, then a
|
||
message is displayed and the volume is not mounted. Mounting a
|
||
disk with /FOREIGN would seem pointless (since no directory
|
||
operations are allowed), except that it makes it usable with the
|
||
COPY/DEVICE command so it can be used to transfer an image of
|
||
the disk to or from a file (or another identical disk).
|
||
|
||
File structure switches:
|
||
|
||
/FILES11 = Files-11 ODS-1, used by RSX-11M, RSX-11M-PLUS,
|
||
IAS, and P/OS. Support is currently read-only.
|
||
|
||
/RSTSE = RSTS/E disk structure (RDS 0.0, 1.1, or 1.2).
|
||
|
||
/RT11 = RT-11 disk structure (/PARTITION:n switch selects
|
||
MSCP partition number, default is 0).
|
||
|
||
/OS8 = OS/8, OS/78, OS/278, COS-310 disk structure
|
||
(/PARTITION:n switch selects RK05 partition number,
|
||
default is 0).
|
||
|
||
/PUTR = TSS/8 PUTR.SAV DECtape format, similar to OS/8
|
||
format but with software 11:1 block interleave,
|
||
encoded 3-letter filename extensions, and a different
|
||
way of packing 7-bit ASCII characters into 12-bit
|
||
words.
|
||
|
||
Note: even though the regular OS/8 format uses 128
|
||
words of each 129-word DECtape block, the PUTR.SAV
|
||
format needs all 129 words (so a full 1474-block
|
||
DECtape image is 190,146 words or 380,292 bytes)
|
||
because some of the blocks are recorded in reverse, so
|
||
that the last 128 words of those blocks are used
|
||
rather than the first.
|
||
|
||
/TSS8 = TSS/8.24 system disk format (DS32 or RS08).
|
||
Currently read-only. Works only with disks built with
|
||
256-word segments, which is the most common size.
|
||
Probably not compatible with disks written by older
|
||
versions of the TSS/8 monitor, but nothing else was
|
||
available for testing. Filename extensions (chosen
|
||
from a fixed list of eleven) were a late addition, and
|
||
the base year for file dates was changed from 1964 to
|
||
1974 somewhere along the way (the new format ran out
|
||
in 1984).
|
||
|
||
The location of the MFD depends on the value of the
|
||
JOBMAX build parameter. This value may be specified
|
||
using the "/PARTITION:n" switch (where n is between 1
|
||
and 25 decimal). If this switch is omitted, PUTR will
|
||
search every 4 K words until it finds what looks like
|
||
a valid MFD.
|
||
|
||
/DOSBATCH = DOS/BATCH file structure.
|
||
|
||
/XXDP = XXDP+ file structure, a variant of DOS/BATCH format
|
||
used in late versions of the XXDP+ diagnostic package
|
||
(earlier versions of XXDP used exactly the DOS/BATCH
|
||
format, so they should be mounted with /DOSBATCH).
|
||
|
||
/FOREIGN = some other file structure, device is accessed in
|
||
16-bit mode and the only possible operations are COPY
|
||
/DEV and COPY /FILE /DEV.
|
||
|
||
There are a few miscellaneous MOUNT switches. /INTERLEAVE and
|
||
/NOINTERLEAVE tell whether an image file is interleaved (i.e. a
|
||
block-by-block copy of a floppy disk so the data are in block
|
||
order, not sector order) or non-interleaved (i.e. a
|
||
sector-by-sector copy so the data are in sector order). The
|
||
default is to guess based on the image file size (or prompt in
|
||
the case of FORMAT, which takes the same switches).
|
||
/PARTITION:n specifies the partition number for RT-11 MSCP disks
|
||
or OS/8 RK05 disks (default is 0). /RONLY and /RW tell whether
|
||
the device should be mounted for read-only or read/write access.
|
||
The default is read/write.
|
||
|
||
All of the above switches may be given in any order.
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
QUIT
|
||
|
||
Returns to PC-DOS.
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
SET x: type
|
||
|
||
Sets the drive type for one of the four possible PC floppy
|
||
drives A:-D: (note that actual PCs rarely have more than one or
|
||
two floppy drives). The type must be RX01, RX02, RX03, RX50,
|
||
RX33, RX24, RX23, or RX26. The default value for each drive is
|
||
whatever was stored in CMOS memory by the ROM BIOS setup
|
||
utility.
|
||
|
||
This command may be useful when the drive types stored in CMOS
|
||
RAM are incorrect for some reason. It's also helpful when an 8"
|
||
drive, or a real DEC RX50 drive, has been attached to the PC
|
||
using a D Bit "FDADAP" adapter, or something equivalent. There
|
||
is no standard for representing these drive types in CMOS RAM.
|
||
Using real RX50 drives (or other 300 RPM quad-density drives
|
||
such as the Tandon TM100-3 and TM100-4) is different from RX33s
|
||
(which is what PUTR calls regular PC 1.2 MB drives) because the
|
||
motor speed is slower, so the FDC chip must be programmed for a
|
||
lower data rate to match.
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
SET COPY {ASCII | BINARY}
|
||
|
||
Sets the default transfer mode for the COPY command (initially
|
||
ASCII). Intended mainly for use in the PUTR.INI command file.
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
SET DISMOUNT {NOUNLOAD | UNLOAD}
|
||
|
||
Sets the default unload action of DISMOUNTs, both explicit, and
|
||
implied by QUITting, or reMOUNTing the pseudo-device as
|
||
something else. Default is NOUNLOAD. Intended for use in
|
||
PUTR.INI with drive models where the disk shouldn't be left in
|
||
the drive when it's powered off.
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
SET FDC {COMPATICARD | GENERIC}
|
||
|
||
Tells PUTR whether your floppy disk controller is a Micro
|
||
Solutions CompatiCard IV, or just a generic PC floppy
|
||
controller. If it is a CompatiCard, PUTR maintains the TG43
|
||
signal (for 8" drives) by writing to port 3F0h; normal FDCs
|
||
have no writable port at that address and don't do anything when
|
||
it gets written so the default is COMPATICARD to cover
|
||
everything, but if your FDC does strange things when that port
|
||
is written you should SET FDC GENERIC to disable the writes.
|
||
|
||
This setting doesn't matter if you're using the D Bit "FDADAP"
|
||
floppy disk adapter board (see http://www.dbit.com/fdadap.html)
|
||
to connect to an 8" drive. The board has an on-board
|
||
microcontroller which transparently monitors the drive bus and
|
||
drives the TG43 signal correctly for each drive without any
|
||
software help.
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
SET MORE {OFF | ON}
|
||
|
||
Turns **MORE** processing on or off; the default is on, so
|
||
output pauses at the end of every screen. As above, intended
|
||
mainly for use in PUTR.INI.
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
SHOW ldevu:
|
||
|
||
Shows the medium and file system types for the specified logical
|
||
device.
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
TYPE ldevu:wildcard
|
||
|
||
Types the specified file(s) on the terminal, printing the
|
||
filename(s) first.
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
WIPEOUT ldevu:dir
|
||
|
||
Writes zeros over all "< UNUSED >" areas so that disk image
|
||
files will compress smaller with GZIP (etc.) and/or transfer
|
||
faster with Kermit (etc.). Supported only for OS/8, PUTR, and
|
||
RT-11 volumes.
|
||
Example Operations
|
||
======= ==========
|
||
|
||
|
||
This section gives sample commands to accomplish common
|
||
operations. In these examples the PUTR prompt is shown as
|
||
"(C:\)>", whereas on your system it will show the actual
|
||
logged-in drive and current working directory.
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
Formating RX50 disks (assuming B: is a 1.2 MB drive):
|
||
|
||
(C:\)>format b: /rx50
|
||
Press ENTER when ready...
|
||
(status is displayed during the format operation)
|
||
Format more disks (Y/N)? N
|
||
(or type Y to format more RX50s)
|
||
(C:\)>quit
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
Copying PDP-11 image files to RX50s (B: is the 1.2 MB drive):
|
||
|
||
(C:\)>mount b: /rx50 /foreign
|
||
(C:\)>copy/file/dev disk1.dsk b:
|
||
(if you have more than one disk to copy, you may swap disks
|
||
and issue more COPY commands without having to repeat the
|
||
MOUNT command)
|
||
(C:\)>quit
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
Creating blank container files:
|
||
|
||
Example 1 -- MSCP disk (user-selected size):
|
||
|
||
(C:\)>format du0.dsk /mscp
|
||
Are you sure (Y/N)? Y
|
||
File size (bytes): 10000 blocks
|
||
(C:\)>quit
|
||
|
||
|
||
Example 2 -- RL02 (size known by PUTR, has pack serial number):
|
||
|
||
(C:\)>format dl0.dsk /rl02
|
||
Are you sure (Y/N)? Y
|
||
Serial # [1234512345]: 666
|
||
(C:\)>quit
|
||
|
||
|
||
------------------------------------------------------------
|
||
|
||
Create a bootable RT-11 disk image from its component files:
|
||
|
||
All of the RT-11 files have been downloaded in binary mode, from
|
||
the PDP-11 into a PC directory named "C:\RT11".
|
||
|
||
(C:\)>format du0.dsk /mscp /rt11
|
||
Are you sure (Y/N)? Y
|
||
File size (bytes): 32 mb
|
||
Volume ID <RT11A>:
|
||
Owner name:
|
||
(C:\)>mount x: du0 /mscp
|
||
(C:\)>set more off
|
||
(avoids having to press space bar during the copy)
|
||
(C:\)>copy/b c:\rt11\*.* x:
|
||
(... lists all files being copied ...)
|
||
(C:\)>boot x:
|
||
Writing bootstrap on X:\
|
||
|
||
Monitor file [.SYS]: rt11xm
|
||
Device handler file [.SYS]: dlx
|
||
(substitute actual monitor and device handler filenames,
|
||
being careful to append "X" to the handler name when using
|
||
an XM monitor)
|
||
(C:\)>quit
|
||
File Formats
|
||
==== =======
|
||
|
||
|
||
Generally, the disk image files used by PUTR (typically with a
|
||
".DSK" extension) simply contain a byte-by-byte snapshot of the
|
||
entire disk, in physical sector order. For 12-bit images
|
||
(PDP-8, DECmate series), each 12-bit word is stored
|
||
right-justified in a 16-bit word in PDP-11 byte order.
|
||
|
||
There are several exceptions:
|
||
|
||
RX01, RX02, "RX03":
|
||
|
||
These may be accessed either as "block" images or as
|
||
"sector" images. Block images contain a snapshot of
|
||
the disk as seen through a PDP-8/PDP-11 device driver,
|
||
so there's no interleave, and track 0 does not appear
|
||
in the image file. Block images generally work the
|
||
same as images of any other type of drive, since DEC
|
||
used most styles of disks directly, without any kind
|
||
of soft interleave. Sector images are a snapshot of
|
||
the disk in raw sector order, including track 0, and
|
||
the data are in physical order, so soft interleave is
|
||
required to sort out the "cooked" blocks seen through
|
||
the host operating system.
|
||
|
||
Note that these disks have the same low-level format,
|
||
and thus the same sector image file format, in both
|
||
PDP-8 and PDP-11 systems. PDP-11s simply treat the
|
||
bytes as bytes, while PDP-8s perform packing and
|
||
unpacking of the 12-bit words so that (typically) 64
|
||
or 128 words are packed into the first 3/4 of the
|
||
sector, with the remainder ignored.
|
||
|
||
RX50, "RX52":
|
||
|
||
These disks have similar issues to the 8" disks, but
|
||
the details are different. The interleave schemes
|
||
wrap around the end of the disk to track 0, so track 0
|
||
is used in both the "block" and "sector" image file
|
||
formats, and the image file size is the same either
|
||
way. On 12-bit systems, the words are not packed
|
||
together in the first 3/4 of the sector, they're
|
||
individually right-justified in a PDP-11 word, so four
|
||
bits of each word are wasted but the data go all the
|
||
way to the end of the sector.
|
||
|
||
RK05 disk packs:
|
||
|
||
RK05 drives were used on both 12- and 16-bit systems.
|
||
The same drives work with both formats, but the packs
|
||
are different. 12-bit packs have 16 sectors per track
|
||
(1.6 MW total), and 16-bit packs have 12 sectors per
|
||
track (1.2 MW total). In both cases the sectors are
|
||
256 words each. Because of the 4 bits of padding for
|
||
every word in a 12-bit image, PUTR uses 3,276,800
|
||
bytes to store a 12-bit RK05 image, vs. only 2,457,600
|
||
bytes for a 16-bit RK05 image.
|
||
|
||
555, TU55, TU56 DECtape:
|
||
|
||
DECtapes were used on a wide variety of machines with
|
||
different word sizes. PUTR stores DECtape image files
|
||
in three different formats.
|
||
|
||
PDP-11s use DECtapes formatted in 18-bit mode (the
|
||
high 2 bits are ignored), giving 578 blocks of 256
|
||
words each. PUTR stores those as byte-for-byte images
|
||
with an image file size of 295,936 bytes.
|
||
|
||
PDP-8 DECtapes have 1474 blocks of 129 words each.
|
||
Most file systems actually use only 128 words per
|
||
block, but the DECtape hardware doesn't allow that
|
||
block size because it uses 6-bit mark codes which are
|
||
recorded in a single track alongside three data
|
||
tracks, so a block's data field must be a multiple of
|
||
18 bits. OS/8 always uses only the first 128 words of
|
||
each sector, so the 129th word can be safely omitted
|
||
from an image file. With PUTR's usual packing (each
|
||
12-bit word is right-justified in a 16-bit PDP-11
|
||
word), this gives an image file size of 377,344 bytes.
|
||
|
||
However, you may wish to include the 129th word just
|
||
to be safe. This is definitely required for TSS/8
|
||
PUTR.SAV format tapes. Even though they use only 128
|
||
words per block, they are recorded using an interleave
|
||
scheme in which 45% of the blocks are recorded
|
||
backwards, so the first 128 words of the block become
|
||
the last 128 words of the block when read forwards.
|
||
Therefore all 129 words must be preserved, because the
|
||
image file is considered to be accessed in the forward
|
||
direction (i.e. that's what you should do when taking
|
||
a snapshot of a tape). This gives a file size of
|
||
380,292 bytes.
|
||
|
||
PUTR tests the file size when opening an existing
|
||
image, and chooses the most appropriate size when
|
||
creating a new image file with the FORMAT command, so
|
||
generally it will do the right thing with all three
|
||
file sizes.
|
||
|
||
|
||
|
||
Note:
|
||
|
||
"D Bit", "Ersatz", and "E11" are trademarks of Digby's Bitpile,
|
||
Inc. All other trademarks are used for identification purposes
|
||
only and are the property of their respective owners.
|
||
|
||
|
||
|
||
John Wilson
|
||
Digby's Bitpile, Inc. DBA D Bit
|
||
11 Bank Street
|
||
Troy, NY 12180
|
||
USA
|
||
+1 (518) 271-6824
|
||
+1 (518) 272-3853 fax (call above number first)
|
||
<wilson@dbit.com>
|
||
www.dbit.com
|