STIMULA 
          IDENT  STIMULA,TABLES 
          ABS 
          ENTRY  STIMULA
          ENTRY  RFL= 
          ENTRY  SSJ= 
          SST 
          SYSCOM B1          DEFINE (B1) = 1
 QUAL$    EQU    1           DEFINE INTERNAL QUALIFICATION
*COMMENT  STIMULA - INTERACTIVE STIMULATOR. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  STIMULA - INTERACTIVE TERMINAL STIMULATOR. 
          SPACE  4,10 
***       STIMULA - LOW SPEED INTERACTIVE TERMINAL STIMULATOR.
*         G. R. MANSFIELD.   72/08/10.
*         R. A. JAPS.        78/05/10.
          SPACE  4,10 
***       THE COMMAND.
* 
*         STIMULA(I=LFN)
* 
*         *STIMULA* IS USED FOR INTERNAL STIMULATION OF *IAF*.
*         REFER TO THE EXTERNAL DOCUMENTATION OF *1TS* FOR
*         FURTHER INFORMATION ON THE TYPES OF STIMULATION POSSIBLE. 
* 
*         I      SESSION FILE NAME.  IF SPECIFIED, LFN MUST BE LOCAL
*                TO THE CONTROL POINT.
          SPACE  4,10 
***       SESSION FILE FORMAT.
* 
*         A SESSION FILE IS AN INDIRECT ACCESS PERMANENT FILE THAT
*         CONTAINS THE INTERACTIVE JOB LOAD THAT IS TO BE ANALYZED
*         BY THE STIMULATOR.  A SESSION FILE CONSISTS OF A GROUP OF 
*         RECORDS, EACH RECORD IS A SESSION AND CONTAINS A
*         INTERACTIVE JOB.  NOTE THE FOLLOWING REQUIREMENTS - 
* 
*         1. EACH SESSION RECORD BEGINS WITH THE ENTRY *ANSWERBAC*. 
* 
*         2. AFTER *ANSWERBAC*, ENTER FAMILY NAME, USER NAME, AND 
*            PASSWORD TO BE USED FOR LOGIN. 
* 
*         3. ENTER EACH SESSION ENTRY ON A SEPARATE COMMAND.
* 
*         4. END EACH SESSION WITH A *BYE* SO THAT LOGIN OF THE NEXT
*            SESSION IS PERFORMED CORRECTLY.
          SPACE  4,10 
***       TASK USAGE. 
* 
*         A *TASK* IS DEFINED AS A PREDEFINED SET OF INTERACTIVE
*         COMMANDS TO WHICH IS ATTACHED A FREQUENCY OF USE
*         PARAMETER.  TASKS ARE DEFINED IN THE SESSION FILE 
*         AS A SEPARATE RECORD FOLLOWING THE SESSION RECORDS. 
*         TASK DEFINITIONS ARE PERMITTED AFTER THE SESSION
*         DEFINITIONS ONLY.  TASKS SHOULD BE DEFINED IN INDESCENDING
*         ORDER OF USE.  NOTE THE FOLLOWING REQUIREMENTS -
* 
*         1. THE FIRST COMMAND SHOULD BE OF THE FORMAT -
* 
*                $TASK  NNN 
* 
*            WHERE
*            $      (DOLLAR SIGN) DENOTES BEGINNING OF A NEW TASK 
*                   DEFINITION. 
*            TASK   1 TO 6 CHARACTER ALPHANUMERIC TASK NAME.
*            NNN    DENOTES A DESIRED TASK USAGE PERCENTAGE.  THE TOTAL 
*                   PERCENTAGES MUST EQUAL 100. 
* 
*         2. TO CALL A TASK, INSERT A DISPLAY CODE 70 CHARACTER 
*            INTO THE INTERACTIVE SCRIPT.  MULTIPLE SCRIPT CALLS
*            ARE PERMITTED PER INPUT COMMAND BUT MUST BE
*            TERMINATED BY A *CR*.
* 
*         3. THE LAST CHARACTER OF A TASK MUST BE A DISPLAY CODE
*            71.  THIS WILL RETURN CONTROL TO THE CALLING SCRIPT. 
* 
*         4. THE NEXT BEST TASK IS DETERMINED BY THE FOLLOWING
*            ALGORITHM -
* 
*                WHERE
*                NBT = TI / (TATI * DP) 
* 
*            NBT    NEXT BEST TASK
*            TI     TOTAL INITIATIONS OF TASK 
*            TATI   TOTAL OF ALL TASK INITIATIONS 
*            DP     DESIRED PERCENTAGE OF TASK
* 
*            THE TASK WITH THE MINIMUM NBT VALUE IS DEFINED TO BE THE 
*            NEXT BEST TASK.
          SPACE  4,10 
***       OPTIONAL THINK TIME SPECIFICATION.
* 
*         A RANDOM THINK TIME MAY BE ENTERED WITH A SCRIPT COMMAND. 
*         THE FORMAT IS - 
* 
*                *XXX    OR   **
* 
*         WHERE 
*         *      DENOTES SPECIAL CHARACTER (DISPLAY CODE 75). 
* 
*         XXX    OCTAL THINK TIME.  MAXIMUM VALUE ALLOWED IS 177B.
* 
*         **     RETURN TO INITIAL THINK TIME.
          SPACE  4,10 
***       DYNAMIC LOGIN SPECIFICATION.
* 
*         A SCRIPT RECORD MAY BE GENERATED WITH A UNIQUE USER NAME
*         AND PASSWORD WHICH WILL BE DYNAMICALLY TRANSLATED INTO A
*         UNIQUE USER NAME, PASSWORD AT RUN TIME.  THE FORMAT IS AS 
*         FOLLOWS - 
* 
*                X*** OR X***,Y***
* 
*         WHERE 
*         X      1 TO 4 ALPHANUMERIC CHARACTERS FOR USER NAME 
* 
*         *      DENOTES SPECIAL CHARACTER *VL* (12/8/6,1 PUNCH)
* 
*         Y      1 TO 4 CHARACTERS FOR PASSWORD 
* 
*         THE * CHARACTER WILL BE TRANSLATED INTO THE STIMULATOR
*         TERMINAL NUMBER AT RUN TIME.  THE GENERATED USER NAMES AND
*         PASSWORDS WILL THEN BE VALIDATED THROUGH THE NORMAL LOGIN 
*         PROCEDURES.  (THE GENERATED USER NAMES AND PASSWORDS MUST 
*         BE ENTERED INTO THE VALIDATION FILE.) 
* 
*         EXAMPLE - 
* 
*                P***,L***   WILL BE TRANSLATED INTO
*                P000,L000   FOR THE FIRST TERMINAL,
*                P001,L001   FOR THE SECOND TERMINAL. 
          SPACE  4,10 
***       STIMULATOR OUTPUT.
* 
*         IF OUTPUT RECOVERY IS SELECTED, ALL OUTPUT DATA IS WRITTEN TO 
*         A FILE NAMED *STIMOUT*.  THIS FILE IS PROCESSED BY *DEMUX*. 
*         REFER TO *DEMUX* DOCUMENTATION FOR FURTHER INFORMATION. 
          SPACE  4,10 
***       K-DISPLAY DIRECTIVES. 
* 
*         K-DISPLAY DIRECTIVES ARE ENTERED IN THE FORM -
*                D1=P1,D2=P2,...DN=PN 
*         WHERE D1, D2, AND DN ARE THE K-DISPLAY IDENTIFIERS
*         AND P1, P2, AND PN ARE THE PARAMETERS.
* 
*         THERE ARE THREE K-DISPLAYS FOR THE STIMULATOR.  THE 
*         INITIAL K-DISPLAY PROCESSES SESSION FILE PARAMETERS.
*         IF THE SESSION FILE WAS SPECIFIED ON THE COMMAND
*         THIS DISPLAY WILL NOT BE DISPLAYED.  THE SECOND DISPLAY 
*         PROCESSES THE STIMULATION PARAMETERS.  THE THIRD DISPLAY
*         IS OPTIONAL AND IS USED TO ENTER MIXED MODE INPUT 
*         FOR A SPECIFIED SCRIPT. 
          SPACE  4,10 
***       K-DISPLAY INPUT - SESSION FILE PARAMETERS.
* 
*         F      INDIRECT PERMANENT FILE NAME OF SESSION FILE.
* 
*         UI     USER INDEX WHERE THE SESSION FILE IS FOUND.
* 
*         N      FILE NUMBER OF THE MULTI-FILE SESSION FILE FROM
*                WHICH DATA IS READ.  LEGAL RANGE IS 1 THRU 377777. 
* 
*         GO.    INDICATES ALL SESSION FILE PARAMETERS HAVE 
*                BEEN ENTERED.  THE STIMULATOR WILL ADVANCE 
*                TO THE SESSION PARAMETER K-DISPLAY.
          SPACE  4,10 
***       K-DISPLAY INPUT - SESSION PARAMETERS. 
* 
*         NT     NUMBER OF TERMINALS TO STIMULATE.  THE MAXIMUM 
*                VALUE IS DETERMINED BY THE EST ENTRY FOR THE 
*                STIMULATED MULTIPLEXOR.
* 
*         LS     LINE SPEED OF TERMINALS. 
*                RANGE IS 1 - 1000 CPS. 
*                DEFAULT IS 15 CPS. 
* 
*         IS     INPUT TYPING SPEED.
*                RANGE IS 1 - 1000 CPS. 
*                DEFAULT IS 15 CPS. 
* 
*         TT     THINK TIME.  THIS IS THE NUMBER OF SECONDS DELAYED 
*                AFTER THE END OF OUTPUT BEFORE THE TERMINAL WILL 
*                INPUT THE NEXT LINE. 
*                RANGE IS 0 - 127 SECONDS.
*                DEFAULT IS 10 SECONDS. 
* 
*         TI     THINK TIME INCREMENT.  THIS VALUE IS USED TO 
*                PRODUCE A RANDOM THINK TIME. 
*                RANGE IS 0-64. 
*                DEFAULT IS 8.
* 
*         AC     ACTIVATION DELAY. THIS PARAMETER IS USED TO
*                SPECIFY THE NUMBER OF TERMINALS THAT ARE TO BE 
*                LOGGED ON EVERY X SECONDS. (X IS SPECIFIED BY
*                THE *AD* DIRECTIVE.) 
*                RANGE IS 0-100 TERMINALS.
*                DEFAULT IS 4 TERMINALS.
* 
*         AD     ACTIVATION DELAY.  DELAY TIME UNTIL NEXT LOGIN 
*                IS ALLOWED.
*                RANGE IS 0-127 SECONDS.
*                DEFAULT IS 10 SECONDS. 
* 
*         RC     REPEAT COUNT.  SPECIFIES THE NUMBER OF TIMES THE 
*                SESSION WILL BE REPEATED FOR EACH TERMINAL.
*                RANGE IS 0 - 31. 
*                DEFAULT IS 0.
* 
*         LD     LOGOUT DELAY.  THIS SPECIFIES THE NUMBER OF
*                SECONDS TO DELAY AFTER LOGOUT IS COMPLETED 
*                BEFORE INITIATING THE NEXT LOGIN.
*                RANGE 0 - 127 SECONDS. 
*                DEFAULT IS 0 SECONDS.
* 
*         RO     RECOVER OUTPUT.  SPECIFIES STIMULATOR OUTPUT 
*                IS TO BE RECOVERED ON *STIMOUT* FILE.
*                            ON = RECOVER OUTPUT (DEFAULT)
*                            OFF = NO OUTPUT RECOVERED
* 
*         LF     LOOP ON SESSION FILE.
*                NO = LOOPING WILL OCCUR ON THE SCRIPT ASSIGNED 
*                     ASSIGNED TO THE TERMINAL. 
*                YES = THE NEXT SCRIPT ON THE SESSION FILE WILL 
*                      BE THE NEXT SCRIPT TO BE EXECUTED. 
* 
*         GO.    ALL PARAMETERS HAVE BEEN ENTERED.
*                START STIMULATION. 
* 
*         MIXED. ALL SESSION PARAMETERS HAVE BEEN ENTERED.
*                PROCEED TO MIXED MODE K-DISPLAY. 
          SPACE  4,10 
***       K-DISPLAY INPUT - MIXED MODE. 
* 
*         CF     MATRIX CHANGE FILE.  THIS INDIRECT ACCESS PERMANENT
*                FILE CONTAINS MIXED MODE INPUT DIRECTIVES TO 
*                BE PROCESSED.  IT RESIDES UNDER THE USER INDEX 
*                SPECIFIED BY THE *UI* DIRECTIVE. 
* 
*         +      PAGE MATRIX DISPLAY FORWARD. 
* 
*         -      PAGE MATRIX DISPLAY BACKWORD.
* 
*         MX     MIXED MODE PARAMETERS. 
*                MX=S1-S2,NT,LS,IS,TT,LD,RC.
*                MX=S1,NT,LS,IS,TT,LD,RC. 
*                WHERE -
*                S1 = FIRST SCRIPT TO BE CHANGED. 
*                S2 = LAST SCRIPT TO BE CHANGED. (OPTIONAL -
*                     DEFAULTS TO S1).
*                NT = NUMBER OF TERMINALS TO ASSIGN TO SCRIPT.
*                LS = LINE SPEED FOR TERMINALS ASSIGNED TO SCRIPT.
*                IS = INPUT SPEED FOR TERMINALS ASSIGNED TO SCRIPT. 
*                TT = THINK TIME FOR TERMINALS ASSIGNED TO SCRIPTS. 
*                LD = LOGOUT DELAY FOR TERMINALS ASSIGNED TO SCRIPT.
*                RC = REPEAT COUNT FOR TERMINALS ASSIGNED TO SCRIPT.
*                NULL PARAMETERS WILL KEEP THE CURRENT VALUE. 
* 
*         EXAMPLE - 
*                MX=2-4,3,30,30,,,1.
*         THREE TERMINALS WILL BE ASSIGNED TO SCRIPTS TWO, THREE, 
*         AND FOUR.  THE LINE SPEED AND INPUT SPEED FOR THESE 
*         TERMINALS WILL BE 30 CPS.  THE THINK TIME AND LOGOUT
*         DELAY WILL NOT BE CHANGED FORM THE CURRENT VALUE.  THE
*         TERMINALS WILL HAVE A REPEAT COUNT OF ONE.
* 
*         GO.    MIXED MODE PARAMETERS HAVE BEEN ENTERED. 
*                PROCEED WITH STIMULATION.
          SPACE  4,10 
***       DAYFILE MESSAGES. 
* 
*         * ERROR IN STIMULATOR ARGUMENTS.* 
*                AN ERROR WAS ENCOUNTERED ON THE COMMAND. 
*                CORRECT AND RETRY. 
* 
*         * STIMULATION COMPLETED.* 
*                INFORMATIVE MESSAGE INDICATING WHEN STIMULATION
*                WAS COMPLETE.
* 
*         * NUMBER OF LINE REGULATIONS = NNNNNNNNNN*
*                INFORMATIVE MESSAGE INDICATING THE NUMBER OF 
*                LINE REGULATIONS THAT WERE ENCOUNTERED 
*                DURING THE STIMULATION.
          SPACE  4,10 
***       ACCOUNT DAYFILE MESSAGES. 
* 
* 
*         *SIAD, STIMULATOR.* 
*                ACCOUNT FILE DUMPED BY STIMULATOR. 
          SPACE  4,10 
***       K-DISPLAY MESSAGES. 
* 
*         *INCORRECT OPTION.* 
*                K-DISPLAY INPUT WAS NOT RECOGNIZED.
* 
*         *FORMAT ERROR.* 
*                K-DISPLAY INPUT WAS NOT IN CORRECT FORMAT. 
* 
*         *IMPROPER NUMERIC PARAMETER.* 
*                NUMERIC PARAMETER IS OUT OF RANGE OR IN BAD FORMAT.
* 
*         *EMPTY SESSION FILE.* 
*                NO DATA WAS FOUND ON THE SPECIFIED SESSION FILE. 
* 
*         *INCORRECT DATA.* 
*                AN INCORRECT CHARACTER WAS FOUND IN THE SESSION TEXT.
* 
*         *INCORRECT TASK PERCENTAGE.*
*                THE DESIRED TASK PERCENTAGE SPECIFIED FOR A TASK 
*                CANNOT EXCEED 100. 
* 
*         *TASK PERCENTAGE UNEQUAL TO 100*
*                THE DESIRED TASK PERCENTAGES FOR ALL TASKS MUST
*                ADD UP TO 100. 
* 
*         *SCRIPTS CANNOT FOLLOW TASK DEFINITIONS.* 
*                THE FORMAT OF THE SESSION FILE IS INCORRECT. 
*                SCRIPTS CANNOT FOLLOW TASK SCRIPTS.
* 
*         *FILE NAME NOT SET.*
*                NO FILE NAME WAS SPECIFIED WITH THE *F* OR *CF*
*                PARAMETERS.
* 
*         *INCORRECT FILE NUMBER.*
*                THE VALUE ASSOCIATED WITH THE *N* DIRECTIVE CANNOT 
*                EXCEED 377777B.
* 
*         *INCORRECT USER INDEX.* 
*                THE SPECIFIED USER INDEX WAS GREATER THAN 377777B. 
* 
*         *ASSIGNED TTYS GREATER THAN (NT).*
*                THE NUMBER OF TERMINALS THAT ARE ASSIGNED TO SCRIPTS 
*                IS GREATER THAN THE NUMBER OF TERMINALS BEING
*                STIMULATED.  REDUCE THE NUMBER OF TERMINALS THAT 
*                ARE ASSIGNED.
* 
*         * NO TTYS ASSIGNED.*
*                THERE ARE NO TTYS TO ANY SCRIPTS.  ENTER ASSIGNED
*                TTYS USING *MX* DIRECTIVE. 
* 
*         *FILE ERROR.* 
*                THE CHANGE FILE SPECIFIED COULD NOT BE ATTACHED. 
* 
*         *FILE NOT FOUND.* 
*                THE SPECIFIED CHANGE FILE COULD NOT BE FOUND.
          SPACE  4,10 
*         COMMON DECKS. 
  
  
*CALL     COMCMAC 
*CALL     COMCDCM 
*CALL     COMCMTM 
*CALL     COMCDCP 
*CALL     COMSPFM 
*CALL     COMSSFM 
          LIST   X
*CALL     COMSSTM 
          LIST   -X 
          SPACE  4,10 
****      INSTALLATION SYMBOL DEFINITIONS.
  
  
 IBUFL    EQU    6001B       BUFFER LENGTH
****
          SPACE  4,10 
*         LOCAL SYMBOL DEFINITIONS. 
  
 FETL     EQU    8           OUTPUT FET LENGTH
 KBUFL    EQU    8           KEYBOARD BUFFER LENGTH 
 MEMLL    EQU    1000B       MANAGED-TABLES AREA LENGTH 
 MMSC     EQU    7           STARTING COLUMN OF MIXED MODE DISPLAY LINE 
 SDISN    EQU    10          NUMBER OF SCRIPTS PER PAGE 
 SSJ=     EQU    0           DEFINE *SSJ=* ENTRY POINT
          SPACE  4,10 
          TITLE  MACRO DEFINITIONS. 
 ASCO     SPACE  4,10 
**        ASCO - GENERATE MULTIPLEXER OUTPUT FOR *ASCII* CODE.
* 
*NAME     ASCO   CH,EQU 
* 
*         ENTRY  *NAME* = NAME FOR ASSIGNMENT OF CODE.
*                *CH* = *ASCII* CHARACTER VALUE IN HEXIDECIMAL. 
*                *EQU* = ASSIGNMENT PSEUDO OP.
  
  
          PURGMAC  ASCO 
  
          MACRO  ASCO,A,C,D 
  PAR 0#_C,0
A D 4000B+2*0#_C+.1 
 ASCO     ENDM
 OTASC    SPACE  4,10 
