DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦b0def891d⟧ TextFile

    Length: 112640 (0x1b800)
    Types: TextFile
    Names: »D77«

Derivation

└─⟦a2495fc4f⟧ Bits:30005867/disk10.imd Dokumenter (RCSL m.m.)
    └─⟦this⟧ »D77« 

TextFile

           
           \f

F_       1_._ _ _ _ _ _ _ _ _I_N_T_R_O_D_U_C_T_I_O_N_ 1.
           
          This manual describes a system for basic handling of files on
          flexible discs on the RC8000 family of computers, using the
          flexible disc stations RC3650 or RC3751. 
           
          A number of standard ALGOL procedures, intended for use from an
          ALGOL program, have been created, which allows the user within
          the ALGOL system to handle files and I/O on a flexible disc in a
          way similar to all other peripheral units. 
           
          Chapter 2 contains a brief description of the diskette as a
          datamedium, handling of it and the diskette stations RC3650 and
          RC3751. 
           
          Chapter 3 contains a description of the ALGOL procedures.
          Furthermore som system formats are mentioned. 
           
          Chapter 4 contains a guide in using the system under various
          operating systems. 
           
          Chapter 5 contains references and standards. 
           
          The system follows international and widely used standards.
          For detailed information of formats and contents and deviations
          from standards to the references given and the reference standard
          working paper added as appendix. 
           
          This manual is not a textbook in general file handling nor a
          course of advanced use of flexible discs, but merely a first
          basic description of the basic tools for file handling on a
          flexible disc. However, the appendix and references given will
          provide the advanced user with sufficient information which might
          inspire to develop more advanced strategies for private use. 
           \f

F_       2_._ _ _ _ _ _ _ _ _B_R_I_E_F_L_Y_ _A_B_O_U_T_ _T_H_E_ _F_L_E_X_I_B_L_E_ _D_I_S_C_ _A_S_ _A_ _D_A_T_A_M_E_D_I_U_M_                  2.
           
          A diskette, also called flexible disc or 'floppy disc' is a thin
          (round) disc enclosed in a protective squareshaped plastic jacket
          about 20*20 cm (8*8 inch). 
           
          When used the diskette is, together with the jacket, inserted in
          the flexible disc station, which might be an RC3650 or an RC3751.
           
          The diskettes are available in 6 formats presently: single- or
          doublesided, each with 3 different formats: 128/256/512 charac-
          ters per sector (physical record). The RC3650 model is only ca-
          pable of handling one format: one sided, 128 ch/sector format.
          The RC3751 model is capable of handling all 6 formats. The dif-
          ferent formats are noted physically on the diskette and cannot be
          altered dynamically at (high level) runtime. The diskettes can be
          bought preformatted, or formatted/reformatted on installation-
          level by using e.g. the formatting program mentioned in ref. 7.
           
          Knowledge of the physical organization of the diskette will be of
          value in the following. 
           
          A d_i_s_k_e_t_t_e_ is organized in 77 t_r_a_c_k_s_ (on rotation) on each s_u_r_-
          f_a_c_e_ of 26/15/8 s_e_c_t_o_r_s_ of 128/256/512 c_h_a_r_a_c_t_e_r_s_ per sector,
          apart from track 00 which is always organized with 128 characters
          per sector. 
           
          A doublesided diskette then has 52/39/16 sectors on a pair of
          tracks (called a c_y_l_i_n_d_e_r_). 
           
          In track 00 (cylinder 00 for doublesided) the organization of the
          v_o_l_u_m_e_ (the diskette) is noted in sector No 7 (6 if counted from
          0), see contents of volumelabel in appendices B and C. 
           
                   Sector 8 to 26 (8 to 52 on doublesided) are able to contain each
          one f_i_l_e_h_e_a_d_e_r_l_a_b_e_l_, describing each one datafile located on the
          d_a_t_a_t_r_a_c_k_s_ (datacylinders) 1 to 74. For the format and contents
          of the fileheaderlabels, see appendices B and C. The two last
          tracks/cylinders are reserved for a_l_t_e_r_n_a_t_i_v_e_ _t_r_a_c_k_s_, i.e. up to\f

          two tracks/cylinders may be damaged and replaced. The replacing
          which cannot be performed at high level runtime, is performed
          e.g. by use of ref. 7 by moving the logical number of all suc-
          ceeding tracks to the next higher numbered track and then noting
          the bad track numbered in the e_r_r_o_r_m_a_p_ located in sector 5 (4 if
          counted from 0) on track 0. If recognizing a track which after
          some time has become bad, save the data on the diskette into an-
          other medium (e.g. another diskette) and send the bad discette to
          your installating department/operator in order to perform the bad
          track replacing. Afterwards the original data can be reloaded if
          wanted and hereafter the system will automatically take the re-
          placement into account. 
           
          Furthermore, a single record within a sector can be erased for
          handling of this, see section 3.4. 
           
          When the diskette is read or written, datatransfer will be made
          with or without character conversion. In model RC3650 this de-
          pends on whether the system was originally configurated with a
          conversion table or not, in RC3751 this table can be turned on or
          off dynamically at runtime. 
           
          The implementation of the system has followed the widely used
          ECMA/ISO standard, bent towards the IBM 3740 standard, so that
          data exchange and operation conventions to a very high degree are
          compatible with installations using these standards. 
           
          In all we have, from the programmer's point of wiew that flexible
          disc is a datamedium which can hold up to 19 files (45 on double-
          sided) holding up to approximately 1/4 M characters (1/2 M char-
          acters for doublesided). By means of the ALGOL procedures offered
          in this manual, the flexible disc can be operated, read and writ-
          ten compatible with internationally widely used standards, here-
          by permitting a high degree of data interchangeability. 
           
                   A few operational notes: 
           
             - The diskette must be inserted in this way: if you hold it in\f

               front of you, so that you are able to read the front de-
               scription on the jacket, take it in the upper edge and in-
               sert it in the device, so that the front description turns
               away from the write protect lamp. Push until a gentle click
               is heard, and close the gate gently with another click. 
                
             - If the write protect lamp has been lit, the diskette will be
               write protected by hardware. Writing can be allowed by push-
               ing the button, so that the lamp is not lit. 
                
             - Store the diskette carefully, preferably in both a dust
               cover and a box, never let it be exposed to extreme tempera-
               tures, never let it lie in the sun, never let it get wet,
               and try to let smoke, sweatty fingers, coffeecups and the
               like stay out of its life (which otherwise will soon be end-
               ed). 
                    
           \f

F_       3_._ _ _ _ _ _ _ _ _D_E_S_C_R_I_P_T_I_O_N_ _O_F_ _T_H_E_ _F_L_E_X_I_B_L_E_ _D_I_S_C_ _H_A_N_D_L_I_N_G_ _A_L_G_O_L_ _P_R_O_C_E_D_U_R_E_S_       3.
           
          A system for file creation and handling on flexible discs (also
          called floppy discs or diskettes) on the RC8000 family of com-
          puters within their ALGOL system. 
           
          The system distinguishes between five phases in the handling of a
          flexible disc and a file on it. 
           
             a) the mounting of a flexible disc 
             b) the connection of a file 
             c) reading from or writing into the file 
             d) the termination of the use of the file 
             e) the releasing of the flexible disc 
           
          As all other peripheral units, flexible discs are handled by
          means of zones. On its first track a flexible disc contains a
          catalog of labels, defining the contents of the disc. In order to
          handle the flexible disc in an orderly manner according to its
          labels, the information that can be held in a zone descriptor is
          not sufficient. The user must therefore supply a part of the zone
          buffer to be used by the system. This part is at present 33
          double words, i.e. 132 halfwords. 
           
           
3_._1_ _ _ _ _ _ _ _D_e_c_l_a_r_a_t_i_o_n_ _o_f_ _t_h_e_ _Z_o_n_e_ 3.1
           
          A zone to be used by this system is declared as follows: 
           
             zone flop (33+blocklength*shares,shares,blockprocedure). 
           
          The block procedure is supplied by the user, and it may be called
          during user's I/O as described in chapter 4. 
           
          Transport-errors during identification of volumes and files are
          handled directly by the system itself. 
           
                   The surplus-length of 33 double words in the zone buffer is used
          for various purposes by the system. It is possible for the user\f

          to peep into this information as described in chapter 3, but he
          is warned that the whole system may collapse if he accidentally
          disturbs the information stored here. 
           
           
3_._2_ _ _ _ _ _ _ _M_o_u_n_t_i_n_g_ _a_n_d_ _I_d_e_n_t_i_f_i_c_a_t_i_o_n_ _o_f_ _a_ _F_l_e_x_i_b_l_e_ _D_i_s_c_ 3.2
           
          According to ref. 1 a Volume Identifier consists of 6 so-called
          "a" characters. In order to handle a flexible disc within the
          present system, its Volume Identifier must consist of 1 to 6
          letters or digits, supplemented with spaces or NUL-characters to
          the right. 
           
          Within the RC8000 system all letters in Volume Identifiers are
          capital letters, but in order to reduce confusion, capital let-
          ters and small letters are handled alike. The RC8000 monitor will,
          as an identifier for a peripheral process, accept a small letter
          followed by up to 10 small letters or digits. 
           
          As a Volume Identifier may consist of digits alone, the ident-
          ifier of the peripheral process is composed of the prefix "fd0"
          followed by the volume identifier, where capital letters are con-
          verted to small letters. 
           
          E_x_a_m_p_l_e_ _1_: 
           
             A program wanting connection with the volumes: 
              
                471111, DH4711 and NILFIS 
              
             will communicate with the rest of the system with messages
             concerning: 
              
                fd0471111, fd0dh4711 and fd0nilfis 
              
             respectively. 
              \f

                   Two procedures for identification of a flexible disc exist. They
          have the following implied procedure heads: 
           
             integer procedure flxlabel (flopz,vol _id,owner _id); 
                  zone                   flopz                 ; 
                  string <*max 6 chars*>       vol _id          ; 
                  long array <*min declared 1:3*>     owner _id ; 
              
          and 
              
             integer procedure flxmount (flopz,vol _id,owner _id); 
                  zone                   flopz                 ; 
                  string <*max 6 chars*>       vol _id          ; 
                  long array <*min declared 1:3*>     owner _id ; 
              
          The procedures test the existence of and try to reserve a peri-
          pheral process of the name of <:fd0:> con vol _id. If the process
          does not exist or if it cannot be reserved a parent message,
          requesting the disc to be mounted, is issued. 
           
          The procedure flxlabel then creates a Volume label. The Volume
          Identifier field is set equal to the max 6 first characters of
          the string parameter possibly supplemented with spaces. Small
          letters are converted to capital letters. The contents of the
          Owner Identifier field in the label (14 characters) are set ac-
          cording to the array owner _id. This is done by taking the bytes
          with field indices 1 to 9 inclusive plus the leftmost 4 bits of
          byte 10 and transfer them uncritically. The Volume Identifier
          label is then transferred to sector 7 on track 0. The sectors 8
          to 26 are filled with empty file labels. Now flxlabel continues
          as flxmount after successful identification of a volume. 
           
          The procedure flxmount reads sector 7 of track 0 on the flexible
          disc. If the sector can be read, and if there is coincidence be-
          tween the Volume Identifier and the string parameter, the mount-
          ing is considered to be successful. In any case the contents of
          the Owner Identification Field are transferred to the owner _id
          array, supplemented with 1 NUL character. 
           \f

                   Now flxmount and flxlabel continue by dividing the zone buffer
          between the shares. First 132 halfwords are taken for internal
          purposes. The remaining part is divided evenly between the
          shares. A possible remainder is left unused. 
           
          Then the zone state is set to 8, i.e. open but not positioned and
          the procedure returns with the value +1 if the mounting was suc-
          cessfully carried out and -1 otherwise. 
           
           
