Google
 

Trailing-Edge - PDP-10 Archives - bb-h138f-bm - 7-sources/diucrx.req
There are 4 other files named diucrx.req in the archive. Click here to see a list.
!	COPYRIGHT (C) DIGITAL EQUIPMENT CORPORATION 1986.
!	ALL RIGHTS RESERVED.
!
!	THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY  BE  USED  AND
!	COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH
!	THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE.   THIS  SOFTWARE  OR
!	ANY  OTHER  COPIES  THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE
!	AVAILABLE TO ANY OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE
!	SOFTWARE IS HEREBY TRANSFERRED.
!
!	THE INFORMATION IN THIS SOFTWARE IS  SUBJECT  TO  CHANGE  WITHOUT
!	NOTICE  AND  SHOULD  NOT  BE CONSTRUED AS A COMMITMENT BY DIGITAL
!	EQUIPMENT CORPORATION.
!
!	DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY  OF
!	ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL.

! *********************************************************************************************************************************
!  Created  2-NOV-1984 08:58:50  by  VAX-11 SDL V2.1       Source: 23-MAR-1984 16:53:17 DRACULA:[RICHARDSON.CRX]CRX.SDL;26         
! *********************************************************************************************************************************
LIBRARY 'BLI:XPORT';
 
!*** MODULE crx$record_description_tree ***
literal crx$k_major_version = 1;
literal crx$k_minor_version = 3;
! 
! 
!  Structure Declarations for the CDD Record Description Extractor
! 
!  Version 1.3
! 
!  Chip Nylander
!  13-May-1983
! 
!  Modifications:
! 
! 	Version	   Date	     Who	Description
! 	-------	-----------  ---	-----------
! 
! 	  1.1	31-May-1983  CGN	Added crm$w_ref_length and
! 					crm$a_reference to support the new
! 					CDD$K_REC_REFERENCE attribute.
! 
! 					Added crx$b_description_cnt and
! 					crx$a_description to support root
! 					descriptions.
! 
! 					Added crm$v_string_type and
! 					crm$v_compute_type.
! 
! 					Added crm$w_max_digits.
! 
! 					Added crm$v_debug_flag to help
! 					interpret debugging dumps.
! 
! 					Added crm$v_first_child.
! 
! 					Added cro$l_max_length,
! 					cro$l_max_member_length, cro$l_min_offset,
! 					and cro$l_min_member_offset
! 
! 	  1.2	14-Mar-1984  CGN	Added crm$v_blank_when_zero to support
! 					CDD$K_REC_BLANK_WHEN_ZERO.
! 
! 					Added crm$v_right_justified to support
! 					CDD$K_REC_RIGHT_JUSTIFIED.
! 
! 					Added crm$w_initial_length and
! 					crm$a_initial_value to support
! 					CDD$K_REC_INITIAL_VALUE.
! 
! 					Added crm$v_source_type_trunc,
! 					crm$v_reference_trunc, crm$v_initial_value_trunc,
! 					and crs$v_string_trunc to flag truncated
! 					strings.
! 
! 					Added crm$v_facility_use_1 to 6 to
! 					allow client facilities to mark nodes
! 					for their own purposes.
! 
! 					Added cro$w_tag_val_cnt, cro$a_tag_values,
! 					and the new crx_literal_list node to support
! 					support CDD$K_TAG_VALUES.  (crx_literal_list
! 					nodes support literal value sets in
! 					general, but tag values are the only
! 					use currently).
! 
! 					Add crs$v_binary_string to distinguish
! 					binary strings from text strings.
! 
! 					Delete all references to CDD$K_REC_LITERALS,
! 					since the attribute has been removed
! 					from the protocol documentation and it
! 					looks like nobody will ever support or
! 					use it.
! 					
! 	  1.3	23-Mar-1984  CGN	Added cro$l_total_length.
! 					
!	4	4-June-85	CLR	Use facility-use-bit 3 to flag
!					fullword-allocated initial values.
!
! 
!  The general form of the record description returned by the record.
!  extractor is that of an acyclic graph.  The root node is crx_record,
!  which points to the crx_member node for the first member of the record.
!  All record members at the same logical level are linked as siblings,
!  and crx_member points to the crx_member node for it's first subfield,
!  if any.
! 
!  The crx_dimension, crx_overlay, and crx_stringlist nodes are
!  optional subgraphs of crx_members which have those attributes.
! 
!  All facility-specific information is isolated in optional facility-specific
!  nodes.  These nodes are pointed to by the nodes for which facility-specific
!  attributes are present.  Facility-specific information for only one facility
!  at a time may be present in the record description tree.  
!  As new facilities are supported by the record extractor,  new 
!  facility-specific nodes will be defined.  Likewise, as additional
!  facility-specific information is defined for supported facilities,
!  the facility-specific nodes will be enhanced.
! 
!  All non-facility-specific information contained by a cdd record description
!  is returned.  Not all of it is necessarily interesting.  The protocol and
!  core_level field, for example, will always be the same (otherwise the record
!  description would not have been extracted);  they are returned for
!  completeness.
! 
!  Each field is either "required" or "optional", and either "core" or
!  "non-core".
! 
!  A "required" field is one which will always contain a value in any
!  occurence of it's containing node type; a language processor
!  does not have to consider the case of that attribute being
!  undefined or absent.  An "optional" field is one which might not contain
!  a value;  a language processor must consider the case of that attribute
!  being undefined or absent.  By convention, a numeric field that contains
!  no value is zero; a character field that contains no value is blank.
!  For those fields (e.g. lower_bound) for which zero is a valid value, a flag
!  is defined to differentiate a zero value from a non-value.
! 
!  A "core" field is one whose value must not be ignored by a language
!  processor if it contains a value.  A non-core field is one which may be
!  ignored if a language processor does not wish to process it.
! 
!  A field which is neither "core" nor "non-core" is not a cdd attribute;
!  such a field is provided to aid in processing of the "core" and "non-core"
!  fields.
! 
!  For more information, see "VAX-11 Common Data Dictionary Protocol for
!  Storing Record Descriptions".
! 
! 
literal crx$k_record = 1;
literal crx$k_member = 2;
literal crx$k_overlay = 3;
literal crx$K_DIMENSION = 4;
literal crx$k_stringlist = 5;
literal crx$k_pli_specific = 6;
literal crx$k_literal_list = 7;
literal crx$s_max_string = 255;         !  maximum length string allowed
! 
!  Note that, for all following data structures, the first longword
!  is a backpointer, the second longword, if non-zero, is the address
!  of a subgraph, and the first byte of the third longword is a
!  self-identification byte.
! 
 