**        OTASC - GENERATE *ASCII* OUTPUT TRANSLATION TABLE ENTRY.
* 
*         OTASC  DC,E1,E2,ADDR
* 
*         ENTRY  *DC* = HEX VALUE FOR DISPLAY CODE. 
*                *E1* = HEX VALUE FOR ESCAPE 1 (76XX).
*                *E2* = HEX VALUE FOR ESCAPE 2 (74XX).
*                *ADDR* = ADDRESS OF SPECIAL PROCESSING SUBROUTINE.  IF 
*                         NEGATIVE, = COMPLEMENT OF SHIFT QUANTITY USED 
*                         FOR THIS ESCAPE CHARACTER.
  
  
          PURGMAC  OTASC
          NOREF  .2,.3,.4 
  
          MACRO  OTASC,A,B,C,D,E
          IFC    NE,*B**
 .2       ASCO   B,SET
          ELSE   1
 .2       SET    0
          IFC    NE,*C**
 .3       ASCO   C,SET
          ELSE   1
 .3       SET    0
          IFC    NE,*D**
 .4       ASCO   D,SET
          ELSE   1
 .4       SET    0
          VFD    12/.2,12/.3,12/.4,6/,18/E
 OTASC    ENDM
 PACK     SPACE  4,20 
**        PACK - GENERATE CODE TO PACK TEXT INTO BUFFER.
* 
*         PACK   BIAS,POS,COUNT 
* 
*         ENTRY  (X6) = TEXT TO PACK RIGHT JUSTIFIED. 
*                (B7) = STARTING ADDRESS OF BUFFER. 
*                *BIAS* = THE DISPLAY COLUMN POSITION OF THE FIRST
*                         CHARACTER OF TEXT FROM THE *KDL* MACRO
*                         (NUMBERED FROM ONE).
*                *POS* = THE DISPLAY COLUMN POSITION OF THE LAST
*                        CHARACTER OF TEXT FROM (X6)
*                        (NUMBERED FROM ONE). 
*                *COUNT* = LENGTH OF TEXT TO STORE IN CHARACTERS. 
*                          MUST BE GREATER THAN 0 AND LESS THAN 11. 
* 
*         USES   X - 2, 3, 6, 7.
*                A - 2, 7.
  
  
          PURGMAC  PACK 
  
 PACK     MACRO  BIAS,POS,COUNT 
          LOCAL  X,Y,Z,LCOUNT,RCOUNT
          MACREF PACK 
 X        SET    POS-BIAS+4 
 Y        SET    X/10        WORD OFFSET INTO BUFFER
 X        SET    X-Y*10      CHAR POSITION OF RIGHTMOST CHAR IN WORD
                             (NUMBERED FROM LEFT WITH FIRST CHAR ZERO)
 Z        SET    9-X         NUMBER OF CHAR POSITIONS TO SHIFT IN WORD
 LCOUNT   SET    COUNT-X-1   NUMBER OF CHARS IN PREVIOUS WORD 
 RCOUNT   SET    COUNT-LCOUNT 
          SA2    B7+Y        FIRST OR ONLY WORD TO CHANGE 
 .A       IFGT   LCOUNT,0 
          LX6    6*Z         CHANGE FIRST OF TWO WORDS
          MX3    6*RCOUNT 
          BX7    X3*X6
          BX2    -X3*X2 
          BX7    X2+X7
          SA7    A2 
          SA2    A2-B1       GET PREVIOUS WORD TO CHANGE
          MX3    -6*LCOUNT
 .A       ELSE
          MX3    -6*COUNT    ONLY ONE WORD TO CHANGE
 .B       IFNE   Z,0
          LX6    6*Z
          LX3    6*Z
 .B       ENDIF 
 .A       ENDIF 
          BX7    -X3*X6      CHANGE SECOND OR ONLY WORD 
          BX2    X3*X2
          BX7    X2+X7
          SA7    A2 
 PACK     ENDM
 PARAM    SPACE  4,10 
**        PARAM - GENERATE PARAMETER TABLE ENTRY. 
* 
*PN       PARAM  PROC,DEFAULT 
* 
*         ENTRY  *PN* = PARAMETER NAME. 
*                *PROC* = PARAMETER PROCESSOR.
*                *DEFAULT* = DEFAULT VALUE. 
*         OUTPUT
* 
*T        42/ PARAM,18/ PROC ADDRESS
*T,       42/ DEFAULT,18/ DISPLAY ADDRESS 
  
  
          PURGMAC  PARAM
  
          MACRO  PARAM,A,B,C
  CON 0L;A+B
  CON 0L;C+DS;A 
 PARAM    ENDM
 PAR      SPACE  4,10 
**        PAR - GENERATE CHARACTER PARITY BIT.
* 
*         PAR    CH,OE
* 
*         ENTRY  *CH* = CHARACTER VALUE.
*                *OE* = ODD/EVEN (0=EVEN, 1=ODD)
* 
*         EXIT   *.1* = PARITY. 
  
  
          PURGMAC  PAR
  
          NOREF  .1 
 PAR      MACRO  A,B
P MICRO A+1,1, 011010011001011010010110011010011001011001101001011010011
,00101101001011001101001011010011001011001101001100101101001011001101001
.1 SET "P"&;B 
 PAR      ENDM
          TITLE  MANAGED TABLES.
          ORG    110B 
 TABLES   BSS    0
          SPACE  4,10 
**        WHEN THE STIMULATOR IS INITIATED, *TSCR*, *TTER*, *TSTX*, 
*         AND *TASK* ARE MOVED TO LOW MEMORY. 
 TSCR     SPACE  4,10 
**        TSCR - SCRATCH TABLE. 
* 
*         THIS TABLE IS USED TO CONTAIN CODE, FETS, AND BUFFERS THAT
*         WILL BE USED ONCE THE STIMULATION HAS BEEN INITIATED.  THE
*         CODE IS RESPONSIBLE FOR RECOVERING OUTPUT AND SELECTING THE 
*         NEXT BEST TASK TO PROCESS.  IF OUTPUT IS NOT TO BE
*         RECOVERED, THIS TABLE REMAINS EMPTY.
  
  
 TSCR     TABLE 
 TTER     SPACE  4,50 
**        TTER - TERMINAL TABLE.
* 
*         *TTER* IS GENERATED FOR *1TS* TO BE USED FOR CONTROL OF THE 
*         STIMULATION RUN.
* 
*T O      3/F ,3/B ,18/OADDR ,5/RC ,7/TT ,12/CT ,12/CK
*T,              .
*T,              .
*T,              .
*T,NT-1   3/F ,3/B ,18/OADDR ,5/RC ,7/TT ,12/CT ,12/CK
*T,NT     12/LS ,12/IS ,12/LD ,12/TT ,12/OTT
*T,              .
*T,              .
*T,              .
*T,NT*2-1 12/LS ,12/IS ,12/LD ,12/ TT ,12/OTT 
*T,NT*2   1/L, 2/R, 3/B, 18/OADDR ,6/ACCT, 18/TADDR, 12/R 
*T,              .
*T,              .
*T,              .
*T,NT*3-1 1/L, 2/R, 3/B, 18/OADDR ,6/ACCT, 18/TADDR, 12/R 
*T,NT*3   60/ USED BY *1TS* FOR OUTPUT RECOVERY 
*T,              .
*T,              .
*T,              .
*T,NT*4-1 60/ USED BY *1TS* FOR OUTPUT RECOVERY 
*T,NT*4   3/F ,3/LB ,18/LADDR ,12/IN ,12/  ,12/ CNT 
*T,              .
*T,              .
*T,              .
*T,NT*5-1 3/F ,3/LB ,18/LADDR ,12/IN ,12/  ,12/ CNT 
* 
*         NT     NUMBER OF TERMINALS (NUMBER OF ENTRIES IN TABLE) 
* 
*         F      FLAGS
*                BIT 59 - OFF LINE
*                BIT 58 - DISABLED
*                BIT 57 - CHARACTER ENCOUNTERED 
*         B      CURRENT BYTE OF OUTPUT DATA WORD 
*         OADDR  ADDRESS OF CURRENT OUTPUT DATA WORD
*         RC     REPEAT COUNT 
*         TT     THINK TIME DELAY IN SECONDS
*         CT     CHARACTER TIME IN MILLESECONDS 
*         CK     TIMING CLOCK 
* 
*         LS     LINE SPEED (CHARACTER TIME IN MILLESECONDS)
*         IS     INPUT SPEED (CHARACTER TIME IN MILLESECONDS) 
*         LD     LOGOUT DELAY IN SECONDS
*         TT     THINK TIME IN SECONDS
*         OTT    OPTIONAL THINK TIME IN SECONDS 
* 
*         L      FIRST LINE FEED ENCOUNTERED.  (FIRST LINE FEED 
*                WILL BE USED AS AN INITIATE INPUT PROMPT FOR 
*                AUTOMATIC CODE SET DETECTION BY *CCP*.)
*         R      RESERVED FIELD 
*         ACCT   SPECIAL ACCOUNT NUMBER FLAG
*         TADDR  ADDRESS FOR CURRENT TASK TABLE ENTRY 
* 
*         LB     BYTE OF OUTPUT WORD FOR LAST OUTPUT LINE 
*         LADDR  ADDRESS OF OUTPUT DATA WORD FOR LAST OUTPUT
*         IN     CHARACTER COUNTER
*         CNT    NUMBER OF TIMES TERMINAL ENCOUNTERED LINE REGULATION 
  
  
 TTER     TABLE  2
 TSTX     SPACE  4,30 
**        TSTX - SESSION TEXT.
* 
*         ENTRY - N WORDS PER SESSION.
* 
*         A SESSION CONSISTS OF 5 BYTES OF SESSION TEXT PER WORD. 
*         EACH SESSION IS LINKED TO THE NEXT SESSION BY A CONTROL WORD. 
* 
*         BYTE FORMAT.
* 
*         BITS    8 - 11     OUTPUT CONTROL CODE
*         BITS    0 -  7     OUTPUT CHARACTER 
* 
*         OUTPUT CONTROL CODE (IN BINARY).
* 
*         100 0  NORMAL OUTPUT
*         010 0  END OF OUTPUT LINE 
*         001 0  END OF SESSION 
* 
* 
*         SESSION LINK. 
* 
*         BITS   18 - 59     0
*         BITS    0 - 17     INDEX OF NEXT SESSION
  
  
 TSTX     TABLE 
 TASK     SPACE  4,20 
**        TASK - TASK TABLE.
* 
*         THIS TABLE IS USED FOR SELECTION OF THE NEXT BEST TASK. 
* 
*T        42/ TASK NAME ,18/ TASK ADDRESS 
*T,       36/    ,12/ CCALS ,12/ TCALS
*T,       60/ DESIRED PERCENTAGE (FLOATING POINT) 
*T,       60/ ACTUAL PERCENTAGE (FLOATING POINT)
* 
*         CCALS  COMPLETED TASK CALLS 
*         TCALS  TOTAL TASK CALLS 
  
  
 TASK     TABLE 
 TSPT     SPACE  4,20 
**        TSPT - SESSION POINTERS.
* 
*T        12/TT ,12/LS ,12/TTY ,6/RC ,18/INDEX
*T,       12/IS ,12/LD ,36/ 
* 
*         TT     THINK TIME 
*         LS     LINE SPEED 
*         TTY    TERMINALS ASSIGNED 
*         RC     REPEAT COUNT 
*         INDEX  INDEX IN *TSTX* OF SESSION 
* 
*         IS     INPUT SPEED IN CHARACTERS/SECOND 
*         LD     LOGOUT DELAY IN SECONDS
  
  
 TSPT     TABLE  1
 TABLES   HERE
          TITLE  FET DEFINITIONS. 
 FETS     SPACE  4,10 
*         FET DEFINITIONS.
  
  
 I        BSS    0           SESSION FILE FET 
I         RFILEB IBUF,IBUFL,(FET=12),(EPR)
          ORG    I
          CON    1
          ORG    I+CFPW 
          CON    IBUF 
          ORG    I+12 
 UI       CON    0           USER INDEX 
 FN       CON    0           FILE NAME
          SPACE  4
 O        BSS    0           OUTPUT FILE FET
 OUTPUT   FILEB  IBUF,IBUFL 
          TITLE  PARAMETERS.
 SFP      SPACE  4,10 
*         SFP - SESSION FILE PARAMETERS.
  
  
 SFP      BSS    0
  
 F        PARAM  SSF         SESSION FILE NAME
 UI       PARAM  SUI,0B      USER INDEX 
 N        PARAM  SFC,1       NUMBER OF FILE FOR SESSION 
          CON    0           END OF TABLE 
 STP      SPACE  4,10 
*         STP - STIMULATION PARAMETERS. 
  
  
 STP      BSS    0
  
 NT       PARAM  SNT         NUMBER OF TERMINALS
  
 STPA     BSS    0
  
 AC       PARAM  SAC,4       ACTIVATION COUNT 
 IS       PARAM  SIS,15      INPUT SPEED IN CHARACTERS/SECOND 
 LD       PARAM  SLD,0       LOGOUT DELAY 
 LS       PARAM  SLS,15      LINE SPEED IN CHARACTERS/SECOND
 TT       PARAM  STT,10      THINK TIME DELAY IN SECONDS
 TI       PARAM  TTI,8       THINK TIME INCREMENT 
 RC       PARAM  SRC,0       REPEAT COUNT 
 AD       PARAM  SAD,10      ACTIVATION DELAY 
 RO       PARAM  SRO,ON      RECOVER OUTPUT 
 LF       PARAM  SLF,NO      LOOP ON FILE OPTION
          CON    0           END OF TABLE 
 MTP      SPACE  4,10 
*         MTP - MIXED MODE PARAMETERS.
  
  
 MTP      BSS    0
 MX       PARAM  MIN,0
 CF       PARAM  SCF,0
*+        PARAM  PLS,0
          VFD    6/1H+,30/0,24/PLS
          VFD    12/0L0,24/0,24/DSMX
*-        PARAM  MNS,0
          VFD    6/1H-,30/0,24/MNS
          VFD    12/0L0,24/0,24/DSMX
          CON    0           END OF TABLE 
          TITLE  WORKING STORAGE. 
 DATA     SPACE  4,10 
*         SESSION PARAMETER VALUES. 
  
  
 NT       CON    0           NUMBER OF TERMINALS
 MNT      CON    0           MAXIMUM NUMBER OF TERMINALS
 TM       CON    0           THINK TIME MASK
 AD       CON    0           ACTIVATION DELAY 
 AC       CON    0           ACTIVATION COUNT 
 IS       CON    0           INPUT SPEED
 RO       CON    0           RECOVER OUTPUT FLAG
 LS       CON    0           LINE SPEED 
 TT       CON    0           THINK TIME DELAY 
 RC       CON    0           REPEAT COUNT 
 LD       CON    0           LOGOUT DELAY 
 CF       CON    0           MATRIX CHANGE FILE NAME
 TY       CON    0           TERMINALS ASSIGNED 
 LP       CON    0           LOOP FLAG
 MODE     CON    0           STIMULATION MODE FLAG
 NPS      CON    0           NETWORK MODE FLAG
          TITLE  MAIN PROGRAM.
**        STIMULA - MAIN PROGRAM. 
  
  
 STIMULA  SB1    1           (B1) = 1 
  
*         PROCESS K-DISPLAY INPUT.
  
          RJ     PRS         PRESET PROGRAM 
          BX0    X0-X0       CLEAR ERROR MESSAGE
          RJ     TSF         TRANSLATE SESSION FILE 
          RETURN I           RETURN SCRIPT FILE 
          RJ     ITT         INITIALIZE TERMINAL TABLE
          RJ     RSP         REQUEST SESSION PARAMETERS 
          RJ     OPR         OUTPUT PARAMETERS
          RJ     RMP         REQUEST MIXED PARAMETER INPUT
          CONSOLE =0
          MESSAGE  (=0),2 
  
*         BUILD TABLES FOR STIMULATION (*TTER* AND *TASK*). 
  
          SA1    MNT         EXPAND *TTER* TO 5 WORDS/TERMINAL
          SX2    3
          IX1    X1*X2
          ALLOC  TTER,X1
          RJ     WMD         WRITE MATRIX TO OUTPUT 
          RJ     SSA         SET SESSION ADDRESSES
          RJ     STA         SET TASK ADDRESSES 
          SA1    RO          CHECK OUTPUT RECOVERY FLAG 
          BX6    X6-X6       CLEAR *TSCR* 
          SA6    L.TSCR 
  
*         MOVE OUTPUT RECOVERY CODE.
  
          ZR     X1,STI1     IF NO RECOVER OUTPUT 
          RJ     IOR         INITIALIZE OUTPUT RECOVERY 
          EREXIT /RCO/RCO5
  
*         CLEAR THIRD AND FOURTH WORDS OF *TTER* ENTRIES. 
  
 STI1     SA1    MNT
          LX1    1
          BX6    X6-X6       CLEAR RECOVERY AREA
          SB2    X1 
          SA2    F.TTER 
          SA6    X2+B2
 STI2     EQ     B2,B1,BSM   IF BEGIN STIMULATION 
          SB2    B2-B1
          SA6    A6+B1
          EQ     STI2        LOOP 
  
 STIA     VFD    18/0L1TS,24/0,18/TCWD
          TITLE  BEGIN STIMULATION. 
 BSM      SPACE  4,30 
**        BSM - BEGIN STIMULATION.
* 
*         EXIT   TO *BSM1* TO MOVE TABLES.
*                (RACW) = *1TS* CONTROL WORD. 
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 4, 6. 
*                B - 2, 4, 6. 
* 
*         CALLS  MTD. 
* 
*         MACROS MOVE.
* 
*         NOTES  *BSM* MOVES ALL CODE, POINTERS AND TABLES NEEDED 
*                DURING THE STIMULATION TO LOW MEMORY.  THIS
*                INCLUDES THE FOLLOWING TABLES - *TSCR*, *TTER*,
*                *TSTX*, AND *TASK*.  *BSM* WILL FIRST MOVE THE 
*                TABLE MOVE LOOP TO HIGH MEMORY.  THE MOVE LOOP 
*                IS THEN EXECUTED TO MOVE THE TABLES AND CALL THE 
*                STIMULATION DRIVER.
*                THE DRIVER IS RESPONSIBLE FOR STARTING THE OUTPUT
*                RECOVERY ROUTINE IN THE CPU. 
  
  
 BSM      BSS    0           ENTRY
          SA1    F.TSCR      SET CONTROL WORD ADDRESS 
          SA5    STIA 
          SA2    L.TSCR 
          BX6    X5          STORE *1TS* CALL 
          IX7    X1+X2
          SA6    BSMA+BSMB
  
*         GENERATE *1TS* CONTROL WORD.
  
          SA1    AC          SET ACTIVATION COUNT 
          SB2    B1+B1
          LX1    36 
          SA2    MNT         SET TOTAL NUMBER OF TERMINALS
          LX2    48 
          BX1    X1+X2
          SA2    TM          SET THINK TIME MASK
          LX2    24 
          BX1    X1+X2
          SA3    AD          SET ACTIVATION DELAY 
          LX3    12 
          BX1    X1+X3
          SA4    L.TSCR      COMPUTE STORAGE REQUIRED 
          SA2    L.TTER 
          IX4    X4+X2
          SA3    L.TSTX 
          IX5    X4+X3
          SA4    L.TASK 
          IX5    X5+X4
          SX5    X5+10
          SX4    X5+77B+STMO
          AX4    6
          BX6    X1+X4
          AX5    3           SET MOVE DOWN WORD COUNT 
          SA6    RACW 
  
*         PREPARE TO MOVE TABLES DOWN.
  
          RJ     MTD         MOVE TABLES DOWN 
          RJ     ICT         INITIALIZE CONTROL TABLE 
          SA3    F.TEND      RELOCATE *SPC* REQUEST 
          SA1    BSMC 
          SA2    BSMA+BSM2   RELOCATE MOVE DOWN PROGRAM 
          SB4    X5 
          SB6    X3 
          IX5    X1+X3
          LX3    15 
          IX6    X2+X3
          SA6    A2 
          MOVE   BSMAL,BSMA,B6
          SA2    F.TSCR      SET MOVE DIFFERENTIAL
          SB3    X2-STMO
          SB2    B1+B1
          SA1    X2          FIRST WORD 
          SA2    A1+B1       NEXT WORD
          JP     B6+BSM1     ENTER MOVE LOOP
  
