This section describes the standard physical format used on 7-track and
9-track magnetic tapes on the Multics system. This format is known as Multics
standard tape format. Tapes of this form may be written and read by the tape_mult_
I/O module (described in Section 5). Any magnetic tape not written in the
standard format described here is not a Multics standard tape.
STANDARD TAPE FORMAT
The first record on the tape following the beginning of tape (BOT) mark is
the tape label record. Following the tape label record is an end of file (EOF)
mark. Subsequent reels of a multireel sequence also have a tape label followed
by EOF. (An EOF mark is the standard sequence of bits on a tape that is recognized
as an EOF by the hardware.)
Following the tape label and its associated EOF are the data records. An
EOF is written after every 128 data records with the objective of increasing the
reliability and efficiency of reading and positioning within a logical tape.
Records that are repeated because of transmission, parity, or other data alerts,
are not included in the count of 128 records. The first record following the
EOF has a physical record count of 0 mod 128.
An end of reel (EOR) sequence is written at the end of recorded data. An
EOR sequence is:
EOF mark
EOR record
EOF mark
EOF mark
STANDARD RECORD FORMAT
Each physical record (with the exception of the tape label record) consists
of a 1024-word (36864-bit) data space enclosed by an 8-word header and an 8-word
trailer. The total record length is then 1040 words (37440 bits). The header
and trailer are each 288 bits. This physical record requires 4680 frames on
9-track tape and 6240 frames on 7-track tape. This is approximately 5.85 inches
on 9-track tape at 800 bpi and 7.8 inches on 7-track tape at 800 bpi, not
including interrecord gaps. (Record gaps on 9-track tapes are approximately 0.6
inches and on 7-track tapes are approximately 0.75 inches, at 800 bpi.)
For 1600 bpi 9-track tape, the record length is approximately 2.925 inches
(with an interrecord gap of approximately 0.5 inches).
PHYSICAL RECORD HEADER
The following is the format of the physical record header:
Word 0: Constant with octal representation 670314355245.
Words 1 and 2: Multics standard unique identifier (70 bits, left justified).
Each record has a different unique identifier.
Word 3: Bits 0-17: the number of this physical record in this physical
file, beginning with record 0.
Bits 18-35: the number of this physical file on this physical
reel, beginning with file 0.
Word 4: Bits 0-17: the number of data bits in the data space, not
including padding.
Bits 18-35: the total number of bits in the data space.
(This should be a constant equal to 36864.)
Word 5: Flags indicating the type of record. Bits are assigned
considering the leftmost bit to be bit 0 and the rightmost
bit to be bit 35. Word 5 also contains a count of the
rewrite attempt, if any.
Bit Meaning if Bit is 1
0 This is an administrative record (one of bits 1 through
13 is 1).
1 This is a label record.
2 This is an end of reel (EOR) record.
3-13 Reserved.
14 One or more of bits 15-26 are set.
15 This record is a rewritten record.
16 This record contains padding.
17 This record was written following a hardware end of
tape (EOT) condition.
18 This record was written synchronously; i.e., control
did not return to the caller until the record was
written out.
19 The logical tape continues on another reel (defined
only for an EOR record).
20-26 Reserved.
27-35 If bits 14 and 15 are 1, this quantity indicates the
number of the attempt to rewrite this record. If bit
15 is 0, this quantity must be 0.
Word 6: Contains the checksum of the header and trailer excluding
word 6; i.e., excluding the checksum word.
Word 7: Constant with octal representation 512556146073.
PHYSICAL RECORD TRAILER
The following is the format of the trailer:
Word 0: Constant with octal representation 107463422532.
Words 1 and 2: Standard Multics unique identifier (duplicate of header).
Word 3: Total cumulative number of data bits for this logical tape
(not including padding and administrative records).
Word 4: Padding bit pattern (described below).
Word 5: Bits 0-11: reel sequence number (multireel number), beginning
with reel 0.
Bits 12-35: physical file number, beginning with physical
file 0 of reel 0.
Word 6: The number of the physical record for this logical tape,
beginning with record 0.
Word 7: Constant with octal representation 265221631704.
NOTE: The octal constants listed above were chosen to form elements of a
single-error-correcting code whether read as 8-bit tape characters
(9-track tape) or as 6-bit tape characters (7-track tape).
ADMINISTRATIVE RECORDS
The standard tape format includes three types of administrative records: a
standard tape label record, a bootable tape label record, and an end of reel
(EOR) record.
Standard Tape Label Record
The standard tape label record is written in standard record format, and
can best be defined by the PL1 structure declaration that follows:
dcl 1 stand_label_record based (mstrp) aligned,
2 head like mstr_header,
2 installation_id char (32),
2 tape_reel_id char (32),
2 volume_set_id char (32),
2 pad (1000) bit (36),
2 trail like mstr_trailer;
where:
1. head
is the standard 8-word record header described above.
2. installation_id
is the ASCII installation code. This identifies the installation
that labeled the tape.
3. tape_reel_id
Is the ASCII reel identification. This is the reel identification
by which the operator stores and retrieves the tape.
4. volume_set_id
is the name of the volume set if the "-volume_set_name" tape_mult_
attach description argument was used when the tape reel was created.
If the "-volume_set_name" attach description argument was not used,
this field is padded with ASCII blanks
5. pad
is an array of words containing the standard padding pattern (described
below), used to fill the label record data space to the standard
size.
6. trail
is the standard 8-word record trailer described above.
Bootable Tape Label Record
The bootable tape label record is an administrative record, written in
nonstandard format. The first eight words of the physical record contain four
pairs of executable instructions collectively known as a transfer vector. This
transfer vector allows a Multics standard tape to be bootloaded from any of four
possible I/O controllers.
When a tape that contains a bootable tape label record is bootloaded , a
hardwired program within the I/O controller writes the data within the first
record starting at location 30 (octal, absolute) in memory. When the data transfer
is completed, the I/O controller sets an interrupt "cell" in the system controller,
which causes the bootload processor to execute a hardwired "XED" instruction to
the address indicated by the system controller. This interrupt address generated
by the system controller is a function of the interrupt "cell" set by the I/O
controller and by the configuration panel number of the I/O controller itself.
For example, if the bootload sequence was initiated on I/O controller #0, then
the interrupt address would be 30 (8); addresses 32, 34 and 36, respectively,
would be generated by I/O controllers number 1, 2, and 3. The executable instructions
contained in each pair of the transfer vector are:
lda 4
tra 330
Location 4 contains the DCW address stored by the I/O controller hardwired boot
program. An executable program is located at 330 (octal, absolute). This program
is known as the tape label boot program.
The bootable tape label record is created through the use of the tape_mult_
boot_program control order. This control order is normally executed by the
generate_mst command to write a bootable label on BOS system tapes. Although a
user can write his own boot program and have generate_mst write it to the BOS
tape label, a standard boot label exists in the system libraries, named
mst_boot_label.
The mst_boot_label boot program initializes the bootstrap environment and
sets up an I/O channel program to read and skip the EOF record, and to read in
the first data record on the tape under control of a DCW. The DCW address used
is 7750 (8) absolute with a word count of 4046. (The generate_mst command
places the standard 8-word tape record header plus a 16-word segment header
before the first data in the record; the first executable data in the record
starts at location 10000 (8).) After the first data record is read in, the
status returned from the tape controller is checked for errors. If an error
occurred, the status word is copied in the A register and the processor falls
into a DIS. Assuming no status error was detected, control is transferred to
absolute location 10000 (8).
There are many other fields in the bootable tape label record. The following
is a PL1 structure declaration of the contents of the bootable tape label record
followed by an explanation of each field:
dcl 1 mst_label based (mstrp) aligned,
2 xfer_vector (4),
3 lda_instr bit (36),
3 tra_instr bit (36),
2 head like mstr_header,
2 installation_id char (32) unaligned,
2 tape_reel_id cha (32) unaligned,
2 volume_set_id char (32),
2 fv_overlay (32) unaligned,
3 scu_instr bit (36),
3 dis_instr bit (36),
2 fault_data (8) bit (36),
2 boot_pgm_path char (168) unaligned,
2 userId char (32) unaligned,
2 label_version fixed bin,
2 output_mode fixed bin,
2 boot_pgm_len fixed bin,
2 copyright char (56) unaligned,
2 pad (13) bit (36),
2 boot_pgm (0 refer (mst_label.boot_pgm_len)) bit (36),
2 trail like mstr_trailer;
where:
1. xfer vector
is the bootload transfer vector. There is one transfer vector for
each of four possible I/O controllers. The transfer vector functions
to gain control as the result of an interrupt after a bootload sequence.
2. lda_instr
is an "LDA" instruction from absolute location 4, which for an IOM
is the payload channel DCW as stored by the hardwired bootload program
in the IOM.
3. tra_instr
is an unconditional transfer to the beginning of the bootload program.
4. head
is the standard 8-word record header described above.
5. installation_id
is The ASCII installation code. This identifies the installation
that labeled the tape.
6. tape_reel_id
is the ASCII reel identification. This is the reel identification
by which the operator stores and retrieves the tape.
7. volume_set_id
is the name of the volume set if the "-volume_set_name" tape_mult_
attach description argument was used when the tape reel was created.
If the "-volume_set_name" attach description argument was not used,
this field is padded with ASCII blanks.
8. fv_overlay
This 32-element array overlays the hardware fault vector area at
absolute location 100 (octal) if this tape is bootloaded. If an
unexpected fault occurs when this tape is bootloaded , the appropriate
fault pair is executed by the processor fault logic.
9. scu_instr is a Store Control Unit (SCU) instruction, which safe-stores the
state of the processor control unit when executed.
10. dis_instr
is an interrupt inhibited Delay until Interrupt Signal (DIS)
instruction, which halts the processor when executed.
11. fault_data
is an area where SCU data is stored if an unexpected fault ocurred
while bootloading this tape.
12. boot_pgm_path
if nonblank can be the absolute pathname of the boot program written
on this label record. It can also be the user designated name for
the boot program when the "boot_program" tape_mult_ control order
was executed.
13. userid
is the User_id (Person.Project.Instance) of the user who created
this tape.
14. label_version
is the version number of this label record structure, currently 2.
15. output_mode
is the number of the iox_mode in effect when this tape was created.
(See iox_modes.incl.pl1.)
16. boot_pgm_len
is the length of the boot program in words. The boot program must
be less than or equal to 840 (1510 octal) words in length. If it is
less than 840 words, the record is padded out with the standard
padding pattern.
17. boot_pgm
is the executable text of the boot program. The boot program must
be coded in absolute self-relocating ALM assembly language.
18. trail
is the standard 8-word record trailer described above.
End of Reel Record
The end of reel record contains only padding bits in its data space. The
standard record header of the EOR record contains the information that identifies
it as an EOR record (word 5, bits 0 and 2 are 1).
DENSITY AND PARITY
Both 9-track and 7-track standard tapes are recorded in binary mode with
odd ones having lateral parity. Standard densities are 800 frames per inch
(bpi) (recorded in NRZI mode), 1600 bpi (recorded in PE mode), and 6250 bpi
(recorded in GCR mode)
DATA PADDING
The padding bit pattern is used to fill administrative records and the last
data record of a reel sequence.
WRITE ERROR RECOVERY
Multics standard tape error recovery procedures differ from conventional
techniques in that no attempt is made to backspace the tape on write errors. If
a data alert occurs while writing a record, the record is rewritten. If an
error occurs while re-writing the record, that record is again rewritten. Up to
64 attempts can be made to write the record. No backspace record operation is
performed.
The above write error recovery procedure is applied to both administrative
records and date records.
COMPATIBILITY CONSIDERATION
The software is capable of reading Multics standard tapes that are written
with records with less than 1024 words in their data space. In particular, a
previous Multics standard tape format specified a 256-word (9216-bit) data space
in a tape record.
In addition to recognizing and reading standard and bootable tape label
records, the software is also capable of recognizing and reading Multics standard
tapes that were generated with a version 1 label record, i.e., standard label
records that do not contain the volume_set_id field.
|