Google
 

Trailing-Edge - PDP-10 Archives - BB-H138A-BM - 3a-sources/lnkpar.mac
There are 48 other files named lnkpar.mac in the archive. Click here to see a list.
UNIVERSAL LNKPAR - PARAMETERS FOR LINK-10
SUBTTL	D.M.NIXON/DMN/JLd/RKH/SRM/JBC/JNG/MCHC/PAH	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	MACTEN,UUOSYM,SCNMAC	;[731] SEARCH C.MAC SYMBOL TABLE

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

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


SALL
SUBTTL	CONDITIONAL ASSEMBLY SWITCHES

ND FTOVERLAY,1		;1= OVERLAY MODULE REQUIRED
ND TOPS20,0		;1=TOPS20 VERSION (WILL NOT RUN ON TOPS10)
ND DEBSW,0		;1=DEBUGGING VERSION
ND .OSJOB,0		;1= OLD STYLE JOBXXX SYMBOLS IN INITIAL TABLE
ND FTCN6,0		;1= PUT .JBCN6 (& JOBCN6) IN INITIAL SYMBOL TABLE
ND .FORLB,0		;-1= FORSE, 0 OR +1= FOROTS
ND .EXSYM,0		;1 =EXTENDED SYMBOLS VERSION
ND .NWBLK,0		;1 =NEW BLOCK TYPES (1000-1777)
ND .ASBLK,1		;1 =ASCIZ TEXT BLOCK
ND FMXFOR,1		;NON-ZERO =FORTRAN-10 / F40 LIBRARY COMPATIBILITY
			;-1 FOR MIXFOR BY DEFAULT, +1 FOR BY SWITCH ONLY
ND FTKIONLY,0		;1= KI10 D.P. INST (DMOVE, DMOVEM)
ND FTMANTIS,0		;1= MANTIS AS FORTRAN DEBUGGER (INSTEAD OF FORDDT)
ND FTVM,1		;1=USES TOPS-10 VM IF AVAILABLE
ND FTSINGLE,0		;1= SINGLE SEGMENT VERSION
ND FTFORK,0		;1= RUN IN SEVERAL FORKS (NOT YET IMPLEMENTED)
ND FTOPTION,1		;1= INCLUDE OSCAN CODE (VERY SLOW)
ND FTEXE,1		;1= EXE FILE GENERATED



;DEPENDENT CONDITIONALS

IFN TOPS20,<
	FTSINGLE==1
	FTKIONLY==1
	FMXFOR==0
	FTVM==0
>
;ASSEMBLY PARAMETERS

ND LN.PDL,^D60		;LENGTH OF PUSH-DOWN LIST
ND LN.PPD,^D60		;POLISH PUSHDOWN STACK
ND LN.EPD,^D20		;EMERGENCY PUSH DOWN STACK LENGTH
ND LN.LPP,^D56		;LINES PER PAGE OF DATA
ND LN.CPL,^D72		;CHAR PER LINE ON TTY
ND LN.DRB,6		;LENGTH OF SFD NESTING
ND .L,3			;LENGTH OF BASIC SYMBOL BLOCK
ND PATSP.,100		;LENGTH TO LEAVE IN SYMBOL TABLE FOR PATCHING
IFN FTVM!TOPS20,<
ND .IPS,^D512		;[650] INTERNAL PAGE SIZE
ND LN.WD,10000		;[650] SIZE OF CORE WINDOW (IF POSSIBLE)
> ;END IFN FTVM!TOPS20
ND LN.WD,2000		;SIZE OF CORE WINDOW (IF POSSIBLE)
ND .IPS,^D128		;INTERNAL PAGE SIZE
ND .IPM,.IPS-1		;MASK FOR ABOVE
ND .IPS2W,^D35-^L<.IPS>	;[650] LSH TO CONVERT INTERNAL PAGES TO WORDS
ND .IWS,2*.IPS	;[750] RESERVE WINDOW SIZE TO BE 2*INTERNAL PAGE.
ND .IWM,.IWS-1		;[750] MASK FOR ABOVE
ND .DBS,^D128		;DSK BLOCK SIZE (TO DISTINGUISH FROM ABOVE)
ND .DBM,.DBS-1		;MASK
ND .DBS2W,^D35-^L<.DBS>	;[650] LSH TO CONVERT BLOCKS TO WORDS
ND .CORX,4*1000		;MINIMUM SIZE TO USE FOR CORE UUO (UNLESS FAILS)
ND .VCRX,^D10*1000	;[650] .CORX IF ON A VM SYSTEM
ND .HS%,^D90		;% OF HASH TABLE TO FILL BEFORE REHASHING
ND .LVL,0		;CUTOFF LEVEL FOR ASSEMBLING ERROR MESSAGES
ND .IBR,5		;NUMBER OF BUFFERS IN INPUT RING (DEFAULT)
ND .EXC,^D9		;SIZE OF BASIC LINKED BLOCKS FOR INCLUDE/EXCLUDE
ND I.PRM,^D251		;INITIAL PRIME NUMBER FOR HASHING
ND E.PRM,^D227		;PRIME NUMBER USED TO HASH LONG ERROR MESSAGES
ND LN.12,100		;NUMBER OF LINKS IN BLOCK TYPE 12
IFN TOPS20,<
ND %HISEG,540000	;[710] HIGH SEGMENT ORIGIN
ND LC.ORG,040000	;START OF CODE AREA
ND LS.ORG,240000	;[710] START OF LOCAL SYMBOLS
ND GS.ORG,440000	;[710] START OF GLOBAL SYMBOLS
ND .PGSIZ,777		;KNOWN PAGE SIZE MASK
>
ND %HISEG,400000	;HIGH SEGMENT ORIGIN
ND .SPA,4000		;DEFAULT SIZE FOR BUFFER ON /SPACE SWITCH
ND .SPL,0		;[635] DEFAULT SPACE IN LINKS OTHER THAN ROOT
ND .ARS,10		;[635] DEFAULT VALUE FOR /ARSIZE SWITCH
ND .OVPSP,0		;DEFAULT PATCH SPACE IN LINKS OTHER THAN ROOT
ND LN.OVL,^D128*^D10*2	;MAX. NO. OF OVERLAYS ALLOWED
ND LN.ABL,^D10		;LENGTH OF ALGOL .SYM FILE DESCRIPTOR
ND LN.SWV,^D28		;MAX SWITCH VALUE LENGTH SCAN WILL RETURN
ND LN.PLC,300		;[600] LENGTH OF PHASED LOWSEG CODE IN LNKINI
ND LN.PAG,^D128		;[650] LENGTH OF PAGE. UUO ARGUMENT BLOCK
ND .FRESP,100		;[727] LENGTH TO LEAVE AFTER SYMBOL TABLE
ND .SYLIM,777777	;[745] DEFAULT SYMBOL TABLE LIMIT
ND .LLOC,200000		;[732] INITIAL VALUE FOR LOWEST LOCATION
SUBTTL	REVISION HISTORY

