%externalintegerfnspec fsys open file  (%record(fsys access fm)%name access,
                                        %integer ID, mode, compatible,
                                        %integername token, size, flags)
%externalintegerfnspec fsys flush header %c
                                       (%record(fsys access fm)%name access,
                                        %integer token)
%externalintegerfnspec fsys close file (%record(fsys access fm)%name access,
                                        %integer token, flags)
%externalintegerfnspec fsys truncate open file %c
                                       (%record(fsys access fm)%name access,
                                        %integer token, bytes)
%externalintegerfnspec fsys read file block %c
                                       (%record(fsys access fm)%name access,
                                        %integer token, block,
                                        %integername bytes,
                                        %record(*)%name buffer)
%externalintegerfnspec fsys write file block %c
                                       (%record(fsys access fm)%name access,
                                        %integer token, block, bytes,
                                        %record(*)%name buffer)
%externalintegerfnspec fsys create file(%record(fsys access fm)%name access,
                                        %string(255) creation name,
                                        %integer pn, benefactor ID,
                                        %integer initial allocation,
                                        %integername ID)
%externalintegerfnspec fsys delete file(%record(fsys access fm)%name access,
                                        %integer ID)
!externalintegerfnspec fsys exchange   (%record(fsys access fm)%name access,
!                                       %integer ID1, ID2)
%externalintegerfnspec fsys bump refcount %c
                                       (%record(fsys access fm)%name access,
                                        %integer ID, increment)

%externalintegerfnspec fsys read file header %c
                                       (%record(fsys access fm)%name access,
                                        %integer ID, %record(*)%name fh)
%externalintegerfnspec fsys short form info %c
                                       (%record(fsys access fm)%name access,
                                        %integer ID, %string(*)%name result)
%externalintegerfnspec fsys obtain attributes %c
                                       (%record(fsys access fm)%name access,
                                        %integer file ID,
                                        %record(attributes list fm)%name a)
%externalintegerfnspec fsys modify attributes %c
                                       (%record(fsys access fm)%name access,
                                        %integer file ID,
                                        %record(attributes list fm)%name a)

%constinteger auto truncate flag  = 1
%constinteger improper close flag = 2
%constinteger multiple references = 16_40000000

%constinteger no        access =  0    { File is inaccessible
%constinteger read      access =  1    { File can be read
%constinteger modify    access =  2    { File can be modified
%constinteger append    access =  4    { File can be appended to
%constinteger exchange  access =  8    { File can be (extent) exchanged
%constinteger link      access = 16    { File can be (un)linked
%constinteger control   access = 32    { File attributes can be modified
%constinteger deny      access = 64    { Invert sense of access bits

%constinteger partition shift = 24
%constinteger partition mask  = 16_3F000000
%constinteger ID        mask  = 16_00FFFFFF

%end %of %file
