Google
 

Trailing-Edge - PDP-10 Archives - BB-H311D-RM - documentation/labeled-tapes.memos
There are 5 other files named labeled-tapes.memos in the archive. Click here to see a list.


+---------------+
! d i g i t a l !   I N T E R O F F I C E  M E M O R A N D U M
+---------------+

TO:     TOPS20 List A
        Lois Frampton
        SWE Technical Archive

                                 DATE: Dec. 26, 1978

                                 FROM: Arnold Miller

                                 DEPT: LCG S. E. Dept.

                                 LOC:  MR1-2/E37  EXT: 6473

DISTRIBUTED:                     FILE: <DOC-SPECS>TAPE.M0

REVIEWED:                        PDM #: ASM-78-003-00


SUBJ: TOPS20 support of labeled tape


0.0 Dedication

Now the whole earth had one language and few words.   ...   And
the  LORD  said,  "Behold they are one people and they have all
one language;  and this is only the beginning of what they will
do;  and nothing that they propose to do will now be impossible
for them."

                                Genesis 11:1,6-7

1.0 Introduction

This specification describes TOPS20's support of labeled tapes.
This support falls into two major areas:  the monitor calls and
support  routines,  and  the   user   mode   interface.    This
specification  is  the  description of the former and addresses
the latter only when the description of  a  particular  monitor
function  is  dependant on the user mode system.  The user mode
system is described fully in [1].

A labeled tape  is  one  recorded  in  a  predefined,  standard
format.  TOPS20 recognizes two "standard" formats, ANSI and IBM
EBCDIC.  TOPS20 will both read or write ANSI  standard  labeled
tapes but will not write IBM EBCDIC labeled tapes.

The  purpose  of  labeled  tapes  is  to  provide  a  basis  of
interchange  among diverse computers as well as to provide some
of the desirable features commonly associated  with  disk-based
file  systems  such  as  protection,  file  names,  and  record
formatting.  While TOPS20 implements the full ANSI standard and
therefore  provides many of these features, it does not provide
                                                         Page 2


a cataloging facility.

The monitor support of labeled tapes may be  divided  into  two
major  subdivisions:   label  processing and record formatting.
Label processing involves the recognition and production of the
standard  labels.   The  information  in  the  file labels of a
labeled tape convey:  data format, owner, protection, and name.
The  label  processing  portion  of  the monitor recognizes the
standard labels, verifies the user's access to  each  file  and
directs  the  record processing portion as to the format of the
file data.  The record processing routines are responsible  for
assembling logical records.  A logical record may be coincident
with a physical block (unblocked records), it may be less  than
a  physical  block  (blocked  records) or it may reside in more
than one physical block (spanned records).  The creator of  the
file  selects  the data mode best suited to the application and
to the physical medium.

In the following descriptions, references to labeled tapes  and
descriptions  of  label fields and formats will conform to ANSI
labels.  The differences between ANSI formats  and  IBM  EBCDIC
formats will be descriped in appendix A.

The following  descriptions  assume  a  familiarity  with  [2].
Whereas it is Intended that this specification be useful on its
on merits, it  is  advisable  to  have  read  the  first  seven
sections of [2] before proceeding.
                                                         Page 3


2.0 Label processing


!------------------------------------------------------!
!V!    !V!U!    !H!H!    !H!U!T! d  !T!E!E!    !E!U!T!T!
!O! ...!O!V! ...!D!D! ...!D!H!M! a  !M!O!O! ...!O!T!M!M!
!L!    !L!L!    !R!R!    !R!L! ! t  ! !F!F!    !F!L! ! !
!1!    !n!s!    !1!2!    !n!s! ! a  ! !1!2!    !n!s! ! !
!------------------------------------------------------!


                Fig.1 A single-file volume

!----------------------------------------------------!
!V!    !V!U!    !H!H!    !H!U!T! d  !T!E!E!    !E!U!T\
!O! ...!O!V! ...!D!D! ...!D!H!M! a  !M!O!O! ...!O!T!M\
!L!    !L!L!    !R!R!    !R!L! ! t  ! !F!F!    !F!L! \
!1!    !n!s!    !1!2!    !n!s! ! a  ! !1!2!    !n!s! \
!----------------------------------------------------!

        !--------------------------------------!
        \H!H!    !H!U!T! d  !T!E!E!    !E!U!T!T!
        \D!D! ...!D!H!M! a  !M!O!O! ...!O!T!M!M!
        \R!R!    !R!L! ! t  ! !F!F!    !F!L! ! !
        \1!2!    !n!s! ! a  ! !1!2!    !n!s! ! !
        !--------------------------------------!


                Fig.  2 A multi-file volume


        !--------------------------------------!
        \H!H!    !H!U!T! d  !T!E!E!    !E!U!T!T!
        \D!D! ...!D!H!M! a  !M!O!O! ...!O!T!M!M!
        \R!R!    !R!L! ! t  ! !V!V!    !V!L! ! !
        \1!2!    !n!s! ! a  ! !1!2!    !n!s! ! !
        !--------------------------------------!

!----------------------------------------------------!
!V!    !V!U!    !H!H!    !H!U!T! d  !T!E!E!    !E!U!T\
!O! ...!O!V! ...!D!D! ...!D!H!M! a  !M!O!O! ...!O!T!M\
!L!    !L!L!    !R!R!    !R!L! ! t  ! !F!F!    !F!L! \
!1!    !n!s!    !1!2!    !n!s! ! a  ! !1!2!    !n!s! \
!----------------------------------------------------!


                Fig.  3 A multi-volume file

2.1 Format of a labeled tape

A labeled tape consists of several physical  files.   The  tape
marks  on  a  labeled tape do not necessarily delineate logical
files.  In fact, on a standard labeled tape, a  single  logical
file  consists  of  at  least  three physical files.  The basic
constituents of a labeled tape are:  volume labels, file header
                                                         Page 4


labels,  data and file trailer labels.  Each of these sections,
except the volume labels, is contained in a physical file, i.e.
terminated  by  a  tape  mark.   In  addition, a given file may
require more than one volume thereby increasing the  number  of
physical files required to hold it.

2.1.1 Volume labels

The first records on a volume must be standard  volume  labels.
The  format  and  processing  of volume labels are described in
reference [1].  The monitor neither reads nor writes any of the
standard volume labels or user volume labels.

2.1.2 File header labels

Each data file is preceded by standard file header labels.   If
the  file  or  file section is the first one on the volume, the
file header labels will immediately follow the  volume  labels.
If the file is not the first one on the volume, the file header
labels will follow the tape mark  indicating  the  end  of  the
previous file.

The file header labels and user header labels are delimited  by
a tape mark.

TOPS20 will read  and  write  the  first  two  standard  header
labels,  called  HDR1 and HDR2.  If any other header labels are
present (HDR3 through HDR9), they will be skipped.  Immediately
following  the  HDR  labels,  and  contained  within  the  same
physical file, are the user header labels (UHL).   TOPS20  will
make  these  available  to  the  user  program on read and will
provide the user program  the  opportunity  to  write  them  on
write.  Each of these labels (HDR and UHL) are 80 characters in
length.  Since each of the UHL labels must begin with the  four
indentifying characters, there are 76 data characters available
to the user program to interpret or write as it wishes.

If there are UHL labels on the tape and the user  program  does
not choose to read them, they will be skipped.

The file header labels (HDR and UHL) are delimited  by  a  tape
mark.

If a file does not fit on a single volume, it will be continued
on another one.  The portion of a file on each volume is called
a file section.  Each file section has  its  own  HDR  and  UHL
header set.

2.1.3 Data

Following the file header set is the file data.  The processing
of  this  portion  of the tape is under the jurisdiction of the
record processing routines and will be described  in  the  next
section of this specification.
                                                         Page 5


2.1.4 Trailer labels

Following the tape mark delimiting the end of the data for this
file  section  is  the  file  trailer set.  If this is the last
section of the file (or the only one, if the file fits entirely
on  one  volume)  then  the  file  trailer  set will begin with
standard end-of-file labels (EOF).  TOPS20 will write two  such
labels,  EOF1  and  EOF2.  When reading, TOPS20 will process up
through EOF2 and will skip any  other  EOF  labels  encountered
(EOF3-EOF9).   If this is not the end of the logical file, then
the file trailer  set  will  begin  with  end-of-volume  labels
(EOV).   As with EOF labels, TOPS20 will write two such labels,
EOV1 and EOV2 and when reading will process up through EOV2 and
skip any other EOV labels encountered (EOV3-EOV9).  If the file
trailer  set  begins  with  EOV  labels,  then  the   remaining
section(s)  of  the  file  is(are) on other volumes and no more
data is on the current volume.

Following the EOF or EOV labels are  the  user  trailer  labels
(UTL).   As with UHL labels, each is 80 characters, 76 of which
are available to the user program.

2.1.5 Reading and writing user labels

The user program may read or write header or trailer labels  at
the  appropriate  times.   UHL  labels  may  be read or written
before any data transfers have been attempted.  UTL labels  may
be read or written only at the end of the data.  Merely writing
a UTL label during normal processing will  terminate  the  file
and precede the UTL labels with EOF trailer labels.

If the monitor needs to perform a  volume  switch  on  read  or
write,  the  user  program  may  request that it be interrupted
before the current volume is removed so that  it  can  read  or
write  UTL  labels.  Writing UTL labels under this circumstance
will not cause EOF labels to be written.  Furthermore, when the
new  volume is loaded, another interrupt will be generated when
the UHL labels of the  next  file  section  are  available  for
reading  or  writing.   It  is  important  that when UHL or UTL
labels are being processed on a volume switch,  that  the  user
program  do  all of its label processing at interrupt level and
not dismiss the interrupt until it is  ready  to  proceed  with
reading or writing data.

On reading, UTL labels accompanying the EOF trailer labels  may
be  read when the end of data is reached.  This is indicated by
the receipt of an end-of-file  error  from  a  sequential  read
(IOX4 error from SIN or BIN) or end-of-file software interrupt.

2.1.6 Declaring Label values

2.1.6.1 Standard label values


Most of the fields of the file header and trailer labels  (HDR,
                                                         Page 6


EOF  and  EOV) are filled in by the monitor.  The user program,
by the  selection  of  the  record  format  and  several  other
quantities,  supplies  some of the fields of these labels.  The
user-supplied  fields  to  these  labels  are   specified   via
attributes in the file name specified to GTJFN.  The attributes
that affect the standard labels are:

        ;FORMAT:(F,D,S,U)

F= fixed length records

D= variable length records

S= spanned records

U= undefined format.  This format  is  not  part  of  the  ANSI
standard  and is available for "parochial" useage.  In general,
data recorded in U format is not interchangable among different
systems.   TOPS20  uses  U  format  to record binary files that
contain 36 bits of information per word.

        ;RECORD-SIZE:n

n= The maximum size of a record

        ;BLOCK-LENGTH:n

n= The maximum size of a physical tape block


        ;EXPIRATION-DATE:n

n= the date at which the data in the file may be overwritten

        ;Pn

n= the file protection desired

By specifying one or more of these attributes  when  writing  a
file,  the  user  directs  the  monitor  to  fill in the proper
information in the file header and  trailer  labels.   Each  of
these attributes has a default value as follows:

FORMAT=U (undefined format) or D (variable)  (see  section  3.4
for more information)

RECORD-LENGTH= Job or system tape default record size

BLOCK-LENGTH= same as RECORD-LENGTH

EXPIRATION-DATE=  expired  (field  is   filled   with   blanks,
indicating the file has expired).

P= any access by any user
                                                         Page 7


When reading a  file,  theses  attributes,  if  specified,  are
superseded by the information in HDR1 and HDR2.

2.1.6.2 User header and trailer labels

The  contents  of  the  user  header  and  trailer  labels  are
specified  entirely  by  the  user  program.   The  decision to
include user labels is the programmer's and the  interpretation
of  the  data  therein  must be done by user-supplied programs.
The monitor will limit the number of user labels  that  may  be
written  so as to preclude writing off the end of the volume (a
particularly nasty error).  The maximum number of  user  labels
that may be written is eight.

Following are the MTOPRs  that  are  used  in  processing  user
labels.

2.1.6.2.1 Declare PSI channel for EOV label processing

This MTOPR declares the software interrupt channel to  be  used
by  the  monitor  to  indicate  that  the  UTL  labels  at  the
end-of-volume or the UHL labels at the start of the new  volume
are  available.   If  no  such MTOPR is performed before an EOV
label set is encountered, the user program will  not  be  given
the  opportunity  to  process  the UTL or UHL labels during the
volume switch operation.


                MTOPR

AC1/    The MT JFN
AC2/    .MOPST
AC3/    PSI channel to set (-1 => clear assignment)

2.1.6.2.2 Read label information

This MTOPR is used  to  read  the  available  fields  from  the
standard volume and header labels.  The ANSI standard defines a
number of fields in the standard volume and file  labels,  some
of  which  are  of  no concern to the user program.  This MTOPR
returns the items that might prove  useful  to  the  processing
program.

                MTOPR

AC1/    The MT JFN
AC2/    .MORLI
AC3/    Address of argument block of the form:

word 1/ count of words in block
word 2/ offset to store label type of this tape (octal code)
word 3/ pointer to string to store volume name
word 4/ pointer to string to store owner name
word 5/ offset to store tape format (ASCII character)
word 6/ offset to store record length (decimal number)
                                                         Page 8


word 7/ offset to store block length (decimal number)
word 8/ offset to store creation date (in internal format)
word 9/ offser to store expiration date (in internal format)
word 10/ pointer to string to store file name
word 11/ offset to store generation number (decimal number)
word 12/ offset to store  generation  version  number  (decimal
number)
word 13/ offset to store mode value

On return, the left half of word 0 will contain the  number  of
items returned or skipped.

If any offset described as a pointer is  zero,  the  associated
value will not be returned.

This MTOPR may be issued before or after opening the  JFN.   If
it is issued before opening the JFN, only the first three items
will be returned.

2.1.6.2.3 Read/Write user header or trailer labels

These MTOPR functions are used to read or  write  user  labels.
.MORDL  may  be  issued  to read user header labels immediately
after the file has been opened and before the  first  input  is
requested  or after a volume switch has occurred and the volume
switch PSI has been generated.  User header and trailer  labels
may be read if the file is opened for read or append only.

The .MOWUL function may be issued to write user  header  labels
immediately after the file is opened and before the first write
is performed or when the PSI is  generated  indicating  that  a
volume switch has occurred.  User header and trailer labels may
only be written if the file is opened for write access.

User trailer labels may be read or written at  any  time  after
the  first  data  operation  (read  or  write).  If the program
requests to read or write user trailer labels, the tape will be
positioned to the EOF trailer section if reading or if writing,
the file will be terminated with an EOF trailer section.   Once
user  trailer  labels  are written in this manner, no more data
may be read or written.

User trailer labels may also be written during a volume  switch
sequence.   Once  the PSI indicating EOV has been received, the
user program may write UTL label into the EOV  trailer  section
(see  Fig.   3).   As  noted  before,  this  operation  must be
performed at interrupt level.


                MTOPR

AC1/    The MT JFN
AC2/    .MORDL
AC3/    String pointer to area to receive label
                                                         Page 9


On success return:

AC2/    User  label  identifier.   This  will  be   the   ASCII
character following the UHL or UTL.

AC3/    updated string pointer

IOX4    End of labels encountered

This function may be used to read either the UHL or UTL labels.

                MTOPR

AC1/    The MT JFN
AC2/    .MOWUL
AC3/    String pointer to label contents
AC4/    Label identifier byte

The string designated by AC3 must contain  76  bytes  of  data.
The  monitor  will  use  the  first 76 bytes encountered as the
label contents.

The label identifier code may be any ASCII character.

This function may be used to write either UHL or UTL labels.

It is possible to enounter EOT while writing the first  UTL  in
the  EOF  trailer  set.   This can occur if the last data write
overwrote the EOT mark.  In this  instance,  the  user  program
will  receive  the EOV PSI from within the code writing the UTL
labels for the file.  It is not possible to receive an EOV  PSI
while writing the trailer labels in the EOV trailer set.

2.2 Data

The data formats used on a labeled tape are  specified  by  the
ANSI  standard.  Several formats are available in order to meet
the diverse needs of applications and hardware.

The standard distinguishes the demands  of  the  hardware  from
those  of  the program.  This is accomplished by specifying the
physical  block  size  independently  of  the  logical   record
structure.   The  selected  block  size  should be chosen to be
optimal for the recording density,  the  drive  type,  and  the
interface hardware necessary to transmit the data.  The logical
record size and type should be selected to make  processing  by
the  program  as  efficient  as  possible.  It should be noted,
however, that the efficiency gained by selecting  a  particular
record  type,  e.g.   spanned,  may be offset by the additional
processing required of the monitor.

2.2.1 Blocking

Logical records may be blocked.  That is, more than one logical
record  may  reside in a single physical tape block.  This will
                                                        Page 10


occur whenever the physical block size is at least  double  the
logical  record  size  and the record format is either fixed or
variable.  Furthermore, it is likely  to  happen  with  spanned
records  no  matter  what  the  ratio is between block size and
record size.

2.2.2 Fixed records (F format)

Fixed length  records  are  the  easiest  for  the  monitor  to
process.   Therefore  whenever the data is record-oriented, and
the records are of constant length, F format is appropriate.

If SOUTR is used to produce the records, each SOUTR must have a
count  that  is  an  integral multiple of the record size.  Any
exception will produce a data  error.   When  using  SOUT,  the
total  length of the data written must be an integral multitple
of the record size.  Again, any exception will produce  a  data
error.

The monitor will automatically block records if  the  specified
block  size  is at least double the logical record size.  Files
recorded in fixed length records make the most efficient use of
the  tape  if  the  block  size  is an integral multiple of the
logical record size.

2.2.3 Variable records (D format)

Variable records provide an increased level  of  sophistication
over  fixed  length  records.   Since  the  monitor may produce
records  of  any  length,  it  need  not  resort  to   filling.
Furthermore,  it  can make the decision to block or not as each
record is produced.  Variable records should be used  when  the
record size can always be less than or equal to the block size,
the records are not  of  uniform  length,  and  the  processing
program  does  not  want  to  be bothered with detecting filler
characters.  An example of this is producing a "standard"  tape
file with the EXEC.

Each D format record contains four control bytes.   These  four
bytes   contain   the  record  length  encoded  as  four  ASCII
characters.  These control bytes or RCW are necessary  for  the
program  that  reads  the data to know how long each record is.
If the  file  is  blocked,  each  physical  block  may  contain
multiple  records  each  of  which  is preceded by its own RCW.
Since the records in a D format file are not of uniform length,
the number of records that will be in each block will vary from
one block to the next.  Furthermore, the  size  of  the  blocks
will  also  vary  from one to the next.  The parameter given in
the BLOCK-SIZE attribute is the maximum block  length  and  the
monitor  will  produce  blocks  of  varying  length  up to this
maximum to accommodate the records being written.

2.2.4 Spanned records (S format)

It may occur that the logical record size that  an  application
                                                        Page 11


wishes  to  deal with is very large.  In fact, such records may
be larger than the ideal physical block size  for  the  device.
In  order  to accommodate such a situation, spanned records are
supported by the record processing routines.  A spanned  record
is  one  that may occupy more than one physical tape block.  In
fact, a spanned record may occupy many physical blocks, and may
even occupy blocks on different volumes.

As with variable records, spanned records never require filling
and  have  special  control  bytes associated with each record.
Each spanned records is preceded by five control bytes, a  span
descriptor  byte  and  the  four RCW bytes described in section
2.2.3.  The span descriptor byte is an ASCII character  in  the
range  0  to  3 (octal codes, 60,61,62 and 63).  The associated
meanings are:

        0= record begins and ends in this segment

        1= record begins but does not end in this segment

        2= record neither begins nor ends in this segment

        3= record ends but does not begin in this segment


A single record may have no more than one segment in  a  single
physical  block.   If  the  record  fits  entirely  in  the one
segment, then it will be prefixed with a "0"  span  descriptor.
Segments  of spanned records will be blocked whenever possible.
However, if a single block contains more than one segment,  the
first  segment  in the block must be either a "0" or a "3", all
middle segments in the block must be "0", and the final segment
in the block must be either "0" or "1".

As can be deduced from the description, spanned records are the
most   difficult  of  the  formatted  types  to  process.   The
implication of this  is  that  the  monitor  must  inject  more
overhead  in  the  processing  of  spanned  records than in the
processing of variable or fixed length records.  In particular,
the   record   positioning  functions  such  as  backspace  and
forward-space are particularly costly when the file is recorded
in spanned format.

