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

⟦6821cba30⟧ TextFile

    Length: 5694 (0x163e)
    Types: TextFile
    Names: »V«

Derivation

└─⟦afbc8121e⟧ Bits:30000532 8mm tape, Rational 1000, MC68020_OS2000 7_2_2
    └─ ⟦77aa8350c⟧ »DATA« 
        └─⟦f794ecd1d⟧ 
            └─⟦this⟧ 

TextFile

---------------------------------------------------------------------------
-- M68K_Definitions
---------------------------------------------------------------------------
-- Proprietary and confidential information of Rational; use or copying  --
-- without express written authorization is strictly prohibited.  This   --
-- material is protected as an unpublished work under the U.S. Copyright --
-- Act of 1976.  Created 1984, 1985, 1986, 1987, 1988.                   --
-- All rights reserved.                                                  --
---------------------------------------------------------------------------
-- 890417 BLS   Changed module name from 3813 to 3873.
-- 881214 MDW   Changed module name from 3809 to 3813.
--
---------------------------------------------------------------------------

with Byte_Defs;
with Simple_Status;

package M68k_Definitions is

    --| MACHINE DEFS |--
    type Address is new Long_Integer range 0 .. 2 ** 32 - 1;
    Null_Address : constant Address := 0;

    subtype Task_Id is Address;
    Null_Task : constant Address := Null_Address;

    subtype Byte is Byte_Defs.Byte;
    Null_Byte : constant Byte := 0;

    type Word is range -2 ** 15 .. 2 ** 15 - 1;
    Null_Word : constant Word := 0;

    type Longword is new Long_Integer range -2 ** 31 .. 2 ** 31 - 1;
    Null_Longword : constant Longword := 0;

    type Quadword is new Long_Integer;
    Null_Quadword : constant Quadword := 0;

    subtype Byte_String is Byte_Defs.Byte_String;
    Null_Byte_String : constant Byte_String (0 .. 0) := (others => Null_Byte);

    type Register_Number is (D0, D1, D2, D3, D4, D5, D6, D7, A0, A1, A2, A3, A4,
                             A5, A6, A7, Sr, Pc, Usp, Ssp, Msp, Vbr, Fp0, Fp1,
                             Fp2, Fp3, Fp4, Fp5, Fp6, Fp7, Fpcr, Fpsr, Fpiar);

    subtype Register_Array is Byte_String (1 .. 194);

    Null_Registers : constant Register_Array := (others => Null_Byte);

    Register_Sizes : constant array (Register_Number) of Natural :=
       (D0    => 4,
        D1    => 4,
        D2    => 4,
        D3    => 4,
        D4    => 4,
        D5    => 4,
        D6    => 4,
        D7    => 4,
        A0    => 4,
        A1    => 4,
        A2    => 4,
        A3    => 4,
        A4    => 4,
        A5    => 4,
        A6    => 4,
        A7    => 4,
        Sr    => 2,
        Pc    => 4,
        Usp   => 4,
        Ssp   => 4,  
        Msp   => 4,
        Vbr   => 4,
        Fp0   => 12,
        Fp1   => 12,
        Fp2   => 12,
        Fp3   => 12,
        Fp4   => 12,
        Fp5   => 12,
        Fp6   => 12,
        Fp7   => 12,
        Fpcr  => 4,
        Fpsr  => 4,
        Fpiar => 4);

    function "=" (A, B : M68k_Definitions.Byte) return Boolean
        renames Byte_Defs."=";


    --| DEBUGGER DEFS |--

    -- mirrors the spec for Debug.Stop_Event
    type Run_Type is
       (About_To_Return,      -- stop after last statement of a subprogram
        Begin_Rendezvous,     -- stop before first statement of accept body
        End_Rendezvous,       -- stop after last statement of accept body
        Local_Statement,      -- stop before next statement at same level
        Machine_Instruction,  -- stop before next instruction
        Procedure_Entry,      -- stop before first stmt/decl of called proc
        Returned,             -- stop before next statement in caller
        Statement);           -- stop before next statement


    type Break_Class is (Unknown, Startup, User, Task_Start,
                         Task_Term, Rendezvous_Start, Rendezvous_End,
                         Except, Proc_Start, Proc_End, Stmt_Step);

    type Event_Kind is (Async_Break, Async_Exception, Async_Creation,
                        Async_Stop, Async_Step, Async_Termination,
                        Async_Message, Async_Warning_Message,
                        Async_Error_Message, Async_Register_Type,
                        Async_Unregister_Type, Async_Register_Subsystem_Type,
                        Async_Unregister_Subsystem_Type,
                        Async_Break_And_Step, Async_Unknown);

    type Address_Kind  is (Data_Space, Code_Space);
    type Terminate_Set is (Process, Process_Children,
                           Program, Connected, Processor);

    -- conversions
    function To_Word     (Word_String : Byte_String)     return Word;
    function To_Address  (Address_String : Byte_String)  return Address;
    function To_Longword (Longword_String : Byte_String) return Longword;
    function To_Quadword (Quadword_String : Byte_String) return Quadword;


    function Convert_Word     (W : Word)     return Byte_String;
    function Convert_Address  (A : Address)  return Byte_String;
    function Convert_Longword (L : Longword) return Byte_String;
    function Convert_Quadword (Q : Quadword) return Byte_String;

    type Target_Event is
        record  
            Kind      : Event_Kind;
            Task_Name : Task_Id;

            Id             : Longword;
            Frame_Pointer  : Address;
            Pc             : Address;
            Raise_Pc       : Address;
            Exception_Name : Address;
            Step_Count     : Longword;
            Is_Bottom      : Boolean;

            Message     : String (1 .. 256);
            Message_Len : Longword;

            Registers : Register_Array;
            Status    : Simple_Status.Condition;
        end record;

    function Null_Event return M68k_Definitions.Target_Event;

    function Byte_Image (Bytes : Byte_String) return String;
    function Byte_Value (Str : String)        return Byte_String;

    pragma Module_Name (4, 3873);
    pragma Bias_Key (28);

end M68k_Definitions;