3_._3_ _ _ _ _ _ _ _I_d_e_n_t_i_f_i_c_a_t_i_o_n_ _a_n_d_ _C_o_n_n_e_c_t_i_o_n_ _o_f_ _F_i_l_e_s_ _o_n_ _a_ _F_l_e_x_i_b_l_e_ _D_i_s_c_ 3.3
           
          According to ref. 1, files on a flexible disc are described by
          means of File Header Labels located on track 0 of the disc, where
          the sectors, apart from the first 7, can hold each one filede-
          scriptor, a fileheader for datafiles located on the datatracks on
          the rest of the diskette. The File Identifier consists of 12
          characters. The present system will accept any character string
          as a File Identifier, but in order to minimize confusion, the
          system does not distinguish between capital and small letters. 
           
          Two procedures for connection of files exist. They have the fol-
          lowing implied procedure heads: 
           
             integer procedure flxset (flopz,file _id,size); 
               zone                    flopz              ; 
               string <*max 12 characters*>  file _id      ; 
               integer                               size ; 
           
          and 
           
             integer procedure flxopen (flopz,file _id,rel _pos); 
               zone                     flopz                 ; 
               string <*max 12 characters*>   file _id         ; 
               integer                                rel _pos ; 
           
                   The procedure flxset is intended for creation of new files on a
          flexible disc, it may also be used for re-use of existing files.
          The procedure flxopen is used for connection to an existing file.\f

          Both procedures require that the zone state is 8, i.e. after
          either flxlabel, flxmount or flxclose. In case of success they
          leave the zone in state 0, i.e. open and positioned. 
           
          Flxset proceeds as follows: the fileheaders on cylinder 0 are
          searched until either a File Header Label with file _id as File
          Identifier or a sector with a File Identifier field filled with
          spaces or NUL-characters is found. If neither an empty File
          Identifier nor a File Identifier corresponding to the file _id
          parameter can be found, the procedure returns with the value -1
          and no connection has been made, i.e. the zone state is unchang-
          ed. 
           
          If an empty File Identifier is found, a new File Header Label is
          created. The following fields are set: 
           
             The Label Identifier       is set to HDR1 (note the deviation
                                        from ref. 1). 
                                         
             The File Identifier        is set according to the file _id
                                        parameter. It may be padded with
                                        spaces. All small letters are writ-
                                        ten as capital letters, however. 
                                         
             The Record Length          is set equal to the length of the
                                        first share measured in characters,
                                        but not more than a single sector
                                        is able to contain. 
                                         
             The Record Format          is indicated by F. 
                                         
             The Block Length           is set equal to the Record Length. 
                                         
             The BOE                    is set to the sector immediately
                                        after the EOE field of the pre-
                                        ceding File Header. 
                                         
             The EOE                    is set so that a file of the wanted
                                        size is created. If the EOE exceeds\f

                                        the last track on the diskette,
                                        this track is indicated in EOE.
                                        I.e. the maximum space available
                                        for a file on a volume can be re-
                                        quired by asking for a large size.
                                        However, do not ask for a size
                                        greater than 1,000,000 sectors. 
                                         
             The Volume Sequence Number is set to 00. 
                                         
             The Creation Date          is set to 01001, i.e. the first day
                                        of year one. 
                                         
             The Offset                 is set to 00000. 
                                         
             The Expiration Date        is set to 02001, i.e. one year
                                        after the creation. 
                                         
             The EOD                    is set equal to the BOE. 
                                         
          If a field with the searched File Identifier exists, only the
          EOE, Creation Date, Offset, Expiration Date and EOD fields are
          set. The maximum upper value of the EOE field will not exceed the
          value already found in the Label. The other fields are set as
          above. 
           
          The label created as above will n_o_t_ be written on the flexible
          disc. It will remain in core as a picture until the use of the
          file is terminated. 
           
          The return value of flxset tells how many sectors were actually
          created. The logical position of the zone will be just before
          BOE. 
           
          The procedure flxopen searches the fileheaders on cylinder 0,
          until either a File Header Label with the searched file _id as
          File Identifier is found (this is considered to be a success) or
          space filled File Identifier field is found. In case of success
          the procedure will connect the zone to the file and set the logi-\f

                   cal position according to the value of the rel _pos parameter:  
           
             If rel _pos is < 0 the logical position will be just after EOD
             (Note: not EOE). 
              
             If rel _pos is >_ 0 the logical position will be just before the
             BOE + as many sectors as given by rel _pos, taking cylinder
             changes into consideration. 
              
          This means that the first sector in the extent has rel _pos = 0,
          the second has rel _pos = 1 etc. 
           
          The value returned by flxopen is -1 if a label cannot be found.
          Otherwise, if the logical position is before EOD, the return
          value of flxopen is equal to the number of sectors between the
          logical position and just after EOD, else the value is equal to
          the number of sectors between the logical position and just after
          EOE. This last number may well be <_ 0, if the value of rel _pos >_
          the size of the file. 
           
          Though flxopen is intended for opening to a named datafile, it is
          possible to open to the index track 00 by opening to an empty
          name, i.e. flxopen (flopz, <::>, 7) will open to the indextrack
          and position to the first fileheaderlabel (which has rel _pos 7).
          The fileheader can now be read, e.g. by means of inrec6, see
          example 6. In order to position to the first fileheaderlabel, the
          call flxopen (flopz, <::>, -1) could also be used. 
           
          After opening and positioning, the file label information is lo-
          cated in the zone-buffer. By means of a getzone6-setzone6 call,
          it may be inspected. 
           
          The inspection may be performed if record base (ia(14) of
          getzone6) is set equal to base buffer area (ia(19)) and record
          length (ia(16)) is set equal to 62. If you set a larger record
          length, e.g. 132 you may damage valuable system information, and
          the whole system may collapse. 
           \f

          Now field indices 1 to 8 contain the first 12 characters of the
          Volume label and field indices 9 to 62 contain the file header
          label. 
           
           
         3_._4_ _ _ _ _ _ _ _T_h_e_ _U_s_e_ _o_f_ _t_h_e_ _F_i_l_e_                                              3.4
           
                   After successful opening by means of flxopen or flxset, the share
          length and the block length given in the file header label are
          tuned to each other, so that each share has a size measured in
          number of characters so that blocklength <_ share size <_ block
          length + 2, and that the share size covers an even number of
          bytes. Note that if flxset has been used, blocklength is divisib-
          le by 3 for blocklengths less than the sectorlength. (The sector-
          length is not divisible by 3). 
           
          Now the zone may be used by the record handling procedures
          inrec6, outrec6, invar, outvar, etc. or the character handling
          procedures read etc. or write etc.. If the flexible disc is con-
          nected via an ISO to EBCDIC conversion in the front end processor
          of the RC4000 or RC8000 or the same conversion in the RC6000, on-
          ly the character handling procedures should be used. 
           
          When transferring data corresponding to a whole sector use/ask
          for a number of words which can hold the whole sector/the rest of
          the sector, do not use a greater number of words than necessary.
          I.e. when transferring e.g. a whole sector of 128 characters, use
          e.g. inrec6(z,86)/outrec6(z,86) corresponding to a transfer of
          129 characters. The system will automatically cut down - that is
          by input 128 + an undefined character are delivered, by output
          only the first 128 characters are used. 
           
          During transfers certain transport errors may occur. In case of
          transport errors, the system will warn the user by calling his
          block procedure in the usual way. If the block procedure returns
          through its final end, the action of the system will depend on
          the returned value of the b-parameter. 
           \f

          If b=0 on return, an input block (sector) will simply be dropped,
          and the system will resume reading from the next sector. During
          output, b=0 signals that output should be continued at the next
          sector, beginning with the present block. 
           
                   If b>0 on return, signals that a transfer of the block has been
          simulated by the block procedure. During output this means that a
          block will be dropped. During input the defect block will be sub-
          stituted by the block created by the block procedure. 
           
          Certain transport errors are handled directly by the system and
          will not call the user's block procedure. 
           
          These are: 
           
             Intervention where the system will send appropriate parent
             messages so that the disc is remounted. 
              
             Stopped internal process, where the system simply will restart
             the transport at the appropriate position. 
              
             No write enable during output where the system will send an
             appropriate enable message to the parent. 
              
          After an intervention, the system will if possible check that the
                   correct disc is still mounted. This is not possible if flxmount
          returned with the value -1 signalling that the volume label was
          not appropriate. 
           
          Other bits may be handled by the user's blockprocedure, as norm-
          ally for error handling. If the bits are not handled properly the
          system may give up or break down, as normally in error situations.
           
          The readerror bit should be mentioned. This bit occurs in case
          a deleted sector is attempted accessed. (A sector can be noted
          erased/deleted by a special 'addressmark' noticed by the hard-
          ware, and in some installations the first character of the data
          in the sector will be replaced with the letter 'D'. 
           \f

                   Nothing need be done, (apart from possibly handling the b-param-
          eter) but to the user's information the block procedure is enter-
          ed in case of a deleted record/erased sector, where you e.g.
          might count (increment the count) the deleted records, before you
          return to the flxsystem (by doing nothing further). 
           
           
3_._5_ _ _ _ _ _ _ _T_h_e_ _T_e_r_m_i_n_a_t_i_o_n_ _o_f_ _t_h_e_ _U_s_e_ _o_f_ _a_ _F_i_l_e_ 3.5
           
          When a file is no longer used, or if the user program wants to go
          from e.g. reading to writing, the present use is terminated by a
          call of the procedure flxclose possibly followed by new flxopen-
          call. 
           
          The procedure for terminating the current use has the following
          implied procedure head: 
           
             procedure flxclose (z, endmark, expiration); 
             value                  endmark, expiration ; 
             zone                z                      ; 
             integer                endmark, expiration ; 
              
          The procedure requires that the zone state is 0, 1, 2, 3, 4, 5, 6
          or 8. It is blind in zonestate 8 and 4, otherwise it will leave
          the zone in zone state 8, opened but not positioned after having
          performed its actions, which are: 
           
             All pending transfers will be completed. If the zone was per-
             forming output (zone state 3 or 6) the current block is also
             sent. 
              
             Then the present position will be sensed. 
              
             Further actions are determined by the endmark parameter. 
              
             If endmark contains the bit 1 shift 0, the creation date field
             of the file label will be set to current date. 
              \f

                      If endmark contains the bit 1 shift 1, the EOD field will be
             set to point at the last sector touched during transfers. 
              
             If endmark contains the bit 1 shift 2, the EOE field will be
             set to point at the last sector touched during transfers. 
              
             If endmark contains the bit 1 shift 4, the expiration date
             field will be set to a date, which is as many days after the
             possibly altered creation date field as given by the value of
             the expiration parameter, if it is positive. If the expiration
             parameter is <_ 0, the expiration date will be moved as many
             days forward as the creation date field might have been. 
              
             If the endmark parameter =/ 0, the label held in the zone
             buffer will be written back to the flexible disk. 
              
             If a flxclose is followed immediately by a flxopen call to the
             previously used file, no search for the file-label will be
             performed. Do not use setposition for going from e.g. reading
             to writing, as this will disturb valuable information in the
             zone buffer. 
              
             If a flxclose is followed by a flxopen to another named data-
             file a search for the name will be performed. 
              
             If a flxclose to a named datafile is followed by a flxopen to
             the indextrack (or vice versa), it is necessary in order to
             avoid confusion in the system to call close (the ordinary
             algolclose) and flxmount (with the appropriate parameters as
             was originally done) between the flxclose and flxopen calls.
             It ought to be mentioned once more that this is not necessary
             if you stay on the data tracks (i.e. flxclose is one named
             datafile and flxopen is another named datafile). 
              
              \f

3_._6_ _ _ _ _ _ _ _R_e_l_e_a_s_i_n_g_ _a_ _F_l_e_x_i_b_l_e_ _D_i_s_c_ 3.6
              
          A flexible disc is released after use by simply calling the stan-
          dard procedure close. The rel parameter has the following effect:
           
                   false         means that the zone is released but the peripheral
                        process is still reserved. 
                            
          true          means that both zone and peripheral are released. A
                        suspend message, signalling that the flexible disc
                        may be used later, is sent to the parent. 
                           
          false add 1   also means that both zone and peripheral are re-
                        leased, but a release message, signalling that the
                        flexible disc is not used later, is sent to the
                        parent. 
                            
                            
3_._7_ _ _ _ _ _ _ _T_h_e_ _M_o_d_e_ _C_o_n_c_e_p_t_,_ _H_a_n_d_l_i_n_g_ _D_i_f_f_e_r_e_n_t_ _D_i_s_k_e_t_t_e_ _F_o_r_m_a_t_s_ 3.7
           
          In this section the possibilities (in a partly program controlled
          manner) of handling the different trackformats offered in model
          RC3751 are explained. 
           
          In order to indicate the different diskette formats mentioned in
          chapter 2, and furthermore to define various operation modes on
          the diskette, each of the 'flx-procedures' can be extended by a
          last mode-parameter, which should be of type integer. The mode
          defines partly the physical formatting of the diskette, partly
          the present operating mode. 
           
          After use of a flx-procedure the present mode will be available
          in the zonedescriptor at the usual place and can be examined by
          means of getzone. 
           
          !!! Never try to alter this mode in the zonedescriptor, it is of
              vital importance to the whole system. 
               \f

          The mode parameter can be used in the call of each flx-procedure.
          The meaning in each case is explained below in the following sum-
          marized explanation of the different modefields. 
           
                   If the mode parameter is omitted, the fields normally used by the
          procedure, will use the default values from these fields. 
           
          The mode parameter contains the following fields: 
           
              _b_i_t_ _N_o_ _ _ _ _ _ _ _0_-_1_8_ _ _ _1_9_ _ _ _2_0_ _ _ _2_1_ _ _ _2_2_ _ _ _2_3_ _ 
              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _T_ _ _ _ _D_ _ _ _ _C_ _ _ _ _L_ _ _ _ _A_ _ _ _ _V_ _ 
           
          which indicate: 
           
             T:  trackformat, default value 0 
                 0 = 26 sectors of 128 characters per track 
                 1 = 15 sectors of 256 characters per track 
                 2 =  8 sectors of 512 characters per track 
                  
                 Remember that on a double sided diskette there will be a
                 track on each surface of the cylinder, so that the number
                 of sectors per cylinder will be 52/30/16 for T=0/1/2. 
                 Other values of T cannot be used. 
                 The T-field corresponds to character position 76 in the
                 volume label (see appendices B and C for contents). 
                  
             D:  double/single sided, default value 0 
                 0 = one surface on the volume, i.e. single sided 
                 1 = two surfaces on the volume, i.e. double sided 
                  
                 The D-field corresponds to character position 72 in the
                 volume label (see appendices B and C for contents). 
                  
             C:  conversion, default value 0 
                 0 = data will be tranferred without conversion 
                 1 = data will be transferred with conversion 
                  
             L:  logical start, default value 1 
                 0 = the logical first sector accessible will be the first\f

                              sector on track 00 (the index- or label-track/cylin-
                     der). Only track/cylinder 00 can be referred to, the
                     data tracks cannot. 
                      
                 1 = the logical first sector accessible will be the first
                     sector on track 01, which is the first data track.
                     Only the data track/cylinders can be referred to, the
                     index track/cylinders cannot. 
                      
             A:  The A field (named so arbitrarily) has at present no sig-
                 nificance whatsoever. 
                  
             V:  verify, default value 0 
                 0 = read and write operations will be performed normally. 
                      
                 1 = read operations will be performed normally, but after
                     a write operation a check reading of the just written
                     data will be performed. The check reading will not
                     transfer any data. 
                      
          The different fields are used in the different flx-procedures as
          follows: 
           
             f_l_x_l_a_b_e_l_ (z, name, owner, mode) 
                 The mode parameter is a call parameter in which the TD and
                 C fields are significant, the others not. By labelling the
                 diskette, the volume label pos. 76 and 72 defining track
                 format and surfaces are initialized according to T and D.
                 Furthermore character conversion in connection with data
                 transports is switched on/off according to C. 
                  
                 Note: it is not possible physically to change the format-
                       ting of the diskette, the T and D fields are merely
                       used to label the diskette correctly according to
                       the actual physical formatting. 
                        
             f_l_x_m_o_u_n_t_ (z, name, owner, mode) 
                 The mode parameter is a return parameter in which the TD
                 and C fields will be significant, the others contain the
                 default values (i.e. L=1, A=V=0). 
                  \f

                 By mounting a prelabelled diskette (e.g. labelled by
                 flxlabel) the physical formatting of the diskette and, as
                 far as possible, the used alphabet is detected. 
                  
                 The T and D fields are detected from pos. 76 and 72 in the
                 volume label, indicating the track format and the number
                 of surfaces. The C field is detected by the following pro-
                 cedure (carried out in flxmount): 
                  
                 The volume label is read without conversion; 
                  
                 If the letters 'VOL' are recognized (as ISO letters) first
                 in the label (where they should be present), the C field
                 will become 0 and conversion will not be used; 
                  
                 If the letters 'VOL' cannot be recognized then the volume
                 is read once more, this time with conversion; 
                  
                 If now the letters 'VOL' are recognized (as ISO letters)
                 first in the label, the C field will become 1, and conver-
                 sion will be used; 
                  
                 If the letters 'VOL' cannot be recognized at all the
                 mounting will be regarded as unsuccessful, i.e. flxmount
                 becomes -1 by return. 
                  
                 It should be mentioned here that the same procedure is
                 used when recognizing the errormap, which should hold the
                 letters 'ERM' in the first positions. If they cannot be
                 recognized at all, the diskette will be regarded as free
                 of bad tracks. The errormap is interpreted in both
                 flxlabel and flxmount, the conversion is only detected in
                 flxmount. 
                  
                 Note: the errormap and the rest of the diskette can be
                       written in different alphabets (with/without con-
                       version) which will often be the case, because the
                       errormap may be initialized before the user uses the
                       diskette the first time and defines the alphabet
                       (conversion/no conversion). 
                        \f

                       In each case the conversion detected by the letters
                       'VOL' will be used all over the diskette. 
                        
                   f_l_x_s_e_t_ (z, name, size, mode) 
                       The mode parameter is a call parameter in which only
                       the V field will be significant, the others not. (T,
                       D and C are determined by earlier flx-calls, L is
                       regarded as 1, i.e. operation on the data tracks).
                       The value of V determines whether the read-check
                       after a write operation should be performed or not. 
                        
                   f_l_x_o_p_e_n_ (z, name, pos, mode) 
                       The mode parameter is a call parameter in which the
                       L and V fields are significant, the others not. (T,
                       D and C are determined by earlier flx-calls). 
                        
                       The value of V determines whether the read-check
                       after a write operation should be performed or not. 
                        
                       The L field determines whether the opening is ex-
                       ecuted to the labels in track 00 or perhaps to a
                       named file in the data tracks. 
                        
                       Remembering the convention that opening to an empty
                       name (<::>) will open and position to a sector in
                       track 00, the convention is now extended, so that:
                       in order to open and position to a sector in track
                       00, either the filename must be empty (<::>) or the
                       L must be 0. 
                        
                       !!! Be careful about using L=0 in flxopen. Datafiles
                           may be destroyed when writing uncontrolled in
                           the labels. 
                            
                       On the other hand, when opened correctly to a data
                       file, the labels in track 0 are physically protected
                       against overwriting (and reading). 
                        \f

                   f_l_x_c_l_o_s_e_ (z, marks, exp, mode) 
                       The parameter is a return parameter, in which all
                       the fields (except A) are significant. The values
                       indicate the mode the diskette was organized and
                       operated in since the last flx-call. This mode value
                       equals the value noted in the zone descriptor. 
                        
          In short we have:   mode:   T D C L A V 
                flxlabel (  , mode);  s s s u u u 
                flxmount (  , m_o_d_e_);  s s s d d d 
                flxset   (  , mode);  u u u u u s 
                flxopen  (  , mode);  u u u s u s 
                flxclose (  , m_o_d_e_);  s s s s d s 
           
          where underlined mode means return parameter, non underlined
          means call parameter. The table to the right defines the u_s_e_ of
          the fields in the mode parameter (if it exists, otherwise all
          fields are initially default), it does not define the resulting
          mode in the zone descriptor. 
           
                s  means  significant 
                u  means  undefined 
                d  means  default value 
                 
          Note: that this mode parameter will only be significant when
                using the model RC3751. In model RC3650 the mode parameter
                can be totally omitted, a mode parameter, if any, will
                neither be used nor touched. 
                 
          Hint: 
          In order to try to make your programs written for the model
          RC3751 compatible with model RC3650 you might succeed (naturally
          depending of how your program actually creates and reacts on the
          modeparam) by the following trick (which has been used in the fd-
          utilities: 
           
                at the top of your program you assign those variables you
                intend to use as return parameters to the flxmount (or
                perhaps flxclose) procedures to the default values i.e.\f

                T=D=A=V=0, C corresponding to whether the RC3650 system is
                configurated with a conversion table or not, and L depend-
                ing on whether you intend to operate on the label track 00
                or the data tracks.    
                 
          Old programs used on either RC3650 or RC3751 will be directly
          compatible as long as the standard formatting diskette single
          sided, 26 tracks per sector, is used. 
           
          In each case when moving old or new programs to either an RC3650
          or an RC3751 installation, they must be recompiled. 
           
           
3_._8_ _ _ _ _ _ _ _A_ _S_h_o_r_t_ _S_u_r_v_e_y_ 3.8
           
          A few facts of the ALGOL procedures are listed below. For details
          see the proper description in sections 3.1-3.7. 
           
          D_e_c_l_a_r_a_t_i_o_n_ _o_f_ _Z_o_n_e_ 
           
          Zone flopz (33+blocklength*shares,shares,blockprocedures) 
           
          M_o_u_n_t_i_n_g_ _a_n_d_ _I_d_e_n_t_i_f_i_c_a_t_i_o_n_ _o_f_ _a_ _F_l_e_x_i_b_l_e_ _D_i_s_c_ 
           
          integer procedure flxlabel (flopz, volid, ownerid, mode); 
                  zone                flopz                       ; 
                  string <*max 6 chars*>     volid                ; 
                  long array <*14 alfanum chars*>   ownerid       ; 
                  integer <*optional*>                       mode ; 
          creates a new volume label. 
           
          integer procedure flxmount (flopz, volid, ownerid, mode); 
                  zone                flopz                       ; 
                  string <*max 6 chars*>     volid                ; 
                  long array <*14 alfanum chars*>   ownerid       ; 
                  integer <*optional*>                       mode ; 
          checks that correct volume is mounted. 
           \f

          Both: after return: zonestate = 8 
                              procedure value: +1: success 
                                               -1: otherwise 
           
          I_d_e_n_t_i_f_i_c_a_t_i_o_n_ _a_n_d_ _C_o_n_n_e_c_t_i_n_g_ _o_f_ _F_i_l_e_s_ 
           
          integer procedure flxset (flopz, fileid, size, mode); 
                  zone              flopz                     ; 
                  string <*max 12 chars*>  fileid             ; 
                  integer                          size       ; 
                  integer <*optional*>                   mode ; 
          creates a new file/reuse of old file. 
          return value: number of sectors created. 
           
          integer procedure flzopen (flopz, fileid, relpos, mode); 
                  zone               flopz                       ; 
                  string <*max 12 chars*>   fileid               ; 
                  integer                           relpos       ; 
                  integer <*optional*>                      mode ; 
          connects the file to the zone, sets logical position  
          return value: -1: label cannot be found 
                           otherwise a number of sectors 
           
          Both: before call: zone state must be 8 
                after return: zone state 0 in case of success. 
           
          T_h_e_ _U_s_e_ _o_f_ _t_h_e_ _F_i_l_e_ 
           
          The normal ALGOL I/O procedures may be used, i.e. inrec6,
          outrec6, ....read, write.... and so on. 
           
                   On transport errors the blockprocedure is called, by return, sys-
          tem action depends on returned b-parameter, details see section
          3.4. 
           \f

          T_e_r_m_i_n_a_t_i_o_n_ _o_f_ _t_h_e_ _U_s_e_ _o_f_ _t_h_e_ _F_i_l_e_ 
           
          procedure flxclose (z, endmark, expiration, mode); 
          value                  endmark, expiration       ; 
          zone                z                            ; 
          integer                endmark, expiration       ; 
          integer <*optional*>                        mode ; 
          completes transfers, sets various fields, details in section 3.5.
          before call: zone state must be 0, 1, 2, 3, 4, 5, 6 or 8. 
          after return: blind in zonestate 4 and 8, otherwise zonestate = 8.
           
          R_e_l_e_a_s_i_n_g_ _a_ _F_l_e_x_i_b_l_e_ _D_i_s_c_ 
           
          The ALGOL standard procedure close is used. 
          Details see section 3.6 and ref. 2. 
           
          T_h_e_ _U_s_e_ _a_n_d_ _S_i_g_n_i_f_i_c_a_n_c_e_ _o_f_ _t_h_e_ _M_o_d_e_ _P_a_r_a_m_e_t_e_r_ 
           
          The belowstanding table defines the use of the mode parameter if
          it exists (if not, all fields are initially default), it does not
          define the resulting mode in the zone descriptor. 
           
                           mode:  T D C L A V 
          flxlabel (     , mode); s s s u u u 
          flxmount (     , m_o_d_e_); s s s d d d 
          flxset   (     , mode); u u u u u s 
          flxopen  (     , mode); u u u s u s 
          flxclose (     , m_o_d_e_); s s s s d s 
           
          s  means  significant 
          u  means  undefined 
          d  means  default. 
           
           
         3_._9_ _ _ _ _ _ _ _S_o_m_e_ _S_m_a_l_l_ _E_x_a_m_p_l_e_s_                                              3.9
           
          Some simple examples in using the flexible disc ALGOL procedures
          are given on the following pages. They do not intend to be and
          are not indeed\f

          sophisticated at all, but give a simple basic outline for using
          the procedures. For more advanced use consult the appendices and
          references. 
           
          Parts of the examples e.g. the kit-mounting procedure are common
          to them all, but executed one after another, you might imagine to
          perform: 
           
          Example 2: having bought a new floppy-kit, create a volume label
                     with your ownerid on it, give the wanted mode as
                     input. 
                        
          Example 3: you might wish to remove all files, i.e. file header
                     labels, from the volume, but keep the ownerid in the
                     volume label, the resulting mode is written out. 
                        
          Example 4: create a new file and write something in it. 
                        
          Example 5: read a specific file and write out contents. 
                        
          Example 6: having forgotten everything about the volume or having
                     damaged some valuable information you might wish to
                     inspect and probably repair the volume label or some
                     file header labels in track 0. The contents of all
                     labels (sectors) on track/cylinder 00 are written
                     out. 
                        
                   E_x_a_m_p_l_e_ _2_: 
                begin <*create your own volume label on the floppy*> 
                   zone flopz(33+1,1,stderror); 
                   long array ownid(1:3); 
                   integer mode; 
                    
                   ownid(1):=long<:myown:>; ownid(2):=ownid(3):=0; 
                   read(in,mode); 
                   flxlabel(flopz,<:471111:>,ownid,mode); 
                   close(flopz,true); 
                end 
                    \f

          E_x_a_m_p_l_e_ _3_: 
                begin <*clean up the volume, remove all file header labels*>
                   zone flopz(33+1,1,stderror); 
                   long array ownerid(1:3); integer i,mode; mode:=4; 
                    
                   <*mount correct floppy*> 
                   for i:=flxmount(flopz,<:471111:>,ownerid,mode) 
                          while i<>1 do 
                   begin <*wrong floppy mounted*> 
                      write(out,<:<10>flxmountmode=:>,<<dddddddd>, 
                            mode,<:<10>:>) 
                      close(flopz,true); 
                      system(10,1,<:mount correct floppy:>); 
                   end; 
                    
                   <*now correct floppy has been mounted, create the volume
                     label*> 
                   write(out,<:<10>flxmountmode=:>,<<dddddddd>,mode, 
                         <:<10>:>); 
                   close(flopz,false); 
                   flxlabel (flopz,<:471111:>,ownerid,mode); 
                   close(flopz,true); 
                end 
                    
                   E_x_a_m_p_l_e_ _4_: 
                begin <*mount floppy, create and write a file with  
                        blocklength 84 chars*> 
                   zone flopz(33+14*1,1,stderror); 
                   long array ownerid (1:3); integer i,mode; 
                   real array navn(1:3); mode:=4; 
                    
                   <*mount correct floppy*> 
                   for i:=flxmount(flopz,<:471111:>,ownerid) 
                          while i<>1 do 
                   begin close(flopz,true); 
                       system(10,1,<:mount correct floppy:>); 
                   end; 
                    \f

                   <*create a file of size 50 sectors*> 
                   navn(1):=navn(2):=navn(3):=real<::>; 
                   movestring(navn,1<:myfirstfile:>; 
                   i:=1; flxset(flopz,string navn (increase(i)),50); 
                    
                   <*write something in the file*> 
                   write(flopz,<:hello:>); 
                    
                   <*terminate the use of the file, set marks*> 
                   flxclose(flopz,1 shift 4+1 shift 1+1 shift 0,10 mode); 
                   write(out,<:<10>flxclosemode=:>,<<dddddddd>,mode, 
                         <:<10>:>); 
                    
                   <*release zone and peripheral*> 
                   close(flopz,true); 
                end 
                    
                   E_x_a_m_p_l_e_ _5_: 
                begin <*read in double buffered mode the contents 
                        of a file and display it*> 
                   zone flopz(33+21*2,2,stderror); 
                   long array ownerid (1:3); 
                   real array s(1:1); integer i; 
                    
                   <*mount correct floppy*> 
                   for i:=flxmount(flopz,<:471111:>,ownerid) 
                          while i<>1 do 
                   begin close(flopz,true); 
                       sytem(10,1,<:mount correct floppy:>); 
                   end; 
                    
                   <*open and read the file, write out contents, 
                     see ref.2 for read/write possibilities offered*> 
                   flxopen(flopz,<:myfirstfile:>,0); 
                   readstring(flopz,s,1); 
                   write(out,string s(1)); 
                    \f

                   <*close and release*> 
                   flxclose(flopz,0,0); 
                   close(flopz,true); 
                end 
                    
                   E_x_a_m_p_l_e_ _6_: 
                begin <*read/inspect the volume/file header labels*> 
                   zone flopz(33+14*1,1,stderror); 
                   <*as the blocklength should be at least 80 characters*> 
                   long array ownerid (1:3); 
                   integer word,mode,1,j; 
                   integer array field iaf; 
                   procedure outch(t); 
                   value t; integer t; 
                   <*the procedure writes out the last 8 bits of t as a
                     character and replaces nongraphicals with an'*'*> 
                   begin t:=t extract 8; 
                      if (t<32) or (t=95) or (t>126) 
                      then outchar(out,42) 
                      else outchar(out,t); 
                   end <*outch*>; 
                    
                   <*mount correct floppy*> 
                   for i:=flxmount(flopz,<:471111:>,ownerid,mode); 
                          while i<>1 do 
                   begin close close(flopz,true); 
                      system(10,1,<:mount correct floppy:>); 
                   end 
                    
                   <*open and position to track 00 first sector*> 
                   flxopen(flopz,<::>,0); 
                    
                            <*now treat track 0 as an ordinary file. E.g. read
                     one sector a time and thereby inspect all labels*> 
                   write(out,<:<10><10>the sectors on track 00, 
                         the first 81 pocharacters::>); 
                   write(out,<:<10>position      :>); 
                   write(out,<:1234567890123456789012345678901234567890:>);
                   write(out,<:12345678901234567890123456789012345678901:>);\f

                   for i:=1 step 1 until 26*(1+((mode shift(-4)) extract 1))
                   do 
                   begin inrec6(flopz,54); iaf:=0; 
                      write(out,<:<10>sector no:>,<<ddd>,i,<: ::>); 
                      for j:=1 step 1 until 54//2 do 
                      begin word:=flopz.iaf(j); 
                         outch(word shift (-16)); 
                         outch(word shift (-8)); 
                         outch(word); 
                      end 
                      write(out,<:::>); 
                   end; 
                   write(out,<:<10end list<10><10>:>); 
           
                   <*close and release*> 
                   flxclose(flopz,0,0); 
                   close(flopz,true); 
                end 
           
          A_ _G_e_n_e_r_a_l_ _R_e_m_a_r_k_ 
           
          In some of the examples (2 to 6) the procedure flxclose is used
          upon releasing the flexible disc, in others it is not. If we re-
          gard the use of the various procedures as a parenthesis structure
          (some are used at the beginning of an action, some at the termin-
          ation) we have the following headrule: 
           
             If used as                 use as 
             left/beginning             right/termination 
           
             flxlabel                   close (the ordinary ALGOL-close) 
             flxmount                   close (the ordinary ALGOL-close) 
           
             flxset                     flxclose 
             flxopen                    flxclose 
           \f

          In each case, the very last action is (as normally in ALGOL) to
          release the zone/peripheral by means of the normal ALGOL-pro-
          cedure close, regardless of whether flxclose has been used or not
          in advance. 
           
          N_o_t_e_: Not all of the five examples have been programmed general-
                ly.  
           
               \f

F_       4_._ _ _ _ _ _ _ _ _D_E_S_C_R_I_P_T_I_O_N_ _O_F_ _U_S_E_ _U_N_D_E_R_ _V_A_R_I_O_U_S_ _O_P_E_R_A_T_I_N_G_ _S_Y_S_T_E_M_S_ 4.
           
4_._1_ _ _ _ _ _ _ _U_s_e_ _u_n_d_e_r_ _s_ 4.1
           
          The use is quite normal, i.e. the user writes an ALGOL program,
          using the procedures described in chapter 3, compiles and runs it
          as any other ALGOL-program under s. For a description of s see
          ref. 3 and ref. 5. 
           
          Note: flexible discs m_u_s_t_ be handled by means of the ALGOL pro-
                cedures, described in chapter 3, or by means of the fd-
                utilities, see ref. 6. It is e.g. not possible to copy a
                file from a flexible disc by means of the standard FP-pro-
                gram copy. 
                 
                 
4_._2_ _ _ _ _ _ _ _U_s_e_ _u_n_d_e_r_ _B_O_S_S_ _i_n_ _R_C_8_0_0_0_ 4.2
                 
          Since BOSS release 14.A a BOSS commando for calling the diskette
          has been available. 
           
          Depending on whether monitor version 5.1 is present or not the
          job using diskette should be run in corelock. If monitor version
          5.1 is present it need not be run in corelock, for older monitor
          versions consult the INFORMATION LETTER IB770913. 
           
           
4_._3_ _ _ _ _ _ _ _U_s_e_ _u_n_d_e_r_ _S_O_S_ _a_n_d_ _O_t_h_e_r_ _O_p_e_r_a_t_i_n_g_ _S_y_s_t_e_m_s_ 4.3
           
          See the documentation/guides for these systems. 
           
           \f

F_                  
           \f

F_       A_._ _ _ _ _ _ _ _ _R_E_F_E_R_E_N_C_E_S_ A.
           
          1  Reference standard 
               a) ISO/TC97/SC15 standard proposal (enclosed as appendix). 
               b) ECMA/TC15/76/1: working paper for a standard on labelling
                  and file structure for flexible disc cartridges. 
               c) the IBM diskette general information manual GA21-9182-0. 
                
               a), b) and c) are rather similar, a) and b) are identical
               and directly used as original working paper for the RC stan-
               dard.  
           
          2  RCSL No 42-i1278: 
               ALGOL6, User's Manual 
                
          3  RCSL No 31-D476: 
               RC8000 Monitor Part 7 
               Operation System s 
                
          4  RCSL No 42-i952: 
               Operating System BOSS, User's Manual and Operator's Manual 
                
          5  RCSL No 31-D300: 
               Monitor 3 
                
          6  RCSL No 31-D596: 
               Utility Programs for Flexible Disc Handling 
                
          7  RCSL No 43-GL7853: 
               The Diskette Formatting Program 
                \f