;START OF VERSION 1A
;46	ADD KLUDGE FEATURE
;47	INTEGRATE WITH SCAN %4
;52	ADD ASCIZ TEXT BLOCK
;54	ADD KIONLY D.P. MACROS
;60	ADD /VERSION SWITCH
;65	TENEX SPEEDUP
;102	ADD FLAG FOR NO END BLOCK
;104	ADD FLAG FOR FAIL LOCAL BLOCKS
;105	ADD SYMBOL (LN.12) FOR LENGTH OF LINKS IN BLOCK TYPE 12
;107	REPLACE KLUDGE BY MIXFOR

;START OF VERSION 1B
;124	ADD FLAGS FOR /ONLY SWITCH

;START OF VERSION 2
;135	ADD OVERLAY FACILITY
;137	ADD SUPPORT FOR PLOT PACKAGE
;143	ADD BIT FOR INCLUDE MODE SEARCH
;145	IMPLEMENT /USERLIB & /NOUSERLIB
;147	TURN ON MIXFOR FEATURE
;161	ADD LANGUAGE SPECIFICATION TO /USERLIB
;167	CHANGE ARGUMENTS TO /OTSEG SWITCH
;170	INTEGRATE PLOT STUFF WITH BLISS CODE
;175	CHANGE /RESET TO /NODE
;206	ADD FLAGS FOR CHAINED FIXUP IF NOT ALL IN CORE
;221	GET PROTECTION OF XPN FILE RIGHT

;START OF VERSION 2B
;225	ADD SUPPORT FOR PSECT (MACRO VERSION 51)
;230	LINK ALL DDT SYMBOL TABLES IN OVERLAYS CORRECTLY
;243	ADD SIMULA TO KNOWN PROCESSORS
;274	Add flag bit which indicates TWOSEG forced while
;	loading DATA.
;303	GET PAGE SIZE RIGHT IF TENEX!FTVM
;345	INCLUDE EDIT 303 IN MAINTENANCE SOURCES.  LABEL EDIT 230.
;353	REMOVE EDIT 225
;363	UPDATE MINOR VERSION #
;364	Add new fixup type so NAME block doesn't have to be
;	in core when HISEG block is seen.
;400	Change Prototype Data Block offsets so SFD's can be referenced.
;402	Make /TEST unique. (Conflicts with /TMPCOR in SCAN 7B)
;404	Insert edits 334 and 340, which vanished.
;411	Add /K switch to fix ASCII text problems.
;START OF VERSION 2C
;440	Change macro so /ONLY switch ca be global
;454	Fix LITYPE macro for LNKNEW (again).
;464	Implement /MISSING and LNKIMM message.
;471	Add code for ALGOL debugging system.
;502	Increase size of basic stack for SCAN error processing.
;503	Increase lines per LPT page to 56 (was 55).
;510	Define 3 new symbol fixups for relocatable symbols.
;517	Change ABLLEN to LN.ABL.
;530	Clean up triplet flag definitions for TXxx macros.
;534	Implement /CRLF switch.
;543	Clarify comments about PS.UD? flags.
;544	SOUP in LINK version 3 stuff for TOPS-20.
;545	Make LINK understand 100(8) .LINK chains.
;551	Change /SYMBOL to /SYFILE.
;552	Organize .REQUEST/.REQUIRE stuff.
;554	Define LN.SWV.
;557	Clean up listing for release.

;START OF VERSION 3
;446	CHANGES FOR TENEX VERSION (UNDER TOPS20 SWITCH)

;START OF VERSION 3A
;560	Release on both TOPS-10 and TOPS-20 as LINK version 3A(560)

;START OF VERSION 4
;577	Define new LS fixup type for local block name chain.
;600	Define LN.PLC, AD.???, PD.???, & MX.??? in this module.
;603	Delete PPDL.
;611	Support COBOL-74
;621	/SAVE and /SSAVE switches generate an EXE  file.
;625	Add .EB to print a blank line after a message
;635	Change .SPL default to 0, add /ARSIZE switch.
;650	Use VM on TOPS-10 if available under FTVM.
;674	Define .GTRDI, .GTRDV, and .GTRS0 until they appear in UUOSYM.
;703	Add 4 more compiler types.
;715	Modify SYMSEG to take psect name.
;721	Make it /SYMSEG:PSECT:psectname
;722	Implement PSECT atrributes
;723	Add /UPTO.
;727	Add symbols .FRESP and .SYLIM for default symbol limit.
;731	Search MACTEN, UUOSYM instead of C.
;732	Add .LLOC for initial LOWLOC value.
;734	Add KL in CPUs.
;740	Remove /VERSION from switch table.
;745	Default symbol table limit(.SYLIM) is 777777.
;750	Add symbols .IWS and .IWM to reserved 2-page window size.
;756	Fix bug with PSECT attribute definition.
;761	Define  a relocatable PSECT bit(AT.RP) as part of RC.AT.
;765	Release on both TOPS-10 and TOPS-20 as LINK version 4(765)
SUBTTL	STANDARD MNEMONICS--REGISTERS, BITS, UUOS

;AC NAMES
;MUST NOT BE REDEFINED, ALL LOCAL ACCS MUST BE DEFINED IN TERMS OF THESE

FL=0		;FLAGS (LH=PERMANENT, RH=TEMPORARY)
T1=1		;VERY TEMPORARIES
T2=2
T3=3
T4=4

P1=5		;PRESERVED TEMPORARIES
P2=6
P3=7
P4=10

W1=11		;MORE PERMANENT
W2=12
W3=13

R1=14		;EVEN MORE PERMANENT
R2=15
R3=16
R==R1		;ALTERNATIVE NAME

P=17		;PUSH-DOWN POINTER



;*********** TEMPORARY DEFINITIONS
;*********** REMOVE WHEN DEFINED IN FIELD-IMAGE UUOSYM

.GTRDV==135			;GETTAB FOR DEVICE RUN FROM
.GTRDI==136			;GETTAB FOR UFD RUN FROM
.GTRS0==145			;GETTAB FOR FIRST SFD RUN FROM
;I/O CHANNELS

;DEFINE I/O CHANNEL DATA

