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) %;