F_       B_._ _ _ _ _ _ _ _ _R_E_F_E_R_E_N_C_E_ _M_A_N_U_A_L_ B.
           
                                  E C M A 
          E_U_R_O_P_E_A_N_ _C_O_M_P_U_T_E_R_ _M_A_N_U_F_A_C_T_U_R_E_R_S_ _A_S_S_O_C_I_A_T_I_O_N_ 
           
                       Working Paper for a Standard 
                                    on 
                       Labelling and File Structure 
                                    for 
                         Flexible Disk Cartridges 
           
           
           
           
           
           
           
           
           
           
           
           
                           Prepared by ECMA TC15 
           
           
           
           
           
           
           
           
           
           
          January 1976 
           
           
           
          ECMA/TC15/76/1 
           \f

                   1. S_C_O_P_E_ 
             This Standard ECMA-.. specifies a labelling system and file
             structure for interchange of data on flexible disc cartridges.
              
             It provides a complete labelling system for sequential files
             and a framework within which additional information to deal
             with the special requirements of other types of file organiza-
             tion can be accomodated. 
              
          2. R_E_F_E_R_E_N_C_E_S_ 
             ECMA-6   7-bit Input/Output Coded Character Set 
             ECMA-35  Extension of the 7-bit Coded Character Set 
             ECMA-43  8-bit Coded Character Set 
             ECMA-..  Data Interchange on Flexible Disk Cartridges 
             ECMA-..  Representation of Numeric Values in Character Strings
                      for Information Interchange. 
              
          3. D_E_F_I_N_I_T_I_O_N_S_ 
             For the purpose of this Standard the following terms have the
             meanings indicated. The definition of a term that is used in
             an ECMA Standard related to this subject conforms to the usage
             in that Standard; the definition of a term that is in common
             use in a context related to this Standard conforms to that
             common usage. 
              
             3_._1_ _V_o_l_u_m_e_ 
             A dismountable physical unit of storage media, i.e. a flexible
             disc cartridge. A volume may contain part of a f_i_l_e_, a com-
             plete f_i_l_e_ or more than one f_i_l_e_. 
             A volume may contain s_e_c_t_i_o_n_s_ of one or more files but not
             multiple sections of the same file. 
              
             3_._2_ _F_i_l_e_ 
             A collection of information consisting of r_e_c_o_r_d_s_ pertaining
             to a single subject. 
              
                      3_._3_ _F_i_l_e_ _S_e_c_t_i_o_n_ 
             That part of a f_i_l_e_ that is recorded on any one v_o_l_u_m_e_. 
              \f

             3_._4_ _E_x_t_e_n_t_ 
             A set of sectors whose addresses form amonotonic ascending
             sequence. 
              
             Each f_i_l_e_ in a v_o_l_u_m_e_ shall be assigned to one extent. 
              
             3_._5_ _R_e_c_o_r_d_ 
             Related data treated as a unit of information. A record may be
             recorded in all or a part of a b_l_o_c_k_. 
              
             3_._6_ _B_l_o_c_k_ 
             A group of characters written or read as a unit. A block may
             be recorded in all or part of a sector or in more than one
             sector. 
              
             3_._7_ _L_a_b_e_l_ 
             A record, in track 00, sectors 07 to 26 that identifies and
             characterizes a v_o_l_u_m_e_ or a f_i_l_e_. A label is not considered to
             be part of a f_i_l_e_. 
              
          4. T_R_A_C_K_ _O_R_G_A_N_I_Z_A_T_I_O_N_ 
             The track format is described in Standard ECMA-... However, to
             facilitate the understanding of this Standard, the following
             information is repeated here. 
              
             4_._1_ _T_r_a_c_k_ _F_o_r_m_a_t_ 
             Each disc shall be organized as follows: 
             - 77 tracks, numbered from 00 to 76 
             - 26 sectors for each track, numbered from 01 to 26 
             - 128 bytes for each sector, all available for data interchan-
               ge. 
              
                      4_._2_ _D_e_f_e_c_t_i_v_e_ _a_n_d_ _A_l_t_e_r_n_a_t_e_ _T_r_a_c_k_s_ 
             On a flexible disc, a maximum of two defective tracks are
             permitted, excluding track 00 that cannot be defective. The
             rule governing the use of defective and alternate tracks is
             described in Standard ECMA-... 
              \f

             4_._3_ _T_r_a_c_k_ _0_0_ 
             Track 00 is reserved for operating system use. Sectors 07 to
             26 contain the labels. 
              
          5. V_O_L_U_M_E_ _O_R_G_A_N_I_Z_A_T_I_O_N_ 
              
             5_._1_ _V_o_l_u_m_e_ _S_t_r_u_c_t_u_r_e_ 
             A flexible disc shall contain files of only one extent, but
             these files may appear on more than one volume (multi-volume
             files). 
              
             5_._2_ _V_o_l_u_m_e_ _E_n_t_r_y_ _P_o_i_n_t_ 
             The volume entry point is track 00, sector 07. It contains the
             Volume Label (VOL1, see 6.1). 
              
             5_._3_ _L_a_b_e_l_ _P_o_o_l_ 
             The label pool is recorded in track 00, sectors 08 to 26,
             containing one File Header Label (---1, see 6.2) each. Each
             File Header Label describes one file and the extent on which
             it is recorded. 
              
          6. F_O_R_M_A_T_S_ _A_N_D_ _C_O_N_T_E_N_T_S_ _O_F_ _L_A_B_E_L_S_ 
             In this Standard "n" means any numeric character from 0 to 9.
             An "a" means any numeric, alphabetic or special character of
             the centre four columns of the ECMA 7-bit code table, except
             those positions where there is provision for alternative
             graphic representation. 
              
             In sections 6.1 to 6.3 the meaning of the table's headings is
             the following: 
              
                      CP          - character position in the label 
             FIELD NAME  - reference name of the field 
             L           - length of the field 
             CONTENTS    - contents of the field 
              \f

             6_._1_ _V_o_l_u_m_e_ _L_a_b_e_l_ _(_V_O_L_1_)_ 
             The Volume Label is recorded on track 00, sector 07, and shall
             contain the following information: 
              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
              _C_P_ _ _ _F_I_E_L_D_ _N_A_M_E_ _ _ _ _ _ _ _ _ _ _ _ _ _ _L_ _ _ _C_O_N_T_E_N_T_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
              1-4  Label Identifier        4   VOL1 
              
              5-10 Volume Identifier       6   "a" characters. Permanently
                                               assigned by the owner to
              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _i_d_e_n_t_i_f_y_ _t_h_e_ _v_o_l_u_m_e_._ _ _ _ _ _ _ _ _
              11   Accessibility           1   "a" character. Indicates re-
                                               strictions on access to the
                                               information on the volume.
              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _S_p_a_c_e_ _m_e_a_n_s_ _n_o_ _r_e_s_t_r_i_c_t_i_o_n_s_._
             12-37 Reserved for future    26   Spaces 
              _ _ _ _ _ _s_t_a_n_d_a_r_d_i_z_a_t_i_o_n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
             38-51 Owner Identifier       14   "a" characters. Indicates
              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _t_h_e_ _o_w_n_e_r_ _o_f_ _t_h_e_ _v_o_l_u_m_e_._ _ _ _ _
             52-75 Reserved for future    24   Spaces 
              _ _ _ _ _ _s_t_a_n_d_a_r_d_i_z_a_t_i_o_n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
              76   Sector Format           1   "a" character. Space means
                                               that the format defined in
              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _E_C_M_A_-_._._ _a_p_p_l_i_e_s_._ _ _ _ _ _ _ _ _ _ _ _ _
             77-78 Sector Sequence Code    2   "n" characters. Define the
                                               recording sequence of the
              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _s_e_c_t_o_r_s_._ _S_e_e_ _E_C_M_A_-_._._._ _ _ _ _ _ _
              79   Reserved for future     1   Space 
              _ _ _ _ _ _s_t_a_n_d_a_r_d_i_z_a_t_i_o_n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
              80   Label Standard Version  1   "a" character. Indicates the
                                               version to the Standard to
                                               which the labels and data
                                               formats in the volume con-
              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _f_o_r_m_._ _1_ _m_e_a_n_s_ _t_h_i_s_ _v_e_r_s_i_o_n_._ _
                                                \f

             6_._2_._ _F_i_l_e_ _H_e_a_d_e_r_ _L_a_b_e_l_s_ _(_-_-_-_1_)_ 
             The File Header Labels are recorded on track 00, sectors 08 to
             26. Each ---1 corresponds to a file. Each DDR1 label shall
             contain the following information: 
              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
              _C_P_ _ _ _F_I_E_L_D_ _N_A_M_E_ _ _ _ _ _ _ _ _ _ _ _ _ _ _L_ _ _ _C_O_N_T_E_N_T_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
              _1_-_4_ _ _L_a_b_e_l_ _I_d_e_n_t_i_f_i_e_r_ _ _ _ _ _ _ _ _4_ _ _ _-_-_-_1_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
              5-16 File Identifier        12   "a" characters. Assigned by
                                                    the originator to identify
              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _t_h_e_ _f_i_l_e_._ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
             17-21 Record Length           5   "n" characters. Specifies
              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _t_h_e_ _l_e_n_g_t_h_ _o_f_ _t_h_e_ _r_e_c_o_r_d_._ _ _ _
              _2_2_ _ _ _R_e_c_o_r_d_ _F_o_r_m_a_t_ _ _ _ _ _ _ _ _ _ _ _1_ _ _ _F_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
             23-27 Block Length            5   "n" characters. Specifies
              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _t_h_e_ _l_e_n_g_t_h_ _o_f_ _t_h_e_ _b_l_o_c_k_._ _ _ _ _
                                                
              28   Reserved for future     1   Space 
              _ _ _ _ _ _s_t_a_n_d_a_r_d_i_z_a_t_i_o_n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
                  29-33 Beginning of Extent     5   "n" characters. Specify the
                                               address of the first
              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _s_e_c_t_o_r_ _o_f_ _t_h_e_ _e_x_t_e_n_t_._ _ _ _ _ _ _
               34  Reserved for future     1   Space 
              _ _ _ _ _ _s_t_a_n_d_a_r_d_i_z_a_t_i_o_n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
             35-39 End of Extent (EOE)     5   "n" characters. Specify
                                               the address of the last
              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _s_e_c_t_o_r_ _o_f_ _t_h_e_ _e_x_t_e_n_t_._ _ _ _ _ _ _ _
               40  Reserved for future     1   Space 
              _ _ _ _ _ _s_t_a_n_d_a_r_d_i_z_a_t_i_o_n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
               41  Bypass Indicator        1   "a" character. Space indi-
                                               cates that the file is in-
              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _t_e_n_d_e_d_ _f_o_r_ _p_r_o_c_e_s_s_i_n_g_._ _ _ _ _ _ _
               42  Accessibility           1   "a" character. Indicates re-
                                               strictions on access to the
                                               information in this file.  _
             _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _S_p_a_c_e_ _m_e_a_n_s_ _n_o_ _r_e_s_t_r_i_c_t_i_o_n_s_._
               43  Write Protect           1   P:     the file is not to be
                                                      modified 
             _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _S_p_a_c_e_:_ _n_o_ _r_e_s_t_r_i_c_t_i_o_n_s_._ _ _ _ _ _\f

              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
              _C_P_ _ _ _F_I_E_L_D_ _N_A_M_E_ _ _ _ _ _ _ _ _ _ _ _ _ _ _L_ _ _ _C_O_N_T_E_N_T_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
              44  Data Interchangability   1   "a" character. Space indi-
                                               cates that the file can be  
              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _u_s_e_d_ _f_o_r_ _d_a_t_a_ _i_n_t_e_r_c_h_a_n_g_e_._ _ _
              45   Multivolume Indicator   1   Space: the file begins and
                                                      ends in this volume 
                                               C:     the file is continued
                                                      in another volume 
                                               L:     the file ends in this
              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _v_o_l_u_m_e_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
             45-47 Volume Sequence Number  2   "n" characters. Specify
                                               the sequence of volumes in a
                                               multi-volume file, from 01
                                               to 99. 00 means that the vo-
                                               lume sequence check is not
              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _r_e_q_u_i_r_e_d_._ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
             48-53 Creation Date           6   "a" characters. Identify
                                               the date at which the extent
                                               containing the file has been
              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _d_e_f_i_n_e_d_._ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
             5_4_-_5_8_ _O_f_f_s_e_t_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _5_ _ _ _"_n_"_ _c_h_a_r_a_c_t_e_r_s_._ _ _ _ _ _ _ _ _ _ _ _ _ _
             59-66 System Code             8   "a" characters. Identify
                                               the system that recorded the
                                               file. The identifiers are
                                               not specified in this Stan-
              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _d_a_r_d_._ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
             67-72 Expiration Date         6   "a" characters. Identifies
                                               the date at which the con-
                                               tents of the file is no more
              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _v_a_l_i_d_._ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
             73-74 Reserved for future     2   Spaces 
              _ _ _ _ _ _s_t_a_n_d_a_r_d_i_z_a_t_i_o_n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
             75-79 End of Data (EOD)       5   "n" characters. Identify
                                               the address of the first un-
                                               used sector within the ex-
              _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _t_e_n_t_._ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
               80  Reserved for future     1   Space 
              _ _ _ _ _ _s_t_a_n_d_a_r_d_i_z_a_t_i_o_n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
                                                \f

                   7. P_R_O_C_E_S_S_I_N_G_ _O_F_ _L_A_B_E_L_ _F_I_E_L_D_S_ 
              
             7_._1_ _G_e_n_e_r_a_l_ 
              
             7_._1_._1_ _C_o_n_t_e_n_t_s_ _o_f_ _L_a_b_e_l_s_ 
             All fields shall be written with contents as specified, on
             reading they may be treated as desired. 
              
             7_._1_._2_ _U_s_e_ _o_f_ _D_a_t_a_ _i_n_ _L_a_b_e_l_ _F_i_e_l_d_s_ 
             On input, the system may overwrite data found in labels being
             processed by that system with new values of that data provided
             from other sources. The new values may be supplied before the
             file is processed or after the processing has begun, at the
             option of the system implementors. However, data found in VOL1
             shall not be overlaid or overwritten. 
              
             7_._1_._3_ _F_o_r_m_a_t_ _o_f_ _A_d_d_r_e_s_s_e_s_ 
             In label ---1 the addresses of the extents (BOE, EOE) and of
             the first free sector within an extent (EOD) shall be expres-
             sed as follows: 
              
                  TTOSS 
              
             where: TT is the track number 
                    OSS is the sector number 
              
             7_._1_._4_ _R_e_p_r_e_s_e_n_t_a_t_i_o_n_ _o_f_ _D_a_t_e_s_ 
             In label ---1 the initialization, creation and expiration
             dates shall be represented as follows: 
              
                space YYDDD 
              
             where: YY represents the year ("n" characters) 
                    DDD represents the day within the year (001 to 366) 
              
                      7_._2_ _V_o_l_u_m_e_ _H_e_a_d_e_r_ _L_a_b_e_l_ _(_V_O_L_1_)_ 
             The volume header label shall be preserved except as specified
             below. This does not preclude the rewriting of the label with
             the contents unchange. 
              \f

             The volume header label may be changed only if authorized by
             the owner, and then only as prescribed by the owner. 
              
             7_._2_._1_ _S_e_c_t_o_r_ _F_o_r_m_a_t_ _(_C_P_ _7_6_)_ 
             For general data interchange the sector format defined in
             Standard ECMA-.. and described in section 4 of this Standard
             shall be used. In this case, this field shall contain a space.
             The meaning of characters other than space is not defined in
             this Standard. 
              
             7_._2_._2_ _S_e_c_t_o_r_ _S_e_q_u_e_n_c_e_ _C_o_d_e_ _(_C_P_ _7_7_-_7_8_)_ 
             This field specifies the order in which the sectors shall be
             recorded. This order is specified in Standard ECMA-.. and is
             defined by a number from 01 to 13. 
              
             7_._3_ _F_i_l_e_ _H_e_a_d_e_r_ _L_a_b_e_l_ _(_-_-_-_1_)_ 
              
             7_._3_._1_ _E_n_d_ _o_f_ _E_x_t_e_n_t_ _(_E_O_E_)_ _(_C_P_ _3_5_-_3_9_)_ 
             This field specifies the address of the last sector in which
             the file defined in the ---1 can be recorded. 
              
             7_._3_._2_ _E_x_p_i_r_a_t_i_o_n_ _D_a_t_e_ _(_C_P_ _6_7_-_7_2_)_ 
             A file is regarded as "expired" on a day whose date is equal
             to or later than the date recorded in this field. When this
             condition is satisfied, the extent can be considered free and
             re-used. 
              
             7_._3_._3_ _E_n_d_ _o_f_ _D_a_t_a_ _(_E_O_D_)_ _(_C_P_ _7_5_-_7_9_)_ 
             This field defines the next unused sector within the file
             extent. Its value can be, at maximum, equal to the address of
             the sector following EOE. 
              
                   8. S_T_R_U_C_T_U_R_E_ _O_F_ _T_H_E_ _D_A_T_A_ 
              
             8_._1_ _F_i_l_e_s_ 
             For general data interchange the only files permitted are se-
             quential files. Multi-volume files are permitted, but each
             file can appear only once on each volume. Each file is record-
             ed on an extent, and identified by a File Header Label. The\f

             space allocated to a file is defined by the Beginning of Ex-
             tent (BOE) and End of Extent (EOE) addresses recorded in the
             File Header Label of that file. The space used by a file at
             any given moment is defined by the BOE and the End of Data
             (EOD) addresses of that file. The Multi-volume Indicator
             (---1, CP45) and, when applicable, the Volume Sequence Number
             (---1, CP 46-47) defines the type and parameters of the file. 
              
             8_._2_ _R_e_c_o_r_d_s_ _a_n_d_ _B_l_o_c_k_s_ 
             For general data interchange, only records of fixed lengths
             are permitted. This is specified, for each file, in ---1, CP
             17-21. The length of the records is not limited by the length
             of the sectors. 
              
             Records may be grouped into blocks of fixed length. This is
             specified, for each file, in ---1, CP 23-27. The length of the
             block is not limited by the length of the sector. 
              
             Blocks shall always start at the beginning of a sector. The
             part of a sector that is not occupied by a block shall be left
             empty. 
              
             8_._3_ _P_a_d_d_i_n_g_ 
             Whenever it becomes necessary or advisable to extend the
             length of a block beyond the end of the last (or only) record
             in it, the block shall be padded to the required length by the
             use of the character in position 5/14 of the ECMA 7-bit code
             table. 
              \f

