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

⟦677802a1c⟧ Ada Source

    Length: 16384 (0x4000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, procedure Define_Predefineds, seg_005808, separate Symbol_Table

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



separate (Symbol_Table)
------------------------------------------------------------------------------
-- Copyright 1989 - 1990 by Rational, Santa Clara, California.
--
--                  All Rights Reserved.
--
-- Permission to use, copy, modify, and distribute this software and its
-- documentation for any purpose and without fee is hereby granted,
-- provided that the above copyright notice(s) appear in all copies and that
-- both that copyright notice(s) and this permission notice appear in
-- supporting documentation, and that the name of Rational not be used in
-- advertising or publicity pertaining to distribution of the software
-- without specific, written prior permission.
--
-- Rational disclaims all warranties with regard to this software, including
-- all implied warranties of merchantability and fitness, in no event shall
-- Rational be liable for any special, indirect or consequential damages or
-- any damages whatsoever resulting from loss of use, data or profits, whether
-- in an action of contract, negligence or other tortious action, arising out
-- of or in connection with the use or performance of this software.
------------------------------------------------------------------------------

procedure Define_Predefineds is
------------------------------------------------------------------------------
-- Called to enter all of our existing parameter names with default values.
------------------------------------------------------------------------------

    procedure Flag (Name : E_String) is
    begin
        Define (Sym_Map, Name, (Sk_Boolean, Permanent => False, Bool => False));
    end Flag;

begin

------------------------------------------------------------------------------
-- General/Random Issues
------------------------------------------------------------------------------

    Flag ("DEBUG");               -- Do we want Debug code?  There is some
                                  -- small amount of sanity-checking code
                                  -- embedded in the library.  This will
                                  -- un/comment that code.

    Flag ("OLD_CONTEXT_MANAGER");-- Do we want the old "Context Manager"
                                 -- included in the library?  The context
                                 -- manager was created by MIT/DEC as a tool
                                 -- to aid the Xt Intrinsics.  However, they
                                 -- don't use the interface as it is declared.
                                 -- All of the interfaces take an X_Window
                                 -- and less than have of the users of the
                                 -- interface in the Xt layer pass an X_Window
                                 -- value.  They mainly pass something that
                                 -- *isn't* a window.  They pass in  all sorts
                                 -- of things that happen to be the same bit
                                 -- size as an X_Window.
                                 -- Therefore the context manager is of no use
                                 -- to the Ada Xt Intrinsics and the concept
                                 -- has been reimplemented there.  However,
                                 -- if someone "out there" wants the CM for
                                 -- some other reason then set this parameter
                                 -- to TRUE.

------------------------------------------------------------------------------
-- Host Machine/Operating-System Issues
------------------------------------------------------------------------------

    Flag ("Cdf_Hpux");            -- Target is Rational CDF for 68k HP Unix
    Flag ("R1000");               -- Target is an R1000.
    Flag ("TeleGen2");            -- Target is TeleSoft TeleGen2 Ada compiler.

    Flag ("Unix");                -- Target is any form of Unix.
    Flag ("SysV");                -- Target is System V in particular.

    Flag ("R1000_Xlib_Only");     -- True only on R1000's without Xt, Xaw, etc.
                                  -- Eliminates the extra tasking interfaces
                                  -- required on R1000's otherwise.

------------------------------------------------------------------------------
-- Bugicide - Sometimes we have to work around what we cannot get fixed
--            right away.
------------------------------------------------------------------------------

    Flag ("R1000_Size_Bug");      -- type a is something;
                                  -- for a'size use nnn;
                                  -- type b is new a;
                                  -- for b'size use nnn; <-- gets an error

    Flag ("TeleGen2_Derive_Bug"); -- package xxx is
                                  --     type aaa is range nnn..mmm;
                                  --     function "and"(a,b:aaa) return aaa;
                                  -- package yyy is
                                  --     type bbb is new aaa;
                                  -- function "and" is not inherited by the
                                  -- derived bbb type and it should be.

    Flag ("TeleGen2_Length_Bug"); -- type foo is (a,b,c,d,e,f,g,h);
                                  -- type bar is array (foo) of boolean;
                                  -- for foo'size use 8;
                                  -- But foo'size isn't 8, you have to
                                  -- pragma pack(foo) as well to get it.
                                  -- And, this only happens "sometimes".
                                  --
                                  -- TeleGen2 68K Unix - before v1.4A

    Flag ("TeleGen2_Pack_Bug");   -- type foo is record .... end record;
                                  -- for foo'size use nnn;
                                  -- type bar is array (...) of record;
                                  -- pragma pack (bar);
                                  -- Error: Rep clause after forcing occurance
                                  -- for foo (the error caused by the pragma)

    Flag ("TeleGen2_2d_Bug");     -- type u_char is new range 0..255;
                                  -- for u_char'size use 8;
                                  -- type array_2d is array (u_char range <>,
                                  --                         u_char range <>
                                  --                        ) of integer;
                                  -- foo : array_2d;
                                  --
                                  -- Foo'last, foo'first, and foo'length
                                  -- all return incorrect values.
                                  -- Changing the type of the 1st dimension
                                  -- to any 16-bit (or 32-bit) type fixes
                                  -- the problem but messes up our interface.

------------------------------------------------------------------------------
-- Library Features
------------------------------------------------------------------------------

    Flag ("Multitask_Locking");   -- Are we providing for/allowing multi-task
                                  -- interlocking on X_Display's and on the
                                  -- basic X_Lib data structure?  If the user
                                  -- program will never use X_Library in a
                                  -- multitasking Ada environment then we
                                  -- don't have to and this would mean that
                                  -- we have lower overhead (no internal
                                  -- tasks) in the library.

------------------------------------------------------------------------------
-- Ada Compiler Issues
------------------------------------------------------------------------------

----Does the Ada language feature called Xxxx exist/work?

    Flag ("Enable_Deallocation"); -- pragma ENABLE_DEALLOCATION( access-type );
                                  -- Unchecked_Deallocation is a no-op unless
                                  -- this is used.  R1000-specific.

    Flag ("Inline");              -- pragma INLINE( procedure-name );
                                  -- Inlining across compilaton units.

    Flag ("Length_Clauses");      -- Are we using the Length Clauses?
                                  -- (LRM 13.2)  This is true if we are using
                                  -- them.  They might not be implemented in
                                  -- which case we will be forced to
                                  -- explicitly code all conversion routines
                                  -- instead of relying on facilities such
                                  -- as Unchecked_Conversion.

    Flag ("Pack");                -- pragma PACK( type-simple-name );
                                  -- Pragma PACK is wanted, desired, supported.
                                  -- Pragma PACK should not be necessary if
                                  -- the For Foo'Size use Number; length
                                  -- clauses work.

    Flag ("Positive_Is_Large");   -- If Positive'Size = 32, or is "large" then
                                  -- some of the code that is in the library
                                  -- just-in-case Positive'Size = 16, or is
                                  -- "small" may generate compiler warnings.
                                  -- In particular we do things like:
                                  --    if size > Positive'Last then
                                  --        array:=new string(1..Positive'Last);
                                  -- and so on.  This can generate compiler
                                  -- warnings about "This will raise exception
                                  -- Storage_Error or Constraint_Error" or some
                                  -- such.  If Positive_Is_Large, meaning that
                                  -- Positive'Last >= S_Long'Last, then we
                                  -- don't include this code in the library.

    Flag ("Record_Rep_Clauses");  -- Are we using the Record Representation
                                  -- Clauses?  (LRM 13.4)  This is true if
                                  -- we are using them.  They might not be
                                  -- implemented in which case we will be
                                  -- relying upon the FOR X'SIZE USE NNN;
                                  -- caluses and the kindness of the compiler.

------------------------------------------------------------------------------
-- Machine/Ada-RunTime-Implementation Issues
------------------------------------------------------------------------------

----Bit0_Sign_Bit - TRUE if (as on the R1000) bit 0 of an array of booleans is
--  the high order (sign) bit of the correspondingly sized numeric type.
--  FALSE if (as on many machines) bit 0 of an array of booleans is the low
--  order (even/odd) bit of the correspondingly sized numeric type.
--
--  This flag must be correct or none of the bit flags sent/received in the X
--  protocol messages will be correct.  This is a pervasive problem.
--  It is unfortunately easy to write non-portable code if care is not taken
--  iterations.  The Bit0_Sign_Bit flag exists so that code may be
--  parameterized in order to work with any machine.

    Flag ("Bit0_Sign_Bit");

----Byte0_Sign_Byte - TRUE if (as on the R1000) byte 0 of an array of bytes
--  is the high order (most significant) byte of the correspondingly sized
--  numeric type.  FALSE if (as on some machines) byte 0 of an array of bytes
--  is the low order (least significant) byte of the correspondingly sized
--  numeric type.

    Flag ("Byte0_Sign_Byte");


----Record_Rep_Storage_Unit_8/16/32 - Set one of these to true, or, invent
--  a new parameter name of your own.  Their sole purpose is to chose a
--  particular set of constants within the Xlbmt_Parameters module.  They
--  chose the set of constants that allow us, for this target, to lay out
--  bytes, half-words, and words where we need them to be.
--
--  '8' will be true if System.Storage_Unit = 8.  It may also be true if
--  Storage_Unit is 16 or 32; it depends upon the machine/compiler byte order.
--  '16' will only be true if System.Storage_Unit = 16 and/or the bit offsets
--  required by the target match those given in Xlbmt_Parameters.
--  '32' will only be true if System.Storage_Unit = 32 and/or the bit offsets
--  required by the target match those given in Xlbmt_Parameters.

    Flag ("Record_Rep_Storage_Unit_8");
    Flag ("Record_Rep_Storage_Unit_16");
    Flag ("Record_Rep_Storage_Unit_32");

----Row_Major_Order - TRUE if (as on the R1000) arrays are stored in memory in
--  Row_Major order.  This means that the successive elements of each row of a
--  2-D array are stored in successive locations.  (In a (1..3,1..3) array,
--  element (1,1) is followed by (1,2), (1,3), (2,1), (2,2), ... etc.)
--  FALSE if (as with some compilers) arrays are stored in memory in
--  Column_Major order.  This means that successive elements of each row of a
--  2-D array will not be adjacent in memory.
--
--  The X Protocol assumes Row-Major and this flag provides a way to make
--  allowances if necessary.  Note: Only Row_Major_Order=>True is fully
--  implemented and tested.  Row_Major_Order=>False is implemented but
--  untested.

    Flag ("Row_Major_Order");

----Raw_Is_Unsigned - TRUE if X_Raw_Data is range 0..255 and FALSE if it is
--  range -128..127.  X_Raw_Data *must* be an 8-bit numeric type so it will
--  have to be one or the other.  Use the 0..255 range if you have a choice.
--  The code will be very slightly faster.

    Flag ("Raw_Is_Unsigned");

end Define_Predefineds;

E3 Meta Data

    nblk1=f
    nid=0
    hdr6=1e
        [0x00] rec0=13 rec1=00 rec2=01 rec3=06e
        [0x01] rec0=16 rec1=00 rec2=02 rec3=056
        [0x02] rec0=0e rec1=00 rec2=03 rec3=07a
        [0x03] rec0=11 rec1=00 rec2=04 rec3=080
        [0x04] rec0=13 rec1=00 rec2=05 rec3=078
        [0x05] rec0=11 rec1=00 rec2=06 rec3=060
        [0x06] rec0=10 rec1=00 rec2=07 rec3=012
        [0x07] rec0=11 rec1=00 rec2=08 rec3=052
        [0x08] rec0=13 rec1=00 rec2=09 rec3=006
        [0x09] rec0=0e rec1=00 rec2=0a rec3=048
        [0x0a] rec0=0f rec1=00 rec2=0b rec3=06c
        [0x0b] rec0=12 rec1=00 rec2=0c rec3=06a
        [0x0c] rec0=15 rec1=00 rec2=0d rec3=02e
        [0x0d] rec0=13 rec1=00 rec2=0e rec3=058
        [0x0e] rec0=06 rec1=00 rec2=0f rec3=000
    tail 0x21700ab0c81978e8a9160 0x42a00088462063203