2.2.5 Mode (or form-control)

The DEC tape label standard [3]  defines  an  additional  field
that  serves to define the data in each file.  This field is in
the HDR2 label and may contain one of the following values:

        space   no line format characters are present
        A       FORTRAN format controls are present
        M       All  necessary  line  format  charaacters   are
        present
        X       Data is in stream format
                                                        Page 12


The purpose of this field is to enable the program reading  the
data to correctly format the file for its own host environment.

It should be noted that M and X are similar  in  many  aspects.
Generally,  however, M implies that each tape record is exactly
one line or  unit  of  the  file  whereas  X  conveys  no  such
implication.   An  X mode file is one that is one complete unit
and has been arbitrarily  divided  into  records  in  order  to
conform  to  the ANSI standard.  Neither file mode requires any
additional characters in order to  be  typed  or  listed  on  a
formatting device (e.g.  a line printer).

TOPS20 will make the contents of this label field available via
the  .MORLI  MTOPR  and will allow it to be set with the .MOSMV
MTOPR.

3.0 Opening a labeled tape

Since the file labels on a labeled tape contain a file name, it
is  possible  to  request  that  GTJFN  find a file by name, or
return the name of each file encountered.   Following  are  the
rules for a name look up on a labeled tape:

        1.  If a GTJFN is  executed  specifying  GJ%OLD  and  a
        non-null  file name, the monitor will search the volume
        for the  specified  name.   The  file  name  search  is
        forward only.

        2.  If a GTJFN is executed  either  with  a  null  file
        name,  or  without  specifying GJ%OLD, the monitor will
        not search the tape.

        3.  If a GTJFN is executed with  any  field  containing
        wild  card  characters  ("*"  or "%"), the monitor will
        search the tape for a  matching  file  name.   As  with
        other file name searches, the search is only forward.

Item 3 above provides the  necessary  support  for  the  EXEC's
DIRECTORY command.

Several important restrictions apply to file name searches:

        1.  Interrupting a file name search while the  tape  is
        being  positioned  is  not  advised.   The  tape  label
        routines judiciously monitor the  current  position  of
        the  tape,  and make assumptions based on the perceived
        position.    If   a   tape   positioning   command   is
        interrupted,  the  monitor  must  assume that a loss of
        position has occurred.  The monitor  can  recover  from
        this  loss  of  position,  but  only  at some cost (the
        technique is to rewind the volume and reposition to the
        beginning of the last encountered file).

        2.  The ANSI standard restricts the file name field  in
        the  tape  labels to seventeen characters.  The monitor
                                                        Page 13


        encodes the file name in this one field by placing  the
        name,  extension ,and the delimiting character (".") in
        the label field.  Therefore, only files whose name plus
        extension  is  less than or equal to sixteen characters
        may be written on a labeled tape.

        3.  If the GTJFN call does  not  provide  a  file  name
        (i.e.  the string MTn:  is given to GTJFN), the monitor
        will provide the default name:

                volid-FILE-n

where:

        volid is the name of the volume
        n is the file sequence of the file


3.1 GTJFN attributes

Attributes given on a GTJFN of a labeled tape  are  acted  upon
when  the  OPENF  JSYS  is  issued to actually access the file.
Errors may be generated by GTJFN if the specified attributes or
their associated arguements are syntactically incorrect.

Section 2.1.6.1 describes some of the attributes  that  may  be
specified on a GTJFN call.  In addition to these, the following
attribute may be specified:

;POSITION:n

n= the file sequence number to position the tape to

This attribute is useful when the file number is known, but the
file name is not.  Positioning is only performed in the forward
direction.

Unlike  the  attributes  specified  in  section  2.1.6.1,  this
attribute  has  no  effect  on the format of the data or on the
contents of the labels.  It is provided solely to position  the
tape to the proper file.

If both a file name and a ;POSITION attribute are specified  on
the  same GTJFN call, the name search will be performed as part
of the GTJFN call and the attribute will be processed when  the
OPENF JSYS is performed.

3.1.2 Specifying protection

The creator of a labeled tape file may specify  the  protection
of  the  file.  By default, no special protection is indicated.
However, if desired, the ;P attribute may be specified in order
to exclude or include access by others.

If a ;P attribute is specified, then the  access  character  in
                                                        Page 14


HDR1 will be stored as a "1", and the six octet protection code
will be stored in the system-dependent  field  in  HDR2.   When
specifying a protection, the group octets must be zero.

The protecton is interpreted exactly as that for a  disk  file.
However,  there  is  no group privilege on a tape and therefore
all users of the tape are either "owner" or "world".

When ;P is specified, the monitor will set all access bits  for
owner  and  will  use  the  given  access bits for world.  This
implies that the owner of a tape  file  may  always  have  full
access  but  that  other  users  are  constrained by the access
specified by the creator of the file.

3.2 OPENF

Once a JFN is obtained on a labeled tape, OPENF must be  issued
to  read  or write data.  The processing that occurs during the
OPENF JSYS varies depending on whether the  desired  access  is
read,  write,  or  append.  In most cases, the header labels of
the file are verified, but the types  of  exceptions  that  are
tolerated differ.  Following are descriptions of the processing
for each of the types of access.  In these descriptions, it  is
assumed  that  a well-formed tape is being accessed and that it
is not possible to read beyond the end of recorded data.

3.2.1 Read access

Opening a labeled tape for read access will succeed as long  as
the  user  has  access  to the specified MT.  That is, the file
labels are not verified when an open  for  read  is  requested.
This  is  so  that positioning operations ,e.g.  rewind, can be
achieved without having to have access to the present  file  on
the  volume.   The  "normal  open checks" will be made when the
first read is requested.

Upon requesting the first read three things can occur.   First,
a  good  set  of  header  labels is found that specify that the
desired access is allowed.  Second, a good set of header labels
is  found  that  indicates  that  read  access  is not allowed.
Finally, a tape mark is encountered  in  place  of  the  header
labels.   In two latter cases, the read request will produce an
error.

If a good set of header labels is encountered and  a  ;POSITION
attribute  was  given on the GTJFN, the tape will be positioned
to the requested file.  Having reached this file position,  the
header labels will be verified.

3.2.2 Append access

Append access applies the same criteria as read  with  the  one
exception that if a tape mark is encountered in place of header
labels,  data  operations  will  be  successful  without  first
repositioning the tape.
                                                        Page 15


By opening for append, the program may read  the  UHLs  in  the
header  set  but  may  not  write  them.   The first write will
position the tape to the end  of  the  current  file  (invoking
volume   switches  if  required)  so  that  existing  data  are
preserved.

3.2.3 Write access

An OPENF for write  will  succeed  providing  that  the  header
labels, if present, allow write access to this file.  If a tape
mark is encountered in place of the header  labels,  the  OPENF
will also succeed.

As with the other two forms of access, if a ;POSITION attribute
was  specified  on the GTJFN the tape will be positioned to the
proper file before the labels are verified for access.

3.3 Access to a file

Access to a file is  granted  based  on  the  access  code  and
expiration  date found in the file headers.  In order to read a
file, the access found must allow read access by this user.  In
order  to  write  or  append to this file, the access code must
allow write access and the file must be expired.

TOPS20 recognizes two different access codes on  TOPS20  tapes,
and  one  code on non-TOPS20 labeled tapes.  If the access code
is the character "blank"  (040),  then  either  read  or  write
access is allowable to anyone.  If any other code is present on
a non-TOPS20 labeled tape, then access must be verified by  the
GIVOK/GETOK policy program (see section 3.3.1)

If the code "1"(061) is present on a TOPS20 labeled tape,  then
additional  access  information is recorded in system-dependent
field  in  HDR2.   The  additional  informaton  is  a  standard
six-character  protection  code  used to control access to disk
files.  If the code specifies that access is allowed  for  this
class of user (only "owner" and "world" access are implemented)
then access is granted.

If any access character other than blank or "1" is present on a
TOPS20 labeled tape (presently there is no way to create such a
tape), then the access must  be  verified  by  the  GIVOK/GETOK
policy program.

3.3.1 GIVOK/GETOK access verification

If the monitor cannot interpret the file access code  in  HDR1,
it  will request that the GIVOK/GETOK policy program verify the
requested access.  Since the information required  for  such  a
decision is diverse (in general, the contents of HDR1, HDR2 and
any VOL labels  is  required),  the  monitor  supplies  only  a
minimum  amount  of  data  in  its  GETOK  request.  The policy
program is expected to obtain any additional data  it  requires
with the MTU JSYS (see section 5, new monitor calls).
                                                        Page 16


A GETOK will be issued whenever:

        1.  The tape is not  a  TOPS20  labeled  tape  and  the
        access code in HDR1 is not a blank (040).

        2.  The tape is a TOPS20 labeled tape  and  the  access
        code in HDR1 is other than blank or 1(061).

The GETOK that is issued is function .GOMTA and the  associated
arguments  are:   access character, MT unit number, user number
of user requesting access, label type (.LTxxx) and the  enabled
capabilities  of  the  requestor.   The MTU monitor call may be
used to obtain the actual label contents.  If no policy program
is running, the default is to deny access on such occasions.

3.4 Default modes

3.4.1 Read

When opening an MT file for read, the data  mode,  record  size
and  block  size are determined from the data in HDR1 and HDR2.
If no HDR2 is present, then fixed format (F) is  assumed  (this
is  specified as the proper action for level 1 adherence to the
ANSI standard [2]).

3.4.2 Write

When opening a file for write, the data mode, record  size  and
block  size  must  be specified by the user program.  If any of
these are omitted (i.e.  the  corresponding  attribute  is  not
given in the file specification), the following are used:

Record size and block size are assumed to be  the  job  default
record  size  for  tapes  (settable with the EXEC command:  SET
TAPE RECORD-LENGTH).  If no job default has  been  established,
the system default is used.

If the file is opened with seven or eight-bit bytes, the record
format  will be variable (D).  If the file is opened with other
than seven or eight-bit bytes, then undefined format is assumed
(U).

3.5 Dump mode

It is possible to read or write a labeled tape file using  dump
mode.    The  data  format  must  be  U  and  consequently  the
formatting of the data must be done by the  user  program.   It
should  be  noted  that  dump mode output to a labeled tape can
subvert the block-size limit specified  in  the  GTJFN.   Since
this value is stored in the file header, it is available to the
system that reads the file.  If any write produces a  block  in
excess  of the specifed block-size parameter, then the file can
only be read in dump mode.

While a file may be read or written in dump mode  only  if  the
                                                        Page 17


format is U, it is possible to open a file on a labeled tape in
dump mode and issue positioning operations although the  format
is  other  than  U.   Of  course, the positioning operations on
records will affect entire  tape  blocks  rather  than  logical
records.    This   lattitude   is  provided  for  the  sake  of
compatability with existing processing methods  and  is  by  no
means encouraged.

3.6 Non-TOPS20 tapes

The monitor is capable of reading  the  data  on  any  standard
labeled  tape  as  long as the data format is one of F,D, or S.
If the format is U however, there is ambiguity in how the  data
was recorded and how it is to be interpreted.

The monitor assumes that any U format tape recorded on a system
other  than TOPS10 or TOPS20 is to be read as a stream of 8-bit
bytes and will therefore read the MTA in  "industry  compatible
mode"  (U format tapes recorded on either TOPS10 or TOPS20 will
be read in the job default mode).  If the user  program  wishes
to  employ  another mode, it must issue the .MOSTS MTOPR to set
the proper mode (note that in this case, the job  default  mode
is  not  honored.  This differs from the processing of U format
TOPS20 tapes, where the MTA format is the job default format).

3.7 Closing a tape file

3.6.1 Abort close

An abort close is accomplished by setting the CZ%ABT  bit  when
issuing  the CLOSF or CLZFF monitor call (also, open files will
be closed with abort if an EXEC RESET command is issued).  If a
labeled tape JFN is closed with abort, then the tape is assumed
to have "lost position" (section 3.0 has a discussion of this).
In  such  a  case,  the next OPENF will have to reestablish the
position of the tape.  This may take some time, but in  general
should succeed.  It is important to note that in this case, the
tape will be positioned to the header label  set  of  the  file
that  was  opened when the abort close was issued.  This has an
important impact on the SKIP FILES command.

Once a labeled tape  JFN  is  closed  with  abort,  it  is  not
possible to do a name search with GTJFN until the tape has been
opened once again and positioned to the start of a  valid  file
(the  EXEC  commands  that  will accomplish this are:REWIND and
SKIP).

3.6.2 Normal close

If a CLOSF or CLZFF is issued to a labeled  tape  JFN  and  the
CZ%ABT  bit  is  not set, the tape will be positioned to either
the header label set of the next file in the file set (even  if
that  file  is on another volume) or to the second tape mark at
the end of the volume  set.   Consequently  such  a  close  may
require  some  amount of time, especially if one or more volume
                                                        Page 18


switches is required.  It is  recommended  that  this  form  of
close  be  used  whenever possible since it precludes having to
"reposition" the tape on the next OPENF.

4.0 Interface to MTCON

The monitor relies  on  MTCON  to  process  the  volume  header
labels, to verify the user's access to the volume, to determine
the density to be used in reading or writing the  tape  and  to
communicate with the operator.  In so doing, MTCON uses several
of the new monitor calls provided  to  implement  labeled  tape
functions.

The single most important of these functions to  MTCON  is  the
.MOLOC  function  of MTOPR.  This MTOPR function is used either
to specify the first volume on a MOUNT request, or to  identify
the  "next"  volume  on  a  volume  switch.  The format of this
function is:

                MTOPR

AC1/    The MTA JFN
AC2/    .MOLOC
AC3/    address of argument block of the form:

 .MOCNT/        count of words in the block
 .MOMTN/        MT unit # to associate with this MTA
 .MOLBT/        Label type (.LTxxx)
 .MODNS/        Density
 .MOAVL/        Address of volume labels
 .MONVL/        Number of volume labels at .MOAVL
 .MOCVN/        Volume number in the volume set

4.1 IPCF messages sent to MTCON

When the monitor requires MTCON to perform a service  (i.e.   a
volume  switch), it will send it an IPCF message describing the
desired service.  The events that cause  such  a  message  are:
end-of-volume  encountered  reading  or writing a file section,
backspace to a previous file  section,  rewind  volume  set  or
forward  space  to  the next file section.  Volume switches can
occur either when reading or writing the tape or during a  name
lookup associated with GTJFN or GNJFN.


The format of the message sent to MTCON is:

 .VMCOD/        Function code

        .VMVSM= volume switch requested

 .VSMTN/        MT unit number
 .VSFLG/        flags,,subfunction
        flags:
                                                        Page 19


        VS%WRT (1B0) file opened for write

        subfunctions:

        .VSMNV mount nTH volume
        .VSFST mount first volume
        .VSLST mount last volume
        .VSMRV mount relative volume number

 .VSCNT count for subfunction.  If .VSMRV is
        specified, this is a signed number (i.e.  the monitor
        may request a "backspace volume").

5.0 New and modified monitor calls

In order to properly support labeled tapes,  the  operation  of
several  of  the  MTOPR  tape  functions  had  to  be modified.
Although the intention is for a labeled tape to appear the same
to  an  existing  program  as  an MTA-style device, some of the
functions now available to the MTA device had to be modified or
proscribed.   The  following sections will describe new utility
functions  available  with  labeled  tapes  as  well   as   any
preexisiting tape functions that now behave differently.

5.1 Modified MTOPR functions

5.1.1 .MOREW

This function rewinds only the currently mounted volume.  A new
function is available to rewind the volume set.

5.2.1 .MOEOF

This  function  is  offered  for  compatability  with  existing
processing  techniques (this support should not be construed as
condoning these methods).  Issuing this function will terminate
the  data  portion  of  the file, write EOF trailer labels, and
leave the tape positioned to accept user trailer labels.  It is
possible   at  this  point  to:   write  user  trailer  labels,
backspace a record and continue writing data (a peculiar  thing
to  do),  or  close  the file.  A second .MOEOF function issued
without positioning the tape backwards, will "close"  the  file
thereby precluding anymore data operations to the file (once in
this state, a subsequent write will create a new  file.   This,
again,  is  a  non-standard  operation  but  one provided to be
compatible with exisiting methods).

5.2.2 .MOSDR

Read backwards is not available on labeled  tapes.   The  error
MTOX1 is generated

5.2.3 .MOSDM

This function is allowed only if the file has  been  opened  in
                                                        Page 20


dump  mode  (.GSDMP).   If the file has not been opened in dump
mode, the error MTXO1 is generated.

5.2.4 .MOSRS

This function is allowed only if the file has  been  opened  in
dump  mode.   If the file has not been opened in dump mode, the
error MTXO1 is generated.

5.2.5 .MOFWR

Forward space  will  position  over  a  logical  record.   This
implies  that many physical records may be skipped (if S format
is used) involving perhaps on or more volume switches.

5.2.6 .MOBKR

As with .MOFWR, this function  may  space  over  many  physical
blocks.

5.2.7 .MOEOT

Skip to end of tape will position the volume set beyond the end
of  the  last  file  in  the  set.  This function is useful for
adding a new file to the end of an already existing volume set.
As with other functions, this may take some time to complete as
one or more volume switches may be required.

5.2.8 .MORUL

Unload is proscribed.   An  unload  function  may  accompany  a
DISMOUNT request if so desired.

5.2.8 .MOERS

Erase tape is prosrcibed.

5.2.9 .MOFWF

Forward space file will skip one logical  file.   This  implies
that  many  physical files may be skipped involving perhaps one
or more volume switches.

5.2.10 .MOBKF

Backspace file will back up one logical file.  As with  .MOFWF,
this may imply skipping many physical files and perhaps involve
one or more volume switches  (note  that  for  ANSI  tape,  the
monitor  can  compute the number of volume switches required to
get to the first section of the file.  Therefore, this function
executed  on  an  ANSI  tape  should require at most one volume
switch.  This is not true of IBM EBCDIC tape however.)

In  order  to  be  compatible  with  existing  tape  processing
methods,  issuing  this  function  when  the  tape  is  already
                                                        Page 21


positioned to the first file of the volume set will not produce
an  error.   The  program issuing this function must follow the
.MOBKF with a GDSTS monitor call in order to determine  whether
the  BOT  was encountered during the spacing operation (Despite
this being a less than efficient sequence, it is the  procedure
now executed by tape processing programs).

5.2.11 .MOSDN

Set density is proscribed.


5.3 New utiltity functions

This  section  will  describe  the  new  MTOPR  functions   not
previously documented.

5.3.1 Rewind volume set (.MORVS)


                MTOPR

AC1/    The MT JFN
AC2/    .MORVS

This function will cause the first volume in the volume  to  be
mounted  and  positioned  to  the  first  file in the file set.
Since a volume switch may have  to  occur,  this  function  may
block for a considerable time.

5.3.2 Set no translate (.MONTR)

This function sets or clears  the  EBCDIC  to  ASCII  translate
flag.  If the flag is set, and the tape file being read is from
an IBM EBCDIC volume, then  all  data  delivered  to  the  user
program  will  be  in its original EBCDIC form.  If the flag is
not set, and the file is from an IBM EBCDIC  volume,  then  all
data  delivered to the user program will be in ASCII.  In order
to perform this translation, certain information  may  be  lost
(note  that the EBCDIC character set contains 256 codes whereas
the ASCII set contains only 128 codes).  Note that the  setting
of  this  flag  has  no effect on the data delivered by the MTU
JSYS (see section 5.4.1).

                MTOPR

AC1/    The MT JFN
AC2/    .MONTR
AC3/    0=> clear flag.  Non-zero=> set flag

5.3.3   Set data mode of file (.MOSMV)

This MTOPR declares the value to be placed in  the  DEC-defined
field in HDR2 called "form-control".  This field is not defined
in the ANSI standard but should be specified whenever the  data
                                                        Page 22


file is meant to be read with DEC supplied software.

This MTOPR merely declares the value to be placed in the  label
and  has  no  effect  on  the monitor'S processing of the data.
That is, it is the  user  program's  responsibilty  to  produce
records that conform to the declared mode.

                MTOPR

AC1/    The MT JFN
AC2/    .MOSMV
AC3/    The value as follows

        .TPFST  X mode
        .TPFCP  M mode
        .TPFFC  A mode
        .TPFNC  space mode

(see section 2.2.5 for a description of the modes).

5.4 New monitor calls

5.4.1 MTU