literal crx$s_protocol = 10;
$FIELD crx_record$FIELDSET =
SET
 !  cdd record node
crx$l_mbz = [$ADDRESS],                 !  must be zero
crx$a_root = [$ADDRESS],                !  root crx_member node
!    (optional core)
crx$b_id = [$BYTE],                     !  always CRX$K_RECORD
!    (required)
crx$b_core_level = [$BYTE],             !  protocol level - currently
!    should be 4
!    (required core)
crx$t_protocol = [$STRING (10)],        !  protocol - should be
!    "CDD$RECORD"
!    (required core)
crx$w_facility_code = [$SHORT_INTEGER], !  facility code for facility-
!    specific info, if any
!    (optional)
crx$b_description_cnt = [$BYTE],        !  number of strings in
!    description stringlist
!    (required)
!crx$t_reserved = [$STRING (1)],         !  [preserve longword alignment]
crx$a_facility = [$ADDRESS],            !  facility-specific node
!    for record
!    (optional non-core)
crx$l_format = [$LONG_INTEGER],         !  format - currently should be
!    CDD$K_REC_FIXED or
!    CDD$K_REC_VARIABLE
!    (required core)
crx$a_description = [$ADDRESS]          !  address of crx_stringlist
!    which documents the record
!    (optional non-core)
TES;
 
LITERAL diu$s_crx_record = $FIELD_SET_SIZE;
LITERAL crx$s_crx_record = $FIELD_SET_SIZE * %upval;
MACRO crx_record = BLOCK [diu$s_crx_record] FIELD (crx_record$FIELDSET) %;
 
LITERAL crm$s_name = 31;
$FIELD crx_member$FIELDSET =
SET
 !  subaggregate or field node
