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

⟦9bc326483⟧ TextFile

    Length: 6881 (0x1ae1)
    Types: TextFile
    Names: »V«

Derivation

└─⟦516dceb10⟧ Bits:30000751 8mm tape, Rational 1000, RCI_VADS
    └─ ⟦9a14c9417⟧ »DATA« 
        └─⟦this⟧ 

TextFile


-- Copyright 1987, 1988  Verdix Corporation

------------------------------------------------------------------------------
-- Standard interface types for the M68000 processor family version of
-- the RTS.
------------------------------------------------------------------------------
with System;
with Unchecked_Conversion;
package V_I_Types is

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

    --------------------------------------------------------------------------
    -- TIME type
    --------------------------------------------------------------------------

    -- Internal RTS representation for day. If the calendar package is used,
    -- then, this is the julian day.
    subtype Day_T is Integer;

    -- 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 : Day_T;
            Sec : Duration;
        end record;


    --------------------------------------------------------------------------
    -- Interrupt types
    --------------------------------------------------------------------------

    -- Exception vector table ID's
    subtype Intr_Vector_Id_T is Natural;

    -- Interrupt enable/disable status: Interrupt Priority Level (IPL)
    -- mask stored in Status Register
    subtype Intr_Status_T is Integer;

    Disable_Intr_Status : constant := 16#0700#;
    Enable_Intr_Status : constant := 16#0000#;
    Level_0_Intr_Status : constant := 16#0000#;
    Level_1_Intr_Status : constant := 16#0100#;
    Level_2_Intr_Status : constant := 16#0200#;
    Level_3_Intr_Status : constant := 16#0300#;
    Level_4_Intr_Status : constant := 16#0400#;
    Level_5_Intr_Status : constant := 16#0500#;
    Level_6_Intr_Status : constant := 16#0600#;
    Level_7_Intr_Status : constant := 16#0700#;

    --------------------------------------------------------------------------
    -- 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;


    --------------------------------------------------------------------------
    -- Space needed at bottom of user stack for exception handling
    --------------------------------------------------------------------------
    Exception_Stack_Size : constant := 1000;


    --------------------------------------------------------------------------
    -- User interface to RTS data structures
    --------------------------------------------------------------------------

    -- Program control block
    type A_Program_T is new System.Address;

    -- Task control block
    type A_Task_T is new System.Address;

    Null_Task : -- constant KLUDGE: was not being initialized statically
       -- now initiallized dynamically in boot_conf.v_boot.
       A_Task_T := A_Task_T (System.No_Addr);

    -- Type of user_field in task control record
    subtype User_Field_T is Integer;

    -- Signal structure
    type A_Signal_T is new System.Address;

    --------------------------------------------------------------------------
    -- User memory types, constants, conversion functions
    --------------------------------------------------------------------------
    type User_Address_T is new System.Address;
    type Short_Address_T is new System.Address;
    type A_Memory_Map_T is new System.Address;

    Null_User_Address : -- constant KLUDGE: was not being initialized statically
       -- now initiallized dynamically in boot_conf.v_boot.
       User_Address_T := User_Address_T (System.No_Addr);

    function Make_Address is new Unchecked_Conversion
                                    (System.Address, User_Address_T);
    function I_To_A is new Unchecked_Conversion (Integer, System.Address);
    function Ua_To_A is new Unchecked_Conversion
                               (User_Address_T, System.Address);

    --------------------------------------------------------------------------
    -- Misc type definitions
    --------------------------------------------------------------------------

    -- Type of value returned by v_i_taskop.ts_entry_count
    subtype Universal_Integer_T is Integer;

    type Long_Integer is new Integer;
    subtype Alloc_T is Integer;         -- allocate length type
    subtype Physical_Adr_As_Int is Integer;

    -- 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
end V_I_Types;