*         TABLE MOVE DOWN LOOP. 
  
 BSMA     BSS    0
  
          LOC    0
 BSM1     SA3    A1+B2
          SA4    A2+B2
          BX6    X1 
          LX7    X2 
          SA6    A1-B3
          SA7    A2-B3
          SA1    A3+B2
          SA2    A4+B2
          BX6    X3 
          LX7    X4 
          SA6    A3-B3
          SA7    A4-B3
          SA3    A1+B2
          SA4    A2+B2
          BX6    X1 
          LX7    X2 
          SA6    A1-B3
          SA7    A2-B3
          SB4    B4-B1
          SA1    A3+B2
          SA2    A4+B2
          BX6    X3 
          LX7    X4 
          SA6    A3-B3
 BSM2     SA7    A4-B3
          NZ     B4,BSM1     LOOP TO END OF TRANSFER
          BX6    X5          STORE *SPC* REQUEST
          SA6    B1 
 +        JP     B6+* 
  
  
 BSMB     CON    0           *1TS* REQUEST WORD 
          CON    0           PADDING FOR P-COUNTER AT END OF FL 
*                            (REQUIRED FOR CYBER 74, 170) 
  
          LOC    *O 
 BSMAL    EQU    *-BSMA 
 FLFF     EQU    BSMAL       FIELD LENGTH FUDGE FACTOR
  
 BSMC     VFD    18/0LSPC,3/2,39/BSMB 
          TITLE  INITIALIZE STIMULATION TABLES. 
 IOR      SPACE  4,20 
**        IOR - INITIALIZE OUTPUT RECOVERY. 
* 
*         EXIT   OUTPUT FETS FOR STIMULATION SETUP. 
*                RECOVERY ROUTINES RELOCATED. 
* 
*         USES   X - 0, 1, 2, 3, 5, 6, 7. 
*                A - 1, 2, 5, 6, 7. 
*                B - 2, 3, 4, 5.
* 
*         MACROS ALLOC, MOVE. 
* 
*         NOTES  *IOR* IS RESPONSIBLE FOR BUILDING THE *TSCR* 
*                TABLE.  THIS TABLE CONTAINS THE ROUTINES, FETS,
*                AND BUFFERS NEEDED TO RECOVER STIMULATION OUTPUT.
*                *IOR* SETS THE CEJ/MEJ FLAG INTO THE RECOVER OUTPUT
*                ROUTINES BEFORE THEY ARE MOVED.  THIS IS NEEDED SO 
*                THAT *COMCSYS* IS INITIALIZED CORRECTLY FOR OUTPUT 
*                RECOVERY.
  
  
 IOR      SUBR               ENTRY/EXIT 
          SA2    XJPR        SAVE CEJ/MEJ FLAG
          BX6    X2 
          SA6    RCOA+XJPR-STMO 
          ALLOC  TSCR,RCOAL  ALLOCATE SPACE FOR RECOVERY CODE 
          SX3    X2 
          MOVE   X1,RCOA,X3 
          SA5    RAPP        ALLOCATE SPACE FOR FETS AND BUFFERS
          SX2    FETL+IBUFL 
          IX5    X5*X2
          ALLOC  TSCR,X5
          SA1    F.TSCR      SET FWA OF FETS
          SB2    X1+RCOAL 
          SB4    X1-STMO     (B4) = RELOCATION DIFFERENTIAL 
          SA2    RAPP        SET FIRST WORD OF BUFFERS
          SX3    FETL 
          IX3    X2*X3
          SB3    X2 
          SB5    X3+B2
          SX5    B5-B4       (X5) = RELOCATED BUFFER ADDRESS
          SB5    B0          SET INDEX INTO CONTROL TABLE 
 IOR1     SA1    TCWD+B5     SET FWA OF FET INTO CONTROL TABLE
          LX1    42 
          SX2    B2-B4
          BX6    X1+X2
          LX6    18 
          SA6    A1 
  
*         BUILD NEW FET.
  
          SA2    IORA+1      SET FIRST
          MX0    42 
          BX7    X0*X2
          BX7    X5+X7
          SA7    A2 
          BX6    X5          SET IN AND OUT POINTERS
          SA6    A7+B1
          SA6    A6+B1
          SX5    X5+IBUFL    SET LIMIT
          SA1    A6+B1
          BX1    X0*X1
          BX6    X1+X5
          SA6    A1 
          MOVE   FETL,IORA,B2  SET FET
          RETURN B2,R 
          NZ     B5,IOR2     IF NOT FIRST FET 
          SA1    IORB        SET *SCR* FILE NAME
          BX6    X1 
          EQ     IOR3        SET FILE NAME
  
 IOR2     SA1    IORA        UPDATE FET NAME
          SX3    B1+
          LX3    36-0 
          IX6    X1+X3
 IOR3     SA6    IORA 
          SB2    B2+FETL     SET NEXT FET ADDRESS 
          SB5    B5+B1
          LT     B5,B3,IOR1  IF MORE TO PROCESS 
          EQ     IORX        RETURN 
  
 IORA     BSS    0
 STIMOUT  FILEB  IBUF,IBUFL,(FET=FETL)
  
 IORB     VFD    42/0LSCR0,18/3 
 ICT      SPACE  4,20 
**        ICT - INITIALIZE CONTROL TABLE. 
* 
*         EXIT   CONTROL TABLE BUILT. 
* 
*         USES   X - 1, 2, 3, 4, 6. 
*                A - 1, 2, 3, 6.
*                B - 3, 4.
  
  
 ICT      SUBR               ENTRY/EXIT 
          SX6    TCWD        SET ACTIVATION INDICATOR 
          LX6    48 
          SA6    RAMD 
          SA1    F.TSCR      SET MOVE DIFFERENTIAL
          SX3    X1-STMO
          SA1    F.TTER 
          IX1    X1-X3
          SA3    RAPP 
          SB3    X3 
          SA2    MNT
          IX2    X1+X2
          SA3    TCWD-1 
          SB4    B0          SET TERMINAL BIAS
 ICT1     SA3    A3+B1       GET NEXT ENTRY 
          BX6    X3+X1
          SX4    B4          SET TERMINAL NUMBER BIAS 
          LX4    48 
          BX6    X4+X6
          SA6    A3 
          SB3    B3-B1
          LX3    24 
          ZR     B3,ICTX     IF END OF *TCWD* 
          SA4    MODE 
          MX0    -12
          ZR     X4,ICT2     IF INTERNAL STIMULATION MODE 
          MX0    -6 
 ICT2     BX3    -X0*X3 
          IX3    X3+X4       ADD BIAS 
          IX1    X1+X3       ADVANCE TERMINAL TABLE ADDRESS 
          SB4    B4+X3       ADVANCE TERMINAL NUMBER BIAS 
          IX4    X2-X1
          PL     X4,ICT1     IF NOT END OF TABLE
          EQ     ICTX        RETURN 
 ITT      SPACE  4,20 
**        ITT - INITIALIZE TERMINAL TABLE.
* 
*         USES   X - 1, 6.
*                A - 1, 6.
*                B - 2. 
* 
*         MACROS ALLOC. 
  
  
 ITT      SUBR               ENTRY/EXIT 
          SA1    MNT         SET TERMINAL TABLE ENTRIES 
          IX1    X1+X1       2 WORDS PER TERMINAL 
          ALLOC  TTER,X1
          MX6    1           SET TERMINAL OFF LINE
          SB2    X1 
          SA6    X2 
 ITT1     EQ     B2,B1,ITTX  IF END OF TABLE
  
          SB2    B2-B1
          SA6    A6+B1
          EQ     ITT1        LOOP 
 SSA      SPACE  4,20 
**        SSA - SET SESSION ADDRESSES.
* 
*         ENTRY  *TSPT* SET UP. 
* 
*         EXIT   (RADDR) = RELOCATION ADDRESS.
*                (RASC) = SCRIPT POINTERS.
*                SCRIPTS ASSIGNED TO TERMINALS. 
*                *TTER* SETUP.
*                UNUSED TERMINALS SET OFF LINE. 
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 4, 5, 6, 7. 
*                B - 2, 3, 4, 5, 6. 
* 
*         NOTES  *SSA* PERFORMS THE FOLLOWING FUNCTIONS - 
*                1. BUILDS *RASC*.
*                2. ASSIGNS SCRIPT TO TERMINALS.
*                3. SETS UNUSED TERMINALS OFF LINE. 
  
  
 SSA      SUBR               ENTRY/EXIT 
          SA2    RO 
          SA1    L.TTER      SET BASE SESSION ADDRESS 
          ZR     X2,SSA1     IF NO OUTPUT RECOVERY
          SA2    RAPP 
          SX3    8+IBUFL
          IX2    X2*X3
          IX1    X1+X2
          SX1    X1+RCOAL 
 SSA1     SX3    X1+STMO+2   RELOCATE INDICES TO ADDRESSES
          BX6    X3 
          SA6    RADDR
          SA1    MNT         SET TERMINAL TABLE ENTRIES 
          SB3    X1 
          LX1    2
          SB6    X1 
          SA1    NT          ENTERED TERMINAL COUNT 
          SB2    X1          TERMINAL COUNT 
  
*         SET SCRIPT POINTERS IN *RA*.
  
          SA2    F.TTER 
          SA5    F.TSPT      ADDRESS OF SESSION POINTERS
          SA1    LTSTX       POINTER TO END OF SESSION SCRIPTS
          IX6    X1+X3
          LX6    24          LAST(18)-FIRST(24) 
          IX7    X6+X3
          LX7    12 
          SA1    LP          SET SESSION FILE LOOP OPTION 
          LX1    59 
          BX7    X1+X7
          SA7    RASC 
  
*         ASSIGN SCRIPTS TO TERMINALS.
  
          SA1    X2          FIRST TERMINAL ENTRY 
 SSA2     SB4    B0 
          SA4    L.TSPT 
          SB5    X4          LENGTH OF SESSION POINTERS 
 SSA3     SA2    X5+B4       GET FIRST WORD OF *TSPT* ENTRY 
          MX0    -12
          LX0    24 
          BX3    -X0*X2 
          NZ     X3,SSA4     IF TTYS ASSIGNED 
          SB4    B4+B1
          EQ     SSA5        ADVANCE TO NEXT *TSPT* ENTRY 
  
 SSA4     BX6    X0*X2       DECREMENT TTY COUNT
          LX3    36 
          SX3    X3-1 
          LX3    24 
          BX6    X3+X6
          SA6    A2 
          SA3    RADDR
          MX6    0
          MX7    6
          BX1    X7*X1       CLEAR ADDR,RC,TT,CHAR-TIME FROM *TTER* 
          IX4    X2+X3
          LX4    36 
          MX7    6           SET REPEAT COUNT 
          BX3    X7*X4
          LX3    37 
          IX6    X6+X3
          MX7    -7          SET THINK TIME 
          LX7    24 
          BX3    -X7*X4 
          BX7    X3          SAVE THINK TIME
          AX7    24 
          SA7    TT 
          IX6    X6+X3
          MX7    -12         SET LINE SPEED 
          LX7    12 
          BX3    -X7*X4 
          AX3    12 
          SX7    1000 
          IX7    X7/X3
          SA7    LS          SAVE LINE SPEED
          LX7    12 
          IX6    X6+X7
          MX7    -18
          LX7    36 
          BX4    -X7*X4 
          IX6    X6+X4       SET ADDRESS
          SA4    AD          SET ACTIVATION DELAY 
          IX6    X6+X4
          IX6    X1+X6
          SA6    A1          SET NEW *TTER* ENTRY FOR SCRIPT
          MX0    24          SET REGULATION WORD
          BX6    X0*X6
          SA6    A1+B6
          SB4    B4+B1       GET SECOND WORD OF *TSPT* ENTRY
          SA2    X5+B4
          MX7    -12
          SA4    LS          GET LINE SPEED 
          BX6    X4 
          LX2    12 
          BX4    -X7*X2      GET INPUT SPEED
          SX7    1000 
          IX4    X7/X4       FORM INPUT SPEED CHARACTER TIME (MS) 
          LX6    12 
          IX6    X6+X4
          MX7    -12
          LX2    12 
          BX2    -X7*X2      GET LOGOUT DELAY 
          LX6    12 
          IX6    X6+X2
          SA4    TT          GET THINK TIME 
          BX4    -X7*X4 
          LX6    12 
          IX7    X6+X4
          LX7    12 
          SA7    A1+B3       REPLACE *TTER-1* ENTRY 
          SA1    A1+B1
          SB2    B2-B1       DECREMENT TOTAL TTY COUNT
          ZR     B2,SSA6     IF ALL ON-LINE TERMINALS DONE
 SSA5     SB4    B4+B1
          SB5    B5-2        DECREMENT *TSPT* COUNTER 
          ZR     B5,SSA2     IF LAST SCRIPT 
          EQ     SSA3        LOOP 
  
*         SET REMAINING TERMINALS OFF LINE. 
  
 SSA6     SA2    NT          ENTERED TERMINAL COUNT (ON-LINR) 
          SB2    X2 
          SB2    B3-B2       DISABLED TERMINAL COUNT (OFF-LINE) 
          ZR     B2,SSAX     IF ALL TTY-S TO BE ON-LINE 
          SX3    B1 
          LX3    58 
          SA4    RADDR       DUMMY ADDRESS FOR DISABLED TTY-S 
          LX4    36 
          BX3    X3+X4
          SA1    A1 
          BX6    X1 
 SSA7     BX6    X6+X3       SET DISABLE BIT
          SA6    A1 
          SA7    A1+B3       *TTER-1* ENTRY 
          SA1    A1+B1
          BX6    X1 
          SB2    B2-B1
          ZR     B2,SSAX     IF ALL TTY-S DONE
          EQ     SSA7        LOOP 
 STA      SPACE  4,15 
**        STA - SET TASK ADDRESSES. 
* 
*         ENTRY  (RADD) = RELOCATION ADDRESS. 
* 
*         EXIT   TASK ADDRESS IN *TASK* TABLE RELOCATED.
*                (RATK) = FWA OF TASK TABLE.
* 
*         USES   X - 1, 2, 5, 6, 7. 
*                A - 1, 2, 5, 6, 7. 
*                B - 2, 3, 4. 
  
  
 STA      SUBR               ENTRY/EXIT 
          SB0    0
          SA1    L.TASK 
          ZR     X1,STAX     IF NO TASKS
          SB2    X1-1        LENGTH OF *TASK TABLE* 
          SB3    4           4 WORDS PER ENTRY IN *TASK TABLE*
          SB4    B0 
          SA5    RADDR       RELOCATION ADDRESS 
          SA1    L.TSTX      END OF TASKS POINTER 
          SX1    X1+B1       BUMP POINTER TO *TASK TABLE* 
          IX7    X1+X5       GENERATE ADDRESS TO *TASK TABLE* 
          SA7    RATK 
          MX7    -18
          SA1    F.TASK      FWA *TASK TABLE* 
 STA1     SA2    X1+B4       RELOCATE TABLE ADDRESS 
          IX6    X2+X5
          SA6    A2 
          SB2    B2-B3       DECREMENT *TASK TABLE* WORD COUNTER
          SB4    B4+B3       BUMP POINTER TO NEXT TASK ENTRY
          ZR     B2,STAX     IF ALL TASK ENTRIES MODIFIED 
          EQ     STA1        GET NEXT ENTRY 
          TITLE  OUTPUT RECOVERY ROUTINES.
 RCO      SPACE  4,10 
 RCOA     BSS    0
          QUAL   RCO
          SPACE  4,10 
**        THE FOLLOWING CODE IS MOVED INTO *TSCR* IF OUTPUT IS
*         TO BE RECOVERED DURING THE STIMULATION.  THIS CODE WILL 
*         BE STARTED BY THE STIMULATION DRIVER ONCE THE STIMULATION 
*         IS INITIATED. 
 RCO      SPACE  4,20 
**        RCO - RECOVER OUTPUT. 
* 
*         ENTRY  (X0) = CEJ/MEJ FLAG. 
*                STIMULATION INITIATED. 
* 
*         EXIT   STIMULATION COMPLETE.
*                POST PROCESSING COMPLETE.
* 
*         USES   X - 1, 2, 3, 4, 5, 6, 7. 
*                A - 1, 2, 3, 4, 5, 6, 7. 
*                B - 3, 4.
* 
*         CALLS  COF, DAD, GBT, OTD, PES. 
* 
*         MACROS ENDRUN, MESSAGE, RECALL, RETURN, SETQP,
*                SETPR, WRITE.
  
  
          LOC    STMO 
  
 RCO      BSS    0           ENTRY
          RJ     DAD         DUMP ACCOUNT DAYFILE 
  
*         STIMULATION LOOP - PROCESS TASK CALLS AND RECOVER OUTPUT. 
  
 RCO1     RECALL
          SA1    RANT 
          NZ     X1,RCO2     IF NO REQUEST FOR NEXT TASK
          RJ     GBT         GET BEST TASK
 RCO2     SB3    B0 
          SA1    RAPP 
          SB4    X1-1 
 RCO3     SA5    TCWD+B4
          NG     X5,RCO4     IF COMPLETE
          SB3    B1 
          LX5    42 
          SA3    X5+2        IN 
          SA4    X5+3        OUT
          SX2    X3+B1
          IX6    X4-X2       (OUT-IN+1) 
          LX3    X6,B1       2*(OUT-IN+1) 
          SX7    IBUFL
          AX6    60          SIGN OF (OUT-IN+1) 
          BX4    X6-X7       INVERT BUFFER IF IN+1 .GE OUT
          IX6    X4-X3       BUFFER SIZE - 2*(OUT-IN+1) 
          NG     X6,RCO4     IF BUFFER THRESHOLD NOT REACHED
          SA1    X5          GET FIRST WORD OF FET
          LX1    59-0 
          PL     X1,RCO4     IF COMPLETE BIT NOT SET
 RCOE     WRITE  X5          WRITE *STIMOUT* DATA 
 RCOEL    EQU    *           ENSURE PROPER CODE MODIFICATION
*         WRITE  X5,R        (ONE DRIVER PRESENT) 
 RCO4     SB4    B4-1 
          PL     B4,RCO3     IF NOT END OF TABLE
          NZ     B3,RCO1     IF STIMULATION NOT COMPLETE
  
*         PROCESS END OF STIMULATION - CREATE *STIMOUT* FILE
*         AND WRITE TASK DATA TO *OUTPUT*.
  
 RCO5     MESSAGE  RCOA      * STIMULATION COMPLETE.* 
          MESSAGE  RCOB,2    * MERGING STIMOUT DATA.* 
          SETPR  30B         REDUCE CPU PRIORITY
          RJ     COF         COMPLETE OUTPUT FILE 
          SA2    TCWD        SET ADDRESS OF FIRST FET 
          LX2    42 
          SX2    X2 
          SA1    RCOD        SET FILE NAME
          BX6    X1 
          SA6    X2 
          RETURN X2,R 
          RJ     PES         PROCESS END OF STIMULATION 
          RJ     OTD         OUTPUT TASK DATA 
          MESSAGE  RCOC,2 
          ENDRUN
          SPACE  4,10 
          ERRNG  65B-*       OVERFLOW INTO RESERVED AREA
          BSS    CCDR-*      AVOID RESERVED AREA
          SPACE  4,10 
 RCOA     DATA   C* STIMULATION COMPLETE.*
 RCOB     DATA   C* MERGING STIMOUT DATA.*
 RCOC     DATA   C* * 
 RCOD     VFD    42/4LSCR0,18/1 
 COF      SPACE  4,20 
**        COF - COMPLETE OUTPUT FILES.
* 
*         ENTRY  STIMULATION COMPLETE.
* 
*         EXIT   OUTPUT DATA WRITTEN TO *STIMOUT*.
* 
*         USES   X - 0, 1, 2, 5, 6. 
*                A - 1, 2, 5, 6.
*                B - 2, 3.
* 
*         MACROS RECALL, RETURN, REWIND, WRITE, WRITER. 
  
  
 COF      SUBR               ENTRY/EXIT 
          SA1    RAPP        SET NUMBER OF FILES
          SB3    X1 
          SB2    B0 
  