DEFINE IODATA <
;;REAL CHANNELS

 XXX	(ZC,0,.IODPR)		;GETSEG AND SCAN/WILD ONLY
 XXX	(DC,1,.IOBIN)		;READ DATA FILE
 XXX	(MC,2,.IOASC)		;MAP CHANNEL (OUTPUT)
 XXX	(RC,3,.IOASC)		;RECORD LOG FILE CHANNEL
 XXX	(OC,4,.IODPR)		;OVERLAY CHANNEL
 XXX	(LC,5,.IODPR)		;LOW SEG CODE OVERFLOW 
 XXX	(HC,6,.IODPR)		;HIGH SEG CODE OVERFLOW
 XXX	(SC,7,.IODPR)		;LOCAL SYMBOL OVERFLOW
 XXX	(GC,10,.IODPR)		;GLOBAL SYMBOL OVERFLOW
 XXX	(FC,11,.IODPR)		;FIXUP OVERFLOW
 XXX	(TC,12,.IODPR)		;TEMP CHAN (USED TO REPROCESS FIXUPS ETC)
 XXX	(AC,13,.IODPR)		;ALGOL SYMBOL OVERFLOW

;;PSEUDO-CHANNELS, USED TO HOLD LOOKUP/ENTER INFO

 XXXX	(%RC,RC,.IOASC)		;LOG FILE
 XXXX	(%SC,MC,.IODPR)		;SYMBOL FILE
 XXXX	(%VC,DC,.IODPR)		;SAVE/SSAVE FILE
 XXXX	(%XC,LC,.IODPR)		;XPN FILE
 XXXX	(%OC,OC,.IODPR)		;OVERLAY FILE
 XXXX	(%PC,0,-1)		;PLOT CHANNEL (WILL BE 17 AT RUN TIME)
>

DEFINE XXX (A,B,C)<
 A==:B
 %%==:B+1
>
DEFINE XXXX (A,B,C)<
 A==:%%
 %%==%%+1
>

IODATA
PURGE	XXX,XXXX,%%

OPDEF	HALT	[HALT]	;PUT IN CREF LISTING
OPDEF	ERRUUO	[1B8]	;ERROR UUO
;PERMANENT FLAGS (LH)

L.INC==1000		;IN SPECIAL /INC MODE (ONLY LOAD IF INCLUDED)
L.HSO==400		;LOAD HIGH SEGMENT ONLY
L.LSO==200		;LOAD LOW SEGMENT ONLY
L.FNS==100		;FORCED LOAD TO NORMAL SEGMENTS (DEFAULT)
L.FHS==40		;FORCED LOAD TO HIGH SEGMENT
L.FLS==20		;FORCED LOAD TO LOW SEGMENT
L.SPD==10		;DO SOMETHING SPECIAL FOR DEBUGGER
L.ISA==4		;IGNORE STARTING ADDRESS BLOCKS
L.SYM==2		;LOAD LOCAL SYMBOLS
L.LIB==1		;IN LIBRARY SEARCH MODE

;TEMPORARY FLAGS (RH)

R.TWSG==(1B0)		;TWOSEGMENT PROGRAM
R.LOD==(1B1)		;LOADING IN PROGRESS (BETWEEN TYPE 6 & TYPE 5)
;*****FREE BIT*****
R.CDT==(1B3)		;TWOSEG FLAG FORCED WHILE LOADING
			; DATA INCASE COMMON AND DIFF SEG
R.LHR==(1B4)		;IN NEW BLOCK TYPE THAT CAN HAVE RELOC LH

R.INC==L.INC		;IN SPECIAL /INC MODE (ONLY LOAD IF INCLUDED)
R.HSO==L.HSO		;LOAD HIGH SEGMENT ONLY
R.LSO==L.LSO		;LOAD LOW SEGMENT ONLY
R.FNS==L.FNS		;FORCED LOAD TO NORMAL SEGMENTS (DEFAULT)
R.FHS==L.FHS		;FORCED LOAD TO HIGH SEGMENT
R.FLS==L.FLS		;FORCED LOAD TO LOW SEGMENT
R.SPD==L.SPD		;DO SOMETHING SPECIAL FOR DEBUGGER
R.ISA==L.ISA		;IGNORE STARTING ADDRESS BLOCKS
R.SYM==L.SYM		;LOAD LOCAL SYMBOLS
R.LIB==L.LIB		;LIBRARY SEARCH MODE
;PRIMARY SYMBOL BITS

PT.SGN==:1B0		;SIGN BIT (MUST BE SET)
PT.EXT==:1B1		;EXTENDED TRIPLET REQUIRED
PT.SYM==:1B2		;SYMBOL TYPE
PT.TTL==:1B3		;SPECIAL TITLE BLOCK (DDT)
PT.RLC==:1B4		;RELOCATION COUNTER TYPE
PT.OTH==:1B5		;OTHER TYPE (RANDOM BLOCKS)