crm$a_previous = [$ADDRESS],            !  backpointer to previous node
!    (required)
crm$a_next = [$ADDRESS],                !  next member node this level
!    (optional core)
crm$b_id = [$BYTE],                     !  always CRX$K_MEMBER
!    (required)
crm$b_description_cnt = [$BYTE],        !  number of strings in
!    description stringlist
!    (required)
crm$w_source_length = [$SHORT_INTEGER], !  source_type length
!    (required)
crm$w_ref_length = [$SHORT_INTEGER],    !  reference length
!    (required)
crm$w_children_cnt = [$SHORT_INTEGER],  !  number of children or overlays
!    (required)
crm$b_tag_variable_cnt = [$BYTE],       !  number of strings in
!     tag_variable stringlist
!    (required)
crm$b_dimensions_cnt = [$BYTE],         !  number of dimensions
!    (required)
crm$b_name_length = [$BYTE],            !  member name length
!    (required)
crm$t_name = [$STRING (31)],            !  member name
!    (optional core)
!crm$t_reserved = [$STRING (2)],         !  [preserve longword alignment]
crm$a_description = [$ADDRESS],         !  address of crx_stringlist
!    which documents the member
!    (optional non-core)
crm$a_source_type = [$POINTER],         !  address of a string
!    which is the pathname of a
!    type-definition of which
!    this field is an occurence
!    (optional non-core)
crm$A_REFERENCE = [$POINTER],           !  address of a string
!    which is the pathname of a
!    record to which this field
!    points
!    (optional non-core)
crm$a_children = [$ADDRESS],            !  root of children list
!    if datatype <> OVERLAY then
!    this will point to a crx_member
!    node;  if datatype = OVERLAY
!    then this will point to a
!    crx_overlay node.
crm$a_tag_variable = [$ADDRESS],        !  crx_stringlist which is the
!    fully qualified name of
!    an overlay's tag variable.
!    valid only if datatype = OVERLAY
!    (optional non-core)
crm$L_LENGTH = [$LONG_INTEGER],         !  bit-length of field or, for
!    arrays, each element
!    (optional core)
crm$l_offset = [$LONG_INTEGER],         !  bit-offset from parent field
!    (optional core)
crm$l_member_length = [$LONG_INTEGER],  !  bit-length of entire field;
!    same as length for scalars,
!    larger for arrays.
!    (required)
crm$l_member_offset = [$LONG_INTEGER],  !  bit-offset from beginning of
!    record
!    (required)
crm$l_string_units = [$LONG_INTEGER],   !  for bit and character strings,
!    the number of units (bits or bytes)
!    (required)
crm$a_dimensions = [$ADDRESS],          !  root of crx_dimension list
!    (optional core)
crm$l_total_cells = [$LONG_INTEGER],    !  for fields with dimensions,
!    the total number of cells
!    in the array
!    (required)
crm$a_facility = [$ADDRESS],            !  facility-specific node
!    for member
!    (optional non-core)
crm$w_datatype = [$SHORT_INTEGER],      !  datatype
!    (required core)
crm$w_digits = [$SHORT_INTEGER],        !  number of digits
!    (optional non-core)
crm$w_max_digits = [$SHORT_INTEGER],    !  maximum legal digits
!    (required)
crm$w_scale = [$SHORT_INTEGER],         !  scale factor
!    (optional core)
crm$b_base = [$BYTE],                   !  mode for digits and scale
!    (optional core)
crm$v_column_major = [$BITS (1)],       !  for fields with dimensions,
!    1 if stride is column-major
!    (required)
crm$v_string_type = [$BITS (1)],        !  1 if datatype is string type
!    (required)
crm$v_compute_type = [$BITS (1)],       !  1 if datatype is computational
!    (required)
crm$v_debug_flag = [$BITS (1)],         !  debugging aid
!    (required)
crm$v_first_child = [$BITS (1)],        !  set if this is first child
!  in a children list
!    (required)
crm$v_blank_when_zero = [$BITS (1)],    !  1 if field blank when zero
!    (optional non-core)
crm$v_right_justified = [$BITS (1)],    !  1 if field right justified
!    (optional non-core)
crm$v_source_type_trunc = [$BITS (1)],  !  1 if source_type string was truncated
crm$v_reference_trunc = [$BITS (1)],    !  1 if reference string truncated
crm$v_initial_value_trunc = [$BITS (1)], !  1 if initial_value string truncated
! Use of facility-specific bits in DIU:
! Bit 1 is used during record tree creation, and its use for other
!	purposes should be avoided, at least until record tree creation
!	is complete.
! Bit 2 is used to mark a field in a tree as having been "used" in a transform,
!	for purposes of doing MOVE OTHERS MATCHING.  If the field has been
!	involved in a transform, the bit is set.
! Bit 3 is used to indicate that the initial value in this member block
!       is allocated in fullwords rather than in ASCII characters.
! Bit 4 is not currently used.
! Bits 5 and 6 are combined to form a 2-bit field indicating what datatype
!	mapping applies. DIL_SRC indicates that the datatypes are DIL ones.
crm$v_facility_use_1 = [$BITS (1)],     !  for callers, not used by CRX
crm$v_facility_use_2 = [$BITS (1)],     !  for callers, not used by CRX
crm$v_facility_use_3 = [$BITS (1)],     !  for callers, not used by CRX
crm$v_facility_use_4 = [$BITS (1)],     !  for callers, not used by CRX
crm$v_facility_use_5 = [$BITS (2)],     !  for callers, not used by CRX
!crm$v_facility_use_6 = [$BITS (1)],     !  for callers, not used by CRX
!crm$b_reserved_byte = [$BYTE],          !  [preserve longword alignment]
crm$a_initial_value = [$POINTER],       !  address of a binary string
!    which is the initial value
!    for this field
!    (optional non-core)
crm$w_initial_length = [$SHORT_INTEGER] !  length of initial_value string
!    in bytes
!    (required)
TES;
 
