DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

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

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦f953db1f1⟧ TextFile

    Length: 7680 (0x1e00)
    Types: TextFile
    Names: »tfs3502env«

Derivation

└─⟦da1afb338⟧ Bits:30008156 SW2020 - RC3502 - File system - Rel. 1.0
    └─⟦bcdac339f⟧ 
        └─⟦this⟧ »tfs3502env« 

TextFile

(**************************************************************************)
(*
     RC File System

     Name:   File System ENVIRonment
     Author: Peter Mikkelsen /pmik, Jens Kristian Kjærgård / jkk
     Date:   1981-01-26, 1984-05-16, 1984-06-04, 1984-07-11
     Version: 2.00

     Declarations nescessary for an application program using the file
     system.
     JKK    840524  transferf partioned into getf and putf
     JKK    840604  declarations prefixed by fs_
     JKK    840711  fs_pagebuffer_type added
     JKK    840726  fs_lookup, fs_set_tail added 
     JKK    840921  directory changed to catalog
     BB     860807  typesize introduced
     BB     860916  tail in file_info_type moved
     BB     860923  fs_catalog_connection has now dynamic pool
     BB     860924  the new predefined type double used
     BB     870825  Name changed from fsenvir to fs3502env
*)

fs3502env;

(* error codes *)
const
  ok=0;
  fs_catconnection      =   35;     fs_fileconnection   =   36;
  fs_name_inexistant    =    6;     fs_name_exists      =    5;
  fs_name_error         =   12;     fs_unauthorized     =   30;
  fs_deleted            =    7;     fs_filelimit        =   29;
  fs_buffersize         =   21;     fs_catalog_full     =   13;
  fs_rejected           =   28;     fs_mount_error      =    9;

  fs_openlimit          =   17;     fs_includelimit     =   18;
  fs_indexlimit         =   15;     fs_flt_overflow     =    8;
  fs_volumelimit        =   16;

  fs_parity             =    2;     fs_harderror        =    3;
  fs_disconnected       =   25;

  fs_version            =   22;     fs_not_implemented  =   23;
  fs_software           =   14;

  
type
  fs_pageheader_type =
    record
      ? : double;   (* page address *)
      ? : integer;  (* page count   *)
      ? : integer;  (* reserved     *)
    end;
const
  fs_pageheader_size = typesize (fs_pageheader_type);

const
  fs_pagesize        = 512;  (* bytes *)
type
  fs_pagedata_type = array (1..fs_pagesize) of byte;

  fs_page_type =
    record
      page_head: fs_pageheader_type;
      data:      fs_pagedata_type;
    end;

  fs_pagebuffer_type =
    record
      first,last,next: integer;
      page_head:       fs_pageheader_type;
      data:            fs_pagedata_type;
    end;

const
  fs_identifier_size = 16;
type
  fs_identifier = array(1..fs_identifier_size) of char;
const
  fs_noname = fs_identifier (fs_identifier_size *** " ");

  
type
  fs_authorities = (fs_retrieve_authority,
                    fs_update_authority,
                    fs_adjust_authority,
                    fs_delete_authority,
                    fs_authorize_authority);
  fs_authority_type =
    record
      authorizations,
      inheritable,
      protections: set of fs_authorities;
    end;
const
  fs_maxauthorities= (.fs_retrieve_authority,
                       fs_update_authority,
                       fs_adjust_authority,
                       fs_delete_authority,
                       fs_authorize_authority.);
  fs_maxauthority = 
    fs_authority_type (fs_maxauthorities,
                       fs_maxauthorities,
                       fs_maxauthorities);
type
  fs_accessmode = (fs_retrieve,fs_update,fs_exclusive);

type
  fs_entrytype_type = (fs_datafile, fs_catalog);

type
  fs_time =
    record
      date: coded_date;
      time: coded_time;
    end;

const
  fs_file_tail_size = 8;
type
  fs_file_tail_type = array(1..fs_file_tail_size) of byte;
  fs_file_info_type =
    record
      written:     !integer;
      allocated:   !integer;
      creation:    !fs_time;
      last_update: !fs_time;
      tail:         fs_file_tail_type;
    end;

