|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 6144 (0x1800)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, generic, package System, seg_0213c4
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
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;
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