*         FLUSH BUFFERS.
  
 COF1     SA5    TCWD+B2     SET FET ADDRESS
          LX5    42 
          SA1    X5          SAVE CURRENT FILE NAME 
          BX6    X1 
          SA6    COFB 
          RECALL X5 
          WRITER X5,R 
          ZR     B2,COF4     IF *STIMOUT* FILE
          REWIND X5,R 
  
*         COPY FILE TO *STIMOUT*. 
  
 COF2     READ   X5,R 
          SA1    COFA        CHANGE FILE NAME TO *STIMOUT*
          SA2    X5          CHECK FET STATUS 
          BX6    X1 
          SA6    X5 
          LX2    59-4 
          NG     X2,COF3     IF EOR/EOF ENCOUNTERED 
          LX2    59-9-59+4
          NG     X2,COF3     IF EOI ENCOUNTERED 
          WRITE  X5,R 
          SA1    COFB        RESTORE FILE NAME
          BX6    X1 
          SA6    X5 
          EQ     COF2        CONTINUE FILE COPY 
  
 COF3     WRITER X5,R 
          SA1    COFB        RESET FILE NAME
          BX6    X1 
          SA6    X5 
          RETURN X5,R 
 COF4     SB2    B2+1        ADVANCE CONTROL TABLE INDEX
          NE     B2,B3,COF1  IF MORE FILES TO COPY
          EQ     COFX        RETURN 
  
 COFA     VFD    42/7LSTIMOUT,18/1
 COFB     CON    0           CURRENT FILE NAME
 DAD      SPACE  4,10 
**        DAD - DUMP ACCOUNT DAYFILE. 
* 
*         ENTRY  (TCWD) = FET ADDRESS OF SCRATCH FILE.
* 
*         EXIT   ACCOUNT DAYFILE DUMPED.
* 
*         USES   X - 3, 4, 5, 6, 7. 
*                A - 3, 4, 5, 6, 7. 
* 
*         MACROS DAYFILE, RETURN. 
  
  
 DAD      SUBR               ENTRY/EXIT 
          SA5    TCWD 
          SA3    DADA        SET ACCOUNT MESSAGE IN BUFFER
          SA4    A3+B1
          BX6    X3 
          BX7    X4 
          LX5    42 
          SA3    X5+B1       SET FIRST
          SA6    X3 
          SA7    X3+B1
          DAYFILE  X5,ACCOUNT 
          RETURN X2 
          EQ     DADX        RETURN 
  
 DADA     DATA   C*SIAD, STIMULATOR.* 
 GBT      SPACE  4,20 
**        GBT - GET BEST TASK.
* 
*         ENTRY  (RATK) = FWA OF TASK POINTERS. 
*                (X2) = FWA OF FET. 
* 
*         EXIT   (RANT) = ADDRESS OF NEXT BEST TASK TO EXECUTE. 
* 
*         USES   X - 0, 1, 2, 6, 7. 
*                A - 1, 2, 6, 7.
*                B - 3, 7.
  
  
 GBT      SUBR               ENTRY/EXIT 
          SA1    RATK 
          ZR     X1,GBTX     IF NO TASKS
          BX6    X6-X6
          SA6    GBTB        *BEST TASK* ADDRESS
          SX6    10000       DUMMY VALUE FOR HIGH F-VAL 
          PX7    X6 
          NX7    X7 
          SA7    GBTA        *BEST TASK* F-VALUE
          MX7    -12
          SB3    3
          SB7    B0 
          MX6    0
  
*         COMPUTE TOTAL NUMBER OF TASK CALLS. 
  
 GBT1     SA2    X1+B7       GET FIRST WORD OF TASK ENTRY 
          ZR     X2,GBT2     IF END OF TABLE
          SB7    B7+B1
          SA2    X1+B7       GET NUMBER OF CALLS FOR THIS TASK
          BX2    -X7*X2 
          IX6    X6+X2       UPDATE TOTAL NUMBER OF TASK CALLS
          SB7    B7+B3
          EQ     GBT1        LOOP FOR ALL TASKS 
  
 GBT2     PX0    X6          CONVERT TOTAL CALLS TO FLOATING POINT
          NX0    X0 
          SB7    B0+
          SA1    RATK 
  
*         DETERMINE NEXT BEST TASK. 
  
 GBT3     SA2    X1+B7       GET FIRST WORD OF TASK ENTRY 
          ZR     X2,GBT6     IF END OF TABLE
          MX7    -12
          SB7    B7+B1
          SA2    X1+B7       GET NUMBER OF CALLS FOR THIS TASK
          BX2    -X7*X2 
          PX7    X2 
          NX7    X7 
          SB7    B7+B1
          SA2    X1+B7       GET DESIRED PERCENTAGE FOR TASK
          SB7    B7+B1
          MX6    0
          ZR     X0,GBT4     IF NO TASK CALLED YET
          FX6    X7/X0       COMPUTE ACTUAL PERCENTAGE FOR TASK 
 GBT4     SA6    X1+B7       SAVE ACTUAL PERCENTAGE 
          FX6    X6/X2       (ACTUAL PERCENTAGE) / (DESIRED PERCENTAGE) 
          SA2    GBTA        COMPARE CURRENT TASK WITH NEXT BEST TASK 
          FX2    X6-X2
          PL     X2,GBT5     IF CURRENT TASK NOT NEXT BEST TASK 
          NX6    X6          SET CURRENT TASK AS NEXT BEST TASK 
          SA6    GBTA 
          SB6    B7-B3
          SX6    X1+B6
          SA6    GBTB 
 GBT5     SB7    B7+B1
          EQ     GBT3        LOOP FOR ALL TASKS 
  
 GBT6     SA1    GBTB        SET NEXT BEST TASK 
          BX6    X1 
          SA6    RANT 
          EQ     GBTX        RETURN 
  
 GBTA     CON    0           BEST TASK F-VALUE
 GBTB     CON    0           BEST TASK ADDRESS
 OTD      SPACE  4,20 
**        OTD - OUTPUT TASK DATA. 
* 
*         ENTRY  STIMULATION COMPLETE.
*                (TCWD) = FET ADDRESS OF SCRATCH FILE.
* 
*         EXIT   TASK INFORMATION WRITTEN TO OUTPUT.
* 
*         USES   X - 0, 1, 2, 3, 5, 6, 7. 
*                A - 1, 2, 3, 5, 6, 7.
*                B - 2. 
* 
*         CALLS  CDD, CFD.
* 
*         MACROS REWIND, WRITER, WRITEW.
  
  
 OTD      SUBR               ENTRY/EXIT 
          SA5    RATK 
          ZR     X5,OTDX     IF NO TASKS
          SA2    TCWD        SET FET ADDRESS
          LX2    42 
          SX2    X2 
          REWIND X2,R 
  
*         OUTPUT PAGE HEADER. 
  
          SA1    OTDA        SET OUTPUT FILE NAME 
          BX6    X1 
          SA6    X2 
          WRITEW X2,TSKO,TSKOL  WRITE TASK HEADER 
  
*         OUTPUT TASK INFORMATION.
  
 OTD1     SA2    X5          GET FIRST WORD OF TASK ENTRY 
          ZR     X2,OTD2     IF END OF *TASK TABLE
          SA1    BLNK 
          MX0    -12
          MX7    36 
          BX6    X7*X2
          BX6    X6+X1
          LX6    54 
          SA6    WBUF 
          SA2    X5+B1       GET SECOND WORD OF TASK ENTRY
          BX1    -X0*X2      GET *CALLS*
          SA3    CALLS
          IX7    X1+X3
          SA7    A3 
          RJ     CDD         CONVERT INTEGER *CALLS* TO DISPLAY CODE
          LX6    18 
          SA6    WBUF+1 
          SA2    X5+B1       GET SECOND WORD OF TASK ENTRY
          AX2    12 
          BX1    -X0*X2      GET *COMPLETES*
          SA3    COMPLET
          IX7    X1+X3
          SA7    A3 
          RJ     CDD         CONVERT *COMPLETES* TO DISPLAY CODE
          LX6    24 
          SA6    WBUF+2 
          SA2    X5+2        GET THIRD WORD OF TASK ENTRY 
          SA3    DESIRED
          FX7    X2+X3
          SA7    A3 
          SA1    THO
          FX1    X1*X2
          UX1    B2,X1
          LX1    B2,X1
          RJ     CFD         CONVERT TO FLOATING DISPLAY CODE 
          LX6    12 
          SA6    WBUF+3 
          SA2    X5+3        SET ACTUAL PERCENTAGE
          SA3    ACTUAL 
          FX7    X2+X3
          SA7    A3 
          SA1    HTHO 
          FX1    X1*X2
          UX1    B2,X1
          LX1    B2,X1
          RJ     CFD
          MX7    48 
          LX6    12 
          BX6    X7*X6       ENSURE ZERO BYTE TERMINATOR
          SA6    WBUF+4 
          SA2    TCWD 
          LX2    42 
          WRITEW X2,WBUF,WBUFL
          SX5    X5+4        ADVANCE TASK TABLE POINTER 
          EQ     OTD1        LOOP FOR NEXT TASK 
  
*         OUTPUT *TOTAL* TASK INFORMATION.
  
 OTD2     SA1    TSK2        SET *TOTALS* 
          BX6    X1 
          SA6    WBUF 
          SA1    CALLS       GET *TOTAL CALLS*
          RJ     CDD
          LX6    18 
          SA6    WBUF+1 
          SA1    COMPLET     GET *TOTAL COMPLETES*
          RJ     CDD
          SA1    DESIRED     GET *TOTAL DESIRED PERCENTAGE* 
          SA2    THO
          LX6    24 
          SA6    WBUF+2 
          FX1    X1*X2
          UX1    B2,X1
          LX1    B2,X1
          RJ     CFD
          SA1    ACTUAL      GET *TOTAL ACTUAL PERCENTAGE*
          SA2    HTHO 
          LX6    12 
          SA6    WBUF+3 
          FX1    X1*X2
          UX1    B2,X1
          LX1    B2,X1
          RJ     CFD
          MX7    48 
          LX6    12 
          BX6    X7*X6
          MX0    -12
          SA6    WBUF+4 
          SA1    RASC        SET NUMBER OF DEFAULT TASK CALLS 
          BX1    -X0*X1 
          RJ     CDD         CONVERT *DEFAULTS* TO DISPLAY CODE 
          LX6    18 
          MX7    42 
          BX6    X7*X6
          SA6    TBUF+3 
          SA5    TCWD 
          LX5    42 
          WRITEW X5,WBUF,WBUFL
          WRITEW X5,TBUF,TBUFL
          WRITER X5,R 
          EQ     OTDX        RETURN 
  
 OTDA     VFD    42/6LOUTPUT,18/1 
  
 CALLS    DATA   0
 COMPLET  DATA   0
 DESIRED  DATA   0.0
 ACTUAL   DATA   0.0
 THO      DATA   1000.
 HTHO     DATA   100000.
 TSKO     DATA   C*1 TASK       CALLS   COMPLETE    DESIRED   ACTUAL* 
 TSKOL    EQU    *-TSKO      LENGTH OF *TSKO* 
 TBUF     BSS    0
          DATA   C*    *
          DATA   C* DEFAULT TASK CALLS=           * 
 TBUFL    EQU    *-TBUF      LENGTH OF *TBUF* 
 TSK2     DATA   C* TOTALS   *
 BLNK     DATA   4R 
 PES      SPACE  4,20 
**        PES - PROCESS END OF STIMULATION. 
* 
*         EXIT   ACCOUNT DAYFILE DUMPED.
*                NUMBER OF LINE REGULATIONS REPORTED. 
* 
*         USES   X - 0, 1, 2, 3, 6. 
*                A - 2, 3, 6. 
* 
*         CALLS  CDD, DAD.
* 
*         MACROS MESSAGE. 
  
  
 PES      SUBR               ENTRY/EXIT 
          RJ     DAD         DUMP ACCOUNT DAYFILE 
          SA2    RAPP 
          MX0    -12
          BX1    X1-X1
 PES1     SX2    X2-1        COUNT TOTAL LINE REGULATIONS 
          SA3    TCWD+X2
          LX3    24 
          BX3    -X0*X3 
          IX1    X1+X3
          NZ     X2,PES1     IF NOT END OF TABLE
          ZR     X1,PESX     IF NO LINE REGULATIONS 
          RJ     CDD
          BX6    X4 
          SA6    PESA+3 
          MESSAGE  PESA      * NUMBER OF LINE REGULATIONS = NNNNNNNN* 
          EQ     PESX        RETURN 
  
 PESA     DATA   C* NUMBER OF LINE REGULATIONS =           *
          SPACE  4,10 
*         COMMON DECKS. 
  
  
*CALL     COMCCDD 
*CALL     COMCCFD 
*CALL     COMCCIO 
*CALL     COMCCPM 
*CALL     COMCSFM 
*CALL     COMCSYS 
*CALL     COMCWTW 
          SPACE  4,10 
 WBUF     BSS    0
          SPACE  4,10 
          LOC    *O 
          QUAL
  
  
 WBUFL    EQU    5           LENGTH OF *WBUF* 
 RCOAL    EQU    *+WBUFL-RCOA  LENGTH OF RECOVERY ROUTINE 
          TITLE  K-DISPLAY INPUT PROCESSOR ROUTINES.
 ABT      SPACE  4,10 
**        ABT - ABORT JOB.
* 
*         ENTRY  (X0) = ERROR MESSAGE ADDRESS.
* 
*         EXIT   PROGRAM ABORTED. 
* 
*         MACROS ABORT, MESSAGE.
  
  
 ABT      BSS    0           ENTRY
          MESSAGE  X0 
          ABORT 
 KBI      SPACE  4,20 
**        KBI - PROCESS KEYBOARD INPUT. 
* 
*         ENTRY  (X6) = ADDRESS OF PARAMETER CONTROL TABLE. 
*                (X3) = DISPLAY BUFFER ADDRESS. 
*                (X7) = DISPLAY BUFFER END ADDRESS. 
*                (X0) = ERROR MESSAGE ADDRESS, IF ANY.
* 
*         EXIT   INPUT PROCESSED. 
* 
*         USES   X - ALL. 
*                A - 0, 1, 2, 4, 5, 6, 7. 
*                B - 6, 7.
* 
*         CALLS  SFN, UPC.
* 
*         MACROS CONSOLE, RECALL. 
  
  
 KBI      SUBR               ENTRY/EXIT 
          SA1    KBIA        ENTER DISPLAY BUFFER ADDRESS 
          SA6    A1+B1       SET PARAMETER TABLE ADDRESS
          BX6    X1+X3
          SA7    A6+B1       SET END OF DISPLAY BUFFER
          SA6    A7+B1
          SA0    X7 
          CONSOLE  A6 
          SX7    A0+
          SA7    KBIA+3      DISPLAY BUFFER END ADDRESS 
          NZ     X0,KMS      IF MESSAGE REQUESTED 
 KBI1     SX6    B0+
          SB6    KBUF 
          SB7    KBUF+KBUFL 
 KBI2     SA6    B6          CLEAR KEYBOARD BUFFER
          SB6    B6+B1
          LT     B6,B7,KBI2  IF MORE TO CLEAR 
 KBI3     RECALL
          SA5    KBUF        CHECK KEYBOARD 
          ZR     X5,KBI3     IF NOT READY 
          SA1    KBIB        SET COORDINATES
          SA2    KBIA+2 
          BX7    X1 
          MX0    -6 
          SA7    X2 
 KBI4     BX6    -X0*X5      LOCATE LAST WORD 
          LX7    X5          COPY INPUT 
          SA7    A7+B1
          SA0    A7+B1
          ZR     X6,KBI5     IF LAST WORD OF INPUT
          SA5    A5+B1
          EQ     KBI4        LOOP TO END OF INPUT 
  
 KBI5     BX1    X5          SPACE FILL NAME
          RJ     SFN
          SX7    1R.         ADD PERIOD 
          SA6    A5 
          LX7    54 
          SA7    A6+B1
          SA6    A0-B1
          SA5    KBUF        UNPACK COMMAND 
          SX7    A0 
          SB7    IBUF 
          SA7    KBIA+3 
          RJ     UPC
          SA5    B7-B1       FIRST ENTRY WORD (MINUS 1) 
          NZ     X6,KFE      IF ERROR DETECTED
          SA6    A0          CLEAR ERROR MESSAGE
          SA6    KBUF        CLEAR KEYBOARD BUFFER
  
*         IDENTIFY NEXT OPTION. 
  
 KBI6     SA1    KBIA+1      SET PARAMETER TABLE ADDRESS
          SA5    A5+B1       NEXT KEYBOARD WORD 
          SX2    1R+
          BX6    X5-X2
          ZR     X6,KBI7     IF *+* TO ADVANCE MATRIX DISPLAY 
          SX2    1R-
          BX6    X5-X2
          NZ     X6,KBI8     IF NOT *-* TO BACKUP MATRIX DISPLAY
 KBI7     LX5    54          LEFT ADJUST AS PER NON-SEPARATOR INPUT 
          SX2    1R=
          BX5    X2+X5
 KBI8     MX0    42 
          SX2    1R=
          SA4    X1          FIRST ENTRY
          NZ     X5,KBI9     IF NOT END OF KEYBOARD INPUT 
          SA1    KBID        CHECK *GO* FLAG
          NZ     X1,KBI3     IF NOT SET 
          EQ     KBIX        RETURN 
  
 KBI9     BX3    X0*X4
          IX6    X3+X2
          BX7    X6-X5
          ZR     X7,KBI11    IF MATCH FOUND 
          SA4    A4+2 
          NZ     X4,KBI9     IF NOT TO END OF TABLE 
          SA1    =0LGO       CHECK WORD 
          SX0    =C*INCORRECT OPTION.*
          BX6    X1-X5
          ZR     X6,KBI10    IF *GO*
          SA1    =0LMIXED 
          BX6    X1-X5
          NZ     X6,KMS      IF NOT *MIXED* 
          SX7    B1          SET MIXED MODE FLAG
          SA7    MIX
 KBI10    SA6    KBID        CLEAR WAIT 
          EQ     KBI6        PROCESS NEXT ENTRY 
  
 KBI11    SB7    X4          SET PROCESSOR ADDRESS
          SA5    A5+B1       SET VALUE
          SB6    B6-B1
          JP     B7          PROCESS OPTION 
  
 KBIA     VFD    24/KBUF,18/0,18/0
          CON    0           PARAMETER TABLE ADDRESS
          CON    0           END OF DISPLAY BUFFER
          CON    0
  
 KBIB     BSS    0
          KDL    1,I,( )
 KBIC     BSS    0
          KDL    1,M,( )
  
 KBID     CON    1           GO FLAG
 KBR      SPACE  4,10 
**        KEYBOARD RETURN.
  
  
 KBR      SA5    A5          STORE VALUE FOR DISPLAY
          SA1    A4+B1
          MX0    42 
          BX6    X0*X5
          SA6    X1 
          NZ     X6,KBI6     IF NOT BLANK ARGUMENT
          SA1    =1L
          BX6    X1 
          SA6    A6 
          NZ     X5,KBI6     IF MORE ARGUMENTS
          SA1    KBID        CHECK *GO* FLAG
          NZ     X1,KBI3     IF NOT SET 
          EQ     KBIX        RETURN 
 KFE      SPACE  4,10 
**        KFE - ISSUE FORMAT ERROR MESSAGE. 
  
  
 KFE      SX0    =C*FORMAT ERROR.*
 KMS      SPACE  4,10 
