Trailing-Edge
-
PDP-10 Archives
-
BB-H138A-BM
-
3a-sources/lx1n.bli
There are 18 other files named lx1n.bli in the archive. Click here to see a list.
!THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
! OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
!
!COPYRIGHT (C) 1972,1973,1974,1977,1978 DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. 01754
!FILENAME: H1LEXA.BLI
!DATE: 1 MAR 73 MGM
%3.2% GLOBAL BIND H1LEV=1; !MODULE VERSION NUMBER
%3.1% GLOBAL ROUTINE BLOCKPURGE(BLK)=
BEGIN LOCAL L1,L2,L3,L4,FLDI;
EXTERNAL XREFERASE;
%5.200.12% LOCAL REALFSH,REALFSJ;
EXTERNAL DUMPMACRO,IDERROR;
!
! THIS ROUTINE PURGES THE SYMBOL TABLE OF ENTRIES MADE
! AT THE CURRENT BLOCKLEVEL, RELEASING SPACE AS IT DOES
! SO. THE FOLLOWING SPECIAL CASES OCCUR:
! (1) MACRO ENTRIES: ALSO DELETE THE MT ENTRY
! (2) FORWARD ENTRIES: DELETE FROM ST, DON'T RELEASE SPACE
! (3) DECLARED REGISTERS: RELEASE THE REGISTERS TOO
! (4) MAPPED SYMBOLS: RELEASE THE INCARNATION ACTUALS
!
FLDI_.REALFS;
%5.200.12% REALFSJ_0; !REALFS STE NOT ENCOUNTERED
INCR I FROM 0 TO 124 DO
BEGIN
L1_.HT[.I];
IF .L1 NEQ 0 THEN
WHILE
%5.200.12% .L1 NEQ 0 AND
.(L2_ST[.L1,0])<BLF> GTR .BLK DO
BEGIN
%5.200.31% IF .XREFLG THEN (IF .L1 EQL .FLDI THEN XREFERASE_1; XEOB(.L1));
L4_.ST[.L1,0]<LINKF>;
IF (L2_.(@L2)<TYPEF>) EQL MACROT THEN
DUMPMACRO(.L1); !DELETE MACRO DEFINITION
IF .L2 EQL REGT THEN
(L3_.ST[.L1,1]; RELREG(GETLITVAL(.L3<ADDRESSF>)<LINKF>,
.L3<NRF>));
IF .L1 EQL .FLDI THEN
IF .ST[.L1,0]<TYPEF> EQL MACROT THEN PUNT(#775) ELSE
BEGIN
HT[.I]_.L4; FUTSYM_0;
%5.200.12% REALFSH_.L4; !REMEMBER WHERE WE PUT HT[.I]
ACCUM_.ST[.L1,2]; (ACCUM+1)_.ST[.L1,3];
IDFIXER(-1,0);
%5.200.12% REALFSJ_.HT[.I]; !SEE IF HT[.I] CHANGED
%5.200.12% FLDI_.REALFS !WE COULD DO THIS RATHER OFTEN
END;
IF .L2 EQL FORWT THEN IDERROR(0,.L1);
% MUST RELEASE LEXEME STREAMS FOR STRUCTURES. %
IF .L2 EQL STRT THEN
(IF .ST[.L1,1]<SIMBITAF> THEN
RELSTRLIST(.ST[.L1,1]<LXTEAF>);
IF .ST[.L1,1]<SIMBITSF> THEN
RELSTRLIST(.ST[.L1,1]<LXTESF>)
);
IF MAPPABLE(.L2) AND (.ST[.L1,1]<STRF> NEQ 0) THEN RELINCA((.ST[.L1,1]<STRF>));
IF NOT(((1^MACROT+1^EXTRNT+1^GLOBALT+1^GROUTINET+1^ROUTINET+
1^GABSOLUTET+1^FUNCT+1^GPLITT)^(-.L2)) OR
%2.27% (.L2 EQL STRT AND NOT .ST[.L1,1]<SIMBITAF>))
THEN (GTUPDATE(0,LSM OR .L1);RELEASESPACE(.L1,2));
L1_.L4;
END;
%5.200.12% IF .REALFSJ NEQ 0
%5.200.12% THEN ( IF .REALFSH NEQ .REALFSJ
%5.200.12% THEN ST[.REALFSJ,0]<LINKF>_.L1
%5.200.12% ELSE HT[.I]_.L1;
%5.200.12% REALFSJ_0) ! RE-INITIALIZE
%5.200.12% ELSE
HT[.I]_.L1;
END;
END;
FORWARD SETUPOFF,FIXUPOFF,PLITSCAN,FIXPLITOFF;
GLOBAL ROUTINE GOFFSET(X)=
! 5.200.33 ...... MOVED FROM CN1 TO BE WITH ITS NEW FRIENDS IN A SHORTER MODULE
BEGIN
LOCAL L;
EXTERNAL EXTFOROFF,BLKFOROFF,SETUPOFF,JNKFOROFF;
IF NOT NAMP(.X)
THEN RETURN (
WARNEM(.NSYM,ERSMBSVNAME);ZERO
);
IF (.ST[.X<STEF>,0]<TYPEF> EQL LOCALT)
THEN RETURN (
IF .BLKFOROFF NEQ .TRBLEVEL THEN SETUPOFF();
L_GETSP