|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T V
Length: 6881 (0x1ae1)
Types: TextFile
Names: »V«
└─⟦516dceb10⟧ Bits:30000751 8mm tape, Rational 1000, RCI_VADS
└─⟦9a14c9417⟧ »DATA«
└─⟦this⟧
-- 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;