Trailing-Edge
-
PDP-10 Archives
-
BB-R595B-SM_11-9-85
-
mcb/utilities/lbrcom.req
There is 1 other file named lbrcom.req in the archive. Click here to see a list.
! LBRCOM.BLI - LBR20 COMMON DEFINITIONS
!
! COPYRIGHT (c) 1980, 1981, 1982
! DIGITAL EQUIPMENT CORPORATION
! Maynard, Massachusetts
!
! 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 which is not supplied by
! DIGITAL.
!
!++
! FACILITY: LBR20 - Librarian Utility
!
! ABSTRACT:
!
!
! THIS FILE CONTAINS DEFINITIONS COMMON TO ALL THE MODULES OF THE
! Librarian
!
!
! ENVIRONMENT: ANY
!
! AUTHOR: ALAN D. PECKHAM, CREATION DATE: 2-MAY-80
!
! MODIFIED BY:
!
! Alan D. Peckham, : VERSION 01
! 01 - Revise file handling interfaces.
! 02 - Data structure reformation (change from BLOCK_16 to BLOCK structure).
! Add COMPRESS function
! 03 - Add FAST switch.
! 04 - Add support for RG (replace globals) switch.
!--
!
! INCLUDE FILES
!
REQUIRE 'BLI:XPORT';
!
! MACROS
!
MACRO
XPO$PTR (addr, idx) =
CH$PTR (addr, idx, $xpo$bits_byte) %;
MACRO
POINTR (adr, mask) =
adr <%NBITSU (mask AND - mask) - 1,
%NBITSU (mask) - %NBITSU (mask AND - mask) + 1> %,
FLD (val, mask) =
((val)^(%NBITSU (mask AND - mask) - 1)) %;
!
! Convenient character string macros
!
MACRO
CH$LEN (PTR) = !Get length of ASCIZ string.
CH$DIFF(CH$FIND_CH(200,PTR,0),PTR) %,
CH$SEQUENCE (CHARS, CS) = !Allocate storage for string.
VECTOR[CH$ALLOCATION(CHARS,CS)] %,
CH$ASCIC [] = !A pointer to an ASCIC string.
CH$PTR(UPLIT(%STRING(%CHAR(%CHARCOUNT(%REMAINING)),%REMAINING)),1) %,
CH$ASCII [] = !A pointer to an ASCII string.
CH$PTR(UPLIT(%ASCII %STRING(%REMAINING))) %,
CH$ASCIZ [] = !A pointer to an ASCIZ string.
CH$PTR(UPLIT(%ASCIZ %STRING(%REMAINING))) %;
!
! Bit checking routines
!
MACRO
BIT_SET (VALUE, BIT_TO_TEST) =
(((VALUE) AND (BIT_TO_TEST)) NEQ 0) %,
BIT_CLEAR (VALUE, BIT_TO_TEST) =
(((VALUE) AND (BIT_TO_TEST)) EQL 0) %;
MACRO
RAD50 (TEXT) =
UPLIT( RAD50_CHARS( %EXPLODE(%STRING(TEXT)) ) ) %,
RAD50_WORD (TEXT) =
RAD50_CHARS ( %EXPLODE(%STRING(TEXT))) %,
RAD50_CHARS [CHAR1, CHAR2, CHAR3] =
( RAD50_CHAR(CHAR1) *40+RAD50_CHAR(CHAR2))*40+RAD50_CHAR(CHAR3) %,
RAD50_CHAR (CHAR) =
%IF %NULL(CHAR) %THEN 0 %FI
%IF %IDENTICAL( ' ', CHAR ) %THEN 0 %FI
%IF %IDENTICAL( 'A', CHAR ) %THEN 1 %FI
%IF %IDENTICAL( 'B', CHAR ) %THEN 2 %FI
%IF %IDENTICAL( 'C', CHAR ) %THEN 3 %FI
%IF %IDENTICAL( 'D', CHAR ) %THEN 4 %FI
%IF %IDENTICAL( 'E', CHAR ) %THEN 5 %FI
%IF %IDENTICAL( 'F', CHAR ) %THEN 6 %FI
%IF %IDENTICAL( 'G', CHAR ) %THEN 7 %FI
%IF %IDENTICAL( 'H', CHAR ) %THEN 8 %FI
%IF %IDENTICAL( 'I', CHAR ) %THEN 9 %FI
%IF %IDENTICAL( 'J', CHAR ) %THEN 10 %FI
%IF %IDENTICAL( 'K', CHAR ) %THEN 11 %FI
%IF %IDENTICAL( 'L', CHAR ) %THEN 12 %FI
%IF %IDENTICAL( 'M', CHAR ) %THEN 13 %FI
%IF %IDENTICAL( 'N', CHAR ) %THEN 14 %FI
%IF %IDENTICAL( 'O', CHAR ) %THEN 15 %FI
%IF %IDENTICAL( 'P', CHAR ) %THEN 16 %FI
%IF %IDENTICAL( 'Q', CHAR ) %THEN 17 %FI
%IF %IDENTICAL( 'R', CHAR ) %THEN 18 %FI
%IF %IDENTICAL( 'S', CHAR ) %THEN 19 %FI
%IF %IDENTICAL( 'T', CHAR ) %THEN 20 %FI
%IF %IDENTICAL( 'U', CHAR ) %THEN 21 %FI
%IF %IDENTICAL( 'V', CHAR ) %THEN 22 %FI
%IF %IDENTICAL( 'W', CHAR ) %THEN 23 %FI
%IF %IDENTICAL( 'X', CHAR ) %THEN 24 %FI
%IF %IDENTICAL( 'Y', CHAR ) %THEN 25 %FI
%IF %IDENTICAL( 'Z', CHAR ) %THEN 26 %FI
%IF %IDENTICAL( '$', CHAR ) %THEN 27 %FI
%IF %IDENTICAL( '.', CHAR ) %THEN 28 %FI
%IF %IDENTICAL( '_', CHAR ) %THEN 28 %FI
%IF %IDENTICAL( '0', CHAR ) %THEN 30 %FI
%IF %IDENTICAL( '1', CHAR ) %THEN 31 %FI
%IF %IDENTICAL( '2', CHAR ) %THEN 32 %FI
%IF %IDENTICAL( '3', CHAR ) %THEN 33 %FI
%IF %IDENTICAL( '4', CHAR ) %THEN 34 %FI
%IF %IDENTICAL( '5', CHAR ) %THEN 35 %FI
%IF %IDENTICAL( '6', CHAR ) %THEN 36 %FI
%IF %IDENTICAL( '7', CHAR ) %THEN 37 %FI
%IF %IDENTICAL( '8', CHAR ) %THEN 38 %FI
%IF %IDENTICAL( '9', CHAR ) %THEN 39 %FI %;
!
! I/O definitions
!
$LITERAL
F_READ = 0,
F_WRITE = $DISTINCT,
F_APPEND = $DISTINCT,
F_MODIFY = $DISTINCT,
F_UPDATE = $DISTINCT;
$LITERAL
F_ASCII = 0,
F_BINARY = $DISTINCT;
MACRO
PUTLN (SKIP, EDIT) [] =
BEGIN
EXTERNAL ROUTINE PUTLIN : NOVALUE;
%IF %LENGTH GTR 2
%THEN
LOCAL PRM_LIST : VECTOR[%LENGTH-2];
MACRO PUTASG[PARAMETER] =
PRM_LIST[%COUNT]=PARAMETER %QUOTE %;
PUTASG( %REMAINING );
PUTLIN( SKIP, EDIT, PRM_LIST )
%ELSE
PUTLIN( SKIP, EDIT, 0 )
%FI
END %,
TYPLN (SKIP, EDIT) [] =
BEGIN
EXTERNAL ROUTINE TYPLIN : NOVALUE;
%IF %LENGTH GTR 2
%THEN
LOCAL PRM_LIST : VECTOR[%LENGTH-2];
MACRO TYPASG[PARAMETER] =
PRM_LIST[%COUNT]=PARAMETER %QUOTE %;
TYPASG( %REMAINING );
TYPLIN( SKIP, EDIT, PRM_LIST )
%ELSE
TYPLIN( SKIP, EDIT, 0 )
%FI
END %;
MACRO
FATAL =
'*FATAL* ' %,
WARNING =
'*WARNING* ' %;
!
! EQUATED SYMBOLS
!
LITERAL
TRUE = 1 eql 1, !Truisms.
FALSE = 1 eql 0,
DEBUG = FALSE, !No debugging available
LBR_SUPPORT = %C'X', !Support code.
LBR_VERSION = 1, !Version number.
LBR_UPDATE = 0, !Update release number.
LBR_EDIT = 6; !Edit number.
MACRO
LST_FILE = %STRING ('Listing of') %,
LST_TITLE = %STRING ('LBR20 - Librarian Utility') %,
PROMPT = %STRING ('LBR20') %;
LITERAL
LBR_MAX_EXTRACTS = 8, !Maximum number of extracted modules.
LBR_MAX_GLOBAL_DELETES = 15, !Maximum number of global symbol deletes.
LBR_MAX_MODULE_DELETES = 15, !Maximum number of module deletes.
LBR_MAX_OBJ = 10, !Maximum number of input files.
LBR_MAX_FILES = LBR_MAX_OBJ + 5; !Maximum number of open files.
$LITERAL
!
! General switches
!
M_VERSION = $DISTINCT, !Display version.
M_HELP = $DISTINCT, !Display HLP file.
M_EXIT = $DISTINCT, !Exit switch specified.
M_WIDE = $DISTINCT, !Use 132 column listing format.
M_FAST = $DISTINCT, !Do not rewrite EPT or MNT
!until all operations finished.
M_LIST = $DISTINCT, !List library
M_LIST_ENTRIES = $DISTINCT, !List EPT table
M_LIST_HEADERS = $DISTINCT, !List module header
M_CREATE = $DISTINCT, !Creating new library
M_COMPRESS = $DISTINCT, !Compress library
M_NOEPT = $DISTINCT, !Do not insert entry points
M_REPLACE = $DISTINCT, !Replace modules
M_RG = $DISTINCT, !Replace globals
M_SS = $DISTINCT, !Selective search
M_MAX = M_SS,
!
! Number of bits required
!
M_MAX_BITS = M_MAX + 1; !Maximum number of bits needed.
MACRO
F_NOEPT = 0, 0, 1, 0 %,
F_REPLACE = 0, 1, 1, 0 %,
F_RG = 0, 2, 1, 0 %,
F_SS = 0, 3, 1, 0 %;
LITERAL
F_MAX = 1; !Allocation for file flags.
!
! Field and structure definitions
!
FIELD
LIB_FIELDS =
SET
LIB_TYPE = [0, 18, 8, 0],
LIB_IDENTIFICATION = [0, 24, 8, 0],
LIB_VERSION_1 = [0, 0, 16, 0],
LIB_VERSION_2 = [1, 18, 16, 0],
LIB_YEAR = [1, 0, 16, 0],
LIB_MONTH = [2, 18, 16, 0],
LIB_DAY = [2, 0, 16, 0],
LIB_HOUR = [3, 18, 16, 0],
LIB_MINUTE = [3, 0, 16, 0],
LIB_SECOND = [4, 18, 16, 0],
LIB_EPT_SIZE = [4, 0, 8, 0],
LIB_EPT_BLOCK = [5, 18, 16, 0],
LIB_EPT_ALLOCATED = [5, 0, 16, 0],
LIB_EPT_AVAILABLE = [6, 18, 16, 0],
LIB_MNT_SIZE = [6, 0, 8, 0],
LIB_MNT_BLOCK = [7, 18, 16, 0],
LIB_MNT_ALLOCATED = [7, 0, 16, 0],
LIB_MNT_AVAILABLE = [8, 18, 16, 0],
LIB_DELETED_1 = [8, 0, 16, 0], !(in bytes)
LIB_DELETED_2 = [9, 18, 16, 0],
LIB_CONTIGUOUS_1 = [9, 0, 16, 0], !(in bytes)
LIB_CONTIGUOUS_2 = [10, 18, 16, 0],
LIB_INSERT_BLOCK = [10, 0, 16, 0],
LIB_INSERT_OFFSET = [11, 18, 16, 0]
TES;
LITERAL
LIB_OBJECT = 0, !LIB_TYPE
LIB_MACRO = 1,
LIB_ID_2 = 2, !LIB_IDENTIFICATION
LIB_SIZE = 24*2, !in bytes
LIB_LENGTH = 12;
FIELD
EPT_FIELDS =
SET
EPT_NAME_1 = [0, 18, 16, 0],
EPT_NAME_2 = [0, 0, 16, 0],
EPT_BLOCK = [1, 18, 16, 0],
EPT_OFFSET = [1, 0, 16, 0]
TES;
LITERAL
EPT_SIZE = 4*2, !in bytes
EPT_LENGTH = 2;
FIELD
MNT_FIELDS =
SET
MNT_NAME_1 = [0, 18, 16, 0],
MNT_NAME_2 = [0, 0, 16, 0],
MNT_BLOCK = [1, 18, 16, 0],
MNT_OFFSET = [1, 0, 16, 0]
TES;
LITERAL
MNT_SIZE = 4*2, !in bytes
MNT_LENGTH = 2;
FIELD
HDR_FIELDS =
SET
HDR_STATUS = [0, 18, 8, 0],
HDR_DELETED = [$SUB_FIELD (HDR_STATUS, 0, 0, 1, 0)],
HDR_ATTRIBUTES = [0, 26, 8, 0],
HDR_SS = [$SUB_FIELD (HDR_ATTRIBUTES, 0, 0, 1, 0)],
HDR_SIZE_1 = [0, 0, 16, 0], !(in bytes)
HDR_SIZE_2 = [1, 18, 16, 0],
HDR_YEAR = [1, 0, 16, 0],
HDR_MONTH = [2, 18, 16, 0],
HDR_DAY = [2, 0, 16, 0],
HDR_IDENT_1 = [3, 18, 16, 0],
HDR_IDENT_2 = [3, 0, 16, 0]
TES;
LITERAL
HDR_SIZE = 8*2, !in bytes
HDR_LENGTH = 4;
! LBRCOM.BLI - LAST LINE