**        KMS - PROCESS KEYBOARD MESSAGE. 
  
  
 KMS      SA2    KBIC        SET COORDINATES
          SA3    KBIA+3 
          SA1    X0 
          BX6    X2 
          SA6    X3 
          MX0    -6 
 KMS1     LX6    X1          COPY MESSAGE 
          BX7    -X0*X1 
          SA6    A6+B1
          SA1    A1+B1
          NZ     X7,KMS1
          SA7    A6+B1
          SA7    KBUF        CLEAR KEYBOARD BUFFER
          EQ     KBI1        PROCESS NEXT INPUT 
 KNF      SPACE  4,10 
**        KNF - IMPROPER NUMERIC PARAMETER. 
  
  
 KNF      SX0    =C*IMPROPER NUMERIC PARAMETER.*
          EQ     KMS         PROCESS KEYBOARD MESSAGE 
 PSP      SPACE  4,20 
**        PSP - PRESET PARAMETERS.
* 
*         ENTRY  (A5) = ADDRESS OF PARAMETER BLOCK. 
*                (X5) = 1ST WORD OF 1ST PARAMETER.
*                SEE *PARAM* MACRO FOR FORMATS. 
* 
*         EXIT   EACH PROCESSING ROUTINE IS EXECUTED UPON ITS DEFAULT 
*                VALUE. 
* 
*         USES   X - 0, 1, 2, 5, 6, 7.
*                A - 1, 2, 5, 6 ,7. 
*                B - NONE.
  
  
 PSP      SUBR               ENTRY/EXIT 
          SA1    PSPA        CHANGE KEYBOARD RETURN 
          SA2    KBR
          BX6    X1 
          LX7    X2 
          SA6    A2 
          SA7    A1 
 PSP1     SB7    X5          SET PROCESSOR
          SA5    A5+B1       SET DEFAULT
          MX0    42 
          BX6    X0*X5
          NZ     X6,PSP2     IF NOT BLANK DEFAULT 
          SX6    1R 
          LX6    54 
 PSP2     SA6    X5 
          BX5    X0*X5
          JP     B7          PROCESS PARAMETER
  
 PSP3     SA5    A5+B1       NEXT TABLE ENTRY 
          NZ     X5,PSP1     LOOP TO END OF TABLE 
          SX6    B1 
          SA1    PSPA        RESET KEYBOARD RETURN
          SA2    KBR
          SA6    KBID        SET GO FLAG TO WAIT
          BX6    X1 
          LX7    X2 
          SA6    A2 
          SA7    A1 
          EQ     PSPX        RETURN 
  
 PSPA     EQ     PSP3 
 TOV      SPACE  4,20 
**        TOV - PROCESS TABLE OVERFLOW. 
* 
*         ENTRY  MORE FIELD LENGTH NEEDED BY MANAGED TABLES.
*                (B6) = RETURN ADDRESS. 
* 
*         EXIT   FL INCREASED.
*                (F.TEND) = NEW FL. 
* 
*         USES   X - 1, 3, 6, 7.
*                A - 1, 6, 7. 
* 
*         MACROS MEMORY.
  
  
 TOV      BSS    0           ENTRY
          SX3    -B5
          SA1    F.TEND      GET OLD FL 
          AX3    6
          SX3    X3+B1
          LX3    6
          IX6    X1+X3       UPDATE AVAILABLE MEMORY
          SA6    A1 
          SX7    X6+FLFF
          BX1    X7 
          LX7    30 
          SA7    TOVA 
          MEMORY ,A7,RECALL,X1
          JP     B6          RETURN TO CONTINUE PROCESSING
  
 TOVA     CON    0           STATUS WORD FOR FL REQUEST 
          TITLE  REQUEST FILE PARAMETERS. 
 RSF      SPACE  4,20 
**        RSF - REQUEST SESSION FILE. 
* 
*         ENTRY  (X0) = ERROR MESSAGE.
* 
*         EXIT   SESSION FILE ATTACHED AND REWOUND. 
* 
*         USES   X - ALL. 
*                A - 1, 4, 5, 6.
* 
*         CALLS  KBI, PSP.
* 
*         MACORS GET, REWIND, SETUI, SKIPFF.
  
  
 RSF      SUBR               ENTRY/EXIT 
          BX6    X0          SAVE ERROR MESSAGE 
          SA5    SFP         PRESET PARAMETERS
          SA6    RSFA 
          RJ     PSP
          SA1    RSFA        SET ERROR MESSAGE
          BX0    X1 
 RSF1     SX6    SFP         SET PARAMETER CONTROL TABLE
          SX3    FBUF        SET DISPLAY BUFFER ADDRESS 
          SX7    FBUFE       SET END OF DISPLAY BUFFER
          RJ     KBI         PROCESS KEYBOARD INPUT 
          SA1    I           CHECK FILE NAME
          AX1    1
          SX0    =C*FILE NAME NOT SET.* 
          ZR     X1,RSF1     IF NOT SET 
          SA1    RSFB 
          NZ     X1,RSF2     IF FILE SPECIFIED ON COMMAND 
          SA1    UI          SET USER INDEX 
          SETUI  X1 
          GET    I
          SA1    I           CHECK STATUS 
          SX2    X1-2000B 
          PL     X2,RSF3     IF FILE ERROR OCCURED
 RSF2     REWIND I
          SA4    FN          CHECK FILE NUMBER
          ZR     X4,RSFX     IF FIRST FILE
          SKIPFF I,X4 
          EQ     RSFX        RETURN 
  
 RSF3     SA5    IBUF 
          MX3    12 
          MX4    12 
 RSF4     BX7    X3*X5       EDIT MESSAGE 
          ZR     X7,RSF5     IF END OF MESAGE 
          AX4    12 
          LX3    -12
          PL     X3,RSF4
          SA5    A5+B1
          MX4    12 
          EQ     RSF4        LOOP 
  
 RSF5     BX6    X4*X5
          SX0    IBUF        ISSUE ERROR
          SA6    A5 
          EQ     RSF1        RETRY
  
 RSFA     CON    0           ERROR MESSAGE ADDRESS
 RSFB     CON    0           FILE NAME FROM COMMAND 
 SFC      SPACE  4,20 
**        SFC - SET FILE COUNT. 
* 
*         ENTRY  (A5) = ADDRESS OF UNPACKED PARAMETER.
*                (X5) = PARAMETER.
* 
*         EXIT   TO *KBR*, IF NO ERROR. 
*                TO *KFE*, IF ERROR.
*                (FN) = FILE COUNT. 
* 
*         USES   X - 0, 6, 7. 
*                A - 7. 
*                B - 7. 
* 
*         CALLS  DXB. 
  
  
 SFC      BSS    0           ENTRY
          SB7    B1          SET DECIMAL BASE 
          RJ     DXB         CONVERT VALUE
          SX7    X6-1 
          SX0    =C*INCORRECT FILE NUMBER.* 
          AX6    17 
          NZ     X6,KMS      IF VALUE OUT OF RANGE
          NG     X7,KMS 
          SA7    FN 
          EQ     KBR         RETURN 
 SSF      SPACE  4,20 
**        SSF - SET SESSION FILE NAME.
* 
*         ENTRY  (A5) = ADDRESS OF UNPACKED PARAMETER.
*                (X5) = PARAMETER.
* 
*         EXIT   TO *KBR*, IF NO ERROR. 
*                TO *KFE*, IF ERROR.
*                (I) = FILE NAME. 
* 
*         USES   X - 2, 6, 7. 
*                A - 6. 
  
  
 SSF      BSS    0           ENTRY
          SX2    B1          STORE FILE NAME
          SX7    X5 
          BX6    X2+X5
          NZ     X7,KFE      IF SEPARATOR USED
          SA6    I
          EQ     KBR         RETURN 
 SUI      SPACE  4,20 
**        SUI - SET USER INDEX. 
* 
*         ENTRY  (A5) = ADDRESS OF UNPACKED PARAMETER.
*                (X5) = PARAMETER.
* 
*         EXIT   TO *KBR*, IF NO ERROR. 
*                TO *KMS*, IF ERROR.
*                (UI) = USER INDEX. 
* 
*         USES   X - 0, 6, 7. 
*                A - 7. 
*                B - 7. 
* 
*         CALLS  DXB. 
  
  
 SUI      BSS    0           ENTRY
          SB7    B0          SET OCTAL BASE 
          RJ     DXB         CONVERT VALUE
          BX7    X6 
          SX0    =C*INCORRECT USER INDEX.*
          AX6    17 
          NZ     X6,KMS      IF VALUE OUT OF RANGE
          SA7    UI 
          EQ     KBR         RETURN 
          TITLE  REQUEST SESSION PARAMETERS.
 RSP      SPACE  4,20 
**        RSP - REQUEST SESSION PARAMETERS. 
* 
*         EXIT   SESSION PARAMETERS PROCESSED.
* 
*         USES   X - 0, 3, 5, 6, 7. 
*                A - 3. 
* 
*         CALLS  KBI, PSP.
  
  
 RSP      SUBR               ENTRY/EXIT 
          SX6    1           RESET GO 
          SA5    STPA        PRESET PARAMETERS
          SA6    KBID 
          RJ     PSP
          BX0    X0-X0       CLEAR ERROR MESSAGE
          SX6    STP         SET PARAMETER CONTROL TABLE
          SA3    RSPA        SET DISPLAY BUFFER ADDRESS 
          SX7    DBUFE       SET END OF DISPLAY BUFFER
          RJ     KBI         PROCESS KEYBOARD INPUT 
          EQ     RSPX        RETURN 
  
 RSPA     VFD    24/0,18/PBUF,18/DBUF 
 SAC      SPACE  4,10 
**        SAC - SET ACTIVATION COUNT. 
* 
*         ENTRY  (A5) = ADDRESS OF UNPACKED PARAMETER.
*                (X5) = PARAMETER.
*                (MODE) = STIMULATION MODE FLAG.
* 
*         EXIT   TO *KBR*, IF NO ERROR. 
*                TO *KNF*, IF ERROR.
*                (AC) = ACTIVATION COUNT. 
* 
*         USES   X - 1, 7.
*                A - 1, 6.
*                B - 7. 
* 
*         CALLS  DXB. 
  
  
 SAC      BSS    0           ENTRY
          SB7    B1          SET DECIMAL BASE 
          RJ     DXB
          NZ     X4,KNF      IF ERRORS
          ZR     X6,KNF      IF TOO FEW 
          SA1    MODE 
          NZ     X1,SAC1     IF INTERNAL STIMULATION
          SX1    100B 
          IX7    X1-X6
          NG     X7,KNF      IF MORE THAN 100 TERMINALS 
 SAC1     SA6    AC 
          EQ     KBR         RETURN 
 SAD      SPACE  4,20 
**        SAD - SET ACTIVATION DELAY. 
* 
*         ENTRY  (A5) = ADDRESS OF UNPACKED PARAMETER.
*                (X5) = PARAMETER.
* 
*         EXIT   TO *KBR*, IF NO ERROR. 
*                TO *KNF*, IF ERROR.
*                (AD) = ACTIVATION DELAY. 
* 
*         USES   X - 6, 7.
*                A - 7. 
*                B - 7. 
* 
*         CALLS  DXB. 
  
  
 SAD      BSS    0           ENTRY
          SB7    B1          SET DECIMAL BASE 
          RJ     DXB
          NZ     X4,KNF      IF ERRORS
          ZR     X6,KNF      IF TOO SHORT A DELAY 
          BX7    X6 
          AX6    7
          NZ     X6,KNF 
          SA7    AD          SET ACTIVATION DELAY 
          EQ     KBR         RETURN 
 SLS      SPACE  4,20 
**        SLS - SET LINE SPEED. 
* 
*         ENTRY  (A5) = ADDRESS OF UNPACKED PARAMETER.
*                (X5) = PARAMETER.
* 
*         EXIT   TO *KBR*, IF NO ERROR. 
*                TO *KNF*, IF ERROR.
*                (LS) = LINE SPEED. 
* 
*         USES   X - 2, 7.
*                A - 6. 
*                B - 7. 
* 
*         CALLS  DXB. 
  
  
 SLS      BSS    0           ENTRY
          SB7    B1          SET DECIMAL BASE 
          RJ     DXB
          NZ     X4,KNF      IF ERRORS
          SX2    1000        SET MILLISECONDS 
          ZR     X6,KNF      IF ZERO VALUE
          SA6    LS          SAVE LINE SPEED
          IX7    X2/X6
          ZR     X7,KNF      IF TOO HIGH
          EQ     KBR         RETURN 
 SIS      SPACE  4,20 
**        SIS -  SET INPUT SPEED. 
* 
*         ENTRY  (A5) = ADDRESS OF UNPACKED PARAMETER.
*                (X5) = PARAMETER.
* 
*         EXIT   TO *KBR*, IF NO ERROR. 
*                TO *KNF*, IF ERROR.
*                (IS) = INPUT SPEED.
* 
*         USES   X - 2, 7.
*                A - 6. 
*                B - 7. 
* 
*         CALLS  DXB. 
  
  
 SIS      BSS    0           ENTRY
          SB7    B1          SET DECIMAL BASE 
          RJ     DXB
          NZ     X4,KNF      IF ERRORS
          SX2    1000        SET MILLISECONDS 
          ZR     X6,KNF      IF ZERO VALUE
          SA6    IS          SAVE INPUT SPEED 
          IX7    X2/X6
          ZR     X7,KNF      IF TOO HIGH
          EQ     KBR         RETURN 
 SLD      SPACE  4,10 
**        SLD - SET LOGOUT DELAY. 
* 
*         ENTRY  (A5) = ADDRESS OF UNPACKED PARAMETER.
*                (X5) = PARAMETER.
* 
*         EXIT   TO *KBR*, IF NO ERROR. 
*                TO *KNF*, IF ERROR.
*                (LD) = LOGOUT DELAY. 
* 
*         USES   X - 6. 
*                A - 6. 
*                B - 7. 
* 
*         CALLS  DXB. 
  
  
 SLD      BSS    0           ENTRY
          SB7    B1          SET DECIMAL BASE 
          RJ     DXB
          NZ     X4,KNF      IF ERRORS
          SA6    LD          SAVE LOGOUT DELAY
          AX6    12 
          NZ     X6,KNF      IF .GT. 4095 
          EQ     KBR         RETURN 
 SNT      SPACE  4,20 
**        SNT - SET NUMBER OF TERMINALS.
* 
*         ENTRY  (A5) = ADDRESS OF UNPACKED PARAMETER.
*                (X5) = PARAMETER.
* 
*         EXIT   TO *KBR*, IF NO ERROR. 
*                TO *KNF*, IF ERROR.
*                (NT) = NUMBER OF TERMINALS.
* 
*         USES   X - 1, 2, 3, 6.
*                A - 1, 2, 6. 
*                B - 2, 3.
* 
*         CALLS  DXB. 
  
  
 SNT      BSS    0           ENTRY
          SB7    B1          SET DECIMAL BASE 
          RJ     DXB
          NZ     X4,KNF      IF ERRORS
          SA1    MNT
          IX7    X1-X6
          SB2    X6 
          NG     X7,KNF      IF TOO MANY TERMINALS
          ZR     X6,KNF      IF TOO FEW 
          SA6    NT 
          SA2    F.TTER 
          SX3    B1 
          SB3    X1 
          LX3    58 
          SA1    X2 
 SNT1     BX6    -X3*X1      CLEAR DISABLE BIT
          SA6    A1 
          SB2    B2-B1
          SB3    B3-B1
          SA1    A1+B1
          NZ     B2,SNT1     IF MORE TERMINALS
 SNT2     ZR     B3,KBR      IF END OF TABLE
          BX6    X3+X1       SET DISABLE BIT
          SA6    A1 
          SB3    B3-B1
          SA1    A1+B1
          EQ     SNT2        LOOP TO END OF TABLE 
 SRC      SPACE  4,20 
**        SRC - SET REPEAT COUNT. 
* 
*         ENTRY  (A5) = ADDRESS OF UNPACKED PARAMETER.
*                (X5) = PARAMETER.
* 
*         EXIT   TO *KBR*, IF NO ERROR. 
*                TO *KNF*, IF ERROR.
*                (RC) = REPEAT COUNT. 
* 
*         USES   X - 6, 7.
*                A - 6. 
*                B - 7. 
* 
*         CALLS  DXB. 
  
  
 SRC      BSS    0           ENTRY
          SB7    B1          SET DECIMAL BASE 
          RJ     DXB
          NZ     X4,KNF      IF ERRORS
          SA6    RC          SAVE REPEAT COUNT
          BX7    X6 
          AX6    5
          NZ     X6,KNF      IF .GT 31
          EQ     KBR         RETURN 
 SRO      SPACE  4,20 
**        SRO - SET RECOVER OUTPUT. 
* 
*         ENTRY  (A5) = ADDRESS OF UNPACKED PARAMETER.
*                (X5) = PARAMETER.
* 
*         EXIT   TO *KBR*, IF NO ERROR. 
*                TO *KFE*, IF ERROR.
*                (RO) = RECOVER OUTPUT STATUS.
* 
*         USES   X - 1, 2, 6, 7.
*                A - 1, 2, 6. 
  
  
 SRO      BSS    0           ENTRY
          SA1    =0LOFF 
          SA2    =0LON
          BX6    X1-X5
          BX7    X2-X5
          ZR     X6,SRO1     IF OFF 
          NZ     X7,KFE      IF NOT ON
          SX6    1
 SRO1     SA6    RO          SET RECOVER OUTPUT FLAG
          EQ     KBR         RETURN 
 STT      SPACE  4,20 
**        STT - SET THINK TIME. 
* 
*         ENTRY  (A5) = ADDRESS OF UNPACKED PARAMETER.
*                (X5) = PARAMETER.
* 
*         EXIT   TO *KBR*, IF NO ERROR. 
*                TO *KNF*, IF ERROR.
*                (TT) = THINK TIME. 
* 
*         USES   X - 6, 7.
*                A - 6. 
*                B - 7. 
* 
*         CALLS  DXB. 
  
  
 STT      BSS    0           ENTRY
          SB7    B1          SET DECIMAL BASE 
          RJ     DXB
          NZ     X4,KNF      IF ERRORS
          SA6    TT          SAVE THINK TIME
          BX7    X6 
          AX6    7
          NZ     X6,KNF      IF .GT 127 
          EQ     KBR         RETURN 
 SLF      SPACE  4,20 
**        SLF - SET LOOP FLAG.
* 
*         ENTRY  (A5) = ADDRESS OF UNPACKED PARAMETER.
*                (X5) = PARAMETER.
* 
*         EXIT   TO *KBR*, IF NO ERROR. 
*                TO *KMS*, IF ERROR.
*                (LP) = LOOP FLAG.
* 
*         USES   X - 1, 2, 6, 7.
*                A - 1, 2, 6. 
  
  
 SLF      BSS    0           ENTRY
          SA1    =0LYES 
          SA2    =0LNO
          BX6    X1-X5
          BX7    X2-X5
          ZR     X6,SLF1     IF LOOP ON SESSION FILE
          NZ     X7,KFE      IF ERROR 
          SX6    B1+
 SLF1     SA6    LP          SET OPTION 
          EQ     KBR         RETURN 
 TTI      SPACE  4,20 
**        TTI - SET THINK TIME INCREMENT. 
* 
*         ENTRY  (A5) = ADDRESS OF UNPACKED PARAMETER.
*                (X5) = PARAMETER.
* 
*         EXIT   TO *KBR*, IF NO ERROR. 
*                TO *KNF*, IF ERROR.
*                (TI) = THINK TIME INCREMENT. 
* 
*         USES   X - 6, 7.
*                A - 6. 
*                B - 2, 3.
* 
*         CALLS  DXB. 
  
  
 TTI      BSS    0           ENTRY
          SB7    B1          SET DECIMAL BASE 
          RJ     DXB
          NZ     X4,KNF      IF ERRORS
          CX7    X6          CHECK BIT COUNT
          SB3    X6 
          SB2    X7 
          GT     B2,B1,KNF   IF MORE THAN 1 BIT 
          LE     B3,B1,TTI1  IF VALUE = 0 OR 1
          SX6    X6-1 
          BX7    X6 
          AX7    6
          NZ     X7,KNF      IF .GT 64
 TTI1     SA6    TM          STORE TIME MASK
          EQ     KBR         RETURN 
          TITLE  PROCESS MIXED MODE PARAMETERS. 
 RMP      SPACE  4,20 
