DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

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

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦01b8ca58b⟧ Ada Source

    Length: 8192 (0x2000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package V_I_Types, seg_04ce1f

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« 
        └─⟦this⟧ 

E3 Source Code



-- Copyright 1990, 1992  Verdix Corporation

------------------------------------------------------------------------------
-- Standard interface types used for M68K
------------------------------------------------------------------------------
with System;
with Unsigned_Types;
package V_I_Types is

    pragma Suppress (All_Checks);
    pragma Suppress (Exception_Tables);
    pragma Not_Elaborated;
    pragma Local_Access;

    --------------------------------------------------------------------------
    -- TIME type
    --------------------------------------------------------------------------
    -- Internal representation for current or absolute time. The current time
    -- is normalized so that sec is less than a day (86400.0 seconds)
    type Time_T is
        record
            Day : System.Day_T;
            Sec : Duration;
        end record;
    type A_Time_T is access Time_T;

    --------------------------------------------------------------------------
    -- Allocation length type
    --------------------------------------------------------------------------
    subtype Alloc_T is Integer;

    --------------------------------------------------------------------------
    -- Type large enough to hold an address, integer, unsigned_integer, or
    -- duration scalar
    --------------------------------------------------------------------------
    type Universal_Scalar is private;
    No_Universal_Scalar : constant Universal_Scalar;

    function To_Universal_Scalar (I : Integer) return Universal_Scalar;
    function To_Universal_Scalar
                (U : Unsigned_Types.Unsigned_Integer) return Universal_Scalar;
    function To_Universal_Scalar (A : System.Address) return Universal_Scalar;
    function To_Universal_Scalar (D : Duration) return Universal_Scalar;
    pragma Inline_Only (To_Universal_Scalar);
    function From_Universal_Scalar (Us : Universal_Scalar) return Integer;
    function From_Universal_Scalar (Us : Universal_Scalar)
                                   return Unsigned_Types.Unsigned_Integer;
    function From_Universal_Scalar
                (Us : Universal_Scalar) return System.Address;
    function From_Universal_Scalar (Us : Universal_Scalar) return Duration;
    pragma Inline_Only (From_Universal_Scalar);

    --------------------------------------------------------------------------
    -- Converts an integer to an address. If address'size > integer'size,
    -- then, the integer is sign extended. If address'size < integer'size,
    -- then, the integer is truncated.
    --------------------------------------------------------------------------
    function Integer_To_Address (I : Integer) return System.Address;
    pragma Inline_Only (Integer_To_Address);

    --------------------------------------------------------------------------
    -- Converts an address to an integer. If integer'size > address'size,
    -- then, the address is sign extended. If integer'size < address'size,
    -- then, the address is truncated.
    --------------------------------------------------------------------------
    function Address_To_Integer (A : System.Address) return Integer;
    pragma Inline_Only (Address_To_Integer);


    --------------------------------------------------------------------------
    -- Misc types provided for backward compatibility with
    -- earlier releases of VADS.
    --------------------------------------------------------------------------
    subtype A_Task_T is System.Task_Id;
    Null_Task : constant A_Task_T := System.No_Task_Id;
    subtype A_Program_T is System.Program_Id;
    subtype User_Field_T is Integer;
    subtype User_Field2_T is System.Address;

    --------------------------------------------------------------------------
    -- Values corresponding to a zero/non-zero for the machine test-and-set
    --------------------------------------------------------------------------
    -- Values corresponding to a zero/non-zero for the machine test-and-set
    type Test_And_Set_T is new Integer range 0 .. 255;
    for Test_And_Set_T'Size use 8;
    Test_And_Set_False : constant Test_And_Set_T := 0;
    Test_And_Set_True : constant Test_And_Set_T := 16#80#;  -- bit 7 of byte

    --------------------------------------------------------------------------
    -- The following types define the structure of the fpcr register
    -- on the MC68881.  A configuration parameter of this type allows
    -- the user to control the operating characteristics of the co-
    -- processor by providing the value to which the fpcr should be
    -- initialized.
    --------------------------------------------------------------------------

    type Exception_Bit is range 0 .. 1;

    type Rounding_Modes is (To_Nearest, Toward_Zero,
                            Toward_Minus_Infinity, Toward_Plus_Infinity);
    for Rounding_Modes use (To_Nearest => 2#00#,
                            Toward_Zero => 2#01#,
                            Toward_Minus_Infinity => 2#10#,
                            Toward_Plus_Infinity => 2#11#);

    type Rounding_Precision is (Extended, Single, Double);
    for Rounding_Precision use
       (Extended => 2#00#, Single => 2#01#, Double => 2#10#);

    type Mode_Control_Byte is
        record
            Prec : Rounding_Precision;
            Rnd : Rounding_Modes;
        end record;

    for Mode_Control_Byte use
        record
            Prec at 0 range 0 .. 1;
            Rnd at 0 range 2 .. 3;
        end record;
    for Mode_Control_Byte'Size use 8;

    type Exception_Byte is
        record
            Bsun : Exception_Bit;
            Snan : Exception_Bit;
            Operr : Exception_Bit;
            Ovfl : Exception_Bit;
            Unfl : Exception_Bit;
            Dz : Exception_Bit;
            Inex2 : Exception_Bit;
            Inex1 : Exception_Bit;
        end record;

    for Exception_Byte use
        record
            Bsun at 0 range 0 .. 0;
            Snan at 0 range 1 .. 1;
            Operr at 0 range 2 .. 2;
            Ovfl at 0 range 3 .. 3;
            Unfl at 0 range 4 .. 4;
            Dz at 0 range 5 .. 5;
            Inex2 at 0 range 6 .. 6;
            Inex1 at 0 range 7 .. 7;
        end record;
    for Exception_Byte'Size use 8;

    type Floating_Point_Control_T is
        record
            Exceptions : Exception_Byte;
            Modes : Mode_Control_Byte;
        end record;

    for Floating_Point_Control_T use
        record
            Exceptions at 2 range 00 .. 07;
            Modes at 3 range 00 .. 07;
        end record;
    for Floating_Point_Control_T'Size use 32;

private
    type Universal_Scalar is new System.Address;
    No_Universal_Scalar : constant Universal_Scalar :=
       Universal_Scalar (System.Memory_Address (0));
end V_I_Types;

E3 Meta Data

    nblk1=7
    nid=0
    hdr6=e
        [0x00] rec0=1c rec1=00 rec2=01 rec3=078
        [0x01] rec0=13 rec1=00 rec2=02 rec3=01a
        [0x02] rec0=11 rec1=00 rec2=03 rec3=032
        [0x03] rec0=13 rec1=00 rec2=04 rec3=082
        [0x04] rec0=13 rec1=00 rec2=05 rec3=058
        [0x05] rec0=1f rec1=00 rec2=06 rec3=040
        [0x06] rec0=23 rec1=00 rec2=07 rec3=000
    tail 0x217542480874f7c31fc45 0x42a00088462060003