README.md
DGT
DGT is one of the more powerful "foreign tape" utilities that
are around. It was written initially for tape positioning, but
has been growing for some time and now can handle numerous tape
data formats.
Among its major supported formats are:
ASCII or EBCDIC input in fixed length records
of any length blocked up to 100 (with some
minor restrictions on total record length).
ASCII or EBCDIC output in 80 byte records blocked
up to 100 [note: it'd be fairly easy to make record
length variable but I never needed to] per tape block
Data General RDOS tape input
UNIX TAR tape input (creates a separate file with the
UNIX pathnames and makes RSX-compatible names out of
the last part of the pathnames. Also flags binary files.
BCD tapes from old IBM equipment (easy to change char set)
DGT can also position tape in either direction by any number of
files or records, write endfiles, rewind tape, and set tape characteristics
(e.g. parity or density) to anything the driver allows. It has a HELP
command (just say DGT HELP if installed) to give key letters and meanings.
DGT commands are of the format

<Command-string> <unit>,<blockfactor or other info>,<more other info>

where information past the blockfactor is often not needed and is optional
if not required.

<Command-string> is an ASCII command name which I usually abbreviate
to a single letter. Only the first letter is examined of the string in any
case. A space or comma after the string is required. The unit number is
then given as a decimal number for the tape. DGT is customized for MT:,
MM:, MS:, or whatever by editing the ALUN.MAC file. ALUN gets the number
in and assigns MAGLUN (defined in the TKB file with a GBLDEF) to the
appropriate device and unit. DGT works on unmounted or foreign-mounted
tape, in M, M+, or IAS (or VAX VMS compatibility mode). The block factor
is the number of fixed length records that fit onto one physical record
on the tape. DGT is not too smart about this; if it is set up for 80
character record length (with the B command [e.g., B 0,80]) or by default
and you tell it that the blocking factor is 100 [e.g. INPUT 0,100] it will
write 100 records on the PDP11 even if it reads only 80 bytes on tape.
To build DGT, assemble or compile the files that you find referred
to in the TKB file, link, and use.
When DGT needs a filename (as when reading a file from tape to
PDP11, or when writing tape from a file), it prompts for it on a separate
line and uses GETCML to allow this to happen from a command file. Be aware
that while all commands use GETCML, the format is not normal MCR.
When DGT reads 80 byte records, it will remove trailing whitespace
on the read. For other record lengths, it leaves the whitespace in. On
output to 80 byte records, DGT will re-insert spaces to the end of record.
It has a mode to write DG RDOS tapes which is imperfect. Use the DGWRIT
program instead for that purpose. It has been tested and works correctly.
DGT can however read RDOS tapes fine. No special software need be written
on the DG side.
A minor customization is occasionally needed in DGT to go through
and clear all 200 bits in characters on readin, where ASCII comes in from
foreign tapes with the 200 bit set. Such data reads in and generally lists
but is almost impossible to edit because of this difference in the ASCII
codes used. PDP11 and VAX always clear the 200 bit.
You may want to use MTQIO or ASCEBC as utilities; they provide
easy and complete tape control or ASCII <==> EBCDIC translation respectively.

Glenn Everhart