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: ┃ B T

⟦c508ce32b⟧ TextFile

    Length: 7449 (0x1d19)
    Types: TextFile
    Names: »B«

Derivation

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

TextFile

separate (Shared_Code_Generic_Support)
package body Asm_Interface is

    pragma Suppress_All;
    type Wide_Enum is new Integer;
    -- To force Boolean and Expression_Kind parameters to be passed
    -- in a word.

    function Call_Value_Size (Subp      : Subprogram_Variable;
                              Type_Desc : Type_Descriptor;
                              Exp       : Expression;
                              Exp_Kind  : Wide_Enum) return Integer;
    -- To call Value_Size_Subp in the Type_Descriptor
    pragma Interface (Asm, Call_Value_Size);
    pragma Import_Function (Internal  => Call_Value_Size,
                            External  => "__CALL_VALUE_SIZE",
                            Mechanism => (Reference, Reference, Value, Value));


    function Call_Allocate  
                (Subp               : Subprogram_Variable;
                 Type_Desc          : Type_Descriptor;
                 Collection_Or_Heap : System.Address;
                 Is_Collection      : Wide_Enum;
                 Is_Homogeneous     : Wide_Enum) return System.Address;
    -- To call Allocate_Subp in the Type_Descriptor
    pragma Interface (Asm, Call_Allocate);
    pragma Import_Function
       (Internal  => Call_Allocate,
        External  => "__CALL_ALLOCATE",
        Mechanism => (Reference, Reference, Value, Value, Value));


    function Call_Allocate_With_Tasks
                (Subp               : Subprogram_Variable;
                 Type_Desc          : Type_Descriptor;
                 Collection_Or_Heap : System.Address;
                 Is_Collection      : Wide_Enum;
                 Is_Homogeneous     : Wide_Enum;
                 Master_Layer       : System.Address;
                 Activation_Group   : System.Address) return System.Address;
    -- To call Allocate_Subp in the Type_Descriptor
    pragma Interface (Asm, Call_Allocate_With_Tasks);
    pragma Import_Function (Internal  => Call_Allocate_With_Tasks,
                            External  => "__CALL_ALLOCATE_WITH_TASKS",
                            Mechanism => (Reference, Reference, Value,
                                          Value, Value, Value, Value));


    procedure Call_Dscrmt_Record_Assign (Subp        : Subprogram_Variable;
                                         Type_Desc   : Type_Descriptor;
                                         Source      : Expression;
                                         Source_Kind : Wide_Enum;
                                         Dest        : Expression;
                                         Dest_Kind   : Wide_Enum);
    -- To call Dscrmt_Record_Assign_Subp in the Type_Descriptor
    pragma Interface (Asm, Call_Dscrmt_Record_Assign);
    pragma Import_Procedure
       (Internal  => Call_Dscrmt_Record_Assign,
        External  => "__CALL_DSCRMT_RECORD_ASSIGN",
        Mechanism => (Reference, Reference, Value, Value, Value, Value));


    function Call_Dscrmt_Record_Satisfies  
                (Subp      : Subprogram_Variable;
                 Type_Desc : Type_Descriptor;
                 Exp       : Expression;
                 Exp_Kind  : Wide_Enum) return Boolean;
    -- To call Dscrmt_Record_Satisfies_Subp in the Type_Descriptor.
    -- Does ONLY a subtype check.
    pragma Interface (Asm, Call_Dscrmt_Record_Satisfies);
    pragma Import_Function (Internal  => Call_Dscrmt_Record_Satisfies,
                            External  => "__CALL_DSCRMT_RECORD_SATISFIES",
                            Mechanism => (Reference, Reference, Value, Value));


    -- Exported subprograms follow


    function Value_Size (Subp      : Subprogram_Variable;
                         Type_Desc : Type_Descriptor;
                         Exp       : Expression;
                         Exp_Kind  : Expression_Kind) return Integer is
        pragma Routine_Number (N => Runtime_Ids.Internal);
    begin
        return Call_Value_Size  
                  (Subp      => Subp,
                   Type_Desc => Type_Desc,
                   Exp       => Exp,
                   Exp_Kind  => Expression_Kind'Pos (Exp_Kind));
    end Value_Size;


    function Allocate (Subp               : Subprogram_Variable;
                       Type_Desc          : Type_Descriptor;
                       Collection_Or_Heap : System.Address;
                       Is_Collection      : Boolean;
                       Is_Homogeneous     : Boolean)  
                      return System.Address is
        pragma Routine_Number (N => Runtime_Ids.Internal);
    begin
        return Call_Allocate  
                  (Subp               => Subp,  
                   Type_Desc          => Type_Desc,
                   Collection_Or_Heap => Collection_Or_Heap,
                   Is_Collection      => Boolean'Pos (Is_Collection),
                   Is_Homogeneous     => Boolean'Pos (Is_Homogeneous));
    end Allocate;


    function Allocate_With_Tasks (Subp               : Subprogram_Variable;
                                  Type_Desc          : Type_Descriptor;
                                  Collection_Or_Heap : System.Address;
                                  Is_Collection      : Boolean;
                                  Is_Homogeneous     : Boolean;
                                  Master_Layer       : System.Address;  
                                  Activation_Group   : System.Address)  
                                 return System.Address is
        pragma Routine_Number (N => Runtime_Ids.Internal);
    begin
        return Call_Allocate_With_Tasks
                  (Subp               => Subp,
                   Type_Desc          => Type_Desc,
                   Collection_Or_Heap => Collection_Or_Heap,
                   Is_Collection      => Boolean'Pos (Is_Collection),
                   Is_Homogeneous     => Boolean'Pos (Is_Homogeneous),
                   Master_Layer       => Master_Layer,
                   Activation_Group   => Activation_Group);
    end Allocate_With_Tasks;


    procedure Dscrmt_Record_Assign  
                 (Subp        : Subprogram_Variable;
                  Type_Desc   : Type_Descriptor;
                  Source      : Expression;
                  Source_Kind : Expression_Kind;
                  Dest        : Expression;
                  Dest_Kind   : Expression_Kind) is
        pragma Routine_Number (N => Runtime_Ids.Internal);
    begin
        Call_Dscrmt_Record_Assign
           (Subp        => Subp,
            Type_Desc   => Type_Desc,
            Source      => Source,  
            Source_Kind => Expression_Kind'Pos (Source_Kind),  
            Dest        => Dest,  
            Dest_Kind   => Expression_Kind'Pos (Dest_Kind));
    end Dscrmt_Record_Assign;


    function Dscrmt_Record_Satisfies  
                (Subp      : Subprogram_Variable;
                 Type_Desc : Type_Descriptor;
                 Exp       : Expression;
                 Exp_Kind  : Expression_Kind) return Boolean is
        pragma Routine_Number (N => Runtime_Ids.Internal);
    begin
        return Call_Dscrmt_Record_Satisfies
                  (Subp      => Subp,  
                   Type_Desc => Type_Desc,
                   Exp       => Exp,  
                   Exp_Kind  => Expression_Kind'Pos (Exp_Kind));
    end Dscrmt_Record_Satisfies;


end Asm_Interface;
pragma Runtime_Unit (Unit_Number         => Runtime_Ids.Runtime_Compunit,
                     Elab_Routine_Number => Runtime_Ids.Internal);