LITERAL diu$s_crx_member = $FIELD_SET_SIZE;
LITERAL crm$s_crx_member = $FIELD_SET_SIZE * %upval;
MACRO crx_member = BLOCK [diu$s_crx_member] FIELD (crx_member$FIELDSET) %;
 
 
$FIELD crx_overlay$FIELDSET =
SET
 !  info for one overlay
cro$a_previous = [$ADDRESS],            !  backpointer to previous node
!    (required)
cro$a_next = [$ADDRESS],                !  next overlay node this level
!    (optional core)
cro$b_id = [$BYTE],                     !  always CRX$K_OVERLAY
!    (required)
!cro$t_reserved = [$STRING (1)],         !  [preserve longword alignment]
cro$w_fields_cnt = [$SHORT_INTEGER],    !  number of immediate children
!    in fields list
!    (required)
cro$a_fields = [$ADDRESS],              !  list of overlay crx_members
!    (required core)
cro$l_max_length = [$LONG_INTEGER],     !  length of longest immediate
!  member
!    (required)
cro$l_min_offset = [$LONG_INTEGER],     !  smallest offset of immediate
!  members
!    (required)
cro$l_max_member_length = [$LONG_INTEGER], !  member_length of longest
!  immediate member
!    (required)
cro$l_min_member_offset = [$LONG_INTEGER], !  smallest member_offset of
!  immediate members
!    (required)
cro$a_tag_values = [$ADDRESS],          !  root of crx_literal_list
!    which contains the tag
!    values and ranges for
!    this overlay
!    (optional non-core)
cro$w_tag_values_cnt = [$SHORT_INTEGER], !  number of literals and ranges
!    in tag_values list
!    (required)
cro$l_total_length = [$LONG_INTEGER]    !  length of concatenated members
!    (required)
TES;
 
LITERAL diu$s_crx_overlay = $FIELD_SET_SIZE;
LITERAL cro$s_crx_overlay = $FIELD_SET_SIZE * %upval;
MACRO crx_overlay = BLOCK [diu$s_crx_overlay] FIELD (crx_overlay$FIELDSET) %;
 
 
$FIELD crx_literal_list$FIELDSET =
SET
 !  member of a literal value
!    set list
crl$a_previous = [$ADDRESS],            !  backpointer to previous node
!    (required)
crl$a_next = [$ADDRESS],                !  next crx_literal_list node
!    (optional core)
crl$b_id = [$BYTE],                     !  always CRX$K_LITERAL_LIST
!    (required)
!crl$b_reserved = [$BYTE],               !  [preserve alignment]
crl$w_literals_cnt = [$SHORT_INTEGER],  !  number of literals in
!    literals stringlist
!    (required)
crl$a_literals = [$ADDRESS]             !  address of a stringlist of
!    binary strings.
!    if literals_cnt is 1, then
!    this is a singular literal
!    value.  if literals_cnt
!    is 2, then this is a range.
!    (I realize that using a
!    stringlist here may be
!    slightly inconvenient, but
!    that's the structure in the
!    CDD record protocol, and it
!    seems prudent to follow a
!    consistent mapping.  This
!    also means that any utility
!    procedures that work for
!    the other stringlists also
!    work for these.)
TES;
 
LITERAL diu$s_crx_literal_list = $FIELD_SET_SIZE;
LITERAL crl$s_crx_literal_list = $FIELD_SET_SIZE * %upval;
MACRO crx_literal_list = BLOCK [diu$s_crx_literal_list] FIELD (crx_literal_list$FIELDSET) %;
 
 
$FIELD crx_dimension$FIELDSET =
SET
 !  info for one dimension