**        RMP - REQUEST MIXED MODE INPUT. 
* 
*         ENTRY  (MIX) = MIXED MODE FLAG. 
* 
*         EXIT   MIXED MODE INPUT PROCESSED.
*                *TSPT* UPDATED.
* 
*         USES   X - 0, 1, 3, 6, 7. 
*                A - 1, 3, 6. 
* 
*         CALLS  CTC, DMX, KBI, MXD.
  
  
 RMP      SUBR               ENTRY/EXIT 
          RJ     MXD         INITIALIZE *TSPT*
          SA1    MIX
          ZR     X1,RMPX     IF NO MIXED INPUT REQUESTED
          SA1    F.TSPT      SET INDEX INTO *TSPT*
          BX6    X1 
          SA6    LINE 
          RJ     DMX         DISPLAY MATRIX 
          BX0    X0-X0       CLEAR MESSAGE ADDRESS
 RMP1     SX6    B1+         SET WAIT FOR *GO*
          SA6    KBID 
          SX6    MTP
          SA3    MSPA 
          SX7    LDISPE 
          RJ     KBI         PROCESS KEYBOARD INPUT 
          RJ     CTC         CHECK TERMINAL COUNT 
          SX0    =C* ASSIGNED TTYS GREATER THAN (NT).*
          NG     X3,RMP1     IF TOO MANY TTYS ASSIGNED
          SX0    =C* NO TTYS ASSIGNED.* 
          ZR     X7,RMP1     IF NO TTYS ASSIGNED
          SA7    NT          UPDATE NUMBER OF TTYS ASSIGNED 
          EQ     RMPX        RETURN 
MXD       SPACE  4,10 
**        MXD - MIXED PARAMETER INITIAL SETUP.
* 
*         ENTRY  (TT) = THINK TIME. 
*                (LS) = LINE SPEED. 
*                (RC) = REPEAT COUNT. 
*                (IS) = INPUT SPEED.
*                (LD) = LOGOUT DELAY. 
*                (NT) = NUMBER OF TERMINALS.
* 
*         EXIT   SESSION POINTER TABLE INITIALIZED. 
* 
*         USES   X - 1, 2, 3, 4, 5, 6, 7. 
*                A - 1, 2, 3, 4, 5, 6, 7. 
*                B - 2, 4, 6. 
  
  
 MXD      SUBR               ENTRY/EXIT 
  
*         BUILD *TSPT* ENTRY. 
  
          SB6    0
          SA4    L.TSPT      SET *TSPT* LENGTH
          SB4    X4 
          SA1    TT          SET FIRST WORD OF *TSPT* 
          LX1    12 
          SA2    LS 
          BX3    X1+X2
          LX3    36 
          SA1    RC 
          LX1    18 
          BX6    X3+X1
          MX1    -18
          SA2    IS          BUILD SECOND WORD OF *TSPT* ENTRY
          LX2    12 
          SA5    LD 
          BX5    X2+X5
          LX5    36 
          SA4    F.TSPT 
  
*         BUILD *TSPT* TABLE. 
  
 MXD1     SA3    X4+B6       GET *TSPT* ENTRY 
          BX3    -X1*X3 
          IX7    X6+X3
          SA7    A3 
          SB6    B6+1 
          SA3    X4+B6       SET *TSPT* WORD-2
          BX7    X5 
          SA7    A3 
          SB6    B6+1 
          NE     B6,B4,MXD1  IF MORE ENTRIES
  
*         SET TERMINAL COUNT. 
  
          SB6    0
          SA1    NT          TERMINAL COUNT 
          SB2    X1 
          SA2    =100000000B GET INCREMENT VALUE
 MXD2     SA3    X4+B6       UPDATE TTY COUNT FOR THIS TERMINAL 
          IX6    X3+X2
          SA6    A3 
          SB2    B2-1        DECREMENT TTY COUNT
          ZR     B2,MXDX     IF ALL TTYS ACCOUNTED FOR
          SB6    B6+2 
          NE     B6,B4,MXD2  IF NOT END OF *TSPT* TABLE 
          SB6    0
          EQ     MXD2        LOOP 
 DMX      SPACE  4,20 
**        DMX - DISPLAY MATRIX. 
* 
*         ENTRY  (LINE) = CURRENT INDEX INTO *TSPT*.
*                (NT) = NUMBER OF TERMINALS ALLOWED.
* 
*         EXIT   K-DISPLAY MATRIX SETUP.
* 
*         USES   X - 0, 1, 2, 3, 6, 7.
*                A - 1, 2, 3, 6, 7. 
*                B - 6, 7.
* 
*         CALLS  CDD, CLR, CTC, SDL.
  
  
 DMX      SUBR               ENTRY/EXIT 
          RJ     CLR         CLEAR MATRIX DISPLAY 
          SA1    LINE        SET INDEX INTO *TSPT*
          BX6    X1 
          SA6    DMXA 
          SX7    X1+SDISN*2 
          SA1    =0LMORE
          SA2    F.TSPT 
          SA3    L.TSPT 
          IX2    X2+X3
          IX3    X7-X2
          NG     X3,DMX1     IF NOT END OF *TSPT* BEFORE END OF DISPLAY 
          BX7    X2 
          SA1    =1L
 DMX1     SA7    DMXB 
          BX6    X1 
          SA6    MORE        STORE *MORE* OR * * IN DISPLAY BUFFER
          SB7    SDIS        (B7) = CURRENT DISPLAY BUFFER ADDRESS
 DMX2     SA1    DMXA 
          SB6    X1+
          RJ     SDL         SET DISPLAY LINE 
          SA1    DMXA        UPDATE *TSPT* INDEX
          SA2    DMXB 
          SX6    X1+2 
          SA6    A1 
          IX2    X6-X2
          NG     X2,DMX2     IF NOT END OF DISPLAY
  
*         SET SUMMARY INFORMATION AT BOTTOM OF DISPLAY. 
  
          RJ     CTC         CHECK TERMINAL COUNT 
          BX1    X7 
          RJ     CDD
          BX6    X4          DISPLAY NUMBER OF TTYS ASSIGNED
          SA6    ASIGN
          SA1    NT          DISPLAY NUMBER OF TTYS ALLOWED 
          RJ     CDD
          BX6    X4 
          SA6    PERMIT 
          EQ     DMXX        RETURN 
  
 DMXA     CON    0           CURRENT INDEX INTO *TSPT*
 DMXB     CON    0           LIMIT ADDRESS OF *TSPT* FOR DISPLAY
 SCF      SPACE  4,20 
**        SCF - SET CHANGE FILE.
* 
*         ENTRY  (A5) = ADDRESS OF UNPACKED PARAMETER.
*                (X5) = PARAMETER.
* 
*         EXIT   TO *KBR*, IF NO ERROR. 
*                TO *KMS*, IF ERROR.
*                MATRIX CHANGE FILE READ AND PROCESSED. 
* 
*         USES   X - 0, 1, 2, 5, 6, 7.
*                A - 1, 2, 5, 6.
*                B - 6, 7.
* 
*         CALLS  DMX, MXP, UPC. 
* 
*         MACROS GET, READ, READC, REWIND, SETUI. 
  
  
 SCF      BSS    0           ENTRY
          SA5    A5          GET VALUE FOR DISPLAY
          SA1    A4+B1       SET FILE NAME IN DISPLAY 
          MX0    42 
          BX6    X0*X5
          SA6    X1 
          SX2    B1 
          SX7    X5 
          BX6    X2+X5
          NZ     X7,KFE      IF SEPARATOR USED
          SA6    I           STORE FILE NAME IN FET 
          AX6    1
  
*         GET CHANGE FILE.
  
          SX0    =C* FILE NAME NOT SET.*
          ZR     X6,KMS      IF FILE NAME NOT SPECIFIED 
          SA1    UI 
          SETUI  X1          SET USER INDEX 
          GET    I           GET PF FOR MATRIX CHANGES
          SA1    I           CHECK FILE STATUS
          SX2    X1-2000B 
          PL     X2,SCF2     IF FILE ERROR OCCURRED 
  
*         PROCESS CHANGE FILE.
  
          REWIND I
          READ   I           READ RECORD INTO CIO BUFFER
 SCF1     READC  I,KBUF,KBUFL   READ FILE ENTRY INTO WORKING BUFFER 
          NZ     X1,KBI3     IF END OF RECORD 
          SA5    KBUF        FWA OF COMMAND 
          SB7    ZBUF        ADDRESS OF FIRST PARAMETER 
          RJ     UPC         UNPACK COMMAND ( MX=,,,,.) 
          SA5    B7          ADDRESS OF FIRST PARAMETER 
          SA5    A5+B1
          SB6    B6-1        DECREMENT PARAMETER COUNT
          RJ     MXP         PROCESS INPUT
          RJ     DMX         SETUP MIXED MATRIX DISPLAY 
          EQ     SCF1        GO PROCESS NEXT ENTRY
  
*         PROCESS FILE ERROR. 
  
 SCF2     SX0    =C* FILE ERROR.* 
          SA2    I
          LX2    59-11
          PL     X2,KMS      IF NOT SET 
          SX0    =C* FILE NOT FOUND.* 
          EQ     KMS         ISSUE K-DISPLAY MESSAGE
  
 ZBUF     BSSZ   10 
MXP       SPACE  4,20 
**        MXP  - MIXED INPUT PROCESSOR. 
* 
*         ENTRY  (A5) = FWA OF MIXED MODE INPUT.
* 
*         EXIT   MIXED MODE INPUT PROCESSED.
* 
*         CALLS  DMX, MXP.
  
  
 MIN      RJ     MXP         MIXED MODE PROCESSOR 
          RJ     DMX         DISPLAY UPDATED MATRIX 
          EQ     KBI1        PROCESS MORE INPUT 
  
 MXP      SPACE  4,20 
**        MXP  - MIXED MODE PROCESSOR.
* 
*         ENTRY  (A5) = FWA OF MIXED MODE INPUT.
* 
*         EXIT   *TSPT* UPDATED WITH PROCESSED INPUT. 
*                TO *KNF* IF ERROR IN INPUT.
* 
*         USES   X - 0, 1, 2, 3, 4, 5, 6. 
*                A - 1, 3, 4, 5, 6. 
*                B - 2, 3, 6, 7.
* 
*         CALLS  DXB, MMP.
  
  
 MXP      SUBR               ENTRY/EXIT 
          SB7    B1 
          ZR     B6,MXPX     IF NO PARAMETER
          MX0    42 
          SA5    A5          PROCESS FIRST SCRIPT NUMBER
          BX5    X0*X5
          RJ     DXB
          NZ     X4,KNF      IF ERRORS
          ZR     X6,KNF      IF ZERO ENTRY
          SA6    FSCR 
          SB6    B6-B1
          ZR     B6,MXPX     IF NO MORE PARAMETERS
          SA5    A5 
          MX0    42 
          SX2    X5-1R- 
          NZ     X2,MXP1     IF ONLY ONE SCRIPT SPECIFIED 
          SA5    A5+B1       PROCESS SECOND SCRIPT NUMBER 
          BX5    X0*X5
          RJ     DXB
          NZ     X4,KNF      IF ERRORS
          SB6    B6-B1
          ZR     B6,MXPX     IF NO MORE PARAMETERS
 MXP1     SA6    LSCR 
          SA1    FSCR        VALIDATE SCRIPT ENTRIES
          SA2    SRCNT
          IX1    X6-X1
          IX2    X2-X6
          NG     X1,KNF      IF FIRST SCRIPT .GT. LAST SCRIPT 
          NG     X2,KNF      IF LAST SCRIPT TO LARGE
          RJ     MMP         MIXED MODE PROCESSOR 
  
*         UPDATE *TSPT* TABLE WITH PROCESSED INFORMATION. 
  
          SA2    FSCR        SET NUMBER OF SCRIPTS TO UPDATE
          SA3    LSCR 
          IX3    X3-X2
          SB3    X3+B1
          SB2    X2-1        POINTER TO FIRST *TSPT* ENTRY
          SB2    B2+B2
          SA4    F.TSPT      FWA *TSPT* 
 MXP2     SA5    X4+B2       GET NEXT *TSPT* ENTRY
          LX5    12 
          MX3    48 
          SA1    TT 
          NG     X1,MXP3     IF NULL TT 
          BX5    X3*X5       SET NEW THINK TIME 
          BX5    X5+X1
 MXP3     LX5    12 
          SA1    LS 
          NG     X1,MXP4     IF NULL LS 
          BX5    X3*X5       SET NEW LINE SPEED 
          BX5    X5+X1
 MXP4     LX5    12 
          SA1    TY 
          NG     X1,MXP5     IF NULL TTYS 
          BX5    X3*X5       SET NEW NUMBER OF TERMINALS
          BX5    X5+X1
 MXP5     LX5    6
          SA1    RC 
          NG     X1,MXP6     IF NULL RC 
          MX3    54 
          BX5    X3*X5       SET NEW REPEAT COUNT 
          BX5    X5+X1
 MXP6     LX5    18 
          BX6    X5 
          SA6    A5          REPLACE *TSPT* ENTRY 
          SB2    B2+B1
          SA5    X4+B2       SET SECOND WORD OF *TSPT* ENTRY
          LX5    12 
          MX3    48 
          SA1    IS 
          NG     X1,MXP7     IF NULL *IS* 
          BX5    X3*X5       SET NEW INPUT SPEED
          BX5    X5+X1
 MXP7     LX5    12 
          SA1    LD 
          NG     X1,MXP8     IF NULL *LD* 
          BX5    X3*X5       SET NEW LOGOUT DELAY 
          BX5    X5+X1
 MXP8     LX5    36 
          BX6    X5 
          SA6    A5          REPLACE SECOND WORD OF *TSPT* ENTRY
          SB2    B2+B1
          SB3    B3-1 
          NE     B3,MXP2     IF MORE ENTRIES TO CHANGE
          EQ     MXPX        RETURN 
  
  
 LSCR     CON    0           LAST SCRIPT
 FSCR     CON    0           FIRST SCRIPT 
 RADDR    CON    0           RELOCATON ADDRESS
 LINE     CON    0           INDEX INTO *TSPT*
 MIX      CON    0           MIXED MODE FLAG
 MSPA     VFD    24/0,18/RDISP,18/LDISP 
 MMP      SPACE  4,20 
**        MMP - MIXED MODE PROCESSOR. 
* 
*         ENTRY  (B6) = NUMBER OF ARGUMENTS.
*                (A5) = FWA OF ARGUMENTS TO PROCESS.
* 
*         USES   X - 0, 1, 2, 5, 6. 
*                A - 1, 5, 6. 
*                B - 5, 6, 7. 
* 
*         CALLS  DXB. 
  
  
 MMP      SUBR               ENTRY/EXIT 
          BX6    X6-X6
          SA6    MMPA 
          SX1    B6-TARGL-1 
          PL     X1,KNF      IF TOO MANY CHARACTERS 
          SB7    B1          ASSUME DECIMAL CONVERSION
          SB5    TARGL       PRESET VALUES
          MX6    1
 MMP1     SA1    TARG-1+B5
          AX1    18 
          SA6    X1 
          SB5    B5-1 
          PL     B5,MMP1     IF MORE TO SET 
  
*         PROCESS ARGUMENTS.
  
 MMP2     ZR     B6,MMPX     IF NO MORE INPUT 
          SA5    A5+B1
          ZR     X5,MMP4     IF NULL ENTRY
          RJ     DXB
          NZ     X4,KNF      IF ERROR 
          SA1    MMPA 
          SA1    TARG+X1
          PL     X1,MMP3     IF ZERO VALUE ALLOWED
          ZR     X6,KNF      IF ZERO VALUE ENTERED
 MMP3     MX0    -18
          BX2    -X0*X1 
          IX2    X2-X6
          NG     X2,KNF      IF ENTRY TOO LARGE 
          AX1    18          STORE VALUE
          SA6    X1 
 MMP4     SB6    B6-B1
          SA1    MMPA        ADVANCE INDEX
          SX6    X1+B1
          SA6    A1 
          EQ     MMP2        LOOP FOR ALL PARAMETERS
  
 MMPA     CON    0
 TARG     SPACE  4,20 
**        TARG - TABLE OF ARGUMENTS.
* 
*T        1/Z, 23/ 0, 18/ ADDR  , 18/ VALUE 
* 
*         Z      IF SET, ZERO NOT ALLOWED.
*         ADDR   ADDRESS TO STORE VALUE.
*         VALUE  MAXIMUM VALUE ALLOWED FOR PARAMETER. 
  
  
 TARG     BSS    0
          LOC    0
          VFD    1/0,23/0,18/TY,18/0
          VFD    1/1,23/0,18/LS,18/1000 
          VFD    1/1,23/0,18/IS,18/1000 
          VFD    1/0,23/0,18/TT,18/177
          VFD    1/0,23/0,18/LD,18/4095 
          VFD    1/0,23/0,18/RC,18/31 
          LOC    *O 
 TARGL    EQU    *-TARG      NUMBER OF PARAMETERS 
 CLR      SPACE  4,20 
**        CLR - CLEAR MATRIX DISPLAY. 
* 
*         EXIT   MATRIX DISPLAY CLEARED.
* 
*         USES   X - 0, 1, 2, 6, 7. 
*                A - 1, 6, 7. 
*                B - 5, 6, 7. 
  
  
 CLR      SUBR               ENTRY/EXIT 
          SB7    SDISN       NUMBER OF DISPLAY LINES TO CLEAR 
          SB6    SDIS        CURRENT ADDRESS OF BUFFER
          SA1    =10H 
          BX6    X1 
          MX0    -36
          BX2    -X0*X1 
 CLR1     SB5    SDISL-1     WORDS PER DISPLAY LINE 
 CLR2     SA6    B6+B5
          SB5    B5-B1
          NZ     B5,CLR2     IF NOT END OF LINE 
          SA1    B6+B5       SAVE CONTROL BYTES 
          BX1    X0*X1
          BX7    X1+X2
          SA7    A1 
          SB6    B6+SDISL    START OF NEXT LINE 
          SB7    B7-1 
          NZ     B7,CLR1     IF NOT END OF DISPLAY
          EQ     CLRX        RETURN 
 MNS      SPACE  4,20 
**        MNS - PAGE MATRIX DISPLAY BACKWARDS.
* 
*         ENTRY  (LINE) = CURRENT INDEX INTO *TSPT*.
* 
*         EXIT   (LINE) = UPDATED INDEX INTO *TSPT*.
*                TO *KBI3*. 
* 
*         USES   X - 1, 2, 6. 
*                A - 1, 2, 6. 
* 
*         CALLS  DMX. 
  
  
 MNS      BSS    0           ENTRY
          SA1    LINE 
          SA2    F.TSPT 
          SX6    X1-SDISN*2 
          IX1    X2-X6
          NG     X1,MNS1     IF NOT BEGINNING OF *TSPT* 
          SX6    X2+         POSITION TO BEGINNING OF *TSPT*
 MNS1     SA6    A1+
          RJ     DMX         UPDATE MATRIX DISPLAY
          EQ     KBI3        PROCESS KEYBOARD INPUT 
 PLS      SPACE  4,10 
**        PLS - PAGE MATRIX DISPLAY FORWARD.
* 
*         ENTRY  (LINE) = CURRENT INDEX INTO *TSPT*.
* 
*         EXIT   (LINE) = UPDATED INDEX INTO *TSPT*.
* 
*         USES   X - 1, 2, 3, 6.
*                A - 1, 2, 3, 6.
* 
*         CALLS  DMX. 
  
  
 PLS      BSS    0           ENTRY
          SA1    LINE 
          SX6    X1+SDISN*2 
          SA2    F.TSPT 
          SA3    L.TSPT 
          IX3    X2+X3
          IX1    X6-X3
          NG     X1,PLS1     IF NOT PAST END OF *TSPT* TABLE
          SX6    X2+         RESET TO BEGINNING OF *TSPT* 
 PLS1     SA6    A1+
          RJ     DMX         UPDATE MATRIX DISPLAY
          EQ     KBI1        PROCESS KEYBOARD INPUT 
 SDL      SPACE  4,20 