F_       C_._ _ _ _ _ _ _ _ _P_R_E_S_E_N_T_ _R_C_ _S_T_A_N_D_A_R_D_ _W_I_T_H_ _R_E_S_T_R_I_C_T_I_O_N_S_                            C.
           
          The reference standard is followed rather closely, but not all
          proposed fields are used. For comparison we list the present
          logical formats used by RC. 
           
             volume labels:           page 46-48 
             file header labels:      page 49-51 
           
          For further details and information of contents of fields compare
          with the reference standard enclosed as appendix B. 
           
                   The user should be aware of the following disadvantages/restric-
          tions of present RC system: 
           
             - Sector Sequence is always 1 (i.e. the sectors physical se-
               quential). 
                
             - Multivolume files are not handled by the system, but must be
               explicitly handled by the users' program. 
                
             - The volume and the files are only write protected by press-
               ing the write protect button on the device (so that it is
               lit). 
                
             - Not all (but to a great functional extent) of the fields in
               the labels, proposed by the standard, have been used,
               compare the list below with the standard. 
                
             - In order to bend towards the IBM 3740 diskette standard, the
               following alteration of the original ECMA standard has been
               imposed: the file identifier in the file reader labels is
               now located in CP6-CP22 (of which the first 12 positions
               will be significant, the rest will be regarded as spaces)
               and the record length is moved to CP54-CP57. 
                
               From the programmers' point of view no restrictions are im-
               posed hereby at all, but old diskettes, written by the old
               ECMA standard used in releases before january 1978, will\f

               seem to have lost the first character of the file ident-
                   ifier.  
           
           \f

