Trailing-Edge
-
PDP-10 Archives
-
BB-D480F-BB_1985_short
-
global.bli
There are 12 other files named global.bli in the archive. Click here to see a list.
!COPYRIGHT (C) DIGITAL EQUIPMENT CORPORATION 1973, 1985
!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 WHICH IS NOT SUPPLIED BY DIGITAL.
! Author: */TFV/CDM/SRM/AHM/PLB/TJK/RVM/MEM/AlB
MODULE GLOBA(RESERVE(0,1,2,3),SREG=#17,FREG=#16,VREG=#15,DREGS=4,STACK=GLOBAL(STACK,2200),GLOROUTINES)=
BEGIN
GLOBAL BIND GLOBAV = #10^24 + 0^18 + #2507; ! Version Date: 20-Dec-84
%(
***** Begin Revision History *****
53 ----- ----- ADD IMPLDO FOR I/O LIST OPTIMIZATIONS
54 ----- ----- CORRECT SIZE OF "RELBLOCK" TO 20 RATHER THAN 18
55 ----- ----- ADD LPRDCCT
56 ----- ----- ADD RDCLNK
57 ----- ----- DELETE M1 AND M3
ADD LOWLIM AND CELMNT
58 ----- ----- CHANGE IMPLDO TO IOPTFLG
59 ----- ----- ADD UNIQVAL FOR OPTIMIZER
60 ----- ----- GUESS
61 ----- ----- REMOVE FGP,ETC FOR NEW GRAPH SRUCTURE
62 ----- ----- CLEANUP P2 GLOBALS AND CHANGE POOLSIZ
63 ----- ----- PERFORM DABS IN LINE
64 ----- ----- DEFINE THE REL FILE BUFFERS:
MAINRLBF,SYMRLBF,LOCRLBF
DELETE THE DEFINTIONS OF:
RELBLOCK,RELDATA,RELOCPTR
65 ----- ----- DELETE A SERIES OF ENTRIES NO LONGER USED IN FORTB
66 ----- ----- GENERATE CMPLX IN LINE
67 ----- ----- REMOVE PROEPITYP
68 ----- ----- INCREASE THE CHANNEL TABLE SIZE TO INCLUDE "INCLUDE"
ADD THE GLOBAL NXXFIL WHICH HOLDS THE
ADDRESS OF NXTFIL IN COMMAN SO THAT IT
CAN BE CALLED BY PHAZ1 TO ALLOW THE
COMPILE "+" FILE CONCATINATION COMMAND TO
WORK
69 ----- ----- ADD GLOBAL DEBGSW TO HOLD DEBUG SWITCH SETTING
REMOVE NXXFIL
MOVE SAVREG FROM STA2 TO HERE SO THAT ITS DEFINED
FOR PHASE1
70 ----- ----- ADD GLOBAL BGSTBF - TO HOLD CORE REQUIREMENTS FOR
THE LARGEST INPUT FILE. CALCULATED IN COMMAN
71 ----- ----- ADD THE GLOBAL "ENDSCAA" - FOR ADDR OF
END OF SCALARS/ARRAYS
72 ----- ----- CHANGE THE NAME OF DOINDEX TO CURDOINDEX SO
THAT ALL REFERENCES GET CAUGHT
73 ----- ----- FIX PROBLEM OF DEFINITION OF VARIBLE DIMENSION
ARRAYS BEFORE THEIR DEFINITION IN AN ENTRY
BY DELAYING THE CHECK FOR THOSE DIMENSION
VARIABLES THAT FAIL THE TEST
SAVED IN STACK POINTED TO BY DIMSTK
74 351 MAKE NEW GLOBAL ARINGLEFT FOR FORTB, (DCE)
75 362 18245 INSERT OCTAL AND DOUBLE OCTAL IN EVALU TABLE, (DCE)
***** Begin Version 5 *****
76 410 ----- MAKE NEW GLOBAL DTABPTR FOR FORTB, (SJW)
77 464 QA754 MAKE NEW GLOBALS LMLINO, LMRONO, LMCONO FOR
780 LINEMAP IN FORTG, (SJW)
100 607 22685 MAKE NEW GLOBAL NEDZER TO INDICATE IF
ZERO-ARG-BLOCK IS NEEDED
***** Begin Version 5B *****
101 674 11803 INCREASE THE SIZE OF DOSTAK, AND MOVE FOR
BETTER SPACE UTILIZATION., (DCE)
***** Begin Version 6 *****
102 761 TFV 1-Mar-80 -----
Add new library routines to tables.
Expand EVALU to have /GFLOATING entries.
Add GFMCOK for /GFLOATING microcode is present
103 767 DCE 20-May-80 -----
Add F2 (secondary flag register); remove GFMCOK (now defined in FIRST)
113 1121 EGM 9-Sep-81 --------
Add GETSPATH to hold GETSEG path information.
115 1133 TFV 28-Sep-81 ------
Add MAXFF, CHDSTART, RTIME, and CTIME for /STATISTICS performance
analysis.
***** Begin Version 7 *****
104 1203 DCE 21-Nov-80 -----
For expressions in I/O lists, may have items of type control.
Allow this in argument blocks.
105 1212 TFV 29-Apr-81 ------
Replace literal with HOLLERITH
106 1213 TFV 20-May-81 ------
Add global symbol CHLEN for character count for character data.
Move ACTLDATYPE and CHDLEN out of STA2. Make TYPTABle entries two
words long.
107 1214 CKS 1-Jun-81
Add DOIFSTK for block IFs and all DOs
110 1241 CDM 29-JUL-81
Add intrinsic functions (ANINT, DDIM, DINT, DNINT, DPROD, IDNINT,
NINT) and made several more functions (ACOS, AINT, ANINT, ASIN,
COSH, DIM, LOG, LOG10, MAX, MIN, NINT, SINH, TAN, TANH) generic.
111 1245 TFV 3-Aug-81 ------
Declare global CHDECL flag which is set if a character declaration is
seen. Used in MRP3R and MRP3G to test if we have to scan the symbol
table to generate high seg character descriptors. Add CHDSTART for
the HISEG address of the start of character data descriptors.
Add entries in EVALU for character data. Also make HDRFLG global.
It is a flag for whether the header has been put out to the listing.
112 1252 CDM 10-Aug-81
Add new dotted names (unique names which users can't call) for
inline generic functions in the 77-standard which are not
specificly named.
114 1264 CDM 25-Sept-81
Add 4 inline type conversion NOP functions for NOP type conversions.
(To be removed in P2SKFN in P2S1.)
Add MAX, MIN, and LOG10 to tables for generic entries.
Add CMPL.C for complex to complex conversion.
Add character functions CHAR, ICHAR, INDEX, LEN, LGE, LGT, LLE, LLT
to tables.
116 1270 CDM 6-Oct-81
Added 1 bit to 2nd word of ATT macro to give LIBATTRIBUTES a bit
to signify that a generic function does not have a "specific" name.
(For error checking - octal arguments are illegal for non-specific).
117 1274 TFV 16-Oct-81 ------
Rename COMSIZ to be COMTSIZ when talking about the total size of
COMMON. COMSIZ is the size of an encode source entry for a COMMON
statement. Also add declarations for .Qnnnn variable handling.
They are QANCHOR, LASTQ, QLOC, QMAX, QCNT, LASTSFNQ, and QSFNMAX.
118 1406 TFV 27-Oct-81 ------
Add new globals for handling .Dnnnn compile-time-constant character
descriptors. They are DANCHOR, DCNT, ans LASTD.
119 1431 CKS 15-Dec-81
Add MINUSONE, analagous to ONEPLIT. It points to a const table entry
for -1.
120 1436 SRM 16-Dec-81
Add CHARUSED, a flag for character data used in the program.
In version 7, the global optimizer will not attempt
optimization if this flag is set.
121 1437 CDM 16-Dec-81
Added new global variable HIORIGIN to keep the value of the
hi-seg.
122 1445 SRM 20-Dec-81
Changed stack size in module head from 500 to 2100, so that
we can compile FM045.FOR in the validation tests. This program
has 57 nested parens. ( Approximately 100 words of
stack are needed for each 3 additional levels of nesting. )
123 1460 SRM 23-Jan-82
Added TURNOFFOPT to indicate that /OPT was turned off because
character data was used.
124 1466 CDM 1-Feb-82
Added variable ENTPREVIOUS for the address of the previous entry
statement.
Made entries to EVALU table be macros instead of hard wired
constants so that they can be used elsewhere.
Moved LIBFUNTAB, LIBATTRIBUTES, CLRWDS, EVALU, MTOPFUN so that they
would not be in the region of global variables that are zeroed out.
125 1467 CDM 5-Feb-82
Added variables NUMSAVCOMMON (count of how many have been
specified), PTRSAVCOMMON (linked list for the common statements
specified in SAVE).
1504 AHM 26-Feb-82
Added variable BIGARY. Any array with at least BIGARY words
in it goes into the .LARG. psect instead of .DATA. with the
/EXTEND switch.
1511 CDM 17-Mar-82
Added SAVLOC, SAVBLC, SAVALL, SAVNED for SAVE statement processing.
1526 AHM 6-Apr-82
Define LARGELOC for the relocation counter for the large data
psect (.LARG.) and ABSLOC, which will always contain 0 for use
in absolute addressing. Define a vector called PSECTS which
holds LOWLOC, HILOC, LARGELOC and ABSLOC. Use a GLOBAL BIND
to keep the names for the variables. Finally, define
CURADDRESS and CURPSECT communication between ZCODE and
ZOUTBLOCK of the current address and psect that code is being
stored into.
1530 TFV 4-May-82
Add global TOPIO which points to the top level I/O statement
during skeleton optimizations. It is used to set the
IOLSTATEMENT field of IOLSCLS nodes. Also parametize the size
of FREELIST which is used by CORMAN and SAVSPACE.
1531 CDM 4-May-82
Changes for save statement from code review.
1551 AHM 3-Jun-82
Increase the size of PSECTS vector because the psect PSOOPS
was added (it now has the index of zero).
1567 CDM 24-Jun-82
Add extra bit in the IDATTRIBUTES table for IDFNFOLD, whether
the function may be folded into a costant.
1633 TFV 1-Sep-82
Add new globals for /STATISTICS. They are LINCNT (number of
source lines), STCNT (number of executable statements),
PHTIME[6] (run times for each compiler phase), and PBTIME (run
time at the start of this phase).
1651 CKS 19-Oct-82
Add global name for LEN.'s library attributes so EXPRES can make
a function call node to LEN.
1654 SRM 22-Oct-82
Changed stack size in module head from 2100 to 2200, so that
we can compile FM045.FOR in the validation tests. This program
has 57 nested parens. The -20 command scanner uses 11 more stack
words than the old command scanner (and the -10 command scanner).
( Approximately 100 words of
stack are needed for each 3 additional levels of nesting. )
***** End V7 Development *****
1732 CDM 17-Mar-83
Add PRVLIT.
1754 CDM 26-May-83
Add INADJDIM.
2024 TJK 16-Dec-83
Incorrect definition of macro LG, used to fill in values in
PLIT ZATTRIBUTES (globally named by LIBATTRIBUTES). Convert
macro to a bind, and use symbolic names instead of numbers.
***** Begin Version 10 *****
2205 CDM 21-Jun-83
Add EFIWTBL for EFIW table hashing.
Remove ESIZ, etc. which are duplicates of the BIND's in FIRST
which is REQUIRE-d below.
2216 PLB 27-Sep-83
Add OWGBPSECTION global for kludged generation
of OWG byte pointers.
2251 CDM 22-Dec-83
Add new global variable BIGCONCAT to declare the size (50,000
for now) of the largest concatenation allowed as fixed (CONCTF)
or known maximum (CONCTM) in length. If the concatenation is
larger than this, then the concatenation will be dynamic
(CONCTV) so that it will use the character stack.
2301 RVM 28-Jan-84
Make the compiler know about the MIL SPEC/VAX FORTRAN bit
manipulation functions. They are new INTRINSIC functions.
2310 CDM 13-Feb-84
Output type 1131 rel block for PSECT redirection of segments
into psects. The command scanner sets the names for the psects
and the code generator dumps the rel block.
Add LONAME, HINAME to contain the names of the psects.
2322 CDM 27-Apr-84
Fix array subscript calculations for /EXTEND to use a full word
to calculate arithmetic. In PROCEQUIV and BLDDIM, check an
array reference against the correct maximum size of an array
declaration /EXTEND. In BLDDIM, call CNSTCM for array
calculations to give underflow/overflow messages for illegal
declarations. Otherwise arrays that are too large may not be
detected since their size will overflow.
2330 AHM 28-Mar-84
Remove definition of OWGBPSECTION - it is no longer needed now
that we use type 1030 blocks to output OWGBPs.
2334 AHM 5-Apr-84
Add global variable ENTADDR - it contains the object address
in the .DATA. psect of the entry vector when compiling a main
program under /EXTEND.
2342 AHM 18-Apr-84
Move EXTERNPSECT plit from RELBUF to here so that OUTMOD can
also reference it. If you export an address that has P & S
fields with a GLOBAL BIND in Bliss-10, you get LNKFTH errors
from the references in other modules. Hence, export it
without P & S fields from a module that doesn't reference it.
2343 RVM 18-Apr-84
Add globals needed for the table of COMMON blocks named in
/EXTEND:COMMON or /EXTEND:NOCOMMON. Note that there are
various constants declared which usually would be declared in
FIRST.BLI, but are declared as global symbols since there are
needed by the command scanner.
2346 AHM 23-Apr-84
Create two new globals SCOMSZ and LCOMSZ to hold the separate
totals of the sizes of small and large COMMON blocks in these
variables. They will be used in computing the size of the
psects in the test for the "?FTNPTL Program too large" error.
Get rid of COMTSIZ, since no one uses it anymore.
2352 CDM 1-May-84
Make intrinsic functions IAND, IOR, and IEOR inline functions. They
are converted to Fortran .AND., .OR., AND .XOR. within the skeleton
optimizer.
Rework the intrinsic function tables, giving names to the magic bits in
LIBATTRIBUTES.
2356 AHM 8-May-84
Create new flags LCOMP and SCOMP that indicate the presence of
at least one large (or small) COMMON block.
2370 MEM 1-JUN-84
Add KEYBUFFER so that keywords up to 4 words long can be recognized in
STA1. Add KEYLENGTH which contains the number of characters in
KEYBUFFER.
2412 TFV 2-Jul-84
Split LEXICA into two modules. The classifier is in the new
module LEXCLA. The lexeme scanner is in LEXICA. LEXCLA is
called to initialize each program unit, to classify each
statement, to classify the consequent statement of a logical IF,
and to do the standard end of program and missing end of program
actions. All the owns and globals in LEXICA have been moved
into GLOBAL.
2443 RVM 5-Aug-84
Make HINAME and LONAME SYMLEN+1 words long. Word 0 is number of
words used; the other SYMLEN words are the SIXBIT psect name.
2447 PLB 10-Aug-84
Added ICLEVEL for nested INCLUDE files. SAVFLG is now an array.
2454 RVM 28-Aug-84
Move the definition of DEFLON (the default value for LONAME)
and DEFHIN (the default value for HINAME) from CMND20 into
GLOBAL. Then make OUTMOD use DEFLON and DEFHIN where needed
in the twoseg redirection rel block.
2474 TFV 21-Sep-84, AlB 30-Oct-84
Fix continuation processing to handle unlimited numbers of blank
and comment lines between continuation lines. The lines are
recorded in a linked list of four word entries, defined in
LEXAID.BLI. The following globals are also needed to manage the
linked list:
FCHARPOS - CHARPOS for first line (72 unless it is not the
first statement on a multi-statement line)
LASTCODELINE - pointer to the entry for the last line containing
code
LINLCURR - pointer to the current entry in the list (or zero)
LINLHEAD - pointer to head of the linked list (or zero)
LINLLAST - pointer to last non-deleted entry
LINLPREV - pointer to last non-comment entry
NOLTLINE - last line in pool has no line terminator
CLASLCUR - save LINLCURR at start of classification
CONTLCUR - save LINLCURR when looking for continuation
2473 CDM 29-Oct-84
Add IMPLICIT NONE for the Military Standard MIL-STD-1753.
Add IMPNONE, TYPIMP, SUBNAM.
2477 AlB 16-Nov-84
Change the pool size to 2000 words (10000 characters).
2500 AlB 14-Nov-84
Change the list of entries for source lines from a linked list
in dynamic memory to a fixed-length list in static memory.
2507 CDM 20-Dec-84
Add enhancement for IMPLICIT NONE (edit 2473) after code inpsection.
Check more cases, and add a symbol table walk at the back
end to catch unreferenced variables.
Remove SUBNAM crock.
***** End V10 Development *****
***** End Revision History *****
)%
SWITCHES NOLIST;
REQUIRE FIRST.BLI;
REQUIRE TABLES.BLI;
REQUIRE REQREL.BLI;
SWITCHES LIST;
BEGIN
GLOBAL
POOL[POOLSIZ], ! MAJOR CHARACTER QUEUE
STK[STKSIZ], ! STACK FOR SYNTAX PROCESSING
MATRIX CHNLTBL[TBLMAX,TBLSIZ], ! OPEN, LOOKUP/ENTER, & BUFFER HEADER
! INFO FOR TBLMAX CHANNELS
%2447% ICLEVEL, ! CURRENT INCLUDE LEVEL; VALID IF <ININCLUD> SET
IBLOCK[3], ! PARAMETERS FOR ISCAN
TBLOCK[8], ! PARAMETERS FOR TSCAN
LBLOCK[4], ! PARAMETERS FOR LKWLD
GETSBLOK[6], ! ARG BLOCK FOR GETSEG
%1121% GETSPATH[9], ! PATH BLOCK FOR GETSEG
FLGWRD, ! TEMPORARY STORAGE FOR FLGREG WHILE IN COMMAND SCANNER
ISPEC, ! POINTER TO INITIAL FILE SPEC
FSPEC, ! POINTER TO FINAL FILE SPEC
CCLSW, ! VALUE OF CCL ENTRY, 1=YES, 0=NO
INDEX, ! CURRENT FILE SPEC
PAGE, ! COUNT OF NUMBER OF PAGES OUTPUT
JOBFFSAVE; ! STATE OF JOBFF PRIOR TO OPENING SRC
!***************************************************************
! Note: all globals from SYMTBL to GLOBEND inclusive will be
! initialized to zero in module classifier before each
! compilation.
!***************************************************************
GLOBAL
SYMTBL[SSIZ],
CONTBL[CSIZ],
EXPTBL[ESIZ],
LABTBL[LASIZ],
LITTBL[LISIZ],
NAMTBL[NSIZ],
SRCTBL[SOSIZ],
DIMTBL[DISIZ],
DATTBL[DASIZ],
%2205% EFIWTBL[EFSIZ], ! The EFIW hash table
BASEPTR, ! This contains the pointer to the most current
! entry made by the table handlers
COMBLKPTR, ! Pointers for last and first COMMMON blocks
LITPOINTER, ! LAST AND FIRST LITERALS [first,,last]
%1732% PRVLIT, ! Pointer to previous literal, in case we need
%1732% ! to delete one from the linked list.
SYMPTR, ! LAST AND FIRST SYMBOLS
SORCPTR, ! LAST AND FIRST SOURCE ENTRIES
LASTEXP, ! LAST EXPRESSION ENTRY
LASTDIM, ! LAST DIMENSION ENTRY
DTABPTR, ! HEAD OF DIM ENTRY LIST FOR BLDDIM
CONSPTR, ! LAST AND FIRST CONSTANTS
LABLPTR, ! FIRSTAND LAST STATEMENT LABELS
EQVPTR, ! PTR TO FIRST AND LAST EQUIVALENCE CLASSES
FORMPTR, ! PTR TO LINKED LIST OF FORMAT STRINGS
! 0 IF NONE IN SUBPROGRAM
%1530% FMTEND, ! Pointer to word after block for FORMAT being built
%1530% FMTPTR, ! Last character used in current FORMAT being built
NAMLPTR, ! PTR TO LINKED LIST OF NAMELIST LISTS STATEMENT NODES
! RIGHT HALF POINTS TO LAST, LEFT HALF POINTS TO FIRST
ASIPTR, ! PTR TO FIRST AND LAST ASSIGN STATEMENTS
TTOTAL, ! TOTAL UNUSED FREESPACE FOR DEBUGGING
%1530% FREELIST[FLSIZ], ! VECTOR OF POINTERS TO LINKED LISTS OF
! FREE STORAGE BLOCKS OF SIZE 0 TO FLSIZ - 1 WORDS
SPACEFREE, ! AMOUNT OF FREE LOWSEG SPACE
SRCHONLY, ! FLAG FOR TBLSEARCH FOR SEARCH ONLY MODE
ISN, ! INTERNAL SOURCE SEQUENCE NUMBER
IDOFSTATEMENT, ! IDENTIFICATION OF EXECUTABLE STEMENT IN TREE
LABLOFSTATEMENT,! SOURCE STATEMENT NUMBER POINTER
! IF CURRENT STATEMENT HAS ONE - OR 0
DLOOPTREE, ! PTR TO DO LOOP NEST TREE
DONESTLEVEL, ! CURRENT LEVEL OF DO NESTING
CURDOINDEX, ! PTR TO CURRENT DO INDEX VARIABLE
LASDOLABEL, ! LAST LABEL PTR FOR LABEL IN A DO STATEMENT
LASLVL0, ! PTR TO LAST LEVEL 0 NEST SEEN
DELETPTR, ! PTR TO DELETED TABLE ENTRY FOR DELETE ROUTINE
SYMTYPE, ! TYPE OF CURRENT SYMBOL
NAME, ! NAME OF THE TABLE FOR TBLSEARCH
! AND SIZ OF ENTRY IN LEFT HALF
TYPE, ! THE TYPE OF THE CURRENT SYMBOL
! HAS VARIOUS MEANINGS DEPENDING UPON CONTEXT
INCREM, ! INCREMENT USED FOR BUILDING FLOATING CONSTANT
DECEXP, ! EXPONENT VALUE USED BY GETCONST FOR
! FLOATING POINT NUMBER GENERATION
ENTRY[5], ! THE GLOBAL PARAMETER PASSSING VECTOR
REGSAV[16], ! SAV AREA FOR REGISTERS FOR GETSEG
SEGINCORE, ! INDICATES WHICH SEGMENT IS CURRENTLY ACTIVE
%1551% PSECTS[5], ! Holds current available address for psects
%1526% CURADDRESS, ! Current loading address for ZOUTBLOCK
%1526% CURPSECT, ! Current psect being loaded into
%2334% ENTADDR, ! Object address of entry vector
%2346% SCOMSZ, ! Size of the COMMON blocks in .DATA. in words
%2346% LCOMSZ, ! Size of the COMMON blocks in .LARG. in words
%2356% SCOMP, ! Flag for at least one COMMON block in .DATA.
%2356% LCOMP; ! Flag for at least one COMMON block in .LARG.
GLOBAL BIND
!%1551% OOPSLOC = PSECTS[PSOOPS]<0,0>, ! Shouldn't be referenced, but space
! for it must be allocated in PSECTS
LOWLOC = PSECTS[PSDATA]<0,0>, ! Current LOWSEG (.DATA.) address
HILOC = PSECTS[PSCODE]<0,0>, ! HISEG (.CODE.) address
%1526% LARGELOC = PSECTS[PSLARGE]<0,0>,! .LARG. address
%1526% ABSLOC = PSECTS[PSABS]<0,0>, ! Absolute (.ABS.) address (always 0)
EXTERNPSECT = UPLIT( ![1512] New
![2342] Another module needs EXTERNPSECT too
%PSOOPS:% PXABS, ! Mapping between internal STE psects and
%PSDATA:% PXDATA, ! external REL file psect indices
%PSCODE:% PXCODE,
%PSLARGE:% PXLARGE,
%PSABS:% PXABS
)<0,0>;
GLOBAL
%1437% HIORIGIN, ! Origin of Hi-seg
RELOCWD, ! RELOCATION BITS FOR DATA IN REL BLOCK
MAINRLBF[20], ! MAIN REL FILE BUFFER - 20 WDS
LOCRLBF[20], ! BUFFER FOR LOCAL REQUESTS
SYMRLBF[20], ! BUFFER FOR GLOBAL REQUESTS AND SYMBOL DEFS
RDATWD, ! PARAMETER WORD FOR PASSING DATA TO REL
BLANKCOM, ! BLANK COMMON BLOCK PTR
ENDSCAA, ! ADDRESS OF LOC AFTER THE END OF THE
! SCALARS AND ARRAYS (BEFORE THE FORMAT STRINGS)
MULENTRY, ! PTR TO LINKED LIST OF ENTRY STATEMENTS
FORMAREA, ! TOTAL NUMBER OF WORDS OCCUPIEDBY FORMAT STRINGS
ONEPLIT, ! POINTER TO CONSTANT INTEGER 1
! SET IN GLOBINIT
%1431% MINUSONE, ! POINTER TO CONST TABLE ENTRY FOR -1
SP, ! CURRENT TOP OF SYNTAX STACK
LEXL, ! RESULT OF LAST CALL TO LEXEMEGEN
LSAVE, ! FLAG INDICATING LEXEME ALREADY SCANNED
FARRY, ! FIRST ARRAY NAME IN A ONE ARRAY
CODELINES, ! THE NUMBER OF HISEG CODE LOCATION GENERATED
STALABL, ! CURRENT LABLOFSTATEMENT
PROGNAME, ! SIXBIT 'MAIN' OR FROM PROGRAM STATEMENT
IDTYPE, ! VARIABLE TYPE DEFINED BY TYPE STATEMENT
ASTATFUN, ! PTR TO CURRENT STATEMENT FUNCTION NAME IF
! CURRENTLY BEING PARSED
ERRLINK, ! POINTER TO A LINKED LIST OF ERROR MESSAGES
TMPCNT[4], ! COUNT OF VARIOUS TYPES OF TEMP USED.
! [0]=TEMPORARY,[1]=MULTIPLYCATION FACTOR
! [2]=OFFSET,[3]=SIZE
BSAVE, ! BREG SAVE AREA
FSAVE, ! FREG SAVE WORD
VSAVE, ! VREG SAVE WORD
!***************************************************************
! GLOBALS USED BY PHASE 2 SKELETON AND PHASE 3
!***************************************************************
TREEPTR, ! PTR TO THE NODE IN THE TREE CURRENTLY BEING PROCESSED
CSTMNT, ! PTR TO THE STATEMENT NODE CURRENTLY BEING PROCESSED
NEDZER, ! FLAG TO INDICATE IF ZERO-ARG-BLOCK NEEDED
ZERBLK, ! PTR TO LABEL TABLE ENTRY FOR LABEL ON A
! ZERO-ARG-BLOCK FOR FOROTS
A1NODE, ! PTR TO 1ST ARGNODE UNDER TREEPTR;
A2NODE, ! PTR TO 2ND ARGNODE UNDER TREEPTR
A1LABEL, ! PTRS TO LABEL-TABLE ENTRIES - USED IN THE
A2LABEL, ! TABLE-DRIVEN PART OF THE CODE-GENERATOR
A3LABEL,
OPDSPIX, ! INDEX INTO DISPATCH TABLE FOR OPGENTABLE
REGFORCOMP, ! REGISTER TO BE USED IN COMPUTING
! THE VAL OF A NODE - THIS GLOBAL IS SET UP
! WHEN CALLING "CGOPGEN"
! BITS 9-12 INDICATE THE REG TO BE USED
PC, ! RELATIVE LOC OF NEXT INSTR TO BE GENERATED
PBOPWD, ! INDICATES INSTRUCTION WD TO BE OUTPUT
! TO PEEPHOLE BUFFER
PSYMPTR, ! INDICATES THE PBFSYMPTR FIELD TO BE OUTPUT
! TO THE PEEPHOLE BUFFER
IOLSPTR, ! PTR TO THE FIRST AND LAST IO STMNT IN THE PROGRAM
DATASPTR, ! PTR TO FIRST AND LAST DATA STATEMENT NODES
RESNAME, ! PTR TO EITHER SYMBOL TABLE ENTRY OR
! EXPRESSION NODE SPECIFYING WHERE THE
! FINAL RESULT OF THE EXPRESSION BEING PROCESSED
! BY THE REGISTER ALLOCATOR WILL BE STORED
!***************************************************************
! GLOBALS USED ONLY BY PHASE 2 SKELETON
!
! GLOBALS USED IN PHASE 2 SKELETON FOR FORCING NEG AND NOT DOWN
! TO BOTTOMMOST NODES. IF NOTFLG(NEGFLG) IS TRUE WHEN ENTER
! ROUTINE FOR A GIVEN NODE THEN A NOT (NEG) MUST BE FORCED DOWN
! OVER THIS NODE. IF IT IS TRUE WHEN LEAVE ROUTINE FOR A GIVEN
! NODE, THEN NOT(NEG) MUST BE FORCED BACK UP TO THE PARENT OF
! THIS NODE.
!***************************************************************
NEGFLG,
NOTFLG,
TRUECENTRY, ! Pointer to constant table entry for "TRUE"
FALSECENTRY, ! For false
CIOCALL, ! Pointer to current IOLSTCALL node being built
CIOCLAST, ! Pointer to last element on the IOLSTCALL node
! being built
INPFLAG, ! Flag for current statement is an input statement
USERFNFLG, ! Flag for this statement includes a call to a user
! function
%1530% TOPIO, ! Pointer to the top level I/O statement above this
%1530% ! IOLSCLS node
!***************************************************************
! GLOBALS USED ONLY BY THE REGISTER ALLOCATOR
!***************************************************************
CLOBBREGS, ! REGISTERS CLOBBERED IN THE COURSE OF
! EVALUATION OF THIS EXPRESSION
DBLMODE, ! IF THIS GLOBAL IS TRUE, THEN THE GLOBALS
! STBSYR AND STRGCT HAVE BEEN SET TO DO
! REG ALLOC IN DOUBLE-PREC MODE
!***************************************************************
%1274% ! Globals used in temporary allocation
!***************************************************************
%1274% QANCHOR, ! Pointer to start of linked list of .Qnnnn variables
! they are linked in order of location inside .Q space
%1274% LASTQ, ! Pointer to the last .Q used by the current statement
%1274% QLOC, ! Last location in .Q space that was used by the
! current statement
%1274% QMAX, ! Maximum size of .Q space for all statements
%1274% QCNT, ! Counter to use when generating the next .Qnnnn
%1274% LASTSFNQ, ! Pointer to the last .Q used by statement functions
! The .Q variables between QANCHOR and LASTSFNQ can not
! be reused by other statements
%1274% QSFNMAX, ! Maximum size of .Q space used by statement functions
%1406% DANCHOR, ! Pointer to start of linked list of .Dnnnn variables.
! They are used for compile-time-constant character
! descriptors. They are not reused.
%1406% LASTD, ! Pointer to the last .Dnnnn variable created
%1406% DCNT, ! Counter to use when generating the next .Dnnnn
VERYFRST, ! USED BY GLOBAL TEMPORARY ALLOCATOR IN THE GLOBALLY
! OPTIMIZING CASE VERYFRST POINT TO AUXILLARY LIST
PBFPTR, ! PTR TO NEXT AVAILABLE WORD IN BUFFER
VECTOR PBUFF[PBFSIZE],
PEEPPTR, ! PTR TO WD IN PEEPHOLE BUFFER OFF OF WHICH
! ARE KEYING IN PEEPHOLE OPTIMIZING
ILABIX, ! CT OF INTERNALLY GENERATED LABELS
!***************************************************************
! GLOBALS THAT ARE SET UP BEFORE CALLING THE STATEMENT REGISTER
! ALLOCATOR
!***************************************************************
GBSYREGS, ! BITS IN THIS WD ARE 0 FOR ANY REGISTERS USED FOR
! GLOBALLY ALLOCATED VARIABLES
GBSYCT, ! NUMBER OF REGS AVAILABLE FOR USE BY LOCAL
! REGISTER ALLOCATOR
STBSYR, ! INDICATES WHICH REGISTERS ARE AVAILABLE FOR USE.
! EACH BIT IN THIS WORD CORRESPONDS TO A REG AND IS 0
! if THAT REG IS UNAVAILABLE, 1 IF FREE
STRGCT, ! NUMBER OF REGS AVAILABLE FOR USE
BLOCKBSYREGS, ! THIS WD IS USED BY THE BASIC BLOCK REGISTER
! ALLOCATOR. EACH BIT IN THIS WD CORRESPONDS TO
! A REG. IF THE REG WAS ALLOCATED BY THE BLOCK
! ALLOCATOR, THE BIT IS ZERO IF NOT, THE BIT IS
! ONE.
NOBBREGSLOAD, ! THIS FLAG IS USED BY THE BASIC BLOCK REG
! ALLOCATOR IT IS SET TO TRUE WHEN PROCESSING
! NODES FOR WHICH ONE CANNOT ASSUME THAT THE
! CODE IS ALWAYS EXECUTED WHENEVER THE BLOCK
! CONTAINING THE NODES IS EXECUTED (E.G. FOR THE
! STMNT UNDER A LOG IF, FOR THE 2ND RELATIONAL
! UNDER A CONTROL-BOOLEAN,...) CANNOT ASSUME
! THE VALS OF REGS LOADED WHILE THIS FLAG IS SET
PAIRMODE, ! THIS GLOBAL FLAG IS SET DURING COMPLEXITY WALK
! IF ANY EXPRESSION IS FOUND UNDER THE CURRENT
! STMNT THAT REQUIRES A REG PAIR THIS FLAG IS
! ALSO USED DURING LOCAL REG ALLOC WHEN IT IS
! SET WHENEVER A STMNT IS BEING PROCESSED THAT
! REQUIRES ANY REG PAIRS
![674] MAKE DOSTAK BIGGER AND COMBINE IT WITH EHASH
%674% DOSTAK[DOSTSIZ], ! DOSTAK MUST PRECEDE EHASH FOR FORTG
EHASH[EHSIZ], ! EXPRESSION HASH TABLE FOR CMN SUB ELIM.
BACKST, ! USED IN LOCAL COMMON SUB-EXPRESSION
! ELIMINATION. MUST BE ZERO IN GLOBAL CASE
IOPTFLG, ! DIFFERENTIATES NORMAL GLOBAL OPTIMIZATION
! CASE FROM GLOBAL IMPLIED DO
! OPTIMIZATION CASE
DOSP, ! DO STACK POINTER
EXITNO, ! NUMBER OF LOOP EXITS; 0 IN NORMAL CASE
RDCCT, ! USED TO CREATE NAMES FOR REDUCTION IN
! STRENGTH TEMPORARIES
LPRDCCT, ! USED TO HOLD COUNT OF REDUCTIONS AT LOOP
! START SO WE CAN TEELL IF THERE WAS A
! UNIQUE REDUCTION
RDCLNK, ! POINTER TO THE FIRST INCREMENT OF
! A REDUCTION VARIABLE IN ANY LOOP
LOCLNK, ! USED TO LINK LOCAL COMMON SUBS TOGETHER
ARGLINKPT, ! TOLINK ARG BLOCKS TOGETHER
SPECCASE, ! USED TO UNIT LEAF SUBS. ROUTINES
QQ, ! TEMPORARY USED THROUGH PHASE2
UNIQVAL, ! POINTER TO LIST OF VARIABLES UNIQUELY
! ASSIGNED IN THE LOOP
ASSOCPT, ! POINTER TO LINKED LIST OF ASSOCIATE VARIABLES
FNTMP, ! NUMBER TO MAKE STATEMENT FUNCTION
! ARGUMENTS WITH
DOCNT, ! COUNT OF DO LOOPS IN PROGRAM
OPTLAB, ! USED TO GENERATE LABELS BY THE OPTIMIZER
GLOBREG[16], ! LIST OF REGISTERS GLOBALLY ALLOCATED
RGRAPH, ! REVERSE GRAPH (USING POOL FOR SPACE)
FGRAPH, ! FORWARD GRAPH (USING POOL FOR SPACE)
SSIZTC, ! COUNTER FOR STEP SIZE TEMPS GENERATED FOR DO LOOPS
INTLTC, ! COUNTER FOR INITIAL VALUE TEMPS FOR DO LOOPS
LOOP, ! USED BY OPTIMIZER
INDVAR, ! INDUCTION VARUABLE FOR CURRENT LOOP
LEND, ! TERMINAL STATEMENT OF CURRENT LOOP
LENTRY, ! ENTRY POINT OF CURRENT LOOP
LOOPNO, ! NUMBER OF CURRENT LOOP
CHOSEN[32], ! USED IN DEFINITION POINT COMPUTATION
! AND GLOBAL REGISTER ALLOCATION
TOP, ! TOP OF CURRENT LOOP
BOTTOM, ! BOTTOM OF CURRRENT LOOP
TPREV, ! TEMP USED BY OPTIMIZER IN CMN SUB ELIM
PREV, ! DITTO
PHI, ! POINTER TO HASH ENTRY FOR COMMON SUBS
NAN, ! FLAG SET TO INDICATE THAT FIRST
! EXPRESSION OF HASH PAIR NEEDS A NEGATE
! NODE OR FLAG OVER IT
EHASHP, ! POINTER TO HASH INDEX ENTRY. USED FOR
! DELETION OF HASH ENTRIES IN COMMON SUBS
LOWLIM, ! LOWER LIMIT FOR SUBSTITUTION
CELMNT, ! CURRENT ELEM ON I/O LIST
! USED AS TRANSLATION TABLE FROM SRCID TO THE FUNCTION CODE IN CALLING
! THE MTOP. FUNCTION OF FOROTS
INNERLOOP, ! "True" in phase 2 skeleton walk when we are looking at
! statements in an innermost DO loop.
DOWDP, ! Used by phase 2 to skeleton optimize innermost
! DO loops.
! Used in the complexity walk to point to the
! information needed for REGCONTENTS node
! substitution for innermost DO loops.
CDONODE, ! Points to "current" innermost DO statement
! node for skeleton opt and complexity walks.
ITMCT, ! USED IN LEAF SUBSTITUTION UNIFICATION
DWP, ! POINTER FOR WALK OF DO DEPTH ANALYSIS TREE
!***************************************************************
! GLOBALS USED TO PASS ARGS TO ASSEMBLY-LANG CONSTANT FOLDING
! ROUTINE
!***************************************************************
C1H,
C1L,
C2H,
C2L,
COPRIX,
SAVACS[7], ! AREA WHERE THE CONSTANT-FOLDING ROUTINE SAVES THE ACS
SAVE17, ! FOR SPECIAL RETURNS TO PHAZECONTROL
!***************************************************************
! MORE FORTB GLOBALS
!***************************************************************
EOPSAVE, ! ADDRESS AND COUNT OF THE PORTION OF THE
! PORTION OF POOL THAT HAD TO BE SAVED AT THE
! END OF THE CURRENT PROGRAM UNIT, INORDER THAT
! THE LATER PASSES CAN USE POOL.
! <LEFT> - NUMBER OF WORDS
! <RIGHT> - BEGINNING ADDRESS
NOCR, ! IF SET TO 1 IT INDICATES TO THE OUTPUT ROUTINES
! THAT A CR SHOULD BE INSERTED
STPTR, ! POINTER TO BEGINNING CHARACTER-1
! OF CURRENT STATEMENT
STLPTR, ! POINTER TO BEGINNING CHARACTER-1 OF THE
! LINE CONTAINING THE CURRENT STATEMENT
STPOS, ! CHARACTER POSITION ON LINE OF BEGINNING OF STATEMENT
LASTLINE, ! LAST LINE NUMBER, ALSO USED TO SAVE LINELINE BETWEEN
! PROGRAM UNITS
ERRFLAG, ! IF 1 INDICATES THAT THERE HAVE BEEN
! OTHER ERRORS IN THIS STATEMENT
MSGNOTYPD, ! IF 1 INDICATES THAT THERE ARE MESSAGES IN
! THE QUEUE WHICH HAVE NOT BEEN TYPED ON THE USER TTY
CLASPTR, ! CLASSIFICATION BACKUP POINTER
CLASLPT, ! CLASSIFICATION BACKUP LINE BEGINNING POINTER
CONTPTR, ! CONTINUATION BACKUP POINTER
LEXLINE, ! LINE NUMBER ASSOCIATIED WITH CURRENT LEXEME
%2370% KEYBUFFER[4], ! BUFFER IN WHICH ALL KEYWORDS ARE STORED IN LEXICA
%2370% KEYLENGTH, ! NUMBER OF CHARACTERS IN KEYBUFFER
!***************************************************************
! ERROR MESSAGE COUNTERS
!***************************************************************
NUMWARN, ! NUMBER OF WARNING MESSAGES
NUMFATL, ! NUMBER OF FATL MESSAGES
WARNOPT, ! FLAG WHICH IF 1 INDICATES THAT WARNINGS WERE
! ISSUED WHICH COULD ADVERSELY AFFECT THE OPTIMIZER
STMNDESC, ! ADDRESS OF THE CURRENT STATEMENT DESCRIPTION BLOCK
PSTATE, ! CURRENT STATE CODE OF THE STATEMENT
! ORDER CHECKING TABLE - STMNSTATE
BACKLINE, ! USED TO SAVE LINE ATTRIBUTES OF ANY LINES
! PASSED OVER DURING LOOKAHEAD
LOOK4LABEL, ! IF SET TO 1 INDICATES TO LEXICAL THAT
! IT IS LOOKING FOR A LABEL
FNDFF, ! SET T0 1 IF FORM FEED ENCOUNTERED
DIMSTK, ! POINTER TO LIST OF VARIABLES USED AS
! ARRAY DIMENSIONS WHICH HAVE NOT YET
! BEEN DEFINED IN COMMON OR AS DUMMYS
LOOK4CHAR, ! SET TO THE CHARACTER OR STRING THAT
! LEXICAL CHARACTER OR STRING SCAN IS
! SUPOSED TO TRY AND MATCH
LMLINO, ! CURRENT SOURCE LINE NUMBER
LMRONO, ! CURRENT MAP ROW NUMBER
LMCONO; ! CURRENT MAP COLUMN NUMBER
GLOBAL BIND
ENDOFILE = 0; ! END OF FILE INDICATOR RETURNED BY LEXICAL()
GLOBAL
%1133% MAXFF, ! Maximum size of compiler lowseg
%1213% CHLEN, ! Add CHLEN for character count for character data
! Move ACTLDATYPE and CHDLEN out of STA2.
%1213% ACTLDATYPE, ! Set to the identifier's actual datatype
! in order to differentiate between REAL*8 and
! DOUBLEPRECISION when doing variable*n and
! variable(subscripts)*n declarations
! used in ASTER and set in TYPDECLARE
%1213% CHDLEN, ! The default length for a CHARACTER variable
%1245% CHDECL, ! Flag that is set when a character declaration
! or an implicit character declaration is seen.
! It is used in MRP3R and MRP3G to test whether
! we have to scan the symbol table to generate
! hi seg character descriptors.
%1436% CHARUSED, ! Flag for character data used. Set if character
! operator, character intrinsic function, or ref
! to a character var is seen. In V7, causes
! global optimization to be discontinued.
! CHARUSED differs from CHDECL because CHDECL
! not set for: 'ABC' // 'DEF'
%1460% TURNOFFOPT, ! Flag for /OPT turned off for this subroutine
! because it has character data. (Should be
! removed when /OPT of char is supported. )
%1245% CHDSTART, ! HISEG location for the start of character data
! descriptors
%1245% HDRFLG, ! Flag for header has been output
%1245% TCNT, ! Count of number of temporaries listed on line
%1214% DOIFSTK, ! Nested DO and block IF stmts enclosing
! current stmt. (FORTB only)
%1466% ENTPREVIOUS, ! Address of previous entry statement
%1511% SAVLOC, ! Flag, Local variables need to be SAVE-d
%1511% SAVBLC, ! Flag, Must SAVE blank common
%1511% SAVALL, ! Flag, A SAVE without args was given
%1511% SAVNED, ! Flag, A SAVE rel block is needed.
%1467% NUMSAVCOMMON, ! NUMber of SAVe-d commons found in
%1467% ! SAVE statements in this module.
%1531% PTRSAVCOMMON, ! Pointer to the end of a linked
%1531% ! list of the commons in SAVE-s.
%1531% !
%1531% ! Links have the form:
%1531% ! [ptr to symbol tab,, ptr to previous link]
%1633% LINCNT, ! Number of source lines in program
%1633% STCNT, ! Number of executable statements in program
%1754% INADJDIM, ! Flag, Parsing a statement which could declare
%1754% ! an adjustably dimensioned array.
%2473% IMPNONE, ! Flag for IMPLICIT NONE
%2473% TYPIMP, ! Flag for IMPLICIT is used for declaring data
%2473% ! types of variables.
GLOBEND; ! Last global to be zeroed in GLOBAL.BLI
!***************************************************************
! NOTE: ALL GLOBALS FROM SYMTBL TO GLOBEND INCLUSIVE WILL BE
! INITIALIZED TO ZERO IN MODULE CLASSIFIER BEFORE EACH
! COMPILATION.
!***************************************************************
!***************************************************************
! More LEXICAL and LEXCLAS globals
!***************************************************************
GLOBAL
%2412% CHARTMP, % STORAGE FOR REGISTER CHAR UPON EXIT %
%2412% CODETMP, %STORAGE FOR REGISTER CODE UPON EXIT %
%2412% FOUNDCR, ! INDICATES THAT A <CR> WAS ENCOUNTERED BEFORE THE
! LINE TERMINATOR WHICH TERMINATED THE REMARK STATE
! IF SET TO 1.
%2412% INCLAS, ! IF 1 INDICATES THAT CLASIFICATION LOOKAHEAD IS TAKING
! PLACE
%2412% VALUE, ! VALUE TO BE RETURNED AFTER SKIPPING TO NEXT SIGNIF
! CHAR
%2412% CLASERR, ! IF 1 INDICATES TO STSKIP THAT AN ILLEGAL CHARACTER
! WAS DETECTED IN CLASSIFICATION AND THAT STSKIP
! SHOULD ALSO DETECT IT AND REPORT IT
%2412% ZEROCHK, ! SET TO 1 IF A DIGIT WAS ENCOUNTERED IN THE LABEL
! FIELD USED TO CHECK FOR "0" LABEL
%2412% CHARCOUNT, ! Used to hold length of character constant
%2412% COLONCOUNT, ! Number of zero-level colons skipped over by STTERM
%2412% DOCHAR, ! Character after DO in classifier
%2412% PAREN, ! COUNT OF PARENS FOR CLASSIFICATION AND SKIPPING
%2412% HOLCONST, ! HOLDS THE CONSTANT FOR SKIPPING HOLERITHS
%2412% LGIFCLAS, ! IF 1 THEN CLASSIFYING THE OBJECT OF A LOGICAL IF
%2412% KEYPTR, ! BYTE POINTER FOR KEYWORD SPELLING CHECK
%2412% TEMP, % TEMPORARY STORAGE WITHIN MACROS %
%2260% XORCHAR, % Set true if first letter after '.' is X
(to catch .XOR.) %
%2412% CNT,
%2412% IDENTF,
%2412% POINTER,
%2412% SIIGN,
%2412% STATESTACK[10], ! AREA FOR STATE CALL STACK
%2412% STSTKPTR, ! CURRENT STACK POINTER
%2412% CLASLINE, ! LINE NUMBER OF BEGINNING OF CLASSIFICATION
%2412% CLASPOS, ! CHARACTER POSITION OF BEGINNING OF CLASSIFICATION
%2474% CLASLCUR, ! Entry in linked list at start of classification
%2474% CONTLCUR, ! Linked list backup entry
%2412% MSNGTIC, ! THIS FLAG IS SET IF THERE IS WHAT APPEARS TO BE AN
! UNTERMINATED LIT STRING. THE CLASSIFIER WILL THEN
! LET UNMATCHED PARENS GO BY SO THAT IT CAN CLASSIFY
! IO STATEMENTS WITH THE DAMN IBM ' RECORD MARK IN THEM
%2412% HIAC,
%2412% LOAC,
%2474% FCHARPOS, ! CHARPOS for first entry in pool source list
%2474% LASTCODELINE, ! Pointer to last pool source entry containing code
%2474% LINLCURR, ! Current entry in source list
%2474% LINLLAST, ! Pointer to last valid entry in source list
%2474% LINLPREV, ! Pointer to last non-comment entry in source list
%2474% NOLTLINE; ! Flag for last line in pool has no line terminator
%2500% ! Note that LINLSENT is also defined in LEXAID
%2500% BIND
%2500% LINLSENT = 3, ! Size of each entry in LINLLIST
%2500% LINLNENT = 100; ! Number of entries in LINLLIST
%2500% GLOBAL
%2500% LINLLIST[LINLSENT*(LINLNENT+1)]; ! List of pointers to source lines
%2500% GLOBAL BIND
%2500% LINLEND = (LINLLIST+LINLSENT*LINLNENT)<0,0>; ! End of LINLLIST
![1466] *** The below are tables which we DO NOT want zeroed out. They have
![1466] *** been moved to here to avoid any confusion about this!!
![761] Add entries for /GFLOATING - it has its own arg type
! Used as conversion table from internal valu types to external value
! types. Values for the macros can be found in REQREL.BLI. These must be
! changed to change these values. This table exists in the normal and /GFL
! half, so to change a value, both halves of the table must be changed.
BIND EVALDUM=PLIT(EVALU GLOBALLY NAMES
%1466% TYPOCTAL, !0,INTERNAL OCTAL
%1466% TYPLOGICAL, !1,INTERNAL LOGICAL
0, !2,INTERNALLY UNUSED
0, !3,INTERNALLY UNUSED
%1466% TYPLOGICAL, !4,INTERNALLY CONTROL (SAME AS LOGICAL)
0, !5,INTERNALLY UNUSED
0, !6,INTERNALLY UNUSED
0, !7,INTERNALLY UNUSED
%1466% TYPDBLOCTAL, !8,INTERNALLY DOUBLE OCTAL
0, !9,INTERNALLY UNUSED
0, !10,INTERNALLY UNUSED
0, !11,INTERNALLY UNUSED
%1466% TYPHOLLERITH, !12,INTERNALLY HOLLERITH
%1466% TYPCHARACTER, !13,INTERNALLY CHARACTER
0, !14,INTERNALLY UNUSED
0, !15,INTERNALLY UNUSED
%1466% TYPINTEGER, !16,INTERNALLY INTEGER
0, !17,INTERNALLY BYTE (NOT IN RELEASE 1)
%1466% TYPINTEGER, !18,INTERNALLY INDEX(SAME AS INTEGER)
0, !19,INTERNALLY UNUSED
%1466% TYPREAL, !20,INTERNALLY REAL
0, !21,INTERNALLY UNUSED
0, !22,INTERNALLY UNUSED
0, !23,INTERNALLY UNUSED
%1466% TYPDOUBLPREC, !24,INTERNALLY DOUBLE PRECISION
0, !25,INTERNALLY UNUSED
0, !26,INTERNALLY UNUSED
0, !27,INTERNALLY UNUSED
%1466% TYPCOMPLEX, !28, INTERNALLY COMPLEX
%[761]% 0, !29, UNUSED
%[761]% 0, !30, UNUSED
%[761]% 0, !31, UNUSED
! G-floating portion of table.
%1466% TYPOCTAL, !32,INTERNAL OCTAL
%1466% TYPLOGICAL, !33,INTERNAL LOGICAL
%[761]% 0, !34,INTERNALLY UNUSED
%[761]% 0, !35,INTERNALLY UNUSED
%1466% TYPLOGICAL, !36,INTERNALLY CONTROL (SAME AS LOGICAL)
%[761]% 0, !37,INTERNALLY UNUSED
%[761]% 0, !38,INTERNALLY UNUSED
%[761]% 0, !39,INTERNALLY UNUSED
%1466% TYPDBLOCTAL, !40,INTERNALLY DOUBLE OCTAL
%[761]% 0, !41,INTERNALLY UNUSED
%[761]% 0, !42,INTERNALLY UNUSED
%[761]% 0, !43,INTERNALLY UNUSED
%1466% TYPHOLLERITH, !44,INTERNALLY HOLLERITH
%1466% TYPCHARACTER, !45,INTERNALLY CHARACTER
%[761]% 0, !46,INTERNALLY UNUSED
%[761]% 0, !47,INTERNALLY UNUSED
%1466% TYPINTEGER, !48,INTERNALLY INTEGER
%[761]% 0, !49,INTERNALLY BYTE (NOT IN RELEASE 1)
%1466% TYPINTEGER, !50,INTERNALLY INDEX(SAME AS INTEGER)
%[761]% 0, !51,INTERNALLY UNUSED
%1466% TYPREAL, !52,INTERNALLY REAL
%[761]% 0, !53,INTERNALLY UNUSED
%[761]% 0, !54,INTERNALLY UNUSED
%[761]% 0, !55,INTERNALLY UNUSED
%1466% TYPGFLDBLPREC, !56,INTERNALLY DOUBLE PRECISION
%[761]% 0, !57,INTERNALLY UNUSED
%[761]% 0, !58,INTERNALLY UNUSED
%[761]% 0, !59,INTERNALLY UNUSED
%1466% TYPCOMPLEX, !60, INTERNALLY COMPLEX
%[761]% 0, !61, UNUSED
%[761]% 0, !62, UNUSED
%[761]% 0); !63, UNUSED
!TABLE TO CONVERT SRCID-BACKID TO MTOP FUNCTION CODES
!FOR FOROTS
BIND MTPDUM=PLIT(MTOPFUN GLOBALLY NAMES
2, !BACKSPACE
3, !BACKFILE
0, !REWIND
7, !SKIPFILE
5, !SKIP RECORD
1, !UNLOAD
0, !RELEASE NOT HANDLED THIS WAY
4); !ENDFILE
! Each TYPTABle entry is two words long. The first word has a -1 in the
! left half if the letter already appeared in an IMPLICIT declaration.
! The right half is the IDTYPE. The second word is the character count
! for character data.
%1213% GLOBAL TYPTAB[52];
!***********************************************************************
! The following defines the library function ID Tables. Each
! entry is composed of two tables.
! The first table, LIBFUNTAB, is the SIXBIT identification of the
! library function. A binary search is done on this table to find
! if a function is Fortran intrinsic.
! The second, LIBATTRIBUTES, is the attributes of the function.
! This is accessed by the index into the above table where the
! name was found.
!***********************************************************************
! THIS TABLE MUST BE KEPT IN ALPHABETICAL ORDER, since it is
! binary searched to find out if a function in question is a
! Fortran or user function.
!***********************************************************************
! In addition, there are 3 parallel tables which must be kept
! in order; LIBATTRIBUTES, DOTTEDNAMES, GDOTTEDNAMES.
MACRO FN(A)= SIXBIT 'A'$;
BIND FUNTAB = PLIT(LIBFUNTAB GLOBALLY NAMES
ABSENT NAMES FN(ABS),
ACOSENT NAMES FN(ACOS),
AIMAGENT NAMES FN(AIMAG),
AINTENT NAMES FN(AINT),
ALOGENT NAMES FN(ALOG),
ALOG10ENT NAMES FN(ALOG10),
AMAX0ENT NAMES FN(AMAX0),
AMAX1ENT NAMES FN(AMAX1),
AMIN0ENT NAMES FN(AMIN0),
AMIN1ENT NAMES FN(AMIN1),
AMODENT NAMES FN(AMOD),
%1241% ANINTENT NAMES FN(ANINT),
ASINENT NAMES FN(ASIN),
ATANENT NAMES FN(ATAN),
ATAN2ENT NAMES FN(ATAN2),
%2301% BTESTENT NAMES FN(BTEST),
CABSENT NAMES FN(CABS),
CCOSENT NAMES FN(CCOS),
%[761]% CDABSENT NAMES FN(CDABS),
CEXPENT NAMES FN(CEXP),
%1264% CHARENT NAMES FN(CHAR),
CLOGENT NAMES FN(CLOG),
%1252% ?CMP1.DENT NAMES FN(CMP1.D),
%1252% ?CMP1.IENT NAMES FN(CMP1.I),
%1252% ?CMP1.RENT GLOBALLY NAMES FN(CMP1.R),
%1264% ?CMPL.CENT NAMES FN(CMPL.C),
%1252% ?CMPL.DENT NAMES FN(CMPL.D),
%1252% ?CMPL.IENT NAMES FN(CMPL.I),
%1252% CMPLXENT GLOBALLY NAMES FN(CMPLX),
CONJGENT NAMES FN(CONJG),
COSENT NAMES FN(COS),
COSDENT NAMES FN(COSD),
COSHENT NAMES FN(COSH),
%[761]% COTANENT NAMES FN(COTAN),
CSINENT NAMES FN(CSIN),
CSQRTENT NAMES FN(CSQRT),
DABSENT NAMES FN(DABS),
%[761]% DACOSENT NAMES FN(DACOS),
%[761]% DASINENT NAMES FN(DASIN),
DATANENT NAMES FN(DATAN),
DATAN2ENT NAMES FN(DATAN2),
DBLEENT NAMES FN(DBLE),
%1252% ?DBLE.CENT NAMES FN(DBLE.C),
%1252% ?DBLE.IENT NAMES FN(DBLE.I),
DCOSENT NAMES FN(DCOS),
%[761]% DCOSHENT NAMES FN(DCOSH),
%[761]% DCOTANENT NAMES FN(DCOTAN),
%1241% DDIMENT NAMES FN(DDIM),
DEXPENT NAMES FN(DEXP),
DFLOATENT NAMES FN(DFLOAT),
DIMENT NAMES FN(DIM),
%1241% DINTENT NAMES FN(DINT),
DLOGENT NAMES FN(DLOG),
DLOG10ENT NAMES FN(DLOG10),
DMAX1ENT NAMES FN(DMAX1),
DMIN1ENT NAMES FN(DMIN1),
DMODENT NAMES FN(DMOD),
%1241% DNINTENT NAMES FN(DNINT),
%1241% DPRODENT NAMES FN(DPROD),
DSIGNENT NAMES FN(DSIGN),
DSINENT NAMES FN(DSIN),
%[761]% DSINHENT NAMES FN(DSINH),
DSQRTENT NAMES FN(DSQRT),
%[761]% DTANENT NAMES FN(DTAN),
%[761]% DTANHENT NAMES FN(DTANH),
EXPENT NAMES FN(EXP),
FLOATENT NAMES FN(FLOAT),
IABSENT NAMES FN(IABS),
%2301% IANDENT NAMES FN(IAND),
%2301% IBCLRENT NAMES FN(IBCLR),
%2301% IBITSENT NAMES FN(IBITS),
%2301% IBSETENT NAMES FN(IBSET),
%1264% ICHARENT NAMES FN(ICHAR),
IDIMENT NAMES FN(IDIM),
IDINTENT NAMES FN(IDINT),
%1241% IDNINTENT NAMES FN(IDNINT),
%2301% IEORENT NAMES FN(IEOR),
IFIXENT NAMES FN(IFIX),
%1264% INDEXENT NAMES FN(INDEX),
INTENT NAMES FN(INT),
%1252% ?INT.CENT NAMES FN(INT.C),
%2301% IORENT NAMES FN(IOR),
%2301% ISHFTENT NAMES FN(ISHFT),
%2301% ISHFTCENT NAMES FN(ISHFTC),
ISIGNENT NAMES FN(ISIGN),
%1264% LENENT NAMES FN(LEN),
%1264% LGEENT NAMES FN(LGE),
%1264% LGTENT NAMES FN(LGT),
%1264% LLEENT NAMES FN(LLE),
%1264% LLTENT NAMES FN(LLT),
%1241% LOGENT NAMES FN(LOG),
%1264% LOG10ENT NAMES FN(LOG10),
%1264% MAXENT NAMES FN(MAX),
MAX0ENT NAMES FN(MAX0),
MAX1ENT NAMES FN(MAX1),
%1264% MINENT NAMES FN(MIN),
MIN0ENT NAMES FN(MIN0),
MIN1ENT NAMES FN(MIN1),
MODENT NAMES FN(MOD),
%1241% NINTENT NAMES FN(NINT),
%1264% ?NOP.CENT NAMES FN(NOP.C),
%1264% ?NOP.DENT NAMES FN(NOP.D),
%1264% ?NOP.IENT NAMES FN(NOP.I),
%1264% ?NOP.RENT NAMES FN(NOP.R),
%2301% NOTENT NAMES FN(NOT),
REALENT NAMES FN(REAL),
%1252% ?REAL.CENT NAMES FN(REAL.C),
SIGNENT NAMES FN(SIGN),
SINENT NAMES FN(SIN),
SINDENT NAMES FN(SIND),
SINHENT NAMES FN(SINH),
SNGLENT NAMES FN(SNGL),
SQRTENT NAMES FN(SQRT),
%[761]% TANENT NAMES FN(TAN),
TANHENT NAMES FN(TANH) );
!
! End of library function name table
BIND AFTERLIB = PLIT(ONEAFTERLIB GLOBALLY NAMES 0);
! Generic Functions:
! For each generic function, there is a four word entry indicating the
! actual fn to be used, depending on the argument type given to the
! generic. The types are INTEGER, REAL, DOUBLE PRECISION, and COMPLEX
! (in that order). For each arg-type, there is a pointer to the entry
! in the function table for the actual fn to be used or ILGARGTYPE
! saying this arg type is illegal.
BIND ABSGENTB =
PLIT (IABSENT,ABSENT,DABSENT,CABSENT); !ABS
%1241% BIND ACOSGENTB =
%1241% PLIT (ILGARGTYPE,ACOSENT,DACOSENT,ILGARGTYPE); !ACOS
%1241% BIND AINTGENTB =
%1241% PLIT (ILGARGTYPE,AINTENT,DINTENT,ILGARGTYPE); !AINT
BIND ALOGGENTB =
PLIT (ILGARGTYPE,ALOGENT,DLOGENT,CLOGENT); !ALOG
BIND ALOG10GENTB=
PLIT (ILGARGTYPE,ALOG10ENT,DLOG10ENT,ILGARGTYPE); !ALOG10
BIND AMAX1GENTB =
PLIT (ILGARGTYPE,AMAX1ENT,DMAX1ENT,ILGARGTYPE); !AMAX1
BIND AMIN1GENTB =
PLIT (ILGARGTYPE,AMIN1ENT,DMIN1ENT,ILGARGTYPE); !AMIN1
%1241% BIND ANINTGENTB =
%1241% PLIT (ILGARGTYPE,ANINTENT,DNINTENT,ILGARGTYPE); !ANINT
%1241% BIND ASINGENTB =
%1241% PLIT (ILGARGTYPE,ASINENT,DASINENT,ILGARGTYPE); !ASIN
BIND ATANGENTB =
PLIT (ILGARGTYPE,ATANENT,DATANENT,ILGARGTYPE); !ATAN
BIND ATAN2GENTB =
PLIT (ILGARGTYPE,ATAN2ENT,DATAN2ENT,ILGARGTYPE); !ATAN2
%1252% BIND ?CMP1.RGENTB =
%1264% PLIT (?CMP1.IENT,?CMP1.RENT,?CMP1.DENT,?NOP.CENT); !CMP1.R
%1252% BIND CMPLXGENTB =
%1264% PLIT (?CMPL.IENT,CMPLXENT,?CMPL.DENT,?CMPL.CENT); !CMPLX
BIND COSGENTB =
PLIT (ILGARGTYPE,COSENT,DCOSENT,CCOSENT); !COS
%1241% BIND COSHGENTB =
%1241% PLIT (ILGARGTYPE,COSHENT,DCOSHENT,ILGARGTYPE); !COSH
%1252% BIND DBLEGENTB =
%1264% PLIT(?DBLE.IENT,DBLEENT,?NOP.DENT,?DBLE.CENT); !DBLE
%1241% BIND DIMGENTB =
%1241% PLIT (IDIMENT,DIMENT,DDIMENT,ILGARGTYPE); !DIM
BIND EXPGENTB =
PLIT (ILGARGTYPE,EXPENT,DEXPENT,CEXPENT); !EXP
BIND INTGENTB =
%1264% PLIT (?NOP.IENT,INTENT,IDINTENT,?INT.CENT); !INT
%1241% BIND LOGGENTB =
%1241% PLIT (ILGARGTYPE,ALOGENT,DLOGENT,CLOGENT); !LOG
%1241% BIND LOG10GENTB =
%1241% PLIT (ILGARGTYPE,ALOG10ENT,DLOG10ENT,ILGARGTYPE); !LOG10
%1241% BIND MAXGENTB =
%1241% PLIT (MAX0ENT,AMAX1ENT,DMAX1ENT,ILGARGTYPE); !MAX
%1241% BIND MINGENTB =
%1241% PLIT (MIN0ENT,AMIN1ENT,DMIN1ENT,ILGARGTYPE); !MIN
BIND MODGENTB =
PLIT (MODENT,AMODENT,DMODENT,ILGARGTYPE); !MOD
%1241% BIND NINTGENTB =
%1241% PLIT (ILGARGTYPE,NINTENT,IDNINTENT,ILGARGTYPE); !NINT
%1252% BIND REALGENTB =
%1264% PLIT (REALENT,?NOP.RENT,SNGLENT,?REAL.CENT); !REAL
BIND SIGNGENTB =
PLIT (ISIGNENT,SIGNENT,DSIGNENT,ILGARGTYPE); !SIGN
BIND SINGENTB =
PLIT (ILGARGTYPE,SINENT,DSINENT,CSINENT); !SIN
%1241% BIND SINHGENTB =
%1241% PLIT (ILGARGTYPE,SINHENT,DSINHENT,ILGARGTYPE); !SINH
BIND SQRTGENTB =
PLIT (ILGARGTYPE,SQRTENT,DSQRTENT,CSQRTENT); !SQRT
%1241% BIND TANGENTB =
%1241% PLIT (ILGARGTYPE,TANENT,DTANENT,ILGARGTYPE); !TAN
%1241% BIND TANHGENTB =
%1241% PLIT (ILGARGTYPE,TANHENT,DTANHENT,ILGARGTYPE); !TANH
! Macro for attributes
MACRO ATT(ARGTYP,RESTYP,ARGCT,INLINFLG,GENERFLG,NEWOPR,GENTBPTR,GENSPGEN,FOLDTOCONST)=
! ATT(B,C,D,E,F,G,H,I,J)
! B - The type of the argument of the function
! C - The type of the result of the function
! D - The number of arguments
! E - Bit if function is in line eligible
! F - Bit if generic function name
! G - The operator to be substituted if in line fn
! H - For generic fns; Points to a sub-table that indicates
! which actual fn to use for each arg type.
! I - Bit if generic but non-specific name
! J - Bit if possible to fold to a constant at compile time
! First word
((INLINFLG^35) !Bit 0 is flag for inline fn
OR (1^34) !Bit 1 is always set (in SYMTAB is
! flag for Lib Fn)
OR (GENERFLG^33) !Bit 2 is generic fn flag
OR (ARGTYP^28) !Bits 3-7 give VALTYPE for arg
OR (RESTYP^23) !Bits 8-12 give VALTYPE for result
OR (ARGCT^18) !Bits 13-17 give number of args
OR NEWOPR), !Right-half-wd gives the operator to
! be substituted if INLINFLG is set
! Second word
%1270% ((GENSPGEN^35) !Bit 0 is flag for generic function
%1270% ! which has no specific name.
%1567% OR (FOLDTOCONST^34) !Bit 1 signifies that this function
%1567% ! may be able to be folded into a const
%1270% OR (GENTBPTR)<0,0>)$; !For generic fns - The 2nd Wd points to
! a 4 Wd sub-table that indicates which
! actual Fn to use for each arg type
! "Imaginary" type conversion to make NOP functions inline
! (functions are later removed and these keeps the names in the
! symbol table from being put out to program listings). Not put
! in TABLES.BLI, since these are not executed functions.
BIND
%1264% CTOCOP = OPERC(COMPLEX,TYPECNV,FROMCMPLX),
%1264% DTODOP = OPERC(DOUBLPREC,TYPECNV,FROMDBLPRC),
%1264% ITOIOP = OPERC(INTEGER,TYPECNV,FROMINT),
%1264% RTOROP = OPERC(REAL,TYPECNV,FROMREAL);
%1567% BIND CF=1, ! Constant folding is possible
%2352% GEN=1, ! Is generic function
%2352% INL=1; ! Is inline function
! The following table contains the default types for identifiers
! (abbreviated to save space).
%2024% BIND IN=INTEGER,
%2024% RL=REAL,
%2024% DB=DOUBLPREC,
%2024% CX=COMPLEX,
%2024% LG=LOGICAL,
%2024% CH=CHARACTER;
! The Function Attribute Table
!
! ATT(Type of function, Type of result, #of args, Inline bit,
! Generic bit, Inline function label, Pointer for Generic fn,
! Generic but not specific bit, Fn may be folded to constant)
!
BIND ZATTRIBUTES = PLIT(LIBATTRIBUTES GLOBALLY NAMES
ATT(RL,RL,1,INL,GEN,ABSFNOP,ABSGENTB,0,0), !ABS
%1241% ATT(RL,RL,1,0,GEN,0,ACOSGENTB,0,0), !ACOS
ATT(CX,RL,1,0,0,0,-1,0,0), !AIMAG
%1241% ATT(RL,RL,1,0,GEN,0,AINTGENTB,0,0), !AINT
ATT(RL,RL,1,0,GEN,0,ALOGGENTB,0,0), !ALOG
ATT(RL,RL,1,0,GEN,0,ALOG10GENTB,0,0), !ALOG10
ATT(IN,RL,VARGCTFLG,0,0,0,-1,0,0), !AMAX0
ATT(RL,RL,VARGCTFLG,INL,GEN,AMAXFNOP,AMAX1GENTB,0,0), !AMAX1
ATT(IN,RL,VARGCTFLG,0,0,0,-1,0,0), !AMIN0
ATT(RL,RL,VARGCTFLG,INL,GEN,AMINFNOP,AMIN1GENTB,0,0), !AMIN1
ATT(RL,RL,2,0,0,0,-1,0,0), !AMOD
%1241% ATT(RL,RL,1,0,GEN,0,ANINTGENTB,0,0), !ANINT
%1241% ATT(RL,RL,1,0,GEN,0,ASINGENTB,0,0), !ASIN
ATT(RL,RL,1,0,GEN,0,ATANGENTB,0,0), !ATAN
ATT(RL,RL,2,0,GEN,0,ATAN2GENTB,0,0), !ATAN2
%2301% ATT(IN,LG,2,0,0,0,0,0,0), !BTEST
ATT(CX,RL,1,0,0,0,-1,0,0), !CABS
ATT(CX,CX,1,0,0,0,-1,0,0), !CCOS
%[761]% ATT(DB,DB,1,0,0,0,-1,0,0), !CDABS
ATT(CX,CX,1,0,0,0,-1,0,0), !CEXP
%1567% ATT(IN,CH,1,INL,0,CHARFNOP,-1,0,CF), !CHAR
ATT(CX,CX,1,0,0,0,-1,0,0), !CLOG
%1252% ATT(DB,CX,1,INL,0,CMPDOP,-1,0,0), !CMP1.D
%1252% ATT(IN,CX,1,INL,0,CMPIOP,-1,0,0), !CMP1.I
%1270% ATT(RL,CX,1,INL,GEN,CMPLXOP,?CMP1.RGENTB,1,0),!CMP1.R
%1264% ATT(CX,CX,2,0,0,0,-1,0,0), !CMPL.C
%1252% ATT(DB,CX,2,0,0,0,-1,0,0), !CMPL.D
%1252% ATT(IN,CX,2,0,0,0,-1,0,0), !CMPL.I
%1270% ATT(RL,CX,2,INL,GEN,CMPLXFNOP,CMPLXGENTB,1,0), !CMPLX
ATT(CX,CX,1,0,0,0,-1,0,0), !CONJG
ATT(RL,RL,1,0,GEN,0,COSGENTB,0,0), !COS
ATT(RL,RL,1,0,0,0,-1,0,0), !COSD
%1241% ATT(RL,RL,1,0,GEN,0,COSHGENTB,0,0), !COSH
%[761]% ATT(RL,RL,1,0,0,0,-1,0,0), !COTAN
ATT(CX,CX,1,0,0,0,-1,0,0), !CSIN
ATT(CX,CX,1,0,0,0,-1,0,0), !CSQRT
ATT(DB,DB,1,INL,0,DABSFNOP,-1,0,0), !DABS
%[761]% ATT(DB,DB,1,0,0,0,-1,0,0), !DACOS
%[761]% ATT(DB,DB,1,0,0,0,-1,0,0), !DASIN
ATT(DB,DB,1,0,0,0,-1,0,0), !DATAN
ATT(DB,DB,2,0,0,0,-1,0,0), !DATAN2
%1270% ATT(RL,DB,1,INL,GEN,DBLEOP,DBLEGENTB,1,0), !DBLE
%1252% ATT(CX,DB,1,INL,0,DBLCOP,-1,0,0), !DBLE.C
%1252% ATT(IN,DB,1,INL,0,DBLIOP,-1,0,0), !DBLE.I
ATT(DB,DB,1,0,0,0,-1,0,0), !DCOS
%[761]% ATT(DB,DB,1,0,0,0,-1,0,0), !DCOSH
%[761]% ATT(DB,DB,1,0,0,0,-1,0,0), !DCOTAN
%1241% ATT(DB,DB,2,0,0,0,-1,0,0), !DDIM
ATT(DB,DB,1,0,0,0,-1,0,0), !DEXP
ATT(IN,DB,1,INL,0,DFLOATOP,-1,0,0), !DFLOAT
%1241% ATT(RL,RL,2,INL,GEN,DIMFNOP,DIMGENTB,0,0), !DIM
%1241% ATT(DB,DB,1,0,0,0,-1,0,0), !DINT
ATT(DB,DB,1,0,0,0,-1,0,0), !DLOG
ATT(DB,DB,1,0,0,0,-1,0,0), !DLOG10
ATT(DB,DB,VARGCTFLG,0,0,0,-1,0,0), !DMAX1
ATT(DB,DB,VARGCTFLG,0,0,0,-1,0,0), !DMIN1
ATT(DB,DB,2,0,0,0,-1,0,0), !DMOD
%1241% ATT(DB,DB,1,0,0,0,-1,0,0), !DNINT
%1241% ATT(RL,DB,2,0,0,0,-1,0,0), !DPROD
ATT(DB,DB,2,0,0,0,-1,0,0), !DSIGN
ATT(DB,DB,1,0,0,0,-1,0,0), !DSIN
%[761]% ATT(DB,DB,1,0,0,0,-1,0,0), !DSINH
ATT(DB,DB,1,0,0,0,-1,0,0), !DSQRT
%[761]% ATT(DB,DB,1,0,0,0,-1,0,0), !DTAN
%[761]% ATT(DB,DB,1,0,0,0,-1,0,0), !DTANH
ATT(RL,RL,1,0,GEN,0,EXPGENTB,0,0), !EXP
ATT(IN,RL,1,INL,0,FLOATOP,-1,0,0), !FLOAT
ATT(IN,IN,1,INL,0,IABSFNOP,-1,0,0), !IABS
%2352% ATT(IN,IN,2,INL,0,IANDFNOP,-1,0,CF), !IAND
%2301% ATT(IN,IN,2,0,0,0,0,0,0), !IBCLR
%2301% ATT(IN,IN,3,0,0,0,0,0,0), !IBITS
%2301% ATT(IN,IN,2,0,0,0,0,0,0), !IBSET
%1567% ATT(CH,IN,1,INL,0,ICHARFNOP,-1,0,CF), !ICHAR
ATT(IN,IN,2,0,0,0,-1,0,0), !IDIM
ATT(DB,IN,1,INL,0,IDINTOP,-1,0,0), !IDINT
%1241% ATT(DB,IN,1,0,0,0,-1,0,0), !IDNINT
%2301% ATT(IN,IN,2,INL,0,IEORFNOP,-1,0,CF), !IEOR
ATT(RL,IN,1,INL,0,IFIXOP,-1,0,0), !IFIX
%1264% ATT(CH,IN,2,0,0,0,-1,0,0), !INDEX
ATT(RL,IN,1,INL,GEN,INTOP,INTGENTB,0,0), !INT
%1252% ATT(CX,IN,1,INL,0,INTCOP,-1,0,0), !INT.C
%2352% ATT(IN,IN,2,INL,0,IORFNOP,-1,0,CF), !IOR
%2301% ATT(IN,IN,2,0,0,0,0,0,0), !ISHFT
%2301% ATT(IN,IN,3,0,0,0,0,0,0), !ISHFTC
ATT(IN,IN,2,INL,0,ISIGNFNOP,-1,0,0), !ISIGN
%1651% LENATTRIB GLOBALLY NAMES
%1567% ATT(CH,IN,1,INL,0,LENFNOP,-1,0,CF), !LEN
%1264% ATT(CH,LG,2,0,0,0,-1,0,0), !LGE
%1264% ATT(CH,LG,2,0,0,0,-1,0,0), !LGT
%1264% ATT(CH,LG,2,0,0,0,-1,0,0), !LLE
%1264% ATT(CH,LG,2,0,0,0,-1,0,0), !LLT
%1270% ATT(RL,RL,1,0,GEN,0,LOGGENTB,1,0), !LOG
%1270% ATT(RL,RL,1,0,GEN,0,LOG10GENTB,1,0), !LOG10
%1270% ATT(RL,RL,VARGCTFLG,0,GEN,0,MAXGENTB,1,0), !MAX
ATT(IN,IN,VARGCTFLG,INL,0,MAXFNOP,-1,0,0), !MAX0
ATT(RL,IN,VARGCTFLG,0,0,0,-1,0,0), !MAX1
%1270% ATT(RL,RL,VARGCTFLG,0,GEN,0,MINGENTB,1,0), !MIN
ATT(IN,IN,VARGCTFLG,INL,0,MINFNOP,-1,0,0), !MIN0
ATT(RL,IN,VARGCTFLG,0,0,0,-1,0,0), !MIN1
ATT(IN,IN,2,INL,GEN,MODFNOP,MODGENTB,0,0), !MOD
%1241% ATT(RL,IN,1,0,GEN,0,NINTGENTB,0,0), !NINT
%1264% ATT(CX,CX,1,INL,0,CTOCOP,-1,0,0), !Complex NOP.
%1264% ATT(DB,DB,1,INL,0,DTODOP,-1,0,0), !Double prec NOP.
%1264% ATT(IN,IN,1,INL,0,ITOIOP,-1,0,0), !Integer NOP.
%1264% ATT(RL,RL,1,INL,0,RTOROP,-1,0,0), !Real NOP.
%2301% ATT(IN,IN,1,0,0,0,0,0,0), !NOT
%1252% ATT(IN,RL,1,INL,GEN,REALIOP,REALGENTB,0,0), !REAL
%1252% ATT(CX,RL,1,INL,0,REALOP,-1,0,0), !REAL.C
ATT(RL,RL,2,INL,GEN,SIGNFNOP,SIGNGENTB,0,0), !SIGN
ATT(RL,RL,1,0,GEN,0,SINGENTB,0,0), !SIN
ATT(RL,RL,1,0,0,0,-1,0,0), !SIND
%1241% ATT(RL,RL,1,0,GEN,0,SINHGENTB,0,0), !SINH
ATT(DB,RL,1,INL,0,SNGLOP,-1,0,0), !SNGL
ATT(RL,RL,1,0,GEN,0,SQRTGENTB,0,0), !SQRT
%1241% ATT(RL,RL,1,0,GEN,0,TANGENTB,0,0), !TAN
%1241% ATT(RL,RL,1,0,GEN,0,TANHGENTB,0,0) !TANH
);
!END OF LIBRARY ATTRIBUTES
!
!
%(***TABLE OF WDS IN WHICH IN SUCCESSIVE WDS HAVE 1 0-BIT, INDEX INTO THIS
TABLE IN ORDER TO CLEAR A GIVEN BIT***)%
BIND DMY= PLIT (
NOT(1^36), !IN CLRWDS-1, HAVE A WORD IN WHICH ALL BITS
! ARE SET SO THAT WHEN "CLEAR" THE BIT FOR -1
! WILL DO NOTHING
CLRWDS GLOBALLY NAMES NOT(1^35),
NOT(1^34),
NOT(1^33),
NOT(1^32),
NOT(1^31),
NOT(1^30),
NOT(1^29),
NOT(1^28),
NOT(1^27),
NOT(1^26),
NOT(1^25),
NOT(1^24),
NOT(1^23),
NOT(1^22),
NOT(1^21),
NOT(1^20),
NOT(1^19),
NOT(1^18),
NOT(1^17),
NOT(1^16),
NOT(1^15),
NOT(1^14),
NOT(1^13),
NOT(1^12),
NOT(1^11),
NOT(1^10),
NOT(1^9),
NOT(1^8),
NOT(1^7),
NOT(1^6),
NOT(1^5),
NOT(1^4),
NOT(1^3),
NOT(1^2),
NOT(1^1),
NOT(1^0) );
!***********************************************************************
! These globals are not to be set to zero at the beginning of each
! program unit. Phase I needs them.
!***********************************************************************
GLOBAL
%1133% RTIME, ! Run time for this program unit
%1133% CTIME, ! Time of day for connect time
%1633% PHTIME[6], ! Runtime per phaze
%1633% PBTIME, ! Runtime at the beginning of the current phase
BGSTBF, !HOLDS THE AMOUNT OF CORE NEEDED BY THE
!LARGEST INPUT FILE. CALCULATED IN
!COMMAN AND USED WHEN THE FIRST INPUT
!FILE IS OPENED
%2447% SAVFLG[INCLMAX], !FLGREG SAVE AREA FOR INCLUDED FILES
DEBGSW, ! VALUE OF THE DEBUG SWITCH SET BY SCAN
ARINGLEFT, ! USED FOR BUFFERING OF INPUT
BUGOUT, ! INTERNAL OUTPUT SWITCH VALUE
FLAGS2, !SECONDARY FLAG REGISTER - SEE IOFLG.BLI
![767] ADD F2; REMOVE GFMCOK (NOW IN FIRST)
F2, ![767] SECONDARY SWITCH REGISTER - SEE IOFLG.BLI
CURPOOLEND, ! CURRENT END OF INPUT IN POOL
CURPTR, ! CURRENT POOL POSITION POINTER
CHARPOS, ! CHARACTER POSITION OF CURRENT
! CHARACTER ON PRINT LINE
LINEPTR, ! POINTER TO THE CHARACTER-1 OF THE BEGINNING
! OF THE CURRENT LINE
SEQLAST, ! IF SET TO 1 IT INDICATES THAT THE LINE BEGINNING THIS
! PROGRAM UNIT HAS A LINE SEQUENCE NUMBER IN LINELINE
LINENO[2], ! AREA IN WHICH TO BUILD THE LINE NO
PAGELINE, ! CURRENT LINE ON THE PAGE 59 TO 0
LINELINE, ! CURRENT LINE NUMBER
HEADSTR[20], ! AREA TO BUILD HEADING
BASENO, ! ARITHMETIC BASE FOR DIGITS()
HEADPTR, ! BYTE POINTER FOR HEADING
PAGEPTR, ! BYTE POINTER TO POSITION TO INSERT PAGE #
%1504% BIGARY, ! Holds size of smallest array that will go
! into .LARG. for extended addressing
%2251% BIGCONCAT, ! Size of the biggest concatenation to allow as
%2251% ! as a "fixed length" or "known maximum length"
%2251% ! concatenation. Maximum size of non dynamic
%2251% ! concatenation.
%2443% LONAME[SYMLEN+1], ! Name of the low (data) PSECT in SIXBIT.
%2310% ! Set in command scanner.
%2443% HINAME[SYMLEN+1]; ! Name of the high (code) PSECT in SIXBIT.
%2310% ! Set in command scanner.
!***********************************************************************
!
! Define the default values for LONAME and HINAME.
!
! DEFLON is the default value for LONAME. DEFHIN is the default
! value for HINAME. DEFLONXXX and DEFHINXXX exist to get around
! a bug in BLISS: it thinks (PLIT ' ')<0,0>-1 is not a linktime
! constant.
!***********************************************************************
BIND
%2454% DEFLONXX = (PLIT SIXBIT '.DATA.')-1, !Default value of LONAME
%2454% DEFHINXX = (PLIT SIXBIT '.CODE.')-1; !Default value of HINAME
GLOBAL BIND
%2454% DEFLON = DEFLONXX<0,0>, !Default value of LONAME
%2454% DEFHIN = DEFHINXX<0,0>; !Default value of HINAME
%2343% ! The following tables are for /EXTEND:[NO]COMMON switch
GLOBAL BIND
%2343% ECTABL = 100, ! Number of common blocks which can be named in a
%2343% ! /EXTEND switch.
%2343% ECHSHL = 31, ! Length of the hash table for list of COMMON blks.
%2343% ECRECL = 2; ! Size of an entry in ECTAB
GLOBAL
%2343% ECTAB[ECTABL*ECRECL], ! Table of COMMON blocks named in /EXTEND
%2343% ECUSED, ! Number of entries in ECTAB
%2343% ECHASH[ECHSHL], ! Hash table of COMMON blocks named in /EXTEND switch.
%2343% DFCMPS, ! Default psect for COMMON blocks (set by /EXTEND).
%2322% VMSIZE; ! Size of virtual memory for this compile. This
%2322% ! is set by the command scanner depending on whether
%2322% ! /EXTEND is set.
END
END
ELUDOM