Multics Standard Tape Format


     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.

This material is taken from:
Multics Programmer's Manual Peripheral Input/Output(AX49-01)
Copyright Honeywell, Inc., 1979