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