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

⟦3524e5320⟧ Ada Source

    Length: 6144 (0x1800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, generic, package System, seg_0213c4

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



package System is

    -- The order of the elements of this type is not significant.

    type Name is (S370, I80x86, I80386, Mc680x0, Vax, Transputer);


    System_Name : constant Name := I80386;

    Storage_Unit : constant := 8;

    Max_Int : constant := 2 ** 31 - 1;

    Min_Int : constant := -(2 ** 31);

    Max_Mantissa : constant := 31;

    Fine_Delta : constant := 2#1.0#E-31;

    Max_Digits : constant := 15;

    Memory_Size : constant := 2 ** 32;

    Tick : constant := 0.02;

    subtype Priority is Integer range 1 .. 28;

    type Address is private;
    Null_Address : constant Address;


    -- Converts a string to an address.\x09The syntax of the string and its
    -- meaning are target dependent.
    --
    -- For the 80386 the syntax is:
    --\x09"OOOOOOOO"  where OOOOOOOO is an 8 digit or less hexadecimal number
    --\x09\x09    representing an offset either in the data segment or in the
    --\x09\x09    code segment.   --\x09Example:
    --\x09  "00000008"
    --
    -- The exception CONSTRAINT_ERROR is raised if the string has not the
    -- proper syntax.

    function Value (Left : in String) return Address;


    -- Converts an address to a string.\x09The syntax of the returned string
    -- is described in the VALUE function.

    subtype Address_String is String (1 .. 8);

    function Image (Left : in Address) return Address_String;

    -- The following routines provide support to perform address
    -- computation.  The meaning of the "+" and "-" operators is
    -- architecture dependent.  For example on a segmented machine
    -- the OFFSET parameter is added to, or subtracted from the offset
    -- part of the address, the segment remaining untouched.

    type Offset is range 0 .. 2 ** 31 - 1;

    -- The exeception ADDRESS_ERROR is raised by "<", "<=", ">", ">=", "-"
    -- if the two addresses do not have the same segment value.\x09This
    -- exception is never raised on a non segmented machine.
    -- The exception CONSTRAINT_ERROR can be raised by "+" and "-".

    Address_Error : exception;

    function "+" (Left : in Address; Right : in Offset) return Address;
    function "+" (Left : in Offset; Right : in Address) return Address;
    function "-" (Left : in Address; Right : in Offset) return Address;

    -- The exception ADDRESS_ERROR is raised on a segmented architecture
    -- if the two addresses do not have the same segment value.

    function "-" (Left : in Address; Right : in Address) return Offset;

    -- Perform an unsigned comparison on addresses or offset part of
    -- addresses on a segmented machine.

    function "<=" (Left, Right : in Address) return Boolean;
    function "<" (Left, Right : in Address) return Boolean;
    function ">=" (Left, Right : in Address) return Boolean;
    function ">" (Left, Right : in Address) return Boolean;

    function "mod" (Left : in Address; Right : in Positive) return Natural;


    -- Returns the given address rounded to a specific value.

    type Round_Direction is (Down, Up);

    function Round (Value : in Address;
                    Direction : in Round_Direction;
                    Modulus : in Positive) return Address;


    -- These routines are provided to perform READ/WRITE operation
    -- in memory.
    -- Warning: These routines will give unexpected results if used with
    -- unconstrained types.

    generic
        type Target is private;
    function Fetch_From_Address (A : in Address) return Target;

    generic
        type Target is private;
    procedure Assign_To_Address (A : in Address; T : in Target);


    -- Procedure to copy LENGTH storage unit starting at the address
    -- FROM to the address TO.  The source and destination may overlap.
    -- OBJECT_LENGTH designates the size of an object in storage units.

    type Object_Length is range 0 .. 2 ** 31 - 1;

    procedure Move (To : in Address;
                    From : in Address;
                    Length : in Object_Length);
private

    pragma Inline ("+", "-", Same_Segment);

    type Address is access String;
    Null_Address : constant Address := null;

    pragma Interface (Assembler, Move);
    pragma Interface_Name (Move, "ADA@BLOCK_MOVE");

end System;

E3 Meta Data

    nblk1=5
    nid=0
    hdr6=a
        [0x00] rec0=28 rec1=00 rec2=01 rec3=002
        [0x01] rec0=1a rec1=00 rec2=02 rec3=02e
        [0x02] rec0=16 rec1=00 rec2=03 rec3=068
        [0x03] rec0=1f rec1=00 rec2=04 rec3=000
        [0x04] rec0=0f rec1=00 rec2=05 rec3=000
    tail 0x2171d635a838d737a36af 0x42a00088462060003