The MTU JSYS is used by privileged programs to perform  various
utility  functions.  It differs from MTOPR in that the invoking
program need not have a JFN on the MT nor  need  it  even  have
access to the MT.  It is intended for use by MTCON to declare a
volume switch error, and by the GIVOK/GETOK policy  program  to
read the file and volume labels.

                MTU

AC1/    function code
AC2/    MT unit number
AC3/    address of argument block

Valid functions and associated argument block

 .MTNNV Declare volume switch error

argument block:

 .MTCNT/        count of words in block
 .MTCOD/        error code to return to user
 .MTPTR/        string pointer to operator response


 .MTRAL read labels

argument block:

 .MTCNT/        count of words in block
 .MTVL1/        string pointer to area to hold VOL1
 .MTVL2/        string pointer to area to hold VOL2
                                                        Page 23


 .MTHD1/        string pointer to area to hold HDR1
 .MTHD2/        string pointer to area to hold HDR2

 If any of the string pointers is zero,  the  associated  label
 information will not be returned.

When using the .MTRAL function, each of the returned labels  is
eighty  characters in length and the format is specified by [2]
(note that for IBM EBCDIC  tapes,  [2]  is  not  correct.   See
appendix A for more information).

 .MTASI return assignment information

argument block:

 .MTCNT/        count of words in block
 .MTPHU/        returned MTA number associated with MT
                If no association, .MTNUL is returned

This function is used whenever MTCON  starts  to  determine  if
there  are  any  exisiting  MT  to  MTA associations.  This can
happen if MTCON is restarted.

Wheel or operator capabilities required.

6.0 Unlabeled tape operation

It is possible to mount a tape specifying that it is unlabeled.
In  this mode, the tape is accessible through the associated MT
device, but it will behave exactly like an  MTA  device.   That
is,  the  caveats and descriptions in section 5 do not apply if
the  tape  is  mounted  unlabeled.   Furthermore,  the   record
processing and formatting routines can not be invoked.

6.1 Multi-volume sets

If an unlabeled tape is mounted specifying multiple volumes  in
the  volume  set,  the monitor will not automatically perform a
volume switch at the end of each volume.  In  order  to  switch
volumes,  an  MTOPR  is  provided  that  the  program may issue
itself.

                        MTOPR

AC1/    The MT JFN
AC2/    .MOVLS
AC3/    pointer to argument block of the form

word 1/ count of words in block
word 2/ flags,,function-code

        functions:

        .VSFST mount first volume in set
        .VSLST mount last volume in set
                                                        Page 24


        .VSMNV mount absolute volume number
        .VSMRV mount relative volume number

 at prsent, no flags are defined.

word 3/ argument if .VSMRV or .VSMVN is the sub-function

If .VSMRV is specified, the argument in word 3  is  the  volume
number,  relative  to  the  currently mounted volume, to mount.
That is, if volume number two is now mounted and  the  function
is  issued  with  a  two  in  word 3, then volume four is being
requested.  It is most common to specify .VSMRV with a  one  in
word 3 (this mounts the next volume in the volume set).

7.0 References

1.  TOPS-20 Labeled Tape Processing Specification
Rick Ace
PDM# RTA-78-001-01-s

2.  American National Standard for  Magnetic  Tape  Labels  and
File Structure for Information Interchange
ANSI X3.27-1969

3.  DEC Magnetic Tape Labels and File Structure Standard
Lois Frampton
PDM #005-003-187-07

4.  OS Data Management Services Guide
IBM Systems Reference Library
Order Number GC26-3746-1

5.  OS Tape Labels
IBM Systems Reference Library
Order Number GC28-6680-4

6.  Innumerable and occasionally informative conversations with
Sumner  Blount  and  Sue  Godsell,  our representatives to ANSI
technical committee X3L5.

7.  The exogenous Ted Hess whose  early  efforts  inspired  and
drove us all.
                                                        Page 25



                        Appendix A


        Differences between IBM EBCDIC and ANSI tapes


This specification  has  stated  many  times  the  formats  and
contents  of  labels  and  records.   In  some  instances,  the
corresponding specification for IBM EBCDIC tapes is  different.
These  appendix will provide those differences that are germane
to this specification and to TOPS20's support of labeled tapes.

Paramount among the differnences is the most obvious  one,  the
data  stored on an IBM EBCDIC tape is encoded in EBCDIC whereas
the data stored on an  ANSI  tape  is  stored  in  ASCII.   The
monitor will translate the EBCDIC into ASCII (see .MONTR MTOPR)
with a concomitant loss of information.

Besides the character code used, other differences exist.   The
formats  of  the  labels differ.  Since this is of little or no
consequence to most users, this specification will  not  detail
these differences.  However, the GIVOK/GETOK policy program may
need to process the raw label information.  References [2]  and
[4] describe the labels.

Finally, the record formats differ.  IBM EBCDIC supports a form
of  records  called  variable(V  format).  V format records are
analagous to D format records.  The difference is  in  the  RCW
bytes.   Variable records are prefixed with a four byte RCW, as
are D format records.  The RCW on V format records, however, is
interpreted as follows:  The first two bytes form a sixteen-bit
binary number that is the length of the record in  bytes.   The
last two bytes must be zero.  Similarly, S format records under
IBM EBCDIC encode the span  descriptor  differently  than  ANSI
tapes.  The encoding is as follows:  The four byte RCW contains
the two byte record count as for V format records and the third
byte  is  the  span  descriptor.  The span descriptor byte is a
binary quantity in the range zero to three inclusive  with  the
following interpretation:

        0= record begins and ends in this segment

        1= record begins but does not end in this segment

        2= record ends but does not begin in this segment

        3= record neither begins nor ends in this segment

Furthermore, if the records are blocked (the IBM EBCDIC  labels
have  a  byte  called  the "blocking descriptor" that indicates
whether the records are blocked.  This explicit  indication  is
not  present  with  ANSI tapes) each physcial block is prefixed
with a block descriptor word or BDW.  The  BDW  is  four  bytes
long  and  contains  in  the  first two bytes the length of the
                                                        Page 26


block in bytes.  The last two bytes  are  unused  and  must  be
zero.

For a detailed comparison of record types  see  references  [2]
 and [5].

While the differences in processing  of  IBM  EBCDIC  and  ANSI
tapes  are  borne  by  the monitor, the user must decide on the
format of the data delivered to the user program.   The  .MONTR
MTOPR  provides  the  user the capability of receiving the data
from an IBM EBCDIC tape in either ASCII or EBCDIC.  See section
5.3.2 for a discussion of this MTOPR function.


+---------------+
! d i g i t a l !   I N T E R O F F I C E  M E M O R A N D U M
+---------------+

                                 DATE:  17-Jan-79

                                 FROM:  Rick Ace

                                 DEPT:  LCG S.E. Dept.

                                 LOC:   MR1-2/E37  EXT: 6032

DISTRIBUTED: 4-May-78            FILE:  <DOC-SPECS>LTPROC.MEM

REVIEWED: 15-May-78              PDM#:  RTA-78-001-01-S

SUBJ: TOPS-20 Labeled Tape Processing Functional Specification

The TOPS-20  tape  processing  project  is  an  effort  to  add
functionality  and order in the areas of mounting and accessing
magnetic tapes.  This specification describes certain  segments
of  the  project, namely:  user interface to the EXEC, operator
interface, tape mounting,  dismounting,  and  drive  assignment
logic,  usage  accounting,  and  tape  label and file structure
standards.   The  remaining  issues  will  be  addressed  in  a
separate specification.

This  is  the  second  revision  of  this  specification.   The
original version was dated 4-May-78.
Labeled Tape Processing on TOPS-20                       Page 2


                                     First Printing, March 1978

The information in this document is subject to  change  without
notice  and  should not be construed as a commitment by Digital
Equipment Corporation.  Digital Equipment  Corporation  assumes
no  responsibility  for  any  errors  that  may  appear in this
document.

The software described in this document is  furnished  under  a
license  and  may be used or copied only in accordance with the
terms of such license.

Digital Equipment Corporation assumes no responsbility for  the
use  or  reliability  of  its software on equipment that is not
supplied by DIGITAL.


     Copyright  (C)  1978 by Digital Equipment Corporation


The following are trademarks of Digital Equipment Corporation:

        DIGITAL            DECsystem-10         MASSBUS
        DEC                DECTAPE              OMNIBUS
        PDP                DIBOL                OS/8
        DECUS              EDUSYSTEM            PHA
        UNIBUS             FLIP CHIP            RSTS
        COMPUTER LABS      FOCAL                RSX
        COMTEX             INDAC                TYPESET-8
        DDT                LAB-8                TYPESET-10
        DECCOM             DECSYSTEM-20         TYPESET-11
Labeled Tape Processing on TOPS-20                       Page 3


1.0  PRODUCT OVERVIEW

1.1  Product Abstract

The TOPS-20 tape processing project is  an  effort  to  provide
greater  functionality,  efficiency,  reliability, and security
within the TOPS-20 tape processing domain.   Further,  it  will
facilitate   the  interchange  of  tapes  between  DECSYSTEM-20
machines and other  computers  through  the  implementation  of
standard   schemes  for  labeling  magnetic  tape  volumes  and
identifying and structuring the files that they  contain.   The
user need only consider the logical structure of his files.

TOPS-20  will  provide  full  tape  label  and  file  structure
processing in conformance with standards defined by Digital and
the American National Standards Institute (ANSI).  In addition,
users  may  read  tapes that are compatible with IBM System/360
and  System/370  operating  system  data  management  routines.
Record  processing  for  labeled  tapes will be invoked through
standard TOPS-20 I/O monitor calls.  The system will retain its
ability  to  provide user access to tapes in an unlabeled mode,
similar to that of Release 3 and earlier.

The tape mounting facility will allow  for  multi-reel  volumes
and  will  include  automatic volume recognition for unattended
operation.  However, an operator may control the scheduling  of
user  tape  mount requests simply by satisfying the requests in
the order he desires them to be processed.



1.2  Markets

The tape processing project is aimed at all customers that have
a  requirement for handling of magnetic tape.  This facility is
a mechanism for verifying the correct tape is mounted and  that
the  requestor is allowed access to the data therein, making it
attractive  to  installations  that  are  concerned  with  data
security.



1.3  Competitive Analysis

A comprehensive labeled tape processing facility is  needed  in
order  to  compete  in  the  commercial  data processing market
place.   This  project  will  attempt  to  meet  that  need  by
providing  the ability to create and process labeled tapes that
conform to  relevant  ANSI  standards.   Support  for  S360/370
compatible tapes is also an important selling point.
Labeled Tape Processing on TOPS-20                       Page 4


1.4  Product Audience

This product is intended for use by  all  customers  using  the
TOPS-20  operating  system.  Even at installations with minimal
applications-oriented tape processing requirements, the labeled
tape  processing  facility  can assist system managers in areas
such as file backup.



1.5  Definitions

The following definitions are provided in an attempt to clarify
the confusing labeled tape processing world to the neophyte.

"a" character   Any character from the center four  columns  of
        the  ANSI  X3.4  character  code table, except position
        5/15 and those positions where there is a provision for
        an   alternate   graphic   representation;    this  set
        comprises the alphanumeric characters  (A-Z,  0-9)  and
        the following special characters:
        space ! " % & ' ( ) * + , - . / : ; < = > ?

AVR     Automatic Volume  Recognition  -  An  operating  system
        feature  to  reduce operator work load;  when a tape is
        mounted on a drive, the system  automatically  attempts
        to  identify  the  tape by reading the first record and
        inspecting it for label information.

CP      Abbreviation for Character Position

File Set  A group of one or more labeled  tape  files  recorded
        consecutively  upon one or more volumes.  The last file
        in the set is terminated by an end-of-file label  group
        followed by two tape marks.

Label Type   Refers to the label and  file  structure  standard
        used  when  writing  information  on  a  magnetic tape.
        Label types mentioned in this specification are:
        ANSI - Conforming to ANSI Standard X3.27
        EBCDIC - Conforming to IBM specification GC26-3795-2
        TOPS-20 - Intended for use within TOPS-20 environments

Labeled Tape   A tape that  contains  standardized  information
        that identifies and describes the data on the tape.

Scratch  Refers to the state of a labeled tape volume in  which
        the volume is not assigned to any particular user.

Volid   Contraction  of  "volume  identifier";   a  string   of
        characters  that  identifies  a magnetic tape.  Labeled
        tapes  are  self-identifying  because  the   volid   is
        recorded   in  the  first  record  of  the  tape.   For
        unlabeled tapes, the volid is an arbitrary alphanumeric
        character  string  from one to six characters in length
Labeled Tape Processing on TOPS-20                       Page 5


        (typically written on a human-readable label pasted  to
        the  outside  of  the reel) that will serve to identify
        the tape to the operator.

Volume  A reel of magnetic tape

Volume Set   A group of one or more labeled tape  volumes  upon
        which exactly one file set is recorded.
Labeled Tape Processing on TOPS-20                       Page 6


2.0  PRODUCT GOALS

2.1  Performance

2.1.1  Performance Enhancements - This  project  will   enhance
system  throughput by providing an automatic volume recognition
service that will minimize the need for operator typein to  the
system,  and  provide the fastest possible connection between a
user job and  the  tape  it  wants  to  access.   Functionality
improvements  will come in the areas of tape volume interchange
with  other  systems,  protection   against   intentional   and
unintentional hazards, and magnetic tape usage accounting.



2.1.2  Performance Degradation - This project  is  designed  to
add no additional overhead to the actual reading and writing of
tape records.  However, there will be additional processing  at
all  labeled  tape  file openings and closings to do the proper
verification and writing of tape file labels.  Volume  mounting
and  verification will also incur a small increase in overhead.
The resident monitor will grow mainly due to the addition of  a
few  words  per  tape drive required for new status information
and pointers to label information blocks.



2.1.3  Future Considerations - The tape project will provide  a
limited  pro tempore version of the tape allocation features of
the Mountable Device Allocator system (MDA will  be  introduced
subsequent  to  TOPS-20  Release 4).  It is therefore a goal to
design the tape facility with MDA in mind to ensure as smooth a
transition as possible.



2.2  Support Objectives

This project will not increase the amount of  customer  support
required  for each system.  Furthermore, use of unlabeled tapes
will  not  be  obsoleted  by  this  new  facility.   The  tapes
currently  produced  by  COBOL-10  will  be treated by the tape
processor as unlabeled tapes since they conform to none of  the
existing standards.



2.3  Environments

The tape processing facility will run on any DECSYSTEM-20  that
has  at least one tape drive.  There are no restrictions on the
number of drives present or on memory size.
Labeled Tape Processing on TOPS-20                       Page 7


2.4  Reliability Goals

This project will not lower the  reliability  of  the  existing
monitor.   In  particular,  it will increase the reliability of
the  tape  sub-system,  since  the  probability  of  accidental
erasure will be reduced.

To further expand the scope of file security, ancillary TOPS-20
volume  protection  information  may  optionally be recorded on
labeled tapes.  At this time, an addendum is being proposed  to
ANSI  Standard  X3.27  to  provide  additional space for system
volume information in the form of VOL2 through VOL9 labels.



2.5  Non-goals

     1.  Tape cataloging - This project will  not  provide  the
         capability to catalog tape files in a central place.

     2.  7-track tapes - This  project  will  not  provide  any
         labeling  or  tape  record  processing  facilities for
         7-track tape drives.

     3.  Tape densities - Support for  556  and  200  bpi  NRZI
         recording   modes   for  labeled  tapes  will  not  be
         provided;   however,  unlabeled  processing  will   be
         supported at these densities.

     4.  Directories  -  This  project  will  not  provide  the
         illusion of a directory device.

     5.  Random access - This  project  will  not  provide  any
         random access capabilities on magnetic tapes.

     6.  Other systems' labeled tapes - This project  will  not
         provide  full  processing for labeled tapes from other
         systems.  Only those cases explicitly mentioned herein
         will be processed.

     7.  PA1050 (TOPS-10 Compatibility Package)  -  No  attempt
         will be made to interface TOPS-10 labeled tape UUOs to
         the TOPS-20 labeled tape processing system.
Labeled Tape Processing on TOPS-20                       Page 8


3.0  FUNCTIONAL DEFINITION

3.1  Synopsis of Tape Labeling

Labels are used to identify magnetic tape volumes and  identify
and describe the files contained on those volumes.  The TOPS-20
tape system will read and write tapes  in  conformance  to  the
ANSI,  DEC,  and  IBM  OS/VS standards.  The ability to process
unlabeled tapes will also exist.

American National Standard tape labels  and  file  formats  are
defined  by  the  American National Standards Institute (ANSI).
ANSI labels consist of volume labels and groups of file labels.
The  volume  label  is  the  first  record  on  the  tape;   it
identifies the volume and its owner.   The  file  label  groups
consist of labels that precede files (header labels) and labels
that follow files (trailer labels).  Header and  trailer  label
groups   may  optionally  contain  supplementary  labels  (user
labels) whose contents are specified and examined only  by  the
user  program.   ANSI standard labeled tapes contain labels and
file  structures  conforming  to  the  standard,  ANSI   X3.27,
American  National  Standard  for Magnetic Tape Labels and File
Structure for Information interchange.   All  labels  and  file
records  must  be recorded using the American Standard Code for
Information Interchange (ANSI Standard X3.4).

The DEC standard for labeled tapes is almost identical  to  the
ANSI  standard.   A  list of differences is provided in Section
10.0.   Tapes  written  for  use  within  TOPS-20  environments
(referred  to  herein  as  the  TOPS-20  label  type)  and  for
interchange with non-TOPS-20 systems (ANSI label type)  conform
to the DEC standard.

It is important to note that, using the TOPS-20 label  type,  a
user  may  create a tape that does not conform entirely to ANSI
X3.27.  However, the creation of an ANSI standard tape  may  be
ensured by specifying the ANSI label type.

IBM standard labeled tapes (referred to herein as EBCDIC  label
type) contain label arrangements and file structures similar to
those specified by the ANSI standard.  A  list  of  differences
between IBM and ANSI labeled tapes is provided in Section 10.0.
Data conversions between EBCDIC and ASCII will be performed  by
the TOPS-20 monitor.

The following  illustration  shows  basic  ANSI  standard,  IBM
standard,  and  unlabeled  tape  layouts for a single file on a
single volume.  Detailed descriptions of label formats and file
structures for labeled tapes are provided in Section 10.0.
Labeled Tape Processing on TOPS-20                       Page 9


        BASIC TAPE LAYOUTS FOR SUPPORTED LABEL TYPES

        !-------------------------------------------------------!
        !ANSI !ANSI !  !                       !  !ANSI !  !    !
ANSI    ! STD ! STD !  !                       !  ! STD !  !    !
STANDARD! VOL !FILE !TM!       FILE DATA       !TM!FILE !TM! TM !
LABELS  !LABEL! HDR !  !                       !  ! TLR !  !    !
        !     !LBLS !  !                       !  !LBLS !  !    !
        !-------------------------------------------------------!

        !-------------------------------------------------------!
        ! IBM ! IBM !  !                       !  ! IBM !  !    !
IBM     ! STD ! STD !  !                       !  ! STD !  !    !
STANDARD! VOL !FILE !TM!       FILE DATA       !TM!FILE !TM! TM !
LABELS  !LABEL! HDR !  !                       !  ! TLR !  !    !
        !     !LBLS !  !                       !  !LBLS !  !    !
        !-------------------------------------------------------!


        !-------------------------------------------------------!
        !                                             !   !     !
UN-     !                                             !   !     !
LABELED !                  FILE DATA                  !TM ! TM  !
TAPE    !                                             !   !     !
        !                                             !   !     !
        !-------------------------------------------------------!

        TM = TAPE MARK



Labels that are functionally related are grouped physically  on
a labeled tape.  These groups are described below.

                                           LABEL        LABEL
     LABEL GROUP NAME     LABEL SET NAME   IDENTIFIER   NUMBER
     ================     ==============   ==========   ======

     BEGINNING-OF-VOLUME  VOLUME-HEADER    VOL          1 TO 9
                                           UVL          1 TO 9

     BEGINNING-OF-FILE    FILE-HEADER      HDR          1 TO 9
      OR FILE-SECTION     USER-HEADER      UHL             a*

     END-OF-FIRST OR OF   END-OF-VOLUME    EOV          1 TO 9
     INTERMEDIATE-FILE-   USER-TRAILER     UTL             a*
     SECTION

     END-OF-FILE OR OF    END-OF-FILE      EOF          1 TO 9
     LAST-FILE-SECTION    USER-TRAILER     UTL             a*

