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

⟦8e20049f0⟧ TextFile

    Length: 5698 (0x1642)
    Types: TextFile
    Names: »V«

Derivation

└─⟦516dceb10⟧ Bits:30000751 8mm tape, Rational 1000, RCI_VADS
    └─ ⟦9a14c9417⟧ »DATA« 
        └─⟦this⟧ 

TextFile

WITH System;
USE System;
WITH V_I_Pass;
USE V_I_Pass;
WITH Unchecked_Conversion;

PACKAGE V_I_Libop IS

   PRAGMA Not_Elaborated;
   PRAGMA Suppress (Exception_Tables);
   PRAGMA Suppress (All_Checks);

---- for image and value attributes ---------------------
   TYPE Target_Integer    IS NEW Integer;
   TYPE Target_Dv_Integer IS NEW Integer;
   TYPE Dv_Rec IS
      RECORD
         Char_Size : Target_Dv_Integer;
         Low       : Target_Dv_Integer;
         High      : Target_Dv_Integer;
         Size      : Target_Dv_Integer;
      END RECORD;
   TYPE Dv_Ptr IS ACCESS Dv_Rec;

   TYPE Image_Rec IS
      RECORD
         Width  : Integer;
         Count  : Integer;
         Images : String (1 .. 1);
      END RECORD;
   TYPE Image_Ptr IS ACCESS Image_Rec;
   TYPE Pv_Arr    IS ARRAY (Target_Integer RANGE 0 .. 0) OF Target_Integer;
   TYPE Pv_Ptr    IS ACCESS Pv_Arr;
   TYPE Char_Ptr  IS ACCESS Character;
   FUNCTION Atoc IS NEW Unchecked_Conversion (Address, Char_Ptr);

   FUNCTION Enum_Image (Map : Image_Ptr; Val : Target_Integer; Dv : Dv_Ptr)
                       RETURN Address;
   FUNCTION Enum_Value (Str : Address; Dv : Dv_Ptr; Image : Image_Ptr)
                       RETURN Target_Integer;
   FUNCTION Enum_Width (Map : Image_Ptr; Low, High : Target_Integer)
                       RETURN Target_Integer;

   FUNCTION Int_Image (Val : Target_Integer; Image : Address; Dv : Dv_Ptr)
                      RETURN Address;
   FUNCTION Int_Value (Str : Address; Dv : Dv_Ptr; Lb, Ub : Target_Integer)
                      RETURN Target_Integer;
   FUNCTION Int_Width (Low : Target_Integer; High : Target_Integer)
                      RETURN Target_Integer;

------ val/pos support --------------------------------------
   FUNCTION Val_To_Pos (Val : Target_Integer; Pv_Map : Pv_Ptr)
                       RETURN Target_Integer;

------ bit support ------------------------------------------
   PROCEDURE Bitcopy (Bits           : Integer;
                      Src_Base       : Address;
                      Src_Bit_Offset : Integer;
                      Dst_Base       : Address;
                      Dst_Bit_Offset : Integer);
   FUNCTION  Biteq   (Bits           : Integer;
                      Lhs_Base       : Address;
                      Lhs_Bit_Offset : Integer;
                      Rhs_Base       : Address;
                      Rhs_Bit_Offset : Integer) RETURN Boolean;

-- catenation support ---------------------------------------------
   PROCEDURE Lib_Catenate (Arg_List_P : Address; New_Dv : Dv_Ptr);

-- block memory support -------------------------------------------
   PROCEDURE Bcopy (Src_Addr, Dst_Addr : Address; Lgth : Integer);
   PROCEDURE Bzero (Addr : Address; Lgth : Integer);
   --  Compare 2 strings of characters given their address and the length.
   --  Condition codes are left for the calling procedure.
   PROCEDURE Cmpc3 (Addr1 : Address; Addr2 : Address; Lgth : Integer);
   --  Compare 2 strings of chars with possibly different lengths.
   --  Condition codes are left for the calling procedure.
   PROCEDURE Cmpc4 (Addr1 : Address;
                    Lgth1 : Integer;
                    Addr2 : Address;
                    Lgth2 : Integer);
   --  Compare 2 strings of longs with possibly different lengths.
   --  Condition codes are left for the calling procedure.
   PROCEDURE Cmpl4 (Addr1 : Address;
                    Lgth1 : Integer;
                    Addr2 : Address;
                    Lgth2 : Integer);
   --  Compare 2 strings of words with possibly different lengths.
   --  Condition codes are left for the calling procedure.
   PROCEDURE Cmpw4 (Addr1 : Address;
                    Lgth1 : Integer;
                    Addr2 : Address;
                    Lgth2 : Integer);
   --  Copy a block of memory from one address to another.
   --  Handles overlapping segments of memory.
   PROCEDURE Movc3 (Addr1 : Address; Addr2 : Address; Lgth : Integer);

-- fixed point support --------------------------------------------
   FUNCTION Fixed_Mantissa (Low : Target_Integer; High : Target_Integer)
                           RETURN Target_Integer;

PRIVATE
   PRAGMA Interface (Ada, Fixed_Mantissa);
   PRAGMA Interface_Name (Fixed_Mantissa, "FIXED_MANTISSA");
   PRAGMA Interface (Ada, Movc3);
   PRAGMA Interface_Name (Movc3, "MOVC3");
   PRAGMA Interface (Ada, Cmpw4);
   PRAGMA Interface_Name (Cmpw4, "CMPW4");
   PRAGMA Interface (Ada, Cmpl4);
   PRAGMA Interface_Name (Cmpl4, "CMPL4");
   PRAGMA Interface (Ada, Cmpc4);
   PRAGMA Interface_Name (Cmpc4, "CMPC4");
   PRAGMA Interface (Ada, Cmpc3);
   PRAGMA Interface_Name (Cmpc3, "CMPC3");
   PRAGMA Interface (Ada, Bzero);
   PRAGMA Interface_Name (Bzero, "BZERO");
   PRAGMA Interface (Ada, Bcopy);
   PRAGMA Interface_Name (Bcopy, "BCOPY");
   PRAGMA Interface (Ada, Biteq);
   PRAGMA Interface_Name (Biteq, "BITEQ");
   PRAGMA Interface (Ada, Bitcopy);
   PRAGMA Interface_Name (Bitcopy, "BITCOPY");
   PRAGMA Interface (Ada, Val_To_Pos);
   PRAGMA Interface_Name (Val_To_Pos, "VAL_TO_POS");
   PRAGMA Interface (Ada, Int_Width);
   PRAGMA Interface_Name (Int_Width, "INT_WIDTH");
   PRAGMA Interface (Ada, Int_Value);
   PRAGMA Interface_Name (Int_Value, "INT_VALUE");
   PRAGMA Interface (Ada, Int_Image);
   PRAGMA Interface_Name (Int_Image, "INT_IMAGE");
   PRAGMA Interface (Ada, Enum_Width);
   PRAGMA Interface_Name (Enum_Width, "ENUM_WIDTH");
   PRAGMA Interface (Ada, Enum_Value);
   PRAGMA Interface_Name (Enum_Value, "ENUM_VALUE");
   PRAGMA Interface (Ada, Enum_Image);
   PRAGMA Interface_Name (Enum_Image, "ENUM_IMAGE");
   PRAGMA Interface (Ada, Lib_Catenate);
   PRAGMA Interface_Name (Lib_Catenate, "__LIB_CATENATE");
END V_I_Libop;