**        SDL - SET DISPLAY LINE. 
* 
*         ENTRY  (B6) = ADDRESS OF CURRENT *TSPT* ENTRY.
*                (B7) = ASSEMBLY BUFFER ADDRESS.
* 
*         EXIT   (B7) = UPDATED BUFFER ADDRESS. 
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 5, 6, 7.
*                B - 6, 7.
* 
*         CALLS  CDD
  
  
 SDL      SUBR               ENTRY/EXIT 
          SA1    F.TSPT      SET SCRIPT NUMBER
          SX2    B6 
          IX2    X2-X1
          AX2    1
          SX1    X2+B1
          RJ     CDD
          MX0    -12
          PACK   MMSC,11,5   SET SCRIPT NUMBER
          SA5    B6          FIRST WORD OF *TSPT* ENTRY 
          AX5    24          SET NUMBER OF TTY-S
          BX1    -X0*X5 
          RJ     CDD
          PACK   MMSC,20,6   SET NUMBER OF TTYS 
          AX5    12          SET LINE SPEED 
          BX1    -X0*X5 
          RJ     CDD
          PACK   MMSC,28,6   SET LINE SPEED 
          AX5    12          SET THINK TIME 
          BX1    -X0*X5 
          RJ     CDD
          PACK   MMSC,43,6   SET THINK TIME 
          MX2    -6          SET REPEAT COUNT 
          SA5    A5 
          AX5    18 
          BX1    -X2*X5 
          RJ     CDD
          PACK   MMSC,58,6   SET REPEAT COUNT 
          SA5    B6+B1       SECOND WORD OF *TSPT* ENTRY
          LX5    12 
          BX1    -X0*X5      SET INPUT SPEED
          RJ     CDD
          PACK   MMSC,36,6   SET INPUT SPEED
          LX5    12          SET LOGOUT DELAY 
          BX1    -X0*X5 
          RJ     CDD
          PACK   MMSC,51,6   SET LOGOUT DELAY 
          SB7    B7+SDISL    POINT TO NEXT BUFFER ADDRESS 
          SB6    B6+B1
          EQ     SDLX        RETURN 
          TITLE  TRANSLATE SESSION FILE.
 SFE      SPACE  4,20 
**        SFE - SESSION FILE ERROR. 
* 
*         ENTRY  (X0) = DIAGNOSTIC. 
* 
*         EXIT   NEW SESSION FILE ATTACHED. 
*                TO *TSF1*. 
* 
*         USES   X - 6. 
*                A - 6. 
* 
*         CALLS  RSF. 
  
  
 SFE      BSS    0           ENTRY
          RJ     RSF         REQUEST SESSION FILE 
          SX6    B0          CLEAR POINTERS 
          SA6    L.TSPT 
          SA6    L.TSTX 
          SA6    L.TASK 
          SA6    TASKF
          EQ     TSF2        RETRY
 TSF      SPACE  4,20 
**        TSF - TRANSLATE SESSION FILE. 
* 
*         EXIT   *TSTX*, *TASK*, AND *TSTP* TABLES BUILT. 
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 4, 5, 6, 7. 
*                B - 2, 3, 4, 5, 6, 7.
* 
*         CALLS  DXB, RSF.
* 
*         MACROS ADDWRD, MESSAGE, READ, READO.
* 
*         NOTES  EACH RECORD ON THE SESSION FILE IS TRANSLATED
*                AND STORED IN *TSTX*.  THE SESSION POINTERS (*TSTP*) 
*                AND TASK POINTERS (*TASK*) ARE ALSO BUILT. 
  
  
 TSF      SUBR               ENTRY/EXIT 
          BX6    X6-X6       CLEAR TEXT 
          SA6    SRCNT       CLEAR SESSION RECORD COUNTER 
          MX7    0           CLEAR POINTERS 
          SA5    I           CHECK FILE NAME
          SA6    L.TSTX 
          SA7    L.TSPT 
          SA7    L.TASK 
          SA7    TASKF
          SA7    2           CLEAR *NEXT TASK* WORD 
          SA7    3           CLEAR FWA *TASK TABLE* 
          SX7    100
          SA7    PCENT       SET PERCENTAGE LIMITS
          AX5    1
          NZ     X5,TSF2     IF FILE NAME SPECIFIED 
          BX0    X0-X0
 TSF1     RJ     RSF         REQUEST SESSION FILE 
 TSF2     MESSAGE  (=C* TRANSLATING SESSION FILE.*),1 
          READ   I
          BX7    X7-X7
          SA7    WORD        INITIALIZE SESSION RECORD WORD COUNTER 
 TSF3     READO  I
          SA2    L.TSTX      CHECK SESSION TEXT 
          ZR     X1,TSF5     IF NOT END OF RECORD 
          SA1    TASKF
          ZR     X1,TSF4     IF NO TASKS IN SCRIPT
          BX6    X6-X6
          ADDWRD TASK,X6     ZERO WORD TERMINATOR FOR TASK TABLE
          SA1    PCENT
          NZ     X1,TSF22    IF TOTAL PERCENTAGE OF TASKS NOT 100 
          SA2    L.TSTX 
 TSF4     NZ     X2,TSFX     RETURN IF ANY TEXT PROCESSED 
          SX0    =C*EMPTY SESSION FILE.*
          BX7    X7-X7       CLEAR COMMAND PARAMETER
          SA7    RSFB 
          EQ     TSF1        REPORT ERROR 
  
 TSF5     BX0    X6          SET INPUT WORD 
          MX5    0           CLEAR SESSION WORD 
          SB3    48 
          SB4    12          CLEAR SHIFT
          ZR     X0,TSF18    IF NO DATA IN WORD,I.E. AFTER $TASK NNN
          MX7    6
          BX7    X7*X0       MASK LEADING CHAR OF 1ST WORD IN RECORD
          LX7    6
          SA1    =0R$ 
          BX1    X7-X1
          ZR     X1,TSF6     IF CHAR IS $, I.E. TASK
          SA1    TASKF
          NZ     X1,TSF23    IF TASK FLAG SET, SCRIPT CANNOT FOLLOW 
          ADDWRD TSPT,X2     ENTER SESSION POINTER
          BX2    X2-X2
          ADDWRD TSPT,X2
          SA1    TSFA 
          MX7    30 
          BX1    X0-X1
          BX1    X7*X1
          NZ     X1,TFS10    IF NOT *CSET* DIRECTIVE
          SA1    NPS
          ZR     X1,TFS10    IF NOT NETWORK MODE
          SB3    24          SET SHIFT COUNT
          SA5    TSFB 
          EQ     TSF18       PROCESS NEXT WORD FROM SCRIPT
  
*         GENERATE TASK TABLE ENTRY.
  
 TSF6     SA1    TASKF
          NZ     X1,TSF7     IF NOT FIRST TASK ENCOUNTERED
          SA7    TASKF       SET TASK FLAG
 TSF7     MX7    6
          BX1    -X7*X0      MASK OFF $ FROM TASK NAME
          LX1    6
          MX7    36 
          BX1    X7*X1       GET 6-CHARACTER TASK NAME
          BX1    X1+X2       ADD TSTX POINTER ADDRESS IN 1ST WORD 
          ADDWRD TASK,X1     TASK NAME AND POINTER IN TASK TABLE
          MX1    0
          ADDWRD TASK,X1     ZERO WORD FOR 2ND WORD IN TASK TABLE 
          MX7    -18
          BX5    -X7*X0      GET *DESIRED PERCENTAGE* ENTRY 
          LX5    42 
          SB2    3           MAX CHARACTERS FOR PERCENTAGE
          MX7    6
          SA4    =1L
 TSF8     BX1    X5*X7       ISOLATE UPPER CHARACTER
          IX2    X4-X1
          NZ     X2,TSF9     IF CHARACTER NOT BLANK (55)
          SB2    B2-B1
          ZR     B2,TSF21    IF NO MORE CHARACTERS TO CHECK 
          LX5    6           MOVE NEXT CHARACTER IN POSITION
          EQ     TSF8        LOOP 
  
 TSF9     MX7    18 
          BX5    X5*X7
          SB7    B1          SET DECIMAL BASE 
          RJ     DXB
          NZ     X4,TSF21    IF ERRORS IN CONVERSION
          SA2    PCENT
          IX7    X2-X6
          SA7    A2          UPDATE TASK PERCNTAGE
          SX2    100         SET PERCENTAGE LIMIT 
          IX2    X2-X6
          NG     X2,TSF21    IF GREATER THAN 100
          PX6    X6          INTEGER TO FLOATING POINT
          NX1    X6          NORMALIZE
          ADDWRD TASK,X1     *DESIRED PERCENTAGE* IN 3RD WORD 
          MX1    0
          ADDWRD TASK,X1     ACTUAL PERCENTAGE IN FOURTH WORD 
          EQ     TSF3        PROCESS NEXT TASK
  
 TFS10    MX4    -12         SET TRANSLATION REGISTERS
          SB2    10 
          BX2    -X4*X0      SET END OF LINE FLAG 
          MX7    -6 
          SB5    X2 
  
*         TRANSLATE SESSION/TASK TEXT.
  
 TSF11    LX0    6           NEXT CHARACTER 
          BX2    -X7*X0 
          SA1    TASO+X2     LOCATE TRANSLATION 
          SB7    X1          CHECK TRANSLATION
          SB2    B2-B1
          BX0    X7*X0
          SB6    B6+B1       COUNT CHARACTER
          SX3    B4-13
          PL     X3,TSF12    IF SPECIAL CHARACTER 
          NZ     B7,TSF19    IF SPECIAL PROCESSING
 TSF12    LX3    X1,B4       SHIFT TO CHARACTER 
          BX2    -X4*X3      EXTRACT CHARACTER
          SX6    .ESC 
          BX6    X2-X6       CHECK FOR *ESC*
          ZR     X6,TSF13    IF *ESC* 
          SX6    .ETX 
          BX6    X2-X6
          NZ     X6,TSF14    IF NOT *ETX* 
 TSF13    SX6    B1          SET FLAG NOT TO SAVE *CR* AFTER *ESC/ETX*
          SA6    ESC
 TSF14    SB4    12          CLEAR SHIFT
          ZR     X2,TSF20    IF NULL CHARACTER
          SA3    ESC         CHECK *ESC* FLAG 
          SX6    X3-2 
          NZ     X6,TSF15    IF *CR* DOES NOT FOLLOW *ESC*
          SA6    ESC
          EQ     TSF16       CONTINUE 
  
 TSF15    LX3    X2,B3       MERGE OUTPUT 
          BX5    X5+X3
          SB3    B3-12
 TSF16    PL     B3,TSF17    IF SESSION WORD NOT FULL 
          SB3    48 
          ADDWRD TSTX,X5
          SA5    WORD 
          SX7    X5+B1       INCREMENT SESSION RECORD WORD COUNTER
          SA7    A5 
          MX7    -6 
          BX5    X5-X5
          MX4    -12
 TSF17    SA1    XOFF 
          NZ     X1,PXO      IF SET TAPE OFF
          NZ     B2,TSF11    IF NOT END OF INPUT WORD 
 TSF18    READO  I           READ NEXT WORD 
          BX0    X6 
          ZR     X1,TFS10    IF NOT END OF RECORD 
          EQ     EOS         PROCESS END OF SESSION 
  
 TSF19    NG     B7,*+1      IF SHIFT COUNT 
          JP     B7          PROCESS SPECIAL FORM 
  
          SB4    -B7         SET SHIFT
          EQ     TSF17       COMPLETE END OF LINE 
  
*         PROCESS INCORRECT SESSION FILE. 
  
 TSF20    SX0    =C*INCORRECT DATA.*
          EQ     SFE         PROCESS SESSION FILE ERROR 
  
 TSF21    SX0    =C*INCORRECT TASK PERCENTAGE.* 
          EQ     SFE         PROCESS SESSION FILE ERROR 
  
 TSF22    SX0    =C*TASK PERCENTAGE UNEQUAL TO 100.*
          EQ     SFE         PROCESS SESSION FILE ERROR 
  
 TSF23    SX0    =C*SCRIPTS CANNOT FOLLOW TASK DEFINITIONS.*
          EQ     SFE         PROCESS SESSION FILE ERROR 
  
  
 TSFA     VFD    60/5L+CSET  CHARACTER SET DETECTION DIRECTIVE
 TSFB     VFD    12/4123B,12/.ELCR,36/0 
 PCL      SPACE  4,10 
**        PCL - PROCESS COLON.
  
  
 PCL      BSS    0
          NZ     B5,TSF12    IF LINE NOT TERMINATED 
          NZ     X0,TSF12    IF THE WORD CONTAINS CHARACTERS
 CRT      SPACE  4,10 
**        CRT - CARRIAGE RETURN.
  
  
 CRT      BSS    0
          SA3    NPS         SET XOFF MODE
          BX6    X3 
          SA6    XOFF 
          SA3    ESC
          ZR     X3,CRT1     IF FLAG NOT SET
          SX6    2           SET FLAG TO NOT SAVE *CR*
          SA6    ESC
 CRT1     SX2    B4-12       CHECK SHIFT STATUS 
          NZ     X2,TSF12    IF SHIFT COUNT 
 EOL      SPACE  4,10 
**        EOL - END OF LINE.
  
  
 EOL      BSS    0
          SA4    NPS         SET CARRIAGE RETURN
          SX2    .ELCR
          ZR     X4,EOL1     IF NOT NETWORK MODE
          SX2    4033B
 EOL1     SB2    B0          CLEAR CHARACTER COUNT
          ZR     B5,TSF14    IF WORD TERMINATED 
          BX0    X2 
 EOL2     READO  I           SKIP WORDS TO END OF LINE
          MX4    -12
          BX7    -X4*X6 
          NZ     X7,EOL2     IF NOT END OF LINE 
          BX2    X0 
          EQ     TSF14       PROCESS NEXT LINE
  
 ESC      CON    0           ESCAPE CHARACTER FLAG
 LTSTX    CON    0           LWA OF LAST SCRIPT 
 PCENT    CON    0           TASK PERCENTAGE
 TASKF    CON    0           TASK FLAG
 PXO      SPACE  4,10 
**        PXO - PROCESS XOFF. 
  
  
 PXO      BSS    0
          SX2    .ELXO       SET XOFF CODE (DC3)
          SX6    B0          CLEAR XOFF MODE
          SA6    XOFF 
          SB2    B0          CLEAR CHARACTER COUNT
          SB4    12          CLEAR SHIFT
          EQ     TSF14       PROCESS NEXT LINE OF SCRIPT
 EOS      SPACE  4,10 
**        EOS - PROCESS END OF SESSION. 
  
  
 EOS      BSS    0
          SB3    B3+12       SET PREVIOUS BYTE
          NZ     X5,EOS1     IF NOT NEW TEXT WORD 
          SA1    F.TSTX      SET PREVIOUS WORD
          SA2    L.TSTX 
          SX6    X2-1 
          SA6    A2          BACK UP POINTER LENGTH 
          SA5    WORD 
          SX7    X5-1        DECREMENT SESSION RECORD WORD COUNTER
          SA7    A5 
          SB3    B0 
          IX6    X1+X6
          SA5    X6 
 EOS1     MX0    48          SET END OF SESSION CHARACTER 
          LX0    X0,B3
          BX5    X0*X5
          SX1    .ESCR
          SA2    NPS
          ZR     X2,EOS2     IF NOT NETWORK MODE
          SX1    .ESXO
 EOS2     LX1    X1,B3
          BX5    X1+X5
          ADDWRD TSTX,X5
          SA5    WORD 
          SX7    X5+B1       INCREMENT SESSION RECORD WORD COUNTER
          ADDWRD TSTX,X7     STORE COUNTER AT END OF SESSION TEXT 
          SA5    SRCNT       INCREMENT SESSION RECORD COUNTER 
          SX7    X5+B1
          SA7    A5 
          SA1    TASKF
          NZ     X1,TSF2     IF NO SCRIPT SESSION 
          SA2    L.TSTX      SAVE LWA+1 OF LAST SESSION 
          BX6    X2 
          SA6    LTSTX
          EQ     TSF2        PROCESS NEXT RECORD
  
 WORD     CON    0           SESSION RECORD WORD COUNTER
 SRCNT    CON    0           SESSION RECORD COUNTER 
 XOFF     DATA   0           XOFF MODE FLAG 
          TITLE  SUBROUTINES. 
 CTC      SPACE  4,20 
**        CTC - CHECK ASSIGNED TERMINAL COUNT.
* 
*         ENTRY  *TSPT* INITIALIZED.
*                (NT) = MAXIMUM NUMBER OF TERMINALS ALLOWED.
* 
*         EXIT   (X3) .LT. 0, IF NUMBER OF TTYS ASSIGNED .GT. (N) 
*                (X7) = NUMBER OF TERMINALS ASSIGNED. 
* 
*         USES   X - 0, 3, 4, 7.
*                A - 3, 4.
*                B - 4. 
  
  
 CTC      SUBR               ENTRY/EXIT 
          BX7    X7-X7       CLEAR ACCUMULATOR
          MX0    -12
          SA3    L.TSPT 
          SA4    F.TSPT 
          SB4    X3-2 
 CTC1     SA3    X4+B4       GET NEXT *TSPT* ENTRY
          AX3    24 
          BX3    -X0*X3 
          IX7    X7+X3
          SB4    B4-2 
          PL     B4,CTC1     IF NOT END OF TABLE
          SA3    NT 
          IX3    X3-X7
          EQ     CTCX        RETURN 
 OPR      SPACE  4,20 
**        OPR - OUTPUT PARAMETERS.
* 
*         ENTRY  K-DISPLAY PROCESSING COMPLETE. 
* 
*         EXIT   STIMULATOR PARAMETERS WRITTEN TO OUTPUT. 
* 
*         USES   X - 1, 3, 6. 
*                A - 1, 3, 6. 
*                B - 2. 
* 
*         MACROS WRITEW, WRITER.
  
  
 OPR      SUBR               ENTRY/EXIT 
          SB2    DLFL-4 
          SA1    OPAD-1      INITIALIZE POINTER 
 OPR1     SA1    A1+B1       ADDRESS OF VALUE 
          ZR     X1,OPR2     IF LAST ADDRESS
          SA3    X1          GET VALUE
          BX6    X3 
          SB2    B2+4 
          SA6    B2 
          EQ     OPR1        LOOP 
  
 OPR2     WRITEW O,DLCH,DLLL
          WRITER O,R
          EQ     OPRX        RETURN 
 WMD      SPACE  4,20 
**        WMD - WRITE MATRIX DISPLAY TO OUTPUT. 
* 
*         EXIT   MATRIX WRITTEN TO OUTPUT.
* 
*         USES   X - 1, 2, 6, 7.
*                A - 1, 2, 6, 7.
*                B - 6, 7.
* 
*         CALLS  SDL. 
* 
*         MACRO  WRITER, WRITEW.
  
  
 WMD      SUBR               ENTRY/EXIT 
          SA1    F.TSPT      SET FWA OF *TSPT*
          BX6    X1 
          SA6    WMDA 
          SA2    L.TSPT 
          IX7    X1+X2
          SA7    WMDB 
  
*         WRITE PAGE HEADER.
  
 WMD1     WRITEW  O,HBUF,HBUFL
          SX6    LINP-8      SET NUMBER OF LINES PER PAGE 
          SA6    WMDC 
  