F_                 V_O_L_U_M_E_ _L_A_B_E_L_ 
          track 00, sector 07 
           
           \f

F_                  
           \f

F_                 
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
          pos72: values different from SP or '2' will be regarded as an SP.
          pos76: values different from SP, '1' or '2' will be regardes as
          SP.  
          For model RC3650 CP72 and CP76 are not used, the contents are
          always an SP, i.e. model RC3650 only handles single sided 128
          characters per sector diskette formats. 
           
          In model RC3751 both CP72 and CP76 are used, i.e. model RC3751
          handles all 6 formats. 
           
           \f

F_                 F_I_L_E_ _H_E_A_D_E_R_ _L_A_B_E_L_S_ 
          track 00, from sector 08 one Label in each sector 
           \f

F_                  
           \f

F_                  
           \f

F_                  
           \f

                   E_R_R_O_R_M_A_P_ 
           
          track 00, sector 05 
           
           _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
           char-  half-  con-  fieldname            remarks 
           acters word   tents   
           _ _C_P_ _ _ _ _ _n_o_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
            1             E 
                          R 
M_m_m_                               errormap 
                   2      M 
P_p_p_                               identification 
                          A
           _ _5_ _ _ _ _ _ _ _ _ _ _ _ _ _P_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
           _ _6_ _ _ _ _ _ _4_ _ _ _ _ _ _S_P_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _s_e_p_a_r_a_t_o_r_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