* These are "a" characters, as defined in Section 1.5.
Labeled Tape Processing on TOPS-20                      Page 10


3.2  Morphological Overview

The major system components of the tape processing facility are
as follows:

     1.  MOUNTR - This is  a  SYSJOB  fork  that  controls  the
         assignment  of  tape  drives  and  logical  tape  (MT)
         devices as a function of requests from the  EXEC,  the
         monitor,  and  QUASAR.  MOUNTR will handle user MOUNT,
         DISMOUNT,  and  volume   switch   functions,   perform
         automatic   volume   recognition   (AVR)   and  volume
         validation, and converse  with  the  operator  through
         OPR/ORION.

     2.  A queueing mechanism will exist in QUASAR  to  receive
         user  requests  for  the  assignment  of  logical tape
         devices.   These  requests  will   be   systematically
         delivered to MOUNTR.

     3.  Commands will be implemented in the TOPS-20  executive
         command   processor   to  request  tape  mounting  and
         dismounting services from QUASAR.

     4.  Monitor routines will support label interpretation and
         construction,   process   ANSI  standard  tape  record
         formats, and request volume switching from MOUNTR.

     5.  CHECKD - A command to initialize tapes for use by  the
         TOPS-20  labeled  tape processing system will be added
         to this TOPS-20 utility.

Communication between the components  of  the  tape  processing
system  will  be  in  the  form  of inter-process communication
(IPCF) packets.

        !---------!     !---------!
        ! MONITOR !<--->! MOUNTR  ! MOUNT/DISMOUNT REQUESTS
        !---------!     !---------! VOLUME VALIDATION (AVR)
           OPEN            ^  ^     VOLUME SWITCHING
           CLOSE           !  !     LABEL EDITOR / EXCEPTIONS
           EOV             !  !
           REC. PROC.      !  !
                           !  !-----------!
                           V              V
                        !--------!   !----------!
                 QUEUES ! QUASAR !   !  ORION   ! OPERATOR
                        !--------!   !----------! INTERFACE
                            ^             ^
                            !             !
                            V             V
                  MOUNT !------!     !---------!
                  DISMT ! EXEC !     !   OPR   !
                  CMDS. !------!     !---------!
Labeled Tape Processing on TOPS-20                      Page 11


3.3  System Operating Modes

There will be two operating modes for TOPS-20 with  respect  to
tape  processing  and  tape drive allocation.  The installation
will  select  one  of  the  modes  with  a  command  to  SETSPD
(described in Section 5.4).

The  labeling,  data  management,  and  tape  drive  allocation
features that are being implemented in this project are enabled
by including the ENABLE TAPE-DRIVE-ALLOCATION  command  in  the
system  n-CONFIG.CMD  file.  If this operating mode is elected,
access to tapes via hard-wired tape drive handles (MTA devices)
will  be  replaced  by a controlled-access scheme that performs
association between logical tape devices (MT) assigned to users
and  the  physical devices on the system.  Any use of unlabeled
tapes will require an operator keyin to identify the volume  to
the system, whereas this was not a requirement under Release 3.

If an installation wishes  to  conduct  tape  operations  in  a
fashion  similar to that of TOPS-20 Release 3 and earlier, tape
drive allocation may be disabled, and users will  be  permitted
to  assign  MTA devices to their jobs and generally continue to
process tapes as they did in the past, with one exception:  the
services of the TMOUNT command will not be available.

It is expected that most installations will opt for the  former
mode to take advantage of the interchangeability, new features,
and increased security it provides.
Labeled Tape Processing on TOPS-20                      Page 12


3.4  USAGE Accounting

The TOPS-20 USAGE facility provides a standardized  system  for
recording  computer  utilization  data  and  making  this  data
available to downstream billing programs.  One objective of the
TOPS-20  tape  processing project is to add magnetic tape usage
information to the data base maintained by the USAGE facility.

A USAGE entry format for magnetic tape has been  specified  and
is  described  in  the  DECSYSTEM-20  USAGE File specification.
This entry, however, is not logged by  Release  3  of  TOPS-20.
The  data  proposed to be recorded by this project differs from
what has already been specified.  Tape-mount USAGE entries made
by  TOPS-20  Release  4  will  contain the standard USAGE entry
header and user identification, and a tape  usage  record  with
the following format:


ITEM  START  END  SIZE  TYPE  CONTENTS
NO.    POS   POS
----  -----  ---  ----  ----  --------

  1      1     4    4     N   ENTRY TYPE ('0012')

  2      5     5    1     N   OPERATING SYSTEM ('2' = TOPS-20)

  3      6     6    1     N   RECORD SEQUENCE NUMBER ('1')

  4      7     8    2     N   DEC RECORD REVISION NUMBER, '02'

  5      9    10    2     N   CUSTOMER RECORD REVISION # ('01')

  6     11    20   10     N   FILLER (RESERVED FOR DEC)

  7     21    59   39     A   USER ACCOUNT STRING

  8     60    65    6     A   VOLUME IDENTIFIER FROM VOL1 LABEL

  9     66    71    6     A   VISUAL LABEL IDENTIFIER

 10     72    79    8     N   THOUSANDS OF FRAMES READ

 11     80    87    8     N   THOUSANDS OF FRAMES WRITTEN

 12     88    93    6     A   DISPOSITION ('NORMAL')

 13     94   132   39     A   TEXT REASON FOR DISPOSITION

 14    133   146   14     N   DATE/TIME REQUEST WAS CREATED

 15    147   160   14     N   DATE/TIME OPERATOR WAS NOTIFIED

 16    161   174   14     N   DATE/TIME WHEN VOLUME WAS MOUNTED

 17    175   176    2     N   TYPE OF CONTROLLER
Labeled Tape Processing on TOPS-20                      Page 13



 18    177   178    2     N   LABEL TYPE, '01'=UNLABELED, '02'=ANSI
                                          '03'=EBCDIC, '04'=DEC

 19    179   179    1     N   VOLUME LABEL STATE
                                '0' = UNLABELED VOLUME
                                '1' = PRIVATE VOLUME
                                '2' = SCRATCH VOLUME
                                '3' = SCRATCH VOLUME ASSIGNED TO
                                      USER DURING THIS MOUNT

 20    180   187    8     N   NUMBER OF PHYSICAL RECORDS READ

 21    188   195    8     N   NUMBER OF PHYSICAL RECORDS WRITTEN

 22    196   201    6     A   FILE SET IDENTIFIER (UNLABELED TAPES
                                CONTAIN BLANKS IN THIS FIELD)


Items 4, 10, and 11 are revisions of currently defined  fields,
and items 17 through 22 are new fields.
Labeled Tape Processing on TOPS-20                      Page 14


3.5  Scratch Tape Philosophy

Scratch tapes serve two distinct functions within  the  TOPS-20
tape processing system:

     1.  Temporary Storage Medium:
         Periodically, user applications require large  amounts
         of  temporary  storage  to be used entirely within the
         scope of one job (e.g.  intermediate storage  for  use
         during  a  tape  sort).  TOPS-20 will permit a user to
         call for tape volumes in such  a  fashion.   When  the
         user  has  finished accessing the volume(s), they will
         remain in the scratch state.

     2.  Assignment of Tapes to Users:
         It is often desirable for a job  to  create  files  on
         volumes that are assigned when the job is run, placing
         the responsibility of tape assignment in the hands  of
         the  operator or data base administrator.  The concept
         of a "scratch" tape provides a way to accomplish  just
         that.    The   user  requests  a  tape  mount  without
         specifying volids, and the  system  communicates  with
         the  operator  to  get  a  scratch  volume mounted and
         associated with the user job.  As the user  writes  to
         the tape, the system updates the volume label group to
         reflect that the tape is assigned to the  user.   This
         technique  can  be  used  to  extend a volume set that
         already exists.

TOPS-20 will provide a simple user interface for  dealing  with
scratch  tapes,  including  informing  the  user  of the volume
identifiers of any scratch tapes assigned  to  him  during  the
course of a mount request.  On the operations side of the coin,
scratch tapes are identified to the system  either  implicitly,
by  a  blank  owner name in the VOL2 label of a TOPS-20 labeled
tape, or explicitly, by an operator keyin designating a  volume
as a scratch.
Labeled Tape Processing on TOPS-20                      Page 15


4.0  COMPATIBILITY

4.1  DEC Products

It is a goal  of  this  project  that  labeled  magnetic  tapes
written  by  TOPS-20 be compatible with other operating systems
that conform to the DEC standard for magnetic tape.



4.2  DEC Standards

The the label fields and file structures of  tapes  written  in
ANSI  and  TOPS-20  formats  conform  to  DEC  Standard  # 149,
Magnetic Tape Labels and File Structure.



4.3  External Standards

The following American National Standards are relevant  to  the
TOPS-20 tape processing project:

X3.4-1977  Code for Information Interchange (ASCII)

X3.14-1973 Recorded Magnetic Tape for  Information  Interchange
           (200 CPI, NRZI)

X3.22-1973 Recorded Magnetic Tape for  Information  Interchange
           (800 CPI, NRZI)

X3.27-1977 Magnetic  Tape  Labels  and   File   Structure   for
           Information Interchange

X3.39-1973 Recorded Magnetic Tape for  Information  Interchange
           (1600 CPI, NRZI)

X3.54-1976 Recorded Magnetic Tape for  Information  Interchange
           (6250 CPI, Group-coded Recording)

All  labeled  tapes  will  conform  to  one  of  the  recording
standards,  X3.14,  X3.22, X3.39, or X3.54.  All labels written
using the ANSI and TOPS-20 label types will  conform  to  X3.4.
File  information and structure of files written using the ANSI
label type will conform to standards X3.4 and X3.27.

Tapes written with the EBCDIC label  type  adhere  to  the  IBM
labeled   tape   conventions   outlined   in   IBM  publication
GC26-3795-2, OS/VS Tape Labels.
Labeled Tape Processing on TOPS-20                      Page 16


5.0  EXTERNAL INTERACTIONS AND IMPACT

One of the underlying philosophies of this project is  to  make
the users' conversion from unlabeled tape processing to labeled
tape processing as painless as possible.  To  respond  to  this
requirement,  the  interface  between the user and the magnetic
tape system has been changed only where necessary to accomodate
the functionality of the new scheme.

This section will describe  the  interfaces  between  the  tape
processing system and the rest of the TOPS-20 world.

The following conventions are used in describing the syntax  of
commands in this section:

     1.  Brackets [] surround optional quantities.

     2.  Literal information (e.g.  keywords) are capitalized.

     3.  All punctuation except brackets is to be  regarded  as
         literal information.

     4.  Variable  quantities  (such  as  volume   identifiers)
         appear in lower case.

     5.  If a command is too long to fit on  one  line,  it  is
         depicted  in  multiple-line COMND style (hyphen at the
         end of every continued line).




5.1  User Interface to the TOPS-20 EXEC

To support the new tape processing system, several new commands
will  be  added to the TOPS-20 executive command processor, and
new features will be added to some of the existing commands.

Most important of the new  commands  are  MOUNT  and  DISMOUNT,
which  pave the way for the eventual channeling of all requests
for management of mountable media (currently, tapes and  disks)
through  a system mountable-device allocator (MDA).  As the MDA
project is currently in  the  design  stages,  the  MOUNT  TAPE
facility will be temporarily interfaced to QUASAR and MOUNTR by
the EXEC.  At some time in  the  future,  the  TMOUNT,  SMOUNT,
SREMOVE,  and  SDISMOUNT  commands  will be phased out, and all
tape and disk mount requests will be  made  through  the  MOUNT
TAPE  and  MOUNT  DISK  commands  in  the  EXEC, and, possibly,
through a standardized assembly language interface to MDA.
Labeled Tape Processing on TOPS-20                      Page 17


5.1.1  The MOUNT Command - 



5.1.1.1  Motivation - Any user wishing to access a  tape  under
the new tape processing system will issue either the MOUNT TAPE
command or the TMOUNT  command  to  the  TOPS-20  EXEC.   These
commands:

     1.  Associate a system MT device with  a  logical  set  of
         tape  volumes  and  assign  the MT device to the user,
         giving him an access path to the tape volume set

     2.  Provide for queueing of user tape  requests  and  thus
         achieve better management of system resources

     3.  Standardize the operator  interface  to  the  magnetic
         tape subsystem under TOPS-20

     4.  Give the operating system (and  therefore  the  system
         manager) more control over tape access

In addition, the MOUNT  TAPE  command  lets  the  user  specify
defaults  to  be  used  for tape processing.  This section will
discuss the structure and operation of the MOUNT TAPE command.



5.1.1.2  File Set Name - An essential feature of tape access on
TOPS-20  will be the ability to reference a set of files on one
or more volumes of tape by a single handle, known  as  a  "file
set  name"  or "setname".  If an analogy is made between a tape
volume set and a structure containing one directory,  then  the
file  set  name  of  the  tape  corresponds  to the name of the
structure.  A user  can  reference  files  on  a  structure  by
specifying merely the structure name and the file name, without
concerning himself with the physical makeup of  the  structure.
Access to tapes is simplified if a similar scheme is employed.

Another basis for the setname scheme is the  possibility  of  a
tape  cataloging  system for TOPS-20.  Under such a system, the
user can reference  a  labeled  tape  file  by  specifying  the
setname  and  filename to the system.  The catalog provides the
association between the setname and the  volid  list  for  that
volume   set.   Cataloging  is  not  a  goal  for  the  initial
implementation of the tape project;  however, it may be  deemed
a desirable feature for a future release.
Labeled Tape Processing on TOPS-20                      Page 18


5.1.1.3  Syntax of the MOUNT Command - Implementation  of   the
MOUNT  command will proceed in two phases.  The first step will
permit the  user  to  request  that  one  tape  volume  set  or
structure be mounted;  this is planned for Release 4.  With the
advent of MDA, a superset of the first version of  the  command
will allow for specification of one or more related tape and/or
structure mounts within one MOUNT  command.   The  full-fledged
version of the MOUNT command will have the following syntax:

   @MOUNT mspec [mspec mspec ...]

Each "mspec" is a request for  a  particular  media  collection
(e.g.,  a tape volume set or a disk structure).  Including more
than one mspec in a MOUNT command implies that the system is to
treat  the set on an "all or nothing" basis.  For example, if a
user wants to copy a file from a structure to  a  tape,  having
either  medium  mounted  without the other is useless.  In this
case, the user would request in his  MOUNT  command  that  both
tape  and  structure be mounted.  The request will be satisfied
when all necessary system resources become available.

Note that the user can specify a multi-media request by  giving
a number of mspecs on the MOUNT command line.

                           IMPORTANT

Release 4 of TOPS-20 will support  only  one  mspec  per  MOUNT
command.   If  it is desired to mount more than one medium, the
user should give one MOUNT command for each.

An "mspec" is defined as:

   devtype setname:  /switch ...  /switch

The devtype field contains a keyword specifying which  type  of
medium  is  being  mounted.   This  keyword  is  either TAPE or
STRUCTURE.  The setname is a handle on the medium.  For  tapes,
the  setname  is  the  file  set  name of the file set.  A tape
setname is from 1 to 6 "a" characters  long,  and  it  must  be
enclosed   in   quotes   if  it  contains  any  nonalphanumeric
characters or nontrailing blanks.  The  following  significance
is attached to a tape setname:

  o  The ANSI and IBM tape labeling standards provide  a  field
     in  the  file  header  and trailer labels termed "file-set
     identifier" (ANSI) or "data set serial number" (IBM).  The
     intention  of  the  standards  is  that  the same value be
     written in the file-set identifier field of every file  in
     the  file  set.   A common practice is to use the volid of
     the first volume in the set as the setname.  TOPS-20 users
     will  be  permitted to select their setnames when creating
     volume sets.

  o  MOUNTR can use the  setname  in  addition  to  the  volume
     identifier  to  determine  whether  or  not a mounted tape
Labeled Tape Processing on TOPS-20                      Page 19


     satisfies  an  outstanding  user  request.   Qualification
     using the setname is selected by use of the /CHECK-SETNAME
     switch of the MOUNT command.

  o  If the mount request is completed successfully,  the  EXEC
     will  define  the  setname  as a logical name for the tape
     device assigned to the user by MOUNTR.

  o  If no  volume  identifier  list  is  given  in  the  MOUNT
     command,  it  will be assumed that the volume set contains
     exactly one volume, and its  volid  is  the  same  as  the
     setname.   This  feature  is  intended to make the "simple
     case" as easy to specify as possible.


The EXEC processes the MOUNT TAPE command by composing an  IPCF
message  for a tape mount request and sending it to QUASAR.  If
/NOWAIT was not used, the  EXEC  blocks  until  a  response  is
received  from QUASAR.  If the user types CTRL/C while the EXEC
is blocked, control returns to  EXEC  command  level  with  the
request  still outstanding.  If /NOWAIT was specified, the EXEC
immediately prompts for another command.  Concurrently,  GALAXY
processes  the  mount  request and (perhaps considerably later)
sends an IPCF reply to the EXEC.   When  the  next  command  is
typed  to  the  EXEC, the EXEC will display the response to the
mount request at the user's terminal.

When the EXEC receives the response from QUASAR, it will  print
one  of  the  following  messages at the user's terminal.  (For
documentation purposes, constant portions of the text responses
are  shown  in  upper  case, and variable elements are in lower
case.  In practice, the constant text  will  be  in  upper  and
lower case.)

[TAPE SET setname, VOLUME volid MOUNTED]
[setname: DEFINED AS device:]
    The user's tape was mounted and it is now ready for access.
    The  EXEC  tells  the user the set name (logical name), the
    identifier of the volume that was  mounted,  and  the  tape
    device  that  was  assigned  by  MOUNTR.   The  tape can be
    accessed by either the device name or the logical name.

?error-message
REASON GIVEN BY OPERATOR: reason
    For some reason (user error, operator refusal, insufficient
    system   resources,   etc.)   the  mount  request  was  not
    satisfied.  The last line of  the  above  message  will  be
    present  only  if  the  operator refused to honor the mount
    request.


The following switches are valid for the MOUNT TAPE command:

/CHECK-SETNAME
        Imposes the requirement that the file set identifier on
Labeled Tape Processing on TOPS-20                      Page 20


        the  tape  match  the  setname  in  the  MOUNT command.
        /CHECK-SETNAME is meaningful only for labeled tapes.

/DENSITY: value
        Specifies  the  density  of  the  tape  being  read  or
        written.  The operating system must know the density in
        order to allocate the system tape drive  resources.  If
        this  switch  is  omitted,  the  system default will be
        used. Acceptable values are: 200, 556, 800,  1600,  and
        6250.

/DRIVE-TYPE: option
        Indicates the type of drive to be used for the request.
        Currently,  the  valid options are 9-TRACK and 7-TRACK,
        with  9-TRACK  being  assumed  if  DRIVE-TYPE  is   not
        specified.  Only  unlabeled  tapes will be supported on
        7-track drives.

/LABEL-TYPE: type
        The label type identifies the type of label  processing
        (or  lack  thereof)  to be performed by the system. The
        following label types are defined:

        1.  ANSI - Labels and file structures conform  to  ANSI
            standard; for interchange with non-TOPS-20 systems.

        2.  BYPASS - This type  permits  an  enabled  WHEEL  or
            OPERATOR  to access any tape (labeled or unlabeled)
            in the unlabeled mode.

        3.  EBCDIC - Labels and data are written in EBCDIC  for
            interchange with IBM systems.

        4.  TOPS-20 - Superset of ANSI standard for use  within
            TOPS-20 environments.

        5.  UNLABELED -   No   label   processing   or   record
            formatting  is  performed  by  the operating system
            (similar to current MTA device access).  This  mode
            cannot  be used to access tapes that begin within a
            valid VOL1 label.

        A more comprehensive description of labeling  standards
        is given in section 10.0 of this specification.

/NEW
        The user wishes to create a new volume set.  Specifying
        /NEW implies that:

        1.  /READ-ONLY  and  /CHECK-SETNAME  are   ignored   if
            present,  and  the  /START  switch  will produce an
            error if present.
Labeled Tape Processing on TOPS-20                      Page 21


        2.  /WRITE-ENABLED is assumed.

        3.  If the tape set is  labeled,  the  setname  of  the
            volume  set  will  become  the setname given in the
            MOUNT command.


/NOUNLOAD
        Causes all tape volumes to remain on  the  drives  when
        they  are released by a volume switch or termination of
        the request. If /NOUNLOAD  is  not  specified,  TOPS-20
        will unload volumes from the drives after use.

