DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

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

See our Wiki for more about Rational R1000/400 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ T V

⟦7bfa9cf5d⟧ TextFile

    Length: 11876 (0x2e64)
    Types: TextFile
    Names: »V«

Derivation

└─⟦afbc8121e⟧ Bits:30000532 8mm tape, Rational 1000, MC68020_OS2000 7_2_2
    └─ ⟦77aa8350c⟧ »DATA« 
        └─⟦f794ecd1d⟧ 
            └─⟦4c85d69e2⟧ 
                └─⟦this⟧ 

TextFile

--    The use of this system is subject to the software license terms and
--    conditions agreed upon between Rational and the Customer.
--
--                Copyright 1988 by Rational.
--
--                          RESTRICTED RIGHTS LEGEND
--
--    Use, duplication, or disclosure by the Government is subject to
--    restrictions as set forth in subdivision (b)(3)(ii) of the Rights in
--    Technical Data and Computer Software clause at 52.227-7013.
--
--
--                Rational
--                3320 Scott Boulevard
--                Santa Clara, California 95054-3197
--
--   PROPRIETARY AND CONFIDENTIAL INFORMATION OF RATIONAL;
--   USE OR COPYING WITHOUT EXPRESS WRITTEN AUTHORIZATION
--   IS STRICTLY PROHIBITED.  THIS MATERIAL IS PROTECTED AS
--   AN UNPUBLISHED WORK UNDER THE U.S. COPYRIGHT ACT OF
--   1976.  CREATED 1988.  ALL RIGHTS RESERVED.
--
--

with System;