M_m_m_            7 
                               first bad cylinder    blank if no bad cylinders
P_p_p_           _ _8_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
           _ _9_ _ _ _ _ _ _6_ _ _ _ _ _ _ _ _ _ _ _1_._ _c_y_l_._i_d_e_n_t_i_f_i_c_a_t_i_o_n_ _b_l_a_n_k_ _i_f_ _n_o_ _b_a_d_ _c_y_l_i_n_d_e_r_s_ _ _ _ 
           _1_0_ _ _ _ _ _ _ _ _ _ _ _ _ _S_P_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _s_e_p_a_r_a_t_o_r_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
M_m_m_           11 
                   8           second bad cylinder   blank if one or no bad cyl.
P_p_p_           _1_2_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
           _1_3_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _2_._ _c_y_l_._i_d_e_n_t_i_f_i_c_a_t_i_o_n_ _b_l_a_n_k_ _i_f_ _o_n_e_ _o_r_ _n_o_ _b_a_d_ _c_y_l_._ _ 
           _1_4_ _ _ _ _ _ _ _ _ _ _ _ _ _S_P_ _ _ _s_e_p_a_r_a_t_o_r_ _ _ _ _ _ _ _ _ _ _ _ _ _s_e_p_a_r_a_t_o_r_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
           15     10 
           . 
           . 
           . 
           . 
           . 
           _8_0_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
           \f

