mirror of
https://github.com/PDP-10/stacken.git
synced 2026-03-01 09:21:15 +00:00
771 lines
26 KiB
Plaintext
771 lines
26 KiB
Plaintext
UNIVERSAL LNKLOW - LOW SEGMENT DATA MODULE FOR LINK
|
||
SUBTTL D.M.NIXON/DMN/JLd/JBC/JNG/MCHC/DZN/PAH/PY/JBS/HD/RJF 5-Feb-88
|
||
|
||
|
||
;COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1973,1986,1988.
|
||
; 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.
|
||
|
||
|
||
SEARCH LNKPAR,OVRPAR,MACTEN,UUOSYM,SCNMAC
|
||
SALL
|
||
|
||
|
||
CUSTVR==0 ;CUSTOMER VERSION
|
||
DECVER==6 ;DEC VERSION
|
||
DECMVR==0 ;DEC MINOR VERSION
|
||
DECEVR==2417 ;DEC EDIT VERSION
|
||
|
||
LOC 137
|
||
.JBVER::<BYTE(3)CUSTVR(9)DECVER(6)DECMVR(18)DECEVR>
|
||
RELOC
|
||
SUBTTL REVISION HISTORY
|
||
|
||
|
||
;START OF VERSION 1A
|
||
;44 ADD ASCIZ TEXT BLOCK
|
||
;45 REMOVE INSYMSW (HASH INITIAL SYMBOLS AT ASSEMBLY TIME)
|
||
;46 ADD KLUDGE FEATURE
|
||
;55 STORE .JBVER IN .RBVER (USE VERNUM)
|
||
;61 ADD PAGING INFO FOR FX AND GS
|
||
;65 TENEX SPEEDUP
|
||
;100 ADD NEW LABELS FOR LNKCOR
|
||
;104 ADD WORD FOR PTR TO FAIL BLOCK HEADERS
|
||
;106 ADD SOFTWARE ORIGIN OF LOW/HIGH SEGMENTS
|
||
;107 REPLACE KLUDGE WITH MIXFOR
|
||
|
||
;START OF VERSION 2
|
||
;135 ADD OVERLAY FACILITY
|
||
;137 ADD SUPPORT FOR PLOT PACKAGE
|
||
;170 CHANGE IODATA MACRO TO ALLOW DIFFERENT MODES FOR PLOT SWITCH
|
||
;176 CHANGE START BLOCK (7) TO ALLOW 2 WORDS
|
||
;207 MAKE OVERLAY OVERHEAD TABLES SMALLER
|
||
|
||
;START OF VERSION 2B
|
||
;225 ADD SUPPORT FOR PSECT (MACRO VERSION 51)
|
||
;262 Add a flag to indicate /LINK was seen
|
||
;277 Add marker for PDL to restore stack on LOOKUP error
|
||
;350 DELETE REFERENCES TO RSYM
|
||
;353 REMOVE EDIT 225
|
||
;400 Use UUOSYM definitions for SFD block offsets.
|
||
;411 Add the F.ASCK flag for LNKSCN
|
||
|
||
;START OF VERSION 2C
|
||
;457 Add LIBPRC to indicate processors seen in library.
|
||
;471 Add code for ALGOL debugging system.
|
||
;534 Add F.ASZR for list of specs this text block.
|
||
;557 Clean up the listing for release.
|
||
|
||
;START OF VERSION 3A
|
||
;560 Release on both TOPS-10 and TOPS-20 as LINK version 3A(560)
|
||
;START OF VERSION 4
|
||
;567 Delete PARVAL and PARPTR.
|
||
;600 Reserve LN.PLC locations for phased lowseg code.
|
||
;621 /SAVE and /SSAVE switches generate an EXE file.
|
||
;635 Add ARSIZE storage cell and TMAMAX word.
|
||
;650 Use VM on TOPS-10 if available.
|
||
;674 Allocate the SEGPTH block for GETSEG UUO path block.
|
||
;676 Add POPOFS word.
|
||
;706 Add RC.NTB contains permanent PSECT order for this load.
|
||
;715 Modify SYMSEG to take psect name.
|
||
;720 Allocate 3 words for doing pop loop when moving a block up in core.
|
||
;730 Add S.DEBG to save /DEBUG: file spec for /LINK.
|
||
;731 SEARCH MACTEN,UUOSYM instead of C.
|
||
;732 Add LOWLOC.
|
||
;755 Add TAB.ZE table.
|
||
;761 Add RC.SET for setting relocatable PSECT bit.
|
||
;765 Release on both TOPS-10 and TOPS-20 as LINK version 4(765)
|
||
|
||
;START OF VERSION 4A
|
||
;1101 Delete LSTLOD, add DTAFLG.
|
||
;1120 Delete CPUSN, add OKCPUS.
|
||
;1144 Add DDTMAP to flag that DDT has been mapped in.
|
||
;1172 Add PATLOC.
|
||
;1174 Add NXTGLB, RTNPC and ERCHAN.
|
||
;1204 Add LSTRRV.
|
||
;1217 Clean up the listings for release.
|
||
;1220 Release on both TOPS-10 and TOPS-20 as version 4A(1220).
|
||
|
||
;START OF VERSION 4B
|
||
;1257 Add ROOTAB.
|
||
;1262 Add NOCMX.
|
||
;1264 Add .TEMP2
|
||
;1273 Add HP.S0, HP.S1, HP.S2 to fix problem with RC.HL(1) and RC.HL(2)
|
||
;1274 Add POLLEN to store length of Polish stack.
|
||
;1300 Add BADCORE flag for fixups.
|
||
;1301 Add TABCHR flag for error routines.
|
||
;1304 Add RC.MAP and SLOT2 for handling psects with twoseg.
|
||
;1306 Add MODTYP flag whether current module is twoseg or psect.
|
||
|
||
;START OF VERSION 5
|
||
;1400 Use OVRPAR.MAC for overlay file definitions, add OW table.
|
||
;1401 Add CHAN.JF table on TOPS-20 for native file handling.
|
||
;1402 Add RFLEN on TOPS-20 for REL file handling.
|
||
;1411 Add NONZER for loading into nonzero sections.
|
||
;1423 Add globals for program data vector storage.
|
||
;1434 Add CURTYP global.
|
||
;1442 Add EXTFLG global.
|
||
|
||
;START OF VERSION 5.1
|
||
;1704 Add WRTDAT for writable link table.
|
||
;1747 add storage for global symbols use in maintenance edits at GLBBEG
|
||
;1754 Add SAVCOD and SAVP1 for T.1072 block code.
|
||
;1764 Add word for entry vector length
|
||
;1772 make conditionals around ENTLEN TOPS20 not FTFRK2
|
||
;2002 Add PPTYPE to specify type of overlay plot.
|
||
;2046 Add DYGCNT to count typechecking blocks returned for GC.
|
||
;2053 Add ARGOVL and ARGFXP for argument checking across overlays.
|
||
;2063 Increase the value of .TLEN so that pathblock will fit in .TEMP.
|
||
|
||
;Start of Version 6
|
||
;2200 Make FXSPTR a static array, add FXSBIT for the bits.
|
||
;2202 Remove NONZER and FTFRK2.
|
||
;2210 Allocate block to hold long symbol names
|
||
;2211 Add flag word for /NOJOBDAT switch processor
|
||
;2220 Add flags for long symbol support.
|
||
;2223 Add REDLO and REDHI to store psect names for /REDIRECT.
|
||
;2227 Add CPSECT to store base of list for /PSCOMMON.
|
||
;2237 Add PDMPLN for PDV memory map.
|
||
;2245 Add four words for PDV symbol table vector information.
|
||
;2247 Remove LOWLOC on TOPS-20, remove EXTFLG.
|
||
;2250 Another word for symbol table vector length calculation
|
||
;2254 Remove FBHPTR, add SEGPTR.
|
||
;2255 Remove LSTSYM, replace it with LSTGBL and LSTLCL.
|
||
;2257 Add buffer for ERSTR% string storage during JSYS errors.
|
||
;2270 Implement pagable TP area for typechecking blocks.
|
||
;2277 Add flag word for merging DDT.
|
||
;2300 Remove F40 and FTFORK code.
|
||
;2301 Add FILBLK to store filespec for typeout.
|
||
;2304 Remove 6 temp words defined by 2237, 2245, and 2250.
|
||
;2305 Add VALBLK to hold long symbol used as value.
|
||
;2306 Add DATIME, TOPS-20 style date/time, and NOPDMP for no PDV map.
|
||
;2306 Add NAMBLK to store a long title.
|
||
;2330 Put TOPS-20 locations under a TOPS-20 conditional.
|
||
;2356 Remove unnecessary TOPS20 conditional.
|
||
;2366 Add LC paging areas, TOPS-20 conditionals.
|
||
;2374 Add TPPTR pointer to TP window.
|
||
;2403 New corporate Copywrite statement.
|
||
;2404 Add new block for Load name.
|
||
;2417 Update Copywrite statement to 1988.
|
||
|
||
SUBTTL STORAGE
|
||
|
||
%LOW::!
|
||
OFFSET::BLOCK 1 ;STARTING ADDRESS OFFSET
|
||
TIMEON::BLOCK 1 ;INITIAL TIME FOR LOG FILE
|
||
IFN TOPS20,< ;[2306]
|
||
DATIME::BLOCK 1 ;[2306] ACTUAL (TOPS-20) DATE AND TIME
|
||
>;[2306] IFN TOPS20
|
||
ZCOR::! ;START OF AREA TO ZERO ON INITIAL LOAD
|
||
UUOTRAP::BLOCK 2 ;UUO TRAP HANDLER
|
||
ENTDDT:BLOCK 1 ;DEBUG ENTRY POINT TO DDT
|
||
;TEMPORARY STORAGE SPACE - CAN BE USED ONLY BY INDEPENDENT MODULES
|
||
.TLEN==:100 ;[2063] NUMBER OF WORDS
|
||
.TEMP:: BLOCK .TLEN
|
||
.TEMP2::BLOCK .TLEN ;[1264] SECOND TEMPORARY SPACE
|
||
GLBBEG::BLOCK 10 ;[1747] STORAGE FOR GLOBAL SYMBOLS
|
||
GLBEND:: ;USE IN MAINTENANCE PATCHES
|
||
EPDP:: BLOCK LN.EPD+2 ;EMERGENCY PUSH DOWN STACK
|
||
PDP:: BLOCK 1 ;ORIGINAL NORMAL STACK POINTER
|
||
MARKWP::BLOCK 1 ;STACK MARKER FOR LOOKUP
|
||
; ERROR RESET IN LNKWLD
|
||
CPUHST::BLOCK 1 ;HOST CPU, KA10=0, KI10=1
|
||
CPUTGT::BLOCK 1 ;TARGET CPU, KA10=0, KI10=1
|
||
BATCH:: BLOCK 1 ;-1 IF RUNNING UNDER BATCH
|
||
MYPPN:: BLOCK 1 ;PROJECT-PROGRAMMER NUMBER OF THIS JOB
|
||
PTHARG::BLOCK 1 ;ARG/FLAG FOR PATH UUO
|
||
PTHSCN::BLOCK 1 ;SCAN SWITCH FOR PATH UUO
|
||
PTHDIR::BLOCK LN.DRB ;ACTUAL PATH
|
||
PTHEND::BLOCK 1 ;0 TO FORCE END
|
||
PTHLEN==.-PTHARG
|
||
RC.CUR::BLOCK 1 ;CURRENT PSECT INDEX
|
||
RC.TB:: BLOCK 1 ;POINTER TO RELOCATION TABLES(ORDERED BY CURRENT MODULE)
|
||
RC.NTB::BLOCK 1 ;[706] POINTER TO RELOCATION TABLES( PERMANENT ORDER FOR THIS LOAD)
|
||
RC.MAP::BLOCK 1 ;[1304] POINTER PSECT NUMBERS MAP
|
||
SG.TB:: BLOCK 3 ;PTR TO SEGMENT TABLES (.+1)
|
||
;PTR TO LOW SEG DATA BLOCK
|
||
;PTR TO HIGH SEG DATA BLOCK
|
||
SLOT2:: BLOCK 1 ;[1304] PSECT WHEN SLOT 2 FOR TWOSEG
|
||
REDLO:: BLOCK 1 ;[2223] PSECT TO REDIRECT LOW SEGMENT TO
|
||
REDHI:: BLOCK 1 ;[2223] PSECT TO REDIRECT HIGH SEGMENT TO
|
||
RC.NO:: BLOCK 1 ;NUMBER OF RELOCATION COUNTERS ASSIGNED
|
||
RC.FRE::BLOCK 1 ;NUMBER FREE IN TABLES
|
||
RC.SET::BLOCK 1 ;[761] 0 IF CREATED BY /SET, -1 IF NOT
|
||
RELSIZ::BLOCK 1 ;BYTE SIZE FOR NEW FILE RELOCATION
|
||
ASFILE::BLOCK 1 ;LOCATION OF ALGOL .SYM FILE BLOCK
|
||
ASYM:: BLOCK 1 ;NUMBER OF ALGOL SYMBOLS
|
||
HIORGN::BLOCK 1 ;[650] ORIGIN OF HIGH SEG
|
||
IFN FTVM,<
|
||
PAGFUN::BLOCK 1 ;[650] FUNCTION FOR PAGE. UUO
|
||
PAGCNT::BLOCK 1 ;[650] COUNT OF AGS FOLLOWING
|
||
PAGBLK::BLOCK LN.PAG ;[650] ARG FOR PAGE. UUO
|
||
USEVM:: BLOCK 1 ;[650] -1 IF PAGE UUO'S AVAILABLE
|
||
> ;END IFN FTVM
|
||
POPOFS::BLOCK 1 ;EXP OFFSET(T4) FOR POPLP ROUTINE
|
||
PATLOC::BLOCK 1 ;[1172] LOCATION OF PAT.. AREA
|
||
LSTRRV::BLOCK 1 ;[1204] LAST RIGHT RELOCATABLE VALUE FROM RB.1
|
||
CRTMP1::BLOCK 1 ;[2024] HOLD AC FOR FAILED PMAP RETRIES
|
||
CRTMP2::BLOCK 1 ;[2024] ...
|
||
CRTMP3::BLOCK 1 ;[2024] ...
|
||
ENTLEN::BLOCK 1 ;[1764] LENGTH OF ENTRY VECTOR
|
||
LSTLRV::BLOCK 1 ;[1466] LAST LEFT RELOCATABLE FROM RB.1
|
||
ROOTAB::BLOCK 1 ;[1257] HIGHEST ABSOLUTE LOCATION IN ROOT NODE
|
||
NOCMX:: BLOCK 1 ;[1262] LNKCMX already printed switch
|
||
BADCORE::BLOCK 1 ;[1300] PSECT LIMIT EXCEEDED SWITCH
|
||
TABCHR::BLOCK 1 ;[1301] -1 FOR TAB, 0 FOR SPACE
|
||
MODTYP::BLOCK 1 ;[1306] PLUS IF TWOSEG, MINUS IF PSECT
|
||
PRGPDV::BLOCK 1 ;[1423] PROGRAM DATA VECTOR STORAGE POINTER
|
||
PVPNAM::BLOCK 1 ;[1423] NAME OF PSECT CONTAINING PDV
|
||
PVPSEG::BLOCK 1 ;[1423] POINTER TO PSECT RELOC BLOCK
|
||
PVPLIM::BLOCK 1 ;[1423] UPPER LIMIT TO WHICH PDV CAN GROW
|
||
COMPDT::BLOCK 1 ;[1423] CREATION DATE OF FILE W/START ADDR
|
||
PDVADR::BLOCK 2 ;[1423] ADDRESS OF PDV IN USER PROGRAM
|
||
;[1423] 2ND WORD BEING SYMBOLIC
|
||
COERPT::BLOCK 1 ;[1405] COERCION BLOCK PTR
|
||
NORBYT::BLOCK 1 ;[1456] DON'T LOOK FOR ANOTHER RELOC BYTE
|
||
TPGCNT::BLOCK 1 ;[2270] Count for garbage collection
|
||
TPPTR::BLOCK 1 ;[2374] Pointer to the PT window
|
||
IFN TOPS20,< ;[2330]
|
||
ERRJSY::BLOCK <ERRLEN/5>+1 ;[2257] BUFFER LARGE ENOUGH FOR LONGEST ERSTR%
|
||
GETDDT::BLOCK 1 ;[2277] FLAG TO MERGE DDT LATER
|
||
FILBLK::BLOCK FILSIZ ;[2301] BLOCK OF MEMORY FOR JFNS%
|
||
>;[2330] END IFN TOPS20
|
||
SUBTTL PER SEGMENT DATA
|
||
|
||
|
||
;INDEXED BY R (R=1 FOR LOW SEG, R=2 FOR HIGH SEG)
|
||
|
||
;HIGHEST DATA LOCATION IN SEGMENT
|
||
HC.S0:: BLOCK 1 ;USED FOR ABS DATA
|
||
HC.S1:: BLOCK 1 ;HIGHEST LOC IN LOW SEG CONTAINING DATA
|
||
HC.S2:: BLOCK 1 ;DITTO FOR HIGH SEG
|
||
|
||
;HIGHEST LOCATION IN SEGMENT (MAYBE BLANK)
|
||
HL.S0:: BLOCK 1
|
||
HL.S1:: BLOCK 1 ;HIGHEST LOC IN LOW SEG
|
||
HL.S2:: BLOCK 1 ;...
|
||
|
||
;SOFTWARE ORIGIN OF SEGMENT (FOR CURRENT MODULE)
|
||
SO.S0==:.-1
|
||
SO.S1:: BLOCK 1 ;ORIGIN OF LOW SEGMENT (USUALLY 0)
|
||
SO.S2:: BLOCK 1 ;ORIGIN OF HIGH SEGMENT (USUALLY 400000)
|
||
|
||
;LOWEST LOCATION IN SEGMENT
|
||
LL.S0==:.-1
|
||
LL.S1:: BLOCK 1 ;LOWEST LOC IN LOW SEG (USUALLY 0)
|
||
LL.S2:: BLOCK 1 ;LOWEST LOC IN HIGH SEG (USUALLY 400000)
|
||
|
||
;[1273] HIGHEST LOCATION IN PSECT (.LOW. OR .HIGH.)
|
||
HP.S0==:.-1 ;[1273] .ABS. DOES NOT HAVE PROBLEM
|
||
HP.S1:: BLOCK 1 ;[1273] HIGHEST LOCATION LOADED IN .LOW.
|
||
HP.S2:: BLOCK 1 ;[1273] HIGHEST LOCATION LOADED IN .HIGH.
|
||
|
||
;FIXUP INFO POINTERS FOR DATA OUT ON DSK
|
||
|
||
FX.S0==:.-1 ;SO WE CAN INDEX BY 1 OR 2
|
||
|
||
;CHAINED FIXUPS - STORE VALUE IN ALL PLACES ON CHAIN
|
||
|
||
FX.S1:: BLOCK 1 ;LOW SEG CHAIN
|
||
FX.S2:: BLOCK 1 ;HIGH SEG CHAIN
|
||
FS.SS:: BLOCK 1 ;LOCAL SYMBOL FIXUP TABLES
|
||
|
||
|
||
FXT.S0::BLOCK 1 ;TEMP POINTER TO HOLD CURRENT LIST
|
||
FXC.S0==:.-1
|
||
FXC.S1::BLOCK 1 ;COUNT OF TOTAL NUMBER OF SUCH FIXUPS TO DO
|
||
FXC.S2::BLOCK 1
|
||
FXC.SS::BLOCK 1 ;COUNT OF SYMBOL TABLE FIXUPS PENDING
|
||
|
||
FXSPTR::BLOCK MAXSEC ;[2200] Section fixup array
|
||
IFN TOPS20,<
|
||
FXSBIT::BLOCK 1 ;[2200] Bits to indicate section exists
|
||
>;[2366] IFN TOPS20 ;[2366]
|
||
SUBTTL PAGING DATA
|
||
|
||
|
||
TAB.LW:: ;LOWEST ADDRESS IN WINDOW
|
||
DEFINE XXX (ABC)<
|
||
LW.'ABC::BLOCK 1
|
||
>
|
||
AREAS
|
||
LW.S0==:LW.LC-1 ;SO WE CAN INDEX BY R (1 OR 2)
|
||
LW.S1==:LW.S0+1 ;START OF LOWSEG WINDOW
|
||
LW.S2==:LW.S0+2 ;DITTO FOR HIGH SEG
|
||
|
||
TAB.UW:: ;HIGHEST ADDRESS IN WINDOW
|
||
TAB.PG::! ;BETTER NMEMONICS IF JUST TESTING FOR PAGING OR NOT
|
||
DEFINE XXX (ABC)<
|
||
PAG.'ABC::!
|
||
UW.'ABC::BLOCK 1
|
||
>
|
||
AREAS
|
||
UW.S0==:UW.LC-1
|
||
UW.S1==:UW.S0+1 ;END OF LOW SEG WINDOW
|
||
UW.S2==:UW.S0+2 ;...
|
||
|
||
PAG.S0==:UW.S0
|
||
PAG.S1==:UW.S1 ;FLAG TO SHOW PAGING (IF NON-ZERO)
|
||
PAG.S2==:UW.S2
|
||
|
||
TAB.HB:: ;HIGHEST BLOCK IN USE ON DSK
|
||
DEFINE XXX (ABC)<
|
||
HB.'ABC::BLOCK 1
|
||
>
|
||
AREAS
|
||
HB.S0==:HB.LC-1
|
||
HB.S1==:HB.S0+1 ;HIGHEST BLOCK ALLOCATED (ON DSK)
|
||
HB.S2==:HB.S0+2 ;SAME FOR HIGH SEG PAGED CODE
|
||
|
||
|
||
|
||
SUBTTL SYMBOL TABLE DATA
|
||
|
||
|
||
SYMLEN::BLOCK 1 ;ACTUAL WORDS COUNT REQUIRED FOR THIS ENTRY
|
||
SUBLEN::BLOCK 1 ;LENGTH OF SUB BLOCKS
|
||
FXSPC:: BLOCK 1 ;NUMBER OF WORDS IN FIXUP TO BE GARBAGE COLLECTED
|
||
POLSTK::BLOCK 1 ;START OF POLISH PUSHDOWN STACK
|
||
POLLEN::BLOCK 1 ;[1274] LENGTH OF POLISH STACK
|
||
|
||
;HASH TABLE SEARCH DATA
|
||
HT.PTR::BLOCK 1 ;POINTER TO HASH TABLE
|
||
HT.PRM::BLOCK 1 ;CURRENT HASH PRIME NUMBER
|
||
HASHSZ::BLOCK 1 ;USER DESIRED HASH TABLE SIZE
|
||
HSPACE::BLOCK 1 ;SPACE LEFT IN HASH TABLE (HSFACT% FULL)
|
||
HSFACT::BLOCK 1 ;PERCENTAGE OF TABLE TO FILL BEFORE REHASHING
|
||
PRMPTR::BLOCK 1 ;POINTER TO NEXT PRIME NUMBER
|
||
CORFUL::BLOCK 1 ;-1 WHEN CORE UUO FAILS
|
||
|
||
FILNUM::BLOCK 1 ;NUMBER OF FILE ON NON-DIRECTORY DEVICE
|
||
PRGNAM::BLOCK 1 ;NAME OF CURRENT PROGRAM (FROM TITLE)
|
||
NAMBLK::BLOCK SYMSIZ ;[2326] long title
|
||
PRGBLK::BLOCK SYMSIZ ;[2404] long core image name
|
||
LODNAM::BLOCK 1 ;NAME OF THIS CORE IMAGE WHEN SAVED
|
||
JOBNUM::BLOCK 1 ;SIXBIT JOB#,,OCTAL JOB#
|
||
VERNUM::BLOCK 1 ;VERSION NUMBER OF CORE IMAGE
|
||
LSTGBL::BLOCK 1 ;[2255] ADDRESS (REL) OF LAST GLOBAL SYMBOL
|
||
LSTLCL::BLOCK 1 ;[2255] ADDRESS (REL) OF LAST LOCAL SYMBOL
|
||
;FOR ADDITIVE GLOBAL REQUESTS
|
||
PRGPTR::BLOCK 1 ;POINTER TO LIST OF BLOCK TYPE 16 REQUESTS
|
||
LIBPTR::BLOCK 1 ;SAME FOR TYPE 17
|
||
USEPTR::BLOCK 1 ;PTR TO LIST OF USER LIBRARIES
|
||
CTYPE:: BLOCK 1 ;COMPILER TYPE PRODUCING CURRENT CODE
|
||
PROCSN::BLOCK 1 ;OR OF ALL PROCESSORS SEEN
|
||
LIBPRC::BLOCK 1 ;PROCESSORS SEEN THIS LIBRARY PASS
|
||
MNTYPE::BLOCK 1 ;PROCESSOR FOR MAIN PROG (STARTING ADDRESS)
|
||
MNSEEN::BLOCK 1 ;OR OF ALL MAIN PROGRAMS SEEN
|
||
OKCPUS::BLOCK 1 ;[1120] BITS ON FOR ALL CPUS PROG WILL RUN ON
|
||
COREFL::BLOCK 1 ;-1 IF LNKCOR SHUFFLED USER CORE
|
||
NAMPTR::BLOCK 1 ;[2254] PTR TO CURRENT NAME IN LS AREA
|
||
SEGPTR::BLOCK 1 ;[2254] PTR TO SEG RELOC INFO FOR CURRENT PROG
|
||
EXCPTR::BLOCK 1 ;POINTER TO MODULES TO EXCLUDE
|
||
INCPTR::BLOCK 1 ;POINTER TO MODULES TO INCLUDE
|
||
ENTPTR::BLOCK 1 ;POINTER TO TEMP STORAGE OF ENTRY NAMES
|
||
NXTGLB::BLOCK 1 ;[1174] PUSHJ P,LOCN FOR /ENTRY, /U, ETC.
|
||
SYMBLK::BLOCK SYMSIZ ;[2210] LONG SYMBOL NAME
|
||
VALBLK::BLOCK SYMSIZ ;[2305]
|
||
CPSECT::BLOCK 1 ;[2227]
|
||
IFN .NWBLK,<
|
||
TTLADR::BLOCK 1 ;RELATIVE ADDR OF TITLE IN DY FOR T.1003
|
||
> ;END IFN .NWBLK
|
||
IFE TOPS20,<
|
||
.PGSIZ::BLOCK 1 ;CORE PAGE SIZE (1K OR 0.5K)
|
||
>
|
||
IFE FTSINGLE,<
|
||
NXTSEG::BLOCK 1 ;POINTER TO GETSEG ROUTINE
|
||
LSTSEG::BLOCK 1 ;DITTO
|
||
FSTSEG::BLOCK 1 ;NAME OF INITIAL SEGMENT
|
||
SEGBLK::BLOCK 6 ;DATA FOR GETSEG UUO
|
||
SEGPTH::BLOCK .PTMAX ;PATH FOR GETSEG UUO
|
||
>
|
||
SUBTTL AREA BOUNDS
|
||
|
||
|
||
;GENERATE SYMBOLS FOR AREAS
|
||
.ZZ==0 ;START AT ZERO
|
||
DEFINE XXX (ABC)<
|
||
ABC'.IX==:.ZZ
|
||
.ZZ==.ZZ+1
|
||
>
|
||
AREAS
|
||
XXX.IX==:.ZZ-1
|
||
HG.TAB==:.ZZ-1 ;HIGHEST AREA NUMBER ALLOWED
|
||
LN.TAB==:.ZZ ;LENGTH OF TABLE OF AREAS
|
||
PURGE .ZZ
|
||
|
||
TAB.LB:: ;LOWER BOUND TABLE
|
||
DEFINE XXX (ABC)<
|
||
ABC'.LB::BLOCK 1>
|
||
AREAS
|
||
|
||
TAB.AB:: ;ACTUAL BOUND TABLE
|
||
DEFINE XXX (ABC)<
|
||
ABC'.AB::BLOCK 1>
|
||
AREAS
|
||
|
||
TAB.UB:: ;UPPER BOUND TABLE
|
||
DEFINE XXX (ABC)<
|
||
ABC'.UB::BLOCK 1>
|
||
AREAS
|
||
|
||
TAB.PT:: ;POINTER TO NEXT FREE WORD TABLE
|
||
DEFINE XXX (ABC)<
|
||
ABC'.PT::BLOCK 1>
|
||
AREAS
|
||
|
||
TAB.FR:: ;TABLE OF FREE SPACE IN CURRENT BLOCK
|
||
DEFINE XXX (ABC)<
|
||
ABC'.FR::BLOCK 1>
|
||
AREAS
|
||
TAB.NB:: ;TABLE OF POINTERS FOR CORE ROUTINE
|
||
DEFINE XXX (ABC)<
|
||
ABC'.NB::BLOCK 1>
|
||
AREAS
|
||
|
||
TB.LNK:: ;TABLE OF POINTERS TO LINKED FREE SPACE
|
||
DEFINE XXX (ABC)<
|
||
ABC'.LNK::BLOCK 1>
|
||
AREAS
|
||
|
||
TB.FSP:: ;TABLE OF FREE SPACE IN LINKED LISTS
|
||
DEFINE XXX (ABC)<
|
||
ABC'.FSP::BLOCK 1>
|
||
AREAS
|
||
|
||
TAB.PP:: ;IF -1 PROHIBIT PAGING OF THIS AREA
|
||
DEFINE XXX (ABC)<
|
||
ABC'.PP::BLOCK 1>
|
||
AREAS
|
||
|
||
TAB.ZE:: ;[755] -1 IF FREE AREA NEED TO BE ZEROED
|
||
DEFINE XXX (ABC)<
|
||
ABC'.ZE::BLOCK 1>
|
||
AREAS
|
||
|
||
|
||
;[2366] THE LC MAP CONSISTS OF 1024 HALFWORD ENTRIES, EACH OF WHICH
|
||
;[2366] CONTAINS THE STARTING BLOCK OF A 64 DISK PAGE AREA IN THE
|
||
;[2366] LC OVERFLOW FILE.
|
||
|
||
IFE TOPS20,< ;[2366] LC MAP FOR TOPS-10
|
||
LC.UM::BLOCK 1 ;[2366] HIGHEST BLOCK MAPPED
|
||
LC.UP::BLOCK 1 ;[2366] HIGHEST PHYSICAL BLOCK IN FILE
|
||
LC.MAP::BLOCK <<MAXSEC*PAGSEC*.IPS>/<.DBS*.LMS>>/2 ;[2366] THE MAP ITSELF
|
||
>;[2366] IFE TOPS20
|
||
|
||
SUBTTL I/O DATA AREAS
|
||
|
||
|
||
H.ZER::! ;START OF AREA FOR INPUT PARAMETERS
|
||
|
||
OPENBL::BLOCK LN.OPN ;OPEN BLOCK
|
||
FSTR==:OPENBL+I.DEV ;CURRENT FILE STRUCTURE NAME
|
||
OPNSZ==:OPENBL+I.DVZ ;STORE DEVSIZ INFO
|
||
OPNFF==:OPENBL+I.RNG ;ADDRESS OF BUFFER AREA
|
||
MDSCN==:OPENBL+I.SCN ;SPECIAL MOD WORD COPIED FROM SCAN
|
||
|
||
LBLOCK::BLOCK LN.RIB ;ADDRESS OF LOOKUP BLOCK
|
||
RIBLEN==OPENBL+I.RIB ;EXTENDED LOOKUP BLOCK LENGTH
|
||
UFDPPN==:OPENBL+I.PPN ;PROJECT-PROGRAMMER NUMBER
|
||
FNAM==:OPENBL+I.NAM ;CURRENT FILE NAME
|
||
FEXT==:OPENBL+I.EXT ;CURRENT FILE EXTENSION
|
||
FCRE==:OPENBL+I.PRV ;CURRENT FILE CREATION WORD
|
||
FLEN==:OPENBL+I.SIZ ;CURRENT FILE LENGTH WORD
|
||
FVER==:OPENBL+I.VER ;CURRENT FILE VERSION WORD
|
||
FEST==:OPENBL+I.EST ;ESTIMATED LENGTH
|
||
FALC==:OPENBL+I.ALC ;ALLOCATED LENGTH
|
||
FDEV==:OPENBL+I.LDV ;LOGICAL DEVICE
|
||
|
||
;BLOCK TO HOLD PATH IF FULL PATH SPECIFIED
|
||
SFDARG::BLOCK LN.SFD
|
||
SFDSCN==:SFDARG+.PTSWT
|
||
SFDDIR==:SFDARG+.PTPPN
|
||
SFDEND==:SFDARG+.PTMAX-1
|
||
H.EZER==:.-1
|
||
;I/O BUFFER HEADERS
|
||
|
||
DEFINE XXX (CH,NUM,MODE)<
|
||
IFDIF <MODE><.IODPR>,<
|
||
CH'BUF::BLOCK 3
|
||
>>
|
||
DEFINE XXXX (CH,NUM,MODE)<
|
||
IFDIF <MODE><.IODPR>,<
|
||
IFGE MODE,<
|
||
SYN NUM'BUF,CH'BUF
|
||
>>>
|
||
IODATA
|
||
XBUF:: BLOCK 3 ;FAKE BUFFER HEADER FOR INDEX LIBRARIES
|
||
|
||
DEFINE XXX (CH,NUM,MODE)<
|
||
BLOCK 1
|
||
>
|
||
DEFINE XXXX (CH,NUM,MODE)<
|
||
BLOCK 1
|
||
>
|
||
IO.PTR::IODATA ;1 WORD PER CHANNEL IN USE
|
||
|
||
IO.EMG::BLOCK 1 ;EMERGENCY DATA BLOCK POINTER
|
||
;USED WHEN DSK OVERFLOW OCCURS
|
||
|
||
IFN TOPS20,<
|
||
|
||
CHAN.JF:: ;[1401] FOR JFNS OF TEMP OVF FILES
|
||
|
||
DEFINE XXX (CHAN,NUM,MODE)<CHAN'.JF::BLOCK 1> ;[1401]
|
||
|
||
IODATA ;[1401]
|
||
|
||
GS.JF==GC.JF
|
||
FX.JF==FC.JF
|
||
LS.JF==SC.JF ;[1401] SC CHANNEL IS FOR LOCAL SYMBOLS
|
||
AS.JF==AC.JF ;[1401] AC CHANNEL IS ALGOL SYMBOLS
|
||
TP.JF==PC.JF ;[2270] PC CHANNEL IS ARGUMENT TYPECHECKING
|
||
> ;[1401] IFN TOPS20
|
||
|
||
PURGE XXX,XXXX
|
||
|
||
SUBTTL FILE SPECS
|
||
|
||
|
||
F.INZR::BLOCK 1 ;POINTER TO START OF FILE SPEC
|
||
F.NXZR::BLOCK 1 ;POINTER TO NEXT FILE SPEC STORAGE
|
||
F.WLZR::BLOCK 1 ;USED BY WILD ( (F.INZR)+2 )
|
||
F.EDIT::BLOCK 1 ; RH POINTER TO REST OF LIST IF EDITING A FILE SPEC
|
||
; LH LOCAL FLAGS AT TIME OF ERROR (RH OF FL)
|
||
F.ASCI::BLOCK 1 ;POINTER TO ASCIZ TEXT BLOCK FROM REL FILE
|
||
F.ASCC::BLOCK 1 ;USED TO HOLD CHAR COUNT DURING TEXT READ
|
||
F.ASCK::BLOCK 1 ;POINTER TO EXTRA KOMMAND FOR SCAN
|
||
F.ASZR::BLOCK 1 ;SCAN BLOCKS THIS ASCII TEXT BLOCK
|
||
S.INZR::BLOCK 1 ;SAVE F.INZR OVER /LINK
|
||
S.LHFL::BLOCK 1 ;SAVE LH(FL) OVER /LINK
|
||
S.DEBG::BLOCK 1 ;[730] SAVE /DEBUG FILE SPEC FOR /LINK
|
||
SWFLAG::BLOCK 1 ;LINK TO SWITCHES SEEN
|
||
IO.CHN::BLOCK 1 ;LAST I/O CHAN SEEN (FOR DEFERED SWITCHES)
|
||
IO.CHR::BLOCK 1 ;DEVCHR OF IO.CHN
|
||
OSCANF::BLOCK 1 ;-1 IF .OSCAN ALREADY CALLED
|
||
NULSPC::BLOCK 1 ;-1 IF NOT A INPUT SPEC (SWITCHES ONLY, OR OUTPUT)
|
||
|
||
;INPUT GLOBAL DEFAULT AREA
|
||
|
||
G.ZER::
|
||
G.DEV:: BLOCK 1
|
||
G.NAM:: BLOCK 1
|
||
G.NAMM::BLOCK 1
|
||
G.EXT:: BLOCK 1
|
||
G.PROT::BLOCK 2
|
||
G.DIR:: BLOCK 1
|
||
G.DIRM::BLOCK 2*.FXLND-1
|
||
G.BFR:: BLOCK 1
|
||
G.SNC:: BLOCK 1
|
||
G.LZER==:.-G.ZER
|
||
|
||
|
||
;OUTPUT GLOBAL DEFAULTS
|
||
O.ZER::
|
||
O.DEV:: BLOCK 1
|
||
O.NAM:: BLOCK 1
|
||
O.NAMM::BLOCK 1
|
||
O.EXT:: BLOCK 1
|
||
O.PROT::BLOCK 2
|
||
O.DIR:: BLOCK 1
|
||
O.DIRM::BLOCK 2*.FXLND-1
|
||
O.BFR:: BLOCK 1
|
||
O.SNC:: BLOCK 1
|
||
O.LZER==:.-O.ZER
|
||
;FULL WORD SWITCHES
|
||
|
||
FLAGS:: BLOCK 1 ;DEFAULT GLOBAL FLAGS (LH) OF FL ,, REMEMBER LOCAL FLAGS (RH) OF FL
|
||
MAXCOR::BLOCK 2 ;MAXIMUM INCORE SIZE (LOW,HIGH)
|
||
RUNCOR::BLOCK 2 ;SIZE OF JOB AT RUN TIME (LOW,HIGH)
|
||
RUNAME::BLOCK 1 ;NAME FOR CORE IMAGE
|
||
SSNAME::BLOCK 1 ;NAME FOR SAVE COMMAND
|
||
SSEXT:: BLOCK 1 ;EXTENSION FOR SAVE/SSAVE COMMAND
|
||
EXEBLK::BLOCK 1 ;EXE FILE BLOCK COUNT
|
||
EXEDIR::BLOCK 2 ;POINTS TO THE EXE DIRETORY PAGE IN CORE
|
||
MAPCON::BLOCK 1 ;CONTENTS OF MAP (FROM SWITCH)
|
||
MAPSW:: BLOCK 1 ;WHEN MAP IS TO BE OUTPUT
|
||
EXECSW::BLOCK 1 ;[1144] -1,,x IF /EXECUTE, x = ADDR TO START
|
||
DEBUGSW::BLOCK 1 ;[1144] -1,,INDEX IF /DEBUG, 0,,INDEX IF /TEST
|
||
DDEBUG::BLOCK 1 ;DEFAULT DEBUGGING AID
|
||
GOTO:: BLOCK 1 ;GO TO TERMINATION ADDRESS
|
||
FRECOR::BLOCK 1 ;FREE CORE TO BE KEPT DURING LOAD
|
||
SYMFRM::BLOCK 1 ;-1 IF NEW, 0 IF OLD
|
||
NOSYMS::BLOCK 1 ;-1 FOR NO SYMBOL TABLE REQUIRED
|
||
NOLIBS::BLOCK 1 ;-1 FOR NO DEFAULT LIBRARIES
|
||
PASDFL::BLOCK 1 ;[1435] /DEBUG:PASCAL SEEN
|
||
IFE TOPS20,< ;[2247]
|
||
LOWLOC::BLOCK 1 ;[732] LOWEST LOCATION
|
||
>;[2247] IFE TOPS20
|
||
SYMSEG::BLOCK 1 ;SEGMENT TO SAVE SYMBOLS IN
|
||
SSGNAM::BLOCK 1 ;[715] PSECT NAME TO SAVE SYMBOLS IN
|
||
SYMLMS::BLOCK 1 ;[2220] -1 IF SYMLIM IS SYMBOLIC
|
||
SYMLIM::BLOCK 1 ;[715] SYMBOL LIMIT(NEXT PSECT ORIGIN)
|
||
;[727] BIT0 ON MEANS DEFAULT LIMIT--
|
||
;[727] /SYMSEG & /UPTO MAY OVERRIDE IT.
|
||
OTSEG:: BLOCK 1 ;SEGMENT TO PUT OTS IN
|
||
SYMSRT::BLOCK 1 ;HOW SYMBOL TABLE IS TO BE SORTED
|
||
MAPSRT::BLOCK 1 ;HOW MAP IS TO BE SORTED
|
||
IFN TOPS20,< ;[2366]
|
||
NOJBDA::BLOCK 1 ;[2211] -1 IF NO JOBDAT WANTED
|
||
>;[2366] IFN TOPS20
|
||
SCNSYM::BLOCK 1 ;[2220] -1 IF PARSED A SYMBOL
|
||
|
||
;LOG AND ERROR PARAMETERS
|
||
LOGLVL::BLOCK 1 ;SWITCH VALUE FOR LOG FILE MESSAGES
|
||
ERRLVL::BLOCK 1 ;SAME FOR TTY ERROR MESSAGES
|
||
SEVLVL::BLOCK 1 ;FATAL ERROR CUTOFF
|
||
VERLVL::BLOCK 1 ;VERBOSITY LEVEL
|
||
ERRCOD::BLOCK 1 ;ERROR CODE FOR LAST ERROR
|
||
LOGTTY::BLOCK 1 ;-1 IF LOG DEV IS TTY (USE TTCALLS)
|
||
LOGSUB::BLOCK 1 ;POINTS TO SOSG LOG OUTPUT ROUTINE IN LOW SEG
|
||
TTYSUB::BLOCK 1 ;DITTO FOR TTY (BUFFER FOR OUTCHR'S)
|
||
LOWSUB::BLOCK 1 ;LOG SUB ,, TTY SUB ;INCASE NEEDED LATER
|
||
TTYBUF::BLOCK 3 ;FAKE BUFFER HEADER FOR OUTPUT TTY
|
||
LINBUF::BLOCK LN.CPL/5+1 ;LINE BUFFER FOR ABOVE
|
||
RTNPC:: BLOCK 1 ;[1174] ADDR OF LAST JMP .ETC. FOR RTN
|
||
ERCHAN::BLOCK 1 ;[1174] CHANNEL FOR FILE-RELATED ERRORS
|
||
PRTMSG::BLOCK 1 ;[1174] FLAG FOR HOW MUCH OF MESSAGE TO PRINT
|
||
NEGOFF==:400
|
||
BLCOMM::BLOCK 1 ;SIZE OF BLANK COMMON
|
||
LOD37:: BLOCK 1 ;OVERHEAD FOR COBDDT
|
||
OWNLNG::BLOCK 1 ;ALGOL OWN LENGTH
|
||
%OWN:: BLOCK 1 ;ALGOL OWN AREA POINTER
|
||
;VARLNG::BLOCK 1 ;LVAR VARIABLE LENGTH
|
||
LINKTB::BLOCK 1 ;POINTER TO LINK TABLE (TYPE 12)
|
||
;NOTE THIS IS INDEXED BY W2 WHEN SETUP
|
||
T11FA:: BLOCK 1 ;XWD LENGHT, RELATIVE ADD OF POLISH BLOCK
|
||
T11BP:: BLOCK 1 ;BYTE POINTER TO FIXUP
|
||
SVSAT:: BLOCK 1 ;NUMBER OF OPERANDS NEEDED
|
||
SVSAT1::BLOCK 1 ;NUMBER STILL NEEDED
|
||
DTAFLG::BLOCK 1 ;[1101] INPUT DEVICE IS DECtape
|
||
IFN TOPS20,
|
||
<RFLEN::BLOCK 1 ;[1402] LENGTH OF CURRENT REL FILE>
|
||
LSTBLK::BLOCK 1 ;INDEX - POINTER TO LAST BLOCK LOADED
|
||
SAVCOD::BLOCK 1 ;[1754] SAVE 9-BIT SYMBOL CODE, INCASE OF ERROR
|
||
SAVP1:: BLOCK 1 ;[1754] SAVE P1 FOR LONG SYMBOL COMPARE
|
||
SYMFLG::BLOCK 1 ;ADDITIONAL SYMBOL FLAGS TO APPLY TO FIXUP SYMBOL
|
||
CURTYP::BLOCK 1 ;[1434] CURRENT REL BLOCK TYPE BEING PROCESSED
|
||
|
||
SAVEAC::BLOCK 20 ;SAVE VARIOUS AC
|
||
;SAVE ACS T1-T4 & P1 IN LNKLOG
|
||
;SO WE CAN PASS ARGS IN ALL ACCS
|
||
;SAVE AC0 AND P1-17 IN LNKERR
|
||
;SO WE CAN RETURN
|
||
SUBTTL PLOT DATA STORAGE
|
||
|
||
|
||
PLOTSW::BLOCK 1 ;-1 IF PLOT WANTED
|
||
DEFINE KEYMAC (A,B)<
|
||
IFIDN <A><PLT>,<
|
||
IRP B,<
|
||
B:: BLOCK 1
|
||
>>>
|
||
PLTTAB::!KEYWORDS
|
||
|
||
COMMENT /
|
||
INCHES::BLOCK 1 ;WIDTH IN INCHES
|
||
LEAVES::BLOCK 1 ;NO. OF LEAVES
|
||
STEPS:: BLOCK 1 ;NO. OF STEPS PER INCH.
|
||
/
|
||
PPTYPE::BLOCK 1 ;[2002] PLOTTER TYPE
|
||
|
||
SUBTTL OVERLAY DATA STORAGE
|
||
|
||
|
||
IFN FTOVERLAY,<
|
||
|
||
DI:: BLOCK DI.LEN ;[1400] DIRECTORY FOR OVERLAY FILE
|
||
CS:: BLOCK CS.LEN ;[1400] LINK CONTROL SECTION
|
||
ET:: BLOCK ET.LEN ;[1400] EXTERNAL REFERENCE TABLE
|
||
;DATA REQUIRED FOR OVERLAYS
|
||
OVERLW::BLOCK 1 ;TYPE OF OVERLAY
|
||
RGNNUM::BLOCK 1 ;REGION NUMBER
|
||
RGNNAM::BLOCK 1 ;REGION NAME
|
||
L.MAX:: BLOCK 1 ;MAX LINK NO. WE CAN HANDLE IN TABLE
|
||
LNKTBL::BLOCK 1 ;TABLE OF DISC ADDRESSES
|
||
OVLBLK::BLOCK 1 ;HIGHEST BLOCK IN USE
|
||
BRNLEN::BLOCK 1 ;AOBJN WORD FOR NO. OF LINKS IN CURRENT BRANCH
|
||
BRNTBL::BLOCK 1 ;TABLE OF LINKS IN THIS BRANCH
|
||
BRNDSK::BLOCK 1 ;PARALLEL TABLE OF LENGTH,,DSK ADDRESS
|
||
BG.SCH::BLOCK 1 ;-1 IF ALLOWED TO SEARCH BG TABLES
|
||
EXTCNT::BLOCK 1 ;COUNT OF MAX # OF EXTTABS SEEN
|
||
INTCNT::BLOCK 1 ;SAME FOR INTTABS
|
||
LNKMAX::BLOCK 1 ;HIGHEST LINK # SEEN
|
||
LNKNO.::BLOCK 1 ;TEMP, USED TO HOLD CURRENT LINK NO.
|
||
BRNMAX::BLOCK 1 ;MAX DEPTH OF BRANCH
|
||
ADDOVU::BLOCK 1 ;ADDRESS OF .OVRLU ROUTINE
|
||
FSTPTR::BLOCK 1 ;INITIAL PTR TO OVERLAY TREE
|
||
LSTPTR::BLOCK 1 ;POINTER TO LAST LINK IN TREE
|
||
LNMPTR::BLOCK 1 ;POINTER TO LIST OF LINK NAMES
|
||
RBGPTR::BLOCK 1 ;RELOCATABLE BOUND GLOBAL PTR
|
||
BRNADD::BLOCK 1 ;PARALLEL TABLE OF LINK#,,LOWEST ADDRESS
|
||
OVLOFF::BLOCK 1 ;OFFSET IF BASE OF LINK IS NOT IN CORE
|
||
OVINEX::BLOCK 1 ;PERMANENT INCLUDE/EXCLUDE
|
||
LINKSEEN::BLOCK 1 ;FLAG TO INDICATE /LINK PROCESSED:
|
||
; -1 WHEN BEGIN PROCESSING /LINK
|
||
; 0 WHEN BEGIN NEXT /NODE
|
||
ARSIZE::BLOCK 1 ;[635] GLOBAL,,THIS LINK'S ARSIZE.
|
||
TMAMAX::BLOCK 1 ;[635] BIGGEST TMA ERROR SEEN
|
||
WRTDAT::BLOCK 1 ;[1704] PTR TO WRITABLE OVERLAY TABLE
|
||
ARGOVL::BLOCK 1 ;[2053] -1 if typechecking BG area
|
||
ARGFXP::BLOCK 1 ;[2053] PTR to list of character fixups
|
||
>;END OF IFN FTOVERLAY
|
||
IFN FTOVERLAY,<
|
||
;NOTE THAT ALL MEMORY FROM HERE TO PH.ZZ **MUST** BE CONTIGUOUS!
|
||
PH:: BLOCK PH.LEN ;[1400] PREAMBLE FOR EACH LINK
|
||
OV.S0==:.-1
|
||
OV.S1:: BLOCK 1 ;COPY OF HC.S1,,HL.S1
|
||
OV.S2:: BLOCK 1 ;COPY OF HC.S2,,HL.S2
|
||
PV.S0==:.-1
|
||
PV.S1:: BLOCK 1 ;COPY OF OV.S1 AT START
|
||
PV.S2:: BLOCK 1 ;COPY OF OV.S2 AT START
|
||
>;END OF IFN FTOVERLAY
|
||
OV1.Z0::! ;DATA TO CLEAR ON LNKOV1
|
||
GSYM:: BLOCK 1 ;COUNT OF GLOBAL SYMBOLS
|
||
USYM:: BLOCK 1 ;COUNT OF UNDEFINED (REQUESTED) GLOBALS
|
||
MSYM:: BLOCK 1 ;COUNT OF MULTIPLY DEFINED GLOBALS
|
||
LSYM:: BLOCK 1 ;COUNT OF SYMBOL WORDS (PLUS GLOBALS)
|
||
STADDR::BLOCK 2 ;STARTING ADDRESS
|
||
IFN TOPS20,< ;[2202]
|
||
THSTRT::BLOCK 2 ;[1450] POSSIBLE 30-BIT STARTING ADDRESS
|
||
NOPDMP::BLOCK 1 ;[2306] -1 IF NO DEFAULT PDV MAP
|
||
> ;[2202] IFN TOPS20
|
||
STANAM::BLOCK 1 ;ACTUAL PROG NAME CONTAINING IT
|
||
PRGNO:: BLOCK 1 ;NUMBER OF PROGRAMS LOADED
|
||
PATSPC::BLOCK 1 ;SPACE TO LEAVE BETWEEN CODE AND SYMBOLS
|
||
|
||
IFN FTOVERLAY,<
|
||
BSYM:: BLOCK 1 ;NO. OF SYMBOLS COPIED FROM BOUND TABLES
|
||
SPACE:: BLOCK 1 ;SPACE TO ALLOCATE FOR THIS LINK
|
||
OV1.ZE==:.-1 ;LAST WORD CLEARED
|
||
PH.ZZ==:.-PH ;[1400] PER-LINK MEMORY FOR LINK'S USE
|
||
|
||
LNKNAM=:CS+CS.LNM ;[1400] LOGICAL NAME OF THIS LINK
|
||
SYN BRNMAX,BRNPTR ;USED TO BUILD PATH
|
||
>
|
||
IFE FTSINGLE,<
|
||
PHAZLO::BLOCK LN.PLC ;[600] BLOCK FOR PHASED LOWSEG CODE
|
||
> ;END IFE FTSINGLE
|
||
|
||
S.EZER=.-1
|
||
EZCOR==:.-1 ;END OF AREA TO ZERO
|
||
|
||
SYN GS.LB,NAMLOC
|
||
|
||
END
|