.
.         F A N G   C O N F I G U R A T I O N   P A R A M E T E R S
.
.         THIS ELEMENT CONTAINS ALL PARAMETERS NORMALLY CHANGED IN GENERATING
.         A VERSION OF FANG TO RUN AT AN ARBITRARY SITE.  THIS ELEMENT IS NOT
.         MAINTAINED WITH THE SSG SKELETON USED FOR THE REST OF FANG, SO THAT
.         CHANGING A PARAMETER MAY BE EASILY ACCOMPLISHED BY UPDATING THIS
.         ELEMENT WITH PDP, THEN ADDING 'ASC' TO REASSEMBLE AND REMAP FANG.
.
.
.         (C)  Copyright 1972-1978  John Walker
.
.         This software is in the public domain
.
          DEF
.
.
LEVEL     EQU       ;                   LEVEL OF FANG PROCESSOR
                    '3R4'
.
U1110     EQU       ;                   nonzero for dual-psr machines
                    0
.
pircb     equ       ;                   nonzero to use pircb$ instead of rlib$
                    0
.
EX8LEV    EQU       ;                   CURRENT EXEC-8 LEVEL  (MAJOR LEVEL ONLY)
                    32
.
MAXIML    EQU       ;                   MAXIMUM IMAGE LENGTH FOR SDF TEXT
                    33                  ALLOW 132 ASCII CHARACTERS
.
.         EXPANSION INCREMENT FOR DYNAMIC MEMORY ALLOCATION.  IF SET TO
.         ZERO, NO DYNAMIC EXPANSION WILL BE USED.
.
DYNMEM    EQU       ;
                    1024
.
DEBUG     EQU       ;                   ONE IF DEBUGGING CODE IS ENABLED
                    1
.
THRESHD   EQU       ;                   PERCENT TO START COMPLAINING ABOUT
                    20                  DELETED ELEMENTS.  (PACK IT)
.
.
.         The tag CONCURRENCY specifies the maximum number of commands FANG
.         will permit to be simultaneously pending.  When the number of
.         commands either currently active or waiting for files reaches
.         CONCURRENCY, the scanner will suspend reading commands until one
.         or more commands complete.  The only reason not to set CONCURRENCY
.         to a huge value is to protect against the user who drops in, say,
.         5000 PACK commands of different files in batch.  Limiting the
.         concurrency to a reasonable value prevents the embarassment of
.         running out of PCT space or pushing FANG over the 262K horizon.
.
concurrency equ     ;
                    15
.
.         FANG permits users to abbreviate commands to any extent, so long
.         as the fragment entered is unambiguous.  The tag EXACTCMD controls
.         what FANG does when the command entered starts as an unambiguous
.         command, but continues with improper letters.  If set to zero, the
.         command will be executed based on the leading letters.  If set to
.         one, the user will be asked to confirm that the command is correct
.         before it is executed.  If set to two, any wrong letter in a
.         command will be treated as a totally unknown command.
.
exactcmd  equ       ;
                    1
.
.         If you want FANG to perform tape positioning by files by using
.         the forward space file and backward space file functions, set
.         the tag 'BYFILES' nonzero.  Note that FANG does not test
.         whether the tape unit is capable of this function, hence this
.         tag should be set nonzero only in systems which simulate these
.         functions in software for units not capable of file positioning
.         or systems with no units lacking this feature.
.
byfiles   equ       ;
                    0
