Google
 

Trailing-Edge - PDP-10 Archives - ap-c796e-sb - lnklow.mac
There are 48 other files named lnklow.mac in the archive. Click here to see a list.
UNIVERSAL	LNKLOW - LOW SEGMENT DATA MODULE FOR LINK-10
SUBTTL	D.M.NIXON/DMN/JLd/JBC/JNG/MCHC	27-Feb-78

;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
;  OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
;
;COPYRIGHT (C) 1973, 1978 BY DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.

SEARCH	LNKPAR,MACTEN,UUOSYM,SCNMAC


CUSTVR==0		;CUSTOMER VERSION
DECVER==4		;DEC VERSION
DECMVR==0		;DEC MINOR VERSION
DECEVR==765		;DEC EDIT VERSION

	LOC	137
.JBVER::<BYTE(3)CUSTVR(9)DECVER(6)DECMVR(18)DECEVR>
	RELOC


SALL
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)
SUBTTL	STORAGE

%LOW::!
OFFSET::BLOCK	1		;STARTING ADDRESS OFFSET
TIMEON::BLOCK	1		;INITIAL TIME FOR LOG FILE
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==:40			;NUMBER OF WORDS
.TEMP::	BLOCK	.TLEN

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)
SG.TB::	BLOCK	3		;PTR TO SEGMENT TABLES (.+1)
				;PTR TO LOW SEG DATA BLOCK
				;PTR TO HIGH SEG DATA BLOCK
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
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)


;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


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

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

;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)
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
LSTSYM::BLOCK	1		;ADDRESS (REL) OF LAST LOCAL SYMBOL (RH)
				;ADDRESS (REL) OF LAST GLOBAL SYMBOL (RH)
				;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
CPUSN::	BLOCK	1		;OR OF ALL CPU TYPES SEEN
COREFL::BLOCK	1		;-1 IF LNKCOR SHUFFLED USER CORE
NAMPTR::BLOCK	1		; (RH) POINTS TO CURRENT NAME IN LOCAL SYMBOL TABLE
				; (LH) POINTS TO SEG RELOCATION INFO FOR CURRENT PROG
FBHPTR::BLOCK	1		;POINTER TO FAIL BLOCK HEADERS IN LOCAL SYMBOL TABLE
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
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

IFN TOPS20&FTFORK,<
TB.FRK::			;TABLE OF RELATIVE FORK HANDLES
DEFINE XXX (ABC)<
ABC'.FRK::BLOCK	1>
AREAS
>
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

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		;EXECUTION SWITCH
DEBUGSW::BLOCK	1		;-1 IF START AT .JBDDT
DDEBUG::BLOCK	1		;DEFAULT DEBUGGING AID
FORLIB::BLOCK	1		;EITHER FORSE OR FOROTS
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
MIXFOR::BLOCK	1		;-1 IF /KLUDGE SWITCH SEEN
LOWLOC::BLOCK	1		;[732] LOWEST LOCATION
SYMSEG::BLOCK	1		;SEGMENT TO SAVE SYMBOLS IN
SSGNAM::BLOCK	1		;[715] PSECT NAME TO SAVE SYMBOLS IN
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

;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


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
LSTLOD::BLOCK	1		;INDEX - LAST PROG WAS LOADED
LSTBLK::BLOCK	1		;INDEX - POINTER TO LAST BLOCK LOADED
SYMFLG::BLOCK	1		;ADDITIONAL SYMBOL FLAGS TO APPLY TO FIXUP SYMBOL

IFN FTMANTIS,<
MANTP0::BLOCK	1		;MANTIS DATA INITIAL POINTER
MANTP::	BLOCK	1		;MANTIS DATA CURRENT POINTER
MANTC::	BLOCK	1		;MANTIS FREE SPACE POINTER
>
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.
/
SUBTTL	OVERLAY DATA STORAGE

IFN FTOVERLAY,<

;DIRECTORY FOR OVERLAY FILE
DI.HDR::BLOCK	1		;CODE ,, LENGTH
DI.RGN::BLOCK	1		;NO. OF REGIONS
DI.VER::BLOCK	1		;VERSION #
DI.LPT::BLOCK	1		;USETI PTR. TO LINK NO. TABLE
DI.NPT::BLOCK	1		;USETI PTR. TO LINK NAME TABLE
DI.EPT::BLOCK	1		;USETI PTR. TO ENTRY TABLE
DI.ZZ==:.-DI.HDR

;ITEMS IN LINK HEADER SECTION
CS.HDR::BLOCK	1		;NO. OF WORDS IN THIS HEADER
CS.RGN::BLOCK	1		;REGION #
CS.NUM::BLOCK	1		;LINK #
CS.LNM::BLOCK	1		;LINK NAME
CS.PTR::BLOCK	1		;PTRS TO ADJACENT LINKS
CS.SYM::BLOCK	1		;SYMBOL TABLE POINTER
CS.STA::BLOCK	1		;LINK STARTING ADDRESS
CS.COR::BLOCK	1		;LENGTH,,ADDRESS
CS.EXT::BLOCK	1		;EXTTAB PTR
CS.INT::BLOCK	1		;INTTAB PTR
CS.DDT::BLOCK	1		;POINTER TO DDT SYMBOL TABLE ON DSK
CS.RLC::BLOCK	1		;TO HOLD RELOC OFFSET AT RUN TIME
CS.ZZ==:.-CS.HDR

;ITEMS IN EXTTAB
EXTHDR:!
EXTTRP::BLOCK	1		;JSP	1,.OVRLA
EXTINC::BLOCK	1		;FLAGS ,, INTTAB
EXTCST::BLOCK	1		;LINK # ,, CS.HDR
EXTNAM::BLOCK	1		;NAME
ET.ZZ==:.-EXTHDR
ET.TRP==:EXTTRP-EXTHDR
ET.INC==:EXTINC-EXTHDR
ET.CST==:EXTCST-EXTHDR
ET.NAM==:EXTNAM-EXTHDR


;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
;PREAMBLE SECTION FOR EACH LINK
PH.HDR::BLOCK	1		;LENGTH OF THIS SECTION
PH.RGN::BLOCK	1		;REGION #
PH.NUM::BLOCK	1		;LINK #
PH.NAM::BLOCK	1		;LINK NAME
PH.BPT::BLOCK	1		;BACK POINTER TO ROOT
PH.FPT::BLOCK	1		;FORWARD POINTER FROM ROOT
PH.EPT::BLOCK	1		;EQUIVALENCE POINTER
PH.CST::BLOCK	1		;CONTROL SECTION
PH.FLG::BLOCK	1		;FLAGS
PH.ADD::BLOCK	1		;ADDRESS TO BE LOADED AT
PH.LEN::BLOCK	1		;LENGTH REQUIRED
PH.OVL::BLOCK	1		;BLOCK # OF CODE
PH.SYM::BLOCK	1		;BLOCK # OF SYMBOLS
PH.REL::BLOCK	1		;BLOCK # OF REL TBL
PH.ORL::BLOCK	1		;BLOCK # OF OTHER RET TBL (BG)
PH.GLB::BLOCK	1		;BLOCK # FOR GLOBALS
PH.RDX::BLOCK	1		;BLOCK # FOR DDT RADIX50 SYMBOLS
PH.RDR::BLOCK	1		;BLOCK # FOR REL TBL OF DDT SYMBOLS
PH.NFL::BLOCK	1		;NEXT FREE LOCATION (FOR OTHER LINK)
>;END OF IFN FTOVERLAY
IFN FTOVERLAY,<
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
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.HDR

SYN	CS.LNM,LNKNAM		;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