1_._ _ _ _ _ _ _ _ _I_n_d_l_e_d_n_i_n_g_._     1.
           
          I det følgende beskrives sikkerhedssystemet i LPR-systemet. Ved
          sikkerhedssystemet forstås i denne sammenhæng "sikkerhed mod mis-
          brug". 
           
          Systemet kan deles op i 2 dele, nemlig dels adgangskontrol til
          systemet og dels efterfølgende listning af brug og misbrug af
          systemet. 
           
           
2_._ _ _ _ _ _ _ _ _A_d_g_a_n_g_s_k_o_n_t_r_o_l_._                                                      2.
           
          LPR online programmet kan kun anvendes af personer, der er auto-
          riserede, d.v.s kan identificere sig overfor systemet. Man iden-
          tificerer sig med et kodeord, i det følgende kaldet en ident. En
          ident får adgang til hele systemet eller kun en del af systemet.
          Det foregår på den måde, at systemets kommandoer opdeles i grup-
          per (kommandogrupper), og en ident bliver autoriseret til n el-
          ler flere kommandogrupper. 
           
2_._1_ _ _ _ _ _ _ _A_j_o_u_r_f_ø_r_i_n_g_ _a_f_ _i_d_e_n_t_e_r_ _o_g_ _k_o_m_m_a_n_d_o_g_r_u_p_p_e_r_._                           2.1
           
          Sammenhængen mellem identer, kommandogrupper og kommandoer er
          vist i fig. 1. Det ses heraf, at n kommando kun kan tilhøre n
          kommandogruppe. En kommandogruppe kan bestå af n eller flere
          kommandoer. En ident kan have adgang til n eller flere kommando-
          grupper. 
           
           
           
           
           
           
           
           
           
           
          Fig. 1. \f

          Opdeling af kommandoer i kommandogrupper samt tildeling af kom-
          mandogrupper til de enkelte identer sker i kommunen ved hjælp af
          programmet "ajourføring af identer mm.". Programmet kan også ud-
          skrive lister med kommandogrupper og identer (se bilag F og G).
          Oplysningerne opbevares i kodeform i systemregistret, der iøvrigt
          indeholder forskellige specielle data om kommunen. 
           
