!----------------------------------------------------------------------- !3. EXTERNAL NAMES: ! ! THESE ARE EXTERNAL VARIABLES WHICH HAVE GENERAL USES. ALL NAMES ! ARE DECLARED EXTERNAL AT THIS LOCATION. FOLLOWING THEM IS A VERY ! BRIEF AND CRYPTIC DESCRIPTION OF THEIR USES. External flg_enable : Boolean, ! ENABLE ANYWHERE INSIDE CURRENT BLOCK BLOCKLEVEL : Integer, ! NUMBER OF BLOCKS OUTSIDE CURRENT BLOCK BRAK1 : Ref CELL, BRAK2 : Ref CELL, CODENAME : Vector[5], CODESIZE : Integer, ! NO. OF PDP-11 WORDS OF CODE PRODUCED CSNAME : Ref Vector[,Byte],! CURRENT CSECT NAME CSFLAG : Boolean, ! TELLS WHO OUTPUT LAST '.CSECT' CURROUT : Ref ST, ! NAME OF CURRENT ROUTINE, IF ANY DATASIZE : Integer, ! NO. OF PDP-11 WORDS OF STORAGE RESERVED DEL : Integer, OLDDELI : Integer, OLDDEL : Integer, pos_atom : Integer, sym_vector : Ref ST, sym_define : Ref ST, unit_size : Integer, LEX_FLAGS : BITVECTOR[32], num_actuals : Integer, sym_bliss : Ref ST, DTPF : Vector, ! INVERSE OF DELIMITER TABLE(DT) LASTPUR : Ref ST, ! SAVED LIST OF PURGED SYMBOL TABLE ENTRIES LOC : Integer, LOOPDEPTH : Integer, ! CURRENT LOOP DEPTH DURING LEXSYNFLO, TNBIND MAINDECL : Boolean, ! COMPILING MAIN MODULE MAXLOCALS : Integer, ! MAX # LOCALS IN A ROUTINE MAXPARMS : Integer, ! MAX # PUSHED PARAMETERS IN ANY RTN CALL MODDONE : Boolean, ! FINISHED PARSING OUTER MODULE CODE MODNAME : Ref Vector[,Byte],! MODULE NAME MODMAIN : Ref Vector[,Byte],! NAME OF MAIN MODULE NCELL : Ref CELL, NEXTGLOBAL : Integer, ! NUMBER OF LAST GLOBAL ASSIGNED ! (OFFSET INTO GLOBAL REGION). NEXTLOCAL : Integer, ! NUMBER OF LAST LOCAL ASSIGNED ! (OFFSET INTO LOCAL REGION -- STACK). NEXTOWN : Integer, ! NUMBER OF LAST OWN ASSIGNED ! (OFFSET INTO OWN REGION). NINLINES : Integer, ! NUMBER OF "INLINES" IN CURRENT MODULE NLHEAD : Ref ST, NLINES : Integer, ! NUMBER OF LINES ON CURRENT OUTPUT PAGE. NOTREE : Integer, ! STACK OF BITS; BIT ON TOP TURNS OFF GENGT. PBUFF : Ref Vector[,Byte],! BYTE POINTER TO BUFF. PURGED : Ref ST, ! POINTS TO LINKED LIST OF PURGED ST ENTRIES RESERVED : Integer, ! BIT MASK OF RESERVED REGISTERS RBLOCKLEVEL : Integer, ! BLOCK LEVEL AT ROUTINE BODY LEVEL SSTKLEN : Integer, ! NO. OF WORDS IN RUNTIME STACK STATICSIZE : Integer, STRUCLEVEL : Integer, ! BLOCK LEVEL AT STRUCTURE DECLARATION LEVEL SYM : Ref GT, TNCHAIN : TNLSTHDR, ! CHAIN OF TEMP NAME CELLS sym_trap : Ref ST, VTEMPS : Ref PLSTSTK, VTN : Ref GT, FLAGS : Integer, SCANTYPE : Integer, SECTFLAGS : Integer, GETLCNT : Integer, INENABLE : Boolean, NUMPARMS : Integer, ABCOUNT : Integer, LEVEL : Integer, LEVELINC : Integer, flg_plit : Boolean, CSCNAME : Ref NT, CSPNAME : Ref NT, CSDNAME : Ref NT, CSGNAME : Ref NT, CSONAME : Ref NT, DYTEMPS : Integer, FINRTNSIZE : Integer, IDENTFLG : Integer, IDENTLEX : Integer, MAXLOCALS : Integer, ! THE FOLLOWING "LOCATION" POINTERS REFER TO THE POSITION OF SOME ! PIECE OF SOURCE TEXT, AND ARE IN THE FORMAT: ! (LINE NUMBER) ^ 22 + (CHARACTER POSITION WITHIN LINE) ! LASTEND : Integer, pos_good : Integer, ! LOCATION OF LAST "GOOD" CLOSING BRACKET pos_open : Integer, ! LOCATION OF "CURRENT" OPEN BRACKET pos_char : Integer, ! LOCATION OF LAST CHARACTER SCANNED pos_del : Integer, ! LOCATION OF LAST DELIMITER SCANNED pos_sym : Integer, ! LOCATION OF LAST NON-DELIMITER SCANNED pos_scan : Integer, ! VALUE OF NATOM WHEN SCANTYPE LAST CHANGED ! (START OF STRING, COMMENT, OR MACRO DEFINITION) ERRINFO : Vector[2], ! TWO WORDS OF EXTRA INFORMATION WHICH MAY ! OPTIONALLY BE FILLED DURING A CALL ON ERROR, ! ERRPRNT, OR WARNEM (AND USED BY ERROUT). ERRLEVEL : Boolean, ! TRUE IF "PANIC SCAN" IS BEING DONE AND ERRORS ! ARE TO BE IGNORED. num_error : Integer, ! COUNT OF FATAL ERRORS FOUND num_warning : Integer, ! COUNT OF NON-FATAL ERRORS FOUND MANYACTS : Integer, ! CURRENT STRUCTURE ACCESS MAY HAVE ! INDEFINITELY MANY ACTUAL PARAMETERS. INDECL : Integer, DEVICE : Integer, flg_stack_addr : Boolean, STK : Vector, ! THE STACK ITSELF TOS : Integer, ! INDEX OF THE (CURRENT) TOP OF STACK LASTMARK : Integer, ! INDEX OF THE LAST FLOOR-MARK ON THE STACK GTHASH : Vector[MAXDELIMITER+2], STEMPS : Ref PLSTSTK, DTEMPS : Ref PLSTSTK, LON : Integer, FON : Integer, REGS : Vector[6,Quad], STSZ : Vector, HT_NAME : Vector[HTSIZE,Quad], HT_THREAD : Vector[HTSIZE,Quad], DT : Vector[128,Quad]; External tbl_registers : Vector[9,Quad]; Bind VVREG = tbl_registers[0] : Ref ST, ! THE PREDEFINED REGISTERS SPREG = tbl_registers[1] : Ref ST, ! VREG, SP, AND PC PCREG = tbl_registers[2] : Ref ST, RR0 = tbl_registers[3] : Ref ST, RR1 = tbl_registers[4] : Ref ST, RR2 = tbl_registers[5] : Ref ST, RR3 = tbl_registers[6] : Ref ST, RR4 = tbl_registers[7] : Ref ST, RR5 = tbl_registers[8] : Ref ST; External sym_remainder : Ref ST; ! THE STANDARD SUPPORT ROUTINES (AND VARIABLES) External tbl_symbols : Vector[25,Quad]; ! ARITHMETIC SUPPORT Bind LEXMUL = tbl_symbols[ 0] : Ref ST, ! MUL (11/20 MULTIPLY ROUTINE) LEXMOD = tbl_symbols[ 1] : Ref ST, ! MODR (11/20 MODULO ROUTINE) LEXDIV = tbl_symbols[ 2] : Ref ST, ! DIVR (11/20 DIVIDE ROUTINE) LEXROT = tbl_symbols[ 3] : Ref ST, ! ROT (ROTATE ROUTINE) LEXSHIFT = tbl_symbols[ 4] : Ref ST, ! SHIFT (11/20 SHIFT ROUTINE) ! REGISTER SAVING/RESTORING LXSAV2 = tbl_symbols[ 5] : Ref ST, LXSAV3 = tbl_symbols[ 6] : Ref ST, LXSAV4 = tbl_symbols[ 7] : Ref ST, LXSAV5 = tbl_symbols[ 8] : Ref ST, ! COROUTINE-EXPRESSION SUPPORT LEXCREATE = tbl_symbols[ 9] : Ref ST, ! $CREAT LEXEXCHJ = tbl_symbols[10] : Ref ST, ! EXCHJ LEXBREG = tbl_symbols[11] : Ref ST, ! $BREG (VARIABLE) LEXPREV = tbl_symbols[12] : Ref ST, ! $PREV (VARIABLE) ! SIGNAL-ENABLE SUPPORT LXSIGL = tbl_symbols[13] : Ref ST, ! $SIGNL (SIGNAL ROUTINE) LXSIG1 = tbl_symbols[14] : Ref ST, ! $SIGN1 (SPECIAL ENTRY POINT) LXENAB = tbl_symbols[15] : Ref ST, ! $ENABL (ENABLE ROUTINE) LXSIGV = tbl_symbols[16] : Ref ST, ! SIGVAL (VARIABLE) LXSIGR = tbl_symbols[17] : Ref ST, ! SIGREG (VARIABLE) ! SIX12 SUPPORT LXINT612 = tbl_symbols[18] : Ref ST, ! FOR INITIALIZATION LXY612 = tbl_symbols[19] : Ref ST, ! FOR FIXING-UP DURING SIGNALS LXE612 = tbl_symbols[20] : Ref ST, ! FOR ROUTINE ENTRY LXX612 = tbl_symbols[21] : Ref ST, ! FOR ROUTINE EXIT ! HYDRA SUPPORT LXHLNK = tbl_symbols[22] : Ref ST, ! $LINK (HYDRA LINK FOR ROUTINE CALLS) LXIHLNK = tbl_symbols[23] : Ref ST, ! $ILINK (IHYDRA LINK FOR ROUTINE CALLS) LXHLTB = tbl_symbols[24] : Ref ST; ! LINKTB (HYDRA LINK TABLE) ! linkage types External EXCHJLNKG : Ref ST, SPEC1LNKG : Ref ST, SPEC2LNKG : Ref ST; ! THE SPECIAL FUNCTIONS External tbl_builtins : Vector[11,Quad]; Bind LXHALT = tbl_builtins[ 0] : Ref ST, LXRESET = tbl_builtins[ 1] : Ref ST, LXWAIT = tbl_builtins[ 2] : Ref ST, LXNOP = tbl_builtins[ 3] : Ref ST, LXSWAB = tbl_builtins[ 4] : Ref ST, LXCARRY = tbl_builtins[ 5] : Ref ST, LXOVFLOW = tbl_builtins[ 6] : Ref ST, LXMFPI = tbl_builtins[ 7] : Ref ST, LXMFPD = tbl_builtins[ 8] : Ref ST, LXMTPI = tbl_builtins[ 9] : Ref ST, LXMTPD = tbl_builtins[10] : Ref ST; Macro STRUCP = lex_flags[0] %, MACRCP = lex_flags[1] %, SIZEEXP = lex_flags[2] %, QUOTE_SYM = lex_flags[3] %, QUOTE_DEL = lex_flags[4] %, QUOTED = lex_flags[5] %, EXPANDERR = lex_flags[6] %, RESWD = lex_flags[7] %;