/NOWAIT
        Return control immediately to EXEC command level.  When
        the response is received from QUASAR, a message will be
        printed at the user's terminal. If /NOWAIT is not used,
        the EXEC blocks until QUASAR responds.

/OPERATOR
        Requests that the operator key in the volid  list  (see
        /VOLIDS:  switch).  The /OPERATOR and /VOLIDS: switches
        may not appear together.

/PROTECTION: value
        Specifies the volume protection code (2 octal  digits).
        This  code  governs  access to the volume by non-owners
        (the owner always has full access). It is  the  sum  of
        any subset of the following permission values:

           DP%RD (40) - Read files in file set
           DP%CN (10) - Overwrite/modify files
           DP%CF (04) - Append files to end of file set

        The specified value will be stored in all volume header
        labels  that  are  written  during  this mount request.
        Ignored if tape label type is not TOPS-20.

/READ-ONLY
        Requests and insures that all volumes in the  set  will
        be  mounted  without  write rings to prevent accidental
        erasure. This option is the default, unless the user is
        writing  a  scratch  volume set (/SCRATCH specified) or
        creating a new volume set (/NEW  specified),  in  which
        case /WRITE-ENABLED is assumed.

/REMARK: "text"
        The user provides a quoted text string that is  printed
        at   the  operator's  terminal  when  the  operator  is
        notified of the mount request.

/SCRATCH
        Declares that the  user  wishes  to  access  a  scratch
        volume  set  (presumably  to  write  and  then  read  a
        temporary file).  The  volume  set  will  remain  in  a
Labeled Tape Processing on TOPS-20                      Page 22


        "scratch"  state  when  it is dismounted. No volid list
        may be specified in this case, as the volumes  will  be
        selected by the operator. /NEW and its implications are
        assumed.

/START: option  value
        If the user knows which volume in the set contains  the
        information he wishes to access, he can save the system
        the  expense  of  searching  for  the  data  from   the
        beginning  of the set with the /START switch. Either of
        the following forms is permitted:

        1.  /START: NUMBER number
            The number is the  ordinal  number  of  the  volume
            within the set.

        2.  /START: VOLID volid
            The user specifies the volid of the first volume to
            be mounted.

        If this switch is not present, the first volume of  the
        list is assumed.

/VOLIDS: volid,...,volid
        The system must be supplied with a list of tape  volume
        identifiers,  or volids. This list may come from either
        (but  not  both)  of  two  sources:  the  user's  MOUNT
        command,  or  the  operator. The user has three options
        when making a mount request:

        1.  Omit the /OPERATOR and /VOLIDS: switches. The  EXEC
            will   assume   that   the  user  is  requesting  a
            single-volume  tape  set  whose  volume  identifier
            (volid) is the same as the setname.

        2.  Use  the  /OPERATOR  switch,  requesting  that  the
            operator  key  in  the volids of the volumes in the
            set when the request is received by MOUNTR.

        3.  Give  the  /VOLIDS:  switch  with  a  volid   list,
            indicating  explicitly  the  volumes that are to be
            mounted.

        Regardless of whether the user or the operator provides
        the  list  of volids, that list must include the volids
        of every tape that the user wishes  to  access  in  the
        volume  set  (scratch tapes excepted). In addition, the
        volids must represent consecutive  volumes  within  the
        set,  and  they  must have the same order as the actual
        volumes. It is not required that the list  include  all
        volumes  that  compose  the  volume  set;  however, any
        volumes not specified  will  not  be  accessible.  Note
        that, when accessing an unlabeled tape or tape set, the
        operating system makes no attempt to determine  whether
        the   correct   volumes   have   been  mounted,  as  no
Labeled Tape Processing on TOPS-20                      Page 23


        identifcation is assumed to be recorded on an unlabeled
        tape.

        Note that a special case of  option  3,  above,  is  to
        supply  no  volume  identifiers to the /VOLIDS: switch.
        This implies that the user is creating a new  tape  set
        (/NEW  or /SCRATCH must be given), and all volumes will
        be assigned by the operator as they are needed.

        If the user is creating a  new  volume  set  using  the
        /OPERATOR  switch or writing a file that extends beyond
        the end of the last volume of the  specified  set,  the
        system  will  automatically  request  that the operator
        mount a scratch volume to accomodate the  request.  The
        system  will  rewrite  the volume labels of the tape to
        indicate that the tape is now owned by  the  user,  and
        the  program  will  resume  writing  its file. The user
        program can obtain the volid of the new tape by issuing
        the appropriate monitor call.

/WRITE-ENABLED
        Requests and insures that all volumes in  the  set  are
        mounted   with  write  rings  to  permit  write  access
        contingent  upon  file   and   volume   access   codes,
        expiration   date,  etc.  If  both  /WRITE-ENABLED  and
        /READ-ONLY are specified, the more  recently  specified
        switch  will  prevail.  In  the  absence  of  the /NEW,
        /SCRATCH, and /WRITE-ENABLED  switches,  /READ-ONLY  is
        assumed.
Labeled Tape Processing on TOPS-20                      Page 24


5.1.2  The DISMOUNT TAPE Command - 

This command informs TOPS-20 that access to the volume  set  is
no longer needed by the user, and that the resources associated
with the set are to be returned to the system pool.

The DISMOUNT TAPE command has the following format:

   DISMOUNT TAPE (NAME) name

where "name" is either a physical tape device of the form MTn:,
a  logical  name  defined from the the setname specified in the
MOUNT command, or any other  logical  name  associated  with  a
system  tape  device.   If the dismount operation is successful
and a logical name was  given,  the  EXEC  will  undefine  that
logical  name.   If  the  user has an open JFN on the tape, the
EXEC will print the message

   ?Device MTn: open on JFN n
   %Close JFN?

If the user responds YES or just presses the  RETURN  key,  the
EXEC   will  close  the  JFN  and  proceed  with  the  dismount
operation.  If a NO response is given, nothing is affected  and
the user is returned to command level.

The DISMOUNT TAPE command is valid  only  when  the  system  is
operating with tape drive allocation enabled.
Labeled Tape Processing on TOPS-20                      Page 25


Several of the currently implemented EXEC  commands  will  grow
new functions and interpretations as described below.



5.1.3  INFORMATION (ABOUT) MOUNT-REQUESTS - 

This command will interface with QUASAR  to  provide  the  user
with  the  status  of outstanding requests for device mounts by
users in the system.  A sample display might look like this:

        SETNAME VOLUME  STATUS  TYPE    JOB     USER
        ------  ----    ------  ------  ---     ----
        FOO     FOO     Waiting 9/1600   9      R.ACE
        NEWSET  Scratch Waiting 9/800   23      MUMBLE
        MASTER  005062  MTA1:   9/800   23      MUMBLE
        CRUFTY          Aborted 7/556   41      ENGEL

The information returned by the command is as follows:

SETNAME The name of the tape set being accessed.

VOLUME  The volume identifier of the  tape;   if  the  user  is
        requesting  a  scratch  tape  that  has  not  yet  been
        mounted, the word "Scratch" will appear in this column