package Os2000_Io is

    type Path_Number is private;

    Standard_In    : constant Path_Number;
    Standard_Out   : constant Path_Number;
    Standard_Error : constant Path_Number;


    subtype File_Position is Natural;

    Null_Position : constant File_Position := 0;

    -- type Status is (Successful, Path_Table_Full, Bad_Path_Number,
    --                 Illegal_Mode, End_Of_File, File_Not_Accessible,
    --                 Bad_Path_Name, Bad_Name, Path_Name_Not_Found,
    --                 File_Already_Exists, Read_Error, Write_Error,
    --                 Non_Sharable_File_Busy);
    --

    subtype Stratus is Integer;

    E_Success : constant := 16#0000#;
    E_Pthful  : constant := 16#00C8#;
    E_Bpnum   : constant := 16#00C9#;
    E_Bmode   : constant := 16#00CB#;
    E_Eof     : constant := 16#00D3#;
    E_Fna     : constant := 16#00D6#;
    E_Bpnam   : constant := 16#00D7#;
    E_Pnnf    : constant := 16#00D8#;
    E_Bnam    : constant := 16#00EB#;
    E_Cef     : constant := 16#00DA#;
    E_Read    : constant := 16#00F4#;
    E_Write   : constant := 16#00F5#;
    E_Share   : constant := 16#00FD#;

    -- for Status use (Successful => E_Success,
    --                 Path_Table_Full => E_Pthful,
    --                 Bad_Path_Number => E_Bpnum,
    --                 Illegal_Mode => E_Bmode,
    --                 End_Of_File => E_Eof,
    --                 File_Not_Accessible => E_Fna,
    --                 Bad_Path_Name => E_Bpnam,
    --                 Path_Name_Not_Found => E_Pnnf,
    --                 Bad_Name => E_Bnam,
    --                 File_Already_Exists => E_Cef,
    --                 Read_Error => E_Read,
    --                 Write_Error => E_Write,
    --                 Non_Sharable_File_Busy => E_Share);

    --
    -- File mode
    --
    Read_Mode    : constant := 2#0000_0001#;
    Write_Mode   : constant := 2#0000_0010#;
    Update_Mode  : constant := Read_Mode + Write_Mode;
    Execute_Mode : constant := 2#0000_0100#;
    Initial_Size : constant := 2#0010_0000#;
    Single_User  : constant := 2#0100_0000#;
    Directory    : constant := 2#1000_0000#;

    --
    -- File attributes
    --
    Readable          : constant := 2#0000_0001#;
    Writeable         : constant := 2#0000_0010#;
    Updatable         : constant := Readable + Writeable;
    Executable        : constant := 2#0000_0100#;
    Public_Readable   : constant := 2#0000_1000#;
    Public_Writable   : constant := 2#0001_0000#;
    Public_Updatable  : constant := Public_Readable + Public_Writable;
    Public_Executable : constant := 2#0010_0000#;
    Not_Shareable     : constant := 2#0100_0000#;

    --
    -- Filenames are passed as the address of zero-terminated strings.
    --

    procedure Create (Name       :     System.Address;
                      Mode       :     Natural;
                      Attributes :     Natural;
                      New_Path   : out Path_Number;
                      Result     : out Stratus);
    --
    -- Possible status: Successful, Path_Table_Full, Bad_Path_Name,
    --                  File_Already_Exists
    --    If Result /= Successful then New_Path should not be used.
    --
    --
    pragma Suppress (Elaboration_Check, Create);
    pragma Interface (Asm, Create);
    pragma Import_Procedure (Create, "__OS9_I$CREATE",
                             Mechanism => (Value, Value, Value, Value, Value));

    procedure Open (Name     :     System.Address;
                    Mode     :     Natural;
                    New_Path : out Path_Number;
                    Result   : out Stratus);
    --
    -- Possible status: Successful, Path_Table_Full, Bad_Path_Name,
    --                  Illegal_Mode, File_Not_Accessible,
    --                  Path_Name_Not_Found, Non_Sharable_File_Busy
    --    If Result /= Successful then New_Path should not be used.
    --
    pragma Suppress (Elaboration_Check, Open);
    pragma Interface (Asm, Open);
    pragma Import_Procedure (Open, "__OS9_I$OPEN",
                             Mechanism => (Value, Value, Value, Value));

    procedure Close (Path : Path_Number; Result : out Stratus);
    --
    -- Possible status: Successful, Bad_Path_Number
    --
    pragma Suppress (Elaboration_Check, Close);
    pragma Interface (Asm, Close);
    pragma Import_Procedure (Close, "__OS9_I$CLOSE",
                             Mechanism => (Value, Value));


    procedure Delete (Name : System.Address; Result : out Stratus);
    --
    -- Possible status: Successful, Bad_Path_Name, ???
    --
    pragma Suppress (Elaboration_Check, Delete);
    pragma Interface (Asm, Delete);
    pragma Import_Procedure (Delete, "__OS9_I$DELETE",
                             Mechanism => (Value, Value));


    procedure Read (Path       :     Path_Number;
                    Count      :     Natural;
                    Buffer     :     System.Address;
                    Bytes_Read : out Natural;
                    Result     : out Stratus);
    --
    -- Possible status:  Successful, Bad_Path_Number, Read_Error,
    --                   Illegal_Mode, End_Of_File
    --
    pragma Suppress (Elaboration_Check, Read);
    pragma Interface (Asm, Read);
    pragma Import_Procedure (Read, "__OS9_I$READ",
                             Mechanism => (Value, Value, Value, Value, Value));


    procedure Readln (Path       :     Path_Number;
                      Count      :     Natural;
                      Buffer     :     System.Address;
                      Bytes_Read : out Natural;
                      Result     : out Stratus);
    --
    -- Possible status:  Successful, Bad_Path_Number, Read_Error, Illegal_Mode,
    --                   End_Of_File
    --
    pragma Suppress (Elaboration_Check, Readln);
    pragma Interface (Asm, Readln);
    pragma Import_Procedure (Readln, "__OS9_I$READLN",
                             Mechanism => (Value, Value, Value, Value, Value));


    procedure Write (Path          :     Path_Number;
                     Count         :     Natural;
                     Buffer        :     System.Address;
                     Bytes_Written : out Natural;
                     Result        : out Stratus);
    --
    -- Possible status: Successful, Bad_Path_Number, Illegal_Mode, Write_Error
    --    if Result /= Successful, then Bytes_Written should not be used.
    --
    pragma Suppress (Elaboration_Check, Write);
    pragma Interface (Asm, Write);
    pragma Import_Procedure (Write, "__OS9_I$WRITE",
                             Mechanism => (Value, Value, Value, Value, Value));


    procedure Seek (Path     :     Path_Number;
                    Position :     File_Position;
                    Result   : out Stratus);
    --
    -- Possible status: Successful, Bad_Path_Number, ???
    --
    -- Seeks applied to non-random access devices are usually ignored,
    -- but return without error.
    --
    pragma Suppress (Elaboration_Check, Seek);
    pragma Interface (Asm, Seek);
    pragma Import_Procedure (Seek, "__OS9_I$SEEK",
                             Mechanism => (Value, Value, Value));


    procedure Current_Position (Path     :     Path_Number;
                                Position : out File_Position;
                                Result   : out Stratus);
    --
    -- Possible status: Successful, Bad_Path_Number, Illegal_Mode, ???
    --
    -- Will return an error for non RBF or Pipe file types.
    --
    pragma Suppress (Elaboration_Check, Current_Position);
    pragma Interface (Asm, Current_Position);
    pragma Import_Procedure (Current_Position, "__OS9_I$GETSTT_POS",
                             Mechanism => (Value, Value, Value));


    procedure End_Of_File (Path   :     Path_Number;
                           At_End : out Boolean;
                           Result : out Stratus);
    --
    -- Possible status: Successful, Bad_Path_Number, ???
    --
    pragma Suppress (Elaboration_Check, End_Of_File);
    pragma Interface (Asm, End_Of_File);
    pragma Import_Procedure (End_Of_File, "__OS9_I$GETSTT_EOF",
                             Mechanism => (Value, Value, Value));


    procedure File_Size
                 (Path : Path_Number; Size : out Natural; Result : out Stratus);
    --
    -- Possible status: Successful, Bad_Path_Number, Illegal_Mode, ???
    --
    -- Will return an error for non RBF or Pipe file types.
    --
    pragma Suppress (Elaboration_Check, File_Size);
    pragma Interface (Asm, File_Size);
    pragma Import_Procedure (File_Size, "__OS9_I$GETSTT_SIZE",
                             Mechanism => (Value, Value, Value));

    procedure Set_File_Size
                 (Path : Path_Number; New_Size : Natural; Result : out Stratus);
    --
    -- Possible status: Successful, Bad_Path_Number, Illegal_Mode, ???
    --
    -- Will return an error for non RBF or Pipe file types.
    --
    pragma Suppress (Elaboration_Check, Set_File_Size);
    pragma Interface (Asm, Set_File_Size);
    pragma Import_Procedure (Set_File_Size, "__OS9_I$SETSTT_SIZE",
                             Mechanism => (Value, Value, Value));


    procedure Get_Options (Path          :     Path_Number;
                           Option_Buffer :     System.Address;
                           Result        : out Stratus);
    --
    -- Option_Buffer is be the address of a 128 byte area into which
    --               the path descriptor option section will be copied.
    --
    -- Possible status: Successful, Bad_Path_Number, ???
    --
    pragma Suppress (Elaboration_Check, Get_Options);
    pragma Interface (Asm, Get_Options);
    pragma Import_Procedure (Get_Options, "__OS9_I$GETSTT_OPT",
                             Mechanism => (Value, Value, Value));

    procedure Set_Options (Path          :     Path_Number;
                           Option_Buffer :     System.Address;
                           Result        : out Stratus);
    --
    -- Option_Buffer is be the address of a 128 byte area from which
    --               the path descriptor option section will be copied.
    --
    -- Possible status: Successful, Bad_Path_Number, ???
    --
    pragma Suppress (Elaboration_Check, Set_Options);
    pragma Interface (Asm, Set_Options);
    pragma Import_Procedure (Set_Options, "__OS9_I$SETSTT_OPT",
                             Mechanism => (Value, Value, Value));

    procedure Get_Time (Day    : out Natural;
                        Second : out Natural;
                        Tick   : out Natural;
                        Status : out Integer);
    pragma Suppress (Elaboration_Check, Get_Time);
    pragma Interface (Asm, Get_Time);
    pragma Import_Procedure (Get_Time, "_ART_F$TIME",
                             Mechanism => (Value, Value, Value, Value));

private

    type Path_Number is new Natural range 0 .. 31;

    Standard_In    : constant Path_Number := 0;
    Standard_Out   : constant Path_Number := 1;
    Standard_Error : constant Path_Number := 2;

end Os2000_Io;