           











                                The RSX Multi-Tasker

                                   November, 1986



                         "All the News that Fits, We Print"



                         Fine Realtime Commentary Since 1975

























                      Files-11 On Disk Structure Specification
                      ________ __ ____ _________ _____________



                            Digital Equipment Corporation

                                     Maynard, MA





               This  is  the  first in a series of reprints of landmark RSX

          articles and technical papers.  This article originally  appeared

          in  the April, 1982 Multi-Tasker.  It is still the only available

          specification of the ODS-1 file system.  --- The Editor 










          Files-11 On-Disk Structure Specification 





          19-June-1975 



          Revised 15-June-1977 



          Revised 15-April-1981 



          Edited 20-September-1986 







          Copyright (c) 1975, 1977, 1981 

          Digital Equipment Corporation, Maynard, Mass.  





          The material included in this functional specification, including

          but not limited to instruction times and operating speeds, is for

          informational  purposes  only.   All  such material is subject to

          change   without   notice.    Consequently,   Digital   Equipment

          Corporation  makes  no  claim  and  shall  not  be liable for its

          accuracy.  





          This  software  is  furnished  under  a license for use only on a

          single computer system and may be copied only with the  inclusion

          of  the  above  copyright  notice.   This  software, or any other

          copies thereof, may not be provided or otherwise  made  available

          to  any other person except for use on such system and to one who

          agrees to these license terms.  Title to  and  ownership  of  the

          software   shall   at  all  times  remain  in  Digital  Equipment

          Corporation.  





          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 the

          use or reliability of its software  on  equipment  which  is  not

          supplied by Digital Equipment Corporation.  










          1.0  Scope 





               This  document  is a specification of the on-media structure

          that is used by Files-11.  Files-11 is  a  general  purpose  file

          structure which is intended to be the standard file structure for

          all medium to large PDP-11 systems.  Small systems such as  RT-11

          are  specifically  excluded  because  the  complexity of Files-11

          imposes too great a burden on their simplicity and small size.  



               This  document describes structure level 1 of Files-11, also

          referred to as ODS-1 (on-disk  structure  version  1).   This  is

          implemented on the RSX-11 family, (RSX-11M, RSX-11M-Plus, IAS and

          RSX-11D) and on VMS.  This document describes the final level  of

          functionality   for   ODS-1.    Structure   level  2  (ODS-2)  is

          implemented on VMS and is the basis for all  new  disk  structure

          enhancements.  







          1.1  Summary of Revisions Made to This Specification 





               1.  Expanded  file  characteristics  to  include  most ODS-2

                   options.  



               2.  Corrected H.FPRO to H.DFPR.  



               3.  Added  new  fields  to  home block for date and count of

                   home block modifications.  



               4.  Added  single  directory  support  description  and home

                   block field.  



               5.  Added  field  in  home  block  for  pack  serial  number

                   (H.PKSR).  



               6.  Added  description  of  modified  storage  control block

                   format to support large disks.  



               7.  Restricted  maximum  number  of  blocks  supported  on a

                   volume to 1,044,480.  



               8.  Restricted ODS-1 to one block "clusters".  



               9.  Restricted ODS-1 to single volume structures.  



              10.  Clarified  and  expanded  references to operating system

                   support and relationship to ODS-2.  



              11.  Removed  RMS-11  definitions, to be provided in separate

                   specification common to ODS-1 and ODS-2.  














          2.0  Medium 





               Files-11  is a structure which is imposed on a medium.  That

          medium must have certain properties, which are described  in  the

          following section.  Generally speaking, block addressable storage

          devices such as disks and  DECtape  are  suitable  for  Files-11;

          hence,  Files-11  structured media are generically referred to as

          disks.  







          2.1  Volume 





               The  basic  medium  that  carries  a  Files-11  structure is

          referred to as a volume.  A volume (also often referred to  as  a

          unit)  is defined as an ordered set of logical blocks.  A logical

          block is an array of 512 8-bit bytes.  The logical  blocks  in  a

          volume  are  consecutively  numbered  from  0 to (n-1), where the

          volume contains n logical blocks.  



               The number assigned to a logical block is called its logical

          block number, or  LBN.   Files-11  is  theoretically  capable  of

          describing  volumes  up  to 2**32 blocks in size.  In practice, a

          volume should be at least  100  blocks  in  size  to  be  useful.

          Current  implementations  of  Files-11 handle volumes up to 2**24

          blocks.  



               The logical blocks of a volume must be randomly addressable.

          The volume must also allow transfers of  any  length  up  to  65K

          bytes;   consecutively  numbered  logical  blocks are transferred

          until the byte count is satisfied.  In other  words,  the  volume

          can  be  viewed  as  a partitioned array of bytes.  It must allow

          reads and writes of arrays of any length  less  than  65K  bytes,

          provided that they start on a logical block boundary and that the

          length is a multiple of four bytes.  When only part of a block is

          written,  the contents of the remainder of that logical block are

          undefined.  







          2.2  Volume Sets 





               This section is of historical interest only.  ODS-1 does not

          and will not support volume sets.  A volume set is  a  collection

          of  related units that are normally treated as one logical device

          in the usual operating system concept.  Each  unit  contains  its

          own Files-11 structure;  however, files on the various units in a

          volume set may be referenced with a relative volume number, which

          uniquely determines which unit in the set the file is located on.

          Other sections in this specification make occasional reference to

          volume  sets  and  relative volume number where "hooks" for their










          implementation  exist.   Since  volume   sets   have   not   been

          implemented   as  yet,  however,  no  complete  specification  is

          provided here.  







          3.0  Files 





               Any  data in a volume or volume set that are of any interest

          (i.e., all blocks not available for allocation) are contained  in

          a  file.   A  file  is  an ordered set of virtual blocks, where a

          virtual block is an array of 512 8-bit bytes.  The virtual blocks

          of  a file are consecutively numbered from 1 to n, where n blocks

          have been allocated to the file.  



               The number assigned to a virtual block is called (obviously)

          its virtual block number, or VBN.  Each virtual block  is  mapped

          to a unique logical block in the volume set by Files-11.  Virtual

          blocks may be processed in the the same manner as logical blocks.

          Any  array  of  bytes  less  than  65K  in  length may be read or

          written, provided that the transfer starts  on  a  virtual  block

          boundary and that its length is a multiple of four bytes.  







          3.1  File ID 





               Each  file  in a volume set is uniquely identified by a File

          ID.  A File ID is a binary value consisting of 48 bits (3  PDP-11

          words).   It  is  supplied  by  the  file system when the file is

          created, and must be supplied by the user whenever he  wishes  to

          reference a particular file.  



               The three words of the File ID are used as follows:  



          Word 1  File Number 



                  Locates  the  file within a particular unit of the volume

                  set.  File numbers  must  lie  in  the  range  1  through

                  65,535.   The set of file numbers on a unit is moderately

                  (but not totally) dense;  at any instant in time, a  file

                  number uniquely identifies one file within that unit.  



          Word 2  File Sequence Number 



                  Identifies  the  current use of an individual file number

                  on a unit.  File numbers are re-used;   when  a  file  is

                  deleted  its file number becomes available for future use

                  for some other file.  Each time a file number is re-used,

                  a   different   file   sequence  number  is  assigned  to

                  distinguish the uses  of  that  file  number.   The  file

                  sequence  number is essential since is is perfectly legal










                  for users to remember and attempt to use a File  ID  long

                  after that file has been deleted.  



          Word 3  Relative Volume Number 



                  Identifies which unit of a volume set the file is located

                  on.  Volume sets are, at present, not  implemented;   the

                  only  legal  value  for the relative volume number in any

                  context is zero.  







          3.2  File Header 





               Each  file  on  a  Files-11  volume  is  described by a file

          header.  The file  header  is  a  block  that  contains  all  the

          information  necessary to access the file.  It is not part of the

          file;  rather, it is contained in the volume's index file.   (The

          index  file  is  described  in section 5.1).  The header block is

          organized into four areas, of which the first three are  variable

          in size.  







          3.2.1  Header Area 





               The  information  in the header area permits the file system

          to verify that this block is  in  fact  a  file  header  and,  in

          particular,  is the header being sought by the user.  It contains

          the file number and file sequence number of the file, as well  as

          its  ownership  and  protection  codes.   This area also contains

          offsets to the other areas of  the  file  header,  thus  defining

          their  size.   Finally, the header area contains a user attribute

          area, which may be used by the user to store a limited amount  of

          data describing the file.  







          3.2.2  Ident Area 





               The  ident area of a file header contains identification and

          accounting data about the file.  Stored here are the primary name

          of  the  file;  its creation date and time;  revision count, date

          and time;  and expiration date.  
















          3.2.3  Map Area 





               The  map area describes the mapping of virtual blocks of the

          file to the logical blocks  of  the  volume.   The  mapping  data

          consists of a list of retrieval pointers.  Each retrieval pointer

          describes on logically contiguous segment of the file.   The  map

          area  also  contains the linkage to the next extension segment of

          the file, if such exists.  







          3.2.4  End Checksum 





               The  last  two  bytes  of  the  file header contain a 16-bit

          additive checksum of the preceding 255 words of the file  header.

          The  checksum  is used to help verify that the block is in fact a

          file header.  







          3.3  Extension Headers 





               Since  the  file  header  is of fixed size, it is inevitable

          that for some files the mapping information does not fit  in  the

          allocated  space.   A file with a large amount of mapping data is

          therefore represented with a chain of file headers.  Each  header

          maps  a consecutive set of virtual blocks;  the extension linkage

          in the map area links the headers together in order of  ascending

          virtual block numbers.  



               Multiple  headers  are also needed for files that span units

          in a volume set.  A header may only map logical blocks located on

          its  unit;   therefore,  a  multi-volume  file  is represented by

          headers on all units that contain portions of that file.  







          3.4  File Header - Detailed Description 





               This  section describes in detail the items contained in the

          file  header.   Each  item  is  identified  by  a  symbol   which

          represents the offset address of that item within its area in the

          file header.  Any item may be  located  in  the  file  header  by

          locating  the area to which it belongs, and then adding the value

          of its offset address.  Users who  concern  themselves  with  the

          contents  of  file  headers  are strongly urged to use the offset

          symbols.   The  symbols  may  be  defined  in  assembly  language

          programs  by  calling and invoking the macro FHDOF$, which may be

          found in the macro library of any system that supports  Files-11.

          Alternatively, one may find the macro in the file F11MAC.MAC.  










          3.4.1  Header Area Description 





               The  header area of the file header always starts of byte 0.

          It  contains  the  basic  information  needed  for  checking  the

          validity of accesses to the file.  







          3.4.1.1  H.IDOF  1 byte  Ident Area Offset 





                   This  byte  contains  the number of 16-bit words between

                   the start of the file header and the start of the  ident

                   area.  It defines the location of the ident area and the

                   size of the header area.  







          3.4.1.2  H.MPOF  1 byte  Map Area Offset 





                   This  byte  contains  the number of 16-bit words between

                   the start of the file header and the start  of  the  map

                   area.   It  defines  the  location  of the map area and,

                   together with H.IDOF, the size of the ident area.  







          3.4.1.3  H.FNUM  2 bytes  File Number 





                   This word contains the file number of the file.  







          3.4.1.4  H.FSEQ  2 bytes  File Sequence Number 





                   This word contains the file sequence number of the file. 







          3.4.1.5  H.FLEV  2 bytes  File Structure Level 





                   The  file  structure level is used to identify different

                   versions of Files-11 as they affect the structure of the

                   file  header.  This permits upward compatibility of file

                   structures as Files-11 evolves, in  that  the  structure

                   level  word  identifies  the  version  of  Files-11 that

                   created this particular file.  This  document  describes

                   version  1  of  Files-11;   the  only legal contents for

                   H.FLEV is 401 octal.  










          3.4.1.6  H.FOWN  2 bytes  File Owner UIC 



                   H.PROG = H.FOWN + 0  Programmer (Member) Number 

                   H.PROJ = H.FOWN + 1  Project (Group) Number 



                   This  word  contains the binary User Identification Code

                   (UIC) of the owner of  the  file.   The  file  owner  is

                   usually (but not necessarily) the creator of the file.  







          3.4.1.7  H.FPRO  2 bytes  File Protection Code 





                   This  word  controls what access all users in the system

                   may  have  to  the  file.   Accessors  of  a  file   are

                   categorized  according  to  the relationship between the

                   UIC of the accessor and the UIC  of  the  owner  of  the

                   file.   Each  category is controlled by a four bit field

                   in the protection word.  The category of the accessor is

                   selected as follows:  



                   System  Bits 0 - 3 



                           The  accessor is subject to system protection if

                           the project number of the UIC under which he  is

                           running is 10 octal or less.  



                   Owner   Bits 4 -7 



                           The  accessor  is subject to owner protection if

                           the  UIC  under  which  he  is  running  exactly

                           matches the file owner UIC.  



                   Group   Bits 8 - 11 



                           The  accessor  is subject to group protection if

                           the  project  number  of  his  UIC  matches  the

                           project number of the file owner UIC.  



                   World   Bits 12 - 15 



                           The  accessor  is subject to world protection if

                           he  does  not  fit  into  any   of   the   above

                           categories.  



                   Four  types  of  access intents are defined in Files-11:

                   Read, Write, Extend and Delete.  Each four bit field  in

                   the protection word is bit encoded to permit or deny any

                   combination of the four types of access to that category

                   of  accessors.  Setting a bit denies that type of access

                   to that category.   The  bits  are  defined  as  follows

                   (these  values  apply  to  a  right-justified protection

                   field):  












                   FP.RDV  Deny read access 

                   FP.WRV  Deny write access 

                   FP.EXT  Deny extend access 

                   FP.DEL  Deny delete access 



                   When a user attempts to access a file, protection checks

                   are performed in all  the  categories  to  which  he  is

                   eligible,  in  the  order:  System, Owner, Group, World.

                   The user is granted access to the file  if  any  of  the

                   categories to which he is eligible grants his access.  







          3.4.1.8  H.FCHA  2 bytes  File Characteristics 



                   H.UCHA = H.FCHA + 0  User Controlled Characteristics 

                   H.SCHA = H.FCHA + 1  System Controller Characteristics 



                   The  user  controlled  characteristics byte contains the

                   following flag bits:  



                   Reserved, 1 bit 



                   UC.NID  Set  if  incremental  dump  (backup)  is  to  be

                           disabled for this file.  



                   UC.WBC  Set  if  the  file  is  to be write-back cached;

                           i.e., if a cache is used for the file data, data

                           written  by  a  user is only written back to the

                           disk when it is removed from the  cache.   Clear

                           for write-through cache operation.  



                   UC.RCK  Set if the file is to be read-checked.  All read

                           operations on the file, including reads  of  the

                           file  header(s),  are  performed  with  a  read,

                           read-compare to assure data integrity.  



                   UC.WCK  Set  if  the  file  is to be write-checked.  All

                           write  operations   on   the   file,   including

                           modifications   of   the   file  header(s),  are

                           performed with a write, read-compare  to  assure

                           data integrity.  



                   UC.CNB  Set  if  the  file  is allocated contiguous best

                           effort;  i.e., as contiguous as possible.  



                   UC.DLK  Set if the file is deaccess-locked.  This bit is

                           used as a flag warning that  the  file  was  not

                           properly  closed  and  may  contain inconsistent

                           data.  Access to the file is denied if this  bit

                           is set.  



                   UC.CON  Set  if the file is logically contiguous;  i.e.,










                           if for all virtual blocks in the  file,  virtual

                           block  i  maps  to  logical  block  k+i for some

                           constant k.  This bit may be implicitly  set  or

                           cleared  by file system operations that allocate

                           space to the file;  the user may only  clear  it

                           explicitly.  



                   The  system controlled characteristics byte contains the

                   following flag bits:  



                   Reserved, 3 bits 



                   Reserved, Access Control List 



                   SC.SPL  Set  if  the  file  is  an intermediate file for

                           spooling.  



                   SC.DIR  Set if the file is a directory.  



                   SC.BAD  Set  if  there  is a bad data block in the file.

                           This  bit  is  as  yet  unimplemented.   It   is

                           intended for dynamic bad block handling.  



                   SC.MDL  Set  if  the file is marked for delete.  If this

                           bit is set, further accesses  to  the  file  are

                           denied,  and the file is physically deleted when

                           no users are accessing it.  







           3.4.1.9  H.UFAT  32 bytes  User Attribute Area 





                    This  area  is  intended  for  the storage of a limited

                    quantity of "user file attributes", i.e., any data  the

                    user  deems  useful for processing the file that is not

                    part of the file itself.  An example of the use of  the

                    user  attribute  area  is presented in section 6.1 (FCS

                    File Attributes).  







           3.4.1.10  S.HDHD  46 bytes  Size of Header Area 





                     This  symbol  represents  the total size of the header

                     area containing all of the above entries.  
















           3.4.2  Ident Area Description 





                The  ident  area  of  the  file  header  begins at the word

           indicated by H.IDOF.  It contains identification and  accounting

           data about the file.  







           3.4.2.1  I.FNAM  6 bytes  File Name 





                    These  three words contain the name of the file, packed

                    three Radix-50  characters  to  the  word.   This  name

                    usually,  but  not necessarily, corresponds to the name

                    of the file's primary directory entry.  







           3.4.2.2  I.FTYP  2 bytes  File Type 





                    This  word contains the type of the file in the form of

                    three Radix-50 characters.  







           3.4.2.3  I.FVER  2 bytes  Version Number 





                    This  word  contains  the version number of the file in

                    binary form.  







           3.4.2.4  I.RVNO  2 bytes  Revision Number 





                    This word contains the revision count of the file.  The

                    revision count is the number of times the file has been

                    accessed for write.  







           3.4.2.5  I.RVDT  7 bytes  Revision Date 





                    The  revision  date  is  the date on which the file was

                    last deaccessed after being accessed for write.  It  is

                    stored  in ASCII in the form "DDMMYY", where DD are two

                    digits representing the day of the month, MMM are three

                    characters  representing the month, and YY are the last

                    two digits of the year.  












           3.4.2.6  I.RVTI  6 bytes  Revision Time 





                    The  revision time is the time of day on which the file

                    was last deaccessed for write.  It is stored  in  ASCII

                    in  the  format "HHMMSS", where HH are the hour, MM are

                    the minute, and SS are the second.  







           3.4.2.7  I.CRDT  7 bytes  Creation Date 





                    These  seven  bytes  contain the date on which the file

                    was created.  The format is the same  as  that  of  the

                    revision date above.  







           3.4.2.8  I.CRTI  6 bytes  Creation Time 





                    These  six  bytes  contain the time of day at which the

                    file was created.  The format is the same  as  that  of

                    the revision time above.  







           3.4.2.9  I.EXDT  7 bytes  Expiration Date 





                    These  seven  bytes  contain the date on which the file

                    becomes eligible to be deleted.  The format is the same

                    as that of the revision and creation dates above.  







           3.4.2.10          1 byte  Unused 





                     This  unused  byte  is present to round up the size of

                     the ident area to a word boundary.  







           3.4.2.11  S.IDHD  46 bytes  Size of Ident Area 





                     This  symbol  represents  the  size  of the ident area

                     containing all of the above entries.  
















           3.4.3  Map Area Description 





                The  map  area  of  the  file  header  begins  at  the word

           indicated by H.MPOF.  It contains the information  necessary  to

           map  the virtual blocks of the file to the logical blocks of the

           volume.  







           3.4.3.1  M.ESQN  1 byte  Extension Segment Number 





                    This  byte  contains  the value n, where this header is

                    the (n+1)th header of the file;   i.e.,  headers  of  a

                    file are numbered sequentially starting with 0.  







           3.4.3.2  M.ERVN  1 byte  Extension Relative Volume Number 





                    This  byte  contains  the relative volume number of the

                    unit  in  the  volume  set  that  contains   the   next

                    sequential extension header for this file.  If there is

                    no extension header, or  if  the  extension  header  is

                    located  on  the  same  unit  as this header, this byte

                    contains 0.  







           3.4.3.3  M.EFNU  2 bytes  Extension File Number 





                    This   word  contains  the  file  number  of  the  next

                    sequential extension header for this file.  If there is

                    no extension header, this word contains 0.  







           3.4.3.4  M.EFSQ  2 bytes  Extension File Sequence Number 





                    This word contains the file sequence number of the next

                    sequential extension header for this file.  If there is

                    no extension header, this word contains 0.  
















           3.4.3.5  M.CTSZ  1 byte  Block Count Field Size 





                    This  byte contains a count of the number of bytes used

                    to represent the count field in the retrieval  pointers

                    in  the  map  area.   The  retrieval  pointer format is

                    described in section 3.4.3.9 below.  







           3.4.3.6  M.LBSZ  1 byte  LBN Field Size 





                    This  byte contains a count of the number of bytes used

                    to represent the logical  block  number  field  in  the

                    retrieval  pointers  in  the map area.  The contents of

                    M.CTSZ and M.LBSZ must add up to an even number.  







           3.4.3.7  M.USE   1 byte  Map Words in Use 





                    This  byte  contains  a count of the number of words in

                    the map area that are presently occupied  by  retrieval

                    pointers.  







           3.4.3.8  M.MAX   1 byte  Map Words Available 





                    This  byte contains the total number of words available

                    for retrieval pointers in the map area.  







           3.4.3.9  M.RTRV  variable  Retrieval Pointers 





                    This area contains the retrieval pointers that actually

                    map the virtual blocks  of  the  file  to  the  logical

                    blocks of the volume.  Each retrieval pointer describes

                    a consecutively numbered group of logical blocks  which

                    is  part  of  the  file.   The count field contains the

                    binary value n to represent a group  of  (n+1)  logical

                    blocks.   The  logical  block number field contains the

                    logical block number of the first logical block in  the

                    group.  



                    Thus,  each  retrieval  pointer  maps  virtual blocks j

                    through (j+n) into  logical  blocks  k  through  (k+n),

                    respectively,  where  j is the total number plus one of

                    virtual blocks represented by all  preceding  retrieval










                    pointers in this and all preceding headers of the file,

                    n is the value contained in the count field, and  k  is

                    the value contained in the logical block number field. 



                    Although  the  data  in  the  map  area  provideds  for

                    arbitrarily   extensible   retrieval   pointer   forms,

                    Files-11  has  defined  only three.  Of these, only the

                    first is currently  implemented.   The  other  two  are

                    presented  out of historical interest;  they will never

                    be supported.  





                    Format 1:  M.CTSZ = 1 

                               M.LBSZ = 3 



                               The  total  retrieval pointer length is four

                               bytes.  Byte 1 contains the high order  bits

                               of  the  24-bit  LBN.   Byte  2 contains the

                               count field, and bytes 3 and 4  contain  the

                               low 16 bits of the LBN.  



                               +----------+----------+

                               |  Count   |   High   |

                               +----------+-        -+

                               |    Low order LBN    |

                               +----------+----------+





                    Format 2:  M.CTSZ = 2 

                               M.LBSZ = 2 



                               The  total  retrieval pointer length is four

                               bytes.  The first  word  contains  a  16-bit

                               count  field  and the second word contains a

                               16-bit LBN field.  



                               +----------+----------+

                               |        Count        |

                               +----------+----------+

                               |    Low order LBN    |

                               +----------+----------+





                    Format 3:  M.CTSZ = 2 

                               M.LBSZ = 4 



                               The  total  retrieval  pointer length is six

                               bytes.  The first  word  contains  a  16-bit

                               count  field  and the second and third words

                               contain a 32-bit LBN field.  










                               +----------+----------+

                               |        Count        |

                               +----------+----------+

                               |    Low order LBN    |

                               +-        -+-        -+

                               |   High order LBN    |

                               +----------+----------+







            3.4.3.10  S.MPHD  10 bytes  Size of Map Area 





                      This  symbol represents the size of the map area, not

                      including the space used for the retrieval pointers. 







            3.4.4  End Checksum Description 





                 The  header  check  sum occupies the last two bytes of the

            file header.  It is verified every time a header is  read,  and

            is recomputed every time a header is written.  







            3.4.4.1  H.CKSM  2 bytes  Block Checksum 





                    This  word  is  a simple additive checksum of all other

                    words in the block.  It is computed  by  the  following

                    PDP-11 routine or its equivalent:  



                            MOV    Header-address, R0

                            CLR    R1

                            MOV    #255., R2

                    10$:    ADD    (R0)+, R1

                            SOB    R2, 10$

                            MOV    R1, (R0)










            3.4.5  File Header Layout 





            Header Area 



                     +-------------------+-------------------+

            H.MPOF   |  Map Area Offset  | Ident Area Offset |   H.IDOF

                     +-------------------+-------------------+

                     |              File Number              |   H.FNUM

                     +-------------------+-------------------+

                     |         File Sequence Number          |   H.FSEQ

                     +-------------------+-------------------+

                     |         File Structure Level          |   H.FLEV

                     +-------------------+-------------------+   H.FOWN

            H.PROJ   |            File Owner UIC             |   H.PROG

                     +-------------------+-------------------+

                     |            File Protection            |   H.FPRO

                     +-------------------+-------------------+   H.FCHA

            H.SCHA   |   System Char's   |    User Char's    |   H.UCHA

                     +-------------------+-------------------+

                     |                                       |   H.UFAT

                     +-                 -+-                 -+

                     |                                       |

                     +-                 -+-                 -+

                     |                                       |

                     +-                 -+-                 -+

                     /       User File Attribute Area        /

                     +-                 -+-                 -+

                     |                                       |   

                     +-                 -+-                 -+

                     |                                       |

                     +-                 -+-                 -+

                     |                                       |

                     +-------------------+-------------------+   S.HDHD














            Ident Area 



                     +-------------------+-------------------+

                     |                                       |   I.FNAM

                     +-                 -+-                 -+

                     |               File Name               |

                     +-                 -+-                 -+

                     |                                       |

                     +-------------------+-------------------+

                     |               File Type               |   I.FTYP

                     +-------------------+-------------------+

                     |            Version Number             |   I.FVER

                     +-------------------+-------------------+

                     |            Revision Number            |   I.RVNO

                     +-------------------+-------------------+

                     |                                       |   I.RVDT

                     +-                 -+-                 -+

                     |             Revision Date             |

                     +-                 -+-                 -+

                     |                                       |

                     +-------------------+-                 -+

            I.RVTI   |                   |                   |

                     +-                  +-------------------+

                     |                                       |

                     +-                 -+-                 -+

                     |             Revision Time             |

                     +-                 -+-                 -+

                     +-------------------+-                 -+

            I.CRDT   |                   |                   |

                     +-                  +-------------------+

                     |                                       |

                     +-                 -+-                 -+

                     |             Creation Date             |

                     +-                 -+-                 -+

                     |                                       |

                     +-------------------+-------------------+

                     |                                       |   I.CRTI

                     +-                 -+-                 -+

                     |             Creation Time             |

                     +-                 -+-                 -+

                     |                                       |

                     +-------------------+-------------------+

                     |                                       |   I.EXDT

                     +-                 -+-                 -+

                     |             Revision Date             |

                     +-                 -+-                 -+

                     |                                       |

                     +-------------------+-                 -+

                     |       Unused      |                   |

                     +-------------------+-------------------+   S.IDHD














            Map Area 



                     +-------------------+-------------------+

            M.ERVN   |   Extension RVN   | Extension Seq Num |   M.ESQN

                     +-------------------+-------------------+

                     |         Extension File Number         |   M.EFNU

                     +-------------------+-------------------+

                     |     Extension File Sequence Number    |   M.EFSQ

                     +-------------------+-------------------+

            M.LBSZ   |  LBN Field Size   | Count Field Size  |   M.CTSZ

                     +-------------------+-------------------+

            M.MAX    |  Map Words Avail. | Map Words in Use  |   M.USE

                     +-------------------+-------------------+   S.MPHD

                     |                                       |   M.RTRV

                     +-                 -+-                 -+

                     |                                       |

                     /          Retrieval Pointers           /

                     |                                       |

                     +-                 -+-                 -+

                     |                                       |

                     +-------------------+-------------------+

                     |         File Header Checksum          |   H.CKSM

                     +-------------------+-------------------+







            4.0  Directories 





                 Files-11 provides directories to allow the organization of

            files in a meaningful way.  While the File ID is sufficient  to

            locate  a file uniquely on a volume set, it is hardly mnemonic.

            Directories are files whose sole function is to associate  file

            name strings with File IDs.  







            4.1  Directory Hierarchies 





                 Since  directories  are  files with no special attributes,

            directories may list files that are in turn directories.  Thus,

            the user may construct directory hierarchies of arbitrary depth

            and complexity to structure his files as he pleases.  
















            4.1.1  User File Directories 





                 Current  implementations  of  Files-11  all  support a two

            level directory hierarchy  which  is  tied  in  with  the  user

            identification  mechanism of the operating system.  Each UIC is

            associated with a user file  directory  (UFD).   References  to

            files  that  do not specify a directory are generally defaulted

            to the user's UIC.  All UFDs are listed  in  the  volume's  MFD

            under  a  file  name  constructed from the UIC.  A UIC of [n,m]

            associates with a directory name of  "nnnmmm.DIR;1"  where  nnn

            and  mmm  are  n  and  m  padded  out to three digits each with

            leading zeroes.  Note that all number conversions are  done  in

            octal.  



                 Two  points  should  be  noted  here.   The  UFD structure

            described here  is  not  intrinsically  part  of  the  Files-11

            on-disk  structure;   rather,  it  is  a  convenient cataloging

            system applied by various operating systems.  Also, there is no

            hard  and fast relationship between the owner UIC of a file and

            the UFD in which it is listed.  Generally, they do  correspond,

            but not necessarily.  







            4.2  Directory Structure 





                 A  directory  is a file consisting of 16-byte records.  It

            is structured as an FCS  fixed  length  record  file,  with  no

            carriage control attributes (see section 6 for a description of

            FCS files).  Each record is a directory entry.  The entries are

            not required to be ordered, or densely packed, nor do they have

            any other relationship  to  each  other,  except  that  no  two

            entries  in  one directory may contain the same name, type, and

            version.  Each entry contains the following:  



            File  ID  The  three  word binary File ID of the file that this

                     directory  entry  represents.   If  the  file   number

                     portion of the File ID field is zero, then this record

                     is empty and may be used for a new directory entry.  



            Name     The name of the file may be up to 9 characters.  It is

                     stored as three words, each containing three  Radix-50

                     packed characters.  



            Type     The type of the file (also historically referred to as

                     the extension) may be up to three characters.   It  is

                     stored as one word of Radix-50 packed characters.  



            Version  The  version number of the file is stored in binary in

                     one word.  














            4.2.1  Directory File Entry Layout 





                     +-------------------+-------------------+

                     |                                       |

                     +-                 -+-                 -+

                     |                File ID                |

                     +-                 -+-                 -+

                     |                                       |

                     +-------------------+-------------------+

                     |                                       |

                     +-                 -+-                 -+

                     |                 Name                  |

                     +-                 -+-                 -+

                     |                                       |

                     +-------------------+-------------------+

                     |                 Type                  |

                     +-------------------+-------------------+

                     |                Version                |

                     +-------------------+-------------------+







            4.3  Directory Protection 





                 Since    directories    are    files   with   no   special

            characteristics, they may be accessed like all other files, and

            are   subject  to  the  same  protection  mechanism.   However,

            implementations of Files-11 support three special functions for

            the  management  of directories, namely FIND, REMOVE and ENTER.

            A user performing such a directory operation  must  first  have

            the following privileges to be allowed the various functions:  



                    FIND:    Read 

                    REMOVE:  Read, Write 

                    ENTER:   Read, Write 



            Note  that  the  same  privilege is required for both ENTER and

            REMOVE.  The recovery for an operation that involves  a  REMOVE

            at the beginning of the sequence is an ENTER.  







            5.0  Known Files 





                 Clearly, any file system must maintain some data structure

            on the medium which is used to control the  file  organization.

            In  Files-11  this data is kept in five files.  These files are

            created when a new volume is initialized.  They are  unique  in

            that their File IDs are known constants.  These five files have

            the following uses:  












                 File  ID  1,1,0  is the index file.  The index file is the

            root  of  the  entire  Files-11  structure.   It  contains  the

            volume's  bootstrap  block and the home block, which is used to

            identify the volume and locate the rest of the file  structure.

            The  index  file  also contains all of the file headers for the

            volume, and a bitmap to control the allocation of file headers. 



                 File  ID  2,2,0 is the storage bitmap file.  It is used to

            control the allocation of logical blocks on the volume.  



                 File  ID  3,3,0  is  the  bad  block  file.   It is a file

            containing all of the known bad blocks on the volume.  



                 File ID 4,4,0 is the volume master file directory, or MFD.

            It forms the root of the volume's directory structure.  The MFD

            lists  the  five known files, all first level user directories,

            and whatever other files the user chooses to enter.  



                 File  ID  5,5,0 is the system core image file.  Its use is

            operating system dependent;  its basic purpose is to provide  a

            file of known File ID for the use of the operating system.  







            5.1  Index File 





                 The  index file is File ID 1,1,0.  It is listed in the MFD

            as INDEXF.SYS;1.  The index file is the root  of  the  Files-11

            structure  in that it provides the means for identification and

            initial access to a Files-11 volume, and  contains  the  access

            data for all files on the volume, including itself.  







            5.1.1  Bootstrap Block 





                 Virtual  block  1  of  the index file is the volume's boot

            block.  It is always mapped to logical block 0 of  the  volume.

            If  the volume is the system device of an operating system, the

            boot block contains an operating system dependent program which

            reads  the  operating system into memory when the boot block is

            read and executed by a machine's hardware  bootstrap.   If  the

            volume  is not a system device, the boot block contains a small

            program that outputs a message on the system console to  inform

            the operator to that effect.  
















            5.1.2  Home Block 





                 Virtual  block  2  of  the index file is the volume's home

            block.  The logical block containing  the  home  block  is  the

            first  good  block on the volume from the sequence 1, 256, 512,

            768, 1024, 1280 ...  (256*n).  The purpose of the home block is

            to  identify  the  volume  as  Files-11, establish the specific

            identity of the volume, and serve  as  the  ground  zero  entry

            point  into  the  volume's  file  structure.  The home block is

            recognized as a home block by  the  presence  of  checksums  in

            known  places  and  by  the  presence  of predictable values in

            certain locations.  



                 Items  contained  in  the  home  block  are  identified by

            symbolic offsets in the  same  manner  as  items  in  the  file

            header.   The  symbols  may  be  defined  in  assembly language

            programs by calling and invoking the macro HMBOF$, which may be

            found  in  the  macro  library  of  any  system  that  supports

            Files-11.  Alternatively, one may find the macro  in  the  file

            F11MAC.MAC.  







            5.1.2.1  H.IBSZ  2 bytes  Index File Bitmap Size 





                     This  16-bit  word  contains the number of blocks that

                     make up the index file bitmap.  (The index file bitmap

                     is  discussed  in  section  5.1.4.) This value must be

                     non-zero for a valid home block.  







            5.1.2.2  H.IBLB  4 bytes  Index File Bitmap LBN 





                     This  doubleword  contains  the starting logical block

                     address of the index file bitmap.  Once the home block

                     of  a  volume  has  been  found, it is this value that

                     provides access to the rest of the index file  and  to

                     the  volume.  The LBN is stored with the high order in

                     the first 16 bits, followed by the low order  portion.

                     This value must be non-zero for a valid home block.  
















            5.1.2.3  H.FMAX  2 bytes  Maximum Number of Files 





                     This  word  contains  the maximum number of files that

                     may be present on the volume at any time.  This  value

                     must be non-zero for a valid home block.  







            5.1.2.4  H.SBCL  2 bytes  Storage Bitmap Cluster Factor 





                     This  word  contains  the  cluster  factor used in the

                     storage bitmap file.  The cluster factor is the number

                     of  blocks  represented  by  each  bit  in the storage

                     bitmap.   Volume  clustering  is  not  implemented  in

                     ODS-1;  the only legal value for this item is 1.  







            5.1.2.5  H.DVTY  2 bytes  Disk Device Type 





                     This  word  is  an  index identifying the type of disk

                     that contains this volume.  It is currently  not  used

                     and always contains 0.  







            5.1.2.6  H.VLEV  2 bytes  Volume Structure Level 





                     This  word  identifies  the  volume's structure level.

                     Like the file structure level,  this  word  identifies

                     the  version of Files-11 which created this volume and

                     permits upward  compatibility  of  media  as  Files-11

                     evolves.   The  volume  structure level is affected by

                     all portions of  the  Files-11  structure  except  the

                     contents  of the file header.  This document describes

                     Files-11 version 1;  the only  legal  values  for  the

                     structure  level  are  401  and 402 octal.  The former

                     (401) is the standard value  for  most  volumes.   The

                     latter (402) is an advisory that the volume contains a

                     multiheader index file.  (A multiheader index file  is

                     required to support more than about 26,000 files.  The

                     index file may in  fact  be  multiheader  without  the

                     volume having a structure level of 402.) 
















            5.1.2.7  H.VNAM  12 bytes  Volume Name 





                     This  area  contains  the  volume  label  as  an ASCII

                     string.  It is padded out to 12 bytes with nulls.  The

                     volume  label  is used to identify individual Files-11

                     volumes.  







            5.1.2.8          4 bytes  Unused 









            5.1.2.9  H.VOWN  2 bytes  Volume Owner UIC 





                     This  word contains the binary UIC of the owner of the

                     volume.  The format is the same as that  of  the  file

                     owner UIC stored in the file header.  









            5.1.2.10  H.VPRO  2 bytes  Volume Protection Code 





                      This word contains the protection code for the entire

                      volume.  Its contents are coded in the same manner as

                      the  file  protection code stored in the file header,

                      and it is interpreted in the same way in  conjunction

                      with  the  volume  owner  UIC.  All operations on all

                      files on the volume must pass both the volume and the

                      file protection check to be permitted.  (Refer to the

                      discussion on file protection in section 3.4.1.7).  







            5.1.2.11  H.VCHA  2 bytes  Volume Characteristics 





                      This  word  contains  bits  which  provide additional

                      control over access to  the  volume.   The  following

                      bits are defined:  



                      CH.NDC  Obsolete,  used  by  RSX-11D  /  IAS.  Set if

                              device control functions are not permitted on

                              this  volume.   Device  control functions are

                              those which can threaten the integrity of the

                              volume, such as direct reading and writing of

                              logical blocks, etc.  



                      CH.NAT  Obsolete,  used by RSX-11D / IAS.  Set if the










                              volume may not be  attached,  i.e.,  reserved

                              for exclusive use by one task.  



                      CH.SDI  Set  if  the  volume  contains  only a single

                              directory.   If   this   bit   is   set,   no

                              directories  should  be created on the volume

                              other  than  the  MFD.   The  access  methods

                              should  also  be  informed of this situation,

                              e.g.  by setting the DV.SDI bit  in  the  UCB

                              device characteristics word.  







            5.1.2.12  H.DFPR  2 bytes  Default File Protection 





                      This  word  contains  the  file  protection  that  is

                      assigned to all files created on this  volume  if  no

                      file protection is specified by the user.  







            5.1.2.13          6 bytes  Unused 









            5.1.2.14  H.WISZ  1 byte  Default Window Size 





                      This  word  contains the number of retrieval pointers

                      used for the "window" (in-memory  file  access  data)

                      when  files  are  accessed  on  the  volume,  if  not

                      otherwise specified by the accessor.  







            5.1.2.15  H.FIEX  1 byte  Default File Extend 





                      This  byte  contains  the  number  of blocks that are

                      allocated to a file when a user extends the file  and

                      asks for the system default value for allocation.  
















            5.1.2.16  H.LRUC  1 byte  Directory Pre-Access Limit 





                      This   byte   contains  a  count  of  the  number  of

                      directories  to  be  stored  in  the  file   system's

                      directory  access  cache.   More  generally, it is an

                      estimate of the number of  concurrent  users  of  the

                      volume, and its use may be generalized in the future. 







            5.1.2.17  H.REVD  7 bytes  Date of Last Home Block Revision 





                      This  field  (ill  defined  field) is in the standard

                      ASCII date format and reflects the date of  the  last

                      modifications to fields in the home block.  







            5.1.2.18  H.REVC  2 bytes  Count of Home Block Revisions 





                      This  field  reflects  the  number of above mentioned

                      modifications.  







            5.1.2.19          2 bytes  Unused 









            5.1.2.20  H.CHK1  2 bytes  First Checksum 





                      This  word  is  an  additive  checksum of all entries

                      preceding in the home block (i.e., all  those  listed

                      above).  It is computed by the same sort of algorithm

                      as the file header checksum (see section 3.4.4.1).  









            5.1.2.21  H.VDAT  14 bytes  Volume Creation Date 





                      This  area contains the date and time that the volume

                      was   initialized.    It    is    in    the    format

                      "DDMMMYYHHMMSS",  followed  by  a  single null.  (The

                      same format is used in the ident  area  of  the  file

                      header, section 3.4.2).  














            5.1.2.22          382 bytes  Unused 





                      This  area is reservied for the relative volume table

                      for volume sets.  This field is  not  used,  although

                      some versions of DSC referred to this area.  







            5.1.2.23  H.PKSR  4 bytes  Pack Serial Number 





                      This  area  contains the manufacturer supplied serial

                      number for  the  physical  volume.   For  last  trace

                      devices,  the  pack serial number is contained on the

                      volume in the manufacturer data.  For  other  devices

                      the  user must supply this information manually.  The

                      serial number is contained  in  the  home  block  for

                      convenience and consistency.  







            5.1.2.24          12 bytes  Unused 









            5.1.2.25  H.INDN  12 bytes  Volume Name 





                      This  area  contains another copy of the ASCII volume

                      label.  It is padded out to 12 bytes with spaces.  It

                      is   placed   here  in  accordance  with  the  volume

                      identification standard (STD 167).  







            5.1.2.26  H.INDO  12 bytes  Volume Owner 





                      This  area  contains an ASCII expansion of the volume

                      owner UIC in the form  "[proj,prog]".   Both  numbers

                      are  expressed  in  decimal  and  are padded to three

                      digits with leading zeroes.  The area is  padded  out

                      to  12 bytes with trailing spaces.  It is placed here

                      in accordance with the volume identification standard

                      (STD 167).  
















            5.1.2.27  H.INDF  12 bytes  Format Type 





                      This  field  contains  the  ASCII string "DECFILE11A"

                      padded out to 12 bytes with  spaces.   It  identifies

                      the volume as being of Files-11 format.  It is placed

                      here in accordance  with  the  volume  identification

                      standard (STD 167).  







            5.1.2.28          2 bytes  Unused 









            5.1.2.29  H.CHK2  2 bytes  Second Checksum 





                      This  word  is  the  last word of the home block.  It

                      contains an additive checksum of  the  preceding  255

                      words  of  the  home block, computed according to the

                      algorithm in section 3.4.4.1.  







            5.1.3  Home Block Layout 





                     +-------------------+-------------------+

                     |        Index File Bitmap Size         |   H.IBSZ

                     +-------------------+-------------------+

                     |        Index File Bitmap LBN          |   H.IBLB

                     +-                 -+-                 -+

                     |                                       |

                     +-------------------+-------------------+

                     |        Maximum Number of Files        |   H.FMAX

                     +-------------------+-------------------+










                     |     Storage Bitmap Cluster Factor     |   H.SBCL

                     +-------------------+-------------------+

                     |           Disk Device Type            |   H.DVTY

                     +-------------------+-------------------+

                     |        Volume Structure Level         |   H.VLEV

                     +-------------------+-------------------+

                     |                                       |   H.VNAM

                     +-                 -+-                 -+

                     |                                       |

                     +-                 -+-                 -+

                     |              Volume Name              |

                     +-                 -+-                 -+

                     |                                       |

                     +-                 -+-                 -+

                     |                                       |

                     +-                 -+-                 -+

                     |                                       |

                     +-------------------+-------------------+

                     |                                       |   Unused

                     +-                 -+-                 -+

                     |                                       |

                     +-------------------+-------------------+

                     |           Volume Owner UIC            |   H.VOWN

                     +-------------------+-------------------+

                     |           Volume Protection           |   H.VPRO

                     +-------------------+-------------------+

                     |        Volume Characteristics         |   H.VCHA

                     +-------------------+-------------------+

                     |        Default File Protection        |   H.DFPR

                     +-------------------+-------------------+

                     |                                       |   Unused

                     +-                 -+-                 -+

                     |                                       |

                     +-                 -+-                 -+

                     |                                       |

                     +-------------------+-------------------+

            H.FIEX   | Def. File Extend  | Def. Window Size  |   H.WISZ

                     +-------------------+-------------------+

            H.REVD   |                   |  Directory Limit  |   H.LRUC

                     +-                 -+-------------------+

                     |                                       |

                     +-                 -+-                 -+

                     |       Volume Modification Date        |

                     +-                 -+-                 -+

                     |                                       |

                     +-------------------+-------------------+

                     |       Volume Modification Count       |   H.REVC

                     +-------------------+-------------------+

                     |                                       |   Unused

                     +-------------------+-------------------+

                     |            First Checksum             |   H.CHK1

                     +-------------------+-------------------+










                     |                                       |   H.VDAT

                     +-                 -+-                 -+

                     |                                       |

                     +-                 -+-                 -+

                     |                                       |

                     +-                 -+-                 -+

                     |         Volume Creation Date          | 

                     +-                 -+-                 -+

                     |                                       |

                     +-                 -+-                 -+

                     |                                       |

                     +-                 -+-                 -+

                     |                                       |

                     +-------------------+-------------------+

                     |                                       |   Unused

                     +-                 -+-                 -+

                     |                                       |

                     /                  -+-                  /

                     |                                       |

                     +-                 -+-                 -+

                     |                                       |

                     +-------------------+-------------------+

                     |           Pack Serial Number          |   H.PKSR

                     +-                 -+-                 -+

                     |                                       |

                     +-------------------+-------------------+

                     |                                       |   Unused

                     +-                 -+-                 -+

                     |                                       |

                     +-                 -+-                 -+

                     |                                       |

                     +-                 -+-                 -+

                     |                                       |

                     +-                 -+-                 -+

                     |                                       |

                     +-                 -+-                 -+

                     |                                       |

                     +-------------------+-------------------+

                     |                                       |   H.INDN

                     +-                 -+-                 -+

                     |                                       |

                     +-                 -+-                 -+

                     |              Volume Name              |

                     +-                 -+-                 -+

                     |                                       |

                     +-                 -+-                 -+

                     |                                       |

                     +-                 -+-                 -+

                     |                                       |

                     +-------------------+-------------------+










                     |                                       |   H.INDO

                     +-                 -+-                 -+

                     |                                       |

                     +-                 -+-                 -+

                     |             Volume Owner              |

                     +-                 -+-                 -+

                     |                                       |

                     +-                 -+-                 -+

                     |                                       |

                     +-                 -+-                 -+

                     |                                       |

                     +-------------------+-------------------+

                     |                                       |   H.INDF

                     +-                 -+-                 -+

                     |                                       |

                     +-                 -+-                 -+

                     |              Format Type              |

                     +-                 -+-                 -+

                     |                                       |

                     +-                 -+-                 -+

                     |                                       |

                     +-                 -+-                 -+

                     |                                       |

                     +-------------------+-------------------+

                     |                                       |   Unused

                     +-------------------+-------------------+

                     |            Second Checksum            |   H.CHK2

                     +-------------------+-------------------+







            5.1.4  Index File Bitmap 





                 The index file bitmap is used to control the allocation of

            file numbers (and hence file headers).   It  is  simply  a  bit

            string  of  length  n,  where  n is the maximum number of files

            permitted on the volume (contained in offset H.FMAX in the home

            block).   The  bitmap  spans as many blocks as are necessary to

            hold it, i.e., maximum number of  files  divided  by  4096  and

            rounded up.  The number of blocks in the bitmap is contained in

            offset H.IBSZ of the home block.  



                 The   bits   in   the   index  file  bitmap  are  numbered

            sequentially from 0 to (n-1) in the obvious manner, i.e.,  from

            right  to  left  in  each byte, and in order of increasing byte

            address.  Bit j is used to represent file number (j+1):  If the

            bit is 1, then that file is in use;  if the bit is 0, then that

            file number is not in use  and  may  be  assigned  to  a  newly

            created file.  



                 The  index  file  bitmap  starts at virtual block 3 of the

            index file and continues through VBN  (2+m),  where  m  is  the










            number  of  blocks in the bitmap.  It is located at the logical

            block indicated by offset H.IBLB in the home block.  







            5.1.5  File Headers 





                 The  rest  of the index file contains all the file headers

            for the volume.  The first 16 file headers (for file numbers  1

            through 16) are logically contiguous with the index file bitmap

            to facilitate  their  location;   the  rest  may  be  allocated

            wherever  the  file  system  sees fit.  Thus, the first 16 file

            headers may be located from the data in the home block  (H.IBSZ

            and  H.IBLB) while the rest must be located through the mapping

            data in the index file header.  The file header for file number

            n is located at virtual block (2+m+n), where m is the number of

            blocks in the index file bitmap.  







            5.2  Storage Bitmap File 





                 The storage bitmap file is File ID 2,2,0.  It is listed in

            the MFD as BITMAP.SYS;1.  The storage bitmap is used to control

            the  available  space  on  a  unit.   It  consists of a storage

            control block which  contains  summary  information  about  the

            unit,  and  the  bitmap  itself which lists the availability of

            individual blocks.  







            5.2.1  Storage Control Block 





                 Virtual  block  1  of  the  storage  bitmap is the storage

            control block.  It contains  summary  information  intended  to

            optimize  allocation of space on the unit.  The storage control

            block has the following format for disks with less than 516,096

            (4096*126) blocks:  



            3 bytes:  Unused (zero)

            1 byte:   Number of storage bitmap blocks (less than 127)

            2 bytes:  Number of free blocks in bitmap block 1

            2 bytes:  Free block pointer in bitmap block 1

            2 bytes:  Number of free blocks in block 2

            2 bytes:  Free block pointer in bitmap block 2

                      .

                      .

                      .

            2 bytes:  Number of free blocks in block n

            2 bytes:  Free block pointer in bitmap block n

            4 bytes:  Size of the unit in logical blocks












            The  storage  control  block has the following format for disks

            with more than 516,096 (4096*126) blocks:  



            3 bytes:    Unused (zero)

            1 byte:     Number of storage bitmap blocks (greater than 126)

            4 bytes:    Size of the unit in logical blocks

            246 bytes:  Unused (zero)



            Note:   Current  implementations  of  Files-11 do not correctly

            initialize the word pairs containing the number of free  blocks

            and the free block pointer for each bitmap block, nor are those

            values maintained as space is allocated and freed on the  unit.

            They are therefore best looked upon as (2*n) garbage words, and

            should not be used by future implementations of Files-11  until

            the disk structure is formally updated.  







            5.2.2  Storage Bitmap 





                 Virtual  blocks  2  through  (n+1)  are the storage bitmap

            itself.  It is best  viewed  as  a  bit  string  of  length  m,

            numbered  from  0  to  (m-1),  where  m  is the total number of

            logical blocks on the unit  rounded  up  to  the  next  integer

            multiple  of  4096.  The bits are addressed in the usual manner

            (packed right to left in sequentially numbered  bytes).   Since

            each virtual block holds 4096 bits, n blocks (where n = m/4096)

            are used to hold the bitmap.  



                 Bit  j  of  the  bitmap  represents logical block j of the

            volume;  if the bit is set, the block is free;  if  clear,  the

            block  is  allocated.   Clearly, the last k bits of the map are

            always clear, where k is the difference between the  true  size

            of the volume and m, the length of the bitmap.  



                 The size of the bitmap is limited to 256 blocks.  In fact,

            due  to  existing  implementations  on  all  RSX  system,   the

            retrieval pointers must be in one of the following two forms:  





                 1.  A   single   retrieval   pointer  mapping  the  entire

                     BITMAP.SYS file.  



                 2.  Two  retrieval  pointers,  the  first mapping only the

                     storage bitmap control block, and the  second  mapping

                     the entire storage bitmap.  



            This  restriction  limits  ODS-1 to a volume of 4096*255 blocks

            (1,044,480 blocks) or about 500 megabytes.  
















            5.3  Bad Block File 





                 The  bad block file is File ID 3,3,0.  It is listed in the

            MFD as BADBLK.SYS;1.  The bad  block  file  is  simply  a  file

            containing all of the known bad blocks on the volume.  







            5.3.1  Bad Block Descriptor 





                 Virtual  block  1  of  the bad block file is the bad block

            descriptor for the volume.  It is always located  on  the  last

            good  block of the volume.  This block may contain a listing of

            the bad blocks on the volume, produced  by  a  bad  block  scan

            program  or  diagnostic.   The  format of the bad block data is

            identical to the map area of a file  header,  except  that  the

            first  four entries (M.ESQN, M.ERVN, M.EFNU and M.EFSQ) are not

            present.  The  last  word  of  the  block  contains  the  usual

            additive checksum.  (See section 3.4.3 for a description of the

            map area.) This block is included in the bad block file to save

            the  data  it  contains  for  future  re-initializations of the

            volume.  







            5.3.2  Bad Block Descriptor Layout 





                     +-------------------+-------------------+

                     |  LBN Field Size   | Count Field Size  |

                     +-------------------+-------------------+

                     |  Map Words Avail. | Map Words in Use  |

                     +-------------------+-------------------+   

                     |                                       |   

                     +-                 -+-                 -+

                     |                                       |

                     /          Retrieval Pointers           /

                     |                                       |

                     +-                 -+-                 -+

                     |                                       |

                     +-------------------+-------------------+

                     |            Block Checksum             |  

                     +-------------------+-------------------+
















            5.4  Master File Directory 





                 The  master  file directory (MFD) is File ID 4,4,0.  It is

            listed in the MFD (itself) as 000000.DIR;1.   The  MFD  is  the

            root  of  the  volume's directory structure.  It lists the five

            known files, plus whatever the user chooses to enter.   In  the

            two  level  UFD  structure  described in section 4.1.1, the MFD

            contains entries for all user file directories.  







            5.5  Core Image File 





                 The core image file is File ID 5,5,0.  It is listed in the

            MFD as CORIMG.SYS;1.  Its use is  operating  system  dependent.

            In  general, it provides a file of known File ID for the use of

            the operating system for use as  a  swap  area,  as  a  monitor

            overlay area, etc.  







            6.0  FCS File Structure 





                 File  Control  Services (FCS) is a user level interface to

            Files-11.  Its principal features are a record control facility

            that  allows  sequential processing of variable length records,

            and sequential and random access to fixed length record  files.

            FCS  interfaces  to  the virtual block facility provided by the

            basic Files-11 structure.  







            6.1  FCS File Attributes 





                 FCS  stores  attribute  information  about the file in the

            file  header's  user  attribute  area  (H.UFAT  -  see  section

            3.4.1.9).   It  uses  only  the  first  7  words;  the rest are

            ignored  by  FCS,  but  are  reserved  by  DEC.   RMS  uses  an

            additional 3 words - 10 words in all - for relative and indexed

            file attributes.  



                 The  following  items are contained in the attribute area;

            they are identified by the usual symbolic offsets  relative  to

            the start of the attribute area.  The offsets may be defined in

            assembly language programs by calling and  invoking  the  macro

            FDOFF$.   Flag  values  and  bits may be defined by calling and

            invoking the macro FCSBT$.  These  macros  are  in  the  system

            macro  library  of any operating system that supports Files-11.

            Alternatively, all these  values  are  defined  in  the  system










            object library of any system that supports Files-11, and may be

            obtained at link time.  







            6.1.1  F.RTYP  1 byte  Record Type 





                   This  byte  identifies  the type of records contained in

                   this file.  The following three values are legal:  



                   R.FIX  Fixed length records 

                   R.VAR  Variable length records 

                   R.SEQ  Sequenced variable length records 







            6.1.2  F.RATT  1 byte  Record Attributes 





                   This  byte  contains  record attribute bits that control

                   the handling of records  under  various  contexts.   The

                   following flag bits are defined:  



                   FD.FTN  Use Fortran carriage control.  The first byte of

                           each record is to be interpreted as  a  standard

                           Fortran  carriage  control  character  when  the

                           record is copied to a carriage control device.  



                   FD.CR   Use  implied carriage control.  When the file is

                           copied to a carriage control device, each record

                           is to be preceded by a line feed and followed by

                           a  carriage  return.   FD.FTN  and   FD.CR   are

                           mutually exclusive.  



                   FD.PRN  The  two  byte  sequence  number field for R.SEQ

                           record format is  to  be  interpreted  as  print

                           control  information.   See  section 6.3.3.1 for

                           format of print information.  



                   FD.BLK  Records  do  not  cross block boundaries if set.

                           Generally, there is dead space  at  the  end  of

                           each block;  how this is handled is explained in

                           the description of  record  formats  in  section

                           6.3.  
















            6.1.3  F.RSIZ  2 bytes  Record Size 





                   In  a  fixed  length record file, this word contains the

                   size of the records in  bytes.   In  a  variable  length

                   record file, this word contains the size in bytes of the

                   longest record in the file.  







            6.1.4  F.HIBK  4 bytes  Highest VBN Allocated 





                   This  32-bit  number is a count of the number of virtual

                   blocks allocated to  the  file.   Since  this  value  is

                   maintained  by  FCS, it is usually correct;  however, it

                   is not guaranteed, since FCS is a user level package.  







            6.1.5  F.EFBK  4 bytes  End of File Block 





                   This  32-bit  number is the VBN is which the end of file

                   is located.  Both F.HIBK and F.EFBK are stored with  the

                   high  order half in the first two bytes, followed by the

                   low order half.  







            6.1.6  F.FFBY  2 bytes  First Free Byte 





                   This  word  is  a count of the number of bytes in use in

                   the virtual block containing the end of file,  i.e.,  it

                   is  the  offset  to the first byte of the file available

                   for appending.  Note that an end of file that falls on a

                   block boundary may be represented in either of two ways: 



                   1.   F.EFBK contains precisely n blocks, F.EFBK contains

                   512.  

                   2.  F.EFBK contains (n+1), F.EFBK contains 0.  







            6.1.7  S.FATT  14 bytes  Size of Attribute Block 





                   This  symbol represents the total number of bytes in the

                   FCS file attribute block.  
















            6.2  FCS File Attribute Block Layout 





                     +-------------------+-------------------+

            F.RATT   | Record Attributes |    Record Type    |   F.RTYP

                     +-------------------+-------------------+

                     |              Record Size              |   F.RSIZ

                     +-------------------+-------------------+   

                     |         Highest VBN Allocated         |   F.HIBK

                     +-                 -+-                 -+

                     |                                       |

                     +-------------------+-------------------+

                     |            End of File VBN            |   F.EFBK

                     +-                 -+-                 -+

                     |                                       |

                     +-------------------+-------------------+

                     |            First Free Byte            |   F.FFBY

                     +-------------------+-------------------+   S.FATT







            6.3  Record Structure 





                 This  section  describes  how  records  are  packed in the

            virtual blocks of a disk file.  In general, FCS treats  a  disk

            file  as  a  sequentially numbered array of bytes.  Records are

            numbered consecutively starting with 1.  







            6.3.1  Fixed Length Records 





                 In a file containing fixed length recor