;FLAG BITS IN PRIMARY SYMBOL TRIPLET
PS.GLB==:1B6		;GLOBAL SYMBOL
PS.ENT==:1B7		;ENTRY POINT
PS.COM==:1B8		;COMMON
PS.REQ==:1B9		;GLOBAL REQUEST
PS.UDL==:1B10		;PARTIAL VALUE SEEN FOR LH, BUT DEPENDENT
			;GLOBAL NOT YET SEEN (I.E. A:=B##,,4)
PS.UDR==:1B11		;PARTIAL VALUE SEEN FOR RH
PS.UDF==:PS.UDL!PS.UDR	;BOTH HALVES "DEFINED" IN TERMS OF
			;OTHER SYMBOLS. NOTE THAT IF EITHER BIT
			;IS ON ALONE, THEN THE OTHER HALF MUST BE
			;FULLY DEFINED, SINCE IT WAS EITHER
			;CONSTANT (A:=B##,,4) OR WAS IN TERMS OF
			;ANOTHER GLOBAL THAT HAS SINCE BEEN
			;DEFINED.
PS.LCL==:1B12		;LOCAL SYMBOL
PS.DDT==:1B13		;HALF-KILLED (TO DDT)
PS.MDF==:1B15		;MULTIPLY DEFINED
PS.FXP==:1B16		;REFERENCE IN FIXUP TABLE
PS.REL==:1B17		;SYMBOL IS RELOCATABLE
;RIGHT HALF SIDE

PS.EXO==:1B18		;EXTENDED TRIPLET REQUIRED (FUTURE)
PS.BGS==:1B19		;COPIED FROM A BOUND GLOBAL TABLE
PS.RBG==:1B20		;RELOCATABLE BOUND GLOBAL
PS.NOE==:1B21		;NOT AN ENTRY FOR OVERLAYS
PS.NRQ==:1B22		;NOT A REQUEST (IF UNDEF) FOR OVERLAY

PS.TYP==:17		;MASK FOR OUTPUT TYPE
PS.UND==:0		;UNDEFINED
PS.LOG==:1		;LOGICAL
PS.SPI==:2		;S.P. INTEGER
PS.SPR==:4		;S.P. REAL
PS.OCT==:6		;OCTAL
PS.LBL==:7		;LABEL
PS.DPR==:10		;D.P. REAL
PS.DPI==:11		;D.P. INTEGER
PS.DO==:12		;D.P. OCTAL
PS.CMP==:14		;COMPLEX
PS.AS==:17		;ASCII STRING

;BITS IN "OTHER" BLOCKS

PO.IND==:1B6		;BLOCK IS POINTER TO WHERE REAL BLOCK WENT

;FLAG BITS IN PRIMARY TITLE BLOCK

PT.MSF==:1B6		;THIS BLOCK DESCRIBES ANOTHER SOURCE FILE
PT.FAK==:1B7		;TITLE DEFINED BY LINK-10 NOT USER
PT.BLK==:1B8		;FAIL LOCAL BLOCK
PT.PSP==:1B9		;POINTER TO PSECT RELOC BLOCK
PT.PSC==:1B10		;PSECT RELOC BLOCKS
;SECONDARY TRIPLET BITS

S.SGN==:1B0		;SIGN BIT (MUST BE OFF)
S.LST==:1B1		;LAST SECONDARY TRIPLET
S.SYM==:1B2		;SYMBOL TYPE
S.TTL==:1B3		;TITLE BLOCK
S.RLC==:1B4		;RELOCATION CTRS

;SECONDARY SYMBOL BITS
S.LNM==:1B6		;LONG NAME
S.COM==:1B7		;COMMON (SIZE OF IT)
S.FXP==:1B8		;POINTER TO FIXUP CHAIN
S.PVS==:1B9		;PARTIAL VALUE ONLY (SYMBOL FIXUP NEEDED)
S.RBG==:1B10		;BOUND GLOBAL DEFINED IN RELOCATABLE LINK


;SECONDARY TITLE BITS: LEFT HALF (PUBLISHED VALUES)
S.CMT==:1B6		;ASCII COMMENT ABOUT PROGRAM
S.PRC==:1B7		;PROCESSOR USED TO COMPILE PROGRAM
S.CRE==:1B8		;CREATION DATE AND TIME
S.DEV==:1B9		;DEVICE & UFD FOR SOURCE FILE
S.NAM==:1B10		;FILE NAME & EXT
S.SFD==:1B11		;SFD'S
S.VER==:1B12		;VERSION
S.SEG==:1B13		;RELOCATION CTRS FOR LOW/HIGH
S.PSC==:1B13		;PSECT RELOC BLOCKS

;RIGHT HALF (INTERNAL VALUES)
S.RLD==:1B18		;REL FILE DEVICE & UFD
S.RLN==:1B19		;REL FILE NAME AND EXTENSION
S.RLS==:1B20		;REL FILE SFD'S

;THE FOLLOWING FLAGS ARE FOR INTERNAL USE ONLY, AND DO NOT APPEAR
;IN THE .REL FILE OR THE LS AREA.
S.MSF==:1B34		;PROCESSING A MULT. SRC. FILE 3RPLET
S.MUL==:1B35		;MORE THAN ONE OF THIS TRIPLET LEGAL
;CORRESPONDING BITS IN OLD RADIX-50 SYMBOLS

R5.DDT==:1B0		;HALF-KILLED TO DDT
R5.REQ==:1B1		;GLOBAL REQUEST
R5.LCL==:1B2		;LOCAL SYMBOL
R5.GLB==:1B3		;GLOBAL SYMBOL

;AND BITS IN ADDITIVE GLOBAL REQUESTS
R5.FXA==:1B0		;ADDITIVE GLOBAL FIXUP
R5.FXL==:1B1		;LEFT HALF FIXUP
R5.FXS==:1B2		;SYMBOL TABLE FIXUP
R5.FXC==:1B3		;RIGHT HALF CHAINED FIXUP

;FLAGS IN FIXUP BLOCK FIRST WORD (LEFT HALF)

FP.SGN==:1B0		;SIGN BIT (MUST BE ON FOR PRIMARY)
FP.SYM==:1B1		;SYMBOL BLOCK FIXUP (ADDITIVE GLOBAL)
FP.PTR==:1B2		;RIGHT HALF IS POINTER TO CHAIN OF FIXUPS
FP.POL==:1B3		;POLISH FIXUP BLOCK
FP.LBT==:1B4		;LOADER BLOCK TYPE (USUALLY 1)
FP.F4==:1B5		;OLD FORTRAN TABLES
FP.PRU==:1B6		;PAGE FAULT RIGHT-HALF FIXUP UNDEFINED
FP.TTL==:1B7		;STUFF FOR TITLE BLOCKS (SEG  POINTERS)

;OTHER FIXUP FLAGS FOR SYMBOL TRIPLETS ONLY

FS.FXR==:1B10		;RIGHT HALF FIXUP (R5.FXR)
FS.FXL==:1B11		;LEFT HALF FIXUP (R5.FXL)
FS.FXF==:1B12		;FULL WORD FIXUP
FS.FXS==:1B13		;SYMBOL TABLE FIXUP (R5.FXS)
FS.FXC==:1B14		;RIGHT HALF CHAINED FIXUP (R5.FXC)

FS.REL==:PS.REL		;DEFINING SYMBOL WAS RELOCATABLE
;FIXUP TYPES

;CORE FIXUPS
DEFINE CFIXUPS<
X CR
X CL
X CF
X AR
X AL
X AF
X RR
X RL
X RF
>

;SYMBOL TABLE FIXUPS
DEFINE SFIXUPS<
X AR
X AL
X AF
X RR;;		;SAME AS AR BUT RELOCATABLE **DON'T MOVE**
X RL;;		; "   "  AL  "        "         "     "
X RF;;		; "   "  AF  "        "         "      "
X TL
X TB;;		;[577] FIXUP LH 3RD WORD PRIMARY TITLE BLOCK
X SG
X SL;		;ADD NEW FIXUP IN SFIXUPS MACRO FOR SG, LEFT HALF
>

;DEFINE CORE FIXUP OFFSETS
DEFINE X (A)<
 CPF.'A==%%
 %%==%%+1
>
%%==0
CFIXUPS

;DEFINE SYMBOL TABLE FIXUPS
DEFINE X (A)<
 SPF.'A==%%
 %%==%%+1
>
%%==0
SFIXUPS
IFN FTEXE,<

;EXE FILE

;FLAG BIT FOR RIGHT HALF OF SSEXT (LH OF SSEXT IS THE SAVE FILE EXTENSION)

SS.SHR==000001		;SHARABLE--SET IF SSAVE SWITCH USED

;EXE FILE DIRECTORY TYPE
.SVEVC==1775		;ENTRY VECTOR

>

;COMPILER TYPES

DEFINE PROCESSORS<
X UNKNOWN,UNK
X F40,F40
X COBOL,CBL
X ALGOL,ALG
X NELIAC,NLI
X PLI,PLI
X BLISS,BLI
X SAIL,SAI
X FORTRAN,FOR
X MACRO,MAC
X FAIL,FAI
X BCPL,BCP
X MIDAS,MID
X SIMULA,SIM
X CBL74,C74
X CBL79,C79
X BLS36,B36
X BASIC,BAS
>
;***NOTE***	ADD NEW ITEMS IN KEYWORDS MACRO ALSO

CT.LEN==0
CT.BIT==1B0

DEFINE X (A,B)<
 CT.'B==CT.LEN
 CT.LEN==CT.LEN+1
 B'BIT==CT.BIT
 CT.BIT==CT.BIT_-1
>

PROCESSORS

IFE CT.BIT,<PRINTX TOO MANY PROCESSORS>
PURGE X,CT.BIT

CT.ANY=-CT.UNK
;CPUS

DEFINE CPUS<
X UNKNOWN,UNK
X KA10,KA
X KI10,KI
X KL10,KL
>

CP.LEN==0
CP.BIT==1B0

DEFINE X (A,B)<
 CP.'B==CP.LEN
 CP.LEN==CP.LEN+1
 B'BIT==CP.BIT
 CP.BIT==CP.BIT_-1
>

CPUS

IFE CP.BIT,<PRINTX TOO MANY CPUS>
PURGE X,CP.BIT
;RELOCATION TABLE POINTERS
RC.SG==0	;SEGMENT NUMBER
RC.NM==1	;NAME
RC.IV==2	;INITIAL VALUE
RC.CV==3	;CURRENT VALUE
RC.OF==4	;OFFSET IN SEGMENT RELATIVE TO 0 OR 400000
RC.HL==5	;HIGHEST LOC LOADED
RC.LB==6	;POINTER TO TAB.LB(SEG)
RC.WD==7	;POINTER TO LW.S0(SEG)
RC.PG==^D8	;POINTER TO UW.S0(SEG)
RC.AT==^D9	;[722] PSECT ATTRIBUTES

RC.INC==^D10	;SIZE OF EACH BLOCK

;[722] BIT DEFINITION FOR RC.AT

AT.RP==:1B0	;[761]  RELOCATABLE PSECT
AT.PA==:1B13	;[722] PAGE ALIGNED
AT.CN==:1B14	;[756][722] CONCATENATE
AT.OV==:1B15	;[756][722] OVERLAY
AT.RO==:1B16	;[756][722] READ ONLY
AT.RW==:1B17	;[756][722] READ/WRITE


;STANDARD ENTRY POINTS FOR EXECUTE ONLY HIGH SEGS

IFE FTSINGLE,<
%%UUO==0		;UUO ENTRY
%%RET==1		;CPOPJ
%%ST==2		;SEGMENT START
>
SUBTTL	PROTOTYPE SCAN BLOCK

F.NXT==:0			;POINTER TO NEXT FILE AREA
F.SWP==:F.NXT+1			;POINTER TO SWITCH BLOCKS
F.ZER==:F.NXT+2			;START OF AREA FOR SPEC STORAGE
F.DEV==:F.ZER+.FXDEV		;DEVICE
F.NAME==:F.ZER+.FXNAM		;NAME
F.NAMM==:F.ZER+.FXNMM		;NAME MASK
F.EXT==:F.ZER+.FXEXT		;EXT,,MASK
F.MOD==:F.ZER+.FXMOD		;MODIFIER WORD
F.PROT==:F.MOD			;OUTPUT PROTECTION
F.MODM==:F.ZER+.FXMOM		;MODIFIER MASK
F.DIR==:F.ZER+.FXDIR		;DIRECTORY
F.DIRM==:F.ZER+.FXDIM		;DIRECTORY MASK
F.SFD==:F.DIRM+1		;FIRST SFD
F.SFDM==:F.SFD+1		;FIRST SFD MASK
F.BFR==:F.ZER+.FXBFR		;/BEFORE
F.SNC==:F.ZER+.FXSNC		;/SINCE
F.ABF==:F.ZER+.FXABF		;/ABEFORE
F.ASN==:F.ZER+.FXASN		;/ASINCE
F.FLI==:F.ZER+.FXFLI		;FILE MIN SIZE (WORDS)
F.FLM==:F.ZER+.FXFLM		;FILE MAX SIZE (WORDS)
F.EST==:F.ZER+.FXEST		;/ESTIMATE
F.VER==:F.ZER+.FXVER		;/VERSION

F.LEN==:F.ZER+.FXLEN		;LENGTH REQUIRED FOR FILE SPECS
SUBTTL	PROTOTYPE DATA BLOCK

I.ZER==:0		;BASE
I.MOD==:I.ZER		;MODE OF OPEN
I.DEV==:I.MOD+1		;DEVICE
I.BUF==:I.MOD+2		;BUFFER HEADERS
I.DVZ==:I.MOD+3		;DEVSIZ WORD
I.RNG==:I.MOD+4		;POINTER TO RING BUFFERS
I.SCN==:I.MOD+5		;POINTER TO SPECIAL SCAN MOD WORD
I.CHN==:I.MOD+6		;CHAN NUMBER IN AC FIELD (TO FORM I/O INSTS)
I.SWT==:I.MOD+7		;SWITCHES STILL TO DO
			;AFTER OPEN (LH) ,, AFTER CLOSE (RH)
LN.OPN==I.SWT-I.MOD+1	;LENGTH OF "OPEN" BLOCK

I.RIB==:I.ZER+LN.OPN	;START OF LOOKUP/ENTER BLOCK
I.PPN==:I.RIB+.RBPPN	;DIRECTORY NAME OR POINTER
I.NAM==:I.RIB+.RBNAM	;FILENAME
I.EXT==:I.RIB+.RBEXT	;EXTENSION
I.PRV==:I.RIB+.RBPRV	;PRIVS, MODE, TIME DATE
I.SIZ==:I.RIB+.RBSIZ	;SIZE (OLD STYLE LOOKUP PPN)
I.VER==:I.RIB+.RBVER	;VERSION
I.EST==:I.RIB+.RBEST	;ESTIMATED LENGTH
I.ALC==:I.RIB+.RBALC	;ALLOCATED LENGTH
I.LDV==:I.RIB+.RBDEV	;LOGICAL UNIT NAME

LN.RIB==:I.LDV-I.RIB+1	;LENGTH OF ENTER BLOCK


;OFFSETS FOR FULL PATH STORAGE
I.PTH==:I.ZER+LN.OPN+LN.RIB		;
I.ARG==:I.PTH+.PTFCN			;
I.SSW==:I.PTH+.PTSWT			;
I.UFD==:I.PTH+.PTPPN			;
I.SFD==:I.UFD+1				;FIRST SFD
I.END==:I.UFD+LN.DRB			;
LN.SFD==:I.END-I.PTH+1			;
LN.IO==:LN.OPN+LN.RIB+LN.SFD		;TOTAL LENGTH REQUIRED
SUBTTL DATA BLOCK FORMAT FOR REQUEST/REQUIRE BLOCKS


R.NXT==:0		;POINTER TO THE NEXT BLOCK
R.ZER==:R.NXT+1		;FIRST WORD CONTAINING DATA
R.DEV==:R.ZER+0		;DEVICE
R.NAM==:R.ZER+1		;FILE NAME
R.EXT==:R.ZER+2		;EXTENSION
R.PPN==:R.ZER+3		;PROJECT PROGRAMMER NUMBER
R.SFD==:R.ZER+4		;FIRST SFD
R.END==:R.SFD+5		;LAST WORD IN BLOCK
R.LEN==:R.END-R.NXT+1	;LENGTH OF THE DATA BLOCK
SUBTTL	MACROS


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

DEFINE SEGMENT<
	TWOSEG	%HISEG
>


DEFINE	U (SYMBOL,LENGTH)<
 SYMBOL=.ZZ
 IFB <LENGTH>,<.ZZ==.ZZ+1>
 IFNB <LENGTH>,<.ZZ==.ZZ+LENGTH>
 IFG .ZZ-.TEMP-.TLEN,<PRINTX Too much TEMP space used>
>

;TO CLEAR TEMP SPACE IN EACH MODULE
DEFINE ZAPTMP <
	MOVE	T1,[.TEMP,,.TEMP+1]
	SETZM	.TEMP
	BLT	T1,.TEMP+.TLEN-1
>
;DEFINE AREAS FOR LOADING INTO

DEFINE AREAS <
	XXX	(DY)	;DYNAMIC DATA
	XXX	(LC)	;LOW SEG CODE
	XXX	(HC)	;HIGH SEG CODE
	XXX	(AS)	;ALGOL SYMBOLS
	XXX	(RT)	;RELOCATION TABLE
	XXX	(LS)	;LOCAL SYMBOLS
	XXX	(FX)	;FIXUPS
	XXX	(BG)	;BOUND GLOBALS
	XXX	(GS)	;GLOBAL SYMBOLS
>
;MACRO TO MULTIPLEX OUTPUT TO LOG AND TTY
DEFINE	OUTVIA (SUBROUTINE)<
	PUSHJ	P,TTYCHK
	 PUSHJ	P,SUBROUTINE
>

;MACRO TO CLEAR ^O
DEFINE CLEARO<
	SKPINC
	  JFCL
>

;MACRO TO XLIST ERROR TEXT
DEFINE .ASCIZ (TEXT)<
	XLIST
 ASCIZ	\TEXT\
	LIST
>

DEFINE SPUSH (AC) <
 IRP AC,<
	PUSH	P,AC
>>

DEFINE SPOP (AC) <
 IRP AC,<
	POP	P,AC
>>
;MACRO TO ENTER DDT IF LOADED AND DEBUG CONDITION IS TRUE
DEFINE .JDDT (MODULE,LABEL,INST)<
 IFE DEBSW,<>
 IFN DEBSW,<
  IRP INST,<
	INST
  >
	PUSHJ	P,ENTDDT
	  .JDDTX (MODULE,LABEL,\<.-LABEL>)
	OPDEF	CONTINUE [JRSTF	@.JBOPC]
>>

DEFINE	.JDDTX	(MODULE,LABEL,INCREMENT)<
 JFCL	[ASCIZ	\MODULE:	LABEL + INCREMENT\]
>

IFN TOPS20,<
 OPDEF	IOR.	[IORI]		;IMMEDIATE MODE
 OPDEF	ANDCM.	[ANDCMI]	;IMMEDIATE MODE
>
IFE TOPS20,<
 OPDEF	IOR.	[IOR]		;FROM MEMORY
 OPDEF	ANDCM.	[ANDCM]		;FROM MEMORY
>

;MACRO TO STORE INTO USER CODE
IFE FTOVERLAY,<
	OPDEF	CSTORE	[MOVEM	W1,(P3)]
>
IFN FTOVERLAY,<
	DEFINE CSTORE,<
	XWD	CS.LHS##,CS.RHS##
>>
;MACRO TO GENERATE USER LIBRARIES BY DEFAULT
;CALL IS
;MAKLIB	LANGUAGE,DEVICE,FILE,EXT,PRJ,PRG,<SFD LIST>
;TO GENERATE THEM PUT ABOVE DEFINITIONS INTO USELIB MACRO
DEFINE USELIB <
>
;DOUBLE AND TRIPLE WORD MOVES
DEFINE TMOVE (AC,M)<
 IFL <Z M>-<@>,<
	MOVE	AC,M
	DMOVE	AC+1,1+M
 >
 IFGE <Z M>-<@>,<
	MOVEI	AC+2,M
	DMOVE	AC,(AC+2)
	MOVE	AC+2,2(AC+2)
>>

DEFINE TMOVEM (AC,M)<
	MOVEM	AC,M
	DMOVEM	AC+1,1+M
>

IFE FTKIONLY,<
 DEFINE DMOVE (AC,M)<
  IFL <Z M>-<@>,<
	MOVE	AC,M
	MOVE	AC+1,1+M
  >
  IFGE <Z M>-<@>,<
	MOVEI	AC+1,M
	MOVE	AC,(AC+1)
	MOVE	AC+1,1(AC+1)
 >>

 DEFINE DMOVEM (AC,M)<
	MOVEM	AC,M
	MOVEM	AC+1,1+M
 >
>;END IFE FTKIONLY

DEFINE SMOVE (AC,M)<
 IFE M,<
	TDZA	AC,AC
 >
 IFN M,<
	SKIPA	AC,[M]
>>
;THESE MACROS TO MOVE WORD PHYSICALLY (BUT NOT LOGICALLY) ADJACENT
;USED INCASE DATA BASE CHANGES

DEFINE DGET (AC,M1,M2)<
 IFE <M1>-<M2>+1,<
	DMOVE	AC,M1
 >
 IFN <M1>-<M2>+1,<
	MOVE	AC,M1
	MOVE	AC+1,M2
>>

DEFINE DSTORE (AC,M1,M2)<
 IFE <M1>-<M2>+1,<
	DMOVEM	AC,M1
 >
 IFN <M1>-<M2>+1,<
	MOVEM	AC,M1
	MOVEM	AC+1,M2
>>

DEFINE TGET (AC,M1,M2,M3)<
 IFE <M1>-<M2>+1,<
	DMOVE	AC,M1
	MOVE	AC+2,M3
 >
 IFN <M1>-<M2>+1,<
	MOVE	AC,M1
	DGET	AC+1,M2
>>

DEFINE TSTORE (AC,M1,M2,M3)<
 IFE <M1>-<M2>+1,<
	DMOVEM	AC,M1
	MOVEM	AC+2,M3
 >
 IFN <M1>-<M2>+1,<
	MOVEM	AC,M1
	DSTORE	AC+1,M2
>>
;BLOCK TYPE DISPATCH MACRO

DEFINE LITYPE(F,L)<
 IF1,<BLOCK <L-F+2>/2>	;ALLOCATE ENOUGH SPACE
 IF2,<
  ZZ.==F
  ZZH.==<L-F+2>/2	;
  ZZT.==ZZH.+ZZ.	;
  REPEAT ZZH.,<
   PTYPE (\ZZT.,\ZZ.)	;
   ZZ.==ZZ.+1
   ZZT.==ZZT.+1	;

 >>
 DEFINE PTYPE (X,Y)<
  IFDEF T.'X,<
   IFDEF T.'Y,<
    T.'X,,T.'Y
   >
   IFNDEF T.'Y,<
    T.'X,,T.ERR
  >>
  IFNDEF T.'X,<
   IFDEF T.'Y,<
    T.ERR,,T.'Y
   >
   IFNDEF T.'Y,<
    T.ERR,,T.ERR
>>>>
;MACRO TO INITIALIZE REL FILE INPUT IN LNKNEW

DEFINE	RELOCATE(SIZE,WHICH),<

;;FIRST, CHECK FOR RELOCATE(NONE), AS IN NAME BLOCK INPUT ETC.
IFIDN	<SIZE><NONE>,<
	HRLI	WC,400000	;;SO T.REL? WON'T LOOK FOR REL WORDS
	SETZ	RB,		;;AND IF THEY DO THEY WON'T FIND ANY
>

;;NOT NONE, MUST BE RELOCATION BYTE SIZE. SETUP FOR THAT DATA.
IFDIF	<SIZE><NONE>,<
	MOVEI	T1,SIZE		;;GRAB SPECIFIED SIZE
	MOVEM	T1,RELSIZ	;;AND STORE FOR T.REL?
	PURGE	SETUP		;;MAKE SURE UNDEFINED FOR TEST BELOW

IFB	<WHICH>,<PRINTX ?ERRONEOUS RELOCATE MACRO>
IFNB	<WHICH>,<

IFIDN	<WHICH><RIGHT>,<OPDEF SETUP[TRZ FL,R.LHR]>;;LH ABSOLUTE
IFIDN	<WHICH><BOTH>,< OPDEF SETUP[TRO FL,R.LHR]>;;LH RELOCATABLE

;;IF THAT WON, USE IT. IF NOT, WE HAVE AN ERROR
IFDEF	<SETUP>,<	SETUP	>
IFNDEF	<SETUP>,<PRINTX ?ERRONEOUS RELOCATE MACRO>
>>>
SUBTTL	ERROR/LOG MACROS

;.ERR. MACRO GENERATES USUAL CALLS TO ERROR/LOG MODULE
;GENERAL FORM IS .ERR.	(TYP,FLG,VER,LVL,SEV,CODE,TXT)
;TYP	IS OFFSET TO LOG/ERROR ENTRY
;FLG	IS SOME FLAGS FOR SPECIAL CASES, SUCH AS
;		.EP	CODE IS POINTER TO ERROR WORD
;		.EC	ERROR OUTPUT IS CONTINUED
;		.EE	ERROR MAY BE EDITED AND JOB CONTINUE
;		.EB	PRINT BLANK LINE IN LOG AFTER THIS MESSAGE

;VER	IS VERBOSITY LEVEL (NOT USED YET)
;LVL	IS ASSIGNED TYPE-OUT LEVEL
;SEV	IS ASSIGNED SEVERITY LEVEL
;CODE	IS ASSIGNED MESSAGE NMEMONIC
;TXT	IS TEXT OF MESSAGE

DEFINE	.ERR.	(TYP,FLG,VER,LVL,SEV,CODE,TXT)<
 IFL L%MAX-LVL,<LVL=L%MAX>
 %LVL==LVL-.LVL
 IFGE %LVL,<
  IFL V%MAX-VER,<VER=V%MAX>
  IFL S%MAX-SEV,<SEV=S%MAX>
  IFNB <TYP>,<
   ERRUUO	ER%'TYP
  >
  IFNB <CODE>,<
   IFNB <TXT>,<
   EXP <FLG>+<VER>B<B%VER>+<SEV>B<B%SEV>+<LVL>B<B%LVL>+<[.ER'CODE::ASCIZ \CODE \
								   ASCIZ \TXT\]>>
   IFB <TXT>,<
    IF2,<
    IFNDEF .ER'CODE,<EXTERN .ER'CODE>
    >
   EXP <FLG>+<VER>B<B%VER>+<SEV>B<B%SEV>+<LVL>B<B%LVL>+<.ER'CODE>>
  >
  IFB <CODE>,<
   EXP <FLG>+<VER>B<B%VER>+<SEV>B<B%SEV>+<LVL>B<B%LVL>+<[ ASCIZ \TXT\]>>
  >
>
;CONTINUED ERROR WORDS HAVE SIMILAR FORM
;DIFFERENCES ARE
;TYP	IS STORED IN LVL FIELD
;VER	IS USUALLY BLANK
;LVL	IS USUALLY BLANK
;SEV	IS USUALLY BLANK
;CODE	IS LOCATION OF ERROR POINTER
;

DEFINE	.ETC.	(TYP,FLG,VER,LVL,SEV,CODE,TXT)<
 IFGE %LVL,<
  IFNB <CODE>,<
   EXP <FLG>+<ET%'TYP>B<B%LVL>+<CODE>
  >
  IFB <CODE>,<
   IFNB <TXT>,<
    EXP <FLG>+<ET%'TYP>B<B%LVL>+<[ ASCIZ \TXT\]>
   >
   IFB <TXT>,<
    EXP <FLG>+<ET%'TYP>B<B%LVL>
  >>
 >
>
;DEFINE ALL MAIN ERROR TYPES

DEFINE ERRTYPE <
 XXX	(MS);;		ASCII MESSAGE
 XXX	(LRE);;		LOOKUP/RENAME/ENTER ERROR
 XXX	(I);;		INIT/OPEN ERROR
 XXX	(ST);;		STATUS ERROR
>

DEFINE XXX (TYPE) <
 ER%'TYPE==:ZZ
 ZZ==ZZ+1
>
ZZ==0
ERRTYPE

;DEFINE ALL CONTINUATION ERROR TYPES

DEFINE ETCTYPE <
 XXX	(STR);;		ASCIZ STRING
 XXX	(SBX);;		SIXBIT WORD
 XXX	(OCT);;		OCTAL WORD
 XXX	(DEC);;		DECIMAL WORD
 XXX	(FSP);;		FILE SPEC
 XXX	(ASC);;		ASCII CHARACTER
 XXX	(COR);;		CORE SIZE (K OR P)
 XXX	(JMP);;		GOTO ADDRESS
IFN .NWBLK,<
 XXX	(LSP);;		LS AREA POINTER (TO A TRIPLET)
> ;END IFN .NWBLK
>
DEFINE XXX (TYPE)<
 ET%'TYPE==:ZZ
 ZZ==ZZ+1
>
ZZ==0
ETCTYPE
PURGE XXX,ZZ
;DEFINE SPECIAL VALUES USED IN .ERR. AND .ETC. MACROS

;BIT POSITIONS
B%VER==:^D5		;VERBOSITY FIELD
B%SEV==:^D11		;SEVERITY FIELD
B%LVL==:^D17		;LEVEL FIELD

;VERBOSITY
V%S==:1			;SHORT (CODE ONLY)
V%M==:2			;MEDIUM (ONE LINE)
V%L==:3			;LONG (MUCH MORE)


;SEVERITY
S%I==:1			;INFORMATION ONLY
S%W==:^D8		;WARNING (NOT FATAL)
S%B==:^D16		;FATAL IN BATCH MODE
S%E==:^D24		;FATAL UNLESS EDITED
S%F==:37		;ALWAYS FATAL

;LOG LEVEL CUTOFF
L%I==:1			;INFORMATION ONLY
L%W==:^D8		;WARNING (NOT FATAL)
L%F==:37		;ALWAYS VISIBLE

;MAXIMUM VALUES
V%MAX==:3
L%MAX==:37
S%MAX==:37

DEFINE LEVELS (ITEM,LEVEL)<
 IRPC LEVEL,<
  ITEM'%I'LEVEL==:ITEM'%I+LEVEL
>>

LEVELS S,<1234567>
LEVELS L,<1234567>

;FLAGS 
.EP==1B0		;WORD IS A POINTER
.EC==1B1		;WORD IS CONTINUED
.EE==1B2		;ERROR CAN BE EDITED
.EB==1B3		;PRINT BLANK LINE IN LOG AFTER THIS MESSAGE

%ENT==1B0		;ENTER ERROR
%LKP==1B1		;LOOKUP ERROR
%REN==1B2		;RENAME ERROR
SUBTTL	SWITCH MACROS

;SWTCHS MACRO CONTAINS ALL KNOW SWITCHES
;IT IS EXPANDED IN VARIOUS PLACES  (LNKSCN, LNKWLD)
;FORM IS SWMAC A,B,C,D,E,F,G,H,I
;WHERE
;SWMAC IS A MACRO REDINED ON EACH CALL TO SWTCHS
;A	IS A MACRO KNOWN TO SCNMAC (SL, SP, OR SS)
;B	IS THE SWITCH NAME IN SIXBIT
;C	IS STORAGE (NULL UNLESS MULTIPLE WORD) GENERATES A TOKEN#
;D	IS PROCESSOR REQUIRED (SP)
;	OR KEY WORD LIST (SL)
;	OR VALUE (SS)
;E	IS ABBREVIATION FOR DEFAULT VALUES (SP)
;	OR DEFAULT KEY VALUE (SL)
;	OR NULL (SS)
;F	IS SIZE OF BLOCK REQUIRED TO STORE SWITCH (SINGLE OCCURANCE)
;G	IS "." IF SWITCH ACTION IS DIFFERENT IF SEEN BEFORE FILE NAME
;	THAN IF SEEN AFTER FILE NAME, NULL IF NOT
;H	IS "*" IF SWITCH WILL ALWAYS BE UNIQUE TO ONE CHARACTER
;I	IS DISPATCH IF SWITCH HAS TWO VALUES
;	I.E. /SWITCH:SYMBOL:VALUE

;THE SWITCHES NEED NOT BE IN ALPHABETICAL ORDER
;TO ADD A NEW ONE  JUST PUT IN TABLE
;AND DEFINE ALL SYMBOLS REQUIRED BY SWTCHS EXPANSION
DEFINE SWTCHS<
SWMAC	SP,ARSIZE,,.SWDEC,ARS,3;;	;[635] MAKE AR TABLE BIGGER
SWMAC	SP,BACKSPACE,,.SWDEC,MTP,3,.
SWMAC	SP,COMMON,,.SWSYM,SYM,4,.,,.DECNW
SWMAC	SL,CONTENT,,CONK,1,3
SWMAC	SS,COUNTER,,0,,3,.
SWMAC	SS,CRLF,,0,,3,.;;	;REMEMBER EOL'S IN ASCII TEXT
SWMAC	SL,DDEBUG,,DEBK,1,3
SWMAC	SL,DEBUG,,DEBK,1,3,.,*
SWMAC	SL,DEFAULT,,DEFK,1,3,.
SWMAC	SP,DEFINE,,.SWSYM,SYM,4,,,.DECNW
SWMAC	SS,ENTRY,,0,,3,.
SWMAC	SP,ERRORLEVEL,,.SWDEC,ERR,3
SWMAC	SP,EXCLUDE,,.SWSYM,SYM,3,.
SWMAC	SS,EXECUTE,,0,,3,,*
SWMAC	SP,FRECOR,,.SWDEC,FRC,3
SWMAC	SS,GO,,0,,3,,*
SWMAC	SP,HASHSIZE,,.SWDEC,HAS,3
SWMAC	SP,INCLUDE,,.SWSYM,SYM,3,.
SWMAC	SS,K,,0,,3,,*
SWMAC	SP,LINK,,.SWSIX,SYM,3
SWMAC	SS,LOCALS,,0,,3,.,*
SWMAC	SS,LOG,,0,,3
SWMAC	SP,LOGLEVEL,,.SWDEC,LOG,3
SWMAC	SL,MAP,,MAPK,1,3,,*
SWMAC	SS,MISSING,,0,,3,.;;	;FOR INCLUDES NOT SATISFIED
SWMAC	SL,MPSORT,,MPSK,1,3
SWMAC	SL,MTAPE,,MTPK,1,3,.
SWMAC	SL,NEWPAGE,,HYLK,1,3,.
SWMAC	SP,NODE,,.SWSXD,SYM,3
SWMAC	SP,NOENTRY,,.SWSYM,SYM,3,.
SWMAC	SS,NOINITIAL,,0,,3
SWMAC	SS,NOLOCAL,,0,,3,.,*
SWMAC	SP,NOREQUESTS,,.SWSIX,SYM,3,.
SWMAC	SS,NOSEARCH,,0,,3,.
SWMAC	SS,NOSTART,,0,,3,.
SWMAC	SS,NOSYMBOL,,0,,3
SWMAC	SL,NOSYSLIBRARY,,LIBK,1,3
SWMAC	SL,NOUSERLIBRARY,,LIBK,1,3
SWMAC	SL,ONLY,,ONLK,1,3,.
SWMAC	SL,OTSEGMENT,,OTSK,1,3
SWMAC	SL,OVERLAY,,OVLK,1,3,.
SWMAC	SP,PATCHSIZE,,.SWDEC,PAT,3
SWMAC	SL,PLOT,,PLTK,1,4,,,.DECNW
SWMAC