const
  fs_entry_tail_size = 5; (* bytes *)
type
  fs_entry_tail_type = array(1..fs_entry_tail_size) of byte;
  fs_entry_info_type =
    record
      name:        !fs_identifier;
      authority:   !fs_authority_type;
      ?, ?:         integer;
      entrytype:   !fs_entrytype_type;
      tail:         fs_entry_tail_type;
    end;
const
  fs_entry_info_size = typesize (fs_entry_info_type);

type
  fs_file_connection =
    record
      ?: reference; (* nil if file not opened *)
      ?: reference;
      ?: pool 1;
      ?: semaphore
    end;
  fs_catalog_connection =
    record
      ?: ^semaphore; (* ptr to the LFS input semaphore *)
      ?: reference; (* nil if catalog not connected *)
      ?: reference;
      ?: pool 0;
      ?: semaphore
    end;

procedure fs_mount
  (    device: byte; 
       volumename: fs_identifier;
       mode: set of fs_accessmode; 
   var rootcat: fs_catalog_connection;
   var result: byte);
external;

procedure fs_dismount
  (var cat: fs_catalog_connection;
   var result: byte);
external;

procedure fs_connect
  (var cat: fs_catalog_connection; 
       name: fs_identifier;
       mode: set of fs_accessmode;
   var newcat: fs_catalog_connection;
   var result: byte);
external;

procedure fs_disconnect
  (var cat: fs_catalog_connection;
   var result: byte);
external;

procedure fs_lookup
  (var cat: fs_catalog_connection;
       name: fs_identifier;
   var entry: fs_entry_info_type;
   var descriptor: fs_file_info_type;
   var result: byte);
external;

procedure fs_open
  (var cat: fs_catalog_connection;
       name: fs_identifier;
       mode: set of fs_accessmode;
   var file: fs_file_connection;
   var result: byte);
external;

procedure fs_close
  (var file: fs_file_connection;
   var result: byte);
external;

procedure fs_get
  (var file: fs_file_connection;
       pageno: integer; 
       amount: integer;
   var buffer: reference; 
   var result: byte);
external;

procedure fs_put
  (var file: fs_file_connection;
       pageno: integer;
       amount: integer;
   var buffer: reference; 
   var result: byte);
external;

procedure fs_create
  (var cat: fs_catalog_connection;
       name: fs_identifier; 
   var amount: integer;
       authority: fs_authority_type; 
       entrytype: fs_entrytype_type;
   var result: byte);
external;

procedure fs_delete
  (var cat: fs_catalog_connection;
       name: fs_identifier; 
   var amount: integer;
   var result: byte);
external;

procedure fs_link
  (var cat: fs_catalog_connection;
       name: fs_identifier;
   var oldcatalog: fs_catalog_connection;
       oldname: fs_identifier;
   var result: byte);
external;

procedure fs_rename
  (var cat: fs_catalog_connection;
       name: fs_identifier;
       oldname: fs_identifier;
   var result: byte);
external;

procedure fs_extend
  (var cat: fs_catalog_connection;
       name: fs_identifier;
   var amount: integer;
   var result: byte);
external;

procedure fs_truncate
  (var cat: fs_catalog_connection;
       name: fs_identifier;
   var amount: integer;
   var result: byte);
external;

procedure fs_set_authority
  (var cat: fs_catalog_connection;
       name: fs_identifier;
       authorization: set of fs_authorities;
   var result: byte);
external;

procedure fs_set_inheritance
  (var cat: fs_catalog_connection;
       name: fs_identifier;
       inheritable: set of fs_authorities;
   var result: byte);
external;

procedure fs_set_protection
  (var cat: fs_catalog_connection;
       name: fs_identifier;
       protections: set of fs_authorities;
   var result: byte);
external;

procedure fs_set_tail
  (var cat: fs_catalog_connection;
       name: fs_identifier;
       entry: fs_entry_info_type;
       descriptor: fs_file_info_type;
   var result: byte);
external;

(***** end fs3502env *****)
.
▶EOF◀