*         WRITE MATRIX TO OUTPUT. 
  
 WMD2     SA1    WMDA        GET NEXT *TSPT* ENTRY TO LIST
          SB6    X1 
          SB7    WMDD 
          RJ     SDL         SET DISPLAY LINE 
          WRITEW O,WMDD,WMDDL 
          SA1    WMDA        ADVANCE TO NEXT ENTRY
          SX6    X1+2 
          SA2    WMDB 
          SA6    A1 
          IX2    X6-X2
          PL     X2,WMD3     IF END OF *TSPT* 
          SA1    WMDC        CHECK FOR END OF PAGE
          SX6    X1-1 
          SA6    A1 
          NZ     X6,WMD2     IF NOT END OF PAGE 
          EQ     WMD1        START NEW PAGE 
  
 WMD3     WRITER  O,R 
          EQ     WMDX        RETURN 
  
 WMDA     CON    0           CURRENT INDEX INTO *TSPT*
 WMDB     CON    0           LAST ADDRESS OF *TSPT* 
 WMDC     CON    0           NUMBER OF LINES LEFT ON PAGE 
 WMDD     DATA   4H          ASSEMBLY BUFFER
          DATA   48L
 WMDDL    EQU    *-WMDD      LENGTH OF ASSMBLY BUFFER 
  
 HBUF     DATA   L*1   *
          DATA   L*  *
          DATA   L*  *
          DATA   L*             STIMULATION PARAMETER MATRIX* 
          DATA   L*    SCRIPT    TTYS     LS      IS      TT     LD 
, RC* 
 HBUFL    EQU    *-HBUF      BUFFER LENGTH
          SPACE  4,10 
*         COMMON DECKS. 
  
  
*CALL     COMCCDD 
*CALL     COMCCIO 
*CALL     COMCCPM 
*CALL     COMCDXB 
*CALL     COMCMTP 
*CALL     COMCMVE 
*CALL     COMCPFM 
*CALL     COMCRDO 
*CALL     COMCRDC 
*CALL     COMCRDW 
*CALL     COMCSFM 
*CALL     COMCSFN 
*CALL     COMCSYS 
*CALL     COMCUPC 
*CALL     COMCWTW 
          TITLE  K-DISPLAY BUFFERS - FILE PARAMETER DISPLAY.
 FBUF     SPACE  4,10 
*         FBUF - FILE REQUEST BUFFER. 
  
  
 FBUF     VFD    12/0,36/0,12/2  DISPLAY BUFFER 
  
          KDL    29,T,(STIMULA) 
          KDL    3,H,(PARAMETER                      DESCRIPTION) 
 DSF      EQU    *+1
          KDL    1,,( F =  SESSFL1) 
          KDL    20,K,(SESSION FILE NAME (1-7 CHARACTERS).) 
 DSUI     EQU    *+1
          KDL    1,,( UI = 377777)
          KDL    20,K,(USER INDEX (0-377777B).) 
 DSN      EQU    *+1
          KDL    1,,( N =         ) 
          KDL    20,K,(NUMBER OF FILE ON SESSION FILE (0-377777B).) 
          KDL    2,16,(ENTER K.GO TO BEGIN PROCESSING OF SESSION FILE.) 
  
 FBUFE    BSS    17 
          TITLE  K-DISPLAY BUFFERS - SESSION PARAMETER DISPLAY. 
 DBUF     SPACE  4,10 
*         DBUF - DISPLAY BUFFER.
  
 DBUF     VFD    12/0,36/0,12/2  DISPLAY BUFFER 
  
          KDL    29,T,(STIMULA) 
          KDL    3,H,(PARAMETER                     DESCRIPTION)
 DSNT     EQU    *+1
          KDL    1,,( NT = 310B)
          KDL    15,K,(NUMBER OF TERMINALS TO STIMULATE (1-1000).)
 .DSNT    EQU    *-1
 DSLS     EQU    *+1
          KDL    1,,( LS = 15)
          KDL    15,K,(LINE SPEED IN CHARACTERS/SECOND (1-1000).) 
 DSIS     EQU    *+1
          KDL    1,,( IS = 15)
          KDL    15,H,(INPUT SPEED IN CHARACTERS/SECOND (1-1000).)
 DSTT     EQU    *+1
          KDL    1,,( TT = 10)
          KDL    15,K,(THINK TIME DELAY IN SECONDS (0-127).)
 DSTI     EQU    *+1
          KDL    1,,( TI = 8) 
          KDL    15,K,(RANDOM THINK TIME INCREMENT (A POWER OF 2 0-64).)
          KDL    15,H,(THINK TIME WILL VARY BETWEEN TT AND TT+TI.)
 DSAC     EQU    *+1
          KDL    1,,( AC = 4) 
          KDL    15,K,(NUMBER OF TERMINALS ACTIVATED EVERY AD SECS(1-64)
,.) 
 DSAD     EQU    *+1
          KDL    1,,( AD = 10)
          KDL    15,K,(ACTIVATION DELAY IN SECONDS (1-127).)
 DSRC     EQU    *+1
          KDL    1,,( RC = 0) 
          KDL    15,H,(NUMBER OF TIMES TO REPEAT STIMULATION (0-31).) 
 DSLD     EQU    *+1
          KDL    1,,( LD = 0) 
          KDL    15,K,(LOGOUT DELAY (0-4095).)
 DSRO     EQU    *+1
          KDL    1,,( RO = ON)
          KDL    15,K,(OUTPUT RECOVERY (ON OR OFF).)
 DSLF     EQU    *+1
          KDL    1,,( LF = NO)
          KDL    15,K,(LOOP ON SESSION FILE (YES OR NO).) 
 DSMX     EQU    *+1
          KDL    1,,( ) 
  
 DBUFE    BSS    17 
          EJECT 
 PBUF     SPACE  4,10 
*         PBUF - DISPLAY BUFFER FOR SPECIAL PARAMETERS. 
  
  
 PBUF     VFD    12/0,36/0,12/2  DISPLAY BUFFER 
  
          KDL    24,T,(K DISPLAY COMMANDS)
          KDL    1,K,( )
          KDL    4,,(GO)
          KDL    16,K,(BEGIN STIMULATION.)
          KDL    4,,(MIXED) 
          KDL    16,K,(DISPLAY PARAMETER MATRIX AND ENTER MIXED MODE) 
          KDL    16,K,(PARAMETER ASSIGNMENT.) 
  
          CON    0
          TITLE  K-DISPLAY BUFFERS - MIXED MODE DISPLAY.
*         LDISP -  LEFT DISPLAY BUFFER FOR MATRIX 
  
  
 LDISP    VFD    12/0,36/0,12/0  LEFT DISPLAY BUFFER
 LDIS     BSS    0
          KDL    19,T,(STIMULATION PARAMETER MATRIX)
 ASIGN    EQU    *+4
          KDL    11,K,(   NUMBER OF TTYS ASSIGNED                   ) 
 PERMIT   EQU    *+4
          KDL    11,H,(   MAXIMUM TTYS PERMITTED                    ) 
 DSCF     EQU    *+1
          KDL    6,,( CF =       )
          KDL    26,H,(MATRIX CHANGE FILE (1-7 CHARACTERS).)
          KDL    MMSC,H,(SCRIPT    TTYS     LS      IS      TT     LD 
,   RC) 
 SDIS     BSS    0
          DUP    SDISN,1
          KDL    MMSC,K,( 
,       ) 
 SMAT     EQU    *-SDIS 
 SDISL    EQU    SMAT/SDISN  LENGTH OF SINGLE SCRIPT LINE 
          ERRNZ  SDISL-WMDDL TWO BUFFERS MUST BE THE SAME LENGTH
 MORE     EQU    *+1
          KDL    MMSC,K,(              )
 LDISPE   BSS    17 
          EJECT 
RDISP     SPACE  4,10 
*         RDISP - RIGHT DISPLAY BUFFER FOR MATRIX 
  
  
 RDISP    VFD    12/0,36/0,12/0  RIGHT DISPLAY BUFFER 
          KDL    1,T,(K DISPLAY COMMANDS) 
          KDL    3,,(GO)
          KDL    12,K,(BEGIN STIMULATION.)
          KDL    3,,(+) 
          KDL    12,K,(PAGE DISPLAY FORWARD.) 
          KDL    3,,(-) 
          KDL    12,H,(PAGE DISPLAY BACKWARD.)
          KDL    1,H,(MIXED MODE PARAMETERS)
          KDL    3,K,(MX=SCRIPT,TTYS,LS,IS,TT,LD,RC.) 
          KDL    6,,(SCRIPT)
          KDL    15,K,(SCRIPTS WHICH THE PARAMTERS WILL AFFECT.)
          KDL    15,K,(SCRIPT(N) OR SCRIPT(N)-SCRIPT(N+X).) 
          KDL    6,,(TTYS)
          KDL    15,K,(NUMBER OF TTYS ASSIGNED TO SCRIPTS.) 
          KDL    6,,(LS)
          KDL    15,K,(LINE SPEED ASSIGNED TO SCRIPTS.) 
          KDL    6,,(IS)
          KDL    15,K,(INPUT SPEED ASSIGNED TO SCRIPTS.)
          KDL    6,,(TT)
          KDL    15,K,(THINK TIME ASSIGNED TO SCRIPTS.) 
          KDL    6,,(LD)
          KDL    15,K,(LOGOUT DELAY ASSIGNED TO SCRIPTS.) 
          KDL    6,,(RC)
          KDL    15,K,(REPEAT COUNT ASSIGNED TO SCRIPTS.) 
          KDL    6,K,(NULL PARAMETER WILL KEEP CURRENT VALUE.)
          KDL    3,K,(CF=XXX   CHANGE MATRIX VIA PREDEFINED PARAMETERS.)
          KDL    6,K,(XXX = PERMANENT FILE CONTAINING CHANGE DIRECTIVES 
,IN FORMAT) 
          KDL    15,K,(MX=SCRIPT,TTYS,LS,IS,TT,LD,RC.)
          CON    0
          TITLE  TRANSLATION TABLES.
 TASO     SPACE  4,10 
*         TASO - TABLE OF *ASCII* OUTPUT CHARACTERS.
  
  
 TASO     BSS    0
          LOC    0
  
*                                      76   74
  
 00       OTASC  3A,60,,PCL       CL   GV 
 01       OTASC  41,61,40         A    A    AT
 02       OTASC  42,62,5E         B    B    CF
 03       OTASC  43,63            C    C
 04       OTASC  44,64,3A         D    D    CL
 05       OTASC  45,65,11         E    E    DC1 
 06       OTASC  46,66,13         F    F    DC3 
 07       OTASC  47,67            G    G
  
 10       OTASC  48,68,0D         H    H    CR    (NO EOL PROCESSING) 
 11       OTASC  49,69,0A         I    I    LF
 12       OTASC  4A,6A,0D         J    J    NL
 13       OTASC  4B,6B,21         K    K    EX
 14       OTASC  4C,6C,40         L    L    AT
 15       OTASC  4D,6D,5E         M    M    CF
 16       OTASC  4E,6E            N    N
 17       OTASC  4F,6F            O    O
  
 20       OTASC  50,70            P    P
 21       OTASC  51,71            Q    Q
 22       OTASC  52,72            R    R
 23       OTASC  53,73            S    S
 24       OTASC  54,74            T    T
 25       OTASC  55,75            U    U
 26       OTASC  56,76            V    V
 27       OTASC  57,77            W    W
  
 30       OTASC  58,78            X    X
 31       OTASC  59,79            Y    Y
 32       OTASC  5A,7A            Z    Z
 33       OTASC  30,7B            0    LB 
 34       OTASC  31,7C            1    VL 
 35       OTASC  32,7D            2    RB 
 36       OTASC  33,7E            3    TL 
 37       OTASC  34,7F            4    DEL
  
 40       OTASC  35,,             5    NUL
 41       OTASC  36,01            6    SOH
 42       OTASC  37,02            7    STX
 43       OTASC  38,03            8    ETX
 44       OTASC  39,04            9    EOT
 45       OTASC  2B,05            +    ENQ
 46       OTASC  2D,06            -    ACK
 47       OTASC  2A,07            *    BEL
  
 50       OTASC  2F,08            /    BS 
 51       OTASC  28,09            (    HT 
 52       OTASC  29,0A            )    LF 
 53       OTASC  24,0B            $    VT 
 54       OTASC  3D,0C            =    FF 
 55       OTASC  20,0D            SP   CR    (NO EOL PROCESSING)
 56       OTASC  2C,0E            ,    SO 
 57       OTASC  2E,0F            .    SI 
  
 60       OTASC  23,10            NB   DLE
 61       OTASC  5B,11            OB   DC1
 62       OTASC  5D,12            CB   DC2
 63       OTASC  25,13            PC   DC3
 64       OTASC  22,14            DQ   DC4
 65       OTASC  5F,15            UL   NAK
 66       OTASC  0D,16,,CRT       CR   SYN   (CR = END OF THE LINE) 
 67       OTASC  26,17            AM   ETB
  
 70       OTASC  27,18            AP   CAN
 71       OTASC  3F,19            QM   EM 
 72       OTASC  3C,1A            LT   SUB
 73       OTASC  3E,1B            GT   ESC
 74       OTASC    ,1C,,-36       ESCAPE 2 - FS 
 75       OTASC  5C,1D            RVS  GS 
 76       OTASC    ,1E,,-24       ESCAPE 1 - RS 
 77       OTASC  3B,1F            SC   US 
  
          LOC    *O 
          TITLE  BUFFER DEFINITIONS.
          SPACE  4,10 
*         OUTPUT RECORD.
  
 DLCH     DATA   C*1STIMULATOR PARAMETERS- *
          DATA   H* SESSION FILE NAME-       F=  *
 DLFL     CON    0           SESSION FILE NAME
          DATA   H* USER INDEX-             UI=  *
 DLUI     CON    0           USER INDEX 
          DATA   H* NUMBER OF THE FILE-      N=  *
 DLNB     CON    0           FILE NUMBER
          DATA   H* NUMBER OF TERMINALS-    NT=  *
 DLNT     CON    0           NUMBER OF TERMINALS
          DATA   H* LINE SPEED-             LS=  *
 DLLS     CON    0           LINE SPEED 
          DATA   H* INPUT SPEED-            IS=  *
 DLIS     CON    0           INPUT SPEED
          DATA   H* THINK TIME-             TT=  *
 DLTT     CON    0           THINK TIME 
          DATA   H* RANDOM THINK TIME-      TI=  *
 DLTI     CON    0           RANDOM THINK TIME
          DATA   H* ACTIVATION COUNT-       AC=  *
 DLAC     CON    0           ACTIVATION COUNT 
          DATA   H* ACTIVATION DELAY-       AD=  *
 DLAD     CON    0           ACTIVATION DELAY 
          DATA   H* REPEAT COUNT-           RC=  *
 DLRC     CON    0           REPEAT COUNT 
          DATA   H* LOGOUT DELAY-           LD=  *
 DLLD     CON    0           LOGOUT DELAY 
          DATA   H* OUTPUT RECOVERY-        RO=  *
 DLRO     CON    0           OUTPUT RECOVERY
          DATA   H* LOOP ON SESSION FILE-   LF=  *
 DLLF     CON    0           LOOP ON SESSION FILE 
          DATA   H* MATRIX CHANGE FILE-     CF=  *
 DLCF     CON    0           MATRIX CHANGE FILE NAME
 DLLL     EQU    *-DLCH 
          SPACE  4,10 
*         REPLACE ADDRESSES.
  
  
 OPAD     CON    DSF
          CON    DSUI 
          CON    DSN
          CON    DSNT 
          CON    DSLS 
          CON    DSIS 
          CON    DSTT 
          CON    DSTI 
          CON    DSAC 
          CON    DSAD 
          CON    DSRC 
          CON    DSLD 
          CON    DSRO 
          CON    DSLF 
          CON    DSCF 
          CON    0           END OF TABLE 
          SPACE  4,10 
*         BUFFERS.
  
  
          USE    // 
  
 IBUF     BSS    0
 KBUF     EQU    IBUF+IBUFL 
 MEML     EQU    KBUF+KBUFL 
 RFL=     EQU    MEML+MEMLL  RESERVE TABLE SPACE
          TITLE  PRESET ROUTINE.
 PRS      SPACE  4,20 
**        PRS - PRESET PROGRAM. 
  
  
          ORG    IBUF 
 PRS      SUBR               ENTRY/EXIT 
          SX3    PRSD 
          RJ     PRK         PRESET *K* DISPLAY 
          SA1    ACTR        SET ARGUMENT COUNT 
          SX6    A0-FLFF     SET END OF MANAGED TABLES
          SB4    X1+
          SA6    F.TEND 
          SB5    PRSB        SET ARGUMENT TABLE 
          SA4    ARGR        FIRST ARGUMENT 
          RJ     ARG         PROCESS ARGUMENTS
          ZR     X1,PRS1     IF NO ERRORS 
          SX0    =C* ERROR IN STIMULATOR ARGUMENTS.*
          EQ     ABT         ABORT JOB
  
 PRS1     BX6    X6-X6
          SA6    RAPP 
          SYSTEM SPC,,PRSA   CALL *1TS* TO INITIALIZE *TCWD*
 PRS2     SA1    RAPP 
          ZR     X1,PRS2     IF REQUEST NOT COMPLETE
          SB3    X1+
          NE     B3,B1,PRS3  IF MORE THAN ONE DRIVER
          SA1    PRSC        SET WRITE WITH RECALL
          SA3    A1+B1
          BX6    X1 
          BX7    X3 
          SA6    RCOA+/RCO/RCOE-STMO
          SA7    A6+B1
 PRS3     SA3    MODE        DETERMINE NUMBER OF TERMINALS
          MX0    -12
          ZR     X3,PRS4     IF CALLING *1TS* 
          MX0    -6 
 PRS4     BX6    X6-X6
          MX7    0
 PRS5     SA1    TCWD+X7     GET NEXT ENTRY 
          ZR     B3,PRS6     IF END OF TABLE
          SB3    B3-B1
          LX1    24 
          BX1    -X0*X1 
          IX6    X1+X6
          IX6    X6+X3       ADJUST TERMINAL COUNT
          SX7    X7+B1
          EQ     PRS5        LOOP FOR ALL ENTRIES 
  
 PRS6     SA1    TARG        SET MAXIMUM VALUE FOR *TY* 
          BX7    X1+X6
          SA7    A1 
          SA6    NT 
          SA6    MNT
          BX1    X6          CONVERT NUMBER OF TERMINALS
          RJ     COD
          SX3    1RB&1R 
          SB3    B2-54
          LX2    X3,-B3 
          BX6    X4-X2
          MX3    48 
          BX7    X3*X6
          SA7    DSNT 
          SB3    B3+12
          SX3    2R  &2R).
          LX2    X3,-B3 
          BX6    X7-X2
          SA6    .DSNT
          RETURN IORA,R      RETURN *STIMOUT* 
          SA1    CSMR 
          NG     X1,PRS8     IF 64 CHARACTER SET
          SA1    TASO        STORE COLON IN PERCENT LOCATION
          SA2    TASO+63B    PERCENT
          MX6    12 
          BX4    X6*X1
          BX3    -X6*X2 
          BX6    X4+X3
          SA6    A2 
 PRS8     SA1    I           CHECK SESSION FILE 
          AX1    1
          ZR     X1,PRSX     IF NOT SET 
          BX6    X1 
          SA6    RSFB 
          REWIND I
          EQ     PRSX        RETURN 
  
 PRSA     VFD    18/0L1TS,42/0
*         VFD    18/0L1TE,42/0
 PRSB     SPACE  4,10 
**        PRSB - TABLE OF COMMAND ARGUMENT OPTIONS. 
  
  
 PRSB     BSS    0
 I        ARG    I,I
          CON    0
          SPACE  4,10 
 PRSC     BSS    0
          QUAL   RCO
          LOC    RCOE 
          WRITE  X5,R 
 PRSCL    EQU    *           ENSURE PROPER CODE MODIFICATION
          ERRNZ  RCOEL-PRSCL MACRO CODE NOT SAME LENGTH 
          LOC    *O 
          QUAL
          ERRNZ  *-PRSC-2    CHECK INSTRUCTION MODIFICATION 
          SPACE  4
 PRSD     KDL    *           GENERATE *KDL* SUBSTITUTION TABLE
          SPACE  4
 PRK      HERE               REMOTE BLOCK FROM *COMCDCP*
          SPACE  4
*         COMMON DECKS. 
  
*CALL     COMCARG 
*CALL     COMCCOD 
          SPACE  4
          END 