2_._2_ _ _ _ _ _ _ _U_d_s_k_r_i_f_t_ _a_f_ _k_o_n_t_r_o_l_l_i_s_t_e_r_._                                           2.2
           
          Medens LPR-online programmet kører, lægges alle henvendelser til
          systemet på en fil (logfil). Logningen omfatter den indtastede
          kommando med parametre samt dato, klokkeslet og ident. Endelig
          markeres for, om kommandoen er tilladt for den pågældende ident. 
           
          Fra logfilen kan der udskrives 4 forskellige lister til kontrol
          af sikkerhedssystemet. 
           
          1. Sikkerhedsrapport (LPR-07) 
             Denne rapport indeholder alle forsøg på misbrug af systemet,
             såvel forsøg på at benytte ikke tilladte kommandoer som forsøg
             på at åbne systemet med forbudte identer (se bilag B). 
              
          2. Benyttelseskontrol 1 (LPR-08) 
             Denne udskrift er en totallistning af alle kommandoer, såvel
             korrekte som ikke tilladte, der er indtastet og findes i log-
             filen. Kommandoerne er udskrevet i kronologisk orden (se bi-
             lag C). 
              
          3. Benyttelseskontrol 2 (LPR-09) 
             Udskriftens indhold er helt analogt med Benyttelseskontrol 1,
             men listen udskrives sorteret på identer (se bilag D). 
              \f

          4. Benyttelsesstatistik (LPR-10) 
             Denne statistik viser, hvilke kommandoer en ident har benyttet
             og hvor tit. Ikke tilladte kommandoer er markeret (se bilag E).
              
              
          Udskrifterne skrives med programmet "udskrift fra logfil" og der
          kan skrives n eller flere lister, efter behov. 
           
           
3_._ _ _ _ _ _ _ _ _S_y_s_t_e_m_o_v_e_r_s_i_g_t_._                                                      3.
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
          Fig. 2 
           
          Ovenstående figur viser sammenhængen i sikkerhedssystemet. \f

           
          LPR online programmet (1) kontrollerer med systemregistret, når
          skærme åbnes til systemet, at identen findes og, ved alle fore-
          spørgsler og transaktioner, at identen må bruge de indtastede
          kommandoer. Endvidere skriver programmet alle kommandoer ud på
          logfilen. 
           
          Programmet "udskrift fra logfil" (2) køres efter behov og kan
          udskrive n eller flere af de fire kontrollister. 
           
          I programmet "ajourføring af identer m.m" (3) kan der oprettes
          nye identer samt foretages ændringer til og sletninger af eksi-
          sterende identer. Endvidere kan der oprettes og slettes komman-
          doer samt laves kommandogrupper. 
           
           
4_._ _ _ _ _ _ _ _ _K_ø_r_s_e_l_s_v_e_j_l_e_d_n_i_n_g_._                                                   4.
           
          De to programmer "udskrift fra logfil" (2 - fig. 1) og "ajourfø-
          ring af identer m.m." (3 - fig. 1) kan kun køres af en, der har
          kendskab til bestemte identer, som den sikkerhedsansvarlige fast-
          sætter. Derfor findes kørselsvejledningen til disse programmer
          ikke i den normale driftsvejledning men sammen med den totale be-
          skrivelse af sikkerhedssystemet. 
           
          Kørslen af de to programmer er lagt således tilrette, at en ikke-
          edb-kyndig kan køre dem, når der blot er oprettet en proces. 
           
          De identer, der er tale om for at køre programmerne, er dels den
          faste ident, som er kommunens specielle ident og som oprettes en
          gang for alle, når systemet afleveres, dels den variable ident,
          der har en bestemt værdi ved systemets aflevering, men kan ændres
          når som helst med programmet "ajourføring af identer mm.". 
           \f

4_._1_ _ _ _ _ _ _ _U_d_s_k_r_i_f_t_ _f_r_a_ _l_o_g_f_i_l_._                                                 4.1
           
           
          Programnavn         listlog 
           
          Funktion            programmet læser logfilen og danner op til 4
                              udskrifter af kontrollisten. 
                               
          Kald                listlog funk.1.2.3.4 
                                 funk.1 = benyttelseskontrol 1 
                                 funk.2 = benyttelseskontrol 2 
                                 funk.3 = benyttelsesstatistik 
                                 funk.4 = sikkerhedsrapport 
                               
          Dialog              indtast den faste ident 
                              indtast den variable ident 
                               
          Slutsignal          Antal records: 99999 
                              end 999 
                               
          Udskrift            lp = copy skriv1 skriv2 skriv3 skriv4 
                                 skriv1 = benyttelseskontrol 1 
                                 skriv2 = benyttelseskontrol 2 
                                 skriv3 = benyttelsesstatistik 
                                 skriv4 = sikkerhedsrapport 
                               
          Forudsætninger      online-programmet må ikke køre 
                              log-filen skal findes 
                              der skal være oprettet en proces med 
                              følgende ressourcer: 
                                 size:  20000 
                                 buf:   8 
                                 area:  8 
                                 temp disc 400 8 
                               
          Bemærkninger        logfilens indhold skal fjernes og det sker
                              ved at taste: 
                                 i logslet 
                               \f

4_._2_ _ _ _ _ _ _ _A_j_o_u_r_f_ø_r_i_n_g_ _a_f_ _i_d_e_n_t_e_r_ _m_._m_._                                          4.2

          Programnavn         Sikkerhed 
           
           
          Funktion            programmet bruges til at oprette, ændre og
                              slette identer samt til at oprette og ændre
                              kommandoer og placere dem i kommandogrupper. 
                               
          Kald                sikkerhed 
                               
          Dialog              indtast den faste ident 
                              indtast den variable ident 
                                 Den øvrige dialog fremgår af bilag A og er
                                 selvforklarende. Dog skal bemærkes, at der
                                 kan oprettes maksimalt 24 kommandogrupper,
                                 som nummereres fra 1 til 24. 
                                 Modul er et tal og for LPR's vedkommende
                                 er modul = 1. 
                               
          Udskrift            der skrives direkte fra programmet. 
                               
          Slutsignal          end 999 
                               
          Forudsætninger      systemregister skal findes. 
                              online programmet må ikke køre. 
                              der skal være oprettet en proces med 
                              følgende ressourcer: 
                                 size:  20000 
                                 buf:   8 
                                 area:  8 
                                 temp disc  400 8 
                               \f

A_._ _ _ _ _ _ _ _ _D_i_a_l_o_g_ _i_ _p_r_o_g_r_a_m_m_e_t_ _"_s_i_k_k_e_r_h_e_d_"_._                                     A.
                               
                               
                               
                               \f

         B_._ _ _ _ _ _ _ _ _S_i_k_k_e_r_h_e_d_s_r_a_p_p_o_r_t_._                                                   B.
                               
                               
                               
                               \f

         C_._ _ _ _ _ _ _ _ _B_e_n_y_t_t_e_l_s_e_s_k_o_n_t_r_o_l_ _1_._                                                C.
                               
                               
                               
                               \f

         D_._ _ _ _ _ _ _ _ _B_e_n_y_t_t_e_l_s_e_s_k_o_n_t_r_o_l_ _2_._                                                D.
                               
                               
                               
                               \f

         E_._ _ _ _ _ _ _ _ _B_e_n_y_t_t_e_l_s_e_s_s_t_a_t_i_s_t_i_k_._     E.
                               
                               
                               
                               \f

F_._ _ _ _ _ _ _ _ _L_i_s_t_e_ _o_v_e_r_ _i_d_e_n_t_e_r_     F.
                               
                               
                               
                               \f

G_._ _ _ _ _ _ _ _ _L_i_s_t_e_ _o_v_e_r_ _k_o_m_m_a_n_d_o_g_r_u_p_p_e_r_._     G.
                               
                               
                               
                               \f

          I_N_D_H_O_L_D_S_F_O_R_T_E_G_N_E_L_S_E_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _S_I_D_E_ 
 
          1. Indledning ........................  1 
 
          2. Adgangskontrol ....................  1 
             2.1 Ajourføring af identer mm. ....  1 
             2.2 Udskrift af kontrollister .....  2 
 
          3. Systemoversigt ....................  3 
 
          4. Kørselsvejledning .................  4 
             4.1 Udskrift fra logfil ...........  5 
             4.2 Ajourføring af identer mm. ....  6 
 
          B_I_L_A_G_._ 
 
          A. Dialog i programmet "sikkerhed" ...  7 
           
          B. Sikkerhedsrapport .................  8 
 
          C. Benyttelseskontrol 1 ..............  9 
 
          D. Benyttelseskontrol 2 .............. 10 
 
          E. Benyttelsesstatistik .............. 11 
 
          F. Liste over identer ................ 12 
 
          G. Liste over kommandogrupper ........ 13 
 \f

                                                 i 
           
          T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_ 
           
          1.  INTRODUCTION ...........................................   1 
           
          2.  BRIEFLY ABOUT THE FLEXIBLE DISC AS A DATAMEDIUM ........   2 
           
          3.  DESCRIPTION OF THE FLEXIBLE DISC HANDLING ALGOL PRO-
              CEDURES ................................................   5 
              3.1  Declaration of the Zone ...........................   5 
              3.2  Mounting and Identification of a Flexible Disc ....   6 
              3.3  Identification and Connection of Files on a Flex-
                   ible Disc .........................................   8 
              3.4  The Use of the File ...............................  12 
              3.5  The Termination of the Use of a File ..............  14 
              3.6  Releasing a Flexible Disc .........................  16 
              3.7  The Mode Concept, Handling Different Diskette For-
                   mats ..............................................  16 
              3.8  A Short Survey ....................................  22 
              3.9  Some Small Examples ...............................  24 
           
          4.  DESCRIPTION OF USE UNDER VARIOUS OPERATING SYSTEMS .....  31 
              4.1  Use under s .......................................  31 
              4.2  Use under BOSS in RC8000 ..........................  31 
              4.3  Use under SOS and Other Operating Systems .........  31 
           
           
          A_P_P_E_N_D_I_C_E_S_: 
           
          A.  REFERENCES .............................................  33 
           
          B.  REFERENCE MANUAL .......................................  34 
           
          C.  PRESENT RC STANDARD WITH RESTRICTIONS ..................  44 
           
           \f

                                                 ii 
           \f

«eof»