STATUS  Either "Waiting"  (user  is  waiting  for  tape  to  be
        mounted),   "Aborted"  (error  occurred  during  volume
        switch and the user hasn't DISMOUNTed  the  tape  yet),
        or, if the request is currently using a tape drive, the
        drive name is displayed

TYPE    Drive type and density (e.g., 9/1600 would represent  a
        9-track drive operating at 1600 BPI)

JOB     The job number of the user who made the request

USER    The name of the user who made the request

If it is desired to restrict the display to requests  for  only
one  user,  the  following  switch can be placed after the TAPE
keyword:

   /USER:  [username]

If the username is omitted, it will default  to  the  logged-in
user's user name.
Labeled Tape Processing on TOPS-20                      Page 26


5.1.4  INFORMATION (ABOUT) VOLUMES (OF TAPE) Name - 

This command tells the user the current volume-identifier  list
for  the  specified tape set (the name argument is the physical
tape device or a logical  name).   This  command  is  essential
because TOPS-20 provides the feature of automatically assigning
tape volumes to a user job as they are needed.

The EXEC response to this command will look like:

     VOLUMES OF TAPE SET setname: volid,...,volid



5.1.5  TMOUNT - 

To provide a smooth transition from a Release  3  system  to  a
Release  4  system  with  tape  processing, the existing TMOUNT
command will continue to be supported.   The  scope  of  TMOUNT
will be somewhat limited with respect to the new MOUNT command;
if additional functionality is desired,  MOUNT  must  be  used.
Eventually, TMOUNT will be phased out of TOPS-20.

The EXEC programming for TMOUNT will be changed to interface it
to  QUASAR.  The only change in the user interface will be that
the user will be assigned an MT device instead of an MTA.

As TMOUNT relies  upon  MOUNTR  to  allocate  tape  drives  and
supervise  tape processing, an installation choosing to disable
the  tape  drive  allocation  system  (see  Section  5.4)  will
sacrifice the services of TMOUNT.



5.1.6  Canceling Tape Mount Requests - 

To permit the user to cancel outstanding tape  mount  requests,
an  extension  will  be  made to the EXEC CANCEL command.  This
command will have effect only upon requests that have  not  yet
successfully  mounted  any  volumes;   i.e.,  a request that is
using a mounted tape or waiting for a tape mount as a result of
a  volume  switch  may not be canceled.  The form of the CANCEL
MOUNT command is:

   CANCEL (REQUEST TYPE) MOUNT setname

A typical response from QUASAR might be:

   [1 mount request canceled]
Labeled Tape Processing on TOPS-20                      Page 27


5.1.7  ASSIGN - 

If the installation chooses to  enable  the  new  TOPS-20  tape
processing software (with the appropriate SETSPD command), user
tape accesses must be made  via  the  MOUNT  command,  not  the
ASSIGN  command.   Note, however, that tape drives that are SET
UNAVAILABLE by  the  operator  (see  section  5.2.3.2)  can  be
ASSIGNed  by  user  jobs.   To  take advantage of the security,
operator control, and accounting  afforded  by  MOUNTR,  it  is
recommended  that  the  installation  set  all drives AVAILABLE
unless they require maintenance.



5.1.8  BACKSPACE - 

Unlabeled tapes:  No change from Release 3 operation.
Labeled tapes:  The RECORDS function is not supported and  will
return an error.



5.1.9  DEASSIGN - 

MTA devices:  No change from Release 3 operation.
MT devices:  Releases the device if it  was  ASSIGNed.   It  is
preferred,  however,  that the DISMOUNT TAPE command be used to
release MT devices.



5.1.10  EOF - 

Unlabeled tapes:  No change from Release 3 operation.
Labeled tapes:  The EXEC looks for a JFN open to the  specified
device.   If  it  finds  one,  it  closes  it (thus forcing the
monitor to write end-of-file labels).  If no open JFN is found,
the EXEC returns an error.



5.1.11  REWIND - 

Unlabeled tapes:  No change from Release 3 operation.
Labeled  tapes:   Rewinds  to  beginning  of  volume  set.   If
/CURRENT-VOLUME-ONLY  switch is given, rewinds to the beginning
of the current volume.
Labeled Tape Processing on TOPS-20                      Page 28


5.1.12  SKIP - 

Unlabeled tapes:  No change from Release 3 operation.
Labeled tapes:  The RECORDS function is not supported and  will
return  an  error.   The LEOT function will position the device
after the end of the last file of the volume set.



5.1.13  UNLOAD - 

MTA devices:  No change from Release 3 operation.
MT devices:  Not legal;  returns an error.
Labeled Tape Processing on TOPS-20                      Page 29


5.1.14  Scenarios - 

In an attempt to add some  coherence  to  the  volume  (no  pun
intended)  of  information in this specification, some examples
will be presented here, hopefully illustrating how a particular
goal  might  be  accomplished  under  the  new  tape processing
system.



5.1.14.1  Creating a File on Labeled Tape - 

In this example, the user wishes to create a file on a  set  of
tapes  supplied  by  the  installation.  The following dialogue
appears at the user's terminal:

     @MOUNT TAPE MASTER: /DENSITY: 1600 /DRIVE-TYPE: 9-TRACK -
     /LABEL-TYPE: TOPS-20 /NEW /PROTECTION: 77 /NOUNLOAD
     [Tape set MASTER, volume 002001 mounted]
     [MASTER: defined as MT2:]

     @RUN WRMAST
         .
         .
         .
     @!Now find out the names of the volumes in the set!
     @INFORMATION (ABOUT) VOLUMES (OF TAPE) MASTER:
     Volumes of tape set MASTER: 002001,002002,002003
     @DISMOUNT TAPE (NAME) MASTER:
     @

Notes:

     1.  The user is creating a new volume set on scratch tapes
         that  are  being  supplied by the operator as they are
         needed.

     2.  The /WRITE-ENABLED switch is implied by /NEW.

     3.  The volumes of the set will remain on the drives  when
         they  are  released  by  the user, as requested by the
         /NOUNLOAD switch.




5.1.14.2  Reading a File on Labeled Tapes - 

Suppose, now, that the user wishes to read the file he  created
in the previous example.  He might type,

     @MOUNT TAPE OLDMST: /DENSITY: 1600 /DRIVE-TYPE: 9-TRACK -
     /LABEL-TYPE: TOPS-20 /VOLIDS: 002001,002002,002003
     [Tape set OLDMST, volume 002001 mounted]
     [OLDMST: defined as MT0:]
Labeled Tape Processing on TOPS-20                      Page 30


     @RUN RDMAST
         .
         .
         .
     @DISMOUNT TAPE (NAME) OLDMST:
     @




5.1.14.3  Reading a Tape from an IBM System/370 - 

The user wishes to read a file named ACCTS-PAYABLE that resides
on  a  set  of  IBM  labeled tapes whose volume identifiers are
known to be:  000442, 000443, 000500.  The user knows that  the
file begins on volume 000443.

     @MOUNT TAPE INPUT: /VOLIDS: 000442,000443,000500 -
     /START: VOLUME 000443 /LABEL-TYPE: EBCDIC
     [Tape set INPUT, volume 000443 mounted]
     [INPUT: defined as MT5:]

     @RUN ACTPAY
         .
         .
         .
     @DISMOUNT TAPE (NAME) INPUT:
     @

By telling the system to start looking  for  the  file  on  the
second volume of the set, the user saved time by eliminating an
unnecessary  search  of  the  first  volume.   Note  that   the
following  alternate form of the /START:  switch would have the
same effect in this example:

     /START: NUMBER 2



5.1.14.4  Operator-Supplied Volume Identifiers - 

This is a sequence that might  appear  in  a  batch  job.   The
operator  is  given a run sheet for the job, and written on the
sheet is the list of volids that compose the job's  input  tape
set.   When  the  tape mount message is printed at the CTY, the
operator enters the volids as they appear on the run sheet.

     @MOUNT TAPE INPUT: /DENSITY: 800 /LABEL-TYPE: ANSI -
     /READ-ONLY /OPERATOR -
     /REMARK: "VOLUMES ARE LISTED ON JOB RUN SHEET"
     [Tape set INPUT, volume ABC mounted]
     [Volume identifiers: ABC, DEF]
     [INPUT: defined as MT1:]

     @RUN PROG
Labeled Tape Processing on TOPS-20                      Page 31


         .
         .
         .
     @DISMOUNT TAPE (NAME) INPUT:
     @



5.1.14.5  Initializing a Tape with CHECKD - 

CHECKD is described in Section 5.3.

     @CHECKD
     CHECKD>INITIALIZE (TAPE VOLUME) 001234 (LABEL TYPE) -
     TOPS-20 /DENSITY: 800
     [Waiting for tape to be mounted]
     [Tape initialized]
     CHECKD>EXIT
     @
Labeled Tape Processing on TOPS-20                      Page 32


5.2  Operator Interface to TOPS-20

Release 4 of the GALAXY system features the  OPR/ORION  scheme,
which  implements  a  more  homogeneous  interface  between the
operator and TOPS-20.  The  new  tape  processing  system  will
utilize  this  facility  and,  where  required,  conform to its
protocols and message formats.



5.2.1  Automatic Volume Recognition - 

The AVR feature permits the operator  to  mount  labeled  tapes
without  the  need to identify them to the system with a keyin.
Volume identifiers for unlabeled tapes must be provided to  the
system with a command described in a subsequent section.

When a tape is placed on a drive that has AVR enabled (see  AVR
Control  section,  below) and the drive is brought to a "ready"
state, the hardware notifies the monitor of this event, and the
monitor in turn tells MOUNTR, who rewinds the tape and inspects
the volume for label information (see Section 10.1.7).  If  the
tape  is  determined  to  be  labeled,  the system extracts the
volume identifier from the VOL1 label and tries to  satisfy  an
outstanding user mount request with this volume.  If no user is
currently requesting  the  volume,  its  volume  identifier  is
remembered,  and the tape may be used to satisfy a request that
is submitted at some time in the future  (i.e.   the  tape  has
been prestaged by the AVR operation).

If no valid label is found  on  the  tape,  the  system  simply
remembers  that an unlabeled tape has been placed on the drive.
The operator may subsequently manually identify this volume  to
the system with a keyin.



5.2.2  Informational Messages to the Operator - 

These messages will be printed at the CTY through the  WTO  and
WTOR  mechanisms of OPR/ORION.  Unless otherwise indicated, all
messages are time stamped and require no operator action.



5.2.2.1  Tape Mounted - A tape has been mounted on a drive with
AVR enabled.

        --TAPE MOUNTED--
    MTAn: VOLUME volid label-type TAPE MOUNTED
Labeled Tape Processing on TOPS-20                      Page 33


5.2.2.2  Tape Assigned To User Job - A tape drive containing an
identified volume has been assigned to a user job.

        --TAPE VOLUME IN USE--
    MTAn: VOLUME volid IN USE BY USER user JOB job# LINE line#



5.2.2.3  Tape Released By Job - A user job has released control
of a tape;  the drive is now under system control.

        --TAPE DRIVE RELEASED BY USER--
    MTAn: VOLUME volid - disposition

Where disposition is either of:
    1. REMAINING MOUNTED ON DRIVE
    2. DISMOUNT AND SAVE



5.2.2.4  Incorrect Write Protection - A user requested a volume
write-enabled  and  the  volume was mounted write-protected, or
vice versa.  TOPS-20 has unloaded the volume from the drive.

        --TAPE WRITE PROTECT ERROR--
    MTAn: VOLUME volid
    order WRITE RING AND REMOUNT TAPE

Where "order" is either INSERT or REMOVE.



5.2.2.5  Write-protected Scratch Tape Mounted - The    operator
has  mounted  a write-protected scratch tape and the system has
unloaded it from the drive.

        --NO RING IN SCRATCH TAPE--
    UNLOADING DRIVE MTAn: VOLUME volid
    REMOUNT SCRATCH TAPE WITH WRITE RING



5.2.2.6  User Mount Request Received By System - A   user   has
submitted  a  tape  mount  request  to  the system.  The system
informs the operator of the volumes of the set that the user is
requesting.

        --TAPE SET REQUEST--
    VOLUME SET setname, USER user JOB job# LINE line#
    USER'S REMARK: remark
    VOLUMES: volid,volid,...
Labeled Tape Processing on TOPS-20                      Page 34


5.2.2.7  User Mount Request Needs Volids - This   message    is
identical  to  the  previous  message  except that the VOLUMES:
line of the message is replaced by the text

    RESPOND WITH VOLUME-ID LIST

This is a WTOR message, meaning the operator must reply to  it.
The   user  has  specified  /OPERATOR  in  his  MOUNT  command,
requesting that the operator supply  the  volid  list  for  the
request.   It  is assumed that the operator has been forewarned
via a job run sheet or similar mechanism.  Response:  either of
the following:

   VOLUMES volid1,volid2,...,volidn

   REFUSE reason

Nonalphanumeric volids must be enclosed in quotes (").



5.2.2.8  User Tape Set Request Complete - This is the companion
to  the  above  two  messages;   it indicates that the user has
finished using the tape volume set.

        --TAPE SET REQUEST COMPLETE--
    COMPLETED REQUEST setname, USER user JOB job# LINE line#
    SAVE VOLUMES volid,volid,...



5.2.2.9  User Requires A Tape To Be Mounted - This      message
requires  operator  action.  It is disposed of in either of the
following ways:

     1.  The operator mounts the  desired  tape  and  the  tape
         conforms  to  the  specifications  of the request.  No
         keyed-in reply is required in this instance.

     2.  The operator, for any reason,  cannot  or  refuses  to
         satisfy  the  user's  request.   A refusal response to
         this message must be keyed in.

        --MOUNT TAPE--
    MOUNT label-type VOLUME volid, density BPI, mode
    USER user JOB job# LINE line#

The mode is either READ-ONLY or WRITE-ENABLED.  If the user  is
requesting  a  scratch  tape, the "VOLUME volid" segment of the
message will be replaced by "SCRATCH TAPE".  Response:

   REFUSE reason

The response is keyed in if and only if  the  operator  chooses
not  to satisfy the request.  The reason is a text message that
Labeled Tape Processing on TOPS-20                      Page 35


will be passed on verbatim to the user job.



5.2.2.10  Drive Does Not Support Density - A user has requested
an unlabeled tape mount at density X and a tape with that volid
has been mounted on a drive that does not  support  density  X.
The  system unloads the tape and tells the operator to mount it
on a drive that supports density X.

        --REMOUNT TAPE VOLUME--
    MTAn: VOLUME volid BEING UNLOADED
    REMOUNT VOLUME volid ON density BPI DRIVE



5.2.2.11  Tape Drive Has Been Unloaded - The     system      is
informing  the  operator  that  a tape has been unloaded from a
drive.

        --TAPE DRIVE UNLOADED--
    MTAn: VOLUME volid UNLOADED
    %USE THE UNLOAD COMMAND TO UNLOAD TAPE DRIVES

The last line is a warning message that  appears  only  if  the
operator  unloads  the  drive manually (as opposed to using the
UNLOAD command to OPR).



5.2.2.12  Change In Tape Drive Availability - The operator  has
set  a  tape  drive  available  or  unavailable  with  the  SET
TAPE-DRIVE commnad to OPR.

        --TAPE DRIVE SET status--
    MTAn: SET status FOR USE BY SYSTEM
    %DRIVE IS CURRENTLY IN USE BY USER user JOB job# LINE line#

"status" is either AVAILABLE or UNAVAILABLE.  The last line  is
a  warning  that  appears  only  if  the  operator  is  setting
unavailable a drive that is currently in use  by  a  user  job.
The command is deferred until the user releases the drive.



5.2.2.13  Tape I/O Operation Timed Out - A tape I/O JSYS issued
by  MOUNTR  took too long to execute.  This is an informational
message  that  could  indicate  faulty  hardware   or   monitor
software.

        --TAPE DRIVE TIMED OUT--
    MTAn: OPERATION TIMED OUT
Labeled Tape Processing on TOPS-20                      Page 36


5.2.2.14  Error Positioning Tape - An error was reported by the
monitor  to  MOUNTR as a result of a tape positioning operation
(e.g.  backspace record).  This could indicate a  bad  tape  or
faulty hardware.

        --TAPE POSITIONING ERROR--
    MTAn: POSITIONING OPERATION FAILED



5.2.2.15  Label Write Error - TOPS-20  encountered   an   error
condition (faulty hardware or bad magtape) while writing volume
header labels on a tape.  The appropriate  operator  action  at
this  point  might  be to initialize another volume to the same
density, label-type, and volid;  then this volume could be used
by the user program instead of the one that incurred the error.

        --TAPE ERROR WRITING LABELS--
    ERROR WRITING LABELS ON MTAn: VOLUME volid



5.2.2.16  Bad IPCF Message From GALAXY Task - MOUNTR   received
an  unrecognized  or  incorrectly-formatted IPCF message from a
GALAXY component.  This display is informational only,  and  no
operator  action is required;  the problem should be brought to
the attention of a software specialist.

        --MOUNTR SYSTEM TASK ERROR--
    BAD IPCF MESSAGE RECEIVED FROM component

The "component" is either ORION or QUASAR.



5.2.3  Unsolicited Operator Keyins - 

This section describes commands that are keyed in  directly  to
OPR and are not responses to system WTOR messages.



5.2.3.1  AVR Control - The operator can control  the  automatic
volume recognition feature of the system with the commands,

   ENABLE AUTOMATIC-VOLUME-RECOGNITION (FOR) object
   DISABLE AUTOMATIC-VOLUME-RECOGNITION (FOR) object

Where "object" is either of:

   TAPE-DRIVE MTAn:
   ALL-TAPE-DRIVES

If a tape drive is operating with  AVR  enabled,  then  MOUNTR,
upon  being  informed  by the monitor that a tape has just been
Labeled Tape Processing on TOPS-20                      Page 37


placed on the drive, will automatically attempt to identify the
volume  on  the  drive by reading the first record on the tape.
If AVR is disabled, the operator must give the MOUNT TAPE-DRIVE
command  to  inform  MOUNTR  that  the  tape  on  the  drive is
available for processing.

It is expected that the normal mode of system operation will be
with  AVR  enabled  on  all  tape  drives.  One possible use of
disabling AVR is to  avoid  runaway  when  initializing  virgin
tapes.  Use of these commands in no way affects the security of
the system;  it merely  controls  when  tapes  are  identified.
Since  labeling  is  not  supported for 7-track drives, TOPS-20
will ignore any attempts to enable AVR on these drives.



5.2.3.2  Tape Drive Availability Control - If it is desired  to
exclude  a  tape  drive  from normal system resource scheduling
(e.g.  drive broken), the operator may issue the command:

   SET TAPE-DRIVE MTAn: UNAVAILABLE reason

Note that the operator must type a reason (an arbitrary  string
of text) that describes why the action was taken.  This command
causes an entry to be made in the SYSERR file, and  the  reason
is included in this entry.

The complementary command to restore a drive is:

   SET TAPE-DRIVE MTAn: AVAILABLE (FOR USE BY SYSTEM)

The  status  (available  or  unavailable)  of  each  drive   is
remembered  in  a  file,  and  it  is  preserved  across system
startups.  Thus, a drive set unavailable remains that way until
it is explicitly set available again.



5.2.3.3  Manual Volume Identification - There are  three  cases
where  the operator must inform the system of the identity of a
tape volume:

     1.  An unlabeled tape is mounted

     2.  A tape is mounted on a drive with AVR disabled

     3.  A user is requesting a scratch tape

The MOUNT command for tape drives accomplishes this.  All forms
of this command require that the specified drive contain a tape
that is not associated with any user job, and that the drive be
in the "ready" state.

The MOUNT command for tape drives has two forms:
Labeled Tape Processing on TOPS-20                      Page 38


    Form 1:  MOUNT VOLUME-ID volid (ON) MTAn:

    Form 2:  MOUNT SCRATCH-TAPE [/VOLUME-ID: volid] (ON) MTAn:

Form 1 serves to supply the system with  the  volume-identifier
of  the  tape.  This form is used to identify an unlabeled tape
(case 1, above) or a tape on a drive with  AVR  disabled  (case
2).  If the specified drive has AVR disabled, the system "takes
the operator's word" that  the  volid  is  correct,  and  label
checking  is performed if and when the tape drive is associated
with a user request that is not calling for the tape in  BYPASS
mode.

Form 2 permits the operator to declare a volume to be a scratch
volume.   A  scratch  volume will be requested by a user who is
writing a file on tape that extends beyond the last  volume  in
the  set  (i.e.   the user is implicitly asking the operator to
assign a new volume to  him).   TOPS-20  will  not  permit  the
operator  to  declare an unexpired labeled tape to be a scratch
volume, so if the system is unaware of the true identity  of  a
volume  (e.g  AVR  is disabled for the drive), it will reject a
Form 2 MOUNT command.  To supply the volid of an unlabeled tape
and  simultaneously  declare  it  to  be  a  scratch  tape, the
/VOLUME-ID:  switch may be used.

If the system accepts a MOUNT command, it attempts to satisfy a
user request with the volume that was just identified.  If this
cannot be done, the tape is remembered as a prestaged volume.



5.2.3.4  Unloading Tape Drives - Once an operator loads a  tape
onto  a  drive, the system must have full control of that drive
until it unloads the tape.  If the operator wishes to unload  a
mounted  tape (perhaps to replace a prestaged, unused tape with
another tape to satisfy a pending request), he  must  give  the
following command:

   UNLOAD (TAPE-DRIVE) MTAn:

If the tape is not in use by a user, the system will unload  it
from  the  drive,  freeing  the drive for another tape.  If the
tape is in use, the command is rejected.



5.2.3.5  Obtaining Tape Drive Parameters - It   is   at   times
necessary for an operator to obtain information about the drive
types and supported densities of the tape drives on the system.
The following commands serve this purpose:

   SHOW PARAMETERS ALL TAPE-DRIVES
   SHOW PARAMETERS TAPE-DRIVE MTAn:

Sample output from this display follows:
Labeled Tape Processing on TOPS-20                      Page 39


        DRIVE   TYPE    DENSITIES
        -----   ----    ---------
        MTA0:   9-TRACK 200, 556, 800, 1600
        MTA1:   9-TRACK 200, 556, 800, 1600
        MTA2:   Set unavailable for use
        MTA3:   9-TRACK 1600, 6250



5.2.3.6  Obtaining Tape Drive Status - The operator may at  any
time  obtain a current status display of the system tape drives
by giving either of the commands,

   SHOW STATUS ALL TAPE-DRIVES
   SHOW STATUS TAPE-DRIVE MTAn:

A display with the following headings will appear:

        DRIVE  VOLUME TYPE      DEN  SCR  AVR  STATUS
        -----  ------ ----      ---  ---  ---  ------

The information displayed in each column is:

   DRIVE - The tape drive name (e.g.  MTA1:)

   VOLUME - The volid of the tape (a string from  1  to  6  "a"
   characters long identifying the volume to the system)

   TYPE - The label type of the volume (one of  the  following:
   Unlabeled, ANSI, EBCDIC, or TOPS-20)

   DEN - The density of the volume (shown  only  if  the  label
   type is ANSI, EBCDIC, or TOPS-20)

   SCR - Either "Yes" or "No", indicating,  respectively,  that
   the volume is or is not a scratch volume

   AVR - Either  "Yes"  or  "No",  describing  whether  or  not
   Automatic Volume Recognition is enabled for the drive.

   STATUS - Will be one of the following:
       SET UNAVAILABLE FOR USE
       NOT ACCESSIBLE BY TOPS-20
       UNLOADED
       LOADED
       IN USE BY USER user JOB job# LINE line#

The VOLUME, TYPE, DEN, and SCR columns will  be  empty  if  the
drive is not loaded.
Labeled Tape Processing on TOPS-20                      Page 40


5.2.3.7  Displaying the User Tape Mount Request Queue - The
operator may examine the tape mount request queue by giving the
following command to OPR:

   SHOW QUEUES MOUNT-REQUESTS

The display produced is identical to that of the EXEC command,

   INFORMATION (ABOUT) MOUNT-REQUESTS

This command is described in section 5.1.3.



5.2.4  TMOUNT Interface - The   current   operator    interface
supported  by  OPLEAS  to  implement the TMOUNT command will no
longer be used.  Requests for tape mounts made  through  TMOUNT
will  be  incorporated  into  the standard request queueing and
operator interface schemes that service the MOUNT command.  The
operator will not need to distinguish requests made with TMOUNT
from ones made with MOUNT.
Labeled Tape Processing on TOPS-20                      Page 41


5.3  CHECKD

5.3.1  Purpose - The  CHECKD  program  will  permit  a   system
administrator  to initialize labeled tapes for use in a TOPS-20
tape processing environment.  A labeled tape is initialized  by
writing  system  volume labels and file label groups framing an
empty, expired file.  Upon the first use of a scratch tape, its
labels  will  be implictly rewritten by the operating system to
reflect any change in its status.  If is desired to change  the
density  or  label  type  of  a  labeled tape, the tape must be
initialized  at  the  selected  density  with  CHECKD,  thereby
destroying  its  current  contents.   Also  provided  will be a
command to read a tape and print any label information  at  the
user's terminal.

It might be desirable for the installation to perform the  tape
initialization operation, to reduce the likelihood of more than
one volume having any given volume identifier.



5.3.2  Use of CHECKD to Initialize Tapes - The   user   invokes
CHECKD by typing CHECKD at the EXEC prompt.  CHECKD will prompt
the user for a command, which may be  one  of  those  described
below.



5.3.2.1  Displaying Tape Label Information - 

   SHOW (LABEL INFORMATION FOR TAPE VOLUME) volid

This command directs CHECKD to call for the  requested  volume,
examine it for labels, and produce the following display at the
user's terminal:

        LABEL TYPE:     label type
        DENSITY:        density
        VOLUME ID:      volume-identifier
        OWNER:          owner
        EXPIRATION DATE: expiration-date

The label type will be ANSI,  EBCDIC,  TOPS-20,  or  UNLABELED.
For TOPS-20 labeled tapes, the owner's name will be displayed.

If CHECKD could not identify the tape, it types:

   % TAPE COULD NOT BE READ

This may occur because the drive cannot read at the density  of
the  tape,  a parity error has been detected, or no information
is recorded on the tape.

If the density of a tape is known, the following switch  should
be specified after the volid in the SHOW command:
Labeled Tape Processing on TOPS-20                      Page 42


   /DENSITY: density

This will insure that the tape  is  mounted  on  a  drive  that
supports the specified density.

The SHOW command instructs TOPS-20 to call for the tape in  the
write-enabled  mode.   Should  the  user wish to initialize the
tape after examining its labels, this feature makes it possible
to  do  so without unloading the tape to put a ring in it.  The
SHOW command does NOT write on or alter the tape in any way.



5.3.2.2  Initializing a Tape - 

To initialize a tape, the following command is given:

  INITIALIZE (TAPE VOLUME) volid (LABEL TYPE) type -
  [switch switch ...]


FIELD   CONTENTS
-----   --------
volid   A volume identifier from one to six "a"  characters  in
        length.   Any  non-alphanumeric  characters  within the
        volid must be preceded by the quoting character (^V).

type    The label type, one of the following:  ANSI, EBCDIC, or
        TOPS-20.

switch  One of the following:

        /DENSITY: density - Specifies the density of the  tape;
        if omitted, the system default will be used.

        /OWNER: username - For TOPS-20 volumes only.  The  name
        of  the  user  who  will own the tape;  if omitted, the
        tape will be a scratch tape.

If the command is successfully specified, CHECKD requests  that
the  operator  mount  the  tape.   When  this  is  done, CHECKD
initializes the tape and prompts for another command.

Note that no EXEC MOUNT command is required when using the SHOW
and  INITIALIZE commands.  CHECKD automatically sends the mount
request to QUASAR.



5.3.3  Labels Written by CHECKD - 
Labeled volumes initialized by the CHECKD program contain:

     1.  A beginning-of-volume label group (VOL1)
Labeled Tape Processing on TOPS-20                      Page 43


     2.  A beginning-of-file-section label group (HDR1)

     3.  Two tape marks framing an empty file

     4.  An end-of-file label group (EOF1)

     5.  A double tape mark, specifying logical end-of-tape

The volume header label (VOL1)  is  composed  as  specified  in
Section 10.1.1.  The accessibility character is set to a space.

The  beginning-  and  end-of-file  label  groups  contain   the
following  fields  and  values  in  the first file-header-label
(HDR1) and first end-of-file label (EOF1):

   File Identifier              (CP  5-21)  'DUMMY-FILE-0000'
   File-set Identifier          (CP 22-27)  Copy of Volume-id
   File Section Number          (CP 28-31)  '0001'
   File Sequence Number         (CP 32-35)  '0001'
   Generation Number            (CP 36-39)  '0001'
   Generation Version Number    (CP 40-41)  '00'
   Creation Date                (CP 42-47)  Date of Init.
   Expiration Date              (CP 48-53)  ' 00000'
   Accessibility                (CP    54)  space
   Block Count                  (CP 55-60)  '000000'
   System Code                  (CP 61-73)  'DECSYSTEM20  '
   Reserved                     (CP 74-80)  spaces

When an initialized tape volume is  first  written  by  a  user
program,  its  system  header  label  group will be updated and
rewritten to reflect the new status of the volume.
Labeled Tape Processing on TOPS-20                      Page 44


5.4  SETSPD

5.4.1  Enabling Tape-drive Allocation - A new  command  may  be
placed  in  the  installation  n-CONFIG.CMD file to control the
mode of tape processing being performed by the system:

   ENABLE TAPE-DRIVE-ALLOCATION

Not  enabling  tape  drive  allocation  will  cause  the   tape
processing system to mimic that of TOPS-20 Release 3.  If drive
allocation is enabled, the system will  operate  in  accordance
with the new functionality described in this specification.

The effect of the ENABLE TAPE-DRIVE-ALLOCATION command will  be
to  set the SF%TVV monitor flag using the SMON JSYS.  This flag
is interrogated by MOUNTR when it starts up, and its setting at
this  time  determines  the  mode of system operation until the
next reload.



5.4.2  Setting Tape-Processing Defaults - If         tape-drive
allocation  is  enabled,  the system manager may set up certain
default  values  that  apply  to  tape-mount   requests.    The
following new commands are supported:

   TAPE-MOUNT-DEFAULT DENSITY density

   TAPE-MOUNT-DEFAULT DRIVE-TYPE drive-type

   TAPE-MOUNT-DEFAULT LABEL-TYPE label-type

"density" is one of: 200, 556, 800, 1600, 6250
"drive-type" is either: 7-TRACK or 9-TRACK
"label-type" is one of: UNLABELED, ANSI, EBCDIC, or TOPS-20

Note that these commands are  meaningful  only  if  the  ENABLE
TAPE-DRIVE-ALLOCATION  command also appears in the CONFIG file.
If defaults  are  not  established  via  SETSPD  commands,  the
following values are assumed:

   DENSITY:     1600
   DRIVE-TYPE:  9-TRACK
   LABEL-TYPE:  UNLABELED
Labeled Tape Processing on TOPS-20                      Page 45


5.5  System Files

Using the new tape processing scheme will add two files to  the
PS:<SYSTEM> directory:


PS:<SYSTEM>TAPNAM.TXT

    This is a file  that  contains  a  text  string  up  to  10
    characters  long  that  identifies  the installation.  When
    MOUNTR writes a volume header  label  group  on  a  labeled
    tape,  it  incorporates  this  string  into the VOL1 label.
    This file should be created  as  a  part  of  the  standard
    software  installation  procedure,  in a fashion similar to
    that of creating the MONNAM.TXT file (i.e., COPY TTY:  (TO)
    TAPNAM.TXT).


PS:<SYSTEM>DEVICE-STATUS.BIN

    This file contains information regarding the  status  (e.g.
    device  available  indicators) of mountable devices.  It is
    created and maintained entirely by  MOUNTR;   there  is  no
    need for the installation to concern itself with this file.



5.6  Software Products

5.6.1  DUMPER - Information in this section is not available at
this time.



5.6.2  USAGE - All  TOPS-20  programs   affiliated   with   the
processing  of USAGE file information must change to accomodate
modifications to the magnetic tape USAGE  entries  required  by
this project.



5.6.3  TOPS-10 Compatibility Package (PA1050) - There  are   no
planned  changes  to  provide  compatibility with TOPS-10 label
UUOs.
Labeled Tape Processing on TOPS-20                      Page 46


6.0  RELIABILITY/AVAILABILITY/SERVICABILITY (RAS)

6.1  Failures Within the Product

6.1.1  Off-line Units - In Release 3  and  earlier  systems,  a
tape  drive  that  drops  off-line  (i.e.   enters a state that
requires operator intervention to restore  software  access  to
the  drive) may be placed back on-line with few adverse affects
on the user program.  Under the  new  system,  a  drive  coming
on-line  must  be  validated  before  any  use  of  the tape is
permitted.  This means that if a drive  goes  off-line  in  the
middle  of  a job, the next user I/O request to that drive will
fail, returning an error code indicating that a device  failure
has  occurred.   The  only action permitted at this point is to
close the JFN and DISMOUNT the tape.



6.1.2  Tape Security - The   volume   and    file    validation
procedures  provide  additional  data  security  not previously
available on TOPS-20 systems.  System managers  may  also  keep
better  track  of  tapes  assigned to programmers and available
scratch tapes.



6.2  Failures Within the Total Environment

6.2.1  Hardware Maintenance Support - The  ability  to  exclude
tape  drives  from system use will provide Field Service with a
way to isolate drives from general  system  use  while  keeping
them available to hardware diagnostic programs.

Use of the tape drive availability controls will result in  the
logging  of  special informational messages in the system error
(SYSERR) file.  The formats of these  messages  appear  on  the
following page.
Labeled Tape Processing on TOPS-20                      Page 47


WORD #  BIT POS CONTENTS
------  ------- --------
   0      0-8   Code for Configuration Status Change (115)
          9-16  Reserved
          17    1 (Entry recorded by TOPS-20)
         18-23  Header Format Version (1)
         24-26  Header length (4)
         27-35  Entry length (excluding header); varible

   1      0-35  Date and time entry was generated

   2            System uptime at time of entry
          0-17  Number of days
         18-35  Fraction of day

   3      0-35  Processor serial # where entry was recorded

   4      0-11  Reserved
         12-17  Operation performed:
                   0 = Attach Massbus Device (SET AVAILABLE)
                   1 = Detach Massbus Device (SET UNAVAILABLE)
         18-35  Reserved

   5      0-12  Reserved
         13-17  Channel type
         18-30  Reserved
         31-35  Unit type

   6      0-35  Logical device name in SIXBIT (e.g. MTA3)

   7            Physical device information from MTOPR
          0-5   Channel #
          6-11  Controller #
         12-17  Unit #
         18-35  Unit serial #

   8      0-17  Reserved
         18-35  Offset from beginning of entry to ASCIZ text
                describing why device was SET UNAVAILABLE (5)
                or 0 for SET AVAILABLE

  9-ON          Reason message from operator (in ASCIZ, present
                only for SET UNAVAILABLE entries)


Words 0 through 3 of each entry  contain  the  standard  SYSERR
entry  header.  The remainder of the entry is a function of the
entry  code.   Note  that  the  SYSERR  entries  for  both  SET
AVAILABLE and SET UNAVAILABLE share the same code number (115);
only the operation differs.  Also, the ASCIZ reason  text  will
be logged by TOPS-20 only for SET UNAVAILABLE events.

For  further  information  and  background   regarding   SYSERR
entries,  the  reader  is  referred  to  the DECSYSTEM-20 Error
Detection, Recovery and Reporting Reference Manual.
Labeled Tape Processing on TOPS-20                      Page 48


7.0  PACKAGING AND SYSTEM GENERATION

7.1  Distribution Media

It is expected that the following programs will be changed as a
result of the tape processing project:

        DUMPER          PLEASE          SETSPD
        EXEC            MOUNTR          TOPS-20
        OPLEAS          QUASAR          CHECKD
        ORION           OPR



7.2  SYSGEN Procedures

The SYSGEN procedures for  building  and  installing  the  tape
processing system will not be changed significantly.
Labeled Tape Processing on TOPS-20                      Page 49


8.0  DOCUMENTATION

It is expected that the following existing manuals will have to
be changed as a result of this project:

        MONITOR CALLS REFERENCE MANUAL
        DECSYSTEM-20 USER'S GUIDE
        OPERATOR'S GUIDE
        DECSYSTEM-20 SOFTWARE INSTALLATION GUIDE
        DECSYSTEM-20 ADVANCED SYSTEM COMMANDS
        DECSYSTEM-20 SYSTEM MANAGER'S GUIDE

In general, all documentation dealing with the use of  magnetic
tapes  requires  updating  to  reflect  the  changes  in system
interfaces engendered by this project.



8.1  Monitor Calls Reference Manual

The Monitor Calls Reference Manual must  include  documentation
for  all  new  JSYSs  that  are  implemented and any functional
additions to existing JSYSs.  This topic is discussed in detail
in another specification.



8.2  DECSYSTEM-20 User's Guide

The User's Guide must describe how to mount a  tape  volume  or
volume  set  to  access  its  contents.   This  will  include a
description of the new EXEC commands as  described  in  Section
5.1.



8.3  Operator's Guide

The Operator's Guide  must  describe  the  operator  interfaces
specified  in Section 5.2.  An operator may also be required to
be know how to use the CHECKD program to initialize tapes.



8.4  DECSYSTEM-20 Software Installation Guide

This manual should document the new SETSPD commands.   It  must
also describe how to create the installation name file for tape
labeling, SYSTEM:TAPNAM.TXT (see Section 5.5).
Labeled Tape Processing on TOPS-20                      Page 50


8.5  DECSYSTEM-20 Advanced System Commands

This manual must be updated to include the full descriptions of
the EXEC commands listed in Section 5.1.



8.6  DECSYSTEM-20 System Manager's Guide

The following files should be added to Table 7-1 (list of files
in <SYSTEM> directory):

    DEVICE-STATUS.BIN   -   Binary   file   containing   status
    information for tape-drives and disk-drives

    TAPNAM.TXT - Installation identifier text  string  that  is
    written in VOL1 labels on labeled tapes

Table 7-2 (list of <SUBSYS> files) should be updated to reflect
the addition of MOUNTR.EXE.
Labeled Tape Processing on TOPS-20                      Page 51


9.0  REFERENCES

9.1  Standards

A complete list of standards  that  affect  the  tape  labeling
project is provided in Section 4.0 of this specification.



9.2  DEC Documents and Publications

     1.  EK-SEDRR-RF-002 -   DECSYSTEM-20   Error    Detection,
         Recovery and Reporting Reference Manual

     2.  AA-4181A-TM - DECSYSTEM-20 USAGE File Specification

     3.  005-003-187-09 - DEC Magnetic  Tape  Labels  and  File
         Structure Standard (DEC Standard # 149)

     4.  PMH-78-001-01-C - Cursory  Project  Plan  for  TOPS-20
         Release 3A and TOPS-20 Release 4, P. Hurley

     5.  EGF-002-00-U -  Cursory  Project   Plan   for   TOPS20
         DX20/TU70,1,2 Magtapes Release 3A, E. Fortmiller

     6.  200-220-004-01 -  ANSI  Tape  Processing  on   TOPS-20
         Functional Specification, T. Hess

     7.  MLB-78-002-02-S - Functional Specification for the New
         Operator Interface, M. Berkowitz




9.3  Other Specifications And Documents

     1.  IBM GC26-3795-2 - OS/VS Tape Labels
Labeled Tape Processing on TOPS-20                      Page 52


10.0  DESCRIPTION OF LABEL FORMATS AND FILE STRUCTURES

10.1  Label Formats

This section will describe the formats  of  DEC  Standard  tape
labels  as  processed  by  TOPS-20.   There will be a pictorial
representation of each label followed by explanations  of  some
of  the fields in greater detail when necessary.  When the word
"RESERVED" appears as a field name, that field is reserved  for
future  standardization,  and  it  must  contain  spaces.   The
contents of all fields preceded by an asterisk (*) are  defined
specifically by the TOPS-20 labeled tape implementation and are
described herein.  Fields marked  by  a  number  sign  (#)  are
defined  by  DEC  Standard  149.   All other field contents are
defined by ANSI Standard X3.27.  A list of differences  between
labeling standards is given in Section 10.4.

Labels are  composed  entirely  of  ASCII  characters.   Unless
otherwise noted, all numeric values have a decimal radix.

The meanings of the field headings are as follows:

     CP         - Character position in the label.
     FIELD NAME - Reference name of the field.
     LEN        - Length of the field in ASCII characters.
     CONTENTS   - Contents of the field.
Labeled Tape Processing on TOPS-20                      Page 53


10.1.1  Volume Label - 

     !=======================================================!
     !   CP   !     FIELD NAME     ! LEN  !     CONTENTS     !
     !=======================================================!
     ! 1 - 3  !  LABEL IDENTIFIER  !  3   !      "VOL"       !
     !-------------------------------------------------------!
     !   4    !    LABEL NUMBER    !  1   !       "1"        !
     !-------------------------------------------------------!
     ! 5 - 10 ! VOLUME IDENTIFIER  !  6   !   VOLUME LABEL   !
     !        !                    !      ! ANY ALPHANUMERIC !
     !        !                    !      ! OR SPECIAL CHAR- !
     !        !                    !      !ACTERS - MUST NOT !
     !        !                    !      !  BE ALL SPACES   !
     !-------------------------------------------------------!
    #!   11   !   ACCESSIBILITY    !  1   ! ANY ALPHANUMERIC !
     !        !                    !      ! OR SPECIAL CHAR- !
     !        !                    !      !  ACTER. A SPACE  !
     !        !                    !      !     MEANS NO     !
     !        !                    !      !   RESTRICTIONS   !
     !-------------------------------------------------------!
     !12 - 24 !      RESERVED      !  13  !      SPACES      !
     !-------------------------------------------------------!
     !25 - 37 !    SYSTEM CODE     !  13  !IDENTIFICATION OF !
     !        !                    !      !   SYSTEM THAT    !
     !        !                    !      !CREATED VOL LABELS!
     !-------------------------------------------------------!
    #!38 - 50 !  OWNER IDENTIFIER  !  13  ! THE CONTENTS OF  !
     !        !                    !      !  THIS FIELD ARE  !
     !        !                    !      ! SYSTEM DEPENDENT !
     !-------------------------------------------------------!
    #!   51   !DEC STANDARD VERSION!  1   !       "1"        !
     !-------------------------------------------------------!
     !52 - 79 !      RESERVED      !  28  !      SPACES      !
     !-------------------------------------------------------!
     !   80   ! LABEL STD VERSION  !  1   !       "3"        !
     !=======================================================!



10.1.1.1  Accessibility - 
INPUT:  If this field contains a space, no access  restrictions
will be imposed.  If it contains a "1" and the VOL1 system code
indicates that the volume was created by TOPS-20,  access  will
be  based  upon  the  contents  of  the VOL2 volume access code
field.  Any other combinations of accessibility and system code
will  require  the  user  to  have WHEEL or OPERATOR capability
enabled to access the volume.
OUTPUT:  ANSI and EBCDIC tapes will contain  a  space  in  this
field.  TOPS-20 tapes will contain a "1".
Labeled Tape Processing on TOPS-20                      Page 54


10.1.1.2  System Code - A   proposal   is    currently    under
consideration  by  the  ANSI  X3 committee to define the System
Code field within the VOL1 label.  This field  will  contain  a
code that identifies the operating system that wrote the volume
label group.
INPUT:  Refer to description of VOL1 Accessibility field.
OUTPUT:  ANSI and EBCDIC tapes  will  contain  spaces  in  this
field.  TOPS-20 tapes will contain the text "DECSYS20   ".



10.1.1.3  Owner Identifier Field - The  DEC  standard   defines
this field as follows:

     CP 38 - 39 = D%
     CP 40      = Machine code
     CP 41 - 50 = Implementation dependent

The "D%x" characters (CP 38-40) provide a system identification
method  so  that the remaining data in the owner identifier can
be interpreted.  The "x" (CP 40) is chosen from the table,

        Machine Code    Machine

                8       PDP-8
                A       PDP-10
                B       PDP-11
                C       VAX-11/780
                F       PDP-15
                K       DECSYSTEM-20

In the case of tapes  produced  on  DECSYSTEM-20  machines  (CP
38-40  =  D%K),  CP  41-50  will  contain  an installation code
consisting of 10 ASCII characters.  When CHECKD  initializes  a
labeled  tape,  it  will  obtain the installation code from the
file SYSTEM:TAPNAM.TXT.



10.1.2  Ancillary Volume Label - In  order  to   provide   full
DECSYSTEM-20  access protection and owner identification, it is
necessary to have an additional  system  label  record  in  the
volume-label set.  This record is the VOL2 system volume label.
The information contained in this label  complements  the  VOL1
label  owner  identification  field.  The VOL2 label is written
only on TOPS-20 tapes.
Labeled Tape Processing on TOPS-20                      Page 55


     TOPS-20 ANCILLARY SYSTEM VOLUME LABEL (VOL2)

     !=======================================================!
     !   CP   !     FIELD NAME     ! LEN  !     CONTENTS     !
     !=======================================================!
     ! 1 - 3  !  LABEL IDENTIFIER  !  3   !      "VOL"       !
     !-------------------------------------------------------!
     !   4    !    LABEL NUMBER    !  1   !       "2"        !
     !-------------------------------------------------------!
     ! 5 - 10 !    ACCESS CODE     !  6   !NUMERIC CHARACTERS!
     !        !                    !      !SPECIFYING VOLUME !
     !        !                    !      !      ACCESS      !
     !-------------------------------------------------------!
     !11 - 22 ! OWNER'S DIRECTORY  !  12  !NUMERIC CHARACTERS!
     !        !   (TOPS10 ONLY)    !      !  SPECIFYING PPN  !
     !-------------------------------------------------------!
     !23 - 61 !    OWNER'S NAME    !  39  ! ANY ALPHANUMERIC !
     !        !                    !      !CHARS. SPECIFYING !
     !        !                    !      !    USER NAME     !
     !-------------------------------------------------------!
     !62 - 80 !  RESERVED FOR DEC  !  19  !      SPACES      !
     !=======================================================!

On input, the processing of  additional  system  volume  labels
(viz.,  VOL2  through VOL9) is controlled by information in the
VOL1 label.  If the VOL1 owner identifier  indicates  that  the
volume  was  created by TOPS-20 and the VOL1 accessibility is a
"1", then VOL2, if present, will be examined for TOPS-20  owner
identifier  and  availability  information;   VOL3 through VOL9
will be ignored if present.  In all other cases,  VOL2  through
VOL9  will  be  ignored  if present.  The fields of the TOPS-20
VOL2 label have the following significance:



10.1.2.1  Access Code - The access code  will  be  the  TOPS-20
volume protection, six digits, zero filled and right-justified.
It will consist of four zero digits  followed  by  a  two-digit
code  specifying access restrictions placed on users other than
the owner of the volume.  The following bits are defined:

   DP%RD (40) - Read files in file set
   DP%CN (10) - Overwrite/modify files
   DP%CF (04) - Append files to end of file set

The owner of the volume is subject to none of the volume access
restrictions described above.
Labeled Tape Processing on TOPS-20                      Page 56


10.1.2.2  Owner's Directory - This    field    contains     two
zero-filled,  right-justified,  six-digit numbers, specifying a
TOPS-10 project-programmer number.
INPUT:  Ignored
OUTPUT:  12 zeros are written here



10.1.2.3  Owner's Name - The owner's name  field  will  be  the
user  name  by  which the owner logs in to the system.  If this
field contains all blanks, the volume will  be  regarded  as  a
scratch tape.
Labeled Tape Processing on TOPS-20                      Page 57


10.1.3  File Header Labels - 

     FIRST FILE-HEADER-LABEL (HDR1)

     !=======================================================!
     !   CP   !     FIELD NAME     ! LEN  !     CONTENTS     !
     !=======================================================!
     ! 1 - 3  !  LABEL IDENTIFIER  !  3   !      "HDR"       !
     !-------------------------------------------------------!
     !   4    !    LABEL NUMBER    !  1   !       "1"        !
     !-------------------------------------------------------!
    *! 5 - 21 !  FILE IDENTIFIER   !  17  !ANY ALPHNUMERIC OR!
     !        !                    !      !SPECIAL CHARACTER !
     !        !                    !      !IN THE CENTER FOUR!
     !        !                    !      !  COLUMNS OF THE  !
     !        !                    !      ! ASCII CODE TABLE !
     !-------------------------------------------------------!
     !22 - 27 !FILE-SET IDENTIFIER !  6   !    SETNAME OF    !
     !        !                    !      !  FILE/VOLUME SET !
     !-------------------------------------------------------!
     !28 - 31 !FILE SECTION NUMBER !  4   !NUMERIC CHARACTERS!
     !        !                    !      !STARTS AT 0001 AND!
     !        !                    !      !IS INCREMENTED ON !
     !        !                    !      ! VOLUME SWITCHES  !
     !-------------------------------------------------------!
     !32 - 35 !FILE SEQUENCE NUMBER!  4   !FILE NUMBER WITHIN!
     !        !                    !      !  VOLUME SET FOR  !
     !        !                    !      !THIS FILE. STARTS !
     !        !                    !      !     AT 0001      !
     !-------------------------------------------------------!
     !36 - 39 ! GENERATION NUMBER  !  4   !NUMERIC CHARACTERS!
     !-------------------------------------------------------!
     !40 - 41 ! GENERATION VERSION !  2   !NUMERIC CHARACTERS!
     !-------------------------------------------------------!
     !42 - 47 !   CREATION DATE    !  6   ! " YYDDD" (JULIAN !
     !        !                    !      !DATE) OR " 00000" !
     !        !                    !      !    IF NO DATE    !
     !-------------------------------------------------------!
     !48 - 53 !  EXPIRATION DATE   !  6   ! " YYDDD" (JULIAN !
     !        !                    !      !DATE) OR " 00000" !
     !        !                    !      !    IF NO DATE    !
     !-------------------------------------------------------!
    #!   54   !   ACCESSIBILITY    !  1   !   SPACE OR "1"   !
     !-------------------------------------------------------!
     !55 - 60 !    BLOCK COUNT     !  6   !     "000000"     !
     !-------------------------------------------------------!
     !61 - 73 !    SYSTEM CODE     !  13  !DEC STANDARD CODE !
     !        !                    !      !  FOR OPERATING   !
     !        !                    !      !      SYSTEM      !
     !-------------------------------------------------------!
     !74 - 80 !      RESERVED      !  7   !      SPACES      !
     !-------------------------------------------------------!
Labeled Tape Processing on TOPS-20                      Page 58


     SECOND FILE-HEADER-LABEL (HDR2)

     !=======================================================!
     !   CP   !     FIELD NAME     ! LEN  !     CONTENTS     !
     !=======================================================!
     ! 1 - 3  !  LABEL IDENTIFIER  !  3   !      "HDR"       !
     !-------------------------------------------------------!
     !   4    !    LABEL NUMBER    !  1   !       "2"        !
     !-------------------------------------------------------!
     !   5    !   RECORD FORMAT    !  1   ! "F" = FIXED      !
     !        !                    !      ! "D" = VARIABLE   !
     !        !                    !      ! "S" = SPANNED    !
    #!        !                    !      ! "U" = UNDEFINED  !
     !-------------------------------------------------------!
     ! 6 - 10 !    BLOCK LENGTH    !  5   !NUMERIC CHARACTERS!
     !-------------------------------------------------------!
     !11 - 15 !   RECORD LENGTH    !  5   !NUMERIC CHARACTERS!
     !-------------------------------------------------------!
    *!16 - 36 !  SYSTEM DEPENDENT  !  21  !  TO BE DEFINED   !
     !-------------------------------------------------------!
    #!   37   !    FORM CONTROL    !  1   !"A" , "M" OR SPACE!
     !-------------------------------------------------------!
    *!38 - 43 !  FILE ACCESS CODE  !  6   !NUMERIC CHARACTERS!
     !-------------------------------------------------------!
    *!44 - 47 !  SYSTEM DEPENDENT  !  4   !  TO BE DEFINED   !
     !-------------------------------------------------------!
    *!   48   ! PADDING CHARACTER  !  1   !  ANY CHARACTER   !
     !-------------------------------------------------------!
    *!49 - 50 !   FILE BYTE SIZE   !  2   !NUMERIC CHARACTERS!
     !-------------------------------------------------------!
     !51 - 52 !   BUFFER OFFSET    !  2   !NUMERIC CHARACTERS!
     !-------------------------------------------------------!
     !53 - 80 !      RESERVED      !  20  !      SPACES      !
     !-------------------------------------------------------!




10.1.3.1  File Identifier - The  file  identifier  field   will
contain  the  first  seventeen (17) characters of the file name
and file type specified in the GTJFN call, with the  separating
period included if present.



10.1.3.2  Creation Date - The date when the file  was  created,
in format " YYDDD" (e.g.  February 4, 1978 would be represented
as " 78035").
INPUT:  The contents of this field are available to the user
OUTPUT:  The current date is written
Labeled Tape Processing on TOPS-20                      Page 59


10.1.3.3  Expiration Date - If the current date is greater than
or equal to the expiration date of a file, the file is regarded
as expired.  The expiration date is recorded in the same format
as the creation date.
INPUT:  Has no effect upon processing
OUTPUT:  The monitor will not permit a user to overwrite a file
that  has  not expired.  The user specifies the expiration date
for every new file that is created.



10.1.3.4  Accessibility - 
INPUT:  If this field contains a space, no access  restrictions
will be imposed.  If it contains a "1" and the HDR1 system code
indicates that the file was created by TOPS-20, access will  be
based  upon  the  contents  of the HDR2 file access code field.
Any other combinations of accessibility and  system  code  will
require  the  user to have WHEEL or OPERATOR capability enabled
to access the file.
OUTPUT:  ANSI and EBCDIC tapes will contain  a  space  in  this
field.  TOPS-20 tapes will contain a "1".



10.1.3.5  System Code - Used  to  identify  the   system   that
created the file.
INPUT:  Used in conjunction with  the  accessibility  field  to
control access to the file
OUTPUT:  The text, "DECSYSTEM20  ", will be written



10.1.3.6  Record Format - The record format field describes the
record  structure  of the recorded data.  The current parochial
practice of undefined record format will be  read  and  written
only  on  TOPS-20  volumes.   The  fixed, variable, and spanned
record formats are discussed later.



10.1.3.7  File Access Code - The   file   access   code   field
contains  the  standard  TOPS-20  file  protection information.
This field will be used to control access to  individual  files
on  a  volume  set  in a fashion similar to that of disk files.
This field is only examined under  certain  circumstances  (see
description of accessibility field, above).



10.1.3.8  Padding Character - The  padding  character  may   be
specified by the user on TOPS-20 tapes.  The padding scheme for
other label types is described in Section 10.3.6.
Labeled Tape Processing on TOPS-20                      Page 60


10.1.3.9  File Byte Size - The  file  byte  size   field   will
contain the file byte size specified on the OPENF JSYS.



10.1.4  End-of-volume Labels - These labels  are  identical  to
their  file-header  label  counterparts,  except that the label
identifier field (CP 1-3)  contains  "EOV".   The  block  count
field  contains  the  number of data blocks since the preceding
beginning of file-section (i.e.  the number  of  physical  tape
records in the file section).



10.1.5  End-of-file Labels - These  labels  are  identical   to
their  file-header  label  counterparts,  except that the label
identifier field (CP 1-3)  contains  "EOF".   The  block  count
field  contains  the  number of data blocks since the preceding
beginning of file-section (i.e.  the number  of  physical  tape
records in the file section).



10.1.6  User Labels - User labels are optional  sets  of  label
records  that  follow  the standard system label groups.  Their
inclusion and contents are controlled by the user (in the  case
of  user  file  labels) and by the installation (in the case of
user volume labels).



10.1.6.1  User Volume Labels (UVL1-UVL9) - These  labels  occur
after  the system volume labels (those of the form VOLn).  They
provide  an  area  in  which  installations   may   place   any
volume-specific  information  to be retrieved at access.  It is
also possible for an installation to control tape  access  with
UVLs.  There will be no provisions implemented at this time for
the processing of user volume labels.

   !=======================================================!
   !   CP   !     FIELD NAME     ! LEN  !     CONTENTS     !
   !=======================================================!
   ! 1 - 3  !  LABEL IDENTIFIER  !  3   !      "UVL"       !
   !-------------------------------------------------------!
   !   4    !    LABEL NUMBER    !  1   !1-9 AS APPROPRIATE!
   !-------------------------------------------------------!
   ! 5 - 80 !    RESERVED FOR    !  76  !  "a" CHARACTERS  !
   !        !  INSTALLATION USE  !      !                  !
   !-------------------------------------------------------!
Labeled Tape Processing on TOPS-20                      Page 61


10.1.6.2  User File Labels (UHLa, UTLa) - User  header   labels
(UHLa)  are  found  after system file header labels (HDRn), and
user trailer labels (UTLa) follow system  file  trailer  labels
(EOFn  and  EOVn).   These label groups may be read and written
with appropriate TOPS-20 monitor calls.   Their  use  is  under
exclusive  control  of  the  user  application.  They typically
contain supplementary information about the file.

    !=======================================================!
    !   CP   !     FIELD NAME     ! LEN  !     CONTENTS     !
    !=======================================================!
    ! 1 - 3  !  LABEL IDENTIFIER  !  3   !  "UHL" OR "UTL"  !
    !        !                    !      !  AS APPROPRIATE  !
    !-------------------------------------------------------!
    !   4    !    LABEL NUMBER    !  1   !  "a" CHARACTER   !
    !-------------------------------------------------------!
    ! 5 - 80 ! RESERVED FOR USER  !  76  !  "a" CHARACTERS  !
    !        !    APPLICATIONS    !      !                  !
    !-------------------------------------------------------!



10.1.7  Identification of Label Types - The following steps may
be performed in the indicated order to determine the label type
of a given tape:

Step 1. If no information can be read from the beginning of the
        tape  or  if  the  first thing written on the tape is a
        tape mark, then  the  tape  is  unlabeled.   Otherwise,
        proceed to Step 2.

Step 2. If the first record of the  tape  contains  exactly  80
        characters   and   the   first   4  characters  can  be
        interpreted as "VOL1" coded in EBCDIC, then  the  label
        type is EBCDIC.  Otherwise, proceed to Step 3.

Step 3. If the first record of the tape  contains  80  or  more
        characters   and   the   first   4  characters  can  be
        interpreted as "VOL1" coded in ASCII, then  proceed  to
        Step 4.  Otherwise, the tape is unlabeled.

Step 4. If the  VOL1  label  contains  a  "1"  in  CP  11,  the
        characters "D%K" in CP 38-40, a "1" in CP 51, and a "3"
        in CP 80, then the label type is  TOPS-20.   Otherwise,
        the label type is ASCII.
Labeled Tape Processing on TOPS-20                      Page 62


10.2  Arrangement Of Labels And Data

The following examples show how a volume set is  organized  and
where  different  label groups apprear.  The abbreviations used
in the layouts given below are:

        SYMBOL  MEANING
        ------  -------

           *    tape mark (EOF)
         BOT    Beginning-of-tape marker
         EOT    End-of-tape marker
           ,    Physical record delimiter (inter-record gap)


     1.  File length is effectively unbounded in that there may
         be as many as 9999 sections in one file.

     2.  There is only one section  of  any  given  file  on  a
         volume.

     3.  The sections of a file are written consecutively (i.e.
         section  n+1  is written immediately following section
         n)  and  do  not  have   sections   of   other   files
         interspersed.




10.2.1  Single File, Single Volume - 

BOT , VOL1 , VOL2 , UVL1 , ... , UVLn , HDR1 , HDR2 , UHL1 ,
 ... , UHLn * ---data--- * EOF1 , EOF2 , UTL1 , ... , UTLn * *



10.2.2  Single File, Multi-volume - 

BOT , VOL1 , VOL2 , UVL1 , ... , UVLn , HDR1 , HDR2 , UHL1 ,
 ... , UHLn * --data(1)-- * EOV1 , EOV2 , UTL1 , ... , UTLn * *

BOT , VOL1 , VOL2 , UVL1 , ... , UVLn , HDR1 , HDR2 , UHL1 ,
 ... , UHLn * --data(1)-- * EOF1 , EOF2 , UTL1 , ... , UTLn * *



10.2.3  Multi-file, Single Volume - 

BOT , VOL1 , VOL2 , UVL1 , ... , UVLn , HDR1 , HDR2 , UHL1 ,
 ... , UHLn * --data(1)-- * EOF1 , EOF2 , UTL1 , ... , UTLn *
HDR1 , HDR2 , UHL1 , ... , UHLn * --data(2)-- * EOF1 , EOF2 ,
UTL1 , ... , UTLn * *
Labeled Tape Processing on TOPS-20                      Page 63


10.2.4  Multi-file, Multi-volume - 

BOT , VOL1 , VOL2 , UVL1 , ... , UVLn , HDR1 , HDR2 , UHL1 ,
 ... , UHLn * --data(1)-- * EOF1 , EOF2 , UTL1 , ... , UTLn *
HDR1 , HDR2 , UHL1 , ... , UHLn * --data(2)-- * EOV1 , EOV2 ,
UTL1 , ... , UTLn * *

BOT , VOL1 , VOL2 , UVL1 , ... , UVLn , HDR1 , HDR2 , UHL1 ,
 ... , UHLn * --data(2)-- * EOF1 , EOF2, UTL1 , ... , UTLn *
HDR1 , HDR2 , UHL1 , ... , UHLn * --data(3)-- * EOF1 , EOF2 ,
UTL1 , ... , UTLn * *
Labeled Tape Processing on TOPS-20                      Page 64


10.3  Block Structure And Organization

Some of the information in this section is excerpted  from  the
ANSI Standard X3.27.

All records of files recorded with fixed, variable, or  spanned
formats  must  consist entirely of either ASCII characters from
the code table specified in ANSI Standard X3.4.   on  ANSI  and
TOPS-20 tapes or EBCDIC characters on EBCDIC tapes.

No explicit indication of the  boundaries  between  records  is
required.   There  is  an integral number of records in a block
for fixed-length records (F) and variable-length  records  (D).
There  is an integral number of segments in a block for spanned
records (S).  Blocks of fixed-length records  containing  fewer
records  than  the  maximum  possible are permitted.  Blocks of
varying length are permitted for  variable-length  records  and
for segments of spanned records.  The system will determine the
actual number of characters read and will update user  pointers
appropriately.  All records in a given file must be of the same
format.



10.3.1  Fixed-length Records (F) - No  indication   of   record
length is required within the file.  Examples appear below:

     Fixed-length records (F), Unblocked

     !----------!   !----------!   !----------!
     !  RECORD  !   !  RECORD  !   !  RECORD  !
     !----------!   !----------!   !----------!

     |          |   |          |   |          |

     !----------!   !----------!   !----------!
     !   BLOCK  !   !   BLOCK  !   !   BLOCK  !
     !----------!   !----------!   !----------!


     Fixed-length records (F), Blocked

     !-----------!   !-----------!   !-----------!
     !REC!REC!REC!   !REC!REC!REC!   !REC!REC!REC!
     !-----------!   !-----------!   !-----------!

     |   |   |   |   |   |   |   |   |   |   |   |

     !-----------!   !-----------!   !-----------!
     !   BLOCK   !   !   BLOCK   !   !   BLOCK   !
     !-----------!   !-----------!   !-----------!
Labeled Tape Processing on TOPS-20                      Page 65


10.3.2  Variable-length Records (D) - A  record  control   word
(RCW)  precedes each record.  The RCW consists of 4 characters.
The record length (i.e.  the number of characters it  contains)
is  expressed  as  a  decimal numeral occupying the entire RCW.
The record length includes the length of the RCW.  Examples  of
variable-length records appear below:

     Variable-length records (D), Unblocked

     !-------------!   !---------------------!
     !   RECORD    !   !   RECORD            !
     !RCW ! DATA   !   !RCW !    DATA        !
     !-------------!   !---------------------!

     |             |   |                     |

     !-------------!   !---------------------!
     !    BLOCK    !   !       BLOCK         !
     !-------------!   !---------------------!


     Variable-length records (D), Blocked

     !-------------------!--------------!--------------------!
     !   RECORD          !   RECORD     !   RECORD           !
     !RCW !  DATA        !RCW !  DATA   !RCW !    DATA       !
     !-------------------!--------------!--------------------!

     |                   |              |                    |

     !-------------------------------------------------------!
     !                        BLOCK                          !
     !-------------------------------------------------------!


     Example of Unblocked Variable-length Records

     !------!------------------------------------!
     ! 1780 !       DATA 1776 CHARACTERS         !
     !------!------------------------------------!

     !------!-------------------------------------------------!
     ! 1988 !       DATA 1984 CHARACTERS                      !
     !------!-------------------------------------------------!
     <------>
      R C W
Labeled Tape Processing on TOPS-20                      Page 66


10.3.3  Spanned Records (S) - A segment control word  (SCW)  is
the first five characters of each segment.  The first character
of the  SCW  is  call  the  spanning  indicator.   It  has  the
following meanings:

     0  Record begins and ends in this segment
     1  Record begins but does not end in this segment
     2  Record neither begins nor ends in this segment
     3  Record ends but does not begin in this segment

The segment length (i.e.  the number of characters it contains)
is  expressed  as  a  decimal  numeral  occupying the next four
character positions of the SCW.  The  segment  length  includes
the length of the SCW.

     1.  For  spanned  records  there  is  no  explicit  record
         control word that expresses the total record length.

     2.  Records may span volumes.

     3.  Record length is unbounded, in that there is no  limit
         to the number of segments in one record.

     4.  There is only one segment of any  given  record  in  a
         block.

     5.  The segments of a  record  are  written  consecutively
         (i.e.   segment  n+1  is written immediately following
         segment n), and do not have segments of other  records
         interspersed.

Some examples of spanned records follow:

     Spanned record (S), Unblocked

          !--------------------!                  !---------!
          !      RECORD        !                  !  RECORD !
          !--------------------!                  !---------!

          |             |       \      \          |         |

     !----!-------------!   !----!-------!   !----!---------!
     !SCW !             !   !SCW !       !   !SCW !         !
     !   SEGMENT        !   !   SEGMENT  !   !   SEGMENT    !
     !------------------!   !------------!   !--------------!
Labeled Tape Processing on TOPS-20                      Page 67


     Spanned record (S), Blocked

          !----!    !-----------------!                      !------
          !REC !    !   RECORD        !                      !RECORD
          !----!    !-----------------!                      !------

          |    |    |    |       \       \       \     \     |

     !----!----!----!----!   !----!-------!   !----!----!----!----!
     !SCW !    !SCW !    !   !SCW !       !   !SCW !    !SCW !    !
     ! SEGMENT ! SEGMENT !   !  SEGMENT   !   ! SEGMENT ! SEGMENT !
     !-------------------!   !------------!   !-------------------!

     |                   |   |            |   |                   |

     !-------------------!   !------------!   !-------------------!
     !       BLOCK       !   !    BLOCK   !   !       BLOCK       !
     !-------------------!   !------------!   !-------------------!


     Example of Unblocked Spanned Record
        Length: 4241 characters

     !----------!---------------------------------------!
     ! 1 ! 2048 !       DATA 2043 CHARACTERS            !
     !---!------!---------------------------------------!

     !----------!---------------------------------------!
     ! 2 ! 2048 !       DATA 2043 CHARACTERS            !
     !---!------!---------------------------------------!

     !----------!-----------------------!
     ! 3 ! 0170 ! DATA 165 CHARACTERS   !
     !---!------!-----------------------!
     <---------->
       S  C  W
Labeled Tape Processing on TOPS-20                      Page 68


     Example of Blocked Spanned Records
        Record #1: 4231 characters
        Record #2: 5936 characters

     !----------!---------------------------------------!
     ! 1 ! 2048 !       DATA 2043 CHARACTERS            !
     !---!------!---------------------------------------!

     !----------!---------------------------------------!
     ! 2 ! 2048 !       DATA 2043 CHARACTERS            !
     !---!------!---------------------------------------!

     !----------!----------!----------!-----------------!
     ! 3 ! 0150 ! 145 CHAR.! 1 ! 1898 ! DATA 1893 CHAR. !
     !---!------!----------!---!------!-----------------!
                           <---------->
                             S  C  W

     !----------!---------------------------------------!
     ! 2 ! 2048 !       DATA 2043 CHARACTERS            !
     !---!------!---------------------------------------!

     !----------!-----------------------------------!
     ! 3 ! 2005 !     DATA 2000 CHARACTERS          !
     !---!------!-----------------------------------!
     <---------->
       S  C  W




10.3.4  Undefined Records (U) - These   records   are   of   an
undefined  size  and content.  Data that is classically written
on TOPS-10 and TOPS-20 falls into this category.  Only  TOPS-20
format tapes may contain this type of record structure.



10.3.5  Padding - Whenever it becomes necessary or advisable to
extend  the  recorded  length  of a block beyond the end of the
last (or only) record in it, the block may be extended (padded)
to  the  required length.  Padding is not counted in the record
control word or the segment control word.



10.3.5.1  Padding Of Data Blocks - Blocks  within  a  file  are
padded  out  to  the  desired  length  by the use of circumflex
accent characters (position 5/14 of the ASCII code table).   To
ensure  that  padding after fixed-length blocked records can be
distinguished from valid records, fixed-length records may  not
consist  entirely of circumflex characters.  If the tape is not
an interchange tape, then any character will be  permitted  for
padding provided it is specified for the file header label.
Labeled Tape Processing on TOPS-20                      Page 69


10.3.5.2  Block Length Limits - The  following   block   length
limits  will be imposed by TOPS-20 upon files written in fixed,
variable, and spanned formats:

        LABEL           MINIMUM MAXIMUM
        TYPE            (BYTES) (BYTES)
        -----           ------- -------
        ANSI               18     2048
        EBCDIC             18    32760
        STANDARD           18    40960

The existing MTA device restrictions  will  apply  for  TOPS-20
tape files written in undefined format.
Labeled Tape Processing on TOPS-20                      Page 70


10.4  Differences in Labeling Standards

Although  the  ANSI,  IBM,  and  DEC  tape  labeling  and  file
structure  standards are very similar, their differences should
be noted.  This section will attempt to do so by comparing  the
DEC standard to the other two.



10.4.1  Comparison of DEC and IBM Standards - 

General:
     o  All  information  on  IBM  standard  labeled  tapes  is
        recorded using the EBCDIC character code.
     o  All labels on IBM tapes are exactly  80  characters  in
        length, whereas ANSI and DEC labels may be longer.
     o  IBM labeled tapes may not contain user volume labels.

In VOL1 Label:
     o  The accessibility field (CP 11) is a reserved field  on
        IBM tapes, and it must contain a zero.
     o  The IBM owner identifier  is  10  characters  long  and
        resides   in   CP   42-51.   TOPS-20  will  record  the
        installation name in this field.  CP 12-41 of IBM VOL1s
        must contain blanks.
     o  CP 80 (label-standard version field in the  ANSI  VOL1)
        must contain a blank on IBM volumes.

In HDR2/EOF2/EOV2 Labels:
     o  Variable-length record format is represented by  a  "V"
        rather than a "D".  TOPS-20 will accept either a "V" or
        "D" on input, and it will write a "V" on output.
     o  CP 16-36, CP 38, and  CP  40-52  contain  miscellaneous
        special  information  and reserved fields on IBM tapes.
        These positions are ignored on input  and  filled  with
        blanks on output.
     o  CP 39 is the IBM block attribute field.

File Structures
     o  The maximum block length of files on IBM labeled  tapes
        is 32760 characters.
     *** More to come ***



10.4.2  Comparison of DEC and ANSI Standards - 

General:
     o  The DEC  standard  imposes  the  restriction  that  all
        labeled   tapes   must   be   recorded  with  9-channel
        structure.
     o  DEC has defined the contents of all  fields  that  ANSI
        has reserved for implementation definition.

In HDR1/EOF1/EOV1 Labels:
Labeled Tape Processing on TOPS-20                      Page 71


     o  The DEC  standard  treats  the  generation  number  and
        generation version as parts of a single quantity, where
        ANSI defines each to have a unique meaning.

In HDR2/EOF2/EOV2 Labels:
     o  DEC provides for file structures of  undefined  format,
        identified  by  the  letter  "U"  in  the record format
        field, whereas this practice is not supported by ANSI.

File Structures
     o  DEC supports the ANSI file structures  associated  with
        fixed, variable, and spanned records.  In addition, DEC
        defines an undefined file structure as  one  having  no
        rules  governing  what lies between the file header and
        trailer labels.
     o  The maximum block length  of  files  on  ANSI  standard
        labeled tapes is 2048 characters.

VOL2 Label
        In anticipation of a change in the ANSI Standard X3.27,
        tapes  written  with  the  TOPS-20 label type will have
        VOL2 labels.  VOL2 follows  VOL1  immediately,  and  it
        should  be ignored by foreign operating systems.  It is
        intended, however, that these tapes will be used solely
        within TOPS-20 environments.  If interchange is a goal,
        then the ANSI label type should be used.
Labeled Tape Processing on TOPS-20                      Page 72


11.0  UNRESOLVED ISSUES

     1.  The following problem in the STC  TU7x  magnetic  tape
         subsystem  has  been experimentally verified to exist:
         If a tape on a drive is manually  unloaded  (i.e.   by
         the  use  of the UNLOAD button on the drive as opposed
         to being unloaded  by  an  order  from  the  operating
         system),  no  attention  interrupt will be signaled to
         the system at  that  time.   In  addition,  the  first
         loading  of  a tape on a drive following such a manual
         unload  will  not  generate  an  attention  interrupt.
         TOPS-20  currently relies upon attention interrupts to
         maintain up-to-date in-core status information in  mag
         tape  unit  data  blocks (UDBs).  This project depends
         upon  attention  interrupts  to  implement   the   AVR
         feature.   Someone  (hardware,  firmware, or software)
         must change to resolve the problem, but it is not  yet
         certain   who.    It  is  believed  that  the  missing
         interrupts can be provided  by  an  ECO  to  the  TX02
         controller.





[End of TOPS-20 Labeled Tape Processing Functional Spec]