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