crd$a_previous = [$ADDRESS],            !  backpointer to previous node
!    (required)
crd$a_next = [$ADDRESS],                !  next crx_dimension node
!    (optional core)
crd$b_id = [$BYTE],                     !  always CRX$K_DIMENSION
!    (required)
crd$b_depend_item_cnt = [$BYTE],        !  number of string in
!    depend_item stringlist
!    (required)
!crd$t_reserved = [$STRING (2)],         !  [preserve longword alignment]
crd$l_lower_bound = [$LONG_INTEGER],    !  lower bound of dimension
!    (optional core)
crd$l_upper_bound = [$LONG_INTEGER],    !  upper bound of dimension
!    (optional core)
crd$l_stride = [$LONG_INTEGER],         !  number of bits covered in
!    a single stride by this
!    dimension
!    (optional core)
crd$a_depend_item = [$ADDRESS],         !  crx_stringlist which is the
!    fully qualified name of
!    the field upon which the
!    actual number of subscript
!    value is conditioned
!    (optional non-core)
crd$l_min_occurs = [$LONG_INTEGER],     !  minumum number of occurences
!    this dimension may have
!    (optional non-core)
crd$v_lower_bound_fl = [$BITS (1)],     !  existence flag for lower_bound
!    (required)
crd$v_upper_bound_fl = [$BITS (1)],     !  existence flag for upper_bound
!    (required)
crd$v_stride_fl = [$BITS (1)],          !  existence flag for stride
!    (required)
crd$v_min_occurs_fl = [$BITS (1)]      !  existence flag for min_occurs
!    (required)
TES;
 
LITERAL diu$s_crx_dimension = $FIELD_SET_SIZE;
LITERAL crd$s_crx_dimension = $FIELD_SET_SIZE * %upval;
MACRO crx_dimension = BLOCK [diu$s_crx_dimension] FIELD (crx_dimension$FIELDSET) %;
 
 
$FIELD crx_stringlist$FIELDSET =
SET
 !  member of a stringlist
crs$a_previous = [$ADDRESS],            !  backpointer to previous node
!    (required)
crs$a_next = [$ADDRESS],                !  next crx_stringlist node
!    (optional core)
crs$b_id = [$BYTE],                     !  always CRX$K_STRINGLIST
!    (required)
!    (required)
crs$v_string_trunc = [$BITS (1)],       !  1 if string was truncated
crs$v_binary_string = [$BITS (1)],      !  1 if bit string
!crs$v_reserved = [$BITS (6)],           !  [preserve longword alignment]
$align (BYTE)
crs$w_string_length = [$SHORT_INTEGER], !  length of string, in bytes
crs$a_string = [$POINTER]               !  address of string
!    (required core)
TES;
 
LITERAL diu$s_crx_stringlist = $FIELD_SET_SIZE;
LITERAL crs$s_crx_stringlist = $FIELD_SET_SIZE * %upval;
MACRO crx_stringlist = BLOCK [diu$s_crx_stringlist] FIELD (crx_stringlist$FIELDSET) %;
 
literal crx$k_pli_facility = 135;
 
$FIELD crx_pli_specific$FIELDSET =
SET
 !  pli-specific information
!    for one record or member
crx_pli$a_previous = [$ADDRESS],        !  backpointer to previous node
!    (required)
crx_pli$l_mbz = [$ADDRESS],             !  must be zero
crx_pli$b_id = [$BYTE],                 !  always CRX$K_PLI_SPECIFIC
!    (required)
crx_pli$b_name_length = [$BYTE],        !  length of name string
!    (required)
crx_pli$w_picture_length = [$SHORT_INTEGER], !  length of picture string
!    (required)
crx_pli$a_picture = [$POINTER],         !  address of string
!    which is the pli-specific
!    picture
!    (optional non-core)
crx_pli$a_name = [$POINTER]             !  address of string
!    which is the pli-specific
!    name
!    (optional non-core)
TES;
 
LITERAL diu$s_crx_pli_specific = $FIELD_SET_SIZE;
LITERAL crx_pli$s_crx_pli_specific = $FIELD_SET_SIZE * %upval;
MACRO crx_pli_specific = BLOCK [diu$s_crx_pli_specific] FIELD (crx_pli_specific$FIELDSET) %;