.
.         There is an undocumented feature in EXEC-8 which permits one to
.         accomplish the unbelievably difficult task of generating a page
.         heading containing a period.  The 'G' PRTCN$ control phrase causes
.         the entire rest of the string, periods included, to be used as
.         the heading.  If this feature (which Univac doesn't admit to,
.         and probably doesn't even know is there) should stop working,
.         shed a tear for quality software and set the tag PRTCNG to
.         zero.
.
prtcng    equ       ;
                    1
.
.         The following tag selects the Omnibus subtype used for EMBED-created
.         elements.  Note that only elements of this type will be eligible
.         for un-EMBEDing.
.
.         Note that changing this value will cause FANG not to recognise
.         EMBEDed elements created at other sites which use the standard
.         value.
.
embstyp   equ       076                 EMBED Omnibus subtype
.
.         If the tag II is nonzero, FANG will use the II$ mechanism to respond
.         to @@X C interrupts from demand.  If set to zero, the contingency
.         technique will be used.  If the II$ method is selected, the user
.         must specify what his system returns in A0 when an II$ process is
.         given control following an @@X C from demand.  Univac documents
.         that the system returns spaces, making the interrupt
.         indistinguishable from the operator II keyin, and thus unusable,
.         since we don't want to discard user output when the operator
.         makes an II keyin at random.  If fact, most systems seem to return
.         some junk with at signs in A0, and hence we can distinguish the
.         @@X C from an II.  The parameters IISMSK and IISENTL define the
.         characters to be tested, and the value to be found for the II
.         interrupt.  Note that the II interrupt mechanism MUST be used
.         if test and set queueing is the means of process synchronisation
.         (tag TSQ set nonzero below).  This is because of an EXEC 8 design
.         flaw in that an @@X C will not wake up a process asleep in a TSQ
.         wait.
.
ii        equ       ;
                    1
iismsk    equ       ;                   77's indicate characters to test
                    0777777777700
iisentl   equ       ;                   what you get in A0
                    '@@@@@ '
.
.         IF THE TAG 'INTERSITE' IS SET TO ZERO, THE INTER-SITE
.         DATA INTERCHANGE FEATURE WILL BE TURNED OFF AND ALL
.         CODE PERTAINING TO THE FEATURE WILL BE DELETED.  ALL
.         COMMANDS USING THE FEATURE WILL GIVE A 'NOT CONFIGURED'
.         MESSAGE IS USED.  IF SET TO ONE, INTER-SITE DATA INTERCHANGE
.         WILL BE ENABLED.
.
INTERSITE EQU       ;                   ONE TO ENABLE INTER-SITE INTERCHANGE
                    0                   ** UNIMPLEMENTED ** DO NOT SET TO 1 !!
.
.         THE TAGS 'ICHALF' AND 'ICQUARTER' DEFINE THE TYPES OF
.         COMMUNICATION HARDWARE FOUND AT A SITE.  IF A SITE HAS
.         HALF WORD HARDWARE, 'ICHALF' MUST BE SET TO ONE.  IF THE
.         SITE HAS QUARTER WORD HARDWARE, THE TAG 'ICQUARTER'
.         SHOULD BE SET TO ONE.  IF BOTH TAGS ARE SET TO ONE, FANG
.         WILL DETERMINE THE CHARACTERISTICS OF THE LINE BEING
.         USED AND FUNCTION IN THE PROPER MODE.  SETTING THESE
.         TAGS TO ZERO SAVES MEMORY AND TIME IN INTER-SITE
.         INTERCHANGE PROCESSING.  THE SETTINGS OF THESE TAGS ARE
.         IRRELEVANT UNLESS 'INTERSITE' IS SET NONZERO.
.
ICQUARTER EQU       ;                   ONE TO SUPPORT QUARTER-WORD COMMUNICATIO
                    1
.
ICHALF    EQU       ;                   ONE TO SUPPORT HALF WORD COMMUNICATIONS
                    1
.
.         SINCE IT IS NOT POSSIBLE TO RELIABLY EXPAND PROGRAM SIZE
.         ONCE A PROGRAM HAS ELEVATED ITSELF TO REAL-TIME STATUS,
.         FANG MUST ACQUIRE ALL NEEDED MEMORY BEFORE CONNECTING THE
.         FIRST COMMUNICATION.  THE FOLLOWING PARAMETER, WHICH IS
.         MEANINGFUL ONLY IF 'INTERSITE' IS SET NONZERO, SPECIFIES
.         THE AMOUNT OF MEMORY WHICH WILL BE RESERVED WHEN THE FIRST
.         LINE IS CONNECTED VIA THE 'CONNECT' COMMAND.  THIS MEMORY
.         MUST SUFFICE FOR ALL COMMANDS EXECUTED WHILE FANG IS
.         OPERATING AT A REAL TIME LEVEL.
.
RTBUFL    EQU       ;                   REAL TIME BUFFER RESERVE
                    5000
.
.         IF THE TAG 'TSQ' IS SET NONZERO, FANG WILL USE TEST AND SET
.         QUEUEING AS ITS MEANS OF ACTIVITY SYNCHRONISATION.  IF SET
.         TO ZERO, ACT$/DACT$ WILL BE USED.  TEST AND SET QUEUEING IS
.         THE RECOMMENDED MODE, AND IS ESSENTIAL IF INTER-SITE INTERCHANGE
.         IS TO BE USED.
.
TSQ       EQU       ;                   ONE TO ENABLE TEST AND SET QUEUEING
                    1
.
.         If you find that the first line of output generated by an
.         asynchronous command is overtyping the last outstanding
.         prompt from the scanner process, set the tag OVERTYPE
.         nonzero.
.
overtype  equ       ;
                    0
.
.         IT HAS COME TO THE ATTENTION OF FANG CENTRAL THAT DESPITE THE
.         FACT THAT UNIVAC BRUITED TO THE WORLD THE ADVENT OF ASCII CODE
.         IN EXEC-8 OVER TWO YEARS AGO, IT IS POSSIBLE TO RUN WITH THE LATEST
.         SYSTEM AND HARDWARE (INCLUDING THE BLOODY C/SP!!!) AND GET GARBAGE
.         FROM APRINT$-CREATED FILES.  THEREFORE THE TAG 'FDONLY' WILL CAUSE
.         FANG TO TRANSLATE ALL NORMALLY ASCII OUTPUT TO FIELDATA AND USE
.         PRINT$.  THIS WILL USE A DELIGHTFUL AMOUNT OF CPU TIME, AND DOUBTLESS
.         SOMEBODY WILL COMPLAIN.  A POX ON THEM.
.
FDONLY    EQU       ;                   1 TO TRANSLATE ALL OUTPUT TO FIELDATA
                    0
.
.         THIS EQUATE CONTROLS CHECKSUMMING OF TAPES WRITTEN BY THE COPY AND
.         TRANSFER COMMANDS.
.
.                   0:  NO CHECKSUMMING, CODE WILL BE TURNED OFF
.                   1:  CHECKSUMMING ENABLED BY FANG 'C' OPTION
.                   2:  CHECKSUMMING DISABLED BY FANG 'D' OPTION
.
CHECKSUM  EQU       ;                   CHECKSUM DATA FLAG
                    2
.
.         STANDARD BLOCK SIZE CONFIGURATION.  THESE SIZES MAY BE TUNED TO
.         OPTIMISE CORE CHARGE / ACCESS / TRANSFER TIMES.  THEY MAY VARY
.         ANYWHERE WITHIN THE DEFINED BOUNDS.
.
.         ELEMENT TABLE BUFFER SIZE
.
BUFELTT   EQU       ;                   MINIMUM SIZE 196 WORDS
                    1792
.
.         SDF I/O BUFFER FOR TEXT PROCESSING
.
BUFSDFT   EQU       28*;                MIN SIZE 2, WORDS, MULTIPLES OF 28
                    8
.
.         PROCEDURE NAME TABLE BUFFERS
.
BUFPRCT   EQU       ;                   MINIMUM SIZE 196 WORDS
                    1792
.
.         TEXT BUFFER SIZE FOR FILE => FILE TRANSFER AND PACK
.
BUFTEXT   EQU       28*;                MINUMUM SIZE 28 WORDS
                    64
.
.         EOL AND EOLA DEFINE THE LINE TERMINATOR CHARACTERS FOR FIELDATA
.         AND ASCII.  IF EITHER IS NEGATIVE, LINE TERMINATOR CODE WILL
.         BE REMOVED.  IF NON-NEGATIVE, THE EOL CHARACTERS WILL BE USED
.         TO TERMINATE OUTPUT LINES FOR DEMAND, AND DUMP EDITING WILL TAKE CARE
.         NOT TO EDIT EOL CHARACTERS IN ALPHANUMERIC DUMPS.
.
EOL       EQU       ;                   FIELDATA END-OF-LINE CHARACTER
                    077
.
EOLA      EQU       ;                   ASCII END OF LINE CHARACTER
                    4 (EOT)             EOT IS LINE TERMINATOR
.
.         WHEN FANG ACQUIRES A FILE, IT ATTACHES A USE NAME TO IT FOR UNIQUE
.         REFERENCING.  AT THE END OF PROCESSING, FANG NORMALLY RELEASES THIS
.         USE NAME.  RELEASE OF USE NAMES FOR FILES ALREADY ASSIGNED TO THE
.         RUN MAY BE DISABLED BY SETTING THE TAG 'USEREL' TO ZERO.  THIS WILL
.         HAVE NO EFFECT OTHER THAN A MINOR INCREASE IN PCT USAGE AND A
.         POSSIBLY MAJOR DECREASE IN CC/ER CHARGES FOR RUNS.
.
USEREL    EQU       ;
                    1                   TURN ON @USE NAME RELEASE
.
.         THE TAG JWSITE ENABLES SPECIAL DEBUGGING AND PERFORMANCE MONITORING
.         CODE WHICH IS SUITED ONLY TO THE DEVELOPER OF FANG.  THIS CODE GOES
.         BEYOND THE CODE ENABLED BY 'DEBUG' IN THAT IT ADDS CRYPTIC LINES
.         OF OUTPUT TO NORMAL EXECUTIONS, ETC.  THIS CODE MAY USE EXEC FEATURES
.         NOT PRESENT IN STANDARD UNIVAC SYSTEMS, HENCE THE OPERATION OF
.         ANY VERSION OF FANG GENERATED IN THE FIELD WITH JWSITE SET NONZERO
.         CANNOT BE GUARANTEED.
.
JWSITE    EQU       ;
                    0
.
FNLOC     EQU       0110                LOCATION OF FILE NAME IN PCT
.
TXCOL     EQU       24                  COLUMN TO EDIT TEXT FOR BATCH MODE
.
GTTYPE    EQU       7                   GREATEST ELEMENT TYPE DEFINED BY SYSTEM
.
.
CONFIG*   PROC      0,0
          END
.
.
.         GETTIME IS INVOKED WHENEVER FANG WANTS THE ELAPSED RUN TIME.
.         THIS PROC COULD BE MODIFIED TO RETRIEVE THE TIME HOWEVER A SITE
.         DEFINES IT.  THE CODE WITHIN THE PROC SHOULD STORE THE TIME IN
.         5000'THS OF A SECOND INTO THE CORE CELL PASSED AS P(1,1).  CODING
.         WITHIN THE PROC MAY USE X11, A0 - A3, AND R1.
.
.         EXAMPLES:
.                  TO USE CPU TIME:     PCT$,22 P(1,1)
.                  TO USE SUP TIME:     PCT$,11 P(1,1)
.
P         PROC      1
GETTIME*  NAME      0
.
          pct$,11   p(1,1)
.
          END