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