IDENT TAF,TFWA,PRE
ABS
SST CMBL,CPAL,FNTL,PSTP,TSSC,SSJN
SYSCOM B1
*COMMENT TAFNAM - TRANSACTION EXECUTIVE.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
LIST X
*CALL COMKTAF
LIST -X
TITLE "PROD" - TRANSACTION EXECUTIVE - VER "VERT".
*** TAF - TRANSACTION FACILITY.
*
* J. R. HOGUE. 1971. *TRANEX*.
* F. R. SUTTON. 74/04/26. TASK ROLLOUT FEATURES.
* J. R. HOGUE. 74/04/26.
* L. A. BOELTER. 75/01/26. *TOTAL* DATA MANAGER INTERFACE.
* G. W. PROPP. 75/06/01. TIME/EVENT ROLL ENHANCEMENT.
* G. W. PROPP. 75/10/01. *TAF*.
* J. R. HOGUE. 75/10/01.
* M. M. CHEN. 77/04/01. INTERACTIVE VIRTUAL TERMINAL.
* G. W. PROPP. 78/10/11. *CRM* DATA MANAGER INTERFACE.
* M. M. CHEN. 80/01/01. *CDCS* DATA MANAGER INTERFACE.
* S. M. KEEFER. 80/03/01. POTENTIALLY BLOCKED TASKS.
* G. W. PROPP. 80/05/15. *TAF* AUTOMATIC RECOVERY.
* S. M. KEEFER. 80/06/01. TRANSACTION UNIT PROCESSING.
* D. A. BONDE. 80/06/10. BATCH CONCURRENCY.
SPACE 4,10
*** TAF.
*
* TAF PROVIDES FOR THE ORDERLY CONTROL AND EXECUTION OF
* TASKS WITHIN THE NETWORK OPERATING SYSTEM.
*
* TRANSACTIONS IN TAF ARE PROCESSED BY APPLICATION
* PROGRAMS (TASKS) RUNNING AT SUBCONTROL POINTS,
* CONTAINED WITHIN TAF-S FIELD LENGTH.
* A TRANSACTION IS A STRING (GROUP) OF CHARACTERS RECEIVED
* FROM THE COMMUNICATION EXECUTIVE VIA AN INTER CONTROL POINT
* TRANSFER. THE TRANSACTION DATA IS EXTRACTED FROM A
* RECEIVING BUFFER, AND PLACED IN A MESSAGE BLOCK. THIS BLOCK
* IS THE PHYSICAL REPRESENTATION OF THE TRANSACTION AND
* REMAINS ASSOCIATED WITH THE TRANSACTION THROUGHOUT ITS
* LIFE IN THE SYSTEM. WHEN THE TRANSACTION IS COMPLETED THE
* BLOCK IS FREED FOR USE BY OTHER TRANSACTIONS.
* A TASK IS THE ABSOLUTE BINARY CODE GENERATED FROM AN
* APPLICATION PROGRAM. EACH TASK RUNS WITH ITS OWN EXCHANGE
* PACKAGE, REFERENCE ADDRESS (RELATIVE TO TRANEX), AND
* FIELD LENGTH (A SUBSET OF TRANEX-S FIELD LENGTH). THUS IT
* CAN RESIDE IN ANY CONTIGUOUS SEGMENT WITHIN TRANEX-S FIELD
* LENGTH. TASK CORE IS ALLOCATED IN 100B WORD BLOCKS LOCATED
* ON EVEN 100B WORD BOUNDARIES (EG. 32100 TO 32200). A SUB
* CONTROL POINT CONSISTS OF 1 100B BLOCK OF CORE FOR SYSTEM USE
* FOLLOWED BY SUFFICIENT 100B BLOCKS TO CONTAIN AN ENTIRE TASK.
* TRANEX CAN RUN UP TO 31 SUB CONTROL POINTS SIMULTANEOUSLY
* WITH THE CPU BEING ASSIGNED TO THE SUB CONTROL POINT WITH
* THE HIGHEST CPU PRIORITY. TRANEX REGAINS CONTROL OF THE CPU
* IF THE TASK EXECUTES A CENTRAL EXCHANGE JUMP, IF THE HARDWARE
* DETECTS A CPU MODE ERROR, OR IF THE TASK EXECUTES LONGER
* THAN A TRANEX DEFINED CPU JOB SWITCHING TIME SPAN.
* AS A TASK RUNS, IT MAKES REQUESTS FOR EXTERNAL ACTION
* BY PLACING A REQUEST CONTROL WORD INTO ITS SYSTEM REQUEST
* AND EXECUTING A CENTRAL EXCHANGE JUMP. TRANEX WILL REGAIN
* CONTROL OF THE CPU, EXAMINE THE REQUEST WORD, AND INITIATE
* A SEQUENCE OF CODE TO PROCESS THE REQUEST. THERE ARE FIVE
* GENERAL CATAGORIES OF REQUESTS (1) SCHEDULING, (2) KTS
* DATA MANAGER, (3) TOTAL DATA MANAGER, (4) TRANEX INTERFACE,
* AND (5) SYSTEM TYPE.
* THE MESSAGE BLOCK (COMMUNICATION BLOCK) IS SCHEDULED
* FIRST FOR A SPECIAL CORE RESIDENT TASK (INITIAL TASK) WHICH
* DETERMINES FROM THE TRANSACTION CODES IN THE INPUT DATA THE
* TASK(S) TO BE SCHEDULED TO PROCESS THE TRANSACTION. INITIAL
* TASK THEN MAKES A SCHEDULING REQUEST.
* UPON RECEIPT OF A SCHEDULING REQUEST, TRANEX WILL MAKE
* AN ENTRY INTO ITS REQUESTED TASK LIST FOR THE FIRST TASK
* SPECIFIED BY THE REQUEST. AT SOME LATER TIME, THE TRANEX
* SCHEDULER WILL SELECT THIS TASK, RESERVE CORE FOR IT, AND
* INITIATE LOADING. WHEN THE LOAD IS COMPLETE, THE CPU REQUEST
* BIT IS SET FOR THE SUB CONTROL POINT AT WHICH THE TASK
* RESIDES. SOONER OR LATER THE CPU WILL BE ASSIGNED TO THE
* SUB CONTROL POINT AND THE TASK WILL START EXECUTING.
* ONE OR MORE TASKS MAY BE SCHEDULED SERIALLY TO PROCESS A
* TRANSACTION. THE COMMUNICATION METHOD ALONG A TASK CHAIN IS
* THE COMMUNICATION BLOCK. IT IS MOVED FROM TASK TO TASK AND
* MAY BE USED TO PASS PARAMETERS AND/OR DATA.
*
* TRANEX IS STRUCTURED AROUND TWO CONTROL LOOPS. AN OUTER
* LOOP INITIATES TIME DEPENDENT PROCESSING, WHILE AN INNER LOOP
* CONTROLS THE REQUEST PROCEESING TO SERVICE EXECUTING TASKS.
* THE INNER LOOP EXECUTES UNTIL NO TASK CPU ACTIVITY IS
* REQUESTED OR UNTIL A SPECIFIED TIME SPAN (40 MILLISECONDS)
* HAS ELAPSED SINCE THE OUTER LOOP EXECUTED. THE OUTER LOOP
* CHECKS FOR UNPROCESSED INPUT THEN CHECKS THE ELSPSED TIME
* SINCE EACH TIME DEPENDENT ROUTINE WAS LAST EXECUTED. THESE
* ROUTINES ARE EXECUTED WHEN THEIR TIME SPAN ELAPSES. AT THE
* END OF THE TIME CHECKS THE INNER LOOP IS CALLED.
* TRANEX TIME DEPENDENT PROCESSING INCLUDES - TASK
* SCHEDULING, TASK REACTIVATION AFTER A RESOURCE CONFLICT CAUSED
* TRANEX TO PLACE THE TASK IN RECALL, K-DISPLAY UPDATING AND
* COMMAND PROCESSING, CORE USAGE CHECKS (INCLUDES ROLLOUT IF
* TRANEX IDLE), TASK ACTIVITY CHECKING, AND PERIODIC JOURNALING
* OF TERMINAL TRANSACTION COUNTS.
SPACE 4,10
*** OPERATOR ACTION.
*
* AFTER ASSIGNING A TAPE WITH THE K-DISPLAY THE OPERATOR
* SHOULD WATCH THE CONSOLE FOR TAPE STATUS MESSAGES LIKE
* *MT50 NT RDY* ETC. TRANEX WILL REWIND THE TAPE AND WRITE A
* SMALL LABEL RECORD ON IT IMMEDIATELY AFTER ASSIGNMENT. AT
* THIS POINT A NOT READY TAPE OR A TAPE WITH NO WRITE ENABLE
* CAN HANG TRANEX WAITING FOR OPERATOR ACTION.
* THE OPERATOR SHOULD REMEDY THE PROBLEM AS FAST AS POSSIBLE.
SPACE 4,10
*** EXTERNAL DECISION KEYS.
*
* SENSE SWITCH 4 - IF SET, THE TRANSACTION EXECUTIVE WILL
* AUTOMATICALLY RESTART AFTER A RECOVERY.
*
* SENSE SWITCH 5 - IF SET, THE TRANSACTION EXECUTIVE WILL
* CALL *DMP* TO ISSUE A FIELD LENGTH DUMP.
SPACE 4,10
*** MODIFY OPTIONS.
*
* *DEFINE DEBUG - CAUSES TAF TO ASSEMBLE IN DEBUG MODE.
* ALL NETWORK MESSAGES WILL BE LOGGED ON THE TRACE FILE,
* ZZZZZDN. THE TRACE OPTION CAN BE TURNED ON/OFF AT
* RUN TIME BY OPERATOR K-DISPLAY COMMANDS -
* *K.DEBUG.*/*K.NODEBUG.*.
SPACE 4,10
** REGISTER CONVENTIONS (CAREFUL USAGE ADVISED).
*
* (B2) = START OF SYSTEM AREA FOR TASK CURRENTLY SELECTED FOR
* CPU ASSIGNMENT.
* (B7) = START OF SUBCONTROL POINT AREA FOR TASK CURRENTLY
* SELECTED FOR CPU ASSIGNMENT.
SPACE 4,10
** DOCUMENTATION CONVENTIONS.
*
* 1. IF NO REGISTER USES SPECIFIED, NO REGISTERS ARE SAVED
* 2. IF NO ENTRY/EXIT CONDITIONS SPECIFIED, NONE EXIST
* 3. THE FOLLOWING ABBREVIATIONS ARE USED -
*
* AAM ADVANCED ACCESS METHOD OF *CYBER* RECORD MANAGER.
* AIP APPLICATION INTERFACE PROGRAM FOR NETWORKS.
* ATL ACTIVE TRANSACTION LIST.
* BCT BATCH COMMUNICATION TABLE.
* C.B. COMMUNICATION BLOCK.
* CMM CYBER MEMORY MANAGER.
* D.M. DATA MANAGER.
* EDT ELEMENT DESCRIPTION TABLE.
* NAM NETWORK ACCESS METHOD.
* RA(S) RA OF THE SUBCONTROL POINT.
* ROLT ROLLOUT TABLE.
* RTL REQUEST TASK LIST.
* SUBCP SUBCONTROL POINT.
* TIF *TAF* INITIALIZATION FILE.
* TLD TASK LIBRARY DIRECTORY.
* TRD TRANSACTION DIRECTORY.
* CRF COMMUNICATIONS RECOVERY FILE.
* TST TERMINAL STATUS TABLE.
SPACE 4,10
*IF DEF,DEBUG
TFWA EQU 7000B FWA OF TAF EXECUTIVE
DBUG EQU 0 DEBUG IS ON FOR *AIP*
*ELSE
TFWA EQU 2300B FWA OF TAF EXECUTIVE
DBUG EQU 1 DEBUG IS OFF FOR *AIP*
*ENDIF
SPACE 4,10
ORG TFWA *TAF* FWA
MACROS TITLE MACROS.
ALLOC SPACE 4,10
** ALLOC - GENERATE A BIT RESERVATION MAP.
*
* THE LOWER 47 BITS OF EACH WORD ARE SET TO INDICATE *NOT
* RESERVED*. THE LAST WORD OF THE TABLE IS DENOTED BY
* CLEARING BIT ZERO OF THAT WORD.
*
* ALLOC NUMBER,BIT
*
* NUMBER - NUMBER OF ENTRIES FOR ALLOCATION MAP.
* BIT - NUMBER OF BITS/WORD TO USE.
PURGMAC ALLOC
ALLOC MACRO NUMBER,BIT
LOCAL AA,BB,CC
MACREF ALLOC
ERRPL BIT-48 NO MORE THAN 47 BITS/WORD
AA SET NUMBER-1
CC SET 47-BIT
BB DUP AA/BIT
VFD 12/2222B,BIT/-0,CC/0,1/1
AA SET AA-BIT
BB ENDD
AA SET AA+1
CC SET 48-AA
VFD 12/2222B,AA/-0,CC/0
ENDM
BCF SPACE 4,15
** BCF - BATCH CONCURRENCY *CRM* FUNCTION TABLE.
*
* DEFINE A FUNCTION TABLE ENTRY WITH INFORMATION
* ON EACH BATCH/CRM REQUEST CODE.
*
* BCF TSW,KA,KN,WS,FL
*
* TSW INDEX TO *TAF* STATUS WORD.
* KA INDEX TO KEYAREA WORD.
* KN INDEX TO KEYNAME WORD.
* WS INDEX TO WORKING STORAGE AREA WORD.
* FL FUNCTION LIST.
PURGMAC BCF
BCF MACRO TSW,KA,KN,WS,FL
VFD 3/TSW,6/KA,6/KN,6/WS,9/FL
ENDM
CKT SPACE 4,10
** CKT - CREATE KEYWORD TABLE.
*
* CKT KEYWORD,ROUTINE
*
* ENTRY *KEYWORD* = KEYWORD FOR REQUEST.
* = *END* IF LAST KEYWORD.
* *ROUTINE* = FWA OF ROUTINE TO PROCESS *KEYWORD*.
*
* EXIT KEYWORD PROCESSING TABLE IS CREATED.
PURGMAC CKT
CKT MACRO KEYWORD,ROUTINE
MACREF CKT
.A IFC NE,*KEYWORD*END*
VFD 42/0H_KEYWORD_,18/ROUTINE
.A ELSE
CON 0
.A ENDIF
ENDM
DSL SPACE 4,10
** DSL - DEFINE A DISPLAY LINE.
*
* DSL X,Y,A
*
* WHERE X = X COORDINATE.
* Y = Y COORDINATE.
* A = CONSTANT TO BE DISPLAYED.
PURGMAC DSL
DSL MACRO X,Y,A
MACREF DSL
B MICRO 1,6,$A$
C MICRO 7,,$A$
VFD 12/6000B+X*10,12/7756B-Y*10,36/6H"B"
DATA H$"C"$
ENDM
ENDOVL SPACE 4,10
** ENDOVL - TERMINATE OVERLAY.
*
* ENDOVL
PURGMAC ENDOVL
ENDOVL MACRO
LOCAL A,AL
MACREF ENDOVL
QUAL
L.D MAX L.,L.D
A BSS 0
QUAL "PROD""M."
TINST HERE
QUAL
AL BSS 0
OREL RMT
VFD 24/0,18/AL-A,18/A
OREL RMT
ENDM
ENTRY SPACE 4,10
** ENTRY - DEFINE OVERLAY ENTRY POINT.
*
* ENTRY NAME,K
*
* ENTRY NAME = NAME OF ENTRY POINT.
* K IF PRESENT, DEFINES ENTRY POINT NAME AS A
* K-DISPLAY COMMAND.
*
* CALLS ENTRY1 TO PASS CURRENT OVERLAY SUFFIX CHARACTER.
PURGMAC ENTRY
ENTRY MACRO NAME,K
MACREF ENTRY
ENTRY1 NAME,K,"M."
ENDM
ERROR SPACE 4,10
** ERROR - SET AN ERROR CODE AND BRANCH TO ERROR PROCESSOR.
*
* ERROR N
*
* N = ERROR CODE.
PURGMAC ERROR
ERROR MACRO N
MACREF ERROR
SX1 N
EQ TERP BRANCH TO ERROR PROCESSOR
ENDM
KCMND SPACE 4,10
** KCMND - DECLARE A *K*-DISPLAY COMMAND FOR INITIALIZATION.
*
* KCMND COM,PRC
*
* COM 3 - CHARACTER LONG COMMAND.
* PRC ADDRESS OF COMMAND PROCESSOR.
PURGMAC KCMND
KCMND MACRO COM,PRC
MACREF KCMND
VFD 18/PRC,24/0,18/0L_COM
ENDM
OVLN SPACE 4,10
** OVLN - GENERATE OVERLAY NAME.
*
* OVLN
*
* EXIT (N.) = LAST CHARACTER OF OVERLAY NAME.
PURGMAC OVLN
OVLN MACRO
MACREF OVLN
P. MICRO N.+1,1, ABCDEFGHIJKLMNOPQ
M. MICRO 1,1, "P."
N. SET N.+1
ENDM
SYMBOLS SPACE 4,10
** OVERLAY GENERATION SYMBOLS.
NOREF N.,M.,L.,L.D
N. SET 0 OVERLAY COUNTER
L. SET 0 OVERLAY LENGTH
L.D SET 0 MAXIMUM OVERLAY LENGTH
QTWCALL SPACE 4,10
** QTWCALL - QUEUE CALL MACRO.
*
* QTWCALL EVBIT,TYPE,POS
*
* ENTRY *EVBIT* = EVENT COMPLETE BIT.
* *TYPE* = EVENT TYPE.
* *POS* = IF *FIRST*, PUT EVENT AT BEGINNING OF QUEUE.
* OTHERWISE PUT EVENT AT END OF QUEUE.
*
* EXIT TO *TSSC*.
*
* USES X - 2, 4, 6.
* B - 4.
*
* CALLS QTW.
PURGMAC QTWCALL
QTWCALL MACRO EVBIT,TYPE,POS
LOCAL B
MACREF QTWCALL
.A IFC EQ,*POS*FIRST*
SB4 B1
.A ELSE
SB4 B0
.A ENDIF
SX2 59-EVBIT
SX4 TYPE
SX6 B
RJ QTW QUEUE *TAF* WORK
EQ TSSC TIME SLICE SUBCP
B BSS 0
QTWCALL ENDM
RDSB SPACE 4,10
** RDSB - READ SUBSYSTEM BLOCK.
*
* RDSB QUEUE,WC,FROM,TO,STAT
*
* QUEUE = QUEUE PRIORITY OF DESIRED SUBSYSTEM
* WC = WORD COUNT TO READ
* FROM = ADDRESS IN SUB-SYSTEM TO READ
* TO = ADDRESS IN PROGRAM TO READ TO
* STAT = ADDRESS TO PLACE STATUS OF READ
PURGMAC RDSB
RDSB MACRO Q,W,F,T,S
MACREF RDSB
R= X5,W
R= X6,T
LX5 36
R= X7,F
BX6 X6+X5
LX7 18
SX2 Q
BX7 X7+X6
LX2 18
SX6 S
SA7 X6
BX6 X6+X2
SX7 3RRSB
PX7 X7
LX7 42
BX6 X6+X7
RJ =XSYS=
ENDM
SBITS SPACE 4,10
** SBITS - SPECIFY BITS TO SET IN A WORD.
*
* SBITS (A,B,C,...N)
* BITS A, B, ..., N ARE SET SUCH THAT A LEFT SHIFT EQUAL TO
* THEIR VALUE RESULTS IN A NEGATIVE *X* REGISTER.
*
PURGMAC SBITS
SBITS MACRO A
MACREF SBITS
IRP A
POS 60-A
VFD 1/1
IRP
POS 0
BSS 0
ENDM
ENTRY1 MACRO NAME,K,OV
MACREF ENTRY1
DISPLAY RMT
VFD 42/0L_NAME
IFC EQ,*K**
VFD 6/1R_OV
ELSE 1
VFD 6/40B+1R_OV
VFD 12/NAME-TROVL
DISPLAY RMT
ENDIF
QUAL
_NAME EQU /"PROD""M."/_NAME
QUAL "PROD""M."
ENDM
TRANOVL SPACE 4,10
** TRANOVL - DEFINE OVERLAY.
*
* TRANOVL (SUBTITLE)
*
* ENTRY (SUBTITLE) = TEXT OF SUBTITLE.
* EXIT (M.) = 1 CHARACTER MICRO FOR OVERLAY NAME.
* (L.D) = MAXIMUM DISPLAY OVERLAY LENGTH.
PURGMAC TRANOVL
MACRO TRANOVL,A,SUBTITLE
MACREF TRANOVL
OVLN
TTL "PROD""M." - SUBTITLE
TITLE
L. SET *
IDENT "PROD""M.",TROVL,TROVL,1,0 SUBTITLE
*COMMENT "PROD" - SUBTITLE
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
QUAL "PROD""M."
ORG TROVL
ENDM
TITLE SYSTEM DEFINITIONS.
SPACE 4,10
** SYSTEM COMMON DECKS.
*CALL COMCMAC
*CALL COMSNCD
EQUATES TITLE EQUATES.
*CALL COMSPFM
*CALL COMSPRD
*CALL COMSIOQ
*CALL COMSDSP
*CALL COMSJIO
*CALL COMSMSC
QUAL COMSMTX
*CALL COMSMTX
QUAL BIO
*CALL COMSBIO
QUAL *
QUAL COMSSCP
*CALL COMSSCP
QUAL
*CALL COMSSSJ
*CALL COMSSSD
LIST X
*CALL COMSTRX
LIST -X
ORG TFWA SET TAF FWA
MACROS TITLE MACROS.
*CALL COMCCMD
*CALL COMCDCM
*CALL COMCDCP
*CALL COMCECM
LIST X
*CALL COMKFLD
*CALL COMKIPR
TITLE *TAF* TABLE AND INTERFACE DEFINITIONS.
SPACE 4,10
** *TAF* COMMON DECKS.
* SOME OF THE FOLLOWING COMMON DECKS USE *BSS* TO ASSIGN
* LOCATIONS TO SYMBOLS. *TAF* DOES NOT WANT TO ALLOCATE
* STORAGE FOR THESE SYMBOLS SO THE CURRENT ORIGIN COUNTER
* IS SAVED BY *BEGN* AND RESTORED AFTER THE COMMON DECKS
* ARE PROCESSED.
*CALL COMKBRD
BEGINT BSS 0 DO NOT RESERVE SPACE
*CALL COMKCBD
LIST -X
QUAL COMKCRM
*CALL COMKCRM
QUAL *
LIST X
*CALL COMKKIM
*CALL COMKNWF
*CALL COMKOPD
*CALL COMKRRD
*CALL COMKSCD
*CALL COMKSTC
*CALL COMKTDM
*CALL COMKTLD
*CALL COMKTRF
*CALL COMKTSA
*CALL COMKTSC
*CALL COMKTST
LIST -X
ORG BEGINT RESET COUNTER
RTL SPACE 4,25
** RTL - REQUESTED TASK LIST.
*
*T W1 12/ NAME,18/ FL,6/ CP,6/ MP,18/ L
*T, W2 18/ CR,18/ 1S,18/ ,1/S,1/D,1/C,1/E,2/
*T, W2 18/ CR,18/ 1S,6/ ,18/ RE
*
* WORD 1.
* NAME - TASK DIRECTORY INDEX.
* FL - FIELD LENGTH.
* CP - CURRENT PRIORTY.
* MP - MAXIMUM PRIORTY (FUTURE USE).
* L - QUEUE LENGTH LIMIT.
*
* WORD 2 (IF NOT FOR TASK ROLLIN REQUEST).
* CR - CURRENT *ATL* ENTRY.
* 1S - FIRST *ATL* ENTRY.
* S - SYSTEM TASK.
* D - NON DESTRUCTIVE CODE.
* C - CM RESIDENT.
* E - EXTENDED MEMORY RESIDENT.
*
* WORD 2 (IF FOR A TASK ROLLIN REQUEST).
* CR - CURRENT *ATL* ENTRY.
* 1S - FIRST *ATL* ENTRY.
* RE - ROLLOUT TABLE ENTRY ADDRESS OF TASK TO ROLL IN.
RTLLE EQU 2 LENGTH OF A *RTL* ENTRY
NRTL EQU 40 NUMBER OF *RTL* ENTRIES (MUST BE .LE. 47).
RTLW ALLOC NRTL,47 RESERVATION WORD FOR *RTL*
RTL BSSZ NRTL*RTLLE *RTL* ENTRIES
RTLL EQU *-RTL LENGTH OF *RTL*
ATL SPACE 4,10
** ATL - ACTIVE TRANSACTION LIST.
*
*T 12/ NT,12/ PT,6/ ,30/ CBA
*
* NT - NEXT TASK IN QUEUE CHAIN (BIASED BY +1).
* PT - PREVIOUS TASK IN QUEUE CHAIN (BIASED BY +1).
* CBA - ADDRESS OF COMMUNICATIONS BLOCK.
ATLL EQU 1 WORDS PER *ATL* ENTRY
TLS SPACE 4,15
** TLS - TASK LOAD STACK.
*
*T W1 1/R,5/ ,18/ USN,18/ TFL,18/ SCP
*T, W2 30/ TLN ,30/ RDA
*
* WORD 1.
* R - 1, IF TASK ROLLIN.
* USN - ADDRESS (-2) OF USER NAME FOR TASK LIBRARY.
* TFL - TASK FIELD LENGTH.
* SCP - FWA OF SUBCP TABLE ENTRY.
*
* WORD 2.
* TLN - ADDRESS OF TASK LIBRARY NAME.
* RDA - RANDOM DISK ADDRESS OF TASK.
CCC BSSZ 5*2+1 FIVE ENTRIES + ZERO WORD TERMINATOR
LTLRE EQU *-3 FWA OF LAST TASK LOAD REQUEST STACK ENTRY
ROLT SPACE 4,35
** ROLT - ROLLOUT TABLE.
*
*T W1 1/C,1/W,1/T,1/D,1/R,1/L,36/ ID,18/ FET
*T, W2 18/ FL,6/ CP,6/ MP,30/ RDA
*T, W3 12/IDT,1/C,1/A,4/0,6/SCP,36/ ED
*
* WORD 1.
* C - 1, IF ROLLOUT COMPLETE.
* W - 1, IF WAIT FOR TERMINAL INPUT.
* T - 1, IF TIMED ROLLOUT.
* D - 1, IF DATA MANAGER REQUESTED ROLLOUT.
* R - 1, IF DO NOT RELOAD COMMUNICATION BLOCK.
* L - 1, IF RESTART TASK AT RECALL ENTRY POINT.
* ID - EVENT DESCRIPTOR.
* 24/C.B. ADDRESS,12/0 FOR CALLRTN ROLL.
* 24/TIME,12/TST ORDINAL FOR WAITINP ROLL.
* 18/0,18/ROLLIN FL FOR MEMORY REQUEST ROLL.
* 24/TIME,12/C.B. INDEX FOR WAIT ROLL.
* FET - FET ADDRESS OF ROLLOUT FILE.
*
* WORD 2.
* RDA - DISK ADDRESS OF ROLLOUT FILE.
* FL - FIELD LENGTH REQUIRED FOR ROLLIN.
* CP - CURRENT PRIORITY.
* MP - MAXIMUM PRIORITY (FUTURE USE).
*
* WORD 3.
* IDT - IDENTIFICATION OF TYPE OF EVENT.
* C - *CDCS* CONNECTED FLAG.
* A - ABORT TASK FLAG. (*CDCS* DOWN)
* SCP - SUBCONTROL POINT NUMBER.
* ED - EVENT DESCRIPTOR.
* 18/0,18/FWA OF REQUEST FOR D.M. ROLL.
* 18/ACN,18/ABN FOR SEND IN *TAFNAM*.
* 12/0,24/SEQ FOR WAIT INPUT.
* 18/0,18/FL FOR MEMORY REQUEST.
TROLE EQU 3 LENGTH OF A ROLLOUT TABLE ENTRY
NROL EQU 50 NUMBER OF ROLLOUT TABLE ENTRIES
TROM ALLOC NROL,47 ROLLOUT TABLE ALLOCATION MAP
TROL BSSZ TROLE*NROL ROLLOUT TABLE
* SHIFT COUNTS FOR *ROLT* FIELDS.
RTBWI EQU 58 WAIT FOR TERMINAL INPUT
RTBTR EQU 57 TIMED ROLLOUT
RTBDM EQU 56 DATA MANAGER ROLLOUT
RTBID EQU 53 ROLLOUT ID
RTBCB EQU 35 ROLLOUT CONTROL BLOCK INDEX
RTBCP EQU 23 SUBCP
RTTL FIELD 0,53,30 ROLLOUT TIME IN SECONDS
RTCD FIELD 2,47,47 *CDCS* CONNECTED FLAG
RTAB FIELD 2,46,46 ABORT TASK FLAG
RTTS FIELD 2,23,0 SEQUENCE NUMBER FOR *WAITINP*
* WORD DEFINITIONS FOR *ROLT*.
RTWEV EQU 2 ROLT EVENT WORD
* *ROLT* ID TYPES.
EVDM EQU 1 DATA MANAGER LOCKED RECORD EVENT
EVTO EQU 2 TERMINAL OUTPUT THRESHOLD ROLLOUT
EVCR EQU 3 CALL TASK WITH RETURN ROLLOUT
EVWD EQU 4 WAITING TO USE THE DATA MANAGER
EVWI EQU 5 WAIT FOR TERMINAL INPUT
EVRL EQU 6 REQUEST FIELD LENGTH
* BCFT - BATCH CONCURRENCY *CRM* FUNCTION TABLE.
BCFT BCF TSDF,NOKA,NOKN,NOWS,FLDF CLOSE
BCF TSDF,NOKA,KNDE,NOWS,FLDF DELETE
BCF TSDF,NOKA,KNLC,NOWS,FLDF LOCK
BCF TSDF,NOKA,NOKN,NOWS,FLDF FLOCK
BCF TSDF,NOKA,NOKN,NOWS,FLDF OPEN
BCF TSDF,KARD,KNRD,WSRD,FLRD READ
BCF TSDF,KARL,KNRL,WSRL,FLRD READL
BCF TSDF,KARM,KNRM,WSRM,FLRD READM
BCF TSDF,KARN,NOKN,WSRN,FLRD READN
BCF TSDF,KARO,NOKN,WSRO,FLRD READNL
BCF TSDF,NOKA,NOKN,NOWS,FLDF REWIND
BCF TSDF,NOKA,KNRW,WSRW,FLWR REWRITE
BCF TSDF,NOKA,NOKN,NOWS,FLDF SKIPBL
BCF TSDF,NOKA,NOKN,NOWS,FLDF SKIPFL
BCF TSDF,NOKA,KNUC,NOWS,FLDF UNLOCK
BCF TSDF,NOKA,NOKN,NOWS,FLDF UNFLOCK
BCF TSDF,KAWR,KNWR,WSWR,FLWR WRITE
BCF TSDF,NOKA,KNST,NOWS,FLDF START
BCF TSDF,NOKA,NOKN,NOWS,FLDF DBEGIN
BCF TSCF,NOKA,NOKN,NOWS,FLDC DBCOMIT
BCF TSCF,NOKA,NOKN,NOWS,FLDC DBFREE
BCF TSDF,NOKA,NOKN,NOWS,FLDF DBSTAT
* FIELDS FOR BATCH *CRM* FUNCTION TABLE.
BFUE FIELD 0,59,30 UPPER TABLE ENTRY
BFFL FIELD 0,08,00 FUNCTION LIST
BFWS FIELD 0,14,09 WORKING STORAGE AREA INDEX
BFKN FIELD 0,20,15 KEYNAME AREA INDEX
BFKA FIELD 0,26,21 KEYAREA INDEX
BFTS FIELD 0,29,27 *TAF* STATUS WORD INDEX
BCTF BSSZ 1 BATCH CONTINUATION FLAG
ITTP SPACE 4,25
** ITTP - INTERNAL TASK TRACE PACKET.
*
*T W1 12/ TEF,12/ TID,18/ (B2),18/ (B7)
*T,W2 60/ SYSTEM REQUEST
*T,W3 60/ CB1W
*T,W4 60/ SCPW
*
* WORD 1.
* TEF - 2000B+ERROR FLAG RETURNED FROM SUBCP ACTIVATION.
* TID - TASK TRACE PACKET IDENTIFIER (SET TO ZERO).
* (B2) - START OF SYSTEM AREA PRECEDING THE RA OF THE TASK.
* (B7) - ADDRESS OF SUBCP TABLE.
*
* WORD 2.
* RA+1 - CONTENTS OF SYSTEM REQUEST IN THE TASK FL.
*
* WORD 3.
* CB1W - FIRST WORD OF C.B. KEPT IN THE SYSTEM AREA
* PRECEDING THE RA OF THE TASK.
*
* WORD 4.
* SCPW - THIRD WORD OF SUBCP TABLE.
* (SEE DEFINITION IN *COMKSCD*.)
ITTPL EQU 4 LENGTH OF AN INTERNAL TASK TRACE PACKET
ERRNG ITTPL-4 TRACE PACKET SIZE REDEFINED TO LESS THAN 4
* FIELDS FOR TRANSACTION INPUT.
INST FIELD 0,59,59 STATUS, 0 = DATA, 1 = STATUS
INCT FIELD 0,58,58 1 IF MORE DATA BLOCKS OF INPUT
INBT FIELD 0,56,56 BATCH TRANSACTION
INSO FIELD 0,48,48 SYSTEM ORIGIN TRANSACTION
INAT FIELD 0,47,45 APPLICATION CHARACTER TYPE
INTO FIELD 0,35,18 TERMINAL ORDINAL
INLC FIELD 0,17,0 MESSAGE LENGTH IN WORDS
TSB SPACE 4,10
** TSB - *TAF* STORAGE BUFFER.
*
* USED BY PROCESSES THAT REQUIRE A BLOCK OF TEMPORARY STORAGE.
* ACCESSED BY ROUTINES *GTS* AND *RTS*.
TSBLE EQU 4 LENGTH OF *TAF* STORAGE BUFFER ENTRY
NTSB EQU 50 NUMBER OF *TAF* STORAGE BUFFER ENTRIES
TSBM ALLOC NTSB,47 *TAF* STORAGE BUFFER RESERVATION MAP
TSB BSS TSBLE*NTSB *TAF* STORAGE BUFFER
SPACE 4,10
INFC FIELD 1,17,0 *ITASK* FUNCTION CODE
* FIELDS FOR TAF-CDCS REQUEST BLOCK.
CDHD FIELD 0,59,14 HEADING
CDRT FIELD 0,13,12 RETURN CONTROL
CDES FIELD 0,11,1 ERROR AND STATUS
CDRC FIELD 0,11,6 REASON CODE
CDSF FIELD 0,5,1 STATUS FLAG
CDCB FIELD 0,0,0 COMPLETION FLAG
CDBF FIELD 1,59,42 ERROR BUFFER ADDRESS
CDFC FIELD 1,5,0 FUNCTION CODE
CDRA FIELD 2,59,42 RA OF TASK
CDFL FIELD 2,41,24 FIELD LENGTH OF TASK
CDTS FIELD 2,23,0 TRANSACTION SEQUENCE NUMBER
* *TAF* QUEUE WORK ENTRY FIELD DEFINITIONS.
QWNS FIELD 0,59,54 SUBCP OF NEXT ENTRY IN QUEUE
QWNA FIELD 0,53,36 FWA OF NEXT ENTRY RELATIVE TO NEXT SUBCP
QWNT FIELD 0,59,36 NEXT QUEUE ENTRY
QWTY FIELD 0,35,30 QUEUE TYPE
QWSP FIELD 0,29,24 SUBCP THAT NEEDS RESOURCE
QWSH FIELD 0,23,18 SHIFT TO POSITION COMPLETE BIT TO BIT 59
QWEV FIELD 0,17,0 FWA OF RESOURCE EVENT
QWTM FIELD 1,53,18 MILLISECONDS FOR EVENT TO COMPLETE
QWPR FIELD 1,17,0 QUEUE COMPLETE PROCESSOR
* *TAF* AUTOMATIC RECOVERY QUEUE ENTRY DEFINITIONS.
QRQ1 FIELD 0,59,0 *TAF* QUEUE WORD 1
QRQ2 FIELD 1,59,0 *TAF* QUEUE WORD 2
QRTC FIELD 2,59,59 RECOVERY PROCESSING COMPLETE
QRST FIELD 2,58,58 RECOVERY STARTED COMPLETE
QRTO FIELD 2,17,0 TERMINAL ORDINAL FOR RECOVERY PROCESSING
QREC FIELD 3,59,0 RECOVERY REQUEST
* CDCS FUNCTION CODES.
CDIN EQU 13B INVOKE
CDNT EQU 15B NORMAL TERMINATION
CDAT EQU 17B ABNORMAL TERMINATION
* SUBSYSTEM ERROR STATUS.
SSNP EQU /COMSSCP/ES1/2 SUBSYSTEM NOT PRESENT
SSBZ EQU /COMSSCP/ES2/2 SUBSYSTEM BUSY
SSND EQU /COMSSCP/ES3/2 SUBSYSTEM NOT DEFINED
* *CDCS* ERROR CODE.
CDNF EQU 21B NON-FATAL ERROR
CDER EQU 22B FATAL ERROR
* CDCS STATUS WORD.
CDST BSSZ 1 1, IF CDCS ABORTED
* CDCS TERMINATE REQUEST PARAMETER BLOCK.
CDPA VFD 24/4LCD22,12/0,6/2,4/0,2/3,6/0,5/0,1/0
VFD 18/INDB+3,9/0,27/0,6/0
VFD 18/0,18/0,24/1
CDPB VFD 24/4LCD22,12/0,6/2,4/0,2/3,6/0,5/0,1/0
VFD 18/3LSSC,6/0,18/CDSI,18/CDPA
* *TAF* INPUT RECEIVING BUFFERS. *INRB* IS USED TO RECEIVE
* *LIBTASK* ON-LINE LIBRARY UPDATE REQUESTS.
* *CDCS* RELATED GLOBAL SYMBOLS.
CMPF BSSZ 1 MEMORY PAUSE FLAG
INRBL EQU 1+63 MAXIMUM BLOCK SIZE TO RECEIVE
INRB BSSZ INRBL INTER CONTROL POINT RECEIVING BUFFER
INRB1L EQU 31 MAXIMUM BLOCK SIZE FOR BATCH TRANSACTION
INRB1 BSSZ INRB1L BATCH TRANSACTION RECEIVING BUFFER
* *TAF* FETS.
TDI BSS 0 *TOTAL* INPUT FET
TDMIQ FILEC TDIBF,TDIBFL,FET=5
TDO BSS 0 *TOTAL* OUTPUT FET
TDMOQ FILEC TDOBF,TDOBFL,FET=5
TL BSS 0
TASKLIB RFILEB OBUF,OBUFL,FET=14,EPR TASK LIBRARY FILE
O BSS 0
OUTPUT FILEB OBUF,OBUFL,FET=14
SF BSS 0 RANDOM SCRATCH FILE
ZZZZZG3 RFILEB OBUF,OBUFL
SCR BSS 0
SCR FILEB OBUF,OBUFL,EPR,FET=14 SCRATCH FILE FOR TAPE ASSIGNMENT
SCR1 BSS 0
SCR1 FILEB OBUF,OBUFL,EPR,FET=14 SCRATCH FILE FOR TAPE ASSIGNMENT
PJRNL BSS 0
JOUR0 FILEB JBUF0,JBUFL,FET=15 FOURNAL FILE FET
RO BSS 0
KTSROLL RFILEB OBUF,OBUFL,(FET=8) TASK ROLLOUT FILE
INT BSS 0
INTRACE FILEB PBUF,PBUFL INTERNAL TRACE BUFFER FET
* THE FOLLOWING STATISTICS ARE MAINTAINED FOR TUNING PURPOSES.
STAT1 BSSZ 1 NUMBER OF TIMES A TASK WAS RELOADED
STAT2 BSSZ 1 NUMBER OF TIMES INITIAL TASK WAS RELOADED
STAT4 BSSZ 1 NUMBER OF STORAGE MOVES OF TASKS
STAT5 BSSZ 1 NUMBER OF TIMES A TASK ABORT OCCURRED
STAT6 BSSZ 1 NUMBER OF TIMES *TAF* FL WAS INCREASED
STAT9 BSSZ 1 RECALLS FOR *NAM* OUTPUT BLOCK LIMIT
STAT10 BSSZ 1 NUMBER OF TIMES NO FL FOR TASK LOAD
STAT11 BSSZ 1 NUMBER OF TIMES NO AVAILABLE SUBCP
STAT12 BSSZ 1 TIMES NO COMMUNICATION BLOCKS AVAILABLE
STAT13 BSSZ 1 NUMBER OF TASK ROLLOUT COMPLETES
STAT14 BSSZ 1 NUMBER OF ROLLOUT INITIATIONS FOR TASKS
STAT15 BSSZ 1 NUMBER OF TIMES TASK IN RECALL
STAT16 BSSZ 1 NUMBER OF ACTIVE SUBCONTROL POINTS
BSSZ 1 NUMBER OF SAMPLES
STAT17 BSSZ 1 NUMBER OF OUTSTANDING *CDCS* REQUESTS
STAT18 BSSZ 1 NUMBER OF *CDCS* REJECTS FOR *MAXR*
STAT19 BSSZ 1 NUMBER OF *CDCS* REQUESTS REJECTS FOR BUSY
STAT20 BSSZ 1 NUMBER OF *CDCS* TASK REQUESTS
* *TAF* TIMERS. THE FOLLOWING TIMERS ARE USED TO SCHEDULE
* PROCESSES IN *TAF*.
* ASSEMBLY CONSTANTS FOR TIMED LOOPS.
TMDTL EQU 100B MILLISECONDS BETWEEN TIME DEPENDENT CALL
RCLTL EQU 20B MILLISECONDS FOR TASK RECALL
SCHTL EQU 20B MILLISECONDS BETWEEN TIMED SCHEDULER RUNS
SICTL EQU 4 MINIMUM MILLISECONDS BETWEEN *SIC* CALLS
SFCTL EQU 1*1000 MILLISECONDS BETWEEN STATUS REQUESTS
* THE FOLLOWING MILLISECOND COUNTS MAY EXCEED 131,000 AND
* THEREFORE REQUIRE A FULL WORD TO CONTAIN THEIR VALUE.
TACTL CON 2*60*1000 MIILISECONDS BETWEEN ACTIVITY CHECKS
SJTTL CON 20*60*1000 MILLISECONDS BETWEEN PERIODIC JOURNALING
ITRTL CON 1500D MILLISECONDS TO IDLE BEFORE ROLLING OUT
TROTL CON 10*60*1000 MILLISECOND DURATION OF ROLLOUT
RFRTL EQU 5*1000 MILLISECONDS BETWEEN SCREEN REFRESHING
* BY TASK DRIVING *K-DISPLAY*
BTIME BSS 1 REAL TIME CLOCK AT LAST REJECTED *SIC*
CTIME CON 0 MILLISECONDS OF ACCUMULATED CPU TIME
DTIME BSS 1 REAL TIME CLOCK AT LAST DATA MANAGER CYCLE
ETIME BSS 1 REAL TIME CLOCK AT LAST TASK RELEASE
ITIME BSS 1 REAL TIME CLOCK AT LAST INPUT PROCESSING
JTIME BSS 1 REAL TIME CLOCK AT LAST PERIODIC JOURNAL
LTIME BSS 1 REAL TIME CLOCK AT START OF INNER LOOP
MTIME BSS 1 REAL TIME CLOCK AT LAST FL REDUCTION
OTIME BSS 1 REAL TIME CLOCK AT LAST 1 SECOND INTERVAL
PTIME BSS 1 REAL TIME CLOCK AT START OF PROGRAM
RTIME BSS 1 REAL TIME CLOCK AT LAST RECALL PROCESSING
STIME BSS 1 REAL TIME CLOCK AT LAST SCHEDULER RUN
TTIME BSS 1 REAL TIME CLOCK AT LAST ACTIVITY CHECK
UTIME BSS 1 REAL TIME CLOCK AT LAST CORE USAGE CHECK
* SUBCP SCHEDULING VARIABLES. *CR* INDICATES THE SUBCP-S
* THAT ARE CANDIDATES FOR EXECUTION. *RCR* INDICATES THE
* SUBCP-S THAT ARE IN RECALL. *SREG* INDICATES THE CURRENTLY
* ACTIVE SUBCP. BIT 46 OF *CR/RCR* CORRESPONDS TO SUBCP ONE,
* BIT 45 TO SUBCP TWO, AND SO ON.
CR CON 0 SUBCP CPU REQUEST WORD
CON 0 SUBCP CPU REQUEST WORD MASK
RCR CON 0 RECALL REQUEST WORD
*T SREG 24/0,18/ SA,18/ SCP
* SA - FWA OF TASK SYSTEM AREA.
* SCP - FWA OF SUBCP TABLE ENTRY FOR TASK.
SREG CON 0
* MEMORY MANAGEMENT CONTROL.
* THE FOLLOWING CONSTANTS CONTROL THE AMOUNT OF FIELD LENGTH
* INCREASE OR DECREASE AND THE TIME PERIODS
* BETWEEN FIELD LENGTH CHANGES.
RFLTL EQU 100 MILLISECONDS BEFORE INCREASE
FCMFL EQU 100B MINIMUM FL TO RETAIN
REDFL EQU 30000B MAXIMUM FL FOR ONE REDUCTION
INCFL EQU 12000B MINIMUM FL FOR ONE INCREMENT
AVAILCM CON 0 AVAILABLE CENTRAL MEMORY
CMRFL BSS 1 SUM OF CM RESIDENT INITIAL FL + NUAPL
CMRPF BSS 1 SUM OF CM RESIDENT POTENTIAL FL
CURFL BSS 1 CURRENT FIELD LENGTH
MAXTTA BSS 1 MAXIMUM SIZE OF TOTAL TASK AREA
MFL BSS 1 MAXIMUM FIELD LENGTH
MINTTA BSS 1 MINIMUM SIZE OF TOTAL TASK AREA
MINXT BSS 1 MINIMUM SIZE OF TRANSIENT TASK AREA
MRSW BSSZ 1 MEMORY REQUEST STATUS WORD
TPLW CON 0 STATUS WORD FOR OUTSTANDING PPU REQUESTS
DAYB BSSZ 5 BUFFER FOR DAYFILE MESSAGES
TSEQ CON 0 TRANSACTION SEQUENCE NUMBER
PDATE BSS 1 LATEST PACKED TIME
RSCH BSS 1 REQUEST TASK SCHEDULER
* *STIN* CONTROLS START OF COMMUNICATIONS WITH JOBS,
* SUBSYSTEMS, AND TERMINALS. IF *STIN* EQUALS ZERO,
* COMMUNICATIONS SHOULD NOT BEGIN BECAUSE RECOVERY
* PROCEDURES HAVE NOT FINISHED. IF *STIN* EQUALS 1
* COMMUNICATIONS MAY BEGIN. IF *STIN* IS LESS THAN ZERO,
* COMMUNICATIONS HAVE BEEN ENABLED.
STIN CON 0
* *TAF* USES EVENT QUEUING TO PROCESS SOME OF ITS WORK.
* THE FOLLOWING VARIABLES AND DEFINITIONS ARE USED FOR QUEUING.
*T TAFQ 12/ ,6/LSUBCP,18/LAST,6/FSUBCP,18/FIRST
*
* LSUBCP - LAST SUBCP ENTRY IN QUEUE.
* THIS IS ZERO IF NO SUBCP IS ASSOCAITED WITH *LAST*.
* LAST - FWA OF LAST ENTRY IN QUEUE.
* FSUBCP - FIRST SUBCP IN QUEUE.
* THIS IS ZERO IF NO SUBCP IS ASSOCIATED WITH *FIRST*.
* FIRST - FWA OF NEXT ENTRY IN QUEUE.
TAFQ CON 0 *TAF* QUEUE POINTERS
* EACH ENTRY IN THE QUEUE HAS THE FOLLOWING FORMAT -
*
*T 6/NSUBCP ,18/NEXT,6/TYPE,6/SUBCP,6/SHIFT,18/EVENT
* 6/ ,36/TIME,18/RETURN
*
* NSUBCP - SUBCP OF NEXT ENTRY IN QUEUE. ZERO IF NO
* SUBCP FOR *NEXT*.
* NEXT - FWA OF NEXT ENTRY IN QUEUE. THIS IS ZERO FOR
* LAST ENTRY OF QUEUE.
* TYPE - TYPE OF EVENT.
* SUBCP - SUBCP OF QUEUED EVENT. SUBCP IS ZERO IF NO
* SUBCP IS INVOLVED.
* SHIFT - SHIFT TO MOVE COMPLETE BIT TO BIT 59.
* A 1 INDICATES A COMPLETE EVENT.
* EVENT - FWA OF EVENT.
* TIME - TIME FOR EVENT TO COMPLETE IN MILLISECONDS.
* RETURN - FWA OF PROCESSOR TO CALL WHEN EVENT IS COMPLETE.
* QUEUE TYPES.
QTEV EQU 0 QUEUE TYPE IS EVENT ONLY
QTET EQU 1 QUEUE TYPE IS EVENT OR TIME.
* GLOBAL EVENT COMPLETE WORDS.
EVCB VFD 1/1,59/0 BIT 59 = 1 IF COMMUNICATIONS BLOCKS FREE
EVIT VFD 1/1,59/0 BIT 59 = 1 IF *ITASK* MAY BE SCHEDULED
SSRP BSSZ 1 SYSTEM OR USER CONTROL POINT STORAGE
SSJN BSSZ 1 *UCP* SEQUENCE NUMBER AND *FST* ORDINAL
SSUH BSSZ 1 CALLSS HEADER WORD
SSUP BSSZ 50B *UCP* PARAMETERS
SSRPL EQU *-SSRP LENGTH OF BUFFER
TAID VFD 42/3LTAF,18/TRSI TAF IDENTIFICATION
BFPT VFD 1/0,1/0,4/0,18/0,1/1,17/SSRPL,18/SSRP BUFFER POINTER
ZWORD BSSZ 1 ZERO WORD
* TASKS FOR SPECIAL PROCESSING.
TLIST BSS 0
ABAS DATA L*MSABT* ABORT PROCESSING
BTAS DATA L*BTASK* *BTRAN* RECOVERY PROCESSING
CTAS DATA L*CTASK* *CRM* RECOVERY PROCESSING
ITAS DATA L*ITASK* INITIAL INPUT PROCESSING
KTAS DATA L*KDIS* COMMAND DISPLAY PROCESSING
OTAS DATA L*OFFTASK* OFF TASK PROCESSING
RCTAS DATA L*RCTASK* RECOVER CDCS TASK
RTAS DATA L*RTASK* TERMINAL RECOVERY PROCESSING
SMTAS DATA L*STASK* SEND MESSAGE TO TERMINAL
STAS DATA L*SYSMSG* SYSTEM MESSAGE PROCESSING
CON 0 END OF LIST
QUAL$ EQU 0 PROGRAM WILL HANDLE QUAL
* THE FOLLOWING DEFINE *CALLRTN* AND ROLLOUT FILE PARAMETERS.
ROLBL EQU 6000B ROLLOUT BLOCK SIZE
NPRBL EQU ROLBL/64 NUMBER OF PRUS PER ROLLOUT BLOCK
RFOVL EQU 4*NPRBL NUMBER OF PRUS TO LEAVE ON END OF FILE
NESTL EQU 16 NEST LIMIT FOR CALL TASK WITH RETURN
RTDNL EQU 2*1000 CORE TIME SLICE ALLOWED AFTER A *CALLRTN*
RLATL EQU 5 ROLLOUT FILE ALLOCATION AREA SIZE
MINTL EQU 4 MINIMUM TIME BEFORE *WAIT* CAUSES ROLLOUT
DWITL EQU 8*60 DELAY TIME OUT FOR WAIT FOR INPUT TASKS
DMRTL EQU 2 DURATION ON DATA MANAGER REQUESTED ROLLOUT
DRLTL EQU 10 DURATION OF MEMORY ROLLOUT
DCPPR EQU 2003B DEFAULT TASK CPU PRIORITY
DTSTL EQU 16 DEFAULT NUMBER OF TIME SLICES FOR A TASK
MAXSM EQU 300000B MAXIMUM AMOUNT OF CORE TO STORAGE MOVE
NAMTP EQU 1 FLAG FOR *TAFNAM* TELE-PROCESSOR
* *SEND* REQUEST OUTPUT FLOW PARAMETERS FOR TASK ROLLING.
ROLTO EQU 40 NUMBER OF WORDS TO CAUSE ROLLOUT
DTCPS EQU 30 DIAL-UP TERMINAL CHARACTERS PER SECOND
PTCPS EQU 15 POLLED TERMINAL CHARACTERS PER SECOND
DTRTL EQU 1 DELAY IN SECONDS ADDED TO *SEND* TIME
MAXJL EQU 2500 MAXIMUM NUMBER OF WORDS TO JOURNAL
MAXBW EQU 3 MAXIMUM TASK BRANCH COUNT
MAXRA EQU 500B NUMBER OF LEGAL SYSTEM REQUESTS
MOFFC EQU 2 TRANSACTION TERMINAL MESSAGE LIGHT OFF
MONFC EQU 3 TRANSACTION TERMINAL MESSAGE LIGHT ON
LOGFC EQU 13B LOG OFF FUNCTION CODE
* FET DESCRIPTION.
FELN FIELD 0,59,18 LOCAL FILE NAME
FEAT FIELD 0,13,10 ERROR STATUS
FECO FIELD 0,8,2 REQUEST CODE
FEFT FIELD 0,1,1 FILE TYPE
FECL FIELD 0,0,0 COMPLETION FLAG
FERM FIELD 1,47,47 RANDOM ACCESS FILE FLAG
FEFR FIELD 1,17,0 FIRST
FEIN FIELD 2,17,0 IN
FEOU FIELD 3,17,0 OUT
FELI FIELD 4,17,0 LIMIT
FERR FIELD 6,28,0 RANDOM REQUEST
FEMG FIELD 7,59,59 MAGNET TAPE
FEOO FIELD 13,17,0 OLD OUT POINTER
FECR FIELD 14,28,0 CURRENT EOI RANDOM INDEX
JFETL EQU FECRW+1 LENGTH OF JOURNAL FET
* DATA MANAGER CONSTANTS.
TFEN EQU 2 LENGTH OF TOTAL FILE ENTRY IN EDT
TIMDM EQU 10 MAXIMUM TASKS USING TOTAL
TMAXDB EQU 31 MAXIMUM TOTAL DATA BASES
TMAXFIL EQU 100 MAXIMUM FILES PER TOTAL DATA BASE
*** DATA MANAGER INITIALIZATION FLAGS.
*
* IF EQUATED TO 0 LOAD CORRESPONDING DATA MANAGER.
* IF EQUATED TO 1 AND FILE IS NOT PRESENT ABORT TRANEX.
* IF EQUATED TO -1 DO NOT LOAD THE DATA MANAGER.
CDBIDF EQU 0 LOAD AAM IF *CDBID* PRESENT
TDBIDF EQU 0 LOAD TOTAL IF TDBID PRESENT
* TLD RELATED CONSTANTS USED BY *TAF*.
*
* MAXAQ = MAXIMUM NUMBER OF ACTIVE COPIES OF A TASK WITH THE
* Q-ATTRIBUTE SPECIFIED.
MAXAQ EQU 7
TLTANM DECMIC TLTAN
DEVT VFD 48/0,12/0L"DTYM" DEFAULT DEVICE TYPE
* TASK DUMP DEFAULTS.
DFWA EQU 0 DEFAULT FWA OF TASK DUMP
DFWAM OCTMIC DFWA
DLWA EQU 100000B DEFAULT LWA OF TASK DUMP
DLWAM OCTMIC DLWA
DEXP EQU 1 DEFAULT EXCHANGE PACKAGE DUMP
DEXPM OCTMIC DEXP
DDMB EQU 0 DEFAULT DATA MANAGER BUFFER DUMP
DDMBM OCTMIC DDMB
DORT EQU 0 DEFAULT ORIGIN TYPE FOR TASK
DORTM MICRO 1,2,/BC/
DORC EQU BCOT DEFAULT ORIGIN CODE
DQDS EQU 0 DEFAULT QUEUE DESTINATION VALUE
DQDSM OCTMIC DQDS PRINTER ID
DSMNFL EQU 12 MINIMUM *DSDUMP* FL
DSQID EQU 0 DEFAULT *SUBMT* OUTPUT QUEUE ID
DTSE VFD 1/1,1/DEXP,1/DDMB,1/0,1/0,7/0,18/DLWA,12/0,18/DFWA
VFD 42/0,1/1,1/0,1/0,3/DORC,12/DORT
DTSG BSS 1 DUMP CALLED FROM ADDRESS
* TRANSACTION FACILITY DUMP DEFAULTS.
GTDL VFD 1/0,59/0 GLOBAL TASK DUMP FLAG AND LIMIT
DRID EQU 0 PRINTER ID FOR *K.DUMP* ROUTE
SPACE 4,10
* *DSP* FLAG BIT EQUIVALENCES.
FRTI EQU 4 *TID* OR FM/UN
FRDC EQU 20B DISPOSITION CODE
FRER EQU 10000B RETURN ERROR CODE
* *DSP* ERROR CODES FOR THE *SUBMT* REQUEST.
JBCE EQU 32B JOB STATEMENT ERROR
USCE EQU 34B INCORRECT USER STATEMENT
TDSP SPACE 4,10
** *DSP* PARAMETER BLOCK FOR KTSDMP JOBS (TASK ABORT/DUMP),
* *K.DUMP*, *SUBMT*, AND *ROUTE* REQUESTS.
* THE FIRST WORD IS USED AS AN INTERLOCK TO PREVENT
* SIMULTANEOUS REQUESTS.
TDSP CON 0 FILE NAME / INTERLOCK
VFD 12/,12/,12/0LNO,6/,18/FRER+FRDC+FRTI
VFD 36/,24/DSQID
BSSZ 4
SPACE 4,10
* TAF ERROR CODES FOR THE *ROUTE* REQUEST.
EC100 EQU 100D FWA OF DATA NOT SPECIFIED
EC101 EQU 101D LENGTH PARAMETER IN ERROR
EC102 EQU 102D STATUS RETURN ADDRESS NOT SPECIFIED
EC103 EQU 103D INCORRECT *DSP* PARAMETER
EC104 EQU 104D PARAMETER VALUE REQUIRED
EC105 EQU 105D FORMS CODE SPECIFIED ON INPUT DISPOSITION
EC106 EQU 106D DEFERRED ROUTING NOT ALLOWED
EC107 EQU 107D INCORRECT EXTERNAL CHARACTERISTIC
EC108 EQU 108D INCORRECT *DEF* PARAMETER
EC109 EQU 109D INCORRECT OUTPUT MAINFRAME LOGICAL ID
EC110 EQU 110D INCORRECT FORMS CODE
EC111 EQU 111D *TID* AND *FM/UN* CONFLICT
EC112 EQU 112D *TID/FM/UN* AND *ID* CONFLICT
EC113 EQU 113D INCORRECT INTERNAL CHARACTERISTIC
EC114 EQU 114D INCORRECT LOCAL DEVICE ID
EC115 EQU 115D JSN NOT ALLOWED
EC116 EQU 116D INCORRECT JSN VALUE
EC117 EQU 117D JOB NOT SYSTEM ORIGIN
EC118 EQU 118D INCORRECT ORIGIN TYPE
EC119 EQU 119D INCORRECT PRINT TRAIN IMAGE
EC120 EQU 120D INCORRECT REPEAT COUNT
EC121 EQU 121D INCORRECT SPACING CODE
EC122 EQU 122D INCORRECT DESTINATION LOGICAL ID
EC123 EQU 123D INCORRECT SERVICE CLASS
TROU SPACE 4,10
** TROU - *DSP* PARAMETER BLOCK FOR THE *ROUTE* REQUEST.
*
*T W0 42/ FILE NAME,6/ E,1/ F,4/ ,6/ OT,1/ C
*T, W1 12/ ,12/ FC,12/ DC,3/ EC,1/ S,2/ IC,18/ FLAGS
*T, W2 18/ SLID,18/ DLID,24/ TID
*T, W3 42/ UJN,18/ JP
*T, W4 2/ 0,1/ P,3/ PI,6/ SC,12/ SCL,12/ AC,7/ ,5/ RC,12/
*T, W5 60/
*T, W6 60/
*
* E - ERROR RETURN CODE.
* F - FORCE ORIGIN TYPE FLAG.
* OT - DESIRED ORIGIN TYPE.
* C - COMPLETION BIT.
* FC - FORMS CODE.
* DC - DISPOSITION CODE.
* EC - EXTERNAL CHARACTERISTIC.
* S - FORCED SERVICE CLASS FLAG.
* IC - INTERNAL CHARACTERISTIC.
* FLAGS - SEE *DSP* DECK.
* SLID - LOGICAL IDENTIFIER OF THE SOURCE MAINFRAME FOR THE
* FILE.
* DLID - LOGICAL IDENTIFIER OF THE DESTINATION MAINFRAME FOR
* THE FILE.
* TID - COMPLEMENT OF THE ADDRESS OF THE *FAMILY NAME - USER
* NAME* TWO-WORD BLOCK. CONTAINS 77777777B IF TO USE THE
* FAMILY AND USER NAME OF THE CALLING JOB.
* JP - JOB PRIORITY.
* P - PRINT IMAGE FLAG (INDICATES PRINT IMAGE CODE PRESENT).
* PI - PRINT IMAGE CODE (0-7) IF PRINT IMAGE FLAG SET.
* SC - SPACING CODE.
* SCL - SERVICE CLASS.
* AC - ABORT CODE.
* RC - REPEAT COUNT.
TROU EQU TDSP USE THE *SUBMT* *DSP* PARAMETER BLOCK
TFUN SPACE 4,10
** TFUN - *DSP* FAMILY NAME AND USER NAME TABLE.
*
*T W0 42/ FAMILY NAME,18/
*T, W1 42/ USER NAME,18/
TFUN BSSZ 2 FAMILY NAME - USER NAME
SPACE 4,10
* *DSP* INTERNAL FLAGS.
PTID CON 0 *TID* PROCESSED
PFUN CON 0 FAMILY NAME AND USER NAME PROCESSED
PDID CON 0 DEVICE ID PROCESSED
PDEF CON 0 *DEF* PROCESSED
PJSN CON 0 JSN PROCESSED
PUJN CON 0 UJN PROCESSED
PDCT CON 0 DISPOSITION CODE TYPE
PECT CON 0 EXTERNAL CHARACTERISTIC TYPE
PJOT CON 0 JOB ORIGIN
LIST X
*CALL COMTDSP
LIST -X
KOPTS SPACE 4,10
HDRL EQU 7 LENGTH OF EDT HEADER
IFL= EQU 200000B TAF INITIALIZATION FWA
AFWA EQU VLOCL2 FWA FOR *AIP*
ALWA EQU IFL=-1 LWA FOR LOADU AREA
ECSXFR EQU 1000B EXTENDED MEMORY BLOCK TRANSFER
MAXR EQU /COMSSCP/MAXR MAXIMUM OUTSTANDING SSC REQUESTS
SPACE 4,10
** ASSEMBLY TIME ERROR CHECKS.
ERRNG 1S"TLTANM"-1-MAXAQ VALUE MUST BE .LE. 2**TLTAN-1
ERRNG MAXAQ-1 VALUE MUST BE .GE. 1
ERRNZ VSIW-/COMSSCP/SSIW *VSIW* MUST EQUAL *SSIW*
ERRNZ VSCR-/COMSSCP/SSCR *VSCR* MUST EQUAL *SSCR*
ERRNZ VLWP-LWPR MEMORY MANAGEMENT NOT LOCATED AT *LWPR*
ERRNZ VHHA-104B *CMM* HIGHEST ADDRESS NOT AT 104B
ERRNG MAXMFL-SCMFL SCMFL MUST BE .LE. MAXMFL
ERRNG DLWA-DFWA-DSMNFL NUMBER OF WORDS TO BE DUMPED TOO FEW
ERRNG DSMNFL-12 MINIMUM *DSDUMP* FL IS 12
VERM DATA C*VERSION "VERT".*
TMDC TITLE TIME DEPENDENT ROUTINE CONTROL.
** TMDC CHECK ELAPSED TIME SINCE PROCESSING FOR ALL TRANEX
* TIME DEPENDENT ROUTINES. IF THE TIME LIMIT FOR A
* ROUTINE HAS BEEN EXCEEDED, CALL THAT ROUTINE.
TMDC RTIME ITIME UPDATE CURRENT TIMD LOOP TIME
SA1 VSCR
NG X1,CSI IF SUBSYSTEM MESSAGE RECEIVED
SA4 INRB CHECK TRANSACTION INPUT
ZR X4,TMDC1 IF NO TRANSACTION INPUT
RJ PRIN PROCESS TRANSACTION INPUT
TMDC1 RJ NGL PROCESS TRANSACTION INPUT
TMDC2 SX7 SCHTL SCHEDULER TIME SPAN
SA3 STIME LAST SCHEDULER RUN
MX2 -36
SA4 ITIME CURRENT TIME
IX1 X4-X3
BX6 -X2*X1 MILLISECONDS SINCE LAST SCHEDULER RUN
IX3 X7-X6
PL X3,TMDC3 IF NOT TIME FOR SCHEDULER
BX7 X4
SA7 A3 NEW SCHEDULER TIME
RJ SCHD RUN SCHEDULER
TMDC3 SX7 RCLTL TASK RECALL TIME SPAN
SA3 RTIME LAST RECALL PROCESSING TIME
MX2 -36
SA4 ITIME CURRENT TIME
IX1 X4-X3
BX6 -X2*X1 MILLISECONDS SINCE LAST RECALL PROCESSING
IX3 X7-X6
PL X3,TMDC5 IF NOT TIME FOR PROCESSING RECALL
BX7 X4
SA1 RCR RECALL REQUEST WORD
SA7 A3 SET NEW RECALL TIME
ZR X1,TMDC5 IF NO TASK IN RECALL
SA2 CR CPU REQUEST WORD
SX6 B0
BX7 X1+X2 SET CPU REQUEST BIT FOR RECALLED TASKS
SA6 A1 ZERO OUT RECALL REQUEST WORD
SA7 A2
TMDC4 NZ X2,TMDC5 IF CPU CURRENTLY IN DEMAND
SA1 CR
MX0 1 CIRCUMVENT *DCPT* TRAP CHECK
LX0 -12
BX7 X1+X0 SET CPU REQUEST BIT
SA7 A1
TB7 -CPAL,VCPA
RJ DCPT FORCE CPU TASK SELECTION
EQ TSSC TIME SLICE SUBCP
* ONE SECOND INTERVAL TIME CHECKS.
TMDC5 SX7 1000 ONE SECOND
SA3 OTIME LAST ONE SECOND INTERVAL TIME
SA4 ITIME CURRENT TIME
MX2 -36
IX3 X4-X3
BX3 -X2*X3 MILLISECONDS SINCE LAST ONE SECOND CHECKS
IX3 X7-X3
PL X3,TMDC10 IF ONE SECOND NOT ELAPSED
BX7 X4
SA7 A3
* IF COMMUNICATIONS MAY BE ENABLED AFTER RECOVERY PROCEDURES,
* ENABLE *SIC* TRANSFERS, TERMINAL COMMUNICATIONS, AND
* SYSTEM CONTROL POINT TRANSFERS.
SA1 STIN START INPUT STATUS
NG X1,TMDC5.2 IF INPUT ENABLED
ZR X1,TMDC5.2 IF INPUT MAY NOT BE ENABLED
MX7 1 SET INPUT ENABLED
SA7 A1
SA2 TMDCC
NZ X2,TMDC5.2 IF *SIC* AND *SCP* ENABLED
SX7 B1
SA7 A2
SETICC TDMCD ENABLE *SIC* TRANSFERS
RJ NON ENABLE TERMINAL COMMUNICATIONS
SA1 BFPT MESSAGE POINTER
SA2 TAID ENABLE *SCP* COMMUNICATIONS
BX6 X1
BX7 X2
SA6 VSCR
SA7 VSIW
CALLSS 0,TMDCB INITIALIZE TAF AS A *SCP*
TMDC5.2 SA1 CR GET NUMBER OF ACTIVE SUBCP
SA2 RCR
CX3 X1
CX4 X2 NUMBER OF SUBCP IN RECALL
IX5 X3+X4
SX7 B1
ZR B2,TMDC5.3 IF NO ACTIVE SUBCP
IX5 X5+X7
TMDC5.3 SA1 STAT16 TOTAL ACTIVE TASKS
IX6 X1+X5
SA2 A1+B1
IX7 X2+X7 UPDATE NUMBER OF SAMPLE
SA6 A1
SA7 A2
SA1 STAT17 GET TOTAL NUMBER OF OUTSTAND *SSC* REQUEST
SA2 SSCC GET OUTSTANDING REQUEST COUNT
IX7 X1+X2
SA7 A1 UPDATE NUMBER OF OUTSTANDING *SSC* REQUEST
RJ KDIS UPDATE K-DISPLAY
RJ SRL CHECK ROLLOUT TABLE FOR TIMED OUT ENTRIES
RJ AIQ AGE INPUT QUEUE PRIORITIES
RJ CCS CHECK CDCS STATUS
SX7 CORTL CORE USAGE CHECK TIME
SA3 UTIME LAST CORE USAGE CHECK
SA4 ITIME CURRENT TIME
MX2 -36
IX1 X4-X3
BX6 -X2*X1 MILLISECONDS SINCE LAST CHECK
IX3 X7-X6
PL X3,TMDC7 IF NOT TIME FOR CORE USAGE CHECK
BX7 X4
SA7 A3 SET NEW CHECK TIME
RJ CORU CHECK CORE USAGE
TMDC7 SA2 TACTL ITASK ACTIVATION TIME CHECK
SA3 TTIME LAST ACTIVATION CHECK TIME
SA4 ITIME CURRENT TIME
MX7 -36
IX1 X4-X3
BX6 -X7*X1 MILLISECONDS SINCE LAST CHECK
IX3 X2-X6
PL X3,TMDC8 IF NOT TIME FOR INITIAL TASK CALL
BX7 X4
SA7 A3 SET NEW ACTIVATION CHECK TIME
SA4 ITAS INITIAL TASKS NAME
SX5 CIACT ITASK ACTIVATION CODE
SB3 B0 NO BUFFER INPUT
SX7 B0 SCHEDULE ONLY FROM SYSTEM LIBRARY
RJ TRN GENERATE A SYSTEM ORIGIN TRANSACTION
NZ X0,TMDC8 IF TRANSACTION SCHEDULED
SX7 B0+ RETRY NEXT PASS THROUGH LOOP
SA7 TTIME
TMDC8 SA2 SJTTL STATISTIC JOURNAL TIME
SA3 JTIME LAST JOURNAL TIME
SA4 ITIME CURRENT TIME
MX7 -36
IX1 X4-X3
BX6 -X7*X1 MILLISECONDS SINCE LAST JOURNAL
IX3 X2-X6
PL X3,TMDC9 IF NOT TIME FOR JOURNAL
BX7 X4
SA7 A3 SET NEW JOURNAL TIME
RJ JSTS WRITE STATISTICS TO JOURNAL FILE
TMDC9 SA1 B0 CHECK RA+0
LX1 59-15
PL X1,TMDC10 IF NO IDLE DOWN
BX6 X6-X6 CLEAR RA+0
SA6 B0
RJ IDL SET IDLE DOWN FLAG
TMDC10 NZ B7,TMDC11 IF AT LEAST ONE SUBCP ACTIVE
RECALL ** GIVE UP CP **
EQ TSSC TIME SLICE SUB CPS
TMDC11 SA1 CR ADVANCE CPU SWITCHING MASK
SA2 A1+B1
MX7 13
TX3 B7+CPAL,-VCPA EXTEND MASK TO ACTIVE SUB CP
BX2 -X2*X1
AX3 SCPAL
ZR X2,TMDC12 IF MASK EXTENDS TO HIGHEST ACTIVE SUBCP
SB3 X3
AX7 X7,B3
TMDC12 SA7 A2 SET NEW MASK
BX2 X2-X2
EQ TMDC4 FORCE RESELECTION OF SUBCP
TMDCB BSSZ 1 PARAMETER ADDRESS FOR INITIAL *CALLSS*
TMDCC BSSZ 1 1 IF *BTASK* SCHEDULED ONCE
TDMCD BSS 0 *SIC* CALL BUFFER POINTERS
VFD 12/0,6/INRBL-1,18/INRB,6/INRB1L-1,18/INRB1
VFD 12/0,6/0,18/0,6/0,18/0
CCS SPACE 4,20
** CCS - CHECK CDCS STATUS.
*
* ENTRY (CDST) = 0, IF NORMAL CONDITION.
* 1, IF CDCS ABORTED.
* -1, IF CDCS TERMINATE REQUEST NOT COMPLETED.
* 2, IF *RCTASK* NOT SCHEDULED.
*
* EXIT (CDST) UPDATED ACCORDINGLY.
*
* USES X - 1, 2, 3, 4, 5, 6, 7.
* A - 1, 2, 3, 4, 7.
* B - 3.
*
* CALLS SYS=, TRN, TRO.
CCS SUBR ENTRY/EXIT
SA1 CDST
SB3 X1+
ZR X1,CCSX IF NORMAL - RETURN
NG X1,CCS2 IF TERMINATE REQUEST ISSUED
GT B3,B1,CCS3 IF *RCTASK* NOT SCHEDULED
* ISSUE FAKE CDCS TERMINATE REQUEST.
* THIS IS USED ONLY TO DETERMINE CDCS-STATUS.
CCS1 SA2 CDPB
BX7 X2
SA3 A2+B1 FWA OF CDCS REQUEST WORD
SA7 CDPA FWA OF REQUEST WORD
BX6 X3
SX7 -B1 INDICATE CDCS REQUEST ISSUED
SA7 CDST
RJ SYS= ISSUE CDCS REQUEST
* CHECK RETURN STATUS.
CCS2 SA2 CDPA FWA OF REQUEST
LX2 59-CDCBS
SX7 B1 INDICATE CDCS ABORTED
PL X2,CCSX IF REQUEST NOT COMPLETE
SA7 CDST
MX0 -CDSFN GET ERROR CODE
LX2 CDSFN-1-CDSFS-59+CDCBS
SX3 SSNP CDCS NOT AVAILABLE
BX7 -X0*X2
IX4 X7-X3
PL X4,CCSX IF CDCS NOT AVAILABLE
* WHEN CDCS IS UP, SCHEDULE *RCTASK*.
CCS3 SA1 TROA TAF ROLLOUT STATUS
ZR X1,CCS4 IF TAF IS ROLLED IN
RJ TRI ROLL TAF IN
CCS4 BX5 X5-X5
SB3 B0
SA4 RCTAS *RCTASK*
SX7 B0
RJ TRN SCHEDULE *RCTASK*
SX7 B1+B1
ZR X0,CCS5 IF *RCTASK* NOT SCHEDULED
BX7 X7-X7
CCS5 SA7 CDST
EQ CCSX RETURN
CSI SPACE 4,15
** CSI - CONTROL SUBSYSTEM INTERFACE.
*
* ENTRY (SSRP) = SUBSYSTEM REQUEST BUFFER.
* (TROA) = 0, IF *TAF* NOT ROLLED OUT.
*
* EXIT TO *PBC*, IF BATCH/CRM REQUEST.
* TO *PBT*, IF BATCH TRANSACTION REQUEST.
* TO *PBE*, IF INCORRECT BATCH REQUEST.
* TO *TSSC*, IF SYSTEM GENERATED MESSAGE.
*
* USES X - 0, 1, 2, 3, 4, 5, 6.
* A - 1, 2, 3, 6.
* B - 3, 4.
*
* CALLS BJT, RAC, RAN, TRI.
CSI SA3 TROA
ZR X3,CSI1 IF *TAF* NOT ROLLED OUT
RJ TRI ROLL *TAF* IN
RTIME ITIME UPDATE CURRENT TIME
CSI1 MX0 -6
SA2 SSRP
LX2 5-23 RIGHT JUSTIFY STATUS FIELD
BX4 -X0*X2
SA1 SSJN FETCH QUEUE PRIORITY FOR SUBSYSTEM ABORT
NZ X4,CSI2 IF NOT A *UCP* REQUEST
SA2 SSUH FIRST WORD OF *UCP* PARAMETERS
LX2 5-23 RIGHT JUSTIFY WORD COUNT
SA1 SSUP SECOND WORD OF *UCP* PARAMETERS
UX1 B3 GET FUNCTION CODE
SX5 JSFC ERROR RETURN CODE
SB4 CSIB NUMBER OF LEGAL FUNCTIONS
GT B3,B4,PBE IF INCORRECT FUNCTION CODE
SA1 B3+CSIA
SB4 X1 REQUEST PROCESSOR ADDRESS
BX2 -X0*X2 NUMBER OF PARAMETER WORDS PASSED
AX1 18 EXPECTED WORD COUNT
BX1 X1-X2
NZ X1,PBE IF ERROR IN WORD COUNT
JP B4 BRANCH TO REQUEST PROCESSOR
CSI2 SX3 X4-4
ZR X3,CSI3 IF A SUBSYSTEM ABORT MESSAGE
RJ BJT PROCESS BATCH JOB TEMINATION
EQ CSI5 GO ACKNOWLEDGE REQUEST
CSI3 SX2 X1-CDSI
NZ X2,CSI4 IF NOT *CDCS* ABORT
RJ RAC RECOVER FROM ABORT OF *CDCS*
SX2 X1-NMSI
EQ CSI5 ACKNOWLEDGE REQUEST
CSI4 SX2 X1-NMSI
NZ X2,CSI5 IF NOT *NAM* ABORT
RJ RAN RECOVER FROM ABORT OF *NAM*
CSI5 SA1 BFPT
BX6 X1
SA6 VSCR ACKNOWLEDGE REQUEST
EQ TSSC EXIT TO TASK TIME SLICING
CSIA BSS 0 BATCH REQUEST JUMP TABLE
VFD 36/0,6/BCWC,18/PBC FC=0 - BATCH/CRM REQUEST
VFD 36/0,6/BTWC,18/PBT FC=1 - BATCH TRANSACTION
CSIB EQU *-CSIA-1
EXIT SPACE 4,10
** EXIT - PROGRAM STOP.
*
* *TAF* HAS SEVERAL PLACES WHERE IT CAN DETECT AN INTERNAL
* SOFTWARE ERROR OF FATAL PORPORTIONS. IF THIS HAPPENS,
* *TAF* BRANCHES TO *EXIT*.
EXIT SUBR ENTRY
PS PROGRAM STOP
EXI SPACE 4,15
** EXI - REPRIEVE PROCESSOR.
*
*
* ENTRY (TROA) = *TAF* ROLL STATUS.
* (EXIA) = REPRIEVE PARAMETER BLOCK.
*
* EXIT ABORT, IF INTERNAL ERROR OR OPERATOR DROP.
* TERMINATE, IF OPERATOR IDLE DOWN.
*
* CALLS LOVL, NOF, TRI.
*
* MACROS ABORT, ENDRUN, MESSAGE, REPRIEVE.
EXI BSS 0 ENTRY POINT FOR *REPRIEVE*
SA1 EXIT
NZ X1,EXI3 IF TAF INTERNAL ERROR
SA1 TROA *TAF* ROLLOUT STATUS
ZR X1,EXI1 IF *TAF* IS ROLLED IN
RJ TRI ROLL *TAF* IN
EXI1 SA1 CURFL RESET CURRENT FL
SETRFL X1
SA1 EXIA+7
MX0 -12
BX3 -X0*X1 ERROR CODE
SX5 X3-ORET
ZR X5,EXI4 IF OVERRIDE ERROR CONDITION
EXI2 SYSTEM DMD,R DUMP EXCHANGE PACKAGE TO OUTPUT
ONSW 10B SET SENSE SWITCH 4 FOR TAF RESTART
RJ NOF NETOFF
REPRIEVE EXIA,RESET,77B
* TAF DETECTED AN INTERNAL ERROR.
EXI3 SA1 CURFL RESET CURRENT FL
SETRFL X1
MESSAGE EXIB * TAF INTERNAL ERROR.*
EQ EXI2 ABORT
* OPERATOR OVERRIDE
EXI4 MESSAGE EXIC * OPERATOR OVERRIDE.*
ENDRUN TERMINATE
EXIA VFD 36/0,12/25,2/0,9/1,1/0 REPRIEVE PARAMETER BLOCK
VFD 30/0,30/EXI
BSSZ 23
EXIB DATA C* TAF INTERNAL ERROR.*
EXIC DATA C* OPERATOR OVERRIDE.*
PRIN TITLE PROCESS TRANSACTION INPUT.
** PRIN PRIN TRANSFERS TRANSACTION INPUT FROM THE RECEIVING
* BUFFER TO COMMUNICATION BLOCKS, AND QUEUES THEM UP
* FOR INITIAL TASK TO PROCESS.
*
* ENTRY (A4) = ADDRESS OF INPUT BUFFER.
* (X0) = COMMUNICATION BLOCK ADDRESS, IF IN *NAM* MODE.
*
* EXIT (X0) = 0, IF INPUT NOT PROCESSED.
* = COMMUNICATION BLOCK ADDRESS, OTHERWISE.
* (PRINA) = COMMUNICATION BLOCK ADDRESS, IF *ITASK* BUSY.
* = NEGATIVE, IF COMMUNICATION BLOCK OVERFLOW.
*
* USES A - 1, 2, 3, 4, 6, 7.
* B - 3, 5, 6.
* X - ALL.
*
* CALLS RCPT, RDCB, TRI.
PRIN SUBR ENTRY/EXIT
SA4 A4
LX4 59-55
NG X4,PRIN3 IF COMMUNICATE WITH NAM
SX5 B0 CLEAR PRIOR OVERFLOW FLAG
BX6 X6-X6
SA2 PRINA CHECK FOR PRIOR UNPROCESSED INPUT
SA3 TROA ROLL STATUS
NZ X2,PRIN6 IF AN OVERFLOW CONDITION EXISTS
PRIN1 ZR X4,PRINX IF NO INPUT TO PROCESS
ZR X3,PRIN2 IF NOT ROLLED OUT
RJ TRI ROLLIN TRANEX
PRIN2 SA4 A4+
PL X4,CSM IF COMMAND/STATUS
RJ RDCB TRANSFER DATA TO A COMMUNICATION BLOCK
NG X0,PRIN IF INPUT WAS FOR INTERACTIVE TASK
NZ X0,PRIN3 IF COMMUNICATION BLOCK AVAILABLE
SX6 400000B
SA6 PRINA SET C.B. OVERFLOW FLAG
EQ PRINX RETURN
* SET UP TRANSACTION TO BE PROCESSED BT INTIAL TASK.
PRIN2.1 ZR X3,PRIN3 IF NOT ROLLED OUT
RJ TRI ROLL IN *TAF*
PRIN3 TA1 CPAHL,VCPA INITIAL TASK C. B. CONTROL WORD
SB6 A1+CPACL-1 END OF COMMUNICATION BLOCKS FOR TASK
PRIN4 ZR X1,PRIN5 IF CONTROL WORD OPEN
SB5 A1
SA1 A1+B1
NE B5,B6,PRIN4 IF NOT END OF CONTROL WORDS
SX7 X0 COMMUNICATION BLOCK ADDRESS
BX0 X0-X0
SX6 B0+ INDICATE *ITASK* BUSY EVENT
SA7 PRINA SET OVERFLOW FLAG - NOTE IT IS C.B. ADDR
SA6 EVIT INDICATE *ITASK* BUSY EVENT
EQ PRINX RETURN - ITASK BUSY
PRIN5 MX2 1
TA4 1,VCPA CONTROL POINT WORD
MX3 1
SX0 X0 COMMUNICATION BLOCK ADDRESS
LX2 -5 INITIAL LOAD BIT
BX2 X2+X3 SET WAITING FOR CPU BIT
LX3 1+36
BX7 X2+X0
SA7 A1 SET ENTRY FOR INITIAL TASK
IX6 X4+X3 INCREMENT COMMUNICATION BLOCK COUNT
SB6 A4-B1
SB3 X4
SA6 A4
NZ B3,PRINX IF *ITASK* ACTIVE - RETURN
SA4 VFSCP FWA OF SUB-CONTROL POINTS
SB3 PRIN RETURN ADDRESS AFTER REQUESTING CPU
AX4 24
EQ RCPT REQUEST CPU FOR INITIAL TASK
* PROCESS INPUT OVERFLOW CONDITIONS.
PRIN6 SA6 A2 CLEAR OVERFLOW INDICATOR
BX0 X2
PL X2,PRIN2.1 IF OVERFLOW DUE TO A BUSY ITASK
SX5 B1 SET PRIOR OVERFLOW FLAG
EQ PRIN1
PRINA CON 0 INPUT OVERFLOW FLAG
TITLE CORE RESIDENT ROUTINES.
RAC SPACE 4,10
** RAC - RECOVER FROM ABORT OF *CDCS*.
*
* *RAC* WILL ABORT THOSE TASKS WAITING FOR THE COMPLETION
* OF A *CDCS* REQUEST.
*
* ENTRY (VCPA) = FWA OF SUBCP TABLE.
*
* EXIT (CDST) = 1.
* CDCS ABORT FLAG SET IN SCP TABLE OR ROLLOUT TABLE
* IF TERMINAL WAS WAITING FOR CDCS RESPONSE OR CONNECTED
* TO CDCS AND ROLLED OUT, RESPECTIVELY.
*
* USES X - ALL.
* A - 2, 4, 5, 7.
* B - 5.
*
* CALLS SRO, SSM.
*
* MACRO MESSAGE.
RAC5 RJ SSM SUBSYSTEM MESSAGE
RAC SUBR ENTRY/EXIT
SX7 B1+
SA7 CDST INDICATE CDCS IS ABORTED
MESSAGE RACA * CDCS ABORT.*
MX0 -18
SB5 B0
TA2 0,VCPA FIRST SUBCONTROL POINT TABLE ENTRY
MX3 1 SET CDCS ABORTED FLAG
LX3 SCCDS-59
SX6 SSC5
RAC2 BX4 X2
SA5 A2+B1
SA2 A5+B1 NEXT SUBCONTROL POINT TABLE ENTRY
LX5 59-SCRCS
PL X5,RAC3 IF TASK NOT IN RECALL STATUS
SA4 X4-NUAPL+RCL GET RETURN ADDRESS
BX1 -X0*X4
IX7 X1-X6
NZ X7,RAC3 IF NOT WAITING FOR *CDCS* RESPONSE
LX5 59-59-59+SCRCS
BX7 X3+X5 SET CDCS ABORTED FLAG
SA7 A5
RAC3 SX7 X2 NEXT SUBCONTROL POINT TABLE ENTRY
SA2 X2
NZ X7,RAC2 IF MORE SUBCP TO SEARCH
RAC4 RJ SRO SEARCH ROLLOUT TABLE
ZR B5,RAC5 IF ROLLOUT TABLE SEARCH COMPLETED
SA2 B5+2 GET WORD 2 OF ROLLOUT TABLE
BX3 X2
LX2 59-RTCDS
PL X2,RAC4 IF TASK IS NOT CONNECTED TO *CDCS*
MX7 1 SET ABORT FLAG
LX7 RTABS-59
BX7 X3+X7
SA7 A2
EQ RAC4 CONTINUE TO SEARCH THE ROLLOUT TABLE
RACA DATA C* ABORT OF CDCS DETECTED.*
RSP SPACE 4,15
** RSP - RESTORE SUBCONTROL POINT REGISTERS.
*
* ENTRY (SREG) = 24/0,18/SA,18/SCP
* SA = FWA OF ACTIVE TASK SYSTEM AREA.
* SCP = FWA OF ACTIVE TASK SUBCONTROL POINT TABLE.
*
* EXIT (B2) = FWA OF ACTIVE TASK SYSTEM AREA.
* (B7) = FWA OF ACTIVE TASK SUBCONTROL POINT TABLE.
*
* USES A - 1.
* B - 2, 7.
* X - 1.
RSP SUBR ENTRY/EXIT
SA1 SREG FWA OF TASK SYSTEM AREA AND SUBCP
SB7 X1
AX1 18
SB2 X1
EQ RSPX RETURN
SRO SPACE 4,15
** SRO - SEARCH ROLLOUT TABLE.
*
* ENTRY (B5) = 0 IF INITIAL CALL.
* A1/X1/B3/B6 = LAST EXIT VALUES IF NOT INITIAL CALL.
*
* EXIT (B5) = ADDRESS OF RESERVED ROLLOUT TABLE ENTRY.
* (B5) = 0 IF NO MORE RESERVED ENTRIES.
* (B6) = CURRENT SEARCH POSITION.
* (B3) = WORD OVERFLOW COUNTER.
* (A1/X1) = CURRENT ROLLOUT TABLE WORD BEING SEARCHED.
*
* USES A - 1.
* B - 3, 5, 6.
* X - 1, 2, 7.
SRO SUBR ENTRY/EXIT
MX7 1
NZ B5,SRO1 IF NOT INITIAL CALL
SB3 B0
SA1 TROM ROLLOUT TABLE MAP ALLOCATION
SB6 B1
BX1 X1+X7 SEARCHING FOR ZERO BITS
SRO1 NX1,B5 X1
SB6 B6+B5 ADVANCE POSITION
SB5 B6-NROL-1
NZ X1,SRO2 IF NOT AT END OF WORD
SA1 A1+1
SB3 B3+47
SB6 B3+B1
BX1 X1+X7
EQ SRO1 CONTINUE WITH NEXT WORD
SRO2 ZR B5,SROX IF END OF SEARCH
LX7 -12
BX1 X1+X7
SX7 TROLE LENGTH OF ROLLOUT TABLE ENTRY
SX2 B6
IX2 X2*X7
SB5 X2-TROLE+TROL FWA OF ROLLOUT TABLE ENTRY
EQ SROX RETURN
TITLE ROLLIN AND ROLLOUT ROUTINES.
TRO SPACE 4,20
** TRO - ROLLOUT.
*
* WHEN NO TRANSACTIONS ARE IN PROCESS OR HAVE
* BEEN RECEIVED FOR N MILLESECONDS, THE TRANSACTION
* SUBSYSTEM ROLLS MOST OF ITS FIELD LENGTH
* TO A FILE, REDUCES ITS FIELD LENGTH,
* AND IDLES UNTIL A TRANSACTION OR A K-DISPLAY COMMAND
* IS RECEIVED.
*
* EXIT TO *TMDC*.
*
* USES X - 1, 2, 3, 4, 5, 6, 7.
* A - 1, 3, 4, 5, 6, 7.
* B - 5.
*
* CALLS NGL, PBT, PRIN, SRO, TRI.
*
* MACROS CONSOLE, MEMORY, MESSAGE, RECALL, REWIND, RTIME,
* WRITER.
TRO SX7 0
SA1 VTST O-DISPLAY CONTROL WORD
SA7 A1 SET O-DISPLAY INACTIVE
BX6 X1
SA6 TROD SAVE TST ADDRESS POINTERS
SA1 TROB+1 FIRST
SX7 X1
SA7 A1+B1 IN
SA7 A7+B1 OUT
SX7 X7+100B
SA7 A7+B1 LIMIT
REWIND TROB,R REWIND ROLLOUT FILE
SX6 TRFL IDLE FIELD LENGTH
SA1 CURFL CURRENT FIELD LENGTH
LX6 30
BX7 X1
SA7 TROB+4 LIMIT
SA6 TROC
SX7 X7-1
SA7 TROB+2 IN
WRITER TROB,R WRITE OUT FILED LENGTH TO DISK
CONSOLE KIDL SWITCH TO IDLE K DISPLAY
MEMORY CM,MRSW,R,TRFL REDUCE FL
RTIME TROA REAL TIME CLOCK AT START OF ROLLOUT
MESSAGE TROE,1 * TAF IDLE.*
MESSAGE ZWORD,2
* IDLE UNTIL INPUT IS AVAILABLE.
TRO2 SA1 TROA
ZR X1,TMDC RESUME NORMAL PROCESSING
RECALL
SA1 B0 CHECK RA+0
LX1 59-15
PL X1,TRO2.1 IF NO IDLE DOWN
BX6 X6-X6 CLEAR RA+0
SA6 B0
RJ TRI ROLL IN TAF
RJ IDL SET IDLE DOWN FLAG
EQ TMDC ENTER MAIN LOOP
TRO2.1 RTIME LTIME REAL TIME CLOCK
SA4 LTIME
SA3 TROA TIME AT ROLLOUT
MX2 -36
SA5 TROTL
IX1 X4-X3
BX6 -X2*X1 TIME SINCE ROLLOUT
IX3 X5-X6
PL X3,TRO4 IF NOT TIME FOR ROLLIN
TRO3 SA1 TROA
ZR X1,TMDC IF ALREADY ROLLED IN
RJ TRI ROLL IN
EQ TMDC ENTER MAIN LOOP
TRO4 SA1 VSCR
NG X1,CSI IF SUBSYSTEM MESSAGE RECEIVED
SA4 INRB
RJ PRIN CHECK FOR INPUT
RJ NGL GET INPUT FROM NAM
SA1 KBUF
NZ X1,TRO3 IF ACTIVITY, ROLLIN *TAF*
RJ CCS CHECK CDCS STATUS
SB5 B0+
* IF ANY ROLLOUT ENTRIES HAVE TIMED OUT, ROLLIN *TAF*.
TRO6 RJ SRO SEARCH ROLLOUT TABLE
ZR B5,TRO2 IF NO ROLLOUT ENTRIES TIMED OUT
SA5 B5 ROLLOUT ENTRY
LX5 59-RTBTR
PL X5,TRO6 IF NOT TIMED ROLLOUT
SA4 LTIME
LX5 59-RTBID+24-59+RTBTR
MX7 -24
LX4 24
BX4 -X7*X4 CURRENT TIME IN SECONDS
BX3 -X7*X5 ROLLIN TIME IN SECONDS
IX4 X3-X4
PL X4,TRO6 IF TIME NOT EXPIRED
EQ TRO3 ROLL *TAF* IN
TROA BSSZ 1 ROLLOUT FLAG WORD
TROB FILEB TRFL,TRFL ROLLOUT FET
TROC BSS 1 STATUS WORD FOR MEMORY REQUESTS
TROD BSS 1 SAVE TST POINTERS
TROE DATA C* TAF IDLE.*
TROF CON 0 ROLLOUT INHIBIT FLAG
TRI SPACE 4,15
** TRI - ROLLIN FIELD LENGTH.
*
* TO RESUME PROCESSING AFTER A ROLLOUT, THIS ROUTINE
* REQUESTS FIELD LENGTH AND READS THE ROLLOUT FILE
* BACK OVER THE NEW FIELD LENGTH.
*
* USES A - 1, 2, 6, 7.
* X - 1, 2, 4, 6, 7.
*
* CALLS EXIT.
*
* MACROS CONSOLE, MEMORY, MESSAGE, READSKP, REWIND.
TRI SUBR ENTRY/EXIT
TRI1 SA1 CURFL FL REQUIRED FOR ROLLIN
MEMORY CM,MRSW,R,X1 REQUEST FL
SA2 MRSW GET STATUS WORD
MX4 30
BX6 X4*X2 NEW FL
SA1 CURFL REQUEST FL
LX6 30
IX2 X6-X1
NG X2,TRI1 IF FL NOT GRANTED
REWIND TROB ROLLOUT FILE
READSKP TROB,,R READ IN FIELD LENGTH
CONSOLE KCTRL1 SWITCH TO MAIN K DISPLAY
MESSAGE VERM,1 * VERSION NUMBER.*
MESSAGE ZWORD,2
SA1 TROD RESTORE TST ADDRESS POINTERS
BX7 X7-X7
BX6 X1
SA7 TROA CLEAR ROLLOUT FLAG
SA6 VTST SET O-DISPLAY ACTIVE
EQ TRIX RETURN
* DEFINE ERP$ FOR COMCCIO ERROR RETURN.
ERP$ BSS 0 ENTRY FROM COMCCIO FOR ERRORS
SA1 TROA
ZR X1,ERP IF TRANEX NOT ROLLED OUT
RJ EXIT FORCE ABORT IF ROLLED OUT
SPACE 4
* IDLE K DISPLAY.
KIDL VFD 24/KBUF,18/0,18/KIBF
KIBF CON 2
KDL 28,T,(TAF STATUS)
KSEQ KDL 35,,( )
KDL 15,K,(TRANSACTION SEQUENCE NUMBER)
K SET K+5
KDL 29,K,(- IDLE -)
CON 0
KBUF BSSZ 5 K-DISPLAY KEYBOARD BUFFER
DATA 1L. ALLOW COMMANDS WITH MISSING TERMINATOR
* COMMON DECKS USED BY ROLLIN PROCESSOR
*CALL COMCCIO
*CALL COMCCPM
*CALL COMCSYS
LIST X
*CALL COMKNWC
LIST -X
.1 SET *+77B
TRFL EQU .1/100B*100B ROLLOUT FIELD LENGTH
TSSC TITLE TIME SLICE SUBCONTROL POINTS.
** TSSC - TIME SLICE SUBCONTROL POINTS.
*
* *TSSC* ACTIVATES SUBCP-S WHICH ARE REQUESTING THE CPU.
* IF THERE ARE ANY OUTSTANDING DATA MANAGER REQUESTS, *TSSC*
* BRANCHES TO THE DATA MANAGER BEFORE ACTIVATING A SUBCP.
* *TSSC* MONITORS PPU COMPLETION BITS AND REINITIATES ROUTINES
* WHEN THEIR PPU CALL IS COMPLETE.
* AT ABSOLUTE TIME INTERVALS, CONTROL IS PASSED BACK TO THE
* MAIN LOOP FOR TIME DEPENDENT AND RECALL DEPENDENT ROUTINES.
*
* ENTRY (DTIME) = TIME AT LAST DATA MANAGER CALL.
* (TDBAA) = *TOTAL* D.M. STATUS WORD.
* (TPLW) = STATUS WORD FOR OUTSTANDING PPU REQUESTS.
* (BTIME) = REAL TIME CLOCK AT LAST REJECTED *SIC*.
* (RSCH) = TASK SCHEDULER REQUEST WORD.
* (ITIME) = REAL TIME CLOCK AT LAST INPUT PROCESSING.
* (PBCA) = NUMBER OF OUTSTANDING *BATCH/CRM* REQUESTS.
*
* EXIT TO *TMDC* IF NO SUBCP REQUESTING THE CPU OR IF TIME
* FOR TIME DEPENDENT ROUTINE.
* TO *TERR23* IF *TOTAL* D.M. REQUESTED TASK ABORTED.
* TO *TERR16* IF OPERATOR DROP OR D.M. ABORT.
* TO *TRCL1* IF TASK RESTART AFTER RECALL.
* TO *BRC* IF ACTIVE *BATCH/CRM* REQUEST.
* TO ACTIVATE THE SUBCP WITH RETURN TO *SRTN*,
* IF NONE OF THE ABOVE CONDITIONS EXIST.
* (LTIME) = CURRENT REAL TIME CLOCK.
* (B1), (B2) AND (B7) ARE RESTORED.
*
* USES X - ALL.
* A - ALL.
* B - ALL.
*
* CALLS CLJF, /DBM/DMGR, EXIT, MVE=, PDMR,
* PRIN, RSP, SCHD, SNS, TOTAL,
* NGL (*TAFNAM* ONLY).
*
* MACROS RTIME, XCHNGE.
TSSC RTIME LTIME CURRENT TIME
RJ ATW ADVANCE *TAF* WORK
RJ RSP RESTORE SUBCP REGISTERS
SX7 DMMTL MINIMUM TIME BETWEEN DATA MANAGER RUNS
SA3 DTIME LAST DATA MANAGER CALLED TIME
SA4 LTIME CURRENT TIME
MX2 -36
IX3 X4-X3
BX3 -X2*X3 MILLISECONDS SINCE LAST DATA MANAGER RUN
IX3 X7-X3
PL X3,TSSC3 IF MINIMUM TIME NOT ELAPSED
BX6 X4
SA6 A3
SA1 TDBAA TOTAL D.M. STATUS
SX2 X1+ NUMBER OF OUTSTANDING *TOTAL* REQUESTS
ZR X2,TSSC1 IF NO OUTSTANDING TOTAL REQUESTS
TSSCA RJ EXIT CALL *TOTAL* - MODIFIED BY *PRE*
* RJ =XTOTAL (PROCESS *TOTAL* DATA MANAGER REQUEST)
SB1 1
RJ RSP RESTORE SUBCONTROL POINT REGISTERS
RJ PDMR PROCESS DATA MANAGER REPLIES
TSSC1 SA1 AAMA AAM STATUS WORD
SX2 X1 NUMBER OF OUTSTANDING AAM REQUESTS
ZR X2,TSSC3 IF NO AAM REQUESTS
TSSCB RJ 0 MODIFIED BY *PRE*
* RJ =XAMI (CALL ADVANCED METHODS INTERFACE)
SB1 1
RJ RSP RESTORE SUBCONTROL POINT REGISTERS
ZR B2,TSSC2 IF NO ACTIVE TASK
SA1 B7
SX7 B7
SB2 X1-NUAPL RA OF ACTIVE TASK
SX1 B2 UPDATE (SREG)
LX1 18
BX7 X1+X7
SA7 SREG
TSSC2 RJ PDMR PROCESS DATA MANAGER REPLIES
TSSC3 SA1 VSCR
NG X1,CSI IF SUBSYSTEM MESSAGE RECEIVED
SA1 TPLW
ZR X1,TSSC5 IF NO OUTSTANDING PPU REQUESTS
SB4 X1
BX7 X7-X7
ZR B4,TSSC4 IF NOT A TASK LOAD
SA2 B4
LX2 -1
PL X2,TSSC4 IF TASK LOAD NOT COMPLETED
SB4 TSSC4 RETURN ADDRESS
SA2 TL+5
ZR X2,SCHD12 IF NOT WAITING ON INTERLOCK
EQ SCHD15 RECHECK INTERLOCK
TSSC4 SA1 TPLW
LX1 -18
SB4 X1
ZR B4,TSSC5 IF NO ONE WAITING ON DATA FILE
SA3 BTIME LAST *SIC* ATTEMPT
SX7 SICTL-1 MINIMUM TIME BETWEEN *SIC* RETRYS
SA4 LTIME CURRENT TIME
MX2 -36
IX3 X4-X3
BX3 -X2*X3 MILLISECONDS SINCE LAST *SIC* ATTEMPT
IX3 X7-X3
SB3 TSSC5 RETURN ADDRESS
NG X3,SNS IF TIME TO RETRY *SIC*
TSSC5 RJ CLJF CHECK NON BUFFERED JOURNALS FOR COMPLETION
SA1 RSCH
ZR X1,TSSC6 IF SCHEDULER NOT REQUESTED
BX7 X7-X7
SA7 A1
RJ SCHD ACTIVATE THE TASK SCHEDULER
TSSC6 SA1 PBCA BATCH CONCURRENCY STATUS
ZR X1,TSSC7 IF NO BATCH CONCURRENCY REQUESTS
SA1 BCTF TOGGLE BATCH CONCURRENCY FLAG
MX0 1
BX6 X0-X1
SA6 A1
NG X1,TSSC7 IF NOT SECOND PASS THROUGH TSSC
SB6 B0 NO *BCT* ADDRESS
EQ BRC PROCESS CONTINUATION OF REQUEST
TSSC7 ZR B2,TMDC IF NO SUBCP REQUESTING THE CPU
SA2 ITIME
SX7 TMDTL
SA3 LTIME
MX6 -36
IX4 X3-X2 TIME SINCE LAST *TMDC* EXECUTION
BX6 -X6*X4 MILLISECONDS SINCE LAST SERVICING
IX2 X7-X6
NG X2,TMDC IF TIME FOR TIME DEPENDENT ROUTINE
SA4 INRB
ZR X4,TSSC8 IF NO TRANSACTION INPUT RECEIVED
RJ PRIN PROCESS INPUT
TSSC8 SA5 B7+B1
ZR B7,TMDC IF NO TASK SELECTED
MX7 60-SCTMN-SCCDN CLEAR TERMINATION AND CDCS ABORT FLAG
ERRNZ SCTMS-SCCDS-1 *SCTM* AND*SCCD* MUST BE ADJACENT
LX7 SCTMS-SCTMN-SCCDN+1
BX7 X7*X5
LX5 59-SCTMS
SA7 A5
NG X5,SCT8 IF TASK IS TO BE TERMINATED
LX5 59-SCCDS-59+SCTMS
NG X5,SSC13 IF CDCS ABORTED
LX5 59-SCTAS-59+SCCDS
PL X5,TSSC9 IF ABORT FLAG NOT SET
SA2 B2+DMEC DATA MANAGER ERROR CODE
NG X2,TERR23 IF DATA MANAGER REQUESTED TASK ABORT
EQ TERR16 OPERATOR DROP OR D.M. ABORT OCCURRED
TSSC9 LX5 59-SCRCS-59+SCTAS
NG X5,TRCL1 IF TASK RESTART AFTER RECALL
LX5 59-SCDRS-59+SCRCS
BX2 X5
LX5 59-SCTAS-59+SCDRS
NG X2,TERR16 IF DROPPED BY OPERATOR
LX5 59-59-59+SCTAS
SB4 X5
ZR B4,TSSC10 IF NO C.B. LOADED FOR TASK
SA2 X5+
NG X2,TSSC18 IF RESIDENT C.B. REQUESTING CPU
RJ EXIT FATAL ERROR IF THIS POINT REACHED
* FIND COMMUNICATION BLOCK REQUESTING THE CPU.
TSSC10 SB6 B7+CPAHL+CPACL
SA1 B7+CPAHL START OF STATUS WORDS
TSSC11 NG X1,TSSC12 IF AN ENTRY FOUND
SA1 A1+B1
SB5 A1-B6
NZ B5,TSSC11 IF NOT AT END OF LIST
RJ EXIT FATAL ERROR IF THIS POINT REACHED
* MOVE COMMUNICATION BLOCK TO TASK.
TSSC12 SA5 X1
SX2 X1+CMBHL COMMUNICATIONS BLOCK ADDRESS
BX6 X5
SA3 A5+B1 TRANSFER FIRST TWO WORDS OF C.B.
SX1 CMBL-CMBHL NUMBER OF WORDS ACCESSABLE TO TASK
MX0 -18
MX7 -CBTSN MASK FOR SEQUENCE NUMBER
SA4 B7+B1 WORD WITH CURRENT CM RESIDENT C.B. POINTER
SA6 B2+CB1C
LX6 CBTSN-1-CBTSS RIGHT JUSTIFY SEQUENCE NUMBER
BX7 -X7*X6
SA7 B2+TRID SET DEFAULT TRANSACTION IDENTIFIER
BX7 X3
SX6 A1
SX3 B2+NUAPL+SUAC START OF COMMUNICATION BLOCK IN TASK
BX0 X0*X4 MASK OUT OLD C.B. POINTER
SA7 A6+B1
IX6 X0+X6 ADD IN NEW STATUS WORD POINTER
SA6 A4
SX0 X3+
SA4 B7 READ SUBCP HEADER TABLE
LX4 59-57
NG X4,TSSC13 IF SOLICITED COMMUNICATION BLOCK LOAD
PL X6,TSSC13 IF NOT A SYSTEM TASK
SA7 B2+NUAPL+100B
BX6 X5 MOVE FIRST TWO WORDS OF C.B. TO USER AREA
SA6 A7-B1
TSSC13 SA5 A1
LX5 5 POSITION INITIAL LOAD BIT
NG X4,TSSC16 IF SOLICITED COMMUNICATION BLOCK LOAD
SA4 X2-CMBHL+CBITW
LX4 59-CBITS
MX7 -CBWCN
PL X4,TSSC15 IF NOT INITIAL TRANSFER TO C.B.
SA4 X2-CMBHL+CBWCW GET COUNT OF WORDS TO MOVE
BX1 -X7*X4 ONLY MOVE INPUT DATA IN C.B.
SB4 X1-CBDL-CBUL
SB5 -B4 CLEAR REST OF TASK C.B. AREA
BX7 X7-X7 CLEAR USER AREA IN C.B.
SB6 B2+NUAPL+SUAC+CMBL-CMBHL-CBTL-1
SA7 B6 LWA OF USER C.B. AREA
TSSC14 SB5 B5-B1
SA7 A7-B1
NZ B5,TSSC14 IF ENTIRE USER AREA NOT CLEAR
SA4 PDATE
BX6 X4
SX1 X1+CMBRL
SA6 B6+CBTL PUT DATE/TIME IN C.B.
TSSC15 RJ MVE= MOVE C.B. TO SUBCP
TSSC16 PL X5,TSSC18 IF NOT AN INITIAL TASK LOAD
* PROCESS INITIAL TASK LOAD BY INITIALIZING EXCHANGE PACKAGE
* AND COMMUNICATION AREA AS THE PRODUCT SET OBJECT
* ROUTINES EXPECT FROM EITHER *1AJ* OR THE *CYBER* LOADER.
SA1 B7+B1
MX3 18
SA2 B7
LX1 24
BX6 X3*X1 ENTRY POINT
SX7 X2 RA
LX2 24
BX4 X3*X2 FL
LX6 -6
LX4 -24
BX6 X6+X4 SET P AND A0=FL
LX4 18
SA6 B2
LX7 36
SA7 B2+B1 SET RA
BX6 X4
SA6 A7+B1 SET FL
MX1 1
.EM SX7 EEMC SET DEFAULT ERROR EXIT MODE
LX7 59-11
BX6 -X1*X5 MASK OFF INITIAL LOAD BIT
LX6 -5
SA7 A6+B1 EXIT MODE
SX7 DTSTL DEFAULT TIME SLICE LIMIT
SA6 A5
LX7 30 POSITION TIME SLICE LIMIT
BX6 X6-X6
SA6 A7+B1 ZERO OUT REST OF EXCHANGE PACKAGE
SA7 B2+TSAC TIME SLICE CONTROL WORD
SA6 A6+B1
SA6 A6+B1
.CEJ SA1 X0 GET DATA BASE NAME
SA6 B2+ERXC ERROR RETRY ADDRESS
MX7 1 ** POSITION DEPENDENT INSTRUCTION
SX6 TROT SET TRANSACTION ORIGIN TYPE IN *JOPR*
LX6 24
BX7 X7+X6
SA7 B2+NUAPL+XJPR SET CEJ/MEJ PRESENT STATUS
SA6 B2+TOWC CLEAR TERMINAL OUTPUT COUNT
SX7 B0+
SA7 B2+ROWC CLEAR ROLLOUT WORD COUNT FOR TERMINAL
.CMU MX4 -12
SX6 MAXRA DEFAULT SYSTEM REQUEST COUNT
MX7 1 ** POSITION DEPENDENT INSTRUCTION
SA2 B7 GET TASK FL
LX2 SCFLN-SCFLS-1
SX5 X2
BX7 X5+X7 ADD TASK FL
SA7 B2+NUAPL+104B SET FL IN WORD 104B
SA7 B2+NUAPL+LWPR SET CMU PRESENT STATUS
LX6 30
BX7 X7-X7
SA6 B2+RA1C COUNT OF NUMBER OF RA(S)+1 CALLS
SA7 B2+NUAPL RA(S)
LX1 -48
BX6 X6-X6
SA6 A7+B1 RA(S)+1
BX7 -X4*X1
SA6 A6+1 RA(S)+2 = 0 IMPLIES NO PARAMETERS
SA7 B2+DBNC DATA BASE NAME TASK IS VALIDATED FOR
SA5 B2+NUAPL+100B-20B+2 READ TASK NAME FROM *77-TABLE*
SA6 B2+BWCC BRANCH COUNT
SA6 B2+WICB+3 CLEAR ROLLOUT TABLE ADDRESS
MX7 42
SA6 B2+DMEC CLEAR DATA MANAGER ERROR CODE
BX7 X7*X5
SA6 B2+TOTC *TOTAL* DATA MANAGER REQUEST COUNT
SA6 B2+TSQN CLEAR QUARTER NANO-UNIT COUNT
SA7 B2+NUAPL+PGNR SET TASK NAME INTO *PGNR*
SA6 B2+SECR CLEAR *SECURE* REQUEST
SA6 B2+RERU CLEAR *RERUN* REQUEST
TSSC17 SA1 B2+CB2C GET COMMUNICATION BLOCK ADDRESS
SA4 X1+CBITW
LX4 59-CBITS
MX6 -59
BX6 -X6*X4 CLEAR INITIAL TRANSFER BIT
LX6 CBITS-59
SA6 A4
SA3 X1+CBRTW
BX4 X3
LX3 59-CBRTS
LX4 59-CBLCS
SX7 TSSC17 RETURN ADDRESS
PL X3,TSSC18 IF NOT RECOVERABLE TRANSACTION
PL X4,TRCL2 IF INPUT NOT LOGGED
* ACTIVATE THE SUBCP.
TSSC18 XCHNGE B2,TSKTL
SRTN TITLE PROCESS RETURN FROM SUBCP.
** SRTN - PROCESS RETURN FROM SUBCP.
*
* *SRTN* CHECKS ERROR EXIT FLAGS AND SYSTEM REQUESTS FROM THE
* SUBCP. IF AN SYSTEM REQUEST IS PRESENT AND NO FATAL ERROR
* OCCURRED, CONTROL WILL BE GIVEN TO THAT REQUEST PROCESSOR.
*
* ENTRY (X6) = 12/2000B+ERROR FLAG,30/0,18/RA OF SUBCP.
* (X7) = 60/QUARTER NANO-UNITS USED BY TASK.
*
* EXIT (A5) = ADDRESS OF TASK SYSTEM REQUEST.
* (X1) = TASK FL.
* (X5) = SYSTEM REQUEST.
* (B2) = FWA OF TASK SYSTEM AREA.
* (B3) = (B5) = TASK RA.
* (B7) = FWA OF TASK SUBCP TABLE ENTRY.
* TO SYSTEM REQUEST PROCESSOR IF REQUEST PRESENT AND NO
* FATAL ERROR OCCURRED.
* TO *TERR15* IF TASK TIME LIMIT EXCEEDED.
* TO *TERP* IF ERROR FLAG INDICATES A NON-TIME-LIMIT
* ERROR AND NO ERROR RETRY ADDRESS IS PRESENT.
* TO *TERR14* IF NUMBER OF RA+1 CALLS EXCEEDS LIMIT.
* TO *TERR4* IF ILLEGAL RA+1 REQUEST.
* TO *TSSC* IF NO RA+1 REQUEST IS PRESENT AND NO
* FATAL ERROR OCCURRED OR IF AN ERROR
* OCCURRED AND AN ERROR RETRY ADDRESS
* IS PRESENT.
*
* USES X - 1, 3, 4, 5, 6, 7.
* A - 1, 3, 4, 5, 6, 7.
* B - 3, 4, 5.
*
* CALLS TXT.
SRTN SA1 B2+TSQN UPDATE TASK QUARTER NANO-UNIT COUNTER
UX6,B4 X6 EXIT FLAG
IX7 X1+X7
SA5 X6+B1 READ SYSTEM REQUEST
SA7 A1
NZ B4,SRTN1 IF TASK ERROR
SB3 X6+ RA
NZ X5,SRTN4 IF SYSTEM REQUEST PRESENT
EQ TSSC RESUME SUBCP PROCESSING
* CHECK EXIT CONDITIONS.
SRTN1 SX6 B4-TLET
NZ X6,SRTN3 IF TIME-SLICE NOT EXCEEDED
SA4 B2+TSAC
SX6 B1+
IX7 X4+X6 INCREMENT TIME COUNT
AX4 30 RIGHT JUSTIFY TIME LIMIT
SX6 X7 CLEAR UPPER 42 BITS
IX4 X4-X6 LIMIT-COUNT
SA7 A4+ RESET TIME COUNT
NG X4,SRTN2 IF TASK TIME LIMIT EXCEEDED
NZ X5,SRTN4 IF SYSTEM REQUEST PRESENT
EQ TSSC RESUME SUBCP PROCESSING
SRTN2 RJ TXT SET UP AND STORE INTERNAL TRACE PACKET
EQ TERR15 TASK TIME LIMIT EXCEEDED
SRTN3 RJ TXT SET UP AND STORE INTERNAL TRACE PACKET
SA4 B2+ERXC ERROR RETRY ADDRESS
LX4 -18
SX1 X4
ZR X1,TERP IF NO ERROR EXIT ADDRESS
BX7 X7-X7
MX6 24
SA7 A4
SA4 B2 GET P
LX1 36
BX6 -X6*X4 CLEAR P
IX7 X6+X1
SA7 B2 RESET P
EQ TSSC RESUME SUBCP PROCESSING
* PROCESS SYSTEM REQUEST.
SRTN4 RJ TXT SET UP AND STORE INTERNAL TRACE PACKET
SX7 B0+
SA3 B2+RA1C
BX6 X5 SAVE IMAGE OF RA + 1 REQUEST
SA7 A5 CLEAR SYSTEM REQUEST
SA6 B2+LRA1
SX6 B1
MX4 -18
IX6 X6+X3 INCREMENT COUNT OF NUMBER OF RA+1 CALLS
AX3 30 RIGHT JUSTIFY LIMIT
BX4 -X4*X6
SA6 A3 RESET COUNT
IX3 X4-X3
PL X3,TERR14 IF EXCEEDS LIMIT
* RE-ENTER HERE FROM RECALL.
SRTN4.1 SA1 B7+SCRAW SET RA AND FL
SA3 B2+LRA1 GET REQUEST
SA5 X1+B1 RA + 1
SB3 X1 RA
LX1 SCFLN-1-SCFLS
BX5 X3
LX5 18 SET REQUEST
SX7 X5
LX5 -18
SB5 B3 RA
BX6 X5
SX1 X1
SB4 X7-3RMSG USED IN TREE SEARCH
SA6 B2+LRA1 SAVE IMAGE OF RA + 1 REQUEST
* IDENTIFY THE REQUEST BY USING A TREE SEARCH AND
* THEN EXIT TO PROCESS THE REQUEST.
ZR B4,MSG IF *MSG*
PL B4,SRTN5 IF SEARCH DOWN GREATER THAN BRANCH OF TREE
SB4 X7-3REND
ZR B4,SCT IF *END* REQUEST
SB4 X7-3RD00
ZR B4,D00 IF *D00* REQUEST
SB4 X7-3RCTI
ZR B4,CTI IF *CTI*
SB4 X7-3RCPM
ZR B4,CPM IF *CPM* REQUEST
SB4 X7-3RABT
ZR B4,SCT36 IF *ABT* REQUEST
SB4 X7-3RAAM
ZR B4,AAM IF *AAM*
SB4 X7-3RMEM
ZR B4,MEM IF *MEM* REQUEST
EQ TERR4 INCORRECT REQUEST
SRTN5 SB4 X7-3RSCT
ZR B4,SCT IF *SCT*
SB4 X7-3RREC
ZR B4,RRP IF *REC* REQUEST
SB4 X7-3RRFL
ZR B4,RFL IF *RFL* REQUEST
SB4 X7-3RTOT
ZR B4,TOT IF *TOT*
SB4 X7-3RTIM
ZR B4,TIM IF *TIM*
SB4 X7-3RTMS
ZR B4,TMS IF *TMS* REQUEST
SB4 X7-3RSSC
ZR B4,SSC IF *SSC* REQUEST
EQ TERR4 INCORRECT REQUEST
SCHD TITLE TASK SCHEDULER.
** SCHD SCHD SEARCHES THE REQUESTED TASK LIST FOR THE HIGHEST
* PRIORITY TASK, REQUESTS ENOUGH CORE TO RUN THE TASK,
* AND IF THE CORE IS AVAILABLE INITIATES LOADING OF THE
* TASK.
*
SCHD35 SA1 STAT10 NUMBER OF TIMES NO FL FOR TASK LOAD
SX6 B1
IX6 X1+X6
SA6 A1+
SCHD PS ENTRY/EXIT
SCHD1 MX7 -6
SA1 LTLRE
MX0 1
NZ X1,SCHD IF REQUESTED TASK LOAD LIST FULL
SA1 RTLW RTL RESERVATION WORD
SB5 B0
IX1 X1+X0 LOOKING FOR ZERO BITS
SB3 370000B
SB6 B0
LX0 -12
MX5 -12
SCHD2 NX1 B4,X1 FIND AN RTL ENTRY
SB4 B4+B4 TWO WORDS / ENTRY
IX1 X1+X0
SB5 B5+B4
SB4 B5-RTLL
PL B4,SCHD3 IF END OF LIST
SA2 B5+RTL CHECK AN ENTRY
LX2 5-29
BX3 -X7*X2 CURRENT PRIORITY
LX2 11-59-5+29
SB4 X3+
BX3 -X5*X2 TASK DIRECTORY INDEX
LT B4,B6,SCHD2 IF PRIORITY .LT. CURRENTLY SELECTED TASK
TA3 X3+1,VTLD GET TASK CHARACTERISTICS
LX3 59-57
NG X3,SCHD2 IF REQUEST FOR CM RESIDENT TASK
LX3 59-TLQUS-59+57
PL X3,SCHD2.1 IF NOT Q-TYPE OF TASK
MX4 -TLTAN
LX3 TLTAN-1-TLTAS-59+TLQUS
BX4 -X4*X3
ZR X4,SCHD2.1 IF NO COPIES OF TASK ARE ACTIVE
SX4 X4-MAXAQ
ZR X4,SCHD2 IF NUMBER OF COPIES AT LIMIT
LX2 17-17-11+59
MX4 -18 CHECK IF RTL ENTRY AT *QL* LIMIT
BX4 -X4*X2
LX2 11-59-17+17
NZ X4,SCHD2 IF ENTRY NOT AT *QL* LIMIT
SCHD2.1 EQ B4,B6,SCHD2.2 IF TASK PRIORITIES ARE EQUAL
SB6 B4 NEW HIGHEST PRIORITY
SX6 A2 RTL ADDRESS OF TASK WITH HIGHEST PRIORITY
LX2 17-47-11+59 GET TASK FL
SB3 X2
JP SCHD2
SCHD2.2 LX2 17-47-11+59
SB4 X2
GE B4,B3,SCHD2 IF FL GREATER THAN CURRENTLY SELECTED TASK
SB3 X2 NEW LOWEST FL VALUE
SX6 A2
JP SCHD2
SCHD3 ZR B6,SCHD *EXIT - NO TASKS IN REQUESTED TASK LIST
SA5 SCHDA
ZR X5,SCHD6 NO REUSABLE PROGRAMS IN CORE
SA2 X6
PX4 X5
BX3 X3-X3
MX5 12
SB3 B0
MX0 1
BX2 X5*X2 TASK ID
LX0 -12
SB5 SCPAL
EQ SCHD5 ENTER LOOP
* CHECK REUSABLE PROGRAMS FOR REQUESTED TASK MATCH
SCHD4 SX3 X3+B6
LX7 X3,B5
TA1 X7-CPAL+2,VCPA
BX1 X5*X1 TASK ID
IX1 X1-X2
ZR X1,SCHD21 MATCH FOUND
SCHD5 BX1 -X0*X4
NX4,B6 X1 FIND NEXT SET BIT
NZ X4,SCHD4 ENTRIES LEFT TO CHECK
* REQUEST FIELD LENGTH FOR PROGRAM TO BE SCHEDULED
SCHD6 SA2 X6
SA6 SCHDB SAVE RTL ADDRESS
LX2 -30
SX0 X2+NUAPL FL REQUIRED TO RUN TASK
RJ RCP REQUEST SUBCONTROL POINT
ZR X5,SCHD35 IF NO FL CURRENTLY AVAILABLE
* SET UP SUB CONTROL POINT AREA FOR NEW TASK
SA2 SCHDB RTL ADDRESS OF TASK TO LOAD
SX3 B4
LX0 18
BX0 X0+X3 SUB CP ADDRESS AND FL
SA1 X2 FIRST WORD OF RTL ENTRY
MX5 12
SB5 X2
SA2 B5+1 SECOND WORD OF RTL ENTRY
MX6 -2
BX5 X5*X1 TASK ID
SB4 B4+CPAHL
MX7 30
BX4 X4-X4
ZR X5,SCHD8.1 IF TASK ROLL IN
SA3 B4-CPAHL+2
LX6 4
IX7 X5+X3
LX5 12
BX6 -X6*X2 DESTRUCTIVE CODE AND SYSTEM TASK FLAG
TA1 X5-1,VTLD 1ST WORD OF TLD
MX4 30
SA5 A1+B1
SX1 X1 ENTRY POINT
BX5 X4*X5 DISK ADDRESS OF TASK
LX6 60-6
LX1 18
SA7 A3 SET NAME AND TIME SLICE LIMIT
BX1 X1+X6 ENTRY POINT AND DESTRUCTIVE CODE FLAG
SA3 A5+TLTAW-TLDAW TASK ATTRIBUTES AND STATUS
SX6 1
LX3 59-TLQUS
LX5 30 POSITION DISK ADDRESS FOR TASK LOAD
PL X3,SCHD6.1 IF Q-ATTRIBUTE NOT SPECIFIED
RJ ITA INCREMENT TASK ACTIVE COUNT
SCHD6.1 BX4 X1
* DETERMINE WHICH TASK LIBRARY FILE TO USE
SX6 A1+B1 ADDRESS OF TLD ENTRY
SB3 VUSN-2 SYSTEM LIBRARY USER NAME
SB6 VTFL SYSTEM TASK LIBRARY NAME
TA3 0,VEDT
SA1 A3+4
SX3 X3 LINK TO NEXT EDT
LX1 -18
SCHD7 SX7 X1
ZR X7,SCHD8 NO DIRECTORY FOR DATA BASE
IX7 X7-X6
PL X7,SCHD8.2 IF ENTRY IN PREVIOUS TLD
SB3 A3+ EDT ADDRESS
SB6 X1-1
SCHD8 ZR X3,SCHD8.2 IF AT END OF EDTS
SA1 X3+4
SB3 A3
SA3 X3
LX1 -18
SX3 X3 NEXT EDT
EQ SCHD7 LOOP
SCHD8.1 MX6 1
SA1 X2
SB3 B0
SA3 A1+B1
BX0 X6+X0 SET ROLL IN FLAG
SB6 X1+ ROLLOUT FILE FET ADDRESS
BX5 -X7*X3 DISK ADDRESS OF ROLLED OUT TASK
SCHD8.2 SX1 B6 ADDRESS OF NAME OF TASK LIBRARY
SX6 B3 ADDRESS OF USER NAME FIELD FOR LIBRARY
LX1 30
BX5 X5+X1
LX6 36
SB3 SCHD11 CONTINUATION ADDRESS
BX0 X0+X6
NG X0,SCHD9 IF TASK ROLL IN
BX3 X2 WORD 2 OF RTL
LX3 59-2
PL X3,SCHD9 IF NOT EXTENDED MEMORY RESIDENT
SB3 SCHD31 RETURN ADDRESS FOR EXTENDED MEMORY LOADING
* ENTRY (B3) = RETURN ADDRESS
* (B4) = 1ST C.B. STATUS WORD AT SELECTED SUB CP
* (B5) = RTL ADDRESS OF REQUESTED TASK
* (X4) = SUB CP STATUS WORD 2
* (X2) = 2ND WORD OF RTL ENTRY
SCHD9 MX7 1
SA3 RTLW RTL RESERVATION WORD
LX7 -12
SX1 B5-RTL RTL ENTRY
SB6 B0
AX1 1 TWO WORDS PER RTL ENTRY
LX2 36
SB5 X1
TX2 X2+1,-VATL RELATIVE ADDRESS OF FIRST ATL ENTRY
LX7 -B5,X7 POSITION BIT TO RELEASE RTL ENTRY
IX6 X7+X3
MX1 -12
SA6 A3 RESET RTL RESERVATION WORD
* SEARCH THE ATL AND SET POINTERS TO THE QUEUED TASKS C.B.S
SCHD10 MX7 1
TA3 X2-1,VATL
MX2 1
SX6 X3 CONTEXT BLOCK ADDRESS
LX2 -5 INITIAL LOAD BIT
BX2 X2+X7 SET REQUEST CPU BIT
IX7 X6+X2
LX3 12
SA7 B4+B6 INDICATE TASK IN CORE AND WAITING FOR CPU
BX2 -X1*X3
SB6 B6+B1 INCREMENT ATL ENTRY COUNT
NZ X2,SCHD10 MORE ATL ENTRIES
SX1 B6
BX7 X0
LX1 36
IX6 X4+X1 SET NUMBER OF CONTEXT BLOCKS AT SUB CP
SA6 B4-CPAHL+1
SB4 SCHD1
JP B3 *EXIT
* LOAD TASK CODE AT THE SUB CP
SCHD11 SA3 CCC
ZR X3,SCHD18 NO TASK BEING LOADED NOW
SA1 TL+5
SA2 TL
LX2 -1
ZR X1,SCHD11.1 IF NOT WAITING FOR INTERLOCK
BX2 X2-X2
SCHD11.1 NG X2,SCHD12 IF PRIOR TASK LOAD REQUEST IS FINISHED
* STACK UP TASK LOAD REQUEST
SA3 A3+2
SCHD11.2 ZR X3,SCHD17 IF UNUSED STACK ENTRY
SA3 A3+2
EQ SCHD11.2 TRY NEXT ENTRY
* A TASK IS LOADED - ADVANCE STACK AND REQUEST CPU
SCHD12 SA2 CCC STACK ENTRY FOR TASK THAT WAS LOADED
SA3 A2+B1
SA4 A3+B1
SA1 X2 FWA OF SUBCP TABLE ENTRY
ZR X4,SCHD14 NO TASK WAITING TO BE LOADED
SA2 A4
SCHD13 BX6 X2
SA6 A3-B1 MOVE ENTRY TOWARD TOP OF STACK
SA3 A2+B1
SA2 A3+B1 NEXT STACK ENTRY
BX6 X3
SA6 A6+B1
NZ X2,SCHD13 MORE ENTRIES TO MOVE
SCHD14 SX4 X1-NUAPL
BX6 X5
SA7 A3-B1 NEW STACK ENTRY - OR ZERO TERMINATOR
SB3 SCHD15 RETURN ADDRESS
SA3 A1+SCNMW
MX5 SCNMN
SA6 A7+B1 DISK ADDRESS OF REQUESTED TASK
SX2 B1
MX6 1
SCHD14.1 BX5 X5*X3 TASK DIRECTORY INDEX
LX2 42
BX6 -X6*X1 CLEAR STORAGE MOVE LOCK OUT
LX5 12
SB6 A1 SUBCP TABLE ENTRY FOR THIS TASK
SA6 A1
ZR X5,SCHD23 IF TASK ROLL IN
SX7 DCPPR SET DEFAULT CPU PRIORITY
TA3 X5+1,VTLD
LX7 -12 TASK PRIORITY
LX3 59-TLTLS
SA7 X4+CB1C TASK PRIORITY UNTIL A C.B. IS LOADED
IX6 X3+X2 BUMP TIMES LOADED COUNT
LX6 TLTLS-59
SA6 A3
LX6 59-TLSCS GET SOLICITED C.B. FLAG
PL X6,RCPU IF NOT SOLICITED COMMUNICATION BLOCK TASK
MX6 1 SET SOLICITED COMMUNICATION BLOCK FLAG
LX6 57-59
SA3 B6 SUBCP TABLE FOR THIS TASK
BX6 X3+X6
SA6 A3
EQ RCPU REQUEST CPU FOR NEWLY LOADED TASK
* IF STACK ENTRY PRESENT, INITIATE LOAD OF REQUESTED TASK
SCHD15 SA1 CCC
ZR X1,SCHD16 NO TASK WAITING TO BE LOADED
SA5 A1+B1
SA2 X1
SX6 X2+77B-16B FWA FOR TASK LOAD
BX7 X5
SX0 X2 TASK RA
SA7 TL+6
LX2 -18
LX5 30
SB5 X5 ROLLOUT FILE FET ADDRESS
SX7 X5
SB6 X2+16B-77B
SA3 TL+1 FET+1 OF TASK LIBRARY FILE
PL X1,SCHD15.1 IF NOT TASK ROLL IN
SA1 B5+5
NZ X1,SCHD15.2 IF ROLLOUT FILE INTERLOCKED
SX6 A2
SA6 A1 INTERLOCK ROLLOUT FILE
SX6 X0-NUAPL START OF SUB CONTROL POINT AREA
SB6 X2+NUAPL FL TO ROLL IN
SCHD15.1 BX7 X7-X7
MX4 -18
SA7 A7-B1 CLEAR WAITING FOR INTERLOCK STATUS
BX3 X4*X3
BX7 X3+X6
SA7 A3 SET FIRST
MX2 1
SA6 A7+B1 SET IN = FIRST
SA6 A6+B1 SET OUT = FIRST
SX7 B6+X6
SA3 A6+B1
BX3 X4*X3
SA4 B5 TASK LIBRARY FILE NAME
BX7 X3+X7
BX6 X4
SA7 A6+B1 SET LIMIT = LWA OF SUB CP TASK AREA
SA6 TL
SA1 A2
BX7 X2+X1 SET STORAGE MOVE LOCK OUT BIT
SA7 A1
READSKP A6 INITIATE LOAD OF TASK
JP B4 *EXIT
SCHD15.2 SX7 A1
SA7 A7-B1 SET WAITING FOR INTERLOCK STATUS
JP B4 *EXIT
* CLEAR LOCK ON LIBRARY FILE
SCHD16 SA2 TPLW STATUS WORD FOR RECALL COMPLETION CHECKS
MX3 -18
BX6 X3*X2 MASK OUT TASK BEING LOADED STATUS
SA6 A2
JP B4 *EXIT
* ENTER LOAD REQUEST INTO STACK
SCHD17 BX6 X5
SA7 A3 STORE STACK ENTRY
SA6 A3+1 RANDOM ADDRESS
JP B4 *EXIT
SCHD18 SX2 TL
SA1 TPLW STATUS WORD FOR RECALL COMPLETION CHECKS
BX6 X1+X2
SA7 CCC STORE STACK ENTRY
SA6 A1 SET TASK BEING LOADED STATUS
BX7 X5
SA7 A7+B1
EQ SCHD15 LOAD REQUESTED TASK
* SET UP TO QUEUE ENTRIES AT TASK ALREADY RESIDENT IN CM
SCHD21 SB6 X3 SHIFT COUNT FOR SUB CP
SB5 X6
LX2 12 POSITION TASK ID
SX6 B1
TA3 X2+TLTAW-TLDAW,VTLD TASK ATTRIBUTES AND STATUS
SA2 A5+ LIST OF REUSABLE TASKS IN CM
LX3 59-TLQUS
PL X3,SCHD21.1 IF Q-ATTRIBUTE NOT SPECIFIED
RJ ITA INCREMENT TASK ACTIVE COUNT
SCHD21.1 LX0 X0,-B6 POSITION BIT TO RELEASE SUBCP FROM LIST
BX7 -X0*X2 CLEAR BIT
SA4 A1-1 SUBCONTROL POINT STATUS WORD 2
SA5 AVAILCM
MX1 1
SA3 A4-B1 SUB CP STATUS WORD 1
LX1 -1
SA7 A2+
BX6 -X1*X3 CLEAR RELEASEABLE BIT FOR SUB CP
SX0 X3-NUAPL START OF SUB CP FL
SA6 A3
LX3 -18
SA2 B5+B1
SX3 X3+NUAPL CORE USED BY TASK
SB4 A1+B1 1ST C.B. STATUS WORD AT SUB CP
IX7 X5-X3
SB3 SCHD22
SX5 A3 SUB CP AREA
SA7 A5 DECREMENT AVAILABLE CORE COUNT
EQ SCHD9 LOAD TASK QUEUE FOR EXECUTION
SCHD22 SB6 X5 SUB CP AREA
SX4 X0 START OF SUB CP FL
SB3 SCHD1 RETURN ADDRESS
EQ RCPT REQUEST CPU FOR TASK
* PROCESS ROLLIN COMPLETE.
SCHD23 SB5 X4 SUB CONTROL POINT AREA OF TASK
SX1 X1 TASK RA
MX7 24
SA3 X4+B1
LX1 36
BX7 -X7*X3 CLEAR OLD RA FROM EXCHANGE PACKAGE
SA5 X4+ROSC
BX7 X7+X1
SA7 A3
SA3 B5+RSCC
BX6 X6-X6
MX4 12
SA2 X5 FIRST WORD OF ROLLOUT TABLE ENTRY
SX0 B6
SA1 A3+B1
SA6 X2+5 RELEASE INTERLOCK ON ROLLOUT FILE
BX4 X4*X1 TASK INDEX
SA2 B6+2 RESTORE TASK INDEX
SX7 X3
BX6 X4+X2
SA6 A2
ZR X7,SCHD25 IF C.B. NOT RESERVED DURING ROLLOUT
IX7 X3+X0 REBIAS STATUS WORD POINTER
SX1 CPACL
SA7 B6+B1
SA4 A2+B1 SAVE CORRECT ACTIVE C.B.
BX7 X4
SA7 SCHDC
SX2 A1+B1 RELOAD ACTIVE TASK STATUS WORDS
SX3 B6+CPAHL
RJ MVE=
SA1 X0+B1 ACTIVE C.B. POINTER IN SUBCP TABLE
SA2 X1
MX3 42
BX7 X3*X2
SA1 SCHDC
BX1 -X3*X1
BX7 X1+X7
SA7 A2+ REPLACE ACTIVE C.B. ADDRESS
SCHD24 SX4 X5 ROLLOUT TABLE ENTRY
SA1 X0
SB6 X0+ SUB CONTROL POINT ADDRESS
SB5 X1-NUAPL SUB CONTROL POINT AREA
SB3 SCHD26 RETURN ADDRESS
JP ROL16 RELEASE ROLLOUT FILE SPACE
SCHD25 SA1 B6+CPAHL
SX7 B1 CLEAR INITIAL CALL BIT
SX6 A1
LX7 54
IX6 X6+X3 SET C.B. STATUS WORD POINTER
BX7 -X7*X1
SA7 A1
SA6 B6+SCCCW ACTIVE C.B. FOR THIS TASK
EQ SCHD24 CONTINUE
SCHD26 LX6 59-54
PL X6,SCHD26.1 IF NOT RECALL RESTART TASK
MX0 1
SA1 B5+SCRC TASK RECALL STATUS WORD
SA3 LTIME
MX7 -5
SA2 A1+B1
LX7 18
BX6 X3
SA6 A1
BX6 X1
TX4 B6+CPAL,-VCPA
SA6 B5+RCL
BX7 X7*X2 CLEAR OLD SUB CP NUMBER
AX4 SCPAL
SX5 B1
LX4 18
BX7 X7+X4
LX4 -18
SA7 A6+B1
LX0 -12
SA1 RCR RECALL REQUEST WORD
LX5 56
SA2 B6+B1 STATUS WORD TWO OF SUB CP AREA
SB5 X4
BX6 X5+X2 SET TASK RECALL REQUEST BIT
AX4 X0,B5
IX7 X1+X4
SA6 B6+B1
SA7 A1 SET TASK RECALL REQUEST WORD
SA1 STAT15 NUMBER OF TIMES TASK IN RECALL
SX6 B1
IX6 X1+X6
SA6 A1
JP SCHD15
SCHD26.1 SA1 B5+CB1C CHECK RECALL STATUS
SX4 B5
LX1 59-46
NG X1,SCHD15 IF TASK IN RECALL ALL STATUS
SB3 SCHD15
JP RCPU REQUEST CPU FOR TASK JUST LOADED
* INITIATE LOAD OF REQUESTED TASK FROM EXTENDED MEMORY. THE
* INTERPRETIVE EXTENDED MEMORY READ MACROS AND RELATED ROUTINES
* IN *COMCECS* ARE USED TO HELP PROVIDE A CONTROLLED USAGE OF
* EXTENDED MEMORY.
*
* (X7) = 1/EPC,5/,18/EDT,18/TFL,18/SCP
* (X5) = 30/ TLN ,30/RDA
*
* EPC - ERROR PROCESSOR CALL.
* EDT - ELEMENT DESCRIPTOR TABLE ADDRESS.
* TFL - TASK FIELD LENGTH.
* SCP - START OF SUB CP TABLE.
* TLN - ADDRESS OF TASK LIBRARY NAME.
* RDA - RANDOM DISK/ECS ADDRESS OF TASK.
SCHD31 SA1 X7 TASK RA
SA0 X1+77B-16B FWA FOR TASK LOAD
MX0 -24
BX0 -X0*X5 EXTENDED MEMORY FWA
LX7 -18
SB3 X7+16B-77B-NUAPL TASK FIELD LENGTH - FWA FOR LOAD
LX7 18
RE B3 READ TASK FROM EXTENDED MEMORY
EQ ECR PROCESS EXTENDED MEMORY READ ERROR
SCHD34 NG X7,TERP19 IF ERROR PROCESSOR CALL
SB3 SCHD1 RETURN ADDRESS
MX6 1 SET MASK TO REQUEST CPU
BX2 X7
SA1 X2
BX3 X5
SX4 X1-NUAPL
SA3 A1+2
SX2 B1
MX5 12
EQ SCHD14.1 CONTINUE SCHEDULING THIS TASK
SCHDA BSSZ 1 REUSABLE TASKS CURRENTLY CM RESIDENT
SCHDB BSS 1 RTL ADDRESS OF TASK TO LOAD
SCHDC CON 0 CURRENT C.B. ADDRESS
TITLE RA(S)+1 REQUEST PROCESSORS.
SPACE 4
*** SUBCONTROL POINT PROGRAM REQUEST.
*
* SUBCONTROL POINT PROGRAM REQUESTS ARE PASSED
* THROUGH RELATIVE ADDRESS 1. THE FORMAT IS AS FOLLOWS -
*
*T 18/ NAME,6/ R,36/ ARG
*
* NAME REQUEST NAME.
* R 20B IF AUTO RECALL DESIRED.
* ARG ARGUMENTS.
*
* THE RECALL PARAMETER IS OF USE ONLY ON DATA MANAGER
* REQUESTS, AS ALL OTHER TYPES ARE REQUESTS ARE ANSWERED
* IMMEDIATELY.
*
* IF THE FORMAT OF THE REQUEST IS INCORRECT, THE TASK IS
* ABORTED.
SCT SPACE 4,50
*** SCT - SCHEDULE TASK.
*
* THIS PROCESSOR PERFORMS THE FUNCTIONS RELATING TO TASK
* SCHEDULING. THE FORMAT OF THE REQUEST IS -
*
*T 24/ 3LSCT,18/ FNC,18/ ADDR
*
* FNC SCHEDULE FUNCTION CODE.
* ADDR PARAMETER ADDRESS.
*
* FNC SCHEDULE TYPE
*
* 0 CEASE - END CURRENT TASK.
* 1 NEWTRAN - START A NEW TRANSACTION.
* 2 CALLTSK - CALL TASK WITH CEASE.
* 3 CALLTSK - CALL TASK WITHOUT CEASE.
* 4 CALLRTN - CALL TASK WITH RETURN.
* 5 WAITINP - WAIT FOR TERMINAL INPUT.
* 6 WAIT - WAIT FOR SPECIFIED TIME PERIOD.
* 7 CHKON - SET *TOTAL* INTERLOCK FLAG.
* 8 CHKOFF - CLEAR *TOTAL* INTERLOCK FLAG.
* 9 BWAITINP - BUFFER WAIT FOR TERMINAL INPUT.
* 10 CALLTRN - CALL TRANSACTION.
*
* ENTRY (X1) = TASK FL.
* (X5) = SYSTEM REQUEST.
* (B2) = FWA OF TASK SYSTEM AREA.
* (B5) = TASK RA.
* (B7) = FWA OF TASK SUBCP TABLE ENTRY.
*
* EXIT TO *TERR1* IF REQUESTED ABORT.
* TO *TERR2* IF ADDRESS OUT OF BOUNDS.
* TO *TERR3* IF INCORRECT FUNCTION CODE.
* TO *TERR5* IF MORE THAN FIVE TASKS IN TASK CHAIN.
* TO *TERR6* IF INCORRECT TASK NAME.
* TO *TERR10* IF TASK CEASE WITH OUTSTANDING DATA
* MANAGER REQUEST.
* TO *TERR11* IF TASK NOT VALIDATED FOR REQUEST.
* TO *TERR12* IF TASK BRANCH LIMIT EXCEEDED.
* TO *TERR18* IF NEST-LEVEL LIMIT EXCEEDED.
* TO *TERR19* IF SCHEDULING REQUEST WITH DATA
* MANAGER REQUEST OUTSTANDING.
* TO *TERR20* IF INCORRECT WAIT FOR INPUT.
* TO *TERR21* IF MORE THAN ONE TRANSACTION USING TASK
* CONTAINING A *WAITINP* REQUEST.
* TO *TERR22* IF NOT CALLED FROM SYSTEM TASK LIBRARY.
* TO *TERR40* IF TRANSACTION NAME UNKNOWN.
* TO *TSSC* WHEN PROCESSING COMPLETE.
SCT SB4 X5+ ADDRESS OF PARAMETERS
LX5 -18
SB4 -B4
SX0 X5 FUNCTION CODE
SX5 B2+CB1C C.B. HEADER BLOCK LOCATION
LX0 -1
ZR X0,SCT1 IF CEASE
SB3 X0
SX7 X1+B4
GT B4,TERR2 ADDRESS WORD OUT OF BOUNDS
SX6 B3-SCTJTL
NG X7,TERR2 ADDRESS WORD OUT OF BOUNDS
PL X6,TERR3 IF INCORRECT FUNCTION CODE
JP B3+SCTJT JUMP THRU TABLE TO PROCESS CALL
* JUMP TABLE TO HANDLE *SCT* CALL.
SCTJT PL X0,SCT1 CEASE
EQ SCT32 NEWTRAN
PL X0,SCT14 IF CALL TASK WITH CEASE
EQ SCT23 CALL TASK WITHOUT CEASE
PL X0,SCT37 IF CALL TASK WITH RETURN
JP SCT51 WAIT FOR TERMINAL INPUT
PL X0,SCT57 IF TIMED ROLLOUT
JP SCT60 CHKON
PL X0,SCT61 IF CHKOFF
EQ SCT51 BUFFER WAIT FOR TERMINAL INPUT
PL X0,SCT62 IF CALL TRANSACTION
EQ TERR3 IF INCORRECT SUBFUNCTION CODE
SCTJTL EQU *-SCTJT LENGTH OF SCT JUMP TABLE
* CEASE - PROCESS A TASK CEASE.
*
* ENTRY (B5) = TASK RA.
* (B4) = NEGATIVE VALUE OF PARAMETER, PARAMETER
* VALUES AND DESCRIPTIONS FOR THE *CEASE*
* REQUEST FOLLOW -
* .LT. -1 RESERVED FOR CDC.
* = -1 IF NORMAL CEASE AND TERMINAL
* IS NOT TO BE UNLOCKED.
* = 0 IF NORMAL CEASE.
* = 1 IF ABNORMAL CEASE WITHOUT DUMP.
* .GT. 1 IF ABNORMAL CEASE WITH DUMP.
SCT1 SA1 KDISB
ZR X1,SCT2 IF NO TASK *K-DISPLAY* ACTIVE
MX6 42
SB3 X1 C.B. ADDRESS
SA2 B2+CB2C CURRENT C.B. WORD TWO
SB5 X2 C.B. ADDRESS
SX7 B3-B5
NZ X7,SCT2 IF ANOTHER TASK HAS *K-DISPLAY*
SX1 KFRM SWITCH *K-DISPLAY* TO *TAF*
SA2 KCTRL1
BX6 X6*X2
SA7 A1 CLEAR INTERLOCK *KDISB*
BX6 X6+X1
SA6 A2
CONSOLE KCTRL1
MESSAGE ZWORD,2
SCT2 ZR B4,SCT3 IF NO PARAMETER
NG B4,SCT36 IF CEASE WITH ABORT
SB4 B4-B1
NZ B4,SCT36 IF CEASE WITH ABORT
MX7 1
LX7 CBLKS-59
SA1 B2+CB1C
BX7 X1+X7
SA7 A1+
SCT3 SA1 B2+CB2C COMMUNICATION BLOCK WORD 2
MX6 12
SX0 X1 FWA OF COMMUNICATION BLOCK
SB3 SCT11 RETURN ADDRESS
SA3 X0+CBTLW TASK LIST
BX6 -X6*X3
LX6 12
SA6 A3+
NZ X6,SCT17 IF MORE TASKS TO SCHEDULE FOR C. B.
SA2 X0+CBCR CHECK *CALLRTN* TASKS
LX2 59-CBRFS
NG X2,SCT45 IF TASK WAS INITIATED BY A *CALLRTN*
LX1 17-CBTAS
SX3 X1 TST ADDRESS
SA4 X0+CMBHL+1
ZR X3,SCT8 IF TAF ORIGIN TRANSACTION
LX4 59-CBBTS
MX6 60-TSAUN
NG X4,SCT7 IF BATCH TRANSACTION
.A IFEQ IPTAR,1 IF AUTOMATIC RECOVERY INSTALLED
* IF *SECURE* REQUEST WAS ISSUED, SEND MESSAGE TO TERMINAL.
SB5 B2+NUAPL FWA OF TASK RA
SA4 B2+SECR SEND PARAMETERS FOR *SECURE*
ZR X4,SCT6 IF NO *SECURE* MESSAGE
SA2 B2+SECH APPLICATION BLOCK HEADER
MX0 -AHCTN MASK FOR CHARACTER TYPE
LX2 AHCTN-1-AHCTS RIGHT JUSTIFY CHARACTER TYPE
SA3 B2+CB1C INDICATE TRANSACTION SEND
MX7 1
LX7 CBSDS-59
BX7 X3+X7
SA7 A3+
BX4 -X0*X2 CHARACTER TYPE
SX3 X4-4
NZ X3,SCT4 IF NOT DISPLAY CHARACTER TYPE
LX2 AHCTS-AHCTN+1
BX7 X2
MX5 -AHLCN
BX3 -X5*X2 LENGTH OF MESSAGE
ERRNZ AHLCS-AHLCN+1 IF LENGTH NOT RIGHT JUSTIFIED
RJ CML COMPUTE MESSAGE LENGTH
SA2 B2+SECR *SEND* REQUEST FOR *SECURE*
SB6 X6+ REMAINDER OF MESSAGE OVER WORD BOUNDARY
LX2 17-47 FWA OF MESSAGE RELATIVE TO TASK
SX3 X2+B5 FWA OF MESSAGE RELATIVE TO *TAF*
RJ SEL SET END OF LINE BYTE
MX0 60-AHLCN
SX3 10 COMPUTE MESSAGE LENGTH
BX7 X0*X7
IX6 X1*X3
BX7 X6+X7
SA7 B2+SECH
SA2 B2+SECR FIRST WORD OF *SEND* REQUEST
MX4 60-18
BX2 X4*X2 CLEAR OLD MESSAGE WORD COUNT
BX2 X2+X1 NEW MESSAGE WORD COUNT
BX7 X2
SA7 B2+SECR
SCT4 SA2 B2+SECR FIRST WORD OF *SEND* REQUEST
SB3 X2 WORD COUNT OF MESSAGE
LX2 17-47 FWA OF MESSAGE RELATIVE TO TASK
SB6 X2
SB6 -B6+B1
SA1 B2+CB2C FWA OF TERMINAL
LX1 17-CBTAS
SA4 X1 FIRST WORD OF TERMINAL ENTRY
SX7 SCT5 RETURN ADDRESS
SA7 B2+SCRC+1
LX4 59-TSLIS
EQ SND SEND MESSAGE
SCT5 SA1 B2+SECH
SA2 B2+SECR
RJ REM RESTORE END OF MESSAGE
EQ SCT8 CONTINUE CEASE PROCESS
.A ENDIF
* SEND LAST MESSAGE BLOCK IF IT IS NOT SENT YET.
SCT6 SA2 B2+CB1C COMMUNICATION BLOCK WORD ONE
LX2 59-CBLKS
NG X2,SCT8 IF NOT TO UNLOCK TERMINAL
SA3 X1+
SA4 X1+B1 WORD TWO OF TST
LX3 59-TSLIS
PL X3,SCT8 IF TERMINAL NOT LOGGED IN
LX4 59-TSMSS
SX7 SCT8 RETURN ADDRESS
MX0 -59
BX6 -X0*X4
LX6 TSMSS-59
SA6 A4+
NG X4,SCT8 IF LAST MESSAGE ISSUED
RJ SLB SEND LAST MESSAGE BLOCK
* CLEAR BATCH TRANSACTION USER ACTIVE FLAG.
SCT7 LX6 TSAUS-0
SA4 X3 TST WORD ONE
SX5 CSCE CEASE/JOB END *STEP*
SX3 SCT8 RETURN ADDRESS
BX6 X6*X4
SA6 A4
SA2 B2+CB2C WORD TWO OF C.B.
SA2 X2+CBRTW CHECK IF RECOVERABLE TRANSACTION
LX2 59-CBRTS
PL X2,SCT8 IF NOT RECOVERABLE
RJ WTS WRITE TERMINATION *STEP*
* ENTRY POINT FROM *TSSC* FOR TRANSACTION TERMINATION.
SCT8 SA2 B2+CB2C
SA3 X2+CBTRW CHECK IF RESTART
MX7 -60+CBTRN CLEAR RESTARTED FLAG
LX3 59-CBTRS
PL X3,SCT9 IF NOT RESTART
BX7 -X7*X3
LX7 CBTRS-59
SA7 A3+
SX3 SCT9 RETURN ADDRESS
RJ CID CLEAR *NEWID* ON *CRF*
SCT9 SA2 B2+CB2C
LX2 CBTAN-1-CBTAS GET *TST* ADDRESS
SX7 X2
LX2 CBTAS-CBTAS-CBTAN+1+CBTAS
ZR X7,SCT10 IF NOT *TST* ADDRESS
SA3 X7 CLEAR RECOVERABLE TRANSACTION FLAG
MX7 60-TSNRN
LX7 TSNRS-TSNRN+1
BX7 X7*X3
SA7 A3
SCT10 SA3 B2+CB1C CLEAR NEXT C.B. LINK IN *CB1C*
MX6 60-CBNCN
BX6 X6*X3
SA6 A3
RJ RSC RELEASE SECONDARY COMMUNICATION BLOCKS
SX0 DMCC DATA MANAGER CEASE CODE
RJ PCDM PROCESS CEASE FOR DATA MANAGER
SB3 SCT11 RETURN ADDRESS
NG X5,SCT11 IF DATA MANAGER REQUESTS OUTSTANDING
SA1 B2+CB2C FWA OF COMMUNICATION BLOCK
SX2 X1
RJ RLC RELEASE COMMUNICATION BLOCK
SCT11 MX6 -18
SA1 B7+B1
SX2 B1
BX6 X6*X1 MASK OFF CURRENT C.B. POINTER
LX6 -36
SB5 X6+
IX7 X6-X2 DECREMENT C.B. COUNT
BX6 X6-X6
LX7 36+2
SA6 X1+ ZERO OUT C.B. STATUS WORD
NG X7,SCT13 IF CM RESIDENT TASK
EQ B5,B1,ESCP NO MORE C.B. TO RUN
SCT12 LX7 -2
SA7 A1
NE B5,B1,TSSC IF MORE COMMUNICATION BLOCKS
RJ DCPT DROP CPU FOR TASK
EQ TSSC TIME SLICE SUBCP
* REDUCE CM RESIDENT TASK FL.
SCT13 MX0 -SCNMN
SA2 A1+B1 WORD 3 OF SUBCP TABLE
LX2 SCNMN-SCNMS-1
BX6 -X0*X2 TASK INDEX
TA3 X6+1,VTLD TLD WORD 3
LX3 59-TLRES
PL X3,SCT28 IF REDUCE TASK FL NOT SELECTED
SA2 A3-2 FWA OF TLD ENTRY
MX0 -TLFLN GET TASK ORIGINAL FL
LX2 TLFLN-TLFLS-1
SA3 B7
MX6 -SCFLN
BX0 -X0*X2
LX3 SCFLN-SCFLS-1 GET TASK CURRENT FL
BX4 -X6*X3
LX0 6
BX3 X6*X3 CLEAR OLD FL
BX3 X0+X3
IX0 X4-X0
NG X0,SCT28 IF FL DOES NOT NEED TO BE REDUCED
SA2 AVAILCM UPDATE FREE CORE COUNT
IX6 X2+X0
LX0 SCFCS-SCFCN+1
SA6 A2
LX3 SCFCS-SCFCN+1-SCFLN+SCFLS+1
IX6 X0+X3 UPDATE FREE CORE AFTER SUBCP
SA6 B7
EQ SCT28 SEARCH FOR ADDITIONAL TASKS
* CALLTSK - SCHEDULE A TASK WITH CEASE.
SCT14 SA2 X5+B1 GET COMMUNICATION BLOCK ADDRESS
SB3 SCT11 RETURN ADDRESS
SX6 X3
SX0 X2
SCT15 SA2 B5-B4 TASK LIST
BX6 X6-X6
SX4 60
SCT16 SX4 X4-12
NG X4,TERR5 MORE THAN 5 TASKS IN LIST
SA3 B2+DBNC D.B. OF THIS TASK
SB4 0 DETECT *OFF* STATUS
SB5 0 TASK SEARCH
RJ LTT LOCATE TASK
ZR X6,TERR6 TASK NOT FOUND
SA2 A2+B1 NEXT TASK IN LIST
LX6 12
NZ X2,SCT16 IF MORE TASKS IN LIST
SB4 X4 SHIFT COUNTER
LX6 X6,B4 LEFT JUSTIFY ACCUMULATOR
SCT17 SA3 B7+B1
BX4 X4-X4
SA6 X0+CBTLW STORE CHAIN IN C.B.
PL X3,SCT18 IF NOT A SYSTEM PRIVILEGE TASK
SX4 CMBRL
* SCHEDULE A TASK AND CEASE ONCE THE TASK BIAS HAS BEEN
* DETERMINED. ENTRY IS FROM THE *CALLTRN* PROCESSOR.
*
* ENTRY (B3) = RETURN ADDRESS FOR ROUTINE *ETSQ*.
* (X0) = COMMUNICATION BLOCK ADDRESS.
* (X4) = 0, IF NOT SYSTEM PRIVILEGED TASK.
* = *CMBRL* OTHERWISE.
* (X5) = ADDRESS OF *CB1C* WORD.
SCT18 SA2 X5
SX1 X4+CMBL-CMBHL-CMBRL
SA3 X5+B1 TRANSFER C.B. HEADER WORDS
BX6 X2
LX7 X3
MX2 -48 RESET CPU PRIORITY TO DEFAULT
BX6 -X2*X6
SX3 DCPPR SET DEFAULT CPU PRIORITY
LX3 48
BX6 X3+X6
SX2 B2+NUAPL+SUAC+CMBRL
SA5 B7 SUBCP TABLE HEADER
LX5 59-57
PL X5,SCT19 IF NOT SOLICITED COMMUNICATION BLOCK
SA5 A5+B1 CURRENT COMMUNICATION BLOCK ADDRESS
SA5 X5 COMMUNICATION BLOCK POINTER
LX5 17-35
SX2 X5+ (X2) = FWA C.B. IN TASK AREA
SCT19 SA6 X0
SA7 X0+B1
SX3 X0+CMBHL+CMBRL
IX2 X2-X4 BIAS COUNT IF PRIVELDGED TASK
IX3 X3-X4
RJ MVE= MOVE C.B. BACK TO STORAGE AREA
SCT20 RJ ETSQ ENTER TASK INTO SCHEDULING QUEUE
ZR X6,SCT21 IF THE RTL IS FULL
JP B3 EXIT
* THE RTL IS FULL, SO PLACE TASK IN RECALL.
SCT21 SX1 B3+
SX7 SCT22 RETURN ADDRESS
LX1 18
BX7 X1+X7
SA7 B2+RCL
EQ TRCL PLACE TASK ON RECALL
SCT22 SA2 B2+CB2C RESTORE C.B. ADDRESS
LX1 -18
SB3 X1 RESET EXIT ADDRESS
SX0 X2
EQ SCT20 TRY TO ENTER REQUEST INTO RTL AGAIN
* CALLTSK - SCHEDULE A TASK WITHOUT CEASE.
SCT23 SA1 X5+B1 C.B. HEADER WORD
SA4 B2+BWCC TASK BRANCH COUNT
BX6 X1
SX2 X4-MAXBW
SX7 X4+B1 BUMP BRANCH COUNT
SA7 A4
PL X2,TERR12 TASK BRANCH LIMIT EXCEEDED
SA3 X5
BX7 X3
SA7 B2+SCRC SAVE C.B. HEADER WORDS
SB6 B4
SA6 A7+B1
SCT24 SX0 1 SYSTEM REQUEST
RJ FFCB GET A COMMUNICATION BLOCK
ZR X0,SCT26 IF NO COMMUNICATION BLOCK
SA4 A3+B1 GET TERMINAL ORDINAL
SA3 X1+CMBHL+1
BX7 X3
MX3 -18
SA7 X0+CMBHL+1
SA2 A3-B1 SET UP TASK ACCESSABLE C.B. HEADER
MX7 -24
BX6 X3*X1 CLEAR OLD C.B. ADDRESS
BX6 X6+X0
SA6 A1 SET NEW C.B. ADDRESS INTO C.B. HEADER
MX6 -CBTON
LX4 CBTON-CBTOS-1
BX1 -X6*X4 TERMINAL ORDINAL
BX4 X7*X2 CLEAR TASK SEQUENCE NUMBER
SB3 B6 SAVE FWA OF TASK NAME
RJ ASN GET SEQUENCE NUMBER
BX7 X4+X6 ADD SEQUENCE NUMBER
SA7 A7-B1
SX2 20031B CREATE NEW C.B. HEADER WORD ONE
LX6 18
LX2 -15
BX6 X6+X2 SEQ NUMBER + PRIORITY + MESSAGE SENT
SA6 X5
SB4 B3+ FWA OF TASK NAME
SB3 SCT25 RETURN ADDRESS
EQ SCT15 SCHEDULE TASK
SCT25 SA1 B2+SCRC RESTORE C.B. HEADER WORDS
SA2 A1+B1
MX7 CBLKN SET LOCK TERMINAL FLAG
LX7 CBLKS-59
BX7 X1+X7
LX6 X2
SA7 B2+CB1C
SA6 A7+B1
EQ TSSC ENTER SWITCHING LOOP
* PLACE TASK ON RECALL - NO AVAILABLE C.B.
SCT26 SX1 B6 SAVE IMPORTANT REGISTERS
BX7 -X1
SX4 SCT27 RETURN ADDRESS
LX7 18
BX7 X7+X4
EQ TRCL2 PLACE TASK ON RECALL
SCT27 LX1 -18
SX5 B2+CB1C C.B. HEADER WORD ADDRESS
SB6 X1
SB6 -B6
SA3 X5 GET COMMUNICATION BLOCK ADDRESS
SB5 B2+NUAPL TASK RA
SA1 X5+B1
EQ SCT24 TRY TO BRANCH AGAIN
* FIND TASKS SCHEDULED FOR CORE RESIDENT TASK NOW ENDING.
SCT28 NE B5,B1,SCT12 IF MORE TASKS TO PROCESS
SA2 RTLW RTL RESERVATION WORD
TB4 B7,-VCPA
ZR B4,SCT31 IF *ITASK*, DO NOT CHECK REQUEST TASK LIST
LX7 -2
SB5 0
MX0 12
SA3 A1+1 SUB CP STATUS WORD 3
MX1 1
BX2 X1+X2 LOOKING FOR ZERO BITS
SA7 A1
SX6 B2 SAVE FWA OF TASK SYSTEM AREA
SA6 SCTD
SB2 B0
MX7 -6
BX3 X0*X3 TASK NAME
LX1 -12
SCT29 NX2 B4,X2 FIND A ZERO BIT
SB4 B4+B4 2 WORDS / ENTRY
IX2 X2+X1 CLEAR ZERO BIT
SB5 B5+B4
SB3 B5-RTLL
PL B3,SCT29.1 IF END OF LIST
SA4 B5+RTL RTL ENTRY
BX6 X0*X4 TASK NAME
IX6 X6-X3
NZ X6,SCT29 IF NOT THE SAME TASK
LX4 5-29
BX6 -X7*X4 CURRENT PRIORITY
SB6 X6
LE B6,B2,SCT29 IF PRIORITY .LE. SELECTED
SB2 B6 NEW HIGHEST PRIORITY
SX5 A4+ NEW SELECTED RTL ADDRESS
EQ SCT29 CONTINUE PROCESSING
SCT29.1 SA2 SCTD FWA OF TASK SYSTEM AREA
SX4 B2 SELECTED HIGHEST PRIORITY
SB2 X2 RESTORE (B2)
ZR X4,SCT30 IF NO MATCH FOUND
SB5 X5 GET SELECTED TASK
SA4 A7 STATUS WORD 2
SB4 B7+CPAHL
SA2 B5+1 WORD 2 OF RTL ENTRY
SB3 TSSC RETURN ADDRESS
EQ SCHD9 QUEUE THE C.B.S FOR EXECUTION
SCT30 RJ DCPT DROP CPU FOR TASK
EQ TSSC TIME SLICE SUBCP
SCT31 MX6 1 *ITASK* MAY ACCEPT MORE TRANSACTIONS
SA6 EVIT
EQ SCT12 CHECK FOR MORE WORK FOR TASK
* NEWTRAN - START A NEW TRANSACTION CHAIN.
SCT32 RJ VTO VERIFY TASK ORIGIN
NG X6,TERR11 TASK NOT VALIDATED FOR REQUEST
SB6 B4+
SCT33 SX0 1 SYSTEM REQUEST
RJ FFCB GET A COMMUNICATION BLOCK
ZR X0,SCT34 IF NO C.B. AVAILABLE
SA1 B2+CB1C
SA2 A1+B1
BX6 X1 SAVE OLD C.B. HEADER WORDS
SA6 B2+SCRC
LX7 X2
SA7 A6+B1
SA1 TSEQ
SB4 B6
SX4 DCPPR SET DEFAULT CPU PRIORITY
SX6 B1
LX4 -12
SX3 66B READ/UPDATE SECURITY LEVELS
IX6 X6+X1
BX7 X7-X7
SA6 X0+CMBHL USER ACCESABLE C.B. HEADER
LX3 36
SA7 A6+B1
SB3 SCT25 RETURN ADDRESS
SA6 A1 RESET ADVANCED SEQUENCE NUMBER
SA6 B5-B4
BX7 X3+X0
LX6 18
SB4 B4-B1
IX6 X6+X4
SA7 X5+B1
SA6 X5+
EQ SCT15 SCHEDULE TASK
* PLACE TASK ON RECALL - NO AVAILABLE C.B.
SCT34 SX7 B6 SAVE LIST ADDRESS
BX7 -X7
SX3 SCT35 RETURN ADDRESS
LX7 18
BX6 X3+X7
SA6 B2+RCL
EQ TRCL PLACE TASK ON RECALL
SCT35 LX1 -18 RESTORE IMPORTANT REGISTERS
SX5 B2+CB1C C.B. HEADER WORD ADDRESS
SB6 X1
SB6 -B6
SB5 B2+NUAPL TASK RA
EQ SCT33 TRY AGAIN
* DUMP TASK FIELD LENGTH.
SCT36 SB3 -B4
EQ B3,B1,TERR1 ABNORMAL CEASE WITHOUT DUMP
BX6 X6-X6
SA3 TDSP CHECK *DSP* INTERLOCK
SX7 SRTN4.1
NZ X3,TRCL2 IF A ROUTE IS IN PROGRESS
SA3 B2+CB2C
SA6 DTSG USE *P* AS CALLED FROM ADDRESS
SX0 X3+ COMMUNICATION BLOCK ADDRESS
SB3 X3+3 TASK DUMP CONTROL WORDS
SA1 LOVC
RJ LOVL LOAD/EXECUTE DUMP TASK OVERLAY
EQ TERR1 ABORT TASK
* CALLRTN - SCHEDULE A TASK WITH RETURN.
SCT37 MX4 CBNLN
SA5 X5+B1
SA3 X5+CBCR GET CURRENT NEST LEVEL
MX0 -60+CBNLN
BX6 X4*X3
LX6 6
SB3 X6 NEST LEVEL COUNT
SX6 X6+B1 INCREMENT NEST LEVEL COUNT
BX4 -X0*X3
SX0 X6-NESTL-1
LX6 -6
BX7 X6+X4
PL X0,TERR18 IF NEST LEVEL LIMIT EXCEEDED
GT B3,B1,SCT38 IF NEST LEVEL IS GREATER THAN ONE
SA1 X5+2 SAVE REQUESTED TASK STRING
BX6 X1
SA6 B2+RTSC
SCT38 SB3 SCT41 RETURN ADDRESS
SX0 X5
SA7 A3 UPDATE *CBCR* WORD
SX5 B2+CB1C
EQ SCT15 SCHEDULE TASK(S)
* SET TASK ELIGIBLE FOR ROLLOUT AFTER *RTNDL* MILLESECONDS.
SCT41 RJ FFR RESERVE A ROLLOUT TABLE ENTRY
ZR X0,SCT43 IF ROLLOUT TABLE ENTRY NOT AVAILABLE
SA3 B2+CB2C GET C.B. ADDRESS
SX2 B1 SET *CALLRTN* FLAG IN *CBCR* WORD
SA1 X3+CBCR
LX2 CBRFS
BX7 X1+X2
SA7 A1
SCT42 SX5 RTDNL TIME ALLOWED BEFORE ROLLOUT
SX1 X3+ C.B. ADDRESS
SX4 0500B ROLLIN BASED ON SCHEDULING PRIORITY + 5
LX1 30
BX1 X1+X4
SB4 EVCR ROLLOUT TYPE
BX6 X6-X6
PX6 X6,B4
JP ROL3 SET TASK ELIGIBLE FOR ROLLOUT
* PLACE TASK IN RECALL.
SCT43 SX7 SCT41 RETURN ADDRESS
JP TRCL2 PLACE TASK IN RECALL
* PROCESS CEASE FROM A *CALLRTN* INITIATED TASK.
SCT45 SA5 X0+CBCR
SA2 B2+CB1C TRANSFER C.B. HEADER WORD 1
BX6 X2
MX3 -6
SB3 X5 ROLLOUT TABLE ADDRESS
LX5 12
BX5 -X3*X5 SUB CONTROL POINT NUMBER OF CALLER
SA6 X0
SA3 A2+B1 TRANSFER C.B. HEADER WORD 2
BX6 X3
SA6 X0+B1
LX5 SCPAL
TX5 X5-CPAL,VCPA SUB CONTROL POINT OF CALLER
SX1 CMBL-CMBHL-CMBRL
SX2 B2+NUAPL+SUAC+CMBRL
SA4 B7 SET SUBCP TABLE WORD 1
LX4 59-57
PL X4,SCT47 IF NOT SOLICITED C.B. LOAD
SA4 A4+B1 SET STATUS POINTER WORD
SA4 X4 SET COMMUNICATION BLOCK WORD
LX4 17-35
SX2 X4 SET FWA OF USER SPECIFIED BUFFER
SCT47 SX3 X0+CMBHL+CMBRL
RJ MVE= RECOPY COMMUNICATION BLOCK
SA2 B3
NG X2,SCT48 IF CALLERS ROLLOUT COMPLETE
SA4 X5
SX4 X4-NUAPL SUB CONTROL POINT AREA OF CALLER
SA4 X4+ROSC
MX7 1
BX7 X7+X4 SET FINISHED DURING ROLLOUT FLAG
SA7 A4+
SA4 X5+SCCCW GET ACTIVE C.B.
MX7 42
SA4 X4 RESET NEW C.B. ADDRESS
BX7 X7*X4
BX7 X7+X0
SA7 A4+
JP SCT11 CONTINUE CEASE PROCESSING
* REQUEST ROLL IN OF CALLER.
SCT48 SA4 B3
SX3 X4
NZ X3,SCT50 IF NOT CALLED BY CORE RESIDENT TASK
SA5 X5+SCCCW RESET NEW C.B. ADDRESS
MX7 42
SA5 X5
BX7 X7*X5
BX7 X7+X0
SA7 A5
LX4 -18
SA5 X4 SUB CONTROL POINT ADDRESS OF TASK
SB5 X5-NUAPL CONTROL POINT AREA OF CORE RESIDENT TASK
SB6 X4
SX4 B3 ROLLOUT TABLE ADDRESS
SB3 SCT49
JP ROL16 RELOAD C.B. AND RESTORE OLD ROLLOUT WORDS
SCT49 SB3 SCT11 CONTINUE CEASE PROCESSING
SX4 B5+
JP RCPU REQUEST CPU FOR CORE RESIDENT TASK
SCT50 SX5 B3
RJ MSQ MAKE SCHEDULER ENTRY FOR ROLL IN
JP SCT11 CONTINUE CEASE PROCESSING
* WAITINP - WAIT FOR TERMINAL INPUT.
* BWAITINP - BUFFERED WAIT FOR TERMINAL INPUT.
SCT51 SA3 B2+CB1C COMMUNICATION BLOCK WORD 1
BX4 X3
SA1 B7+B1
MX7 1 PRESET ERROR CODE
SA2 B2+CB2C COMMUNICATION BLOCK WORD 2
LX4 59-CBSDS LEFT JUSTIFY SEND FLAG
LX1 2
NG X1,TERR20 IF CM RESIDENT TASK
PL X4,TERR28 IF NO SEND PRIOR TO WAIT INPUT
LX1 -2-36
SX3 X1-1
LX2 CBTAN-1-CBTAS RIGHT JUSTIFY TERMINAL ADDRESS
SX6 X2 TERMINAL STATUS TABLE ADDRESS
NZ X3,TERR21 IF MORE THAN ONE TRANSACTION USING TASK
ZR X6,TERR20 IF NO ORIGINATING TERMINAL
SA3 X6+TSIWW INPUT WANTED STATUS FOR TERMINAL
LX3 59-TSIWS
ZR X3,SCT56 IF TERMINAL IN INPUT WANTED STATE
SX7 SCT52 RETURN ADDRESS
RJ SLB SEND LAST BLOCK
SCT52 MX4 TSIWN SET INPUT WANTED FLAG
SA3 B2+CB2C GET TST ADDRESS
LX4 CBITS-59
SA2 X3+CBITW SET INITIAL TRANSFER BIT
LX3 CBTAN-1-CBTAS
ERRNZ TSIWN-CBITN INPUT WANTED .NE. INITIAL TRANSFER
BX6 X4+X2
SA6 A2+
SA2 X3+TSIWW GET TST WORD 2
LX4 TSIWS-59-CBITS+59
BX6 X2+X4 ADD INPUT WANTED FLAG
SA6 A2 UPDATE TST WORD 2
LX3 17-CBFWS-CBTAN+1+CBTAS
SX2 X3
MX7 CBTON
BX7 X7*X3 TERMINAL ORDINAL
ERRNZ CBTOS-59 IF TERMINAL ORDINAL NOT LEFT JUSTIFIED
LX7 35-59
SA7 B2+RCLA
SA3 X2+CBTLW SAVE W3 - W6 OF C.B. SYSTEM HEADER
SA4 A3+B1 WORD 4
BX6 X3
SA5 A4+B1 WORD 5
BX7 X4
SA6 B2+WICB
SA3 A5+B1 WORD 6
SA7 A6+B1
BX6 X5
BX7 X3
SA6 A7+B1
SA7 A6+B1
RJ RLC RELEASE COMMUNICATION BLOCK
SCT53 SX7 SCT53
RJ FFR RESERVE A ROLLOUT TABLE ENTRY
ZR X0,TRCL2 IF ROLLOUT TABLE FULL
SA1 B7+B1
SX3 B7
MX6 42
BX6 X6*X1 CLEAR SUB CP C.B. STATUS WORD POINTER
SA2 B2+CB1C+1
BX6 X6+X3
LX2 -42
SX1 30B WAITING FOR INPUT AND TIMED ROLLOUT
SX2 X2 TERMINAL ORDINAL
SA6 A1
LX2 18
SX7 B1
LX1 54
SA3 B2+LRA1 RETRIEVE PARAMETER ADDRESS
BX1 X1+X2
SB3 B2+NUAPL TASK RA
SA4 SCTA READ BUFFER-*WAITINP* REQUEST
MX2 42
BX5 X2*X3
BX5 X5-X4
MX2 -11
NZ X5,SCT54 IF NOT BUFFER *WAITINP* REQUEST
MX5 1 SET RECALL BIT IN *LRA1*
LX5 40-59
BX6 X5+X3
SX4 DWITL (X4) = DEFAULT *WAITINP* TIMEOUT LIMIT
SA6 A3
EQ SCT55 CONTINUE PROCESSING BUFFER *WAITINP*
SCT54 SA4 X3+B3 READ TASK SUPPLIED TIME-OUT VALUE
SA7 A4 SET ROLLOUT COMPLETE FLAG FOR TASK
BX4 -X2*X4 USER DESIRED TIME OUT ON WAIT FOR INPUT
MX7 -RTTLN MASK SECONDS
NZ X4,SCT55 IF USER SPECIFIED TIME OUT
SX4 DWITL DEFAULT TIME OUT FOR WAIT ON INPUT
SCT55 SA2 LTIME CURRENT TIME
BX5 X5-X5
AX2 36
BX2 -X7*X2
IX2 X2+X4 TIME TO TIME OUT TASK WAITING FOR INPUT
LX2 30
BX1 X2+X1
SB4 EVWI ROLLOUT TYPE
SA2 B2+CB1C
MX3 -CBTSN MASK TRANSACTION SEQUENCE NUMBER
LX2 CBTSN-CBTSS-1 RIGHT JUSTIFY SEQUENCE NUMBER
BX6 -X3*X2
LX6 RTTSS-RTTSN+1
SA3 B2+WICB+3 GET *CDCS* CONNECTION FLAG
MX7 1
LX3 59-CDDM
BX2 X7*X3
LX2 RTCDS-59
BX6 X2+X6 ADD *CDCS* CONNECTION FLAG
PX6 X6,B4
EQ ROL3 ROLLOUT TASK UNTIL INPUT RECEIVED
SCT56 SA7 B2+16B SET STATUS IN TASK X6
EQ TSSC ENTER MAIN LOOP
* WAIT - ROLL TASK OUT FOR SPECIFIED TIME PERIOD.
SCT57 SA3 X5
SA4 B5-B4 PARAMETER WORD
MX6 -12
SA1 B7+B1 GET WORD 2 OF SUBCP TABLE ENTRY
SA3 LTIME
MX7 24
BX6 -X6*X4 USER REQUESTED ROLLOUT TIME (IN SECONDS)
SX5 X6-MINTL MINIMUM TIME TO STAY IN CORE
BX7 X7*X3 CURRENT SECOND COUNT FROM REAL TIME CLOCK
LX6 36
SX4 12B
IX6 X6+X7 TIME AT WHICH TO ROLLIN TASK
LX6 -6
LX1 59-SCCRS POSITION CM RESIDENT BIT
LX4 54
NG X1,SCT58 IF CM RESIDENT TASK
NG X5,SCT58 IF DELAY PERIOD IS LESS THAN *MINTL*
SX5 B0
BX1 X4+X6 EVENT DESCRIPTOR
JP ROLL ROLLOUT TASK
* PUT TASK INTO RECALL.
SCT58 SX7 SCT59 RETURN ADDRESS
LX6 6 POSITION BACK
IX7 X6+X7
EQ TRCL2 PUT TASK INTO RECALL
* PROCESS TASK AFTER RECALL.
SCT59 MX3 24 CHECK IF REAL TIME ELAPSED
SA2 LTIME
BX4 X3*X1 TASK ACTIVATION TIME
BX5 X3*X2 REAL TIME
IX6 X4-X5
PL X6,TRCL IF NOT TIME TO ACTIVATE TASK
EQ TSSC ENTER MAIN LOOP
* CHKON - SET *TOTAL* INTERLOCK FLAG.
SCT60 SA1 B2+DBNC DATA BASE NAME
RJ VTO VERIFY TASK ORIGIN
SA3 TOTLCK TOTAL INTERLOCK FLAG
NG X6,TERR26 IF TASK ORIGIN NOT TASKLIB
SA2 B2+CB1C SEQUENCE NUMBER
NZ X3,TERR26 IF INTERLOCK ALREADY SET
MX3 24
LX2 18
SX1 X1 TASK ID
BX6 X3*X2 SEQUENCE NUMBER
BX6 X6+X1
SA6 A3 SET TOTAL INTERLOCK FLAG
EQ TSSC REQUEST COMPLETE - REENTER SWITCHING LOOP
* CHKOFF - CLEAR *TOTAL* INTERLOCK FLAG.
SCT61 SA1 B2+CB1C TASK SEQUENCE NUMBER
RJ VTO VERIFY TASK ORIGIN
SA2 TOTLCK TOTAL INTERLOCK FLAG
NG X6,TERR26 IF TASK ORIGIN NOT TASKLIB
ZR X2,TERR26 IF INTERLOCK NOT SET
MX3 24
LX1 18
BX2 X3*X2
BX1 X3*X1
IX6 X1-X2 VERIFY SEQUENCE NUMBER OF TASK
NZ X6,TERR26 IF NOT THE SAME TASK AS THE SETTING TASK
SA6 TOTLCK CLEAR TOTAL INTERLOCK FLAG
EQ TSSC REQUEST COMPLETE - REENTER SWITCHING LOOP
* CALLTRN - SCHEDULE A TRANSACTION.
SCT62 RJ VTO VALIDATE TERMINAL ORIGIN
NG X6,TERR11 IF NOT SYSTEM ORIGIN TASK
SA2 B5-B4 PARAMETER WORD
SA3 B2+DBNC GET DATA BASE NAME
SB5 B1 TRANSACTION SEARCH
RJ LTT LOCATE TRANSACTION
ZR X6,TERR40 IF TRANSACTION NAME UNKNOWN
SA4 A1+B1 WORD TWO OF TRD ENTRY
BX6 X4
SA4 B2+CB2C SYSTEM C.B. HEADER
SA6 X4+CBTLW PUT TASK LIST IN C.B.
SB3 X4 FWA OF C.B.
SA4 X4+CBCSW
SA2 A1 WORD ONE OF TRD ENTRY
MX6 -1
BX3 -X6*X2
LX3 CBRTS-0
BX4 X4+X3 ADD RECOVERABLE TRANSACTION FLAG
MX6 -2
LX6 TDDCS-TDRMS
BX3 -X6*X2
LX3 CBCSS-TDDCS
BX6 X4+X3 ADD DATA MANAGERS ALLOWED FLAG
SA6 A4
ERRNZ TDDCS-TDRMS-1 BITS MUST BE ADJACENT
ERRNZ CBCSS-CBRMS-1 BITS MUST BE ADJACENT
RJ RTI RECOVER TERMINAL INPUT
SX5 B2+CB1C
BX4 X4-X4
SA2 X5+B1 GET COMMUNICATION BLOCK ADDRESS
SX0 X2+ FWA OF C.B.
SB3 SCT11 RETURN ADDRESS AFTER TASK IS SCHEDULED
EQ SCT18 SCHEDULE FIRST TASK
SCTA VFD 24/4LSCTP,6/0,12/9,18/0 FORM OF BUFFER-*WAITINP*
SCTB BSS 1 BIAS OF *OFFTASK*
SCTC BSS 1 BIAS OF *CTASK*
SCTD CON 0 FWA OF TASK SYSTEM AREA
AAM SPACE 4,30
** AAM - ADVANCED ACCESS METHODS REQUEST PROCESSOR.
* AAM ENTERS REQUEST INTO *AMIQ* INPUT QUEUE.
*
* ENTRY (X5) = 24/3LAAM,18/FNC,18/ADR
* FNC - FUNCTION CODE FOR REQUEST.
* ADR - ADDRESS OF PARAMENTER LIST.
*
* EXIT TO *DCPT* IF NO ERRORS AND RECALL REQUESTED.
* TO *TERR2* IF INCORRECT PARAMETER ADDRESS.
* TO *TERR3* IF INCORRECT FUNCTION CODE.
* TO *TERR39* IF AAM USAGE NOT SELECTED
* TO *TERR30* IF *CRM* DATA MANAGER NOT LOADED.
* TO *TRCL* IF NO MORE TRANSACTIONS CAN MAKE REQUESTS.
* TO *TRCL2* IF INPUT QUEUE IS FULL.
* TO *TSSC* IF NO ERRORS AND NO RECALL REQUESTED.
*
* *AMIQ* CONTAINS QUEUE ENTRY -
*
* 24/ TS,6/0,6/ FC,1/R,5/ SN,18/ ADR
* TS - TRANSACTION SEQUENCE NUMBER
* FC - REQUEST FUNCTION CODE.
* R - RECALL FLAG, ALWAYS = 1 FOR RECALL.
* SN - SUB-CONTROL POINT NUMBER.
* ADR - FWA OF REQUEST PARAMETERS.
*
* USES X - ALL.
* A - 1, 3, 4, 5, 7.
* B - 3, 4, 5.
*
* CALLS PDIF.
AAM TX3 0,VAAM,LWA AAM INITIALIZATION FLAG
SB4 X5+ ADDRESS OF PARAMETERS
ZR X3,TERR30 IF *CRM* DATA MANAGER NOT LOADED
ZR B4,TERR2 IF PARAMETER ADDRESS ZERO
LX5 -18
SB4 -B4
SX0 X5 FUNCTION CODE
SX6 X1+B4
NG X6,TERR2 IF PARAMETER ADDRESS OUT OF BOUNDS
PL B4,TERR2 IF PARAMETER ADDRESS OUT OF BOUNDS
SX6 X5-100B
PL X6,TERR3 IF FUNCTION CODE GREATER THAN 6 BITS
SX3 X0-DMCC
ZR X3,TERR3 IF TASK USED DATA MANAGER CEASE CODE
* BUILD INPUT QUEUE REQUEST.
LX0 30-6 FUNCTION CODE
SX4 -B4 ADDRESS OF PARMETER LIST
SB3 AAM6 RETURN ADDRESS
SA2 B2+CB2C COMMUNICATION BLOCK ADDRESS
SA3 X2+CBSOW
LX3 59-CBSOS
NG X3,AAM1 IF SYSTEM TASK
SX1 X5
SX2 X1-TRSR
PL X2,TERR3 IF TASK USED SYSTEM REQUEST
* ENTRY POINT FOR TASK CEASE.
AAM1 TX2 B7+CPAL,-VCPA COMPUTE SUBCP NUMBER
SA3 B2+TRID TRANSACTION IDENTIFIER
IX4 X4+X0 ADD FUNCTION CODE
MX0 1
LX0 23-59 FORCE RECALL
AX2 SCPAL
BX4 X4+X0 ADD RECALL BIT
LX2 23-5 SUB-CONTROL POINT NUMBER
BX4 X4+X2 ADD SUB CONTROL POINT NUMBER
LX3 59-23 POSITION TRANSACTION IDENTIFIER
SA5 AAMA AAM STATUS WORD
SX1 B1
BX6 X4+X3 ADD TRANSACTION IDENTIFIER
SA3 B2+CB2C FWA OF COMMUNICATION BLOCK
SX0 X3+
SA3 X3+CBCR
LX3 59-AAMDM
MX7 1
NG X3,AAM3 IF TRANSACTION MADE A PREVIOUS REQUEST
* IF TRANSACTION RECOVERABLE AND AAM REQUEST NOT ALLOWED,
* ABORT TASK.
SA4 X0+CBRTW
LX4 59-CBRTS
PL X4,AAM2.1 IF NOT A RECOVERABLE TRANSACTION
ERRNZ CBRTW-CBRMW RECOVERABLE TRANSACTION BIT NOT IN SAME
WORD AS *CRM* ALLOWED BIT
LX4 59-CBRMS-59+CBRTS
PL X4,TERR39 IF AAM USAGE NOT SELECTED
* CHECK IF ANOTHER TRANSACTION CAN MAKE REQUEST.
AAM2.1 LX5 17-35 FUNCTION
SB4 X5
BX7 X7+X3 ALLOW TRANSACTION TO USE AAM
LX7 AAMDM-59
SA7 A3+
ZR B4,AAM9 IF AAM CANNOT ACCEPT CALLS
IX5 X5-X1 DECREMENT AAM TRANSACTION COUNT
LX5 18
BX7 X5
SA7 A5
* ENTER REQUEST INTO INPUT QUEUE.
AAM3 TB5 0,VAAQ FWA OF INPUT QUEUE FET
SX4 B3+ SAVE RETURN ADDRESS
AAM4 RJ PDIF PUT ENTRY IN INPUT QUEUE
SB3 X4 RESTORE RETURN ADDRESS
ZR X7,AAM7 IF INPUT QUEUE FULL
MX1 -6
BX7 X7-X7 INSURE THAT *AMI* WILL BE CALLED
LX6 -24
SA7 DTIME
BX1 -X1*X6
SX3 B1
SX1 X1-DMCC
IX7 X5+X3 ADVANCE OUTSTANDING REQUESTS
SA7 A5
ZR X1,AAM5 IF TASK CEASE REQUEST
SA1 B2+AAMC AAM STATUS WORD
IX6 X1+X3 AAM OUTSTANDING REQUEST COUNT
SA6 A1
AAM5 JP B3 RETURN
AAM6 RJ DCPT DROP THE CPU FOR THE TASK
EQ TSSC TIME SLICE SUBCP
* PLACE TASK IN RECALL BECAUSE QUEUE IS FULL.
AAM7 SX7 AAM8 RESTART ADDRESS FOR TASK RECALL
SX2 B3+ RETURN ADDRESS AFTER TASK MAKES REQUEST
LX2 18
BX7 X7+X2 SAVE RETURN ADDRESS
SA6 B2+RCLA
EQ TRCL2 PLACE TASK ON RECALL
* TASK HAS COME OUT OF RECALL. TRY PUTTING REQUEST
* IN QUEUE AGAIN.
AAM8 AX1 18
SA4 A1+B1 AAM INPUT QUEUE ENTRY
SA5 AAMA AAM STATUS WORD
SB3 X1 RETURN ADDRESS
BX6 X4 SET INPUT QUEUE ENTRY
EQ AAM3 TRY TO PLACE IN QUEUE AGAIN
* PLACE TASK ON RECALL BECAUSE NO MORE TRANSACTIONS
* MAY USE DATA MANAGER AT THIS TIME.
AAM9 SX7 AAM10 RETURN ADDRESS FROM RECALL
SX2 B3+ RETURN ADDRESS AFTER PLACING IN QUEUE
LX2 18
BX7 X7+X2
SA6 B2+RCLA SAVE QUEUE ENTRY
SA7 B2+RCL
EQ TRCL PLACE TASK ON RECALL
* TASK HAS COME OUT OF RECALL. CHECK TO SEE IF DATA
* MANAGER CAN NOW HANDLE NEW TRANSACTION.
AAM10 SA5 AAMA AAM STATUS WORD
SX3 B1
LX5 -18
SB4 X5
ZR B4,TRCL IF STILL UNABLE TO START TRANSACTION
IX7 X5-X3 DECREMENT TRANSACTIONS MAKING REQUESTS
LX7 18
SA7 A5
EQ AAM8 SET UP QUEUE REQUEST
*T AAMA 24/0,18/ ANS,18/ ANO
*
* ANS - MAXIMUM TRANSACTIONS MAKING *CRM* REQUESTS.
* ANO - NUMBER OF OUTSTANDING TRANSACTIONS.
AAMA VFD 24/0,18/0,18/0
CPM SPACE 4,25
** CPM - CONTROL POINT MANAGER.
*
* FUNCTION PROCESSOR FOR *CPM* FUNCTIONS 27B - GET JOB ORIGIN
* AND 137B - GET CONSOLE TYPE. IN ORDER FOR SOME PRODUCT SET
* BINARIES TO MAKE RUN-TIME DETERMINATION AS TO WHETHER OR NOT
* THE CODE SEGMENT IS EXECUTING IN THE TRANSACTION ENVIRONMENT,
* THE *GETJO* FUNCTION OF *CPM* IS SUPPORTED.
*
*T 18/ CPM, 6/ R, 12/ FUNC, 24/ ADDR.
*
* ADDR - ADDRESS TO RETURN JOB ORIGIN.
*
* ENTRY (X1) = TASK FL.
* (X5) = SYSTEM REQUEST.
* (B3) = TASK RA.
*
* EXIT TO *TERR2* IF INCORRECT PARAMETER ADDRESS.
* TO *TERR3* IF INCORRECT *CPM* FUNCTION CODE.
* TO *TSSC* UPON COMPLETION.
*
* USES A - 7.
* X - 0, 6, 7.
* B - 4, 6.
*
* MACROS CSTATUS.
CPM SB6 X1+ (B6) = FL
SB4 X5 (B4) = ADDRESS OF PARAMETERS
SX6 B4-B6
PL X6,TERR2 IF ADDRESS OUT OF BOUNDS
LE B4,B1,TERR2 IF ADDRESS OUT OF BOUNDS
MX0 -12 EXTRACT *CPM* FUNCTION CODE
BX6 X5
LX6 11-35
BX6 -X0*X6
SX6 X6-137B
SX7 TROT SET TRANSACTION ORIGIN
ZR X6,CPM2 IF CONSOLE TYPE REQUESTED
SX6 X6-27B+137B
NZ X6,TERR3 IF UNSUPPORTED FUNCTION CODE REQUESTED
* PROCESS 27B REQUEST BY RETURNING TRANSACTION ORIGIN TO TASK.
SA7 X5+B3
EQ TSSC ENTER TASK SWITCHING LOOP
* PROCESS 137B REQUEST BY RETURNING CONSOLE TYPE TO TASK.
CPM2 CSTATUS B3+B4
EQ TSSC ENTER TASK SWITCHING LOOP
D00 SPACE 4,40
** D00 - DIAGNOSTIC FUNCTION PROCESSOR.
*
* *D00* IS CALLED BY THE COBOL DIAGNOSTIC ROUTINES TO
* RETRIEVE MESSAGE TEXTS FROM *STEXT* TYPE RECORDS WHICH
* RESIDE ON THE SYSTEM FILE.
*
*T 18/ D00, 6/ R, 18/ 0, 18/ ADDR.
*
* ADDR 12/ FUNC, 12/ MESS NUM, 12/ BUF LEN, 18/ BUF, 6/ 0.
*
* WHERE - FUNC = DIRECTIVES TO *DOO* FOR MESSAGE DESTINATION.
* MESS NUM = MESSAGE NUMBER TO BE RETRIEVED.
* BUF LEN = LENGTH OF MESSAGE BUFFER.
* BUF = FWA OF BUFFER.
*
* RESPONSE -
*
*T ADDR 36/ 0, 12/ WORD COUNT, 12/ 1
*
* WORD COUNT = LENGTH OF THE TRANSFERRED CHARACTER STRING.
* = 7777B - IF AN ERROR STATUS FOR EITHER
* NON-EXISTENT ERROR NUMBERS OR *STEXTS*.
*
* *D00* WILL NOT ABORT THE EXECUTIVE FOR SUCH ERRORS.
* THEREFORE, ERROR CHECKING SHOULD BE PERFORMED BY THE
* EXECUTIVE PRIOR TO RETURN TO THE SUB-CONTROL POINT.
*
* USES A - 1, 7.
* X - 0, 1, 4, 6, 7.
* B - 4, 6.
*
* EXITS TO *TERR2*, IF PARAMETER ADDRESS INCORRECT.
* TO *TERR3*, IF ERROR DETECTED BY *D00* ON CALL.
* TO *TSSC*, UPON COMPLETION OF REQUEST.
*
* CALLS SYS=.
D00 SB6 X1 (B6) = FL
SB4 X5 (B4) = ADDRESS OF PARAMETERS
SX6 B4-B6
MX0 -18
PL X6,TERR2 IF ADDRESS OUT OF BOUNDS
SA1 X5+B3 READ REQUEST WORD
LE B4,B1,TERR2 IF ADDRESS OUT OF BOUNDS
* VALIDATE AND RELAVITIZE ADDRESS IN PARAMETER BLOCK.
LX1 17-23
BX6 -X0*X1
MX0 -12 EXTRACT BUFFER LENGTH FOR BOUNDS CHECKING
LX1 11-29
BX7 -X0*X1
IX6 X6+X7
SX4 B6 (X4) = SUBCP FL
SX7 B3 (X7) = RA(S)
IX6 X6-X4
LX7 6
PL X6,TERR2 IF ADDRESS OUT OF BOUNDS
LX1 35-11
IX7 X7+X1 (X7) = BIASED *D00* HEADER
BX6 X7 TEST FOR UNSUPPORTED SUB-FUNCTION CODE
LX6 59-58
NG X6,TERR3 IF UNSUPPORTED FUNCTION CODE
SA7 A1
* RELAVATIVE ADDRESS POINTER IN REQUEST WORD.
SX7 B3+
MX4 1 SET RECALL UNCONDITIONALLY
BX6 X5
LX4 40-59
IX6 X6+X7
BX6 X6+X4
RJ SYS= RE-ISSUE REQUEST TO SYSTEM
* CHECK FOR RETURNED ERROR STATUS FROM *D00*.
SA1 X6 READ REQUEST WORD
LX1 59-23
NG X1,TERR3 IF ERROR STATUS RETURNED
EQ TSSC ENTER TASK SWITCHING LOOP
SSC SPACE 4,50
** SSC - SYSTEM CONTROL POINT REQUEST.
*
* THIS PROCESSOR ACCEPTS THE TASK REQUEST, ADDS TASK-S RA, FL,
* AND SEQUENCE NUMBER TO WORD 2 OF REQUEST BLOCK AND ISSUES
* THE *SSC* REQUEST WITHOUT RECALL. THE FORMAT OF REQUEST IS
*
*T W0 24/RCDS,12/RIN,6/WC,4/RCDC,2/RT,6/RC,5/SF,1/CB
*T,W1 18/EBUF,9/ENUM,27/ ,6/FC
*T,W2 18/RA,18/FL,24/TS
*
* RT - RETURN CONTROL FLAG.
* RC - REASON CODE RETURNED BY *CDCS*.
* SF - ERROR STATUS.
* CB - COMPLETE BIT.
* EBUF - ERROR MESSAGE BUFFER.
* FC - FUNCTION CODE.
* RA - RA OF TASK.
* FL - FL OF TASK.
* TS - TRANSACTION SEQUENCE NUMBER.
*
* 1. VERIFY THAT THE REQUEST BLOCK IS IN THE TASK-S FL AND
* THAT THE REQUEST IS FOR *CDCS*.
* 2. IF A TERMINATION REQUEST IS NOT THE LAST TASK OF THE
* TRANSACTION, RETURN WITH THE COMPLETION BIT SET TO 1.
* 3. SET THE RETURN CONTROL FLAG IN FWA OF THE REQUEST BLOCK.
* 4. SET THE TASK-S RA, FL, AND SEQUENCE NUMBER IN WORD 2.
* 5. ISSUE THE REQUEST WITHOUT RECALL.
* 6. IF THE REQUEST IS NOT COMPLETE, PUT THE TASK IN RECALL.
* 7. IF *CDCS* IS NOT PRESENT, ABORT THE TASK.
* 8. IF *CDCS* IS BUSY, PUT THE TASK IN RECALL AND TRY TO
* REISSUE THE REQUEST LATER.
* 9. IF A FATAL ERROR OCCURS, MOVE THE FATAL CDCS MESSAGE
* TO THE LAST 14 WORDS OF TASK COMMUNICATION BLOCK (*MSABT*
* WILL SEND THIS MESSAGE TO THE ORIGINATING TERMINAL).
* JOURNAL THE ERROR MESSAGE AND ABORT THE TASK.
* 10. RETURN TO CALLER.
*
* ENTRY (X1) = TASK FL.
* (X5) = 24/4LSSCP,18/SS,18/FWA PARAMETER BLOCK.
* SS = SUBSYSTEM PRIORITY.
* (B2) = FWA OF SYSTEM AREA.
* (B7) = FWA OF SUBCONTROL POINT TABLE.
* (B5) = TASK RA.
*
* EXIT TO *TERR31* IF *CDCS* NOT PRESENT.
* TO *TERR32* IF FATAL ERROR.
* TO *TERR39* IF *CDCS* USAGE NOT SELECTED.
* TO *TSSC* OR *PCDMX* IF NO ERROR.
* WORD *CBCR* BIT *CDCSDM* OF C.B. UPDATED.
*
* USES X - ALL.
* A - 1, 2, 3, 4, 5, 6, 7.
* B - 3, 4, 5, 6.
*
* CALLS SSM, SYS=, TRCL.
SSC SB3 TSSC RETURN ADDRESS
SA2 CDST
NZ X2,SSC13.1 IF CDCS ABORTED
MX0 -CDFCN
SB4 X5 FWA OF PARAMETER BLOCK
SX2 X5+B1
IX2 X1-X2
LE B4,B1,TERR2 IF ADDRESS OUT OF RANGE
NG X2,TERR2 IF ADDRESS OUT OF RANGE
MX7 -12 MASK SUBSYSTEM PRIORITY
LX5 0-18
SX2 CDSI *CDCS* SUBSYSTEM ID
BX7 -X7*X5
IX3 X2-X7
NZ X3,TERR4 IF INCORRECT SYSTEM REQUEST
SB4 B4+B5 FWA OF PARAMETER BLOCK
LX5 18-0
SA2 B4+B1 FETCH FUNCTION CODE
MX6 6
SX4 CDNT NORMAL TERMINATION FUNCTION CODE
BX2 -X0*X2
IX0 X2-X4
NZ X0,SSC1 IF NOT TERMINATION REQUEST
SA2 B2+CB2C
SA3 X2+CBCR
SX0 B1
BX7 X6*X3
SA4 X2+2 GET TASK LIST
BX4 X7+X4
ZR X4,SSC1 IF LAST TASK IN CHAIN
SA3 B4
BX6 X3+X0 SET COMPLETE BIT
SA6 B4
EQ TSSC ENTER MAIN LOOP
* ENTRY POINT FROM *PCDM*.
*
* (B2) = FWA OF TASK SYSTEM AREA.
* (B3) = RETURN ADDRESS.
* (B4) = FWA OF PARAMETER BLOCK.
* (B5) = TASK RA.
* (B7) = FWA OF TASK SUBCONTROL POINT TABLE.
* (X1) = TASK FL.
* (X5) = 24/4LSSCP,18/,18/FWA OF PARAMETER BLOCK.
SSC1 MX7 -59 CLEAR RECALL FLAG
SX4 B5 TASK RA
SA2 CDST
NZ X2,SSC13.1 IF CDCS ABORTED
SA2 STAT20 UPDATE NUMBER OF *SSC* REQUESTS FOR TASKS
SX6 B1
IX6 X2+X6
SA6 A2
MX0 CDRTN ADD RETURN CONTROL FLAG
SA2 B2+CB1C GET TRANSACTION SEQUENCE NUMBER
SA3 B2+CB2C GET FWA OF COMMUNICATION BLOCK
SA3 X3+CBRTW
LX3 59-CBRTS
PL X3,SSC1.1 IF NOT RECOVERABLE TRANSACTION
ERRNZ CBRTW-CBCSW RECOVERABLE TRANSACTION BIT NOT IN SAME
WORD AS *CDCS* ALLOWED BIT
LX3 59-CBCSS-59+CBRTS
PL X3,TERR39 IF *CDCS* USAGE NOT ALLOWED
SSC1.1 LX7 40-59
BX6 -X7*X5 DELETE RECALL FLAG
SA3 B4 FIRST WORD OF PARAMETER BLOCK
LX2 CDTSS-CBTSS
SA6 B2+CDFN SAVE REQUEST WORD
LX0 CDRTS-59
LX1 CDFLS-17
IX6 X6+X4 ADD TASK RA TO REQUEST WORD
MX7 CDHDN
BX3 X7*X3 CLEAR RC, SF, AND CB FIELD
LX4 CDRAS-17
BX7 X3+X0 ADD RETURN CONTROL FLAG
SA7 B4
BX4 X4+X1 ADD RA AND FL
MX0 -CDTSN
BX3 -X0*X2 MASK TRANSACTION SEQUENCE NUMBER
BX7 X3+X4
SA1 CMPF GET PAUSE FLAG
SA7 B4+CDRAW
NZ X1,SSC2 IF PAUSE FLAG SET
SA5 SSCC GET OUTSTANDING REQUEST COUNT
SX7 X5-MAXR
NG X7,SSC4 IF OUTSTANDING REQUESTS LESS THAN MAXR
SSC1.5 SA2 STAT18 UPDATE NUMBER OF *SSC* REJECTS FOR *MAXR*
SX6 B1+
IX6 X2+X6
SA6 A2+
* PUT TASK INTO RECALL.
SSC2 SX7 SSC3 RETURN ADDRESS
SB5 B2+NUAPL SUBCP RA
SX3 B4-B5 SAVE PARAMETERS FOR RECALL
SX2 B3
LX3 18
LX2 -18
BX7 X3+X7
BX7 X2+X7 (X7) = 18/ADDR,6/0,18/FWA OF PAR,18/SSC3
EQ TRCL2 PUT TASK INTO RECALL
* RETURN FROM RECALL.
SSC3 LX1 -18 RESET PARAMETERS
SA3 CMPF GET PAUSE FLAG
SB4 X1 FWA OF PARAMETER BLOCK
NZ X3,TRCL IF PAUSE STILL SET
SA5 SSCC GET OUTSTANDING REQUEST COUNT
SX6 X5-MAXR
SA2 B2+CDFN GET REQUEST WORD
LX1 -24
SB3 X1 RETURN ADDRESS
SB5 B2+NUAPL TASK RA
SX4 B5 TASK RA
SB4 B4+B5
PL X6,SSC1.5 IF OUTSTANDING REQUESTS .GE. LIMIT
IX6 X2+X4 ADD TASK TO REQUEST WORD
MX0 CDHDN+CDRTN
LX4 CDRAS-17
SA1 B4 FWA OF PARAMETERS
SA2 B4+CDRAW WORD 2 OF PARAMETERS
BX7 X0*X1 CLEAR RC, SF, AND CB FIELD
SA7 A1
MX0 CDRAN CLEAR RA FIELD
BX2 -X0*X2
IX7 X2+X4 ADD NEW TASK RA
SA7 A2
* RE-ISSUE REQUEST TO SYSTEM CONTROL POINT.
SSC4 SX7 X5+B1 INCREMENT OUTSTANDING REQUEST COUNTER
SA7 A5
RJ SYS= ISSUE REQUEST TO SYSTEM
SX7 SSC5
SA2 B4 FIRST WORD OF PARAMETER BLOCK
LX2 59-CDCBS
NG X2,SSC6 IF OPERATION ALREADY COMPLETE
MX0 1 SET STORAGE MOVE NOT ALLOWED
SA1 B7
SX2 B3 SET RECALL PARAMETER
SX3 B4
BX6 X0+X1
LX2 -18
LX3 18
BX7 X2+X7 ADD FINAL RETURN ADDRESS
SA6 B7
BX7 X3+X7 ADD FWA OF PARAMETER BLOCK
EQ TRCL2 PLACE TASK INTO RECALL
* PROCESS RETURN FROM RECALL.
SSC5 LX1 -18
SA2 X1 FIRST WORD OF PARAMETER BLOCK
LX2 59-CDCBS
MX0 -59 CLEAR STORAGE MOVE NOT ALLOWED FLAG
PL X2,TRCL IF REQUEST NOT COMPLETE YET
SA3 B7
SB4 X1
BX6 -X0*X3
LX1 -24
SB3 X1 RETURN ADDRESS
SA6 B7
SSC6 MX0 -CDESN GET ERROR CODE
BX6 -X0*X2
SA5 SSCC DECREMENT OUTSTANDING REQUEST COUNT
SX7 X5-1
SA2 B4+B1 GET FUNCTION CODE
MX0 -CDFCN
SX4 CDNT
BX2 -X0*X2
IX0 X2-X4
SA3 B2+CB2C
SX4 CDAT
SA7 A5
MX1 -59
SA5 X3+CBCR WORD CBCR OF C.B. SYSTEM AREA
LX1 CDDM-59
BX7 -X1*X5
ZR X0,SSC7 IF NORMAL TERMINATION
IX0 X2-X4
ZR X0,SSC7 IF ABNORMAL TERMINATION
BX7 X1+X5 SET CONNECTION FLAG
SSC7 SA7 A5+
NZ X6,SSC8 IF ERROR OCCURRED
SSC7.1 RJ SSM ISSUE SUBSYSTEM MESSAGE
SSCA EQU SSC7.1 UPDATED BY ROUTINE *SSM*
* JP B3 (CDCS CONNECTION ESTABLISHED - RETURN)
* PROCESS ERROR CONDITIONS.
SSC8 MX4 -CDSFN
SX3 SSNP *CDCS* NOT AVAILABLE
BX7 -X4*X6
IX4 X3-X7
AX6 CDSFN RIGHT JUSTIFY REASON CODE
SX3 CDER
IX0 X3-X6 CHECK FATAL ERROR
SX3 SSBZ *CDCS* BUSY
IX3 X3-X7
ZR X3,SSC10 IF *CDCS* BUSY
SX3 CDIN INVOKE FUNCTION CODE
ZR X4,SSC13.1 IF CDCS NOT PRESENT
SX4 CDNF NON-FATAL ERROR
ZR X0,SSC9 IF FATAL ERROR
IX3 X2-X3
IX4 X4-X6
NZ X3,SSC8.1 IF NOT INVOKE
ZR X4,SSC12 IF NON-FATAL ERROR ON INVOKE
SSC8.1 RJ SSM ISSUE SUBSYSTEM MESSAGE
SSCB EQU SSC8.1 UPDATED BY ROUTINE *SSM*
* JP B3 (CDCS CONNECTION ESTABLISHED - RETURN)
* PROCESS TASK FATAL ERROR.
*
* ENTRY (B4) = FWA OF PARAMETER BLOCK.
* (B2) = FWA OF TASK SYSTEM AREA.
SSC9 SB3 TERR32 JOURNAL ERROR MESSAGE
BX7 -X1*X5 CLEAR *CDCS* CONNECTION FLAG
SA7 A5 WORD CBCR OF C.B. SYSTEM AREA
SA1 B2+CB2C
SA2 B4+CDBFW GET FWA OF MESSAGE
SX0 X1 COMMUNICATION BLOCK ADDRESS
MX1 -CDBFN
LX2 CDBFN-CDBFS-1
BX5 -X1*X2
SX6 12
LX6 18
SB5 B2+NUAPL TASK RA
SX5 X5+B5
SA3 X5 FWA OF CDCS FATAL ERROR MESSAGE
SB5 12 LENGTH OF MESSAGE
SB6 B1+B1
BX7 X3
SA7 B2+NUAPL+TIMD-14 WORD 61 OF C.B. OF TASK
SSC9.1 SA3 A3+B1
ZR X3,SSC9.2 IF END OF MESSAGE
BX7 X3
SA7 A7+B1 MOVE TO C.B.
SB6 B6+B1
LE B6,B5,SSC9.1 IF NOT DONE MOVING MESSAGE
EQ SSC9.3 JOURNAL MESSAGE
SSC9.2 BX7 X7-X7
SA7 A7+B1 CLEAR NEXT WORD
SB6 B6+B1
LE B6,B5,SSC9.2 IF NOT DONE CLEARING REMAINING WORDS
SSC9.3 BX5 X5+X6 ADD MESSAGE LENGTH
SB4 11B ORIGIN CODE
SB5 PJRNL JOURNAL FILE
EQ JRNL JOURNAL MESSAGE
* UPDATE *CDCS* BUSY COUNTER.
SSC10 SX7 B1 UPDATE *CDCS* BUSY COUNTER
SA3 STAT19
IX7 X3+X7
SA7 A3
EQ SSC2 PUT TASK INTO RECALL
* INVOKE FAILURE, CLEAR *CDCS* CONNECTION FLAG.
SSC12 BX7 -X1*X5 CLEAR *CDCS* CONNECTION FLAG
SA7 A5 WORD CBCR OF C.B. SYSTEM AREA
EQ TERR38 ABORT TASK WITH INVOKE FAILURE
* CDCS ABORTED, TERMINATE TRANSACTION.
* ENTRY (B2) = FWA OF TASK SYSTEM AREA.
SSC13 SA1 SSCC DECREMENT OUTSTANDING REQUEST COUNT
SX7 X1-1
SA7 A1+
SSC13.1 MX0 CBTON MASK TERMINAL ORDINAL
SA1 B2+CB2C GET COMMUNICATION BLOCK ADDRESS
MX7 60-CBCSN CLEAR CDCS DATA MANAGER USAGE FLAG
BX4 X0*X1
ERRNZ CBTOS-59 TERMINAL ORDINAL NOT LEFT JUSTIFIED
SA2 X1+CBRTW
LX7 CDDM-0
LX2 59-CBRTS
SA1 X1+CBCR
BX7 X7*X1
SA7 A1
.A IFEQ IPTAR,1
PL X2,TERR31 IF NOT A RECOVERABLE TRANSACTION
MX7 SCTMN SET TRANSACTION TO BE TERMINATED FLAG
LX7 SCTMS-59
SA1 B7+SCTMW
BX7 X1+X7
SA7 A1
SX5 CSCD CDCS DOWN *STEP*
SX3 TSSC RETURN ADDRESS
RJ WTS WRITE TERMINATION *STEP*
.A ELSE
EQ TERR31 ABORT TASK
.A ENDIF
SSCC BSSZ 1 OUTSTANDING REQUEST COUNTER
SSM SPACE 4,15
** SSM - SUBSYSTEM MESSAGE.
*
* THIS ROUTINE UPDATES THE LOCATION OF *SSCA* AND *SSCB*
* AND ISSUES THE DAYFILE MESSAGE WHEN *CDCS* CONNECTION
* IS ESTABLISHED.
*
* ENTRY (B3) - RETURN ADDRESS IF CALLED BY *SSC*.
*
* EXIT (SSCA) AND (SSCB) UPDATED.
* TO (B3) IF CALLED BY *SSC*.
*
* USES A - 1, 2, 3, 7.
* X - 1, 2, 3, 4, 7.
*
* MACRO MESSAGE.
SSM SUBR ENTRY/EXIT
SA1 SSCA CHECK FOR FIRST CALL
SA2 SSMA
SA3 SSMB
IX4 X1-X2
ZR X4,SSM1 IF FIRST CALL
BX7 X2
SA7 A1
SA7 SSCB
EQ SSMX EXIT
SSM1 BX7 X3
SA7 A1
SA7 SSCB
MESSAGE SSMC * CDCS CONNECTION ESTABLISHED.*
JP B3 EXIT
SSMA RJ SSM FIRST CALL
SSMB JP B3 NORMAL OPERATION
SSMC DATA C* CDCS CONNECTION ESTABLISHED.*
TOT SPACE 4,10
** TOT - ENTER A REQUEST INTO THE TOTAL DATA MANAGER QUEUE.
*
*T 24/ 3LTOT,18/ FNC,18/ ADDR.
*
* FNC = TOTAL DATA MANAGER FUNCTION CODE.
* ADDR = PARAMETER LIST ADDRESS.
TOT TX3 0,VTOT,LWA TOTAL DATA MANAGER INITIALIZATION FLAG
SB4 X5+ ADDRESS OF PARAMETERS
ZR X3,TERR25 IF TOTAL DATA MANAGER NOT LOADED
ZR B4,TERR2 IF PARAMETER ADDRESS ZERO
LX5 -18
SB4 -B4
SX0 X5 FUNCTION CODE
SX6 X1+B4
NG X6,TERR2 IF PARAMETER ADDRESS OUT OF BOUNDS
PL B4,TERR2 IF PARAMETER ADDRESS OUT OF BOUNDS
SX6 X5-100B
PL X6,TERR3 IF FUNCTION CODE GREATER THAN 6 BITS
** BUILD A TOTAL INPUT QUEUE REQUEST OF THE FOLLOWING FORMAT.
*
*T 24/ TS,6/ SC,6/ FC,1/R,5/ SN,18/ ADDR
*
* TS TASK SEQUENCE NUMBER.
* SC TASK READ/WRITE SECUITY.
* FC FUNCTION CODE FOR TOTAL.
* R RECALL REQUEST BIT.
* SN SUB CONTROL POINT NUMBER.
* ADDR ADDRESS OF PARAMETER AREA.
SX3 X0-DMCC
ZR X3,TERR3 IF TASK USED DATA MANAGER CEASE CODE
LX0 24 FUNCTION CODE
SX4 -B4 ADDRESS OF PARAMETER LIST
SB3 TOT5 RETURN ADDRESS
* ENTRY POINT FROM CEASE CALL FROM TASK.
TOT1 MX7 -6
LX7 36
SA3 B2+TRID TRANSACTION IDENTIFIER
TX2 B7+CPAL,-VCPA COMPUTE SUBCP NUMBER
SA1 B2+CB2C COMMUNICATION BLOCK WORD 2
IX4 X4+X0 ADD FUNCTION CODE
MX0 1 FORCE RECALL FOR TOTAL
LX0 1+23
BX7 -X7*X1 SECURITY LEVELS
AX2 SCPAL
BX4 X4+X0 ADD RECALL BIT
LX2 18 SUB CONTROL POINT NUMBER
BX4 X4+X2 ADD SUB CP NUMBER
SA5 TDBAA TOTAL STATUS WORD
LX7 -6
IX4 X4+X7 ADD SECURITY LEVELS
LX3 59-23 POSITION TRANSACTION IDENTIFIER
SX1 B1+
BX4 X4+X3 ADD TRANSACTION IDENTIFIER
SA3 B2+CB2C COMMUNICATION BLOCK WORD 2
SA3 X3+CBCR
LX3 59-TOTDM
NG X3,TOT2 IF OK TO MAKE REQUEST
* CHECK IF SUB CP CAN MAKE REQUEST.
LX5 -18
SB4 X5
MX7 1
BX7 X7+X3 SET TOTAL REQUESTS OK
LX7 TOTDM-59
SA7 A3+ ENABLE TOTAL REQUESTS FOR TRANSACTION
ZR B4,TOT8 IF CANNOT MAKE TOTAL CALLS NOW
IX5 X5-X1
LX5 18
* ENTER REQUEST IN TOTAL INPUT QUEUE.
TOT2 SB5 TDI TOTAL INPUT QUEUE FET
SA2 TOTLCK READ QUEUE LOCK FLAG
BX6 X4 TOTAL REQUEST
SX4 B3 RETURN ADDRESS
ZR X2,TOT3 IF INPUT QUEUE IS NOT LOCKED
* CHECK IF TASK CAN STILL MAKE TOTAL REQUEST.
SA3 B2+DBNC TRANSACTION DATA BASE ID
SX3 X3
SX1 X2 NAME OF LOCKED TOTAL DATA BASE
BX3 X1-X3
NZ X3,TOT6 IF NO MATCH ON DATA BASE NAMES
MX1 24
BX2 X6-X2
BX2 X1*X2
NZ X2,TOT6 IF NOT THE SAME SEQUENCE NUMBER
TOT3 RJ PDIF PUT ENTRY INTO INPUT QUEUE
SB3 X4
ZR X7,TOT6 IF THE INPUT QUEUE IS FULL
MX1 -6
SX7 B0
SA7 DTIME INSURE TOTAL WILL BE CALLED ON NEXT PASS
LX6 -24
BX1 -X1*X6
SX1 X1-DMCC
SX3 B1
IX7 X5+X3 ADVANCE TOTAL CALL COUNT
SA7 A5
ZR X1,TOT4 IF TASK CEASE REQUEST
SA1 B2+TOTC
IX6 X1+X3 TOTAL OUTSTANDING REQUEST COUNT
SA6 A1
TOT4 JP B3 RETURN
TOT5 ZR X0,TSSC IF RECALL NOT REQUESTED
RJ DCPT DROP CPU FOR TASK
EQ TSSC TIME SLICE SUBCP
* TOTAL QUEUE IS FULL - PLACE THE TASK ON RECALL.
TOT6 SX7 TOT7 RESTART ADDRESS FOR TASK RECALL
AX0 23
LX0 -2
SX2 B3 RETURN ADDRESS AFTER TASK MAKES REQUEST
BX7 X7+X0 RECALL STATUS OF REQUEST
LX2 18
BX7 X7+X2 SAVE RETURN ADDRESS
SA6 B2+RCLA
JP TRCL2 PLACE TASK ON RECALL
* RETRY TOTAL QUEUE ENTRY AFTER QUEUE WAS FULL.
TOT7 AX1 18
SA4 A1+B1 TOTAL INPUT QUEUE ENTRY
SB3 X1+ RETURN ADDRESS
SA5 TDBAA TOTAL STATUS WORD
AX1 40
SX0 X1 RECALL STATUS
LX0 23
EQ TOT2 TRY TO PLACE IN QUEUE AGAIN
* PLACE TASK ON RECALL.
TOT8 SX7 TOT9 RETURN ADDRESS FROM RECALL
AX0 23
BX6 X4 TOTAL INPUT QUEUE ENTRY
LX0 -2
SX2 B3 RETURN ADDRESS AFTER PLACING IN QUEUE
IX7 X7+X0
LX2 18
BX7 X7+X2
SA6 B2+RCLA SAVE QUEUE ENTRY
SA7 A6-B1
JP TRCL PLACE TASK ON RECALL
* RETURN FROM RECALL TRY TO MAKE REQUEST AGAIN.
TOT9 SA5 TDBAA TOTAL STATUS WORD
SX3 B1
LX5 -18
SB4 X5
ZR B4,TRCL IF STILL UNABLE TO ENTER QUEUE
IX7 X5-X3
LX7 18
SA7 A5 UPDATE TOTAL STATUS
EQ TOT7 OK TO MAKE REQUESTS
*T TDBAA 24/ ,18/ TNS,18/ TNO
*
* TNS NUMBER OF TASKS TO RUN WHICH MAKE TOTAL TASKS.
* TNO NUMBER OF OUTSTANDING TOTAL REQUESTS.
TDBAA VFD 24/0,18/TIMDM,18/0
TOTLCK CON 0 QUEUE ENTRY LOCK FLAG
CTI SPACE 4,60
*** CTI - CALL TRANSACTION INTERFACE.
*
* THIS PROCESSOR PERFORMS THE FUNCTIONS RELATING TO TASK
* CONTROL. THE FORMAT OF THE REQUEST IS -
*
*T 24/ 3LCTI,18/ FNC,18/ ADDR
*
* FNC REQUEST CODE.
* ADDR ADDRESS OF PARAMETER LIST.
*
* FNC REQUEST TYPE
*
* 0 SEND - SEND MESSAGE TO TERMINAL.
* 1 JOURNL - MAKE JOURNAL FILE ENTRY.
* 2 TRANCHK - CHECK TRANSACTION ACTIVITY.
* 3 TARO - TERMINAL ARGUMENT OPERATION.
* 4 CMDUMP - DUMP TASK FIELD LENGTH.
* 5 DSDUMP - CHANGE DEFAULT DUMP PARAMETERS.
* 6 TSIM - RETURN TERMINAL STATUS.
* 7 KPOINT - TERMINAL *K-DISPLAY* REQUEST.
* 8 KDIS - *K-DISPLAY* REQUEST.
* 9 RESERVED
* 10 SUBMT - SUBMIT BATCH TRANSACTION.
* 11 ITL - INCREASE TASK TIME LIMIT.
* 12 IIO - INCREASE TASK I/O LIMIT.
* 13 LOGT - LOG OUT TRANSACTION TERMINAL.
* 14 LOADCB - LOAD ADDITIONAL INPUT TO USER BUFFER.
* 15 RELSCB - RELEASE SECONDARY C.B.-S.
* 16 SETCHT - SET TERMINAL CHARACTER TYPE.
* 17 TERMDEF - DEFINE TERMINAL CHARACTERISTICS.
* 18 GETABH - GET APPLICATION BLOCK HEADER.
* 19 ARGERR - ABORT TASK FOR SOFTWARE ERROR.
* 20 TPSTAT - RETURN TELEPROCESSOR IDENTITY.
* 21 BEGIN - TRANSFER C.B. TO TASK.
* 22 TSTAT - OBTAIN *TAF* ENVIRONMENT STATUS FROM *CRF*.
* 23 WSTAT - WRITE *TAF* ENVIRONMENT STATUS TO *CRF*.
* 24 ROUTE - ROUTE FILE TO INPUT/OUTPUT QUEUES.
*
* ENTRY (X1) = TASK FL.
* (X5) = SYSTEM REQUEST.
* (B2) = FWA OF TASK SYSTEM AREA.
* (B5) = TASK RA.
* (B7) = FWA OF TASK SUBCP TABLE ENTRY.
*
* EXIT TO *TERR2* IF ADDRESS OUT OF RANGE.
* TO *TERR3* IF INCORRECT FUNCTION CODE.
* TO *TERR4* IF SYSTEM REQUEST CALL ERROR.
* TO *TERR7* IF TERMINAL NOT FOUND.
* TO *TERR9* IF TOO MANY WORDS TO JOURNAL.
* TO *TERR11* IF NOT VALIDATED FOR REQUEST.
* TO *TERR13* IF INCORRECT RA(S)+1 CALL PARAMETER.
* TO *TERR17* IF ERROR IN *SUBMIT* FILE.
* TO *TERR34* IF INCORRECT *CMM* REQUEST.
* TO *TSSC* TO CONTINUE PROCESSING.
CTI SB4 X5+ ADDRESS OF PARAMETERS
LX5 -18
SB4 -B4
SX0 X5+ FUNCTION CODE
SX6 X1+B4
LX0 -1
SB6 B2+CB1C START OF C.B. HEADER
NG X6,TERR2 PARAMETER LIST OUT OF BOUNDS
SX6 X0-CTIJTL
PL X6,TERR3 IF INCORRECT FUNCTION CODE
GT B4,TERR2 ADDRESS WORD OUT OF BOUNDS
SB3 X0+
JP B3+CTIJT JUMP THRU TABLE
CTIJT PL X0,CTS SEND TERMINAL OUTPUT
EQ CTI1 JOURNAL REQUEST
PL X0,CTI5 TRANCHK
JP CTI7 PROCESS TERMINAL ARGUMENT OPERATION
PL X0,CTI19 CMDUMP REQUEST
JP CTI30 DSDUMP REQUEST
PL X0,CTI12 RETURN TERMINAL STATUS
EQ CTI31 CRASS TERMINAL K-DISPLAY COMMAND
PL X0,CTI40 K-DISPLAY REQUEST
EQ TERR3 NOT USED
PL X0,CTI41 SUBMIT BATCH JOB
EQ CTI43 INCREASE TIME LIMIT
PL X0,CTI45 INCREASE I/O LIMIT
EQ TLO LOG OUT DIAL-IN TRANSACTION TERMINAL
PL X0,CTI46 READ MULTIPLE INPUT COMMUNICATION BLOCKS
EQ CTI51 RELEASE MULITIPLE COMMUNICATION BLOCKS
PL X0,CTA SET CHARACTER INPUT TYPE
EQ CTD DEFINE TERMINAL CHARACTERISTICS
PL X0,CTH GET APPLICATION BLOCK HEADER
EQ TERR28 ABORT TASK DUE TO ARGUMENT ERROR
PL X0,CTI52 RETURN ACTIVE TELEPROCESSOR IDENTITY
EQ CTI53 PROCESS BEGIN REQUEST
PL X0,TFP IF *TSTATUS* FUNCTION
EQ WFP *WSTATUS* FUNCTION
PL X0,ROU IF ROUTE REQUEST
EQ TERR3 NOT USED
CTIJTL EQU *-CTIJT LENGTH OF CTI JUMP TABLE
** TASK JOURNAL REQUEST.
*
*T ADDR 6/ ,18/ JN,18/ NUM,18/ MSG
*
* MSG - FWA OF BLOCK TO BE JOURNALED
* NUM - NUMBER OF WORDS TO WRITE TO JOURNAL FILE
* JN - JOURNAL FILE NUMBER
CTI1 SA2 B5-B4 PARAMETER WORD
SA4 B2+CB2C
SB6 X2 FWA OF JOURNAL MESSAGE
LX2 -18
SX3 X2-MAXJL
SX5 X2 NUMBER OF WORDS TO JOURNAL
LX2 -18
PL X3,TERR9 IF TOO MANY WORDS REQUESTED TO JOURNAL
SX7 X2 JOURNAL FILE NUMBER
NG X5,TERR2 IF NEGATIVE NUMBER OF WORDS TO JOURNAL
NG X7,TERR2 IF NEGATIVE JOURNAL FILE NUMBER
SX0 X4 C.B. ADDRESS
LX5 18
NG B6,TERR2 IF NEGATIVE JOURNAL MESSAGE ADDRESS
SB5 PJRNL
SX3 B6+NUAPL START OF JOURNAL BLOCK
SB6 -B6+B1
BX5 X5+X3
SX1 X1+B6 CHECK FOR MESSAGE OUTSIDE TASK FL
SB4 B0
NG X1,TERR2 IF JOURNAL MESSAGE OUTSIDE TASK FL
ZR X7,CTI4 IF JOUR0
SA4 B2+DBNC D.B. FOR THIS TASK
TA2 0,VEDT EDT HEADER
MX3 12
SX4 X4+
LX4 -12
CTI2 BX6 X3*X2 DATA BASE NAME FROM EDT
IX6 X6-X4
ZR X6,CTI3 IF MATCH FOUND
SB3 X2
SA2 X2 LINK TO NEXT EDT
NZ B3,CTI2 IF MORE EDT-S REMAIN TO BE SEARCHED
EQ TERR9 DATA BASE NOT FOUND
CTI3 SA1 A2+B1 SECOND WORD OF EDT
MX6 6
BX6 X6*X1 NUMBER OF JOURNAL FILES FOR THIS DATA BASE
LX6 6
IX6 X6-X7
NG X6,TERR9 IF INCORRECT JOURNAL FILE NUMBER
LX1 -18
SB4 X1-JFETL
SX2 JFETL
IX1 X2*X7
SB5 X1+B4
SB4 0
CTI4 SB3 TSSC RETURN ADDRESS
EQ JRNL JOURNAL ENTRY
** CHECK FOR TASK CHAIN IN SYSTEM
*
*T ADDR 18/ ,24/ SEQ,18/ STAT
*
* SEQ - SEQUENCE NUMBER OF TRANSACTION
* STAT - SET STAT TO ZERO IF TRANSACTION NOT IN SYSTEM
CTI5 SA2 B5-B4 PARAMETER WORD
BX6 X6-X6
MX5 -24
SB3 X2 STATUS WORD ADDRESS
SB3 -B3
SX7 X1+B3
PL B3,TERR2 IF STATUS WORD OUT OF BOUNDS
SB3 B5-B3 STATUS WORD ABSOLUTE ADDRESS
SB5 B0
NG X7,TERR2 IF STATUS WORD OUT OF BOUNDS
SA6 B3+ CLEAR STATUS WORD
LX2 -18
BX0 -X5*X2 SEQUENCE NUMBER TO CHECK FOR
CTI6 RJ SCB GET NEXT RESERVED COMMUNICATION BLOCK
ZR B5,TSSC IF END OF RESERVED C.B.S
SA2 B5
LX2 -18
BX3 -X5*X2 SEQUENCE NUMBER
BX2 X3-X0
NZ X2,CTI6 IF NO MATCH ON SEQUENCE NUMBER
SX6 B1
SA6 A6 SET TASKS STATUS WORD TO 1
JP TSSC ENTER SWITCHING LOOP
** REQUEST CODE 3 - TERMINAL ARGUMENT OPERATION.
*
*T ADDR 42/ TERMINAL NAME,18/ RETURN ADDRESS
*T 30/ VALUE,30/ MASK
*
* TERMINAL NAME IDENTIFIES TERMINAL TO BE OPERATED UPON.
* IF ZERO, ORIGINATING TERMINAL IS ASSUMED.
* RETURN ADDRESS = LOCATION TO PLACE RESULT OF OPERATOIN
* (IN ADDITION TO TERMINAL TABLE). ZERO IF NO RETURN DESIRED.
* VALUE= A VALUE TO BE USED TO ALTER TERMINAL ARGUMENTS.
* MASK= A 24 BIT MASK.
*
* OPERATION -
* THE *USER ARGUMENT* AREA (24 BITS IN EACH TERMINAL TABLE
* ENTRY) IS OPERATED UPON AS FOLLOWS -
* RETURN=USER ARG=(USER ARG.AND.MASK).XOR.VALUE
*
* NON-SYSTEM TASKS MAY ONLY ALTER TERMINAL ARGUMENTS FOR THOSE
* TERMINALS THAT SHARE THE ORIGINATING TERMINAL DATA BASE.
CTI7 SA4 B5-B4 READ TERMINAL NAME
SB3 X1+B4 CHECK ALL WORDS IN BOUNDS
MX0 42
SX5 X4 RETURN ADDRESS
EQ B3,B1,TERR2 IF SECOND WORD AT FL
SA2 B6+B1 TST ENTRY FOR ORIGINATING TERMINAL
BX4 X0*X4 TERMINAL NAME
LX2 -18
IX7 X5-X1
SA1 X2 READ ORIGINATING TERMINAL TST ENTRY
MX0 -24
ZR X5,CTI8 IF NO RETURN DESIRED
PL X7,TERR2 IF RETURN ADDRESS OUT OF BOUNDS
CTI8 ZR X4,CTI10 IF TERMINAL NAME NOT GIVEN
* SEARCH FOR GIVEN TERMINAL NAME.
RJ STST SEARCH TERMINAL STATUS TABLE
ZR X3,TERR7 IF TERMINAL NOT FOUND
SA1 A3-1 READ TST ENTRY
* UPDATE USER ARGUMENTS.
CTI10 SA2 B2+DBNC DATA BASE OF ORIGINATING TERMINAL
MX6 -12
LX1 -24
SX4 X2
BX6 -X6*X1 DATA BASE OF TERMINAL BEING OPERATED ON
LX1 24
BX4 X4-X6
ZR X4,CTI11 IF SAME DATA BASE
NG X2,CTI11 IF TERMINAL VALIDATED FOR ALL DATA BASES
SX2 X2-2RSY
NZ X2,TERR11 IF NOT VALIDATED FOR SYSTEM DATA BASE
CTI11 SA4 A4+B1 READ VALUE AND MASK
BX3 -X0*X1 EXTRACT USER ARGUMENTS
BX6 -X0*X4 EXTRACT MASK
LX4 30 EXTRACT VALUE
BX7 X0*X1 REMOVE OLD USER ARGUMENT
BX4 -X0*X4
BX1 X6*X3 MASK ARGUMENTS
BX6 X4-X1 INSERT VALUE
IX7 X7+X6 REPLACE USER ARGUMENTS
SA7 A1
ZR X5,TSSC IF NO RETURN DESIRED
SA6 B5+X5 RETURN UPDATED USER ARGUMENTS
JP TSSC
** REQUEST CODE 6 - RETURN TERMINAL STATUS.
*
*T ADDR 6/ ,6/ CODE,18/ LIST,12/ LENG,18/ RETURN
*T 60/ MASK
*T 60/ CRIT
* CODE =0 IF DATA BASE NAME FIELD IS TO BE SEARCHED.
* =1 IF USER ARGUMENT FIELD IS TO BE SEARCHED.
* =2 IF COMMUNICATION LINE FIELD IS TO BE SEARCHED.
* =3 IF TERMINAL NAME FIELD IS TO BE SEARCHED.
* CRIT CRITERION VALUE FOR SEARCH.
* LENG NUMBER OF WORDS THAT LIST CAN HOLD.
* LIST FWA OF LIST OF RETURNED TERMINAL ENTRIES. IF ZERO,
* NO LIST IS RETURNED, BUT THE NUMBER OF FOUND ENTRIES
* WILL BE RETURNED AS SPECIFIED BELOW.
* MASK A VALUE TAKEN AS A BINARY MASK.
* RETURN ADDRESS IN WHICH TO PLACE THE NUMBER OF ENTRIES FOUND.
*
* OPERATION -
* THE FIELD SPECIFIED BY *CODE* IS EXAMINED IN EACH TERMINAL
* TABLE ENTRY BY TAKING THE LOGICAL PRODUCT OF THE FIELD AND
* *MASK* AND THEN TAKING THE LOGICAL DIFFERENCE OF THIS PRODUCT
* AND *CRIT*. IF THIS RESULT IS ZERO, THE TERMINAL ENTRY IS
* PLACED INTO *LIST* AND THE NUMBER OF FOUND ENTRIES IS
* INCREMENTED. IF THE TASK DATA BASE IS NOT THE SAME AS
* THE ONE BEING INTEROGATED, THEN THE REQUEST WILL BE IGNORED.
* FURTHER, IF THE MASK, I. E. THE DATA BASE, OR THE CRITERION
* IS ZERO, THIS IS CONSIDERED AN AUTOMATIC FAILURE CASE, AND
* THE REQUEST IS IGNORED.
* DIAGNOSE CALL ERRORS.
CTI12 SX6 X1+B4 CHECK ALL ARGUMENT WORDS IN BOUNDS
SA2 B5-B4 READ (ADDR)
SX6 X6-3
MX7 -6
NG X6,TERR2 IF ARGUMENTS EXTEND PAST FL
SX6 X2 SAVE RETURN ADDRESS
LX2 -48
NG X6,TERR2 IF RETURN ADDRESS OUT OF BOUNDS
BX4 -X7*X2
SA6 CTIB
IX6 X6-X1
LX2 18
PL X6,TERR2 IF RETURN ADDRESS OUT OF BOUNDS
SB3 X4-CTIAL
SX4 X2 LIST ADDRESS
PL B3,TERR4 IF CODE .GT. 3
LX2 12
NG X4,TERR2 IF LIST ADDRESS OUT OF BOUNDS
BX7 X7-X7
ZR X4,CTI13 IF NO LIST DESIRED
IX6 X4-X1
MX7 -12
PL X6,TERR2 IF LIST FWA OUT OF BOUNDS
BX7 -X7*X2 LENGTH
IX7 X4+X7 LWA+1
IX6 X1-X7
NG X6,TERR2 IF LIST EXTENDS PAST FL
* PREPARE FOR TST SEARCH.
CTI13 SA1 CTIA+4+B3 READ SEARCH INFORMATION
SA5 A2+B1 READ MASK
UX0,B6 X1 B6= SHIFT TO RIGHT JUSTIFY FIELD, X0= WORD
TB3 0,VTST SET TST FWA ENTRY
TB4 0,VTST,LWA SET TST LWA
SA2 A5+1 READ CRITERION
SX4 X4+B5 BIAS ADDRESSES BY TASK RA
SX7 X7+B5
ZR X2,CTI18 IF MASK .EQ. ZERO
SA3 B2+DBNC TASK DATA BASE NAME
ZR X5,CTI18 IF CRITERION .EQ. ZERO
* SEARCH TST.
CTI14 SB3 B3+TSTLLE ADVANCE TST ENTRY ADDRESS
GT B3,B4,CTI18 IF END OF TST
SA1 B3+X0 READ TST ENTRY WORD
AX1 X1,B6 RIGHT JUSTIFY SEARCH FIELD
BX6 X5*X1 MASK FIELD
BX6 X6-X2 COMPARE
NZ X6,CTI14 IF NOT MATCH
* MOVE TST ENTRY INTO LIST.
SX6 X4+TSTLLE ADVANCE LIST ADDRESS
IX6 X7-X6
SA1 B3 ENTER TERMINAL ENTRY INTO LIST
NG X6,CTI17 IF LIST FULL
MX6 -12
AX1 24
BX6 -X6*X1
LX1 24
BX6 X3-X6
ZR X6,CTI15 IF SAME DATA BASE
SX6 X3-2RSY
NZ X6,CTI14 IF NOT VALIDATED FOR SYSTEM DATA BASE
CTI15 BX6 X1 RETURN TST ENTRY
SA6 X4
SX4 -TSTLLE+1
CTI16 SA1 A1+B1 READ NEXT WORD FROM TST
SX4 X4+B1
BX6 X1
SA6 A6+B1 ENTER TST ENTRY INTO LIST
NZ X4,CTI16 IF NOT END OF TST ENTRY
SX4 A6+B1 NEXT LIST ADDRESS AVAILABLE
IX6 X7-X4
NZ X6,CTI14 IF NOT END OF LIST
ZR X3,CTI18 IF NO COUNT DESIRED
* RETURN NUMBER OF FOUND ENTRIES.
CTI17 SX6 B5
IX6 X6-X7
NZ X6,CTI18 IF COUNT NOT DESIRED
SX4 X4+TSTLLE UPDATE TABLE LOCATION
EQ CTI14 CONTINUE COUNTING
CTI18 SA1 A2-2 COMPUTE NUMBER OF ENTRIES FOUND
SA3 CTIB RESTORE RETURN ADDRESS
SX2 TSTLLE
LX1 -30
SX1 X1+B5
IX6 X4-X1 NUMBER OF WORDS ENTERED
PX6 X6
NX6 X6 COMPUTE NUMBER OF ENTRIES
PX2 X2
NX2 X2
FX7 X6/X2
UX7 X7,B3
LX7 X7,B3
SA7 B5+X3 STORE NUMBER OF ENTRIES RETURNED
JP TSSC
CTIA BSS 0 TERMINAL TABLE SEARCH INFORMATION
LOC 0
VFD 12/2000B+24,48/0 CODE 0 - DATA BASE NAME
VFD 12/2000B+00,48/0 CODE 1 - USER ARGUMENTS
VFD 12/2000B+42,48/0 CODE 2 - COMMUNICATION LINE
VFD 12/2000B+18,48/1 CODE 3 - TERMINAL NAME
CTIAL BSS 0
LOC *O
CTIB CON 1 STORAGE FOR RETURN ADDRESS
** CMDUMP
*
*T ADDR 1/E,1/D,1/A,1/B,8/ ,18/ LWA,12/ ,18/ FWA
*T, ADDR+1 42/ QD,18/ OQ
*T, ADDR+2 12/ ,18/ AD,26/ ,4/ NF
*T, ADDR+N 24/ FN,36/
*
* E DUMP EXCHANGE PACKAGE.
* D DUMP DATA MANAGER BUFFERS.
* A USE DEFAULT EXCHANGE PACKAGE PARAMETER.
* B USE DEFAULT DATA MANAGER PARAMETER.
* LWA LAST WORD ADDRESS OF TASK TO DUMP.
* FWA FIRST WORD ADDRESS OF TASK TO DUMP.
* QD QUEUE DESTINATION.
* OQ OUTPUT QUEUE.
* AD ADDRESS USER CALLED FROM.
* NF NUMBER OF SPECIFIED FILES.
* FN SPECIFIED FILE NAME.
*
* TASK WILL BE PUT INTO RECALL IF LAST *DSP* REQUEST IS NOT
* COMPLETE.
CTI19 SA3 TDSP CHECK *DSP* INTERLOCK
SX7 SRTN4.1
NZ X3,TRCL2 IF A ROUTE IS IN PROGRESS
SA3 B6+B1
SA2 B5-B4 FIRST PARAMETER WORD
SB3 CTI28 EXIT ADDRESS
SB4 2
SA4 X3+3 DSDUMP CONTROL
NG X4,CTI20 IF PRIOR VALID *DSDUMP* PARAMETERS PRESENT
SA4 DTSE SYSTEM DEFAULT VALUES
* ASSEMBLE TASK DUMP CONTROL WORDS
* (B3) = RETURN ADDRESS
* (B4) = LOCTATION TO STORE CONTROL WORDS
* (A2/X2) = 1ST PARAMETER WORD
* (A4/X4) = 1ST DEFAULT CONTROL WORD
CTI20 MX5 2
SX7 X2 FWA
LX2 -30
SX0 X2 LWA
LX2 30-1
PL X7,CTI21 IF SPECIFIED FWA IS TO BE USED
SX7 X4 DEFAULT FWA
CTI21 LX4 -30
PL X0,CTI23 IF SPECIFIED LWA IS TO BE USED
SX0 X4 DEFAULT LWA
CTI23 IX6 X7-X0
NG X6,CTI24 IF FWA .LT. LWA
SX0 X7
CTI24 SX1 DSMNFL
IX6 X0-X7
ZR X6,CTI25 IF NO FL DUMP SELECTED
IX6 X6-X1
PL X6,CTI25 IF LWA-FWA .GE. DSMNFL
SX0 X4 USE DEFAULT LWA
LX4 30
SX7 X4+ USE DEFAULT FWA
CTI25 LX5 -3
BX6 X5*X2 DEFAULT EP AND DB FLAGS
LX5 2
LX0 30
BX2 X5*X2 EP AND DB FIELD
LX6 2
IX7 X7+X0 FWA + LWA
LX4 30
BX4 X6*X4 DEFAULT EP AND DB VALUES
MX0 1
IX5 X4+X2 SPECIFIED AND DEFAULT VALUES
BX7 X7+X0
SA4 A4+B1
SA2 A2+B1
MX6 42
BX1 X6*X2
SX0 X2
PL X2,CTI26 IF SPECIFIED QD IS TO BE USED
MX0 1 FORCE DEFAULT FOR BOTH PARAMETERS
CTI26 BX7 X7+X5 FWA + LWA + DB + EP
MX5 -12
SA7 B4+ DUMP CONTROL WORD 1
PL X0,CTI27 IF SPECIFIED OUTPUT QUEUE IS TO BE USED
BX1 X6*X4 DEFAULT QUEUE DESTINATION
BX0 -X5*X4
CTI27 SX6 X0-CTICL
PL X6,CTI29 IF ERROR IN VALUE
NG X0,CTI29 IF ERROR IN VALUE
SA5 X0+CTIC CONVERT OUTPUT QUEUE TO SYSTEM FORMAT
BX6 X1+X5 QD + OQ
SA6 A7+B1 DUMP CONTROL WORD 2
JP B3 EXIT - CONTROL WORDS BUILT
CTI28 SA5 A2+B1 GET ADDRESS CALLED FROM
MX2 -4
SB3 A7
SX7 A5 ADDRESS - 1 OF FILE NAME LIST
BX2 -X2*X5 FILE COUNT
LX5 -30
LX2 18
SX5 X5 CALLED FROM ADDRESS
SX0 X3 COMMUNICATION BLOCK ADDRESS
BX5 X5+X2
LX5 24
BX7 X7+X5
SA7 DTSG
SA1 LOVC
RJ LOVL DUMP THE TASK
EQ TSSC ENTER SWITCHING LOOP
CTI29 BX0 -X5*X4 IF ERROR - USE DEFAULT OUTPUT QUEUE VALUE
EQ CTI27 RESUME PROCESSING
CTIC BSS 0 OUTPUT QUEUE EQUIVELENCE TABLE
LOC 0
VFD 42/0,3/0,3/BCOT,12/*
VFD 42/0,3/0,3/EIOT,12/*
VFD 42/0,3/0,3/BCOT,12/*
CTICL BSS 0
LOC *O
** DSDUMP
*
*T ADDR 1/E,1/D,1/A,1/B,8/ ,18/ LWA,12/ ,18/ FWA
*T, ADDR+1 42/ QD,18/ OQ
*
* E DUMP EXCHANGE PACKAGE.
* D DUMP DATA MANAGER BUFFERS.
* A USE DEFAULT EXCHANGE PACKAGE PARAMETER.
* B USE DEFAULT DATA MANAGER PARAMETER.
* LWA LAST WORD ADDRESS OF TASK TO DUMP.
* FWA FIRST WORD ADDRESS OF TASK TO DUMP.
* QD QUEUE DESTINATION.
* OQ OUTPUT QUEUE.
CTI30 SB3 TSSC RETURN ADDRESS
SA3 B6+B1
SA2 B5-B4 FIRST PARAMETER WORD
SB4 X3+3 PLACE ASSEMBLED CONTROL WORDS INTO C.B.
SA4 DTSE SYSTEM DEFAULT CMDUMP PARAMETER WORDS
EQ CTI20 ASSEMBLE CONTROL WORDS
** TERMINAL K-DISPLAY COMMAND.
*
*T ADDR 60/ FIRST WORD OF A K-DISPLAY COMMAND.
CTI31 SB3 B5-B4 PARAMETER LIST ADDRESS
SB5 X1+B5 TASK FL
SX7 B3+
MX3 1
SB6 -B1 INDICATE SEARCH FOR DUMP
SA7 PCMDC
SX2 4 CHARACTER COUNTER
SX4 8 WORD COUNTER
SX0 PCMDA COMMAND BUFFER
SX6 B0+
CTI32 PL X3,CTI33 IF NOT THE END OF A WORD
ZR X4,TERR13 IF PARAMETER LIST LENGTH .GT. 8 WORDS
EQ B3,B5,TERR13 IF PARAMETER LIST EXTENDS BEYOND FL
SA5 B3+ LOAD A PARAMETER WORD
BX7 X5
SB3 B3+B1
SA7 X0+ SAVE COMMAND IN BUFFER
SX4 X4-1 DECREMENT WORD COUNTER
SX0 X0+1
CTI33 LX5 6
MX1 -6
BX7 -X1*X5 EXTRACT A CHARACTER
LX3 6 MOVE CHARACTER COUNTER
SB4 X7-1R
ZR B4,CTI32 IF CHARACTER IS A SPACE
ZR B6,CTI35 IF SEARCHING FOR 5TH NON-BLANK CHARACTER
* TEST FOR A TERMINATOR.
CTI34 SX1 X7-1R)
SB4 X7-1R.
ZR X1,CTI36 IF TERMINATOR = *)*
ZR B4,CTI36 IF TERMINATOR = *.*
GE B6,B1,CTI32 IF SEARCHING FOR A TERMINATOR
* SEARCH FOR *DUMP*.
LX6 6
BX6 X6+X7 SAVE CHARACTER TO TEST LATER
SX2 X2-1 DECREMENT CHARACTER COUNT FOR *DUMP*
NZ X2,CTI32 IF 4 NON-BLANK CHARACTERS NOT FOUND
SA1 CTIG 4RDUMP
SB6 B1+ DO NOT SEARCH FOR 5TH NON-BLANK CHARACTER
BX6 X6-X1
NZ X6,CTI32 IF PARAMETER IS NOT *DUMP*
SB6 B0
EQ CTI32 SEARCH FOR FIFTH NON-BLANK CHARACTER
* TEST 5TH NON-BLANK CHARACTER.
CTI35 SB6 1 INDICATE SEARCH FOR A TERMINATOR
SB4 X7-1R9
SX6 X7-1R*
* IF THE 5TH NON-BLANK CHARACTER IS ALPHANUMERIC, DISPLAY
* ZERO OR +*+, THE COMMAND IS NOT *DUMP*.
LT B4,B1,CTI32 IF ALPHANUMERIC, COMMAND NOT *DUMP*
ZR X6,CTI32 IF CHARACTER = +*+, COMMAND NOT *DUMP*
SB6 2 INDICATE *DUMP* COMMAND IS RECOGNIZED
EQ CTI34 SEARCH FOR TERMINATOR
CTI36 LE B6,B1,CTI38 IF PARAMETER IS NOT *DUMP*
SA1 GTDL GLOBAL TASK DUMP LIMIT
NZ X1,CTI37 IF *GTDL* VALUE IS NOT ZERO
MX6 1
SA6 A1 SET DUMP FLAG
MESSAGE CTIE,0 * GLOBAL TASK DUMP LIMIT EXHAUSTED.*
EQ TSSC EXIT, DO NOT PROCESS DUMP
CTI37 NG X1,TSSC IF NOT FIRST TO REACH LIMIT
* IF GLOBAL TASK DUMP LIMIT IS GREATER THAN ZERO.
SX6 B1+
IX6 X1-X6 DECREMENT *GTDL*
SA6 A1 REPLACE *GTDL*
EQ CTI39 DO NOT CHECK TASK ORIGIN
CTI38 RJ VTO CHECK TASK ORIGIN
NG X6,TERR11 IF TASK NOT VALIDATED FOR REQUEST
* SAVE TERMINAL ORDINAL, B2, AND B7.
CTI39 SX7 B2
SA3 B2+CB2C C.B. SYSTEM HEADER WORD 2
SX6 B7
LX3 18
LX7 18
SX3 X3 TERMINAL ORDINAL
BX7 X7+X6
LX3 36
BX7 X7+X3
SA5 PCMDA FIRST WORD OF COMMAND
SA7 PCMDB SAVE TERMINAL ORDINAL, B2, AND B7
EQ PCMD EXIT, PROCESS COMMAND
CTIE DATA C/ GLOBAL TASK DUMP LIMIT EXHAUSTED./
CTIG DATA 4RDUMP
** SET K-DISPLAY TO RUN FROM A TASK
*
*T ADDR 60/ KCW
*
* KCW K-DISPLAY CONTROL WORD
CTI40 SA1 KCTRL1 K-DISPLAY CONTROL WORD
RJ VTO CHECK TASK ORIGIN
NG X6,TERR11 IF TASK NOT VALIDATED FOR REQUEST
SA2 KDISB
PL X2,CTI40.1 IF TASK ALREADY EXECUTING
SA3 B7+2
MX0 12
BX3 X0*X3 TASK LIBRARY DIRECTORY INDEX
MX0 42
LX3 12
TA4 X3-1,VTLD TASK NAME
SA3 KDISE
BX4 X0*X4
BX6 X3-X4
NZ X6,TERR11 IF TASK NOT REQUESTED
EQ CTI40.2 CLEAR *KDISB* BITS
CTI40.1 SB6 X2
SA3 B2+CB2C CURRENT TASK C.B. WORD TWO
MX6 -42
SB3 X3
NE B3,B6,TERR11 IF SCREEN NOT ASSIGNED TO THIS TASK
LX6 35-59 CLEAR MESSAGE ADDRESS
BX2 -X6*X2
CTI40.2 MX6 2
BX7 -X6*X2 CLEAR *TASK REQUESTED*+*INPUT READY* BITS
SX2 B5-B4 START OF TASK K-DISPLAY BUFFER
MX6 42
BX6 X6*X1
SX3 -B4 FWA OF MESSAGE
BX6 X6+X2
LX3 35-17
BX7 X3+X7 ADD FWA OF MESSAGE
SA6 A1
SA7 A2
SX6 B7 SAVE SUBCP ADDRESS
SA6 KDISG
SA1 ITIME
BX6 X1
SA6 KDISF SAVE TIME OF THE REQUEST
CONSOLE KCTRL1 DEFINE NEW K-DISPLAY
MESSAGE ZWORD,2 ZERO OUT REQUEST K-DISPLAY MESSAGE
RJ DCPT DROP CPU FOR TASK
EQ TSSC TIME SLICE SUBCP
** SUBMIT JOB TO BATCH
*
*T ADDR 6/ ,18/PRU,12/ ,24/BYTE COUNT
* CONTENTS OF ADDR IS THE FIRST CONTROL WORD FOR
* THE OUTPUT JOB DATA.
* PRU - NUMBER OF 60 BIT WORDS IN EACH PRU ON DEVICE
* BYTE COUNT - NUMBER OF DATA BYTES IN THIS PRU
* THE BLOCK OF INFORMATION STARTING AT ADDR IS SET
* UP IN CONTROL WORD FORMAT
*
* TASK WILL BE PUT INTO RECALL IF LAST *DSP* REQUEST IS NOT
* COMPLETE.
CTI41 SA2 TDSP CHECK INTERLOCK
SX7 SRTN4.1 RECALL RETURN ADDRESS
NZ X2,TRCL2 IF PREVIOUS REQUEST NOT COMPLETED
SB4 -B4
SX3 100B PRU SIZE
SB3 B4
SX7 17B END OF JOB FILE FLAG
SX0 5 NUMBER OF BYTES PER CM WORD
SA2 B5+B4 FETCH FIRST HEADER WORD
SX2 X2
ZR X2,TERR17 IF FIRST HEADER IS BAD
CTI42 SA2 B5+B4 LOAD NEXT CONTROL WORD
MX6 36
BX4 X6*X2 GET TOP 36 BITS OF HEADER WORD
SB6 B7 SAVE B7
LX4 -36
BX6 -X6*X2 USERS NUMBER OF BYTES OF DATA
IX4 X4-X3 CHECK FOR CORRECT CONTENTS OF HEADER WORD
BX2 X6
NZ X4,TERR17 IF BAD HEADER WORD
LX4 X0 NUMBER OF BYTES PER CM WORD
IX6 X6/X4 NUMBER OF CM WORDS OF DATA
SB7 B6 RESTORE B7
IX4 X6*X0
SB6 X6+B1 NUMBER OF DATA WORDS + HEADER WORD
IX2 X2-X4
SB4 B6+B4
MX4 -48
NZ X2,TERR17 IF NUMBER OF BYTES NOT A MULTIPLE OF 5
IX6 X3-X6
SB6 X1 FIELD LENGTH
NG X6,TERR17 IF LENGTH OF DATA GREATER THAN 1 PRU
SB6 B4-B6
SA2 B5+B4 TRAILER CONTROL WORD
PL B6,TERR17 IF DATA GOES BEYOND LWA
BX4 -X4*X2
AX2 48
NZ X4,TERR17 IF BAD TRAILER WORD
SB4 B4+1 ADD TRAILER WORD TO CURRENT POSITION
NG X2,TERR17 IF INCORRECT LEVEL NUMBER
IX6 X2-X7
NG X6,CTI42 IF LEVEL NUMBER IS IN THE RANGE (0-16B)
NZ X6,TERR17 IF BAD CONTROL CHARACTER IN TRAILER WORD
SX7 B5+B3
SB3 B4-B3 FIND LENGTH OF JOB
SX6 A2+B1 SET END OF JOB + 1
SB4 X6
NG B3,TERR17 IF LESS THAN FIRST
SA3 SF+1 FETCH FIRST POINTER
MX0 42
BX3 X0*X3
SA4 SF+4 FETCH LIMIT POINTER
BX7 X3+X7 INSERT BEGGINING ADDRESS OF JOB
SX6 X6+B1 CALCULATE NEW LIMIT POINTER
SA7 A3 STORE FIRST POINTER
BX4 X0*X4
BX6 X4+X6 INSERT NEW LIMIT POINTER
SA6 A4 STORE LIMIT
REWIND SF,R
SX6 B4+
SA6 SF+2 RESTORE IN
WRITECW SF,R
MX0 42
SA3 SF+1 FETCH FIRST POINTER
SX6 OBUF
SA6 A3+B1 RESTORE IN POINTER
SA6 A6+B1 RESTORE OUT POINTER
BX3 X0*X3
SA4 A6+B1 FETCH LIMIT POINTER
BX6 X3+X6
SX7 OBUF+OBUFL
BX4 X0*X4
SA6 A3 RESTORE FIRST POINTER
BX7 X4+X7
SA7 A4 RESTORE LIMIT POINTER
SA1 SF
BX7 X0*X1
SA7 TDSP SET FILE NAME
SA1 CTIF SET PARAMETERS
SA3 A1+B1 STATUS PROCESSOR INFORMATION
SA4 A3+B1 ERROR MESSAGE - *K SUBMIT.*
EQ RFQ ROUTE FILE TO QUEUE
CTIF VFD 12/,12/,12/0LNO,3/,1/0,2/,18/FRER+FRDC+FRTI
VFD 6/,18/TERR17,18/TSSC,18/RFQ4
DATA L*K SUBMIT.*
** ITL - INCREASE TIME LIMIT.
*
*T ADDR 48/ ,12/TL
* TL NEW TIME LIMIT IN XJ TIME UNITS
* EACH CALL TO THIS FUNCTION DECREMENTS THE CPU
* PRIORITY OF THE TASK UNTIL ZERO IS REACHED. SUBSEQUENT
* CALLS DO NOT AFFECT THE CPU PRIORITY.
CTI43 SA3 B2+TSAC GET ACCUMULATED TIME
SA2 B2+CB1C GET C.B. HEADER
MX6 -12
BX3 -X6*X3 MASK OFF TIME COUNT
SA5 B5-B4 GET NEW TIME LIMIT
UX2,B4 X2 CPU PRIORITY TO B4
BX7 -X6*X5 GET 12 BIT NEW TIME LIMIT
LX7 30 POSITION TIME LIMIT
IX7 X7+X3 COMBINE LIMIT AND COUNT
SB4 B4-B1 DECREMENT CPU PRIORITY
ZR B4,CTI44 IF CPU PRIORITY AT ONE
PX6 B4,X2
SA6 A2 SET NEW CPU PRIORITY
CTI44 SA7 B2+TSAC STORE NEW TIME LIMIT
EQ TSSC ENTER SWITCHING LOOP
** IIO - INCREASE I/O LIMIT.
*
*T ADDR 42/ ,18/IO
* IO NEW I/O LIMIT IN RA + 1 CALLS
CTI45 MX6 -18
SA5 B5-B4 GET NEW I/O LIMIT
SA2 B2+RA1C GET RA + 1 COUNT
BX2 -X6*X2
BX6 -X6*X5 GET NEW LIMIT
LX6 30
IX6 X6+X2 STORE NEW LIMIT IN
SA6 A2+ UPPER 30 BITS OF RA1C
EQ TSSC ENTER SWITCHING LOOP
** READ MULTIPLE COMMUNICATION BLOCK INPUT.
*
*T ADDR 1/R,11/ ,18/ LEN,12/ ,18/ BUF
*
* R RELEASE EXTRA COMMUNICATION BLOCK(S) AFTER TRANSFER.
* LEN LENGTH OF BUFFER IN TASK TO RECEIVE DATA.
* BUF FWA OF BUFFER IN TASK TO RECEIVE DATA.
CTI46 SA5 B5-B4 READ PARAMETER WORD
MX2 -24
SA3 B6+
SB3 X5 FWA OF USER BUFFER AREA
LX5 -30
NG B3,TERR2 IF INCORRECT BUFFER ADDRESS
LX3 -18
SB4 X5 LENGTH OF USER BUFFER
SX5 B5+B3 ABSOLUTE FWA OF USER BUFFER
BX0 -X2*X3 TRANSACTION SEQUENCE NUMBER OF REQUESTOR
SB5 B3+B4
SX7 X5+B4 ABSOLUTE LWA OF USER BUFFER PLUS ONE
SB5 -B5
SX3 X5
NG B4,TERR2 IF INCORRECT LENGTH PARAMETER
LX5 18
SX6 X1+B5
SB5 B0+
BX7 X5+X7
LX7 18
NG X6,TERR2 IF BUFFER + LENGTH OUTSIDE OF TASK FL
BX5 X7+X3
SA2 B2+CB2C GET CB ADDRESS
SB5 X2 CURRENT CB ADDRESS
CTI47 SA3 B5+CBNCW POINTER TO NEXT CB IN CHAIN
SB5 X3+
ZR B5,CTI49 IF NO MORE COMMUNICATION BLOCKS
SA2 B5+CMBHL+1
MX4 -12
SX6 B5
BX4 -X4*X2 NUMBER OF DATA WORDS IN COMMUNICATION BLOCK
SX1 X4 NUMBER OF WORDS TO TRANSFER
SX3 X5 FWA OF AREA TO TRANSFER TO
LX5 -18
IX7 X3+X1
SX4 X5 MAXIMUM LWA OF USER BUFFER AREA
IX2 X7-X4
LX5 18
NG X2,CTI48 IF ENOUGH ROOM IN BUFFER
IX1 X1-X2
BX0 X0-X0 SET BUFFER FULL FLAG
CTI48 MX4 -18
SX2 X6+CMBHL+CMBRL
BX5 X4*X5 CLEAR OLD CURRENT POSITION
BX5 X5+X7
MOVE X1,X2,X3 LOAD DATA INTO TASK
NZ X0,CTI47 IF BUFFER NOT FULL
* RETURN DATA TRANSFERED COUNT TO TASK
CTI49 SX7 X5 LAST WORD WRITTEN
LX5 -36
SX4 X5 FWA OF USER BUFFER
IX7 X7-X4
CTI50 SA5 A5+ USER PARAMETER WORD
SA7 B2+16B SET STATUS IN TASKS X6 REGISTER
SB6 B2+CB1C
PL X5,TSSC IF NOT TO RELEASE EXTRA C.B.
* EQ CTI51 RELEASE REMAINING COMMUNICATION BLOCKS
** RELEASE EXTRA COMMUNICTION BLOCKS CONTAINING LONG INPUT DATA.
*
CTI51 SA3 B6+B1
SX2 X3 COMMUNICATION BLOCK ADDRESS
SA3 B2+CB1C CLEAR NEXT C.B. LINK IN *CB1C*
MX6 60-CBNCN
BX6 X6*X3
SA6 A3
RJ RSC RELEASE SECONDARY COMMUNICATION BLOCKS
JP TSSC ENTER SWITCHING LOOP
** RETURN NAM COMMUNICATIONS MODE TO TASK.
*
*T ADDR 48/ 0,12/ TPSTAT.
*
* (ADDR) = NAMTP = 1 - IF *TAF* INSTALLED WITH *COMKNWC*.
CTI52 SX6 NAMTP SET NAM COMMUNICATION MODE
SB5 B5-B4 TASK PARAMETER ADDRESS
SA6 B5
EQ TSSC ENTER TO SWITCHING LOOP
SPACE 4
** PROCESS BEGIN REQUEST - TRANSFER ZERO-LEVEL COMMUNICATION
* BLOCK TO TASK SPECIFIED LOCATION.
*
* ADDR 42/ , 18/ BUF
*
* BUF FWA OF BUFFER IN TASK TO RECEIVE COMMUNICATION BLOCK.
*
* EXIT COMMUNICATION BLOCK MOVED TO (BUF - BUF+CMBL).
* TO *TSSC* - WHEN OPERATION COMPLETE.
*
* USES A - 1, 2, 6.
* X - 0, 1, 2, 3, 5, 6.
* B - 3, 4, 6.
*
* CALLS MVE=.
CTI53 SB4 X1-CMBL FL - COMMUNICATION BLOCK LENGTH
LX5 18
SB3 X5 (B3) = PARAMETER ADDRESS
MX0 -18
NG B3,TERR2 IF PARAMETER .LT. ZERO
SB4 B3+B5
SB6 B3
GE B3,B4,TERR2 IF PARAMETER ADDRESS .GT. FL
BX5 -X0*X5
LX5 35-17
* SET TASK SPECIFIED COMMUNICATION BLOCK IN SUB-CONTROL
* POINT TABLE.
SA1 B7+B1 UPDATE SUBCP TABLE WORD,N
SA2 X1 READ CURRENT COMMUNICATION BLOCK ADDRESS
LX0 18
BX6 X0*X2
BX6 X6+X5
SA6 A2
SX3 B2+B3 SET FWA OF USER SPECIFIED BUFFER
SX2 X2+CMBHL SET FWA OF COMMUNICATIONS BLOCK ADDRESS
SX1 CMBL-CMBHL SET WORD COUNT
SX3 X3+NUAPL
RJ MVE= MOVE COMMUNICATION BLOCK TO SUBCP
EQ TSSC ENTER TASK SWITCHING LOOP
TFP SPACE 4,20
** TFP - *TSTAT* FUNCTION PROCESSING.
*
* ENTRY (X1) = FL OF SUBCP.
* (X5) = SYSTEM REQUEST.
* (X7) = TERMINAL ORDINAL, IF (B5) EQUALS ZERO.
* (B2) = FWA OF TASK SYSTEM AREA.
* (B3) = FWA OF QUEUE ENTRY, IF (B5) EQUALS ZERO.
* (B5) = SUBCP RA.
* (B7) = FWA OF SUBCP TABLE ENTRY.
*
* EXIT TO *TSSC*.
* TO *TERR2*, IF INCORRECT PARAMETERS.
*
* USES X - 1, 2, 3, 4, 5, 6.
* A - 1, 2, 3, 4, 6, 7.
* B - 3, 6.
*
* CALLS CFA, CRS, DCPT, EXIT, FIO, GSD, GRP, PTK, RCPU,
* RSP, STF, VUP.
*
* MACROS QTWCALL.
TFP NZ B5,TFP1 IF NOT AN INTERNAL *TAF* REQUEST
* REQUEST IS INTERNAL REQUEST OF *TAF*.
SX6 B0
LX5 59-59-17+35
SA6 TFPB SUBCP
SA7 TFPA TERMINAL ORDINAL
BX6 X5 REQUEST
SX7 B3 FWA OF QUEUE ENTRY
SA6 TFPC
SA7 TFPD FWA OF QUEUE ENTRY RELATIVE TO SUBCP
SA7 TFPE FWA OF QUEUE ENTRY RELATIVE TO *TAF*
EQ TFP2 PROCESS *TSTAT* KEYWORDS
TFP1 SB6 B1 REQUIRED NUMBER OF PARAMETERS
LX5 59-59-17+35
SB3 PTKBL*2+1 MAXIMUN NUMBER OF PARAMETERS
RJ VUP VALIDATE USER PARAMETERS
NZ X6,TERR2 IF INCORRECT PARAMETER
BX6 X5 SAVE SYSTEM REQUEST
MX3 -CBTON
SA4 B5-NUAPL+CB2C GET DEFAULT TERMINAL ORDINAL
SA6 TFPC
LX4 CBTON-1-CBTOS RIGHT JUSTIFY TERMINAL ORDINAL
BX7 -X3*X4
SA7 TFPA
TX6 B7+CPAL,-VCPA COMPUTE SUBCP
AX6 SCPAL
SA6 TFPB
SX6 RCL FWA OF QUEUE ENTRY RELATIVE TO SUBCP
SA6 TFPD
SX6 B5-NUAPL+RCL FWA OF QUEUE RELATIVE TO *TAF*
SA6 TFPE
* SOME KEYWORDS MAY NOT NEED TO ACCESS THE RECOVERY FILE.
* OTHER KEYWORDS MAY SPECIFIY THE USER/TERMINAL NAME WHICH
* WILL DETERMINE THE RECOVERY FILE TO BE LOCKED.
TFP2 SX2 B5 COMPUTE REQUEST ADDRESS RELATIVE TO *TAF*
IX5 X5+X2
RJ PTK PROCESS *TSTAT* KEYWORDS
NG X6,TERR11 IF TASK NOT VALIDATED FOR REQUEST
NZ X6,TFP3 IF BAD KEYWORD
SX6 TSNE RECOVERY STATUS NO ERRORS
ZR X0,TFP3 IF NO KEYWORDS REQUIRE RECOVERY FILE
ZR X7,TFP5 IF *TSTAT* DID NOT SPECIFY TERMINAL
SA7 TFPA
EQ TFP5 PROCESS RECOVERY KEYWORDS
* RETURN STATUS TO TASK.
TFP3 SA2 X5 FWA OF *TSTAT* STATUS
SA6 X2+B5
NZ B5,TSSC IF NOT INTERNAL *TAF* REQUEST
* SET *TSTAT* PROCESSING COMPLETE TO ALLOW WAITING
* PROCESS TO CONTINUE.
TFP4 MX7 QRTCN
LX7 QRTCS-59
SA1 TFPE FWA OF QUEUE ENTRY RELATIVE TO *TAF*
SA4 X1+QRTCW FUNCTION COMPLETE
BX6 X4+X7
SA6 A4
EQ TSSC TIME SLICE SUBC
.A IFEQ IPTAR
TFP5 RJ EXIT PROGRAM ERROR
.A ELSE
TFP5 ZR B5,TFP6 IF AN INTERNAL *TAF* REQUEST
* DROP CPU FOR TASK. THE CPU WILL BE REQUESTED FOR THE SUBCP
* WHEN THE *TSTAT* FUNCTION COMPLETES.
RJ DCPT DROP CPU FOR TASK
TFP6 SA1 TFPA TERMINAL STATUS TABLE ORDINAL
SA2 TFPC REQUEST
SA3 TFPE FWA OF QUEUE ENTRY
SX7 X1 SAVE TERMINAL STATUS TABLE ORDINAL
BX6 X2 SAVE REQUEST IN QUEUE
SA7 X3+QRTOW
SA6 X3+QRECW
* DETERMINE RECOVERY FILE FOR TERMINAL.
* SEVERAL RECOVERY FILES MAY BE USED TO SUPPORT
* MULTI-MAINFRAME RECOVERY AND HIGHER PERFORMANCE.
TFP7 RJ STF SEARCH TERMINAL FILES FOR TERMINAL ORDINAL
* IF RECOVERY FILE IS NOT LOCKED, LOCK RECOVERY FILE
* AND START PROCESSING FUNCTION. IF RECOVERY FILE IS LOCKED,
* QUEUE THE REQUEST.
SA4 B4+TTLKW LOCK STATUS
ERRNZ TTLKS-59 IF LOCK NOT IN BIT 59
NG X4,TFP10 IF FILE IS LOCKED
MX7 -60+TTLKN SET RECOVERY FILE LOCKED
ERRNZ TTLKS-59 IF LOCK FIELD NOT IN BIT 59
BX6 X4+X7
LX7 TTEVS-59
ERRNZ TTLKN-TTEVN IF EVENT AND LOCK FIELDS NOT EQUAL
BX6 -X7*X6 CLEAR FILE RELEASE EVENT
ERRNZ TTLKW-TTEVW IF LOCK AND LOCK EVENT NOT IN SAME WORD
SA6 A4
* READ STATUS FROM RECOVERY FILE.
SX1 MSST MESSAGE SOURCE IS STATUS
BX2 X3 TERMINAL ORDINAL IN RECOVERY FILE
RJ CFA COMPUTE FILE ADDRESS FOR STATUS
SX5 B4+TTFTW FWA OF FET
SX2 TRUPL LENGTH OF RECOVERY STATUS IN PRUS
SX1 CIORD *CIO* READ FUNCTION
RJ FIO DO FILE INPUT/OUTPUT
* QUEUE REQUEST TO LET *TAF* DO OTHER WORK UNTIL
* INPUT IS COMPLETE.
SX1 B4+TTFTW FWA OF INPUT COMPLETE EVENT
SA3 TFPB SUBCP
SA4 TFPD FWA OF RECOVERY QUEUE ENTRY
SB3 X4
SX5 B0 NO TIME OUT ON EVENT
QTWCALL 0,QTEV WAIT FOR INPUT TO COMPLETE
RJ GRP GET REQUEST PARAMETERS AFTER WAIT
SX7 B6+ FWA OF QUEUE ENTRY RELATIVE TO *TAF*
SA6 TFPB SAVE SUBCP
SA7 TFPE
RJ STF SEACH TERMINAL FILE TABLE FOR ORDINAL
RJ CRS CHECK RECOVERY STATUS FOR ERRORS
* PROCESS *TSTAT* KEYWORDS.
RJ GSD GET STATUS DATA
NZ X6,TFP8 IF ERRORS, RECOVERY FUNCTION COMPLETE
SX6 TSNE RECOVERY STATUS NO ERRORS
TFP8 SA2 X5 FWA OF *TSTAT* STATUS
SA6 X2+B5 RETURN STATUS TO TASK
* UNLOCK RECOVERY FILE
SA4 B4+TTLKW LOCK STATUS
MX7 -59
ERRNZ TTLKS-59 IF LOCK NOT IN BIT 59
BX6 -X7*X4 CLEAR LOCK
ERRNZ TTLKW-TTEVW IF LOCK AN LOCK EVENT NOT IN SAME WORD
LX7 TTEVS-59
BX6 X7+X6 SET FILE RELEASE EVENT
SA6 A4
SA2 TFPB SUBCP
ZR X2,TFP4 IF NOT A SUBCP REQUEST
* REQUEST CPU FOR SUBCP.
LX2 SCPAL COMPUTE SUBCP TABLE ADDRESS
TA4 X2-CPAL,VCPA
SB6 A4 FWA OF SUBCP TABLE ENTRY
SX4 X4-NUAPL FWA OF TASK SYSTEM AREA
SB3 TSSC RETURN ADDRESS AFTER REQUESTING CPU
RJ RSP RESTORE SUBCP REGISTERS
EQ RCPU REQUEST CPU FOR TASK
* RECOVERY FILE IS LOCKED, SO QUEUE REQUEST.
TFP10 SX1 B4+TTEVW FWA OF LOCK RELEASE EVENT
SA3 TFPB SUBCP
SA4 TFPD FWA OF QUEUE ENTRY
SB3 X4
SX5 B0 NO TIME OUT ON EVENT
QTWCALL TTEVS,QTEV WAIT UNTIL LOCK IS RELEASED
RJ GRP GET REQUEST PARAMETERS
SA6 TFPB SAVE SUBCP
SX6 B3+ SAVE FWA OF QUEUE ENTRY
SA6 TFPD
EQ TFP7 DETERMINE RECOVERY FILE
.A ENDIF
TFPA BSS 1 TERMINAL STATUS TABLE ORDINAL
TFPB BSS 1 SUBCP
TFPC BSS 1 REQUEST
TFPD BSS 1 FWA OF QUEUE ENTRY RELATIVE TO SUBCP
TFPE BSS 1 FWA OF QUEUE ENTRY RELATIVE TO *TAF*
.A IFGE IPTAR,1
GSD SPACE 4,15
** GSD - GET STATUS DATA.
*
* ENTRY (X5) = FWA OF REQUEST.
* (B4) = FWA OF RECOVERY FILE ENTRY.
* (B5) = SUBCP RA.
*
* EXIT (X6) = 0, IF NO ERRORS.
* *RSBK*, IF BAD KEYWORD.
*
* USES X - 0, 1, 2, 3, 4, 6, 7.
* A - 1, 2, 4, 6, 7.
* B - 2, 6, 7.
GSD SUBR ENTRY/EXIT
SB2 X5+B1 FWA OF FIRST KEYWORD
SB7 B0+ COUNT OF KEYWORDS PROCESSED
GSD1 SA1 B2 FWA OF USER KEYWORD
SX6 B0 NO ERRORS
ZR X1,GSDX IF END OF USER KEYWORDS
MX7 -18
SB7 B7+B1 UPDATE NUMBER OF KEY WORDS PROCESSED
SA2 GSDB FIRST KEY WORD
SX3 3H BLANKS
BX3 -X7*X3
SA1 X1+B5 KEYWORD
* DETERMINE ROUTINE TO PROCESS KEYWORD.
GSD2 ZR X2,GSD4 IF BAD KEYWORD
SB6 X2 ROUTINE TO PROCESS KEYWORD
BX2 X7*X2
BX2 X2+X3 BLANK FILL KEYWORD FROM TABLE
BX4 X2-X1
SA2 A2+1 NEXT KEYWORD FROM TABLE
NZ X4,GSD2 IF NOT DESIRED KEYWORD
SB2 B2+2 NEXT KEYWORD
JP B6 PROCESS KEYWORD
* RETURN KEYWORD VALUE TO TASK.
GSD3 SA1 B2-1 FWA OF VALUE IN TASK
BX7 -X2*X4 VALUE
SA7 X1+B5 RETURN VALUE TO TASK
EQ GSD1 PROCESS NEXT KEYWORD
* RETURN BAD KEY STATUS TO TASK.
GSD4 SX7 B7 POSITION OF BAD KEYWORD
SX6 TSBK RECOVERY STATUS BAD KEYWORD
IX6 X7+X6
SA1 X5 FWA OF STATUS
SA6 X1+B5 RETURN STATUS
EQ GSDX RETURN
* GET *CDCS* KEYWORD VALUE.
GSD5 SA4 B4+TTBFW+TRCCW *CDCS* VALUE
MX2 -TRCCN MASK FOR *CDCS*
LX4 TRCCN-1-TRCCS RIGHT JUSTIFY *CDCS* VALUE
EQ GSD3 RETURN VALUE TO TASK
* GET *CRM* KEYWORD VALUE.
GSD6 SA4 B4+TTBFW+TRCRW *CRM* VALUE
MX2 -TRCRN MASK FOR *CRM*
LX4 TRCRN-1-TRCRS RIGHT JUSTIFY *CRM*
EQ GSD3 RETURN VALUE TO TASK
* GET *NEWID* KEYWORD VALUE.
GSD7 SA4 B4+TTBFW+TRNIW *NEWID* VALUE
MX2 -TRNIN
LX4 TRNIN-1-TRNIS RIGHT JUSTIFY *NEWID*
EQ GSD3 RETURN VALUE TO TASK
* GET *OLDID* KEYWORD VALUE.
GSD8 SA4 B4+TTBFW+TROIW *OLDID* VALUE
MX2 -TROIN
LX4 TROIN-1-TROIS RIGHT JUSTIFY *OLDID*
EQ GSD3 RETURN VALUE TO TASK
* GET *SEQ* KEYWORD VALUE.
GSD9 SA4 B4+TTBFW+TRCNW *SEQ* VALUE
MX2 -TRCNN MASK FOR *SEQ*
LX4 TRCNN-1-TRCNS RIGHT JUSTIFY *SEQ* FIELD
EQ GSD3 RETURN VALUE TO TASK
* GET *STEP* KEYWORD VALUE.
GSD10 SA4 B4+TTBFW+TRCSW *STEP* VALUE
MX2 -TRCSN MASK FOR *STEP*
LX4 TRCSN-1-TRCSS RIGHT JUSTIFY *STEP*
EQ GSD3 RETURN VALUE TO TASK
* GET *TRAN* KEYWORD VALUE.
GSD11 SA4 B4+TTBFW+TRTYW *TRAN* VALUE
MX2 -TRTYN MASK FOR *TRAN*
LX4 TRTYN-1-TRTYS RIGHT JUSIFY *TRAN*
EQ GSD3 RETURN VALUE TO TASK
* KEYWORDS AND ASSOCIATED PROCESSING ROUTINES.
GSDB CKT CDCS,GSD5
CKT CRM,GSD6
CKT NEWID,GSD7
CKT NEXT,GSD1
CKT OLDID,GSD8
CKT RESTART,GSD1
CKT SEQ,GSD9
CKT STEP,GSD10
CKT TRAN,GSD11
CKT USER,GSD1
CKT END
.A ENDIF
PTK SPACE 4,20
** PTK - PROCESS *TSTAT* KEYWORDS.
*
* ENTRY (X5) = FWA OF REQUEST.
* (B5) = SUBCP RA.
* (B7) = FWA OF SUBCP TABLE ENTRY.
*
* EXIT (X0) = 0, IF NO KEYWORDS ACCESS RECOVERY FILE.
* (X6) = 0, IF NO KEYWORD ERRORS.
* *RSBK*, IF BAD KEYWORD.
* *TSRU*, IF RECOVERY UNAVAILABLE.
* NEGATIVE, IF TASK NOT VALIDATED FOR KEYWORDS.
* (X7) = TERMINAL STATUS TABLE ORDINAL, IF NON-ZERO.
*
* USES X - 0, 1, 2, 3, 4, 6, 7.
* A - 1, 2, 4, 6, 7.
* B - 2, 3, 4, 6.
*
* CALLS STST, VTO, ZFN, ZTB.
PTK12 SX6 B0+ NO ERRORS
SA1 PTKC TERMINAL STATUS TABLE ORDINAL
SX7 X1+
ZR X1,PTKX IF TERMINAL NOT SPECIFIED
ZR B5,PTKX IF INTERNAL *TAF* REQUEST
RJ VTO VALIDATE TASK ORIGIN
BX2 X6
SX6 B0 NO ERRORS
PL X2,PTKX IF TASK ON SYSTEM LIBRARY
MX6 1
PTK SUBR ENTRY/EXIT
SB2 X5+B1 FWA OF KEYWORDS
SX0 B0 NO KEYWORDS ACCESS RECOVERY FILE
SX6 B0 CLEAR TERMINAL ORDINAL
SB3 B0+ COUNT OF KEYWORDS PROCESSED
SA6 PTKC
PTK1 SA1 B2 FWA OF KEYWORD
ZR X1,PTK12 IF END OF KEYWORDS
SB3 B3+B1 UPDATE COUNT OF KEYWORDS PROCESSED
MX7 -18
SX3 3H BLANKS
BX3 -X7*X3
SA1 X1+B5 KEYWORD
* DETERMINE ROUTINE TO PROCESS KEYWORD.
SA2 PTKB TABLE OF KEY WORDS
PTK2 ZR X2,PTK4 IF KEYWORD NOT FOUND
SB6 X2 ROUTINE TO PROCESS KEYWORD
BX2 X7*X2
BX2 X2+X3 FILL KEY WORD WITH BLANKS
BX4 X1-X2
SA2 A2+B1 NEXT KEYWORD
NZ X4,PTK2 IF NOT DESIRED KEY WORD
SB2 B2+2 NEXT KEYWORD
JP B6 PROCESS KEYWORD
* RETURN KEYWORD VALUE TO TASK.
PTK3 SA1 B2-1 FWA OF VALUE IN TASK
BX7 -X2*X4 VALUE
SA7 X1+B5 RETURN VALUE TO TASK
EQ PTK1 PROCESS NEXT KEYWORD
* RETURN BAD KEY STATUS TO TASK.
PTK4 SX1 B3 COUNT OF KEYWORDS PROCESSED
SX6 TSBK RECOVERY STATUS BAD KEYWORD
IX6 X6+X1 STATUS CODE
PTK5 SA2 X5 FWA OF STATUS
SA6 X2+B5
EQ PTKX RETURN
* IF RECOVERY IS INSTALLED, INDICATE KEYWORD NEEDS
* RECOVERY FILE. IF RECOVERY IS NOT INSTALLED, RETURN
* RECOVERY NOT INSTALLED STATUS TO TASK.
.A IFGE IPTAR,1
PTK6 SX0 B1 INDICATE KEYWORD NEEDS RECOVERY FILE
EQ PTK1 GET NEXT KEYWORD
.A ELSE
PTK6 SX6 TSRU RECOVERY STATUS RECOVERY UNAVAILABLE
EQ PTKX RETURN
.A ENDIF
* DETERMINE TERMINAL ORDINAL FOR KEYWORD *NEXT*.
PTK7 SA1 B2-B1 FWA OF VALUE FOR *NEXT* KEYWORD
SA2 PTKA SPACES
SA1 X1+B5 VALUE FOR *NEXT*
BX6 X1-X2
SX7 B1 INITIAL TERMINAL ORDINAL
TB4 TSTLLE+1,VTST FWA OF FIRST TERMINAL
NZ X6,PTK9 IF NOT FIRST CALL OF *NEXT* USER
PTK8 SA4 B4 TERMINAL/USER
SA7 PTKC
MX0 TSTNN MASK FOR TERMINAL NAME
ERRNZ TSTNS-59 IF TERMINAL NAME NOT LEFT JUSTIFIED
BX1 X0*X4 TERMINAL NAME
RJ ZTB CHANGE ZEROS TO BLANKS IN TERMINAL NAME
SA6 A1 RETURN TERMINAL/USER TO TASK
EQ PTK1 PROCESS NEXT KEYWORD
PTK9 RJ ZFN ZERO FILE NAME
BX4 X1 FIND NAME IN TERMINAL STATUS TABLE
RJ STST SEARCH *TST* FOR USER
SX6 TSUU RECOVERY STATUS END OF NEXT
ZR X3,PTK5 IF TERMINAL/USER NOT FOUND
SX7 X3+1 TERMINAL ORDINAL FOR *NEXT*
SB4 A3+TSTLLE FWA OF NEXT TERMINAL/USER
TB6 2,VTST,LWA LWA OF TERMINAL STATUS TABLE
SX6 TSEN RECOVERY STATUS END OF *NEXT* PROCESSING
GE B4,B6,PTK5 IF END OF TERMINAL STATUS TABLE
EQ PTK8 RETURN TERMINAL TO TASK
* IF RECOVERY IS INSTALLED, EXTRACT VALUE FOR *RESTART*
* KEYWORD. IF RECOVERY IS NOT INSTALLED, RETURN RECOVERY
* NOT INSTALLED STATUS TO TASK.
.A IFGE IPTAR,1
PTK10 SA4 B5-NUAPL+CB2C FWA OF COMMUNICATION BLOCK
SA4 X4+CBTRW RESTART ATTRIBUTE
MX2 -CBTRN MASK FOR RESTART FIELD
LX4 CBTRN-1-CBTRS RIGHT JUSTIFY RESTART FIELD
EQ PTK3 RETURN VALUE TO TASK
.A ELSE
PTK10 SX6 TSRU RECOVERY STATUS RECOVERY UNAVAILABLE
EQ PTKX RETURN
.A ENDIF
* DETERMINE TERMINAL ORDINAL FOR *USER* KEYWORD.
PTK11 SA1 B2-B1 FWA OF VALUE FOR *USER*
SA1 X1+B5 TERMINAL NAME
RJ ZFN ZERO FILL TERMINAL NAME
BX4 X1
RJ STST SEARCH TERMINAL STATUS TABLE
SX6 TSUU RECOVERY STATUS USER UNKNOWN
ZR X3,PTK5 IF TERMINAL/USER NOT FOUND
SX7 X3+
SA7 PTKC
EQ PTK1 PROCESS NEXT KEYWORD
PTKA DATA 10H
* KEYWORDS AND THEIR ASSOCIATED PROCESSING ROUTINES.
PTKB CKT CDCS,PTK6
CKT CRM,PTK6
CKT NEWID,PTK6
CKT NEXT,PTK7
CKT OLDID,PTK6
CKT RESTART,PTK10
CKT SEQ,PTK6
CKT STEP,PTK6
CKT TRAN,PTK6
CKT USER,PTK11
PTKBL EQU *-PTKB NUMBER OF KEYWORDS
CKT END
PTKC BSS 1 TERMINAL STATUS TABLE ORDINAL
WFP SPACE 4,20
** WFP - *WSTAT* FUNCTION PROCESSOR.
*
* ENTRY (X1) = SUBCP FL.
* (X5) = SYSTEM REQUEST.
* (X7) = TERMINAL STATUS TABLE TERMINAL ORDINAL.
* (B2) = FWA OF TASK SYSTEM AREA.
* (B5) = TASK RA.
* (B7) = FWA OF SUBCP TABLE ENTRY.
*
* EXIT TO *TSSC*.
* TO *TERR11*, IF TASK NOT ON SYSTEM LIBRARY.
*
* USES X - ALL.
* A - 1, 2, 3, 4, 5, 6, 7.
* B - 3, 5, 6.
*
* CALLS CFA, CRS, DCPT, EXIT, FIO, GRP, IRU, PSD,
* RCPU, STF, VTO, VUP.
*
* MACROS QTWCALL.
WFP ZR B5,WFP1 IF AN INTERNAL REQUEST
RJ VTO VALIDATE TASK ORIGIN
NG X6,TERR11 IF TASK NOT ON SYSTEM LIBRARY
SB6 B1 REQUIRED NUMBER OF PARAMETERS
LX5 59-59-17+35
SX7 TSSC SET RETURN ADDRESS
SA7 B2+RWTS
* ENTRY FROM *WTS*.
WFP0 SB3 PWKBL*2+1
RJ VUP VALIDATE USER PARAMETERS
NZ X6,TERR2 IF INCORRECT PARAMETER
BX6 X5 SAVE SYSTEM REQUEST
MX3 -CBTON
SA4 B5-NUAPL+CB2C GET DEFAULT TERMINAL ORDINAL
SA6 WFPC
LX4 CBTON-1-CBTOS RIGHT JUSTIFY TERMINAL ORDINAL
BX7 -X3*X4
SA7 WFPA
TX6 B7+CPAL,-VCPA COMPUTE SUBCP
AX6 SCPAL
SA6 WFPB
SX6 RCL FWA OF QUEUE RELATIVE TO SUBCP
SA6 WFPD
SX6 B5-NUAPL+RCL FWA OF QUEUE RELATIVE TO *TAF*
SA6 WFPE
EQ WFP2 PROCESS *WSTAT* KEYWORDS
WFP1 SX6 B0 NO SUBCP
LX5 59-59-17+35
SA6 WFPB
SA7 WFPA TERMINAL ORDINAL
SX7 B3 FWA TO QUEUE WORK
SA7 WFPD
SA7 WFPE
BX6 X5 SAVE REQUEST
SA6 WFPC
WFP2 SX2 B5 COMPUTE ADDRESS RELATIVE TO *TAF*
IX5 X5+X2
RJ PWK PROCESS *WSTAT* KEYWORDS
NZ X6,WFP3 IF ERROR IN KEYWORDS
SX6 TSNE RECOVERY STATUS NO ERRORS
ZR X0,WFP3 IF RECOVERY FILE NOT NEEDED
ZR X7,WFP5 IF TERMINAL NOT SPECIFIED BY KEYWORDS
SA7 WFPA
EQ WFP5 SET UP QUEUE ENTRY
* RETURN STATUS TO TASK AND COMPLETE *WSTAT* PROCESSING.
WFP3 SA1 X5 FWA OF STATUS
SA6 X1+B5
NZ B5,TSSC IF NOT AN INTERNAL *TAF* REQUEST
* SET *WSTAT* PROCESSING COMPLETE TO ALLOW WAITING
* PROCESS TO CONTINUE.
WFP4 MX7 QRTCN
LX7 QRTCS-59
SA3 WFPE FWA OF QUEUE ENTRY
SA4 X3+QRTCW FUNCTION COMPLETE
BX6 X4+X7
SA6 A4
EQ TSSC TIME SLICE SUBCP
.A IFEQ IPTAR
WFP5 RJ EXIT PROGRAM ERROR
.A ELSE
WFP5 ZR B5,WFP6 IF AN INTERNAL *TAF* REQUEST
* DROP CPU FOR TASK. THE CPU WILL BE REQUESTED FOR THE SUBCP
* WHEN THE *WSTAT* FUNCTION COMPLETES.
SB5 B7+ SAVE FWA OF SUBCP TABLE ENTRY
RJ DCPT DROP CPU FOR TASK
SA1 B5+SCRAW TASK RA
SB5 X1
SX3 X1
SA5 B5-NUAPL+LRA1 SYSTEM REQUEST
IX5 X5+X3 REQUEST ADDRESS RELATIVE TO *TAF*
* SAVE PARAMETERS FOR RECOVERY PROCESSING IN THE QUEUE ENTRY.
WFP6 SA1 WFPA *TST* ORDINAL
SA2 WFPC REQUEST
SA3 WFPE FWA TO QUEUE REQUEST
SX7 X1 SAVE TERMINAL STATUS TABLE ORDINAL
BX6 X2 SAVE REQUEST IN QUEUE
SA7 X3+QRTOW
SA6 X3+QRECW
* DETERMINE RECOVERY FILE FOR TERMINAL.
WFP8 RJ STF SEARCH TERMINAL FILES FOR TERMINAL ORDINAL
* IF RECOVERY FILE IS NOT LOCKED, LOCK RECOVERY FILE AND
* START PROCESSING. IF RECOVERY FILE IS LOCKED,
* QUEUE THE REQUEST.
SA4 B4+TTLKW LOCK STATUS
ERRNZ TTLKS-59 IF LOCK NOT IN BIT 59
NG X4,WFP10 IF FILE IS LOCKED
MX7 TTLKN SET RECOVERY FILE LOCKED
BX6 X4+X7
LX7 TTEVS-59
ERRNZ TTLKN-TTEVN IF EVENT AND LOCK FIELDS NOT EQUAL
BX6 -X7*X6 CLEAR FILE RELEASE EVENT
ERRNZ TTLKW-TTEVW IF LOCK AND LOCK EVENT NOT IN SAME WORD
SX0 TSTLLE TERMINAL STATUS TABLE ENTRY LENGTH
SA6 A4+
* READ STATUS FROM RECOVERY FILE.
SX1 MSST MESSAGE SOURCE IS STATUS
BX2 X3 TERMINAL ORDINAL IN RECOVERY FILE
RJ CFA COMPUTE FILE ADDRESS FOR STATUS
SX5 B4+TTFTW FWA OF FET
SX2 TRUPL LENGTH OF RECOVERY STATUS IN PRUS
SX1 CIORD *CIO* READ FUNCTION
RJ FIO DO FILE INPUT/OUTPUT
* QUEUE REQUEST TO LET *TAF* DO OTHER WORK UNTIL
* INPUT IS COMPLETE.
SX1 B4+TTFTW FWA OF INPUT COMPLETE EVENT
SA3 WFPB SUBCP
SA4 WFPD FWA OF RECOVERY QUEUE ENTRY
SB3 X4
SX5 B0 NO TIME OUT ON EVENT
QTWCALL 0,QTEV WAIT FOR INPUT TO COMPLETE
RJ GRP GET REQUEST PARAMETERS AFTER WAIT
SA6 WFPB SAVE SUBCP
SX7 B6 FWA OF QUEUE ENTRY RELATIVE TO TAF
SX6 B3 FWA OF QUEUE ENTRY RELATIVE TO TASK
SA7 WFPE
SA6 WFPD
RJ STF SEACH TERMINAL FILE TABLE FOR ORDINAL
SX7 X3+ RECOVERY FILE TERMINAL ORDINAL
SA7 WFPF
RJ CRS CHECK RECOVERY STATUS FOR ERRORS
RJ PSD PUT STATUS DATA
NZ X6,WFP9 IF ERRORS, RECOVERY FUNCTION COMPLETE
* WRITE *WSTAT* DATA TO RECOVERY FILE.
SX1 MSST MESSAGE SOURCE IS STATUS
SA2 WFPF TERMINAL ORDINAL IN RECOVERY FILE
RJ CFA COMPUTE FILE ADDRESS FOR *WSTAT*
SX5 B4+TTFTW FWA OF FET
SX2 TRUPL LENGTH TO WRITE IN PRUS
SX1 CIORW *CIO* REWRITE
RJ FIO DO FILE INPUT/OUTPUT
* QUEUE REQUEST TO LET *TAF* DO OTHER WORK UNTIL
* OUTPUT IS COMPLETE.
SX1 B4+TTFTW FWA OF EVENT COMPLETE IS FET
SA3 WFPB SUBCP OF EVENT
SA4 WFPD FWA OF RECOVERY QUEUE ENTRY
SB3 X4
SX5 B0 NO TIME OUT ON EVENT
QTWCALL 0,QTEV WAIT ON BIT 0 OF FET TO COMPLETE
RJ GRP GET REQUEST PARAMETERS AFTER WAIT
SX7 B6+ FWA OF QUEUE RELATIVE TO *TAF*
SA6 WFPB SAVE SUBCP
SA7 WFPE
RJ STF SEARCH TERMINAL FILE FOR ORDINAL
RJ CRS CHECK RECOVERY STATUS FOR ERRORS
* RETURN STATUS TO TASK.
SX6 TSNE RECOVERY STATUS NO ERRORS
SA4 X5 FWA OF STATUS
SA6 X4+B5 RETURN STATUS
* UNLOCK RECOVERY FILE.
WFP9 SA4 B4+TTLKW LOCK STATUS
MX7 -60+TTLKN
ERRNZ TTLKS-59 IF LOCK NOT IN BIT 59
BX6 -X7*X4 CLEAR LOCK
ERRNZ TTLKW-TTEVW IF LOCK AND LOCK EVENT NOT IN SAME WORD
LX7 TTEVS-59
ERRNZ TTLKN-TTEVN IF EVENT AND LOCK FIELDS NOT EQUAL
BX6 X7+X6 SET FILE RELEASE EVENT
SA6 A4
SA2 WFPB SUBCP
ZR X2,WFP4 IF AN INTERNAL *TAF* REQUEST
* REQUEST CPU FOR SUBCP.
LX2 SCPAL COMPUTE SUBCP TABLE ADDRESS
TA4 X2-CPAL,VCPA
SB6 A4 FWA OF SUBCP TABLE ENTRY
SX4 X4-NUAPL FWA OF TASK SYSTEM AREA
SA3 X4+RWTS GET RETURN ADDRESS
SB3 TSSC
SX6 X3+
SA6 X4+RCL RETURN AFTER RECALL
SA5 B6+SCRCW SET RECALL FLAG
MX6 SCRCN
LX6 SCRCS-59
BX6 X6+X5
SA6 A5
RJ RSP RESTORE SUBCP REGISTERS
EQ RCPU REQUEST CPU FOR TASK
* RECOVERY FILE IS LOCKED, SO QUEUE REQUEST.
WFP10 SX1 B4+TTEVW FWA OF LOCK RELEASE EVENT
SA3 WFPB SUBCP
SA4 WFPD FWA OF QUEUE ENTRY
SB3 X4
SX5 B0 NO TIMEOUT ON EVENT
QTWCALL TTEVS,QTEV WAIT UNIT LOCK IS RELEASED
RJ GRP GET REQUEST PARAMETERS
SA6 WFPB SAVE SUBCP
SX6 B3+ SAVE FWA OF QUEUE ENTRY
SA6 WFPD
EQ WFP8 DETERMINE RECOVERY FILE
.A ENDIF
WFPA BSS 1 TERMINAL STATUS TABLE ORDINAL
WFPB BSS 1 SUBCP
WFPC BSS 1 REQUEST
WFPD BSS 1 FWA OF QUEUE ENTRY TO SUBCP
WFPE BSS 1 FWA OF QUEUE ENTRY RELATIVE TO *TAF*
WFPF BSS 1 RECOVERY FILE TERMINAL ORDINAL
.A IFGE IPTAR,1
PSD SPACE 4,15
** PSD - PUT STATUS DATA.
*
* ENTRY (X5) = RA REQUEST.
* (B5) = SUBCP RA.
*
* EXIT (X6) = 0, IF NO KEYWORD ERRORS.
* *RSBK*, IF BAD KEYWORD.
*
* USES X - 1, 2, 3, 4, 6, 7.
* A - 1, 2, 4, 6, 7.
* B - 2, 6, 7.
PSD SUBR ENTRY/EXIT
SB2 X5+B1 FWA OF KEYWORDS
SB7 B0+ COUNT OF KEYWORDS PROCESSED
PSD1 SA1 B2 FWA OF KEYWORD
SX6 B0 NO ERRORS
ZR X1,PSDX IF END OF KEYWORDS
SB7 B7+B1 UPDATE COUNT OF KEYWORDS PROCESSED
MX7 -18
* DETERMINE ROUTINE TO PROCESS KEYWORD.
SA2 PSDB FIRST *WSTAT* KEYWORD
SX3 3H BLANKS
BX3 -X7*X3
SA1 X1+B5 KEYWORD
PSD2 ZR X2,PSD3 IF BAD KEYWORD
SB6 X2 ROUTINE TO PROCESS KEYWORD
BX2 X7*X2
BX2 X2+X3 BLANK FILL KEYWORD
BX4 X1-X2
SA2 A2+1 NEXT KEYWORD
NZ X4,PSD2 IF NOT DESIRED KEYWORD
SA1 B2+B1 FWA OF VALUE FOR KEYWORD
SA1 X1+B5 VALUE FOR KEYWORD
SB2 B2+2 NEXT KEYWORD
JP B6 PROCESS KEYWORD
* PROCESS BAD KEYWORD.
PSD3 SX7 B7 BAD KEYWORD POSITION
SX6 TSBK RECOVERY STATUS BAD KEYWORD
IX6 X6+X7
PSD4 SA1 X5 FWA OF STATUS
SA6 X1+B5 RETURN STATUS TO TASK
EQ PSDX RETURN
* PUT *CDCS* KEYWORD VALUE IN BUFFER.
PSD5 SA4 B4+TTBFW+TRCCW *CDCS* VALUE
MX2 60-TRCCN
LX4 TRCCN-1-TRCCS RIGHT JUSTIFY *CDCS* FIELD
BX7 X2*X4
BX7 X7+X1
LX7 TRCCS-TRCCN+1 POSITION *CDCS* FIELD
SA7 A4
EQ PSD1 PROCESS NEXT KEYWORD
* PUT *CRM* KEYWORD VALUE IN BUFFER.
PSD6 SA4 B4+TTBFW+TRCRW *CRM* FIELD
MX2 60-TRCRN
LX4 TRCRN-1-TRCRS RIGHT JUSTIFY *CRM* FIELD
BX7 X2*X4
BX7 X1+X7 NEW *CRM* VALUE
LX7 TRCRS-TRCRN+1 POSITION *CRM* FIELD
SA7 A4
EQ PSD1 PROCESS NEXT KEYWORD
* PUT *NEWID* KEYWORD VALUE IN BUFFER.
PSD7 BX7 X1
ERRNZ TRNIN-60 IF FIELD DOES NOT OCCUPY FULL WORD
SA7 B4+TTBFW+TRNIW
EQ PSD1 PROCESS NEXT KEYWORD
* PUT *OLDID* KEYWORD VALUE IN BUFFER.
PSD8 BX7 X1
ERRNZ TROIN-60
SA7 B4+TTBFW+TROIW
EQ PSD1 PROCESS NEXT KEYWORD
* PUT *SEQ* KEYWORD VALUE IN BUFFER.
PSD9 SA4 B4+TTBFW+TRCNW *SEQ* FIELD
LX4 TRCNN-1-TRCNS RIGHT JUSTIFY *SEQ* FIELD
MX2 60-TRCNN
BX7 X2*X4
BX7 X7+X1 SET NEW *SEQ* VALUE
LX7 TRCNS-TRCNN+1 POSITION *SEQ* FIELD
SA7 A4
EQ PSD1 PROCESS NEXT KEYWORD
* PUT *STEP* KEYWORD VALUE IN BUFFER.
PSD10 SX4 X1-CSTT
ZR X4,PSD1 IF START INPUT REQUEST
SA4 B4+TTBFW+TRCSW *STEP* FIELD
MX2 60-TRCSN
LX4 TRCSN-1-TRCSS RIGHT JUSTIFY *STEP*
BX7 X2*X4
BX7 X7+X1 NEW STEP FIELD
LX7 TRCSS-TRCSN+1 POSITION *STEP* FIELD
SA7 A4
EQ PSD1 PROCESS NEXT KEYWORD
* PUT *TRAN* KEYWORD VALUE IN BUFFER.
PSD11 SA4 B4+TTBFW+TRTYW *TRAN* FIELD
MX2 60-TRTYN
LX4 TRTYN-1-TRTYS RIGHT JUSTIFY *TRAN*
BX7 X2*X4
BX7 X7+X1 NEW *TRAN* VALUE
LX7 TRTYS-TRTYN+1 POSITION *TRAN* FIELD
SA7 A4
EQ PSD1 PROCESS NEXT KEYWORD
* KEYWORDS AND THEIR ASSOCIATED PROCESSING ROUTINE.
PSDB CKT CDCS,PSD5
CKT CRM,PSD6
CKT NEWID,PSD7
CKT NEXT,PSD3
CKT OLDID,PSD8
CKT RESTART,PSD3
CKT SEQ,PSD9
CKT STEP,PSD10
CKT TRAN,PSD11
CKT USER,PSD1
CKT END
.A ENDIF
PWK SPACE 4,20
** PWK - PROCESS *WSTAT* KEYWORDS.
*
* ENTRY (X5) = FWA OF REQUEST.
* (B5) = SUBCP RA.
*
* EXIT (X0) = 0, IF NO KEYWORDS ACCESS RECOVERY FILE.
* (X6) = 0, IF NO KEYWORD ERRORS.
* *RSBK*, IF BAD KEYWORD.
* (X7) = TERMINAL STATUS TABLE ORDINAL, IF NON-ZERO.
* (STIN) = 1, IF COMMUNICATIONS ENABLED, OTHERWISE 0.
*
* USES X - 0, 1, 2, 3, 4, 6, 7.
* A - 1, 2, 6, 7.
* B - 2, 3, 6.
*
* CALLS STST, ZFN.
*
* MACROS ABORT, MESSAGE.
PWK11 SX6 B0+ NO ERRORS
SA1 PWKD TERMINAL STATUS TABLE ORDINAL
SX7 X1+
PWK SUBR ENTRY/EXIT
SB2 X5+B1 FWA OF KEYWORDS
SX0 B0 NO KEYWORDS ACCESS RECOVERY FILE
SX6 B0 CLEAR TERMINAL ORDINAL
SB3 B0+ COUNT OF KEYWORDS PROCESSED
SA6 PWKD
PWK1 SA1 B2 FWA OF KEYWORD
ZR X1,PWK11 IF END OF KEYWORDS
SB3 B3+B1 UPDATE COUNT OF KEYWORDS
MX7 -18
SX3 3H BLANKS TO FILL KEYWORD
BX3 -X7*X3
* DETERMINE ROUTINE TO PROCESS KEYWORD.
SA2 PWKB FIRST KEYWORD
SA1 X1+B5 USER KEYWORD
PWK2 ZR X2,PWK3 IF BAD KEYWORD
SB6 X2 ROUTINE TO PROCESS KEYWORD
BX2 X7*X2
BX2 X2+X3 BLANK FILL KEYWORD
BX4 X2-X1
SA2 A2+B1 NEXT KEYWORD
NZ X4,PWK2 IF NOT USER TASK KEYWORD
SA1 B2+B1 FWA OF VALUE FOR KEYWORD
SA1 X1+B5 VALUE FOR KEYWORD
SB2 B2+2 NEXT KEYWORD
JP B6 PROCESS KEYWORD
* PROCESS BAD KEYWORD.
PWK3 SX7 B3 BAD KEYWORD POSITION
SX6 TSBK RECOVERY STATUS BAD KEYWORD
IX6 X6+X7
PWK4 SA1 X5 FWA OF STATUS
SA6 X1+B5 RETURN STATUS TO TASK
EQ PWKX RETURN
* IF RECOVERY IS INSTALLED, INDICATE KEYWORD NEEDS RECOVERY
* FILE. IF RECOVERY IS NOT INSTALLED, RETURN RECOVERY NOT
* INSTALLED STATUS TO TASK.
.A IFGE IPTAR,1
PWK5 SX0 B1 INDICATE KEYWORD NEEDS RECOVERY FILE
EQ PWK1 PROCESS NEXT KEYWORD
.A ELSE
PWK5 SX6 TSRU RECOVERY STATUS RECOVERY UNAVAILABLE
EQ PWKX RETURN
.A ENDIF
* PROCESS *STEP* KEYWORD. IF *STEP* VALUE EQUALS *CSTT*
* ABORT *TAF*. IF *STEP* VALUE EQUALS *CSST* TELL *TAF*
* TO ALLOW TRANSACTION INPUT.
PWK7 SX2 X1-CSTT
ZR X2,PWK8 IF TERMINATE *TAF*
SX2 X1-CSST
ZR X2,PWK9 IF START TERMINAL/JOB INPUT
EQ PWK5 INDICATE KEYWORD NEEDS RECOVERY FILE
PWK8 MESSAGE PWKC * RECOVERY NOT SUCCESSFUL.*
ABORT
PWK9 SX7 B1+ START INPUT FOR TERMINALS/JOBS
SA7 STIN
SA4 B5-NUAPL+CB2C GET *TST* ADDRESS
LX4 CBTAN-CBTAS-1
SX4 X4
ZR X4,PWK1 IF SYSTEM ORIGIN TRANSACTION
MX6 TSCPN-60
LX6 TSCPS-59 CLEAR CONNECTION POSTPONE FLAG
SA4 X4+B1 WORD 2 OF *TST*
BX6 -X6*X4
SA6 A4+ UPDATE WORD 2 OF *TST*
EQ PWK1 PROCESS NEXT KEYWORD
* PROCESS *USER* KEYWORD. SEARCH TERMINAL STATUS TABLE FOR
* SPECIFIED USER NAME AND DETERMINE TERMINAL ORDINAL.
PWK10 RJ ZFN ZERO FILL NAME
BX4 X1
RJ STST SEARCH TERMINAL STATUS TABLE
SX6 TSUU RECOVERY STATUS USER UNKNOWN
ZR X3,PWK4 IF TERMINAL NAME NOT FOUND
SX7 X3+ SAVE TERMINAL ORDINAL
SA7 PWKD
EQ PWK1 PROCESS NEXT KEYWORD
* KEYWORDS AND THEIR ASSOCIATED PROCESSING ROUTINES.
PWKB CKT CDCS,PWK5
CKT CRM,PWK5
CKT NEWID,PWK5
CKT NEXT,PWK3
CKT OLDID,PWK5
CKT RESTART,PWK3
CKT SEQ,PWK5
CKT STEP,PWK7
CKT TRAN,PWK5
CKT USER,PWK10
PWKBL EQU *-PWKB NUMBER OF KEYWORDS
CKT END
PWKC DATA C* RECOVERY NOT SUCCESSFUL.*
PWKD BSS 1 TERMINAL STATUS TABLE ORDINAL
ROU SPACE 4,10
** ROU - *ROUTE* PROCESSOR.
*
* ENTRY (X1) = TASK FL.
* (B4) = COMPLEMENT OF FWA OF PARAMETER LIST.
* (B5) = TASK RA.
*
* EXIT TO *TSSC*, IF ERROR ENCOUNTERED.
* TO *TRCL2*, IF LAST DSP REQUEST NOT COMPLETED.
* TO *RFQ*, IF FILE IS TO BE ROUTED.
*
* USES X - 0, 1, 2, 3, 4, 6, 7.
* A - 1, 2, 3, 6, 7.
* B - 3, 5, 6.
*
* CALLS KDC, KDE, KDO, KEC, KFC, KFM, KIC, KID, KJS, KOT, KPI,
* KPR, KRE, KSC, KST, KSV, KTD, KUJ, KUN, RSP, ZFN.
*
* MACROS REWIND, WRITE, WRITER.
ROU BSS 0 ENTRY
SA2 TDSP CHECK INTERLOCK
SX7 SRTN4.1 RECALL RETURN ADDRESS
NZ X2,TRCL2 IF LAST DSP REQUEST NOT COMPLETED
SX6 B5 SAVE TASK RA
SA6 ROUB
MX7 0 CLEAR INTERNAL FLAGS
SA7 PTID
SA7 A7+B1 CLEAR *PFUN*
SA7 A7+B1 CLEAR *PDID*
SA7 A7+B1 CLEAR *PDEF*
SA7 A7+B1 CLEAR *PJSN*
SA7 A7+B1 CLEAR *PUJN*
SA7 A7+B1 CLEAR *PDCT*
SA7 A7+B1 CLEAR *PECT*
SA7 A7+B1 CLEAR *PJOT*
* INITIALIZE *DSP* PARAMETER BLOCK.
SA2 SF SET FILE NAME IN *TROU*
MX0 42
BX6 X0*X2
SA6 TROU
SX2 FRER+FRFN INITIALIZE *TROU+1*
BX6 -X0*X2
SA6 A6+B1
MX2 -24 INITIALIZE *TROU+2*
BX6 -X2
SA6 A6+B1
BX6 X6-X6 INITIALIZE REST OF PARAMETER BLOCK
SA6 A6+B1
SA6 A6+B1
SA6 A6+1
SA6 A6+B1
* GET FWA OF DATA.
SA2 B5-B4 FWA OF PARAMETER LIST
MX0 -18
BX7 -X0*X2
SX6 EC100
ZR X7,ROU8 IF NO DATA TO ROUTE
SA3 SF+1
SX7 B5+X7 FWA OF DATA (RELATIVE TO TAF)
BX7 -X0*X7
BX3 X0*X3
BX7 X3+X7
SA7 A3+ STORE *FIRST*
* GET LENGTH (IN CM WORDS).
SA2 A2+B1 GET FWA OF LENGTH
BX2 -X0*X2
SX6 EC101
ZR X2,ROU8 IF LENGTH NOT SPECIFIED
SA3 X2+B5
IX4 X1-X3
ZR X3,ROU8 IF NO DATA TO ROUTE (LENGTH = 0)
NG X4,ROU8 IF LENGTH OF DATA EXCEEDS TASK FL
IX6 X7+X3 LWA+1 OF DATA (RELATIVE TO TAF)
SA3 SF+4
BX6 -X0*X6
SX6 X6+1
SA2 A2+B1 FWA OF STATUS WORD
BX3 X0*X3
BX6 X3+X6
SA6 A3+ SET *LIMIT*
* GET FWA OF STATUS WORD.
BX2 -X0*X2
SX6 EC102
ZR X2,ROU8 IF NO STATUS RETURN ADDRESS SPECIFIED
SX6 X2 SAVE STATUS RETURN ADDRESS
SB6 A2+B1 POINT TO NEXT PARAMETER
SA6 ROUA
* RETURN HERE FROM PARAMETER PROCESSOR.
* (B6) = ADDRESS OF NEXT PARAMETER.
* PROCESS NEXT PARAMETER.
ROU1 SA1 ROUB GET TASK RA
SB5 X1
SA1 B6 GET FWA OF NEXT PARAMETER
ZR X1,ROU3 IF END OF PARAMETERS
SA1 X1+B5 ACTUAL PARAMETER
RJ ZFN ZERO FILL ACTUAL PARAMETER
SA3 B6+B1 FWA OF PARAMETER VALUE
SB6 B6+2
* SEARCH FOR PARAMETER PROCESSOR.
MX0 36
SA2 TKEY-1
ROU2 SA2 A2+B1
BX7 X1-X2 COMPARE PARAMETER
BX7 X0*X7
SB3 X2 SET PARAMETER PROCESSOR ADDRESS
SX6 EC103
ZR X2,ROU8 IF PARAMETER NOT FOUND IN TABLE
NZ X7,ROU2 IF NOT THIS PARAMETER
SX6 EC104
ZR X3,ROU8 IF NO PARAMETER VALUE SPECIFIED
SA1 X3+B5
RJ ZFN ZERO FILL PARAMETER VALUE
BX3 X1
JP B3 EXECUTE PARAMETER PROCESSOR
* MAKE *DSP* CALL.
ROU3 SA1 TROU+1 *DSP* PARAMETER BLOCK WORD 1
MX0 -12
BX2 X1
AX1 24
BX7 -X0*X1 DISPOSITION CODE
SB3 B0 INITIALIZE POINTER FOR *ROUC* TABLE
AX1 12
BX1 -X0*X1 FORMS CODE
SX3 X7-2RSC
ZR X3,ROU5 IF *DC=SC*
ROU4 SA3 ROUC+B3 GET INPUT MNEMONIC
ZR X3,ROU5 IF END OF TABLE
IX3 X7-X3
SB3 B3+B1 GET NEXT MNEMONIC
NZ X3,ROU4 IF NO MATCH
SX6 EC105
NZ X1,ROU8 IF *FC* SPECIFIED ON INPUT DISPOSITION
SA1 PDEF CHECK FOR *DEF* PARAMETER
SX6 EC106
NZ X1,ROU8 IF DEFERRED INPUT FILE
ROU5 SA1 PFUN
SA3 PTID
SX4 FRTI
BX6 X3+X1
BX7 X4+X2
ZR X6,ROU6 IF NOT REMOTE ROUTING
SA7 TROU+1 SET *TID* FLAG BIT
SA1 TFUN
SA2 A1+B1
BX2 X2+X1
ZR X2,ROU6 IF IMPLICIT REMOTE ROUTING
SA2 TROU+2
SX3 A1 SET ADDRESS OF FAMILY/USER NAME BLOCK
MX0 36
BX3 -X3
BX6 -X0*X3
BX2 X0*X2
BX6 X2+X6
SA6 TROU+2
ROU6 MX0 -3
SA1 PDCT
LX0 3
SA2 PECT
BX1 -X0*X1 GET *DC* TYPE
BX2 -X0*X2 GET *EC* TYPE
ZR X1,ROU7 IF NO *DC* TYPE
ZR X2,ROU7 IF NO *EC* TYPE
BX1 X1-X2
ZR X1,ROU7 IF TYPES COMPARE
SX6 EC107
EQ ROU8 RETURN ERROR CODE
* ROUTE DATA AND GET STATUS.
ROU7 REWIND SF,R
SA2 SF+4 SET *IN* TO *LIMIT-1*
MX0 -18
BX6 -X0*X2
SX3 B1
IX6 X6-X3
SA6 A2-2
WRITER SF,R WRITE DATA TO SCRATCH FILE
SA1 SF+1 *FIRST*
SX6 OBUF
MX0 42
SA6 A1+B1 RESTORE *IN*
SA6 A6+B1 RESTORE *OUT*
BX1 X0*X1
SA2 A6+B1 *LIMIT*
BX6 X1+X6
SX7 OBUF+OBUFL
BX2 X0*X2
SA6 A1 RESTORE *FIRST*
BX7 X2+X7
SA7 A2 RESTORE *LIMIT*
RJ RSP RESTORE B2 AND B7
SA1 TROU+1 GET PARAMETER FLAGS
SA3 ROUA GET STATUS RETURN ADDRESS
SX6 RFQ3 *ROUTE* REQUEST STATUS PROCESSOR
LX3 18
BX3 X3+X6 24/, 18/ STATUS ADDR, 18/ STATUS PROC-R
EQ RFQ ROUTE FILE TO QUEUE
* RETURN HERE IF TAF DETECTS A *ROUTE* PARAMETER VALUE ERROR.
* (X6) = ERROR CODE.
ROU8 SA3 ROUA RETURN STATUS ADDRESS
SA1 ROUB
IX3 X3+X1
SA6 X3 STORE ERROR CODE
EQ TSSC ENTER SWITCH LOOP
ROUA BSSZ 1 RETURN STATUS ADDRESS
ROUB BSSZ 1 TEMPORARY STORAGE FOR TASK RA
* INPUT DISPOSITION CODE TABLE.
ROUC DATA 2RIN *DC=IN*
DATA 2RNO *DC=NO*
DATA 2RTO *DC=TO*
DATA 0
SPACE 4,10
** ALL OF THE FOLLOWING ROUTINES (*KDC* THROUGH *KUN*) HAVE THE
* FOLLOWING COMMON ENTRY AND EXIT CONDITIONS. REFER TO THE
* INDIVIDUAL ROUTINES FOR SPECIFIC CONDITIONS.
*
* ENTRY (X3) = PARAMETER VALUE WHEN *PARAMETER = PARAMETER
* VALUE* IS THE FORMAT.
* (X3) = 0 IF *PARAMETER* IS THE FORMAT.
*
* EXIT TO *ROU1* IF NO ERROR.
* ENTRIES MADE IN *DSP* PARAMETER BLOCK *TROU*.
* (B6) = ENTRY VALUE.
KDC SPACE 4,10
** KDC - PROCESS *DC=XX* (DISPOSITION CODE).
*
* ENTRY (X3) = DISPOSITION CODE, LEFT JUSTIFIED.
*
* EXIT TO *ROU1*.
* *DC* FIELD IN *TROU+1* = DISPOSITION CODE.
* DISPOSITION CODE FLAG SET IN *TROU+1*.
* (PDCT) = DISPOSITION CODE TYPE.
* (B6) = ENTRY VALUE.
*
* USES X - 0, 1, 3, 7.
* A - 1, 7.
KDC BSS 0 ENTRY
SA1 TDCC-1
MX0 12
* FIND CODE IN TABLE.
KDC1 SA1 A1+1
BX7 X1-X3 COMPARE CODES
BX7 X0*X7
ZR X1,KDC2 IF END OF TABLE
NZ X7,KDC1 IF NO MATCH
KDC2 BX7 X1
SA7 PDCT SET TYPE PROCESSED
LX3 -24 POSITION PARAMETER
SA1 TROU+1
SX7 FRDC
LX0 -24 POSITION MASK
BX3 X0*X3
BX1 -X0*X1
BX3 X1+X3 ENTER *DC* PARAMETER
BX7 X3+X7 ENTER FLAG BIT
SA7 A1
EQ ROU1 RETURN
KDE SPACE 4,10
** KDE - PROCESS *DEF* (DEFERRED ROUTE).
*
* EXIT TO *ROU1*.
* DEFERRED ROUTE FLAG SET IN *TROU+1*.
* (PDEF) = NON-ZERO.
* (B6) = ENTRY VALUE.
*
* ERROR TO *ROU8* IF INCORRECT *DEF* PARAMETER.
*
* USES X - 1, 6, 7.
* A - 1, 7.
KDE BSS 0 ENTRY
NZ X3,KDE1 IF EQUIVALENCED PARAMETER
SA1 TROU+1
SX7 FRDR
SA7 PDEF SET *DEF* PARAMETER ENTERED FLAG
BX7 X1+X7 ENTER FLAG
SA7 A1
EQ ROU1 RETURN
KDE1 SX6 EC108 INCORRECT *DEF* PARAMETER
EQ ROU8 RETURN ERROR CODE
KDO SPACE 4,10
** KDO - PROCESS *DO=XXX* (DESTINATION OUTPUT MAINFRAME).
*
* ENTRY (X3) = OUTPUT MAINFRAME *LID*, LEFT JUSTIFIED.
*
* EXIT TO *ROU1*.
* *SLID* FIELD IN *TROU+2* = OUTPUT MAINFRAME *LID*.
* *SLID/DLID* FLAG SET IN *TROU+1*.
* (B6) = ENTRY VALUE.
*
* ERROR TO *ROU8* IF INCORRECT *DO* VALUE.
*
* USES X - 0, 1, 2, 3, 4, 5, 6.
* A - 1, 2, 5, 6.
KDO BSS 0 ENTRY
MX0 18
BX2 -X0*X3
AX2 18
NZ X2,KDO2 IF *LID* GREATER THAN THREE CHARACTERS
BX6 X0*X3 EXTRACT OUTPUT MAINFRAME *LID*
SX5 1R* CHECK FOR ASTERISK
LX5 17-5
R= X4,LCPD SET *SLID* TO *PID*
LX6 18
IX3 X4-X6
PL X3,KDO2 IF .LE. SPECIAL *SLID* VALUES
BX5 X5-X6
NZ X5,KDO1 IF NOT ASTERISK
BX6 X4 SET *SLID*=*PID*
KDO1 SA2 TROU+2 SET *SLID* IN *TROU*
BX2 -X0*X2
LX6 42
BX6 X2+X6
SA6 A2
SX6 FRLD
SA1 A2-B1 SET *SLID/DLID* FLAG
BX6 X1+X6
SA6 A1+ STORE FLAG
EQ ROU1 RETURN
KDO2 SX6 EC109 INCORRECT *DO* VALUE
EQ ROU8 RETURN ERROR CODE
KEC SPACE 4,10
** KEC - PROCESS *EC=XX* (EXTERNAL CHARACTERISTIC).
*
* ENTRY (X3) = EXTERNAL CHARACTERISTIC, LEFT JUSTIFIED.
*
* EXIT TO *ROU1*.
* *EC* FIELD IN *TROU+1* = EXTERNAL CHARACTERISTIC.
* EXTERNAL CHARACTERISTIC FLAG SET IN *TROU+1*.
* (PECT) = EXTERNAL CHARACTERISTIC TYPE.
* (B6) = ENTRY VALUE.
*
* ERROR TO *ROU8* IF INCORRECT *EC* VALUE.
*
* USES X - 0, 1, 2, 6, 7.
* A - 1, 2, 6.
KEC BSS 0 ENTRY
MX0 36
MX7 -3
SA1 TECC-1
SA2 TROU+1
KEC1 SA1 A1+B1
ZR X1,KEC2 IF EXTERNAL CHARACTERISTIC NOT FOUND
BX6 X3-X1
BX6 X0*X6
NZ X6,KEC1 IF NOT CORRECT EXTERNAL CHARACTERISTIC
BX6 X1
SA6 PECT SET TYPE PROCESSED
LX7 23-2 POSITION MASK
LX1 23-2 POSITION ENTRY FROM *EC* TABLE
SX6 FREC
BX2 X7*X2
BX1 -X7*X1
BX6 X2+X6 ENTER FLAG BIT
BX6 X1+X6 ENTER *EC* CODE
SA6 A2+
EQ ROU1 RETURN
KEC2 SX6 EC107 INCORRECT *EC* VALUE
EQ ROU8 RETURN ERROR CODE
KFC SPACE 4,10
** KFC - PROCESS *FC=XX* (FORMS CODE).
*
* ENTRY (X3) = FORMS CODE, LEFT JUSTIFIED.
*
* EXIT TO *ROU1*.
* *FC* FIELD IN *TROU+1* = FORMS CODE.
* FORMS CODE FLAG SET IN *TROU+1*.
* (B6) = ENTRY VALUE.
*
* ERROR TO *ROU8* IF FORMS CODE GREATER THAN TWO CHARACTERS.
*
* USES X - 0, 1, 2, 3, 6.
* A - 1, 6.
KFC BSS 0 ENTRY
SA1 TROU+1
MX0 -48
BX2 -X0*X3
LX3 -12
NZ X2,KFC1 IF FORMS CODE GREATER THAN TWO CHARACTERS
LX0 -12
SX6 FRFC
BX1 X1+X6 ENTER FLAG BIT
BX3 X0*X3
BX6 X1+X3 ENTER FORMS CODE
SA6 A1
EQ ROU1 RETURN
KFC1 SX6 EC110 INCORRECT *FC* VALUE
EQ ROU8 RETURN ERROR CODE
KFM SPACE 4,10
** KFM - PROCESS *FM=XXXXXXX* (FAMILY NAME).
*
* ENTRY (X3) = FAMILY NAME, LEFT JUSTIFIED.
*
* EXIT TO *ROU1*.
* (TFUN) = FAMILY NAME.
* (PFUN) = NON-ZERO.
* (B6) = ENTRY VALUE.
*
* ERROR TO *ROU8* IF *TID/FM/UN* - *ID* CONFLICT OR *TID* -
* *FM/UN* CONFLICT.
*
* USES X - 0, 1, 6, 7.
* A - 1, 7.
KFM BSS 0 ENTRY
SA1 PDID
NZ X1,KFM2 IF *FM* AND *ID* CONFLICT
SA1 PTID
SX7 FRTI
NZ X1,KFM1 IF *TID* PROCESSED
SA7 PFUN SET *FM-UN* FLAG
ZR X3,ROU1 IF IMPLICIT REMOTE ROUTING
MX0 42
BX7 X0*X3
SA7 TFUN STORE FAMILY NAME IN *TFUN*
EQ ROU1 RETURN
KFM1 SX6 EC111 *TID* AND *FM/UN* CONFLICT
EQ ROU8 RETURN ERROR CODE
KFM2 SX6 EC112 *TID/FM/UN* AND *ID* CONFLICT
EQ ROU8 RETURN ERROR CODE
KIC SPACE 4,10
** KIC - PROCESS *IC=XX* (INTERNAL CHARACTERISTIC).
*
* ENTRY (X3) = INTERNAL CHARACTERISTIC, LEFT JUSTIFIED.
*
* EXIT TO *ROU1*.
* *IC* FIELD IN *TROU+1* = INTERNAL CHARACTERISTIC.
* INTERNAL CHARACTERISTIC FLAG SET IN *TROU+1*.
* (B6) = ENTRY VALUE.
*
* ERROR TO *ROU8* IF INCORRECT *IC* VALUE.
*
* USES X - 0, 1, 2, 6, 7.
* A - 1, 2, 6.
KIC BSS 0 ENTRY
SA1 TROU+1
SA2 TICC-1
SX6 FRIC
MX7 -2
MX0 36
LX7 19-1 POSITION MASK
BX6 X1+X6 ENTER FLAG BIT
KIC1 SA2 A2+B1
ZR X2,KIC2 IF UNKNOWN *IC* CODE
BX1 X3-X2
BX1 X0*X1
NZ X1,KIC1 IF NOT FOUND
LX2 19-1
BX6 X7*X6
BX2 -X7*X2
BX6 X6+X2 ENTER *IC* CODE
SA6 A1
EQ ROU1 RETURN
KIC2 SX6 EC113 INCORRECT *IC* VALUE
EQ ROU8 RETURN ERROR CODE
KID SPACE 4,10
** KID - PROCESS *ID=NN* (LOCAL DEVICE ID).
*
* ENTRY (X3) = LOCAL DEVICE ID, LEFT JUSTIFIED.
*
* EXIT TO *ROU1*.
* *TID* FIELD IN *TROU+2* = LOCAL DEVICE ID.
* *TID* FLAG SET IN *TROU+1*.
* *PDID* SET IF *PTID* AND *PFUN* ARE ZERO.
* (B6) = ENTRY VALUE.
*
* ERROR TO *ROU8* IF INCORRECT *ID* VALUE.
* TO *KFM2* IF *ID* - *TID/FM/UN* CONFLICT.
*
* USES X - 0, 1, 2, 3, 5, 6, 7.
* A - 1, 2, 6, 7.
* B - 7.
*
* CALLS DXB.
KID BSS 0 ENTRY
SA1 PTID
SA2 PFUN
SX7 B1
BX1 X1+X2
NZ X1,KFM2 IF *ID* - *TID/FM/UN* CONFLICT
SA7 PDID
ZR X3,KID1 IF NON-EQUIVALENCED PARAMETER
SB7 B0 SET OCTAL CONVERSION DEFAULT
BX5 X3
RJ =XDXB
NZ X4,KID2 IF CONVERSION ERROR
SA1 TROU+2
MX0 36
SX2 X6-IDLM
BX7 X0*X1
PL X2,KID2 IF *ID* .GE. *IDLM*
BX7 X7+X6
SA7 A1
SX3 FRTI
KID1 SA2 TROU+1
SX6 FRCS
BX6 X2+X6 SET CENTRAL SITE ROUTING FLAG
BX6 X3+X6 OPTIONALLY SET *TID* FLAG
SA6 A2+
EQ ROU1 RETURN
KID2 SX6 EC114 INCORRECT *ID* VALUE
EQ ROU8 RETURN ERROR CODE
KJS SPACE 4,10
** KJS - PROCESS *JSN=XXX* (UNIQUE JSN).
*
* ENTRY (X3) = JSN, LEFT JUSTIFIED.
*
* EXIT TO *ROU1*.
* FORCED JSN FIELD IN *TROU+6* = JSN.
* FORCED JSN FLAG SET IN *TROU+1*.
* (B6) = ENTRY VALUE.
*
* ERROR TO *ROU8* IF INCORRECT JSN OR JSN NOT ALLOWED.
*
* USES X - 0, 1, 2, 3, 6, 7.
* A - 1, 2, 6, 7.
KJS BSS 0 ENTRY
ZR X3,KJS1 IF NULL PARAMETER
SX6 B1+
SA6 PJSN
SA1 JOPR CHECK JOB ORIGIN TYPE
MX0 -12
LX1 0-24
BX1 -X0*X1
MX0 42
IFNE SYOT,0,1
SX1 X1-SYOT
SX6 EC115
NZ X1,ROU8 IF NOT SYSTEM ORIGIN JOB
LX3 18
BX1 X0*X3
NZ X1,KJS1 IF JSN TOO LONG
MX7 -6
BX1 -X7*X3
ZR X1,KJS1 IF JSN TOO SHORT
SA1 TROU+6
SA2 TROU+1
BX6 X0*X1
BX6 X6+X3 SET JSN IN FORCED JSN FIELD
SX7 FRFJ
BX7 X2+X7 SET FORCED JSN FLAG
SA6 A1
SA7 A2+
EQ ROU1 RETURN
KJS1 SX6 EC116 INCORRECT JSN VALUE
EQ ROU8 RETURN ERROR CODE
KOT SPACE 4,10
** KOT - PROCESS *OT=XXXX* (ORIGIN TYPE).
*
* ENTRY (X3) = ORIGIN TYPE, LEFT JUSTIFIED.
*
* EXIT TO *ROU1*.
* *OT* FIELD IN *TROU* = ORIGIN TYPE.
* ORIGIN TYPE FLAG SET IN *TROU*.
* (B6) = ENTRY VALUE.
*
* ERROR TO *ROU8* IF JOB NOT SYSTEM ORIGIN OR INCORRECT *OT*
* VALUE.
*
* USES X - 0, 1, 2, 6, 7.
* A - 1, 2, 7.
KOT BSS 0 ENTRY
SA1 JOPR CHECK JOB ORIGIN TYPE
MX0 -12
LX1 11-35
BX1 -X0*X1
MX0 30
SA2 TLOT-1
SX1 X1-SYOT
SX6 EC117 JOB NOT SYSTEM ORIGIN
NZ X1,ROU8 IF NOT *SYOT* JOB ORIGIN
KOT1 SA2 A2+1
BX6 X3-X2
BX6 X0*X6
ZR X2,KOT2 IF END OF TABLE
NZ X6,KOT1 IF NOT A MATCH
MX0 -7
SA1 TROU
BX2 -X0*X2 EXTRACT ORIGIN VALUE
SX2 X2+4000B SET FLAG BIT
BX1 X0*X1
BX7 X1+X2 ENTER ORIGIN VALUE
SA7 TROU
EQ ROU1 RETURN
KOT2 SX6 EC118 INCORRECT *OT* VALUE
EQ ROU8 RETURN ERROR CODE
KPI SPACE 4,10
** KPI - PROCESS *PI=NNNNNNN* (PRINT IMAGE).
*
* ENTRY (X3) = PRINT TRAIN IMAGE, LEFT JUSTIFIED.
*
* EXIT TO *ROU1*.
* *PI* FIELD IN *TROU+4* = PRINT TRAIN IMAGE.
* *PI* FLAG SET IN *TROU+4*.
* (B6) = ENTRY VALUE.
*
* ERROR TO *ROU8* IF INCORRECT *PI* VALUE.
* TO *ROU1* IF NO *PI* VALUE.
*
* USES X - 0, 1, 2, 6, 7.
* A - 1, 2, 7.
* B - 4.
KPI BSS 0 ENTRY
ZR X3,ROU1 IF NULL PARAMETER
SA1 TPIN-1
MX0 1
* CHECK FOR VALID PRINT IMAGE NAME.
KPI1 SA1 A1+B1 CHECK NEXT ENTRY
ZR X1,KPI2 IF END OF TABLE
SX6 X1 ISOLATE MASK SIZE
BX7 X1-X3
AX6 6
SB4 X6+
AX6 X0,B4 FORM MASK
BX2 X6*X7
NZ X2,KPI1 IF NO MATCH
SA2 TROU+4
MX0 -6 ISOLATE PRINT IMAGE ORDINAL
LX2 6
BX6 -X0*X1
BX7 X0*X2
SX6 X6+10B SET PRINT IMAGE FLAG
BX7 X6+X7 SET PRINT IMAGE CODE INTO PARAMETER BLOCK
LX7 -6
SA7 A2+
EQ ROU1 RETURN
KPI2 SX6 EC119 INCORRECT *PI* VALUE
EQ ROU8 RETURN ERROR CODE
KPR SPACE 4,10
** KPR - PROCESS *PRI=NNNN* (PRIORITY).
*
* THE *PRI* PARAMETER IS IGNORED BY NOS. THIS ROUTINE PROVIDES
* UPWARD COMPATIBILITY FROM NOS/BE.
*
* ENTRY (X3) = FILE PRIORITY, LEFT JUSTIFIED.
*
* EXIT TO *ROU1*.
* (B6) = ENTRY VALUE.
KPR BSS 0 ENTRY
EQ ROU1 IGNORE PARAMETER *PRI*
KRE SPACE 4,10
** KRE - PROCESS *REP=NN* (REPEAT COUNT).
*
* ENTRY (X3) = REPEAT COUNT, LEFT JUSTIFIED.
*
* EXIT TO *ROU1*.
* *RC* FIELD IN *TROU+4* = REPEAT COUNT.
* REPEAT COUNT FLAG SET IN *TROU+1*.
* (B6) = ENTRY VALUE.
*
* ERROR TO *ROU8* IF INCORRECT *REP* VALUE.
* TO *ROU1* IF *REP* VALUE .GT. 77B.
*
* USES X - 0, 1, 2, 5, 6, 7.
* A - 1, 2, 6, 7.
* B - 7.
*
* CALLS DXB.
KRE BSS 0 ENTRY
SB7 B1 SET DECIMAL CONVERSION
BX5 X3
RJ =XDXB CONVERT VALUE
NZ X4,KRE1 IF CONVERSION ERROR
SA1 TROU+1
MX0 -6
BX2 X0*X6
NZ X2,ROU1 IF VALUE .GT. 63D (77B)
SA2 TROU+4
SX7 FRRC
LX0 12 POSITION MASK
LX6 12 POSITION VALUE
BX2 X0*X2
BX7 X1+X7 SET FLAG BIT
SA7 A1
BX6 X6+X2 ENTER REPEAT COUNT
SA6 A2+
EQ ROU1 RETURN
KRE1 SX6 EC120 INCORRECT *REP* VALUE
EQ ROU8 RETURN ERROR CODE
KSC SPACE 4,10
** KSC - PROCESS *SC=XX* (SPACING CODE).
*
* ENTRY (X3) = SPACING CODE, LEFT JUSTIFIED.
*
* EXIT TO *ROU1*.
* *SPACING* FIELD IN *TROU+4* = SPACING CODE.
* SPACING CODE FLAG SET IN *TROU+1*.
* (B6) = ENTRY VALUE.
*
* ERROR TO *ROU8* IF INCORRECT *SC* VALUE.
*
* USES X - 0, 1, 3, 5, 6.
* A - 1, 6.
* B - 7.
*
* CALLS DXB.
KSC BSS 0 ENTRY
SB7 B0 SET OCTAL CONVERSION
BX5 X3
RJ =XDXB CONVERT VALUE
NZ X4,KSC1 IF CONVERSION ERROR
MX0 -6 ENTER SPACING CODE
BX3 -X0*X6
BX1 X0*X6
ZR X1,KSC2 IF *SC* .LE. 77B
KSC1 SX6 EC121 INCORRECT *SC* VALUE
EQ ROU8 RETURN ERROR CODE
KSC2 SA1 TROU+4
LX0 48
BX1 X0*X1
LX3 48
BX6 X1+X3
SA6 A1+
SA1 TROU+1 SET SPACING CODE FLAG
SX6 FRSC
BX6 X6+X1
SA6 A1
EQ ROU1 RETURN
KST SPACE 4,10
** KST - PROCESS *ST=XXX* (DESTINATION MAINFRAME LOGICAL ID).
*
* ENTRY (X3) = DESTINATION LOGICAL ID, LEFT JUSTIFIED.
*
* EXIT TO *ROU1*.
* *DLID* FIELD IN *TROU+2* = DESTINATION LOGICAL ID.
* *SLID/DLID* FLAG SET IN *TROU+1*.
* (B6) = ENTRY VALUE.
*
* ERROR TO *ROU8* IF INCORRECT *ST* VALUE OR IF *DLID* IS LESS
* THAN *PID*.
*
* USES X - 0, 1, 2, 3, 5, 6.
* A - 2, 5, 6.
KST BSS 0 ENTRY
MX0 18
BX2 -X0*X3
AX2 18
NZ X2,KST2 IF *LID* GREATER THAN THREE CHARACTERS
BX6 X0*X3
SX5 1R* CHECK FOR ASTERISK
LX5 17-5
R= X4,LCPD SET *DLID* TO *PID*
LX6 18
IX3 X4-X6
PL X3,KST2 IF .LE. SPECIAL *DLID* VALUES
BX5 X5-X6
NZ X5,KST1 IF NOT ASTERISK
BX6 X4 SET *DLID*=*PID*
KST1 LX6 24
SA2 TROU+2 SET *DLID* IN *TROU*
LX0 -18
BX2 -X0*X2
BX6 X6+X2
SX1 FRLD SET *SLID/DLID* FLAG
SA6 A2
SA2 A2-B1
BX6 X2+X1
SA6 A2 STORE FLAG
EQ ROU1 RETURN
KST2 SX6 EC122 INCORRECT *ST* VALUE
EQ ROU8 RETURN ERROR CODE
KSV SPACE 4,10
** KSV - PROCESS *SCL=XX* (SERVICE CLASS).
*
* ENTRY (X3) = SERVICE CLASS, LEFT JUSTIFIED.
*
* EXIT TO *ROU1*.
* *SERVICE CLASS* FIELD IN *TROU+4* = SERVICE CLASS.
* FORCED SERVICE CLASS FLAG SET IN *TROU+1*.
* (B6) = ENTRY VALUE.
*
* ERROR TO *KSV2* IF INCORRECT *SCL* VALUE.
*
* USES X - 0, 1, 6, 7.
* A - 1, 7.
KSV BSS 0 ENTRY
SA1 TSCT-1
* CHECK FOR VALID SERVICE CLASS.
KSV1 SA1 A1+B1
ZR X1,KSV2 IF END OF TABLE
BX7 X1-X3
NZ X7,KSV1 IF NO MATCH
SA1 TROU+4
MX0 12
BX7 X0*X3 SET SERVICE CLASS INTO PARAMETER BLOCK
LX7 -12
BX7 X7+X1
SA7 A1
SA1 TROU+1 SET FORCED SERVICE CLASS FLAG
MX0 -1
LX0 20
BX7 -X0+X1
SA7 A1+
EQ ROU1 RETURN
KSV2 SX6 EC123 INCORRECT *SCL* VALUE
EQ ROU8 RETURN ERROR CODE
KTD SPACE 4,10
** KTD - PROCESS *TID=XX* (TERMINAL ID).
*
* ENTRY (X3) = *TID* VALUE, LEFT JUSTIFIED.
*
* EXIT TO *ROU1*.
* TO *KID* IF *TID=C* (ROUTE TO CENTRAL SITE).
* TO *KUN* IF *TID=XX* (SAME AS *UN* PARAMETER).
* (PTID) = NON-ZERO IF IMPLICIT REMOTE ROUTING.
* (B6) = ENTRY VALUE.
*
* ERROR TO *KFM2* IF *TID* - *ID* CONFLICT.
* TO *KFM1* IF *TID* - *FM/UN* CONFLICT.
*
* USES X - 1, 3, 6, 7.
* A - 1, 7.
KTD BSS 0 ENTRY
SX6 1RC
LX6 59-5
BX6 X6-X3
ZR X6,KTD1 IF *TID=C* - ROUTE TO CENTRAL SITE
SA1 PDID
NZ X1,KFM2 IF *TID* - *ID* CONFLICT
SA1 PFUN
NZ X1,KFM1 IF *TID* - *FM/UN* CONFLICT
PL X3,KUN IF *TID=XX*
SX7 FRTI
SA7 PTID
EQ ROU1 RETURN
KTD1 SX3 0
EQ KID PROCESS AS *ID*
KUJ SPACE 4,10
** KUJ - PROCESS *UJN=XXXXXXX* (USER JOB NAME).
*
* ENTRY (X3) = USER JOB NAME, LEFT JUSTIFIED.
*
* EXIT TO *ROU1*.
* *UJN* FIELD IN *TROU+3* = USER JOB NAME.
* *UJN* FLAG SET IN *TROU+1*.
* (PUJN) = NON-ZERO.
* (B6) = ENTRY VALUE.
*
* USES X - 1, 6, 7.
* A - 1, 6, 7.
KUJ BSS 0 ENTRY
SX6 B1+
SA6 PUJN
SA1 TROU+1 ENTER FLAG BIT
SX7 FRUJ
BX7 X1+X7
SA7 A1
SA1 TROU+3 ENTER *UJN* PARAMETER
BX1 -X0*X1
BX6 X1+X3
SA6 A1+
EQ ROU1 RETURN
KUN SPACE 4,10
** KUN - PROCESS *UN=XXXXXXX* (USER NAME).
*
* ENTRY (X3) = USER NAME, LEFT JUSTIFIED.
*
* EXIT TO *ROU1*.
* (TFUN+1) = USER NAME IF NOT IMPLICIT REMOTE ROUTING.
* (PFUN) = NON-ZERO.
* (B6) = ENTRY VALUE.
*
* ERROR TO *KFM1* IF *FM/UN* - *TID* CONFLICT.
* TO *KFM2* IF *UN* - *ID* CONFLICT.
*
* USES X - 0, 1, 6, 7.
* A - 1, 6, 7.
KUN BSS 0 ENTRY
SA1 PDID
NZ X1,KFM2 IF *UN* - *ID* CONFLICT
SA1 PTID
SX7 FRTI
NZ X1,KFM1 IF *FM/UN* - *TID* CONFLICT
SA7 PFUN
ZR X3,ROU1 IF IMPLICIT REMOTE ROUTING
MX0 42
BX6 X0*X3
SA6 TFUN+1 STORE USER NAME
EQ ROU1 RETURN
MEM SPACE 4,30
** MEM - MEMORY REQUEST.
*
* ENTRY (B2) = FWA OF TASK SYSTEM AREA.
* (B7) = FWA OF TASK SUBCP TABLE.
* (B5) = TASK RA.
* (X1) = TASK FL.
* (X5) = 18/3LMEM,6/,18/TYPE,18/ADDR.
* TYPE = 0 REQUEST CM ABORT IF NOT AVAILABLE.
* = 1 REQUEST ECS ABORT IF NOT AVAILABLE.
* = 2 REQUEST CM DO NOT ABORT.
* = 3 REQUEST EXTENDED MEMORY DO NOT ABORT.
* ADDR = ADDRESS OF STATUS WORD.
* (ADDR) = 30/VAL,26/,1/R,1/C,1/,1/0.
* VAL = 0, IF CURRENT FL DESIRED.
* -1, IF MAXIMUM FL DESIRED.
* .GT. 0, IF (VAL) = REQUEST FL.
* R = CLEAR *CMM* STATUS.
* C = *CMM* TYPE REQUEST.
*
* EXIT TO *TERR2* IF ADDRESS OUT OF RANGE.
* TO *TERR33* IF INCORRECT EXTENDED MEMORY REQUEST.
* TO *TERR34* IF INCORRECT CMM MEMORY REQUEST.
* TO *TERR35* IF RFL EXCEEDED MFL.
* TO *TERR36* IFINCORRECT REDUCTION OF FL.
* TO *TSSC* IF NO OTHER ERROR.
*
* USES A - ALL.
* B - 2, 3, 4, 5, 6, 7.
* X - ALL.
*
* CALLS MCP, MTU, RCP, SFS, TRCL.
MEM SA0 B7 SAVE B7 AND B2
SB3 X5 REQUEST ADDRESS
MX4 -2 EXTRACT *R* AND *C* BITS
SB4 X1 TASK FL
BX7 X5 SAVE REQUEST WORD
SA3 B7 FWA OF SUBCP TABLE
GE B3,B4,TERR2 IF ADDRESS GREATER THAN FL
LX5 -18
LE B3,B1,TERR2 IF ADDRESS OUT OF RANGE
SA2 B5+B3 READ STATUS WORD
AX2 2
BX4 -X4*X2
SB6 X5-1 REQUEST TYPE
ZR B6,TERR33 IF REQUEST EXTENDED MEMORY
GT B6,B1,TERR33 IF REQUEST EXTENDED MEMORY
SB6 X4-1
LX4 59-0
LX3 59-SCCMS
SA7 MEMB SAVE REQUEST WORD
LT B6,B1,MEM1 IF NOT TO CLEAR CMM FLAG
EQ B6,B1,TERR34 IF NOT A CMM TYPE REQUEST
PL X3,TERR34 IF CMM FLAG NOT SET ON CLEAR
EQ MEM3 CLEAR CMM STATUS
MEM1 NZ B6,MEM2 IF CMM FIELD IS 0
MX6 1 SET CMM STATUS FLAG
BX6 X6+X3
LX6 SCCMS-59
SA6 A3
EQ MEM4 CONTINUE MEMORY REQUEST
* CHECK NON-CMM REQUEST.
MEM2 PL X3,MEM4 IF NOT IN CMM STEP
BX4 X2
AX4 28 GET FL REQUEST
SX3 X4+
NG X3,MEM4 IF ENQUIRE FOR MFL
ZR X3,MEM4 IF ENQUIRE FOR CURRENT FL
EQ TERR34 SET MEMORY REQUEST IN CMM STATUS
* CLEAR CMM STATUS.
MEM3 MX6 -59 CLEAR CMM STATUS FLAG
BX6 -X6*X3
LX6 SCCMS-59
SA6 A3
MEM4 AX2 28
SA4 B7+SCNMW GET TASK ID
MX3 -SCNMN
SX2 X2 REQUEST FL
LX4 SCNMN-SCNMS-1
BX7 -X3*X4
IX0 X2-X1 AMOUNT OF INCREASE
TA4 X7,VTLD WORD 2 OF TLD ENTRY
MX6 -TLFLN
LX4 TLFLN-TLFLS-1
BX7 -X6*X4
LX4 TLEFN-TLEFS-1-TLFLN+TLFLS+1
BX3 -X6*X4 EXPANDABLE FL
IX7 X3+X7 MAXIMUM FL
SX6 B1
LX7 6
ZR X0,MEM5 IF ENQUIRE FL
* RETURN MAXIMUM FL.
PL X2,MEM5 IF NOT MFL REQUEST
LX7 30
BX7 X6+X7
SA7 B5+B3 RETURN MFL
EQ TSSC RETURN
* RETURN CURRENT FL.
MEM5 SX3 X2 REQUEST FL
LX1 30 RETURN CURRENT FL
BX6 X1+X6 SET COMPLETION FLAG
SA6 B5+B3
ZR X2,TSSC IF ENQUIRE FL
SX6 B1
LX1 30 CURRENT FL
* CHECK FOR OUTSTANDING DATA MANAGER REQUESTS.
MEM6 SA4 B2+CB1C C.B. HEADER WORD
SB6 X4+
NZ B6,TERR37 IF DATA MANAGER REQUEST OUTSTANDING
* SEARCH FOR FREE SPACE.
IX4 X7-X3
LX3 30
SB6 TERR35 ERROR CODE FOR RFL EXCEED MFL
IX2 X2-X1 CHECK IF REQUEST .LT. TASK FL
BX6 X6+X3
NG X4,MEM19 IF REQUESTED FL .GT. MFL
NG X2,MEM16 IF REDUCE FL
SX0 X2 AMOUNT OF INCREASE
SA6 B5+B3 RETURN FL REQUEST
SA3 AVAILCM SPACE CURRENTLY AVAILABLE
SX6 B3 SAVE PARAMETERS
LX0 18
LX6 -18
BX6 X1+X6 ADD CURRENT FL
BX6 X0+X6
SA6 MEMA
IX7 X3-X2
PL X7,MEM7 IF SPACE AVAILABLE
RJ RMF REQUEST MORE MEMORY
ZR X5,MEM12 IF MEMORY NOT AVAILABLE
SA1 MEMA
LX1 -18
SX2 X1 REQUESTED FL INCREASE
* TRY FL AFTER SUBCP.
MEM7 SA4 B7 GET FREE SPACE AFTER SUBCP
LX4 SCFCN-SCFCS-1
SX0 X4 AVAILABLE FL
IX7 X0-X2
PL X7,MEM14 IF FL AVAILABLE
* TRY NEXT SUBCP.
SA2 B7+2 GET NEXT SUBCP
BX0 -X7 SPACE REQUIRED
SX2 X2
RJ SFS SEARCH FOR FREE SPACE AFTER SUBCP
SB3 X7+B1
SA1 MEMA
SX3 X1 TASK FL
NG B3,MEM8 IF NO FL AVAILABLE
IX7 X6-X3
SA0 B7 ACTIVE SUBCP
PL X7,MEM8 IF MORE MEMORY TO MOVE
RJ MTD MOVE TASK TOWARD HIGH MEMORY LOCATION
EQ MEM14 CLEAR ASSIGNED AREA
* TRY PREVIOUS SUBCP FREE SPACE.
MEM8 SA4 B7+SCLSW LAST SUBCP
LX4 SCLSN-SCLSS-1
LX1 -18
SB5 X1 REQUEST INCREASE FL
SA2 X4 FWA OF LAST SUBCP TABLE
SA1 B7 FWA OF CURRENT SUBCP
LX2 SCFCN-SCFCS-1
LX1 SCFCN-SCFCS-1
SB3 X2
SB3 X1+B3 TOTAL FREE SPACE AVAILABLE IF STORAGE MOVE
LT B3,B5,MEM9 IF NOT ENOUGH FL AFTER LAST SUBCP
SB4 B7
SX4 X2 FREE SPACE
SB6 B0
LX2 SCFCS-SCFCN+1
RJ MTK MOVE TASK TOWARD LOW MEMORY LOCATION
EQ MEM14 CLEAR ASSIGN AREA
* TRY SOMEWHERE ELSE.
MEM9 SX0 X3+B5 TOTAL FL REQUIRED
RJ RCP LOOKING FOR NEW SUBCP
ZR X5,MEM12 IF NO SPACE AVAILABLE
MX0 6 UPDATE NEW SUBCP TABLE
SA1 B7 FIRST WORD
SA2 B4
BX6 X0*X1
BX6 X6+X2
SA6 A2 NEW FIRST WORD
SA2 B7+B1 WORD 2 OF SUBCP TABLE
SX7 X2 GET CC FIELD IN WORD 2
SA3 A2+B1 WORD 3 OF SUBCP TABLE
SB3 B4-B7 GET DIFFERENT
MX0 60-18 CLEAR CC FIELD
SX7 X7+B3
BX2 X0*X2 CLEAR CC FIELD
BX7 X2+X7 ADD NEW CC FIELD
SA7 B4+B1 NEW WORD 2 OF SUBCP TABLE
MX0 12
SA4 A7+B1 GET LS AND NS FIELD
BX6 X0*X3 GET TASK ID
BX6 X4+X6
SA6 A4 NEW WORD 3 OF SUBCP TABLE
SB6 B4
SB4 B7
SA0 B6+ NEW ACTIVE SUBCP
SB3 5
MEM10 SA3 A3+B1 MOVE WORD 4 TO 8
BX6 X3
SB3 B3-B1
SA6 A6+B1
NZ B3,MEM10 IF NOT YET FINISHED
SB3 MEM11 RETURN ADDRESS
SX4 X5 FWA OF SUBCP AREA
EQ RCPU REQUEST CPU ON NEW SUBCP
MEM11 SB6 X5 DESTINATION TO MOVE
BX4 X4-X4
RJ MTK MOVE TASK TO ASSIGN AREA
SB3 MEM14 RETURN ADDRESS AFTER RELEASING SUBCP
SB6 B4 SUBCP TO RELEASE
SB7 A0 ACTIVE SUBCP
MX6 1 SET FLAG - NOT TO UPDATE FL IN SUBCP TABLE
SA3 MEMA
LX6 41-59
BX6 X3+X6
SA6 A3
EQ ESCP1 RELEASE CURRENT SUBCP
* SINCE NO SPACE IS AVAILABLE, PUT TASK INTO RECALL
* OR ROLLOUT IT OUT OF MEMORY.
MEM12 SA4 B7+B1 CM RESIDENT TASK WORD IN SUBCP TABLE
SA1 MEMA RESTORE PARAMETERS
LX4 59-57
BX6 X1
SX7 MEM13 RETURN ADDRESS AFTER RECALL
SA6 B2+RCLA SAVE PARAMETERS
NG X4,TRCL2 IF CM RESIDENT TASK
RJ FFR RESERVE ROLLOUT TABLE
ZR X0,TRCL2 IF ROLLOUT TABLE FULL
SB4 EVRL MEMORY REQUEST EVENT
SX2 X1 TASK FL
LX1 -18 REQUESTED FL INCREASE
SX3 X1
IX2 X2+X3
SA4 LTIME CURRENT TIME
AX4 36
MX7 -18
BX4 -X7*X4
SX4 X4+DRLTL ROLLOUT TASK FOR *DRLTL* SECOND
SX3 13B SET TIMED ROLLOUT FLAG
LX3 54
LX4 30
BX1 X3+X4
PX6 B4,X2 ROLLOUT EVENT - FL
SA6 MEMC
BX5 X5-X5 NO DELAY REQUIRED
EQ ROL3 ROLLOUT TASK
* PROCESS RETURN FROM RECALL.
MEM13 SA1 B2+RCLA
BX6 X1 SAVE PARAMETERS
LX1 -18
SX2 X1 REQUESTED FL INCREASE
SA4 AVAILCM AVAILABLE SPACE
LX1 -24
SB3 X1
IX7 X2-X4
NG X7,TRCL IF SPACE STILL IS NOT AVAILABLE
SA0 B7+ SAVE (B7)
SA6 MEMA
EQ MEM7 TRY AGAIN
* CLEAR ASSIGNED AREA.
MEM14 SB7 A0 RESTORE B2 AND B7
SA2 A0 FWA OF SUBCP TABLE
SB2 X2-NUAPL
SX1 B2 RESTORE *SREG*
SX7 B7
LX1 18
BX7 X1+X7
SA7 SREG
SA1 MEMA
BX5 X1
SX3 X1
LX1 -18
SX2 X1 REQUEST INCREASE FL
IX7 X2+X3 FL AFTER REQUEST
LX1 59-0
SB4 X7-1
BX7 X7-X7
BX6 X6-X6
SB5 B2+NUAPL TASK SYSTEM REQUEST
SB3 2
SB6 B5+X3 FWA OF REQUEST FL
SB4 B4+B5 LWA OF TASK
MEM15 SA6 B6+
SA7 B6+B1
SB6 B6+B3
LT B6,B4,MEM15 IF NOT YET FINISHED
LX5 59-41
PL X1,MEM16 IF EVEN FL REQUEST
SA7 A7+1
MEM16 SA1 B7 FWA OF SUBCP TABLE
LX1 SCFLN-SCFLS-1
SX3 X1 CURRENT FL
IX4 X3+X2 UPDATE FL
NG X5,MEM18 IF NOT TO UPDATE FL IN SUBCP TABLE
SB6 TERR36 ERROR CODE FOR INCORRECT REDUCE FL
SX5 X4-CMBL-111B
NG X5,MEM19 IF INCORRECT REDUCTION OF FL
MX0 60-SCFLN UPDATE FL IN SUBCP TABLE
BX5 X0*X1
BX7 X4+X5
LX7 SCFCN-SCFCS-1+SCFLS-SCFLN+1
BX6 -X0*X7 FL AVAILABLE AFTER TASK
IX3 X6-X2
BX6 X0*X7
NG X3,MEM17 IF NO AVAILABLE FL AFTER TASK
BX6 X3+X6
MEM17 LX6 SCFCS-SCFCN+1
SA6 B7
SA4 AVAILCM UPDATE TOTAL AVAILABLE CM
IX7 X4-X2
SA7 A4
MEM18 MX7 -36 UPDATE FL IN EXCHANGE PACKAGE
SA1 B2+2
SA2 B7
BX7 -X7*X1 CLEAR OLD FL
LX2 SCFLN-SCFLS-1 GET CURRENT FL
SX6 X2
LX6 36
BX7 X6+X7
SA7 A1
RJ RKP RESTORE K-DISPLAY POINTER
EQ TSSC RETURN
MEM19 SA1 MEMB LAST SYSTEM REQUEST
LX1 59-19
NG X1,TSSC IF NOT TO ABORT TASK
JP B6 ABORT TASK
MEMA BSSZ 1 18/ADDR,1/F,5/0,18/FL INCREASE,18/TASK FL
MEMB BSSZ 1 REQUEST WORD
MSG SPACE 4,20
** MSG - PLACE MESSAGE ON LINE ONE OF CONSOLE *B-DISPLAY*.
*
* ENTRY (X1) = TASK FIELD LENGTH.
* (X5) = 24/3LMSG,12/FNC,6/ ,18/ADDR.
* WHERE ADDR = ADDRESS OF MESSAGE TO DISPLAY.
* ALTERNATE FORM.
* (ADDR) = 12/0,18/ADDR1,30/0.
* ADDR1 = ADDRESS OF MESSAGE TO BE DISPLAYED.
* FNC = *MSG* FUNCTION CODE.
* VALUES PERMITTED FOR FNC ARE ZERO AND ONE.
* (B2) = FWA OF TASK SYSTEM AREA.
* (B5) = TASK RA.
* (B7) = FWA OF TASK SUBCONTROL POINT TABLE.
*
* EXIT TO *TSSC* IF NO ERRORS.
* TO *TERR3* IF FUNCTION CODE ERROR.
*
* USES A - 2.
* X - 0, 2, 5, 6.
* B - 3, 4, 6.
*
* CALLS PMA.
*
* MACROS MESSAGE.
MSG RJ PMA PROCESS MESSAGE ADDRESS
LX0 -1
SB3 X0
SX3 B3-MSGJTL
PL X3,TERR3 IF INCORRECT FUNCTION CODE
JP B3+MSGJT JUMP TO PROCESSOR
MSGJT PL X0,MSG3 JOURNAL MESSAGE
EQ MSG6 DISPLAY MESSAGE ON LINE ONE
MSGJTL EQU *-MSGJT LENGTH OF *MSGJT* JUMP TABLE
* SEND MESSAGE TO JOUR0 FILE.
MSG3 SA2 B5+B6 FWA OF MESSAGE
MX6 12
SB3 B0+ BIT COUNT
SX0 B1+ WORD COUNT
SB4 60 WORD SIZE
* CHECK WORD FOR ZERO BYTE.
MSG4 BX3 X6*X2
ZR X3,MSG5 IF END OF MESSAGE
LX6 12 SHIFT TO CHECK NEXT BYTE
SB3 B3+12 INCREMENT BIT COUNT
NE B4,B3,MSG4 IF NOT DONE WITH WORD
SX0 X0+B1 INCREMENT WORD COUNT
SA2 A2+B1 GET NEXT WORD OF MESSAGE
SB4 A2 CHECK FOR MAXIMUM LENGTH
SB3 B5+B6
SB3 B3+7
GT B4,B3,MSG5 IF MORE THAN 80 CHARACTERS
SB3 B0+
SB4 60
EQ MSG4 CHECK NEXT WORD
* SET UP JOURNAL CALL.
MSG5 SX5 B5+B6 GET MESSAGE ADDRESS WITH RESPECT TO TAF
LX0 18
BX5 X0+X5
SB4 12B SET ORIGIN CODE
SB3 TSSC RETURN ADDRESS
SB5 JOUR0 FET FOR JOURNAL ENTRY
SA2 B2+CB2C
SX0 X2+
EQ JRNL JOURNAL MESSAGE
* DISPLAY MESSAGE ON LINE-1.
MSG6 MESSAGE B5+B6,1
EQ TSSC ENTER SWITCHING LOOP
PMA SPACE 4,20
** PMA - PROCESS MESSAGE ADDRESS.
*
* ENTRY (X1) = TASK FIELD LENGTH.
* (X5) = 24/3LTMS OR MSG,12/FNC,6/ ,18/ADDR.
* WHERE ADDR = ADDRESS OF MESSAGE TO DISPLAY.
* ALTERNATE FORM.
* (ADDR) = 12/0,18/ADDR1,30/0.
* ADDR1 = ADDRESS OF MESSAGE TO BE DISPLAYED.
* FNC = *TMS* OR *MSG* FUNCTION CODE.
* (B2) = FWA OF TASK SYSTEM AREA.
* (B5) = TASK RA.
* (B7) = FWA OF TASK SUBCONTROL POINT TABLE.
*
* EXIT (X0) = FUNCTION CODE.
* (B5) = TASK RA.
* (B6) = ADDRESS OF MESSAGE.
*
* USES A - 2.
* X - 0, 2, 3, 5, 6, 7.
* B - 3, 4, 6.
PMA SUBR ENTRY/EXIT
MX3 -12
SB6 X5 ADDRESS OF MESSAGE
LX5 11-35
BX0 -X3*X5 (X0) = *MSG* FUNCTION CODE
LE B6,B1,TERR2 IF ADDRESS .LE. 1
SB3 X1
MX6 12
GE B6,B3,TERR2 IF ADDRESS .GE. FL
SA2 B5+B6 READ FWA OF MESSAGE
BX7 X6*X2
ZR X2,PMA1 IF NULL MESSAGE
NZ X7,PMA1 IF MESSAGE PRESENT
* CONVERT INDIRECT ADDRESS FORM OF
* *MSG* REQUEST TO DIRECT ADDRESS FORM.
AX2 47-17
SB6 X2 FWA OF MESSAGE
LE B6,B1,TERR2 IF ADDRESS .LE. 1
PMA1 SB4 B6+5
GT B4,B3,TERR13 IF ADDRESS+5 .GT. FL
EQ PMAX RETURN
MEMC VFD 60/0LMEMFL ROLLOUT EVENT - FL
RFL SPACE 4,25
** RFL - REQUEST FIELD LENGTH.
*
* ENTRY (X1) = TASK FIELD LENGTH.
* (B2) = FWA OF TASK SYSTEM AREA.
* (B7) = FWA OF TASK SUBCP TABLE.
* (B5) = TASK RA.
* (X5) = 18/3ARFL,6/,18/ADDR,1/N,17/FL.
* ADDR = STATUS RESPONSE ADDRESS.
* N = NO REDUCE OVERRIDE.
* FL = FIELD LENGTH REQUIRED.
*
* EXIT TO *TERR34* IF INCORRECT REQUEST.
* TO *MEM* IF NO ERROR.
* (ADDR) = 12/0,18/FL,30/1.
* IF FL = 0, THE CURRENT FL WILL BE RETURNED.
*
* USES A - 3, 7.
* B - 3, 4.
* X - 3, 5, 6, 7.
*
* CALLS MEM.
RFL MX6 -17 EXTRACT FL
BX7 -X6*X5
SA3 B7 CHECK CMM STATUS
AX5 18
LX3 59-SCCMS
SB3 X5 SET STATUS ADDRESS
LX7 30
SB4 X1
NG X3,TERR34 IF CMM STATUS SET
GT B3,B4,TERR2 IF ADDRESS GREATER THAN FL
LE B3,B1,TERR2 IF ADDRESS OUT OF RANGE
SA7 B5+B3
SX5 X5 REQUEST FL
EQ MEM REQUEST MEMORY
TIM SPACE 4,10
*** *TIM*.
* REQUEST SYSTEM TIME.
*
*T 18/ *TIM*,6/,12/ OP,6/,18/ ADDR
* OP TIME OPTION
* ADDR ADDRESS FOR RESPONSE
*
*
* OP RESPONSE
*
* 0 ACCUMULATED CPU TIME
*T ADDR 3/2,45/ SECONDS,12/ MILISEC.
*
* 1 DATE
*T ADDR 60/ * YY/MM/DD.*
*
* 2 CLOCK
*T ADDR 60/ * HH.MM.SS.*
*
* 3 JULIAN DATE
*T ADDR 24/ 0,36/ * YYDDD*
*
* 4 SCOPE FORMAT REAL TIME (NOT SUPPORTED)
*T ADDR 3/2,45/ SECONDS,12/ MILISEC.
*
* 5 REAL TIME
*T ADDR 24/ SECONDS,36/ MILLISECONDS
*
* 6 PACKED DATE/TIME
*T ADDR 24/ 0,6/ Y-70,6/ MM,6/ DD,6/ HH,6/ MM,6/ SS
TIM MX3 -12
SB4 X5 ADDRESS FOR REPLY
LX5 -24
SB4 -B4
BX0 -X3*X5 FUNCTION CODE
PL B4,TERR2 IF ADDRESS OUT OF BOUNDS
LX0 -1
SX7 X1+B4
SB3 X0
NG X7,TERR2 IF ADDRESS OUT OF BOUNDS
SX3 B3-TIMJTL
PL X3,TERR3 IF INCORRECT FUNCTION CODE
JP B3+TIMJT JUMP TO FUNCTION PROCESSOR
TIMJT PL X0,TIM1 TIME
EQ TIM2 DATE
PL X0,TIM3 CLOCK
EQ TIM4 JULIAN DATE
PL X0,TERR3 SCOPE FORMAT REAL TIME(NOT SUPPORTED)
EQ TIM5 REAL TIME
PL X0,TIM6 PACKED DATE/TIME
EQ TERR3 NOT USED
TIMJTL EQU *-TIMJT LENGTH OF TIM JUMP TABLE
* TIME
TIM1 TIME B5-B4
EQ TSSC ENTER SWITCHING LOOP
* DATE
TIM2 DATE B5-B4
EQ TSSC ENTER SWITCHING LOOP
* CLOCK
TIM3 CLOCK B5-B4
EQ TSSC ENTER SWITCHING LOOP
* JULIAN DATE
TIM4 JDATE B5-B4
EQ TSSC ENTER SWITCHING LOOP
* RTIME
TIM5 RTIME B5-B4
EQ TSSC ENTER SWITCHING LOOP
* PACKED DATE/TIME
TIM6 SA2 PDATE
BX6 X2
SA6 B5-B4
EQ TSSC ENTER SWITCHING LOOP
TMS SPACE 4,20
** TMS - TAF MESSAGE TO DAYFILE.
*
* ENTRY (X1) = TASK FIELD LENGTH.
* (X5) = 24/3LTMS,12/FNC,6/ ,18/ADDR.
* WHERE ADDR = ADDRESS OF MESSAGE TO DISPLAY.
* ALTERNATE FORM.
* (ADDR) = 12/0,18/ADDR1,30/0.
* ADDR1 = ADDRESS OF MESSAGE TO BE DISPLAYED.
* FNC = *TMS*FUNCTION CODE.
* ONLY FNC = ZERO IS ALLOWED.
* (B2) = FWA OF TASK SYSTEM AREA.
* (B5) = TASK RA.
* (B7) = FWA OF TASK SUBCONTROL POINT TABLE.
*
* EXIT TO *TSSC* IF NO ERRORS.
* TO *TERR3* IF FUNCTION CODE ERROR.
*
* USES X - 0, 3.
* B - 3.
*
* CALLS PMA, VTO.
*
* MACROS MESSAGE.
TMS RJ VTO VERIFY TASK ORIGIN
NG X6,TERR11 IF TASK NOT VALIDATED FOR REQUEST
RJ PMA PROCESS MESSAGE ADDRESS
LX0 -1
SB3 X0
SX3 B3-TMSJTL
PL X3,TERR3 IF INCORRECT FUNCTION CODE
JP B3+TMSJT JUMP TO PROCESSOR
TMSJT PL X0,TMS1 IF FUNCTION CODE ZERO
EQ TERR3 IF INCORRECT FUNCTION CODE
TMSJTL EQU *-TMSJT LENGTH OF *TMSJT* JUMP TABLE
* PLACE MESSAGE IN THE USER AND SYSTEM DAYFILE AND
* ALSO DISPLAY IT AT LINE 1 OF THE CONTROL POINT.
TMS1 MESSAGE B5+B6,0
EQ TSSC ENTER SWITCHING LOOP
TITLE *REC* SYSTEM REQUEST PROCESSOR.
RFP SPACE 4,15
** RFP - RECOVERY FUNCTION PROCESSORS.
*
* RFP SY,FC,MP,RP,PR
*
* ENTRY *SY* = IF *SYSTEM* SPECIFIED, REQUEST IS
* RESTRICTED TO SYSTEM TASKS.
* *FC* = FUNCTION CODE FOR RECOVERY REQUEST.
* *MP* = MAXIMUM PARAMETERS FOR REQUEST.
* *RP* = REQUIRED PARAMETERS FOR REQUEST.
* *PR* = PROCESSING ROUTINE FOR REQUEST.
*
* EXIT REMOTE CODE *CRFP*.
PURGMAC RFP
RFP MACRO SY,FC,MP,RP,PR
LOCAL A
MACREF RFP
.A IFC EQ,*SY*SYSTEM*
A SET 1
.A ELSE
A SET 0
.A ENDIF
CRFP RMT
ORG CRFC+FC
VFD 1/A,23/0,6/MP,6/RP,6/0,18/PR
CRFP RMT
RFP ENDM
SPACE 4,10
CRFC BSS 0 TABLE OF RECOVERY FUNCTION CODES
RFP SYSTEM,RFCA,0,0,CIL *CALLTRN* INPUT LOGGING
RFP USER,RFRE,TREPL,TRERL,RUN *RERUN*
RFP USER,RFRG,TRGPL,TRGRL,GET *RGET*
RFP USER,RFRP,TRGPL,TRGRL,PUT *RPUT*
RFP USER,RFRS,TSEPL,TRSEL,RSE *RSECURE*
RFP USER,RFSE,TSEPL,TSERL,SEC *SECURE*
RFP SYSTEM,RFSR,TSRPL,TSRRL,SRE *SRERUN*
RFP SYSTEM,RFTI,TTIPL,TTIRL,TIN *TINVOKE*
CRFP HERE
RRP SPACE 4,20
** RRP - *REC* SYSTEM REQUEST PROCESSOR.
*
* ENTRY (X1) = SUBCP FL.
* (X5) = SYSTEM REQUEST.
* (B2) = FWA OF TASK SYSTEM AREA.
* (B5) = SUBCP RA.
* (B7) = FWA OF SUBCP TABLE ENTRY.
*
* EXIT TO *TSSC*, IF RECOVERY NOT INSTALLED.
* TO *TERR2*, IF INCORRECT PARAMETER LIST.
* TO *TERR3*, IF INCORRECT FUNCTION.
* TO *TERR11*, IF TASK NOT VALIDATED FOR REQUEST.
* TO *RFB*, IF PROCESSING OF REQUEST SHOULD CONTINUE.
*
* CALLS DCPT, VTO, VUP.
*
* USES X - ALL.
* A - 1, 2, 4.
* B - 2, 3, 5, 6.
RRP LX5 17-35 RIGHT JUSTIFY FUNCTION CODE
MX0 -6
* IF ANY OF THE FOLLOWING ERRORS OCCUR THE TASK IS ABORTED -
*
* 1. INCORRECT FUNCTION
* 2. INCORRECT NUMBER OF PARAMETERS
* 3. PARAMETERS OUTSIDE RA AND FL
* 4. INCORRECT FUNCTION FOR TASK ORIGIN
SX6 X5-TRECL
PL X6,TERR3 IF FUNCTION NOT IN TABLE, ABORT TASK
SX6 X5-RFCA
ZR X6,TERR3 IF *CALLTRN* FUNCTION, ABORT TASK
SA2 X5+CRFC REQUEST SPECIFICATIONS
AX2 24 REQUIRED NUMBER OF PARAMETERS
BX6 -X0*X2
SB6 X6
AX2 6 MAXIMUM NUMBER OF PARAMETERS
BX3 -X0*X2
SB3 X3+
LX5 59-59-17+35
RJ VUP VALIDATE USER PARAMETERS
SB6 B2+ NUMBER OF PARAMETERS PRESENT
SB2 B5-NUAPL SET TO TASK SYSTEM AREA
NZ X6,TERR2 IF INCORRECT PARAMETERS
RJ VTO FIND TASK ORIGIN
LX5 17-35 RIGHT JUSTIFY FUNCTION
SA1 X5+CRFC TASK ORIGIN ATTRIBUTE FOR REQUEST
PL X1,RRP1 IF REQUEST MAY BE USED BY ANY TASK
NG X6,TERR11 IF TASK NOT VALIDATED FOR REQUEST
RRP1 SX3 X5 FUNCTION
LX5 59-59-17+35
SX0 X3-RFSR
ZR X0,RRP3 IF *SRERUN* FUNCTION
* DROP CPU FOR SUBCP. THE CPU WILL BE REQUESTED FOR SUBCP
* WHEN THE RECOVERY FUNCTION COMPLETES.
RRP2 SB5 B7 SAVE FWA OF SUBCP TABLE ENTRY
RJ DCPT DROP CPU FOR TASK
TX6 B5+CPAL,-VCPA COMPUTE SUBCP
AX6 SCPAL
MX3 -CBTON
SA1 B5+SCRAW TASK RA
SB5 X1+
ERRNZ SCRAS-17 IF RA NOT IN BITS 0-17
SA4 B5-NUAPL+CB2C TERMINAL ORDINAL
LX4 CBTON-1-CBTOS RIGHT JUSTIFY TERMINAL ORDINAL
BX7 -X3*X4
SB3 RCL FWA TO QUEUE WORK FOR TASK
SA5 B5-NUAPL+LRA1 RA REQUEST
EQ RFB RECOVERY FUNCTION BEGIN PROCESSING
* IF *SRERUN* SPECIFIES USERNAME AND TASK NOT ON SYSTEM LIBRARY
* ABORT TASK.
RRP3 PL X6,RRP2 IF REQUEST FROM SYSTEM TASK
GT B6,B1,TERR11 IF USERNAME SPECIFIED
ERRNZ SRUS-1 USERNAME NOT SECOND PARAMETER
EQ RRP2 DROP CPU FOR TASK
RTI SPACE 4,20
** RTI - RECOVER TERMINAL INPUT.
*
* ENTRY (B3) = FWA OF FIRST COMMUNICATION BLOCK.
* (CBTR) = 1, IF TRANSACTION RESTARTED.
* (CBRT) = 1, IF TRANSACTION RECOVERABLE, OTHERWIZE 0.
* (TSNR) = 0, IF NON RECOVERABLE TRANSACTION RUN.
* (CBTA) = FWA OF TERMINAL IN *TST*.
* (CBTO) = TERMINAL ORDINAL IN *TST*.
*
* EXIT (CBLC) = 1, IF RECOVERY PROCESSING COMPLETE.
*
* USES X - 1, 2, 3, 4, 5, 6, 7.
* A - 1, 3, 4, 6, 7.
* B - 3, 4.
*
* CALLS QTW.
.A IFGE IPTAR,1
RTI SUBR ENTRY/EXIT
* IF TRANSACTION IS BEING RESTARTED DO NOT LOG INPUT
* TO RECOVERY FILE.
SA1 B3+CBTRW TRANSACTION RESTART
BX2 X1
LX1 59-CBTRS
NG X1,RTI3 IF RESTARTED
ERRNZ CBTRW-CBRTW IF FIELDS IN DIFFERENT WORDS
LX1 59-CBRTS-59+CBTRS
PL X1,RTI2 IF NON-RECOVERABLE
* QUEUE TERMINAL LOGGING FOR LATER PROCESSING.
RTI1 SX6 3RREC SETUP RECOVERY REQUEST
LX6 59-17
SX2 RFCA *CALLTRN* FUNCTION
LX2 35-17
BX6 X6+X2
SX3 B3 FWA OF COMMUNICATION BLOCK
BX6 X6+X3
SA6 B3+CBQ1W+QRECW
SA1 B3+CBTOW TERMINAL ORDINAL
MX4 CBTON
ERRNZ 59-CBTOS IF TERMINAL ORDINAL NOT LEFT JUSTIFIED
BX7 X4*X1
LX7 CBTON-1-CBTOS RIGHT JUSTIFY TERMINAL ORDINAL
MX1 1 SET RECOVERY STARTED COMPLETE
LX1 QRSTS-59
BX7 X1+X7
SA7 B3+CBQ1W+QRTOW
SX1 A7 RECOVERY LOGGING EVENT ADDRESS
SX2 59-QRSTS RECOVERY STARTED COMPLETION BIT
BX3 X3-X3 NO SUBCP FOR EVENT
BX5 X5-X5 NO TIME OUT FOR EVENT
SB3 B3+CBQ1W FWA OF STORAGE FOR EVENT QUEUING
SX6 RFR RETURN AT RECOVERY FUNCTION RESTART
SX4 QTEV QUEUE ON EVENT ONLY
SB4 B0 QUEUE AT END OF QUEUE
RJ QTW QUEUE *TAF* WORK
EQ RTIX RETURN
* SET NON-RECOVERABLE BIT IN TST.
RTI2 SA3 B3+CBTAW TERMINAL ADDRESS
LX3 17-CBTAS
ERRNZ CBTAN-18 IF TERMINAL ADDRESS NOT 18 BITS
SA4 X3+TSNRW INDICATE NON-RECOVERABLE
MX7 60-TSNRN
LX7 TSNRS-TSNRN+1
BX7 X7*X4
SA7 A4 RESET TST WORD TSNRW
EQ RTIX RETURN
* INDICATE RECOVERY PROCESSING COMPLETE.
RTI3 MX7 CBLCN
LX7 CBLCS-59
BX7 X7+X2
SA7 A1
ERRNZ CBTRW-CBLCW IF RESTART AND LOGGING NOT IN SAME WORD
EQ RTIX RETURN
.A ELSE
RTI SUBR ENTRY/EXIT
* WHEN RECOVERY IS NOT INSTALLED, INDICATE RECOVERY PROCESSING
* IS COMPLETE.
SA1 B3+CBLCW RECOVERY LOGGING STATUS
MX7 CBLCN
LX7 CBLCS-59
BX7 X7+X1 SET RECOVERY COMPLETE
SA7 A1
EQ RTIX RETURN
.A ENDIF
RFB SPACE 4,20
** RFB - RECOVERY FUNCTION BEGIN PROCESSOR.
*
* ENTRY (X5) = RECOVERY REQUEST.
* (X6) = SUBCP.
* (X7) = TERMINAL STATUS TABLE ORDINAL.
* (B3) = FWA TO QUEUE WORK FOR FUNCTION
* RELATIVE TO SUBCP.
* (B5) = SUBCP RA.
*
* EXIT TO RECOVERY FUNCTION PROCESSOR.
*
* USES X - ALL.
* A - 1, 2, 3, 4, 5, 6, 7.
* B - 3, 6.
*
* CALLS GRP, STF, STST, ZFN.
*
* MACROS QTWCALL.
RFB SA6 RFBB SAVE SUBCP
SA7 RFBA TERMINAL ORDINAL
BX6 X5 SAVE SYSTEM REQUEST
LX5 17-35 RIGHT JUSTIFY FUNCTION
SA6 RFBC
SX3 X5 FUNCTION
LX5 59-59-17+35
SX7 B3+ SAVE FWA OF QUEUE ENTRY
SA7 RFBF
SX2 B5 COMPUTE REQUEST ADDRESS RELATIVE TO *TAF*
IX5 X5+X2
SX0 X3-RFTI
ZR X0,RFB4 IF *TINVOKE* FUNCTION
SX0 X3-RFSR
ZR X0,RFB6 IF *SRERUN* FUNCTION
* SAVE RECOVERY PROCESSING PARAMETERS IN QUEUE ENTRY.
RFB1 SA1 RFBA TERMINAL STATUS TABLE ORDINAL
SA2 RFBC REQUEST
SB6 B3+ FWA OF QUEUE ENTRY FOR NO SUBCP
BX7 X1 SAVE TERMINAL STATUS TABLE ORDINAL
BX6 X2 SAVE REQUEST IN QUEUE
ZR B5,RFB2 IF NO SUBCP
SB6 B5-NUAPL FWA OF TASK SYSTEM AREA
SB6 B6+B3 FWA OF QUEUE ENTRY RELATIVE TO *TAF*
RFB2 SA7 B6+QRTOW
SA6 B6+QRECW
.A IFGE IPTAR,1
* DETERMINE RECOVERY FILE FOR TERMINAL.
* SEVERAL RECOVERY FILES MAY BE USED TO SUPPORT
* MULTI-MAINFRAME RECOVERY AND HIGHER PERFORMANCE.
RFB3 RJ STF SEARCH TERMINAL FILES FOR TERMINAL ORDINAL
SX6 X3+ TERMINAL ORDINAL RELATIVE TO RECOVERY FILE
SA6 RFBD
* IF RECOVERY FILE NOT LOCKED, LOCK RECOVERY FILE
* AND START PROCESSING FUNCTION.
* IF RECOVERY FILE LOCKED, QUEUE THE REQUEST.
SA4 B4+TTLKW LOCK STATUS
ERRNZ TTLKS-59 IF LOCK NOT IN BIT 59
NG X4,RFB5 IF FILE LOCKED
MX7 TTLKN SET RECOVERY FILE LOCKED
BX6 X4+X7
LX7 TTEVS-59
ERRNZ TTEVN-TTLKN IF EVENT AND LOCK FIELDS NOT EQUAL
BX6 -X7*X6 CLEAR FILE RELEASE EVENT
ERRNZ TTLKW-TTEVW IF LOCK AND LOCK EVENT NOT IN SAME WORD
SA6 A4
.A ENDIF
* PROCESS SPECIFIED FUNCTION. ALL PROCESSORS RETURN
* TO *RFC* WHEN COMPLETE.
RFB4 SA5 RFBC REQUEST
LX5 17-35 FUNCTION
SA1 X5+CRFC RECOVERY FUNCTION PROCESSOR
LX5 59-59-17+35
SX2 B5 COMPUTE REQUEST ADDRESS RELATIVE TO *TAF*
IX5 X5+X2
SB6 X1
JP B6 PROCESS FUNCTION
.A IFGE IPTAR,1
* RECOVERY FILE IS LOCKED, SO QUEUE REQUEST.
RFB5 SX1 B4+TTEVW FWA OF LOCK RELEASED EVENT
SA3 RFBB SUPCP
SA4 RFBF FWA OF QUEUE ENTRY
SB3 X4
SX5 B0 NO EVENT TIME OUT
QTWCALL TTEVS,QTEV WAIT UNTIL LOCK IS RELEASED
RJ GRP GET REQUEST PARAMETERS
SA7 RFBA TERMINAL ORDINAL IN TERMINAL STATUS TABLE
SA6 RFBB SUBCP
SX3 B5
IX6 X5-X3
SA6 RFBC REQUEST
SX7 B3+
SA7 RFBF FWA OF QUEUE ENTRY RELATIVE TO SUBCP
EQ RFB3 SEARCH TERMINAL FILES
.A ENDIF
* IF *SRERUN* HAS SPECIFIED A USER, DETERMINE TERMINAL STATUS
* TABLE ORDINAL FOR USER.
RFB6 SA1 X5+SRUS FWA OF USER
SA2 RFBE BLANKS
ZR X1,RFB1 IF NO USER SPECIFIED
SA1 X1+B5 USER
BX3 X1-X2
ZR X3,RFB1 IF NO USER SPECIFIED
RJ ZFN ZERO FILL USER NAME
BX4 X1
RJ STST SEARCH TERMINAL STATUS TABLE FOR USER
SX6 TSUU RECOVERY STATUS USER UNKNOWN
ZR X3,RFB7 IF USER UNKNOWN
SX7 X3+ SAVE NEW TERMINAL STATUS TABLE ORDINAL
ERRNZ QRTOS-17 IF TERMINAL ORDINAL NOT IN BITS 17-0
SA7 RFBA
EQ RFB1 DETERMINE RECOVERY FILE FOR TERMINAL
RFB7 SA1 X5+SRST FWA OF STATUS
SA6 X1+B5 RETURN STATUS
SB4 B0 DO NOT UNLOCK RECOVERY FILE
EQ RFC PROCESS RECOVERY FUNCTION COMPLETE
RFBA BSS 1 TERMINAL ORDINAL IN TERMINAL STATUS TABLE
RFBB BSS 1 SUBCP
RFBC BSS 1 SYSTEM REQUEST
RFBD BSS 1 TERMINAL ORDINAL IN RECOVERY FILE
RFBE DATA H
RFBF BSS 1 FWA OF QUEUE ENTRY FOR RECOVERY
PFC SPACE 4,15
** RFC - RECOVERY FUNCTION COMPLETE PROCESSOR.
*
* ENTRY (B3) = FWA OF QUEUE ENTRY RELATIVE TO SUBCP.
* (B4) = 0, IF RECOVERY FILE SHOULD NOT BE UNLOCKED.
* = FWA OF RECOVERY FILE ENTRY, IF FILE
* SHOULD BE UNLOCKED.
* (RFBB) = SUBCP.
*
* EXIT TO *TSSC*.
*
* USES X - 1, 2, 3, 4, 5, 6, 7.
* A - 1, 2, 3, 4, 5, 6, 7.
* B - 3, 6.
*
* CALLS RCPU, RSP.
RFC BSS 0
.A IFGE IPTAR,1
ZR B4,RFC1 IF RECOVERY FILE SHOULD NOT BE UNLOCKED
* UNLOCK RECOVERY FILE.
SA4 B4 LOCK STATUS
ERRNZ TTLKW IF LOCK FIELD NOT IN WORD ZERO
MX7 -60+TTLKN
ERRNZ TTLKS-59 IF LOCK NOT IN BIT 59
BX6 -X7*X4 CLEAR LOCK
ERRNZ TTLKW-TTEVW IF LOCK AND LOCK EVENT NOT IN SAME WORD
LX7 TTEVS-59
ERRNZ TTLKN-TTEVN IF EVENT AND LOCK FIELDS NOT EQUAL
BX6 X7+X6 SET FILE RELEASE EVENT
SA6 A4
RFC1 BSS 0
.A ENDIF
SA2 RFBB SUBCP
ZR X2,RFC2 IF NOT A SUBCP REQUEST
* REQUEST CPU FOR SUBCP.
LX2 SCPAL COMPUTE SUBCP TABLE ADDRESS
TA4 X2-CPAL,VCPA
SB6 A4 FWA OF SUBCP TABLE ENTRY
SX4 X4-NUAPL FWA OF TASK SYSTEM AREA
SB3 TSSC RETURN ADDRESS AFTER REQUESTING CPU
RJ RSP RESTORE SUBCP REGISTERS
EQ RCPU REQUEST CPU FOR TASK
* SET RECOVERY PROCESSING COMPLETE TO ALLOW WAITING
* PROCESS TO CONTINUE.
RFC2 MX7 QRTCN
SA3 B3-CBQ1W+CBLCW LOGGING COMPLETE STATUS
LX7 CBLCS-59 SET LOGGING COMPLETE
BX7 X7+X3
SA7 A3
EQ TSSC TIME SLICE SUBCP
.A IFGE IPTAR,1
PFR SPACE 4,10
** RFR - RECOVERY FUNCTION RESTART.
*
* ENTRY (B3) = FWA OF QUEUE ENTRY RELATIVE TO SUBCP.
* (X2) = FIRST WORD OF QUEUE ENTRY.
*
* EXIT TO *RFB*.
*
* USES X - 1, 5.
*
* CALLS GRP.
RFR RJ GRP GET REQUEST PARAMETERS
SX1 B5 COMPUTE REQUEST ADDRESS RELATIVE TO SUBCP
IX5 X5-X1
EQ RFB RECOVERY FUNCTION BEGIN PROCESSING
.A ENDIF
CIL SPACE 4,20
** CIL - *CALLTRN* INPUT LOGGING.
*
* ENTRY (X5) = REQUEST.
* (B4) = FWA OF RECOVERY FILE ENTRY.
* (RFBD) = RECOVERY FILE TERMINAL ORDINAL.
* (RFBF) = FWA OF QUEUE ENTRY FOR RECOVERY.
*
* EXIT TO *RFC*.
* (B4) = FWA OF RECOVERY FILE ENTRY.
* (RFBB) = SUBCP.
*
* USES X - ALL.
* A - 1, 2, 3, 4, 6, 7.
* B - 3, 5, 6.
*
* CALLS CFA, CRS, EXIT, FIO, FMH, GRP, IRU, MVE=, SCB, STF.
*
* MACROS QTWCALL.
.A IFGE IPTAR,1
CIL SA2 X5+CBTAW FWA OF TERMINAL/USER
LX2 17-CBTAS RIGHT JUSTIFY TERMINAL ADDRESS
ERRNZ CBTAN-18 TERMINAL ADDRESS NOT 18 BITS
MX0 TSTNN
ERRNZ TSTNS-59 TERMINAL NAME DOES NOT START AT BIT 59
SA4 X2+TSTNW TERMINAL NAME
BX3 X0*X4
RJ IRU INITIALIZE RECOVERY UNIT
SX6 B0 INITIALIZE TO NO *SECURE* MESSAGE
SA6 B4+TTBFW+TRUWL+MRIWL+TRMSW
* LOG RECOVERABLE TRANSACTION INPUT TO RECOVERY FILE.
SX6 B4+TTBFW+TRUWL+TRMWL FWA OF COMMUNICATION BLOCKS
SA6 CILC
* FIND ALL COMMUNICATION BLOCKS FOR TRANSACTION.
SX2 X5 FWA OF COMMUNICATION BLOCK
CIL1 ZR X2,CIL2 IF END OF COMMUNICATION BLOCKS
SA3 X2+CBNCW FWA OF NEXT COMMUNICATION BLOCK
ERRNZ CBNCS-CBNCN+1 NEXT C. B. ADDRESS NOT RIGHT JUSTIFIED
SX6 X3+ SAVE NEXT COMMUNICATION BLOCK ADDRESS
SA6 CILA
* MOVE COMMUNICATION BLOCK TO RECOVERY FILE BUFFER.
SA3 CILC DESTINATION OF MOVE
SX1 CMBL WORD COUNT OF MOVE
IX6 X3+X1 COMPUTE NEXT MOVE DESTINATION
SA6 A3
RJ MVE=
SA2 CILA FWA OF NEXT COMMUNICATION BLOCK
EQ CIL1 CONTINUE SEARCH OF COMMUNICATION BLOCKS
* FORMAT RECOVERY UNIT STATUS INFORMATION.
CIL2 SA2 X5+CBCSW *CDCS* STATUS
MX0 -CBCSN
LX2 CBCSN-1-CBCSS *CDCS* STATUS
BX6 -X0*X2
LX6 TRCCS-TRCCN+1 POSITION *CDCS* STATUS
ERRNZ CBCSW-CBRMW *CDCS* AND *CRM* NOT IN SAME WORD
LX2 CBRMN-1-CBRMS-CBCSN+1+CBCSS RIGHT JUSTIFY *CRM*
BX3 -X0*X2
ERRNZ CBCSN-CBRMN *CDCS* AND *CRM* NOT THE SAME SIZE
LX3 TRCRS-TRCRN+1 POSITION *CRM* STATUS
ERRNZ TRCRW-TRCCW *CRM* AND *CDCS* NOT IN SAME WORD
BX6 X6+X3
SX4 CSTI STATUS IS RECOVERABLE INPUT
LX4 TRCSS-TRCSN+1 POSITION *STEP* FIELD
ERRNZ TRCRW-TRCSW *CRM* AND *STEP* NOT IN SAME WORD
BX6 X6+X4
LX2 59-CBSBS-CBRMN+1+CBRMS
ERRNZ CBSBW-CBRMW *BRTAN* AND *CRM* NOT IN SAME WORD
SX3 TYIT TYPE IS INTERACTIVE TERMINAL
NG X2,CIL5 IF *BTRAN* TRANSACTION
ERRNZ TRCSW-TRTYW *STEP* AND *TRAN* NOT IN SAME WORD
CIL3 LX3 TRTYS-TRTYN+1 POSITION *TRAN* FIELD
BX6 X6+X3
SA6 B4+TTBFW+TRTYW
SA1 X5+CBTSW TRANSACTION SEQUENCE NUMBER
MX0 -CBTSN MASK FOR SEQUENCE NUMBER
LX1 CBTSN-1-CBTSS RIGHT JUSTIFY SEQUENCE NUMBER
BX7 -X0*X1
SA7 B4+TTBFW+TRCNW
* FORMAT MESSAGE HEADER FOR TRANSACTION INPUT.
MX0 -TSCNN GET APPLICATION BLOCK HEADER
SA1 X5+CBTAW TERMINAL ADDRESS
AX1 CBTAS-17
SA2 X1+TSCNW APPLICATION CONNECTION NUMBER
LX2 TSCNN-1-TSCNS RIGHT JUSTIFY CONNECTION NUMBER
BX2 -X0*X2
SX7 B0+ SET NO APPLICATION BLOCK HEADER
ZR X2,CIL4 IF NO CONNECTION NUMBER
SX3 TNCTL NETWORK COMMUNICATION TABLE ENTRY LENGTH
IX4 X2*X3
SX4 X4+TNAHW
TX3 X4,VNCT
SA4 X3 APPLICATION BLOCK HEADER
BX7 X4
CIL4 SA1 CILC COMPUTE MESSAGE LENGTH
SX2 B4+TTBFW+TRUWL+TRMWL
IX1 X1-X2
SX3 MSTM MESSAGE SOURCE IS TRANSACTION MESSAGE
SX4 B1 MESSAGE UNIT IS WORDS
SB6 B4+TTBFW+TRUWL FWA OF MESSAGE HEADER
RJ FMH FORMAT MESSAGE HEADER
* WRITE RECOVERY UNIT TO RECOVERY FILE. THE *TSTAT* AND
* *SECURE* DATA ARE INITIALIZED.
SX1 MSST MESSAGE SOURCE IS STATUS
SA2 RFBD TERMINAL ORDINAL IN RECOVERY FILE
RJ CFA COMPUTE FILE ADDRESS FOR STATUS
SX2 TRUPL+MRIPL+TRMPL LENGTH IN PRUS TO WRITE
SX5 B4+TTFTW FWA OF FET
SX1 CIORW *CIO* REWRITE
RJ FIO DO FILE INPUT/OUTPUT
* QUEUE REQUEST TO LET *TAF* DO OTHER WORK UNTIL
* OUTPUT IS COMPLETE.
SA3 RFBF FWA OF RECOVERY QUEUE ENTRY
SB3 X3+
SX1 B4+TTFTW FWA OF OUTPUT COMPLETE EVENT
SX3 B0 NO SUBCP
SX5 B0 NO TIME OUT ON EVENT
QTWCALL 0,QTEV WAIT FOR OUTPUT TO COMPLETE
RJ GRP GET REQUEST PARAMETERS FOR *CALLTRN*
SA6 RFBB SAVE SUBCP
RJ STF SEARCH TERMINAL FILES FOR TERMINAL ORDINAL
SX2 TSTLLE TST ENTRY LENGTH
IX4 X2*X1 OFFSET INTO TST
TA2 X4+TSNRW,VTST INDICATE RECOVERABLE
MX0 -TSNRN
LX0 TSNRS-TSNRN+1
BX6 -X0+X2
SA6 A2 RESET TST WORD TSNRW
RJ CRS CHECK RECOVERY STATUS FOR ERRORS
EQ RFC RECOVERY FUNCTION COMPLETE PROCESSING
CIL5 SX3 TYBT *BTRAN* TRANSACTION
EQ CIL3 PUT TRANSACTION TYPE IN RECOVERY UNIT
CILA BSS 1 FWA OF NEXT COMMUNICATION BLOCK
CILC BSS 1 FWA FOR INPUT IN RECOVERY BUFFER
.A ELSE
CIL RJ EXIT ERROR IF ROUTINE IS CALLED
.A ENDIF
GET SPACE 4,20
** GET - *RGET* FUNCTION PROCESSING.
*
* ENTRY (X5) = SYSTEM REQUEST.
* (B4) = FWA OF RECOVERY FILE ENTRY.
* (B5) = SUBCP RA.
* (RFBB) = SUBCP.
* (RFBD) = RECOVERY FILE TERMINAL ORDINAL.
*
* EXIT TO *RFC*.
* (RFBB) = SUBCP.
* (B4) = FWA OF RECOVERY FILE ENTRY.
*
* USES X - ALL.
* A - 1, 2, 3, 4, 6, 7.
* B - 3.
*
* CALLS CFA, CML, CMU, CRS, CRU, CTF, FIO, GRP, MVD, STF.
*
* MACROS QTWCALL.
.A IFGE IPTAR,1
GET RJ CRU CHECK RECOVERY UNIT FOR LEGAL RANGE
NZ X6,GET2 IF INCORRECT RECOVERY UNIT INDEX
* READ USER *RPUT* MESSAGE FROM RECOVERY FILE.
SA2 RFBD TERMINAL ORDINAL FOR RECOVERY FILE
SX1 MSRM MESSAGE SOURCE IS *RPUT* MESSAGE
RJ CFA COMPUTE FILE ADDRESS
SX5 B4+TTFTW FWA OF FET
SA4 B4+TTNPW PRUS IN USER MESSAGE
SX1 CIORD *CIO* READ FUNCTION
MX0 -TTNPN MASK FOR PRUS IN USER MESSAGE
LX4 TTNPN-1-TTNPS RIGHT JUSTIFY PRUS
BX2 -X0*X4
RJ FIO DO FILE INPUT/OUTPUT
* QUEUE REQUEST TO LET *TAF* DO OTHER WORK UNTIL
* INPUT IS COMPLETE.
SX1 B4+TTFTW FWA OF INPUT COMPLETE EVENT
SA3 RFBB SUBCP
SA4 RFBF FWA OF RECOVERY QUEUE ENTRY
SB3 X4
SX5 B0 NO TIME OUT ON EVENT
QTWCALL 0,QTEV WAIT FOR INPUT TO COMPLETE
RJ GRP GET REQUEST PARAMETERS AFTER RESTART
SA6 RFBB SAVE SUBCP
RJ STF SEARCH TERMINAL FILES FOR ORDINAL
RJ CRS CHECK RECOVERY STATUS FOR ERRORS
* IF NO MESSAGE WAS RECORDED BY *RPUT*, RETURN NO MESSAGE
* STATUS TO TASK.
SX6 TSNM RECOVERY STATUS NO MESSAGE
SA2 B4+TTBFW+TRMSW MESSAGE SOURCE
MX0 -TRMSN
ERRNZ TRMSN-TRMUN IF MESSAGE SOURCE .NE. UNITS FIELD LENGTH
LX2 TRMSN-1-TRMSS RIGHT JUSTIFY MESSAGE SOURCE
BX3 -X0*X2
ZR X3,GET2 IF NO MESSAGE
* IF *RGET* MESSAGE UNIT IS NOT EQUAL TO *RPUT* MESSAGE
* UNIT, RETURN MESSAGE UNIT CONFLICT STATUS TO TASK.
ERRNZ TRMUW-TRMSW IF MESSAGE SOURCE .NE. UNITS FIELD WORD
LX2 TRMUN-1-TRMUS+TRMSS-TRMSN+1 MESSAGE UNITS
BX7 -X0*X2
SA1 X5+RGMU FWA OF USER MESSAGE UNITS
ZR X1,GET1 IF PARAMETER NOT SPECIFIED
SA1 X1+B5 USER MESSAGE UNIT
GET1 RJ CMU CHECK MESSAGE UNIT
NZ X6,GET2 IF INCORRECT MESSAGE UNIT
IX7 X4-X7 USER UNITS - FILE UNITS
SX6 TSPG RECOVERY STATUS MESSAGE CONFLICT
NZ X7,GET2 IF USER UNITS .NE. FILE UNITS
* IF MESSAGE FROM RECOVERY FILE WILL NOT FIT IN USER
* AREA OR TASK FL RETURN MESSAGE WILL NOT FIT STATUS
* TO TASK.
MX0 -TRMLN MASK FOR MESSAGE LENGTH
LX2 TRMLN-1-TRMLS+TRMUS-TRMUN+1
SA1 X5+RGML FWA OF USER MESSAGE LENGTH
SA1 X1+B5 USER MESSAGE LENGTH
BX7 -X0*X2
SX6 TSMU RECOVERY STATUS MESSAGE .GR. USER AREA
SA7 A1 RETURN LENGTH TO USER
IX0 X1-X7 USER LENGTH - FILE LENGTH
BX3 X7 FILE MESSAGE LENGTH
NG X0,GET2 IF FILE LENGTH .GR. USER AREA
RJ CML COMPUTE MESSAGE LENGTH IN WORDS
SA2 RFBB SUBCP
SA3 X5+RGMA FWA OF MESSAGE RELATIVE TO TASK
SX3 X3
BX4 X6 SAVE REMAINDER OVER WORD
RJ CTF CHECK TASK FIT FOR MESSAGE
NZ X6,GET2 IF MESSAGE DOES NOT FIT IN FL
BX6 X4 RESTORE REMAINDER OVER WORD BOUNDARY
* MOVE MESSAGE TO TASK.
SX3 B5+X3 FWA OF MESSAGE RELATIVE TO *TAF*
SX2 B4+TTBFW+TRMWL FWA OF MESSAGE ORIGIN
RJ MVD MOVE MESSAGE TO TASK
SX6 TSNE RECOVERY STATUS NO ERRORS
* RETURN STATUS TO TASK.
GET2 SA4 X5+RGST FWA OF STATUS
SA6 X4+B5 RETURN STATUS
EQ RFC COMPLETE PROCESSING FOR RECOVERY FUNCTION
.A ELSE
GET SX6 TSRU RECOVERY STATUS RECOVERY UNAVAILABLE
SA4 X5+RGST FWA OF STATUS
SA6 X4+B5 RETURN STATUS
EQ RFC COMPLETE PROCESSING FOR RECOVERY FUNCTION
.A ENDIF
RPUT SPACE 4,20
** PUT - *RPUT* FUNCTION PROCESSING.
*
* ENTRY (X5) = SYSTEM REQUEST.
* (B4) = FWA OF RECOVERY FILE ENTRY.
* (B5) = SUBCP RA.
* (RFBB) = SUBCP.
* (RFBF) = FWA OF RECOVERY FILE QUEUE ENTRY.
*
* EXIT TO *RFC*.
* (RFBB) = SUBCP.
* (B4) = FWA OF RECOVERY FILE ENTRY.
*
* USES X - 1, 2, 3, 4, 5, 6, 7.
* A - 1, 2, 3, 4, 6, 7.
* B - 3, 6.
*
* CALLS CFA, CMF, CML, CMU, CRS, CRU, FIO, FMH, GRP, MVE=,
* STF.
*
* MACROS QTWCALL.
.A IFGE IPTAR,1
PUT RJ CRU CHECK RECOVERY UNIT FOR LEGAL RANGE
* CHECK *RPUT* FOR VALID -
*
* 1. INDEX
* 2. MESSAGE UNIT
* 3. MESSAGE SIZE.
*
* IF ANY OF THE ABOVE PARAMETERS ARE INCORRECT
* RETURN STATUS TO TASK.
NZ X6,PUT2 IF INCORRECT RECOVERY UNIT INDEX
SA1 X5+RGMU FWA OF MESSAGE UNITS
ZR X1,PUT1 IF MESSAGE UNIT NOT SPECIFIED
SA1 X1+B5 MESSAGE UNITS
PUT1 RJ CMU CHECK MESSAGE UNIT
NZ X6,PUT2 IF INCORRECT MESSAGE UNIT
SA2 X5+RGML FWA OF MESSAGE LENGTH
SA3 X2+B5 MESSAGE LENGTH
RJ CML COMPUTE MESSAGE LENGTH
BX7 X1 SAVE MESSAGE LENGTH IN WORDS
SA7 PUTA
RJ CMF CHECK MESSAGE FIT IN RECOVERY FILE
NZ X6,PUT2 IF USER MESSAGE DOES NOT FIT IN FILE
* MOVE USER MESSAGE TO RECOVERY FILE BUFFER.
SX7 B0 NO APPLICATION BLOCK HEADER
SX1 X3 LENGTH IN MESSAGE UNITS
SX3 MSRM MESSAGE SOURCE IS *RPUT* MESSAGE
SB6 B4+TTBFW FWA OF MESSAGE HEADER
RJ FMH FORMAT MESSAGE HEADER
SA2 X5+RGMA FWA OF MESSAGE RELATIVE TO TASK
SX2 X2+B5 FWA OF ORIGIN RELATIVE TO *TAF*
SX3 B4+TTBFW+TRMWL FWA OF DESTINATION
SA1 PUTA MESSAGE LENGTH IN WORDS
RJ MVE= MOVE USER MESSAGE TO RECOVERY BUFFER
* WRITE *RPUT* MESSAGE TO RECOVERY FILE.
SX1 MSRM MESSAGE SOURCE IS *RPUT* MESSAGE
SA2 RFBD TERMINAL ORDINAL FOR RECOVERY FILE
SA4 X5+RGIN FWA OF USER RECOVERY UNIT INDEX
SA3 X4+B5 RECOVERY UNIT INDEX
RJ CFA COMPUTE FILE ADDRESS
SX5 B4+TTFTW FWA OF FET
SA2 PUTA COMPUTE MESSAGE LENGTH IN PRUS
SX2 X2+77B+TRMWL ROUND UP 1 PRU + MESSAGE HEADER
SX1 CIORW *CIO* REWRITE REQUEST
AX2 6
RJ FIO DO FILE INPUT/OUTPUT
* QUEUE REQUEST TO LET *TAF* DO OTHER WORK UNTIL
* OUTPUT IS COMPLETE.
SX1 B4+TTFTW FWA OF EVENT
SA3 RFBB SUBCP
SA4 RFBF FWA OF RECOVERY QUEUE ENTRY
SB3 X4
SX5 B0 NO TIME OUT ON EVENT
QTWCALL 0,QTEV WAIT ON BIT 0 OF FET
RJ GRP GET REQUEST PARAMETERS
SA6 RFBB SAVE SUBCP
RJ STF SEARCH TERMINAL FILE FOR TERMINAL
RJ CRS CHECK RECOVERY STATUS FOR ERRORS
SX6 TSNE RECOVERY STATUS NO ERRORS
* RETURN STATUS TO TASK.
PUT2 SA4 X5+RGST FWA OF STATUS
SA6 X4+B5 RETURN STATUS
EQ RFC COMPLETE PROCESSING FOR RECOVERY FUNCTION
PUTA BSS 1 LENGTH OF MESSAGE IN WORDS
.A ELSE
PUT SX6 TSRU RECOVERY STATUS RECOVERY UNAVAILABLE
SA4 X5+RGST FWA OF STATUS
SA6 X4+B5 RETURN STATUS
EQ RFC COMPLETE PROCESSING FOR RECOVERY FUNCTION
.A ENDIF
RSE SPACE 4,20
** RSE - *RSECURE* FUNCTION PROCESSING.
*
* ENTRY (X5) = SYSTEM REQUEST.
* (B4) = FWA OF RECOVERY FILE ENTRY.
* (B5) = SUBCP RA.
* (RFBB) = SUBCP.
* (RFBD) = RECOVERY FILE TERMINAL ORDINAL.
* (RFBF) = FWA OF RECOVER FILE QUEUE ENTRY.
*
* EXIT TO *RFC*.
* (RFBB) = SUBCP.
* (B4) = FWA OF RECOVERY FILE ENTRY.
*
* USES X - ALL.
* A - 1, 2, 3, 4, 6, 7.
* B - 3, 6.
*
* CALLS CFA, CML, CMU, CRS, CTF, FIO, GRP, MVD, STF.
*
* MACROS QTWCALL.
.A IFGE IPTAR,1
RSE SX1 MSSM MESSAGE SOURCE IS *SECURE* MESSAGE
* READ *RSECURE* MESSAGE FROM RECOVERY FILE.
SA2 RFBD TERMINAL ORDINAL FOR RECOVERY FILE
RJ CFA COMPUTE FILE ADDRESS
SX5 B4+TTFTW FWA OF FET
SA4 B4+TTNPW PRUS IN *SECURE* MESSAGE
SX1 CIORD *CIO* READ FUNCTION
MX0 -TTNPN MASK FOR PRUS
LX4 TTNPN-1-TTNPS RIGHT JUSTIFY PRUS
BX2 -X0*X4
RJ FIO DO FILE INPUT/OUTPUT
* QUEUE REQUEST TO LET *TAF* DO OTHER WORK UNTIL
* INPUT IS COMPLETE.
SX1 B4+TTFTW FWA OF EVENT FOR INPUT COMPLETE
SA3 RFBB SUBCP
SA4 RFBF FWA OF RECOVERY QUEUE ENTRY
SB3 X4
SX5 B0 NO TIME OUT ON EVENT
QTWCALL 0,QTEV WAIT FOR INPUT TO COMPLETE
RJ GRP GET REQUEST PARAMETERS AFTER WAIT
SA6 RFBB SAVE SUBCP
RJ STF SEARCH TERMINAL FILES FOR ORDINAL
RJ CRS CHECK RECOVERY STATUS FOR ERRORS
* RETURN MESSAGE LENGTH, UNIT, FORMAT EFFECTOR, AND
* TRANSPARENT MODE TO TASK.
SX6 TSNM RECOVERY STATUS NO MESSAGE
SA4 B4+TTBFW+TRMSW MESSAGE SOURCE
MX0 -TRMSN
LX4 TRMSN-1-TRMSS RIGHT JUSTIFY MESSAGE SOURCE
BX3 -X0*X4
ZR X3,RSE1 IF NO MESSAGE
ERRNZ TRMSW-TRMLW IF SOURCE AND LENGTH NOT IN SAME WORD
ERRNZ TRMLW-TRMUW IF LENGTH AND UNIT NOT IN SAME WORD
LX4 TRMLN-1-TRMLS+TRMSS-TRMSN+1
MX0 -TRMLN MASK FOR MESSAGE LENGTH
BX6 -X0*X4 MESSAGE LENGTH
SA1 X5+SEML FWA OF TASK MESSAGE LENGTH
SA3 X1+B5 USER MESSAGE LENGTH
SA6 X1+B5 RETURN MESSAGE LENGTH
SA6 RSEA
BX7 X3 SAVE USER MESSAGE LENGTH
LX4 TRMUN-1-TRMUS+TRMLS-TRMLN+1 MESSAGE UNITS
MX3 -TRMUN MASK FOR MESSAGE UNITS
SA7 RSEB
BX7 -X3*X4 MESSAGE UNITS
SA2 X5+SEMU FWA OF TASK MESSAGE UNITS
SA1 X2+B5 USER MESSAGE UNITS
RJ CMU CHECK MESSAGE UNITS
NZ X6,RSE1 IF INCORRECT MESSAGE UNITS
SA7 X2+B5 RETURN MESSAGE UNITS
SA7 RSEC
BX6 X4 SAVE USER MESSAGE UNITS
SA6 RSED
SA4 B4+TTBFW+TRMHW APPLICATION BLOCK HEADER
MX0 -AHNFN
ERRNZ AHNFN-AHPTN IF FORMAT AND TRANSPARENT FIELDS UNEQUAL
LX4 AHNFN-1-AHNFS RIGHT JUSTIFY FORMAT EFFECTOR
BX6 -X0*X4 FORMAT EFFECTOR
SA2 X5+SEFE FWA OF TASK FORMAT EFFECTOR
SA6 X2+B5 RETURN FORMAT EFFECTOR TO TASK
LX4 AHPTN-1-AHPTS+AHNFS-AHNFN+1 RIGHT JUSTIFY MODE
BX7 -X0*X4 TRANSPARENT MODE
SA3 X5+SETM FWA OF TASK TRANSPARENT MODE
SA7 X3+B5 RETURN TRANSPARENT MODE
* IF MESSAGE DOES NOT FIT IN TASK USER AREA OR TASK
* FL RETURN MESSAGE DOES NOT FIT STATUS TO TASK.
SA3 RSEB USER MESSAGE LENGTH
SA4 RSED USER MESSAGE UNITS
MX0 -6
SX4 X4-2 COMPUTE BITS IN USER MESSAGE
SX1 6
IX1 X4*X1
SB6 X1
SX2 61410B BITS PER MESSAGE UNIT
AX2 B6
BX2 -X0*X2
IX1 X2*X3 NUMBER OF BITS FOR USER AREA
SA3 RSEA FILE MESSAGE LENGTH
SA4 RSEC FILE MESSAGE UNIT
SX6 X4-2 COMPUTE BITS IN FILE MESSAGE
SX2 6
IX2 X6*X2
SB6 X2
SX2 61410B BITS PER MESSAGE UNIT
AX2 B6
BX2 -X0*X2
IX0 X2*X3 NUMBER OF BITS IN *RSECURE* MESSAGE
IX7 X1-X0 USER LENGTH - MESSAGE LENGTH
SX6 TSMU RECOVERY STATUS MESSAGE .GR. USER AREA
NG X7,RSE1 IF MESSAGE DOES NOT FIT IN USER AREA
RJ CML COMPUTE FILE MESSAGE LENGTH IN WORDS
SA2 RFBB SUBCP
SA3 X5+SEMA FWA OF MESSAGE
BX4 X6
SX3 X3
RJ CTF CHECK MESSAGE FIT IN TASK FL
NZ X6,RSE1 IF MESSAGE DOES NOT FIT IN TASK FL
BX6 X4 RESTORE REMAINDER OVER WORD
* MOVE *SECURE* MESSAGE TO TASK.
SX2 B4+TTBFW+TRMWL FWA OF MESSAGE ORIGIN
SX3 B5+X3 DESTINATION RELATIVE TO *TAF*
RJ MVD MOVE MESSAGE TO TASK
SX6 TSNE RECOVERY STATUS NO ERRORS
* RETURN STATUS TO TASK.
RSE1 SA4 X5+SEST FWA OF STATUS
SA6 X4+B5 RETURN STATUS TO TASK
EQ RFC RECOVERY FUNCTION COMPLETE PROCESSING
RSEA BSS 1 FILE MESSAGE LENGTH IN MESSAGE UNITS
RSEB BSS 1 USER MESSAGE LENGTH IN MESSAGE UNITS
RSEC BSS 1 FILE MESSAGE UNIT
RSED BSS 1 USER MESSAGE UNIT
.A ELSE
RSE SX6 TSRU RECOVERY STATUS RECOVERY UNAVAILABLE
SA4 X5+SEST FWA OF STATUS
SA6 X4+B5 RETURN STATUS TO TASK
EQ RFC RECOVERY FUNCTION COMPLETE PROCESSING
.A ENDIF
RUN SPACE 4,20
** RUN - *RERUN* FUNCTION PROCESSING.
*
* ENTRY (X5) = SYSTEM REQUEST.
* (B4) = FWA OF RECOVERY FILE ENTRY.
* (B5) = SUBCP RA.
* (RFBA) = TERMINAL ORDINAL.
* (RFBB) = SUBCP.
* (RFBD) = RECOVERY FILE TERMINAL ORDINAL.
* (RFBF) = FWA OF RECOVERY QUEUE ENTRY.
* EVCB = FWA OF COMMUNICATION BLOCK EVENT.
*
* EXIT TO *RFC* IF UNABLE TO RERUN.
* TO *TSSC OTHERWISE.
* (B4) = FWA OF RECOVERY FILE ENTRY.
*
* USES A - 1, 2, 3, 6.
* X - 1, 2, 3, 6.
* B - 5, 6.
*
* CALLS ASN, PSU, RSC.
.A IFGE IPTAR,1
RUN BSS 0 ENTRY
SA2 B5-NUAPL+CB2C CHECK FOR RECOVERABLE TRANSACTION
SA2 X2+CBRTW
LX2 59-CBRTS
PL X2,RUN1 IF NOT RECOVERABLE
SX6 B4+ FWA OF RECOVERY FILE ENTRY
SA6 PSUA
SA1 RFBA GET TERMINAL ORDINAL
RJ ASN ASSIGN SEQUENCE NUMBER
SA2 B5-NUAPL+TRID
SA6 A2
BX6 X2
SA6 RUNB SAVE OLD ID
SA2 B5-NUAPL+CB2C
SX6 B5 SAVE SUBCP
SX2 X2
SA6 RUNA
RJ RSC RELEASE SECONDARY C.B.
SA2 RUNA
SB5 X2 RESTORE SUBCP RA
SB6 NCBC-1 NUMBER OF C.B.-S TO RESERVE
RJ PSU PROCESS USER *RERUN* FUNCTION
SA3 RUNB RESTORE OLD ID
SA2 RUNA
BX6 X3
SA6 X2-NUAPL+TRID
NZ X1,RFC IF UNABLE TO RERUN
SA2 RFBB SUBCP NUMBER
LX2 SCPAL
MX3 SCTMN
TA2 X2-CPAL+SCTMW,VCPA
LX3 SCTMS-59
BX6 X3+X2
SA6 A2 UPDATE SUBCP TABLE WORD TWO
EQ RFC COMPLETE PROCESSING
RUN1 SX6 TSNO NOT RERUNNABLE STATUS
SA1 X5+REST
SA6 X1+B5 SAVE STATUS
EQ RFC COMPLETE PROCESSING
RUNA BSS 1 (B5) SUBCP RA
RUNB BSS 1 SUBCP SEQUENCE NUMBER.
.A ELSE
RUN SX6 TSRU RECOVERY STATUS RECOVERY UNAVAILABLE
SA4 X5+REST FWA OF STATUS
SA6 X4+B5 RETURN STATUS
EQ RFC RECOVERY PROCESSING COMPLETE
.A ENDIF
SEC SPACE 4,20
** SEC - *SECURE* FUNCTION PROCESSING.
*
* ENTRY (X5) = SYSTEM REQUEST.
* (B4) = FWA OF RECOVERY FILE ENTRY.
* (B5) = SUBCP RA.
* (RFBB) = SUBCP.
* (RFBD) = RECOVERY FILE TERMINAL ORDINAL.
* (RFBF) = FWA OF RECOVERY QUEUE ENTRY.
*
* EXIT TO *RFC*.
* (RFBB) = SUBCP.
* (B4) = FWA OF RECOVERY FILE ENTRY.
*
* EXIT TO *RFC*.
* USES X - 0, 1, 2, 3, 4, 6, 7.
* A - 1, 2, 3, 4, 6, 7.
* B - 3, 6.
*
* CALLS CFA, CMF, CML, CMU, CRS, FIO, FMH, GRP, MVE=,
* REM, SEL, STF.
*
* MACROS QTWCALL.
.A IFGE IPTAR,1
SEC SA1 X5+SEMU FWA OF *SECURE* MESSAGE UNIT
SX0 X1+
ZR X1,SEC1 IF NO MESSAGE UNIT SPECIFIED
* IF INCORRECT MESSAGE UNIT, RETURN INCORRECT MESSAGE UNIT
* STATUS TO TASK.
SA1 X1+B5 MESSAGE UNIT
SEC1 RJ CMU CHECK MESSAGE UNIT
NZ X6,SEC5 IF INCORRECT MESSAGE UNITS
SA1 X5+SEML FWA OF MESSAGE LENGTH
SX2 B0 DEFAULT IS NON-TRANSPARENT MODE
SA1 X1+B5 MESSAGE LENGTH
* BUILD *NAM* APPLICATION BLOCK HEADER.
* THE TASK REQUEST MAY SUPPLY FORMAT EFFECTOR AND
* TRANSPARENT MODE PARAMETERS. IF INCORRECT PARAMETERS
* RETURN STATUS TO TASK.
BX7 X1
MX3 60-AHLCN
LX7 AHLCS-AHLCN+1 POSITION MESSAGE LENGTH
SX6 TSLS RECOVERY STATUS LENGTH EXCEEDS *SEND*
BX3 X3*X7
NZ X3,SEC6 IF MESSAGE LENGTH EXCEEDS 12 BITS
SX3 B1+ DEFAULT IS NO FORMAT EFFECTOR
ZR X0,SEC3 IF NO MESSAGE UNIT SPECIFIED
SA1 X5+SEFE FWA OF FORMAT EFFECTOR
ZR X1,SEC3 IF NO FORMAT EFFECTOR SPECIFIED
SA3 X1+B5 FORMAT EFFECTOR
ZR X3,SEC2 IF FORMAT EFFECTOR
SX0 X3-1
SX6 TSIM RECOVERY STATUS INCORRECT FORMAT EFFECTOR
NZ X0,SEC5 IF INCORRECT FORMAT EFFECTOR
SEC2 SA1 X5+SETM FWA OF TRANSPARENT MODE
ZR X1,SEC3 IF TRANSPARENT MODE NOT SPECIFIED
SA2 X1+B5 TRANSPARENT MODE
ZR X2,SEC3 IF NON TRANSPARENT MODE
SX0 X2-1
SX6 TSIT RECOVERY STATUS INCORRECT TRANSPARENT MODE
NZ X0,SEC5 IF INCORRECT TRANSPARENT MODE
SEC3 LX2 AHPTS-0 POSITION TRANSPARENT MODE
BX7 X7+X2
LX3 AHNFS-0 POSITION FORMAT EFFECTOR
BX7 X7+X3
LX4 AHCTS-AHCTN+1 POSITION APPLICATION CHARACTER TYPE
BX7 X7+X4
SX3 BTMS SET MESSAGE BLOCK TYPE
LX3 AHBTS-AHBTN+1 POSITION BLOCK TYPE
BX7 X7+X3 APPLICATION BLOCK HEADER
SA7 B5-NUAPL+SECH
* COMPUTE MESSAGE LENGTH IN WORDS. IF MESSAGE UNIT IS DISPLAY
* COMPLETE MESSAGE WITH AN END OF LINE BYTE.
MX0 -AHLCN
LX4 59-59-AHCTS+AHCTN-1
BX3 -X0*X7 LENGTH OF MESSAGE IN MESSAGE UNITS
SB3 X3
ERRNZ AHLCS-AHLCN+1 IF LENGTH NOT RIGHT JUSTIFIED
RJ CML COMPUTE MESSAGE LENGTH IN WORDS AND BITS
SX0 X4-4
SA3 X5+SEMA FWA OF MESSAGE
SA2 SECA *SEND* REQUEST WORD 1
LX3 47-17 POSITION MESSAGE FWA
SB6 X6 REMAINDER OF MESSAGE OVER WORD BOUNDARY
BX6 X3+X2
LX3 59-59-47+17
BX6 X6+X1 ADD LENGTH OF MESSAGE
SA6 B5-NUAPL+SECR SAVE *SEND* REQUEST WORD 1
NZ X0,SEC4 IF NOT DISPLAY MESSAGE UNIT
SX3 X3+B5 FWA OF MESSAGE RELATIVE TO *TAF*
RJ SEL SET END LINE
MX0 60-AHLCN COMPUTE NEW MESSAGE LENGTH
SX3 10 10 CHARACTERS PER WORD
BX7 X0*X7 CLEAR OLD MESSAGE LENGTH
IX6 X1*X3 NEW LENGTH
BX7 X6+X7
* IF MESSAGE CANNOT BE SENT, RETURN MESSAGE CANNOT BE SENT
* STATUS TO TASK.
SEC4 SX6 TSLS RECOVERY STATUS LENGTH EXCEEDS *SEND*
SX0 X1-MAXWS
PL X0,SEC6 IF MESSAGE CANNOT BE SENT
SX6 TSTM RECOVERY STATUS LENGTH EXCEEDS TRANSACTION
SA3 B5-NUAPL+TOWC TOTAL OUTPUT WORD COUNT
IX0 X1+X3 ADD NEW MESSAGE
SX3 X0-MAXTO
PL X3,SEC6 IF LENGTH EXCEEDS TRANSACTION MAXIMUM
RJ CMF CHECK MESSAGE FIT IN RECOVERY FILE
NZ X6,SEC6 IF MESSAGE DOES NOT FIT IN FILE
SB6 B4+TTBFW FWA OF MESSAGE HEADER IN BUFFER
SX6 X1 SAVE MESSAGE LENGTH IN WORDS
SX1 B3 MESSAGE LENGTH IN SPECIFIED UNITS
SA6 SECB
SX3 MSSM MESSAGE SOURCE IS *SECURE* MESSAGE
RJ FMH FORMAT MESSAGE HEADER
* MOVE *SECURE* MESSAGE TO RECOVERY FILE BUFFER.
SA4 X5+SEMA FWA OF *SECURE* MESSAGE
SX2 X4+B5 FWA OF MESSAGE RELATIVE TO *TAF*
SX3 B4+TTBFW+TRMWL FWA OF DESTINATION
SA1 SECB MESSAGE LENGTH IN WORDS
RJ MVE= MOVE MESSAGE
* WRITE *SECURE* MESSAGE TO RECOVERY FILE.
SX1 MSSM MESSAGE SOURCE IS *SECURE* MESSAGE
SA2 RFBD TERMINAL ORDINAL IN RECOVERY FILE
RJ CFA COMPUTE FILE ADDRESS
SX5 B4+TTFTW FWA OF FET
SA2 SECB COMPUTE MESSAGE LENGTH IN PRUS
SX1 CIORW *CIO* REWRITE
SX2 X2+77B
AX2 6
RJ FIO DO FILE INPUT/OUTPUT
* QUEUE REQUEST TO LET *TAF* DO OTHER WORK UNTIL
* OUTPUT IS COMPLETE.
SX1 B4+TTFTW FWA OF EVENT IS FET
SA3 RFBB SUBCP OF EVENT
SA4 RFBF FWA OF RECOVERY QUEUE ENTRY
SB3 X4
SX5 B0 NO TIME OUT ON EVENT
QTWCALL 0,QTEV WAIT ON BIT 0 OF FET
RJ GRP GET REQUEST PARAMETERS AFTER WAIT
SA6 RFBB SAVE SUBCP
RJ STF SEARCH TERMINAL FILE FOR ORDINAL
RJ CRS CHECK RECOVERY STATUS FOR ERRORS
SX6 TSNE RECOVERY STATUS NO ERRORS
* IF MESSAGE USES DISPLAY MESSAGE UNITS, RESTORE CHARACTERS
* USED BY END OF LINE BYTE.
SA1 B5-NUAPL+SECH APPLICATION BLOCK HEADER
SA2 B5-NUAPL+SECR *SEND* REQUEST FOR *SECURE*
RJ REM RESTORE END OF MESSAGE
* SET MESSAGE SENT FLAG IN TASK SYSTEM AREA.
SA1 B5+CB1C INDICATE TRANSACTION SEND
MX7 CBSDN
LX7 CBSDS-59
BX7 X1+X7
SA7 A1
* RETURN STATUS TO TASK.
SEC5 SA4 X5+SEST FWA OF *SECURE* STATUS
SA6 X4+B5 RETURN STATUS
EQ RFC COMPLETE PROCESSING FOR RECOVERY FUNCTION
SEC6 SX7 B0+ CLEAR *SECURE* REQUEST PRESENT
SA7 B5-NUAPL+SECR
EQ SEC5 RETURN STATUS TO TASK
* WORD 1 OF *SEND* REQUEST FOR *SECURE* MESSAGE.
* THE *SEND* IS DONE WITH FINAL BLOCK FLAG SET AND AN *ABH*
* SPECIFIED. THE *SEND* WILL BE DONE DURING
* TRANSACTION CEASE PROCESSING.
SECA VFD 1/0,1/1,3/0,1/1,1/1,5/0,18/0,18/0,12/0
SECB BSS 1 MESSAGE LENGTH IN WORDS
.A ELSE
SEC SX6 TSRU RECOVERY STATUS RECOVERY UNAVAILABLE
SA4 X5+SEST FWA OF STATUS
SA6 X4+B5 RETURN STATUS TO TASK
EQ RFC RECOVERY FUNCTION COMPLETE
.A ENDIF
SRE SPACE 4,20
** SRE - *RERUN* FUNCTION PROCESSING.
*
* ENTRY (X5) = SYSTEM REQUEST.
* (B4) = FWA OF RECOVERY FILE ENTRY.
* (B5) = SUBCP RA.
* (RFBB) = SUBCP.
* (RFBD) = RECOVERY FILE TERMINAL ORDINAL.
* (RFBF) = FWA OF RECOVERY QUEUE ENTRY.
* EVCB = FWA OF COMMUNICATION BLOCK EVENT.
*
* EXIT TO *RFC*, IF RECOVERY FUNCTION COMPLETE.
* (B4) = FWA OF RECOVERY FILE ENTRY.
* (RFBB) = SUBCP.
*
* USES X - 0, 4, 6.
* A - 4, 6.
* B - 6.
*
* CALLS PSU, RFC.
.A IFGE IPTAR,1
SRE BSS 0 ENTRY
MX6 CBLKN SET TERMINAL LOCK FLAG
SA4 B5-NUAPL+CB1C
LX6 CBLKS-59
BX6 X4+X6
SA6 A4
SX6 B4+ SAVE FWA OF RECOVERY FILE ENTRY
SA6 PSUA
SB6 -NCBC+1 COMPLEMENT OF NUMBER OF C.B.-S TO RESERVE
RJ PSU PROCESS SYSTEM *RERUN*
EQ RFC RECOVERY FUNCTION COMPLETE
.A ELSE
SRE SX6 TSRU RECOVERY STATUS RECOVERY UNAVAILABLE
SA4 X5+REST FWA OF STATUS
SA6 X4+B5 RETURN STATUS
EQ RFC RECOVERY PROCESSING COMPLETE
.A ENDIF
TIN SPACE 4,15
** TIN - *TINVOKE* FUNCTION PROCESSING.
*
* USES X - 0, 1, 4, 6.
* A - 1, 4, 6.
* B - 4.
*
* EXIT TO *RFC*.
* (B4) = 0.
*
* CALLS ASN.
.A IFGE IPTAR,1
TIN SA1 X5+TIOI FWA OF OLD IDENTIFIER
ZR X1,TIN2 IF OLD IDENTIFIER NOT SPECIFIED
SA4 X1+B5 OLD IDENTIFIER
* IF NO OLD IDENTIFIER ASSIGN A NEW IDENTIFIER, ELSE
* ASSIGN OLD IDENTIFIER TO TRANSACTION.
BX6 X4 SET NEW IDENTIFER .EQ. OLD IDENTIFER
TIN1 SA1 X5+TINI FWA OF NEW IDENTIFIER
SA6 X1+B5 RETURN NEW IDENTIFIER TO TASK
SA6 B5-NUAPL+TRID SET IDENTIFIER IN TASK SYSTEM AREA
* RETURN STATUS TO TASK.
SX6 TSNE RECOVERY STATUS NO ERRORS
SA1 X5+TIST FWA OF STATUS
SA6 X1+B5 RETURN STATUS TO TASK
SB4 B0 DO NOT UNLOCK RECOVERY FILE
EQ RFC RECOVERY FUNCTION COMPLETE
* ASSIGN A NEW SEQUENCE NUMBER.
TIN2 SA4 B5-NUAPL+CB2C GET TERMINAL ORDINAL
MX0 -CBTON MASK FOR TERMINAL ORDINAL
LX4 CBTON-1-CBTOS RIGHT JUSTIFY TERMINAL ORDINAL
BX1 -X0*X4
RJ ASN ASSIGN SEQUENCE NUMBER
EQ TIN1 CHANGE SEQUENCE NUMBER FOR TRANSACTION
.A ELSE
TIN SX6 TSRU RECOVERY STATUS RECOVERY UNAVAILABLE
SA4 X5+TIST FWA OF STATUS
SA6 X4+B5 RETURN STATUS
EQ RFC RECOVERY FUNCTION COMPLETE
.A ENDIF
.A IFGE IPTAR,1
TITLE RECOVERY SUPPORTING ROUTINES.
CFA SPACE 4,15
** CFA - COMPUTE FILE ADDRESS.
*
*
* ENTRY (X1) = MESSAGE SOURCE.
* (X2) = TERMINAL ORDINAL RELATIVE TO RECOVERY FILE.
* (X3) = INDEX, IF MESSAGE SOURCE EQUALS *MSRM*.
* (B4) = FWA OF RECOVERY FILE ENTRY.
*
* EXIT (X6) = FILE PRU ADDRESS.
*
* USES X - 0, 3, 4, 6, 7.
* A - 4.
CFA SUBR ENTRY/EXIT
* COMPUTE SIZE OF RECOVERY FILE IN PRUS PRECEDING THE
* DESIRED TERMINAL ORDINAL.
SX2 X2-1
ERRNZ TTNPN-TTNMN IF SIZE AND NUMBER ARE NOT EQUAL
SA4 B4+TTNPW GET NUMBER AND SIZE OF RECOVERY UNITS
MX0 -TTNPN MASK FOR SIZE AND NUMBER OF USER DATA
ERRNZ TTNPN-TTNMN IF SIZE AND NUMBER ARE NOT EQUAL
ERRNZ TTNPW-TTNMW IF NUMBER AND SIZE NOT IN SAME WORD
LX4 TTNPN-1-TTNPS RIGHT JUSTIFY NUMBER OF PRUS
BX7 -X0*X4 USER AREA SIZE IN PRUS
LX4 TTNMN-1-TTNMS-TTNPN+1+TTNPS
BX4 -X0*X4 NUMBER OF USER MESSAGES
SX4 X4+1 ADD ONE MESSAGE FOR *SECURE*
IX4 X7*X4 SIZE OF USER AREA FOR RECOVERY UNIT
SX6 TRUPL+MRIPL+X4 ADD STATUS AND TRANSACTION INPUT
IX6 X2*X6 TOTAL SIZE FOR RECOVERY UNITS
SX6 X6+TRHPL+1 ADD RECOVERY FILE HEADER
* (X6) CONTAINS THE PRU ADDRESS FOR RECOVERABLE
* *TSTAT/WSTAT* DATA.
* DETERMINE MESSAGE SOURCE AND COMPUTE RECOVERY FILE
* ADDRESS INTO TERMINAL ORDINAL-S RECOVERY UNIT.
SX0 X1-MSTM
ZR X0,CFA1 IF TRANSACTION MESSAGE
SX0 X1-MSSM
ZR X0,CFA2 IF *SECURE* MESSAGE
SX0 X1-MSST
ZR X0,CFAX IF *TSTAT/*WSTAT* MESSAGE
* COMPUTE ADDRESS FOR *RPUT* MESSAGE.
IX3 X3*X7 USER INDEX * USER DATA SIZE
SX7 X3+TRUPL+MRIPL ADD STATUS AND TRANSACTION SIZE
IX6 X7+X6 ADD SIZE FOR PREVIOUS RECOVERY UNITS
EQ CFAX RETURN
* COMPUTE ADDRESS FOR TRANSACTION MESSAGE.
CFA1 SX6 X6+TRUPL ADD STATUS AREA SIZE
EQ CFAX RETURN
* COMPUTE ADDRESS FOR *SECURE* MESSAGE.
CFA2 SX6 X6+TRUPL+MRIPL ADD STATUS AND TRANSACTION SIZE
EQ CFAX RETURN
.A ENDIF
CID SPACE 4,10
** CID - CLEAR *NEWID* IDENTIFIER.
*
* ENTRY (B2) = FWA OF TASK SYSTEM AREA.
* (B7) = SUBCP ADDRESS.
* (X3) = RETURN ADDRESS UPON COMPLETION.
*
* EXIT TO *WFP0* IF RECOVERY INSTALLED.
*
* USES X - 0, 1, 2, 3, 5, 6, 7.
* A - 1, 2, 3, 5, 6, 7.
* B - 3, 5, 6.
CID SUBR ENTRY/EXIT
.A IFEQ IPTAR,1 IF AUTOMATIC RECOVERY INSTALLED
BX7 X3 SAVE RETURN ADDRESS
SA1 CIDA PREPARE *WSTAT* REQUEST
SA2 A1+B1
SA7 B2+RWTS
SX7 SUAC+CBCH+5
BX6 X1
SB3 X7
SA6 B2+LRA1 FAKE SYSTEM REQUEST
SA6 B2+NUAPL+SUAC+CBCH *WSTAT* REQUEST BLOCK
SA7 A6+B1 ADDRESS OF STATUS
SA1 B7 PREPARE ENTRY CONDITIONS FOR *WFP0*
SB5 X1 TASK RA
SX6 X7+B1
SX7 X6+B1
SA6 A7+B1 ADDRESS OF *NEWID* PARAMETER
SA7 A6+B1 ADDRESS OF *NEWID* VALUE
BX6 X6-X6
SA6 A7+B1 PARAMETER TERMINATION WORD
SA7 B5+B3 STATUS
BX7 X2 *NEWID*
SA7 A7+B1
SA6 A7+1
MX0 -SCFLN
SA3 B2+CB2C GET TERMINAL ORDINAL
LX1 SCFLN-1-SCFLS
LX3 CBTON-1-CBTOS
SA5 B2+LRA1 SYSTEM REQUEST
BX1 -X0*X1 TASK FL
SX7 X3
SB6 B1 NUMBER OF PARAMETERS REQUIRED
EQ WFP0 CLEAR *NEWID* ON *CRF*
CIDA VFD 24/3LCTI,18/RFWS,18/SUAC+CBCH+1
DATA 5HNEWID
.A ELSE
EQ CIDX RETURN
.A ENDIF
.A IFEQ IPTAR,1 IF AUTOMATIC RECOVERY INSTALLED
CMF SPACE 4,10
** CMF - CHECK MESSAGE FIT.
*
* ENTRY (B4) = FWA OF RECOVERY FILE.
* (X1) = USER MESSAGE LENGTH IN WORDS.
*
* EXIT (X6) = 0, IF MESSAGE FITS IN RECOVERY FILE.
* *TSMR*, IF MESSAGE DOES NOT FIT.
*
* USES X - 0, 2, 6.
* A - 2.
CMF SUBR ENTRY/EXIT
SX6 B0 INITIALIZE TO MESSAGE FITS
MX0 -TTNWN MASK FOR RECOVERY MESSAGE SIZE
SA2 B4+TTNWW RECOVERY MESSAGE SIZE IN WORDS
LX2 TTNWN-1-TTNWS RIGHT JUSTIFY RECOVERY MESSAGE SIZE
BX0 -X0*X2
IX0 X0-X1 RECOVERY FILE MESSAGE SIZE - USER SIZE
PL X0,CMFX IF USER MESSAGE FITS IN RECOVERY FILE
SX6 TSMR USER MESSAGE .GT. RECOVERY RECORD
EQ CMFX RETURN
CMU SPACE 4,10
** CMU - CHECK MESAGE UNITS.
*
* ENTRY (X1) = MESSAGE UNIT.
*
* EXIT (X6) = 0, IF MESSAGE UNIT VALID.
* *RSIU*, IF MESSAGE UNIT INCORRECT.
* (X4) = MESSAGE UNIT.
*
* USES X - 3, 4, 6.
CMU1 SX6 TSIL RECOVERY STATUS INCORRECT UNIT
CMU SUBR ENTRY/EXIT
SX6 B0+ INITIALIZE TO VALID UNIT
SX4 4 SET TO DISPLAY MESSAGE UNIT
* IF MESSAGE UNIT IS NOT SPECIFIED, USE DISPLAY CODE.
ZR X1,CMUX IF NO MESSAGE UNIT GIVEN
* MESSAGE UNIT MUST BE IN THE RANGE OF 2 - 4.
SX3 X1-5
PL X3,CMU1 IF MESSAGE UNIT TOO LARGE
SX3 X1-2
NG X2,CMU1 IF MESSAGE UNITS TOO SMALL
SX4 X1+
EQ CMUX RETURN
CRS SPACE 4,15
** CRS - CHECK RECOVERY STATUS.
*
* ENTRY (B4) = FWA OF COMMUNICATIONS RECOVERY FILE ENTRY.
*
* EXIT *TAF* ABORTS IF ERROR OCCURRED ON RECOVERY FILE.
*
* USES X - 0, 1, 4.
* A - 4.
* B - 2, 5.
*
* CALLS SNM.
*
* MACROS ABORT, MESSAGE.
CRS SUBR ENTRY/EXIT
* CHECK FOR RECOVERY FILE ERRORS.
SA4 B4+TTFTW FIRST WORD OF GET
MX0 -8
LX4 7-17 RIGHT JUSTIFY STATUS
BX1 -X0*X4
ZR X1,CRSX IF NO ERRORS, RETURN
* ABORT *TAF* ON RECOVERY FILE ERRORS.
MX0 42
LX4 59-59-7+17
BX1 X0*X4 FILE NAME
SB2 1RX REPLACEMENT CHARACTER IN MESSAGE
SB5 CRSA FWA OF MESSAGE
RJ SNM SET NAME IN MESSAGE
MESSAGE CRSA * CRF RECOVERY UNIT ERROR - XXXXXXX.*
ABORT
CRSA DATA C* CRF RECOVERY UNIT ERROR - XXXXXXX.*
CRU SPACE 4,15
** CRU - CHECK RECOVERY UNIT.
*
* ENTRY (X5) = FWA OF TASK REQUEST PARAMETERS.
* (B4) = FWA OF RECOVERY FILE ENTRY.
* (B5) = FWA OF TASK RA.
*
* EXIT (X3) = USER RECOVERY UNIT INDEX.
* (X6) = 0, IF NO ERRORS.
* *TSII*, IF INCORRECT INDEX.
*
* USES X - 0, 3, 4, 6.
* A - 3, 4.
CRU1 SX6 TSII INCORRECT INDEX
CRU SUBR ENTRY/EXIT
MX0 -TTNMN MASK OF NUMBER OF USER MESSAGES
BX6 X6-X6 NO ERROR
* THE TASK RECOVERY UNIT INDEX MUST -
* 1. NOT BE EQUAL TO ZERO
* 2. NOT BE LESS THAN ZERO
* 3. BE .LE. TO MAXIMUM NUMBER OF MESSAGES ALLOWED.
SA3 X5+RGIN FWA OF TASK RECOVERY UNIT INDEX
SA4 B4+TTNMW NUMBER OF USER MESSAGES
SA3 X3+B5 TASK RECOVERY UNIT INDEX
ZR X3,CRU1 IF INDEX ERROR
NG X3,CRU1 IF INDEX ERROR
LX4 TTNMN-1-TTNMS RIGHT JUSTIFY MAXIMUM MESSAGES
BX0 -X0*X4
IX0 X0-X3
NG X0,CRU1 IF MORE THAN MAXIMUM NUMBER OF MESSAGES
EQ CRUX RETURN WITH NO ERRORS
CTF SPACE 4,15
** CTF - CHECK TASK FIT.
*
* ENTRY (X1) = MESSAGE SIZE IN WORDS.
* (X2) = SUBCP.
* (X3) = FWA OF MESSAGE.
*
* EXIT (X6) = 0, IF MESSAGE FITS IN SUBCP FL.
* *RSMU*, IF MESSAGE DOES NOT FIT IN SUBCP FL.
*
* USES X - 0, 2, 6, 7.
* A - 2.
CTF SUBR ENTRY/EXIT
SX6 B0 INITIALIZE TO MESSAGE FITS IN SUBCP
LX2 SCPAL
TA2 X2-CPAL,VCPA GET SUBCP FL
LX2 SCFLN-1-SCFLS RIGHT JUSTIFY FL
ERRNZ SCFLN-18 IF NOT 18 BIT FIELD
SX0 X2 FL
IX7 X1+X3 END OF MESSAGE IN SUBCP
IX7 X0-X7 FL - END OF MESSAGE
PL X7,CTFX IF MESSAGE FITS IN SUBCP
SX6 TSMU RECOVERY STATUS MESSAGE .GR. USER AREA
EQ CTFX RETURN
FMH SPACE 4,20
** FMH - FORMAT MESSAGE HEADER.
*
* ENTRY (X1) = MESSAGE LENGTH.
* (X3) = MESSAGE SOURCE.
* (X4) = MESSAGE UNIT.
* (X7) = APPLICATION BLOCK HEADER.
* (B6) = FWA OF MESSAGE HEADER.
*
* EXIT MESSAGE HEADER IN RECOVERY UNIT IS FORMATTED.
* (X1) = MESSAGE LENGTH ON ENTRY.
* (X4) = MESSAGE UNIT ON ENTRY.
*
* USES X - 3, 4, 6, 7.
* A - 7.
*
* MACROS CLOCK, DATE.
FMH SUBR ENTRY/EXIT
LX3 TRMSS-TRMSN+1 POSITION MESSAGE SOURCE
LX4 TRMUS-TRMUN+1 POSITION MESSAGE UNIT
SA7 B6+TRMHW SAVE APPLICATION BLOCK HEADER
BX6 X3+X4
LX4 59-59-TRMUS+TRMUN-1
ERRNZ TRMLS-TRMLN+1 IF MESSAGE LENGTH NOT RIGHT JUSTIFIED
BX7 X1+X6
SA7 B6+TRMSW
ERRNZ TRMSW-TRMLW IF SOURCE AND LENGTH NOT IN SAME WORD
ERRNZ TRMLW-TRMUW IF LENGTH AND UNITS NOT IN SAME WORD
DATE B6+TRMDW PUT DATE IN MESSAGE HEADER
CLOCK B6+TRMTW PUT TIME IN MESSAGE HEADER
EQ FMHX RETURN
GRP SPACE 4,20
** GRP - GET REQUEST PARAMETERS.
*
* ENTRY (X2) = FIRST WORD OF QUEUE ENTRY.
* (B3) = FWA OF QUEUE ENTRY RELATIVE TO SUBCP.
* (B5) = FWA OF QUEUE ENTRY RELATIVE TO *TAF*.
*
* EXIT (X5) = SYSTEM REQUEST.
* THE ADDRESS PORTION OF THE REQUEST IN
* BITS 17-0 IS RELATIVE TO THE RA OF *TAF*.
* (X6) = SUBCP.
* (X7) = TERMINAL ORDINAL.
* (X1) = TERMINAL STATUS TABLE ORDINAL.
* (B5) = RA OF SUBCP.
* (B6) = FWA OF QUEUE ENTRY RELATIVE TO *TAF*
*
* USES X - 0, 1, 2, 3, 5, 6, 7.
* A - 1, 3, 5.
* B - 5, 6.
GRP SUBR ENTRY/EXIT
MX0 -QWSPN MASK FOR SUBCP
LX2 QWSPN-1-QWSPS RIGHT JUSTIFY SUBCP
BX6 -X0*X2
LX6 SCPAL COMPUTE TASK SYSTEM AREA FWA
SB6 B5 FWA OF QUEUE ENTRY
SB5 B0 RA FOR NO SUBCP
ZR X6,GRP1 IF NOT SUBCP REQUEST
TA3 X6-CPAL,VCPA
ERRNZ SCRAS-17 IF RA NOT IN BITS 0-17
AX6 SCPAL
SB5 X3 SUBCP RA
GRP1 SA5 B6+QRECW RECOVERY REQUEST
SX3 B5 COMPUTE REQUEST ADDRESS RELATIVE TO *TAF*
IX5 X5+X3
SA1 B6+QRTOW GET TERMINAL FOR RECOVERY REQUEST
ERRNZ QRTOS-17 IF TERMINAL ORDINAL NOT IN 17-0
SX7 X1+
EQ GRPX RETURN
IRU SPACE 4,15
** IRU - INITIALIZE RECOVERY UNIT.
*
* ENTRY (X3) = RECOVERY UNIT NAME.
* (B4) = FWA OF RECOVERY UNIT ENTRY.
*
* EXIT RECOVERY UNIT INITIALIZED.
*
* USES X - 6, 7.
* A - 6, 7.
*
* MACROS CLOCK, DATE.
IRU SUBR ENTRY/EXIT
BX7 X3 PUT NAME IN RECOVERY UNIT
SX6 B0
SA7 B4+TTBFW+TRUNW
SA6 B4+TTBFW+TRCSW CLEAR STEP, TYPE AND DATA MANAGERS
SA6 B4+TTBFW+TRCNW CLEAR SEQUENCE NUMBER
SA6 B4+TTBFW+TROIW CLEAR OLDID
SA6 B4+TTBFW+TRNIW CLEAR NEWID
DATE B4+TTBFW+TRCDW PUT DATE IN RECOVERY UNIT
CLOCK B4+TTBFW+TRCTW PUT TIME IN RECOVERY UNIT
EQ IRUX RETURN
PSU SPACE 4,20
** PSU - PROCESS SYSTEM AND USER *RERUN* FUNCTION.
*
* ENTRY (X0) = FWA OF COMMUNICATION BLOCK.
* (X5) = FWA OF RECOVERY FILE ENTRY.
* (B4) = FWA OF RECOVERY FILE ENTRY.
* (B5) = SUBCP RA.
* (B6) = NUMBER OF C.B.-S TO REQUEST FOR RERUN.
* (RFBB) = SUBCP.
* (RFBD) = RECOVERY FILE TERMINAL ORDINAL.
* (RFBF) = FWA OF RECOVERY QUEUE ENTRY.
* EVCB = FWA OF COMMUNICATION BLOCK EVENT.
*
* EXIT TO *RFB*, IF WAITING FOR COMMUNICATION BLOCKS.
* (B4) = FWA OF RECOVERY FILE ENTRY.
* (X1) = 0, IF INPUT PROCESSED.
* .NE. ZERO OTHERWISE.
* (RFBB) = SUBCP.
*
* USES X - ALL.
* A - 1, 2, 3, 4, 6, 7.
* B - 3, 4, 6.
*
* CALLS CFA, CRS, FFCB, FIO, FNC, GRP, MVE=, PRIN, RLC,
* RSP, STF.
*
* MACROS QTWCALL.
PSU SUBR ENTRY/EXIT
SX0 B0+
RJ FFCB GET A COMMUNICATION BLOCK
ZR X0,PSU1 IF NO COMMUNICATION BLOCK
SX6 X0
SA1 X0
SA6 PSUF FWA OF CHAIN OF COMMUNICATION BLOCKS
SA6 B5-NUAPL+RERU
SA6 PSUB FWA OF CURRENT COMMUNICATION BLOCK
RJ FNC FIND AND CHAIN COMMUNICATION BLOCKS
ZR B6,PSU2 IF ALL COMMUNICATION BLOCKS AVAILABLE
* IF ALL COMMUNICATION BLOCKS ARE NOT AVAILABLE RELEASE
* RESERVED COMMUNICATION BLOCKS AND RELEASE RECOVERY FILE LOCK.
SA2 PSUF FWA OF CHAINED COMMUNICATION BLOCKS
RJ RLC RELEASE CHAINED COMMUNICATION BLOCKS
SX6 B0+ CLEAR EVCB
SA6 EVCB INDICATE NO C.B. AVAILABLE
PSU1 SA1 PSUA FWA OF RECOVERY FILE ENTRY
SA4 X1+TTLKW RECOVERY FILE LOCK
MX7 -60+TTLKN
ERRNZ TTLKS-59 IF LOCK FIELD NOT IN BIT 59
BX6 -X7*X4 CLEAR LOCK
ERRNZ TTEVW-TTLKW IF LOCK AND EVENT NOT IN SAME WORD
LX7 TTEVS-TTLKS
ERRNZ TTLKN-TTEVN IF EVENT AND LOCK FIELDS NOT EQUAL
BX6 X7+X6 SET RELEASE FILE EVENT
SA6 A4
* QUEUE WAITING FOR COMMUNICATION BLOCKS.
SA4 RFBF FWA OF RECOVERY QUEUE ENTRY
SB3 X4
SX1 EVCB FWA OF EVENT FOR COMMUNICATION BLOCKS
SA3 RFBB SUBCP
SX5 B0 NO TIME OUT ON EVENT
QTWCALL 59,QTEV WAIT FOR FREE COMMUNICATION BLOCK EVENT
RJ GRP GET REQUEST PARAMETERS
SX1 B5
IX5 X5-X1
EQ RFB RECOVERY BEGIN PROCESSING
* READ RECOVERY FILE TO OBTAIN TRANSACTION RECOVERY
* UNIT AND STATUS.
PSU2 SX1 MSST MESSAGE SOURCE IS *TSTAT*
SA3 PSUA FWA OF RECOVERY FILE ENTRY
SA2 RFBD TERMINAL IN RECOVERY FILE ORDINAL
SB4 X3
RJ CFA COMPUTE FILE ADDRESS FOR *TSTAT* DATA
SX5 B4+TTFTW FWA OF FET
SX2 TRUPL+MRIPL NUMBER OF PRUS TO READ
SX1 CIORD *CIO* READ
RJ FIO DO FILE INPUT/OUTPUT
* QUEUE REQUEST TO LET *TAF* DO OTHER WORK UNTIL
* INPUT IS COMPLETE.
SX1 B4+TTFTW FWA OF INPUT COMPLETE EVENT
SA3 RFBB SUBCP
SX5 B0 NO TIME OUT ON EVENT
SA4 RFBF FWA OF RECOVERY QUEUE ENTRY
SB3 X4
QTWCALL 0,QTEV WAIT FOR INPUT TO COMPLETE
RJ GRP GET REQUEST PARAMETERS AFTER WAIT
SA7 RFBA SAVE TERMINAL ORDINAL
SA6 RFBB SAVE SUBCP
SX7 B3+ SAVE FWA OF QUEUE ENTRY
SA7 RFBF
RJ STF SEARCH TERMINAL FILE FOR TERMINAL ORDINAL
SX7 X3+
SA7 PSUG RECOVERY FILE TERMINAL ORDINAL
RJ CRS CHECK RECOVERY STATUS FOR ERRORS
* IF TRANSACTION IS NOT RECOVERABLE RETURN TRANSACTION
* IS NOT RECOVERABLE STATUS TO TASK.
SX6 B4+
SA6 PSUA FWA OF RECOVERY FILE ENTRY
SA1 B4+TTBFW+TRCSW TRANSACTION *STEP*
MX0 -TRCSN
ERRNZ TRCSS-TRCSN+1 IF *STEP* NOT RIGHT JUSTIFIED
BX2 -X0*X1 *STEP*
SX6 TSNO RECOVERY STATUS NOT RERUNNABLE
SX0 X2-CSNR
ZR X0,PSU8 IF TRANSACTION NOT RERUNNABLE
SX0 X2-CSCE
ZR X0,PSU8 IF CEASE/JOB END
SX0 X2-CSTA
ZR X0,PSU8 IF TRANSACTION ABORTED
SX0 X2-CSTN
ZR X0,PSU8 IF TRANSACTION NO LONGER RERUNNABLE
* MOVE TRANSACTION INPUT FROM RECOVERY FILE TO COMMUNICATION
* BLOCKS.
SX7 B4+TTBFW+TRUWL+TRMWL FWA OF INPUT IN RECOVERY FILE
SA7 PSUC
SA1 B4+TTBFW+TRUWL+TRMLW WORDS OF TRANSACTION INPUT
ERRNZ TRMLS-TRMLN+1 IF FIELD NOT RIGHT JUSTIFIED
MX0 -TRMLN
BX4 -X0*X1
ZR X4,PSU8 IF NO TRANSACTION INPUT
SX2 X7
IX6 X2+X4 END OF INPUT IN RECOVERY BUFFER
SA6 PSUD
SA1 B5-NUAPL+RERU RESTORE C.B. ADDRESS
BX7 X1
SA7 PSUB
PSU3 SX1 CMBL LENGTH TO MOVE IN WORDS
SA3 PSUB FWA OF COMMUNICATION BLOCK
SA4 X3 SAVE C.B. LINK
SX7 X4
SA7 PSUF
RJ MVE= MOVE INPUT TO COMMUNICATION BLOCK
* UPDATE TRANSACTION SEQUENCE NUMBER IN COMMUNICATION BLOCK.
SA1 PSUB FWA OF COMMUNICATION BLOCK
SA4 X1+CBTSW SEQUENCE NUMBER IN SYSTEM HEADER
SA2 B5-NUAPL+TRID CURRENT IDENTIFIER
MX0 60-CBTSN-CBNCN
BX7 X0*X4 CLEAR SEQUENCE NUMBER AND C.B. LINK
LX2 CBTSS-CBTSN+1
BX7 X7+X2 INSERT NEW SEQUENCE NUMBER
SA3 X1+CMBHL+TRSQ-SUAC
SA7 A4 UPDATE FWA OF C.B.
BX6 X0*X3
BX6 X6+X2
SX0 TSTLLE LENGTH OF TST ENTRY
SA6 A3
* INDICATE TRANSACTION IS BEING RESTARTED.
SA2 X1+CBTRW RESTART ATTRIBUTE
MX6 CBTRN
LX6 CBTRS-59
BX7 X2+X6
LX6 CBLCS-59-CBTRS+59
BX7 X6+X7 SET INPUT LOGGED COMPLETE
SA7 A2
* UPDATE TERMINAL ORDINAL AND TERMINAL STATUS TABLE
* ADDRESS IN COMMUNICATION BLOCK.
SA2 RFBA TST ORDINAL
IX3 X0*X2
TX4 X3,VTST FWA OF TERMINAL STATUS TABLE ENTRY
LX2 CBTOS-CBTON+1 POSITION TERMINAL ORDINAL
LX4 CBTAS-CBTAN+1 POSITION TERMINAL ADDRESS
BX2 X2+X4
SA1 PSUB
SA3 X1+CBFWW FWA OF COMMUNICATION BLOCK
BX6 X2+X1
MX0 CBRSN+CBUSN READ AND UPDATE SECURITY
LX0 CBRSS-59
BX4 X0*X3 SAVE READ AND UPDATE SECURITY
BX6 X6+X4
SA6 A3
SA2 PSUC CURRENT ADDRESS IN RECOVERY BUFFER
SA3 PSUD ADDRESS OF EOI
SX7 X2+CMBL NEXT ADDRESS IN RECOVERY BUFFER
IX6 X3-X7
SA7 A2
SX2 X7
SA3 PSUF FWA OF CHAINED COMMUNICATION BLOCKS
SX7 X3
SA7 PSUB CURRENT COMMUNICATION BLOCK
ZR X6,PSU4 IF NO MORE RECOVERY INPUT
SA4 A4 GET FWA OF LAST C.B.
BX7 X4+X7 ADD C.B. LINK
SA7 A4+
EQ PSU3 CONTINUE TRANSFER INPUT TO NEXT C.B.
* RETURN APPLICATION BLOCK HEADER TO NETWORK COMMUNICATION
* TABLE.
PSU4 MX0 -TSCNN GET ABH
ERRNZ TSARW-TSCNW IF FIELDS IN DIFFERENT WORDS
LX6 TSCNN-1-TSCNS RIGHT JUSTIFY CONNECTION NUMBER
BX2 -X0*X6
ZR X2,PSU5 IF NO NETWORK CONNECTION
SX3 TNCTL NETWORK COMMUNICATION TABLE ENTRY LENGTH
IX4 X2*X3
SX4 X4+TNAHW
TX3 X4,VNCT
SA1 B4+TTBFW+TRUWL+TRMHW APPLICATION BLOCK HEADER
BX7 X1
SA7 X3 APPLICATION BLOCK HEADER
PSU5 BSS 0
SX6 TSNE RECOVERY STATUS NO ERRORS
* RETURN STATUS TO TASK AND RELEASE UNUSED COMMUNICATION
* BLOCKS.
SA1 X5+REST FWA OF STATUS
SA6 X1+B5 RETURN STATUS
SA2 PSUF FWA OF CHAIN OF COMMUNICATION BLOCKS
RJ RLC RELEASE COMMUNICATION BLOCKS
* UPDATE THE TRANSACTION SEQUENCE NUMBER IN THE *CRF*.
SA2 B5-NUAPL+TRID CURRENT SEQUENCE NUMBER
SA4 PSUA FWA OF RECOVERY FILE ENTRY
BX7 X2
SB4 X4
SA7 B4+TTBFW+TRCNW
SX1 MSST MESSAGE SOURCE IS STATUS
SA2 PSUG TERMINAL ORDINAL IN RECOVERY FILE
RJ CFA COMPUTE FILE ADDRESS
SX5 B4+TTFTW FWA OF FET
SX2 TRUPL LENGTH TO WRITE IN PRU-S
SX1 CIORW *CIO* REWRITE
RJ FIO DO FILE INPUT/OUPUT
* QUEUE REQUEST TO LET *TAF* DO OTHER WORK UNTIL
* OUTPUT IS COMPLETE.
SX1 B4+TTFTW FWA OF INPUT COMPLETE EVENT
SA3 RFBB SUBCP
SX5 B0 NO TIME OUT ON EVENT
SA4 RFBF FWA OF RECOVERY QUEUE ENTRY
SB3 X4
QTWCALL 0,QTEV WAIT FOR INPUT TO COMPLETE
RJ GRP GET REQUEST PARAMETERS AFTER WAIT
SA7 RFBA SAVE TERMINAL ORDINAL
SA6 RFBB SAVE SUBCP
SX7 B3+ SAVE FWA OF QUEUE ENTRY
SA7 RFBF
RJ STF SEARCH TERMINAL FILE FOR TERMINAL ORDINAL
RJ CRS CHECK RECOVERY STATUS FOR ERRORS
SX6 B4+
SA6 PSUA FWA OF RECOVERY FILE ENTRY
* ON *SRERUN*, SET USER ACTIVE IN TST.
SA1 B5-NUAPL+LRA1 CHECK LAST SYSTEM REQUEST
SX2 RFSR *SRERUN* FUNCTION CODE
LX1 17-35
MX0 -18
BX2 X2-X1
BX2 -X0*X2
NZ X2,PSU5.1 IF NOT *SRERUN*
SA3 RFBA TERMINAL ORDINAL IN TST
R= X0,TSTLLE *TST* ENTRY LENGTH
IX3 X0*X3
MX0 TSAUN
LX0 TSAUS-59
TA4 X3+TSAUW,VTST GET USER ACTIVE WORD OF TST ENTRY
BX6 X0+X4
SA6 A4 SET USER ACTIVE
* UNLOCK RECOVERY FILE BECAUSE TRANSACTION MAY HAVE TO WAIT
* FOR *ITASK*.
PSU5.1 SA1 PSUA FWA OF RECOVERY ENTRY
SA4 X1+TTLKW LOCK STATUS
ERRNZ TTLKS-59 IF LOCK NOT IN BIT 59
MX7 -60+TTLKN
BX6 -X7*X4 UNLOCK RECOVERY FILE
LX7 TTEVS-59
ERRNZ TTLKN-TTEVN IF EVENT AND LOCK FIELDS NOT EQUAL
BX6 X7+X6 SET FILE RELEASE EVENT
ERRNZ TTLKW-TTEVW IF LOCK AND LOCK EVENT NOT IN SAME WORD
SA6 A4
* SCHEDULE TRANSACTION.
PSU6 SA2 PRINA PROCESS INPUT AVAVALABLE STATUS
NZ X2,PSU7 IF INPUT CANNOT BE PROCESSED
RJ RSP RESTORE SUBCP REGISTERS
MX7 1 NO COMMUNICATION BLOCK REQUIRED
LX7 55-59
SA2 B5-NUAPL+RERU FWA OF COMMUNICATION BLOCK
SX0 X2
SA7 PSUE INPUT WORD FOR *PRIN*
SA4 A7
RJ PRIN PROCESS INPUT
SB4 B0 DO NOT UNLOCK RECOVERY FILE
SX6 B0 CLEAR *ITASK* BUSY STATUS
SA1 PRINA PROCESS INPUT STATUS
ZR X1,PSUX IF INPUT PROCESSED
SA6 A1+
* QUEUE COMMUNICATION BLOCK UNTIL *ITASK-S* QUEUE IS NOT FULL.
PSU7 SX1 EVIT FWA OF EVENT FOR *ITASK*
SA4 RFBF FWA OF RECOVERY QUEUE ENTRY
SX5 B0 NO TIME OUT ON EVENT
SB3 X4
SA3 RFBB SUBCP
QTWCALL 59,QTEV WAIT FOR *ITASK*
RJ GRP GET REQUEST PARAMETERS
SA6 RFBB SAVE SUBCP
SX7 B3 SAVE FWA OF QUEUE ENTRY
SA7 RFBF
EQ PSU6 SCHEDULE TRANSACTION
* NOT ABLE TO RERUN, RETURN STATUS.
PSU8 SA1 X5+REST FWA OF STATUS
SA6 X1+B5 RETURN STATUS
SA2 PSUF FWA OF CHAIN OF COMMUNICATION BLOCKS
RJ RLC RELEASE COMMUNICATION BLOCKS
SA1 PSUA FWA OF RECOVERY FILE ENTRY
SB4 X1
EQ RFC RECOVERY FUNCTION COMPLETE
PSUA BSS 1 FWA OF RECOVERY FILE ENTRY
PSUB BSS 1 CURRENT COMMUNICATION BLOCK FWA
PSUC BSS 1 CURRENT FWA IN RECOVERY FILE BUFFER
PSUD BSS 1 LWA TO PROCESS IN RECOVERY FILE BUFFER
PSUE BSS 1 *PRIN* INPUT WORD
PSUF BSS 1 FWA OF CHAIN OF COMMUNICATION BLOCKS
PSUG BSS 1 TERMINAL ORDINAL IN RECOVERY FILE
REM SPACE 4,15
** REM - RESTORE END OF MESSAGE.
*
* ENTRY (X1) = APPLICATION BLOCK HEADER.
* (X2) = FIRST WORD OF *SEND* REQUEST.
* (B5) = SUBCP RA.
* (SML1) = LAST WORD OF MESSAGE.
* (SML2) = LAST WORD PLUS ONE OF MESSAGE.
*
* EXIT TASK AREA AT END OF MESSAGE RESTORED.
*
* USES X - 0, 1, 3, 4, 7.
* A - 3, 7.
REM SUBR ENTRY/EXIT
* IF MESSAGE USES DISPLAY MESSAGE UNITS, RESTORE CHARACTERS
* IN TASK USED BY END OF MESSAGE LINE BYTE. THE CHARACTERS
* MUST BE RESTORED TO KEEP THE TASK REUSEABLE.
MX0 -AHCTN MASK FOR MESSAGE UNIT
LX1 AHCTN-1-AHCTS RIGHT JUSTIFY MESSAGE UNIT
BX1 -X0*X1 MESSAGE UNIT
LX2 17-47 FWA OF MESSAGE
SX0 X1-4
NZ X0,REMX IF NOT DISPLAY MESSAGE, RETURN
SA3 B5-NUAPL+SML3 LENGTH OF MESSAGE IN WORDS
SX4 X3-1 LENGTH OF MESSAGE MINUS ONE
SX0 X2
IX4 X2+X4 LWA OF MESSAGE
SA3 B5-NUAPL+SML1
BX7 X3
SA7 X4+B5
SA3 B5-NUAPL+SML2
BX7 X3
SA7 A7+B1
EQ REMX RETURN
SEL SPACE 4,15
** SEL - SET END OF LINE.
*
* ENTRY (X3) = FWA OF MESSAGE.
* (X1) = LENGTH OF MESSAGE IN WORDS.
* (B5) = SUBCP RA.
* (B6) = REMAINDER OF MESSAGE IN BITS OVER LAST WORD.
*
* EXIT (X1) = NEW LENGTH OF MESSAGE INCLUDING END OF LINE.
* (SML1) = LAST WORD OF MESSAGE.
* (SML2) = LAST WORD OF MESSAGE PLUS ONE.
*
* USES X - 0, 1, 2, 3, 6.
* A - 2, 3, 6.
* B - 6.
SEL SUBR ENTRY/EXIT
IX3 X1+X3 FWA OF END OF MESSAGE PLUS ONE
SA3 X3-1 SAVE LAST WORD OF MESSAGE
SA2 A3+B1 SAVE LAST WORD OF MESSAGE PLUS ONE
BX6 X3
SA6 B5-NUAPL+SML1
BX6 X2
SA6 B5-NUAPL+SML2
SX6 X1+
SA6 B5-NUAPL+SML3 SAVE MESSAGE LENGTH IN WORDS
ZR B6,SEL1 IF MESSAGE ENDS OF WORD BOUNDARY
* FORM END OF LINE IN LAST WORD OF MESSAGE.
* FOR MESSAGES IN DISPLAY CODE THE MESSAGE MUST HAVE AN
* AN END OF LINE BYTE OF 12 TO 60 BITS OF ZEROS.
MX0 1
SB6 B6-B1
AX0 B6
BX6 X0*X3 ZERO UNUSED MESSAGE BITS
SA6 A3
BX3 X6
* IF LAST WORD OF MESSAGE DOES NOT CONTAIN 12 BITS OF ZERO,
* ADD ONE WORD OF ZEROS TO FORM COMPLETE END OF LINE BYTE.
SEL1 MX0 -12
BX6 -X0*X3
ZR X6,SELX IF LAST WORD HAS END OF LINE
SX6 B0
SX1 X1+B1 ADD ONE TO LENGTH OF MESSAGE
SA6 A2+
EQ SELX RETURN
.A ENDIF
WTS SPACE 4,20
** WTS - WRITE TERMINATION *STEP* TO *CRF*.
*
* ENTRY - (X5) = VALUE OF *STEP* TO WRITE.
* (X3) = RETURN ADDRESS UPON COMPLETION.
* (B7) = SUBCP ADDRESS
* (B2) = TASK SYSTEM AREA ADDRESS
*
* EXIT TO *WFP0*.
*
* USES X - 0, 1, 2, 3, 5, 6, 7.
* A - 1, 2, 3, 5, 6, 7.
* B - 3, 5, 6.
WTS SUBR ENTRY/EXIT
.B IFGE IPTAR,1
BX7 X3 SAVE RETURN ADDRESS
SA1 WTSA PREPARE *WSTAT* REQUEST
SA2 A1+B1
SA7 B2+RWTS
BX6 X1
SX7 SUAC+CBCH+5
SB3 X7+
SA6 B2+LRA1 FAKE SYSTEM REQUEST
SA6 B2+NUAPL+SUAC+CBCH *WSTAT* REQUEST BLOCK
SA7 A6+B1 ADDRESS OF STATUS
SA1 B7 PREPARE ENTRY CONDITIONS FOR *WFP0*
SB5 X1 TASK RA
SX6 X7+B1
SX7 X6+B1
SA6 A7+B1 ADDRESS OF *STEP* PARAMETER
SA7 A6+B1 ADDRESS OF *STEP* VALUE
BX6 X6-X6
SA6 A7+B1 PARAMETER TERMINATION WORD
SA7 B5+B3 STATUS
BX6 X2 *STEP*
BX7 X5
SA6 A7+B1
SA7 A6+B1
MX0 -SCFLN
SA3 B2+CB2C GET TERMINAL ORDINAL
LX1 SCFLN-1-SCFLS
LX3 CBTON-1-CBTOS
SA5 B2+LRA1 SYSTEM REQUEST
BX1 -X0*X1 TASK FL
SX7 X3
SB6 B1 NUMBER OF PARAMETERS REQUIRED
EQ WFP0 WRITE *STEP* TO *CRF*
WTSA VFD 24/3LCTI,18/RFWS,18/SUAC+CBCH+1
DATA 10HSTEP
.B ELSE
EQ WTSX RETURN
.B ENDIF
STF SPACE 4,15
** STF - SEARCH TERMINAL FILE TABLE.
*
* ENTRY (X1) = TERMINAL STATUS TABLE TERMINAL ORDINAL.
*
* EXIT (X2) = TERMINAL FILE ENTRY.
* (B4) = FWA OF RECOVERY FILE ENTRY.
* = 0, IF NO ENTRY FOUND.
* (X3) = TERMINAL ORDINAL IN RECOVERY FILE.
*
* USES X - 2, 3, 6, 7.
* A - 2.
* B - 4, 6.
STF2 LX2 59-59-TFHON+1+TFHOS
SB4 X2+ FWA OF RECOVERY FILE ENTRY
ERRNZ TFTPS-17 IF FWA OF RECOVERY FILE ENTRY NOT IN 17-0
STF SUBR ENTRY/EXIT
SX3 B0 STARTING ORDINAL WITH RESPECT TO FILE
MX6 -TFHON MASK FOR TERMINAL ORDINAL
SB4 B0+ SET ENTRY NOT FOUND
SB6 TTFTL-1 END OF ENTRIES
TA2 -TTFTL,VTST FIRST TERMINAL FILE ENTRY
STF1 ZR X2,STFX IF ENTRY NOT FOUND
LX2 TFHON-1-TFHOS RIGHT JUSTIFY HIGHEST ORDINAL
BX7 -X6*X2 HIGHEST ORDINAL
IX6 X7-X1
IX3 X1-X3 TERMINAL ORDINAL WITH RESPECT TO FILE
PL X6,STF2 IF ENTRY CONTAINS TERMINAL
LE B6,B0,STFX IF ENTRY NOT FOUND
SA2 A2+TTFTE GET NEXT ENTRY
SX3 X7+ SAVE LOWEST ORDINAL MINUS 1 OF NEXT FILE
SB6 B6-B1
MX6 -TFHON
EQ STF1 CHECK NEXT TERMINAL FILE ENTRY
ENDR EQU * END OF SYSTEM REQUEST PROCESSORS
TITLE BATCH CONCURRENCY SUPPORTING ROUTINES.
BAM SPACE 4,15
** BAM - ENTER BATCH *CRM* REQUEST IN *AMI* QUEUE.
*
* ENTRY (X4) = COMPLETION ADDRESS.
* (X5) = *TAF/CRM* FUNCTION CODE.
* (B3) = *TAF* STORAGE AREA ADDRESS.
* (B6) = *BCT* ADDRESS.
*
* EXIT (X7) = 0, IF REQUEST NOT ACCEPTED.
* (X7) = 1, IF REQUEST ENTERED IN QUEUE.
* (DTIME) = 0, TO INSURE *AMI* WILL BE CALLED.
*
* USES X - ALL.
* A - 1, 3, 5, 7.
* B - 3, 4, 5.
*
* CALLS PDIF, QTW.
BAM SUBR ENTRY/EXIT
* BUILD *AAM* INPUT QUEUE ENTRY.
SA1 B6+BCSNW *BCT* SUBCP WORD
LX1 BCSNN-1-BCSNS
MX0 -BCSNN
BX1 -X0*X1 SUBCP NUMBER
SA3 B6+BCTSW TRANSACTION SEQUENCE NUMBER
MX0 TFIDN+TFTSN
BX6 X0*X3
LX5 30-6 POSITION FUNCTION CODE
BX6 X6+X5 ADD TO REQUEST
LX1 23-5 POSITION SUBCP NUMBER
BX6 X6+X1 ADD TO REQUEST
SX1 BSAR
BX6 X6+X1 ADD REQUEST ADDRESS
SX7 B0
SA5 AAMA *AAM* STATUS WORD
LX5 17-35 POSITION TRANSACTION COUNT
SB3 X5+
TB5 0,VAAQ *AAM* INPUT QUEUE FET ADDRESS
SA1 B6+BCAMW *AAM* STATUS FLAG
LX1 59-BCAMS
MX0 1 SET *AAM* STATUS FLAG
NG X1,BAM1 IF *AAM* PREVIOUSLY CALLED
ZR B3,BAMX IF *AAM* CANNOT ACCEPT CALLS
BX7 X0+X1
LX7 BCAMS-59
SX1 B1+
SA7 A1+
IX5 X5-X1 DECREMENT *AAM* TRANSACTION COUNT
* IF *AAM* CAN ACCEPT MORE TRANSACTIONS, PUT REQUEST IN QUEUE.
BAM1 LX5 18
RJ PDIF PUT ENTRY IN INPUT QUEUE
ZR X7,BAMX IF INPUT QUEUE FULL
SX1 B1
IX7 X5+X1 ADVANCE OUTSTANDING REQUESTS
SA7 A5
BX7 X7-X7
SA7 DTIME INSURE *AMI* WILL BE CALLED
* QUEUE *BATCH/CRM* REQUEST UNTIL *AAM* REQUEST COMPLETE.
SA1 B6+BCSAW
ERRNZ BCSAS-17 TEMPORARY STORAGE ADDRESS NOT IN BIT 17
SB3 X1 *TAF* STORAGE AREA ADDRESS
BX3 X3-X3 SUBCP NUMBER
SX1 B6+BCSFW
SX2 59 SHIFT FOR COMPLETE BIT
SX6 X4 COMPLETION ADDRESS
SX4 QTEV EVENT TYPE
SB5 B0 NOT A TIMED EVENT
SB4 B0 QUEUE AT END OF QUEUE
BX5 X5-X5 NOT A TIMED EVENT
RJ QTW QUEUE REQUEST
SX7 B1 INDICATE REQUEST ACCEPTED
EQ BAMX RETURN
BRC SPACE 4,45
** BRC BATCH REQUEST CONTINUATION.
*
* *BRC* IS CALLED WHENEVER A BATCH CONCURRENCY REQUEST
* IS DETECTED IN THE SUBSYSTEM REQUEST BUFFER OR PERIODICALLY
* FROM THE TASK SWITCHING ROUTINE *TSSC*. *BRC* ATTEMPTS TO
* COMPLETE ALL REQUESTS IN THE BATCH CONCURRENCY TABLE, *BCT*,
* BEFORE EXITING TO *TSSC*. THE STEPS PERFORMED ARE:
*
* 1. SEARCH *BCT* FOR ACTIVE ENTRIES. IF NONE, EXIT TO *TSSC*.
*
* 2. BRANCH TO SUBPROCESSOR ACCORDING TO FUNCTION LIST.
*
* 3. VALIDATE BATCH JOB CAN ACCESS *TAF/CRM*.
*
* 4. REQUEST A SUBCP AREA FOR REQUEST. IF RECOVERY IS
* REQUIRED ISSUE A *RSTDBI* REQUEST.
*
* 5. FOR WRITE REQUESTS GET RECORD FROM *UCP*.
*
* 6. CREATE *CRM* REQUEST IN SUBCP AREA AND QUEUE TO
* *AAM* INPUT QUEUE.
*
* 7. FOR READ REQUESTS RETURN RECORD TO *UCP*.
*
* 8. FOR DBCOMIT REQUESTS WRITE RECOVERY INFORMATION
* TO *CRF*.
*
* 9. RETURN REQUEST STATUS TO *UCP* AND ALLOW *UCP*
* TO EXECUTE.
*
* 10. CLEAR LONG TERM CONNECT WITH *UCP*, RELEASE
* SUBCP, AND RELEASE *BCT* ENTRY.
*
* ENTRY (B6) = 0, IF ENTERED FROM *TSSC*.
* (B6) = *BCT* ADDRESS IF ENTERED FROM *PBC*.
* (VBCT) = *BCT* ADDRESS.
* (VNBCT) = NUMBER OF *BCT* ENTRIES.
*
* EXIT TO *TSSC*.
*
* USES X - ALL.
* A - ALL.
* B - 2, 3, 4, 5, 6.
*
* CALLS ASN, BAM, GRA, GTS, MVE=, QTW, RTS, SCC,
* SFL, SFR, VBA.
BRC TX6 0,VBCT *BCT* ADDRESS
SX7 B0+
SA6 BRCA INITIALIZE SEARCH LOOP FWA
SA7 BRCB NUMBER OF *BCT* ENTRIES PROCESSED
NZ B6,BRC2 IF ENTERED FROM PBC
BRC1 SA1 BRCA NEXT *BCT* ENTRY ADDRESS
SA2 BRCB NUMBER OF ENTRIES PROCESSED
SB6 X1
SA3 VNBCT
SX3 X3
IX3 X2-X3
PL X3,TSSC IF NO MORE ACTIVITY TO PROCESS
SX6 X2+B1
SA6 BRCB INCREMENT NUMBER OF ENTRIES
SX2 BCTL *BCT* ENTRY LENGTH
SX6 X2+B6
SA6 BRCA NEXT *BCT* ENTRY ADDRESS
SA1 B6
ERRNZ BCRAW IF REQUEST ACTIVE NOT IN WORD ZERO
LX1 59-BCRAS
PL X1,BRC1 IF REQUEST NOT ACTIVE
MX0 BCCNN CONSTRAINT BIT
SA1 B6+BCCNW
LX1 59-BCCNS
PL X1,BRC1 IF REQUEST NOT CONSTRAINED
BX6 -X0*X1 CLEAR CONSTRAINT BIT
LX6 -59+BCCNS REPOSITION CONSTRAINT WORD
SA6 A1 STORE IN *BCT*
MX0 -BCCTN
LX6 BCCTN-1-BCCTS
BX7 -X0*X6 CONSTRAINT CODE
BRC2 SA5 B6+BCFLW
NX4,B3 X5 EXTRACT FUNCTION FROM LIST
SX4 B3
LX4 -1
SB3 X4 BRANCH TABLE INDEX
SA0 B6
SX6 B6 SAVE *BCT* ENTRY ADDRESS
SA6 BRCF
SA1 B6+BCSAW
ERRNZ BCSAS-17 TEMPORARY STORAGE ADDRESS NOT IN BIT 17
SB5 X1+ *TAF* STORAGE AREA ADDRESS
SB6 B6+BCSFW SFCALL AREA ADDRESS
JP B3+BRCJT BRANCH TO PROCESS FUNCTION
* JUMP TABLE TO HANDLE *BCT* FUNCTION LIST.
BRCJT PL X4,BRC3 IF VALIDATE BATCH ACCESS
EQ BRC9 REQUEST SUBCONTROL POINT
PL X4,BRC13 IF READ RECORD FROM *UCP*
EQ BRC14 QUEUE REQUEST TO *AAM* INPUT QUEUE
PL X4,BRC21 IF WRITE RECORD TO *UCP*
EQ BRC22 WRITE *CRF* RECOVERY FILE
PL X4,BRC25 IF COMPLETE TASK
EQ BRC28 CLEAR LONG TERM CONNECT
PL X4,BRC34 IF REQUEST COMPLETE
RJ EXIT FATAL ERROR
* VALIDATE BATCH ACCESS.
BRC3 RJ GTS GET TEMPORARY STORAGE
SA4 BRCF
SB6 X4+ RESTORE *BCT* ADDRESS
NZ B3,BRC4 IF STORAGE AVAILABLE
SX1 BCNTS WAITING FOR STORAGE CONSTRAINT CODE
RJ SCC SET REQUEST CONSTRAINED
EQ BRC1 CHECK NEXT ENTRY
BRC4 SA1 B6+BCSAW *BCT* STORAGE AREA ADDRESS
MX0 -BCSAN
BX6 X0*X1
ERRNZ BCSAN-18 TEMPORARY STORAGE ADDRESS NOT 18 BITS
SX1 B3 SAVE *TAF* STORAGE AREA ADDRESS
ERRNZ BCSAS-17 TEMPORARY STORAGE ADDRESS NOT IN BIT 17
BX6 X6+X1
SA6 A1
SB5 B3
SB6 B6+BCSFW
* GET USER NAME OF BATCH JOB.
BRC5 SX6 B6+BCKAW-BCSFW USE KEYAREA FOR JOB ID
SX1 /COMSSCP/CPID SFCALL FUNCTION CODE
LX6 6 POSITION *SCP* ADDRESS
BX6 X6+X1
SA6 B6+ SET SFCALL PARAMETERS IN *BCT*
SX2 BRC5 RETRY ADDRESS IF JOB SWAPPED OUT
RJ SFR ISSUE SF.CPID FUNCTION
* CHECK USER NAME AGAINST *TAF* VALIDATION RULES.
SB6 B6+BCKAW-BCSFW RECOVERY REQUEST AREA
SA4 B6+1 USER NAME FROM CPID FUNCTION
SX1 TYRM BATCH/CRM VALIDATION
SX5 BRC6 RETURN ADDRESS
EQ VBA VALIDATE BATCH ACCESS
BRC6 SA1 B6+BRTAW *TST* ADDRESS
SB6 B6-BCKAW+BCSFW SFCALL AREA ADDRESS
ERRNZ BRTAS-17 *TST* ADDRESS DOES NOT START IN BIT 17
SX6 X1
SA1 B6+BCTAW-BCSFW
MX0 60-BCSPN-BCTAN
BX1 X0*X1 CLEAR *TST* AND SUBCP ADDRESSES
LX6 BCTAS-BCTAN+1 POSITION *TST* ADDRESS
BX6 X6+X1
SA6 A1 STORE *TST* ADDRESS IN *BCT*
SX1 X3-JSRC
ZR X1,BRC8 IF ACCESS VALID
SB6 B6-BCSFW *BCT* ADDRESS
* RETURN ERROR STATUS.
BRC7 SA1 B6+BCUPW USER ERROR STATUS WORD
MX0 48
BX6 X0*X1
BX6 X6+X3
SA6 A1 SET ERROR STATUS IN USER PARAMETERS
MX0 BCERN
LX0 BCERS-59
SA1 B6+BCERW VALIDATION ERROR FLAG
BX6 X1+X0
SA6 A1 SET ERROR FLAG IN *BCT*
SX2 CTFN+CLFN+ENFN COMPLETE TASK AND CLEAR CONNECT
RJ SFL SET BITS IN FUNCTION LIST
EQ BRC2 PROCESS NEXT FUNCTION
* USER IS VALID. SET LONG TERM CONNECTION.
BRC8 SX6 /COMSSCP/SLTC SET LONG TERM CONNECT FUNCTION
SA6 B6+
SX2 BRC8 RETRY ADDRESS
RJ SFR ISSUE LONG TERM CONNECT FUNCTION
SX3 X5 RETURN CODE
SB6 B6-BCSFW *BCT* ADDRESS
SX4 B6 SAVE *BCT* ADDRESS
NZ X5,BRC7 IF SFCALL ERROR
SA2 B6+BCKAW+BRTOW GET *TST* ORDINAL
MX0 -BRTON
LX2 BRTON-BRTOS-1
BX1 -X0*X2
RJ ASN ASSIGN SEQUENCE NUMBER
SB6 X4 RESTORE *BCT* ADDRESS
LX6 BCTSS-BCTSN+1 POSITION SEQUENCE NUMBER
SA6 B6+BCTSW SET SEQUENCE NUMBER IN *BCT*
SX6 VLFN VALIDATE ACCESS FUNCTION
EQ BRC35 FUNCTION COMPLETE
* REQUEST SUBCONTROL POINT.
BRC9 RJ RSP RESTORE SUBCP REGISTERS
SA1 VBCT BATCH SUBCP LENGTH
SX0 X1+
RJ RCP REQUEST SUBCP
SA1 BRCF
SB6 X1+ *BCT* ADDRESS
NZ X5,BRC10 IF SUBCP AVAILABLE
SX1 BCNSC WAITING FOR SUBCP
RJ SCC SET CONSTRAINT CODE IN *BCT*
EQ BRC1 CHECK NEXT *BCT* ENTRY
BRC10 SB5 X5+NUAPL RA OF SUBCP
MX0 SCBCN
LX0 SCBCS-59 INDICATE SUBCP FOR BATCH CONCURRENCY
SA1 B4
ERRNZ SCBCW BATCH CONCURRENCY FLAG NOT IN WORD ZERO
ERRNZ SCBCW IF BATCH FLAG NOT IN WORD ZERO
SX6 B6
SA6 X5+BCTA STORE *BCT* ADDRESS IN SYSTEM AREA
BX6 X1+X0
SA6 B4 SET BATCH CONCURRENCY BIT IN SUBCP
TX3 B4+CPAL,-VCPA COMPUTE SUBCP NUMBER
AX3 SCPAL
SX6 B4
SA1 B6 *BCT* FIRST WORD
ERRNZ BCSPW IF SUBCP ADDRESS NOT IN WORD ZERO
BX6 X1+X6 ADD SUBCP TABLE ADDRESS
SA6 B6 STORE IN *BCT*
SA1 B6+BCSNW
SB3 X1 *TAF* STORAGE AREA ADDRESS
ERRNZ BCSNS-53 SUBCP NUMBER DOES NOT START IN BIT 53
LX3 BCSNS-BCSNN+1 POSITION SUBCP NUMBER
BX6 X1+X3
SA6 A1 SAVE SUBCP NUMBER IN *BCT*
SA1 B6 *BCT* FIRST WORD
ERRNZ BCTAW IF *TST* ADDRESS NOT IN WORD ZERO
MX0 -BCTAN
LX1 BCTAN-1-BCTAS RIGHT JUSTIFY *TST* ADDRESS
SA1 X1 *TST* ENTRY
BX2 X1
LX2 TSDBN-1-TSDBS RIGHT JUSTIFY DATA BASE NAME
MX0 -TSDBN
BX6 -X0*X2
LX1 59-TSARS POSITION RECOVERY REQUIRED BIT
SA6 X5+DBNC SET DATA BASE NAME IN SUBCP SYSTEM AREA
SX6 2RBC GENERATE TASK NAME FOR BATCH JOB
SA2 B6+BCJNW JOB HASH
MX0 24
BX2 X0*X2 JOB HASH + *BC*
BX6 X6+X2
LX6 59-11 LEFT JUSTIFY TASK NAME
SA6 X5+BCTN SET NAME IN SUBCP SYSTEM AREA
SX6 RSFN REQUEST SUBCP FUNCTION LIST BIT
PL X1,BRC35 IF RECOVERY NOT REQUIRED
* BUILD RESTORE DATA BASE ID REQUEST.
SB2 B5+BSAR ADDRESS OF ARGUMENT ARRAY
SX6 B5+BSUP ADDRESS OF ARGUMENTS
SB3 B5+BSRE LWA OF ARGUMENT ARRAY
BRC11 SA6 B2 STORE ARGUMENT ADDRESS
SB2 B2+B1
SX6 X6+1 INCREMENT ARGUMENT ADDRESS
LE B2,B3,BRC11 IF MORE ARGUMENTS
SX6 B0
SA6 B2 ZERO TERMINATES ARRAY
SA1 B6+BRNIW
SA2 B6+BROIW
BX6 X1
SA6 B5+BSNI CURRENT BEGIN ID
BX6 X2
SA6 B5+BSOI OLD BEGIN ID
SX4 BRC12 COMPLETION ADDRESS
SX5 /COMKCRM/TRRI RESTORE DATA BASE FUNCTION CODE
RJ BAM PUT REQUEST IN INPUT QUEUE
NZ X7,BRC1 IF REQUEST QUEUED
SX1 BCRDI WAITING TO QUEUE REQUEST
RJ SCC SET REQUEST CONSTRAINED
EQ BRC1 CHECK NEXT *BCT* ENTRY
* DATA BASE ID HAS BEEN RESTORED.
BRC12 SB6 X2-BCSFW *BCT* FWA
SX6 RSFN REQUEST SUBCP FUNCTION LIST BIT
EQ BRC35 FUNCTION COMPLETE
* READ RECORD FROM USER CONTROL POINT.
BRC13 SA1 B6+BCSNW-BCSFW
LX1 BCSNN-1-BCSNS RIGHT JUSTIFY SUBCP
MX0 -BCSNN
BX1 -X0*X1 SUBCP NUMBER
SX6 B0
RJ GRA GET RA OF SUBCP
SX6 X6+BSRB RECORD AREA WITHIN SUBCP
SA1 B6+BCWSW-BCSFW WORKING STORAGE AREA WITHIN *UCP*
LX1 24
BX6 X6+X1 ADD *SCP* ADDRESS
SA6 B6+BCEUW-BCSFW MOVE TO *BCT* SFCALL AREA
SA1 B6+BCWLW-BCSFW RECORD LENGTH IN CHARACTERS
SX1 X1+9 INSURE LAST WORD IS READ
SX2 10 CHARACTERS PER WORD
IX6 X1/X2 RECORD LENGTH IN WORDS
LX6 53-11 POSITION TO FP AREA
SX1 /COMSSCP/XRED EXTENDED READ FUNCTION
BX6 X6+X1
SX2 BRC13 RETRY ADDRESS
SA1 B6+BCSAW-BCSFW
SA6 B6 STORE SFCALL PARAMETERS
SB5 X1 *TAF* STORAGE AREA ADDRESS
RJ SFR ISSUE SFCALL EXTENDED READ
SB6 B6-BCSFW RESTORE *BCT* ADDRESS
SX6 RRFN READ RECORD FUNCTION LIST BIT
SX1 X5-/COMSSCP/RC43
SX3 JSFL ERROR RETURN CODE
ZR X1,BRC7 IF *UCP* ADDRESS NOT WITHIN FL
EQ BRC35 REQUEST COMPLETE
* CONSTRUCT *CRM* REQUEST.
BRC14 SB6 A0 *BCT* FWA
SA1 B6+BCSNW
LX1 BCSNN-1-BCSNS RIGHT JUSTIFY SUBCP
MX0 -BCSNN
BX1 -X0*X1 SUBCP NUMBER
SX6 B0+
RJ GRA GET RA OF SUBCP
SB5 X6 SAVE SUBCP RA
BX7 X7-X7
SA7 B5+DMEC-NUAPL CLEAR FATAL D.M. ERROR CODE
SX1 BCUPL NUMBER OF WORDS TO MOVE
SX2 B6+BCUPW SOURCE ADDRESS IN *BCT*
SX3 X6+BSUP DESTINATION ADDRESS IN SUBCP
RJ MVE= MOVE PARAMETERS TO SUBCP
SA1 BRCF *BCT* ADDRESS
SB4 B5+BSCE LWA+1 OF ARGUMENT ARRAY
SX6 BSUP+1 FWA OF USER PARAMETERS
SB2 B5+BSAR FWA OF ARGUMENT ARRAY
BRC15 SA6 B2 STORE ADDRESS OF PARAMETERS
SB2 B2+B1 INCREMENT ARRAY ADDRESS
SX6 X6+1 INCREMENT PARAMETER ADDRESS
LT B2,B4,BRC15 IF MORE PARAMETERS
SB6 X1 RESTORE *BCT* ADDRESS
MX0 -6
SA1 B6+BCUPW USER PARAMETERS
LX1 -18
BX4 -X0*X1 EXTRACT ARGUMENT COUNT
LX1 -6
BX5 -X0*X1 EXTRACT TAF/CRM FUNCTION CODE
BX1 X5
LX1 59-0
SA3 X1+BCFT FUNCTION TABLE ENTRY
NG X1,BRC16 IF LOWER ENTRY IN TABLE
LX3 BFUEN-1-BFUES RIGHT JUSTIFY UPPER ENTRY
BRC16 LX3 BFWSN-1-BFWSS RIGHT JUSTIFY WSA INDEX
SB2 B5+BSAR ARGUMENT ARRAY ADDRESS
MX0 -BFWSN
BX1 -X0*X3 WORKING STORAGE AREA WORD
ZR X1,BRC17 IF FUNCTION DOES NOT USE WSA
SX6 BSWS WORKING STORAGE AREA ADDRESS
SA6 X1+B2 STORE ADDRESS IN ARGUMENT ARRAY
BRC17 LX3 BFKNN-1-BFKNS+BFWSS-BFWSN+1 KEYNAME INDEX
BX1 -X0*X3 KEYNAME WORD
SX6 BSKN KEYNAME AREA ADDRESS
ZR X1,BRC18 IF FUNCTION DOES NOT USE KEYNAME
SA6 X1+B2 STORE KEYNAME ADDRESS IN ARRAY
BRC18 LX3 BFKAN-1-BFKAS+BFKNS-BFKNN+1 KEYAREA INDEX
BX1 -X0*X3 KEYAREA WORD
SX6 BSKA KEYAREA ADDRESS
MX0 -BFTSN
ZR X1,BRC19 IF FUNCTION DOES NOT USE KEYAREA
SA6 X1+B2 STORE KEYAREA ADDRESS IN ARRAY
BRC19 BX6 X6-X6
SA6 X4+B2 STORE END OF ARGUMENT ARRAY
LX3 BFTSN-1-BFTSS+BFKAS-BFKAN+1 *TAF* STATUS AREA INDEX
BX6 -X0*X3
SA6 B5+DMEC-NUAPL SAVE FOR FATAL D.M. ERROR
SX4 BRC20 COMPLETION ADDRESS
RJ BAM PUT REQUEST IN INPUT QUEUE
NZ X7,BRC1 IF REQUEST QUEUED
SX1 BCAMC WAITING TO QUEUE REQUEST
RJ SCC SET REQUEST CONSTRAINED
EQ BRC1 CHECK NEXT *BCT* ENTRY
BRC20 SB6 X2-BCSFW *BCT* ADDRESS
SX6 QRFN QUEUE REQUEST FUNCTION LIST BIT
EQ BRC35 FUNCTION COMPLETE
* WRITE RECORD TO USER CONTROL POINT.
BRC21 SA1 B6+BCSNW-BCSFW
LX1 BCSNN-1-BCSNS RIGHT JUSTIFY SUBCP
MX0 -BCSNN
BX1 -X0*X1 SUBCP NUMBER
SX6 B0
RJ GRA GET RA OF SUBCP
SB4 X6+ RA OF SUBCP
SX6 X6+BSRB RECORD AREA WITHIN SUBCP
SA1 B6+BCWSW-BCSFW WORKING STORAGE AREA WITHIN *UCP*
LX1 24
BX6 X6+X1 ADD *SCP* ADDRESS
SA6 B6+BCEUW-BCSFW MOVE TO *BCT* SFCALL AREA
SA1 B4+BSRL RECORD LENGTH IN CHARACTERS
SX1 X1+9 INSURE LAST WORD IS WRITTEN
SX2 10 CHARACTERS PER WORD
IX6 X1/X2 RECORD LENGTH IN WORDS
SX1 /COMSSCP/XWRT EXTENDED WRITE FUNCTION
LX6 53-11 POSITION RECORD LENGTH TO FP AREA
BX6 X6+X1
SX2 BRC21 RETRY ADDRESS
SA6 B6 SFCALL PARAMETERS
SA1 B6+BCSAW-BCSFW
SB5 X1 *TAF* STORAGE AREA ADDRESS
RJ SFR ISSUE SFCALL EXTENDED WRITE
SB6 B6-BCSFW RESTORE *BCT* ADDRESS
SX6 WRFN WRITE RECORD FUNCTION LIST BIT
SX1 X5-/COMSSCP/RC43
SX3 JSFL ERROR RETURN CODE
ZR X1,BRC7 IF *UCP* ADDRESS NOT WITHIN FL
EQ BRC35 FUNCTION COMPLETE
* WRITE COMMIT HISTORY TO *CRF*.
BRC22 SB6 A0 *BCT* FWA
SA1 B6+BCTSW TRANSACTION SEQUENCE NUMBER
BX6 X1
LX6 BCTSN-1-BCTSS RIGHT JUSTIFY SEQUENCE NUMBER
SA6 B6+BCWPW+1 *WSTAT* PARAMETER AREA IN *BCT*
SX7 TYRM
SA7 A6+1 STORE TRANSACTION TYPE IN AREA
SX6 CSBC
SA6 A7+B1 STORE RECOVERABLE TRAN STEP IN AREA
SX7 B1
SA7 A6+1 INDICATE *CRM* DATA MANAGER
SX6 BRCC FWA OF *WSTAT* KEYWORDS
SX7 B6+BCWPW FWA OF PARAMETER AREA
SX5 B6+BCWAW FWA OF ARGUMENT ARRAY
BRC23 SA7 X5 STORE PARAMETER ADDRESS IN ARRAY
SA6 A7+1 STORE KEYWORD ADDRESS IN ARRAY
SX5 A6+B1 INCREMENT ARRAY ADDRESS
SX6 X6+B1 INCREMENT KEYWORD ADDRESS
SX7 X7+B1 INCREMENT PARAMETER ADDRESS
SX2 X6-BRCD
NZ X2,BRC23 IF NOT END OF ARGUMENT ARRAY
SX6 B0
SA6 A6 STORE END OF ARRAY
* QUEUE RECOVERY REQUEST.
SX4 QTEV EVENT TYPE
SB3 B6+BCWQW QUEUEING AREA IN *BCT*
SX6 B0
SA6 B5+QRTCW CLEAR COMPLETE BIT
SX1 A6 EVENT ADDRESS
SX2 B0 SHIFT COUNT FOR COMPLETE BIT
BX3 X3-X3 SUBCP NUMBER
SX5 B0 NOT A TIMED EVENT
SB4 B0 QUEUE AT END OF QUEUE
SX6 BRC24 EVENT COMPLETE ADDRESS
RJ QTW QUEUE *TAF* WORK
* WRITE RECOVERY INFORMATION TO *CRF*.
SA5 BRCE *REC* SYSTEM REQUEST
SX1 B6+BCWAW
BX5 X5+X1 ADD ARGUMENT ARRAY ADDRESS
SA1 B6+BCTAW GET TERMINAL STATUS WORD
ERRNZ BCSPW IF SUBCP ADDRESS NOT IN WORD ZERO
LX1 BCTAN-1-BCTAS RIGHT JUSTIFY *TST* ADDRESS
MX0 -BCTAN
TX2 0,VTST *TST* FWA
BX1 -X0*X1
IX7 X1-X2
SX0 TSTLLE
IX7 X7/X0 *TST* ORDINAL
SB5 B0 SUBCP RA
BX6 X6-X6 SUBCP NUMBER
LX5 -18 POSITION REQUEST FOR CALL TO *WFP*
SA1 B6+BCSAW *TAF* STORAGE AREA ADDRESS
SB3 X1
EQ WFP *WSTAT* RECOVERY REQUEST
BRC24 SX6 WTFN WRITE *CRF* FUNCTION
SB6 B3-BCWQW *BCT* FWA
EQ BRC35 FUNCTION COMPLETE
* RETURN STATUS INFORMATION TO UCP.
BRC25 SA1 B6+BCSNW-BCSFW
LX1 BCSNN-1-BCSNS RIGHT JUSTIFY SUBCP
MX0 -BCSNN
BX1 -X0*X1 SUBCP NUMBER
SX6 B0
RJ GRA GET RA OF SUBCP
SX2 X6+BSUP SCPA ADDRESS IN SUBCP
SA1 B6+BCPAW-BCSFW *UCP* ADDRESS IN *BCT*
LX1 BCPAN-1-BCPAS RIGHT JUSTIFY *UCP* ADDRESS
SX1 X1+B1
SX6 BCUPL NUMBER OF WORDS TO RETURN
SA3 B6+BCERW-BCSFW VALIDATION STATUS WORD
LX3 59-BCERS
SX0 B1 COMPLETE BIT
PL X3,BRC26 IF NOT VALIDATION ERROR
SX6 B1+ ONE WORD OF STATUS RETURNED
SX2 B6+BCUPW-BCSFW RETURN STATUS FROM *BCT*
BRC26 LX6 18
BX6 X6+X1 ADD *UCP* ADDRESS
LX6 18
BX6 X6+X2 ADD SCPA ADDRESS IN SUBCP
SA3 X2 *UCP* STATUS WORD
BX7 X0+X3 SET COMPLETE BIT
SA7 X2
LX6 6
SX1 /COMSSCP/WRIT ADD SF.WRIT FUNCTION CODE
BX6 X6+X1
SA6 B6 STORE SFCALL PARAMETERS
SX2 BRC25 RETRY ADDRESS
RJ SFR ISSUE SFCALL WRITE REQUEST
* ISSUE END TASK FUNCTION TO UCP.
BRC27 SA1 B6+BCPAW-BCSFW *BCT* FIRST WORD
LX1 BCPAN-1-BCPAS RIGHT JUSTIFY PARAMETER ADDRESS
SX6 X1
LX6 24
SX1 /COMSSCP/ENDT ADD ENDTASK FUNCTION CODE
BX6 X6+X1
SA6 B6+ STORE SFCALL PARAMETERS
SX2 BRC27 RETRY ADDRESS IF FUNCTION REJECT
RJ SFR ISSUE SF.ENDT FUNCTION
SB6 B6-BCSFW RESTORE *BCT* FWA
SX6 CTFN COMPLETE TASK FUNCTION
EQ BRC35 PROCESS NEXT FUNCTION
* CLEAR LONG TERM CONNECT WITH UCP.
BRC28 SX7 X7-BCCSC
ZR X7,BRC30.1 IF RETRY OF DATA MANAGER CEASE
SA1 A0+BCABW CHECK FOR *UCP* ABORT
LX1 59-BCABS
PL X1,BRC29 IF NOT *UCP* ABORT
BRC28.1 MX1 17 CLEAR ALL OUTSTANDING REQUESTS
SX6 /COMSSCP/ENDT END TASK FUNCTION CODE
LX1 41-59 POSITION *UCPA*
BX6 X6+X1
SA6 B6 SAVE SFCALL PARAMETERS
SX2 BRC28.1 RETRY ADDRESS
RJ SFR ISSUE SF.ENDT FUNCTION
EQ BRC30 WRITE *STEP* TO *CRF*
BRC29 SA1 A0+BCERW *BCT* FIRST WORD
SX6 /COMSSCP/CLTC CLEAR LONG TERM CONNECT FUNCTION
SX1 X1 SUBCP TABLE ADDRESS
ZR X1,BRC33 IF NO SUBCP ASSIGNED
SA6 B6 STORE SFCALL PARAMETERS
SX2 BRC29 RETRY ADDRESS IF FUNCTION REJECT
RJ SFR ISSUE SF.CLTC FUNCTION
* BUILD *WSTAT* REQUEST TO LOG TERMINATION *STEP* TO *CRF*.
BRC30 SB6 B6-BCSFW *BCT* ADDRESS
SX6 CSCE BATCH CEASE/JOB END *STEP*
SA6 B6+BCWPW+1 *WSTAT* PARAMETER AREA IN BCT
SX7 B6+BCWPW FWA OF PARAMETER AREA
SX5 B6+BCWAW FWA OF ARGUMENT ARRAY
SX6 BRCC+2 *STEP* KEYWORD
SA7 X5 STORE PARAMETER ADDRESS IN ARRAY
SA6 A7+1 STORE KEYWORD ADDRESS
SX7 X7+1 STORE KEYWORD VALUE ADDRESS
SA7 A6+B1
BX6 X6-X6
SA6 A7+B1 STORE END OF ARRAY
* QUEUE RECOVERY REQUEST.
SX4 QTEV EVENT TYPE
SB3 B6+BCWQW QUEUEING AREA IN *BCT*
SX6 B0
SA6 B5+QRTCW CLEAR COMPLETE BIT
SX1 A6 EVENT ADDRESS
SX2 B0 SHIFT COUNT FOR COMPLETE BIT
BX3 X3-X3 SUBCP NUMBER
SX5 B0 NOT A TIMED EVENT
SB4 B0 QUEUE AT END OF QUEUE
SX6 BRC30.1 EVENT COMPLETE ADDRESS
RJ QTW QUEUE *TAF* WORK
* WRITE RECOVERY INFORMATION TO *CRF*.
SA5 BRCE *REC* SYSTEM REQUEST
SX1 B6+BCWAW
BX5 X5+X1 ADD ARGUMENT ARRAY ADDRESS
SA1 B6+BCTAW GET TERMINAL STATUS WORD
ERRNZ BCSPW SUBCP ADDRESS NOT IN WORD ZERO
LX1 BCTAN-1-BCTAS RIGHT JUSTIFY *TST* ADDRESS
MX0 -BCTAN
TX2 0,VTST *TST* FWA
BX1 -X0*X1
IX7 X1-X2
SX0 TSTLLE
IX7 X7/X0 *TST* ORDINAL
SB5 B0 SUBCP RA
BX6 X6-X6 SUBCP NUMBER
LX5 -18 POSITION REQUEST FOR CALL TO *WFP*
SA1 B6+BCSAW *TAF* STORAGE AREA ADDRESS
SB3 X1
EQ WFP *WSTAT* RECOVERY REQUEST
* ISSUE DATA MANAGER CEASE.
BRC30.1 SB6 B3-BCWQW *BCT* ADDRESS
SX5 DMCC D.M. CEASE FUNCTION CODE
SX4 BRC31 COMPLETION ADDRESS
RJ BAM PUT REQUEST IN INPUT QUEUE
NZ X7,BRC1 IF REQUEST QUEUED
SX1 BCCSC WAITING TO QUEUE REQUEST
RJ SCC SET REQUEST CONSTRAINED
EQ BRC1 CHECK NEXT *BCT* ADDRESS
* RELEASE SUBCONTROL POINT.
BRC31 SA0 X2-BCSFW *BCT* ADDRESS
SB3 BRC32 RETURN ADDRESS FROM *ESCP1*
SA1 A0
ERRNZ BCSPW IF SUBCP ADDRESS NOT IN WORD ZERO
SB6 X1 SUBCP TO RELEASE
ERRNZ BCSPS-17 SUBCP ADDRESS DOES NOT START IN BIT 17
MX0 SCBCN CLEAR BATCH CONCURRENCY BIT IN SUBCP
LX0 SCBCS-59
SA1 B6
ERRNZ SCBCW IF BATCH FLAG NOT IN WORD ZERO
BX6 -X0*X1
SA6 B6+
EQ ESCP1 RELEASE SUBCP
* SET USER INACTIVE AND RELEASE *BCT* ENTRY.
BRC32 SA1 AVAILCM UPDATE AVAILABLE CM
SA2 VBCT
SX2 X2
IX6 X1+X2
SA6 A1
SA1 A0 FIRST WORD OF *BCT*
ERRNZ BCTAW IF *TST* ADDRESS NOT IN WORD ZERO
LX1 BCTAN-1-BCTAS
MX0 TSAUN
LX0 TSAUS-59
SA1 X1 *TST* ENTRY
ERRNZ TSAUW USER ACTIVE NOT IN WORD ZERO OF *TST*
BX6 -X0*X1 CLEAR USER ACTIVE IN *TST*
SA6 A1
BRC33 SA2 A0+BCSAW
SB3 X2 *TAF* STORAGE ADDRESS
SX6 B0
SA6 A0 RELEASE *BCT* ENTRY
SA6 A6+B1
SA6 A6+B1
SA6 A6+B1
RJ RTS RELEASE TEMPORARY STORAGE
* BATCH *CRM* REQUEST IS COMPLETE.
BRC34 MX0 BCACN+BCRAN+BCABN+BCERN
SA1 A0 FIRST WORD OF *BCT*
ERRNZ BCACW+BCRAW+BCABW+BCERW IF ALL FIELDS NOT IN WORD 0
ERRNZ 59-BCACS FIELD NOT IN BIT 59
ERRNZ BCACS-BCACN-BCRAS FIELDS NOT ADJACENT
ERRNZ BCACW FIELD NOT IN WORD ZERO
ERRNZ BCACW-BCRAW FIELDS NOT IN SAME WORD
ERRNZ BCRAW-BCABW FIELDS NOT IN SAME WORD
ERRNZ BCABW-BCERW FIELDS NOT IN SAME WORD
BX6 -X0*X1 CLEAR ACTIVE BITS
SA6 A0
SA1 PBCA REQUEST COUNT
SX2 B1
IX6 X1-X2 DECREMENT OUSTANDING REQUESTS
SA6 A1+
NZ X6,BRC1 IF MORE REQUESTS TO PROCESS
EQ TSSC TIME SLICE SUBCP
* FUNCTION COMPLETE.
BRC35 LX6 BCFLS-BCFLN+1 POSITION FUNCTION COMPLETE BIT
SA1 B6+BCFLW FUNCTION LIST WORD
BX6 -X6*X1 CLEAR BIT IN FUNCTION LIST
SA6 A1
EQ BRC2 PROCESS NEXT FUNCTION
BRCA BSSZ 1 *BCT* FIRST WORD ADDRESS
BRCB BSSZ 1 NUMBER OF *BCT* ENTRIES
BRCC DATA 10HSEQ *WSTAT* KEYWORDS
DATA 10HTRAN
DATA 10HSTEP
DATA 10HCRM
BSSZ 1
BRCD EQU * END OF KEYWORDS
BRCE VFD 24/3LCTI,18/RFWS,18/0 *REC* SYSTEM REQUEST
BRCF BSSZ 1 CURRENT *BCT* ADDRESS
BJT SPACE 4,15
** BJT - BATCH JOB TERMINATION.
*
* ENTRY (X4) = STATUS FIELD FROM *SCP* BUFFER.
*
* EXIT (BCACS) = 1.
* (BCRAS) = 1.
* (BCABS) = 1, IF BATCH JOB ABORTED.
* (BCFLS) = CLFN, CLEAR LONG TERM CONNECT.
*
* USES X - 0, 1, 2, 3, 5, 6, 7.
* A - 1, 3, 5, 6, 7.
*
* CALLS SBC, SCC, SFL.
BJT SUBR ENTRY/ EXIT
SA5 SSJN JOB SEQUENCE NUMBER AND *FST*
RJ SBC SEARCH FOR *BCT* ENTRY
ZR B6,BJTX IF NOT FOUND, RETURN
SA3 B6+B1 CHECK TERMINATION FLAG
LX3 59-BCTES
NG X3,BJTX IF ALREADY RECEIVED TERMINATION REQUEST
MX6 BCTEN SET TERMINATION FLAG
BX6 X6+X3
LX6 BCTES-59 SHIFT BACK
SA6 A3
SX1 X4-1 TEST MESSAGE TYPE
MX0 BCACN+BCRAN
ZR X1,BJT1 IF NORMAL JOB TERMINATION
MX0 BCACN+BCRAN+BCABN
ERRNZ BCACW NOT IN WORD ZERO
ERRNZ BCACW-BCRAW FIELDS NOT IN SAME WORD
ERRNZ BCABW-BCRAW FIELD NOT IN SAME WORD
BJT1 SA3 B6 *BCT* ENTRY
ERRNZ BCACW+BCRAW+BCABW IF ALL FIELDS NOT IN WORD ZERO
BX6 X0+X3
SA6 B6+ SET REQUEST ACTIVE IN *BCT*
SX2 CLFN+ENFN CLEAR LONG TERM CONNECT FUNCTION
RJ SFL SET FUNCTION LIST
NG X3,BJTX IF REQUEST ALREADY ACTIVE
SA1 PBCA REQUEST COUNT
SX2 B1
IX6 X1+X2 ADVANCE OUTSTANDING REQUESTS
SA6 A1+
SX1 BCTRC TERMINATE CONSTRAINT CODE
RJ SCC SET CONSTRAINT CODE IN *BCT*
SA1 ITIME REAL TIME CLOCK
BX7 X1
SA7 RDCBD SET CLOCK AT LAST BATCH REQUEST
EQ BJTX RETURN
PBC SPACE 4,20
** PBC - PROCESS BATCH CONCURRENCY REQUEST.
*
* ENTRY (SSRP) = SUBSYSTEM REQUEST BUFFER.
* (VNBCT) = NUMBER OF BATCH *CRM* REQUESTS.
* (ITIME) = CURRENT TIME.
*
* EXIT BRC, IF VALID TAF/CRM REQUEST.
* PBE, IF INCORRECT BATCH REQUEST.
*
* USES X - ALL.
* A - 1, 2, 5, 6, 7.
* B - 3, 4, 6.
*
* CALLS MVE, SBC.
PBC SX5 JSDC ERROR RETURN CODE
SA2 VNBCT NUMBER OF REQUESTS ALLOWED
ZR X2,PBE IF BATCH CONCURRENCY DISABLED
SX5 JSNC ERROR RETURN CODE
SA2 VAAM AAM FILE MANAGER INITIALIIZATION FLAG
ZR X2,PBE IF TAF/CRM DATA MANAGER NOT LOADED
SA5 SSJN JOB SEQUENCE NUMBER AND *FST*
RJ SBC SEARCH FOR *BCT* ENTRY
ZR B6,PBC1 IF *BCT* ENTRY NOT FOUND
SA1 B6 *BCT* ENTRY
ERRNZ BCRAW IF ACTIVE FLAG NOT IN WORD ZERO
LX1 59-BCRAS POSITION ACTIVE BIT
SX5 JSOR ERROR RETURN CODE
NG X1,PBE IF REQUEST ALREADY ACTIVE
EQ PBC2 *BCT* ENTRY EXISTS
PBC1 BX5 X5-X5
RJ SBC SEARCH *BCT* FOR EMPTY ENTRY
SX5 JSTB ERROR RETURN CODE
ZR B6,PBE IF NO *BCT* ENTRIES AVAILABLE
SA1 PBCA NUMBER OF REQUESTS OUTSTANDING
SA2 VNBCT
LX2 -30
SX2 X2+ NUMBER OF REQUESTS ALLOWED
IX1 X1-X2
PL X1,PBE IF REQUEST CANNOT BE PROCESSED
SA5 SSJN *UCP* JOB IDENTIFIER
BX6 X5
SA6 B6+BCJNW MOVE JOB IDENTIFIER TO *BCT*
SX6 VLFN+RSFN VALIDATE AND REQUEST SUBCP FUNCTIONS
LX6 BCFLS-BCFLN+1
SA6 B6+BCFLW SET BITS IN FUNCTION LIST
PBC2 SA2 ITIME REAL TIME CLOCK
BX7 X2
SA7 RDCBD SET CLOCK AT LAST BATCH REQUEST
SA1 SSRP
SX1 X1 *UCP* PARAMETER AREA ADDRESS
SA2 B6 FIRST WORD OF *BCT*
ERRNZ BCPAW IF PARAMETER ADDRESS NOT IN WORD ZERO
MX0 -BCPAN
LX0 BCPAS-BCPAN+1 POSITION PARAMETER ADDRESS MASK
BX2 X0*X2
LX1 BCPAS-BCPAN+1
BX2 X1+X2 ADD PARAMETER AREA ADDRESS
MX0 BCACN+BCRAN
ERRNZ 59-BCACS FIELD NOT IN BIT 59
ERRNZ BCACS-BCACN-BCRAS FIELDS NOT ADJACENT
BX6 X0+X2 ADD *BCT* ACTIVE AND REQUEST ACTIVE BITS
SA6 A2
SA1 SSUP
LX1 -24 RIGHT JUSTIFY *TAF/CRM* FUNCTION
MX0 -6
BX1 -X0*X1
LX1 59-0
SA2 X1+BCFT FUNCTION TABLE ENTRY
NG X1,PBC3 IF LOWER ENTRY IN TABLE
LX2 BFUEN-1-BFUES RIGHT JUSTIFY UPPER ENTRY
PBC3 MX6 -BCFLN
BX6 -X6*X2 FUNCTION LIST FOR REQUEST
LX6 BCFLS-BCFLN+1
SA1 B6+B1
ERRNZ BCFLW-1 FIELD NOT IN WORD ONE
BX6 X1+X6 ADD TO PREVIOUS FUNCTIONS
SA6 A1 SET FUNCTION LIST IN *BCT*
SX1 BCUPL NUMBER OF WORDS TO MOVE
SX2 SSUP SOURCE ADDRESS IN *SCP* BUFFER
SX3 B6+BCUPW DESTINATION ADDRESS IN *BCT*
SX5 B6 SAVE *BCT* ADDRESS
RJ MVE= MOVE PARAMETERS TO *BCT*
SB6 X5 RESTORE *BCT* ADDRESS
SA1 BFPT
BX6 X1
SA6 VSCR ACKNOWLEDGE *SCP* REQUEST
SA1 PBCA REQUEST COUNT
SX2 B1
IX6 X1+X2 ADVANCE OUTSTANDING REQUESTS
SA6 A1
EQ BRC EXIT TO BRC
PBCA BSSZ 1 OUTSTANDING BATCH CONCURRENCY REQUESTS
SBC SPACE 4,15
** SBC - SEARCH BATCH COMMUNICATION TABLE.
*
* ENTRY (X5) = JOB SEQUENCE NUMBER AND *FST* ORDINAL.
* (X5) = 0 TO FIND AN EMPTY ENTRY.
*
* EXIT (B6) = *BCT* ADDRESS.
* (B6) = 0 IF JOB IDENTIFIER NOT FOUND.
*
* USES X - 1, 2, 3.
* A - 1, 2, 3.
* B - 3, 6.
SBC SUBR ENTRY/EXIT
SA1 VNBCT NUMBER OF *BCT* ENTRIES
SB6 X1
TX2 0,VBCT *BCT* ADDRESS
SB3 BCTL *BCT* ENTRY LENGTH
SBC1 ZR B6,SBCX IF JOB NOT IN *BCT*
SA3 X2+BCJNW JOB SEQUENCE NUMBER AND *FST*
SB6 B6-B1 DECREMENT NUMBER OF ENTRIES
BX3 X3-X5
ZR X3,SBC2 IF CORRECT ENTRY
SX2 X2+B3 NEXT ENTRY ADDRESS
EQ SBC1 CHECK NEXT ENTRY
SBC2 SB6 X2 *BCT* ADDRESS
EQ SBCX RETURN
SCC SPACE 4,10
** SCC - SET CONSTRAINT CODE.
*
* ENTRY (X1) = CONSTRAINT CODE.
* (B6) = *BCT* ADDRESS.
*
* EXIT CONSTRAINT CODE AND CONSTRAINT BIT SET IN *BCT* ENTRY.
*
* USES X - 0, 1, 5, 6.
* A - 5, 6.
SCC SUBR ENTRY/EXIT
MX0 BCCNN
LX0 BCCNS-59 POSITION CONSTRAINT BIT
SA5 B6+BCCTW CONSTRAINT WORD IN *BCT*
LX1 BCCTS-BCCTN+1 POSITION CONSTRAINT CODE
BX6 X0+X5
BX6 X6+X1
SA6 A5 SET REQUEST UNDER CONSTRAINT
EQ SCCX RETURN
SFL SPACE 4,10
** SFL - SET FUNCTION LIST IN BCT.
*
* ENTRY (X2) = FUNCTION LIST RIGHT JUSTIFIED.
* (B6) = *BCT* ADDRESS.
*
* EXIT FUNCTION LIST SET IN BCT.
*
* USES X - 0, 1, 2, 6.
* A - 1, 6.
SFL SUBR ENTRY/EXIT
MX0 -BCFLN FUNCTION LIST MASK
LX0 BCFLS-BCFLN+1 POSITION MASK
LX2 BCFLS-BCFLN+1 POSITION FUNCTION LIST
SA1 B6+BCFLW
BX1 X0*X1 SAVE OTHER FIELDS
BX6 X1+X2 ADD NEW FUNCTION LIST
SA6 A1 STORE IN *BCT*
EQ SFLX RETURN
PBE SPACE 4,40
** PBE - PROCESS ERROR IN *UCP* REQUEST TO *TAF*.
*
* ENTRY (X5) = ERROR CODE TO RETURN TO *UCP*.
*
* (SSRP) = 12/RIN,24/RSY,6/STAT,18/ADDR.
* RIN = RESERVED FOR INSTALLATION.
* RSY = RESERVED FOR SYSTEM.
* STAT = STATUS (TYPE OF MESSAGE).
* ADDR = ADDRESS WITHIN *UCP* OF PARAMETER BLOCK.
*
* (SSJN) = *UCP* JOB SEQUENCE NUMBER AND *FST* ORDINAL.
* (SSUP) = SECOND WORD OF *UCP* PARAMETER BLOCK.
* (BFPT) = SUBSYSTEM REQUEST BUFFER POINTER.
*
* EXIT TO *TSSC*.
*
* USES X - 0, 1, 2, 6, 7.
* B - 3, 5, 6.
* A - 1, 6, 7.
*
* CALLS GTS, RTS, SFR.
*
* NOTES THE CONTENTS OF THE SFCALL PARAMETER AREA ARE
*
* WORD 1 - 6/RC, 12/FP, 18/UCPA, 18/SCPA, 6/FC
* WHERE RC = RETURN CODE.
* FP = FUNCTION PARAMETER.
* UCPA = *UCP* ADDRESS.
* SCPA = *SCP* ADDRESS.
* FC = FUNCTION CODE.
*
* WORD 2 - *UCP* JOB SEQUENCE NUMBER AND *FST* ORDINAL.
*
* WORD 3 - 12/FC, 12/0, 12/SFC, 6/AC, 6/0, 12/(X5)
* WHERE FC = BATCH FUNCTION CODE.
* SFC = SUB FUNCTION CODE.
* AC = ARGUMENT COUNT.
* (X5) = ERROR CODE TO RETURN TO *UCP*.
*
* WORD 4 - ADDRESS WITHIN USER CONTROL POINT OF
* BATCH/CRM OR BTRAN REQUEST PACKET.
PBE RJ GTS GET TEMPORARY STORAGE
ZR B3,TSSC IF STORAGE NOT AVAILABLE, PROCESS LATER
SB5 B3+ SAVE STORAGE ADDRESS
RJ GTS GET SFCALL PARAMETER AREA
NZ B3,PBE1 IF STORAGE AVAILABLE
SB3 B5+
RJ RTS RELEASE TEMPORARY STORAGE
EQ TSSC PROCESS REQUEST LATER
* MOVE *UCP* PARAMETERS TO SFCALL AREA.
PBE1 SB6 B3
SA1 SSRP
SX7 X1 *UCP* PARAMETER ADDRESS
SA7 B6+BEPAW SAVE IN TEMPORARY STORAGE
SA1 SSUP SECOND WORD OF *UCP* PARAMETERS
MX0 42
BX7 X0*X1
BX7 X7+X5 ADD ERROR RETURN CODE
SA7 A7-B1 SAVE WORD TO RETURN TO *UCP*
SA1 SSJN
BX7 X1
SA7 A7-B1 MOVE JOB IDENTIFIER TO SFCALL AREA
SA1 BFPT
BX7 X1
SA7 VSCR ACKNOWLEDGE *UCP* REQUEST
* RETURN ERROR STATUS TO *UCP*.
PBE2 SA1 B6+BEPAW
SX2 B1+
LX2 18 NUMBER OF WORDS
SX6 X1+B1 *UCP* PARAMETER AREA ADDRESS
BX6 X6+X2
LX6 18
SX1 B6+BEESW *SCP* RETURN CODE ADDRESS
BX6 X6+X1
LX6 6
SX1 /COMSSCP/WRIT ADD IN SF.WRIT FUNCTION CODE
BX6 X6+X1
SA6 B6 STORE SFCALL PARAMETERS
SX2 PBE2 RETRY ADDRESS
RJ SFR ISSUE SF.WRIT FUNCTION
NZ X5,PBE5 IF SFCALL ERROR RETURN
* ABORT *UCP* IF INCORRECT REQUEST.
SA1 B6+BEESW ERROR RETURN CODE
SX1 X1-JSFC
NZ X1,PBE4 IF NOT INCORRECT REQUEST
PBE3 SA1 PBEB REGRETS SFCALL PARAMETERS
BX6 X1
SA6 B6 STORE SFCALL PARAMETERS
SX2 PBE3 RETRY ADDRESS IF JOB SWAPPED OUT
RJ SFR ISSUE SF.REGR FUNCTION
* INDICATE END OF TASK TO *UCP*.
PBE4 SA1 B6+BEPAW
SX6 X1 *UCP* PARAMETER ADDRESS
LX6 41-17
SX1 /COMSSCP/ENDT ADD END TASK FUNCTION CODE
BX6 X6+X1
SA6 B6 STORE SFCALL PARAMETERS
SX2 PBE4 RETRY ADDRESS IF JOB SWAPPED OUT
RJ SFR ISSUE SF.ENDT FUNCTION
PBE5 SB3 B6
RJ RTS RELEASE SFCALL PARAMETER STORAGE
SB3 B5
RJ RTS RELEASE QUEUEING STORAGE
EQ TSSC EXIT TO TIME SLICING
PBEA DATA C* TAF FUNCTION CODE NOT VALID.*
PBEB VFD 6/0,12/0,18/1,18/PBEA,6//COMSSCP/REGR
SFR SPACE 4,50
** SFR - ISSUE SFCALL REQUEST.
*
* ENTRY (X2) = RETRY ADDRESS.
* (B5) = *TAF* STORAGE AREA ADDRESS.
* (B6) = SFCALL PARAMETER AREA ADDRESS.
*
* EXIT (X5) = 0 IF FUNCTION SUCCESSFUL.
* .NE. 0 IS SFCALL RETURN CODE.
* TO RETRY ADDRESS IF FUNCTION REJECTED
* BECAUSE JOB WAS SWAPPED OUT.
* (B5) = *TAF* STORAGE AREA ADDRESS.
* (B6) = SFCALL PARAMETER ADDRESS.
*
* USES X - 0, 1, 2, 3, 4, 5, 6.
* A - 1, 2, 6.
* B - 2, 3, 4, 5.
*
* CALLS COD, QTW, SNM.
*
* MACROS MESSAGE, SFCALL.
*
* NOTES THE SFCALL PARAMETER AREA MUST BE FORMATTED
* AS FOLLOWS.
*
* WORD 1 - 6/RC, 12/FP, 18/UCPA, 18/SCPA, 6/FC
* WHERE RC = RETURN CODE.
* FP = FUNCTION PARAMETER.
* UCPA = *UCP* ADDRESS.
* SCPA = *SCP* ADDRESS.
* FC = FUNCTION CODE.
* WORD 2 - *UCP* JOB SEQUENCE NUMBER AND *FST* ORDINAL.
* WORD 3 - 1/U, 1/S, 10/RES, 24/EUCPA, 24/ESCPA
* WHERE U = 1, IF EUCPA IS ECS ADDRESS.
* S = 1, IF ESCPA IS ECS ADDRESS.
* RES = RESERVED.
* EUCPA = EXTENDED *UCP* CM OR ECS
* ADDRESS.
* ESCPA = EXTENDED *SCP* CM OR ECS
* ADDRESS.
*
* THE *TAF* STORAGE AREA IS USED AS FOLLOWS.
*
* WORDS 1-2 - QUEUEING AREA USED BY *QTW*.
*
* WORD 3 - 24/ , 18/SA, 18/RA
* WHERE SA = SFCALL AREA ADDRESS.
* RA = RETURN ADDRESS.
SFR SUBR ENTRY/EXIT
SX6 B6+ SFCALL PARAMETER ADDRESS
LX6 18
BX6 X2+X6 ADD IN RETRY ADDRESS
SA6 B5+2 SAVE PARAMETERS IN *TAF* STORAGE AREA
SFR1 SFCALL B6 MAKE SUBSYSTEM FUNCTION REQUEST
SA2 B6 SFCALL PARAMETERS
MX0 59 CLEAR COMPLETE BIT
BX6 X0*X2
SA6 B6
MX0 6
BX5 X0*X6 EXTRACT RETURN CODE
LX5 6
MX0 -6
BX1 -X0*X6 EXTRACT FUNCTION CODE
MX0 -12
NZ X5,SFR3 IF ERROR RETURN CODE
SX4 X1-/COMSSCP/XRED
ZR X4,SFR2 IF EXTENDED READ REQUEST
SX4 X1-/COMSSCP/XWRT
NZ X4,SFRX IF NOT EXTENDED WRITE
SFR2 LX2 -42
BX3 -X0*X2 EXTRACT FP (WORD COUNT) FIELD
NZ X3,SFR1 IF MORE TO READ OR WRITE
EQ SFRX EXTENDED READ/WRITE COMPLETE
SFR3 SX4 X5-/COMSSCP/RC44
SX6 B0+
SA6 SFRC
ZR X4,SFR4 IF USER JOB SWAPPED OUT
SX4 X5-/COMSSCP/RC43
ZR X4,SFRX IF *UCP* ADDRESS NOT WITHIN *UCP* FL
RJ COD CONVERT FUNCTION TO DISPLAY CODE
BX1 X4
SB2 1RX REPLACEMENT CHARACTER
SB3 DAYB
SB5 -SFRA
RJ SNM SET FUNCTION CODE IN ERROR MESSAGE
BX1 X5
RJ COD CONVERT RETURN CODE
BX1 X4
SB2 1RY REPLACEMENT CHARACTER
SB5 DAYB
RJ SNM SET RETURN CODE IN ERROR MESSAGE
SA1 B6+B1
BX1 X0*X1
SB2 1RZ REPLACEMENT CHARACTER
SB5 DAYB
RJ SNM SET JOB SEQUENCE NUMBER IN ERROR MESSAGE
MESSAGE DAYB ISSUE DAYFILE MESSAGE
EQ SFRX RETURN WITH ERROR INDICATION
* ISSUE REQUEST TO SWAP JOB IN.
SFR4 SX6 /COMSSCP/SWPI BUILD SFCALL REQUEST
SA6 B6
SFCALL B6 REQUEST JOB TO BE SWAPPED IN
SFR5 SA1 B6 SFCALL PARAMETERS
MX0 59 CLEAR COMPLETE BIT
BX6 X0*X1
SA6 B6
MX0 6
BX5 X0*X1 EXTRACT RETURN CODE
LX5 6
LX1 59-0 POSITION COMPLETE BIT
PL X1,SFR8 IF REQUEST NOT COMPLETE
NZ X5,SFR6 IF ERROR RETURN CODE
SA1 B5+2 SAVED RETRY ADDRESS
BX6 X6-X6
SB4 X1
SA6 SFRC
JP B4 EXIT TO RETRY ADDRESS
SFR6 SX4 X5-/COMSSCP/RC44
NZ X4,SFR3 IF USER JOB NOT SWAPPED OUT
* WAIT FOR JOB SWAPIN WHEN ERROR WAS RETURNED.
SX1 B6 *BCT* SFCALL AREA ADDRESS
SX2 59-0 SHIFT COUNT
BX3 X3-X3 SUBCP NUMBER
SX4 QTET TIMED EVENT
SA5 LTIME GET REAL TIME
MX0 -QWTMN MASK FOR TIME
BX5 -X0*X5
SX0 SFCTL TIMEOUT VALUE IN MILLISECONDS
IX5 X5+X0 TIME OF EVENT COMPLETE
SB4 B0 QUEUE AT END OF QUEUE
SB3 B5 *TAF* STORAGE AREA ADDRESS
SX6 SFR7 EVENT COMPLETE ADDRESS
SA6 SFRC INHIBIT TAF FROM ROLLOUT
RJ QTW QUEUE *TAF* WORK
EQ TSSC EXIT UNTIL EVENT COMPLETE
* TIME FOR JOB SWAPIN EXPIRED. CHECK JOB STATUS.
SFR7 SB5 B3 RESTORE *TAF* STORAGE AREA ADDRESS
SA2 B5+2 PARAMETER SAVE AREA
SB4 X2 RESTORE RETRY ADDRESS
LX2 -18
SB6 X2 RESTORE SFCALL AREA ADDRESS
SX6 /COMSSCP/STAT BUILD SFCALL STATUS REQUEST
SA6 B6 STORE IN SFCALL AREA
SFCALL B6 REQUEST *UCP* STATUS
EQ SFR5 CHECK RETURN CODE
* WAIT FOR SWAPIN EVENT.
SFR8 SX1 B6 FWA OF SWAPIN REQUEST
SX2 59-0 SHIFT COUNT FOR COMPLETE BIT
BX3 X3-X3 SUBCONTROL POINT NUMBER
SX4 QTEV EVENT TYPE
BX5 X5-X5 NOT A TIMED EVENT
SB4 B0 QUEUE AT END OF QUEUE
SB3 B5 *TAF* STORAGE AREA ADDRESS
SX6 SFR9 EVENT COMPLETE ADDRESS
SA6 SFRC INHIBIT TAF FROM ROLLOUT
RJ QTW QUEUE *TAF* WORK
EQ TSSC EXIT UNTIL EVENT COMPLETE
* SWAPIN COMPLETE.
SFR9 SB5 B3 RESTORE *TAF* STORAGE AREA ADDRESS
SA2 B5+2 PARAMETER SAVE AREA
SB4 X2 RESTORE RETRY ADDRESS
LX2 -18
SB6 X2 RESTORE SFCALL AREA ADDRESS
EQ SFR5 CHECK RETURN CODE OF SWAPIN REQUEST
SFRA DATA C* SSF FUNCTION XX RECEIVED ERROR YY FOR ZZZZ.*
SFRC BSSZ 1 NON-ZERO IF *SFCALL* REQUEST OUTSTANDING
VBA SPACE 4,40
** VBA - VALIDATE BATCH ACCESS.
*
* ENTRY (IDLA) = 0, IF *TAF* NOT TO BE IDLED.
* (X1) = TYBT, IF BTRAN USER.
* TYRM, IF BATCH/CRM USER.
* (X4) = BATCH USER NAME.
* (X5) = RETURN ADDRESS.
* (B5) = *TAF* STORAGE AREA ADDRESS.
* (B6) = ADDRESS OF RECOVERY REQUEST AREA.
*
* EXIT (X3) = VALIDATION STATUS.
* (B5) = *TAF* STORAGE AREA ADDRESS.
* (B6) = RECOVERY REQUEST AREA ADDRESS FORMATTED
* AS FOLLOWS.
*
* WORDS 1-2 - QUEUEING AREA FOR *CTI* RECOVERY
* ROUTINE.
*
* WORD 3 - 24/ , 18/*TST* ORDINAL,
* 18/*TST* ADDRESS
*
* WORD 4 - 18/ , 6/BI, 18/TS, 18/RA
* WHERE BI = TYPE OF BATCH ACCESS.
* TS = *TAF* STORAGE AREA ADDRESS.
* RA = RETURN ADDRESS.
*
* WORD 5 - RECOVERY REQUEST STATUS.
*
* WORD 7 - OLDID.
*
* WORD 9 - NEWID.
*
* WORD 11 - TRANSACTION TYPE.
*
* WORD 13 - STEP.
*
* USES X - ALL.
* A - 1, 2, 3, 5, 6, 7.
* B - 2, 3, 4.
*
* CALLS COD, QTW, RFB, SNM, STST.
*
* MACROS MESSAGE.
* IF *TAF* HAS BEEN IDLED DO NOT ALLOW ACCESS
* AND RETURN IDLE STATUS.
VBA SA3 IDLA
ZR X3,VBA1 IF *TAF* IS NOT TO BE IDLED
SX3 JSTI
SB3 X5 RETURN ADDRESS
JP B3 RETURN WITH *TAF* IDLE STATUS
* FIND USER IN TERMINAL STATUS TABLE.
VBA1 SX6 B6 SAVE RECOVERY REQUEST AREA ADDRESS
RJ STST SEARCH *TST* FOR TERMINAL/USER NAME
VBA2 SB3 X5 RETURN ADDRESS
SB6 X6 RESTORE RECOVERY REQUEST AREA ADDRESS
NZ X3,VBA3 IF USER NAME IN *TST*
SX3 JSNV
JP B3 RETURN WITH USER NOT VALID STATUS
* IF ANOTHER USER ACTIVE, RETURN USER ACTIVE STATUS.
VBA3 BX6 X3 *TST* ORDINAL
SX2 A3-TSTNW *TST* ENTRY ADDRESS
LX6 BRTOS-17
BX6 X6+X2
SA6 B6+BRTOW SAVE *TST* ORDINAL AND ADDRESS
SA3 X2 *TST* ENTRY
ERRNZ TSAUW IF USER ACTIVE FLAG NOT IN WORD ZERO
LX3 59-TSAUS
PL X3,VBA4 IF USER NOT ACTIVE
SX3 JSUA
JP B3 RETURN WITH USER ACTIVE STATUS
VBA4 LX3 59-TSARS-59+TSAUS
PL X3,VBA8 IF RECOVERY NOT REQUIRED
* BUILD RECOVERY REQUEST.
LX1 BRBIS-5 BATCH-CRM/BTRAN INDICATOR
SX2 B5
LX2 BRTSS-17
BX1 X1+X2 ADD *TAF* STORAGE AREA ADDRESS
SX2 B3
BX6 X1+X2 ADD RETURN ADDRESS
SA6 B6+BRBIW SAVE INPUT PARAMETERS
ERRNZ BRBIW-BRTSW FIELDS NOT IN SAME WORD
ERRNZ BRTSW-BRRAW FIELDS NOT IN SAME WORD
SX6 VBAA FWA OF *TSTAT* KEYWORDS
SX7 B6+BRRSW VALUE RETURN LOCATION
VBA5 SA7 X7 RETURN VALUE IN ARGUMENT ARRAY
SA6 A7+B1 ADDRESS OF KEYWORD
SX6 X6+B1 INCREMENT KEYWORD LOCATION
SX7 A6+B1 INCREMENT VALUE LOCATION
SX2 X6-VBAB
NZ X2,VBA5 IF NOT END OF ARGUMENT ARRAY
SX6 B0
SA6 A6 STORE END OF ARRAY
* QUEUE RECOVERY REQUEST.
SX6 B0
SA6 B5+QRTCW CLEAR COMPLETE BIT
SX1 A6 EVENT ADDRESS
SB3 B6 QUEUEING AREA ADDRESS
SX2 B0 SHIFT COUNT FOR COMPLETE BIT
BX3 X3-X3 SUBCONTROL POINT NUMBER
SX4 QTEV EVENT TYPE
BX5 X5-X5 NOT A TIMED EVENT
SB4 B0 QUEUE AT END OF QUEUE
SX6 VBA6 EVENT COMPLETE ADDRESS
RJ QTW QUEUE *TAF* WORK
* REQUEST RECOVERY INFORMATION.
SA1 B6+BRTSW *TAF* STORAGE AREA ADDRESS
LX1 BRTSN-1-BRTSS
SB3 X1
SA5 VBAC *REC* SYSTEM REQUEST
SX1 B6+BRRSW
BX5 X5+X1 ADD ARGUMENT ARRAY ADDRESS
SX6 B0 SUBCONTROL POINT NUMBER
SA1 B6+BRTOW
LX5 -18 POSITION REQUEST FOR CALL TO *TFP*
LX1 BRTON-1-BRTOS
SX7 X1 *TST* ORDINAL
ERRNZ BRTON-18 *TST* ORDINAL NOT 18 BITS
SB5 B0 SUBCONTROL POINT RA
EQ TFP *TSTATUS* RECOVERY REQUEST
* RECOVERY REQUEST COMPLETE.
VBA6 SB6 B3
SA1 B6+BRRAW
ERRNZ BRRAS-17 RETURN ADDRESS DOES NOT START IN BIT 17
SB3 X1 RESTORE RETURN ADDRESS
LX1 BRTSN-1-BRTSS
SB5 X1 RESTORE *TAF* STORAGE AREA ADDRESS
ERRNZ BRTSN-18 *TAF* STORAGE ADDRESS NOT 18 BITS
ERRNZ BRTSW-BRRAW FIELDS NOT IN SAME WORD
LX1 BRBIN-1-BRBIS-BRTSN+1+BRTSS RESTORE ACCESS TYPE
SA2 A1+B1 RECOVERY REQUEST STATUS
ERRNZ BRRAW-BRRSW+1 FIELDS NOT ADJACENT
ERRNZ BRRAW-BRRSW+1 IF STATUS NOT IN NEXT WORD
SX2 X2-TSNE
ZR X2,VBA7 IF COMPLETE WITH NO ERROR
SX1 X2
RJ COD CONVERT ERROR TO DISPLAY CODE
BX1 X4
SB2 1RX REPLACEMENT CHARACTER
SB3 DAYB
SB5 -VBAD
RJ SNM MOVE ERROR CODE TO MESSAGE
SA1 B6+BRTAW
SA1 X1+TSTNW TERMINAL/USER NAME
MX0 TSTNN
BX1 X0*X1
SB2 1RY REPLACEMENT CHARACTER
SB5 DAYB
RJ SNM MOVE USER NAME TO MESSAGE
MESSAGE DAYB ISSUE DAYFILE MESSAGE
SA1 B6+BRRAW
ERRNZ BRRAS-17 RETURN ADDRESS DOES NOT START IN BIT 17
SB3 X1 RESTORE RETURN ADDRESS
LX1 BRTSN-1-BRTSS
SB5 X1 RESTORE *TAF* STORAGE AREA ADDRESS
ERRNZ BRTSN-18 *TAF* STORAGE ADDRESS NOT 18 BITS
SX3 JSRE
JP B3 RETURN WITH REQUEST ERROR STATUS
* IF A BATCH *CRM* USER IS NOT CURRENTLY
* ACCESSING USERNAME, RETURN ACCESS ERROR.
VBA7 MX3 -BRBIN
SA2 B6+BRTRW TRANSACTION TYPE
BX1 -X3*X1
BX2 X2-X1
ZR X2,VBA8 IF SAME TYPE OF ACCESS
SX3 JSAT
JP B3 RETURN WITH DIFFERENT ACCESS ERROR
* SET USER ACTIVE IN *TST*.
VBA8 SA2 B6+BRTAW SAVED *TST* INFORMATION
SB2 X2 *TST* ADDRESS
ERRNZ BRTAS-17 *TST* ADDRESS DOES NOT START IN BIT 17
MX1 TSAUN
LX1 TSAUS-59
SA2 B2 *TST* ENTRY
ERRNZ TSAUW USER ACTIVE NOT IN WORD ZERO OF *TST*
ERRNZ TSAUW IF USER ACTIVE NOT IN WORD ZERO
BX6 X1+X2 SET USER ACTIVE IN *TST*
SA6 A2
SX3 JSRC USER VALID STATUS
JP B3 RETURN
VBAA DATA 10HOLDID *TSTAT* KEYWORDS
DATA 10HNEWID
DATA 10HTRAN
DATA 10HSTEP
BSSZ 1
VBAB EQU *
VBAC VFD 24/3LCTI,18/RFTS,18/0 *REC* SYSTEM REQUEST
VBAD DATA C* TSTAT REQUEST RECEIVED ERROR XXX FOR YYYYYYY.*
TITLE MISCELLANEOUS ROUTINES.
AIQ SPACE 4,10
** AIQ - AGE INPUT QUEUE PRIORITIES.
AIQ SUBR ENTRY/EXIT
SA1 RTLW SEARCH REQUESTED TASK LIST (INPUT QUEUE)
MX4 1
SB5 B0
IX1 X1+X4 LOOKING FOR ZERO BITS
LX4 -12
AIQ1 NX1 B4,X1 FIND A RESERVED RTL ENTRY
SB4 B4+B4 TWO WORDS PER ENTRY
IX1 X4+X1
SB5 B5+B4
SB3 B5-RTLL
PL B3,AIQX IF END OF QUEUE
* INCREMENT INPUT QUEUE PRIORITY BY ONE.
SA2 B5+RTL
MX6 -6
LX2 -18
BX3 -X6*X2 MAXIMUM PRIORITY
LX2 -6
BX5 -X6*X2 CURRENT PRIORITY
BX7 X5-X3
ZR X7,AIQ1 IF MAXIMUM = CURRENT PRIORITY
BX2 X6*X2 CLEAR OLD CURRENT PRIORITY
SX7 X5+B1 INCREMENT OLD PRIORITY BY ONE
BX7 -X6*X7
BX6 X2+X7 NEW CURRENT PRIORITY
LX6 24
SA6 A2
JP AIQ1 LOOP
ASN SPACE 4,10
** ASN - ASSIGN SEQUENCE NUMBER.
*
* ENTRY (X1) = *TST* TERMINAL ORDINAL.
*
* EXIT (X6) = ASSIGNED SEQUENCE NUMBER.
*
* USES X - 2, 3, 6, 7.
* A - 2, 6.
*
* CALLS EXIT, STF.
ASN2 MX7 -TFIDN-TFTSN USER SEQUENCE NUMBER MASK
BX6 -X7*X6
ASN SUBR ENTRY/EXIT
SA2 TSEQ UPDATE NUMBER OF TRANSACTIONS
SX7 B1
IX6 X2+X7
SA6 TSEQ
* IF RECOVERY IS NOT INSTALLED, THE NUMBER OF TRANSACTIONS
* EQUALS THE TRANSACTION SEQUENCE NUMBER. IF RECOVERY IS
* INSTALLED OBTAIN THE SEQUENCE NUMBER FROM THE TERMINAL
* NETWORK FILE.
.A IFGE IPTAR,1 IF RECOVERY INSTALLED
RJ STF SEARCH TERMINAL FILE FOR TERMINAL ORDINAL
ZR B4,ASN1 IF TERMINAL NOT FOUND
SA2 A2+TFTSW SEQUENCE NUMBER
SX7 B1 UPDATE SEQUENCE NUMBER
IX6 X2+X7
BX3 X6
LX3 59-TFTSS LEFT JUSTIFY SEQUENCE NUMBER
SA6 A2+
PL X3,ASN2 IF NO OVERFLOW, RETURN SEQUENCE NUMBER
* ON SEQUENCE NUMBER OVERFLOW, SET SEQUENCE NUMBER TO ONE.
MX7 59-TFTSS
ERRNZ TFTSN-1-TFTSS IF NUMBER NOT LEFT JUSTIFIED
BX6 X7*X2 CLEAR OLD SEQUENCE NUMBER
SX1 B1
IX6 X6+X1
SA6 A2+
EQ ASN2 RETURN SEQUENCE NUMBER
ASN1 RJ EXIT *TAF* INTERNAL ERROR
.A ELSE
EQ ASN2 RETURN SEQUENCE NUMBER
.A ENDIF
CIC SPACE 4,10
** CIC EXTRACT WORD(S) FROM NON MASS STORAGE ASSOCIATED
* CIRCULAR BUFFER, AND PLACE INTO A WORKING BUFFER.
*
* ENTRY B5 = FET FOR BUFFER
* B6 = ADDRESS OF WORKING BUFFER
* B4 = WORDS / ENTRY
*
* EXIT (X1) = LAST WORD TRANSFERED
*
* USES X - 1, 2, 3, 6, 7
* A - 1, 2, 3, 6
* B - 3, 4, 5, 6
CIC PS ENTRY/EXIT
SX7 -B4 COMPLEMENT OF WORDS TO PICK UP
SA3 B5+B1 FIRST
SA1 A3+B1 IN
SA2 A1+B1 OUT
SB3 X1
SA1 A2+B1 LIMIT
SB4 X2
SB5 X1
CIC1 EQ B4,B3,CIC3 OUT = IN, END OF BUFFER INFO
SA1 B4 READ FIRST WORD
BX6 X1
SB4 B4+B1 (OUT + 1)
NE B4,B5,CIC2 IF (OUT + 1) .NE. LIMIT
SB4 X3 (OUT + 1) = FIRST
CIC2 SA6 B6 STORE WORD
SX7 X7+1
SB6 B6+B1 ADVANCE WORKING BUFFER
NZ X7,CIC1 LOOP TO FILL WORKING BUFFER
SX6 B4
SA6 A2 STORE OUT
EQ CIC *RETURN
CIC3 SX6 B4
SA6 A2 SET OUT
EQ CIC *RETURN
CLJF SPACE 4
** CLJF CHECK FOR COMPLETION OF ANY NON BUFFERED JOURNAL FILE
* WRITES.
*
* USES X - 1, 2, 3, 4, 6, 7
* A - 1, 2, 3, 6, 7
* B - 6
CLJF PS
CLJF1 SA1 JRNLB WORD CONTAINING JOURNAL FILE LOCKS
ZR X1,CLJF *RETURN - NO LOCKS OUTSTANDING
MX3 -18
SB6 X1
ZR B6,CLJF2 IF NO ONE USING JOURNAL FILE
SA2 B6
LX2 -1
PL X2,CLJF2 IF FILE STILL BUSY
BX6 X3*X1
SA6 A1 CLEAR LOCK ON FILE
EQ CLJF5 CLEAR LOCK OUT ON STORAGE MOVE
CLJF2 LX1 -18
SB6 X1
ZR B6,CLJF3 IF NO ONE USING JOURNAL FILE
SA2 B6
LX2 -1
NG X2,CLJF4 IF FILE NOT BUSY - CLEAR LOCK OUT
CLJF3 LX1 -18
SB6 X1
ZR B6,CLJF *RETURN
SA2 B6
LX2 -1
PL X2,CLJF *RETURN - FILE STILL BUSY
BX6 X3*X1 CLEAR LOCK OUT ON JOURNAL FILE
LX6 18+18
SA6 A1+
EQ CLJF5 CLEAR LOCK OUT ON STORAGE MOVE
CLJF4 BX6 X3*X1 CLEAR LOCK OUT ON JOURNAL FILE
LX6 18
SA6 A1+
* CLEAR LOCK OUT ON STORAGE MOVE FOR SUB CONTROL POINT
CLJF5 SA2 B6+5
SX7 B1
MX1 1
SB6 X2 SUP CP USING FILE
BX6 X3*X2
SA3 B6 CONTROL WORD 1 OF SUB CP
BX7 X6+X7
SX4 X3-NUAPL START OF TASK CONTROL AREA
SA7 A2 CLEAR SUB CP ADDRESS
BX6 -X1*X3
SA1 X4+JTSC RESTORE WORDS DESTROYED BY HEADER
SA6 B6 CLEAR STORAGE MOVE LOCK OUT
IX2 X1+X4
SA1 A1+B1 WORD FROM FWA-1 OF JOURNAL DATA
SA3 A1+B1
BX6 X1
LX7 X3
SA6 X2-1 RESTORE 1ST WORD
SA1 A3+B1
SA7 A6-B1
BX6 X1
SA6 A7-B1 RESTORE 3RD WORD
SB3 CLJF6
SX3 B5
JP RCPU REQUEST CPU FOR SUB CONTROL POINT
CLJF6 SB5 X3 RESTORE (B5)
JP CLJF1 CHECK FURTHER JOURNAL FILES FOR COMPLETION
CML SPACE 4,10
** CML - COMPUTE MESSAGE LENGTH.
*
* ENTRY (X3) = NUMBER OF MESSAGE UNITS.
* (X4) = MESSAGE UNIT.
*
* EXIT (X1) = MESSAGE LENGTH IN WORDS.
* (X6) = REMAINDER IN BITS OF MESSAGE OVER LAST WORD.
*
* USES X - 0, 1, 2, 6.
* B - 6.
CML SUBR ENTRY/EXIT
MX0 -6
SX6 X4-2 MESSAGE UNITS 0 AND 1 ARE NOT USED
SX2 6
IX6 X2*X6 COMPUTE SHIFT COUNT FOR BITS PER UNIT
SB6 X6
* (X2) CONTAINS THE BITS PER MESSAGE UNIT FOR EACH TYPE OF
* MESSAGE UNIT. MESSAGE UNIT 4 HAS 6 BITS PER UNIT.
* MESSAGE UNIT 3 HAS 12 BITS PER UNIT. MESSAGE UNIT 2
* HAS 8 BITS PER UNIT.
SX2 61410B
AX2 B6
BX0 -X0*X2 BITS PER MESSAGE UNIT
SX6 60 60 BITS PER WORD
IX2 X0*X3 MESSAGE LENGTH IN BITS
PX6 X6
SX0 X2
PX0 X0
NX6 X6
FX6 X0/X6 MESSAGE LENGTH IN WORDS
UX6,B6 X6
LX1 B6,X6
PX0 X1 COMPUTE REMAINDER
SX6 60
PX6 X6
DX0 X6*X0
UX6 X0
IX6 X2-X6 REMAINDER
ZR X6,CMLX IF REMAINDER .EQ. ZERO, RETURN
SX1 X1+1
EQ CMLX RETURN
CORU SPACE 4
* CORU - IF THERE IS MORE THAN *FCMFL* FIELD LENGTH NOT IN USE
* CORU WILL RELEASE UP TO *REDFL* FROM THE LAST SUB CONTROL
* POINT. CORU ALSO WILL RELEASE THE REUSEABLE TASK WITH THE
* HIGHEST RA EVERY *RRTTL* MILLESECONDS.
CORU PS
SA1 AVAILCM CURRENT FREE CORE
SX7 X1-FCMFL
TB6 0,VCPA FIRST SUB CONTROL POINT
NG X7,CORU3 IF NOT ABOVE THRESHOLD
* FIND THE LAST SUB CONTROL POINT AND RELEASE SOME FIELD LENGTH.
CORU1 SA2 B6+2 SUB CP STATUS WORD 3
SB6 X2+ NEXT SUB CP
NZ B6,CORU1 LOOP TILL END OF CHAIN REACHED
SA1 A2-2 SUB CP STATUS WORD 1
LX1 -36
SX2 X1 FREE CORE COUNT
SX4 REDFL AMOUNT OF MEMORY TO RELEASE
IX3 X2-X4
PL X3,CORU2 IF AT LEAST *REDFL* AVAILABLE AT LAST SUB
SX4 X2 RELEASE ALL FREE CORE AFTER SUB CP
CORU2 ZR X4,CORU3 NO FREE CORE TO DROP
SB6 A1+ SUB CP STATUS WORD 1
SA1 CURFL
IX7 X1-X4 DECREMENT TRANEX FIELD LENGTH STATUS WORD
MEMORY CM,MRSW,R,X7 REDUCE TAF FL
SA1 AVAILCM AVAILABLE CM
SA2 MRSW GET STATUS WORD
MX3 30
BX6 X3*X2 NEW FL
SA4 CURFL COMPUTE INCREMENT OF FL
LX6 30
IX4 X6-X4
IX7 X1+X4 NEW AVAILABLE CM
SA6 A4 SAVE *CURFL*
SA7 A1+ UPDATED AVAILABLE CM
SA1 B6 SUB CP STATUS WORD 1
LX1 SCFCN-1-SCFCS
IX7 X1+X4
LX7 59-59-SCFCN+1+SCFCS
SA7 A1+ DECREMENT FREE COUNT
SA1 MTIME TIME OF LAST FIELD LENGTH REDUCTION
SA2 ITIME
NZ X1,CORU3 IF NO FL INCREASE SINCE LAST DECREASE
BX6 X2
SA6 A1
* CHECK IF TIME TO ARBITRARILY GET RID OF A REUSABLE TASK
CORU3 SX7 RRTTL TIME INTERVAL TO EVICT A RELEASEABLE TASK
SA1 ITIME CURRENT TIME
SA2 ETIME LAST TIME A TASK WAS ARBITRARILY RELEASED
MX3 -36
IX2 X1-X2
BX2 -X3*X2 MILLESECONDS SINCE LAST TASK RELEASE
IX3 X7-X2
TB5 0,VCPA FIRST SUB CONTROL POINT
SB4 B1
BX5 X5-X5 SUB CONTROL POINT ACTIVE FLAG
PL X3,CORU4 IF NOT TIME TO CHECK REUSEABLE TASKS
BX7 X1
SB4 B0
SA7 A2
SB6 B0
* EVICT RELEASEABLE TASK WITH THE LARGEST RA.
CORU4 SA1 B5
SA2 B5+B1
LX1 59-58
SA3 A2+B1 LINK WORDS TO NEXT SUB CONTROL POINT
LX2 -36
PL X1,CORU5 IF NOT A RELEASEABLE TASK
SB6 B5
CORU5 SX2 X2
ZR X2,CORU6 IF SUB CONTROL POINT NOT ACTIVE
SX5 B1
CORU6 SB5 X3+ NEXT SUB CONTROL POINT
NZ B5,CORU4 IF NOT AT END OF SUB CONTROL POINTS
EQ B4,B1,CORU7 IF NOT TIME TO RELEASE TASK
ZR B6,CORU7 IF NO RELEASEABLE SUB CONTROL POINTS
SB3 CORU RETURN ADDRESS
JP ESCP1 RELEASE TASK
* CHECK IF TRANEX IDLE AND TIME TO ROLLOUT.
CORU7 NZ X5,CORU IF SUB CONTROL POINT(S) ACTIVE
SA1 TROF
NZ X1,CORU IF ROLLOUT IS PROHIBITED
SA2 PBCA
NZ X2,CORU IF BATCH CONCURRENCY JOB ACTIVE
SA1 SFRC
NZ X1,CORU IF *SFCALL* REQUEST OUTSTANDING
SA2 TAFQ
SX2 X2+
NZ X2,CORU IF JOBS TO PROCESS IN *TAFQ*
SA3 RDCBD LAST INPUT TIME
SA4 ITIME CURRENT TIME
SA5 ITRTL
MX2 -36
IX1 X4-X3
BX6 -X2*X1 TIME SINCE LAST INPUT
IX3 X5-X6
PL X3,CORU NOT TIME TO ROLLOUT
SA1 RTLW RTL RESERVATION WORD
MX2 12
BX1 -X2*X1 GET RESERVATION BITS
CX1 X1
SX1 X1-NRTL
NZ X1,CORU DONT ROLLOUT - TASK(S) SCHEDULED
SA1 IDLA
ZR X1,TRO IF NOT TO IDLE DOWN
SB5 B0+
RJ SRO SEARCH ROLLOUT TABLE
NZ B5,TRO IF ROLLOUT TABLE RESERVED
TX5 0,VNCMB NUMBER OF COMMUNICATION BLOCKS
MX7 12
TA2 0,VCBRT C.B. BIT MAP
BX7 -X7*X2
CX3 X7
IX4 X3-X5
NZ X4,TRO IF COMMUNICATION BLOCK RESERVED
CORU8 SX2 CORU8 RETRY ADDRESS
SB6 CORUA FWA OF PARAMETER
SB5 B6+2 FWA OF TAF STORAGE
RJ SFR ISSUE *SFCALL* REQUEST
RJ NOF ISSUE *NETOFF* REQUEST
* IDLE DOWN TAF.
SA1 CURFL SET RFL TO CURRENT FL
SETRFL X1
ENDRUN
* *SFCALL* *SF.EXIT* PARAMETERS.
CORUA VFD 6/0,12/0,18/0,18/0,6//COMSSCP/EXIT
BSSZ 4 *SFCALL* PARAMETERS
CSM SPACE 4,10
** CSM - PROCESS COMMAND/STATUS MESSAGES.
*
* *CSM* PROCESSES COMMAND/STATUS MESSAGES RECEIVED FROM
* *LIBTASK* AND *DMREC*.
*
* ENTRY (X4) = FIRST WORD OF STATUS MESSAGE.
* (A4) = FWA OF STATUS MESSAGE.
*
* EXIT TO *TSSC* IF PROCESSING COMPLETE.
*
* USES A - 1, 2, 4, 7.
* B - 3, 4, 5.
* X - 0, 1, 2, 3, 4, 5, 7.
*
* CALLS JRNL, LOVL.
*
* MACROS MESSAGE.
CSM UX2,B3 X4 GET FUNCTION CODE
SX3 B3
LX3 -1
LX4 17-35
SB4 X3-CSMJTL
PL B4,CSM1 IF INCORRECT FUNCTION
SB3 X3 JUMP TABLE INDEX
BX7 X7-X7
JP B3+CSMJT JUMP THRU TABLE TO FUNCTION PROCESSOR
* CSM JUMP TABLE.
CSMJT PL X3,CSM3 IF TRANSACTION SUBSYSTEM PRESENT
EQ CSM1 INCORRECT FUNCTION
PL X3,CSM4 IF LIBTASK(TT) DIRECTORY UPDATE REQUEST
EQ CSM1 INCORRECT FUNCTION
PL X3,CSM1 IF INCORRECT FUNCTION
EQ CSM5 COMMUNICATION SUBSYSTEM INITIALIZATION
PL X3,CSM1 IF INCORRECT FUNCTION
EQ CSM6 IF *CRM* BATCH RECOVERY RESPONSE
CSMJTL EQU *-CSMJT LENGTH OF TABLE
* PROCESS INCORRECT *SIC* REQUEST.
CSM1 LX4 18
SB3 CSM2 RETURN ADDRESS
SX3 X4 LENGTH OF MESSAGE
SB4 7 INDICATES POSSIBLE MALICIOUS USER
SB5 PJRNL
SX5 A4 FWA OF MESSAGE
LX3 35-17
SX7 A4+ SAVE BUFFER ADDRESS
BX0 X0-X0 NO COMMUNICATION BLOCK
BX5 X5+X3 SET BUFFER ADDRESS AND LENGTH
SA7 CSMB
EQ JRNL PROCESS JOURNAL ENTRY
CSM2 MESSAGE CSMA NOTE THAT A BAD COMMAND WAS RECEIVED
SA2 CSMB RESTORE BUFFER ADDRESS
BX7 X7-X7 CLEAR INTER-CONTROL POINT BUFFER
SA7 X2
EQ TSSC ENTER TASK SWITCHING LOOP
* PROCESS CHECK ON STATUS OF TRANSACTION EXECUTIVE.
CSM3 SA7 A4 CLEAR INTER-CONTROL POINT BUFFER
EQ TSSC TIME SLICE TASKS
* PROCESS REQUEST FOR TASK DIRECTORY UPDATE.
CSM4 SA1 LOVF OVERLAY ENTRY POINT NAME
RJ LOVL LOAD/EXECUTE OVERLAY
* A COMMUNICATION SUBSYSTEM INITIALIZATION HAS TAKEN PLACE.
CSM5 SA7 A4+ CLEAR INTER-CONTROL POINT BUFFER
SA1 LOVG
RJ LOVL LOAD/EXECUTE OVERLAY
EQ TSSC
* PROCESS RESPONSE FROM *CRM* BATCH RECOVERY PROGRAM.
CSM6 SX7 A4 SAVE INPUT BUFFER ADDRESS
SA7 CSMB
MX0 -18
SA1 A4+
BX1 -X0*X1
SB3 X1 MESSAGE LENGTH
SB4 B3-CSMDL
SB5 B3-B1
SX5 B0 FUNCTION CODE
NG B5,CSM2 IF MESSAGE TOO LONG
CSM7 SA1 A4+B5
BX7 X1
SA7 CSMD+B5 MOVE MESSAGE TO TEMPORARY BUFFER
SB5 B5-B1
PL B5,CSM7 IF NOT ENTIRE MESSAGE MOVED
SX2 B3
SA1 CSME PROTOTYPE HEADER
BX7 X1+X2
SA7 A7
SB3 A7+
SA4 CSMC TASK NAME
RJ TRN SCHEDULE TASK
SA1 CSMB
ZR X0,TSSC IF TASK NOT SCHEDULED
SX7 B0
SA7 X1 CLEAR THE ORIGINAL INPUT BUFFER
EQ TSSC EXIT
CSMA DATA C* CSM - INCORRECT COMMUNICATION FUNCTION.*
CSMB CON 0 STORAGE FOR BUFFER ADDRESS
CSMC DATA 7LCRMTASK
CSMD BSS 4 TEMPORARY BUFFER FOR *SIC* MESSAGE
CSMDL EQU *-CSMD
CSME VFD 1/1,2/0,1/1,7/0,1/1,12/0,18/0,18/0
DCPT SPACE 4,10
** DCPT - DROP CPU FOR TASK.
*
* ENTRY (B7) = CONTROL POINT ADDRESS.
*
* EXIT (B2) = FWA OF TASK SYSTEM AREA.
* (B7) = FWA OF TASK SUBCP TABLE.
* (SREG) = 24/0,18/(B2)/18/(B7).
*
* USES A - 1, 2, 6, 7.
* B - 2, 3, 4, 6, 7.
* X - ALL.
*
* CALLS EXIT.
DCPT SUBR ENTRY/EXIT
MX0 1
TX2 B7+CPAL,-VCPA CONTROL POINT ADDRESS
LX0 -12
SA1 CR CPU SWITCHING WORD
AX2 SCPAL
SB4 X2 CONTROL POINT NUMBER
AX3 X0,B4
BX7 -X3*X1 MASK OFF REQUEST CPU STATUS
SA7 A1
BX2 X3*X1
NZ X2,DCPT1 IF CPU SELECTED FOR THIS SUBCP
RJ EXIT
DCPT1 ZR X7,DCPT4 IF IDLE
* SEARCH CPU REQUEST WORD FOR NEXT SUBCP.
SA2 A1+B1 SWITCH MASK
BX3 X3-X3
SB3 B0
BX6 -X2*X7 SET LOWER CONTROL POINTS
SB7 SCPAL
PX4 X6
BX5 X5-X5
EQ DCPT3 ENTER LOOP
DCPT2 SX3 X3+B6 SET CP ADDRESS
LX6 X3,B7
TA1 X6-CPAL,VCPA
NO
SA1 X1-NUAPL+CB1C C.B. HEADER WORD 1
UX1,B4 X1 CHECK PRIORITY
LE B4,B3,DCPT3 IF PREVIOUS JOB NOT HIGHER
BX5 X6 SET NEW JOB
SB3 B4
DCPT3 BX1 -X0*X4 REMOVE JOB FROM STACK
NX4,B6 X1 SET NEXT JOB
NZ X4,DCPT2 IF MORE JOBS IN STACK
SX3 B0 SET UPPER CONTROL BITS
BX1 X2*X7
PX4 X1
SX2 B0
NZ X1,DCPT3 IF MORE JOBS REMAIN TO BE EXAMINED
* BEGIN A NEW SUBCP.
TA2 X5-CPAL,VCPA
SB7 A2
SX7 A2
SB2 X2-NUAPL SUB CP RA
SX2 B2+
LX2 18
BX7 X2+X7
SA7 SREG
NZ B3,DCPTX IF TASK FOUND, RETURN
* IDLE CPU.
DCPT4 BX6 X6-X6 CLEAR TASK POINTERS
SB2 B0
SA6 SREG
SB7 B0
EQ DCPTX RETURN
ECET SPACE 4,10
** ECR - PROCESS EXTENDED MEMORY ERROR WHILE LOADING TASK.
*
* ENTRY - SEE OVERLAY ROUTINE *ECE*.
ECR SA1 LOVD OVERLAY ENTRY POINT
SA7 ECRA PARAMETERS FOR ECS ERROR OVERLAY
RJ LOVL LOAD/EXECUTE ECS TASK READ ERROR OVERLAY
* RE-ENTRY POINT IF ATTACH ERROR ON TASK LIBRARY.
ECR1 SX7 ECR2 RETURN ADDRESS
SX6 25 DELAY COUNT
LX6 18
BX7 X6+X7
EQ TRCL2 RECALL TASK FOR DELAY COUNT
ECR2 LX1 -18
SX6 X1-1
MX7 -18
ZR X6,ECR3 IF DELAY COUNT EXPIRED
BX7 X7*X1 CLEAR OLD COUNT VALUE
BX7 X7+X6
LX7 18
EQ TRCL2 DELAY
ECR3 SA1 LOVD ENTRY POINT NAME
SX2 B1 NO EXECUTE FLAG
BX1 X1+X2
RJ LOVL LOAD ECS TASK READ ERROR OVERLAY
EQ ECE9 PROCESS ECS READ ERROR
ECRA BSS 1 6/ ,18/EDT,18/FL,18/SCP
ESCP SPACE 4,10
** ESCP - END SUBCONTROL POINT PROGRAM.
* REMOVE SUB CP FROM ACTIVE CHAIN AND PLACE INTO FREE
* SUBCP CHAIN. ALSO UPDATE CORE USAGE POINTERS.
*
* ENTRY (B7) = SUB CONTROL POINT ADDRESS
* (B6) .NE. (B7) IF RETURN DESIRED
* (B3) = RETURN ADDRESS
* (A1) = ADDRESS OF SUBCP WORD TWO.
* (X7) = STATUS WORD 2 OF SUB CP
*
* EXIT TO DCPT IF RETURN NOT REQUESTED
*
* USES X - 0, 1, 2, 3, 4, 5, 6, 7
* A - 1, 2, 3, 4, 5, 6, 7
* B - 6
ESCP SA3 B7+2 GET TASK ATTRIBUTES AND STATUS
MX6 -12
LX3 12
SA2 B7 CONTROL WORD ONE OF SUBCP
BX3 -X6*X3
SA5 AVAILCM
TA3 X3+TLTAW-TLDAW,VTLD TASK ATTRIBUTES AND STATUS
SX6 -B1
LX3 59-TLQUS
BX1 X7
PL X3,ESCP0.1 IF Q-ATTRIBUTE NOT SPECIFIED
RJ ITA DECREMENT TASK ACTIVE COUNT
ESCP0.1 BX7 X1
LX7 -1
SB6 B7 SUB CONTROL POINT ADDRESS
LX2 -18
SX3 X2+NUAPL CORE USED BY SUB CP
IX6 X5+X3 ADD TO AVAILABLE CORE COUNT
SA6 A5
PL X7,ESCP1 DO NOT REUSE TASK
LX7 -1
SX3 B1
LX2 18
SA7 A1+ SUBCONTROL POINT CONTROL WORD 2
LX3 59-1
TX6 B7+CPAL,-VCPA
BX7 X2+X3
AX6 SCPAL
SA4 SCHDA REUSABLE TASK STATUS WORD
LX3 1-12 POSITION AT BIT 47
SB6 X6
SA7 B7 SET REUSABLE BIT IN CONTROL WORD 1
AX3 X3,B6
BX6 X3+X4
SX7 B1 REQUEST TASK SCHEDULER
SA6 A4+ BIT SET IN REUSABLE TASK STATUS WORD
SA7 RSCH
RJ DCPT DROP CPU FOR TASK
EQ TSSC TIME SLICE SUBCP
* RELEASE SUB CONTROL POINT AND ITS CORE
* ENTRY (B6) = SUB CONTROL POINT TO RELEASE
ESCP1 TX6 B6+CPAL,-VCPA
SA4 SCHDA CLEAR BIT IN REUSEABLE TASK LIST
AX6 SCPAL
SX3 B1+
LX3 -1-12 POSITION AT BIT 47
SB1 X6+ SHIFT COUNT
AX3 X3,B1
BX6 -X3*X4 MASK OUT BIT - IF SET
SB1 1
SA6 A4+
SX7 B6
TA2 0,VNACP NEXT FREE SUB CONTROL POINT
BX6 X2
SA3 B6
SA7 A2 ADD RELEASED SUB CP TO START OF CHAIN
LX3 -18
SA6 B6 SET CHAIN POINTER IN CONTROL POINT AREA
SX7 X3+NUAPL TOTAL FL RELEASED
LX3 -18
SX2 X3 FREE CORE AFTER RELEASED SUB CP
IX4 X2+X7 TOTAL CONTIGOUS CORE
* FIND PREVIOUS SUB CP AND INCREMENT ITS FREE CORE COUNT.
SA2 B6+2 THIRD STATUS WORD OF SUB CP BEING DROPPED
MX5 -18
LX2 -18
SA3 X2+2 THIRD STATUS WORD OF PREVIOUS SUB CP
LX2 18
BX7 X5*X3 REMOVE NEXT SUB CP POINTER
BX6 -X5*X2
IX7 X7+X6 NEW NEXT SUB CP POINTER
SA7 A3
ZR X6,ESCP2 DROPPING AT END OF CHAIN
SA1 X6+2
LX1 -18
BX6 X5*X1 MASK OFF BACKWARD POINTER
SX1 A3-2
BX6 X1+X6 ADD NEW BACKWARD POINTER
LX6 18
SA6 A1+
ESCP2 LX2 -18
SA2 X2+ FIRST STATUS WORD OF PREVIOUS SUB CP
LX2 -36
IX6 X4+X2 ADD IN CORE RELEASED BY DROPPING SUB CP
LX6 36
SX7 B1 REQUEST TASK SCHEDULER
SA6 A2
SA7 RSCH
EQ B6,B7,ESCP3 IF DROP CPU FOR TASK
JP B3 RETURN TO CALLING ROUTINE
ESCP3 RJ DCPT DROP CPU FOR TASK
EQ TSSC TIME SLICE SUBCP
ETSQ SPACE 4
** ETSQ ENTER A TASK INTO THE SCHEDULER QUEUE
*
* ENTRY (X0) = START OF COMMUNICATIONS BLOCK
* (B3) = ALTERNATE EXIT ADDRESS
*
* EXIT (X6) = 0 IF RTL FULL
*
* USES X - 1, 2, 3, 4, 6, 7
* A - 1, 2, 3, 4, 6, 7
* B - 4, 5, 6
ETSQ PS ENTRY/EXIT
TX4 X0,-VCBSA
SA1 X0+2 TASK LIST WORD
MX7 12
SX6 CMBL
BX2 X7*X1 TASK TO BE SCHEDULED
PX4 X4
SX1 B1
LX2 12
LX1 42
TA3 X2+1,VTLD TLD DIRECTORY WORD 3
BX7 X3
LX7 59-TLTOS
PL X7,ETSQ0 IF TASK NOT TURNED OFF
SA2 SCTB GET INDEX FOR *OFFTASK*
LX2 12
TA3 X2+1,VTLD TLD DIRECTORY WORD 3
ETSQ0 NX4 X4
PX6 X6
LX3 24
IX7 X3+X1 BUMP TIMES CALLED COUNT
LX2 -12 REPOSITION TASK ID
LX7 -24
SA7 A3
LX3 -24+2
PL X3,ETSQ4 NOT A CORE RESIDENT TASK
TA1 -3,VTLD
TB6 0,VCPA FIRST SUB CONTROL POINT
SB5 X1+ NUMBER OF CORE RESIDENT TASKS
SA1 B6+2 INITIAL TASK STATUS WORD 3
MX3 12
SB5 B5-B1
SB6 B6+CPAL ADVANCE POINTER TO NEXT SUB CP
BX3 X3*X1 NAME OF CORE RESIDENT TASK
IX3 X3-X2
NZ X3,ETSQ3 NOT A CALL TO INITIAL TASK
TA1 CPAHL,VCPA
SB6 A1+CPACL-1 END OF COMMUNICATION BLOCKS FOR TASK
ETSQ1 ZR X1,ETSQ2 OPEN ENTRY FOUND
SB5 A1
SA1 A1+B1
NE B5,B6,ETSQ1 CHECK NEXT ENTRY
BX6 X6-X6 SET RTL FULL CONDITION TO FORCE TASK RECALL
EQ ETSQ *EXIT - TRY SCHEDULING LATER
* SET UP C.B. TO BE PROCESSED BY INITIAL TASK
ETSQ2 MX2 1
TA4 1,VCPA CONTROL WORD
MX3 1
SX6 B1
LX2 -5 INITIAL LOAD BIT
BX2 X2+X3 SET WAITING FOR CPU BIT
LX4 -36
BX7 X2+X0
SA7 A1 C.B. STATUS WORD
IX6 X4+X6 BUMP C.B. COUNT FOR INITIAL TASK
SB6 A4-B1
LX6 36
SX4 X4 OLD C.B. COUNT
SA6 A4+
NZ X4,ETSQ IF ITASK ACTIVE
SA4 VFSCP FWA OF SUB-CONTROL POINTS
AX4 24
EQ RCPU REQUEST CPU FOR INITIAL TASK
* SEARCH CORE RESIDENT TASKS FOR MATCH TO REQUESTED TASK
ETSQ3 ZR B5,ETSQ4 END OF SEARCH
SA1 B6+B1 SUB CP STATUS WORD 2
SB5 B5-B1
SB6 B6+CPAL
LX1 -36
SX3 X1 C.B.S WAITING FOR TASK
NZ X3,ETSQ3 AT LEAST ONE IS WAITING
SA1 A1+B1
MX7 12
BX3 X7*X1 ID OF CORE RESIDENT TASK
IX3 X3-X2
NZ X3,ETSQ3 NOT SAME TASK
SA4 A1-B1
SX3 B1
SX1 41B WAITING FOR CPU AND INITIAL LOAD BITS
LX4 -36
SX7 X0 COMMUNICATION BLOCK ADDRESS
BX6 X4+X3 SET C.B. COUNT FOR SUB CP
LX1 -6
SA2 A4-1 FIRST WORD OF SUB CP AREA
LX6 36
BX7 X1+X7
SX4 X2-NUAPL START OF TASK CORE
SA6 A4
SA7 A1+B1
SB6 B6-CPAL
EQ RCPU REQUEST CPU FOR TASK
ETSQ4 NX6 X6
SA1 RTLW RTL RESERVATION WORD
FX3 X4/X6 DIVIDE BY C.B. LENGTH
UX6 B4,X3
SB5 0
MX3 1
LX6 B4,X6 C.B. NUMBER
BX1 X1+X3 LOOKING FOR ZERO BITS
SB6 X6
MX7 12
* LOOK FOR SIMILAR TASK ALREADY IN RTL
ETSQ5 NX1 B4,X1
SB4 B4+B4 TWO WORDS PER RTL ENTRY
SB5 B5+B4
SB4 B5-RTLL
PL B4,ETSQ7 NO FURTHER ENTRIES TO CHECK
SA4 B5+RTL READ AN RTL ENTRY
BX6 X7*X4 MASK OFF NAME
SX3 B1
IX6 X6-X2 COMPARE TASK ID
NZ X6,ETSQ6 NOT SIMILAR TASK REQUEST
SX6 X4
ZR X6,ETSQ6 QUEUE LIMIT ALREADY REACHED
SA2 A4+B1 UPDATE ATL POINTERS
IX6 X4-X3
MX7 18
TX4 B6,VATL
BX1 -X7*X2 MASK OFF CURRENT ATL POINTER
SA6 A4 DECREMENT QUEUE COUNT
SA3 X4 ATL ENTRY FOR C.B.
LX4 42
BX6 X1+X4 NEW CURRENT C.B. POINTER
MX7 36
SA6 A2
LX2 18
SX1 B6+B1
BX3 -X7*X3 MASK OFF ANY OLD ATL LINKS
LX1 48
SA4 X2
BX6 X4+X1 SET NEXT ATL POINTER FOR LAST ATL ENTRY
TX7 X2+1,-VATL
LX7 36
SA6 A4
BX6 X3+X7 SET PRIOR ATL POINTER FOR CURRENT ATL ENTRY
SA6 A3
EQ ETSQ *RETURN
ETSQ6 LX3 47
BX1 X3+X1
EQ ETSQ5 CHECK ANOTHER RTL ENTRY
* CREATE A NEW RTL ENTRY
ETSQ7 SA1 A1 RTL RESERVATION WORD
BX6 X6-X6
SX3 B1
NX4 X1,B4 FIND A NONRESERVED ENTRY
SB5 B4-RTLL/RTLLE
GE B5,B0,ETSQ RTL IS FULL
LX3 -13
LX3 X3,-B4
BX6 -X3*X1 RESERVE THE ENTRY
SB4 B4+B4
LX2 12 TLD BIAS FOR REQUESTED TASK
SA6 A1+
MX6 -TLMPN
TA4 X2,VTLD GET SCHEDULING INFORMATION FROM TLD
BX7 -X6*X4 GET MAXIMUM PRIORITY
SA3 A4+B1
LX6 TLBPS-TLBPN+1
BX1 -X6*X3 GET BASE PRIORITY
BX7 X1+X7
MX6 6
LX4 TLFLN-TLFLS-1 GET FIELD LENGTH
MX1 -TLFLN
BX6 X6*X3 RESIDENCE / DESTRUCTIVENESS/ PRIVELEDGES
LX7 18
BX4 -X1*X4
LX4 6
LX6 6
MX1 -TLQLN SET QUEUE LIMIT
BX3 -X1*X3
SX1 X3-1 QUEUE LIMIT
LX2 -12
BX7 X7+X1
LX4 30
BX7 X7+X2 ADD TLD BIAS
TX1 B6,VATL ATL ADDRESS
BX7 X7+X4
SA2 X1 READ ATL ENTRY
MX4 24
LX1 42
SA7 RTL+B4 1ST WORD OF RTL ENTRY
BX6 X6+X1
LX1 -18
BX6 X6+X1 ADD POINTERS TO ATL ENTRIES
SA6 A7+B1 2ND WORD OF RTL ENTRY
BX7 -X4*X2
SA7 A2 CLEAR ANY OLD ATL LINKS
EQ ETSQ *RETURN
EVS SPACE 4,15
** EVS - ACTIVATE A TASK ON AN EVENT.
*
* ENTRY (X7) = EVENT.
*
* EXIT (B4) = ROLT ENTRY IF TASK ACTIVATED.
* = 0 IF NO TASK ACTIVATED.
*
* (B5) = 0 IF TASK SCHEDULED FOR ROLLIN.
* = NON ZERO IF TASK INTERRUPTED IN ROLLOUT.
*
* USES A - 1, 2, 3, 4, 5, 6, 7.
* B - 3, 4, 5, 6.
* X - ALL.
*
* CALLS MSQ, SRO.
EVS SUBR ENTRY/EXIT
MX3 RTTLN
LX3 RTBID-59 MASK FOR ROLT WAIT TIME
BX6 X3 INITIALIZE LONGEST WAIT FOR TASK
SB4 B0 FWA OF TASK WAITING THE LONGEST IF ANY
BX0 X7
SB5 B0+ BEGIN SEARCH OF ROLLOUT TABLE
EVS1 RJ SRO GET FIRST/NEXT ROLLOUT ENTRY
ZR B5,EVS3 IF END OF ROLT
SA5 B5+RTWEV ROLLED EVENT
MX2 -48
LX2 -12
SA4 B5 ROLT ENTRY
BX5 X0-X5
BX5 -X2*X5
NZ X5,EVS1 IF NOT REQUIRED EVENT
NG X4,EVS2 IF ROLLOUT COMPLETE
* INTERUPT ROLLOUT PROCESS.
* CHOOSE TASK IN ROLLOUT PROCESS RATHER THAN TASK WAITING
* LONGEST FOR EVENT TO MINIMIZE OVERHEAD.
MX6 -6
SA4 B5+RTWEV GET SUBCP NUMBER
LX4 -36
BX1 -X6*X4 SUB CONTROL POINT OF UNROLLED TASK
LX1 SCPAL
TA2 X1-CPAL,VCPA SUB CONTROL POINT ADDRESS
MX5 1
SA4 X2-NUAPL+ROSC
BX6 X5+X4 SET ROLLOUT INTERUPTED FLAG
SA6 A4
SB4 B5 ROLLOUT ENTRY SELECTED
JP EVS4
* SAVE TASK THAT HAS WAITED THE LONGEST FOR BST.
* TIME IN ROLT IS TIME THAT TASK IS SCHEDULED FOR ROLLIN.
* TASK WITH LEAST VALUE OF TIME IS TASK THAT HAS WAITED THE
* LONGEST.
EVS2 BX5 X3*X4 ROLLIN TIME FOR ROLT TASK
IX4 X5-X6
PL X4,EVS1 IF TASK HAS NOT WAITED THE LONGEST
BX6 X5 SAVE LONGEST WAIT ON EVENT
SB4 B5 SAVE ADDRESS OF ROLT ENTRY
JP EVS1 GET NEXT ROLT ENTRY
EVS3 ZR B4,EVSX IF NO TASKS IN ROLT WAITING FOR EVENT
SA5 B4 ROLLOUT ENTRY WAITING THE LONGEST
LX5 -18 GET C.B. INDEX
MX6 -12
BX4 -X6*X5 COMMUNICATION BLOCK INDEX
SX5 B4 ADDRESS OF ROLLOUT TABLE ENTRY
TX0 X4,VCBSA COMMUNICATION BLOCK ADDRESS
RJ MSQ PLACE TASK IN SCHEDULING QUEUE
SA1 B4 ROLLOUT TABLE ENTRY
MX7 2 CLEAR TIME AND WAIT FLAGS
LX7 RTBWI-59
BX7 -X7*X1
SA7 A1+
EVS4 MX6 24 CLEAR EVENT ID
SA1 B4+RTWEV
BX6 X6*X1
SA6 A1
EQ EVSX RETURN
FCB SPACE 4,35
** FCB - FORMAT COMMUNICATION BLOCK.
*
* ENTRY (X4) = 1/X,1/X,1/0,1/B,7/0,1/S,12/0,18/X,18/LENG.
* X = FIELD IS NOT USED BY THIS ROUTINE BUT
* IT MAY CONTAIN DATA.
* B = 1 IF BATCH INPUT.
* S = 1 IF SYSTEM ORIGIN.
* LENG = MESSAGE LENGTH IN WORDS + 1.
* (A5)/(X5) = TST W2.
* (X0) = ADDRESS OF COMMUNICATION BLOCK.
* (X3) = TERMINAL ORDINAL.
* (B4) = INPUT BLOCK COUNT.
* (X7) = SEQUENCE NUMBER IF (B4).NE.1.
*
* EXIT COMMUNICATION BLOCK.
* (W1) = 12/CP,6/ ,24/CBTS,18/ .
* (W2) = 18/CBTO,3/RS,3/US,18/CBTA,18/CBFW.
* (W3) = 60/0.
* (W4) = 60/0.
* (W5) = 60/0.
* (W6) = 14/ ,1/I,16/ ,1/O,5/ ,1/B,22/ .
*
* USER HEADER.
* (W1) = 12/DB,24/UA,24/SEQ.
* (W2) = 42/TN,1/S,1/P,1/B,1/C,1/I,1/M,12/WC.
*
* SEE *COMKCBD* FOR EXPLANATION OF SYMBOLS.
* A BLANK FIELD MEANS NO DATA WAS ADDED.
*
* USES A - 1, 2, 6, 7.
* B - 3, 6.
* X - 1, 2, 3, 5, 6, 7.
*
* CALLS ASN, RTK.
FCB SUBR ENTRY/EXIT
BX6 X6-X6
ZR B4,FCB1 IF ONLY INPUT BLOCK
SX6 B1 MULTIPLE BLOCK FLAG
FCB1 MX2 1
SA7 FCBA SAVE TRANSACTION SEQUENCE NUMBER
MX1 1
LX6 12
LX2 INSOS-59
LX1 INBTS-59
BX2 X2*X4 MASK SYSTEM ORIGIN BIT
BX1 X1*X4 MASK BATCH TRANSACTION FLAG
LX1 CBSBS-INBTS
LX2 CBSOS-INSOS
SX7 B1
LX7 CBITS-0 INITIAL TRANSFER TO C.B.
BX7 X1+X7
BX7 X2+X7
LX2 CBSYS-CBSOS
BX6 X2+X6
SA7 X0+CBSBW WORD SIX OF C.B.
LX1 CBBTS-CBSBS
MX2 TSTNN MASK TERMINAL NAME
BX6 X1+X6
SX1 X4-1 MESSAGE LENGTH IN WORD
BX2 X2*X5 TERMINAL NAME
BX1 X2+X1 TERMINAL NAME + WORD COUNT
BX6 X1+X6 TERMINAL NAME + S + B + M + WORD COUNT
MX2 TSCDN
SA1 IDLA
LX2 TSCDS-59
LX1 CBIDS-59
BX6 X6+X1 TN + S + B + I + M + WC
BX2 X2*X5 GET CDCS ABORT FLAG
LX2 CBCDS-TSCDS
BX6 X6+X2 TN + S + B + C + I + M + WC
SA2 A5-B1 TST ENTRY
SA6 X0+CMBHL+1 WORD TWO OF USER HEADER
MX1 -6
LX2 -36
BX2 -X1*X2 UPDATE SECURITIES
LX3 -18 TERMINAL ORDINAL
SX1 A2 TST ENTRY
LX1 18
BX6 X3+X1 TERMINAL ORDINAL + TST
LX2 36
BX6 X6+X2 TERMINAL ORDINAL + SECURITIES + TST
SX1 X0 COMMUNICATION BLOCK ADDRESS
BX7 X6+X1 ADD COMMUNICATION BLOCK ADDRESS
LX3 18
BX6 X6-X6
SA7 X0+B1 SECOND WORD OF COMMUNICATION BLOCK
SX7 B4
SA6 A7+B1 ZERO OUT WORD 3 OF COMMUNICATION BLOCK
LX7 48
SA7 A6+B1 WORD 4 OF COMMUNICATION BLOCK
SA6 A7+B1 ZERO OUT WORD 5 OF COMMUNICATION BLOCK
SA1 FCBA GET TRANSACTION SEQUENCE NUMBER
BX6 X1
GT B4,B1,FCB3 IF NOT FIRST BLOCK
SA1 A5 INPUT WANTED
ERRNZ TSIWW-1 IF INPUT WANTED NOT IN WORD 1 OF *TST*
LX1 59-TSIWS
PL X1,FCB2 IF NOT IN WAIT INPUT STATE
SB3 B0
RJ RTK SEARCH FOR SEQUENCE NUMBER
EQ FCB3 CONTINUE PROCESS
FCB2 BX1 X3 TERMINAL ORDINAL
RJ ASN GET SEQUENCE NUMBER
FCB3 SA2 A5-B1 TST ENTRY
MX7 -36
SB3 DCPPR-2000B SET DEFAULT CPU PRIORITY
BX7 -X7*X2 DATA BASE + USER AREA
LX7 24
BX7 X6+X7 ADD SEQUENCE NUMBER
LX6 18
SA7 X0+CMBHL WORD ONE OF USER HEADER AREA
SA2 X0
PX6 B3,X6 ADD CPU PRIORITY
BX6 X6+X2 ADD FWA OF NEXT C.B.
SA6 X0 FIRST WORD OF C.B. SYSTEM HEADER
EQ FCBX RETURN
FCBA BSS 1 TRANSACTION SEQUENCE NUMBER
FFCB SPACE 4
** FFCB - FIND A FREE COMMUNICATION BLOCK.
*
* ENTRY (X0) = 0, IF NON-SYSTEM REQUEST, NON-ZERO OTHERWISE.
*
* EXIT (X0) = ADDRESS OF ASSIGNED COMMUNICATION BLOCK.
* (X0) = 0, IF NO COMMUNICATION BLOCK IS AVAILABLE.
* (X7) = INDEX OF COMMUNICATION BLOCK + 1.
*
* USES X - 0, 2, 3, 6, 7.
* A - 2, 6, 7.
* B - 3, 4.
FFCB3 SA2 STAT12 NUMBER OF TIMES NO C.B. AVAILABLE
SX7 B1
IX7 X2+X7
SA7 A2+
BX7 X7-X7
SA7 EVCB INDICATE NO COMMUNICATION BLOCKS
FFCB SUBR ENTRY/EXIT
SB4 47
TA2 0,VCBRT
NZ X0,FFCB1 IF SYSTEM REQUEST
MX7 12
BX7 -X7*X2
CX3 X7 FREE COMMUNICATION BLOCKS LEFT
BX7 X7-X7
SX3 X3-RSCMB-1
NG X3,FFCB3 IF NO COMMUNICATION BLOCK
FFCB1 NX0 B3,X2 DETERMINE POSITION OF FIRST UNSET BIT
ZR X0,FFCB3 IF AT END OF TABLE
SB4 B4-B3
NZ B4,FFCB2 C.B. AVAILABLE
SA2 A2+1
SB4 47
EQ FFCB1 NO FREE BITS IN WORD TRY NEXT WORD
FFCB2 SX3 B1
LX3 B4,X3 POSITION BIT AT FREE ENTRY
BX7 -X3*X2 UNSET BIT TO RESERVE ENTRY
SA7 A2 REPLACE WORD
* CALCULATE ADDRESS OF COMMUNICATION BLOCK.
TX3 A2,-VCBRT NTH WORD IN TABLE
SX0 47
SX2 CMBL LENGTH OF COMMUNICATION BLOCK
IX3 X3*X0 NTH WORD COMMUNICATION BLOCK BIAS
SX7 X3+B3 INDEX OF COMMNICATION BLOCK
IX3 X7*X2
TX0 X3,VCBSA ADDRESS OF COMMUNICATION BLOCK
SX7 X7+B1
SB4 CMBHL+CMBRL CLEAR C.B. HEADERS AND STATUS WORD
BX6 X6-X6
SA6 X0
FFCB2.1 ZR B4,FFCBX IF DONE CLEARING C.B. HEADER
SA6 A6+B1
SB4 B4-B1 DECREMENT COUNTER
EQ FFCB2.1 CONTINUE TO CLEAR C.B. HEADER
FFR SPACE 4,10
** FRR - FIND A FREE ROLLOUT TABLE ENTRY.
*
* EXIT (X0) = ADDRESS OF RESERVED ROLLOUT TABLE ENTRY.
* (X0) = 0, IF ROLLOUT TABLE FULL.
*
* USES A - 2, 6.
* B - 3, 6.
* X - 0, 2, 3, 6.
FFR SUBR ENTRY/EXIT
SB6 47 RESERVE A ROLLOUT TABLE ENTRY
SA2 TROM ROLLOUT TABLE ALLOCATION MAP
FFR1 NX0,B3 X2 LOCATE A FREE ROLLOUT TABLE ENTRY
ZR X0,FFRX IF END OF TABLE
SB6 B6-B3
NZ B6,FFR2 IF ENTRY AVAILABLE
SA2 A2+1
SB6 47
EQ FFR1 TRY NEXT RESERVATION WORD
FFR2 SX3 B1
LX3 X3,B6 POSITION TO LOCATED ENTRY
BX6 -X3*X2 RESERVE ENTRY
SA6 A2
SX3 A2-TROM COMPUTE WORD IN ROLLOUT MAP
SX2 47*TROLE
IX3 X3*X2
SX6 B3 NTH BIT IN WORD
SX2 TROLE
IX2 X2*X6
IX6 X2+X3 TABLE BIAS OF RESERVED ENTRY
SX0 X6+TROL FWA OF ROLLOUT TABLE ENTRY
BX6 X6-X6
SA6 X0 CLEAR FIRST WORD OF ENTRY
SA6 X0+RTWEV CLEAR EVENT WORD
EQ FFRX RETURN
GTS SPACE 4,15
** GTS - GET *TAF* STORAGE.
*
* RESERVE A BLOCK OF STORAGE BY CLEARING A BIT IN THE
* RESERVATION MAP.
*
* EXIT (B3) = FWA OF STORAGE.
* = 0 IF NO STORAGE AVAILABLE.
*
* USES A - 2.
* X - 2, 3.
* B - 3, 6.
*
* CALLS RSV.
GTS SUBR ENTRY/EXIT
SB6 47
SA2 TSBM ADDRESS OF BIT MAP
RJ RSV RESERVE AN ENTRY
NZ X0,GTS1 IF ENTRY AVAILABLE
SB3 0
EQ GTSX RETURN
GTS1 SX2 B3
SX3 TSBLE
IX2 X2*X3
SB3 X2+TSB ADDRESS OF STORAGE AREA
EQ GTSX RETURN
FNC SPACE 4,15
** FNC - FIND AND CHAIN COMMUNICATION BLOCKS.
*
* ENTRY (B6) = NUMBER OF COMMUNICATION BLOCKS NEEDED.
* POSITIVE IF NOT ALLOWED TO USE C.B.-S RESERVED
* FOR SMALL INPUT USERS.
* NEGATIVE IF ALLOWED TO USED C.B.-S RESERVED
* FOR SMALL INPUT USERS.
* (A1) = PRIMARY COMMUNICATION BLOCK ADDRESS.
*
* EXIT (B6) = NUMBER OF COMMUNICATION BLOCKS NOT OBTAINED.
*
* USES X - 0, 1, 3, 6.
* A - 1, 3, 6.
* B - 3, 6.
*
* CALLS FFCB.
*
* NOTE - PROBLEMS WITH DEADLOCK MAY BE ENCOUNTERED
* IF (B6) IS NEGATIVE AT ENTRY AND CARE SHOULD BE
* USED TO ENSURE THAT DEADLOCK DOES NOT OCCUR.
FNC2 SX6 B0+ ZERO END OF CHAIN
SA6 A1+
FNC SUBR ENTRY/EXIT
MX0 12
SB3 B6
PL B3,FNC.1 IF NOT TO USE SMALL INPUT C.B.-S
SB6 -B6
EQ FNC1 USE ALL BUT SYSTEM C.B.-S
FNC.1 TA3 0,VCBRT COMMUNICATION BLOCK ALLOCATION MAP
BX6 -X0*X3
CX3 X6
TB3 0,-VNSIN NUMBER OF C.B.-S RESERVED FOR SMALL INPUT
SB3 X3+B3
LT B3,B6,FNCX IF NOT ENOUGH COMMUNICATION BLOCKS
FNC1 ZR B6,FNC2 IF ALL COMMUNICATION BLOCKS AVAILABLE
SX0 B0+ DO NOT USE SYSTEM COMMUNICATION BLOCKS
RJ FFCB RESERVE COMMUNICATION BLOCK
SX6 X0
SA6 A1
ZR X0,FNCX IF NO COMMUNICATION BLOCK AVAILABLE
SB6 B6-B1
SA1 X0
EQ FNC1 GET NEXT COMMUNICATION BLOCK
IDL SPACE 4
** IDL - SET IDLE DOWN FLAGS.
*
* IDLE DOWN INFORMS INITIAL TASK THAT AN IDLE DOWN WAS REQUESTED
* AND SETS THE IDLE DOWN FLAG. IT IS INITIAL TASKS
* RESPONSIBLITY TO CEASE PASSING TASKS THRU TO THE SYSTEM FOR
* PROCESSING.
IDL SUBR ENTRY/EXIT
MX7 1
SA4 ITAS INITIAL TASKS NAME
SA7 IDLA IDLE DOWN FLAG
SX5 CIIDL ITASK IDLE DOWN CODE
SB3 B0 NO BUFFER INPUT
SX7 B0 SCHEDULE ONLY FROM SYSTEM LIBRARY
RJ TRN CALL INITIAL TASK TO INFORM OF IDLE DOWN
NZ X0,IDLX IF *ITASK* SCHEDULED - RETURN
* PROCESS SITUATION WHERE NO COMMUNICATION BLOCK AVAILABLE.
SA1 KDISA
MX6 -18
SX2 1 SET INCOMPLETE IDLE DOWN FLAG
BX6 X6*X1
BX6 X6+X2
SA6 A1
EQ IDLX RETURN
IDLA CON 0 IDLE DOWN FLAG
ITA SPACE 4,15
** ITA - INCREMENT/DECREMENT TASK ACTIVE COUNT.
*
* ENTRY (A3) = FWA+2 OF TLD ENTRY.
* (X3) = WORD THREE OF TLD ENTRY SHIFTED LEFT BY
* 59-TLQUS.
* (X6) = INCREMENT/DECREMENT VALUE.
*
* EXIT COUNT UPDATED.
*
* USES X - 3, 4, 7.
* A - 7.
ITA SUBR ENTRY/EXIT
MX4 -TLTAN
LX3 TLTAN-1-TLTAS-59+TLQUS
BX7 -X4*X3
IX7 X6+X7
BX3 X4*X3
BX7 -X4*X7
BX7 X3+X7
LX7 59-TLSTS-TLTAN+1+TLTAS
SA7 A3
EQ ITAX RETURN
JOL SPACE 4,10
** JOL - JOURNAL TRANSACTION INPUT.
*
* ENTRY (X0) = ADDRESS OF COMMUNICATION BLOCK.
* (X4) = INPUT BLOCK LENGTH.
*
* USES A - 1, 6, 7.
* B - 3, 4, 5.
* X - 1, 3, 5, 6, 7.
*
* CALLS JRNL.
*
JOL2 SA1 JOLA RESTORE (X0)
BX0 X1
JOL SUBR ENTRY/EXIT
SB5 PJRNL JOURNAL FILE
BX6 X0
SX3 X4-1 INPUT BLOCK LENGTH
SB4 B1
LX4 1
SX5 X0+CMBHL+CMBRL START OF MESSAGE
PL X0,JOL1 IF NEITHER INTERACTIVE OR MULIT BLOCK
SB4 6
PL X4,JOL1 IF LAST BLOCK OF TRANSACTION
SB4 5
JOL1 LX3 18
SA6 JOLA SAVE X0
BX5 X5+X3 ADD LENGTH OF MESSAGE
SB3 JOL2 RETURN ADDRESS
EQ JRNL MAKE A JOURNAL ENTRY
JOLA BSS 1 TEMPORARY STORAGE FOR X0
JSTS SPACE 4
** JSTS - WRITE PERIODIC ENTRIES TO JOURNAL FILE.
*
JSTS SUBR ENTRY/EXIT
* WRITE COPY OF TST TO JOURNAL FILE
SB3 JSTS RETURN ADDRESS
SB4 3 STATISTICAL DATA ORIGIN CODE
TX5 TSTLLE,VTST FWA OF TERMINAL STATUS TABLE
TX2 1,VTST,LWA LWA+1 OF TST
IX1 X2-X5 LENGTH OF TST
SB5 PJRNL JOURNAL FILE FET
LX1 18
BX0 X0-X0 NO COMMUNICATION BLOCK
IX5 X5+X1
EQ JRNL JOURNAL THE INFORMATION
LTT SPACE 4,25
** LTT - LOCATE A TASK OR TRANSACTION.
*
* LOOK FOR THE NAMED TASK OR TRANSACTION ASSOCIATED WITH THE
* SPECIFIED DATA BASE.
*
* ENTRY (X2) = LEFT JUSTIFIED TASK OR TRANSACTION NAME.
* (X3) = RIGHT JUSTIFIED DATA BASE NAME OF TASK LIBRARY.
* = 0 IF SYSTEM TASK LIBRARY.
* (X6) = TASK LIST ACCUMULATOR IF (B5)=0.
* (B4) = 1 IF *OFF* STATUS TO BE IGNORED, IF (B5)=0.
* = 0 IF *OFF* STATUS DETECTED, IF (B5)=0.
* (B5) = 0 IF TASK SEARCH.
* .NE. 0 IF TRANSACTION SEARCH.
*
* EXIT (A0) = ADDRESS OF TLD ENTRY IF TASK TURNED OFF.
* (A1) = FWA OF TLD/TRD ENTRY MATCHED.
* (X0) = RESTORED.
* (X6) = TASK BIAS ADDED TO PRIOR CONTENTS IF (B5)=0.
* = 0 IF TASK OR TRANSACTION NOT FOUND.
* (B3) = RESTORED.
*
* USES A - 0, 1, 3, 6, 7.
* X - 0, 1, 2, 3, 6, 7.
* B - 3, 4, 5, 6.
*
* CALLS STD.
LTT10 SA3 LTTE RESTORE (B3) AND (X0)
SB3 X3+
LX3 -18
SX0 X3+
LTT SUBR ENTRY/EXIT
LX0 18 SAVE (X0) AND (B3)
SX7 B3+
BX7 X0+X7
SA7 LTTE
SX7 B4+
SA7 LTTC *OFF*-TEST FLAG
SX7 B5+
SA7 LTTD SEARCH FLAG
BX7 X3
SA7 LTTA
SA6 LTTB
SB3 TLDLE LENGTH OF TLD ENTRY
ZR X3,LTT4 IF NO DATA BASE SPECIFIED
TA3 0,VEDT
LX7 -12
LX3 17-35
SB4 X3 EDT COUNT
LX3 35-17
ZR B4,LTT1.1 IF NO EDT-S TO SEARCH
LTT1 MX6 12
BX6 X6*X3 EDT DATA BASE NAME
IX6 X6-X7
SB4 B4-B1
ZR X6,LTT2 IF DATA BASE NAME FOUND
SA3 X3+ LINK TO NEXT EDT
NZ B4,LTT1 IF ANOTHER EDT TO CHECK
LTT1.1 SX7 B0+
SA7 LTTA CLEAR DATA BASE FLAG
EQ LTT4 SEARCH SYSTEM TASK LIBRARY
* SEARCH USER TASK/TRANSACTION DIRECTORY.
LTT2 SA1 A3+4 FWA OF FIRST TLD ENTRY
ZR X1,LTT1.1 IF NO DATA BASE TASK LIBRARY
ZR B5,LTT3 IF TASK SEARCH
LX1 -18
SA1 X1+TRFWW FWA OF TLD HEADER
LX1 TRFWN
SB5 X1 FWA OF FIRST TRD ENTRY
SB3 TRDLE2 LENGTH OF TRD ENTRY
SA1 X1+TDLDW
SB6 X1-TRDLE2+1 FWA OF LAST TRD ENTRY
EQ LTT6 LOOK FOR TRANSACTION
LTT3 SB6 X1+ LWA OF TLD
BX7 X1
LX1 17-35
SB5 X1+ FWA OF TLD
SB6 B6-TLDLE+1 LWA IN TLD TO SEARCH
SA7 LTTA
EQ LTT6 LOOK FOR TASK
* SEARCH SYSTEM TASK/TRANSACTION DIRECTORY.
LTT4 NZ B5,LTT5 IF TRANSACTION SEARCH
TB5 0,VTLD START OF TLD
TB6 -TLDLE+1,VTLD,LWA LWA OF SYSTEM TLD FOR SEARCH
EQ LTT6 LOOK FOR TASK
LTT5 TX1 0,VTLD
SA1 X1+TRFWW
LX1 TRFWN
SB3 TRDLE2 LENGTH OF TRD ENTRY
SB5 X1 FWA OF FIRST TRD ENTRY
SA1 X1+TDLDW
SB6 X1-TRDLE2+1 FWA OF LAST TRD ENTRY
LTT6 RJ STD SEARCH TASK/TRANSACTION DIRECTORY
NZ X1,LTT9 IF ENTRY NOT FOUND
* TASK/TRANSACTION FOUND.
SA3 LTTD SEARCH FLAG
SX6 1
NZ X3,LTT10 IF TRANSACTION FOUND
TX7 A1+1,-VTLD ADD ONE TO RELATIVE ADDRESS TO AVOID ZERO
SA3 LTTC GET *OFF* FLAG
SB5 X3
SA3 A1+TLTOW
LX3 59-TLTOS *OFF* FLAG
NZ B5,LTT7 IF IGNORE *OFF* STATUS
NG X3,LTT8 IF TASK TURNED OFF
LTT7 LX3 59-TLDLS-59+TLTOS
NG X3,LTT9 IF TASK DELETED
LX7 48
SA3 LTTB TASK LIST ACCUMULATOR
BX6 X3+X7
EQ LTT10 RESTORE REGISTERS
* CALL A DEFAULT TASK IN PLACE OF A TASK THAT HAS BEEN
* TURNED OFF.
LTT8 SA1 OTAS DEFAULT TASK NAME
SA0 A3 ADDRESS OF TURNED-OFF TASK
BX2 X1
SA3 LTTA
ZR X3,LTT5 IF NO DATA BASE TASK LIBRARY
SB6 X3-TLDLE+1
LX3 -18
SB5 X3
EQ LTT6 SEARCH *DBTASKL* FOR DEFAULT TASK
* TASK OR TRANSACTION NOT FOUND.
LTT9 SA1 LTTA
BX6 X6-X6
SA6 A1
ZR X1,LTT10 IF ENTRY NOT FOUND AND NO *DBTASKL*
SB5 B3-TLDLE
EQ LTT4 NOW SEARCH SYSTEM TLD FOR DESIRED ENTRY
LTTA BSS 1 DATA BASE FLAG
LTTB BSS 1 TASK LIST ACCUMULATOR
LTTC BSS 1 *OFF*-TEST FLAG
LTTD BSS 1 SEARCH FLAG
LTTE BSS 1 24/0,18/(X0),18/(B3)
MSQ SPACE 4,10
** MSQ - MAKE A SCHEDULER QUEUE ENTRY TO ROLL IN A TASK.
*
* ENTRY (X0) = COMMUNICATION BLOCK ADDRESS.
* (X5) = ROLLOUT TABLE ADDRESS OF TASK TO ROLL IN.
*
* USES A - 2, 3, 6, 7.
* B - 3, 6.
* X - 2, 3, 4, 6, 7.
MSQ SUBR ENYRY/EXIT
SA2 RTLW RTL RESERVATION WORD
SX3 B1
NX6 X2,B3 FIND A NONRESERVED ENTRY
LX3 -13
LX3 X3,-B3
BX6 -X3*X2 RESERVE THE ENTRY
SB3 B3+B3
TX4 X0,-VCBSA
SA6 A2
SB6 B7
SX7 CMBL COMPUTE THE C.B. NUMBER
IX7 X4/X7
SB7 B6
TX2 X7,VATL ATL ADDRESS
SA3 X2
MX7 30
BX6 -X7*X3 CLEAR ATL LINKS
SA6 A3
SA3 X5+B1
BX7 X7*X3 FL + PRIORITIES
LX2 42
LX7 -12
BX6 X2
LX2 -18
BX6 X6+X2
SA7 B3+RTL FIRST WORD OF RTL ENTRY
BX6 X6+X5
SA6 A7+B1 SECOND WORD OF RTL ENTRY
EQ MSQX RETURN
MVD SPACE 4,15
** MVD - MOVE DATA TO TASK.
*
* ENTRY (X1) = LENGTH TO MOVE IN WORDS.
* (X2) = ORIGIN FWA.
* (X3) = DESTINATION FWA.
* (X6) = NUMBER OF BITS OVER WORD BOUNDARY.
*
* EXIT DATA IS MOVED FROM ORIGIN TO DESTINATION.
*
* USES X - 1, 2, 3, 4, 6, 7.
* A - 1, 2, 3, 4, 6, 7.
* B - 6.
*
* CALLS MVE=
MVD SUBR ENTRY/EXIT
SA6 MVDA REMAINDER OF BITS OVER LAST WORD
NZ X6,MVD2 IF DATA DOES NOT END ON WORD BOUNDARY
MVD1 RJ MVE= MOVE DATA
SA1 MVDA
ZR X1,MVDX IF DATA ENDS ON WORD BOUNDARY
* RESTORE USER BITS IN LAST WORD.
SA2 MVDB LWA OF DESTINATION
SA1 MVDC OLD LAST WORD OF DESTINATION
SA3 X2 NEW LAST WORD OF DESTINATION
SA4 MVDA MASK FOR SAVING NEW BITS IN LAST WORD
BX3 X4*X3 SAVE NEW BITS IN LAST WORD
BX4 -X4*X1 SAVE OLD BITS IN LAST WORD
BX7 X4+X3 MERGE OLD AND NEW
SA7 A3
EQ MVDX RETURN
* SAVE LAST WORD OF DESTINATION.
MVD2 IX7 X3+X1
SA4 X7-1
SX7 A4 LWA OF DESTINATION
SB6 X6-1
BX6 X4
SA7 MVDB
SA6 MVDC
MX7 1 MASK TO SAVE NEW BITS IN LAST WORD
AX7 B6
SA7 MVDA
EQ MVD1 MOVE DATA
MVDA BSS 1 MASK FOR SAVE NEW BITS
MVDB BSS 1 LWA OF DESTINATION
MVDC BSS 1 LAST WORD OF DESTINATION
PBT SPACE 4,65
** PBT - PREPARE BATCH TRANSACTION.
*
* ENTRY (SSRP) = SUBSYSTEM REQUEST BUFFER.
*
* EXIT TO *TSSC*
* IF POSSIBLE *ITASK* HAS BEEN SCHEDULED WITH THE
* TRANSACTION INPUT. IF AN ERROR OCCURRED THE PROPER
* STATUS WAS RETURNED TO THE USER.
*
* USES X - XLL.
* A - ALL.
* B - 3, 4, 5, 6.
*
* CALLS FCB, FFCB, GTS, JOL, PRIN, RTS, SFR, VBA.
*
* NOTES *PBT* USES PART OF THE COMMUNICATION BLOCK FOR
* TEMPORARY STORAGE. BEFORE *FCB* FORMATS THE
* COMMUNICATION BLOCK, THE FORMAT IS -
*
*T W1 6/RC,12/FP,18/UCPA,18/SCPA,6/FC
*T, W2 35/JOBSN,12/0,12/FSTA
*T, W3 60/0
*T, W4 60/(SSRP)
*T, W5 35/JOBSN,12/0,12/FSTA
*T, W6 24/0,18/LENGTH,18/ATRAN
*T, W7 24/0,18/TSTO,18/TSTA
*T, W8 60/SCR
*
* WORD 1 THRU 3 CONTAIN THE *SFCALL* PARAMETER BLOCK.
*
* WORD 1.
* RC - REPLY CODE.
* FP - FUNCTION PARAMETER.
* UCPA- RELATIVE CM ADDRESS WITHIN UCP.
* SCPA- RELATIVE CM ADDRESS WITHIN SUBSYSTEM.
* FC - FUNCTION CODE.
*
* WORD 2.
* JOBSN - JOB SEQUENCE NUMBER.
* FSTA - FST ADDRESS.
*
* WORD 3.
* (NOT USED) PARAMETER FOR EXTENDED READ AND WRITE
* *SFCALL* FUNCTION.
*
* WORDS 4 THRU 7 ARE TEMPORARY STORAGE FOR DATA NEEDED FOR
* PROCESSING BATCH TRANSACTIONS.
*
* WORD 4.
* (SSRP) - CONTENTS OF SSRP WORD.
*
* WORD 5.
* JOBSN - JOB SEQUENCE NUMBER.
* FSTA - FST ADDRESS.
*
* WORD 6.
* LENGTH - LENGTH OF TRANACTION INPUT IN WORDS.
* ATRAN - ADDRESS OF TRANSACTION.
*
* WORD 7.
* TSTO - TST ORDINAL.
* TSTA - TST ADDRESS.
*
* WORD 8.
* SCR - SCRATCH STORAGE.
PBT SA2 PBTD
NZ X2,PBT12 IF LAST *BTRAN* INPUT NOT PROCESSED
RJ GTS GET TAF STORAGE
ZR B3,TSSC IF NO TAF STORAGE
SB5 B3 FWA OF STORAGE
SX0 B0 INDICATE NON-SYSTEM C.B.
RJ FFCB FIND FREE C.B.
SX5 JSTB TAF BUSY ERROR CODE
NZ X0,PBT1 IF C.B. AVAILABLE
SB3 B5
RJ RTS RETURN TAF STORAGE
EQ PBE PROCESS BATCH ERROR
PBT1 SB6 X0 SAVE C.B. ADDRESS
* MOVE SCP BUFFER INTO HEADER AREA OF C.B.
SA2 SSRP TAF RECEIVING BUFFER
BX6 X2
SA6 B6+3 SAVE (SSRP) PARAMETER AREA
SA2 SSJN JOB SEQUENCE NUMBER AND FST ORDINAL
BX6 X2
SA6 A6+B1
SA2 SSUP+1 LENGTH AND ADDRESS OF TRANSACTION INPUT
MX6 -36
BX6 -X6*X2
SA6 A6+1
* INDICATE REQUEST RECEIVED.
SA2 VSCR TAF RECEIVING BUFFER (SSCR)
MX3 -59
BX6 -X3*X2
SA6 A2+
* GET USER NAME AND VALIDATE.
PBT2 SX6 B6+CMBHL+CMBRL
SX1 /COMSSCP/CPID SFCALL FUNCTION CODE
LX6 6 POSITION SCP ADDRESS
BX6 X6+X1
SA6 B6+
SA2 B6+4 GET JOB SEQUENCE NUMBER AND FST ORDINAL
BX6 X2
SA6 A6+B1
SX2 PBT2 RETRY ADDRESS
RJ SFR ISSUE SFCALL REQUEST
NZ X5,PBT9 IF SFCALL ERROR
SB6 B6+CMBHL+CMBRL
SA4 B6+1 USER NAME FROM CPID FUNCTION
SX1 TYBT INDICATE *BTRAN* TRANSACTION.
SX5 PBT3 RETURN ADDRESS
EQ VBA VALIDATE BATCH ACCESS
PBT3 SB4 X3
BX7 X7-X7
SA2 B6+BRTOW SAVE TST ORDINAL AND ADDRESS
BX6 X2
SA7 A2 CLEAR TST ORDINAL FROM BODY OF C.B.
SB3 JSRC REQUEST COMPLETE CODE
SA7 A2-1 CLEAR TERMINAL NAME FROM C.B.
SB6 B6-CMBHL-CMBRL
SA6 B6+6
EQ B3,B4,PBT5 IF REQUEST COMPLETE
SB3 JSNV USER NOT VALID
NE B3,B4,PBT6 IF USER VALID
PBT4 SX3 B1 SET NORMAL SUBSYSTEM (FSET) ERROR FLAG
SX6 B0 SCP ADDRESS
SX1 /COMSSCP/REGR SFCALL FUNCTION CODE
LX6 6 POSITION SCP ADDRESS
BX6 X6+X1
LX3 41-17
BX6 X6+X3 ADD UCP ADDRESS
SA6 B6+ SFCALL PARAMETER WORD ONE
SX2 PBT4 RETRY ADDRESS
RJ SFR ISSUE SFCALL REQUEST
SX3 JSNV USER NOT VALID
EQ PBT6 RETURN STATUS TO USER
* CHECK LENGTH OF TRANSACTION INPUT DATA, IF VALID LENGTH
* THEN READ THE TRANSACTION INPUT DATA.
PBT5 SX6 B6+CMBHL+CMBRL-1 SCP ADDRESS
SA2 B6+5 LENGTH AND ADDRESS OF TRANSACTION INPUT
LX2 17-35
SX2 X2-62-1 LENGTH - MAXIMUM INPUT LENGTH
SX3 JSSB BLOCK TOO LONG ERROR CODE
PL X2,PBT6 IF TRANSACTION INPUT .GT. MAXIMUM ALLOWED
SX1 /COMSSCP/READ SFCALL FUNCTION CODE
LX6 6 POSITION SCP ADDRESS
BX6 X6+X1
SA3 B6+5 WORD 2 OF USER PARAMETERS
LX3 53-29 POSITION WORD COUNT AND UCP ADDRESS
BX6 X6+X3
SA6 B6+ SFCALL PARAMETER WORD ONE
SX2 PBT5 RETRY ADDRESS
RJ SFR ISSUE SFCALL REQUEST
SX3 JSRC REQUEST COMPLETE CODE
ZR X5,PBT6 IF NO CALL ERROR
SX3 JSFL DATA NOT WITHIN UCP FL CODE
* RETURN STATUS TO USER JOB.
* (X3) = STATUS CODE.
PBT6 SA2 PBTC SET UP FIRST USER PARAMETER
BX6 X3+X2 ADD NEW STATUS
SA6 B6+7
PBT7 SA3 B6+3 GET UCP PARAMETER AREA ADDRESS
SX6 B6+7 SCP ADDRESS
SX1 /COMSSCP/WRIT SFCALL FUNCTION CODE
LX6 6 POSITION SCP ADDRESS
BX6 X6+X1
SX3 X3+B1
LX3 41-17 POSITION UCP ADDRESS
BX6 X6+X3 ADD UCP ADDRESS
SX2 B1 WORDS TO WRITE TO UCP
LX2 53-11 ADD WORD COUNT
BX6 X6+X2
SA6 B6+
SX2 PBT7 RETRY ADDRESS
RJ SFR ISSUE SFCALL REQUEST
* TERMINATE CONNECTION WITH UCP.
PBT8 SA3 B6+3 GET UCP PARAMETER AREA ADDRESS
SX6 /COMSSCP/ENDT SFCALL FUNCTION CODE
SX3 X3
LX3 41-17
BX6 X6+X3
SA6 B6 FIRST WORD OF SFCALL PARAMETERS
SX2 PBT8 RETRY ADDRESS
RJ SFR ISSUE SFCALL REQUEST
SA5 B6+7 GET STATUS RETURNED TO USER
PBT9 SB3 X5+
SB4 JSRC REQUEST COMPLETE STATUS CODE
EQ B3,B4,PBT11 IF NO ERRORS
SA5 B6+6 GET TST ADDRESS
MX3 -60+TSAUN CLEAR USER ACTIVE BIT
SA4 X5+
ERRNZ TSAUW USER ACTIVE BIT NOT IN WORD ZERO
ERRNZ 59-TSAUS USER ACTIVE BIT NOT LEFT JUSTIFIED
BX6 -X3*X4
SA6 A4+
PBT10 SX2 B6
BX7 X7-X7 CLEAR NEXT C.B. FIELD
SA7 B6+
RJ RLC RELEASE COMMUNICATION BLOCK
ZR B5,TSSC IF NO TEMPORARY STORAGE
SB3 B5+
RJ RTS RELEASE TEMPORARY STORAGE
EQ TSSC CONTINUE PROCESSING
PBT11 SB3 B5
SX4 B6
RJ RTS RELEASE TEMPORARY STORAGE
SB6 X4
* FORMAT COMMUNICATION BLOCK.
SX6 B6 SAVE FWA OF C.B.
SA4 PBTA
SA3 B6+5
LX3 17-35
SB4 B0 INPUT BLOCK COUNT
SA6 PBTD
SX3 X3+1
SX7 B0 ZERO OUT WORD ONE OF C.B.
SA2 B6+6 GET TST ORDINAL AND ADDRESS
BX4 X4+X3
SA7 X6
SA5 X2+B1 GET WORD TWO OF TST
LX2 17-35 POSITION TST ORDINAL
SX3 X2 TST ORDINAL
SX0 B6+ FWA OF C.B.
RJ FCB FORMAT COMMUNICATION BLOCK
* JOURNAL TRANSACTION INPUT.
SA1 PBTD FWA OF C.B.
SX0 X1+
SA4 X1+CMBHL+1 USER HEADER WORD TWO
MX6 -12
BX4 -X6*X4 WORDS TO JOURNAL
RJ JOL JOURNAL TRANSACTION INPUT
* SCHEDULE *ITASK*.
PBT12 SA1 PRINA CHECK IF *ITASK* BUSY
NZ X1,TSSC IF *ITASK* BUSY RETURN AND TRY LATER
SA1 PBTD FWA OF C.B.
MX7 1 INDICATE C.B. ALREADY PRESENT
SX0 X1
LX7 55-59
SA7 PBTB
SA4 A7
RJ PRIN PROCESS TRANSACTION INPUT
ZR X0,TSSC IF ITASK NOT SCHEDULED
BX6 X6-X6 INDICATE *ITASK* SCHEDULED
SA6 PBTD
EQ TSSC CONTINUE PROCESSING
PBTA VFD 1/0,1/0,1/0,1/1,7/0,1/0,12/0,18/0,18/0
PBTB BSS 1 *PRIN* INPUT WORD
PBTC VFD 12/2001B,12/0,12/0,6/0,18/0 USER PARAMETER ONE
PBTD BSS 1 FWA OF COMMUNICATION BLOCK
PCDM SPACE 4,10
** PCDM PCDM DOES HOUSEKEEPING FOR TRANSACTION END PROCESSING.
* IF THE TRANSACTION HAS MADE DATA MANAGER REQUESTS
* A DATA MANAGER CEASE REQUEST IS CREATED, ELSE THE
* END OF TRANSACTION MESSAGE IS JOURNALED.
*
* ENTRY (X0) = DATA MANAGER CODE
*
* EXIT (X5) .GE. 0 IF NO DATA MANAGER REQUEST WERE MADE.
PCDM SUBR ENTRY/EXIT
SA1 B2+CB2C
SA4 B2+CB1C
SA3 X1+CBSOW SYSTEM ORIGIN TRANSACTION
ERRNZ CBSOW-CBSBW IF *BTRAN* AND SYSTEM NOT IN SAME WORD
LX3 59-CBSOS
LX4 59-CBSDS
NG X3,PCDM1 IF SYSTEM ORIGIN TRANSACTION
LX3 59-CBSBS-59+CBSOS
SA1 B7+B1
LX1 59-SCTMS
NG X1,PCDM1 IF TASK IS TO BE TERMINATED
NG X3,PCDM1 IF *BTRAN*
PL X4,TERR22 IF NOT AT LEAST ONE SEND
PCDM1 SA1 B2+CB2C
SA2 X1+CBCR CHECK IF DATA MANAGER USED BY TASK
LX2 59-CDDM
PL X2,PCDM3 IF *CDCS* IS NOT CONNECTED
SA3 X1 FWA OF COMMUNICATION BLOCK
LX3 59-CBABS
SA4 PCDMA
BX7 X4
SA5 A4+1
SA7 B2+NUAPL+SUAC+CBCH
SB4 A7+ FWA OF PARAMETER BLOCK
SX2 CDAT ABNORMAL TERMINATION FUNCTION CODE
NG X3,PCDM2 IF TAF ABORT FLAG SET
LX3 59-CBRCS-59+CBABS
NG X3,PCDM2 IF TERMINAL OR NETWORK FAILURE
SX2 CDNT NORMAL TERMINATION FUNCTION CODE
PCDM2 BX7 X2+X5 ADD FUNCTION CODE
SB3 PCDM3 RETURN ADDRESS
SA7 A7+B1
SA5 A5+B1 REQUEST
SA1 B7 SET FL
SB5 B2+NUAPL TASK RA
AX1 18
SX1 X1 TASK FL
EQ SSC1 PROCESS TERMINATOR TO *CDCS* REQUEST
PCDM3 SA1 B2+CB2C
SA2 X1+CBCR CHECK FOR DATA MANAGER CALLS MADE
LX2 59-TOTDM
PL X2,PCDM5 IF TOTAL DATA MANAGER NOT USED
SB3 PCDM7 RETURN ADDRESS
SA4 B2+CB1C COMMUNICATION BLOCK WORD 1
BX5 X5-X5
SX0 DMCC CEASE FUNCTION CODE
LX0 24
SX1 X1 C.B. ADDRESS
LX4 59-CBABS
AX4 59
BX1 X1-X4 SET ERROR FLAG FOR DATA MANAGER
MX4 -18
BX4 -X4*X1
EQ TOT1 SEND CEASE CODE TO TOTAL DATA MANAGER
PCDM5 SA1 B2+CB2C
SA2 X1+CBCR CHECK FOR DATA MANAGER CALLS MADE
LX2 59-AAMDM
PL X2,PCDM7 IF AAM FILE MANAGER NOT USED
SB3 PCDM7 RETURN ADDRESS
SA4 B2+CB1C COMMUNICATION BLOCK WORD 1
BX5 X5-X5
SX0 DMCC CEASE FUNCTION CODE
LX0 24
SX1 X1 COMMUNICATION BLOCK ADDRESS
LX4 59-CBABS
AX4 59
BX1 X1-X4 SET ERROR FLAG FOR DATA MANAGER
MX4 -18
BX4 -X4*X1
EQ AAM1 SEND CEASE CODE TO AAM FILE MANAGER
PCDM7 SA1 B2+CB2C GET COMMUNICATION BLOCK ADDRESS
SA2 X1+CBCR
MX5 -4
SX0 X1 COMMUNICATION BLOCK ADDRESS
LX2 -18
BX2 -X5*X2
ZR X2,PCDM8 IF NO DATA MANAGER USED BY TASK
EQ PCDMX X5 IS NEGATIVE
* WRITE JOURNAL FILE ENTRY TO INDICATE TRANSACTION CEASE
PCDM8 SB3 PCDM9 RETURN ADDRESS
SA1 B2+CB2C SET COMMUNICATION BLOCK ADDRESS
SX5 SBUF+4 USE WORKING STORAGE BUFFER AS ADDRESS
SB4 4 END OF TRANSACTION INDICATOR
SX0 X1+
SB5 PJRNL
EQ JRNL JOURNAL MESSAGE
PCDM9 SA2 B2+CB2C
SX5 A2-B1
SX2 X2 C.B. ADDRESS
EQ PCDMX RETURN
PCDMA VFD 24/4LCD22,12/0,6/2,4/0,2/3,6/0,5/0,1/0 PARAMETER
VFD 18/SUAC+CBCH+3,9/0,27/0,6/0 PARAMETER BLOCK WORD 2
VFD 18/3LSSC,24/CDSI,18/SUAC+CBCH FUNCTION REQUEST
PDIF SPACE 4
** PDIF - PLACE ENTRY INTO A FET.
*
* ENTRY (B5) = ADDRESS OF FET
* (X6) = WORD TO PLACE INTO FET
*
* EXIT (X7) = 0 IF FET FULL
*
* USES X - 1, 2, 3, 7
* A - 1, 2, 3, 6, 7
* B - 3, 4, 5
PDIF SUBR ENTRY/EXIT
SA3 B5+3 OUT
BX7 X7-X7
SA2 A3-B1 IN
SB5 X3
SA3 A3+B1 LIMIT
SB3 X2+B1 (IN +1)
SB4 X3
NE B3,B4,PDIF1 IF NOT WRAP-AROUND
SA1 A2-B1 FIRST
SB3 X1
PDIF1 EQ B3,B5,PDIFX IF BUFFER FULL - RETURN
SX7 B3
SA6 X2 STORE WORD
SA7 A2 ADVANCE IN
EQ PDIFX RETURN
PDMR SPACE 4,20
** PDMR PROCESS D.M. OUTPUT QUEUE. IF A REPLY TO A TASK CEASE
* IS DETECTED, THE END OF TRANSACTION MESSAGE IS
* JOURNALED.
* IF A REPLY TO A *DBA* REQUEST WITH RECALL IS DETECTED,
* THE CPU IS REQUESTED FOR THE TASK.
*
* ENTRY (A5) = ADDRESS OF DBA STATUS WORD
* (X5) = DBA STATUS WORD
*
*T 6/ ,18/ EC,6/ ,6/ ,1/R,5/ SN,18/ AD
*
* EC - ERROR CODE
* R - IF REQUEST WAS MADE WITH RECALL
* SN - SUB CONTROL POINT OF REQUESTOR
* AD - ADDRESS OF REQUEST PARAMETERS. WHEN A *DMCC* IS ISSUED
* FOR A *TAF* TASK THIS IS EITHER THE ADDRESS OF THE
* TASK-S COMMUNICATION BLOCK OR ITS COMPLEMENT. WHEN A
* *DMCC* IS ISSUED FOR A BATCH TASK, THIS IS THE LOCATION
* *BSAR*. THESE CONVENTIONS ARE ASSUMED BY THE CODE AT
* *PDMR2*.
PDMR PS
* CHECK AAM OUTPUT QUEUE.
PDMR0 TB5 0,VAAQ,LWA FWA OF AAM OUTPUT QUEUE
ZR B5,PDMR1 IF AAM NOT LOADED
SA1 B5+2 FWA OF INPUT FOR OUTPUT QUEUE
SA2 A1+B1 OUT
IX3 X1-X2
ZR X3,PDMR1 IF NO QUEUE ENTRY
SB6 PDMRA LOCATION TO RETURN RESULT
SB4 B1+ WORD COUNT TO RETURN
SX0 AAMC
RJ CIC READ ONE OUTPUT QUEUE ENTRY
SA1 PDMRA
MX2 -6
LX1 -24
BX2 -X2*X1 FUNCTION CODE
LX1 24
SX3 X2-DMCC
SB4 AAMDM
SA5 AAMA AAM STATUS WORD
PDMR0.1 NZ X3,PDMR6 IF NOT A REPLY TO A CEASE CODE
EQ PDMR2 UPDATE REQUEST COUNT
* CHECK TOTAL DATA MANAGER OUTPUT QUEUE.
PDMR1 SA1 TDO+2 CHECK TOTAL OUTPUT QUEUE
SA2 A1+B1 OUT
IX3 X1-X2
ZR X3,PDMR IF NO QUEUE ENTRY
SB5 TDO FET FOR TOTAL OUTPUT QUEUE
SB6 PDMRA LOCATION TO RETURN ENTRY TO
SB4 B1+ WORD COUNT TO RETURN
SX0 TOTC
RJ CIC READ ONE OUTPUT QUEUE ENTRY
SA1 PDMRA READ ENTRY
MX2 -6
LX1 -24
BX2 -X2*X1 FUNCTION CODE
LX1 24
SX3 X2-DMCC
SB4 TOTDM
SA5 TDBAA TOTAL STATUS WORD
PDMR2 NZ X3,PDMR6 IF NOT A REPLY TO CEASE CODE
SX7 B1
IX5 X5-X7 DECREMENT OUTSTANDING REQUEST COUNT
LX7 18
IX7 X5+X7 INCREASE COUNT OF TOTAL ALLOWABLE TASKS
SA7 A5
SX6 X1 COMMUNICATION BLOCK ADDRESS
AX6 17 GET ABSOLUTE VALUE OF THE CB ADDRESS
BX6 X1-X6
BX3 X1
LX3 -18
MX2 -5
BX3 -X2*X3 SUBCP NUMBER
LX3 SCPAL
TA4 X3-CPAL,VCPA STATUS WORD 1 OF SUBCP
SX4 X4-NUAPL
SB6 A4 ADDRESS OF SUBCP AREA
SX5 B0 CLEAR ERROR CODE
SX2 X6-BSAR CHECK FOR BATCH CONCURRENCY
ZR X2,PDMR6.1 IF BATCH CONCURRENCY TASK
SA1 X6+CBCR
SX4 B1
BX2 X6 COMMUNICATION BLOCK ADDRESS
LX4 B4
MX6 -4
LX6 18
BX7 -X4*X1 CLEAR DATA MANAGER FLAG
SA7 A1
BX6 -X6*X7
NZ X6,PDMR0 IF DATA MANAGER REQUEST ACTIVE
* WRITE A JOURNAL FILE ENTRY TO INDICATE TRANSACTION COMPLETE.
SB3 PDMR5 RETURN ADDRESS
SB4 4 END OF TRANSACTION INDICATOR
SB5 PJRNL JOURNAL FILE NUMBER
SX5 JRNLA+3 DUMMY ADDRESS FOR JOURNAL FILE WRITE
SX0 X2 C.B. ADDRESS
BX7 X2
SA7 PDMRB C.B. ADDRESS
EQ JRNL JOURNAL ENTRY
PDMR5 SA2 PDMRB C.B. ADDRESS
RJ RLC RELEASE COMMUNICATION BLOCKS
EQ PDMR0 CHECK NEXT ENTRY
* PROCESS DATA MANAGER OUTPUT QUEUE ENTRY.
PDMR6 SA1 PDMRA ENTRY JUST READ
SX7 B1
MX2 -5
IX7 X5-X7 DECREMENT OUTSTANDING REQUEST COUNT
SX3 B1
SA7 A5
LX1 -18
BX2 -X2*X1 SUB CP NUMBER
LX1 -5
SB3 X0
LX2 SCPAL
BX0 X3*X1 RECALL BIT
TA4 X2-CPAL,VCPA STATUS WORD 1 OF SUB CP
LX1 -13
SX4 X4-NUAPL START OF ALLOCATED CORE FOR SUB CP
SB6 A4 ADDRESS OF SUB CP CONTROL POINT AREA
SX5 X1 ERROR CODE
SA1 X4+B3 DATA MANAGER OUTSTANDING REQUEST WORD
LX2 59-46
SX7 B1
IX7 X1-X7 DECREMENT COUNT
SA7 A1
SA1 B6 STATUS WORD 1 OF SUBCP TABLE
ERRNZ SCBCW IF BATCH FLAG NOT IN WORD ZERO
LX1 59-SCBCS
PL X1,PDMR6.2 IF NOT IN USE BY BATCH CONCURRENCY
* INDICATE COMPLETION OF BATCH *CRM* REQUEST.
PDMR6.1 SA1 X4+BCTA *BCT* FWA
SA1 X1+BCSFW COMPLETE BIT WORD IN *BCT*
MX0 -1
BX6 -X0+X1 SET REQUEST COMPLETE
SA6 A1
SX6 X5 ERROR CODE
ZR X5,PDMR0 IF NOT FATAL DATA MANAGER ERROR
SA1 X4+DMEC INDEX TO *TAF* STATUS WORD
SB3 X1+BSTS+NUAPL
SA6 X4+B3 SET ERROR CODE IN REQUEST
EQ PDMR0 PROCESS NEXT QUEUE ENTRY
PDMR6.2 NZ X5,PDMR8 IF FATAL DATA MANAGER ERROR
NG X2,PDMR7 IF RECALL ON ALL BIT IS SET
ZR X0,PDMR0 IF NO RECALL
SB3 PDMR0 RETURN ADDRESS
EQ RCPU REQUEST CPU FOR TASK
PDMR7 SX1 X6 NUMBER OF REQUESTS LEFT OUTSTANDING
NZ X1,PDMR0 IF MORE REQUESTS LEFT TO RETURN
SX2 B1
LX2 46
BX6 -X2*X6 CLEAR RECALL ALL BIT
SB3 PDMR0 RETURN ADDRESS
SA6 A2 RESET C.B. STATUS INFORMATION
EQ RCPU REQUEST CPU FOR TASK
* PROCESS FATAL D.M. ERROR
PDMR8 SA2 B6+B1 C.B. STATUS WORD TWO
SX3 B1
MX1 1
LX3 55-0 SET ABORT FLAG
SX6 X5 ERROR CODE
BX7 X2+X3
BX6 X6+X1
SA7 A2
SA6 X4+DMEC SAVE ERROR CODE
SB3 PDMR0 RETURN ADDRESS
EQ RCPU REQUEST CPU FOR TASK
PDMRA BSS 1
PDMRB BSS 1 C.B. ADDRESS
RCPT SPACE 4
** RCPT REQUEST CPU FOR A TASK
*
* ENTRY (X4) = START OF SUB CP AREA
* (B6) = CONTROL POINT ADDRESS
* (B3) = RETURN ADDRESS
*
* USES X - 0, 1, 2, 3, 6, 7
* A - 1, 2, 3, 7
* B - 4, 5
RCPT MX0 1
TX6 B6+CPAL,-VCPA
LX0 -12
SA1 CR CPU REQUEST SWITCHING WORD
AX6 SCPAL
SB5 X6 CONTROL POINT NUMBER OF REQUESTOR
AX6 X0,B5
BX7 X1+X6 ADD IN REQUEST BIT
SA7 A1+
ZR B2,BNT NO ONE HAS THE CPU
SA2 B2+CB1C COMPARE PRIORITIES WITH CURRENT JOB
UX7,B4 X2
SA3 X4+CB1C PRIORITY OF REQUESTOR
UX0,B5 X3
GE B5,B4,BNT IF CURRENT JOB LOWER PRIORTY
JP B3 *EXIT
RCPU SPACE 4
** RCPU REQUEST CPU WITHOUT CHANGING CURRENT ASSIGNMENT
* UNLESS NO TASK HAS THE CPU
*
* ENTRY (X4) = START OF SUB CP AREA
* (B6) = CONTROL POINT ADDRESS
* (B3) = RETURN ADDRESS
*
* USES X - 1, 6, 7
* A - 1, 7
* B - 5
RCPU MX7 1
TX6 B6+CPAL,-VCPA
LX7 -12
SA1 CR CPU REQUEST SWITCHING WORD
AX6 SCPAL
SB5 X6 CONTROL POINT NUMBER OF REQUESTOR
AX6 X7,B5
BX7 X1+X6 ADD IN REQUEST BIT
SA7 A1+
ZR B2,BNT NO ONE HAS THE CPU
JP B3 *RETURN
BNT SPACE 4
** BNT ASSIGN CPU TO A DIFFERENT SUB CONTROL POINT
*
* ENTRY (B6) = CONTROL POINT ADDRESS
* (X4) = START OF SUB CP AREA
* (B3) = EXIT ADDRESS
BNT SB2 X4
SB7 B6 SET POINTERS
SX6 B7+
LX4 18
BX6 X4+X6
SA6 SREG (B2) + (B7)
JP B3 *EXIT
RDCB SPACE 4
** RDCB - TRANSFER TRANSACTION INPUT FROM THE
* RECEIVING BUFFER TO A COMMUNICATION BLOCK.
*
* ENTRY (A4) = FWA OF INPUT BLOCK.
* (X4) = 1/D,1/M,1/0,1/B,7/0,1/S,12/0,18/TERN,18/LENG
* D = 1 IF INPUT IS A DATA MESSAGE , 0 FOR COMMAND.
* M = 1 IF MORE BLOCKS.
* B = 1 IF BATCH INPUT.
* S = 1 IF SYSTEM ORIGIN.
* TERN = TERMINAL NUMBER.
* LENG = MESSAGE LENGTH IN WORDS + 1.
*
* EXIT (X0) = COMMUNICATION BLOCK ADDRESS.
* (X0) = 0, IF NO COMMUNICATION BLOCK AVAILABLE.
*
* USES X - ALL.
* A - 1, 2, 3, 4, 5, 6, 7.
* B - 3, 4, 5, 6.
*
* CALLS FCB, FFCB, JOL, RSC, RTK, SCB.
RDCB SUBR ENTRY/EXIT
SX7 A4+
SA7 RDCBC FWA OF INPUT BUFFER
SA2 ITIME REAL TIME CLOCK
MX0 1 MASK SYSTEM ORIGIN
BX7 X2
SA7 RDCBD CLOCK AT LAST INPUT
LX0 48-59
BX0 X0*X4
RJ FFCB GET A COMMUNICATIONS BLOCK
LX4 -18
ZR X0,RDCBX IF NO COMMUNICATION BLOCK
SX1 X4
SB3 X1+ SAVE TERMINAL NUMBER
TX6 X4-1,-VNTST
NG X1,RDC17 IF NEGATIVE TERMINAL NUMBER
PL X6,RDC17 IF INCORRECT TERMINAL NUMBER
SX7 TSTLLE LENGTH OF A TST ENTRY
IX1 X1*X7 BIAS OF TST ENTRY
MX2 42
TA5 X1+1,VTST TERMINAL STATUS TABLE ENTRY
SB4 B0
LX5 59-17
BX6 X4
LX6 59+18-48
NG X6,RDC4 IF SYSTEM ORIGIN TRANSACTION
ZR B3,RDC17 IF TERN=0 AND NOT A SYSTEM-ORIGIN
PL X5,RDC4 IF FIRST BLOCK OF TRANSACTION DATA
SB5 B0
SX6 A5-B1
* FIND LAST COMMUNICATION BLOCK IN CHAIN.
RDC1 RJ SCB FIND A C.B. CONTAINING PREVIOUS DATA
ZR B5,RDC3 IF END OF RESERVED COMMUNICATION BLOCKS
SA3 B5+CBMCW WORD *CBMCW* OF COMMUNICATION BLOCK
MX2 -CBMCN GET BLOCK ORDINAL
LX3 CBMCN-CBMCS-1
BX2 -X2*X3 BLOCK COUNT OF COMMUNICATION BLOCK
SX3 X2+B1 CHECK THE HIGHEST BLOCK COUNT
SX7 B4 CURRENT BLOCK COUNT
IX3 X7-X3
SX7 X2-1 CHECK FOR THE FIRST BLOCK
NZ X7,RDC2 IF NOT FIRST C.B. OF LINKED CHAIN
SX7 B5 FIRST COMMUNICATION BLOCK ADDRESS
LX7 18
BX0 X0+X7
RDC2 PL X3,RDC1 IF BLOCK COUNT NOT GREATER THAN PRIOR COUNT
SB4 X2+1 NEW HIGHEST BLOCK COUNT
EQ RDC1 LOOP
RDC3 SB3 B4-NCBC-1 INPUT LIMIT
NG B3,RDC3.2 IF WITHIN LIMIT
BX3 X4
LX3 59-58+18 LEFT JUSTIFY BLOCK FLAG
NG X3,RDC17 IF MORE INPUT
BX2 X0
AX2 18 (X2) = PRIMARY COMMUNICATION BLOCK ADDRESS
RJ RSC RELEASE SECONDARY COMMUNICATION BLOCK
SX2 X0+ (X2) = CURRENT COMMUNICATION BLOCK ADDRESS
RJ RLC RELEASE COMMUNICATION BLOCK
RDC3.1 BX6 X6-X6
SX7 CIINL INPUT TOO LARGE REASON CODE
SA6 A4 FREE INPUT BUFFER FOR FURTHER TRANSFER
AX0 18 (X0) = PRIMARY COMMUNICATION BLOCK ADDRESS
SX2 B1
SA3 X0+CMBHL+1 WORD TWO OF USER AREA
MX4 48
BX4 X4*X3 CLEAR WORD COUNT
SA7 A3+B1 REASON CODE FOR *ITASK*
BX4 X4+X2 UPDATE WORD COUNT
LX2 CBSYS-CBSYN+1
BX7 X4+X2 ADD SYSTEM ORIGIN FLAG
SA6 A7+B1
SA7 A3
EQ RDCB RETURN
RDC3.2 SA3 A3+CMBHL-3 WORD ONE OF USER AREA
MX7 -24
BX7 -X7*X3 SEQUENCE NUMBER OF TRANSACTION
* CHECK FOR FIRST OR LAST INPUT BLOCK.
RDC4 SX3 X4 TERMINAL ORDINAL
MX6 1
LX4 18+1
BX1 X6*X4 LAST INPUT BLOCK FLAG
BX5 -X6*X5
LX4 -1
BX5 X5+X1
BX0 X0+X1 BYPASS SCHEDULER IF NOT LAST INPUT BLOCK
LX5 17-59
SX6 B1
ZR X1,RDC5 IF LAST INPUT BLOCK
BX6 X5
SA6 A5
NZ B4,RDC6 IF NOT FIRST OF A MULTI BLOCK INPUT
SB4 B1
EQ RDC6 DO NOT BUMP TERMINAL TRANSACTION COUNT
* FORMAT COMMUNICATIONS BLOCK.
RDC5 IX6 X6+X5 INCREMENT TERMINAL TRANSACTION COUNT
LX6 59-TSIWS
NG X6,RDC6 IF TERMINAL IN INPUT WANTED STATE
LX6 59-59-59+TSIWS
MX1 -TSTCN
SA6 A5
BX6 -X1*X6
NZ X6,RDC6 IF NOT FIELD OVERFLOW
BX6 X1*X5 RESET TERMINAL TRANSACTION COUNT TO ZERO
SA6 A5
RDC6 SB6 X0 COMMUNICATION BLOCK ADDRESS
RJ FCB
SA4 RDCBC
SA4 X4 FWA OF INPUT BUFFER
SX7 X4-1 WORDS TO MOVE TO COMMUNICATION BLOCK
SA5 A4+
SB6 X0+CMBHL+CMBRL
* TRANSFER TERMINAL INPUT TO COMMUNICATION BLOCK.
ZR X7,RDC9 ZERO LENGTH MESSAGE
RDC8 SA5 A5+B1 INPUT WORD
SB6 B6+B1
SX7 X7-1
BX6 X5 MOVE WORD TO COMMUNICATION BLOCK
SA6 B6-B1
NZ X7,RDC8 IF NOT END OF INPUT TRANSFER
RDC9 SA7 A4+ FREE INPUT BUFFER FOR FURTHER TRANSFER
BX1 X4
LX1 59-48
NG X1,RDCBX IF SYSTEM ORIGIN TRANSACTION
SA2 X0+CBTAW GET *TST* ADDRESS
LX2 CBTAN-1-CBTAS
SA5 X2+TSIWW
ERRNZ TSIWW-1 INPUT WANTED NOT IN WORD 2 OF *TST*
LX5 59-TSIWS
PL X5,RDC14 IF NOT INPUT WANTED
BX7 X0 COMMUNICATION BLOCK ADDRESS
NG X0,RDC14 IF NOT LAST INPUT BLOCK
* REQUEST ROLLIN OF TASK WAITING FOR INPUT.
SB5 X0+ FIRST COMMUNICATION BLOCK ADDRESS
SA7 RDCBB
SB4 X4+
AX0 18
NZ X0,RDC10.1 IF MULTIPLE BLOCK INPUT
SX0 B5 RESTORE FIRST BLOCK ADDRESS
SB5 B0 SET SINGLE BLOCK INPUT FLAG
RDC10.1 SB3 B1
RJ RTK ROLL IN TASK WAITING FOR INPUT
MX3 1
SA4 RDCBB
BX0 X3+X4 SET WAIT FOR INPUT PROCESSED FLAG
SX4 B4+
* JOURNAL THE TRANSACTION INPUT.
RDC14 RJ JOL JOURNAL TRANSACTION
LX1 -18
SX1 X1
ZR X1,RDCBX IF FIRST BLOCK OF INPUT
MX2 -18
BX0 X2*X0 CLEAR LAST BLOCK
BX0 X0+X1 FIRST BLOCK OF INPUT
EQ RDCBX RETURN
* PROCESS ERROR CONDITIONS.
RDC17 SA1 RDCBA NUMBER OF TIMES INPUT THROWN AWAY
BX6 X6-X6
SX2 X0
SX7 X1+B1 INCREMENT COUNT
SA6 A4 FREE INPUT BLOCK FOR FURTHER TRANSFERS
BX0 X0-X0
SA7 A1
RJ RLC RELEASE COMMUNICATION BLOCK
EQ RDCBX RETURN
RDCBA BSSZ 1 NUMBER OF TIMES INPUT WAS THROWN AWAY
RDCBB BSS 1 COMMUNICATION BLOCK ADDRESS
RDCBC BSS 1 FWA OF INPUT BUFFER
RDCBD BSS 1 REAL TIME CLOCK AT LAST INPUT
RDCBE BSS 1 COMMUNICATION BLOCK ADDRESS
RFQ SPACE 4,25
** RFQ - ROUTE FILE TO QUEUE.
*
* *RFQ* SETS UP THE SECOND AND FIFTH WORDS OF THE *DSP*
* PARAMETER BLOCK AND ISSUES THE *ROUTE* REQUEST WITHOUT
* RECALL. IT THEN CHECKS THE COMPLETE BIT AND PUTS THE TASK
* IN RECALL UNTIL IT SETS.
*
* ENTRY (X1) = SECOND WORD OF DSP BLOCK (FC / DC / FLAGS).
* (X3) = 42/STATUS PROC-R PARAMS, 18/STATUS PROC-R ADDR.
* (X4) = ERROR MESSAGE WORD, FOR *SUBMT* OR *KTSDMP*.
*
* EXIT TO *TSSC* TO ENTER MAIN LOOP AFTER *ROUTE*.
* TO EXIT ADDRESS IN OTHER CASES.
*
* USES X - 1, 2, 5, 6, 7.
* A - 1, 2, 5, 6, 7.
* B - 3, 4, 5, 6.
*
* CALLS COD, SNM, TRCL.
*
* MACROS MESSAGE, RETURN, ROUTE.
RFQ BSS 0 ENTRY
BX6 X1 COMPLETE THE *DSP* PARAMETER BLOCK
SA6 TDSP+1
SA1 SF GET THE FILE NAME
BX7 X3 SAVE THE STATUS PROCESSOR INFORMATION
MX2 42
SA7 B2+RCLA
BX7 X4
SA7 RFQA+3
BX6 X2*X1 FILE NAME
SA6 A6-B1
ROUTE A6 ROUTE THE FILE
RFQ1 SA2 TDSP CHECK FOR COMPLETION
SX7 RFQ1 RECALL RETURN ADDRESS
LX2 59-0
PL X2,TRCL2 IF ROUTE NOT COMPLETE
BX7 X7-X7 CLEAR FILE NAME / INTERLOCK
SA7 A2
SA5 A1+B1 GET STATUS PROCESSOR INFORMATION
ERRNZ RCL+1-RCLA CODE ASSUMES RELATIONSHIP
SX6 DSQID RESTORE ORIGINAL TID
SA6 TDSP+2
SA7 A6+B1 CLEAR PARAMETER WORDS 3 - 6
SA7 A7+B1
SA7 A7+B1
SA7 A7+B1
MX6 -6 GET ERROR CODE
LX2 -12-59+0+60
BX6 -X6*X2
SB4 X5 STATUS PROCESSOR ADDRESS
SB5 B2+NUAPL TASK RA
AX5 18 STATUS PROCESSOR PARAMETERS
JP B4 EXECUTE STATUS PROCESSOR
RFQ2 BSS 0 *KTSDUMP* STATUS PROCESSOR
ZR X6,RFQ7 IF NO ERRORS
EQ RFQ5 REPORT ERROR
RFQ3 BSS 0 *ROUTE* STATUS PROCESSOR
SA6 B5+X5 RETURN STATUS TO CALLER
EQ TSSC ENTER MAIN LOOP
RFQ4 BSS 0 *SUBMIT* STATUS PROCESSOR
ZR X6,TSSC IF NO ERROR
SX1 X6-JBCE
ZR X1,RFQ6 IF JOB STATEMENT ERROR
SX1 X6-USCE
ZR X1,RFQ6 IF INCORRECT USER STATEMENT
AX5 18 ERROR EXIT ADDRESS
RFQ5 BX1 X6
SB6 B2 SAVE (B2)
RJ COD CONVERT TO DISPLAY CODE
MX1 -12
BX1 -X1*X6
LX1 59-11
SB2 1RX SEARCH CHARACTER
SB3 DAYB ASSEMBLY AREA
SB5 -RFQA MESSAGE FORMAT
RJ SNM SET NAME IN MESSAGE
SB2 B6 RESTORE (B2)
MESSAGE DAYB INFORM OPERATOR ABOUT POSSIBLE PROBLEM
RFQ6 RETURN SF,R
RFQ7 SB4 X5
JP B4 EXIT TO ERROR EXIT ADDRESS
RFQA DATA C* DSP ERROR XXB RETURNED ON TASK SUBMIT.*
RLC SPACE 4,10
** RLC - RELEASE EXCESS COMMUNICATION BLOCKS.
*
* ENTRY (X2) = FWA OF FIRST COMMUNICATION BLOCK TO RELEASE.
*
* USES X - 1, 2, 3, 4, 5, 6.
* A - 3, 5, 6.
* B - 4.
RLC SUBR ENTRY/EXIT
SA5 X2+ LINK TO NEXT COMMUNICATION BLOCK
RLC1 ZR X2,RLCX IF NO MORE COMMUNICATION BLOCKS
SX3 47*CMBL
TX6 X2,-VCBSA RELATIVE C.B. ADDRESS
NG X6,RLCX IF TRYING TO RELEASE A FAKE C.B.
SB4 -1
SA6 X2+1 CLEAR TST DATA FROM WORD ONE
RLC2 IX6 X6-X3
SB4 B4+B1
PL X6,RLC2 IF C.B. BIT IN THE NEXT WORD
IX6 X6+X3
SX1 CMBL
PX6 X6 DIVIDE BY C.B. LENGTH TO GET BIT POSITION
TA3 B4,VCBRT
NX6 X6
PX1 X1 C.B. LENGTH
NX1 X1
FX4 X6/X1
UX4,B4 X4
LX1 X4,B4 RESULT OF DIVISION
SX6 B1
BX1 -X1
SB4 X1+47 SHIFT COUNT FOR BIT POSITION
LX6 B4,X6
BX6 X6+X3
SA6 A3 RESET COMMUNICATION BLOCK BIT MAP
BX6 X6-X6
SA6 X2 CLEAR FIRST WORD OF USER AREA
MX6 1 INDICATE COMMUNICATION BLOCKS AVAILABLE
SA6 EVCB
SX2 X5
SA5 X5 NEXT COMMUNICATION BLOCK TO RELEASE
EQ RLC1 CONTINUE TO RELEASE C.B.
RSC SPACE 4,10
** RSC RELEASE SECONDARY COMMUNICATION BLOCKS.
*
* ENTRY (X2) = ADDRESS OF PRIMARY COMMUNICATION BLOCK.
*
* USES X - 2, 6.
* A - 2, 6.
* B - 5.
*
* EXIT (X2) = ADDRESS OF PRIMARY COMMUNICATION BLOCK.
*
* CALLS RLC.
RSC SUBR
SB5 X2 SAVE C.B. ADDRESS
MX6 60-CBNCN CLEAR NEXT C.B. LINK
SA2 X2
BX6 X6*X2
SA6 A2
SX2 X2 SECONDARY C.B. ADDRESS
RJ RLC RELEASE COMMUNICATION BLOCKS
SX2 B5+
EQ RSCX RETURN
RLR SPACE 4,10
** RLR - RELEASE A ROLLOUT TABLE ENTRY.
*
* ENTRY (X0) = ROLLOUT TABLE ADDRESS.
* (B5) = SUB CONTROL POINT AREA OF TASK.
*
* USES X - 1, 3, 6.
* A - 3, 6.
* B - 4.
RLR SUBR ENTRY/EXIT
ZR X0,RLRX IF NO ROLLOUT TABLE ENTRY TO RELEASE
SX3 47*TROLE
SX6 X0-TROL
SB4 -1
RLR1 IX6 X6-X3
SB4 B4+B1
PL X6,RLR1 IF ADVANCE BLOCK COUNT
IX6 X6+X3
SA3 B4+TROM ROLLOUT TABLE MAP ALLOCATION
SB4 B7
SX1 TROLE ROLLOUT TABLE ENTRY LENGTH
IX1 X6/X1
SB7 B4
SX6 B1
BX1 -X1
SB4 X1+47 SHIFT COUNT FOR BIT POSITION
LX6 B4,X6
BX6 X6+X3
SA6 A3 RELEASE ENTRY
SA3 B5+CB2C GET C.B. ADDRESS
MX6 42
SA3 X3+CBCR GET ROLLOUT TABLE ADDRESS
SX4 X3
IX1 X0-X4
NZ X1,RLRX IF NOT TO CLEAR ROLLOUT TABLE ADDRESS
BX6 X6*X3 CLEAR ROLLOUT TABLE ADDRESS
SA6 A3
EQ RLRX *RETURN
RLS SPACE 4,15
** RLS - RELEASE AN ENTRY IN A BIT RESERVATION MAP.
*
* ENTRY (A2) = ADDRESS OF BIT MAP.
* (X0) = ADDRESS OF ENTRY TO RELEASE.
* (X1) = LENGTH OF ENTRY.
* (X2) = FIRST WORD OF BIT MAP.
* (X3) = FWA OF TABLE.
* (B6) = NUMBER OF RESERVATION BITS PER WORD.
*
* USES A - 2, 6.
* X - 0, 2, 3, 6.
* B - 3, 6.
RLS SUBR ENTRY/EXIT
IX3 X0-X3
SB3 B7
IX3 X3/X1 ENTRY ORDINAL
SB7 B3
SB3 -1
SX0 B6
RLS1 SB3 B3+B1 COMPUTE RESERVATION WORD INDEX
IX3 X3-X0
PL X3,RLS1 IF ADVANCE WORD COUNT
SA2 A2+B3 RESERVATION WORD
IX3 X3+X0 BIT INDEX
SX6 B1
BX3 -X3
SB3 B6+X3
LX6 B3,X6
BX6 X6+X2
SA6 A2 RELEASE ENTRY
EQ RLSX RETURN
ROLL SPACE 4,10
** ROLL SET TASK ELIGIBLE FOR ROLLOUT.
*
* ENTRY (X1) = ROLLOUT PARAMETERS.
* (X5) = TIME TO LEAVE TASK IN CORE BEFORE ROLLOUT.
*
*T (X1) 36/ ROLLOUT EVENT ID,12/ ,12/ PRIORITY BIAS
ROLL SX7 ROL1
RJ FFR RESERVE A ROLLOUT TABLE ENTRY
NZ X0,ROL2 IF ROLLOUT TABLE ENTRY RESERVED
LX5 18
BX7 X7+X5
SA7 B2+RCL
BX6 X1 ROLLOUT REQUEST TYPE
SA6 A7+B1
SX7 0
SA7 B2+ROSC
JP TRCL ROLLOUT TABLE FULL - PUT TASK ON RECALL
ROL1 SA4 B2+ROSC
AX1 18
BX5 X1
SA1 A1+1 RESET ROLLOUT REQUEST TYPE
NG X4,TSSC IF ROLLOUT INTERUPTED
JP ROLL TRY AGAIN
* ENTRY POINT IF ROLLOUT TABLE ENTRY PRERESERVED.
* (X0) = ROLLOUT TABLE ENTRY ADDRESS.
ROL2 SX6 B0+ CLEAR ROLL EVENT
* ENTRY POINT FOR EVENTS.
* (X6) = EVENT.
ROL3 TX4 B7+CPAL,-VCPA GET SUBCP NUMBER
SX7 X0
LX4 36-SCPAL
BX6 X4+X6 ADD SUBCP NUMBER
SA6 X0+RTWEV UPDATE SECOND WORD OF ROLLOUT TABLE
SX4 B1
SA2 B2+CB2C GET COMMUNICATION BLOCK ADDRESS
SA3 X2+CBCR
BX6 X3
SA6 B2+WICB+3
SA2 ROLB ADD SUBCP NUMBER AND ROLLOUT TABLE ADDRESS
BX6 X2*X6
TX3 B7+CPAL,-VCPA CALCULATE SUBCP NUMBER
LX3 48-SCPAL
BX6 X6+X0
BX6 X3+X6
SA6 A3+ UPDATE *CBCR* WORD
SA2 B7+B1 CHECK *CM* RESIDENT TASK
LX2 59-SCCRS
PL X2,ROL3.1 IF NOT CM RESIDENT TASK
MX7 1 ASSUME ROLLOUT COMPLETE
SX6 B7
LX6 18
BX7 X6+X7
SA7 X0
RJ DCPT DROP SUBCP
EQ TSSC TIME SLICE SUBCP
ROL3.1 SA2 STAT14 NUMBER OF TASK ROLLOUT STARTS
IX6 X2+X4
SA6 A2
MX6 42
SA7 B2+ROSC ROLLOUT TABLE ENTRY ADDRESS
MX3 -12
BX7 X6*X1 ROLLOUT EVENT ID
BX6 -X3*X1 PRIORITY BIAS
SA7 X0
LX6 30
SA6 X0+B1
* WAIT FOR DELAY TIME TO EXPIRE BEFORE CONTINUING ROLLOUT.
ZR X5,ROL5 IF NO DELAY TIME
SX6 ROL4
SA2 LTIME LATEST REAL TIME CLOCK READING
MX7 -36
SA6 B2+RCL
BX2 -X7*X2
IX7 X5+X2 SET TIME TO RESUME ROLLOUT PROCESSING
SA7 A6+B1
JP TRCL WAIT FOR DELAY TIME TO EXPIRE
ROL4 SA4 B2+ROSC
SA3 LTIME REAL TIME CLOCK
NG X4,ROL15 IF ROLLOUT WAS INTERUPTED
SA2 A1+B1
MX7 -36
BX3 -X7*X3
IX3 X2-X3
PL X3,TRCL IF TIME NOT YET ELASPED
* INTERLOCK ROLLOUT FILE.
ROL5 SA1 RO+5
ZR X1,ROL6 IF FILE NOT RESERVED
SX7 ROL5
SA4 B2+ROSC
NG X4,ROL15 IF ROLLOUT TO BE TERMINATED
JP TRCL2 PLACE TASK ON RECALL
* RESERVE ROLLOUT FILE SPACE FOR SUB CP.
ROL6 SX3 A1-5 FET ADDRESS OF ROLLOUT FILE
SA4 B2+ROSC
NG X4,ROL15 IF ROLLOUT WAS INTERUPTED
SX0 X4 RESTORE ROLLOUT TABLE ENTRY ADDRESS
SA4 X4 ROLLOUT TABLE ENTRY
SX7 B7
SA7 A1 SET ROLLOUT FILE INTERLOCK
SA0 A4
BX6 X4+X3
SA6 A4
SX5 ROLBL ROLLOUT BLOCK LENGTH
SA3 B7
SB5 X6 ROLLOUT FILE FET ADDRESS
LX3 -18
MX7 -48 GET ROLLOUT FL
SA4 X0+RTWEV CHECK IF MEMORY REQUEST ROLLOUT
LX7 -12
BX4 -X7*X4
SA2 MEMC
IX7 X2-X4
NZ X7,ROL6.1 IF NOT MEMORY REQUEST ROLLOUT
UX3,B3 X4
ROL6.1 MX4 1
SX2 X3+NUAPL TOTAL FIELD LENGTH TO ROLL
SB6 B7
IX7 X2/X5
SB7 B6
BX6 X6-X6
SB3 60
SB6 X7+ NUMBER OF ROLLOUT BLOCKS NEEDED
SB3 B3-B6
AX2 X4,B6
SB4 RLATL
TA1 0,VRLAT FIRST WORD OF ROLLOUT FILE ALLOCATION MAP
ROL7 BX3 X2*X1
ZR X3,ROL9 IF HOLE OR END OF FILE
LX1 1
SB3 B3-B1
NZ B3,ROL7 IF NOT END OF SEARCH
SB4 B4-B1
ZR B4,ROL8 IF FILE FULL
SB3 60
SA1 A1+B1 NEXT ALLOCATION WORD
SB3 B3-B6
EQ ROL7 CONTINUE SEARCH
ROL8 SX7 ROL5
SA7 B2+RCL
SA2 A0 ROLLOUT TABLE ENTRY
MX3 42
SA6 X2+5 CLEAR INTERLOCK ON ROLLOUT FILE
BX7 X3*X2
SA7 A2 CLEAR FET POINTER
JP TRCL ROLLOUT FILE FULL - PLACE TASK ON RECALL
ROL9 SB4 60
BX7 X2+X1 SET RESERVATION BITS
SB3 B3+B6
LX6 X2,B3 SAVE A COPY OF RESERVATION BITS
SA6 B2+RRSC
LX7 X7,B3 JUSTIFY RESERVATION WORD
SX2 B4+
SA7 A1
SX6 A1
TX3 A1,-VRLAT NTH WORD IN TABLE
SA6 B2+RRSC+1
SB4 B4-B3
IX3 X3*X2
SX4 NPRBL
SX3 X3+B4 ADD BIT POSITION IN WORD
IX7 X4*X3 DISK ADDRESS OF START OF ROLLOUT BLOCK
* COMPUTE SCHEDULING PRIORITY.
SA1 B7+2
MX3 -12
SA4 A0+B1 GET PRIORITY BIAS VALUE
LX1 12
BX2 -X3*X1
LX4 -30
TA2 X2,VTLD GET ORIGINAL TASK PRIORITY
BX1 -X3*X2
SA7 B5+6 SET DISK ADDRESS INTO FET
BX2 -X3*X4
IX1 X2+X1 SET SCHEDULING PRIORITY
BX3 -X3*X1 IN CASE OF OVERFLOW
SA1 B7
LX3 30
LX1 -18
SX5 X1+ FL OF TASK
BX6 X7+X3
LX5 42
BX6 X6+X5 FL / PRIORITY / DISK ADDRESS
SA6 A0+1
SA2 A7+B1 COMPARE WRITE ADDRESS TO CURRENT EOI
IX3 X2-X7
PL X3,ROL11 IF ADDRESS NOT BEYOND EOI
* EXTEND FILE TO DESIRED WRITE ADDRESS.
BX3 -X3
SX1 64
BX6 X2
IX2 X1*X3 NUMBER OF WORDS TO ENTEND FILE
SA1 B5+B1
MX3 42
SA6 B5+6 CURRENT EOI ADDRESS
BX3 X3*X1
SX4 100B USE START OF TRANEX FOR FIRST
IX7 X4+X2
SA7 B5+4 LIMIT
BX6 X3+X4
SA6 A1 FIRST
SX7 X7-1
SA7 A6+B1 IN = LIMIT -1
SX6 X6
SA6 A7+B1 OUT = IN
SX5 ROL10 RETURN ADDRESS
REWRITER B5 EXTEND FILE
LX2 18
BX7 X5+X2 ADD FET ADDRESS
JP TRCL2 WAIT FOR WRITE TO COMPLETE
ROL10 LX1 -18
SA2 X1 ROLLOUT FILE FET
SB5 X1
LX2 59
PL X2,TRCL IF FILE BUSY
SA4 B2+ROSC
PL X4,ROL11 IF ROLLOUT NOT INTERUPTED
SX7 B0+
SA7 B5+5 CLEAR INTERLOCK
JP ROL15 CLEAN UP ROLLOUT
* SET UP FET FOR ROLLOUT.
ROL11 SA1 B7
MX4 42
SX5 X1-NUAPL-1 START OF AREA TO ROLL - 1
SA2 B5+B1 FIRST
LX1 -18
SX6 X5+B1
BX2 X4*X2
SX1 X1+NUAPL LENGTH OF AREA TO ROLL
SA6 B5+3 OUT
SA3 A6+B1
BX7 X2+X5
IX1 X6+X1
SA7 A2 FIRST
BX4 X4*X3
BX7 X4+X1
SA7 A3 LIMIT
SX7 X5
SA7 A6-B1 IN
* SAVE SUB CONTROL POINT TABLE INFORMATION IN ROLLOUT BLOCK.
SA1 B7+B1
SA3 A1+B1
MX6 12
SX4 B7
IX7 X1-X4 UNBIAS ABSOLUTE STATUS WORD POINTER
SA7 B2+RSCC
BX6 X6*X3 TASK INDEX
SA6 A7+B1
SX1 CPACL SAVE SUB CP ACTIVE TASK STATUS WORDS
SX2 A3+B1
SA4 B7
MX7 1 SET STORAGE MOVE LOCK OUT
SX3 A6+B1
BX7 X7+X4
SA7 A4
RJ MVE= TRANSFER STATUS WORDS
REWRITER B5+ INITIATE WRITE
LX2 18
SX7 ROL12
BX7 X7+X2
JP TRCL2 WAIT FOR WRITE TO COMPLETE
ROL12 LX1 -18
SA2 X1 ROLLOUT FILE FET
BX6 X6-X6
LX2 59
PL X2,TRCL IF FILE BUSY
SA3 A2+6
SA1 A3+B1 COMPARE CURRENT POSITION TO EOI
AX3 30
IX2 X1-X3
SA1 B7
PL X2,ROL13 IF WRITE DID NOT EXTEND EOI
BX7 X3
SA7 A3+B1 SET NEW EOI
* RELEASE SUB CONTROL POINT AND FIELD LENGTH.
ROL13 MX3 1
SA4 B2+ROSC
BX7 -X3*X1 CLEAR STORAGE MOVE INTERLOCK
SA6 A2+5 RELEASE INTERLOCK ON ROLLOUT FILE
SA7 A1
SA2 X4
NG X4,ROL15 IF ROLLOUT WAS INTERUPTED
BX7 X3+X2
SA7 A2 SET ROLLOUT COMPLETE
LX1 -18
SB6 B7
SX1 X1+NUAPL AMOUNT OF CORE BEING RELEASED
SA2 AVAILCM
IX7 X1+X2
SA7 A2 UPDATE AVAILABLE CORE COUNT
SB4 CPACL-1
SA6 B7+CPAHL
ROL14 SA6 A6+B1
SB4 B4-B1
NZ B4,ROL14 IF ANOTHER STATUS WORD TO CLEAR
SA4 STAT13 NUMBER OF TASK ROLLOUT COMPLETES
SX6 B1
IX6 X4+X6
SA6 A4
EQ ESCP1 RELEASE SUBCONTROL POINT
* RELEASE ROLLOUT FILE SPACE AND TABLE ENTRY.
ROL15 SB3 TSSC RESUME PROCESSING AFTER CLEAN UP
SB5 B2
SA3 X4
SB6 B7
LX3 59-RTBDM
PL X3,ROL16 IF NOT DATA MANAGER ROLL
SB3 ROL31 EXIT ADDRESS
* ROLLIN PROCESSING.
*
* ENTRY (B3) = RETURN ADDRESS.
* (B5) = SUB CONTROL POINT AREA.
* (B6) = SUB CONTROL POINT ADDRESS.
* (X4) = ADDRESS OF ROLLOUT TABLE ENTRY.
* EXIT (X6) = FIRST WORD OF ROLLOUT TABLE ENTRY.
ROL16 SA1 X4
BX6 X1
SA2 X4+2 WORD 2 OF ROLLOUT TABLE
LX2 59-RTABS
PL X2,ROL16.1 IF NOT TO ABORT TASK
MX3 SCCDN SET CDCS ABORTED FLAG
SA2 B6+B1 GET WORD 2 OF SUBCP TABLE
LX3 SCCDS-59
BX7 X2+X3
SA7 A2
ROL16.1 SX0 X4
SX2 X1 ROLLOUT FILE FET ADDRESS
SA6 ROLA SAVE FIRST WORD OF ROLLOUT TABLE ENTRY
ZR X2,ROL17 IF NO FILE SPACE ASSIGNED
SA3 B5+RRSC+1
SA4 X3 ROLLOUT FILE RESERVATION WORD
SA2 A3-B1
BX6 -X2*X4 RELEASE ROLLOUT FILE RESERVATION SPACE
SA6 A4
ROL17 SA4 B6+B1 RESTORE C.B. HEADER WORDS
LX1 59-55
SA4 X4
SA0 B6
SA5 B5+WICB+3 RESTORE PREVIOUS ROLLOUT TABLE ADDRESS
SA2 X4+CBCR
SA3 ROLC MASK ABORT AND *DT* FLAGS
BX7 X3*X2
BX7 X5+X7
SA7 A2 UPDATE *CBCR* WORD
MX6 -6
NG X1,ROL20 IF NO RESTORE OF C.B. AFTER ROLLIN
SA1 X0+RTWEV GET ROLLOUT EVENT
LX1 12
BX6 -X6*X1
SX1 X6-EVWI
NZ X1,ROL17.1 IF NOT *WAITINP* ROLL
SA2 B5+WICB RESTORE W3 - W5 OF C.B. SYSTEM HEADER
BX6 X2
SA6 X4+CBTLW
SA2 A2+B1
SA1 X4+3 NEW MC FIELD
LX7 56-8
BX7 X7*X2 CLEAR OLD MC FIELD
BX7 X1+X7
SA2 A2+B1
SA7 A1
BX6 X2
SA6 A7+1
* MOVE COMMUNICATION BLOCK TO TASK AFTER FIRST DETERMINING
* IF A *WAITINP* TO A USER-DECLARED BUFFER IS ACTIVE.
ROL17.1 MX7 42
SA1 B5+LRA1 READ LAST SYSTEM REQUEST
SA2 SCTA READ BUFFER-*WAITINP* REQUEST
BX6 X7*X1
BX6 X2-X6
SX3 B5+NUAPL+SUAC
NZ X6,ROL18 IF NOT BUFFER-*WAITINP* REQUEST
SX3 B5+NUAPL
SX1 X1
IX3 X3+X1 (X3) = FWA OF USER-DECLARED BUFFER
ROL18 ZR X6,ROL19 IF BUFFER-*WAITINP*
SA2 B6
LX2 59-57
NG X2,ROL20 IF SOLICITED COMMUNICATION BLOCK TASK
ROL19 SA1 X4 RESTORE TASK-S CB1C
SA2 X4+B1
BX6 X1
BX7 X2
SX1 CMBL-CMBHL
SX2 X4+CMBHL
SA6 B5+CB1C
SA7 B5+CB2C
SA4 X2-CMBHL+CBITW
LX4 59-CBITS
MX6 -59
PL X4,ROL19.2 IF NOT INITIAL TRANSFER TO C.B.
BX6 -X6*X4 CLEAR INITIAL TRANSFER BIT
LX6 CBITS-59
SA6 A4
MX7 -CBWCN
SA4 X2-CMBHL+CBWCW GET COUNT OF WORDS TO MOVE
BX1 -X7*X4
SX4 B4 SAVE (B4)
SB6 B5+NUAPL+SUAC+CMBL-CMBHL-CBTL-1
SX6 B2+ SAVE (B2)
SB4 X1-CBDL-CBUL
SB2 -B4 CLEAR REST OF USER AREA IN C.B
BX7 X7-X7
SA7 B6+
ROL19.0 SB2 B2-B1
SA7 A7-B1
NZ B2,ROL19.0 IF NOT END OF USER AREA
SB4 X4 RESTORE (B4)
SB2 X6 RESOTRE (B2)
NZ X1,ROL19.1 IF TERMINAL INPUT
SA4 X2+CMBRL STATUS WORD OF C.B.
SX1 B1
IX4 X1-X4
ZR X4,ROL19.1 IF TERMINAL *WAITINP* TIMED OUT
SX1 B0+
ROL19.1 SX1 X1+CMBRL
ROL19.2 RJ MVE= MOVE C.B. INTO TASK FL
ROL20 LX5 12
SB6 A0 RESTORE B6
PL X5,ROL21 IF CALLRTN TASK DID NOT ABORT
SA2 B6+B1
SX3 B1
LX3 55
BX7 X2+X3 SET ABORT FLAG
SA7 A2+
ROL21 MX6 -CBNLN
SA4 X0+RTWEV CHECK ROLLOUT EVENT
LX4 12
BX4 -X6*X4
SX4 X4-EVCR
NZ X4,ROL23 IF NOT *CALLRTN* ROLL
SA4 B5+CB2C GET C.B. ADDRESS
SA5 X4+CBCR DECREMENT NEST LEVEL
LX5 CBNLN-1-CBNLS
BX3 -X6*X5
SX3 X3-1
BX6 X6*X5
BX7 X6+X3
LX7 CBNLS-CBNLN+1
SA7 A5
NZ X3,ROL23 IF NOT INITIAL TASK IN *CALLRTN* CHAIN
SA1 B5+RTSC RESTORE TASK CHAIN
BX6 X1
MX2 60-CBRFN
SA6 X4+CBTLW
LX2 CBRFS-0
BX7 X2*X7
SA7 A5+
ROL23 SX2 B4+
RJ RLR RELEASE ROLLOUT TABLE ENTRY
SB4 X2 RESTORE B4
SA1 ROLA FIRST WORD OF ROLLOUT TABLE ENTRY
BX6 X1
JP B3 RETURN
ROL31 RJ DCPT DROP CPU FOR TASK
EQ TSSC TIME SLICE SUBCP
ROLA BSS 1 FIRST WORD OF ROLLOUT TABLE ENTRY
ROLB VFD 6/77B,6/0,30/7777777777B,18/0 *CBCR* MASK WORD
ROLC VFD 6/0,6/0,1/1,25/0,4/17B,18/0 *CBCR* MASK WORD
RSV SPACE 4,15
** RSV - RESERVE AN ENTRY IN A BIT RESERVATION MAP.
*
* ENTRY (A2) = ADDRESS OF BIT MAP.
* (X2) = FIRST WORD OF BIT MAP.
* (B6) = NUMBER OF RESERVATION BITS PER WORD.
*
* EXIT (A2) = ADDRESS OF WORD IN MAP CONTAINING THE BIT SET.
* (X0) = 0 IF NO ENTRY AVAILABLE.
* (B3) = ORDINAL OF RESERVED ENTRY.
*
* USES A - 2, 6.
* X - 0, 2, 3, 6.
* B - 3, 6.
RSV SUBR ENTRY/EXIT
* LOCATE A FREE ENTRY.
SX3 B6+
RSV1 NX0,B3 X2
ZR X0,RSVX IF NO ENTRIES AVAILABLE
SB6 B6-B3
NZ B6,RSV2 IF ENTRY AVAILABLE
SA2 A2+1
SB6 X3+ RESTORE ENTRIES PER WORD
EQ RSV1 TRY NEXT WORD
* RESERVE ENTRY.
RSV2 SX3 1
LX3 X3,B6 POSITION TO LOCATED ENTRY
BX6 -X3*X2 RESERVE ENTRY
SA6 A2+
EQ RSVX RETURN
RTK SPACE 4,10
** RTK - ROLLIN TASK WAITING FOR INPUT.
*
* ENTRY (X0) = FWA OF COMMUNICATION BLOCK.
* (A5) = SECOND WORD OF TST ENTRY.
* (B3) .EQ. 0 IF SEARCH SEQUENCE NUMBER ONLY.
* .NE. 0 ROLL IN TASK WAITING FOR INPUT.
* EXIT (X6) = SEQUENCE NUMBER IF (B3) .EQ. 0.
*
* USES A - 1, 2, 3, 5, 6, 7.
* B - 5.
* X - 1, 2, 3, 5, 6, 7.
*
* CALLS EXIT, MSQ, SRO.
RTK6 MX7 60-TSIWN
SA1 A5+
ERRNZ TSIWW-1 IF INPUT WANTED NOT IN WORD 1
LX7 TSIWS-TSIWN+1
BX7 X7*X1 CLEAR WANT INPUT FLAG
SA7 A1+
RTK SUBR ENTRY/EXIT
SB5 B0 INITIAL CALL FOR ROUTINE *SRO*
MX6 12
SX7 B3+
SA2 X0+B1 SECOND WORD OF COMMUNICATION BLOCK
LX6 -30
SA7 RTKB
LX2 -24
BX5 X6*X2 GET TERMINAL ORDINAL
RTK1 RJ SRO SEARCH ROLLOUT TABLE
NZ B5,RTK4 IF ROLLOUT ENTRY FOUND
SA3 RTKA *WAITINP* REQUEST
TX1 B0,VCPA FWA OF SUBCONTROL POINT TABLE
MX7 42
BX6 X3
RTK2 SA2 X1 TASK RA
SA3 X2-NUAPL+LRA1 RA REQUEST
BX1 X7*X3
SA3 X2-NUAPL+RCLA TERMINAL ORDINAL
BX2 X1-X6
BX3 X5-X3
NZ X2,RTK3 IF NOT *WAITINP*
*
NZ X3,RTK3 IF NOT FOR SAME TERMINAL
SA3 A2+B1 WORD 2 OF SUBCONTROL POINT TABLE
MX5 1 COMMUNICATION BLOCK AT SUBCONTROL POINT
BX6 X5+X0
SA6 A2+CPAHL
BX7 X7*X3 CLEAR OLD FWA OF COMMUNICATION BLOCK
SA7 A3
SX6 TSSC RECALL ADDRESS
SA6 X2-NUAPL+RCL
SA3 X2+CB1C GET SEQUENCE NUMBER
MX7 -CBTSN
LX3 CBTSN-CBTSS-1
BX7 -X7*X3
EQ RTKX RETURN
RTK3 SA3 A2+2 FWA OF NEXT SUBCONTROL POINT
SX1 X3+
NZ X1,RTK2 IF MORE SUBCONTROL POINTS
RJ EXIT ROLLOUT TABLE ENTRY LOST
RTK4 SA2 B5
LX2 59-58
PL X2,RTK1 IF NOT WAIT FOR INPUT ROLLOUT ENTRY
LX2 58-59
BX3 X6*X2
BX3 X3-X5
NZ X3,RTK1 IF NO MATCH ON TERMINAL ORDINAL
SA3 B5+RTWEV GET SEQUENCE NUMBER
MX5 -RTTSN
LX3 RTTSN-RTTSS-1
BX6 -X5*X3 SEQUENCE NUMBER
SX5 B5
SA3 RTKB
ZR X3,RTKX IF SEARCH FOR SEQUENCE NUMBER ONLY
NG X2,RTK5 IF ROLLOUT COMPLETED
SA2 B5+2 WORD 2 OF ROLLOUT TABLE ENTRY
MX1 -6
LX2 -36 RIGHT JUSTIFY SUBCP NUMBER
BX1 -X1*X2 SUBCP NUMBER
LX1 SCPAL
TA2 X1-CPAL,VCPA SUB CONTROL POINT ADDRESS
MX7 42
SA3 A2+B1 WORD 2 OF SUB CONTROL POINT TABLE ENTRY
MX5 1
BX6 X5+X0 SET C.B. IS PRESENT AT SUB CONTROL POINT
BX7 X7*X3 MASK TERMINAL NAME
SA6 A2+CPAHL
SA2 X2-NUAPL+ROSC
SX1 A6
BX7 X7+X1 COMMUNICATION BLOCK STATUS
BX6 X5+X2 SET INTERRUPT ROLLOUT FLAG
SA7 A3
SA6 A2
EQ RTK6 CLEAR WAIT INPUT FLAG
RTK5 SA2 X5 ROLLOUT ENTRY
MX7 2 CLEAR WAIT INPUT AND TIMED FLAG
LX7 58-59
BX7 -X7*X2
SA7 A2
RJ MSQ REQUEST ROLLIN OF TASK TO PROCESS INPUT
EQ RTK6 CLEAR WAIT INPUT FLAG
RTKA VFD 24/4LSCTP,18/5,18/0
RTKB BSSZ 1 (B3)
RTS SPACE 4,15
** RTS - RETURN *TAF* STORAGE.
*
* RETURN A BLOCK OF STORAGE BY SETTING A BIT IN THE
* RESERVATION WORD.
*
* ENTRY (B3) = FWA OF STORAGE.
*
* USES A - 2.
* X - 0, 1, 2, 3.
* B - 6.
*
* CALLS RLS.
RTS SUBR ENTRY/EXIT
SB6 47 NUMBER OF RESERVATION BITS PER WORD
SX0 B3 ADDRESS OF ENTRY TO RETURN
SX3 TSB FWA OF TABLE
SA2 TSBM ADDRESS OF BIT MAP
SX1 TSBLE LENGTH OF STORAGE ENTRY
RJ RLS RELEASE AN ENTRY
EQ RTSX RETURN
SCB SPACE 4,10
** SCB SEARCH COMMUNICATION BLOCKS.
*
* ENTRY (B5) = 0 IF INITIAL CALL.
* A1/X1/B3/B6 = LAST EXIT VALUES IF NOT INITIAL CALL.
* (X6) = TERMINAL STATUS TABLE ADDRESS COMPARATOR.
* (X6) = 0 IF NO TST COMPARISONS TO BE MADE.
*
* USES A - 1, 2.
* B - 3, 5, 6.
* X - 1, 2, 3.
*
* EXIT (B5) = ADDRESS OF RESERVED COMMUNICATION BLOCK.
* (B5) = 0 IF NO MORE RESERVED ENTRIES.
* (B6) = CURRENT SEARCH POINTER.
* (B3) = WORD OVERFLOW COUNTER.
* (A1/X1) = CURRENT C.B. ALLOCATION WORD BEING SEARCHED.
SCB SUBR
MX3 1
NZ B5,SCB1 IF NOT INITIAL CALL
SB3 B0
TA1 0,VCBRT
SB6 B1
BX1 X3+X1 SEARCHING FOR ZERO BITS
SCB1 NX1,B5 X1
SB6 B6+B5 ADVANCE POSITION
TB5 B6-1,-VNCMB
NZ X1,SCB2 IF NOT AT END OF WORD
SA1 A1+B1
MX3 1
SB3 B3+47
SB6 B3 CURRENT POSITION
BX1 X3+X1
EQ SCB1 CONTINUE WITH NEXT WORD
SCB2 ZR B5,SCBX IF END OF SEARCH
SX3 1
SX2 CMBL LENGTH OF A C.B.
LX3 47
BX1 X1+X3 SET RESERVED BIT SO WE DONT FIND IT AGAIN
SX3 B6
IX2 X2*X3
TB5 X2-CMBL,VCBSA ADDRESS OF COMMUNICATION BLOCK
ZR X6,SCBX IF NO TST ADDRESS GIVEN
SA2 B5+B1
LX2 -18
SX2 X2 TST ADDRESS FROM COMMUNICATION BLOCK
BX2 X2-X6
ZR X2,SCBX IF MATCH ON TERMINAL STATUS TABLE ADDRESS
EQ SCB1 CHECK NEXT COMMUNICATION BLOCK
SLB SPACE 4,15
** SLB - SEND LAST MESSAGE BLOCK.
*
* ENTRY (X7) = RETURN ADDRESS.
* (B2) = FWA OF TASK SYSTEM AREA.
*
* EXIT TO *SND*.
*
* USES X - 1, 2, 4, 6, 7.
* A - 1, 2, 4, 6, 7.
* B - 3, 5, 6.
*
* CALLS SND.
SLB SUBR ENTRY
SA7 B2+SCRC+1 SAVE RETURN ADDRESS
SA1 SLBA GET *SEND* BLOCK HEADER
BX6 X1
SA6 B2+NUAPL+SUAC+CBCH
SB5 B2+NUAPL TASK RA
SB6 SUAC+CBCH
SB6 -B6+B1
SA2 A6 FWA OF REQUEST PARAMETERS
SX6 B0
SA6 A6+B1
SA6 A6+B1
SA6 A6+B1
SB3 B0 WORD COUNT
LX2 30
SA1 B2+CB2C FWA OF TERMINAL IN TST
LX1 -18 RIGHT JUSTIFY TST ADDRESS
SA4 X1
LX4 59-58
EQ SND SEND MESSAGE
SLBA VFD 1/0,1/1,4/0,1/1,5/0,18/SUAC+CBCH,18/0
SRL SPACE 4,10
** SRL - SCAN ROLLOUT LIST FOR TIMED OUT ENTRIES.
SRL SUBR ENTRY/EXIT
SRL0 SB5 B0+ INITIALIZE,SEARCH
SRL1 RJ SRO GET NEXT RESERVED ROLLOUT TABLE ENTRY
ZR B5,SRLX IF END OF SEARCH
SA5 B5
MX4 5
PL X5,SRL1 IF ROLLOUT NOT COMPLETE
LX4 -1
BX2 X4*X5
ZR X2,SRL1 IF NO SPECIAL PROCESSING REQUIRED
LX2 2
MX7 RTTLN
NG X2,SRL2 IF TIMED ROLLOUT
JP SRL1 CONTINUE SEARCH
* CHECKED TIMED ROLLOUT ENTRIES.
SRL2 SA4 ITIME CURRENT TIME
LX4 -6
LX7 -6
BX4 X7*X4 TIME IN SECONDS
BX3 X7*X5 ROLLIN TIME
MX6 -12
IX4 X3-X4
LX5 -18 GET C.B. INDEX
PL X4,SRL1 IF TIME NOT EXPIRED
LX2 -1
BX4 -X6*X5
NG X2,SRL3 IF WAIT ON INPUT TIME OUT
SRL2.1 BSS 0
* REQUEST ROLLIN OF TIMED OUT TASK.
TX0 X4,VCBSA COMMUNICATION BLOCK ADDRESS
SX5 A5 ROLLOUT TABLE ADDRESS
RJ MSQ PLACE TASK IN SCHEDULING QUEUE
SA1 X5 CLEAR TIME AND WAIT INPUT FLAGS
MX7 2
LX7 -1
BX7 -X7*X1
SA7 A1
BX6 X6-X6
SA6 X5+RTWEV CLEAR EVENT IN ROLLOUT
JP SRL0
* REQUEST ROLLIN OF WAIT ON INPUT TASK.
SRL3 SX7 1
LX4 18 TERMINAL ORDINAL
BX7 X4+X7 FORMAT A FAKE TRANSACTION INPUT WORD
SX6 B5 ROLLOUT TABLE ADDRESS
SA6 SRLC SAVE ROLLOUT TABLE ADDRESS
MX6 1
BX7 X6+X7
SA7 SRLA
SA4 SRLA
RJ RDCB FORCE ROLLIN OF TASK
ZR X0,SRLX IF NO COMMUNICATION BLOCK AVAILABLE
SA1 SRLC GET ROLLOUT TABLE ADDRESS
SA2 X1 FWA OF ROLLOUT TABLE ENTRY
MX7 -59 CLEAR TIME EVENT FLAG
LX7 57-59
BX7 -X7*X2
SA7 A2 UPDATE FWA OF ROLLOUT TABLE ENTRY
SX7 1
SA7 X0+CMBHL+CMBRL SET FLAG FOR USER
EQ SRLX RETURN
SRLA BSS 1
SRLB BSS 1 DELAY COUNT
SRLC BSS 1 ROLLOUT TABLE ADDRESS
SPACE 4,20
** STD - SEARCH TASK/TRANSACTION DIRECTORY.
*
* PERFORM A BINARY SEARCH OF A TASK OR TRANSACTION DIRECTORY
* FOR THE SPECIFIED TASK OR TRANSACTION NAME.
*
* ENTRY (X2) = LEFT JUSTIFIED TASK/TRANSACTION NAME.
* (B3) = LENGTH OF ENTRY.
* (B5) = START OF DIRECTORY.
* (B6) = END OF DIRECTORY.
*
* EXIT (A1) = FWA OF ENTRY IF FOUND.
* (X1) = 0 IF ENTRY FOUND.
* (X1) .NE. 0 IF ENTRY NOT IN DIRECTORY.
* (X4) = RESTORED.
* (B7) = RESTORED.
*
* USES A - 1, 3, 4, 7.
* X - 0, 1, 3, 4, 7.
* B - 5, 6, 7.
STD SUBR ENTRY/EXIT
SX1 STD
GT B5,B6,STDX IF SEARCH NOT NECESSARY
SX7 B7
SA7 STDB SAVE (B7)
BX7 X4
BX0 X2
SA7 STDC SAVE (X4)
LX0 42 SHIFT SO NO SIGN BIT
SX7 B6+B3 LWA+1 OF BASE TLD
SA7 STDA
SB7 59
MX7 42 MASK FOR TASKS/TRANSACTIONS
SX3 1
EQ STD2 ENTER LOOP
STD1 SB5 A1+B3 SET NEW LOW LIMIT
GT B5,B6,STD5 IF SEARCH DONE IN BASE
STD2 ZR X3,STD5 IF END OF BASE DIRECTORY
SX3 B6-B5 FIND MIDDLE
SX1 B3
LX1 X1,B7 59-0
PL X1,STD3 IF EVEN NUMBER OF WORDS PER ENTRY
LX4 X3,B7 59-0
PL X4,STD4 IF ODD NUMBER OF ENTRIES REMAIN
SX3 X3+B3
EQ STD4 CONTINUE PROCESSING
STD3 LX4 X3,-B1 DIVIDE BY TWO
LX4 X4,B7 59-0
PL X4,STD4 IF ODD NUMBER OF ENTRIES REMAIN
SX3 X3+B3
STD4 AX3 1
SA1 B5+X3 READ AN ENTRY
BX4 X7*X1
LX4 42 SHIFT SO NO SIGN BIT
IX1 X4-X0
ZR X1,STD7 IF FOUND
NG X1,STD1 IF TOO LOW IN TABLE
SB6 A1-B3 SET NEW HIGH LIMIT
GE B6,B5,STD2 IF FIND NEXT ENTRY
* ENTRIES ADDED ON A NONCREATION RUN ARE PLACED SEQUENTIALLY
* AT THE END OF THE TLD.
STD5 SX3 B3-TLDLE
NZ X3,STD7 IF TRANSACTION SEARCH
SA3 STDA LWA+1 OF BASE TLD
ZR X3,STD7 IF END OF DIRECTORY
SB6 B3-TLDLE
NZ B6,STD7 IF TRANSACTION SEARCH
SB6 X3+
SB5 TLDLE LENGTH OF TLD
STD6 SA3 B6
SB6 B6+B5
ZR X3,STD7 IF END OF TLD
BX3 X7*X3
LX3 42 SHIFT SO NO SIGN BIT
IX3 X3-X0
NZ X3,STD6 IF TASK NAME DID NOT MATCH
SA1 A3
BX1 X1-X1
* SEARCH COMPLETE.
STD7 SA3 STDB RESTORE (B7)
SB7 X3+
SA4 STDC RESTORE (X4)
EQ STDX RETURN
STDA BSS 1 LWA+1 OF BASE TLD
STDB BSS 1 (B7)
STDC BSS 1 (X4)
STST SPACE 4,15
** STST SEARCH TERMINAL STATUS TABLE FOR TERMINAL NAME
*
* ENTRY (X4) = LEFT JUSTIFIED TERMINAL NAME
*
* EXIT (X3) = TST ORDINAL OF TERMINAL
* (X3) = 0 IF TERMINAL NAME NOT FOUND
* (A3) = TST ADDRESS + 1 OF TERMINAL
*
* USES X - 3, 4, 7
* A - 3
* B - 4, 6
STST SUBR ENTRY/EXIT
TB4 TSTLLE+1,VTST START OF *TST*
TB6 2,VTST,LWA END OF TST
MX7 42
BX4 X7*X4
STST1 EQ B4,B6,STST2 TERMINAL NAME NOT IN TST
SA3 B4+
SB4 B4+TSTLLE
BX3 X7*X3 TERMINAL NAME
IX3 X3-X4
NZ X3,STST1 CHECK ANOTHER ENTRY
SX4 TSTLLE
TX3 A3-1,-VTST TST BIAS
PX4 X4
PX3 X3 DIVIDE TO GET TERMINAL NUMBER
NX4 X4
NX3 X3
FX4 X3/X4
UX4 X4,B6
LX3 X4,B6 TERMINAL NUMBER
EQ STSTX RETURN
STST2 BX3 X3-X3
EQ STSTX RETURN
TRCL SPACE 4,15
** TRCL - TASK RECALL.
*
* PLACE A TASK INTO A TIME-DELAY RECALL. AFTER AN
* INSTALLATION-DEFINED TIME PERIOD, ALL TASKS IN RECALL
* ARE ACTIVATED.
*
* ENTRY (X7) = RETURN ADDRESS AFTER RECALL.
* (B2) = FWA OF TASK SYSTEM AREA.
* (B7) = FWA OF TASK SUBCP TABLE ENTRY.
*
* EXIT TO *TSSC* AFTER PROCESSING.
*
* CALLS DCPT.
TRCL2 SA7 B2+RCL SET RETURN ADDRESS
TRCL MX0 1
TX4 B7+CPAL,-VCPA
SX6 B1
LX0 -12
SA1 RCR RECALL REQUEST WORD
LX6 -4
SA2 B7+B1 STATUS WORD 2 OF SUB CP AREA
AX4 SCPAL
SB5 X4
BX6 X6+X2 SET TASK RECALL REQUEST BIT
AX4 X0,B5
IX7 X1+X4
SA6 B7+B1
SA7 A1 SET TASK RECALL REQUEST WORD
SA1 STAT15 NUMBER OF TIMES TASK IN RECALL
SX7 B1
IX7 X1+X7
SA7 A1
RJ DCPT DROP CPU FOR TASK
EQ TSSC TIME SLICE SUBCP
* JUMP TO RECALL PROCESSING ROUTINE
TRCL1 SA1 B2+RCL
MX3 1
SA2 B7+B1 STATUS WORD 2
LX3 -3
SB3 X1
BX7 -X3*X2 CLEAR RECALL BIT
SA7 A2
JP B3 EXIT TO RECALL PROCESSING ROUTINE
TRN SPACE 4,28
** TRN - GENERATE A SYSTEM ORIGIN TRANSACTION.
*
* ENTRY (X4) = TASK NAME TO SCHEDULE.
* (X5) = MESSAGE CODE.
* (X7) = DATA BASE OF TASK LIBRARY.
* 0, IF SYSTEM TASK LIBRARY REQUIRED.
* (B3) = FWA OF BUFFER INPUT, ZERO IF NO INPUT.
* FORM IS - 12/4001B,12/,18/TO,18/WC.
* TO = TERMINAL ORDINAL.
* WC = WORD COUNT.
*
* EXIT (X0) = 0 IF TASK NOT SCHEDULED.
* = FWA OF COMMUNICATION BLOCK.
* (X7) = 0, IF NO COMMUNICATION BLOCK.
* 1, IF TASK NOT FOUND.
* 2, IF TASK NOT SCHEDULED.
*
* USES X - 0, 1, 2, 3, 4, 6, 7.
* A - 1, 4, 6, 7.
* B - 3.
*
* CALLS ETSQ, FFCB, LTT, RDCB, RLC.
*
* MACROS MESSAGE.
TRN SUBR ENTRY/EXIT
SA7 TRNB DATA BASE LIBRARY
ZR B3,TRN1 IF NO BUFFER INPUT
BX7 X4 SAVE TASK NAME
SA4 B3+ MESSAGE BUFFER FWA
SA7 TRNA
RJ RDCB READ COMMUNICATIONS BLOCK
ZR X0,TRNX IF NO C.B. AVAILABLE
SX2 77B READ AND UPDATE SECURITY
SA1 X0+B1
LX2 41-5
BX6 X1+X2
SA6 A1
SA4 TRNA TASK NAME
EQ TRN2 SCHEDULE TASK
TRN1 SX0 1 SYSTEM REQUEST
RJ FFCB GET A COMMUNICATION BLOCK
SX7 B0+ NO COMMUNICATION BLOCK
ZR X0,TRNX IF NO COMMUNICATIONS BLOCK AVAILABLE
* FORMAT COMMUNICATIONS BLOCK.
BX1 X1-X1
RJ ASN GET SEQUENCE NUMBER
SX7 DCPPR SET DEFAULT CPU PRIORITY
LX7 59-11
LX6 18
BX7 X6+X7 ADD SEQUENCE NUMBER
SX6 X0 COMMUNICATION BLOCK ADDRESS
SX2 77B READ SECURITY + UPDATE SECURITY
SA7 X0
LX2 41-5
BX6 X6+X2
SA6 X0+B1 C.B. HEADER WORD 2
SX7 B1 MESSAGE WORD COUNT OF ONE
SA7 X0+CMBHL+1 SECOND WORD OF C.B. USER HEADER
SX6 2RSY DATA BASE
LX6 -12
SA6 A7-B1 FIRST WORD OF C.B. USER HEADER
SX7 X5+ MESSAGE CODE
SA7 A7+B1
SA1 PDATE
BX7 X1
SA7 X0+CMBHL+TIMD-TRSQ
* SCHEDULE TASK.
TRN2 BX2 X4 SEARCH TASK LIBRARY DIRECTORY FOR NAME
MX7 1
SA3 X0+CMBHL+1 SECOND WORD OF C.B. USER AREA
LX7 17-59
BX6 X3+X7
SA6 A3
SA1 X0+CBSOW SYSTEM ORIGIN IN HEADER
LX7 CBSOS-59-17+59
BX7 X1+X7 SET SYSTEM ORIGIN IN HEADER
SA7 A1
SX6 B0 NO TASK LIST
SA3 TRNB DATA BASE LIBRARY FOR TASK
SB4 B0 DETECT *OFF* STATUS
SB5 B0 TASK SEARCH
RJ LTT LOCATE TASK
ZR X6,TRN4 IF TASK NOT IN DIRECTORY
SA6 X0+2 TASK TO SCHEDULE LIST IN C.B.
SB3 TRNX ALTERNATE RETURN ADDRESS
RJ ETSQ SCHEDULE TASK
TRN3 NZ X6,TRNX IF SCHEDULED
SX2 X0 RETURN C.B.
BX0 X0-X0
SX7 2 SET TASK NOT SCHEDULED
RJ RLC RELEASE COMMUNICATION BLOCK
EQ TRNX RETURN
TRN4 SX2 X0+ FWA OF COMMUNICATION BLOCK
SX7 B1 SET TASK NOT FOUND
SX0 B0 TASK NOT SCHEDULED
RJ RLC RELEASE COMMUNICATION BLOCK
EQ TRNX RETURN
TRNA BSSZ 1 TEMP
TRNB BSS 1 DATA BASE
TXT SPACE 4,70
** TXT - TRACE XJP-S OF A TASK.
*
* ON RETURN FROM SELECTED SUBCP ACTIVATIONS, THE CONTENTS OF
* SEVERAL REGISTERS WHICH CONTAIN INFORMATION CONCERNING THE
* TASK ARE SAVED IN A CIRCULAR BUFFER. THIS INFORMATION CAN
* BE USEFUL IN DEBUGGING A PROBLEM IF *TAF* ABORTS AS A
* RESULT OF A TASK SYSTEM REQUEST CALL.
*
* ENTRY (B4) = ERROR FLAG RETURNED FROM SUBCP ACTIVATION.
* (B2) = START OF SYSTEM AREA PRECEDING RA OF THE TASK.
* (B7) = ADDRESS OF SUBCP TABLE.
* (X5) = CONTENTS OF SYSTEM REQUEST IN THE TASK FL.
* (A5) = SYSTEM REQUEST.
* (B3) = RA.
*
* EXIT ENTRY CONDITIONS PRESERVED.
* TASK TRACE PACKET ENTERED INTO CIRCULAR BUFFER.
*
* USES X - 1, 2, 3, 6.
* A - 1, 2, 6.
* B - 5, 6.
*
* NOTES THE CONTENTS OF A TASK TRACE PACKET IS
*
* WORD 1 - 12/TEF, 12/TID, 18/(B2), 18/(B7)
* WHERE TEF = 2000B+ERROR FLAG RETURNED FROM
* SUBCP ACTIVATION.
* TID = TASK TRACE PACKET IDENTIFIER (SET
* TO ZERO).
* (B2) = START OF SYSTEM AREA PRECEDING
* THE RA OF THE TASK.
* (B7) = ADDRESS OF SUBCP TABLE.
*
* WORD 2 - CONTENTS OF SYSTEM REQUEST IN TASK FL.
*
* WORD 3 - FIRST WORD OF C.B. KEPT IN THE SYSTEM AREA
* PRECEDING THE RA OF THE TASK.
*
* WORD 4 - THIRD WORD OF SUBCP TABLE.
* (SEE DEFINITION OF SUBCP TABLE IN THE
* *TABLES* SECTION.)
*
*
* THE FOLLOWING ARE PROVIDED AS GUIDELINES SHOULD
* AN INSTALLATION WISH TO MAKE MODIFICATIONS TO
* *TXT*. *TXT* IS BASED UPON THESE GUIDELINES AND
* NOT FOLLOWING THEM MAY CAUSE *TXT* NOT TO WORK
* PROPERLY.
* 1. SINCE *TXT* IS EXECUTED FREQUENTLY, THE CODE
* SHOULD BE SIMPLE AND FAST, ESSENTIALLY
* STRAIGHTLINE.
* 2. THE SIZE OF THE BUFFER USED TO STORE TRACE
* PACKETS, *PBUFL*, MUST BE DEFINED AS THE TOTAL
* NUMBER OF PACKETS THAT CAN BE STORED IN THE
* BUFFER AT ONCE MULTIPLIED BY *ITTPL*, THE PACKET
* SIZE.
* 3. IF THE PACKET LENGTH IS CHANGED, *ITTPL* MUST
* BE REDEFINED. ONLY LENGTHS OF FOUR OR MORE
* WORDS ARE ACCEPTABLE.
*
* IF TRACE PACKETS ARE PRODUCED FOR PURPOSES OTHER
* THAN TASK XJP TRACE, *TXT* CAN BE USED AS A GUIDE
* FOR THE INSTALLATION CODE. THE FOLLOWING SHOULD
* BE NOTED IN ADDITION TO THE ABOVE GUIDELINES.
* 1. IN ORDER TO IDENTIFY THE TYPE OF EVENT BEING
* TRACED, A UNIQUE *TID* SHOULD BE ASSIGNED FOR
* EACH EVENT AND BE STORED INTO BITS 47 - 36
* OF THE FIRST WORD OF THE PACKET.
* 2. IN ORDER TO INSURE THE CIRCULARITY OF THE BUFFER,
* THE *IN* POINTER OF THE *INTRACE* FET SHOULD BE
* UPDATED IN THE SAME MANNER AS *TXT* UPDATES IT.
* *TXT* CALCULATES THE VALUE OF THE *IN* POINTER FOR
* STORING THE NEXT PACKET BY TAKING THE VALUE OF THE
* *IN* POINTER FOR STORING THE FIRST WORD OF THE
* CURRENT PACKET AND ADDING *ITTPL* TO IT. IF THE
* VALUE FOR THE *IN* POINTER IS GREATER THAN OR
* EQUAL TO *LIMIT*, SET THE *IN* POINTER EQUAL TO
* *FIRST*.
TXT SUBR ENTRY/EXIT
* SET UP AND STORE THE CONTENTS OF ONE TRACE PACKET.
SX3 B2+ GET START OF SYSTEM AREA PRIOR TO TASK RA
SX2 B7 GET ADDRESS OF SUBCP TABLE
LX3 18
SA1 INT+2 GET *IN* POINTER FROM FET
BX2 X2+X3
PX6 X2,B4
SA6 X1+ STORE FIRST WORD OF PACKET
BX6 X5 STORE (SYSTEM REQUEST) OF THE TASK FL
SA6 A6+B1
SA2 B2+CB1C STORE FIRST WORD OF C.B.
BX6 X2
SA6 A6+B1
SA2 B7+2 STORE THIRD WORD OF SUBCP TABLE
BX6 X2
SA6 A6+B1
* DETERMINE THE VALUE OF THE *IN* POINTER FOR STORING THE
* NEXT PACKET INTO THE TRACE BUFFER.
SA2 A1+2 GET VALUE OF *LIMIT* FROM FET
SB5 X1+ITTPL GET NEXT VALUE FOR *IN* POINTER
SB6 X2+
LT B5,B6,TXT1 IF *IN* .LT. *LIMIT*
SA2 INT+1 GET VALUE OF *FIRST* FROM FET
SB5 X2+
TXT1 SX6 B5 STORE *IN* POINTER INTO FET
SA6 A1
EQ TXTX RETURN
VTO SPACE 4
** VTO - VERIFY TASK ORIGIN.
*
* DETERMINE IF A TASK IS FROM THE SYSTEM TASK LIBRARY.
*
* EXIT (X6) .GE.0, IF FROM A SYSTEM TASK LIBRARY.
* (X6) .LT. 0, IF FROM A USER TASK LIBRARY.
*
* USES A - 2.
* X - 2, 6.
VTO SUBR ENTRY/EXIT
SA2 B7+2
MX6 12
BX6 X6*X2 DIRECTORY INDEX FOR TASK
TA2 -4,VTLD LENGTH OF SYSTEM TASK DIRECTORY
SX2 X2-4
LX6 12
IX6 X2-X6
EQ VTOX RETURN
VUP SPACE 4,20
** VUP - VALIDATE USER PARAMETERS.
*
* ENTRY (X1) = FL.
* (X5) = RA REQUEST.
* (B3) = MAXIMUM NUMBER OF PARAMETERS ALLOWED.
* (B5) = SUBCP RA.
* (B6) = REQUIRED NUMBER OF PARAMETERS.
*
* EXIT (X6) = 0, IF NO ERRORS.
* 1, IF TOO MANY PARAMETERS OR
* IF REQUIRED PARAMETERS NOT PRESENT, OR
* IF PARAMETERS OUTSIDE RA AND FL.
* (B2) = NUMBER OF PARAMETERS PRESENT.
*
* USES X- 2, 3, 6, 7.
* A - 2.
* B - 2, 4.
VUP SUBR ENTRY/EXIT
SB2 B0 COUNT OF PARAMETERS PRESENT
SB4 X5 ADDRESS OF PARAMETERS
SB4 -B4
SX6 X1+B4
NG X6,VUP3 IF PARAMETER FWA GREATER THAN FL
PL B4,VUP3 IF PARAMETERS FWA LESS THAN RA
SX6 B0+ NO ERRORS
SX7 X5+B5 PARAMETER ADDRESS RELATIVE TO *TAF*
VUP1 GT B2,B3,VUP3 IF TOO MANY PARAMETETERS
SA2 X7+B2 PARAMETER ADDRESS
SB4 X2
ZR X2,VUP2 IF END OF PARAMETERS
SB4 -B4
SX3 X1+B4
NG X3,VUP3 IF PARAMETER .GE. FL
PL B4,VUP3 IF PARAMETER LESS THAN RA
SB2 B2+B1
EQ VUP1 GET NEXT PARAMETER
VUP2 GE B2,B6,VUPX IF REQUIRED PARAMETERS PRESENT, RETURN
VUP3 SX6 B1 INCORRECT PARAMETER LIST
EQ VUPX RETURN
SEG
TITLE TOTAL INTERFACE ROUTINES.
EOQ SPACE 4,10
** EOQ - ENTER OUTPUT QUEUE.
*
* PLACE AN ENTRY INTO THE TOTAL OUTPUT QUEUE.
*
* ENTRY (X6) = QUEUE ENTRY.
*
* EXIT (X7) .NE. 0 - ENTRY IN QUEUE.
* (X7) = 0 - QUEUE IS FULL.
*
* USES B - 1, 5.
*
* CALLS PDIF.
EOQ SUBR ENTRY/EXIT
SB5 TDO TOTAL OUTPUT QUEUE FET
SB1 1
RJ PDIF MAKE QUEUE ENTRY
EQ EOQX RETURN
FAR SPACE 4,10
** FAR - FILE ATTACH ROUTINE.
*
* ATTACH FILES FOR TOTAL.
* THE EDT IS SEARCHED FOR THE FILE NAME AND THE ATTACH
* INFORMATION IS PLACED INTO THE FET.
* IF THE FILE DOES NOT EXIST OR IS NOT IN THE EDT LIST
* AN ERROR STATUS IS RETURNED. IF THE FILE IS XXTLOG AND DOES
* NOT EXIST IT IS DEFINED. THE XXTLOG FILE IS POSITIONED
* AT EOI.
*
* ENTRY (X2) = ADDRESS OF FILE TO ATTACH.
*
* EXIT (X6) = 0 ATTACH OK.
* (X6) .NE. 0 IS ERROR CODE.
*
* USES X - 0, 1, 2, 3, 4, 5, 6.
* A - 1, 3, 4, 6.
* B - 1, 4, 7.
*
* CALLS PFM=.
FAR5 SB7 X6+ SAVE ERROR CODE
SA1 VUSN TAF USER NAME
SX6 TRUI TAF USER INDEX
MX0 42
BX6 X1+X6
SA6 FARC+2
SA1 VFMN TAF FAMILY NAME
SX2 13B FLAGS FOR *SETPFP*
BX6 X0*X1
BX6 X2+X6
SA6 FARC
SETPFP FARC SET PERMANENT FILE PARAMETERS
SX6 B7+ RESTORE ERROR CODE FOR TOTAL
FAR SUBR ENTRY/EXIT
SA1 X2 READ FILE NAME TO ATTACH
SB1 1
MX0 42
SX6 B1
BX2 X0*X1
MX0 12
BX6 X2+X6
SA6 FARB STORE IN FET
* FIND THE USER INDEX FOR THIS DATA BASE.
TA3 0,VEDT FIRST EDT
BX4 X0*X1 DATA BASE NAME
LX3 -18
SB4 X3 NUMBER OF EDTS
LX3 18
FAR1 BX6 X0*X3 EDT DATA BASE NAME
BX6 X6-X4
ZR X6,FAR2 IF CORRECT EDT
SB4 B4-B1
SA3 X3 NEXT EDT
NZ B4,FAR1 IF MORE EDTS
EQ FARX RETURN UNABLE TO FIND EDT
* CORRECT EDT FOUND.
FAR2 SA5 A3+2 USER INDEX WORD
SA4 A3+1 GET JOURNAL FILE COUNT
SX6 JFETL
AX4 54 JOURNAL FILE COUNT
IX6 X4*X6 LENGTH OF JOURNAL FILE FETS
SB4 X6+HDRL OFFSET OF FIRST FILE NAME IN EDT
* FIND THE PRIVATE PACK INFORMATION FOR THE FILE TO ATTACH.
SA4 B4+A3 FIRST FILE NAME
FAR3 ZR X4,FARX IF FILE NAME NOT FOUND
BX6 X4-X2
SA4 A4+TFEN NEXT FILE NAME
NZ X6,FAR3 IF FILE NOT FOUND
SA1 A4-B1 GET PACKNAME AND UNIT FOR FILE
MX7 48
LX7 6
BX6 X7*X1
SA6 FARB+CFPK PACKNAME AND UNIT INTO FET
LX1 -6
MX4 -12
BX4 -X4*X1 DEVICE TYPE
SA2 FARB+1
MX7 -48
LX4 -12
BX2 -X7*X2
IX6 X2+X4
SA6 A2 DEVICE TYPE TO FET
BX6 X5
SA6 FARC+2
SA1 A5+4 FAMILY NAME
SX2 13B SET FLAGS FOR *SETPFP*
BX6 X1+X2
SA6 FARC
SETPFP FARC SET PERMANENT FILE PARAMETERS
STATUS FARB CHECK IF FILE EXISTS
SA1 FARB
MX6 11
LX1 59-11
BX3 X6*X1
BX6 X6-X6
NZ X3,FAR5 IF FILE EXISTS
ATTACH FARB,,,,M
SA3 X2 CHECK FOR ATTACH ERROR
MX7 24
* CHECK FOR THE FILE BEING XXTLOG.
SA4 FARA
LX3 12
MX0 -6
BX7 X7*X3
LX3 -12-10
BX4 X7-X4
BX6 -X0*X3 ERROR CODE
NZ X4,FAR5 IF NOT XXTLOG FILE
* ATTACH XXTLOG FILE IN WRITE MODE.
ATTACH FARB,,,,W
SA3 FARB
LX3 -10
BX6 -X0*X3
NZ X6,FAR4 IF ERROR ON ATTACH
SKIPEI FARB,R POSITION XXTLOG AT EOI
BX6 X6-X6 INDICATE NO ERRORS
EQ FAR5
FAR4 SX7 X6-2
NZ X7,FAR5 IF NOT *FILE NOT FOUND*
DEFINE FARB
SA4 FARB GET STATUS FROM DEFINE OF XXTLOG
AX4 10
BX6 -X0*X4
EQ FAR5
FARA VFD 60/0LTLOG
FARB FILEB OBUF,OBUFL,FET=13,EPR
* CALL BLOCK FOR *SETPFP*.
FARC CON 0 42/ FAMILY NAME, 14/ , 4/ FLAGS
CON 0 42/ PACK NAME, 18/ PACK TYPE
CON 0 42/ USER NAME, 18/ USER INDEX
GRA SPACE 4,10
** GRA - GET REFERENCE ADDRESS.
*
* RETURN THE RA, FL AND DATA BASE ID OF THE SUB CONTROL POINT.
*
* ENTRY (X1) = SUB CONTROL POINT NUMBER.
* (X6) = 1 IF CALLED BY *TOTAL*.
* 0 OTHERWISE.
*
* EXIT (X2) = 42/USER NAME,18/0.
* (X4) = 42/TASK NAME,18/0.
* (X5) = DATA BASE ID - RIGHT JUSTIFIED.
* (X6) = RA OF SUB CONTROL POINT.
* (X7) = FL OF SUB CONTROL POINT.
*
* USES X - 2, 4, 5, 6, 7.
* A - 4, 5.
GRA SUBR ENTRY/EXIT
SX2 IFL= FIELD LENGTH OF TRANEX1
SX4 B0+
BX5 X5-X5
LX1 SCPAL
ZR X1,GRA1 IF SUB CP 0 (TRANEX)
TA4 X1-CPAL,VCPA USER FL/RA
MX7 -6
BX2 X4
SA5 X4-NUAPL+DBNC DATA BASE NAME
LX2 -18
SX5 X5 DATA BASE ID
ZR X6,GRA1 IF NOT CALLED BY *TOTAL*
BX6 -X7*X5 CHECK SECOND CHARACTER FOR *S*
SX6 X6-1RS
BX7 X7*X5
NZ X6,GRA1 IF SECOND CHARACTER NOT AN *S*
SX5 X7+1RT CONVERT SECOND CHARACTER TO A *T*
GRA1 SX6 X4 SUB CP RA
SX7 X2 SUB CP FL
BX4 X4-X4 TASK NAME = 0, IF SUBCP = 0
MX2 12
ZR X1,GRAX IF SUBCP = 0
SA4 A4 STATUS WORD 1 OF SUBCP TABLE
LX4 59-SCBCS
PL X4,GRA2 IF SUBCP NOT FOR BATCH CONCURRENCY
SA4 X6-NUAPL+BCTN BATCH CONCURRENT TASK NAME
SA2 X6-NUAPL+BCTA GET FWA OF *BCT* ENTRY
SA2 X2 GET *TST* ADDRESS
LX2 BCTAN-1-BCTAS
SA2 X2+TSTNW *TST* WORD TWO
MX1 TSTNN
BX2 X1*X2
EQ GRAX RETURN
GRA2 SA4 A4+2 WORD 3 OF SUBCP
BX4 X2*X4 TASK LIBRARY DIRECTORY INDEX
LX4 12
TA4 X4-1,VTLD GET TASK NAME
MX2 42
BX4 X2*X4
SA2 X6-NUAPL+CB2C GET *TST* ADDRESS
LX2 CBTAN-1-CBTAS
SA2 X2+TSTNW
MX1 TSTNN
BX2 X1*X2
EQ GRAX RETURN
RIQ SPACE 4,10
** RIQ - READ INPUT QUEUE.
*
* REMOVE AN ENTRY FROM THE TOTAL INPUT QUEUE.
*
* EXIT. (X6) = 0 - QUEUE IS EMPTY.
* (X6) = QUEUE ENTRY.
*
* USES X - 1, 2, 3, 5, 6, 7.
* A - 1, 2, 3, 5, 6, 7.
* B - 1.
RIQ SUBR ENTRY/EXIT
SB1 1
SA1 TDI+2 IN
SA2 A1+B1 OUT
IX6 X1-X2
ZR X6,RIQX IF QUEUE IS EMPTY
SA5 X2 READ QUEUE ENTRY
SA3 A2+B1 LIMIT
SX7 X2+B1 INCREASE OUT
BX3 X7-X3
NZ X3,RIQ1 IF NOT AT LIMIT
SA3 A1-B1 FIRST
BX7 X3
RIQ1 SA7 A2 ADVANCE OUT
BX6 X5 QUEUE ENTRY
EQ RIQX RETURN
TCM SPACE 4,20
** TCM - TAF *CMM* INTERFACE.
*
* ENTRY (X7) = FIELD LENGTH CHANGE, NEGATIVE IF DECREASE.
* (VFSCP) = FWA OF SUB-CONTROL POINTS.
* (VCPA) = FWA OF SUB-CONTROL POINT TABLE.
*
* EXIT (X1) = FL GRANTED.
* (X2) = ZERO IF FIELD LENGTH GRANTED.
* .NE. ZERO, IF FIELD LENGTH NOT GRANTED.
*
* USES A - 0, 1, 2, 3, 4, 6, 7.
* B - 2, 3, 4, 6.
* X - 0, 1, 2, 3, 4, 6, 7.
*
* CALLS MTD, MTK, RMF, RKP.
TCM5 SA3 VFSCP UPDATE FWA OF TASK SUBCP
SA1 TCMA
AX3 24
IX6 X3+X1
SA4 AVAILCM UPDATE AVAILABLE CM COUNT
IX7 X4-X1
LX6 24
SA6 A3
SA7 A4
TCM SUBR ENTRY/EXIT
TX1 B0,VCPA FWA OF SUBCP TABLE
SA0 B7+ ACTIVE SUBCP
SA7 TCMA SAVE FL REQUEST
NG X7,TCM4 IF REDUCE FL
SA7 CMPF SET PAUSE FLAG
SA2 AVAILCM AVAILABLE FL
SX0 X7
IX7 X2-X7
PL X7,TCM1 IF SPACE AVAILABLE
RJ RMF REQUEST MORE FL
SX2 TCM SET X2 TO NONZERO
ZR X5,TCMX IF NO SPACE AVAILABLE
TCM1 TX2 B0,VCPA FWA OF SUBCP TABLE
RJ SFS SEARCH FOR FREE SPACE
SB3 X7+B1
NG B3,TCM3 IF NO SPACE AVAILABLE
SB4 A3 SUBCP TO MOVE
EQ B4,B5,TCM2 IF MOVE FIRST SUBCP - ITASK
SA2 B5+2 GET NEXT SUBCP
SB5 X2
RJ MTD MOVE TASK TOWARD HIGH MEMORY LOCATION
* MOVE FIRST SUBCP - ITASK.
TCM2 TA2 B0,VCPA FWA OF FIRST SUBCP
SA1 TCMA REQUEST FL
SB4 A2 SUBCP TO MOVE
BX4 -X1 AMOUNT OF FL TO REDUCE
SB3 X2-NUAPL TASK FWA
SB6 B3+X1 DESTINATION
RJ MTK MOVE TASK TOWARD HIGH MEMORY LOCATION
RJ RKP RESET K-DISPLAY POINTER
BX7 X7-X7
BX2 X2-X2
SA7 CMPF CLEAR PAUSE FLAG
EQ TCM5 UPDATE FWA OF TASK SUBCP
* UNABLE TO FIND A SPACE, SET PAUSE FLAG.
TCM3 SX2 TCM3 SET X2 TO NONZERO
SA7 CMPF BLOCK ALL TASKS MAKING *SSC* REQUEST
EQ TCMX FL NOT GRANTED
* PROCESS REDUCE FL.
TCM4 SB4 X1 SUBCP TO MOVE
SA2 X1 GET FWA OF TASK
SB3 X2-NUAPL FWA OF TASK
SB6 B3+X7 DESTINATION
BX4 -X7 ADDITIONAL SPACE AFTER MOVE
RJ MTK MOVE FIRST SUBCP UP
BX2 X2-X2
EQ TCM5 UPDATE FWA OF TASK SUBCP
TCMA BSSZ 1 REQUEST FIELD LENGTH
RCP TITLE MEMORY MANAGEMENT.
RCP SPACE 4,20
** RCP - REQUEST FOR SUBCONTROL POINT.
* RCP WILL TRY TO FIND A CONTIGUOUS BLOCK OF SPACE TO
* SATISFY THE REQUEST. A STORAGE MOVE (COMPACTION) OF
* SPACE WILL BE MADE IF THE REQUEST CAN BE SATISFIED BY
* COMBINING SEVERAL HOLES BETWEEN TWO OR MORE SUBCPS.
*
* ENTRY (X0) = FL REQUIRED.
*
* EXIT (X5) = START OF ASSIGNED AREA.
* = 0 IF FL NOT AVAILABLE.
* (B4) = ASSIGNED SUBCONTROL POINT TABLE ADDRESS.
*
* USES X - 1, 2, 3, 4, 5, 6, 7.
* A - ALL.
* B - 2, 3, 4, 5, 6, 7.
*
* CALLS ESCP, RKP, RMF, SFS.
RCP14 SA1 STAT11 NUMBER OF TIMES NO SUBCONTROL POINTS
SX6 B1
IX6 X1+X6
SB7 A0 RESET (B2) AND (B7)
SB2 A5
BX5 X5-X5
SA6 A1
RCP SUBR
SA1 AVAILCM SPACE CURRENTLY AVAILABLE
BX5 X5-X5
IX7 X1-X0
PL X7,RCP1 IF NOT ENOUGH SPACE AVAILABLE
RJ RMF REQUEST MORE FIELD LENGTH
ZR X5,RCPX IF NO SPACE AVAILABLE
RCP1 BX6 X6-X6
TA2 0,VNACP NEXT FREE CONTROL POINT
SB6 B0
SA5 B2 SAVE B2
SA0 B7 SAVE B7
NZ X2,RCP1.1 IF SUBCP AVAILABLE
SA3 SCHDA
ZR X3,RCP14 IF NO RELEASABLE TASKS
SX7 B0+
SA7 ETIME TIME TO EVICT RELEASABLE TASK
RJ CORU RELEASE A RELEASABLE TASK
RCP1.1 TX2 0,VCPA FIRST SUBCONTROL POINT AREA
SB7 X2 FIRST SUBCP
SX3 X2 FWA OF SUBCP
SX5 377770B
BX7 X7-X7
SB4 B0
RCP2 RJ SFS SEARCH FOR FREE SPACE
PL X7,RCP11 IF ENOUGH FL AFTER SUBCP
SX7 X7+B1
IX1 X6-X5
ZR X2,RCP5 IF LAST SUBCP
ZR X7,RCP3 IF SPACE AVAILABLE
SB7 X2 TRY NEW BLOCK
EQ RCP2 SEARCH FOR FREE SPACE
RCP3 IX1 X6-X5
PL X1,RCP4 IF PREVIOUS AMOUNT WAS A BETTER CHOICE
BX5 X6 SWITCH POINTER
SB4 B5
SX7 B5 SAVE POINTER
SA7 RCPA
RCP4 SA2 B7+2 GET NEXT SUBCP
SX2 X2
SB7 X2
NZ B7,RCP2 IF NOT LAST SUBCP
RCP5 SX5 B0+
NZ B4,RCP6 IF SPACE AVAILABLE
SB7 A0 RESET (B2) AND (B7)
SB2 A5
EQ RCPX RETURN
* PERFORM STORAGE MOVE TO COMPACT ALLOCATABLE SPACE.
RCP6 SB3 RCP7 RETURN ADDRESS IF DROPING A SUBCP
SB7 B0+
RCP7 SA3 B4 FWA OF SUBCP TABLE
LX3 SCFCN-SCFCS-1 GET FREE SPACE
SX1 X3 FREE SPACE AFTER SUBCP
IX5 X1-X0
PL X5,RCP11 IF SPACE AVAILABLE AFTER SUBCP
SA4 B4+SCLSW GET LAST SUBCP
LX3 59-SCRLS-SCFCN+SCFCS+1
SB6 B4 SUBCP TO RELEASE
PL X3,RCP10 IF SUBCP NOT RELEASABLE
LX4 SCLSN-SCLSS-1 GET LAST SUBCP
SB4 X4
EQ ESCP1 RELEASE SUBCP
RCP10 SB4 X4 NEXT SUBCP
ZR X1,RCP7 IF NO FREE SPACE AFTER SUBCONTROL POINT
SA2 X4
LX2 59-SCRLS
SB4 A3
SB6 X4+ SUBCP TO RELEASE
NG X2,ESCP1 IF SUBCP RELEASABLE
SB4 X4 SUBCP TO MOVE
SA2 A3 FWA OF LAST SUBCP TABLE
SX4 X1 FREE SPACE OF SUBCP
SB6 B0
RJ MTK MOVE TASK TOWARD LOW MEMORY LOACTION
EQ RCP6 CONTINUE COMPACTING SUBCP
* ASSIGN SPACE TO A NEW SUBCONTROL POINT AND EXIT.
* (A3)/(X3) = FWA OF SUBCP TABLE.
RCP11 MX6 42
BX7 X6*X3 MASK OUT FREE SPACE COUNT
LX7 36
SA7 A3
SB6 B1+B1 CONSTANT 2
TA4 0,VNACP NEXT FREE SUBCONTROL POINT
SA2 A3+B6
BX1 X6*X2 MASK OUT POINTER TO NEXT SUBCONTROL POINT
IX7 X1+X4 NEW POINTER
SA7 A2
SA1 X4 NEXT FREE SUBCP
BX7 X1
SA7 A4 RESET NEXT FREE SUBCP POINTER
LX3 18
SX1 X3 FL OF CURRENT SUBCP
LX3 18
SX7 X3 RA OF CURRENT SUBCP
IX5 X7+X1 START OF NEW SUBCP SPACE
LX3 24
SX3 X3 FREE SPACE PRESENT BEFORE ASSIGNMENT
IX6 X3-X0 FREE SPACE PRESENT AFTER ASSIGNMENT
SX1 X0-NUAPL
LX6 18
SB4 X4
BX6 X6+X1 FL AT NEW SUBCP
LX6 18
SX3 X5+NUAPL
BX6 X6+X3 RA OF NEW SUBCP
SA6 X4 STATUS WORD ONE OF SUBCP AREA
SX7 A3 LAST SUBCP
SX2 X2
LX7 18
BX7 X7+X2
SA7 A6+2 STATUS WORD TWO
SA1 AVAILCM UPDATE AVAILABLE CM
IX6 X1-X0
SA6 A1
ZR X2,RCP12 IF ADDING TO END OF CHAIN
SA1 X2+B6
MX6 42
SX3 B4 POINT NEXT SUBCP BACK TO NEW ONE
LX1 -18
BX6 X6*X1 MASK OFF OLD BACK POINTER
IX6 X6+X3
LX6 18
SA6 A1
RCP12 SB2 A5 RESTORE B2
SB7 A0 RESTORE B7
RJ RKP RESTORE K-DISPLAY POINTER
SX1 B2 UPDATE (SREG)
SX7 B7
LX1 18
BX7 X1+X7
SA7 SREG
EQ RCPX RETURN
RCPA BSSZ 1 SUBCP TO START COMPACTION WITH
MTD SPACE 4,10
** MTD - MOVE TASKS DOWN (TOWARD HIGH MEMORY LOCATION).
*
* ENTRY (B5) = FWA OF SUBCP TABLE - LAST TO MOVE.
* (A3) = FWA OF SUBCP TABLE - FIRST TO MOVE.
*
* USES A - 1, 2, 3, 7.
* B - 3, 4, 5, 6.
* X - ALL.
*
* CALLS ESCP, MTK.
MTD SUBR ENTRY/EXIT
ZR B5,MTDX IF NOTHING TO MOVE
SA2 B5+SCLSW GET TERMINATOR
SB4 A3 SUBCP TO MOVE
LX2 SCLSN-SCLSS-1
SX0 X2+ FWA OF SUBCP TABLE - TERMINATOR
MTD1 SB3 X0
EQ B3,B4,MTDX IF DONE WITH TASK MOVE
SA2 B4 GET FWA OF SUBCP
LX2 59-SCRLS
PL X2,MTD3 IF SPACE NOT RELEASABLE
SB6 B4 SUBCP TO RELEASE
SA3 B4+2 GET PRIVIOUS SUBCP
LX3 SCLSN-SCLSS-1
SB4 X3 PRIVIOUS SUBCP
SB3 MTD1 RETURN ADDRESS
EQ ESCP1 RELEASE SUBCP
MTD3 SA3 B4 TASK SUBCP
SB6 X3-NUAPL FWA OF SUBCP
LX3 SCFCN-SCFCS-1
SB6 X3+B6 DESTINATION
SX6 X3 FREE SPACE AFTER CURRENT SUBCP
SA2 B4+SCLSW GET PREVIOUS SUBCP
BX4 -X6
LX2 SCLSN-SCLSS-1
SB5 X2 PRIVIOUS SUBCP
SA1 X2 PREVIOUS SUBCP
LX1 SCFCN-SCFCS-1
SX2 X1 FREE SPACE AFTER PREVIOUS SUBCP
MX7 60-SCFCN
IX6 X2+X6 UPDATE FREE SPACE COUNT
BX5 X7*X1
BX7 X5+X6
LX7 SCFCS-SCFCN+1
SA7 A1
RJ MTK MOVE TASK TOWARD HIGH MEMORY LOCATION
SB4 B5 NEXT TASK TO MOVE
EQ MTD1 MOVE NEXT SUBCP
MTK SPACE 4,20
** MTK - MOVE TASK.
*
* ENTRY (A0) = FWA OF ACTIVE TASK SUBCP TABLE.
* (B4) = FWA OF SUBCP TO BE MOVE.
* (A2)/(X2) = FWA OF LAST SUBCP TABLE IF (B6) .EQ. 0.
* (X4) = FREE SPACE OF CURRENT SUBCP.
* (B6) = 0, IF TASK MOVED UPWARD.
* ADDRESS TO MOVE TO, OTHERWISE.
*
* EXIT (A5) = ACTIVE TASK NEW RA.
*
* USES A - 1, 2, 3, 4, 5, 6, 7.
* B - 3, 6.
* X - 1, 2, 3, 4, 5, 6, 7.
*
* CALLS MVE=.
*
* NOTE - MOVE TASK UP IMPLIES MOVE TOWARD TAF RA.
MTK SUBR ENTRY/EXIT
NZ B6,MTK1 IF TASK MOVED DOWNWARD
MX7 18
SB6 X2 RA OF LAST SUBCONTROL POINT
LX7 -6
BX7 -X7*X2 ZERO OUT FREE SPACE COUNT
LX2 SCFLN-SCFLS-1
SB6 X2+B6 NEW FWA OF TASK
NO
SA7 A2+ RESET STATUS WORD ONE
MTK1 SA3 B4 STATUS WORD 1 OF SUBCP BEING MOVED
LX3 SCFCN-SCFCS-1
SX6 X3
IX6 X6+X4
NG X6,MTK2 IF NEGATIVE FREE SPACE COUNT
MX7 60-SCFCN
BX5 X7*X3
BX6 X5+X6
LX3 SCFLN-SCFLS-1+SCFCS-SCFCN+1
SX1 X3+NUAPL TOTAL MEMORY BEING MOVED
MX4 -18
SX3 B6 DESTINATION
SX2 B6+NUAPL NEW RA
LX6 SCFCS-SCFCN+1
BX7 X4*X6 MASK OFF OLD RA
SX5 X6-NUAPL START OF MEMORY TO BE MOVED
IX6 X7+X2
SA6 A3 RESET STATUS WORD
SA4 STAT4
SX2 X5 SOURCE
SX6 B1
IX6 X4+X6 BUMP STORAGE MOVE COUNT
SA6 A4
RJ MVE= MOVE TASK
SB3 A0
SA1 B4
SA2 X1-NUAPL+1 EXCHANGE PACKAGE WORD WITH RA
MX7 24
SX3 X1 NEW RA
BX7 -X7*X2
LX3 36
BX7 X7+X3 SET NEW RA INTO EXCHANGE PACKAGE
SA7 A2
NE B3,B4,MTKX IF ACTIVE SUBCP NOT MOVED
SA5 A2-B1 NEW RA
EQ MTKX RETURN
MTK2 RJ EXIT INCORRECT SUBCP TABLE
RMF SPACE 4,15
** RMF - REQUEST MORE FIELD LENGTH.
*
* ENTRY (X7) = COMPLIMENT OF REQUEST FIELD LENGTH.
*
* EXIT (X5) = 0 IF FIELD LENGTH NOT AVAILABLE.
* (X5) = -1 IF FIELD LENGTH AVAILABLE.
*
* USES A - 1, 2, 3, 4, 6, 7.
* B - 3, 4.
* X - 1, 2, 3, 4, 5, 6, 7.
*
* MACROS MEMORY.
RMF5 SX5 B0+ MEMORY NOT AVAILABLE
RMF SUBR ENTRY/EXIT
SA3 MTIME LAST FL REDUCTION TIME
SA2 LTIME CURRENT TIME
ZR X3,RMF1 IF NO REDUCTION SINCE LAST INCREASE
IX3 X2-X3
MX6 -36
SX4 RFLTL
BX6 -X6*X3 TIME ELAPSED SINCE LAST REDUCTION
IX4 X6-X4
NG X4,RMF5 IF MINIMUM TIME NOT ELAPSED
BX6 X6-X6
SA6 A3
RMF1 SA2 MFL MAXIMUM FIELD LENGTH ALLOWED
SA3 CURFL CURRENT TAF FIELD LENGTH
IX6 X2-X3
ZR X6,RMF5 IF ALREADY AT MAXIMUM FIELD LENGTH
IX4 X6+X7
NG X4,RMF5 IF REQUESTING MORE FL WILL NOT HELP
SX1 X7+INCFL
BX4 -X7
NG X1,RMF2 IF REQUEST GREATER THAN MINIMUM REQUEST
IX4 X4+X1 REQUEST MINIMUM AMOUNT
IX7 X6-X4
PL X7,RMF2 IF REQUESTED WILL NOT EXCEED MAXIMUM
SX4 X6 REQUEST UP TO THE MAXIMUM ALLOWED
RMF2 NG X6,RMF5 IF CURRENTLY HAVE MORE THAN MAXIMUM
IX7 X3+X4 FIELD LENGTH DESIRED
SA7 RMFA SAVE REQUEST FL
MEMORY CM,MRSW,R,X7 REQUEST FL
SA1 AVAILCM AVAILABLE CM
SA2 MRSW GET STATUS WORD
MX3 30
BX6 X3*X2 NEW FL
SA3 RMFA REQUEST FL
LX6 30
IX2 X6-X3
SA4 CURFL COMPUTE INCREMENT OF FL
IX4 X6-X4
NG X2,RMF5 IF FL NOT GRANTED
IX7 X1+X4 UPDATE AVAILABLE SPACE COUNT
SA7 A1 NEW AVAILABLE SPACE COUNT
TB3 0,VCPA FIRST SUBCONTROL POINT AREA
SA6 CURFL NEW TAF FIELD LENGTH
SX6 B1+
SA1 STAT6
IX6 X6+X1 INCREMENT MEMORY INCREASE COUNT
SA6 A1+
RMF3 ZR B3,RMF4 IF AT END OF SUBCONTROL POINTS
SA1 B3+2
SB4 B3 NEXT ACTIVE SUBCONTROL POINT
SB3 X1
EQ RMF3 LOOP TO END OF CHAIN
RMF4 SA1 B4 STATUS WORD ONE OF LAST ACTIVE SUBCP
LX1 -36
IX7 X1+X4 ADD FL INCREASED AMOUNT
LX7 36
SA7 A1
SX5 -B1 FIELD LENGTH AVAILABLE
EQ RMFX RETURN
RMFA BSSZ 1 REQUEST FL
SFS SPACE 4,20
** SFS - SEARCH FOR FREE SPACE.
*
* ENTRY (X2) = FWA OF SUBCP TABLE TO START WITH.
* (X0) = FIELD LENGTH REQUIRED.
*
* EXIT (X7) .GE. 0 IF FL AVAILABLE AFTER SUBCP.
* (X7) = -1 IF STORAGE MOVE IS REQUIRE TO GET FL.
* (X7) = -2 IF NO FIELD LENGTH AVAILABLE.
* (B3) = TOTAL FREE SPACE AVAILABLE.
* (B5) = FWA OF SUBCP TABLE.
* (X6) = AMOUNT OF SPACE TO MOVE.
* (X2) = NEXT SUBCP TO SEARCH.
* (A3)/(X3) = FWA OF LAST SUBCP TABLE IF (X7) .GE. -1
*
* USES X - 1, 2, 3, 4, 6, 7.
* A - 3.
* B - 3, 5, 6.
SFS3 SX7 -2 SPACE NOT AVAILABLE
SX6 377777B SET MAXIMUM SPACE TO MOVE
SFS SUBR ENTRY/EXIT
SB5 X2 FWA OF SUBCP TABLE
SB6 X0 FL REQUIRED
SB3 B0
BX6 X6-X6
SFS1 ZR X2,SFS3 IF DONE EVALUATING SUBCP
SA3 X2
BX1 X3
LX3 SCFCN-SCFCS-1 RIGHT JUSTIFY FREE SPACE AFTER SUBCP
SX2 X3 AVAILABLE FL AFTER SUBCP
LX1 SCFLN-SCFLS-1
SX4 X1 SUBCP FL
SX4 X4+NUAPL TOTAL FL OF SUBCP
LX1 59-SCRLS+SCFLS-SCFLN+1
IX7 X2-X0
PL X7,SFSX IF ENOUGH SPACE AFTER SUBCP
SA3 A3+2
SX7 X2 FREE SPACE AFTER SUBCP
PL X1,SFS2 IF SUBCP IS NOT RELEASEABLE
IX7 X2+X4 AVAILABLE SPACE
BX4 X4-X4
SFS2 SA1 X3
SX2 X3 NEXT SUBCP TO SEARCH
NG X1,SFS3 IF SUBCP LOCKED AGAINST STORAGE MOVE
IX6 X4+X6 TOTAL SPACE TO STORAGE MOVE
SB3 B3+X7 SPACE AVAILABLE IF STORAGE MOVE
LT B3,B6,SFS1 IF NOT ENOUGH SPACE AVAILABLE
SA3 A3-2 CURRENT SUBCP
SX4 X6-MAXSM
PL X4,SFS3 IF TOO MUCH SPACE TO MOVE
SX2 A3
SX7 -B1 SPACE AVAILABLE
EQ SFSX RETURN
TITLE QUEUE MANAGEMENT.
ATW SPACE 4,15
** ATW - ADVANCE *TAF* WORK.
*
* ENTRY (TAFQ) = POINTERS TO QUEUED WORK.
*
* EXIT TO COMPLETE PROCESSOR, IF EVENT COMPLETE.
* (B3) = FWA OF QUEUED ENTRY RELATIVE TO TASK
* SUBCP SYSTEM AREA.
* (B5) = FWA OF QUEUED ENTRY RELATIVE TO *TAF*.
* (X2) = FIRST WORD OF QUEUE ENTRY.
*
* USES X - ALL.
* A - 1, 2, 3, 4, 5, 6, 7.
* B - 3, 4, 5, 6.
*
* CALLS CRA.
ATW SUBR ENTRY/EXIT
SB4 B0 FWA OF PRIOR QUEUE ENTRY
MX0 -QWNSN MASK FOR SUBCP
SA1 TAFQ POINTERS TO WORK
SX6 X1 FWA OF FIRST QUEUED ENTRY
ZR X6,ATWX IF NO WORK, RETURN
LX1 5-23 RIGHT JUSTIFY FIRST SUBCP
BX5 X5-X5 CLEAR PREVIOUS ENTRY
BX3 -X0*X1 SUBCP OF QUEUE ENTRY
LX1 59-59-5+23 FWA OF FIRST QUEUE ENTRY
* EXAMINE QUEUE FOR COMPLETED WORK.
ATW1 RJ CRA COMPUTE REAL ADDRESS
SA2 B5 QUEUED WORK ENTRY
SB5 X3+ SAVE SUBCP
SA3 X2 EVENT COMPLETE WORD
LX2 QWSHN-1-QWSHS RIGHT JUSTIFY EVENT COMPLETE SHIFT
BX7 -X0*X2
ERRNZ QWNSN-QWSHN IF SUBCP .NE. SHIFT FIELD
SB3 X7
LX3 B3 SHIFT EVENT COMPLETE TO BIT 59
SB3 X1
LX2 QWNAN-1-QWNAS-QWSHN+1+QWSHS
SX6 X2 NEXT ENTRY IN QUEUE
LX2 QWTYN-1-QWTYS-QWNAN+1+QWNAS QUEUE TYPE
ERRNZ QWTYN-QWNSN IF TYPE LENGTH .NE. SUBCP LENGTH
BX7 -X0*X2
LX2 59-59-QWTYN+1+QWTYS
NG X3,ATW3 IF EVENT COMPLETE
NZ X7,ATW8 IF TIMED EVENT
ATW2 SB4 A2 PREVIOUS ENTRY FWA
SX4 X1 PREVIOUS FWA WITH RESPECT TO SUBCP
SB6 B5+ PREVIOUS SUBCP
BX5 X2 PREVIOUS ENTRY
LX2 QWNSN-1-QWNSS RIGHT JUSTIFY NEXT SUBCP
BX3 -X0*X2 SUBCP
SX1 X6 FWA OF QUEUE ENTRY RELATIVE TO SUBCP
NZ X6,ATW1 IF MORE WORK, EXAMINE NEXT QUEUE ENTRY
EQ ATWX RETURN
* EVENT OCCURRED OR TIMED OUT.
ATW3 ZR X6,ATW6 IF END OF QUEUE
ZR B4,ATW9 IF NO PREVIOUS ENTRY IN QUEUE
BX3 X2
* SET PREVIOUS QUEUE ENTRY TO NEXT.
ATW4 MX0 60-QWNTN
LX5 QWNTN-1-QWNTS RIGHT JUSTIFY NEXT
BX5 X0*X5 CLEAR PREVIOUS ENTRY NEXT POINTER
LX3 QWNTN-1-QWNTS
BX7 -X0*X3 SAVE SUBCP AND FWA OF NEXT ENTRY
BX7 X5+X7 UPDATE NEXT IN PREVIOUS ENTRY
LX7 59-59-QWNTN+1+QWNTS
SA7 B4
* RETURN TO COMPLETE PROCESSOR.
ATW5 SA5 A2+B1 COMPLETE PROCESSOR
ERRNZ QWPRW-1 IF COMPLETE PROCESSOR NOT IN WORD 1
ERRNZ QWPRS-17 IF COMPLETE PROCESSOR NOT IN BITS 17-0
SB4 X5 RETURN PROCESSOR ADDRESS
SB5 A2+ FWA OF ENTRY RELATIVE TO TAF
JP B4 RETURN TO COMPLETE PROCESSOR
* WHEN LAST ENTRY IS REMOVED FROM QUEUE, UPDATE LAST IN
* *TAF* WORK POINTER.
ATW6 ZR B4,ATW7 IF NO PREVIOUS QUEUE ENTRY
SA1 TAFQ POINTER TO FIRST AND LAST WORK
MX0 -24 MASK FOR FIRST ENTRY IN QUEUE
SX7 B6 GET SUBCP OF PREVIOUS ENTRY
LX7 47-5
SX3 X4 FWA WITH RESPECT TO SUBCP
BX1 -X0*X1
LX3 41-17
BX7 X7+X3 NEW LAST ENTRY
BX7 X1+X7 ADD NEW LAST ENTRY
SA7 A1
SX3 B0 CLEAR NEXT IN PREVIOUS ENTRY
EQ ATW4 UPDATE QUEUE POINTERS
* WHEN NO PREVIOUS ENTRY EXISTS,
* INITIALIZE *TAF* QUEUE LAST AND FIRST TO ZERO.
ATW7 SA6 TAFQ
EQ ATW5 RETURN TO WAITING PROCESSOR
* CHECK FOR EVENT TIME OUT. IF EVENT TIMED OUT REMOVE
* ENTRY FROM QUEUE, ELSE CHECK NEXT QUEUE ENTRY.
ATW8 SA3 LTIME GET REAL TIME
MX7 -QWTMN MASK FOR TIME
BX0 -X7*X3
SA3 A2+QWTMW
LX3 QWTMN-1-QWTMS RIGHT JUSTIFY TIME
BX3 -X7*X3
IX3 X0-X3
MX0 -QWNSN RESTORE SUBCP MASK
PL X3,ATW3 IF EVENT TIMED OUT
EQ ATW2 CHECK NEXT QUEUED ENTRY
* UPDATE FIRST WHEN FIRST ENTRY REMOVED FROM QUEUE.
ATW9 SA1 TAFQ POINTERS TO FIRST AND LAST WORK
MX5 36
BX1 X5*X1 CLEAR OLD FIRST POINTER
LX2 23-59 RIGHT JUSTIFY NEXT IN CURRENT ENTRY
BX7 -X5*X2 SAVE POINTERS TO NEXT ENTRY
BX7 X7+X1 UPDATE FIRST
SA7 A1
LX2 59-59-23+59
EQ ATW5 RETURN TO WAITING PROCESSOR
QTW SPACE 4,15
** QTW - QUEUE *TAF* WORK.
*
* ENTRY (X1) = FWA OF EVENT.
* (X2) = SHIFT TO PLACE EVENT BIT IN BIT 59.
* (X3) = SUBCP.
* (X4) = EVENT TYPE.
* (X5) = EVENT TIMEOUT IN MILLISECONDS.
* (X6) = RETURN ADDRESS TO PROCESS COMPLETE EVENT.
* (B3) = FWA TO SAVE WORK PARAMETERS.
* (B4) = 0, IF QUEUE AT END OF QUEUE.
* = 1, IF QUEUE AT BEGINNING OF QUEUE.
* (TAFQ) = POINTERS TO QUEUED WORK.
*
* EXIT (TAFQ) QUEUE POINTERS UPDATED.
*
* USES X - ALL.
* A - 3, 5, 6, 7.
*
* CALLS CRA.
QTW SUBR ENTRY/EXIT
* FORMAT QUEUE ENTRY.
LX5 QWTMS-QWTMN+1 POSITION TIME
BX7 X5+X6 TIME + RETURN ADDRESS
ERRNZ QWTMW-QWPRW IF TIME AND RETURN NOT IN SAME WORD
LX2 QWSHS-QWSHN+1 POSITION SHIFT
BX6 X2+X1 SHIFT + EVENT
ERRNZ QWSHW-QWEVW IF SHIFT AND EVENT NOT IN SAME WORD
SX1 B3 FWA TO SAVE WORK POINTERS
RJ CRA COMPUTE REAL ADDRESS FOR WORK QUEUING
LX3 QWSPS-QWSPN+1 POSITION SUBCP
BX6 X6+X3
ERRNZ QWEVW-QWSPW IF EVENT AND SUBCP NOT IN SAME WORD
SA7 B5+QWPRW
LX4 QWTYS-QWTYN+1 POSITION TYPE
BX6 X4+X6 ADD TYPE
ERRNZ QWSPW-QWTYW IF SUBCP AND TYPE NOT IN SAME WORD
SA5 TAFQ POINTERS TO FIRST AND LAST QUEUED WORK
LX5 17-41 RIGHT JUSTIFY LAST POINTERS
SX1 X5 FWA OF LAST
SX2 B3+
LX3 -QWSPS+QWSPN-1 RIGHT JUSTIFY SUBCP
MX0 -QWNSN
ZR X1,QTW1 IF NO PRIOR ENTRIES IN QUEUE
NZ B4,QTW2 IF QUEUE AT BEGINNING OF QUEUE
* PUT NEW ENTRY AT END OF QUEUE.
SA6 B5 NEXT QUEUE ENTRY EQUALS ZERO
LX5 5-47-17+41 POSITION SUBCP
BX4 X3
BX3 -X0*X5 SUBCP
RJ CRA COMPUTE REAL ADDRESS USING SUBCP
SA3 B5 UPDATE PRIOR QUEUE LINK
LX4 QWNSS-QWNSN+1 POSITION NEXT SUBCP
SX2 B3 FWA OF NEXT QUEUE ENTRY
LX2 QWNAS-QWNAN+1 NEXT QUEUE FWA
BX6 X3+X4 ADD NEXT SUBCP
BX6 X6+X2 ADD NEXT QUEUE FWA
SA6 A3
MX0 -24 UPDATE *TAFQ* LAST
LX5 -5+47 RESTORE *TAFQ*
BX6 -X0*X5 SAVE NEXT POINTERS
LX4 47-5-QWNSS+QWNSN-1 POSITION NEXT SUBCP IN *TAFQ*
BX6 X6+X4
LX2 41-17-QWNAS+QWNAN-1 POSITION NEXT QUEUE FWA
BX6 X2+X6
SA6 A5
EQ QTWX RETURN
* WHEN NO WORK EXISTS IN QUEUE, SET FIRST EQUAL TO LAST.
QTW1 LX3 23-5 POSITION SUBCP
BX1 X3+X2 SUBCP + FWA OF QUEUE ENTRY
SA6 B5+QWEVW FIRST WORD OF QUEUED EVENT
BX6 X1
LX6 47-23 LAST
BX6 X1+X6 FIRST + LAST
SA6 A5
EQ QTWX RETURN
* PUT NEW ENTRY AT BEGINNING OF QUEUE.
QTW2 LX5 41-17 UPDATE *TAFQ* FIRST
LX3 23-5 POSITION SUBCP
MX0 36
BX7 X3+X2 SUBCP + FWA OF NEW QUEUE ENTRY
BX4 X0*X5
BX7 X4+X7
SA7 A5
BX4 -X0*X5
LX4 QWNTS-QWNTN+1 POSITION NEW ENTRY NEXT POINTERS
BX6 X4+X6 ADD NEXT POINTERS TO NEW ENTRY
SA6 B5+QWEVW
EQ QTWX RETURN
CRA SPACE 4,15
** CRA - COMPUTE REAL ADDRESS.
*
* ENTRY (X1) = FWA WITH RESPECT TO SUBCP.
* (X3) = SUBCP.
*
* EXIT (B5) = FWA WITH RESPECT TO *TAF*.
* (X3) = SUBCP.
*
* USES X - 2, 3
* A - 2.
* B - 5.
CRA SUBR ENTRY/EXIT
SB5 X1 ADDRESS WITH RESPECT TO SUBCP
LX3 SCPAL LENGTH OF SUBCP ENTRY
TA2 X3-CPAL,VCPA FWA OF SUBCP
ZR X3,CRAX IF NO SUBCP, ADDRESS IS RELATIVE TO *TAF*
SB5 X2-NUAPL ADDRESS OF TASK SYSTEM AREA
SB5 B5+X1
AX3 SCPAL
EQ CRAX RETURN
TITLE JOURNAL FILE PROCESSING.
JRNL SPACE 4,10
** JRNL WRITE A JOURNAL FILE ENTRY.
*
* ENTRY (B3) = RETURN ADDRESS.
* (B4) = ORIGIN CODE.
* (B5) = JOURNAL FILE FET ADDRESS.
* (X0) = C.B. ADDRESS, IF TASK AFFILIATED.
* = 0, OTHERWISE.
* (X5) = START OF JOURNAL MESSAGE (+NUAPL) AND LENGTH.
* = 24/ 0, 18/ LENGTH, 18/ FWA OF MESSAGE.
*
* EXIT TO *DCPT*, IF NON-BUFFERED JOURNAL FILE.
* TO *TERR9*, IF TOO MANY WORDS TO JOURNAL.
* (B2) = FWA OF ACTIVE TASK SYSTEM AREA.
* (B7) = FWA OF ACTIVE TASK SUBCP TABLE.
*
* JOURNAL FILE ENTRY HEADERS.
*
*T W1 24/ SEQ,6/ OR,12/ ,18/ LN
*T, W2 42/ TASK NAME,18/ PT
*T, W3 42/ TN,18/
*
* WORD 1
*
* SEQ - SEQUENCE NUMBER IF TASK AFFILIATED.
* OR - ORIGIN CODE.
* 0 = TASK ORIGIN.
* 1 = TRANEX ORIGIN.
* 2 = DATA MANAGER ORIGIN (NOT USED).
* 3 = TRANEX RECOVERY/STATISTICAL DATA.
* 4 = END OF TRANSACTION INDICATOR.
* 5 = INCOMPLETE BLOCK OF TERMINAL INPUT DATA.
* 6 = TERMINAL INPUT FOR AN INTERACTIVE TASK.
* 7 = INCORRECT INTER-CONTROL POINT COMMUNICATION.
* 10B = ON-LINE TASK LIBRARY UPDATE.
* 11B = TASK FATAL ERROR (*CDCS* REQUEST).
* 12B = MESSAGE REQUEST WITH ZERO FUNCTION CODE.
* LN - LENGTH OF JOURNAL ENTRY (INCLUDING HEADER).
*
* WORD 2
*
* TASK NAME - ONLY FOR TASK AFFILIATED MESSAGES.
* PT - PACKED TIME HR/MIN/SEC.
*
* WORD 3
*
* TN - TERMINAL NAME.
*
* JOURNAL FILE LABEL RECORDS.
*
*T W1 48/ *TRANEX*,12/
*T, W2 60/ PDATE
*T, W3 42/ FILE NAME,18/
*
* USES A - 0, 1, 2, 3, 4, 6, 7.
* B - 3, 4, 5, 6.
* X - ALL.
*
* CALLS CLJF, ERP, RSP, TRCL.
*
* MACROS WRITER, WRITEW.
JRNL SA3 B5+7
SX2 B5 JOURNAL FET ADDRESS
SX1 X3
JRNL1 ZR X1,JRNL14 IF BUFFERED JOURNAL FILE
SA1 B5
LX1 59-0
NG X1,JRNL4 IF FILE NOT BUSY
* PLACE SUB CONTROL POINT IN RECALL.
JRNL2 SX4 B4
LX0 36
SX7 JRNL3 RETURN ADDRESS
SX3 B5
BX6 X5+X0
LX3 18
IX7 X7+X3 ADD JOURNAL FILE BIAS
LX4 36
SA6 B2+RCLA RECALL STATUS WORD 2
BX7 X7+X4
SA7 A6-B1 RECALL STAUS WORD 1
EQ TRCL PLACE SUB CP ON RECALL
* PROCESS SUB CP RETURN FROM RECALL ON JOURNAL REQUEST.
JRNL3 LX1 -18
SA2 A1+B1 RECALL STATUS WORD 2
MX3 24
SB5 X1 JOURNAL FILE FET
LX1 -18
BX5 -X3*X2 START OF MESSAGE AREA AND LENGTH
SB3 TSSC
SB4 X1 ORIGIN CODE
LX2 -36
SX0 X2 C.B. IF TASK AFFILIATED
SX2 B5
EQ JRNL1 TRY JOURNAL REQUEST AGAIN
* PROCESS ANY TAPE ERRORS/END OF TAPE CONDITIONS.
JRNL4 SA1 X2 CHECK FOR ERROR CODES
MX6 -4
LX1 -10
BX6 -X6*X1
ZR X6,JRNL6 IF NO ERROR CODES
SX6 B3
BX7 X7-X7
SA0 JRNL5 RETURN ADDRESS
SA6 B2+RCL
SB6 B0
EQ ERP PROCESS ERROR CONDITION
JRNL5 SA1 B2+RCL
SB5 X2 JOURNAL FILE FET ADDRESS
SB3 X1 RETURN ADDRESS
* SET HEADER AND WRITE UNIT RECORD JOURNAL FILE ENTRY.
JRNL6 RJ CLJF CLEAR LOCKS ON JOURNAL FILES
SB6 X5
NZ B4,JRNL7 IF REQUEST NOT FROM A SUB CP
SB6 X5+B2 ABSOLUTE FWA OF JOURNAL DATA
SX7 X5+
SA7 B2+JTSC SAVE RELATIVE ADDRESS
JRNL7 SA1 B6-B1
SA2 A1-B1 SAVE PRIOR 3 WORDS
BX6 X1
LX7 X2
SA6 B2+JTSC+1 SAVE IN SYSTEM AREA IN FRONT OF TASK
SA3 A2-B1
SA7 A6+B1
BX6 X3
SA6 A7+1
MX3 -18
SA2 PDATE PACKED TIME
BX2 -X3*X2
SX6 B0
SX1 B6+ SAVE (B6)
SB6 12B
EQ B4,B6,JRNL7.1 IF MESSAGE ORIGIN CODE
NZ B4,JRNL8 IF NOT TASK AFFILIATED
JRNL7.1 SA4 B7+2 GET TASK INDEX
MX7 12
BX4 X7*X4 TASK INDEX
SX6 377777B
LX4 12
TA3 X4-1,VTLD GET TASK NAME
BX6 -X6*X3
JRNL8 BX6 X6+X2
SB6 X1 RESTORE (B6)
SA6 B6-2 TASK NAME + PACKED TIME
BX4 X4-X4
SX7 B0
ZR X0,JRNL9 IF NOT TASK AFFILIATED
MX7 -24
SA3 X0+CMBHL TRANSACTION SEQUENCE NUMBER
SA4 A3+B1 TERMINAL NAME
BX7 -X7*X3
JRNL9 LX7 -24
SX3 B4 ORIGIN CODE
LX5 -18
LX3 30
SX2 X5+3 LENGTH OF JOURNAL ENTRY
MX6 42
IX7 X7+X2
BX6 X6*X4 TERMINAL NAME
IX7 X7+X3
SA7 B6-3
SA6 A6+B1
NZ B4,JRNL13 IF NOT FROM A SUB CONTROL POINT
LX5 18
* SET LOCK OUT ON STORAGE MOVE AND FILE FOR DURATION OF WRITE.
SA1 JRNLB GET STATUS OF NON BUFFERED JOURNAL FILES
SX7 B5 JOURNAL FILE FET ADDRESS
SX6 X1
NZ X6,JRNL10 IF FIELD IN USE - TRY NEXT FIELD
BX6 X1+X7
MX4 1
EQ JRNL12 SET LOCK OUT
JRNL10 LX1 -18
SX2 X1
SX7 B5 JOURNAL FILE FET ADDRESS
BX6 X1+X7
NZ X2,JRNL11 IF FIELD IN USE - TRY NEXT FIELD
LX6 18
MX4 1
EQ JRNL12 SET LOCK OUT
JRNL11 LX1 -18
SX2 X1+
BX6 X1+X7
NZ X4,JRNL2 IF ALL FIELDS IN USE - PLACE TASK ON RECALL
LX6 18+18
MX4 1
JRNL12 SA3 B7 SUB CP CONTROL WORD 1
SA6 A1 SET FILE LOCK OUT
BX7 X4+X3
SA7 B7 SET STORAGE MOVE LOCK OUT
SA1 B5+5
MX4 -18
SX3 B7 SUB CONTROL POINT AREA
BX7 X4*X1
BX7 X7+X3
LX5 -18
SA7 A1 SET FLAG TELLING WHICH SUB CP USING FILE
* SET UP FET FOR WRITE.
JRNL13 SA1 B5+B1 FIRST
SA2 B5+FEMGW
BX3 X3-X3
MX4 60-FEFRN
SX7 B6-3
NG X2,JRNL13.1 IF TAPE
SX6 B5+FECRW SET RETURN RANDOM INDEX ADDRESS
SA6 B5+FERRW
SX3 B1
BX6 X6-X6
SA6 B5+FECRW CLEAR OLD RANDOM INDEX
SA7 B5+FEOOW
JRNL13.1 LX3 FERMS-0 ADD RANDOM ACCESS FLAG
BX6 X4*X1 MASK OFF OLD FIRST ADDRESS
SA7 A1+2 OUT
BX6 X6+X7
BX6 X3+X6
SB6 X5+3 NUMBER OF WORDS TO JOURNAL
SX7 X7+B6
SA7 A7-B1 IN
SA3 B5+4 LIMIT
SA6 A1
BX4 X4*X3
SX7 X7+1
BX7 X7+X4
SA7 A3
SX3 B6-MAXJL-1
PL X3,TERR9 IF TOO MANY WORDS TO JOURNAL
WRITER B5+ INITIATE WRITE ON JOURNAL FILE
RJ DCPT DROP CPU FOR TASK
EQ TSSC TIME SLICE SUBCP
* PROCESS BUFFERED JOURNAL FILE ENTRIES.
JRNL14 SX2 X5 START OF MESSAGE
NZ B4,JRNL15 IF NOT TASK AFFILIATED
SX2 X2+B2 ADD SUB CONTROL POINT BIAS
JRNL15 LX5 -18
SA1 X2-1 SAVE THREE WORDS PRIOR TO JOURNAL MESSAGE
SA4 A1-B1 SECOND WORD TO SAVE
BX6 X1
SA6 JRNLA STORAGE AREA FOR WORDS SAVED
BX7 X4
SA3 A4-B1 THIRD WORD TO SAVE
SA7 A6+B1
BX6 X3
SA6 A7+B1
MX3 -18
SA1 PDATE PACKED TIME
MX7 12
BX1 -X3*X1
SX6 B0
SB6 12B
EQ B4,B6,JRNL15.1 IF MESSAGE ORIGIN CODE
NZ B4,JRNL16 IF NOT TASK AFFILIATED
JRNL15.1 SA4 B7+2 GET TASK INDEX
MX6 42
BX4 X7*X4 TASK INDEX
LX4 12
TA3 X4-1,VTLD GET TASK NAME
BX6 X6*X3
JRNL16 BX6 X6+X1 TASK NAME + PACKED TIME
SX3 X5+3 LENGTH OF JOURNAL ENTRY
BX4 X4-X4
SX7 B0
ZR X0,JRNL17 IF NOT TASK AFFILIATED
MX7 -24
SA1 X0+CMBHL TRANSACTION SEQUENCE NUMBER
SA4 A1+B1 TERMINAL NAME
BX7 -X7*X1
JRNL17 SA6 X2-2 STORE TASK NAME
LX7 -24
SX5 B4 ORIGIN CODE
LX5 30
BX7 X7+X3 SEQUENCE NUMBER AND LENGTH
MX1 42
IX7 X7+X5 ADD ORIGIN CODE
BX6 X1*X4 TERMINAL NAME
SA7 A6-B1
SA6 A6+B1
SX5 A7 ADDRESS OF FIRST WORD OF JOURNAL MESSAGE
SX1 X3-MAXJL-1
PL X1,TERR9 IF TOO MANY WORDS TO JOURNAL
SA0 B3 SAVE RETURN ADDRESS
SA1 B5+FEMGW
LX1 59-FEMGS
NG X1,JRNL18 IF TAPE
RJ JSC JOURNAL STATUS CHECK
SX7 B1 SET RANDOM ACCESS FLAG
SA2 B5+FERMW
LX7 FERMS-0
BX7 X2+X7
SA7 A2
BX6 X6-X6 CLEAR CURRENT EOI RANDOM INDEX
SA1 B5+FEOUW SAVE OLD OUT POINTER
SA6 B5+FECRW
SX7 A6
BX6 X1
SA7 B5+FERRW SET RETURN EOI INDEX ADDRESS
SA6 B5+FEOOW
JRNL18 WRITEW B5,X5,X3 WRITE JOURNAL FILE
RJ RSP RESTORE (B2) AND (B7)
SA1 JRNLA RESTORE HEADER WORDS
SA2 A1+B1
SA3 A2+B1
BX6 X2
SB3 A0+ RESTORE RETURN ADDRESS
BX7 X1
SA6 X5+B1 SECOND WORD OF HEADER
SA7 A6+B1 THIRD WORD
BX7 X3
SA7 A6-B1 FIRST WORD
JP B3 RETURN
JRNLA BSS 3 STORAGE AREA FOR WORDS DESTROYED BY JOURNAL
FILE HEADER
JRNLB BSSZ 1 WORD FOR NON BUFFERED JOURNAL FILE LOCKS
JSC SPACE 4,15
** JSC - JOURNAL FILE STATUS CHECK.
*
* ENTRY (B5) = FWA OF FET.
* (X3) = LENGTH OF DATA IN WORDS TO JOURNAL.
*
* EXIT FILE IS READY TO JOURNAL.
*
* USES X - 1, 2, 4.
* A - 1, 2, 4.
* B - 3, 4, 6.
*
* MACROS RECALL.
JSC SUBR ENTRY/EXIT
SA1 B5 CHECK COMPLETION FLAG
LX1 59-FECLS
SA2 B5+FEINW GET IN
NG X1,JSCX IF PREVIOUS REQUEST COMPLETED
SA1 B5+FEOUW GET OUT
SX2 X2
SX1 X1
SB4 X2
SB6 X1
EQ B4,B6,JSCX IF BUFFER EMPTY
GT B6,B4,JSC2 IF OUT IS GREATER THAN IN
SB3 X3
SA4 B5+FEFRW GET FIRST
SX4 X4
IX1 X1-X4 SPACE BETWEEN FIRST AND OUT
SA4 B5+FELIW GET LIMIT
SX4 X4
IX2 X4-X2 SPACE BETWEEN IN AND LIMIT
IX1 X1+X2
SB6 X1-1 AVAILABLE SPACE
GE B6,B3,JSCX IF ENOUGH SPACE
JSC1 RECALL B5
EQ JSCX RETURN
JSC2 SB4 B6-B4
SB3 X3
GE B4,B3,JSCX IF ENOUGH SPACE
EQ JSC1 RECALL
ERP SPACE 4,10
** ERP PROCESS READ/WRITE FILE ERRORS.
*
* ENTRY (A0) = RETURN ADDRESS (POSITIVE IF JOURNAL FILE).
* (X2) = FET ADDRESS.
* (X7) = CIO FUNCTION CODE (NEGATIVE IF WITH AUTO RECALL)
* = 0 IF RETURN TO (A0) AFTER ERROR PROCESSING.
* (B6) = FWA ADDRESS WORKING BUFFER.
* (B7) = NUMBER OF WORDS LEFT TO TRANSFER.
*
* USES X - 1, 2, 3, 4, 6, 7.
* A - 1, 2, 3, 4, 6, 7.
* B - 3.
ERP5 SB3 A0
JP B3 RETURN
ERP SA1 X2 GET ERROR CODE
MX6 -5
SB3 A0 CHECK FOR NON JOURNAL FILE ERROR
LX6 10
BX4 -X6*X1
BX6 X6*X1 CLEAR OUT ERROR CODE
PL B3,ERP1 IF ERROR ON JOURNAL FILE WRITE
SB3 -B3
SX3 X4 ERROR CODE
BX4 X4-X4
SA0 B3 ERROR RETURN ADDRESS
ERP1 SA6 A1
ZR X4,ERP5 IF NO ABNORMAL CONDITIONS
SX3 B6
SA5 A1+1
PL X5,ERP5 IF NOT A TAPE FILE
SX6 B7
SA7 ERPA+1 SAVE X7
LX3 18
SX1 6000B
BX6 X3+X6 SAVE B6 AND B7
BX1 -X1*X4
NZ X1,ERP5 IF OTHER THAN PARITY/END OF REEL ERROR
SA6 ERPA
SA1 X2+B1 FIRST
SA3 A1+B1 SAVE IN AND OUT POINTERS
SX6 X1
SA4 A3+B1
LX3 18
SA6 A3 SET OUT = IN = FIRST
BX7 X3+X4
SA6 A4
SA7 ERPB
SA4 CIO= CIO= RETURN ADDRESS
CLOSER X2,UNLOAD,R CLOSE OUT TAPE FILE
SA1 ASEQ
BX7 X4
MX6 36
SA7 CIO= RESTORE CIO= RETURN ADDRESS
NZ X1,ERP3 IF TAPE(S) PREASSIGNED
SA1 X2
SX3 100B+1RT
LX3 -6 REASSIGN *TXXJORN* TO *XXJORN*
BX6 X6*X1
LX6 -6
BX6 X6+X3 *TXXJORN*
SA6 A1
RENAME X2,X1 RENAME DISK JOURNAL FILE TO *XXJORN*
ERP2 SA1 ERPB RESTORE IN AND OUT
SX6 X1
LX1 -18
SA6 X2+3 OUT
SX7 X1
SA7 A6-B1 IN
SA4 CIO=
WRITER X2,R EMPTY BUFFER WITH EOR WRITE
BX7 X4
SA7 A4 RESTORE ORIGINAL CIO= EXIT ADDRESS
SA1 ERPA
SB7 X1+ RESTORE B6 AND B7
SA3 A1+B1
LX1 -18
SB6 X1
BX7 X3 RESTORE X7
ZR X3,ERP5 IF NOT CALLED BY CIO=
JP CIO=+1 RESTART CIO=
* ASSIGN NEW TAPE TO FILE.
ERP3 SX3 X1
NZ X3,ERP4 IF FET ADDRESS IN LOWER FIELD
AX1 18
ERP4 SA3 X1
AX1 18 CLEAR FET ADDRESS
BX7 X1
SA1 X2 *XXJORN* FILE NAME
BX6 X3
SA7 ASEQ
SA6 X2
RENAME X2,X1 RENAME SCATCH TAPE FILE TO JOURNAL FILE
JP ERP2 CONTINUE WRITE ON NEW TAPE
ERPA BSS 2 STORAGE FOR B6/B7 AND X7 ENTRY PARAMETERS
ERPB BSS 1 STORAGE FOR IN AND OUT FET POINTERS
TITLE UPDATE K-DISPLAY.
KDIS SPACE 4,10
** KDIS - UPDATE OPERATOR *K-DISPLAY*.
*
* KDIS IS PERIODICALLY CALLED TO UPDATE THE OPERATOR
* *K-DISPLAY*. IF PREVIOUSLY ENTERED COMMANDS ARE INCOMPLETED,
* THEN THE PARAMETERS ARE RESTORED AND THE ROUTINE ENTERED
* FOR COMPLETION.
*
* ENTRY (KBUF) .NE. 0 - IF OPERATOR COMMAND TO BE EXECUTED.
* (KDISA) .NE. 0 - IF RETRY OF INCOMPLETED COMMAND.
*
* EXIT TO *IDL1* - IF RETRY OF *ITASK* IDLE DOWN REQUEST.
* TO *PCMD* - IF *K-DISPLAY* COMMAND PRESENT.
* TO *ULD0* - IF RETRY OF TASK LIBRARY DIRECTORY UPDATE.
* (SBUF - SBUF+1) UPDATED - IF TRANSFER TO *ULD0*.
*
* USES A - 1, 3, 4, 6, 7.
* X - 1, 2, 3, 4, 5, 6, 7.
* B - 3.
*
* CALLS CDD, COD, LOVL, RCPU, RSP.
*
* MACROS PDATE.
KDIS SUBR ENTRY/EXIT
SA5 KBUF
SX7 A5+
SA7 PCMDC
NZ X5,PCMD IF *K-DISPLAY* COMMAND PRESENT
* UPDATE K-DISPLAY.
KDIS1 SA1 AVAILCM UNUSED FIELD LENGTH
RJ COD CONVERT TO OCTAL DISPLAY CODE
SA6 KUNSF+3 UNUSED FIELD LENGTH
SA1 MFL MAXIMUM REQUESTABLE FIELD LENGTH
RJ COD CONVERT TO OCTAL DISPLAY CODE
SA6 KMXMF+3
SA1 TSEQ TRANSACTION SEQUENCE NUMBER
RJ CDD CONVERT TO DECIMAL DISPLAY CODE
SA6 KCRSN+1
SA6 KSEQ+1 SET IDLE *K-DISPLAY*
SA1 GTDL GLOBAL TASK DUMP LIMIT
SA4 KDISD *DUMPS LOST*
BX6 X4
NG X1,KDIS2 IF GLOBAL TASK DUMP FLAG SET
RJ CDD CONVERT TO DECIMAL DISPLAY CODE
KDIS2 SA6 KGTDL+3 *GTDL* INTO K-DISPLAY
RJ RSP RESTORE SUBCONTROL POINT REGISTERS
PDATE PDATE UPDATE PACKED DATE/TIME
* CHECK FOR TIME DELAYED ROUTINE RESTARTS.
SA1 KDISA TIME DELAY STATUS WORD
ZR X1,KDIS4 IF NO RETRIES
MX2 42
SB3 X1 RETRY IDLE DOWN FLAG
BX7 X2*X1
SA7 A1 CLEAR STATUS
ZR B3,KDIS3 IF NOT IDLE DOWN RESTART
SA1 LOVE
RJ LOVL LOAD OVERLAY
EQ IDL1 RETRY IDLE DOWN *ITASK* REQUEST
* PROCESS RETRY OF *LIBTASK,TT* REQUEST.
KDIS3 BX7 X7-X7 CLEAR STATUS
MX6 42
SA7 A1
BX6 X6*X1 USER NAME
SA6 SBUF+1
SA1 LOVF LOAD OVERLAY
SA3 KDISC READ TASK LIBRARY NAME
SX2 B1
BX6 X3
BX1 X1+X2
SA6 A6+B1
SA7 A7+1
RJ LOVL LOAD OVERLAY
SA4 SBUF
EQ ULD0 RETRY TASK LIBRARY UPDATE
* CHECK FOR TASK NEEDING SCREEN REFRESH.
KDIS4 SA1 KDISB
BX2 X1 C. B. ADDRESS OF DISPLAY TASK
LX1 59-56
NG X2,KDISX IF NO K-DISPLAY TASK ACTIVE
PL X1,KDISX IF NO SCREEN REFRESHING NEEDED
SA1 KDISF TIME OF THE LAST *CTI8* REQUEST
SA2 ITIME
SX3 RFRTL
MX6 24
IX1 X2-X1 TIME SINCE LAST DISPLAY
BX1 -X6*X1
IX3 X1-X3
NG X3,KDISX IF NOT ENOUGH TIME ELAPSED
SB2 B0
SA2 KDISG
SA4 X2
SB3 KDISX EXIT ADDRESS
MX6 -18
BX4 -X6*X4 TASK RA
SX4 X4-NUAPL
SB6 X2+
EQ RCPU REQUEST CPU FOR THE TASK
KDISA BSS 1 RESTART ROUTINE AFTER TIME DELAY
* KDISB - TASK *K-DISPLAY* INTERLOCK WORD.
*
*T 1/R,1/I,1/K,1/P,20/,18/MADDR,18/CBADDR
*
* R = DISPLAY TASK HAS BEEN SCHEDULED BUT
* HAS NOT YET ACQUIRED THE SCREEN(SCPT=0).
* I = DISPLAY TASK INPUT READY.
* K = *KDIS* IS ASSIGNED TO THE *K-DISPLAY*.
* P = THE TASK IS PERIODICALLY RECALLED TO REFRESH *K-DISPLAY,
* EVEN IF THERE IS NO INPUT(SEE *RFRTL*).
* MADDR = FWA OF MESSAGE WITHIN TASK FL.
* CBADDR = C.B. ADDRESS OF THE DISPLAY TASK
KDISB BSS 1 TASK *K-DISPLAY* INTERLOCK WORD.
KDISC BSS 1 PARAMETER FOR RESTART ROUTINE
KDISD DATA H*DUMPS LOST*
KDISE BSS 1 NAME OF TASK DRIVING *K-DISPLAY*
KDISF BSS 1 TIME OF LAST *CTI8* REQUEST BY
KDISG BSS 1 SUBCP ADDRESS
* DISPLAY-DRIVING TASK.
ASEQ BSSZ 1 ASSIGNED EQUIPMENT
PCMD SPACE 4,20
** PCMD PROCESS OPERATOR K-DISPLAY COMMAND.
*
* PCMD USES UPC TO UNPACK THE COMMAND, SO ANY LEGAL
* COMMAND FORMAT CAN BE USED IN DELIMITING A
* K-DISPLAY COMMAND.
*
* ENTRY (X5) = FIRST WORD OF COMMAND.
* (A5) = ADDRESS OF FIRST WORD.
* (KBUF - KBUF+4) = K-DISPLAY COMMAND IF FROM CONSOLE.
* (PCMDA - PCMDA+7) = K-DISPLAY COMMAND IF FROM TASK.
* (PCMDB) = IF TASK INITIATED, 6/0,18/TO,18/SA,18/SCPA.
* = IF FROM CONSOLE, 60/0.
* TO = TERMINAL ORDINAL.
* SA = START OF SYSTEM AREA FOR TASK.
* SCPA = SUB-CONTROL POINT AREA FOR TASK.
* (PCMDC) = ADDRESS OF COMMAND BUFFER.
*
* USES X - 1, 2, 4, 6, 7.
* A - 1, 2, 4, 6, 7.
* B - 2, 3, 7.
*
* CALLS DSDM, LOVL, PTK, UPC, ZTB.
*
* MACROS MOVE.
PCMD SA1 PCMDB
NZ X1,PCMD0 IF TASK INITIATED
MOVE 5,KBUF,KINP+1 ECHO *DSD* INPUT TO K-DISPLAY
SA1 KDISB
ZR X1,PCMD0 IF K-DISPLAY NOT ASSIGNED TO ANY TASK
NG X1,PCMD4 IF SUBCP ADDRESS NOT IN *KDISG*
LX1 59-57
NG X1,PCMD0 IF *KDIS* HAS THE SCREEN
SA2 KDISG SUBCP ADDRESS
SA4 X2+ FIRST WORD OF SUBCP ENTRY
MOVE 5,KBUF,X4+TDUA ECHO PACKED INPUT TO C. B.
PCMD0 SA1 KBUF ALLOW MISSING TERMINATOR
SB3 5
SB2 B0+
PCMD0.1 RJ ZTB CONVERT TRAILING ZEROES TO BLANKS
SA6 A1
SB2 B2+B1
SA1 A1+1
LT B2,B3,PCMD0.1 IF NOT END OF INPUT BUFFER
SA5 A5+
SX6 B0+
SB7 SBUF ADDRESS TO PLACE FIRST PARAMETER
SA6 B7+ CLEAR FIRST WORD OF BUFFER
RJ UPC UNPACK K-DISPLAY COMMAND
RJ PTD PROCESS TASK K-DISPLAY, IF ANY
NZ X6,PCMD3 IF ERROR IN COMMAND FORMAT
SA1 SBUF K-DISPLAY COMMAND
SX2 B1
LX2 17
BX1 X2+X1
MX6 24
SA2 KILL BLANK OUT ERROR MESSAGE LINE
SA4 PCMDI
BX7 X4
BX2 X6*X2 SAVE COORDINATES
BX6 -X6*X4 EXTRACT TRAILING BLANKS
BX6 X2+X6
SA7 A2+1
SB2 B6+
SA6 A2+
RJ LOVL LOAD OVERLAY AND PROCESS COMMAND
PCMD1 SX7 KDM1
EQ DSDM ISSUE *INCORRECT STATEMENT.* MESSAGE
PCMD2 SX7 KDM2
EQ DSDM ISSUE *DROP IGNORED.* MESSAGE
PCMD3 SX7 KDM3
EQ DSDM ISSUE *FORMAT MESSAGE.* MESSAGE
PCMD4 SX7 KDM4
EQ DSDM ISSUE *SYSTEM BUSY.* MESSAGE
PCMD6 SX7 KDM6
EQ DSDM ISSUE *NOT AVAILABLE.* MESSAGE
* COMMON RETURN ADDRESS FOR COMMAND PROCESSORS.
PCMDX SA1 PCMDB
BX7 X7-X7
SA7 A1
SA7 KBUF REMOVE ENTRY FROM BUFFER
ZR X1,KDIS1 IF COMMAND NOT FROM A TASK
SB7 X1
LX1 -18 RESTORE B2 AND B7
SB2 X1+
EQ TSSC ENTER TASK SWITCHING LOOP
* ENTRY POINT FOR POST LIBTASK TT REQUEST.
PCMD7 SB3 PCMD8 RETURN ADDRESS FROM *ESCP*
SA1 PCMDD SUBCONTROL POINT ADDRESS
SB6 X1
BX7 X7-X7 CLEAR SUBCP ADDRESS AND LIBTASK ACTIVE
SA7 A1+
SA7 PCMDF
EQ ESCP1 RELEASE MEMORY AND SUBCONTROL POINT
* TASK LIBRARY UPDATE COMPLETE.
PCMD8 SB5 -PCMDE COMPLEMENT OF FWA OF MESSAGE
RJ PNM PUT NAME IN MESSAGE
EQ TSSC EXIT TO SWITCHING LOOP
* TASK LIBRARY UPDATE FAILED.
PCMD9 SA1 PCMDD SUBCONTROL POINT ADDRESS
BX7 X7-X7 CLEAR SUBCP ADDRESS AND LIBTASK ACTIVE
SA7 A1+
SA7 PCMDF
ZR X1,TSSC IF NO SUBCP PRESENT
SB3 TSSC RETURN ADDRESS
SB6 X1 SUBCP ADDRESS
EQ ESCP1 RELEASE MEMORY AND SUBCONTROL POINT
PCMDA BSS 8 TASK INITIATED K-DISPLAY COMMAND BUFFER
PCMDB BSSZ 1 TASK INITIATED K-DISPLAY SAVE AREA
PCMDC BSS 1 ADDRESS OF COMMAND BUFFER
PCMDD BSSZ 1 STORAGE FOR SUBCONTROL POINT ADDRESS
PCMDE DATA C* LIBRARY UPDATED - XXXXXXX, +++++++.*
PCMDF BSSZ 1 LIBTASK ACTIVE FLAG
PCMDG BSSZ 1 USER NAME
PCMDH BSSZ 1 TASK LIBRARY NAME
PCMDI DATA 10H
PNM SPACE 4,20
** PNM - PUT NAME IN MESSAGE.
*
* ENTRY (B5) = COMPLEMENT OF FWA OF MESSAGE.
* (PCMDG) = USER NAME.
* (PCMDH) = TASK LIBRARY NAME.
*
* EXIT (B2) = FWA OF ACTIVE TASK SYSTEM AREA.
* (B7) = FWA OF ACTIVE TASK SUBCP TABLE.
*
* USES X - 1.
* B - 2, 3, 5.
* A - 1.
*
* CALLS RSP, SNM.
*
* MACROS MESSAGE.
PNM SUBR ENTRY/EXIT
SB2 1RX REPLACEMENT CHARACTER
SA1 PCMDH TASK LIBRARY NAME
SB3 DAYB ALTERNATIVE ASSEMBLY AREA
RJ SNM SET NAME IN MESSAGE
SB5 DAYB FWA OF MESSAGE
SA1 PCMDG USER NAME
SB2 1R+ REPLACEMENT CHARACTER
RJ SNM SET NAME IN MESSAGE
MESSAGE DAYB,3 DISPLAY DAYFILE MESSAGE
MESSAGE VERM,1 VERSION NUMBER
RJ RSP RESTORE SUBCP REGISTERS
EQ PNMX RETURN
SPACE 4,25
** PTD - PROCESS TASK *K-DISPLAY* INPUT.
*
* THIS SUBROUTINE WILL MOVE THE TASK INPUT FROM *SBUF*
* TO TASK FIELD LENGTH, PLACING IT IN ITS COMMUNICATION
* BLOCK. THE CPU FOR THE TASK WILL THEN BE REQUESTED.
*
* ENTRY (X6) = 0 IF NO ERROR FROM *UPC*.
* (B6) = NUMBER OF WORDS IN *SBUF*.
* (SBUF) = UNPACKED TASK INPUT, IF NO ERROR FROM *UPC*.
*
* EXIT (X6) = ENTRY VALUE, IF *K-DISPLAY* NOT ASSIGNED TO ANY
* TASK OR IF *KDIS* HAS THE SCREEN.
* (KDISB) = BIT 58 SET, IF INPUT MOVED TO TASK FL.
* TO *PCMD4*, IF PREVIOUS INPUT NOT YET PROCESSED
* BY THE TASK.
* TO *PCMDX*, IF CPU FOR THE TASK REQUESTED.
*
* USES X - 1, 2, 4, 6, 7.
* A - 1, 2, 4, 6, 7.
* B - 3, 6.
*
* CALLS RCPU.
PTD SUBR ENTRY/EXIT
SA1 KDISB
ZR X1,PTDX IF *K-DISPLAY* NOT ASSIGNED TO ANY TASK
MX7 1
LX1 59-57
NG X1,PTDX IF *KDIS* HAS THE SCREEN
LX1 59-58-59+57
NG X1,PCMD4 IF PREVIOUS INPUT NOT PROCESSED
BX7 X1+X7 SET *INPUT READY* BIT
SA2 KDISG SUBCP ADDRESS
LX7 58-59
SA7 A1+
SA1 X2+ FIRST WORD OF SUBCP ENTRY
ZR X6,PTD2 IF NO ERROR FROM *UPC*
SA4 PCMDI
SB3 SBUF+1
SB6 4
BX6 X4
SA6 B3-1 SUBSTITUTE BLANK WORD FOR ILLEGAL COMMAND
BX6 X6-X6
PTD1 SA6 B3 CLEAR REST OF BUFFER
SB6 B6-B1
SB3 B3+1
NZ B6,PTD1 IF NOT END OF BUFFER
SB6 1 SET WORD COUNT TO REFLECT THE BLANK WORD
PTD2 SB3 B6 SAVE LENGTH OF UNPACKED MESSAGE IN WORDS
SB6 B6-1
SA1 X1+TNAM+1 FIRST WORD OF DATA INPUT AREA IN C. B.
PTD3 SA2 SBUF+B6 MOVE MSG TO COMMUNICATION BLOCK
BX6 X2
SA6 A1+B6
SB6 B6-B1
PL B6,PTD3 IF NOT ENTIRE MESSAGE MOVED
BX6 X6-X6
PTD4 SB6 B3-CBDL
SB6 -B6 NUMBER OF WORDS TO ZERO OUT IN INPUT AREA
NG B6,PTD5 IF MESSAGE COMPLETELY FILLS THE INPUT AREA
ZR B6,PTD5 IF MESSAGE COMPLETELY FILLS THE INPUT AREA
SA6 A1+B3 CLEAR DATA INPUT AREA
SB3 B3+B1
EQ PTD4 CLEAR REST OF DATA INPUT AREA
PTD5 MX6 -18
SA4 KDISG
SB6 X4
SA4 X4 SUBCP ADDRESS
BX4 -X6*X4 TASK RA
SB3 PCMDX
SB2 B0 CLEAR RESIDUE FROM *UPC*
SX4 X4-NUAPL
EQ RCPU REQUEST CPU FOR THE TASK
KSC1 SPACE 4
KCTRL1 VFD 1/0,1/1,4/0,18/KBUF,18/0,18/KFRM
KFRM VFD 12/0,36/0,12/2
KDL 28,T,(TAF STATUS)
KCRSN KDL 35,,( )
KDL 15,K,(TRANSACTION SEQUENCE NUMBER)
KUNSF KDL 15,K,(UNUSED FIELD LENGTH )
KMXMF KDL 15,K,(MAXIMUM FIELD LENGTH )
KGTDL KDL 15,H,(GLOBAL TASK DUMP LIMIT )
KDL 19,H,(CMDUMP/DSDUMP DEFAULT VALUES)
KDL 7,H,(OPTION DESCRIPTION)
KDFWA KDL 3,,( FW = "DFWAM")
KDL 22,K,(FWA OF TASK MEMORY TO BE DUMPED.)
KDLWA KDL 3,,( LW = "DLWAM")
KDL 22,K,(LWA OF TASK MEMORY TO BE DUMPED.)
KDEXP KDL 3,,( EP = "DEXPM")
KDL 22,K,(IF EP=1, DUMP EXCHANGE PACKAGE.)
KDL 22,K,(IF EP=0, DO NOT DUMP EXCHANGE PACKAGE.)
KDORT KDL 3,,( OQ = "DORTM")
KDL 22,K,(OUTPUT QUEUE.)
KDQDS KDL 3,,( QD = "DQDSM")
KDL 22,K,(QUEUE DESTINATION.)
KILL KDL 7,M,( )
KINP KDL 1,I,(
, )
BSSZ 1
SPACE 4,25
** DSDM DISPLAY DIAGNOSTIC K-DISPLAY MESSAGE.
*
* IF THE K-DISPLAY COMMAND ORIGINATED FROM THE CONSOLE,
* THE DIAGNOSTIC MESSAGE WILL BE DISPLAYED ON THE K-DISPLAY.
* IF THE K-DISPLAY COMMAND ORIGINATED FROM A TASK, THE
* DIAGNOSTIC MESSAGE WILL BE DISPLAYED AT THE ORIGINATING
* TERMINAL. THIS IS DONE BY SCHEDULING THE SYSTEM TASK,
* *SYSMSG*. IF THE REQUEST TO SCHEDULE *SYSMSG* IS UNSUC-
* CESSFUL, THE ORIGINATING TASK IS RECALLED. UPON RETURN,
* AN ATTEMPT IS MADE TO SCHEDULE *SYSMSG* AGAIN. THIS
* REPEATS UNTIL *SYSMSG* IS SCHEDULED.
*
* ENTRY (X7) = K-DISPLAY MESSAGE CODE.
* (SBUF) = FIRST WORD OF THE ATTEMPTED K-DISPLAY
* COMMAND OR ZERO.
*
* USES X - 1, 2, 3, 4, 5, 6, 7.
* A - 1, 2, 3, 4, 5, 6, 7.
* B - 2, 3, 7.
*
* CALLS TRN, TRCL2.
*
* MACROS MOVE.
DSDM SA2 PCMDB
NZ X2,DSDM1 IF COMMAND IS FROM A TASK
* SEND A DIAGNOSTIC MESSAGE TO THE CONSOLE.
SA1 KILL
SX7 X7-1
SX4 2
IX4 X4*X7
MX3 24
SA2 X4+DSDMA FIRST WORD OF MESSAGE
BX1 X3*X1 EXTRACT DISPLAY COORDINATES
BX2 -X3*X2
BX7 X1+X2 ADD COORDINATES TO THE MESSAGE
SA7 A2
MOVE 2,A2,KILL MOVE MESSAGE TO DISPLAY BUFFER
EQ PCMDX RETURN
* SEND A DIAGNOSTIC MESSAGE TO A TERMINAL.
DSDM1 LX2 -36
SA5 SBUF FIRST WORD OF ATTEMPTED COMMAND
SX2 X2 TERMINAL ORDINAL
ZR X2,PCMDX IF TASK NOT OF TERMINAL ORIGIN
LX2 18
DSDM2 SX6 4001B BUFFER FUNCTION CODE
SA7 DSDMD SAVE THE MESSAGE CODE IN BUFFER
LX6 48
BX6 X6+X2
SX4 3 WORD COUNT
BX6 X6+X4
SA6 DSDMC BUFFER CONTROL WORD
BX7 X5
SA7 DSDME SAVE FIRST WORD OF ATTEMPTED COMMAND
SB3 DSDMC FIRST WORD OF THE BUFFER
SA4 DSDMB TASK NAME TO SCHEDULE
SX5 CSMSG SYSTEM MESSAGE CODE
SX7 B0+ SCHEDULE ONLY FROM SYSTEM LIBRARY
RJ TRN SCHEDULE *SYSMSG*
NZ X0,PCMDX IF *SYSMSG* WAS SCHEDULED
* RECALL THE ORIGINATING TASK AND ATTEMPT SCHEDULING LATER.
SA2 PCMDB RESTORE B2 AND B7
SB7 X2
AX2 18
SA3 DSDMD MESSAGE CODE
SB2 X2
LX3 18
SA4 DSDME FIRST WORD OF ATTEMPTED COMMAND
SX5 DSDM3
BX7 X5+X3
BX6 X4
SA6 B2+RCLA SAVE ATTEMPTED COMMAND
EQ TRCL2 RECALL TASK
* RESTORE THE REGISTERS AND TRY TO SCHEDULE *SYSMSG* AGAIN.
DSDM3 SA2 B2+CB2C SYSTEM AREA WORD 2
AX1 18 RESTORE MESSAGE CODE
SX6 B2 SAVE (B2)
SX3 B7 SAVE (B7)
LX6 18
SX7 X1
AX2 42 TERMINAL ORDINAL
BX6 X6+X3
SA5 B2+RCLA FIRST WORD OF ATTEMPTED COMMAND
LX2 18
SA6 PCMDB SAVE B2 AND B7
EQ DSDM2 TRY TO SCHEDULE *SYSMSG* AGAIN
* THE FOLLOWING IS A TABLE OF K-DISPLAY COMMAND DIAGNOSTIC
* MESSAGES WHICH IS ORDER DEPENDENT. A TABLE ENTRY
* MUST BE 2 WORDS LONG INCLUDING 4 LEADING BLANKS.
DSDMA DATA H* "KDM1M".*
DATA H* "KDM2M".*
DATA H* "KDM3M".*
DATA H* "KDM4M".*
DATA H* "KDM6M".*
DSDMB VFD 42/6LSYSMSG,18/0
DSDMC VFD 24/0,18/0,18/0 BUFFER CONTROL WORD
DSDMD BSS 1 K-DISPLAY COMMAND MESSAGE CODE
DSDME BSS 1 FIRST WORD OF ATTEMPTED COMMAND
RKP SPACE 4,15
** RKP - RESTORE K-DISPLAY POINTER.
*
* ENTRY (KDISB) = 24/0,18/FWA OF MESSAGE,18/SUBCP ADDRESS.
*
* EXIT (KCTRL1) UPDATED.
* (X1) AND (X2) RESTORED.
*
* USES A - 3, 4, 6.
* B - 5.
* X - 1, 2, 3, 4, 6, 7.
*
* CALLS NONE.
*
* MACROS CONSOLE, MESSAGE.
RKP SUBR ENTRY/EXIT
MX7 42
SA3 KDISG SUBCP ADDRESS
SA3 X3
SA4 KDISB
ZR X4,RKPX IF NO TASK DISPLAY REQUEST
NG X4,RKPX IF K-DISPLAY TASK SCHEDULED, BUT NOT ACTIVE
LX4 17-35
SB5 X3 TASK RA
SA3 KCTRL1
SX4 X4+B5 ABSOLUTE K-DISPLAY ADDRESS
BX6 X7*X3 CLEAR OLD ADDRESS
BX6 X4+X6 UPDATE FWA OF MESSAGE
SA6 A3
BX3 X1 SAVE (X1) AND (X2)
BX4 X2
CONSOLE KCTRL1 ISSUE K-DISPLAY
MESSAGE VERM,1 * VERSION NUMBER.*
MESSAGE ZWORD,2
BX1 X3 RESTORE (X1) AND (X2)
BX2 X4
EQ RKPX RETURN
TITLE OVERLAY PROCESSING.
LOVL SPACE 4,10
** LOVL - LOAD AND EXECUTE OVERLAY.
*
* ENTRY (X1) = ENTRY POINT NAME.
*
*T (X1) 42/ ENTRY POINT NAME,1/K,17/ RT
* K SET IF K-DISPLAY COMMAND.
* RT IF SET RETURN TO CALLER - DO NOT EXECUTE OVERLAY.
*
* USES A - 1, 2, 3, 4, 7.
* B - 4, 6.
* USES X - 1, 2, 3, 4, 6, 7.
*
* CALLS SETA, OVL=.
LOVL SUBR ENTRY/EXIT
MX6 43
TA4 -1,VOEP START OF OVERLAY ENTRY POINT NAMES
BX7 -X6*X1 EXECUTE / NO EXECUTE FLAG
LOV1 SA4 A4+B1
ZR X4,LOVLX IF ENTRY POINT NAME NOT FOUND
BX3 X1-X4
BX3 X6*X3
NZ X3,LOV1 IF NO MATCH ON NAME
LX4 -12
SA3 LOVA CURRENT OVERLAY IN CORE
MX6 -4
BX6 -X6*X4 OVERLAY ORDINAL
BX3 X3-X6
SA6 A3 SET NEW OVERLAY NAME
ZR X3,LOV2 IF OVERLAY IN CORE
* LOAD AND PRESET OVERLAY.
SA1 LOVB
SA2 LWPR SAVE FOR *CMM*
LX6 59-PRODL*6-5 SHIFT DEPENDS ON PRODUCT NAME
BX6 X6+X1 OVERLAY NAME
SA6 TROVL
BX6 X2
SA6 LOVH
OVERLAY TROVL,100B,S,TROVL-1 LOAD OVERLAY
SA3 LOVH (LWPR)
SA1 LOVA
TA2 X1-1,VOREL START OF RELOCATION ADDRESSES
SB4 X2
BX6 X3
LX2 -18
SA6 LWPR
SB6 X2-1
NG B6,LOV2 IF NO INSTRUCTIONS TO RELOCATE
RJ SETA RELOCATE INSTRUCTIONS
LOV2 NZ X7,LOVLX IF RETURN TO CALLER REQUESTED
SA4 A4 CONTROL WORD
MX7 -12
BX7 -X7*X4 ENTRY BIAS
SB6 X7
JP B6+TROVL
LOVA CON 0 CURRENT OVERLAY IN CORE
LOVB VFD 42/0L"PROD",18/0
LOVC VFD 42/0LDTS,18/0 TASK DUMP PROCESSOR
LOVD VFD 42/0LECE,18/0 ECS TASK LIBRARY READ ERROR PROCESSOR
LOVE VFD 42/0LIDLE,1/1,17/1 IDLE DOWN
LOVF VFD 42/0LULD,18/0 UPDATE TASK LIBRARY DIRECTORY
LOVG VFD 42/0LCIN,18/0 COMMUNICATION SUBSYSTEM INITIALIZATION
LOVH BSS 1 (LWPR)
SETA SPACE 4,10
** SETA SET ADDRESSES IN TRANEX INSTRUCTIONS (ADAPTED FROM
* TELEX - USED WITH INMOD MACRO).
*
* ENTRY (B4) = START OF RELOCATION CONTROL TABLE.
* (B6) = LENGTH OF RELOCATION CONTROL TABLE.
*
* USES A - 1, 2, 6.
* B - 5, 6.
* X - 1, 2, 3, 4, 6.
SETA SUBR ENTRY/EXIT
SET1 SA1 B4+B6 READ THE NEXT RELOCATION WORD
SB6 B6-B1
UX4,B5 X1 SET POSITION IN WORD
SA2 X1 GET WORD
AX1 18
SX1 X1
MX6 -18
SX3 X1
PL X1,SET2 IF POSITIVE VAUE WANTED
BX1 -X1
SET2 SA1 X1
PL X3,SET3 IF COMPLEMENT OF ADDRESS WANTED
BX1 -X1
SET3 LX4 59-47
NG X4,SET4 IF LWA WANTED
AX1 24 GET FWA
SET4 BX1 -X6*X1
SX4 B5
SB5 B5-60
AX2 X2,B5 POSITION ADDRESS
BX3 -X6*X2 GET ADDRESS
BX2 X6*X2 MASK OUT ADDRESS
SX3 X3
IX3 X3+X1 GENERATE NEW ADDRESS
BX3 -X6*X3
BX2 X2+X3 MERGE ADDRESS
SB5 X4
LX6 X2,B5 REPOSITION INSTRUCTION
SA6 A2
PL B6,SET1 IF STILL MORE INSTRUCTIONS TO MODIFY
EQ SETAX RETURN
TERR TITLE ERROR PROCESSING.
* TERR FATAL TASK ERROR LIST.
*
TERR1 ERROR 1 TASK CEASE WITH REQUESTED ABORT
TERR2 ERROR 2 RA+1 CALL PARAMETER ADDRESS OUTSIDE FL
TERR3 ERROR 3 RA+1 CALL WITH ILLEGAL FUNCTION CODE
TERR4 ERROR 4 SYSTEM REQUEST CALL ERROR
TERR5 ERROR 5 MORE THAN 5 TASKS IN TASK CHAIN
TERR6 ERROR 6 INCORRECT TASK NAME
TERR7 ERROR 7 TERMINAL NAME DOE NOT EXIST
TERR8 ERROR 8 OUTPUT MESSAGE TOO LONG
TERR9 ERROR 9 INCORRECT JOURNAL FILE REQUEST
TERR10 ERROR 10 TASK CEASE WITH OUTSTANDING D.M. REQUESTS
TERR11 ERROR 11 TASK NOT VALIDATED FOR REQUEST
TERR12 ERROR 12 TASK BRANCH LIMIT EXCEEDED
TERR13 ERROR 13 INCORRECT RA(S)+1 CALL PARAMETER
TERR14 ERROR 14 TOO MANY SYSTEM REQUEST CALLS
TERR15 ERROR 15 TASK TIME LIMIT EXCEEDED
TERR16 MX6 1
BX2 -X6*X5 CLEAR ABORT FLAG
LX2 59-SCDRS-59+SCTAS
BX6 -X6*X2 CLEAR DROP FLAG
LX6 59-59-59+SCDRS
SA6 A5
ERROR 16 ABORT FLAG SET
TERR17 ERROR 17 ERROR IN SUBMIT FILE
TERR18 ERROR 18 *CALLRTN* NESTED CALL LIMIT EXCEEDED
TERR19 ERROR 19 SCHEDULING REQUEST WITH D.M. REQUESTS OUT
TERR20 ERROR 20 INCORRECT WAIT FOR INPUT REQUEST
TERR21 ERROR 21 *WAITINP* FROM MULTI QUEUED TASK
TERR22 MX6 1 SET SEND BIT
BX5 X6+X4
LX5 59-14-44 CLEAR ABORT BIT
BX6 -X6*X5
LX6 45-15-45
SA6 A4
ERROR 22 APPLICATION ERROR - NO TERMINAL OUTPUT
TERR23 MX6 1 CLEAR ABORT FLAG
BX6 -X6*X5
LX6 -4
SA6 A5
ERROR 23 TOTAL DATA MANAGER ERROR
* ERROR 24 RESERVED
TERR25 ERROR 25 TOTAL DATA MANAGER NOT LOADED
TERR26 ERROR 26 INCORRECT TOTAL INTERLOCK REQUEST
TERR27 ERROR 27 A SEND TO TERMINAL NOT LOGGED IN
TERR28 ERROR 28 ABORT TASK FOR ARGUMENT ERROR
TERR29 ERROR 29 NETWORK REQUEST NOT SUPPORTED
TERR30 ERROR 30 *CRM* DATA MANAGER NOT LOADED
TERR31 ERROR 31 *CDCS* NOT AVAILABLE
TERR32 ERROR 32 *CDCS* REQUEST ABORT
TERR33 ERROR 33 MEMORY REQUEST FOR ECS NOT ALLOWED
TERR34 ERROR 34 INCORRECT COMMON MEMORY MANAGER REQUEST
TERR35 ERROR 35 FL REQUEST BEYOND MFL (CM)
TERR36 ERROR 36 INCORRECT REDUCE FL
TERR37 ERROR 37 MEMORY REQUEST WITH DM REQUEST OUTST.
TERR38 ERROR 38 CDCS INVOKE FAILURE
TERR39 ERROR 39 DATA MANAGER USAGE NOT SELECTED
TERR40 ERROR 40 TAF TRANSACTION NAME UNKNOWN
TERP SPACE 4,15
** TERP - TASK FATAL ERROR PROCESSOR.
*
* THIS ROUTINE MAKES A JOURNAL FILE ENTRY TO FLAG THE TASK
* ERROR, PRODUCES A TASK DUMP IF NECESSARY, AND SCHEDULES
* TASK *MSABT* TO SEND AN ERROR MESSAGE TO THE ORIGINATING
* TERMINAL. IF MORE TRANSACTIONS ARE QUEUED TO BE EXECUTED
* BY THE TASK OR IF THE TASK IS *INITIAL TASK*, THE TASK
* CODE IS RELOADED.
*
* ENTRY (X1) = ERROR CODE.
* (STAT5) = ERROR COUNT.
TERP SX7 X1+ ERROR CODE
RJ RSP RESTORE SUBCP REGISTERS
SA4 STAT5 ERROR COUNT
SA2 B2+ERRC
SX6 B1+
MX3 -18
IX6 X6+X4
BX3 X3*X2 CLEAR OLD ERROR CODE
SA6 A4 BUMP ERROR COUNT
IX7 X7+X3
SA7 A2 SET ERROR CODE IN TASK CONTROL AREA
SX6 B0 DO NOT SEND *SECURE*
SX5 B2
SA6 B2+SECR
SX1 X7+ ERROR CODE
RJ CDD CONVERT TO DECIMAL DISLAY
SB2 X5
BX6 X4
SB5 PJRNL PRIMARY JOURNAL FILE
SA6 TERPM1 SET ERROR CODE IN JOURNAL MESSAGE
SX3 TERPML LENGTH OF MESSAGE
SX5 TERPM START OF FATAL ERROR MESSAGE
SA2 B2+CB2C
LX3 18
SB3 TERP1 RETURN ADDRESS
BX5 X5+X3 START AND LENGTH OF MESSAGE
SX0 X2 CONTEXT BLOCK ADDRESS
SB4 B1 TRANEX ORIGIN
EQ JRNL JOURNAL THE ERROR MESSAGE
TERP1 SA1 KDISB
ZR X1,TERP1.1 IF NO TASK HAS K-DISPLAY ACTIVE
MX6 42
SB5 X1+ C.B. ADDRESS
BX7 X7-X7
SX1 KFRM
SA2 B2+CB2C CURRENT C.B. WORD 2
SB4 X2+ C.B. ADDRESS
NE B4,B5,TERP1.1 IF ANOTHER TASK HAS *K-DISPLAY*
TERP1.0 SA2 KCTRL1
BX6 X6*X2
SA7 A1 CLEAR *KDISB* INTERLOCK
BX6 X6+X1 SWITCH K-DISPLAY TO TAF
SA6 A2
CONSOLE KCTRL1
MESSAGE ZWORD,2
TERP1.1 SA2 B2+CB2C GET C. B. ADDRESS
SA2 X2+CBCR GET ROLLOUT TABLE ADDRESS
MX4 6
SX0 X2 ROLLOUT TABLE ADDRESS
BX1 X4*X2
ZR X1,TERP3 IF NOT A CALLRTN TASK
SX7 B1 SET CALLRTN ABORT BIT
LX7 47
BX7 X7+X2
SA7 A2
TERP3 SA1 B2+ERRC CHECK FOR SPECIAL CASE ERRORS
SX2 X1-1
NZ X2,TERP4 IF NOT CEASE WITH ABORT
SA3 B2+CB1C
SX4 B1
LX4 -1-15
BX7 X4+X3 SET PRIOR ABORT BIT TO BYPASS ERROR TASK
SA7 A3
EQ TERP9 DONT PRODUCE TASK DUMP
* PROCESS CALLTSK/CALLRTN/CALLTRN ERRORS.
TERP4 SX2 X1-40
ZR X2,TERP7 IF CALLTRN
SB4 X1-5
SA1 B2+LRA1 CHECK FOR CALLTSK W/O CEASE OR NEWTRAN
ZR B4,TERP5 IF TASK LIST TOO LONG
NE B4,B1,TERP8 IF NOT AN INCORRECT SCHEDULING REQUEST
TERP5 LX1 59-18
PL X1,TERP7 IF NOT NEWTRAN OR CALLTASK WITHOUT CEASE
SA2 B2+CB2C GET COMMUNICATION BLOCK ADDRESS
RJ RLC RELEASE COMMUNICATION BLOCK
TERP6 SA1 B2+SCRC
SA2 A1+B1 RESTORE OLD COMMUNICATION BLOCK HEADER
BX6 X1
LX7 X2
SA6 B2+CB1C
SA7 A6+B1
* DO NOT PRODUCE A DUMP FOR SYSTEM TASKS.
TERP7 MX7 -SCNMN GET TASK DIRECTORY INDEX
SA1 B7+SCNMW
LX1 SCNMN-SCNMS-1
BX7 -X7*X1
TA2 X7-1,VTLD TASK NAME
MX7 42
SA1 TERPA LIST OF TASKS NOT TO DUMP
TERP7.1 ZR X1,TERP8 IF END OF LIST
BX2 X7*X2
IX1 X1-X2
ZR X1,TERP9 IF NO DUMP WANTED
SA1 A1+B1
EQ TERP7.1 NEXT TASK IN LIST
TERP8 SA2 TDSP CHECK INTERLOCK
SX7 TERP8 RECALL RETURN ADDRESS
NZ X2,TRCL2 IF LAST DSP REQUEST NOT COMPLETED
SA1 B2+CB2C GET CB ADDRESS
MX7 0
SX0 X1 (X0) = COM. BLK. ADDRESS
SB3 X1+3 DUMP CONTROL WORDS
SA7 DTSG USE *P* AS CALLED FROM ADDRESS
SA1 LOVC TASK DUMP PROCESSING OVERLAY NAME
RJ LOVL LOAD/EXECUTE DUMP TASK OVERLAY
* TEST IF *MSABT* HAS BEEN RUN ONCE AGAINST THIS TASK.
TERP9 SA1 B2+ERRC ERROR CODE
BX6 X6-X6
SX7 X1
SA6 B2+NUAPL+TIMD-1 TRANEX ORIGIN INDICATOR FOR MSABT
SA7 B2+NUAPL+TIMD ERROR CODE FOR MSABT
SA4 B2+CB1C
MX3 1
LX3 -15
BX7 X4+X3
SX6 B0
LX4 15
SA7 A4 SET INTO C.B. HEADER
SA1 A4+B1
SA2 ABAS ABORT TASK
SX0 X1 C.B. ADDRESS FOR TRANSACTION
NG X4,TERP10 IF NOT TO SCHEDULE MSABT AGAIN
SA3 X0+CBSBW CHECK *BTRAN* TRANSACTION
LX3 59-CBSBS
NG X3,TERP10 IF *BTRAN* TRANSACTION
SA3 B2+DBNC D.B. OF THIS TASK
SB4 B0 DETECT *OFF* STATUS
SB5 B0 TASK SEARCH
RJ LTT LOCATE TASK
TERP10 LX6 -12
SA5 X0+CBRTW CHECK IF RECOVERABLE TRANSACTION
LX5 59-CBRTS
SA6 X0+2 SCHEDULE ERROR TASK NEXT
SA6 B2+RTSC
PL X5,TERP11 IF NOT RECOVERABLE
SX5 CSTA TASK ABORT *STEP*
SX3 TERP11 RETURN ADDRESS
RJ WTS WRITE TERMINATION *STEP*
TERP11 TX1 B7+CPAL,-VCPA RELATIVE SUBCP NUMBER
SA2 RCR
AX1 SCPAL
MX3 1
SB4 X1
LX3 -12
AX1 X3,B4
BX7 -X1*X2 CLEAR RECALL BIT
SA7 A2+
* CHECK FOR TOTAL INTERLOCK FLAG SET.
TERP12 SA2 TOTLCK INTERLOCK FLAG
ZR X2,TERP13 IF TOTAL INTERLOCK FLAG NOT SET
SA1 B2+CB1C TASK SEQUENCE NUMBER
MX3 24
LX1 18
BX2 X3*X2 SEQUENCE NUMBER OF SETTING TASK
BX1 X3*X1 ABORTING TASK SEQUENCE NUMBER
IX6 X1-X2
NZ X6,TERP13 IF ABORTING TASK DID NOT SET INTERLOCK
SA6 TOTLCK CLEAR TOTAL INTERLOCK FLAG
* RELOAD TASK IF IT IS TO BE USED AGAIN
TERP13 SA1 B7+B1 SUB CONTROL POINT CONTROL WORD TWO
TB4 B7,-VCPA
LX1 -36
ZR B4,TERP21 IF ITASK BOMBED
BX6 X1
MX7 -SCNCN
BX7 -X7*X6
SB5 X7+ NUMBER OF C.B.-S WAITING FOR TASK
LX1 36+2
NE B5,B1,TERP14
NG X1,TERP14 IF CM RESIDENT TASK
SX2 B1+
BX6 -X2*X1 CLEAR REUSABLE CODE BIT
SB4 B0
SX5 B2+CB1C
LX6 -2
SA6 A1
EQ SCT1 DO A CEASE ON THE TASK
* WRITE COMMUNICATION BLOCK.
TERP14 SX7 TERP13
SA3 LTLRE
NZ X3,TRCL2 IF TASK LOAD REQUEST STACK IS FULL
LX1 -2
SA4 X1 TASK CONTROL WORD
SX1 CMBL-CMBHL-CMBRL
SX2 B2+NUAPL+SUAC+CMBRL
SA5 B7 SUBCP TABLE WORD 1
LX5 59-57
PL X5,TERP14.1 IF NO USER SPECIFIED BUFFER
SA5 B7+B1
LX5 17-35
SX2 X5
TERP14.1 SA5 B2+CB1C COMMUNICATIONS BLOCK HEADER WORD
SX3 X4+CMBHL+CMBRL
SB5 A1
BX7 X5
SA7 X4
RJ MVE= WRITE COMMUNICATON BLOCK
SA1 B5+B1 SUB CP CONTROL WORD 3
MX2 12
MX6 30
SX4 B7
BX2 X2*X1 TASK ID
LX2 12
TA2 X2,VTLD GET TASK DISK ADDRESS
SA1 B7+
BX5 X6*X2
LX1 -18
SX1 X1+NUAPL TASK FL
LX5 30 POSITION TASK DISK INDEX
LX1 18
BX7 X1+X4
SX6 A2 ADDRESS OF TLD ENTRY
SB6 VTFL SYSTEM TASK LIBRARY NAME
TA3 0,VEDT
SA1 A3+4
SA2 A2+B1 WORD 3 OF TLD
SX3 X3 LINK TO NEXT EDT
LX1 -18
LX2 3 POSITION TO EXTENDED MEMORY RESIDENT BIT
TERP15 SX4 X1
ZR X4,TERP16 IF NO DIRECTORY FOR DATA BASE
IX4 X4-X6
PL X4,TERP17 IF ENTRY IN PREVIOUS TLD
SB6 X1-1
TERP16 ZR X3,TERP17 IF AT END OF EDTS
SA1 X3+4
SA3 X3
LX1 -18
SX3 X3+ NEXT EDT
EQ TERP15 LOOP
TERP17 SX1 B6
SX0 A3 ADDRESS OF EDT
LX1 30 ADDRESS OF NAME OF TASK LIBRARY FILE
BX5 X5+X1
LX0 36
SB4 TERP18
BX7 X0+X7
PL X2,SCHD11 IF NOT EXTENDED MEMORY RESIDENT LOAD
MX0 1 INDICATE TO SCHEDULER ERROR CALL
BX7 X0+X7
JP SCHD31 RELOAD EXTENDED MEMORY RESIDENT TASK
* SET RECALL BIT AND RECALL RETURN ADDRESS, THEN DROP THE CPU
* FOR THE TASK. WHEN THE LOAD IS COMPLETE, CONTINUE NORMAL TASK
* PROCESSING.
TERP18 SA2 B7+B1 SUB CP CONTROL WORD 2
SX1 B1
SX7 TERP19 *RECALL* RETURN ADDRESS
LX1 59-3 TASK RECALL BIT
BX6 X1+X2
SA7 B2+RCL
SA6 A2
RJ DCPT DROP CPU FOR TASK
EQ TSSC TIME SLICE SUBCP
* TASK HAS BEEN RELOADED - CONTINUE PROCESSING
TERP19 SA1 B7+B1
SX3 B2+NUAPL+SUAC
SA2 B7 SUBCP TABLE WORD 1
LX2 59-57
PL X2,TERP19.1 IF NO USER SPECIFIED BUFFER
SA2 X1
LX2 17-35
SX3 X2 (X3) = FWA OF USER SPECIFIED BUFFER
TERP19.1 SA2 X1 RELOAD COMMUNICATIONS BLOCK FOR TASK
SX1 CMBL-CMBHL
SA5 X2 C.B. HEADER WORD 1
BX7 X5
SX2 X2+CMBHL
SA7 B2+CB1C RESTORE HEADER WORD
RJ MVE= READ C.B.
SX7 B1+
SA1 STAT1 NUMBER OF TASKS WHICH HAVE BEEN RELOADED
IX7 X7+X1
SA7 A1+
TERP20 SX5 B2+CB1C
SB4 0
EQ SCT1 EXECUTE A CEASE ON THE C.B. THAT CAUSED
THE FATAL ERROR.
* RELOAD *INITIAL TASK*.
TERP21 SA1 B2+ERRC CHECK ERROR CODE
SX7 X1-6
ZR X7,TERP20 IF NO RELOAD FOR NONEXISTANT TASK
SA1 B7+B1
SA4 X1 TASK CONTROL WORD
SX1 CMBL-CMBHL-CMBRL
SX2 B2+NUAPL+SUAC+CMBRL
SX3 X4+CMBHL+CMBRL
SB5 A1+
RJ MVE= WRITE COMMUNICATON BLOCK
SA1 B5+B1 SUB CP CONTROL WORD 3
MX2 12
BX2 X2*X1 TASK INDEX
LX2 12
TA3 X2,VTLD
MX7 30
BX7 X7*X3 TASK DISK INDEX
SA5 B7 SUB CP CONTROL WORD 1
LX7 30
RECALL TL WAIT FOR TASK LIBRARY TO GO NON BUSY
* SET FET FOR RELOAD OF *INITIAL TASK*.
SA1 VTFL
SA4 TL+1 FIRST
BX6 X1 SYSTEM TASK LIBRARY NAME
SA6 A4-B1
SX6 X5+77B-16B FWA FOR TASK LOAD
MX2 -18
SA7 TL+6 RANDOM TASK INDEX
BX7 X2*X4
LX5 -18
BX7 X7+X6
SA6 A4+B1 IN
SA7 A4 FIRST
SA6 A6+B1 OUT
SA4 A6+B1 LIMIT
SX1 X5+16B-77B TASK FL (MINUS LOAD BIAS)
BX7 X2*X4
IX1 X1+X6
BX7 X7+X1 LIMIT
SA7 A4
READSKP TL,,R RELOAD INITIAL TASK
SX7 B1
SA1 STAT2
IX7 X7+X1 NUMBER OF TIMES INITIAL TASK RELOADED
SA7 A1
EQ TERP19 RESUME NORMAL PROCESSING
TERPA BSS 0 LIST OF TASKS NOT TO DUMP
VFD 42/0LCTASK,18/0
VFD 42/0LITASK,18/0
VFD 42/0LRTASK,18/0
VFD 42/0LXTASK,18/0
DATA 0 END OF LIST
TERPB VFD 60/0LMSABT NAME OF ERROR PROCESSING TASK
TERPM CON 10HFATAL ERRO
CON 10HR
TERPM1 BSSZ 2
TERPML EQU *-TERPM
CTEXT TITLE COMMON DECKS.
*CALL COMCARG
*CALL COMCCDD
*CALL COMCCOD
*CALL COMCDXB
*CALL COMCECS
*CALL COMCLFM
*CALL COMCOVL
** *MODIFIED* MVE *** WARNING ***
*
* USES B6 INSTEAD OF B7
CTEXT COMCMVE - MOVE BLOCK OF DATA.
MVE SPACE 4
IF -DEF,QUAL$,1
QUAL COMCMVE
BASE D
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
MVE SPACE 4
*** MVE - MOVE BLOCK OF DATA.
* G. R. MANSFIELD. 70/10/09.
* R. E. TATE. 73/11/04.
MVE SPACE 4
*** MVE MOVES A BLOCK OF DATA.
*
* NOTE- UPWARD MOVE MEANS TOWARD RA.
*
* ENTRY (X1) = WORD COUNT.
* (X2) = SOURCE ADDRESS.
* (X3) = DESTINATION ADDRESS.
* (B1) = 1
*
* USES X - 1, 2, 3, 4, 6, 7.
* B - 6.
* A - 2, 4, 6, 7.
* COMPARE MOVE UNIT BUFFER AREA/PRESET.
* MVEB IS READ UP AND THEN RETURN JUMPED TO IN ORDER TO VOID
* THE INSTRUCTION STACK. LATER MVEB IS USED FOR THE CMU
* DESCRIPTOR WORD.
MVE11 BSS 0 ENTRY FOR PRESET
MVEB IX4 X2-X3 CHECK DIRECTION OF MOVE (NO CMU)
MX7 59
JP MVE13
MVEC BX7 X2 CHECK IF CMU AVAILABLE (BUFFER AREA FWA)
SA2 CMUR
PL X2,MVE12 IF NO CMU
SA4 MVED
MVE12 BX6 X4
LX2 X7 RESTORE X2
SA6 MVEA
JP MVE1 RESTART LOOP
MVED IX4 X2-X3 CHECK DIRECTION OF MOVE (CMU)
BX7 X1 SET WORD COUNT
BX1 X0 SAVE X0
LX2 30
* DETERMINE MOVE DIRECTION.
MVE13 BX6 -X7*X1
IX1 X1-X6 REDUCE WORD COUNT TO EVEN NUMBER
PL X4,MVE15 IF MOVE UP
* BEGIN DOWNWARD MOVE.
ZR X6,MVE14 IF WORD COUNT EVEN
SB6 X1
SA4 X2+B6 MOVE INITIAL WORD
BX6 X4
SA6 X3+B6
MVE14 IX2 X2+X1
IX3 X3+X1
SB6 -2
EQ MVE16
* BEGIN UPWARD MOVE.
MVE15 SB6 -2 UPWARD MOVE
SX2 X2+B6
SX3 X3+B6
SB6 B1+B1
ZR X6,MVE16 IF WORD COUNT EVEN
SA4 X2+B6 MOVE INITIAL WORD
IX2 X2+X6
BX7 X4
SA7 X3+B6
IX3 X3+X6
* INITIALIZE MOVE LOOP.
MVE16 ZR X1,MVE= IF MOVE COMPLETE
SA2 X2+B6 MOVE FIRST 2 WORDS
SA4 A2+B1
BX6 X2
LX7 X4
SA6 X3+B6
SA7 A6+B1
SX3 B1+B1
IX1 X1-X3
ZR X1,MVE= IF MOVE COMPLETE
SA2 A2+B6 NEXT 2 WORDS
SA4 A4+B6
* MOVE LOOP.
MVE17 BX6 X2
SA2 A2+B6
LX7 X4
SA4 A4+B6
IX1 X1-X3
NO
SA6 A6+B6
SA7 A7+B6
NZ X1,MVE17
MVEE BSS 0 END OF CMU BUFFER AREA
MVELL EQU MVEE-MVEC NUMBER OF WORDS IN BUFFER
MVE= PS ENTRY/EXIT
MVEA BSS 0
MVE1 SA4 MVEB INITIALIZE FOR CMU
RJ MVE11
* IX4 X2-X3 CHECK DIRECTION OF MOVE (NO CMU)
* MX7 59 (NO CMU)
* JP MVE13 (NO CMU)
*
* IX4 X2-X3 CHECK DIRECTION OF MOVE (CMU)
* BX7 X1 (CMU)
* BX1 X0 SAVE X0 (CMU)
* LX2 30 (CMU)
* MOVE DATA WITH CMU.
ZR X7,MVE= IF NO DATA TO MOVE
SX6 X7-819
BX0 X4
NG X4,MVE2 IF MOVE DOWNWARD
BX0 -X4
MVE2 IX0 X0+X7
BX6 X0*X6
PL X6,MVE3 IF BLOCK TOO LONG FOR 1 MOVE OR BLOCKS LAP
BX0 X7 SET UP FOR 1 MOVE
BX2 X2+X3
BX7 X7-X7 SET TO FORCE EXIT
MX4 -4
SB6 MVE9
JP MVE10
MVE3 SX6 MVEC SET INTERMEDIATE BUFFER ADDRESS
NG X4,MVE6 IF MOVE DOWNWARD
* MOVE UPWARD.
BX2 X2+X6
LX6 30
BX3 X3+X6
MVE4 BX0 X7
SX7 X7-MVELL DECREMENT WORD COUNT
MX4 -4
NG X7,MVE5 IF LAST BLOCK TO MOVE
SX0 MVELL
MVE5 SB6 *+1 SET TO RETURN HERE
JP MVE10
IM MVEB
SB6 X7
BX0 X1 RESTORE X0
LT B6,B1,MVE= IF MOVE COMPLETE
SX4 -MVELL UPDATE ADDRESSES
IX3 X3-X4
LX4 30
IX2 X2-X4
JP MVE4
* MOVE DOWNWARD.
MVE6 LX6 30 SET LAST WORD ADDRESSES OF DATA AREAS
BX6 X7+X6
IX3 X3+X6
LX6 30
IX2 X2+X6
MVE7 SX6 MVELL
SX0 X7
IX7 X7-X6
MX4 -4
NG X7,MVE8 IF LAST BLOCK TO MOVE
BX0 X6
MVE8 BX6 X0 ADJUST DESTINATION AND SOURCE ADDRESSES
IX3 X3-X0
LX6 30
IX2 X2-X6
SB6 *+1 SET TO RETURN HERE
JP MVE10
IM MVEB MOVE DATA TO DESTINATION BUFFER
MVE9 SB6 X7
BX0 X1 RESTORE X0
LT B6,B1,MVE= IF MOVE COMPLETE
JP MVE7 LOOP
* SETUP MOVE WORD.
* (X0) = NUMBER OF WORDS TO MOVE.
* (X4) = 56 BIT MASK.
MVE10 LX6 X0,B1 10 * WORD COUNT = CHARACTER COUNT
LX0 3
IX6 X0+X6
BX0 -X4*X6 EXTRACT LOWER PORTION
BX4 X4*X6 EXTRACT UPPER PORTION
LX0 26
LX4 48-4
BX0 X4+X0
BX6 X2+X0
SA6 MVEB STORE FIRST DESCRIPTOR WORD
BX6 X3+X0
IM MVEB MOVE DATA TO INTERMEDIATE BUFFER
SA6 A6 STORE SECOND DESCRIPTOR WORD
JP B6
SPACE 4
BASE *
QUAL$ IF -DEF,QUAL$
QUAL *
MVE= EQU /COMCMVE/MVE=
QUAL$ ENDIF
ENDX
*CALL COMCPFM
*CALL COMCQFM
*CALL COMCRDW
*CALL COMCSFN
*CALL COMCSNM
*CALL COMCUPC
*CALL COMCWTW
*CALL COMCZTB
*CALL COMKFIO
*CALL COMKZFN
ENDT BSS 0 END OF RUN TIME CODE
PRE TITLE "PROD" PRESET.
** PRE - *TAF* PRESET.
*
* THIS ROUTINE MODIFIES THE RETURN JUMP INSTRUCTIONS FOR
* *TOTAL* AND *CRM* IF THEY ARE TO BE LOADED. IT ALSO SETS
* THE VARIABLE ADDRESSES IN INITIALIZATION DEPENDENT
* INSTRUCTIONS AND VERIFIES THAT ALL SYSTEM TASKS ARE PRESENT.
PRE BSS 0 ENTRY
SB1 1
SX3 PREH FWA OF Y-COORDINATE TABLE
RJ PRK PRESET K-DISPLAY BUFFER
* INITIALIZE *RJ* FOR CALLING *CRM*, IF LOADED.
SA2 VAAM AAM INITIALIZATION FLAG
ZR X2,PRE1 IF *AAMI* NOT LOADED
SA3 PREA SETUP CALL TO INITIALIZATION
SB3 AAMA FWA OF MAXIMUM TRANSACTIONS USING *CRM*
BX6 X2+X3
SA6 A3
SA6 PREB CALL *IAM*, IF RECOVERY
RJ * BREAK INSTRUCTION STACK
LX2 30
SB5 B1 SET UP ENTRY POINT CALL TO *IAM*
SA1 TSSCB SETUP CALL TO *AMI*
BX6 X2+X1
SA6 A1
SB2 PREC FWA OF EXTERNAL ROUTINES
PREA RJ 0 MODIFIED BY *PRE*
* RJ =XIAM INITIALIZE EXTERNALS
RJ SETA LINK *AAMI* EXTERNAL ROUTINES
* INITIALIZE *RJ* FOR CALLING *TOTAL*, IF LOADED.
PRE1 SA2 VTOT TOTAL INITIALIZATION FLAG
ZR X2,PRE2 IF TOTAL DATA MANAGER NOT LOADED
MX0 1
LX2 30 POSITION ADDRESS OF TOTAL ENTRY POINT
LX0 -5
BX6 X0+X2 RJ INSTRUCTION
SA6 TSSCA MODIFY CALL FOR TOTAL
PRE2 SB6 TINSTL-1 SET ADDRESSES OF VARIABLE TABLE REFERENCES
SB4 TINST
RJ SETA
PRE3 RJ PVV SET VARIABLE VALUES
SA2 TLIST INSURE EXISTENCE OF SYSTEM TASKS
PRE3.1 ZR X2,PRE3.5 IF NO MORE TASKS IN LIST
BX0 X2
SB4 B0 DETECT *OFF* STATUS
SB5 B0+ TASK SEARCH
BX3 X3-X3 SEARCH SYSTEM TASK LIBRARY
BX6 X6-X6
RJ LTT LOCATE TASK
ZR X6,PRE3.4 IF TASK NOT FOUND
SA4 ITAS
IX4 X4-X2
NZ X4,PRE3.2 IF NOT *ITASK*
SX7 A1 FWA OF TLD ENTRY
SA6 LITA *ITASK* BIAS
SA7 LITC
PRE3.2 SA4 OTAS
IX4 X4-X2
NZ X4,PRE3.3 IF NOT *OFFTASK*
SA6 SCTB *OFFTASK* BIAS
PRE3.3 SA2 A2+B1
EQ PRE3.1 CHECK NEXT TASK IN LIST
PRE3.4 SX6 B1
SA1 A2 GET TASK NAME
SA6 PREG
SB5 -PREF FWA OF MESSAGE
SB2 1RX REPLACEMENT CHARACTER
SB3 DAYB SET ALTERNATE ASSEMBLY AREA
RJ SNM SET NAME IN MESSAGE
MESSAGE DAYB SYSTEM TASK LIBRARY MISSING TASK, XXXXXXX.
SA2 A2+B1
EQ PRE3.1 CHECK NEXT TASK IN LIST
PRE3.5 SA4 PREG ERROR FLAG
ZR X4,PRE3.6 IF ALL SYSTEM TASKS PRESENT
ABORT
PRE3.6 SB2 B1 SET BIT IN TLD ONLY
RJ LIT SET CORE RESIDENT BIT IN TLD
RJ PBI LOOK FOR POTENTIALLY BLOCKED TASKS
SB2 B0 SET FOR NORMAL CALL
RJ LIT LOAD INITIAL TASK
RJ LCT LOAD CORE RESIDENT TASKS
RJ LEC LOAD EXTENDED MEMORY RESIDENT TASKS
RJ IJF INITIALIZE JOURNAL FILES
REWIND RO,R REWIND ROLLOUT FILE
WRITEW X2,TMDC,ROLBL WRITE ONE BLOCK TO ROLLOUT FILE
WRITER X2,R
SA1 X2+6 GET RANDOM ADDRESS
MX6 30
BX6 X6*X1
LX6 30
SA6 X2+7 CURRENT EOI
MX7 1
SB2 B0 INITIALIZE ACTIVE TASK SYSTEM AREA FWA
BX6 X6-X6 INITIALIZE ACTIVE TASK POINTERS
SB7 B0+ INITIALIZE ACTIVE TASK SUBCP FWA
SA6 SREG
TA7 0,VRLAT
TX1 0,VREC
AX1 24
SX1 X1 USER RECOVERY
ZR X1,PRE4 IF NOT A RECOVERY
RJ CAS CHECK FOR ASSIGNED EQUIPMENT
SX5 CIREC RECOVERY CODE
SA4 ITAS INITIAL TASKS NAME
SB3 B0 NO BUFFER INPUT
SX7 B0 SCHEDULE ONLY FROM SYSTEM LIBRARY
RJ TRN GENERATE A SYSTEM ORIGIN TRANSACTION
TB7 0,VCPA
TB2 0,VFSCP
PRE4 GETMC PREE GET MACHINE CHARACTERISTICS
SA1 PREE
MX2 -2 MODEL 176 MASK
LX1 1-19
BX2 -X2*X1 EXTRACT MACHINE MODEL
ZR X2,PRE4.1 IF NOT MODEL 176
SA1 .EM GET DEFAULT ERROR EXIT MODE
MX2 59
LX2 30-0
BX6 X2*X1 DESELECT UNDERFLOW
SA6 .EM
PRE4.1 SA1 XJPR CHECK CEJ/MEJ STATUS
SA2 .CEJ
MX7 1
BX7 X7*X1 PRESENT/NOT PRESENT BIT
MX6 -1
LX7 1
BX6 X6*X2
BX6 X6+X7 INSTRUCTION SETTING CEJ/MEJ FOR SUB CPS
SA6 .CEJ
SA1 CMUR CHECK CMU STATUS
SA2 .CMU
MX7 1
BX7 X7*X1 PRESENT/NOT PRESENT BIT
MX6 -1
LX7 1
BX6 X6*X2
BX6 X6+X7 INSTRUCTION SETTING CMU FOR SUB CPS
SA6 .CMU
PDATE PDATE PACKED DATE/TIME
RTIME PTIME REAL TIME CLOCK AT START OF PROGRAM
TIME CTIME
MX2 -12
SA4 CTIME ACCUMULATED CPU TIME
BX5 -X2*X4 MSECS ACCUMULATED
LX4 60-12
BX3 -X2*X4 SECS ACCUMULATED
SX0 1000
IX2 X0*X3 MULTIPLY BY 1000
IX6 X2+X5 TOTAL MSECS ACCUMULATED
SA6 CTIME
SX7 B0
SA7 B0 CLEAR RA
SA1 PTIME
BX7 X1
SA7 RDCBD
MX7 42
SX1 DORC-BCOT
NZ X1,PRE5 IF NOT DEFAULT BATCH OUTPUT QUEUE
SX2 DQDS OUTPUT QUEUE DESTINATION
SA1 DTSE+1
LX2 18 SET PRINTER IDENTIFICATION
BX7 -X7*X1
BX7 X7+X2
SA7 A1
PRE5 CONSOLE KCTRL1,R SET MAIN DISPLAY CONTROL WORD
MESSAGE ZWORD,2 CLEAR MESSAGE LINE 2
MESSAGE VERM SEND VERSION NUMBER TO DAYFILE
SX7 B1+ SET NETWORKS DOWN
SA7 VNON
SA1 VREC
MX3 1
BX1 X3*X1 *CRM* RECOVERY BIT
ZR X1,PRE5.1 IF NOT A RECOVERY SITUATION
SB5 7 ROLL BACK D.B. FUNCTION
PREB RJ 0 SET UP BY *PRE*
* RJ =XIAM *AAMI* CALL IF RECOVERY
ZR X6,PRE5.1 IF CRM DATA BASE RECOVERED
ABORT
* SCHEDULE *CRM* DATA BASE RECOVERY TASK. IF TASK NOT
* SCHEDULED ABORT *TAF*.
PRE5.1 SA4 VAAM
ZR X4,PRE5.2 IF TAF/CRM DATA MANAGER NOT LOADED
SA1 VREC ADD CRM RECOVERY FLAG
MX7 1
BX7 X7+X1
SA7 A1
PRE5.2 SB3 B0 NO BUFFER INPUT
IFEQ IPTAR,1 IF AUTOMATIC RECOVERY INSTALLED
SX7 B0 SCHEDULE ONLY FROM SYSTEM LIBRARY
SA4 CTAS SCHEDULE *CTASK*
SX5 TYRM TRANSACTION TYPE IS RECORD MANAGER
RJ TRN GENERATE SYSTEM TRANSACTION
ZR X0,PRE6 IF *CTASK* NOT SCHEDULED
SA1 VREC GET RECOVERY FLAG
MX3 59
LX3 24-0
SA2 X0+CBTLW GET BIAS OF *CTASK*
BX7 X2
SA7 SCTC SAVE *CTASK* BIAS
BX6 X3*X1
SA6 X0+CMBHL+CMBRL+1 STORE IN WORD TWO OF MESSAGE AREA
ELSE IF AUTOMATIC RECOVERY NOT INSTALLED
SX7 B1 START INPUT FOR TERMINAL JOBS
SA7 STIN
ENDIF
REPRIEVE EXIA,SET,77B
EQ TMDC BEGIN PROCESSING
PRE6 MESSAGE PRED * NO C.B. AVAILABLE TO SCHEDULE CTASK.*
ABORT
* ENTRY POINTS FOR ROUTINES USED BY *AAMI*.
PREC VFD 42/0,18/MVE=
VFD 42/0,18/GRA
VFD 42/0,18/TCM
VFD 60/0
PRED DATA C* NO C.B. AVAILABLE TO SCHEDULE CTASK.*
PREE BSS 1 MACHINE CHARACTERISTICS
PREF DATA C* SYSTEM TASK LIBRARY MISSING TASK, XXXXXXX.*
PREG BSSZ 1 ERROR FLAG
* Y-COORDINATE TABLE.
PREH KDL *
SPACE 4,10
PRK HERE REMOTE BLOCK FROM *COMCDCP*
SPACE 4,10
* COMMON DECKS.
*CALL COMCCVL
LIST X
*CALL COMKDPB
LIST -X
TITLE PRESET ROUTINES.
CAS SPACE 4,15
** CAS - CHECK FOR ASSIGNED EQUIPMENT.
*
* IF ONE OR MORE TAPE UNITS HAVE BEEN ASSIGNED VIA THE
* *K* DISPLAY AS A POOL UNIT FOR JOURNAL FILES, RESET THE
* ASSIGNED EQUIPMENT WORD.
*
* EXIT (ASEQ) = 22/0,18/TA,18/TB.
* TA = INFORMATION IF ONE TAPE UNIT IS ASSIGNED.
* TB = INFORMATION IF TWO TAPE UNITS ARE ASSIGNED.
*
* USES A - 1, 6.
* X - 1, 4, 6.
*
* MACROS REWIND.
CAS SUBR ENTRY/EXIT
REWIND SCR,R SCRATCH FILE NO. 1
SA1 X2+4
BX4 X4-X4
MX6 12
BX6 X6*X1
ZR X6,CAS1 IF FILE NOT PRESENT
SX4 X2
CAS1 REWIND SCR1,R CHECK SCRATCH FILE NO. 2
SA1 X2+4
MX6 12
BX6 X6*X1
ZR X6,CAS2 IF FILE NOT PRESENT
LX4 18
BX4 X4+X2
CAS2 BX6 X4
SA6 ASEQ ASSIGNED EQUIPMENT WORD
EQ CASX RETURN
IJF SPACE 4,15
** IJF - INITIALIZE JOURNAL FILES.
*
* POSITION EACH JOURNAL FILE TO THE END OF INFORMATION
* AND WRITE A LABEL CONTAINING THE CURRENT DATE.
*
* ENTRY *JOUR0*, JOURNAL FILE ZERO.
* *XXJORN*, DATA BASE JOURNAL FILES, IF THEY EXIST.
*
* USES A - 0, 1, 4, 5, 6, 7.
* X - 0, 1, 2, 4, 5, 6, 7.
* B - 4.
*
* CALLS PFE.
*
* MACROS PDATE, WRITEF, WRITER, WRITEW.
IJF SUBR ENTRY/EXIT
PDATE IJFC SET PACKED DATE FOR JOURNAL LABEL
TA5 0,VEDT
LX5 -18
SX0 X5 EDT COUNT
SA0 JOUR0 JOURNAL FILE ZERO
SX5 1
EQ IJF2 INITIALIZE JOURNAL FILE ZERO
IJF1 ZR X0,IJFX IF NO MORE JOURNAL FILES, RETURN
SA5 A5
SA4 X5 NEXT EDT
SA1 A5+1 EDT HEADER WORD WITH JOURNAL FILE INFO
MX7 6
BX7 X7*X1 JOURNAL FILE COUNT FOR DATA BASE
LX1 -18
SX0 X0-1 DECREMENT EDT COUNT
SA0 X1 ADDRESS OF FIRST JOURNAL FET
LX7 6
SA5 A4+
SX5 X7 JOURNAL COUNT FOR THIS EDT
IJF2 ZR X5,IJF1 NO MORE JOURNAL FILES FOR THIS EDT
SA1 A0
BX6 X1
MX2 42
BX7 X2*X1
SA6 JF
SA7 IJFD
SB4 A6+
RJ PFE POSITION TO EOI
ZR X6,IJF3 FILE TERMINATED BY EOF
WRITEF JF,R WRITE A FILE MARK
* WRITE A LABEL TO JOURNAL FILE
IJF3 WRITEW JF,IJFB,IJFBL WRITE LABEL RECORD TO FILE
WRITER JF,R
SX5 X5-1 DECREMENT JOURNAL FILE COUNT
SA0 A0+JFETL BUMP FET POINTER FOR NEXT JOURNAL FILE
EQ IJF2
JF BSS 0
IJFA FILEB OBUF,OBUFL JOURNAL FILE INITIALIZATION FET
IJFB DIS ,/*TRANEX*/
IJFC BSS 1 FOR PACKED DATE
IJFD BSS 1 JOURNAL FILE NAME
IJFBL EQU *-IJFB LENGTH OF LABEL RECORED FOR JOURNAL FILE
PFE SPACE 4,15
** PFE POSITION FILE TO END OF INFORMATION.
*
* ENTRY (B4) = FWA OF FET.
*
* EXIT (X6) .EQ. ZERO IF EOF TERMINATES FILE.
* (X6) .GT. ZERO IF EOI TERMINATES FILE.
* (X6) .LT. ZERO IF EOR TERMINATES FILE.
*
* USES A - 1, 2, 6.
* X - 1, 2, 6.
*
* MACROS BKSP, READSKP, SKIPEI.
PFE SUBR ENTRY/EXIT
SKIPEI B4+ SKIP TO EOI
BKSP X2
READSKP X2,,R POSITION TO END OF DATA
SA1 B4
SX6 1775B
BX6 X6*X1 *CIO* STATUS
SX4 X6-31B
SA1 B4+B1 RESET FET POINTERS
MX6 -18
BX6 -X6*X1
SA6 A1+B1 IN = FIRST
SA6 A6+B1 OUT = FIRST
SKIPEI X2 POSITION TO END OF DATA
SX6 X4
EQ PFEX RETURN
LEC SPACE 4,15
** LEC - LOAD ECS RESIDENT TASKS INTO EXTENDED MEMORY.
*
* LOAD ECS RESIDENT TASKS FROM MASS STORAGE INTO ECS.
* INTERPRATIVE ECS MODE IS USED TO TRANSFER ECS BLOCKS TO
* STORAGE.
*
* USES X - ALL.
* A - ALL.
* B - 2, 3, 4, 5, 7.
*
* CALLS CDD, SNM.
*
* MACROS ABORT, MESSAGE, READ, READW.
LEC SUBR ENTRY/EXIT
TA5 -1,VTLD FWA-1 OF TLD
SA1 VECSC CURRENT ECS ADDRESS
BX7 X5 TASK LIBRARY FILE NAME
BX0 X1
SA0 ESBUF BUFFER FWA
SA7 TL
LEC1 SA2 A5+B1 READ TASK NAME
SA5 A5+TLDLE WORD 3 OF THE DIRECTORY
LX5 59-56 POSITION TO EXTENDED MEMORY RESIDENT BIT
ZR X2,LEC10 IF END OF CURRENT DIRECTORY
PL X5,LEC1 IF TASK NOT EXTENDED MEMORY RESIDENT
LEC2 SA2 A5-B1 WORD 2 OF DIRECTORY
LX2 TLFLN-TLFLS-1 GET TASK FIELD LENGTH
MX1 -TLFLN
BX5 -X1*X2
SA2 VECS READ REMAINING ECS
LX5 6
IX3 X5+X0
IX4 X2-X3
PL X4,LEC3 IF SPACE REMAINING TO LOAD THIS TASK
* PROCESS TASK NOT LOADED INTO EXTENDED MEMORY.
SA2 A5
MX1 -1
LX1 56-0
BX6 X1*X2
SA6 A5 CLEAR EXTENDED MEMORY BIT
SX3 B1
SA2 LECB
IX6 X3+X2 INCREMENT TASKS-NOT-LOADED COUNT
SA6 A2+
EQ LEC1 CONTINUE PROCESSING DIRECTORY
* SET UP FET FOR READING TASK TO MEMORY.
LEC3 SA1 A5-2 TASK NAME
MX6 42
BX1 X6*X1
SB2 1R+ REPLACEMENT CHARACTER
SB3 DAYB ALTERNATE BUFFER
SB5 -LECH
RJ SNM SET NAME IN MESSAGE
MESSAGE DAYB,1 * LOADING EXTENDED MEMORY TASK - +++++++.*
SX7 EBUF
SA3 TL+1
MX1 42
BX2 X1*X3
BX6 X2+X7
SA7 A3+B1 IN
SA6 A3 FIRST
SA7 A7+B1 OUT
SA2 A7+B1
BX1 X1*X2
SX6 X6+EBUFL
BX7 X1+X6
SA7 A2 LIMIT
SA2 A5-B1 WORD 2 OF DIRECTORY
LX2 30 DISK ADDRESS
MX1 -30
BX6 -X1*X2
SA6 A7+2 RANDOM ADDRESS
LX2 18 TASK FL
SX5 X2
AX5 6
LX5 6
READ TL INITIATE READ
* TRANSFER TASK TO EXTENDED MEMORY.
SX2 B2+
LX2 59-29
BX6 X2+X0
SA6 LECA SAVE (B2) AND (X0)
LEC4 SB7 ESBUFL
READW TL,A0,B7 READ PART OF TASK
SB4 ESBUFL
ZR X1,LEC5 IF NOT EOR/EOF/EOI
NG X1,LEC9 IF EOF/EOI - *LIBRARY STRUCTURE ERROR*
SB2 A0
SB4 B6-B2
ZR B4,LEC7 IF BUFFER EMPTY
LEC5 SX2 B4
IX5 X5-X2
NG X5,LEC9 IF RECORD GREATER THAN FL *LIBRARY ERROR*
* TRANSFER BLOCK TO EXTENDED MEMORY.
LEC6 WE B4
JP LEC8 IF EXTENDED MEMORY WRITE ERROR
SX2 B4
IX0 X2+X0 INCREMENT EXTENDED MEMORY ADDRESS
SX2 B4-ESBUFL
ZR X2,LEC4 IF NOT EOR
* TRANSFER COMPLETE.
LEC7 BX6 X0
SA6 VECSC CURRENT NEXT AVAILABLE ECS ADDRESS
SA2 A5-B1 WORD 2 OF DIRECTORY
MX1 -30
BX3 -X1*X2
SA4 LECA GET EXTENDED MEMORY FWA
LX4 59-29
SB2 X4 RESTORE (B2)
BX4 X1*X4
BX6 X4+X3
SA6 A2+ PUT EXTENDED MEMORY ADDRESS IN DIRECTORY
EQ LEC1 CONTINUE PROCESSING DIRECTORY
* ERROR PROCESSING.
LEC8 MESSAGE LECE,3,R * ECS WRITE PARITY ERROR ENCOUNTERED.*
SA2 LECA
LX2 59-29
SB2 X2 RESTORE (B2)
SX1 ESBUFL
IX0 X0+X1 INCREMENT PAST ERROR
EQ LEC2 RETRY LOAD
* ERROR IN READING TASK LIBRARY.
LEC9 MX0 42 READ TASK LIBRARY NAME
SA1 TL
BX1 X0*X1
SB2 1R+ REPLACEMENT CHARACTER
SB3 DAYB ALTERNATIVE BUFFER
SB5 -LECF
RJ SNM SET NAME IN MESSAGE
MESSAGE DAYB,3,R *ERROR IN READING TASK LIBRARY - +++++++.*
ABORT
* SEARCH FOR NEXT TLD.
LEC10 SA1 LECC
NZ X1,LEC11 IF NOT FIRST DATA BASE LIBRARY SEARCH
SA1 VEDT START OF EDTS
LX1 -24
SA3 X1
LX3 -18
SX7 X3 COUNT OF EDTS TO CHECK FOR *DBTASKL*
SA7 LECD
LEC11 SA2 LECD
ZR X2,LEC12 IF NO MORE TLD-S TO SEARCH
SA1 X1 NEXT EDT
SA3 A1+4 *DBTASKL* FWA,LWA IF PRESENT FOR THIS D.B.
SB2 X3 LWA OF TLD
LX3 -18
SX6 X2-1 DECREMENT COUNT OF EDTS
SA6 A2
ZR X3,LEC11 IF NO LIBRARY FOR THIS DATA BASE
BX7 X1
SB3 X3 FWA OF TLD
SA7 LECC
SA5 B3-B1
BX7 X5 TASK LIBRARY FILE NAME
SA7 TL
EQ LEC1 SEARCH *DBTASKL* FOR ECS RESIDENT TASKS
* END PROCESSING.
LEC12 SA1 LECB TASKS NOT LOADED COUNT
ZR X1,LECX IF ALL TASKS LOADED INTO EXTENDED MEMORY
RJ CDD CONVERT CONSTANT TO DECIMAL DISPLAY
BX1 X4
SB2 1R+ REPLACEMENT CHARACTER
SB3 DAYB ALTERNATIVE BUFFER
SB5 -LECG FWA OF FORMATTED TEXT
RJ SNM SET NAME IN MESSAGE
MESSAGE DAYB,3,R * +++ TASK(S) NOT LOADED INTO EXT. MEM.*
EQ LECX RETURN
LECA BSSZ 1
LECB BSSZ 1
LECC DATA 0 *DBTASKL*FWA,LWA POINTERS
LECD DATA 0 COUNT OF EDTS
LECE DATA C* EXTENDED MEMORY WRITE PARITY ERROR ENCOUNTERED.*
LECF DATA C* ERROR IN READING TASK LIBRARY - +++++++.*
LECG DATA C* +++ TASK(S) NOT LOADED INTO EXTENDED MEMORY.*
LECH DATA C* LOADING EXTENDED MEMORY TASK - +++++++.*
* THE FOLLOWING TEMPORARY BUFFER AREAS ARE USED BY *LEC*
* IN THE LOADING OF EXTENDED MEMORY RESIDENT TASKS. THE
* BUFFERS OVERLAY *TAF* PRESET CODE THAT HAS BEEN PREVIOUSLY
* EXECUTED AND THE FIXED LENGTH BUFFER AREAS.
EBUF BSS 0 SCRATCH BUFFER FOR EXTENDED MEMORY LOAD
EBUFL EQU 401B BUFFER LENGTH
ESBUF EQU EBUF+EBUFL WORKING STORAGE AREA FOR ECS LOAD
ESBUFL EQU 400B WORKING STORAGE BUFFER LENGTH
ERRNG LAST-ESBUF-ESBUFL IF BUFFER OVERFLOW THEN ERROR
LCT SPACE 4,10
** LCT - LOAD CM RESIDENT TASKS.
*
* THIS ROUTINE SCANS THE TASK LIBRARY DIRECTORIES AND LOADS
* ONE COPY OF EACH CM RESIDENT TASK AT A SUBCONTROL POINT.
* LOGICALLY DELETED TASKS ARE IGNORED.
*
* USES A - 1, 2, 3, 4, 5, 6, 7.
* X - ALL.
* B - 2, 3, 4, 6, 7.
*
* MACROS READSKP.
LCT SUBR ENTRY/EXIT
TB2 0,VTLD START OF TLD
TB3 -1,VTLD,LWA END OF TLD
TB7 0,VCPA FIRST SUB CONTROL POINT
SB6 TLDLE
LCT1 SA4 B2+2
ZR X4,LCT5 IF NO MORE TASKS TO CHECK IN THIS TLD
SB2 B2+B6
LX4 59-TLCMS
PL X4,LCT1 NOT A CM RESIDENT TASK
LX4 59-TLDLS-59+TLCMS
NG X4,LCT1 IF TASK LOGICALLY DELETED
SA2 A4-2 TASK NAME
SA3 ITAS INITIAL TASKS NAME
MX1 42
BX2 X1*X2
IX3 X2-X3
SA1 B7
ZR X3,LCT1 DONT LOAD INITIAL TASK AGAIN
TX6 A4-1,-VTLD TLD BIAS
SA2 A4-B1
SX5 X1 RA OF PREVIOUS SUB CP
LX1 -18
SX3 X1 FL OF PREVIOUS SUB CP
LX6 -12
IX0 X5+X3 START OF THIS SUB CP
SX5 B7+ LAST SUBCP
SX0 X0+NUAPL RA OF THIS SUB CP
SA1 A2-B1
LX5 18
SA3 AVAILCM
BX6 X6+X5 TASK ID PLUS LAST SUB CP
MX4 -TLFLN GET TASK FIELD LENGTH
LX2 TLFLN-TLFLS-1
BX4 -X4*X2
LX4 6
SX1 X1 ENTRY POINT
SX5 X4+NUAPL TOTAL TASK FIELD LENGTH
SB4 X4-77B+16B
IX7 X3-X5
TA5 0,VNACP FIRST FREE SUB CONTROL POINT
SA7 A3
LX4 18
SA3 X5 NEXT FREE SUB CONTROL POINT
SB7 X5
LX7 36
BX4 X7+X4 FREE CORE COUNT AND FIELD LENGTH
LX2 TLDAN-TLDAS-1-TLFLN+TLFLS+1
BX7 X3
LX1 18
SA7 A5 RESET FREE SUB CONTROL POINT LINK
SX3 3 CORE RESIDENT AND REUSEABLE INDICATORS
BX7 X4+X0
LX3 -3
SA7 X5 1ST WORD OF SUB CP TABLE
SX4 100 TIME SLICE LIMIT
BX7 X3+X1
LX4 36
SA7 X5+B1 2ND WORD OF SUB CP TABLE
BX6 X4+X6
MX3 30
SA6 A7+B1 3RD WORD OF SUB CP TABLE
SX1 X0+77B-16B START FOR TASK LOAD
BX6 -X3*X2 RANDOM DISK INDEX FOR TASK
SA2 TL+1 FIRST
MX4 -18
BX7 X4*X2
SA6 TL+6 RANDOM DISK INDEX
BX7 X7+X1
SA7 A2
SX6 X1+B4
SX7 X1
SA7 A7+B1 IN
SA7 A7+B1 OUT
SA6 A7+1 LIMIT
READSKP TL,,R LOAD TASK INTO CENTRAL MEMORY
SA1 B7-CPAL+2
SX7 B7
BX7 X1+X7 SET FORWARD LINK IN PREVIOUS SUB CP
SA2 LCTA
SA7 A1
BX6 X2
SA6 X0-NUAPL+CB1C SET TASK PRIORITY
SA1 B7-CPAL
MX3 24
BX7 -X3*X1 SET FREE CORE COUNT TO ZERO
SA7 A1+
EQ LCT1 CHECK FOR MORE CM RESIDENT TASKS
LCT5 SA1 LCTD
NZ X1,LCT6 IF NOT FIRST *DBTASKL* SEARCH
SA1 VEDT START OF EDTS
LX1 -24
SA3 X1
LX3 -18
SX7 X3 COUNT OF EDTS TO CHECK FOR *DBTASKL*
SA7 LCTE
LCT6 SA2 LCTE
ZR X2,LCTX IF LAST TLD SEARCHED, RETURN
SA1 X1 NEXT EDT
SA3 A1+4 *DBTASKL* FWA,LWA IF PRESENT FOR THIS D.B.
SB3 X3 LWA OF TLD
LX3 -18
SX6 X2-1 DECREMENT COUNT OF EDTS
SA6 A2
ZR X3,LCT6 IF NO *DBTASKL* FOR THIS DATA BASE
BX7 X1
SB2 X3 FWA OF TLD
SA7 LCTD
SA1 B2-B1
BX7 X1 TASK LIBRARY FILE NAME
SA7 TL
EQ LCT1 SEARCH THIS *DBTASKL* FOR CORE RES. TASKS
LCTA VFD 12/DCPPR+1,48/0 HIGHER THAN DEFAULT CPU PRIORITY
LCTB BSSZ 1 CORE RESIDENT TASK COUNT
LCTD DATA 0 *DBTASKL* FWA,LWA POINTERS
LCTE DATA 0 COUNT OF EDTS
LIT SPACE 4,15
** LIT - LOAD INITIAL TASK.
*
* LOAD THE INITIAL TASK FROM THE SYSTEM TASK LIBRARY TO
* SUBCONTROL POINT ONE. THE INITIAL TASK REMAINS AT
* THIS SUBCONTROL POINT AS LONG AS THE TRANSACTION
* EXECUTIVE IS RUNNING.
*
* ENTRY (B2) = 1, SET CORE RESIDENT BIT FOR INITIAL TASK.
* = 0, DO NOT SET CORE RESIDENT BIT.
* (LITA) = *ITASK* BIAS.
* (LITC) = FWA OF *ITASK* TLD ENTRY.
*
* USES A - 1, 2, 3, 5, 6, 7.
* X - ALL.
* B - 2.
*
* MACROS READSKP, RECALL.
LIT SUBR ENTRY/EXIT
RECALL TL
SA2 LITA SET *ITASK* BIAS
SA1 LITC GET FWA OF *ITASK* TLD ENTRY
BX6 X2
SA2 X1+B1 WORD TWO OF TLD ENTRY
SA1 X1+
ZR B2,LIT1 IF CORE RESIDENT BIT NOT TO BE SET
MX7 1 SET CORE RESIDENT BIT FOR INITIAL TASK
SA3 A2+B1
LX7 TLCMS-59
BX7 X7+X3
SA7 A3+
EQ LITX RETURN
LIT1 MX4 -TLFLN GET TASK FIELD LENGTH
TX0 NUAPL,VFSCP RA FOR INITIAL TASK
SA3 AVAILCM
LX2 TLFLN-TLFLS-1
BX4 -X4*X2
LX4 6
SX1 X1 ENTRY POINT
SX5 X4+NUAPL TOTAL TASK FIELD LENGTH
SB2 X4-77B+16B
IX7 X3-X5
TA5 0,VNACP FIRST FREE SUB CONTROL POINT
SA7 A3
LX4 18
SA3 X5 NEXT FREE SUB CONTROL POINT
LX7 36
BX4 X7+X4 FREE CORE COUNT AND FIELD LENGTH
LX2 TLDAN-TLDAS-1-TLFLN+TLFLS+1
BX7 X3
LX1 18
SA7 A5 RESET FREE SUB CONTROL POINT LINK
SX3 7 SYSTEM TASK AND CORE RESIDENT
BX7 X4+X0
LX3 -3
SA7 X5 1ST WORD OF SUB CP TABLE
SX4 100 TIME SLICE LIMIT
BX7 X3+X1
LX4 36
SA7 X5+B1 2ND WORD OF SUB CP TABLE
BX6 X4+X6
MX3 30
SA6 A7+B1 3RD WORD OF SUB CP TABLE
TX1 NUAPL+77B-16B,VFSCP START FOR LOAD
BX6 -X3*X2 RANDOM DISK INDEX FOR INITIAL TASK
SA2 TL+1 FIRST
MX4 -18
BX7 X4*X2
SA6 TL+6 RANDOM DISK INDEX
BX7 X7+X1
SA7 A2
SX6 X1+B2
SX7 X1
SA7 A7+B1 IN
SA7 A7+B1 OUT
SA6 A7+B1 LIMIT
READSKP TL,,R LOAD INITIAL TASK
SA1 LITB
BX7 X1
TA7 CB1C,VFSCP
EQ LITX RETURN
LITA BSS 1 *ITASK* BIAS FROM *PRE*
LITB VFD 12/DCPPR,48/0 DEFAULT TASK PRIORITY
LITC BSS 1 FWA OF *ITASK* ENTRY IN TLD FROM *PRE*
PBI SPACE 4,20
** PBI - POTENTIALLY BLOCKED TASKS DURING INITIALIZATION.
*
* THIS ROUTINE MAKES THE CALCULATIONS NECESSARY TO DETECT
* A POTENTIALLY BLOCKED TASK AT INITIALIZATION AND INSURES
* THAT ENOUGH SUBCONTROL POINTS EXIST BEFORE CM RESIDENT
* TASKS ARE LOADED.
*
* EXIT (AVAILCM) = AVAILABLE CENTRAL MEMORY.
* (CURFL) = CURRENT FIELD LENGTH.
* ABORT - IF INSUFFICIENT SUBCONTROL POINTS.
* ABORT - IF BLOCKED TASKS DETECTED.
*
* USES A - 1, 2, 3, 4, 5, 6, 7.
* X - ALL.
* B - 2, 3, 5.
*
* CALLS CDD, DBC, DBN, RTD, SNM.
*
* MACROS ABORT, MEMORY, MESSAGE.
PBI SUBR ENTRY/EXIT
BX6 X6-X6
SB5 B0 INITIALIZE TASK COUNTER
SA6 CMRFL INITIALIZE ACCUMULATOR
SA6 CMRPF INITIALIZE ACCUMULATOR
SA6 DPBK SET FOR INITIALIZATION
* FIRST PASS THROUGH TASK LIBRARY DIRECTORIES.
SB3 -1 READ ALL TLD ENTRIES
TA5 0,VTLD EXAMINE SYSTEM TLD
RJ RTD RETURN TASK LIBRARY DATA
TA4 0,VEDT GET ADDRESS OF FIRST TLD
BX0 X4 CHECK EDT COUNT
LX0 -18
SX0 X0+
ZR X0,PBI3 IF NO MORE EDT-S
PBI1 SX0 X4 SAVE LINK TO NEXT HEADER
SA5 A4+4 GET FWA OF TLD IN WORD 5
AX5 18
ZR X5,PBI2 IF LIBRARY NOT ATTACHED
SA5 X5 SET UP SEARCH ADDRESS
SB3 -B1 READ ALL TLD ENTRIES
RJ RTD RETURN TASK LIBRARY DATA
PBI2 ZR X0,PBI3 IF NO MORE DIRECTORIES
SA4 X0+ RESTORE LINK TO NEXT HEADER
EQ PBI1 PROCESS NEXT TLD
* CHECK IF ENOUGH SUBCONTROL POINTS EXIST.
PBI3 TB2 0,VNSCP GET NUMBER OF SUBCP INITIALIZED
SA3 RTDA CHECK EXISTENCE OF NON CM RESIDENT TASKS
ZR X3,PBI4 IF NO NON CM RESIDENT TASKS EXIST
SB6 B5+1
PBI4 LT B2,B6,PBI5 IF NOT ENOUGH SUBCONTROL POINTS
* SET CORE RESIDENT TASK COUNT.
SX2 B5+ GET CM RESIDENT TASK COUNT
TA1 -3,VTLD WORD 2 OF TLD HEADER
MX3 42
BX6 X3*X1
BX6 X6+X2 PUT CM RESIDENT TASK COUNT IN HEADER
SA6 A1
SA1 MFL MFL OF TAF
BX6 X1
SA6 DPBJ
* LOOK FOR POTENTIAL BLOCKS.
RJ DBC DETECT BLOCKS IN CM RESIDENT TASKS
RJ DBN DETECT BLOCKS IN NON CM RESIDENT TASKS
NE B7,PBI6 IF BLOCKED TASKS DETECTED
* COMPUTE THE *RFL* NEEDED FOR *TAF* TO LOAD CM RESIDENT TASKS.
SA1 CMRFL
TX2 0,VFSCP FWA OF ALLOCATABLE TAF FL
IX6 X1+X2 FL TO BE REQUESTED
LX6 30
SA6 PBIB
MEMORY CM,PBIB,R REQUEST FIELD LENGTH FOR TAF
SA2 PBIB
LX2 30
SX6 X2 FL REQUESTED
SA6 CURFL CURRENT FIELD LENGTH
SA1 CMRFL
BX7 X1
SA7 AVAILCM AVAILABLE CENTRAL MEMORY
EQ PBIX RETURN
PBI5 SX1 B6+
RJ CDD CONSTANT TO DECIMAL DISPLAY CODE
SB2 1RX SET REPLACEMENT CHARACTER
SB5 PBIA FWA OF MESSAGE
BX1 X6
LX1 48
RJ SNM SET NAME IN MESSAGE
MESSAGE PBIA INSUFFICIENT SUBCONTROL POINTS
ABORT
PBI6 MESSAGE PBIC * POTENTIALLY BLOCKED TASKS DETECTED.*
ABORT
PBIA DATA C* NEED AT LEAST XX SUBCONTROL POINTS.*
PBIB BSS 1 STATUS RETURN FOR MEMORY MACRO
PBIC DATA C* POTENTIALLY BLOCKED TASKS DETECTED.*
PVV SPACE 4,15
** PVV - SET INITIALIZATION DETERMINED VALUES.
*
* EXIT (DBAA) = *DBA* STATUS WORD.
* (DTSE+1) = USER NAME ADDED TO DEFAULT DUMP PARAMETERS.
* (MFL) = MAXIMUM FL ALLOWED.
* (TL) = TASK LIBRARY NAME IN FET.
*
* USES A - 1, 2, 6, 7.
* X - 1, 2, 6, 7.
*
* MACROS MEMORY, RECALL.
PVV SUBR ENTRY/EXIT
SA1 VMFL
BX6 X1 MAXIMUM FIELD LENGTH
SA6 MFL
SA2 VUSN TAF USER NAME
SA1 VTFL TASK LIBRARY FILE NAME
BX6 X1
SA1 DTSE+1 ADD DEFAULT USER NAME
SA6 TL
BX6 X1+X2
SA6 A1
EQ PVVX RETURN
PVV1 RECALL DEBUGING AID
SA1 B0
LX1 -1
PL X1,PVV1 LOOP UNTIL GIVEN GO AHEAD
EQ PVVX RETURN
PVVA CON 0 MEMORY STATUS WORD
* REMOTE CODE CONTAINING THE VARIABLE TABLE/BUFFER REFERENCES
TINST BSS 0
TINST HERE
TINSTL EQU *-TINST
ERRNG LAST-* PRESET OVERFLOW INTO TABLES
BUFFERS TITLE BUFFERS AND SUBCP-S.
* FIXED LENGTH BUFFERS.
JBUFL EQU 1201B
JBUF0 EQU ENDT
TDIBFL EQU TIMDM LENGTH OF TOTAL INPUT BUFFER
TDIBF EQU JBUF0+JBUFL TOTAL D.M. INPUT BUFFER
TDOBFL EQU 30B LENGTH OF TOTAL OUTPUT BUFFER
TDOBF EQU TDIBF+TDIBFL TOTAL OUTPUT BUFFER
OBUFL EQU 401B
OBUF EQU TDOBF+TDOBFL OUTPUT BUFFER
SBUFL EQU 100B
SBUF EQU OBUF+OBUFL SCRATCH WORKING BUFFER
PBUFL EQU 30*ITTPL SPACE FOR 30 INTERNAL TRACE PACKETS
PBUF EQU SBUF+SBUFL INTERNAL TRACE BUFFER
LASTF EQU PBUF+PBUFL LAST ADDRESS OF FIXED FIELD LENGTH
TROVL EQU LASTF+1
TRANOVL (PROCESS TASK DUMP.)
DTS SPACE 4,10
** DTS - DUMP A TASKS FIELD LENGTH AND ASSOCIATED CONTROL AREAS.
*
* DTS FORMATS A JOB FILE CONTAINING THE TASK DUMP AREAS AND
* CONTROL BLOCKS AND SUBMITS THIS FILE TO THE SYSTEM FOR BATCH
* PROCESSING.
*
* REFERENCE *KTSDMP* FOR FURTHER DOCUMENTATION OF DUMP FILE
* FORMAT AND SUBSEQUENT PROCESSING.
*
* ENTRY (B2) = SUB CONTROL POINT AREA OF TASK.
* (B3) = DUMP CONTROL WORDS.
* (X0) = COMMUNICATION BLOCK ADDRESS.
*
* CALLS COD, GPW, RSP, SFN, SNM, ZTB.
*
* MACROS CLOCK, DATE, MESSAGE, RETURN, REWIND, ROUTE, SUBMIT,
* WRITER, WRITEW.
DTS BSS 0
ENTRY DTS
SA2 B3 DSDUMP/CMDUMP CONTROL INFORMATION
SX7 B0
SA0 A2
NG X2,DTS1 IF TASK SUPPLIED DSDUMP PARAMETERS
SA0 DTSE SYSTEM DEFAULT DUMP PARAMETERS
* FORMAT *ACCOUNT* COMMAND.
DTS1 SA7 SF+6 CLEAR JOBNAME FROM FET+6
REWIND SF,R REWIND DUMP FILE
SA1 X0+CMBHL FIRST WORD OF COMMUNICATION BLOCK
MX3 12
BX3 X3*X1 DATA BASE NAME
TB3 0,VEDT EDT HEADER WORD
DTS2 SA4 B3+
BX1 X3*X4 EDT DATA BASE NAME
BX1 X1-X3
SB3 X4+
ZR X1,DTS3 IF DATA BASE MATCH FOUND
NZ B3,DTS2 IF NO MATCH
RJ GPW GET TAF PASSWORD
SA4 VUSN-2 USE DEFAULT SYSTEM USER NAME/PASSWORD
DTS3 SA1 A4+2 USER NAME
MX0 42
SA5 A1+B1 PASSWORD
BX7 X7-X7
SA7 VPWD CLEAR TAF PASSWORD
BX1 X0*X1
BX5 X0*X5
RJ SFN SPACE FILL NAME
BX4 X0*X6 SPACE FILLED USER NAME
BX1 X5
RJ SFN SPACE FILL NAME
SA1 DTSB ACCOUNT COMMAND
BX2 X0*X6 SPACE FILLED PASSWORD
MX6 48
BX7 X6*X1 MERGE USER NUMBER/PASSWORD INTO CARD IMAGE
LX4 12
BX1 -X6*X4
LX2 24
SX3 1R,
BX7 X7+X1
SA7 A1 FIRST LINE
MX0 -24
BX6 X6*X4
LX3 24
BX7 -X0*X2
IX6 X6+X3
BX7 X7+X6 SECOND LINE
SX1 1R.
SA7 A7+B1
BX6 X0*X2
LX1 36
BX7 X1+X6 THIRD LINE
SA7 A7+B1
* FORMAT *ROUTE* COMMAND.
SA3 A0+B1
MX0 -12
BX5 -X0*X3 ORIGIN TYPE
MX6 42
SX7 X5-2
BX3 X6*X3 DESTINATION PARAMETER
ZR X7,DTS6 IF USER PERMANENT FILE OPTION SPECIFIED
ZR X5,DTS4 IF ROUTE TO LOCAL PRINTER (BATCH QUEUE)
SX2 3RUN=
LX2 42
AX3 18
BX1 X2+X3
RJ ZTB CONVERT ZEROES TO BLANKS
SA6 DTSD+2 COMPLETE *ROUTE* COMMAND
EQ DTS5 WRITE COMMANDS
DTS4 MX7 -6
MX0 -42
AX3 18
BX1 -X7*X3 PRINTER IDENTIFICATION FOR BATCH
RJ COD CONVERT OCTAL TO DISPLAY
AX4 18
SX2 3RID=
LX2 42
BX4 -X0*X6
BX6 X2+X4
SA6 DTSD+2 COMPLETE *ROUTE* COMMAND
* WRITE COMMANDS FOR BATCH OR *E/I* DUMP MODE.
DTS5 WRITEW SF,DTSA,DTSA2L
WRITER SF,R WRITE COMMANDS
EQ DTS7 CONTINUE
* SET UP COMMANDS FOR PERMANENT FILE DUMP OPTION.
DTS6 SX4 2R,,
SA1 DTSC *KTSDMP* COMMAND
MX7 36
LX4 12
BX1 X7*X1 KTSDMP
MX0 48
IX1 X1+X4 KTSDMP,,
LX3 12
SA4 DTSH *,P.*
BX6 -X0*X3
BX6 X6+X1 KTSDMP,,FI
SA6 A1
BX1 X0*X3
RJ SFN SPACE FILL USER NAME
MX0 30
BX7 X0*X6 LENAM
BX7 X7+X4 LENAM,P.
SA7 A6+B1
WRITEW SF,DTSA,DTSA1L
WRITER SF,R WRITE COMMANDS
SA1 DTSI RESTORE *KTSDMP* COMMAND
SX7 B0
BX6 X1
SA7 DTSC+1
SA6 DTSC *KTSDMP.*
* FORMAT GENERAL INFORMATION SECTION.
DTS7 SA1 SREG
MX5 1
AX1 18 POINTER TO TASK SYSTEM AREA
SA1 X1+CB1C
MX7 -24
LX1 -18
BX1 -X7*X1 TASK SEQUENCE NUMBER
RJ COD CONVERT TO DISPLAY CODE
SX6 2000B GENERAL INFORMATION HEADER
SB3 B2-B1
AX7 X5,B3 DELETE TRAILING BLANKS
BX7 X7*X4
LX6 48
SA7 DTSF-1 USE SEQUENCE NUMBER FOR DUMP RECORD NAME
SA6 A7+B1
SA1 SREG
BX5 X1 EXCHANGE PACKAGE ADDRESS
LX5 -18 RIGHT JUSTIFY FWA OF TASK SYSTEM AREA
SA1 X1+2
MX2 -12
LX1 12 TASK LIBRARY INDEX
BX1 -X2*X1
TA2 X1-1,VTLD TASK NAME
MX6 42
BX1 X6*X2 USE TASK NAME AS LABEL
RJ SFN SPACE FILL NAME
SA6 DTSF+1
DATE DTSF+2 DATE
CLOCK DTSF+3 CURRENT TIME
WRITEW SF,DTSF-1,DTSFL+1 GENERAL INFORMATION BLOCK
* FORMAT EXCHANGE PACKAGE SECTION.
SA1 A0
LX1 1
PL X1,DTS8 IF NO DUMP OF EXCHANGE PACKAGE DESIRED
SX7 2002B EXCHANGE PACKAGE DUMP HEADER
SX2 NUAPL LENGTH OF TASK SUB CP AREA
LX7 48
BX7 X7+X2
SA7 DTSF
WRITEW SF,DTSF,DTSFL WRITE EXCHANGE PACKAGE CONTROL BLOCK
WRITEW SF,X5,NUAPL WRITE TASK SUBCP AREA
* FORMAT COMMUNICATION BLOCK SECTION.
DTS8 LX5 18 RIGHT JUSTIFY FWA OF TASK SUBCP TABLE
SA2 X5+B1 COMMUNICATION BLOCK ADDRESS
LX5 -18 RIGHT JUSTIFY FWA OF TASK SYSTEM AREA
SA3 X2
SA1 X3+CMBHL FIRST WORD OF COMMUNICATION BLOCK
MX2 -24
BX7 -X2*X1 TRANSACTION SEQUENCE NUMBER
SA3 DTSG
SA1 X5
LX3 -24
NZ X3,DTS9 IF CALLED FROM ADDRESS GIVEN
LX1 24
BX3 -X2*X1 *P* ADDRESS OF SUB CONTROL POINT
DTS9 SX1 2003B COMMUNICATION BLOCK DUMP HEADER
SA7 DTSF+2
SX2 CMBL-CMBHL+3 LENGTH OF COMMUNICATION BLOCK + 3
SX7 X3
SA7 A7+B1 CALLED FROM ADDRESS
LX1 48
BX6 X2+X1
SA6 DTSF
WRITEW SF,DTSF,DTSFL COMMUNICATION BLOCK CONTROL HEADER
WRITEW SF,X5+NUAPL+SUAC,CMBL-CMBHL+3 WRITE C.B.
* FORMAT TASK MEMORY DUMP SECTION.
SA1 A0
SX7 X1+ FWA OF TASK TO DUMP
LX1 -30
SX6 X1 LWA OF TASK TO DUMP
IX0 X6-X7
ZR X0,DTS17 IF NO FIELD LENGTH TO DUMP
SA1 X5+2
LX1 24
SX2 X1 TASK FL
IX4 X2-X6
PL X4,DTS10 IF TASK FL .GE. LWA
SX6 X2
SX3 DSMNFL
IX0 X6-X7
IX4 X0-X3
PL X4,DTS10 IF LWA-FWA .GE. DSMNFL
BX7 X7-X7
IX0 X6-X7
DTS10 SA7 DTSF+1
SX5 X5+NUAPL TASK RA
SA6 A7+1
SX3 2001B
SX0 X0-1
LX3 48
BX6 X3+X0
SA6 A7-B1 SET TOTAL AMOUNT OF MEMORY TO DUMP
IX5 X5+X7
WRITEW SF,DTSF,DTSFL MEMORY BLOCK HEADER
WRITEW SF,X5,X0-11B TASK MEMORY (COMPENSATE FOR *WRITEW*)
IX5 X5+X0
WRITEW SF,X5-11B,6 WRITE LAST 11B WORDS IN 2 BLOCKS
WRITEW SF,X5-3,3
* SUBMIT DUMP FILE TO INPUT QUEUE FOR PROCESSING.
DTS17 WRITER SF,R FLUSH BUFFER
SA2 SF SET FILE NAME
MX0 42
BX7 X0*X2
SA7 TDSP
SX6 B0+ CLEAR JOB ID
SA6 TDSP+2
SA1 A0+B1
MX2 -3
LX1 -12
BX6 -X2*X1 ORIGIN CODE
SX3 X6-BCOT
ZR X3,DTS18 IF BATCH ORIGIN
MX0 -24 SET *TID* FOR IMPLICIT *EIOT* ROUTE
BX6 -X0
SA6 TDSP+2
DTS18 RJ RSP RESTORE B2 AND B7
SA1 DTSP DSP PARAMETERS
SA3 A1+B1
SA4 LOVLX GET RETURN ADDRESS
LX4 -30+18
BX3 X3+X4
SA4 A3+B1
EQ RFQ ROUTE FILE TO QUEUE
DTSA DIS ,*DUMP.*
DTSB DIS ,*ACCOUNT,USERNUM,PASSWOR.*
IFC NE,$"CGNM"$$
DATA C*CHARGE,"CGNM","PJNM".*
ENDIF
DTSC DIS ,*KTSDMP. *
DTSA1L EQU *-DTSA LENGTH OF COMMAND BLOCK FOR PF
DTSD DIS ,*ROUTE,OUTPUT,DC=PR, UN=USERNUM.*
DTSA2L EQU *-DTSA LENGTH OF COMMAND BLOCK FOR BC AND IE
DTSFL EQU 5 LENGTH OF A DUMP CONTROL BLOCK
BSS 1
DTSF BSS DTSFL DUMP CONTROL BLOCK STORAGE
DTSH VFD 30/0,18/3R,P.,12/0
DTSI VFD 60/10HKTSDMP.
DTSM DATA C* DSP ERROR XXB RETURNED ON JOB ROUTE.*
* *DSP* PARAMETERS FOR KTSDMP OF TASK.
DTSP VFD 12/,12/,12/0LNO,6/,18/FRER+FRDC+FRTI
VFD 24/,18/**,18/RFQ2 STATUS PROCESSOR INFORMATION
DATA L*K KTSDUMP.*
GPW SPACE 4,10
** GPW - GET PASSWORD.
*
* GET TAF PASSWORD FROM TAF CONFIGURATION FILE.
*
* EXIT (VPWD) = TAF PASSWORD.
* (A0) = ENTRY VALUE.
*
* USES X - 0, 1, 2, 3, 4, 5, 7.
* A - 1, 4, 5, 7.
* B - 7.
*
* CALLS UPC.
*
* MACROS ABORT, MESSAGE, READ, READC, REWIND.
GPW SUBR ENTRY/EXIT
REWIND TCF,R
READ TCF
* READ AND UNPACK *TCF* STATEMENT.
GPW1 READC TCF,GPWB,GPWBL READ *TCF* STATEMENT
NZ X1,GPW3 IF NO MORE STATEMENTS IN THE *TCF*
SA5 GPWB FIRST WORD TO UNPACK
SB7 GPWC FWA TO UNPACK INTO
RJ UPC UNPACK STATEMENT
NZ X6,GPW4 IF UNPACK ERROR
MX0 42
SA1 GPWC
SA4 GPWA FWA OF STATEMENT TABLE
* SEARCH FOR STATEMENT IN TABLE.
GPW2 ZR X4,GPW1 IF END OF TABLE
BX5 X1-X4
BX2 X0*X5
SA4 A4+B1
NZ X2,GPW2 IF NO MATCH
* GET TAF PASSWORD FROM STATEMENT.
MX3 42
SA1 A1+2
BX7 X3*X1 PASSWORD
SA7 VPWD
BX7 X7-X7 CLEAR PASSWORD STORAGE AREA
SA7 A1
EQ GPWX RETURN
GPW3 SX1 GPWD *NO USER OR ACCOUNT STATEMENT IN THE TCF*
EQ GPW5 ISSUE MESSAGE
GPW4 SX1 GPWE *INCORRECT TCF ENTRY*
GPW5 MESSAGE X1,0,R ISSUE MESSAGE
ABORT
* RELEVANT *TCF* STATEMENT TABLE.
GPWA VFD 42/0LACCOUNT,18/0 *ACCOUNT* STATEMENT
VFD 42/0LUSER,18/0 *USER* STATEMENT
CON 0 TABLE TERMINATOR
GPWB BSSZ 16 BUFFER FOR *TCF* STATEMENT
GPWBL EQU *-GPWB BUFFER LENGTH
GPWC BSSZ 80 BUFFER FOR UNPACKED *TCF* STATEMENT
GPWD DATA C* NO USER OR ACCOUNT STATEMENT IN THE TCF.*
GPWE DATA C* INCORRECT TCF ENTRY.*
SPACE 4,10
*CALL COMCRDC
SPACE 4,10
* *TCF* FET.
TCF BSS 0 TAF CONFIGURATION FILE
TCF FILEC TCBUF,TCBUFL,FET=13,EPR
* *TCF* BUFFER.
TCBUFL EQU 2*64+1
TCBUF BSS TCBUFL BUFFER FOR *TCF*
ENDOVL
TRANOVL (EXTENDED MEMORY ERROR PROCESSING.)
ECE SPACE 4
** ECE - PROCESS EXTENDED MEMORY READ ERROR FROM TASK LIBRARY.
*
* ENTRY (ECRA) = 6/,18/EDT,18/TFL,18/SCP
* (X5) = 30/TLN, 30/RDA
*
* EDT - ELEMENT DESCRIPTOR TABLE ADDRESS.
* TFL - TASK FIELD LENGTH.
* SCP - START OF SUB CP TABLE.
* TLN - ADDRESS OF TASK LIBRARY NAME.
* RDA - RANDOM DISK/EXTENDED MEMORY ADDRESS OF TASK.
*
* EXIT TO *SCHD11* - (X7) AND (X5) RETURNED FOR DISK LOADING.
*
* USES A - ALL.
* X - ALL.
* B - 3, 4, 5, 7.
*
*
* CALLS COD, SNM.
*
* MACROS ATTACH, ENTRY, MESSAGE, READ, READW, RECALL, SKIPB,
* SKIPEI.
ECE BSS 0
ENTRY ECE
SB4 SCHD1 SET SCHEDULAR LOADER EXIT
SA1 ECRA PARAMETERS FOR ECS ERROR PROCESSING
BX7 X1
MESSAGE ECEE,3,R * EXTENDED MEMORY READ ERROR.*
ECE1 BX6 X5 SAVE X5 AND X7
SA6 ECEA
BX0 X7
SX6 B2 SAVE B2, B4 AND B7
LX6 18
SX4 B7
BX6 X6+X4
LX6 18
SX4 B4
BX6 X6+X4
SA6 A6+B1
* ATTACH LIBRARY FILE IN MODIFY MODE.
RECALL TL WAIT FOR LIBRARY FILE IDLE
LX0 -36 EDT ADDRESS
MX2 42 USER NAME
SA3 X0+2
BX3 X2*X3
BX7 X7-X7 CLEAR PACKNAME FROM FET
SA7 TL+CFPK
MX6 -48
SA4 VUSN SYSTEM USER NAME
BX1 X3-X4
ZR X1,ECE2 IF SYSTEM TASK LIBRARY
SA4 X0+5 PACK NAME AND DEVICE TYPE TO FET
MX2 -12
LX2 6
BX7 X2*X4
LX4 59-17
SA1 TL+1
SA7 A7
BX7 -X6*X1
BX4 X6*X4
BX7 X7+X4
SA7 A1+
ECE2 LX5 30 SET LIBRARY NAME IN FET
SA2 X5+
BX6 X2
SA6 TL
MX2 1 SET *EPR* FOR THIS ATTACH
LX2 44-59
SA5 A6+1
BX6 X2+X5
SA6 A5
ATTACH TL,,X3,,M ATTACH LIBRARY FILE IN MODIFY MODE
SA1 X2 CHECK STATUS
BX7 X5 CLEAR *EPR*
MX2 -4
SA7 A5
LX1 -10
BX2 -X2*X1
NZ X2,ECE7 IF ATTACH ERROR
* READ LIBRARY DIRECTORY.
SX6 OBUF
SA1 TL+1 SET FET BUFFER ADDRESSES
MX2 42
BX7 X2*X1
BX7 X7+X6
SA6 A1+B1 IN
SA7 A1 FIRST
SA6 A6+B1 OUT
SA3 A6+B1 LIMIT
BX7 X2*X3
SX6 X6+OBUFL
BX7 X7+X6
SA7 A3
SKIPEI TL SKIP TO EOI
SKIPB TL,2 BACKSPACE TO POSITION AT DIRECTORY
READ TL START READ OF DIRECTORY
* FIND ENTRY ON LIBRARY DIRECTORY FOR TASK.
LX0 36 SCP ADDRESS
SA1 X0 SET BUFFER AT SUBCONTROL POINT RA+100B-4
SA0 X1+100B-TLDLH
SA2 A1+2 TASK DIRECTORY INDEX
MX3 12
BX4 X3*X2
LX4 12
TA5 X4-1,VTLD FIRST WORD OF TLD ENTRY
MX2 42
BX5 X2*X5 TASK NAME
SB7 TLDLH+TLDLE*10 BUFFER LENGTH (HEADER + 10 ENTRIES)
READW TL,A0,B7 READ DIRECTORY
NG X1,ECE6 IF DIRECTORY EMPTY
SA0 A0+TLDLH
SB4 A0+
ECE3 SB5 X1
MX3 42
NZ X1,ECE4 IF EOR
SB5 A0+10*TLDLE
ECE4 SA2 B4+ LOOK FOR MATCHING ENTRIES
BX4 X3*X2
IX6 X5-X4
ZR X6,ECE5 IF ENTRIES MATCH
SB4 A2+TLDLE
LT B4,B5,ECE4 IF MORE IN BUFFER
NZ X1,ECE6 IF SEARCH COMPLETE
SB7 10*TLDLE BUFFER LENGTH IS 10 ENTRIES
READW TL,A0,B7
NG X1,ECE6 IF EOF/EOI
SB4 A0+
EQ ECE3 CONTINUE READING DIRECTORY ENTRIES
* REPLACE OLD TLD ENTRY AND CLEAR EXTENDED MEMORY BIT.
ECE5 BX7 X2
SA7 A5
SA5 A2+B1
BX7 X5
SA7 A7+B1
SA2 A5+B1
SX3 B1
LX3 56
BX7 -X3*X2
SX4 12B REPLACE USAGE AND CORE RESIDENT/OFF BITS
LX4 -6
MX6 36
LX6 -6
BX6 X4+X6
SA4 A7+B1
BX6 X6*X4
BX7 X7+X6
SA7 A7+B1
* ISSUE DAYFILE MESSAGE.
SA2 A5-B1
MX3 42
BX1 X3*X2
SB2 1R+ REPLACEMENT CHARACTER
SB5 -ECED FWA OF FORMATTED TEXT
SB3 DAYB ALTERNATIVE BUFFER
RJ SNM SET NAME IN MESSAGE
MESSAGE DAYB,3,R * ECS TASK +++++++ NOW MS RESIDENT.*
* RE-ATTACH LIBRARY IN READ/MODIFY MODE.
LX0 -36
MX1 42
SA3 X0+2 USER NAME
BX3 X1*X3
ATTACH TL,,X3,,RM RE-ATTACH FILE
* PUT DISK ADDRESS IN LOAD STACK ENTRY.
SA3 ECEA RE-LOAD (X5) AND RESTORE DISK ADDRESS
MX1 30
BX2 X1*X3
LX5 30
BX4 -X1*X5
BX5 X2+X4
LX0 36
SA2 ECEB RESTORE (B2), (B4), (B7) AND (X7)
SB4 X2
LX2 -18
SB7 X2
LX2 -18
SB2 X2
BX7 X0
MX3 1
PL X7,SCHD11 IF NOT ENTERED FROM ERROR PROCESSING
BX7 -X3*X7 CLEAR ERROR BIT FOR DISK LOAD
SB4 TERP18 SET RETURN ADDRESS
EQ SCHD11 LOAD TASK FROM DISK
* CANNOT LOAD TASK FROM DISK OR EXTENDED MEMORY.
ECE6 SA1 X0+B1 SET PROGRAM STOP AT TASK ENTRY POINT
LX1 -18 ENTRY POINT ADDRESS
SA2 X0 TASK RA
BX6 X6-X6
SB3 X2
SA6 X1+B3
SA2 A1+B1 TURN TASK OFF
MX3 12
BX4 X3*X2
LX4 12
TA5 X4-1+2,VTLD WORD 3 OF DIRECTORY
MX3 1
LX3 55-59 OFF BIT
BX7 X3+X5
SA7 A5
* ISSUE DAYFILE MESSAGE.
SA2 A5-2 READ TASK NAME
SB3 DAYB ALTERNATIVE BUFFER
MX4 42
BX1 X4*X2
SB2 1RX REPLACMENT CHARACTER
SB5 -ECEC FWA OF MESSAGE TEXT
RJ SNM SET NAME IN MESSAGE
SA5 ECEA
LX5 30
SA2 X5 READ DATA BASE LIBRARY NAME
BX1 X4*X2
LX5 30
SB2 1R+ REPLACEMENT CHARACTER
SB5 DAYB FWA OF MESSAGE
RJ SNM SET NAME IN MESSAGE
MESSAGE DAYB,3 * OFF TASK XXXXXXX - LIBRARY +++++++.*
SB3 SCHD34 RE-START ADDRESS
EQ ECE8 INITIATE TASK
* CANNOT ATTACH TASK LIBRARY - PUT TASK IN RECALL.
ECE7 LX0 36 SET RECALL BIT IN TASK SCP TABLE
SA1 X0+B1
MX2 1
LX2 56-59
BX7 X2+X1
SA7 A1+
SA1 X0 SAVE (X0) AND (X5) IN TASK SYSTEM AREA
SA5 ECEA
BX7 X0
BX6 X5
SA6 X1-NUAPL+16B
SA7 A6+1
SX7 DCPPR-2 SET LOWER CPU PRIORITY
LX7 48
SA7 X1-NUAPL+CB1C
SX6 ECR1 RETURN ADDRESS
SB3 SCHD34 SCHEDULER RETURN ADDRESS
SA6 X1-NUAPL+RCL
PL X0,ECE8 IF CALL FROM SCHEDULER
SB3 ECE10 RETURN ADDRESS
ECE8 LX0 -36 RE-ATTACH LIBRARY IN READ/MODIFY MODE
SA3 X0+2
MX1 42
BX3 X1*X3
ATTACH TL,,X3,,RM
SA2 ECEB RESTORE (B2), (B4), (B7) AND (X7)
SB4 X2
LX2 -18
SB7 X2
LX2 -18
SB2 X2
LX0 36
BX7 X0
JP B3 EXIT
ECE9 SA5 B2+16B RESTORE (X5) AND (X7)
SA2 A5+B1
BX7 X2
SB4 ECE10 RETURN ADDRESS
EQ ECE1 RE-TRY ATTACH
ECE10 RJ DCPT DROP CPU FOR TASK
EQ TSSC TIME SLICE SUBCP
ECEA BSS 1 STORAGE FOR (X5)
ECEB BSS 1 STORAGE FOR (B2), (B4) AND (B7)
ECEC DATA C* OFF TASK XXXXXXX - LIBRARY +++++++.*
ECED DATA C* EXTENDED MEMORY TASK +++++++ NOW MS RESIDENT.*
ECEE DATA C* EXTENDED MEMORY READ ERROR.*
ENDOVL
ECE9 EQU /"PROD""M."/ECE9
TRANOVL (TAPE ASSIGNMENT.)
SPACE 4
*** K - D I S P L A Y C O M M A N D S
PASN SPACE 4
*** K.ASSIGN,EQ. OR K.ASSIGN,EQ,XX,N.
*
* ASSIGN TAPE EQUIPMENT -EQ- TO A *FREE* POOL OF UNITS FOR USE
* BY ANY JOURNAL FILE, OR ASSIGN TAPE EQUIPMENT -EQ- TO JOURNAL
* FILE -N- OF DATA BASE -XX- IF THE FILE HAS BEEN FORCED TO
* DISK BECAUSE IT NEEDED A TAPE UNIT WHEN NONE WAS AVAILABLE.
* A JOURNAL FILE MUST BE PREDEFINED AS A TAPE FILE TO ASSIGN
* IT A TAPE.
* ONLY TWO TAPES MAY BE ASSIGNED TO THE *FREE* POOL.
*
* EQ = EST ORDINAL OF TAPE UNIT.
* XX = DATA BASE NAME.
* N = JOURNAL FILE NUMBER (1-3)
ASSIGN BSS 0
ENTRY ASSIGN,K
SA5 SBUF+1 EQ PARAMETER
SB7 B0 ASSUME OCTAL BASE
SB6 B2-B1
RJ DXB CONVERT EQ TO BINARY NUMBER
NZ X4,PCMD3 IF ERROR IN CONVERSION
SA6 PASA SAVE EST ORDINAL
EQ B6,B1,PAS3 IF POOL ASSIGNMENT
SB3 3
NE B6,B3,PCMD3 IF INCORRECT PARAMETER COUNT
* TAPE ASSIGNED TO SPECIFIC JOURNAL FILE
SA5 A5+2 JOURNAL FILE NUMBER
RJ DXB CONVERT TO BINARY
NZ X4,PCMD3 IF ERROR IN CONVERSION
TA2 0,VEDT EDT HEADER
ZR X6,PCMD3 IF INCORRECT JOURNAL FILE NUMBER
SA5 A5-B1 DATA BASE NAME
SB3 X2
MX7 12
EQ PAS2 ENTER LOOP
PAS1 SB3 X2 LINK TO NEXT EDT
ZR B3,PCMD3 IF UNKNOWN DATA BASE NAME
SA2 B3
PAS2 BX3 X7*X2 DATA BASE NAME OF CURRENT EDT
BX3 X3-X5
NZ X3,PAS1 IF NO MATCH ON DATA BASE NAME
SA2 A2+B1
AX2 18
SX0 X2 ADDRESS OF FIRST DATA BASE JOURNAL FILE
AX2 36
ZR X2,PCMD3 IF NO JOURNAL FILES FOR THIS DATA BASE
SX3 X2+B1
IX3 X6-X3
PL X3,PCMD3 IF INCORRECT JOURNAL FILE NUMBER
SX3 JFETL
SX6 X6-1
IX3 X3*X6 JOURNAL FILE FET BIAS
IX0 X0+X3 FET ADDRESS
SA0 X0+
SA2 X0+7
PL X2,PCMD3 IF NOT A TAPE JOURNAL FILE
SX0 O USE OUTPUT FILE FOR SCRATCH
RETURN O,R RETURN WHATEVER IS THERE
SB4 PAS6
SB3 PAS9
JP PAS4 ASSIGN TAPE TO JOURNAL FILE
* TAPE ASSIGNED TO *POOL*
PAS3 SB3 PAS8
SA4 ASEQ ASSIGNED EQUIPMENT STATUS WORD
SX0 SCR
SB4 PAS6
ZR X4,PAS4 NO CURRENTLY ASSIGNED EQUIPMENT
SX6 X4
AX4 18
ZR X6,PAS4 ASSIGN TAPE TO SCR
SX0 SCR1
LX6 18
NZ X4,PCMD3 IF ALREADY 2 TAPES ASSIGNED TO *POOL*
SA6 A4
* CHECK STATUS OF TAPE
PAS4 RDSB MTSI,1,/COMSMTX/UBUF,2,3 READ UDT POINTER
SA5 2
SB2 X5 FWA OF UDT
LX5 -24
SB6 X5+ LWA + 1 OF UDT
SA4 PASA EST ORDINAL
PAS5 EQ B2,B6,PCMD3 IF EQUIPMENT NOT PRESENT
RDSB MTSI,/COMSMTX/UNITL,B2,OBUF,2 READ ONE UDT
SB2 B2+/COMSMTX/UNITL
SA1 2
PL X1,PCMD3 IF ERROR ON READ
SA1 OBUF+/COMSMTX/UST1
MX6 -12
LX1 0-24
BX6 -X6*X1 EST ORDINAL FROM UDT
BX6 X6-X4
NZ X6,PAS5 IF NO MATCH ON EST ORDINAL
SA2 OBUF+/COMSMTX/UVSN
MX6 36
BX6 X6*X2
LX2 59-23
ZR X6,PCMD3 IF NO TAPE MOUNTED
NG X2,PCMD3 IF LABEL CHECK IN PROGRESS
LX1 59-2-0+24-60
LX2 59-14-59+23
PL X2,PCMD3 IF NOT DEFAULT VSN
PL X1,PCMD3 IF NO WRITE ENABLE
JP B4 EXIT
* ASSIGN TAPE TO FILE
PAS6 SA1 PASE CREATE A FILE NAME FOR TAPE ASSIGNMENT
MX6 -5
BX2 X6*X1 1+*SCR*
SX1 X1+B1 ADVANCE POSTFIX CHARACTER
BX1 -X6*X1 USE ONLY 5 BITS (0-37)
BX7 X2+X1
LX1 35 APPEND CHARACTER TO FILE NAME
SA7 A1
BX6 X2+X1
LX6 1 SCR*X* + 1
SA6 X0
SA1 OBUF+/COMSMTX/UVRI
SA3 PASB
NZ X1,PCMD3 IF TAPE ASSIGNED TO ANOTHER JOB
MX6 -3
BX2 -X6*X4 CONVERT EST ORDINAL TO DISPLAY CODE
SA1 OBUF+/COMSMTX/UVSN CHECK VSN OF TAPE
AX4 3
BX7 -X6*X4
LX7 6
BX6 X6*X4
LX6 9
IX7 X6+X7
BX6 X7+X2
MX2 36
IX6 X6+X3 CREATE VSN OF ***NNN
BX1 X2*X1
LX6 24
BX1 X1-X6
NZ X1,PCMD3 IF INCORRECT VSN
SA5 OBUF+/COMSMTX/UST4
SA6 X0+9
MX7 -2
LX7 55-0
BX7 -X7*X5 SET TAPE DEVICE TYPE
SA7 A6-B1
MESSAGE VERM,1 CLEAR LABEL MESSAGE
SB4 PAS7
JP PAS4 RECHECK STATUS OF TAPE
PAS7 JP B3
* SET ASSIGNED EQUIPMENT WORD TO REFLECT TAPE ASSIGNMENT
PAS8 SA2 OBUF+/COMSMTX/UVRI
ZR X2,PCMD3 IF TAPE NOT ASSIGNED
SA1 ASEQ ASSIGNED EQUIPMENT WORD
BX7 X1+X0
SA7 A1
JP PCMDX *RETURN
* COPY DISK JOURNAL FILE TO THE ASSIGNED TAPE
PAS9 SA4 A0+7
SX0 A0 JOURNAL FILE FET ADDRESS
SX4 X4
NZ X4,PAS10 IF FILE NON BUFFERED
WRITER A0+,R FLUSH JOURNAL FILE
JP PAS12 WRITE LABEL RECORD
PAS10 SB2 A0
RECALL X0 WAIT JOURNAL FILE IDLE
SX0 2100B
RJ RCP REQUEST SUBCONTROL POINT
NZ X5,PAS11 IF CORE WAS AVAILABLE
RETURN O,R RETURN ASSIGNED EQUIPMENT
EQ PCMD4 *SYSTEM BUSY* MESSAGE
PAS11 SX0 B2+
SA2 B2+B1 FIRST
MX3 -18
SX7 X5+ START OF ALLOCATED CORE
BX6 X3*X2
SA7 A2+B1 IN
BX6 X6+X5
SA7 A7+B1 OUT
SA6 A2+
SX5 B4 SUB CONTROL POINT ASSIGNED WITH CORE
SX7 X7+2101B
SA7 A7+B1 LIMIT
* WRITE LABEL RECORD TO TAPE
PAS12 SA1 X0+5
SA2 PDATE SET CURRENT PDATE INTO LABEL
SX3 B1
BX6 X2
LX3 18 UPDATE REEL COUNT
IX7 X3+X1
SA6 PASC+1
SA4 X0 SET JOURNAL FILE NAME INTO LABEL
SA7 A1
MX6 42
BX6 X6*X4
AX7 18
SX7 X7 REEL COUNT
BX7 X6+X7
SA7 A6+B1
WRITEW O,PASC,3 3 WORD LABEL RECORD
WRITER X2,R
* SWITCH FETS AND SET UP FOR DISK TO TAPE COPY
SA1 X0 SWITCH FETS TO GIVE TAPE FILE THE LARGER
SA2 O
BX6 X1
LX7 X2
SA6 A2
SA7 A1
SA0 -PAS17 ERROR RETURN ADDRESS
REWIND O,R
PAS13 READ O INITIATE READ ON DISK FILE
* COPY DISK FILE TO TAPE FILE
PAS14 READW O,SBUF,SBUFL
NZ X1,PAS15 IF EOR/EOF/EOI
WRITEW X0,SBUF,SBUFL
EQ PAS14 LOOP
PAS15 SX4 X1+1
ZR X4,PAS16 IF EOF
NG X4,PAS18 IF EOI
SX4 X1-SBUF NUMBER OF WORDS READ
WRITEW X0,SBUF,X4
WRITER X2,R FLUSH BUFFER TO TAPE
JP PAS13 COPY ALL RECORDS OVER TO TAPE
PAS16 WRITEF X0,R
JP PAS13 COPY ALL FILES OVER TO TAPE
* ERROR ENCOUNTERED ON COPY
PAS17 RETURN X0,R RETURN TAPE
SA1 X0+B1
SX7 X1 SET FIRST = IN = OUT
SA7 A1+B1
SA7 A7+B1
RECALL O
SA1 O RESTORE JOURNAL FILE NAME
SA4 X0
BX6 X1
SA6 X0
SKIPEI X0,R POSITION JOURNAL FILE TO EOI
MESSAGE PASD * UNABLE TO USE TAPE.*
JP PAS19 RELEASE CORE IF NECESSARY
* COPY COMPLETE
PAS18 WRITER X0,R FLUSH BUFFER TO TAPE
REWIND O REWIND DISK FILE
WRITER O PURGE DATA FROM FILE
SX2 100B+1RT
SA3 O
MX6 36
BX6 X6*X3 ADD *T* TO FRONT OF JOURNAL FILE NAME
LX6 -6
LX2 -6
BX1 X6+X2 *TXXJORN*
RENAME O,X1 RENAME PERMANENT FILE
BX1 X3
SA4 X0
RENAME X0,X1 SET PROPER NAME FOR TAPE FILE
PAS19 SA1 X0+7
BX6 X4
SX2 X1
SA6 O RESTORE OUTPUT FILE NAME
ZR X2,PCMDX IF NO BUFFER TO RETURN
SB6 X5 SUB CONTROL POINT ASSIGNED WITH CORE
SB7 B0
SA1 AVAILCM
SX7 X1+2100B CORE USED TO COPY TAPE
SA7 A1+
SB3 PCMDX RETURN ADDRESS
JP ESCP1 RELEASE CORE
PASA CON 0 EST ORDINAL
PASB VFD 24/0,36/6L***000
PASC DATA C/*TRANEX*/ 3 WORD JOURNAL FILE LABEL RECORD
BSS 1 PDATE
BSS 1 FILE NAME AND REEL NUMBER
PASD DATA C* UNABLE TO USE TAPE.*
PASE VFD 1/1,18/3LSCR,41/0 1 + *SCR*
ENDOVL
TRANOVL (K-DISPLAY COMMANDS *1*.)
DEBUG SPACE 4,10
*** K.DEBUG.
*
* TURN ON *AIP* DEBUG OPTION.
DEBUG BSS 0
ENTRY DEBUG,K
.B IFEQ DBUG,0
SX6 B0+
RJ NDS TURN ON *AIP* DEBUG OPTION
EQ PCMDX RETURN
.B ELSE
EQ PCMD6 *NOT AVAILABLE.*
.B ENDIF
DROP SPACE 4,10
*** K.DROP,N.
*
* SET THE ABORT FLAG FOR SUB CONTROL POINT *N*. CAUTION IS
* ADVISED WHEN USING THIS COMMAND, BECAUSE OF THE DELAY BETWEEN
* THE TIME THE COMMAND IS ENTERED AND THE TIME IT IS PROCESSED.
DROP BSS 0
ENTRY DROP,K
SB2 B2-B1
NE B2,B1,PCMD3 IF TOO MANY PARAMETERS
SB7 B0 ASSUME OCTAL BASE
SA5 SBUF+1 SUB CONTROL POINT NUMBER
RJ DXB CONVERT TO BINARY FORM
NZ X4,PCMD3 IF ERROR IN CONVERSION
TX1 1,VNSCP NUMBER OF SUB CONTROL POINTS
ZR X6,PCMD3 IF SUB CONTROL POINT ZERO
IX1 X6-X1
LX6 SCPAL
PL X1,PCMD3 IF INCORRECT SUB CONTROL POINT NUMBER
TA3 X6-CPAL,VCPA 1ST WORD OF SUB CONTROL POINT TABLE
TX6 X3-1,-VCBRT SET RELATIVE ADDRESS DIFFERENCE
NG X6,PCMD3 IF SUB CONTROL POINT NOT ACTIVE
SA1 A3+B1
SX7 B1
LX7 55
BX7 X7+X1 SET ABORT FLAG
LX1 59-SCRCS
NG X1,DRO2 IF SUBCP IN RECALL
SA2 X3+B1 CHECK SYSTEM REQUEST OF TASK
LX2 18
SX2 X2-3RSIC
ZR X2,PCMD2 IF *SEND* REQUEST OUTSTANDING
SA2 A3+CPAHL COM. BLK. IN EXECUTION
LX2 59-54
NG X2,PCMD2 IF INITIAL LOAD BIT SET
BX6 X6-X6
SA7 A1+
SA6 X3-NUAPL+DMEC CLEAR DATA MANAGER ERROR CODE
DRO2 MX7 SCDRN SET TASK DROPPED FLAG
LX1 59-59-59+SCRCS
LX7 59-59-59+SCDRS
BX7 X1+X7
SA7 A1
EQ PCMDX EXIT
PDSD SPACE 4,10
*** K.DSDUMP,FW=ADDRESS,LW=ADDRESS,EP=N,DB=N,OQ=AA,QD=VALUE.
*
* CHANGE THE SYSTEM DEFAULT DUMP PARAMETERS FOR TASKS
* RUNNING UNDER CONTROL OF TRANEX. THE PARAMETERS MAY BE GIVEN
* IN ANY ORDER AND ONLY THOSE PARAMETERS TO BE CHANGED NEED BE
* GIVEN.
* *FW* IS THE DEFAULT FIRST WORD ADDRESS FOR TASK DUMPS,
* AND *LW* IS THE LAST WORD ADDRESS. *FW* IS ROUNDED DOWN TO
* THE NEAREST MULTIPLE OF 4 AND MUST BE LESS THAN *LW*.
* *EP* IS THE EXCHANGE PACKAGE DUMP FLAG. IF IT IS NONZERO
* THE EXCHANGE PCKAGE WILL BE DUMPED ON DEFAULT DUMPS.
* *DB* IS THE DATA MANAGER BUFFER DUMP FLAG. IF IT IS
* NONZERO ALL DATA MANAGER BUFFERS ASSOCIATED WITH THE TASK
* WILL BE DUMPED.
* *OQ* SIGNIFIES THE OUTPUT QUEUE FOR A DEFAULT DUMP, AND
* *QD* DEFINES A DESTINATION FOR THE DUMP. THE FOLLOWING TABLE
* SHOWS THEIR RELATIONSHIP.
*
* ORIGIN TYPE QUEUE DESTINATION FIELD
* BC = LOCAL BATCH PRINTER ID
* EI = E/I 200 USER NAME
* PF = USER PERMANENT FILE PERMANENT FILE NAME
* RB = REMOTE BATCH USER NAME
DSDUMP BSS 0
ENTRY DSDUMP,K
SB4 B2-B1 ARGUMENT COUNT
SA4 SBUF+1 FIRST ARGUMENT FOR COMCARG
SB7 B0
SB5 PDSA ARGUMENT TABLE
RJ ARG PROCESS COMMAND ARGUMENTS
NZ X1,PDS9 IF ERROR IN ARGUMENTS
SX6 B0+ CLEAR LWA/FWA PROCESSED FLAG
SA6 PDSC
* PROCESS FIRST WORD ADDRESS
SA5 PFW
ZR X5,PDS1 NO FIRST WORD ADDRESS SPECIFIED
RJ DXB CONVERT TO BINARY VALUE
NZ X4,PDS9 IF ERROR IN VALUE
SA1 DTSE
MX2 -18
BX6 -X2*X6
BX2 X2*X1 CLEAR OLD SYSTEM DEFAULT FWA
AX6 2
LX6 2 ROUND DOWN TO NEAREST EVEN MULTIPLE OF 4
SX1 X6
NG X1,PDS9 IF FWA TOO LARGE
BX7 X2+X6
SA7 PDSD
SX6 B1 SET FWA FLAG
SA6 PDSC
RJ COD CONVERT TO OCTAL FOR K-DISPLAY
BX6 X4
SA6 PFW
* PROCESS LAST WORD ADDRESS
PDS1 SA5 PLW
ZR X5,PDS1.2 IF NO LWA SPECIFIED
RJ DXB CONVERT TO BINARY VALUE
NZ X4,PDS9 IF ERROR IN VALUE
SA1 DTSE
SA2 PDSC
ZR X2,PDS1.1 IF FWA NOT PROCESSED
SA1 PDSD
PDS1.1 MX2 -18
LX2 30
BX2 X2*X1 CLEAR OLD SYSTEM DEFAULT LWA
SX6 X6 TRUNCATE IF NECESSARY
NG X6,PDS9 IF VALUE TOO LARGE
BX1 X6
LX6 30
BX7 X2+X6
SA7 PDSD
SX6 B1+B1 SET LWA FLAG
SA2 PDSC
BX6 X6+X2
SA6 A2
RJ COD CONVERT TO OCTAL FOR K-DISPLAY
BX6 X4
SA6 PLW
PDS1.2 SA4 PDSC
ZR X4,PDS2 IF NEITHER FWA/LWA CHANGED
SA1 PDSD POTENTIAL NEW *DTSE*
SX2 X1 FWA
LX1 -30
SX6 DSMNFL
SX3 X1+ LWA
IX7 X3-X2
NG X7,PDS9 IF FWA .GT. LWA
LX1 30
ZR X7,PDS1.3 IF NO DUMP SELECTED
IX7 X7-X6
NG X7,PDS9 IF LWA-FWA .LT. DSMNFL
PDS1.3 SA2 PFW UPDATE K-DISPLAY VALUES
SA3 PLW
BX6 X1
SA6 DTSE
BX6 X2
LX7 X3
LX4 59-0
PL X4,PDS1.4 IF FWA NOT CHANGED
SA6 KDFWA+1
PDS1.4 LX4 59-1-59+0
PL X4,PDS2 IF LWA NOT CHANGED
SA7 KDLWA+1
* PROCESS EXCHANGE PACKAGE
PDS2 SX3 1R0 DISPLAY CODE 1
SA1 PEP
SX2 B1
NZ X1,PDS3 TURN ON EXCHANGE PACKAGE DUMP
BX2 X2-X2
PDS3 SX7 3
SA1 DTSE
LX7 57
IX6 X3+X2 *0* OR *1* DEPENDING WHETHER PEP IS NONZERO
LX2 58
BX1 -X7*X1 CLEAR EXCHANGE PACKAGE / DATA BASE FLAGS
LX6 54
BX7 X2+X1 EXCHANGE PACKAGE DUMP FLAG
SA6 KDEXP+1
SA7 A1+
* PROCESS DATA BASE
SA1 PDB
SX2 B1
NZ X1,PDS4 TURN ON EXCHANGE PACKAGE DUMP
BX2 X2-X2
PDS4 SA1 DTSE
LX2 57
BX7 X2+X1 DATA MANAGER BUFFERS DUMP FLAG
SA7 A1
* PROCESS OUTPUT QUEUE
BX5 X5-X5
SA1 POT
MX2 12
ZR X1,PDS6 OUTPUT QUEUE NOT SPECIFIED
BX1 X2*X1 OUTPUT QUEUE
SA4 DTSE+1
LX1 12
MX6 -12
SX2 X1-2RBC
SX3 BCOT
ZR X2,PDS5 *BC* FOR LOCAL BATCH
SX2 X1-2RPF
SX5 B1+B1
ZR X2,PDS5 *PF* FOR PERMANENT FILE
SX5 B1
SX3 RBOT
SX2 X1-2RRB
ZR X2,PDS5 *RB* FOR REMOTE BATCH
SX3 EIOT
SX2 X1-2REI
ZR X2,PDS5 *EI* FOR E/I 200
EQ PDS9 INCORRECT ORIGIN TYPE
PDS5 MX2 3
BX6 X6*X4
LX2 12+3
BX6 -X2*X6 CLEAR ORIGIN CODE
LX3 12
LX7 X1
BX6 X6+X5 SET NEW ORIGIN TYPE
LX7 48
BX6 X6+X3
SA6 A4
SA7 KDORT+1
* PROCESS QUEUE DESTINATION
PDS6 SB3 PCMDX RETURN ADDRESS
SA5 PQD
ZR X5,PDS8 IF QUEUE DESTINATION NOT SPECIFIED
SA1 DTSE+1
MX2 -12
BX2 -X2*X1 ORIGIN TYPE
ZR X2,PDS7 IF BATCH DESTINATION TYPE
MX7 42
BX7 -X7*X1 CLEAR OLD USER NAME / PERMANENT FILE NAME
LX6 X5
BX7 X7+X5 SET NEW USER NAME / PERMANENT FILE NAME
SA6 KDQDS+1
SA7 A1+
EQ PDS8 COMPLETE PROCESSING
PDS7 RJ DXB CONVERT TO BINARY VALUE
NZ X4,PDS9 IF ERROR IN PRINTER ID
SA1 DTSE+1
MX7 42
SA5 PQD
BX1 -X7*X1 CLEAR OLD PRINTER ID
LX6 18
BX7 X5
BX6 X1+X6 SET NEW PRINTER ID
SA6 A1
SB3 PCMDX RETURN ADDRESS
SA7 KDQDS+1
* CLEAR ARGUMENTS FOR NEXT COMMAND
PDS8 BX6 X6-X6
SA6 PFW START OF LIST
SA6 A6+B1
SA6 A6+B1
SA6 A6+B1
JP B3 *RETURN
PDS9 SB3 PCMD3 *FORMAT ERROR* EXIT ADDRESS
EQ PDS8 CLEAR PARAMETER LIST
PDSA BSS 0
FW ARG PDSB,PFW,400B
LW ARG PDSB,PLW,400B
EP ARG PDSB,PEP
OQ ARG PDSB,POT
QD ARG PDSB,PQD,400B
DB ARG PDSB,PDB
PDSB CON 0
PFW BSSZ 1 FIRST WORD ADDRESS
PLW BSSZ 1 LAST WORD ADDRESS
POT BSSZ 1 ORIGIN TYPE
PQD BSSZ 1 QUEUE DESTINATION
PEP CON DEXP EXCHANGE PACKAGE
PDB CON DDMB DATA MANAGER BUFFERS
PDSC BSS 1 LWA/FWA FLAG
PDSD BSS 1 POTENTIAL NEW *DTSE*
PDMP SPACE 4,10
*** K.IDLE.
*
* FORCES TRANEX TO IDLE DOWN THE TRANSACTION SUBSYSTEM.
* ALL TRANSACTIONS CURRENTLY RUNNING ARE COMPLETED
* UNTIL NO MORE ACTIVITY EXISTS, NO NEW TRANSACTIONS ARE
* ACCEPTED. THIS IS ACCOMPLISHED BY INFORMING INITIAL TASK OF
* IDLE DOWN. INITIAL TASK WILL THEN TURN AROUND ALL INCOMING
* TRANSACTIONS INSTEAD OF PASSING THEM ON FOR PROCESSING.
IDLE BSS 0
ENTRY IDLE,K
SX7 B0+ SET INITIAL TRY
SA7 IDLA
NE B2,B1,PCMD3 IF INCORRECT PARAMETER COUNT
RJ IDL SET IDLE FLAGS
ZR X0,IDL2 IF NO COMMUNICATION BLOCK AVAILABLE
SA3 SREG
TX1 0,VFSCP
SB3 X3
LX1 18
TX2 0,VCPA SET NEW B2/B7 TO REPLECT INITIAL TASK
SB7 X2
BX7 X1+X2
EQ B3,B7,PCMDX CPU ASSIGNMENT NOT CHANGED BY IDL
SA7 SREG SET NEW CPU ASSIGNMENT
EQ PCMDX *RETURN
IDL1 SX6 B1 SET RETRY FLAG
SB2 B1
SA6 IDLA
EQ IDLE GO THRU IDLE DOWN AGAIN
IDL2 SA1 IDLA
ZR X1,PCMDX IF NOT A RETRY
RJ RSP RESTORE SUBCONTROL POINT REGISTERS
BX6 X6-X6 CLEAR TASK K-DISPLAY INTERLOCK
EQ KDISX
IDLA BSS 1 RETRY FLAG
PJND SPACE 4
*** K.JEND,XX,N.
*
* FORCE END OF REEL PROCESSING ON JOURNAL FILE -N- OF
* DATA BASE -XX-. JOURNALLING WILL CONTINUE FOR THIS FILE
* ON DISK UNTIL A NEW TAPE IS ASSIGNED.
* IF -N- IS NOT A TAPE FILE, THE COMMAND WILL BE IGNORED.
JEND BSS 0
ENTRY JEND,K
SB3 3
NE B2,B3,PCMD3 IF INCORRECT PARAMETER COUNT
SA5 SBUF+2
RJ DXB CONVERT TO BINARY
NZ X4,PCMD3 IF ERROR IN CONVERSION
TA2 0,VEDT EDT HEADER
ZR X6,PCMD3 IF INCORRECT JOURNAL FILE NUMBER
SA5 A5-B1 DATA BASE NAME
SB3 X2
MX7 12
EQ PJN2 ENTER LOOP
PJN1 SB3 X2 LINK TO NEXT EDT
ZR B3,PCMD3 IF UNKNOWN DATA BASE NAME
SA2 B3
PJN2 BX3 X7*X2 DATA BASE NAME OF CURRENT EDT
BX3 X3-X5
NZ X3,PJN1 IF NO MATCH ON DATA BASE NAME
SA2 A2+B1
AX2 18
SX0 X2 ADDRESS OF FIRST DATA BASE JOURNAL FILE
AX2 36
ZR X2,PCMD3 IF NO JOURNAL FILES FOR THIS DATA BASE
SX3 X2+B1
IX3 X6-X3
PL X3,PCMD3 IF INCORRECT JOURNAL FILE NUMBER
SX3 JFETL
SX6 X6-1
IX3 X3*X6 JOURNAL FILE FET BIAS
IX0 X0+X3 JOURNAL FILE FET ADDRESS
RECALL X0 RECALL ON JOURNAL FILE
SA1 X2+B1
SX6 OBUF SET FET POINTERS
MX4 42
SA6 A1+B1 IN
BX7 X4*X1
BX7 X7+X6
SA6 A6+B1 OUT
SA7 A1 FIRST
SX6 OBUF+OBUFL
SA1 X2
SA6 X2+4 LIMIT
SX3 B1
LX3 10
BX6 X3+X1 SET END OF REEL FLAG
SA6 A1
SA0 PCMDX RETURN ADDRESS
WRITER X2,R FORCE END OF REEL PROCESSING
JP PCMDX *RETURN
MAXFL SPACE 4,10
*** K.MAXFL,NNNNNN.
*
* CHANGE THE MAXIMUM AMOUNT OF FIELD LENGTH THAT *TAF* USES.
* IF THE AMOUNT IS LESS THAN THE CURRENT FIELD LENGTH, *TAF*
* WILL NOT MAKE AN EFFORT TO REDUCE. NORMAL FIELD LENGTH
* REDUCTIONS WILL CONTINUE, WITH THE FIELD LENGTH EVENTUALLY
* FALLING BELOW THE NEW MAXIMUM.
MAXFL BSS 0
ENTRY MAXFL,K
SB2 B2-B1
NE B2,B1,PCMD3 IF INCORRECT PARAMETER COUNT
SB7 B0
SA5 SBUF+1 MAXIMUM FIELD LENGTH VALUE
RJ DXB CONVERT TO BINARY VALUE
NZ X4,PCMD3 IF ERROR IN CONVERSION
SX5 MAXMFL MAXIMUM RFL OF TAF
IX5 X5-X6
NG X5,PCMD1 IF OUT OF RANGE
BX1 X6
SA6 DPBJ SAVE REQUESTED MFL
RJ COD CONSTANT TO OCTAL DISPLAY
SB2 1R+ REPLACEMENT CHARACTER
SB3 DAYB ALTERNATE ASSEMBLY AREA
SB5 -MAXA FWA OF MESSAGE
BX1 X6
LX1 24
RJ SNM SET NAME IN MESSAGE
MESSAGE DAYB * K.MAXFL,NNNNNNB.*
SA1 MFL CURRENT MFL
SA2 DPBJ REQUESTED MFL
IX2 X2-X1
PL X2,MAX1 IF MFL NOT DECREASING
* CHECK FOR POTENTIALLY BLOCKED TASKS.
RJ DBC DETECT BLOCKS IN CM RESIDENT TASKS
RJ DBN DETECT BLOCKS IN NON CM RESIDENT TASKS
ZR B7,MAX1 IF NO BLOCKED TASKS DETECTED
MESSAGE MAXB * K.MAXFL REJECTED.*
EQ PCMDX RETURN
* SET REQUESTED MFL.
MAX1 SA1 DPBJ GET REQUESTED MFL
BX6 X1
SA6 MFL
EQ PCMDX RETURN
MAXA DATA C* K.MAXFL,++++++B.*
MAXB DATA C* K.MAXFL REJECTED.*
NODEBUG SPACE 4,10
*** K.NODEBUG.
*
* TURN OFF *AIP* DEBUG OPTION.
NODEBUG BSS 0
ENTRY NODEBUG,K
.B IFEQ DBUG,0
SX6 B1+
RJ NDS TURN OFF *AIP* DEBUG OPTION
EQ PCMDX RETURN
.B ELSE
EQ PCMD6 *NOT AVAILABLE.*
.B ENDIF
OFFTASK SPACE 4,10
*** K.OFFTASK,AAAAAAA,DB.
*
* DISABLE THE TASK NAMED -AAAAAAA- OF DATA BASE -DB-.
OFFTASK BSS 0
ENTRY OFFTASK,K
SA2 SBUF+1 TASK NAME
SA3 LTTA *OFFTASK* TASK NAME
SB2 B2-B1
SB3 B1+B1
BX6 X6-X6
IX3 X3-X2
GT B2,B3,PCMD3 IF INCORRECT PARAMETER COUNT
ZR X3,PCMD3 IF TURN OFF THE *OFFTASK* TASK
EQ B2,B3,OFT1 IF D.B. SPECIFIED
BX6 X6-X6
SA6 A2+B1 CLEAR D.B. AREA
OFT1 SA0 0
SA3 A2+B1 DATA BASE NAME (IF=0 IMPLIES *TASKLIB*)
LX3 12
SB4 B0 DETECT *OFF* STATUS
SB5 B0 TASK SEARCH
RJ LTT LOCATE TASK
ZR X6,PCMD3 IF INCORRECT TASK NAME
SX4 A0
MX6 1
NZ X4,PCMD3 IF TASK ALREADY TURNED OFF
SA3 A1+TLTOW
LX6 -4
BX6 X6+X3 SET OFF BIT
SA6 A3+
EQ PCMDX *RETURN
ONTASK SPACE 4,10
*** K.ONTASK,AAAAAAA,DB.
*
* ENABLE THE TASK NAMED -AAAAAAA- OF DATA BASE -DB-. (DISABLED
* BY A PRIOR OFFTASK COMMAND.)
ONTASK BSS 0
ENTRY ONTASK,K
SA2 SBUF+1 TASK NAME
SB2 B2-B1
BX6 X6-X6
SB3 B1+B1
EQ B2,B3,ONT1 IF D.B. SPECIFIED
SA6 A2+B1
ONT1 SA0 0
SA3 A2+B1 DATA BASE NAME (IF=0 IMPLIES *TASKLIB*)
LX3 12
SB4 B0 DETECT *OFF* STATUS
SB5 B0 TASK SEARCH
RJ LTT LOCATE TASK
SX4 A0
SA3 A0 TLD WORD 2 OF TASK
ZR X4,PCMD3 IF TASK WAS NOT TURNED OFF
MX1 1
LX1 -4
BX7 -X1*X3 CLEAR OFF BIT
SA7 A3
EQ PCMDX *RETURN
SWITCH SPACE 4,10
*** K.SWITCH.
*
* TOGGLE TRANEX K-DISPLAY WITH TASK *KDIS* K-DISPLAY. *KDIS*
* CONTAINS A LIST OF ALL TRANEX K-DISPLAY COMMANDS.
*E
SWITCH BSS 0
ENTRY SWITCH,K
SA2 KDISB
SA1 KCTRL1 K-DISPLAY CONTROL WORD
NG X2,PCMD4 IF K-DISPLAY TASK SCHEDULED, BUT NOT ACTIVE
SA4 KTAS COMMAND DISPLAY TASK
SX2 X1-KFRM
NZ X2,SWI1 CURRENTLY DISPLAYING FROM A TASK
BX5 X5-X5 CLEAR CODE FOR TRN
SB3 B0 NO BUFFER INPUT FOR TASK SCHEDULING
SX7 B0+ SCHEDULE ONLY FROM SYSTEM LIBRARY
RJ TRN GENERATE A SYSTEM ORIGIN TRANSACTION
SX7 5 *TASK SCHEDULED* + *KDIS HAS SCREEN* BITS
ZR X0,PCMD4 IF TASK NOT SCHEDULED
SA4 KTAS
LX7 59-2
LX6 X4
BX7 X7+X0 MOVE C.B. ADDRESS INTO *KDISB*
SA6 KDISE
SA7 KDISB
EQ PCMDX *RETURN
* SET K-DISPLAY BACK TO TRANEX.
SWI1 MX6 42
SX2 KFRM
BX6 X6*X1 MASK OFF TASKS DISPLAY LOCATION
SA3 KDISG
BX6 X6+X2 DISPLAY FROM TRANEX PROGRAM BUFFER
SA6 A1
SA2 X3
SB6 X3 SUB CONTROL POINT WITH DISPLAY
SX4 X2-NUAPL START OF SUB CONTROL POINT
LX4 18
BX7 X4+X3
SA7 SREG
SX6 B0 CLEAR TASK K-DISPLAY INTERLOCK
LX4 -18
SA6 KDISB
CONSOLE KCTRL1 DEFINE TRANEX K-DISPLAY
MESSAGE ZWORD,2 ZERO OUT REQUEST K-DISPLAY MESSAGE
SB3 PCMDX
EQ RCPU REQUEST CPU FOR TASK WITH K-DISPALAY
ROLLTIM SPACE 4,10
*** K.ROLLTIM,NNNNNN.
*
* CHANGE THE AMOUNT OF TIME FOR TRANEX TO RETAIN ITS FIELD
* LENGTH BETWEEN COMMUNICATION INPUT BLOCKS.
ROLLTIM BSS 0
ENTRY ROLLTIM,K
SB2 B2-B1
NE B2,B1,PCMD3 IF INCORRECT PARAMETER COUNT
SB7 B1 SELECT DECIMAL CONVERSION
SA5 SBUF+1 TIME INTERVAL TO WAIT BETWEEN INPUTS
RJ DXB CONVERT TO BINARY VALUE
NZ X4,PCMD3 IF ERROR IN CONVERSION
SA6 ITRTL INTERVAL BETWEEN TRANEX INACTIVE ROLLOUTS
EQ PCMDX *RETURN
TBCON SPACE 4,20
*** K.TBCON,NN.
*
* CHANGE THE NUMBER OF BATCH/CRM USERS.
TBCON BSS 0
ENTRY TBCON,K
SA5 SBUF+1 NUMBER OF *BCT* ENTRIES
RJ DXB CONVERT TO BINARY VALUE
NZ X4,PCMD3 IF ERROR IN CONVERSION
SA1 VNBCT MAXIMUM NUMBER ALLOWED
MX0 -30
BX1 -X0*X1
IX2 X1-X6 SUBTRACT NUMBER SPECIFIED
NG X2,PCMD1 IF MORE THAN MAXIMUM
LX6 30 POSITION NUMBER SPECIFIED
BX6 X6+X1
SA6 A1 STORE NEW VALUE
EQ PCMDX *RETURN
SPACE 4,10
** COMMON DECKS.
*CALL COMKDPB
ENDOVL
IDL1 EQU /"PROD""M."/IDL1
TRANOVL (K-DISPLAY COMMANDS *2*.)
PMSG SPACE 4
*** K.MESSAGE,TN=TERMINAL NAME.-MESSAGE-
*
* SEND A MESSAGE TO TERMINAL -TN-.
* MESSAGES ARE SENT AS UNSOLICITED OUTPUT, AND AS SUCH SHOULD
* BE USED WITH CARE BECAUSE OF THE PROBABILITY OF PRINTING
* OUT ON A FORM.
MESSAGE BSS 0
ENTRY MESSAGE,K
RJ TARG PROCESS ARGUMENTS
ZR X3,PCMD3 IF NO TERMINAL SPECIFIED
LX3 18
BX5 X3 SAVE TST ORDINAL
SX7 3777B SET DISASSEMBLY COUNTER
* ASSEMBLE MESSAGE TO BE SENT.
SA1 PCMDC COMMAND BUFFER ADDRESS
SA1 X1+1 SCAN COMMAND TO TERMINATOR
SB5 PMSGC ASSEMBLY AREA
SA2 PMSGD TERMINATOR CHARACTER MASK
MX3 60-6 CHARACTER MASK
LX1 6
EQ PMSG2 ENTER SCAN LOOP
PMSG1 SA1 A1+B1 READ NEXT WORD
SX7 3777B RESET INPUT CHARACTER COUNT
LX1 6
PMSG2 AX7 1 COUNT CHARACTER
BX4 -X3*X1 PICK CHARACTER
ZR X7,PMSG1 IF INPUT WORD EXHAUSTED
SB6 X4+ CHECK TERMINATOR
LX1 6 SHIFT DISASSEMBLY
LX6 X2,B6
PL X6,PMSG2 IF NOT TERMINATOR
SA2 PMSGA PRESET FIRST PART OF MESSAGE
SB6 60-36 OUTPUT CHARACTER POSITION
SB7 6
BX6 X2
EQ PMSG4 ENTER ASSEMBLY LOOP
PMSG3 SA1 A1+B1 READ NEXT WORD
SX7 3777B RESET INPUT CHARACTER COUNT
LX1 6
PMSG4 AX7 1 COUNT CHARACTER
BX4 -X3*X1 PICK CHARACTER
ZR X7,PMSG3 IF INPUT WORD EXHAUSTED
ZR X4,PMSG5 IF END OF LINE
LX4 X4,B6 POSITION CHARACTER
SB6 B6-B7 ADVANCE ASSEMBLY POSITION
LX1 6 SHIFT ASSEMBLY
BX6 X6+X4 INSERT CHARACTER
PL B6,PMSG4 IF ASSEMBLY NOT FULL
SA6 B5 STORE ASSEMBLY WORD
SB5 B5+1
BX6 X6-X6 CLEAR ASSEMBLY WORD
SB6 60-6 RESET ASSEMBLY POSITION
EQ PMSG4 LOOP TO END OF LINE
PMSG5 SA6 B5 TERMINATE MESSAGE
BX7 X7-X7
SA7 A6+1
SX2 A7-PMSGB MESSAGE LENGTH
SX1 4001B BUFFER FUNCTION CODE
LX1 59-11
BX6 X1+X2
BX6 X6+X5 SET TERMINAL ORDINAL
SA6 PMSGB BUFFER CONTROL WORD
* SET UP CALL TO TRN TO CALL SYSMSG.
SA4 STAS SYSTEM MESSAGE TASK
SX5 CSMSG SYSTEM MESSAGE CODE
SB3 PMSGB FWA OF BUFFER
SX7 B0 SCHEDULE ONLY FROM SYSTEM LIBRARY
RJ TRN SCHEDULE SYSMSG TASK
NZ X0,PCMDX IF TASK SCHEDULED
EQ PCMD4 ISSUE *SYSTEM BUSY* MESSAGE
PMSGA DATA 5L.SYS HEADER FOR SYSTEM ORIGIN MESSAGES
PMSGB VFD 24/0,18/0,18/0 BUFFER CONTROL WORD
CON KDM0 NULL K-DISPLAY MESSAGE CODE
PMSGC BSS 8 MESSAGE SPACE
PMSGD BSS 0 COMMAND TERMINATOR CHARACTER MASK
VFD 1/1
POS 60-1R.
VFD 1/1
BSS 0
PTST SPACE 4,10
*** K.TST,TN=TERMINAL NAME,DB=AA,RS=N,US=N,UU=NNNN,UL=NNNN,
* NN=NEW TERMINAL NAME.
*
* CHANGE TERMINAL STATUS TABLE. THE PARAMETERS MAY BE GIVEN
* IN ANY ORDER, *TN* PARAMETER MUST BE GIVEN BUT THE OTHERS
* NEED ONLY BE GIVEN IF DESIRED.
* *TN* IS THE NAME OF TERMINAL WHOSE TERMINAL STATUS TABLE
* ENTRY IS TO BE CHANGED.
* *DB* IS THE NEW DATA BASE NAME FOR TERMINAL TN.
* *RS* IS THE NEW READ SECURITY FOR TERMINAL TN.
* *US* IS THE NEW UPDATE SECURITY FOR TERMINAL TN.
* *UU* IS THE NEW VALUE OF THE UPPER 24 BITS OF THE USER
* ARGUMENT AREA FOR TERMINAL TN.
* *UL* IS THE NEW VALUE OF THE LOWER 24 BITS OF THE USER
* ARGUMENT AREA FOR TERMINAL TN.
* *NN* IS THE NEW NAME TO BE GIVEN TO TERMINAL TN.
*
*E
TST BSS 0
ENTRY TST,K
SB4 B2-B1 ARGUMENT COUNT
SA4 SBUF+1 FIRST ARGUMENT FOR COMCARG
SB7 B0
SB5 PTSTA ARGUMENT TABLE
RJ ARG PROCESS COMMAND ARGUMENTS
NZ X1,PTST12 IF ERROR IN ARGUMENTS
* SEARCH TERMINAL STATUS TABLE FOR TERMINAL NAME.
SA4 PTSTTN TERMINAL NAME
BX3 X3-X3
MX6 -14
ZR X4,PTST12 IF NO TERMINAL NAME IN COMMAND
RJ STST SEARCH TERMINAL STATUS TABLE
ZR X3,PTST12 IF TERMINAL NOT FOUND
SX7 NAM
SA2 A3-B1 WORD 1 OF TERMINAL STATUS TABLE (TST)
SX6 X3+ TST ORDINAL OF TERMINAL
LX2 59-TSTOS
ZR X7,PTST2 IF NOT TAFNAM MODE
PL X2,PTST12 IF TERMINAL ON
PTST2 SA6 PTSTC
* PROCESS DATA BASE PARAMETER *DB*
SA1 PTSTDB DATA BASE NAME
MX6 -48
ZR X1,PTST3 IF NO *DB* PARAMETER IN COMMAND
BX2 -X6*X1
NZ X2,PTST12 IF GREATER THEN 2 CHARACTERS
SA2 A3-B1 WORD 1 OF TERMINAL STATUS TABLE
LX6 36
BX7 -X6*X2
LX1 36
BX7 X7+X1 MASK IN NEW DATA BASE NAME
SA7 A2
* PROCESS READ SECURITY PARAMETER *RS*
PTST3 SA5 PTSTRS READ SECURITY VALUE
ZR X5,PTST4 IF NO *RS* PARAMETER IN COMMAND
SB7 B0
RJ DXB CONVERT TO BINARY NUMBER
NZ X4,PTST12 IF CONVERSION ERROR
MX1 -3
BX2 X1*X6
NZ X2,PTST12 IF RS GREATER THAN 7
LX1 42-3
SA2 A3-B1 WORD ONE OF TST
LX6 42-3
BX2 X1*X2
BX7 X2+X6 PLACE NEW RS IN TST
SA7 A2
* PROCESS UPDATE SECURITY PARAMETER *US*
PTST4 SA5 PTSTUS UPDATE SECURITY VALUE
ZR X5,PTST5 IF NO *US* PARAMETER IN COMMAND
SB7 B0
RJ DXB CONVERT TO BINARY NUMBER
NZ X4,PTST12 IF CONVERSION ERROR
MX1 -3
BX2 X1*X6
NZ X2,PTST12 IF US GREATER THAN 7
LX1 39-3
SA2 A3-B1 WORD ONE OF TST
LX6 39-3
BX2 X1*X2
BX7 X2+X6 PLACE NEW US IN TST
SA7 A2
* PROCESS USER AREA UPPER PARAMETER *UU*
PTST5 SA5 PTSTUU UPPER USER AREA VALUE
ZR X5,PTST6 IF NO *UU* PARAMETER IN COMMAND
SB7 B0
RJ DXB CONVERT TO BINARY NUMBER
NZ X4,PTST12 IF CONVERSION ERROR
MX1 -12
BX2 X1*X6
NZ X2,PTST12 IF UU GREATER THAN 2**12-1
LX1 24-12
LX6 24-12
SA2 A3-B1 WORD 1 OF TST
BX7 X1*X2
BX7 X7+X6 PLACE NEW UU IN TST
SA7 A2
* PROCESS USER AREA LOWER PARAMETER *UL*
PTST6 SA5 PTSTUL LOWER USER AREA VALUE
ZR X5,PTST7 IF NO *UL* PARAMETER IN COMMAND
SB7 B0
RJ DXB CONVERT TO BINARY NUMBER
NZ X4,PTST12 IF CONVERSION ERROR
MX1 -12
BX2 X1*X6
NZ X2,PTST12 IF UL GREATER THAN 2**12-1
MX1 12
LX1 12
SA2 A3-B1 WORD 1 OF TST
BX7 -X1*X2
BX7 X7+X6 PLACE NEW UL IN TST
SA7 A2
* PROCESS NEW TERMINAL NAME *NN*
PTST7 SA4 PTSTNN NEW TERMINAL NAME
ZR X4,PTST9 IF NO *NN* PARAMETER IN COMMAND
SB5 A3+ SAVE TST ADDRESS
RJ STST SEARCH TERMINAL STATUS TABLE
NZ X3,PTST12 IF TERMINAL FOUND
SA2 B5 SECOND WORD OF TST
MX1 -12
BX6 -X1*X2
BX6 X6+X4 NEW NAME TO TST
SA6 A2+
PTST9 SB3 PCMDX
* CLEAR ARGUMENTS FOR NEXT COMMAND
PTST10 BX6 X6-X6
SA6 PTSTTN
SB2 PTSTNN
PTST11 SA6 A6+B1
SB4 A6
LT B4,B2,PTST11 IF NOT END OF TABLE
JP B3 RETURN
PTST12 SB3 PCMD3 *FORMAT ERROR* EXIT ADDRESS
EQ PTST10 CLEAR PARAMETER LIST
PTSTA BSS 0
TN ARG PTSTB,PTSTTN
DB ARG PTSTB,PTSTDB
RS ARG PTSTB,PTSTRS,400B
US ARG PTSTB,PTSTUS,400B
UL ARG PTSTB,PTSTUL,400B
UU ARG PTSTB,PTSTUU,400B
NN ARG PTSTB,PTSTNN
PTSTB CON 0
PTSTC BSS 1 TST ORDINAL FOR TERMINAL
PTSTTN BSSZ 1 TERMINAL NAME
PTSTDB BSSZ 1 DATA BASE NAME
PTSTRS BSSZ 1 READ SECURITY
PTSTUS BSSZ 1 UPDATE SECURITY
PTSTUL BSSZ 1 USER AREA LOWER
PTSTUU BSSZ 1 USER AREA UPPER
PTSTNN BSSZ 1 NEW TERMINAL NAME
TARG SPACE 4
** TARG TERMINAL COMMAND ARGUMENT CRACKER
*
* ENTRY (B2) = ARGUMENT COUNT
*
* EXIT (X3) = TST ORDINAL OF TERMINAL SPECIFIED IN COMMAND
* (A3) = TST ADDRESS OF TERMINAL SPECIFIED IN COMMAND
TARG PS
SB4 B2-1 ARGUMENT COUNT
SA4 SBUF+1 FIRST ARGUMENT FOR COMCARG
SB5 TARGA ARGUMENT TABLE
RJ ARG PROCESS COMMAND ARGUMENTS
NZ X1,PCMD3 IF ERROR IN ARGUMENTS
SA4 TN TERMINAL NAME
BX3 X3-X3
MX6 -14
ZR X4,TARG3 NO TERMINAL NAME IN COMMAND
RJ STST SEARCH TERMINAL STATUS TABLE
ZR X3,PCMD3 IF INCORRECT USER/TERMINAL
* CLEAR ARGUMENTS FOR NEXT COMMAND
TARG3 BX6 X6-X6
SA6 TN TERMINAL NAME
EQ TARG *RETURN
TARGA BSS 0
TN ARG TARGB,TN TERMINAL NAME
TARGB CON 0
TN BSS 1 TERMINAL NAME
ENDOVL
TRANOVL (K-DISPLAY COMMANDS *3*.)
DIS SPACE 4,35
*** K.DIS,TASKNAME,P1,P2,P3,P4,P5,P6.
*
* THE NAMED TASK WILL BE SCHEDULED FOR EXECUTION
* VIA SUBROUTINE *TRN*. THE OPTIONAL PARAMETERS WILL BE
* MOVED TO THE TEMPORARY AREA *DISC*. THIS AREA WILL BE
* SUBMITTED TO *TRN* AS INPUT AND EVENTUALLY END UP IN THE
* TASK-S COMMUNICATION BLOCK.
* NOTE THAT IF NO OPTIONAL PARAMETERS ARE PRESENT,
* TASK RECEIVES ONLY THE COMMUNICATION BLOCK HEADER.
* *SYSTEM BUSY* MESSAGE WILL APPEAR ON *K-DISPLAY* IF ANOTHER
* TASK HAS THE *K-DISPLAY* AT THIS TIME.
*
* ENTRY (B2) = NUMBER OF PARAMETERS IN *SBUF*.
* (SBUF+0) = DIS.
* (SBUF+1) = TASK NAME.
* (SBUF+2)...(SBUF+7) = OPTIONAL PARAMETERS.
* (KDISB) = BIT 59 SET TO 1, IF ANOTHER TASK
* HAS THE *K-DISPLAY*.
*
* EXIT (KDISB) = BITS 53-59 SET ACCORDING TO THE BIT
* MASK IN *BM* FIELD OF *DISA* TABLE ENTRY.
* TO *PCMDX*, IF TASK SCHEDULED.
* TO *PCMD1*, IF INCORRECT TASK OR TOO MANY PARAMETERS.
* TO *PCMD4*, IF ANOTHER TASK HAS THE DISPLAY OR
* IF NO COMMUNICATION BLOCK AVAILABLE.
*
* USES X - 0, 2, 3, 4, 5, 6.
* A - 2, 3, 4, 6.
* B - 2, 3, 4, 6.
*
* CALLS TRN.
DIS BSS 0
ENTRY DIS,K
SA2 KDISB
NZ X2,PCMD4 IF ANOTHER TASK HAS THE *K-DISPLAY*
SA4 SBUF+1
SB4 DISAL-1
MX0 42
SA2 DISA
SX5 B0 MESSAGE CODE FOR *TRN*
DIS1 SA3 A2+B4 VERIFY TASK NAME
BX6 X0*X3
BX6 X6-X4
SB4 B4-B1
ZR X6,DIS2 IF TASK FOUND
PL B4,DIS1 IF NOT ALL NAMES EXAMINED
EQ PCMD1 INCORRECT TASK NAME
DIS2 SA2 DISD PICK UP THE MODEL HEADER
SB6 B2+ NUMBER OF PARAMETERS IN *SBUF*
MX0 -12
BX3 -X0*X3 NUMBER OF PARAMETERS ALLOWED THIS TASK
SB6 B6-2 NUMBER OF OPTIONAL PARAMETERS
SX6 B6
SA6 DISF SAVE NUMBER OF OPTIONAL PARAMETERS
SB3 X3
SX6 A3+
SA6 DISE SAVE *DISA* ENTRY ADDRESS
SX6 B6+B1
BX6 X6+X2
LT B3,B6,PCMD1 IF TOO MANY PARAMETERS
SA6 DISB BUFFER HEADER
SB3 DISB
LE B6,DIS4 IF NO PARAMETERS TO MOVE
SB4 DISC-1
DIS3 SA2 SBUF+1+B6 MOVE PARAMETERS
BX6 X2
SA6 B4+B6
SB6 B6-1
NE B6,DIS3 IF NOT ALL PARAMETERS MOVED
DIS4 RJ TRN SCHEDULE TASK
ZR X0,PCMD4 IF NO COMMUNICATION BLOCK AVAILABLE
SA2 DISF
SB4 X2-CBDL
SB4 -B4 NUMBER OF WORDS TO ZERO OUT
BX6 X6-X6 CLEAR REST OF DATA INPUT AREA IN C.B.
SX3 X0+CMBHL+CMBRL+CBDL *TDUA*
SB3 X3-1 LWA OF DATA INPUT AREA
DIS5 SA6 B3+
SB3 B3-B1
SB4 B4-B1
NZ B4,DIS5 IF REST OF DATA INPUT AREA NOT CLEAR
SX4 CBDL+5 RESET MESSAGE WORD COUNT IN C.B.
SA2 X0+CMBHL+1
MX6 48
BX6 X6*X2
BX6 X6+X4
SA6 A2
MOVE 5,KBUF,X3 MOVE INPUT TO USER DEFINED AREA OF C.B.
SA2 DISE ADDRESS OF THE TASK ENTRY
MX6 42
MX3 6
SA2 X2+
BX6 X6*X2 TASK NAME
LX2 59-17
SA6 KDISE
BX6 X3*X2
BX6 X6+X0 MOVE C.B. ADDRESS INTO *KDISB*
SA6 KDISB
EQ PCMDX RETURN
** DISA - TASKS THAT CAN BE INVOKED BY *K-COMMAND*.
*
*T 42/TN,6/BM,12/NO
*
* TN = TASK NAME.
* BM = BIT MASK TO INSERT IN *KDISB* BITS 53-59.
* NO = MAXIMUM NO. OF PARAMETERS (INCL. TASK NAME).
DISA BSS 0
VFD 42/7LCRMTASK,6/64B,12/3
DISAL EQU *-DISA
DISB BSS 1 HEADER WORD
DISC BSS 7 MESSAGE BUFFER
DISD VFD 12/4001B,12/0,18/0,18/0 PROTOTYPE HEADER
DISE BSS 1
DISF BSS 1 LENGTH OF UNPACKED INPUT IN WORDS
DUMP SPACE 4,20
*** K.DUMP,FWA,LWA. OR K.DUMP,LWA. OR K.DUMP.
*
* DUMP THE TRANSACTION EXECUTIVE FIELD LENGTH, WHERE FWA IS
* THE FIRST WORD OF MEMORY TO DUMP AND LWA IS THE LAST WORD
* OF MEMORY TO DUMP. THE DUMP WILL BE ROUTED TO A PRINTER
* WITH AN *ID* OF *DRID*.
*
* ENTRY (B2) = THE NUMBER OF PARAMETERS.
* (SBUF - SBUF+2) = PARAMETERS.
*
* EXIT TAF FIELD LENGTH DUMP COMPLETE.
* TO *PCMD3* IF ERROR ENCOUNTERED.
*
* USES X - 1, 2, 3, 4, 5, 6, 7.
* A - 1, 2, 3, 4, 5, 6, 7.
* B - 6, 7.
*
* CALLS DXB.
*
* MACROS CLOCK, DATE, MESSAGE, ROUTE, SYSTEM, WRITER, WRITEW.
DUMP BSS 0
ENTRY DUMP,K
SB7 3
GT B2,B7,PCMD3 IF INCORRECT PARAMETER COUNT
SB6 B2
SB7 B0+ ASSUME OCTAL FOR PARAMETER CONVERSION
* SET THE DEFAULT FWA AND LWA VALUES.
BX6 X6-X6
SX7 377777B
SA6 DUMQ ASSUME FWA = 0
SA7 DUMR ASSUME LWA = 377777B
* OBTAIN THE FIRST AND LAST ADDRESS OF THE DUMP
* FROM THE PARAMETERS.
EQ B6,B1,DUM2 IF FORM OF COMMAND IS *DUMP.*
SA5 SBUF+1 SECOND PARAMETER
RJ DXB CONVERT SECOND PARAMETER TO BINARY
NZ X4,PCMD3 IF ERROR IN CONVERSION OF NUMBER
SB7 3
EQ B6,B7,DUM1 IF FORM OF COMMAND IS *DUMP,FWA,LWA.*
SA6 DUMR USE SECOND PARAMETER AS LWA FOR DUMP
EQ DUM2 CHECK FOR ADDITIONAL ERRORS
DUM1 SB7 0
SA6 DUMQ USE SECOND PARAMETER AS FWA FOR DUMP
SA5 SBUF+2 THIRD PARAMETER
RJ DXB CONVERT THIRD PARAMETER TO BINARY
NZ X4,PCMD3 IF ERROR IN CONVERSION OF NUMBER
SA6 DUMR USE THIRD PARAMETER AS LWA
* CHECK FOR MORE ERRORS IN THE PARAMETERS.
DUM2 SA4 DUMQ FWA OF DUMP
SA5 DUMR LWA OF DUMP
IX6 X5-X4
SA3 DUMT MAXIMUM FL FOR A CONTROL POINT
IX3 X5-X3
PL X3,PCMD3 IF LWA .GE. MAXIMUM FL FOR A CONTROL POINT
NG X6,PCMD3 IF FWA .GE. LWA+1
* SET VARIABLE FIELDS IN THE HEADER PAGE.
SA2 DUMS
SA3 PCMDB
BX6 X2
ZR X3,DUM3 IF OPERATOR INITIATED
MX4 12
SA3 X3+2 WORD 3 OF SUBCONTROL POINT TABLE
BX3 X3*X4
LX3 12 TASK DIRECTORY INDEX
TA3 X3-1,VTLD TASK LIBRARY DIRECTORY ENTRY
MX4 42
BX6 X4*X3 TASK NAME LEFT JUSTIFIED, ZERO FILLED
DUM3 SA6 DUMJ MERGE TASK NAME INTO MESSAGE
DATE DUMD MERGE DATE INTO MESSAGE
CLOCK DUME MERGE TIME INTO MESSAGE
* WRITE THE HEADER PAGE.
SX5 DUMU
DUM4 WRITEW O,DUMA,DUMB SECURE MESSAGE
SX5 X5-1
NZ X5,DUM4 IF MORE MESSAGE
SX5 DUMV
DUM5 WRITEW X2,DUML,DUMM CARRIAGE CONTROL TO SKIP LINE
SX5 X5-1
NZ X5,DUM5 IF MORE MESSAGE
WRITEW X2,DUMC,DUMF DATE AND TIME
WRITEW X2,DUMG,DUMH DESCRIPTIVE MESSAGE
WRITEW X2,DUMI,DUMK ORIGINATOR OF DUMP
SX5 DUMV
DUM6 WRITEW X2,DUML,DUMM CARRIAGE CONTROL TO SKIP LINE
SX5 X5-1
NZ X5,DUM6 IF MORE LINES TO SKIP
SX5 DUMU
DUM7 WRITEW X2,DUMA,DUMB SECURE MESSAGE
SX5 X5-1
NZ X5,DUM7 IF MORE MESSAGE
WRITER X2,R COMPLETE WRITING THE HEADER PAGE
* COMPLETE THE DUMP OPERATION.
SA4 DUMQ FWA OF DUMP
SA5 DUMR LWA OF DUMP
SYSTEM DMD,R,X5,X4 REQUEST DUMP
ROUTE DUMN,R DISPOSE DUMP TO PRINT QUEUE
MESSAGE DUMO,0 MESSAGE TO DAYFILE
SA1 DUMN CLEAR ROUTE COMPLETION BIT
MX2 59
BX6 X2*X1
SA6 DUMN
EQ PCMDX EXIT
DUMA DATA 40L * * * * * * * * * * * * * * * * * * SE
DATA 40LCURE, GIVE TO CENTRAL SITE TAF SYSTEMS A
DATA 48CNALYST ONLY. * * * * * * * * * * * * * * * * * *
DUMB EQU *-DUMA MESSAGE LENGTH
DUMC DATA 50L
DUMD DATA 10H YY/MM/DD. DATE OF DUMP
DUME DATA 10H HH.MM.SS. TIME OF DUMP
CON 0 END OF LINE
DUMF EQU *-DUMC MESSAGE LENGTH
DUMG DATA 50L THE FOLLOWIN
DATA 40CG IS A DUMP OF THE FIELD LENGTH OF TAF.
DUMH EQU *-DUMG MESSAGE LENGTH
DUMI DATA 50L
DATA 20L DUMP INITIATED BY
DUMJ BSS 1 ORIGINATOR OF DUMP
DUMK EQU *-DUMI MESSAGE LENGTH
DUML VFD 60/1C-
DUMM EQU *-DUML
DUMN VFD 42/6LOUTPUT,18/0 ROUTE PARAMETER BLOCK
VFD 24/0,12/2LLP,24/00000026B
VFD 36/0,24/DRID
BSSZ 2
DUMO DATA 32C TAF FIELD LENGTH DUMP RELEASED.
DUMQ BSS 1 FWA OF DUMP
DUMR BSS 1 LWA OF DUMP
DUMS DATA 8COPERATOR
DUMT CON FLMAX MAXIMUM FL FOR A CONTROL POINT
* HEADER PAGE REPEAT COUNT DEFINITIONS.
DUMU EQU 15 SECURE MESSAGE REPEAT COUNT
DUMV EQU 5 LINE FEED REPEAT COUNT
DUMPLIM SPACE 4,20
*** K.DUMPLIM,N. OR K.DUMPLIM.
*
* SET THE GLOBAL TASK DUMP LIMIT TO THE VALUE SPECIFIED BY
* THE PARAMETER. IF NO PARAMETER IS SPECIFIED THE LIMIT IS
* SET TO ZERO. THE GLOBAL TASK DUMP FLAG IS CLEARED.
*
* ENTRY (B2) = NUMBER OF PARAMETERS.
* (SBUF - SBUF+1) = PARAMETERS.
*
* EXIT GLOBAL TASK DUMP LIMIT IS SET TO VALUE SPECIFIED.
* GLOBAL TASK DUMP FLAG IS CLEARED.
* TO *PCMD3* IF ERROR ENCOUNTERED.
*
* USES X - 5, 6.
* A - 5, 6.
* B - 3, 7.
*
* CALLS DXB.
DUMPLIM BSS 0
ENTRY DUMPLIM,K
SX6 B0+
EQ B2,B1,DML1 IF *N* IS NOT SPECIFIED
SB3 B1+B1
SB7 B1 DECIMAL BASE ASSUMED
GT B2,B3,PCMD3 IF INCORRECT PARAMETER COUNT
SA5 SBUF+1 NEW GLOBAL TASK DUMP LIMIT
RJ DXB CONVERT TO BINARY
NZ X4,PCMD3 IF ERROR IN CONVERSION
DML1 SA6 GTDL SAVE GLOBAL TASK DUMP LIMIT
EQ PCMDX EXIT
ENDOVL
TRANOVL (UPDATE A TASK LIBRARY.)
ULD SPACE 4,35
** ULD - UPDATE CORE COPY OF A TASK LIBRARY DIRECTORY.
*
* UPDATE LIBRARY DIRECTORY IS EXECUTED IN RESPONSE TO A
* *LIBTASK,TT* REQUEST FOR AN ON-LINE TASK LIBRARY UPDATE BY
* PASSING THE USER NAME AND LIBRARY NAME TO THE TRANSACTION
* EXECUTIVE VIA A *SIC* REQUEST. IF THE USER NAME AND
* LIBRARY NAME DO NOT MATCH, A POSSIBLE BREACH OF SECURITY IS
* ASSUMED AND THE USER NAME AND LIBRARY NAME ARE JOURNALLED
* AND NO UPDATES ARE ATTEMPTED. OTHERWISE, MEMORY FOR THE
* UPDATE IS REQUESTED FROM *RCP* AND THE DIRECTORY READ INTO
* MEMORY. IF THE FORMAT OF THE NEW DIRECTORY IS CORRECT AND
* THE UPDATE DOES NOT RESULT IN A SITUATION WHERE ENOUGH FL
* CANNOT OR MIGHT NOT BE OBTAINED, THE NEW DIRECTORY REPLACES
* THE OLD ONE.
*
* ENTRY TO *ULD* IF FIRST ATTEMPT.
* (INRB) = LIBRARY UPDATE REQUEST.
* (PCMDF) = 0 IF NO LIBTASK REQUEST ACTIVE.
* TO *ULD0* IF RETRY ATTEMPT.
* (X4) = FIRST WORD OF LIBRARY REQUEST.
* (A4) = FWA OF LIBRARY REQUEST.
*
* EXIT TO *TSSC*.
* (KDISA) = USER NAME IF UPDATE MUST BE RETRIED.
* (KDISB) = TASK LIBRARY IF UPDATE MUST BE RETRIED.
*
* USES X - ALL.
* A - 1, 2, 3, 4, 5, 6, 7.
* B - 3, 4, 5, 6.
*
* CALLS ESCP1, JRNL, PBL, PNM, RCP.
*
* MACROS ATTACH, MOVE, READSKP, RECALL, RENAME, RETURN,
* SKIPB, SKIPEI.
ULD BSS 0
ENTRY ULD
SA4 PCMDF LIBTASK ACTIVE FLAG
NZ X4,TSSC IF LAST LIBTASK NOT COMPLETE
SX6 B1 SET LIBTASK ACTIVE
SA6 A4
SA4 INRB INTERCONTROL POINT RECEIVING BUFFER 0
ULD0 RECALL TL WAIT FOR LIBRARY FILE IDLE
SA4 A4+B1
BX6 X4 SAVE USER NAME
SA6 PCMDG
BX7 X7-X7 CLEAR INTERCONTROL POINT RECEIVING BUFFER
MX6 42
SA5 A4+B1 READ TASK LIBRARY NAME
BX0 X6*X5 (X0) = LIBRARY NAME
BX1 X6*X4 USER NAME OF LIBTASK SUBMITTER
SA7 A4-B1
BX6 X0
MX4 42
SA6 PCMDH
SA5 TL+B1
MX3 -48
BX6 -X3*X5 CLEAR DEVICE TYPE FROM FET
SA3 DEVT DEFAULT DEVICE TYPE
BX7 X7-X7
LX3 -12
BX6 X6+X3
SA6 A5
SA7 TL+CFPK CLEAR PACK NAME FROM FET
SA3 VUSN USER NAME FOR LIBRARY FILE
SA2 VTFL SYSTEM TASK LIBRARY NAME
BX7 X1-X3
LX6 X2
NZ X7,ULD0.1 IF NOT TAF-S USER NAME
BX7 X6-X0
BX4 X4*X7
TX7 0,VTLD
ZR X4,ULD3 IF SYSTEM TASK LIBRARY
ULD0.1 TA4 0,VEDT READ *EDT* HEADER
SB5 B1+B1
MX6 42
EQ ULD2 ENTER USER NAME VALIDITY SEARCH
* SEARCH *EDT* HEADERS FOR MATCHING USER NAME.
ULD1 ZR X4,ULD15 IF INCORRECT USER NAME
SA4 X4+
ULD2 SX4 X4
SA3 A4+B5
BX3 X6*X3
IX7 X3-X1
NZ X7,ULD1 IF NO MATCH ON USER NAME
* CHECK LIBRARY NAME FOR USER NAME.
SA5 A3+B5 (A5) = FWA OF FIRST TASK
LX5 17-35
ZR X5,ULD15 IF LIBRARY NOT ATTACHED
SA5 X5-1 READ TASK LIBRARY NAME
BX7 X6*X5
BX5 X7-X0
NZ X5,ULD1 IF NO MATCH ON LIBRARY NAME
BX6 X1 SAVE USER NAME
SA6 PCMDG
MX5 12
SA1 A4 FWA OF *EDT* HEADER
SA4 A3+B5 FWA OF XXTASKL FROM EDT HEADER + 4
BX7 X4
MX6 48
ZR X4,TSSC IF TASK LIBRARY NOT AT CONTROL POINT
* DETERMINE DEVICE ATTRIBUTES OF LIBRARY FILE RESIDENCE AND
* ATTACH FILE.
SA4 A4+B1 PACK NAME FROM EDT HEADER + 5
LX6 6
BX6 X6*X4
LX4 -18
BX4 X5*X4 DEVICE TYPE
AX7 18
SA5 TL+1
SA6 TL+CFPK PACK NAME AND UNIT INTO TASKLIB FET
MX6 -48
BX5 -X6*X5
IX6 X4+X5
SA6 A5 DEVICE TYPE INTO FET
ULD3 SA1 ULDE LOCAL FILE NAME
BX6 X1
SA6 TL STORE FILE NAME
MX2 1
SA5 A6+B1
SA7 ULDD FWA FOR *DBTASKL*
LX2 44-59 SET *EP* BIT TO CHECK FOR ATTACH ERROR
BX7 X2+X5
SA7 A5
ATTACH TL,PCMDH,X3,,M ATTACH,ZZZZZTL=DBTASKL/M=W
SA1 X2 FIRST WORD OF FET
BX7 X5
MX2 52
SA7 A5 CLEAR *EP* BIT FROM FET
LX2 10-0
BX7 X2*X1 CLEAR ERROR STATUS
SA7 A1
BX2 -X2*X1 ABNORMAL STATUS CODES
NZ X2,ULD14 IF ERROR ON ATTACH
SA1 ULDD FWA OF *DBTASKL*
SA2 X1-4
* REQUEST MEMORY FROM *RCP* AND READ DIRECTORY INTO
* PROVIDED SPACE.
SX0 X2+77B AMOUNT OF CORE TO REQUEST
AX0 6
LX0 6
BX6 X0 SAVE *TLD* LENGTH
LX2 TRFWN-1-TRFWS GET FWA OF *TRD*
SA1 X2-3
SX3 TRDLE1*TRDMN EXPANSION AREA OF *TRD*
LX1 TDLDN-1-TDLDS
SX1 X1 LENGTH OF DIRECTORY IN *TRD* HEADER
ERRNZ TDLDN-18 *TDLDN* NOT 18 BITS
IX3 X1+X3 SPACE NEEDED TO READ IN THE *TRD*
SX3 X3+177B ROUND TO NEAREST 200B
AX3 6
LX3 6
IX0 X3+X6 AMOUNT OF SPACE TO REQUEST
LX3 18
BX6 X3+X6
SA6 ULDK SAVE SPACE REQUIRED
RJ RCP REQUEST SUBCONTROL POINT
ZR X5,ULD13 IF MEMORY NOT AVAILABLE
SX6 B4+ SAVE SUBCP ADDRESS
SA6 PCMDD
SA1 TL+1 SET FET TO READ IN DIRECTORY
MX2 -18
SX6 X5 START OF CORE TO READ DIRECTORY TO
BX7 X2*X1
BX7 X7+X6
SA6 A1+B1 IN
SA7 A1 FIRST
SA6 A6+B1 OUT
SA3 A6+B1 LIMIT
BX7 X2*X3
BX7 X7+X6
SA1 ULDK
SX0 X1+ LIMIT FOR *TLD*
IX7 X7+X0
SA7 A3 LIMIT
SKIPEI TL,R SKIP TO EOI
SKIPB TL,2,R BACKSPACE TO POSITION AT DIRECTORY
READSKP TL,,R READ IN DIRECTORY
SA1 ULDD
SA3 X1-4
SA4 TL+2 IN
SA2 A4+B1 OUT
IX6 X4-X2 (X6) = NUMBER OF WORDS IN NEW *TLD*
SX0 X3
IX6 X0-X6
NG X6,ULD18 IF *TLD* ENLARGED PAST EXPANSION AREA
* CHECK NEW DIRECTORY HEADER FOR LEGALITY.
ULD6 SB4 B1+B1
SB5 X1 FWA OF OLD *TLD*
SA1 X1-3 OLD HEADER
SA2 X5+B1 NEW HEADER
SA4 ULDJ MASK FOR OLD DIRECTORY ENTRY EXTRACTION
MX3 42
BX7 X7-X7
LX6 X4
BX1 X3*X1 COMPARE UPPER 42 BITS ONLY
BX2 X3*X2
IX3 X2-X1 COMPARE
NZ X3,ULD17 IF NOT SAME TASK
SA3 TL+2 IN
SB3 X3+
SA4 TL+4 LIMIT
SB6 X4
SA2 B5
ULD8.1 SA7 B3 ZERO OUT TO END OF BUFFER
SB3 B3+B1
NE B3,B6,ULD8.1 IF NOT END OF BUFFER
MX4 59
SB3 TLDLE
MX3 59
LX4 57-0
LX3 TLQUS-0
SB6 X5+4 FWA OF NEW *TLD*
BX4 X3*X4 MASK FOR NEW ATTRIBUTES TO IGNORE
* ADD USAGE COUNTERS FROM CURRENT DIRECTORY.
ULD9 MX1 TLTNN MASK TASK NAME
SA3 B6 FWA OF NEW DIRECTORY ENTRY
BX7 X2-X3
BX7 X1*X7
NZ X7,ULD13.1 IF NO MATCH ON TASK NAME
SA3 A3+B4 THIRD WORD OF *TLD*
SA2 A2+B4
SB5 B5+B3
BX7 X6*X2 USAGE COUNTERS AND TASK STATUS
SB6 B6+B3
BX3 X4*X3 IGNORE NEW CM RESIDENT FIELD
BX7 X7+X3 ADD TO NEW DIRECTORY WORD
LX3 59-56 CHECK EXTENDED MEMORY BIT IN NEW ENTRY
PL X3,ULD11 IF NOT EXTENDED MEMORY RESIDENT
LX2 59-56 CHECK EXTENDED MEMORY BIT IN OLD ENTRY
PL X2,ULD10 IF NOT EXTENDED MEMORY RESIDENT
SA2 A2-2 REPLACE NEW ENTRY WITH OLD
BX7 X2
SA2 A2+B1
SA7 A3-2
BX7 X2
SA7 A7+B1
SA2 A2+B1
BX7 X2
EQ ULD11 CHECK END OF DIRECTORY
ULD10 SX2 1 CLEAR EXTENDED MEMORY BIT IN NEW ENTRY
LX2 56
BX7 -X2*X7
ULD11 SA7 A3
SA2 B5
NZ X2,ULD9 IF NOT FINISHED PROCESSING DIRECTORY
ULD11.1 SA3 B6+ NEXT *TLD* ENTRY IN NEW DIRECTORY
ZR X3,ULD11.2 IF FINISHED PROCESSING NEW INSERTIONS
SA3 A3+B4 THIRD WORD OF *TLD*
SB6 B6+B3 NEXT *TLD* ENTRY
LX3 59-TLECS CHECK EXTENDED MEMORY BIT IN NEW ENTRY
MX2 TLECN
PL X3,ULD11.1 IF NOT EXTENDED MEMORY RESIDENT
BX7 -X2*X3 CLEAR EXTENDED MEMORY BIT IN NEW ENTRY
LX7 TLECS-59
SA7 A3+
EQ ULD11.1 CHECK NEXT *TLD* ENTRY
* CHECK FOR POTENTIALLY BLOCKED TASKS.
ULD11.2 RJ PBL POTENTIAL BLOCKS DURING LIBRARY UPDATE
ZR B7,ULD11.3 IF NO BLOCKED TASKS DETECTED
EQ ULD13.1 BLOCKED TASKS DETECTED
* READ *TRD* FROM TASK LIBRARY.
ULD11.3 SX2 X5+TLDLH SAVE START OF NEW *TLD*
SA1 ULDD START OF OLD DIRECTORY
IX4 X2-X1 OFFSET OF DIRECTORY
LX2 18
BX6 X1+X2
SA6 ULDL
SX2 X0-TLDLH NUMBER OF WORDS TO MOVE
LX2 36
BX6 X2+X6
SA6 ULDM SAVE MOVE INFORMATION
RJ URD UPDATE *TRD*
ZR B3,ULD13.1 IF UPDATE *TRD* UNSUCCESSFUL
* REPLACE OLD TASK DIRECTORY.
SX7 B3+ LWA OF NEW *TRD*
SA7 ULDN
SA1 ULDM GET MOVE INFORMATION
SX3 X1 FWA OF OLD *TLD*
LX1 -18
SX2 X1 FWA OF NEW *TLD*
LX1 -18
SX1 X1+ NUMBER OF WORDS TO MOVE
MOVE X1,X2,X3
* REPLACE OLD TRANSACTION DIRECTORY.
SA1 ULDL GET FWA OF *TLD*
SA2 X1+TRFWW GET FWA OF OLD *TRD*
LX2 TRFWN-1-TRFWS
SX0 B1
SX3 X2-4 FWA OF OLD *TRD*
SA1 TL+1 GET FWA OF NEW *TRD*
SX2 X1+
SA4 ULDN LWA OF NEW *TRD*
SX6 X4-1
ZR X6,ULD12 IF NO *TRD* TO UPDATE
IX1 X4-X2 NUMBER OF WORDS TO MOVE
IX6 X3+X1 NEW LWA OF DIRECTORY
SA4 X2+B1 UPDATE LWA OF DIRECTORY IN HEADER
IX6 X6-X0
MX0 60-TDLWN
BX4 X0*X4
BX6 X4+X6 LWA OF DIRECTORY IN HEADER
SA6 A4
MOVE X1,X2,X3
* RELEASE CORE USED FOR NEW DIRECTORIES.
ULD12 SA3 ULDK SPACE FOR DIRECTORIES
SX0 X3+
AX3 18
SA1 AVAILCM
IX0 X0+X3
IX6 X1+X0
SA6 A1 ADD CORE TO FREE CORE COUNT
SA3 PCMDG
ATTACH TL,,X3,,RM REATTACH FILE IN READ MODE
RENAME TL,PCMDH RENAME TASK LIBRARY
BX0 X0-X0 NO COMMUNICATION BLOCK
SB4 8 8 = ON-LINE LIBTASK UPDATE
SX6 B1+B1 (X6) = NUMBER OF WORDS TO JOURNAL
SB3 PCMD7 RETURN ADDRESS
SB5 PJRNL (B5) = PRIMARY JOURNAL FILE FET
SX5 PCMDG
LX6 35-17
BX5 X6+X5 (X5) = LENGTH + FWA OF MESSAGE
EQ JRNL JOURNAL MESSAGE
* CAN NOT READ DIRECTORY - SET STATUS FOR LATER RETRY.
ULD13 SA3 PCMDG
RETURN TL,R RETURN LOCAL FILE
SA1 KDISA SET UP FOR REATTEMPT
SA3 PCMDG
SA2 PCMDH READ TASK LIBRARY NAME
BX6 X1+X3 SET USER NAME
BX7 X2
SA6 A1+
SA7 KDISC
EQ TSSC EXIT TO SWITCHING LOOP
* INCORRECT LIBTASK ATTEMPT.
* - INCORRECT USER.
* - LIBRARY FILE NOT ATTACHED.
* - BLOCKED TASKS DETECTED.
* - *TRD* UPDATE UNSUCCESSFUL.
* RELEASE CORE USED FOR NEW DIRECTORIES.
ULD13.1 SA3 ULDK SPACE FOR DIRECTORIES
SX0 X3+
AX3 18
SA1 AVAILCM
IX0 X0+X3
IX6 X1+X0
SA6 A1 ADD CORE TO FREE CORE COUNT
SB5 B5-ULDB
ZR B5,ULD16 IF LIBRARY FILE HEADER IS DIFFERENT
ULD14 RETURN TL,R RETURN NEW LIBRARY FILE
ULD15 SB5 -ULDA COMPLEMENT OF FWA OF MESSAGE
RJ PNM PUT NAME IN MESSAGE
ULD16 SB4 7 INCORRECT INTER-CONTROL POINT TRANSFER
SB3 PCMD9 (B3) = RETURN ADDRESS FROM *JRNL*
SB5 PJRNL (B5) = PRIMARY JOURNAL FILE FET
SX6 2 (X6) = NUMBER OF WORDS TO MOVE
SX5 PCMDG
LX6 35-17
BX5 X5+X6
BX0 X0-X0 NO COMMUNICATION BLOCK
EQ JRNL JOURNAL MESSAGE AND EXIT
* LIBRARY FILE HEADER IS DIFFERENT - ERROR.
ULD17 RETURN TL,R RETURN NEW LIBRARY FILE
SB5 -ULDB COMPLEMENT OF FWA OF MESSAGE
RJ PNM PUT NAME IN MESSAGE
SB5 ULDB
EQ ULD13.1 ISSUE MESSAGE
* LIBTASK OVERFLOW MESSAGE.
ULD18 SB5 -ULDC COMPLEMENT OF FWA OF MESSAGE
RJ PNM PUT NAME IN MESSAGE
SA1 ULDD
EQ ULD6 CONTINUE PROCESSING
ULDA DATA C* INCORRECT LIBTASK ATTEMPT - XXXXXXX, +++++++.*
ULDB DATA C* CHANGED TLD DETECTED - XXXXXXX, +++++++.*
ULDC DATA C* TLD OVERFLOW - XXXXXXX, +++++++.*
ULDD BSSZ 1 FWA OF OLD DIRECTORY
ULDE VFD 42/0LZZZZZTL,18/1 LOCAL FILE NAME
ULDJ VFD TLSTN/0 MASK FOR OLD DIRECTORY ENTRY EXTRACTION
VFD TLNDN/0
VFD TLCMN/1 CM RESIDENT
VFD TLECN/0
VFD TLTON/1 TASK ON/OFF
VFD TLDLN/0
VFD TLTLN/777777B NUMBER OF TIMES TASK LOADED
VFD TLTCN/777777B NUMBER OF TIMES TASK CALLED
VFD TLSCN/0
VFD TLQUN/1 QUEUING CONTROL
VFD TLREN/1 REDUCE FIELD LENGTH
VFD TLX1N/0
VFD TLBPN/0 BASE PRIORITY
VFD TLTAN/7 TASK ACTIVE STATUS
VFD TLQLN/0
ULDK BSS 1 SPACE FOR *TRD* AND *TLD*
ULDL BSS 1 FWA OF NEW AND OLD *TLD*
ULDM BSS 1 MOVE INFORMATION FOR *TLD*
ULDN BSS 1 LWA OF NEW *TRD*
URD SPACE 4,20
** URD - UPDATE TRANSACTION DIRECTORY.
*
* ENTRY (X4) = DIFFERENCE BETWEEN NEW AND OLD DIRECTORY.
* (X5) = FWA OF NEW *TLD*.
* (ULDK) = SPACE REQUIRED TO READ IN *TRD*.
*
* EXIT (B3) = LWA OF NEW *TRD*.
* = 0, IF UPDATE UNSUCCESSFUL.
* = 1, IF NO *TRD* TO UPDATE.
* = (B2) AND (B7) RESTORED.
*
* USES A - 1, 2, 3, 4, 6, 7.
* X - ALL.
* B - 2, 3, 4, 5, 6, 7.
*
* CALLS LTT, RSP, SNM, STD.
*
* MACROS MESSAGE, READ.
URD SUBR ENTRY/EXIT
SB3 B1+
MX0 -TLTRN
SA1 X5 GET *TRD* PRU
BX6 -X0*X1
ZR X6,URDX IF NO PRU
BX7 X4 DIFFERENCE BETWEEN NEW AND OLD DIRECTORY
SA7 URDD
SA6 TL+6 PUT PRU IN FET
SA1 TL+1 FIRST
SA2 TL+4 LIMIT
MX0 42
SA3 ULDK GET SPACE NEEDED FOR *TRD*
SX7 X2
BX6 X0*X1
BX6 X6+X7
SA6 A1 UPDATE FIRST
SX5 X7
SA7 A6+1 UPDATE IN
SA7 A7+1 UPDATE OUT
BX0 X0*X2
LX3 -18
SX6 X3
IX7 X6+X7
BX7 X0+X7
SA7 A7+B1 UPDATE LIMIT
* READ TRANSACTION DIRECTORY.
READ TL,R READ IN DIRECTORY
SB3 B1
SA1 TL+2 IN
SA2 A1+B1 OUT
IX6 X1-X2 NUMBER OF WORDS IN *TRD*
ZR X6,URDX IF *TRD* EMPTY
SA1 A2+B1 LIMIT
SX1 X1+
IX1 X1-X2
IX6 X1-X6
NG X6,URD6 IF DIRECTORY TOO LONG
SA2 URDA VALIDATE *TRD* HEADER
MX6 TDDNN
SA1 X5+B1
BX3 X6*X1
IX7 X2-X3
SB3 X5+4
NZ X7,URD7 IF INCORRECT *TRD* HEADER WORD
LX1 TDLDN-1-TDLDS GET *TRD* LENGTH
SB5 X1
ZR B5,URDX IF *TRD* LENGTH IS ZERO
BX7 X7-X7
SA7 B3+B5 MAKE SURE LAST WORD IS ZERO
SB2 B3+
* CONVERT TASK TO INDEX.
*
* (B2) = POINTER TO CURRENT TRANSACTION TASK.
* (B3) = POINTER TO CURRENT TRANSACTION NAME.
* (URDD) = DIFFERENCE BETWEEN NEW AND OLD DIRECTORY.
URD1 SA1 B3+TDTNW GET TRANSACTION NAME
ZR X1,URD4 IF NO TRANSACTION NAME
BX7 X1 PUT TRANSACTION NAME IN FWA OF *TRD*
SB3 B3+B1
SA7 B2+
SB2 B2+B1 INCREMENT POINTER
BX5 X5-X5
SB7 5
URD2 SA2 B3 GET TASK NAME
SB3 B3+1
BX6 X6-X6
ZR X2,URD3 IF NO TASK NAME
SB4 B3+ SAVE POINTER
SA1 ULDL GET FWA OF NEW *TLD*
SB3 TLDLE LENGTH OF ENTRY
LX1 -18
SB5 X1 START OF DIRECTORY
SA1 X1-3
LX1 -18
SB6 X1+B5 END OF DIRECTORY
SB6 B6-TLDLE
RJ STD SEARCH TASK
SB3 A1+B1
TB5 0,VTLD
SX6 B3-B5
SA4 URDD GET DIFFERENCE
SB3 B4 RESTORE B3
IX6 X6-X4 INDEX
ZR X1,URD3 IF TASK FOUND
BX3 X3-X3 SERCH SYSTEM LIBRARY
BX6 X6-X6
SB4 B0
SB5 B0
RJ LTT LOCATE TASK
ZR X6,URD5 IF TASK NOT FOUND
LX6 12 RIGHT JUSTIFY BIAS
URD3 LX5 12
BX5 X5+X6
SB7 B7-1 DECREMENT COUNTER
NZ B7,URD2 IF NOT END OF CONVERSION
BX6 X5
SA6 B2 PUT TASK ORDINAL INTO *TRD*
SB2 B2+1 INCREMENT POINTER
EQ URD1 PROCESS NEXT TRANSACTION
URD4 SX7 B0+
SA7 B2+ ZERO OUT LAST WORD
SB3 B2+
RJ RSP RESTORE REGISTERS B2 AND B7
EQ URDX RETURN
URD5 SB3 B0+ TASK NOT FOUND
RJ RSP RESTORE REGISTERS B2 AND B7
EQ URDX RETURN
* DIRECTORY TOO LONG.
URD6 SB5 URDB
EQ URD8 ISSUE DAYFILE MESSAGE
* INCORRECT *TRD* HEADER.
URD7 SB5 URDC
* ISSUE DAYFILE MESSAGE.
URD8 SB2 1RZ DISPLAY CODE SEARCH CHARACTER
SA1 TL
MX0 42
BX1 X0*X1 LIBRARY NAME TO INSERT
SB3 DAYB
SB5 -B5
RJ SNM SET NAME IN MESSAGE
MESSAGE DAYB ISSUE DAYFILE MESSAGE
SB3 B0+
RJ RSP RESTORE REGISTERS B2 AND B7
EQ URDX RETURN
URDA VFD 60/0LTRD *TRD* HEADER
URDB DATA C* TRANSACTION DIRECTORY TOO LONG - ZZZZZZZ.*
URDC DATA C* INCORRECT TRANSACTION DIRECTORY HEADER - ZZZZZZZ.*
URDD BSS 1 DIFFERENCE BETWEEN NEW AND OLD DIRECTORY
PBL SPACE 4,20
** PBL - POTENTIALLY BLOCKED TASKS DURING LIBRARY UPDATE.
*
* THIS ROUTINE DETECTS POTENTIALLY BLOCKED TASKS DURING
* A LIBRARY UPDATE. IF A BLOCK IS DETECTED, THE UPDATE IS
* REJECTED.
*
* ENTRY (X5) = FWA OF NEW DIRECTORY, INCLUDING HEADER.
* (PCMDH) = NAME OF NEW DIRECTORY.
*
* EXIT (B7) = 0, IF NO BLOCKED TASKS DETECTED.
* = 1, IF BLOCKED TASKS DETECTED.
* (X0) = RESTORED.
* (X5) = SAME AS ENTRY.
* (MINXT) = MINIMUM SIZE OF TRANSIENT TASK AREA.
*
* USES A - 1, 3, 4, 5, 6, 7.
* X - ALL.
* B - 3, 5.
*
* CALLS DBC, DBN, RTD.
PBL SUBR ENTRY/EXIT
BX6 X5 SAVE REGISTERS
BX7 X0
SA6 PBLA
SA7 PBLB
SX7 X5+4
SA7 DPBK FWA OF NEW DIRECTORY
SA1 CMRFL SAVE VALUES OF OLD ACCUMULATORS
BX7 X1
BX6 X6-X6
SA7 PBLC
SA1 CMRPF
BX7 X1
SB5 B0 INITIALIZE TASK COUNTER
SA7 PBLD
SA6 CMRFL INITIALIZE ACCUMULATOR
SA6 CMRPF INITIALIZE ACCUMULATOR
SA1 MFL MFL OF TAF
BX6 X1
SA6 DPBJ
* FIRST PASS THROUGH TASK LIBRARY DIRECTORIES.
SA1 VTFL NAME OF SYSTEM TASK LIBRARY
MX2 42
BX6 X2*X1
SB3 -1 READ ALL TLD ENTRIES
TA5 0,VTLD EXAMINE SYSTEM TLD
SA1 DPBK FWA OF NEW DIRECTORY
SA3 PCMDH NAME OF UPDATED LIBRARY
IX2 X3-X6
NZ X2,PBL1 IF LIBRARY NOT UPDATED
BX6 X3
SA6 DPBL NAME OF UPDATED LIBRARY
SA5 X1+
PBL1 RJ RTD RETURN TASK LIBRARY DATA
TA4 0,VEDT GET ADDRESS OF FIRST TLD
BX0 X4 CHECK EDT COUNT
LX0 -18
SX0 X0+
ZR X0,PBL5 IF NO MORE EDT-S
PBL2 SX0 X4 SAVE LINK TO NEXT HEADER
SA5 A4+4 GET FWA OF TLD IN WORD 5
AX5 18
ZR X5,PBL4 IF LIBRARY NOT ATTACHED
SA5 X5+ SET UP SEARCH ADDRESS
SA3 A5-1
MX2 42
BX6 X2*X3
SA1 DPBK FWA OF NEW DIRECTORY
SA3 PCMDH NAME OF UPDATED LIBRARY
IX2 X3-X6
NZ X2,PBL3 IF LIBRARY NOT UPDATED
BX6 X3
SA6 DPBL NAME OF UPDATED LIBRARY
SA5 X1+
PBL3 SB3 -1 READ ALL TLD ENTRIES
RJ RTD RETURN TASK LIBRARY DATA
PBL4 ZR X0,PBL5 IF NO MORE DIRECTORIES
SA4 X0+ RESTORE LINK TO NEXT HEADER
EQ PBL2 PROCESS NEXT TLD
* LOOK FOR POTENTIAL BLOCKS.
PBL5 RJ DBC DETECT BLOCKS IN CM RESIDENT TASKS
RJ DBN DETECT BLOCKS IN NON CM RESIDENT TASKS
NZ B7,PBL6 IF BLOCKED TASKS DETECTED
SA5 PBLA RESTORE REGISTERS
SA4 PBLB
BX0 X4
EQ PBLX RETURN
* RESTORE ACCUMULATORS IF ERROR AND RETURN.
PBL6 SA1 PBLC RESTORE CMRFL
SA3 PBLD RESTORE CMRPF
BX6 X1
BX7 X3
SA6 CMRFL
SA7 CMRPF
EQ PBLX RETURN
PBLA BSS 1 (X5)
PBLB BSS 1 (X0)
PBLC BSS 1 OLD (CMRFL)
PBLD BSS 1 OLD (CMRPF)
SPACE 4,10
SPACE 4,10
** COMMON DECKS.
*CALL COMKDPB
ENDOVL
ULD0 EQU /"PROD""M."/ULD0
TRANOVL (TERMINAL INITIALIZATION.)
CIN SPACE 4,10
** CIN - COMMUNICATION SUBSYSTEM INITIALIZATION.
CIN BSS 0
ENTRY CIN
TX7 0,VTST START OF TERMINAL STATUS TABLE
SA7 CINA
* EXAMINE THE STATUS OF EACH TERMINAL AND REINTIALIZE FOR ANY
* TERMINAL IN A STATE OF DEPENDENCY FOR ACTION BY THE
* COMMUNICATION SUBSYSTEM.
CIN1 SA1 CINA
TB5 X1+TSTLLE-1,-VTST,LWA
ZR B5,LOVL IF ALL ENTRIES PROCESSED
SX6 X1+TSTLLE NEXT TERMINAL TO PROCESS
SA6 CINA
SX2 B1
SA5 X6 FIRST WORD OF TERMINAL STATUS TABLE ENTRY
LX2 TSRBS-0
MX4 1
LX5 59-TSLIS
PL X5,CIN1 IF TERMINAL NOT LOGGED IN
BX5 -X4*X5 CLEAR LOGGED IN BIT
LX5 TSLIS-59
LX4 TSAUS-59
BX5 -X4*X5 CLEAR USER ACTIVE FIELD
BX6 X5
SA6 A5
* SET THE RECOVERY BIT FOR ALL LOGGED IN TERMINALS AND FOR ALL
* POLLED TERMINALS.
CIN2 BX7 X5+X2 SET USER RECOVERY BIT
.A IFEQ IPTAR,1 IF AUTOMATIC RECOVERY INSTALLED
BX3 X5 CHECK FOR RECOVERABLE TRANSACTION
LX4 TSARS-59-TSAUS+59
LX3 59-TSNRS
PL X3,CIN2.1 IF NO RECOVERABLE TRANSACTION RUNNING
LX3 59-59-59+TSNRS SET RECOVERY REQUIRED
BX7 X4+X3
SA3 A5+B1 WORD 2 OF *TST* ENTRY
LX4 TSCPS-59-TSARS+59
BX6 X3+X4
SA6 A3 SET CONNECTION POSTPONE FLAG
CIN2.1 BX7 X7+X2
.A ENDIF
TX1 A5,-VTST COMPUTE TERMINAL ORDINAL
SA7 A5
SX2 TSTLLE
SB3 B7
IX0 X1/X2
SB7 B3
SB5 B0
MX6 12
SA4 A5+TSIWW INPUT WANTED STATUS
MX3 TSIWN
LX4 59-TSIWS
PL X4,CIN1 IF NOT IN INPUT WANTED STATE
* FOR ALL TERMINALS WITH TASKS WAITING FOR INPUT, CLEAR THE
* TERMINAL WAITING FOR INPUT STATUS AND SET THE ROLLIN DELAY
* TIME TO ZERO.
BX7 -X3*X4 CLEAR WAIT INPUT STATUS
LX7 59-59-59+TSIWS
LX6 -30
SA7 A4
LX5 18
CIN3 RJ SRO SEARCH ROLLOUT TABLE
ZR B5,CIN1 IF END OF TABLE
SA2 B5
BX3 X6*X2
LX2 59-58
PL X2,CIN3 IF NOT A WAIT FOR INPUT ROLLOUT ENTRY
BX3 X3-X5
LX2 58-59
NZ X3,CIN3 IF NO MATCH ON TERMINAL ORDINAL
MX7 RTTLN
LX7 -6
BX7 -X7*X2 CLEAR ROLLIN TIME TO FORCE A ROLLIN
SA7 A2+
EQ CIN3
CINA BSS 1 CURRENT TERMINAL TABLE ENTRY
ENDOVL
L. SET * END OF LAST OVERLAY
L.D MAX L.,L.D
LAST EQU L.D LWA+1 OF TRANEX OVERLAY LOAD AREA
"PROD"1 TTL "PROD"1 - INITIALIZATION - VER "VERT".
EJECT
QUAL "PROD"1
IDENT "PROD"1,INIT,INIT,0,0 INITIALIZATION.
*COMMENT TAFNAM - EXECUTIVE INITIALIZATION.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
SPACE 4
*** *TAF1* - TRANSACTION FACILITY EXECUTIVE INITIALIZATION.
* J. R. HOGUE CSDD 1972
* L. A. BOELTER ASD 75/01/20. TOTAL DATA MANAGER INITIALIZATION.
* G. W. PROPP / J. R. HOGUE 75/10/01. TAF.
* M. M. CHEN. TAF/CDCS. 80/01/01.
SPACE 4
*** *TAF1* IS CALLED AFTER *TAFREC* COMPLETES EXECUTION.
* IT INITIALIZES POINTERS, BUILDS TABLES AND ALLOCATES
* BUFFERS USED BY *TAF* AND ITS DATA MANAGERS. IT ALSO
* ATTACHES FILES REQUIRED BY *TAF* AND ITS DATA MANAGERS.
* WHEN COMPLETE THE MAIN *TAF* OVERLAY IS LOADED AND EXECUTED.
*
* *TAF1* DETERMINES WHICH DATA MANAGERS ARE TO BE LOADED
* FROM THE *DMS* STATEMENTS IN THE TAF CONFIGURATION FILE.
*
* *TAF1* LOADS THE APPLICATION INTERFACE PROGRAM (AIP).
*
* *TAF1* BUILDS AN *INITL* CALL TO *TOTAL* FOR EACH DATA BASE
* SPECIFIED ON A *DMS(TOTAL,ON,...)* STATEMENT AND PLACE
* THE INFORMATION FROM THE XXJ FILE INTO THE ASSOCIATED *EDT*.
*
* IF OVERFLOW OF THE INITIALIZATION CODE OCCURS,
* THE MESSAGE * OVERFLOW DURING INITIALIZATION.*
* IS ISSUED AND THE INITIALIZATION IS ABORTED. CURRENTLY,
* *IFL=* IS AN ASSEMBLY OPTION, AND WILL HAVE TO BE INCREASED
* IF INITIALIZATIONS ARE ABORTED AFTER ADDING NEW DATA BASES
* TO THE *DMS* STATEMENT IN *TCF*.
*CALL,COMKIPR
SPACE 4,10
LIST X
*CALL COMKTIF
LIST -X
INIT TITLE INITIALIZATION.
ORG IFL=
INIT SB1 1
BX7 X7-X7
SA7 B0
GETJCR ATTB
PDATE PDATE SET PACKED TIME AND DATE
GETPFP STIA GET CURRENT FAMILY
SA1 STIA
BX6 X1
SA6 INITQ SAVE CURRENT FAMILY NAME
MEMORY CM,,R,FFL= SET INITIAL FL
* LOAD INITIALIZED LOW CM VALUES FROM TIF.
READ TIF INITIATE READ
READO TIF READ INITIALIZATION STATUSES
SA6 INITA
READW TIF,VLOCS,VLOCL LOAD LOW CM VALUES
SA1 INITA
LX1 59-TIRFS
NG X1,INIT3 IF RESTART
LX1 59-TICRS-59+TIRFS
NG X1,INIT2 IF TO INITIALIZE *CRM* RECOVERY FILES
SA2 VREC SET *CRM* RECOVERY FLAG
MX7 1
BX7 X7+X2
SA7 A2+
* SET UP INITIAL VALUES, VARIABLE TABLES AND BUFFERS.
INIT2 SX6 STAT1 FWA OF TAF STATISTICS
SA6 VSTAT1
SX6 RTLW REQUESTED TASK LIST
SA6 VRTLW
MX7 0
SA7 VINT CLEAR INITIALIZATION FLAGS
SA7 VTOT
SA7 VSND CLEAR NAM APPLICATION BLOCK NUMBER
SA7 VAAM CLEAR ADVANCED ACCESS METHODS
SA7 VAMB CLEAR POINTER TO AAM BUFFER
SA7 VAAQ CLEAR POINTERS TO *AAM* QUEUES
SA7 VBCT CLEAR ADDRESS OF BATCH CONCURRENCY TABLE
SA7 VNBCT CLEAR NUMBER OF ENTRIES
INIT3 RJ PTF PROCESS *TAF* CONFIGURATION FILE
* REQUEST EXTENDED MEMORY FIELD LENGTH.
SA2 VECS
ZR X2,INIT7 IF NO EXTENDED MEMORY REQUESTED
LX2 59-29 SET EXTENDED MEMORY FIELD LENGTH
BX6 X2
SA6 OBUF STATUS WORD
MEMORY ECS,OBUF,R,,NABORT
SA1 VECS READ OPERATOR REQUEST
SA2 OBUF READ RESPONSE
MX0 30
LX1 59-29
BX2 X0*X2
IX6 X1-X2
ZR X6,INIT7 IF EXTENDED MEMORY REQUEST WAS ASSIGNED
MESSAGE INITH * REQUESTED EXTENDED MEMORY NOT AVAILABLE*
ABORT
INIT7 SX7 LAST
SA7 VNACP
* LOAD APPLICATIONS INTERFACE PROGRAM.
LOADER INITO LOAD NAM *AIP*
MX0 2
SA1 INITO+2
BX2 X0*X1
SB1 1
SA1 LWPR LAST WORD OF *AIP* LOAD
NZ X2,DIE23 IF ERROR ON LOAD
SX1 X1-AFWA
RJ COD CONVERT OCTAL TO DISPLAY
SB2 1RX REPLACEMENT CHARACTER
SB5 MSGAG FWA OF MESSAGE
BX1 X4
RJ SNM SET NAME IN MESSAGE
MESSAGE MSGAG,3 * XXXXXX WORDS REQUIRED FOR AIP LOADING*
SA1 LWPR LWA OF LOAD
SX7 X1-TFWA
PL X7,DIE25 IF *AIP* TOO LARGE FOR LOADING
MESSAGE MSGAH,3 *AIP* SUCCESSFULLY LOADED.*
SA1 TDBID
NG X1,INIT14 IF NOT TO LOAD *TOTAL*
* ATTACH TOTAL BINARIES.
INIT10 ATTACH TOTALF
RJ CER CHECK FOR ATTACH ERROR
NZ X1,DIE18 IF ERROR ON ATTACH
* GET DATA BASE NAMES FOR TOTAL.
SB3 INITK+2 START OF LDREQS FOR DBMODS
INIT11 SA1 TDBID+3 OUT
SA2 A1-B1 IN
SA3 X1 DBMOD NAME
BX4 X1-X2
SX6 X1+B1 ADVANCE OUT
ZR X4,INIT12 IF BUFFER IS EMPTY
SA6 A1
SX4 1
BX6 X3+X4 FILE TO ATTACH
SA6 TOTFILE
ATTACH TOTFILE
RJ CER CHECK FOR ATTACH ERROR
NZ X1,DIE19 IF ERROR ON ATTACH OF DBMOD
* BUILD LDREQ TABLE FOR DATA BASE NAMES.
SA1 TOTFILE DBMOD NAME
MX0 42
SX2 3
BX1 X0*X1
BX7 X1+X2 LDREQ WORD
SA2 INITK INCREASE WORD COUNT OF TABLE
SA7 B3 STORE NAME IN LIST
SX6 B1
SB3 B3+B1 NEXT ADDRESS IN LDREQ TABLE
LX6 36
IX6 X2+X6
SA6 A2
EQ INIT11 CONTINUE
* LOAD TOTAL AND TOTAL DATA BASE DESCRIPTOR BINARIES.
INIT12 SA1 VNACP START ADDRESS FOR LOAD
SA2 INITJ START OF LIST FOR LOADU
MX0 18
LX1 30
LX0 -12
BX2 -X0*X2
BX6 X1+X2
SA1 TDBID+1 RESET OUT
SX7 X1
SA7 TDBID+3
SA1 INITL MOVE LDREQ FOR SATISFY
SA6 A2
SA2 A1+B1
BX6 X1
BX7 X2
SA6 B3
SA7 B3+B1
LOADER INITJ
* CHECK FOR LOADU ERRORS.
SA1 INITJ+2
SB1 1
MX0 2
BX2 X0*X1
NZ X2,DIE20 IF LOADU ERRORS
* MODIFY CALLS TO *INTOT.*
MX0 -18
BX6 -X0*X1 TRANSFER ADDRESS
SX7 B1
LX6 30
LX7 -6
BX6 X6+X7 RJ INSTRUCTION
SA6 INITU
SA1 INITM PARAMETER LIST FOR INTOT.
SA6 INIT17
RJ * VOID THE INSTRUCTION STACK
INITU RJ * INITIALIZE *INTOT.* FOR *TAF1*
* RJ =XINTOT. (CALL INTOT.)
* MODIFY THE RJ TO TOTAL INSTRUCTION.
SB1 1
SA6 VTOT TOTAL ENTRY POINT ADDRESS FROM INTOT.
SA1 XXJ24
MX0 18
LX6 30
LX0 -12
BX1 -X0*X1
BX6 X1+X6
SA6 A1
* RESET START OF EXECUTIVE-S TABLE ADDRESS.
SA1 LWPR LAST WORD ADDRESS OF PREVIOUS LOAD
SX6 X1+ LWA+1 OF LOAD
SA6 VNACP
MESSAGE MSGBC,3 * TOTAL DATA MANAGER SUCCESSFULLY LOADED.*
* CHECK IF *AAMI* IS TO BE LOADED.
INIT14 MX3 1
SA2 VREC GET RECOVERY FLAG
BX4 X3*X2
BX6 -X3*X2 CLEAR *CRM* RECOVERY BIT
SA1 CDBID
SA6 A2
NG X1,INIT16 IF NOT TO LOAD *CRM*
PL X4,INIT15 IF NO *CRM* RECOVERY
BX6 X6+X3 RESTORE *CRM* RECOVERY BIT
SA6 A2
INIT15 SA1 VNACP START OF ADDRESS FOR LOAD
SA2 INITS START OF LIST FOR LOADU
MX0 18
LX1 30
LX0 -12
BX2 -X0*X2
BX6 X1+X2
SA6 A2
LOADER INITS
* CHECK FOR LOADU ERRORS.
SB1 1
SA1 INITS+2
MX0 2
BX2 X0*X1
NZ X2,DIE28 IF LOADU ERRORS
SA1 INITT+1 ENTRY POINT FOR *IAM*
SA2 CRMA RJ TO *IAM*
LX1 30
BX6 X1+X2
SA6 CRMA
SA2 A1+B1 *AMI* ENTRY POINT
BX6 X1+X2
SX7 IFL= LWA OF MEMORY FOR TABLES
SA6 VAAM
SA2 A2+B1 *AMIQ* ENTRY POINT
LX2 24
SA3 A2+B1 *AMOQ* ENTRY POINT
BX6 X2+X3
SA6 VAAQ
SA7 TTIP+TILW
SA1 LWPR
SX6 X1+
SA6 VNACP
MESSAGE MSGBD,3 * CRM DATA MANAGER SUCCESSFULLY LOADED.*
* LOCATE VARIABLE TABLES AND BUFFERS SET BY INITIALIZATION.
INIT16 RJ SETL DETERMINE VARIABLE BUFFER/TABLE LOCATIONS
SA1 INITN PARAMETER LIST FOR INTOT.
INIT17 RJ INIT17 INITIALIZE INTOT. FOR TAF
* RJ =XINTOT. (CALL INTOT.)
SX7 1
SB1 1
SA7 VINT TRANEX1 COMPLETE FLAG
REWIND TIF,R
WRITEW TIF,INITA,1 WRITE STATUS WORD
WRITEW TIF,VLOCS,VLOCL WRITE LOW CM POINTERS TO *TIF*
WRITER TIF,R FLUSH BUFFER
RETURN TOTALF,R
SA1 INITA
MX7 -TIRFN
BX6 -X7*X1 RESTART BIT
SA2 VREC
BX3 -X7*X2
MX7 1
BX6 X3+X6
SX1 IPTAR TAF AUTOMATIC RECOVERY FLAG
BX2 X7*X2 MASK OFF *CRM* RECOVERY BIT
LX6 24
BX2 X2+X1
BX6 X6+X2 RECOVERY FLAG FOR MAIN PROGRAM
SA6 A2
OVERLAY INITC,,S LOAD MAIN PROGRAM
INITA CON 0 *TIF* INITIALIZATION STATUSES
INITB CON 0 INITIALIZATION FIELD LENGTH
INITC VFD 60/0L"PROD"
INITG BSS 0 JOURNAL FILE 0 INITIALIZATION FET
JOUR0 FILEB IBUF,IBUFL,FET=10,EPR
INITH DIS ,* REQUESTED EXTENDED MEMORY NOT AVAILABLE.*
INITI VFD 60/0L"PROD"0
* PARAMETER LIST FOR LOADU FOR LOADING TOTAL.
INITJ LDREQ BEGIN,LAST,IFL=,0,0
LDREQ MAP,N
INITK BSS 0 START OF FILE LIST
LDREQ LOAD,(TOTALE/R)
BSSZ TMAXDB+1
INITL LDREQ SATISFY,(TRANLIB)
* PARAMETER LIST FOR *INTOT.* FOR *TAF1*.
INITM VFD 60/IEOQ ENTER OUTPUT QUEUE
VFD 60/IFAR ATTACH FILE
VFD 60/IGRA RETURN RA, FL AND DB ID OF TAFXXX1
VFD 60/IRIQ RETURN QUEUE ENTRY
* PARAMETER LIST FOR *INTOT.* FOR TAF.
INITN VFD 60/EOQ ENTER TOTAL OUTPUT QUEUE
VFD 60/FAR ATTACH FILE
VFD 60/GRA GET RA, FL AND DATA BASE IDENTIFIER
VFD 60/RIQ READ TOTAL INPUT QUEUE
* PARAMETER LIST FOR LOADU FOR LOADING NAM AIP.
INITO LDREQ BEGIN,AFWA,ALWA
LDREQ OMIT,(PRINT,LIST,ENDL)
LDREQ MAP,N
.C IFEQ DBUG,0
LDREQ LIBLOAD,NETIOD,(NETCHEK,NETDBG,NETGET,NETGETF,NETGETL,N
,ETOFF,NETON,NETPUT,NETSETP)
LDREQ SATISFY,(NETIOD)
.C ELSE
LDREQ LIBLOAD,NETIO,(NETCHEK,NETGET,NETGETF,NETGETL,NETOFF,NE
,TON,NETPUT,NETSETP)
LDREQ SATISFY,(NETIO)
.C ENDIF
LDREQ SATISFY
INITP BSS 0 START OF ENTRY POINTS
.D IFEQ DBUG,0
LDREQ ENTRY,(NETCHEK,NETDBG,NETGET,NETGETF,NETGETL,NETOFF,NET
,ON,NETPUT,NETSETP)
.D ELSE
LDREQ ENTRY,(NETCHEK,NETGET,NETGETF,NETGETL,NETOFF,NETON,NETP
,UT,NETSETP)
.D ENDIF
INITPLE EQU *-INITP-1 NUMBER OF ENTRY POINTS
ERRNG NCTL-INITPLE NCT MUST HAVE ENOUGH ROOM FOR NAM
* ENTRY POINTS.
LDREQ END
INITQ CON 0 RUNNING FAMILY NAME
INITS LDREQ BEGIN,LAST,IFL=,0,0
LDREQ MAP,BSEX,MAP
LDREQ SUBST,(CMM.MEM-CMM,RM$SYS=-RM$TSYS,SETUP.-TSE)
LDREQ LIBLOAD,TRANLIB,(IAM,AMI,AMIQ,AMOQ)
LDREQ SATISFY,(AAMLIB,BAMLIB)
LDREQ SATISFY
INITT BSS 0 START OF ENTRY POINTS
LDREQ ENTRY,(IAM,AMI,AMIQ,AMOQ)
LDREQ END
EDT SPACE 4,69
** EDT - ELEMENT DESCRIPTION TABLE.
*
*T VEDT1 12/ DB,12/ ,18/EDTCNT,18/ LINK
*T,VEDT2 6/JORCNT,18/ ,18/JORADR,18/TRCADR
*T,VEDT3 42/ USERNM,18/USINDX
*T,VEDT4 42/ PASSWD,18/
*T,VEDT5 24/0,18/TLDFWA,18/TLDLWA
*T,VEDT6 42/ PACNAM,12/ DEV,6/ UN
*T,VEDT7 42/FAMILY,18/
*
* WORD 1.
* DB - DATA BASE NAME.
* EDTCNT - NUMBER OF EDT-S (PRESENT ONLY IN FIRST HEADER).
* LINK - POINTER TO NEXT EDT.
*
* WORD 2.
* JORCNT - NUMBER OF JOURNAL FILES (MAXIMUM OF 3 PER DB).
* JORADR - ADDRESS OF FIRST JOURNAL FILE FET.
* TRCADR - ADDRESS OF TRACE FILE FET.
*
* WORD 3.
* USERNM - USER NAME (USED TO ATTACH MULTIPLE TLD-S).
* USINDX - USER INDEX (TO ATTACH JOURNAL AND
* DATA BASE FILES).
*
* WORD 4.
* PASSWD - PASSWORD.
*
* WORD 5.
* TLDFWA - FWA OF DBTASKL (NAME OF PARTICULAR TLD).
* TLDLWA - LWA OF DBTASKL.
*
* WORD 6.
* PACNAM - PACK NAME OF AUXILIARY DEVICE ON WHICH THE
* TASK LIBRARY RESIDES.
* DEV - DEVICE TYPE THE FILE WILL BE RESIDING
* ON (DI,DJ,...,).
* UN - NUMBER OF UNITS OF THE TYPE SPECIFIED IN THE
* DEVICE TYPE FIELD.
*
* WORD7.
* FAMILY - USER FAMILY NAME.
* BUFFER SPACE FOR ELEMENT DESCRIPTION TABLE.
DB FILEC DBBF,DBBFL EDT FILE FET
DBBF EQU *
DBBFL EQU 101B
BSS DBBFL
DBBF1 EQU *
DBBF2 BSS 14
EDFL EQU 13 EDT FET LENGTH
JFLG CON 0 JOURNAL FLAG
INTD BSS 1 CURRENT EDT ADDRESS
TITLE TCF PROCESSOR.
PTF SPACE 4,35
** PTF - PROCESS TAF CONFIGURATION FILE (*TCF*).
*
* PTF READS THE *TCF* AND FOR EACH DIRECTIVE CALLS AN
* APPROPRIATE SUBPROCESSOR TO HANDLE THE DIRECTIVE. THE
* *TCF* HAS ALREADY BEEN PROCESSED IN *TAFREC*, SO ONLY THOSE
* DIRECTIVES NOT FULLY PROCESSED IN *TAFREC* ARE PROCESSED
* HERE.
*
* ENTRY NONE.
*
* EXIT TO *DIE15* IF INCORRECT *TCF* ENTRY.
* TO *DIE16* IF TCF/DM LOAD FLAG CONFLICT.
*
* USES A - 1, 2, 3, 4, 5, 6, 7.
* B - 3, 4, 5, 6.
* X - ALL.
*
* MACROS ABORT, MESSAGE, READ, READC, REWIND.
PTF SUBR ENTRY/EXIT
REWIND TCF,R
READ TCF INITIATE READ
SX6 -B1 INITIALIZE DATA MANAGER LOAD FLAG
SA6 CDBID
SA6 TDBID
* PROCESS TCF.
PTF1 READC TCF,PTFC,PTFCL READ STATEMENT IMAGE
NZ X1,PTF5 IF NO MORE ENTRIES
SB7 PTFD FWA TO UNPACK STATEMENT
SA5 PTFC FIRST WORD TO UNPACK
RJ UPC UNPACK STATEMENT IMAGE
NZ X6,DIE15 IF ERROR ON TCF
MX3 42 MASK KEY WORD
SA1 PTFD
SA4 PTFA FWA OF KEY WORD TABLE
PTF2 ZR X4,DIE15 IF INCORRECT TCF ENTRY
BX5 X1-X4
BX2 X3*X5
SB3 X4
SA4 A4+B1
NZ X2,PTF2 IF NO MATCH
JP B3 PROCESS CORRESPOUNDING KEY WORDS
* PROCESS *DMS* STATEMENT.
PTF4 RJ DMS PROCESS *DMS* STATEMENT
EQ PTF1 READ NEXT STATEMENT
* CHECK FOR DUPLICATE DATA BASE NAME.
PTF5 SA1 TDBID+3 FIRST DATA BASE NAME TO CHECK
SA2 OTHER+2 LAST
SB3 X1
SB6 B0 ASSUME NO DUPLICATE
SB5 X2+B1
PTF6 EQ B3,B5,PTF8 IF DONE CHECKING
SA1 B3
SB4 B3+B1 NEXT
SB3 B3+B1
ZR X1,PTF6 IF NO ENTRY
PTF7 EQ B4,B5,PTF6 IF DONE CHECKING FOR ONE DATA BASE
SA2 B4 NEXT
SB4 B4+B1 ADVANCE POINTER
ZR X2,PTF7 IF NO ENTRY
IX3 X1-X2
NZ X3,PTF7 IF NOT THE SAME NAME
SA3 MSGBE+3 PUT DATA BASE NAME IN MESSAGE
MX6 -48
BX4 -X6*X3 CLEAR OLD NAME
BX7 X4+X1
SA7 A3
MESSAGE MSGBE,3 * DUPLICATE DATA BASE IN TCF - XX.*
SB6 B1 SET FLAG INDICATE DUPLICATE DATA BASE
SB3 B3+B1 CHECK NEXT DATA BASE
EQ PTF6 CONTINUE CHECKING
PTF8 ZR B6,PTFX IF NO DUPLICATE DATA BASE NAME
ABORT
* KEY WORD TABLE.
* PROCESS *DISPLAY*, *NETWORK*, *RECOVER*, *K-COMMANDS*
* AS NO-OPS.
PTF9 EQ PTF1 READ NEXT STATEMENT
PTF10 SA5 PTFD+B1 NUMBER OF BATCH CONCURRENT JOBS ALLOWED
RJ DXB CONVERT NUMBER TO BINARY
NZ X4,DIE15 IF ERRORS IN CONVERSION
SA6 VNBCT NUMBER OF BATCH CONCURRENT JOBS
EQ PTF1 READ NEXT STATEMENT
PTF11 SA1 VFMN
SX5 10B *SETPFP* FLAGS
BX6 X1+X5
SA6 STIA *SETPFP* CALL BLOCK
SETPFP STIA SET FAMILY
EQ PTF1 PROCESS NEXT COMMAND
PTFA VFD 42/0LDMS,18/PTF4 DATA MANAGER STATUS
VFD 42/0LDISPLAY,18/PTF9
VFD 42/0LNETWORK,18/PTF9
VFD 42/0LRECOVER,18/PTF9
VFD 42/0LTBCON,18/PTF10
VFD 42/0LK,18/PTF9
VFD 42/0LACCOUNT,18/PTF11 *ACCOUNT* COMMAND
VFD 42/0LUSER,18/PTF11 *USER* COMMAND
PTFB BSSZ 1 TABLE TERMINATOR
PTFC BSSZ 16 BUFFER FOR STATEMENT IMAGE
PTFCL EQU *-PTFC LENGTH OF BUFFER
VFD 60/0L. DUMMY TERMINATOR
PTFD BSSZ 80 BUFFER FOR UNPACK STATEMENT
DMS SPACE 4,25
** DMS - PROCESS *DMS* STATEMENT.
*
* THE *DMS* STATEMENT IS USED TO INDICATE WHICH DATA
* MANAGERS ARE TO BE LOADED. FOR EACH DATA MANAGER LOADED, A
* RELATIONSHIP IS DEFINED BETWEEN THE DATA MANAGER AND THE
* DATA BASES THAT CAN USE IT.
*
* DMS(DM,SW,DB1,DB2,...,DBN)
*
* WHERE DM = CRM, TOTAL, OR OTHER.
* SW = *ON* OR *OFF*.
* DBI = DATA BASE NAMES.
*
* CRM MEANS *CYBER RECORD MANAGER*.
* TOTAL IS *TOTAL* DATA MANAGER AND *OTHER* MEANS
* THAT THE APPLICATION WILL USE THE *CDCS* DATA MANAGER OR
* ELSE NO DATA MANAGER.
*
* *ON* MEANS THE DATA BASE NAMES ON THE *DMS* STATEMENT ARE
* TO BE PUT IN THE DATA BASE BUFFER. *OFF* IMPLIES THE *DMS*
* WILL BE TREATED AS A COMMENT STATEMENT.
* THERE IS NO RESTRICTION ON THE NUMBER OF STATEMENTS
* FOR A DATA MANAGER.
*
* ENTRY (A1) = FWA OF PARAMETER TO CHECK.
*
* EXIT TO *DIE4* IF NO DATA BASE ID FOR DATA MANAGER.
* TO *DIE5* IF TOO MANY DATA BASE NAMES.
* TO *DIE15* IF INCORRECT TCF ENTRY.
* TO *DIE24* IF INCORRECT DATA BASE NAME.
*
* USES A - 1, 2, 3, 6, 7.
* B - 3, 5, 6.
* X - ALL.
DMS SUBR ENTRY/EXIT
MX3 42 MASK PARAMETER
SA1 A1+B1 FIRST PARAMETER
SA2 DMSA CHECK DATA MANAGERS
DMS1 SB3 X2 ADDRESS TO JUMP TO
BX4 X1-X2
SA2 A2+B1
BX5 X3*X4
ZR B3,DIE15 IF INCORRECT *DMS* PARAMETER
NZ X5,DMS1 IF NO MATCH
JP B3 PROCESS TRANSFERS
* PROCESS CYBER RECORD MANAGER.
DMS3 SB5 CDBID FIRST
EQ DMS6 PROCESS TRANSFER
* PROCESS *TOTAL* DATA MANAGER.
DMS4 SB5 TDBID FIRST
EQ DMS6 PROCESS TRANSFER
* PROCESS *OTHER* PARAMETER.
DMS5 SB5 OTHER FIRST
* TRANSFER DATA BASE NAMES.
DMS6 SA2 PTFD+2 SECOND WORD OF PARAMETERS
MX0 42
SA3 DMSB CHECK *ON* OR *OFF*
BX4 X2-X3
BX5 X0*X4
ZR X5,DMSX IF *OFF* - DO NOT TRANSFER DATA BASE NAMES
SA3 A3+B1 CHECK IF *ON*
BX4 X2-X3
BX5 X0*X4
SX7 B1
NZ X5,DIE15 IF NOT *ON*
SA1 B5+2 IN
SA2 B5+4 LIMIT
SA3 PTFD+3 FIRST DATA BASE
SX6 X1+
SA7 B5 SET DATA MANAGER LOAD FLAG
ZR X3,DIE4 IF NO DATA BASE ID FOR DATA MANAGER
MX0 -48
MX5 48
LX5 59-11
SB6 TDBID
NE B5,B6,DMS7 IF NOT *TOTAL*
MX5 12
DMS7 ZR X3,DMS8 IF AT END OF PARAMETERS
BX7 -X0*X3 CHECK FOR INCORRECT DATA BASE NAME
BX7 X5*X7
NZ X7,DIE24 IF INCORRECT DATA BASE NAME
IX4 X6-X2
BX7 X3
PL X4,DIE5 IF TOO MANY DATA BASES
SA7 X6
SA3 A3+B1 NEXT
SX6 X6+B1 INCREMENT POINTER
EQ DMS7 CONTINUE TO TRANSFER DATA BASE NAMES
DMS8 SA6 A1
EQ DMSX RETURN
* DATA MANAGER TABLE.
DMSA VFD 42/0LCRM,18/DMS3
VFD 42/0LTOTAL,18/DMS4
VFD 42/0LOTHER,18/DMS5
* DATA MANAGER STATUS SWITCH.
DMSB VFD 42/0LOFF,18/0 OFF
VFD 42/0LON,18/0 ON
SPACE 4
SETL TITLE DETERMINE AND SET VARIABLE TABLES/BUFFERS.
** SETL DETERMINE LOCATION OF VARIABLE TABLES/BUFFERS AND DO
* ANY NECESSARY HOUSEKEEPING FOR THESE TABLES/BUFFERS.
*
SETL SUBR ENTRY/EXIT
SA1 VNACP START OF TABLE ADDRESSES
SB7 X1+1
BX7 X1
LX7 24
SA7 A1
SX7 X1+1
SA7 X1
LX7 24
BX6 X6-X6
SA7 VCPA ADDRESS OF FIRST SUB CONTROL POINT
LX7 -24
SB6 IFL= INITIALIZATION FIELD LENGTH
SB5 B7-B6
PL B5,DIE26 IF OVERFLOW DURING INITIALIZATION
* ZERO CORE TO START OF INITIALIZATION CODE.
+ SA6 B7
SB7 B7+B1
NE B6,B7,* LOOP TILL FINISH
* SET UP SUB-CONTROL POINT LINKED CHAIN.
SA1 VNSCP NUMBER OF SUB CONTROL POINTS
LX1 -24
SB2 X1
SETL1 SB2 B2-1
ZR B2,SETL2 FINISHED CHAINING SUB CONTROL POINT AREAS
SX7 X7+CPAL ADDRESS OF NEXT SUB CONTROL POINT AREA
SA7 X7-CPAL
EQ SETL1 LOOP
* SET COMMUNICATIONS BLOCK ALLOCATION MAP.
SETL2 SX6 X7
LX6 24
SA6 VLSP LAST SUB CONTROL POINT AREA
SB2 47
SA1 VNCMB NUMBER TO ALLOCATE
MX2 1
SX3 B1
SX4 2222B FOR USE WITH TABLE ASSIGNMENT
LX1 -24
SB3 X1-1
LX4 48
SB4 A7+CPAL+CPAL+1 FIRST WORD OF BIT MAP TABLE
SX7 B4
LX7 24
SX5 1
SA7 VCBRT SAVE ADDRESS
SETL3 SB3 B3-B2 USE 47 BITS/WORD
LE B3,SETL4 IF ALL COMMUNICATION BLOCKS ALLOCATED
AX3 X2,B2 SET ONE BIT PER ENTRY
LX3 -12
BX7 X4+X3
BX7 X7+X5 SET BIT 0
SA7 B4 STORE INTO BIT MAP
SB4 B4+B1
EQ SETL3 LOOP
SETL4 SB3 B3+B2
AX3 X2,B3 SET ONE BIT PER ENTRY
LX3 -12
BX7 X4+X3
SA7 B4 SET INTO BIT MAP TABLE
* RESERVE COMMUNICATIONS BLOCK AREA.
SX7 B4+B1 START OF COMMUNICATIONS BLOCKS
SA2 VNCMB NUMBER OF COMMUNICATIONS BLOCKS
SX6 X7-CMBL
LX2 -24
LX7 24
SA7 VCBSA SAVE ADDRESS
SX1 CMBL LENGTH OF ONE C.B.
IX3 X1*X2
SB4 B4+B1
SB4 B4+X3 START OF NEXT TABLE
* RESERVE ACTIVE TRANSACTION LIST AREA.
SA1 VNCMB NUMBER OF C.B.
LX1 -24
SX2 ATLL LENGTH OF ATL ENTRY
SX7 B4
SB5 X1 NUMBER OF ATL ENTRIES
LX7 24
SA7 VATL SAVE ADDRESS
SB6 B4
IX3 X1*X2
SB4 B4+X3 START OF NEXT TABLE AREA
* ENTER COMMUNICATION BLOCK ADDRESS POINTER
* FOR EACH ACTIVE TRANSACTION LIST ENTRY.
SETL5 EQ B6,B4,SETL6 THRU SETTING POINTERS
SX6 X6+CMBL
SA6 B6 SET POINTER
SB6 B6+B1
EQ SETL5
* READ TERMINAL STATUS TABLE FROM *TIF*.
SETL6 SB5 B4-IFL=
SA0 B4+
PL B5,DIE26 IF OVERFLOW DURING INITIALIZATION
SX7 B4+TTFTL
LX7 24 SAVE START ADDRESS OF TST
SA7 VTST
LX1 TSLIS-0
LX1 TSAUS-0-TSLIS+0
BX7 X7+X1 SET USER ACTIVE
LX2 TSRBS-0
READO TIF LENGTH OF *TST* TO X6
READW TIF,A0,X6 READ *TST* TO MEMORY
SA1 VTST
SB4 B6+ NEXT FREE WORD
SX7 B4-IFL=
PL X7,DIE26 IF OVERFLOW DURING INITIALIZATION
SX2 B4-B1
BX7 X1+X2 SET LWA OF TST
SA7 VTST
LX1 -24
IX7 X2-X1 LENGTH OF TST
SX2 TSTLLE
IX7 X7/X2 NUMBER OF TST ENTRIES
SB3 X7
LX7 24
SB3 B3+B1 NUMBER OF NCT ENTRIES
SA7 VNTST
* SET UP BATCH CONCURRENCY TABLES.
SA1 VNBCT NUMBER OF BATCH CONCURRENCY ENTRIES
SX2 X1
LX2 47-17 POSITION FOR ALLOWED VALUE
BX6 X1+X2
SA6 A1 SET ALLOWED AND MAXIMUM VALUES
ZR X1,SETL6.1 IF NO ENTRIES
SX7 B4 CURRENT ADDRESS
SX2 BCTL LENGTH OF EACH BATCH CONCURRENT TABLE
LX7 24
SA7 VBCT STARTING ADDRESS OF BATCH CONCURRENT
LX7 -24
IX6 X2*X1 LENGTH OF TABLE
IX6 X7+X6 NEXT FREE WORD FOR MEMORY ALLOCATION
SB4 X6
SX7 B4-IFL=
PL X7,DIE26 IF OVERFLOW DURING INITIALIZATION
* SET UP NAM COMMUNICATION TABLE (NCT).
SETL6.1 SX1 NAM
ZR X1,SETL15 IF NOT IN NAM COMMUNICATION MODE
SX3 B3-NCTL NETWORK FILE TERMINALS - NCT MAXIMUM SIZE
NG X3,SETL13 IF NETWORK TERMINALS LESS THAN NCT
SB3 NCTL+1 MAXIMUM SIZE FOR NCT ALLOCATION
SETL13 SX7 B4 NEXT FREE WORD FOR MEMORY ALLOCATION
SX6 B3
SX2 TNCTL LENGTH OF NCT ENTRY
LX7 41-17
IX3 X2*X6 SIZE OF NCT
SX0 X3-NETL
PL X0,SETL13.1 IF ENOUGH SPACE FOR *AIP* ENTRY POINTS
SX3 NETL MINIMUM SPACE FOR *AIP* ENTRY POINTS
SETL13.1 SB5 B4
SB4 X3+B4 NEXT FREE WORD FOR MEMORY ALLOCATION
BX7 X7+X6 FWA OF NCT + NUMBER OF NCT ENTRIES
MX3 1
SA7 VNCT
* SAVE NAM AIP ENTRY POINTS.
LX3 -5
MX0 -18 MASK FOR ENTRY POINTS
SB3 INITPLE NUMBER OF ENTRY POINTS
SETL14 SA2 INITP+B3 GET ENTRY POINT FROM LOADER
BX6 -X0*X2 ENTRY POINT ADDRESS
ZR X6,DIE23 IF NO ENTRY POINT NOTE LOADER ERROR
LX6 30
BX6 X3+X6 RJ TO ENTRY POINT
SB3 B3-B1
SA6 B5+B3 SAVE ENTRY POINT
NZ B3,SETL14 IF MORE ENTRY POINTS
* ATTACH JOURNAL FILE 0.
SETL15 SX0 B4
BX6 X6-X6 ATTACH MODE FLAG
SB4 INITG ADDRESS OF JOURNAL 0 FET
RJ ATT ATTACH FILE
SB4 X0
* RESERVE ROLLOUT FILE ALLOCATION WORDS.
SX7 B4
SX6 RLATL LENGTH OF ROLLOUT FILE ALLOCATION AREA
LX7 24
SB4 X6+B4
SA7 VRLAT FWA OF ROLLOUT FILE ALLOCATION AREA
* SET UP OVERLAY ENTRY POINT TABLE.
SX7 B4 START OF ENTRY POINT LIST
LX7 24
SA7 VOEP
MOVE SETLGL,SETLG,B4
SB4 B4+SETLGL
* SET UP OVERLAY RELOCATION CONTROL TABLE.
SX7 B4 START OF RELOCATION CONTROL
SX6 B4+SETLHL
LX7 24
BX7 X7+X6
SA7 VOREL
MOVE SETLHL,SETLH,B4
SB4 B4+SETLHL
* SET UP *CRF* TABLES, FETS AND BUFFERS.
SX1 IPTAR
ZR X1,IDM0 IF AUTOMATIC RECOVERY DISABLED
SA1 VTST
LX1 -24
SB2 X1-TTFTL FWA OF *TST* HEADER
SB6 B0
SB3 8 NUMBER OF HEADER ENTRIES
SB5 TTFTE ENTRY LENGTH
SA3 B2-B5
SETL18 SA3 A3+B5 NEXT ENTRY
SB3 B3-B1
NZ X3,SETL19 IF A *CRF* FOR THIS ID
SB6 B6+1
NE B3,SETL18 IF MORE ENTRIES
EQ SETL21 PACK DOWN ENTRIES
* FORMAT *TAF* RGCOVERY TABLE.
SETL19 SX4 B4 FWA OF *TAF* RECOVERY TABLE.
BX6 X3+X4
SA6 A3+
SA1 SETLE
SX2 B6+1R0 BINARY TO DISPLAY
LX2 29-5
BX6 X1+X2 FORM FILE NAME
SX2 CIORD *CIO* FUNCTION CODE
BX6 X6+X2
SA6 TL STORE IN FET
SX7 IBUF RESET BUFFER POINTERS
SA7 TL+2 IN
SYSTEM CIO,R,A6 READ *CRF* HEADER
SA1 IBUF+TRNWW
MX0 TRRSN
BX6 -X0*X1 REMOVE SHUTDOWN STATUS
MX0 -TRNWN
LX1 TRNWN-1-TRNWS
BX2 -X0*X1 WORDS IN USER MESSAGE
SX4 X2+77B
AX4 6 PRU-S IN USER MESSAGE
LX4 TTNPS-TTNPN+1
BX6 X6+X4
ERRNZ TTNRS-TRNRS RECOVERY UNITS NOT IN SAME FIELD
SA6 B4 FIRST WORD OF *CRF* TABLE
SA1 TL
BX6 X1
SA6 A6+TTFTW FIRST WORD OF FET
SX6 11B
LX6 47-3 POSITION RANDOM AND USER PROCESSING BITS
SX5 TTBFW-TTFTW-5 FET LENGTH-5
LX5 18
BX6 X6+X5
SX5 B4+TTBFW FIRST
BX6 X6+X5
SA6 A6+B1
BX6 X5
SA6 A6+B1 IN
SA6 A6+B1 OUT
LX4 60-TTNPS+TTNPN-1+6 CONVERT PRU-S TO WORDS
SX2 TRUWL+MRIWL+TRMRL BUFFER SIZE FOR SYSTEM
IX1 X2-X4 DETERMINE LARGER
BX6 X4
NG X1,SETL20 IF USER MESSAGE LARGER
BX6 X2
SETL20 SX1 B1+B1
IX6 X6+X1 BUFFER SIZE
IX6 X6+X5 LWA OF BUFFER
SA6 A6+B1 LIMIT
SB6 B6+B1
SB4 X6+ NEXT FREE WORD
SX6 B4-IFL=
PL X6,DIE26 IF OVERFLOW DURING INITIALIZATION
NE B3,SETL18 IF MORE *TST* HEADER ENTRIES
* COMPACT TERMINAL FILE TABLE.
SETL21 SB3 8 MAXIMUM *TST* HEADER ENTRIES
SB7 B2+
SETL22 SA1 B7+
NZ X1,SETL24 IF THERE IS A *CRF * FOR THIS ID
SETL23 SB3 B3-B1 DECREASE NUMBER OF ENTRIES LEFT
SB7 B7+B5 NEXT ENTRY ADDRESS
NE B3,SETL22 IF MORE ENTRIES
EQ SETL27 SET END OF*TST*
SETL24 SB6 B7-B2
NE B6,SETL25 IF WORDS TO MOVE
SB2 B7+B5
EQ SETL23 NEXT ENTRY
SETL25 SX1 B3
SX2 B5
IX2 X2*X1 WORDS TO MOVE
SB6 B2
SETL26 SA1 B7 MOVE DATA DOWN
BX6 X1
SA6 B6
SB7 B7+B1
SB6 B6+B1
SX2 X2-1
NZ X2,SETL26 IF MORE TO MOVE
SB3 B3-B1
SB2 B2+B5
SB7 B2
NE B3,SETL22 IF MORE ID-S TO PROCESS
SETL27 SA1 VTST
LX1 -24
SB2 X1
SX7 IBUF RESET *IN* POINTER
SA7 TL+2
EQ B2,B7,IDM0 IF ALL ID-S USED
BX6 X6-X6
SA6 B7 INDICATE END OF DATA IN HEADER
IDM TITLE INITIALIZE DATA MANAGER.
* INITIALIZE DATA MANAGER
IDM0 SB4 B4+B1
SX7 B4
SA7 CCP CURRENT CORE POSITION
LX7 24
SA7 VEDT START OF EDTS
* INITIAL TOTAL XXJ FILES.
IDM4 SA1 VTOT TOTAL LOADED FLAG
SX6 B1
ZR X1,IDM6 IF TOTAL IS NOT LOADED
SA6 TFLAG FLAG FOR XXJ FILE BEING FOR TOTAL
IDM5 SA2 TDBID+3 GET FET POINTERS AND DBMOD NAME
SA1 A2-B1
SA5 X2 DBMOD NAME
SX0 B1
BX6 X5
BX7 X0+X5
BX1 X1-X2
SA6 XXJK SAVE FOR XXJ PROCESSING
SA7 TOTFILE FILE NAME TO RETURN
MX0 12
BX6 X0*X5
SA6 XXJN SAVE DATA BASE ID
SX6 X2+B1
MX2 12
ZR X1,IDM6 IF NO MORE DBMODS
SA1 DBID+5 ADVANCE NUMBER OF EDTS
SA6 A2 ADVANCE OUT
SX6 X1+B1
SA6 A1
BX5 X2*X5 DATA BASE ID
RJ XXJ GET XXJ FILE AND BEGIN PROCESSING
SA3 CCP CURRENT CORE LOCATION
SX4 IFL= INITIALIZATION FIELD LENGTH
SB4 X3 CURRENT EDT ADDRESS
SA2 TL
MX0 12
BX6 X0*X2 DATA BASE NAME
SX7 B4
SA6 B4+ FIRST WORD OF EDT
SA7 INTD CURRENT EDT ADDRESS
SB4 B4+HDRL
BX5 X5-X5 FLAG FOR SECOND PASS IN XXJ
RJ XXJ CONTINUE XXJ FILE PROCESSING
SX7 B4+
SA7 CCP CURRENT CORE LOCATION
RETURN TOTFILE,R RETURN DBMOD BINARIES
RETURN TL,R RETURN XXJ FILE
EQ IDM5 GET NEXT DBMOD
* PROCESS AAM XXJ FILE.
IDM6 SX6 B1+ NOT TAF DATA MANAGER
SA1 VAAM AAM LOAD FLAG
ZR X1,IDM8 IF AAM NOT LOADED
SA6 TFLAG
SB2 ZZZZZDG
STATUS B2 CHECK IF ZZZZZDG IS LOCAL
SA1 B2
MX6 11
LX1 59-11
BX6 X6*X1
ZR X6,IDM7 IF FILE NOT AT C.P.
RETURN ZZZZZDG
IDM7 SA2 CDBID+3 OUT
SA1 A2-B1 IN
SA5 X2 DATA BASE NAME
SX6 X2+B1 ADVANCE OUT
BX1 X1-X2
SA6 A2
BX7 X5
ZR X1,IDM8 IF NO MORE DATA BASES
ZR X5,IDM7 IF NO ENTRY
SA1 DBID+5 ADVANCE DATA BASES INITIALIZED
SX7 X1+B1
MX2 12
SA7 A1
BX5 X2*X5 DATA BASE
BX6 X5
SX7 B4
SA6 B4 FIRST WORD OF EDT
SB4 B4+HDRL
SA7 INTD CURRENT EDT ADDRESS
RJ XXJ PROCESS XXJ FILE - INITIAL CALL
BX5 X5-X5 SECOND PASS OF XXJ FILE
RJ XXJ CONTINUE XXJ PROCESSING
SX7 B4+
SA7 CCP CURRENT CORE POSITION
RETURN TL RETURN XXJ FILE
EQ IDM7 PROCESS NEXT DATA BASE
* PROCESS XXJ FILES FOR OTHER DATA BASES.
IDM8 SA2 OTHER+3 OUT
SA1 A2-B1 IN
SA5 X2 DATA BASE NAME
SX6 X2+B1 ADVANCE OUT
BX1 X1-X2
SA6 A2
BX7 X5
ZR X1,IDM8.1 IF NO MORE DATA BASES
ZR X5,IDM8 IF NO DATA BASE NAME
SA1 DBID+5 ADVANCE DATA BASES INITIALIZED
SX7 X1+B1
MX2 12
SA7 A1
BX5 X2*X5 DATA BASE
RJ XXJ PROCESS XXJ FILE
SX4 IFL= AVAILABLE MEMORY FOR TABLES
SA3 CCP
SB4 X3 CURRENT EDT ADDRESS
MX0 12
SA2 TL DATA BASE
BX6 X0*X2 DATA BASE NAME
SX7 B4
SA6 B4+ FIRST WORD OF EDT
SB4 B4+HDRL
SA7 INTD CURRENT EDT ADDRESS
BX5 X5-X5 SECOND PASS OF XXJ FILE
RJ XXJ CONTINUE XXJ PROCESSING
SX7 B4
SA7 CCP CURRENT CORE POSITION
RETURN TL RETURN XXJ FILE
EQ IDM8 PROCESS NEXT DATA BASE
IDM8.1 BX6 X6-X6
SA6 B4
SA1 VEDT
SA3 DBID+5 EDT COUNT
LX1 -24
SA2 X1
SX4 X3
LX3 18
BX6 X2+X3
SA6 A2 UPDATE COUNT IN FIRST EDT HEADER
IDM9 SX4 X4-1
ZR X4,IDM10 IF NO MORE EDTS
SA2 X2
BX6 X2
EQ IDM9 LOOP
IDM10 MX7 -18
BX7 X7*X6 CLEAR POINTER TO NEXT EDT
SA7 A2
RJ ABJ ALLOCATE BUFFERS FOR JOURNAL FILES
RJ LTL LOAD TASK LIBRARY DIRECTORIES
SA1 TL+1
SX7 B1
LX7 44 CLEAR EPR BIT FROM TASK LIBRARY FET
BX7 -X7*X1
SA7 A1
SA1 VTLD
SX6 B4 ADDRESS OF LAST WORD OF LAST TLD
LX1 -24
SA2 X1-4 FIRST WORD OF TLD HEADER
LX6 24
BX6 X2+X6
SA6 A2 UPDATE FIRST TLD FOR K-DISPLAY
RJ LTR LOAD TRANSACTION DIRECTORY
SB4 B4+B1
* ALLOCATE SPACE FOR CMM.
IDM11 SA1 VAAM AAM LOAD FLAG
ZR X1,IDM13 IF *AAM* NOT INITIALIZED
SB5 5 ALLOCATE BUFFER SPACE
SX6 B4+ FWA OF AVAILABLE MEMORY
SA6 TTIP+TIAM
SB2 TTIP FWA OF PARAMETERS
SA1 VCMM GET CMM FL
SA3 CRMI BIT MAP OF FILE ORGANIZATIONS
BX6 X1
BX7 X3
RJ CRM ALLOCATE RECORD SPACE
RJ RBL REPORT *BFL* INFORMATION
SA1 VREC
MX2 1
BX1 X2*X1 *CRM* RECOVERY BIT
NZ X1,IDM12 IF RECOVERY SITUATION
SB5 6
RJ CRM INITIALIZE *AAMI* RECOVERY FILES
IDM12 SA4 TTIP+TIAM FWA OF AVAILABLE MEMORY
SB4 X4+
* SET START OF SUB CP AREA.
IDM13 SX7 B4+77B ROUND UP TO NEAREST 100B
AX7 6
LX7 24+6
SA7 VFSCP
SB5 B4-IFL=
PL B5,DIE26 IF OVERFLOW DURING INITIALIZATION
EQ SETLX RETURN
ABJ SPACE 4,10
** ABJ - ALLOCATE BUFFERS FOR JOURNAL FILES.
*
* THIS ROUTINE DYNAMICALLY ALLOCATES BUFFER SPACE
* IN HIGH CORE FOR BUFFERED JOURNAL FILES.
*
* ENTRY (B4) = BEGINNING OF BUFFER AREA RETURNED BY *COMBINT*.
* (VEDT) = START OF EDTS.
*
* EXIT (B4) = END OF BUFFER ALLOCATION AREA.
* ALL BUFFERS HAVE BEEN INITIALIZED.
*
* USES A - 0, 1, 2, 3, 6, 7.
* X - 0, 1, 2, 3, 4, 6, 7.
* B - 4, 5.
ABJ SUBR ENTRY/EXIT
SA1 VEDT
LX1 -24
SA2 X1 EDT HEADER WORD 1
LX2 -18
SX4 X1+B1 ADDRESS OF EDT HEADER WORD 2
SB4 B4+B1
SX0 X2
ABJ1 SA3 X4 EDT HEADER WORD 2
ZR X0,ABJX IF COMPLETE - RETURN
AX3 18
SX0 X0-1 DECREMENT EDT COUNT
SA0 X3-JFETL ADDRESS OF FIRST JOURNAL FILE FET - JFETL
AX3 36 POSITION JOURNAL BUFFER COUNT
SB5 X3 JOURNAL COUNT FOR THIS EDT
SA1 A3-B1 FIRST WORD OF EDT HEADER
SX4 X1+B1 ADDRESS OF EDT HEADER WORD 2
ABJ2 ZR B5,ABJ1 IF NO MORE JOURNAL FILES FOR THIS EDT
SA0 A0+JFETL BUMP INDEX TO NEXT JOURNAL FET
SA1 A0+7
LX1 -1
SB5 B5-B1 DECREMENT JOURNAL COUNT
NG X1,ABJ2 NOT BUFFERED JOURNAL FILE
SX7 B4
LX1 1
SX6 TAPL+1 BLOCK SIZE FOR *MT,B*
NG X1,ABJ3 IF *MT,B*
SX6 DSKL+1 BLOCK SIZE FOR *MS,B*
ABJ3 SB4 X6+B4 INCREMENT BUFFER POINTER
MX1 42
SA2 A0+B1
BX2 X1*X2
SA7 A2+B1 IN
SA7 A7+B1 OUT
IX6 X6+X7
SA6 A7+B1
BX7 X2+X7
SA7 A2 FIRST
SX6 B4-IFL=
PL X6,DIE26 IF OVERFLOW DURING INITIALIZATION
EQ ABJ2 LOOP
LTL SPACE 4,25
** LTL - LOAD TASK LIBRARY DIRECTORIES.
*
* LOAD THE SYSTEM TASK LIBRARY DIRECTORY, *TASKLIB*, AND AN
* *XXTASKL (XX=DATA BASE) LIBRARY DIRECTORY FOR EACH DATA BASE.
*
* ENTRY (B4) = BEGINNING OF DIRECTORY AREA.
* (DBNT) = LIST OF DATA BASE NAMES AND ACCOUNT NUMBERS
* ASSOCIATED WITH THAT DATA BASE.
*
* EXIT (B4) = LWA+1 OF DIRECTORY AREA.
* (VTLD-4) - (VTLD-1) = TASK LIBRARY HEADER.
* TO *DIE12* IF ERROR ON *ATTACH*.
* TO *DIE26* IF MEMORY OVERFLOW.
* ABORT IF TLD ERROR.
* ABORT IF TLD TOO LONG.
*
* USES A - ALL.
* X - ALL.
* B - 2, 3, 4, 5.
*
* CALLS CER, SNM.
*
* MACROS ABORT, ATTACH, MESSAGE, READ, READW, SKIPB, SKIPEI.
LTL SUBR ENTRY/EXIT
RJ STI SET TAF INDEX
RJ SFD SET FAMILY TO DEFAULT
SX6 HBUF INITIALIZE IN AND OUT IN DBID
SA6 DBID+3 OUT
RECALL TL WAIT FOR COMPLETION OF *CIO* REQUEST
SA1 VTFL SYSTEM TASK LIBRARY NAME
SX7 B0
BX6 X1
SA7 TL+8 CLEAR PERMANENT FILE NAME FROM FET
SA6 TL
SA0 B4 (A0) = CURRENT INITIALIZATION POINTER
MX4 -18
SX7 IBUF
SA1 A6+B1 TL FET +1
BX6 X4*X1 SET UP TASK LIBRARY FET
BX6 X6+X7
SA7 A1+B1 IN
SA6 A1 FIRST
SA7 A7+B1 OUT
SA2 A7+B1
SX6 X6+IBUFL
BX7 X4*X2
BX7 X7+X6
SA7 A2 LIMIT
ATTACH TL,,,,M ATTACH LIBRARY FILE IN WRITE MODE
RJ CER CHECK ERROR STATUS
NZ X1,DIE12 IF ERROR ON ATTACH
SKIPEI TL
SKIPB TL,2 BACKSPACE TO POSITION AT DIRECTORY
READ TL INITIATE READ
READW TL,A0,TLDMS
NG X1,LTL6 IF DIRECTORY EMPTY
ZR X1,LTL8 IF DIRECTORY TOO LONG
SX6 A0
IX4 X1-X6 NUMBER OF WORDS IN DIRECTORY
ZR X4,LTL6 IF DIRECTORY EMPTY
SA2 SETLC COPY OF DIRECTORY HEADER WORD
MX6 18
SA3 A0+B1 HEADER WORD ON DIRECTORY
BX4 X6*X3
IX7 X2-X4
NZ X7,LTL9 IF INCORRECT DIRECTORY HEADER WORD
SA5 TL
MX7 42
SX6 B1
BX7 X7*X5 NAME OF LIBRARY FILE
BX7 X7+X6
SA7 A0+3
SA7 HBUF SAVE LIBRARY NAME
SA2 A0 GET PRU OF *TRD*
SX6 A0 FWA OF *TLD*
MX0 -30
BX0 -X0*X2
LX0 59-29
BX6 X0+X6 *TRD* PRU + FWA OF *TLD*
SA6 A7+B1
SX6 A6+B1
SA6 DBID+2 UPDATE DBID IN
SX7 A0+4 FWA OF DIRECTORY
LX7 24
LX3 -18
SB5 X3+3 SIZE OF BASE DIRECTORY + HEADER WORDS
SX2 X1+TLDL+TLDLE DIRECTORY+EXPANSION AREA+TERMINATOR
SX6 A0+B5 LWA OF BASE DIRECTORY
BX7 X7+X6
SX3 A0 START OF TLD
IX6 X2-X3 TOTAL LENGTH OF TLD
SA6 A0 TOTAL LENGTH OF TLD TO TLD HEADER
SA0 X2 SAVE CURRENT POSITION
SA7 VTLD
SA4 LTLE
IX7 X4+X6
SA7 A4
SX1 X7-TLDMX CHECK FOR GREATER THAN 12-BIT OFFSET
PL X1,LTL9.1 IF TLD-S TAKE UP TOO MUCH SPACE
ATTACH TL,,,,RM ATTACH SYSTEM TASK LIBRARY FILE - READ MODE
* ATTACH XXTASKL FILES (XX=DATA BASE NAME) FOR EACH DATA BASE.
SA5 VEDT
LX5 -24
SA2 X5 EDT HEADER WORD 1
LX2 -18
SB4 A0+ NEXT AVAILABLE DIRECTORY LOCATION
SX0 X2 COUNT OF EDTS
LTL1 ZR X0,LTLX IF NO MORE EDT-S
MX1 12
SA4 X5 FIRST WORD OF EDT
BX3 X1*X4 DATA BASE
SA2 LTLA *00TASKL*
BX6 X3+X2
SX7 IBUF
SA3 TL+1
MX1 -18
SX4 B1
BX6 X6+X4 ADD ON COMPLETION BIT
SA6 A3-B1 *DBTASKL*
BX2 X1*X3
LX4 44 ERROR PROCESSING BIT
BX6 X2+X7
SA7 A3+B1 IN
BX6 X6+X4
SA6 A3 FIRST
SA7 A7+B1 OUT
SA2 A7+B1
SX6 X6+IBUFL
BX1 X1*X2
BX7 X1+X6
SB2 FETL-5
SA7 A2 LIMIT
BX7 X7-X7
LTL2 SA7 A7+B1 CLEAR OUT REMAINDER OF FET
SB2 B2-B1
NZ B2,LTL2 IF NOT FINISHED WITH FET
MX1 42
SA3 X5+2 USER NAME
BX7 X1*X3 USER NAME
SA4 X5+6 FAMILY IN *EDT* HEADER WORD 7
BX6 X1*X4
SA1 A4-B1 *EDT* HEADER WORD 6
SA7 LTLC SAVE USER NAME FOR *ATTACH*
SA6 LTLD SAVE USER FAMILY
MX7 48
LX7 6
BX6 X7*X1
SA6 TL+CFPK PACKNAME AND UNIT INTO FET
LX1 -6
MX4 -12
BX4 -X4*X1 DEVICE TYPE
SA2 TL+1
NZ X4,LTL3 IF DEVICE TYPE SPECIFIED
SA4 ATTA DEFAULT DEVICE
LTL3 MX7 -48
LX4 -12
BX2 -X7*X2
IX6 X2+X4
SA6 A2 DEVICE TYPE TO FET
SA1 LTLD
SX2 10B *SETPFP* FLAGS
BX6 X2+X1
SA6 STIA *SETPFP* CALL BLOCK
SETPFP STIA SWITCH TO USERS FAMILY
SA1 STIA
LX1 59-12
NG X1,LTL10 IF *SETPFP* ERRORS
ATTACH TL,,LTLC,,M ATTACH LIBRARY IN WRITE MODE
RJ CER CHECK ERROR STATUS
NZ X1,LTL5 IF *DBTASK* NOT AVAILABLE
SKIPEI TL
SKIPB TL,2 BACKSPACE TO POSITION AT DIRECTORY
READ TL INITIATE READ
READW TL,A0,TLDMS
SA2 TL
MX7 42
SX6 B1
BX7 X7*X2 NAME OF LIBRARY FILE
BX7 X7+X6
SA7 A0+3
BX3 X1
NG X3,LTL6 IF DIRECTORY EMPTY
ZR X3,LTL8 IF DIRECTORY TOO LONG
SA2 DBID+2 GET IN
SB4 X2
SA7 X2 SAVE LIBRARY NAME
SA2 A0 GET PRU OF *TRD*
MX6 -30
BX6 -X6*X2
LX6 59-29
SX2 A0 FWA OF *TLD*
BX6 X6+X2 *TRD* PRU + FWA OF *TLD*
SA6 A7+B1
SX6 A6+B1
SA6 DBID+2 UPDATE DBID IN
SX6 A0
IX4 X3-X6 NUMBER OF WORDS IN DIRECTORY
ZR X4,LTL6 IF DIRECTORY EMPTY
SA2 SETLC COPY OF DIRECTORY HEADER WORD
MX6 18
SA1 A0+B1 HEADER WORD IN DIRECTORY
BX4 X6*X1
IX7 X2-X4
NZ X7,LTL9 IF INCORRECT DIRECTORY HEADER WORD
SX7 A0+4 FWA OF DIRECTORY
LX7 18
LX1 -18
SB5 X1+3 SIZE OF DIRECTORY + HEADER WORDS
SX2 X3+TLDL+TLDLE DIRECTORY+EXPANSION AREA+TERMINATOR
SX6 A0+B5 LWA OF BASE DIRECTORY
MX1 42
BX7 X7+X6
SX3 A0 START OF TLD
IX6 X2-X3 TOTAL LENGTH OF TLD
SA6 A0 LENGTH OF TLD TO TLD HEADER
SA3 X5+2 USER NAME, PASSWORD
SA0 X2 SAVE CURRENT POSITION
SA7 X5+4 FWA,LWA OF *DBTASKL*
BX3 X1*X3 USER NAME
SA4 LTLE
IX7 X4+X6
SA7 A4
SX1 X7-TLDMX CHECK FOR GREATER THAN 12-BIT OFFSET
PL X1,LTL9.1 IF TLD-S TAKE UP TOO MUCH SPACE
ATTACH TL,,LTLC,,RM ATTACH LIBRARY IN READ MODE
LTL4 SA5 X5 GET POINTER TO NEXT EDT
SB4 A0 NEXT AVAILABLE DIRECTORY LOCATION
SX0 X0-1 DECREMENT EDT COUNT
SX1 B4-IFL=
PL X1,DIE26 IF MEMORY OVERFLOW
RJ SFD REVERT TO DEFAULT FAMILY
EQ LTL1 LOOP TO NEXT EDT HEADER
LTL5 SX7 0
SA7 X5+4 CLEAR FWA,LWA IN EDT HEADER
SA1 TL
MX6 42
BX1 X6*X1
SB2 1RX REPLACEMENT CHARACTER IN MESSAGE
SB5 -MSGK * ATTACH ERROR ON - XXXXXXX.*
SB3 MSGAY ASSEMBLY AREA FOR MESSAGE
RJ SNM SET NAME IN MESSAGE
MESSAGE MSGAY
EQ LTL4 PROCESS NEXT DATA BASE
* COMPLETE MESSAGE, ISSUE IT AND ABORT.
LTL6 SB5 SETLA * LIBRARY DIRECTORY EMPTY - ZZZZZZZ.*
LTL7 SA1 TL GET FILE NAME ASSOCIATED WITH ERROR
SB2 1RZ DISPLAY CODE SEARCH CHARACTER
MX5 42
BX1 X1*X5 DISPLAY CODE NAME TO INSERT
RJ SNM SET NAME IN MESSAGE
LTL7.1 MESSAGE B5
RJ SFD REVERT TO DEFAULT FAMILY
ABORT
LTL8 SB5 SETLB * LIBRARY DIRECTORY TOO LONG - ZZZZZZZ.*
EQ LTL7 COMPLETE MESSAGE, ISSUE IT, ABORT
LTL9 SB5 SETLD * LIBRARY DIRECTORY ERROR - ZZZZZZZ.*
EQ LTL7 COMPLETE MESSAGE, ISSUE IT, ABORT
LTL9.1 SB5 SETLI * LIBRARY DIRECTORY SPACE TOO LARGE. *
EQ LTL7.1 ISSUE MESSAGE AND ABORT
LTL10 SA1 LTLC USER NAME
SB2 1RX
SB5 MSGAI
RJ SNM
SA1 LTLD FAMILY
SB2 1RY
SB5 MSGAI+2
RJ SNM
MESSAGE MSGAI
RJ SFD REVERT TO DEFAULT FAMILY
ABORT
LTLA VFD 12/0,30/5LTASKL,18/0
LTLC BSS 1 USER NAME FROM *EDT*
LTLD BSS 1 USER FAMILY FROM *EDT*
LTLE BSSZ 1 NUMBER OF WORDS READ FROM TLD-S
LTR SPACE 4,25
** LTR - LOAD TRANSACTION DIRECTORIVES.
*
* ENTRY (B4) = FWA OF TRANSACTION DIRECTORY AREA.
*
* EXIT TRANSACTION DIRECTORIVES LOADED WITH EXPANDABLE
* SPACE + 1 AT THE END OF EVERY *TRD*.
*
* USES X - ALL.
* A - ALL.
* B - 2, 3, 4, 5, 7.
*
* CALLS STLD.
*
* MACROS MESSAGE, READ, READW.
LTR11 SA1 LTRD GET TRANSACTION COUNT
NZ X1,LTRX IF COUNT NOT ZERO
MESSAGE LTRE
LTR SUBR ENTRY/EXIT
LTR1 SA1 DBID+2 GET IN
SA2 DBID+3 OUT
IX3 X1-X2
ZR X3,LTR11 IF LOADING COMPLETE
* DETERMINE LIBRARY NAME AND *TRD* ADDRESS.
SA0 B4 FWA OF *TRD*
SX6 X2+2 UPDATE OUT
SA6 A2
SA1 X2 GET LIBRARY NAME
SA2 A1+B1 GET *TRD* PRU + FWA OF *TLD*
SA3 X2 GET FWA OF *TLD*
SX6 A0+4 PUT FWA OF *TRD* IN FWA OF *TLD*
BX5 X6
LX6 59-17
BX6 X6+X3 ADD FWA OF *TRD*
SA6 A3 UPDATE FWA OF *TLD*
MX0 30
BX6 X0*X2 *TRD* PRU
ZR X6,LTR6 IF NO PRU
LX6 30
SA6 TL+6 PUT PRU IN FET
MX0 42 PUT LIBRARY NAME IN FET
BX7 X1
SA7 TL
SX6 THBUF
SA1 A7+B1
BX1 X0*X1
BX7 X6+X1
SA7 A7+B1 FIRST
SA6 A7+B1 IN
SA6 A6+B1 OUT
SX7 X6+IBUFL
SA1 A6+B1
BX1 X0*X1
BX7 X1+X7
SA7 A1 LIMIT
* READ TRANSACTION DIRECTORY.
READ TL INITIATE READ
READW TL,A0,TRDMS
BX3 X1
* VALIDATE TRANSACTION DIRECTORY.
SX4 A0
NG X1,LTR6 IF DIRECTORY EMPTY
ZR X1,LTR7 IF DIRECTORY TOO LONG
IX4 X3-X4 NUMBER OF WORDS IN DIRECTORY
MX6 18
ZR X4,LTR6 IF DIRECTORY EMPTY
SA2 LTRD INCREMENT TRANSACTION DIRECTORY COUNT
SX7 X2+1
SA7 LTRD
SA2 LTRA VALIDATE *TRD* HEADER
SA1 A0+B1 HEADER WORD IN DIRECTORY
BX4 X6*X1
IX7 X2-X4
SB3 X5 FWA OF *TRD*
NZ X7,LTR8 IF INCORRECT *TRD* HEADER WORD
SA3 HBUF GET DATA BASE NAME
SA2 TL
BX0 X0-X0
IX4 X2-X3
MX6 42
BX6 X6*X4
SB4 A0+TRDLH FWA OF FIRST TRANSACTION
ZR X6,LTR2 IF SYSTEM LIBRARY
MX0 12
BX0 X0*X2 DATA BASE NAME
LX0 12
LTR2 LX1 -18 GET *TRD* LENGTH
SB7 5 LENGTH OF *TRD* ENTRY
SB5 X1
ZR B5,LTR6 IF *TRD* LENGTH IS ZERO
BX7 X7-X7
SA7 B4+B5 MAKE SURE LAST WORD IS ZERO
* CREATE INDEX TO TASKS FOR TRANSACTIONS.
LTR3 SA1 B3 GET TRANSACTION NAME
ZR X1,LTR6 IF NO TRANSACTION NAME
BX7 X1 PUT TRANSACTION NAME IN WORD ONE OF *TRD*
SB3 B3+B1
SA7 X5
BX6 X6-X6
SX5 X5+B1 INCREMENT POINTER
LTR4 BX3 X0 DATA BASE NAME
SA2 B3+ TASK NAME
SB3 B3+B1
ZR X2,LTR5 IF NO TASK NAME
RJ STLD SEARCH FOR TASK NAME
LTR5 SB7 B7-B1
LX6 12
NZ B7,LTR4 IF NOT END OF CONVERSION
SB7 5
SA6 X5 PUT TASK ORDINAL INTO *TRD* WORD TWO
SX5 X5+B1 INCREMENT POINTER
EQ LTR3 PROCESS NEXT TRANSACTION
LTR6 SB4 X5+TRDL NEXT AVAILABLE SPACE
BX7 X7-X7
SA7 X5 CLEAR LAST WORD
EQ LTR10 PROCESS NEXT LIBRARY
LTR7 SB5 LTRB * TRANSACTION DIRECTORY TOO LONG *
EQ LTR10 PROCESS NEXT LIBRARY
LTR8 SB5 LTRC * INCORRECT TRANSACTION DIRECTORY HEADER *
* ISSUE DAYFILE MESSAGE.
LTR9 SB2 1RZ DISPLAY CODE SEARCH CHARACTER
SA1 TL GET FILE NAME ASSOCIATED WITH ERROR
MX0 42
BX1 X0*X1 LIBRARY NAME TO INSERT
SB3 DAYB ALTERNATE ASSEMBLY AREA
SB5 -B5
RJ SNM SET NAME IN MESSAGE
MESSAGE DAYB ISSUE DAYFILE MESSAGE
* PUT LWA OF *TRD* IN *TRD* HEADER.
LTR10 MX0 42
SX6 X5-1 LWA OF *TRD*
SA1 A0+B1 *TRD* HEADER
BX2 X0*X1
BX6 X2+X6
SA6 A1+
EQ LTR1 PROCESS NEXT LIBRARY
LTRA VFD 60/0LTRD *TRD* HEADER
LTRB DATA C* TRANSACTION DIRECTORY TOO LONG - ZZZZZZZ.*
LTRC DATA C* INCORRECT TRANSACTION DIRECTORY HEADER - ZZZZZZZ.*
LTRD BSSZ 1 TRANSACTION DIRECTORY COUNTER
LTRE DATA C* NO TRANSACTION NAME IS DEFINED IN TASK LIBRARY.*
STLD SPACE 4
** STLD SEARCH THE TASK LIBRARY DIRECTORY
*
* ENTRY (X2) = LEFT JUSTIFIED TASK NAME
* (X6) = TASK LIST ACCUMULATOR
* (X3) = DATA BASE NAME OF TASK LIBRARY
* = 0 IF SYSTEM TASK LIBRARY
*
* EXIT (X6) = TASK BIAS ADDED TO PRIOR CONTENTS
* (A1) = ADDRESS OF 1ST WORD FOR *TLD* ENTRY MATCHED
* ABORT *TAF* IF *OFFTASK* NOT FOUND
*
* USES X - 1, 2, 3, 6, 7
* A - 1, 3, 6, 7
* B - 4, 5, 6
*
* MACROS ABORT.
STLD PS ENTRY/EXIT
BX7 X3
SA7 STLDB
SA6 A7+B1
ZR X3,STLD3 IF NO DATA BASE SPECIFIED
SA1 VEDT GET FWA OF EDT
LX1 -24
LX7 -12
SA3 X1+ FWA OF EDT
LX3 -18
SB4 X3 EDT COUNT
LX3 18
ZR B4,STLD13 IF NO EDTS TO SEARCH
STLD1 MX6 12
BX6 X6*X3 EDT DATA BASE NAME
IX6 X6-X7
SB4 B4-B1
ZR X6,STLD2 IF DATA BASE NAME MATCH
SA3 X3+ LINK TO NEXT EDT
NZ B4,STLD1 IF MORE EDTS
EQ STLD13 NO DATA DASE TASK LIBRARY
STLD2 SA1 A3+4 EDT HEADER + 4
SB6 X1
BX7 X1
LX1 -18
SB5 X1
SB6 B6-TLDLE+1
SA7 STLDB
NZ X1,STLD4 IF NO DATA BASE TASK LIBRARY
STLD3 SA3 VTLD START OF *TLD*
SB6 X3-TLDLE+1 LWA OF SYSTEM *TLD*
LX3 -24
SB5 X3 FWA OF *TLD*
STLD4 MX7 42 MASK FOR TASK NAME
SX3 B1
SB4 59
STLD5 ZR X3,STLD7 IF NO TASK FOUND
SX3 B6-B5
LX1 X3,B4
PL X1,STLD6 IF ODD NUMBER OF ENTRIES REMAIN
SX3 X3+TLDLE
STLD6 AX3 1
SA1 B5+X3 NEXT ENTRY
BX1 X7*X1
IX1 X1-X2
NG X1,STLD11 IF TO RAISE LOWER LIMIT
ZR X1,STLD10 IF TASK FOUND
SB6 A1-TLDLE LOWER UPPER LIMIT
GE B6,B5,STLD5 IF NOT DONE SEARCHING
* SEARCH *TLD* TRAILING ENTRIES (ENTRIES ADDED DYNAMICALLY BY
* LIBTASK ARE PLACED AT END OF REGULAR DIRECTORY)
STLD7 SA1 STLDB
ZR X1,STLD8 IF NO D.B. SPECIFIED
SB6 X1+B1 LWA OF SPECIFIED D.B.
SA1 B6
EQ STLD9 SEARCH *TLD*
STLD8 SA1 VTLD GET LAST WORD ADDRESS OF REGULAR *TLD*
SB6 X1+B1
SA1 B6
STLD9 ZR X1,STLD13 IF END OF LIST
BX1 X7*X1
IX1 X1-X2 COMPARE TASK NAMES
ZR X1,STLD10 IF TASK FOUND
SA1 A1+TLDLE
EQ STLD9 CONTINUE SEARCH
* TASK FOUND
STLD10 SA3 VTLD GET TASK BIAS
LX3 -24
SB6 X3-1
SX7 A1-B6
SA3 A1+2
LX3 59-55 LEFT JUSTIFY ON/OFF FLAG
NG X3,STLD12 IF TASK TURNED OFF
LX3 59-54-59+55 LEFT JUSTIFY DELETE FLAG
NG X3,STLD13 IF TASK DELETED
SA3 STLDB+1 TASK LIST ACCUMULATOR
LX7 48
BX6 X3+X7
EQ STLD *RETURN
STLD11 SB5 A1+TLDLE
LE B5,B6,STLD5 IF NOT DONE SEARCHING
EQ STLD7 NO TASK WITH REQUESTED NAME FOUND
* CALL A DEFAULT TASK IN PLACE OF TURNED OFF TASK
STLD12 SA1 STLDA DEFAULT TASK NAME
BX3 X1-X2 CHECK FOR DEFAULT TASK NAME
BX2 X1
ZR X3,STLD14 IF DEFAULT TASK NOT FOUND
SA3 STLDB
ZR X3,STLD3 IF SEARCH SYSTEM *TLD* FOR DEFAULT TASK
SB6 X3-TLDLE+1
LX3 -18
SB5 X3
EQ STLD4 SEARCH *DBTASKL* FOR DEFAULT TASK
* TASK MATCH NOT FOUND
STLD13 SA1 STLDB IF *DBTASKL* PRESENT
BX6 X6-X6
SA6 A1
ZR X1,STLD12 IF TASK NOT FOUND
EQ STLD3 NOW SEARCH SYSTEM *TLD* FOR DESIRED TASK
* DEFAULT TASK NOT AVAILABLE.
STLD14 MESSAGE STLDC,0,R * OFFTASK OFF OR UNDEFINED.*
ABORT ERROR ABORT
STLDA VFD 42/0LOFFTASK,18/0 TASK TO PROCESS TURNED OFF TASKS
STLDB BSS 1 DATA BASE FLAG
BSS 1 TASK LIST ACCUMULATOR
STLDC DATA C* OFFTASK OFF OR UNDEFINED.*
ATT SPACE 4,10
TITLE INITIALIZE DATA MANAGER FILES.
ATT SPACE 4,30
** ATT - ATTACH POOL, TRACE, AND JOURNAL FILES.
*
* THIS ROUTINE FIRST CHECKS IF A POOL, TRACE OR JOURNAL
* FILE IS LOCAL TO THE CONTROL POINT. IF NOT, AN *ATTACH*
* IS ATTEMPTED ON THE FILE IN THE MODE SPECIFIED. AN
* EXCEPTION TO THIS IS A DISK FILE ASSOCIATED WITH TAPE
* JOURNALIZING, WHICH IS ATTACHED IN *WRITE* MODE. IF THE
* FILE CANNOT BE FOUND, A DIRECT ACCESS PERMANENT FILE IS
* CREATED IN *WRITE* MODE AND LEFT ATTACHED TO THE
* CONTROL POINT.
*
* ENTRY (B4) = ADDRESS OF CURRENT FET.
* (X6) = 0 IF ATTACH MODE IS MODIFY.
* = 1 IF ATTACH MODE IS WRITE.
* = 2 IF ATTACH DISK JOURNAL FILE ASSOCIATED
* WITH TAPE JOURNAL.
* = .LT. 0 IF TAPE JOURNAL FILE.
* (X0) = NAME OF TAPE JOURNAL FILE IF (X6) IS .LT. 0
* (X0) = NAME OF TAPE JOURNAL FILE IF (X6) IS NEGATIVE
* OR = 2.
*
* EXIT (X2) .NE. 0 IF FILE ALREADY ATTACHED.
* TO *DIE12* IF ATTACH ERRORS.
*
* USES X - 1, 2, 3, 4, 6.
* A - 1, 2, 3, 6.
* B - 3, 5.
*
* MACROS ATTACH, DEFINE, SKIPEI, STATUS.
ATT SUBR ENTRY/EXIT
SA6 ATTB SAVE ATTACH MODE FLAG
STATUS B4
SA1 B4
MX6 11
LX1 59-11
BX6 X6*X1 CHECK IF FILE EXISTS
SA6 ATTC
RJ CER CLEAR ERROR STATUS BITS
NZ X6,ATT3 IF FILE ALREADY AT CONTROL POINT
ATT1 SA3 ATTB ATTACH MODE
NZ X3,ATT4 IF ATTACH MODE IS WRITE
ATTACH B4,,,,M
ATT2 RJ CER CHECK ERROR STATUS
SB3 X1-2 TEST FOR FILE NOT FOUND
NZ X1,ATT6 IF ERROR ON ATTACH
ATT3 SKIPEI B4,R
SA2 ATTC ATTACH FLAG
EQ ATTX RETURN
ATT4 SA2 B4
MX4 42
SB5 X3-2
BX1 X4*X2
NZ B5,ATT5 IF NOT TAPE/DISK JOURNAL FILE PROCESSING
BX1 X4*X0
ATT5 ATTACH B4,X1,,,W
EQ ATT2 CHECK FOR ERRORS
ATT6 NZ B3,DIE12 IF FILE NOT FOUND
SA3 ATTB
SA2 B4
MX4 42
SB5 X3-2
BX1 X4*X2 PERMANENT FILE NAME
NZ B5,ATT7 IF NOT TAPE/DISK JOURNAL FILE PROCESSING
BX1 X4*X0
ATT7 DEFINE B4,X1,,,ATTA
EQ ATT2 CHECK FOR ERRORS
ATTA VFD 48/0,12/0L"DTYM" DEFAULT DEVICE TYPE
ATTB CON 0 FLAG FOR ATTACH MODE
ATTC CON 0 FILE ALREADY AT CONTROL POINT FLAG
CER SPACE 4,15
** CER - CHECK ERROR STATUS.
*
* THIS ROUTINE EXAMINES THE ERROR STATUS IN THE FET.
* IT THEN CLEARS THE STATUS IN THE FET AND RETURNS.
*
* ENTRY (X2) = FET FWA.
*
* EXIT (X1) = STATUS.
*
* USES A - 1, 7.
* X - 1, 7.
CER SUBR ENTRY/EXIT
MX7 42
SA1 X2
MX3 -8
BX7 X7*X1
AX1 10
BX1 -X3*X1 ERROR STATUS BITS
SX3 B1
IX7 X7+X3
SA7 A1 CLEAR ERROR STATUS IN FET
EQ CERX RETURN
RBL SPACE 4,20
*** RBL - REPORT BFL INFORMATION.
*
* ENTRY (X6) = EXIT CONDITION.
* (VCMM) = 6/0, 18/TFL, 18/EFL, 18/BFL.
* (B2) = BFL-(FSTT+FIT+CMMCAP).
*
* EXIT MESSAGE ISSUED TO TAF-S DAYFILE STATING BFL
* INFORMATION.
*
* USES X - 0, 1, 6.
* A - 1, 6.
* B - 2, 3, 4, 5.
*
* CALLS COD, SNM.
*
* MACROS MESSAGE.
RBL SUBR ENTRY/EXIT
SA1 VCMM GET BFL
SB4 -B2
SX1 X1+B4
RJ COD CONVERT OCTAL TO DISPLAY
MX0 1
SB3 B2-B1
AX0 B3
BX1 X0*X4
SB2 1RX REPLACEMENT CHARACTER
SB5 RBLA MESSAGE ADDRESS
RJ SNM SET NAME IN MESSAGE
SA1 VCMM
SX1 X1+
RJ COD CONVERT OCTAL TO DISPLAY
MX0 1
SB3 B2-B1
AX0 B3
BX1 X0*X4
SB2 1RZ REPLACEMENT CHARACTER
SB5 RBLA MESSAGE ADDRESS
RJ SNM SET NAME IN MESSAGE
MESSAGE RBLA,3 ISSUE DAYFILE MESSAGE
EQ RBLX EXIT
RBLA DATA C* BFL = ZZZZZZB, MINIMUM REQUIRED = XXXXXXB.*
SFD SPACE 4
** SFD - SET FAMILY TO DEFAULT.
*
* EXIT DEFAULT FAMILY SET.
*
* USES X - 6.
* A - 6.
*
* MACROS SETPFP.
SFD SUBR ENTRY/EXIT
SX6 10B *SETPFP* FLAGS
SA6 STIA *SETPFP* CALL BLOCK
SETPFP STIA SET DEFAULT FAMILY
EQ SFDX RETURN
STI SPACE 4,15
** STI - SET TAF INDEX.
*
* ENTRY (VUSN) = TAF USER NAME.
* (VFMN) = TAF FAMILY NAME.
* TRUI = TAF USER INDEX.
*
* EXIT TAF USER VALIDATIONS SET.
*
* USES X - 0, 1, 2, 6.
* A - 1, 2, 6.
*
* MACROS SETPFP.
STI SUBR ENTRY/EXIT
SA1 VUSN TAF USER NAME
SX6 TRUI TAF USER INDEX
MX0 42
BX6 X1+X6
SA6 STIA+2
SA1 VFMN TAF FAMILY NAME
SX2 13B FLAG SETUP FOR *SETPFP*
BX6 X0*X1
BX6 X2+X6
SA6 STIA
SETPFP STIA
EQ STIX RETURN
* CALL BLOCK FOR *SETPFP*.
STIA CON 0 42/ FAMILY NAME, 14/ , 4/ FLAGS
CON 0 42/ PACK NAME, 18/ PACK TYPE
CON 0 42/ USER NAME, 18/ USER INDEX
UPK SPACE 4,15
** UPK - UNPACK AUXILIARY DEVICE INFORMATION FROM *XXJ* FILE.
*
* ENTRY (B4) - ARGUMENT COUNT.
* (B5) - ARGUMENT TABLE.
* (B7) - LOW CORE AREA USED FOR UNPACKING.
*
* EXIT (DEV) - 42/PACKNAME,12/DEVICE TYPE,6/UNIT.
* (X6) = (DEV)
*
* USES A - 1, 3, 4, 6.
* X - 1, 3, 4, 6, 7.
* X - 1, 3, 4, 6, 7.
*
* CALLS ARG.
UPK SUBR ENTRY/EXIT
SA4 B7+B1 FIRST ARGUMENT TO PROCESS
RJ ARG PROCESS ARGUMENTS
NZ X1,DIE11 IF ARGUMENT ERROR
SA3 DEV
NZ X3,UPK2 IF DEVICE TYPE SPECIFIED
SA1 ATTA DEFAULT DEVICE TYPE
BX3 X1
UPK1 SA1 PAC PACKNAME
LX3 6
BX6 X3+X1
SA6 A3
EQ UPKX RETURN
UPK2 LX3 12
MX4 6
SX1 1R0
LX1 -6
BX7 X4*X3 NUMBER OF UNITS
IX1 X7-X1 UNIT NUMBER
ZR X7,UPK1 IF NO UNIT SPECIFIED
SX6 X3 DEVICE TYPE
IX3 X1+X6
EQ UPK1 SET PACKNAME
VUN SPACE 4,20
** VUN - VALIDATE USER NAME.
*
* VALIDATE USER NAME SO THAT *TAF* MAY EXECUTE IN A
* MULTI-FAMILY ENVIRONMENT. USE OF INCORRECT USER NAMES OR
* USER NAMES NOT VALID FOR A GIVEN FAMILY MAY RESULT IN
* *TAF*-S ABORTING WHILE SUBMITTING A TASK DUMP FOR *BATCH*
* PROCESSING.
*
* ENTRY (XXJD - XXJD+5) = USER NAME, PASSWORD AND FAMILY NAME.
*
* EXIT (XXJD - XXJD+5) IS VALIDATED.
* (X6) = UI - IF VALID USER NAME.
* (X6) = 0 - IF INCORRECT USER NAME ON SPECIFIED FAMILY.
*
* USES A - 1.
* X - 1, 6.
*
* MACROS SYSTEM.
VUN SUBR ENTRY/EXIT
SYSTEM CPM,R,XXJD,56B*100B
SA1 XXJD+2 GET USER INDEX
SX6 X1+
EQ VUNX RETURN
XXJ SPACE 4,10
** XXJ - INITIALIZE *XXJ* FILES. (XX=DATA BASE)
*
* THIS ROUTINE GETS THE *XXJ* FILES (XX=DATA BASE) FROM *TAF*-S
* USER INDEX FOR EACH DATA BASE SPECIFIED IN THE *TCF* FILE.
* INFORMATION FORM THE STATEMENTS IN THE *XXJ* FILES IS
* PROCESSED AND PLACED INTO AN *EDT* FOR THE DATA BASE.
*
* AN *INITL* CALL TO *TOTAL* IS GENERATED FOR EACH *TOTAL*
* DATA BASE.
*
* THE FORMAT OF THE *XXJ* FILE FOR A *CRM* DATA BASE IS -
*
* XXJ
* USER,USERN,PASSWD,FAMILY. (*USER* OR *ACCOUNT*)
* BRF,N.
* XXJOR1,DT,F.
* XXJOR2,DT,F.
* XXJOR3,DT,F.
* XXTASKL,PN=PACKNAM,R=DEV. (OPTIONAL).
* CRM(XXPF,TY,MODE,USERS,LOCKS,MRL,KL,HASH,
* REC,FWI,PACKNAM,DEV)
* (FOLLOWING ONLY FOR MIP FILES)
* IXN(XXPF,NKY,PACKNAM,DEV)
* AKY(KN,KO,KL) (ONE PER ALTERNATE KEY)
* RMKDEF(XXPF,RKW,RKP,KL,O,KF,KS,KG,KC,NL,IE,CH)
* (ONE PER ALTERNATE KEY)
*
* THE FORMAT OF THE *XXJ* FILE FOR A *TOTAL* DATA BASE IS -
*
* XXJ
* THE NEXT STATEMENT IS *ACCOUNT* OR *USER* IN THE FORM
* ACCOUNT,USERN,PASSWD,FAMILY. OR
* USER,USERN,PASSWD,FAMILY.
* XXJOR1,DT,F.
* XXJOR2,DT,F.
* XXJOR3,DT,F.
* XXTASKL,PN=PACKNAM,R=DEV. (OPTIONAL)
* NL -OR- LG -OR- AI -OR- BA -OR- UL
* -OR- LG,PN=PACKNAM,R=DEV.
* -OR- AI,PN=PACKNAM,R=DEV.
* -OR- BA,PN=PACKNAM,R=DEV.
* -OR- UL,PN=PACKNAM,R=DEV.
* AAAA. -OR- AAAA,PN=PACKNAM,R=DEV.
* ...
* ...
* ZZZZ. -OR- ZZZZ,PN=PACKNAM,R=DEV.
*
* WHERE XX = DATA BASE NAME.
* USERN = USER NAME.
* PASSWD = BATCH PASSWORD.
* FAMILY = DESIRED FAMILY. (IF OMITTED,
* DEFAULT FAMILY IS USED.)
* N = NO. OF BRF FILES FOR THIS D.B. (N IS OPTIONAL).
* PACKNAM = PACK NAME OF AUXILIARY DEVICE ON
* WHICH XXTASKL MAY RESIDE.
* DEV = DEVICE TYPE THE FILE WILL BE
* RESIDENT ON (DI,MD,...).
* DT = MT (SEVEN TRACK TAPE).
* MS (MASS STORAGE).
* NT (NINE TRACK TAPE).
* F = B (BLOCKED)
* R (RECORD)
* NL = NO LOGGING FOR TOTAL DATA BASE.
* LG = BEFORE IMAGE LOGGING (LOG RECORD IMAGE BEFORE
* UPDATING).
* AI = AFTER IMAGE LOGGING (LOG RECORD IMAGE AFTER
* UPDATING).
* BA = BEFORE AND AFTER IMAGE LOGGING.
* UL = USER LOGGING (USER SUPPLIES ROUTINE *TUSRLG*).
* AAAA = FOUR CHARACTER DATA BASE FILE NAME FOR TOTAL.
*
* XXPF = PERMANENT FILE NAME FOR *CRM*.
* (DATA FILE ON *CRM* OR INDEX FILE ON *IXN* STATEMENT).
* TY = FILE TYPE, *IS* FOR INDEX SEQUENTIAL
* OR *DA* FOR DIRECT ACCESS
* OR *AK* FOR ACTUAL KEY.
* MODE = ATTACH MODE FOR FILE.
* USER = NUMBER OF USERS THAT MAY OPEN FILE
* CONCURRENTLY.
* LOCKS = NUMBER OF RECORDS THAT MAY BE LOCKED
* CONCURRENTLY.
* MRL = MAXIMUM RECORD LENGTH IN CHARACTERS.
* KL = KEY LENGTH IN CHARACTERS.
* HASH = INDIRECT FILE NAME FOR HASHING ROUTINE.
* REC - FILE RECOVERABILITY INDICATOR.
* = R, FILE IS TO BE RECOVERED.
* = N, FILE IS NOT TO BE RECOVERED.
* FWI - CRM FILE FORCED WRITE INDICATOR.
* = Y, WRITE IN FORCED MODE.
* = N, NON-FORCED WRITE MODE.
* NKY = NUMBER OF ALTERNATE KEYS.
* KN = ALTERNATE KEY NUMBER (STARTING FROM 1).
* KO = ALTERNATE KEY OFFSET (STARTING FROM 1). THIS IS
* THE BEGINNING CHARACTER POSITION OF THE KEY.
* RKW = RELATIVE WORD IN THE RECORD IN WHICH THE
* ALTERNATE KEY BEGINS, COUNTING FROM 0.
* RKP = RELATIVE BEGINNING CHARACTER POSITION.
* 0 = REQUIRED TO MARK POSITION FOR RESERVED FIELD.
* KF = KEY FORMAT,
* 0 OR S - SYMBOLIC.
* 1 OR I - INTEGER.
* 2 OR U - UNCOLLATED SYMBOLIC.
* 3 OR P - PURGE ALTERNATE KEY FROM INDEX.
* KS = SUBSTRUCTURE FOR EACH PRIMARY KEY LIST IN
* THE INDEX; (OPTIONAL)
* U - UNIQUE (DEFAULT).
* I - INDEXED SEQUENTIAL.
* F - FIRST-IN FIRST-OUT.
* KG = LENGTH IN CHARACTERS OF THE REPEATING GROUP
* IN WHICH THE KEY RESIDES.
* KC = NUMBER OF OCCURRENCES OF THE REPEATING GROUP.
* NL = NULL SUPPRESSION; A NULL VALUE IS ALL SPACES
* (SYMBOLIC KEY) OR ALL ZEROS (INTEGER KEY):
* 0 - NULL VALUES ARE INDEXED (DEFAULT).
* N - NULL VALUES ARE NOT INDEXED.
* IE = INCLUDE/EXCLUDE SPARCE CONTROL CHARACTER:
* I - INCLUDE SPARCE CONTROL CHARACTER.
* E - EXCLUDE SPARSE CONTROL CHARACTER.
* CH = CHARACTERS THAT QUALIFY AS SPARCE CONTROL
* CHARACTERS.
* NOTE - *XXJORN* FILES ARE DEFINED SEQUENTIALLY, THAT IS
* XXJOR3 IMPLIES A PREVIOUS DEFINITION FOR XXJOR2 AND
* XXJOR1.
* WHEN THE PN= OR R= PARAMETER IS USED ON A STATEMENT,
* ONE OR BOTH MAYBE USED.
*
* ENTRY (B4) = ADDRESS OF FET.
* (X5) = DATA BASE NAME.
* (X5) = ZERO, IF NOT INITIAL CALL.
*
* EXIT (B4) = ADDRESS OF FET.
* TO *DIE6* IF NO *USER* OR *ACCOUNT* STATEMENT IN *XXJ*
* FILE.
* TO *DIE8* IF JOURNAL FILE LIMIT EXCEEDED.
* TO *DIE9* IF NO HEADER ON *XXJ* FILE.
* TO *DIE10* IF INCORRECT DATA BASE NAME IN FILE.
* TO *DIE11* IF ERROR ON *XXJ* FILE ARGUMENTS.
* TO *DIE13* IF JOURNAL FILE TYPE DOES NOT MATCH *XXJ*
* FILE.
* TO *DIE21* IF TOO MANY FILES IN DATA BASE.
* TO *DIE26* IF OVERFLOW OCCURRED DURING INITIALIZATION.
* TO *DIE27* IF INCORRECT USER.
* TO *DIE46* IF NO *AKY* STATEMENT PRESENT FOR MIP-FILE.
* TO *DIE51* IF INCORRECT *BRF* PARAMETER.
* TO *DIE52* IF NO *BRF* STATEMENT AT ALL.
* TO *DIE40* IF *CRM* D.M. IS NOT LOADED AND
* *CRM* D.M. RELATED STATEMENT IS SPECIFIED.
* TO *DIE42* IF *TOTAL* D.M. IS NOT LOADED AND
* *TOTAL* D.M. RELATED STATEMENT IS SPECIFIED.
* INITIALIZATION ALSO ABORTED IF *XXJ* FILE NOT FOUND.
*
* USES X - ALL.
* A - ALL.
* B - ALL.
*
* CALLS ACL, ARG, ATT, CRM, RMK, =TOTAL, UPC, UPK, VUN, ZFN.
*
* MACROS ABORT, GET, MESSAGE, READ, READC, REWIND,
* RECALL, SETUI, WRITER.
XXJ30 SA1 INTD
SA2 XXJE NUMBER OF JOURNAL FILES
SA3 X1+B1 SECOND WORD OF EDT HEADER
SB4 A0
LX2 54
SA5 X1 FIRST WORD OF EDT HEADER
SX7 B4
SA7 CCP UPDATE PLACE TO READ IN NEXT EDT
BX6 X3+X2
BX7 X7+X5
SA6 A3+
SA7 A5 UPDATE LINK WORD IN EDT HEADER
XXJ SUBR 0 ENTRY/EXIT
ZR X5,XXJ6 IF NOT FIRST CALL FOR THIS DATA BASE
SX1 1RJ
BX6 X5 DATA BASE NAME
LX1 -18
SA6 TTIP+TIDB
SX7 B4+ NEXT AVAILABLE MEMORY LOCATION
SA7 TTIP+TIAM
SX6 B1+
IX5 X5+X1 XXJ (WHERE XX=DATA BASE NAME)
BX7 X5+X6
SA7 TL XXJ NAME TO FET
LX6 44 ERROR PROCESSING BIT
SA1 A7+B1
BX6 X6+X1
SA6 A1
RJ STI SET TAF INDEX
RJ SFD SET FAMILY TO DEFAULT
GET TL GET XXJ FILE
SA5 TL
BX4 X5
MX2 8 CHECK FOR ATTACH ERROR
LX4 59-17
BX4 X2*X4
SA0 B4
SB5 B0
NZ X4,XXJ15 IF XXJ FILE NOT FOUND - ABORT
MX3 42
BX5 X3*X5
* PROCESS *XXJ* HEADER.
READ TL
READC TL,XXJA,8 READ FIRST STATEMENT ON XXJ FILE
SA1 XXJA
RJ ZFN ZERO FILL NAME
BX7 X1-X5
NZ X7,DIE9 IF HEADER WORD DOES NOT MATCH
* PROCESS THE *ACCOUNT* OR *USER* STATEMENT.
XXJ1 READC TL,XXJA,8
SB7 XXJP FWA TO UNPACK STATEMENT
SA5 XXJA FIRST WORD TO UNPACK
SA4 B4+ SAVE (B4)
RJ UPC
MX3 42
SB4 A4 RESTORE (B4) IN CASE OF AN ERROR
SA1 B7
BX1 X3*X1 CHECK FOR ACCOUNT NUMBER
SA2 XXJB
SA5 XXJO *USER* STATEMENT
BX2 X1-X2
BX5 X1-X5
SA3 B7+1 ACCOUNT NUMBER
ZR X2,XXJ2 IF *ACCOUNT* STATEMENT FOUND
NZ X5,DIE6 IF NO *USER* STATEMENT FOUND
XXJ2 BX6 X3
SA6 XXJD+2 USER NAME
SA3 A3+B1 PASSWORD
MX1 1 VALIDATE BATCH PASSWORD
LX1 2-59
BX7 X3+X1
SA3 A3+B1 POSSIBLE FAMILY
SA7 XXJD+1 PASSWORD
SA5 INITQ SET DEFAULT FAMILY
BX7 X3
NZ X3,XXJ3 IF NOT DEFAULT FAMILY
BX7 X5
XXJ3 SA7 XXJD FAMILY
SA7 XXJR SAVE USER FAMILY
SX7 B0+ CLEAR DEVICE TYPE
SA7 DTP
RJ VUN VALIDATE USER NAME
ZR X6,DIE27 IF INCORRECT USER
SA1 XXJD+2 USER NAME
MX0 42
BX6 X1+X6
SA6 STIA+2
SA1 XXJD FAMILY NAME
SX2 13B FLAG SETTING FOR *SETPFP*
BX6 X0*X1
BX6 X2+X6
SA6 STIA
SETPFP STIA SET PERMANENT FILE PARAMETERS
SA1 STIA
LX1 59-12
SX7 B0
NG X1,DIE27 IF ERROR
SA7 XXJA CLEAR INPUT FOR NEXT READ
READC TL,XXJA,8
SA5 XXJA
NZ X1,XXJX IF NO MORE ENTRIES
XXJ5 SX7 B0+
SA7 DEV CLEAR DEVICE TYPE FOR SUBSEQUENT USE
SA7 PAC
SA7 XXJQ NO *BRF PASSED* FLAG
* CHECK FOR *BRF* STATEMENT.
SB7 XXJP
RJ UPC UNPACK CONTROL STATEMENT
SX2 3RBRF
SA5 B7
LX2 -18
BX2 X5-X2
NZ X2,XXJX IF NO *BRF* STATEMENT - EXIT
* PROCESS *BRF* STATEMENT.
BX7 X7-X7
SA7 TTIP+TIQN
SA7 XXJA READ NEEDED FLAG
SA5 B7+B1 NO. OF *BRF-S* TO USE FOR THIS D.B.
SX7 B1
SA7 XXJQ *BRF PASSED* FLAG
RJ DXB
NZ X4,DIE51 IF NON-NUMERIC *BRF* PARAMETER
NZ X6,XXJ5.1 IF *BRF* SPECIFICATIONS NONTRIVIAL
SB6 B6-3
PL B6,DIE51 IF TOO MANY OR INCORRECT PARAMETER(S)
XXJ5.1 SX5 X6-BMAX-1
PL X5,DIE51 IF TOO MANY *BRF-S*
SA6 TTIP+TIQN
SB5 8
SB2 TTIP
SA1 CDBID
NG X1,DIE40 IF *CRM* IS NOT LOADED
RJ CRM
SA4 TTIP+TIAM
SB4 X4+ NEXT AVAILABLE MEMORY LOCATION
EQ XXJX RETURN
XXJ6 SA1 INTD
SA5 XXJD+2 USER NAME
SX4 B4 ADDRESS OF FIRST XXJORN FET
SA2 X1+B1 SECOND WORD OF EDT HEADER
LX4 18
BX6 X4+X2
BX7 X5
SA5 XXJD+1 PASSWORD
SA6 A2
BX6 X5 PASSWORD
SA7 A2+B1 EDT HEADER + 2
SA6 A7+B1 EDT HEADER + 3
SA2 XXJD FAMILY NAME
BX7 X2
SA7 A7+4 EDT HEADER+4
* INITIALIZE JOURNAL FILES.
BX7 X7-X7
SA0 B4
SX6 A6+1 ADDRESS OF *EDT* HEADER+4
SA7 XXJE INITIALIZE JOURNAL FILE COUNT
SA2 XXJA
BX1 X1-X1 FLAG FOR MORE PROCESSING
SA6 A5-B1 SAVE ADDRESS FOR PACK NAME PARAMETER
NZ X2,XXJ8 IF INFORMATION ALREADY PRESENT
XXJ7 READC TL,XXJA,8 READ STATEMENT IMAGE FROM *XXJ* FILE
NZ X1,XXJ30 IF NO MORE ENTRIES
XXJ8 SB7 XXJP
MX0 18
SA5 XXJA
BX6 X5
LX6 12
SX3 3RCRM
LX3 59-17
BX3 X3-X5
BX3 X0*X3
NZ X3,XXJ9 IF NOT *CRM* STATEMENT
SA1 XXJQ
ZR X1,DIE52 IF *CRM* STATEMENT WITHOUT PRECEDING *BRF*
SB5 B0
SA1 CDBID CHECK IF *CRM* DATA MANAGER IS LOADED
NG X1,DIE40 IF *CRM* IS NOT LOADED
RJ CRM PROCESS *CRM* STATEMENT
READC TL,XXJA,8 READ STATEMENT FROM *XXJ* FILE
SB7 XXJP FWA FOR UNPACK
ZR X1,XXJ8.1 IF MORE STATEMENTS
SX7 A0+ FWA OF AVAILABLE MEMORY
SB5 4
SA7 TTIP+TIAM
SB2 TTIP
RJ CRM ALLOCATE FILE CONTROL ENTRIES
EQ XXJ30 NO MORE ENTRIES
XXJ8.1 MX0 18
SA5 XXJA
SX3 3RIXN
LX3 59-17
BX3 X3-X5
BX3 X0*X3
ZR X3,XXJ8.2 IF *IXN* STATEMENT
SX7 A0 FWA OF AVAILABLE MEMORY
SB5 4
SA7 TTIP+TIAM
SB2 TTIP
RJ CRM ALLOCATE FILE CONTROL ENTRIES
EQ XXJ8 PROCESS STATEMENT
XXJ8.2 RJ IXN PROCESS *IXN* STATEMENT
XXJ8.3 READC TL,XXJA,8 READ STATEMENT FROM *XXJ* FILE
SB7 XXJP FWA FOR UNPACK
NZ X1,DIE46 IF NO *AKY* STATEMENT
SX3 3RAKY
SA5 XXJA
LX3 59-17
MX0 18
BX3 X3-X5
BX3 X0*X3
NZ X3,DIE46 IF NOT *AKY* STATEMENT
RJ AKY PROCESS *AKY* STATEMENT
SA5 TTIP+TINK
NZ X5,XXJ8.3 IF MORE *AKY* STATEMENTS EXPECTED
RJ RMK PROCESS *RMKDEF* STATEMENTS
NZ X1,XXJ30 IF NO MORE ENTRIES
EQ XXJ8 PROCESS NEXT STATEMENT
XXJ9 SA6 TLF SET *TOTAL* LOG FLAG
SX7 X6-2RLG
ZR X7,XXJ17 IF LOGGING REQUESTED FOR TOTAL
SX7 X6-2RBA
ZR X7,XXJ17 IF BEFORE AND AFTER IMAGE LOGGING
SX7 X6-2RAI
ZR X7,XXJ17 IF AFTER IMAGE LOGGING
SX7 X6-2RNL
ZR X7,XXJ19 IF NO LOGGING REQUESTED FOR TOTAL
BX6 X5
MX0 18
BX6 X0*X6
LX6 18
SX7 X6-3RLG,
ZR X7,XXJ18 IF LOGGING REQUESTED FOR TOTAL
SX7 X6-3RAI,
ZR X7,XXJ18 IF AFTER IMAGE LOGGING
SX7 X6-3RBA,
ZR X7,XXJ18 IF BEFORE AND AFTER IMAGE LOGGING
SX7 X6-3RNL.
ZR X7,XXJ19 IF NO LOGGING REQUESTED FOR TOTAL
* PROCESS *XXJOR* STATEMENT.
RJ UPC UNPACK PARAMETERS FROM STATEMENT
NZ X6,DIE11 IF ERROR IN ARGUMENTS
SA1 TL
SA2 B7 DATA BASE NAME
MX6 12
BX1 X6*X1
BX3 X6*X2
BX3 X3-X1
SA4 XXJH
BX2 -X6*X2
BX1 X4-X2
BX0 X1
AX0 30
NZ X0,XXJ16 IF NOT *XXJOR*
NZ X3,DIE10 IF INCORRECT DATA BASE NAME
SX3 1R0
LX1 -24
IX3 X1-X3
SB2 B7+ FWA OF ARGUMENTS
SA1 XXJE CHECK NUMERIC FIELD IN FILE NAME
SX7 B1
IX7 X7+X1 BUMP JOURNAL FILE COUNT
IX1 X3-X7
SB4 B6-B1 ARGUMENT COUNT
NZ X1,DIE11 IF ERROR IN JOURNAL FILE NAME
SA7 A1
SA4 B2+B1 FIRST ARGUMENT
SX7 X7-4
PL X7,DIE8 IF JOURNAL FILE LIMIT EXCEEDED
SB5 XXJF ARGUMENT TABLE
RJ ARG PROCESS ARGUMENTS
NZ X1,DIE11 IF ARGUMENT ERROR
SA1 TYP
SX5 0
ZR X1,XXJ10 IF MS
SX2 X1-1
ZR X2,XXJ10 IF MT
SX1 1
SX5 B1 SET NT FLAG
LX5 56
XXJ10 SA2 BNS
LX1 59
BX6 X2+X1 TAPE/DISK AND BUFFERED/NON BUFFERED STATUS
SA6 A0+7
SX4 B1+ ERROR PROCESSING
ZR X1,XXJ11 IF NOT A TAPE FILE
SX4 3 ERROR AND USER PROCESSING
XXJ11 SX6 DBBF
SX2 JFETL-5 FET LENGTH VALUE
LX4 44
LX2 18
BX2 X2+X4
BX7 X6+X2
SA7 A0+B1 FIRST
SA6 A7+B1 IN
SA6 A6+B1 OUT
SA1 B7 FILE NAME
SX7 DBBF+DBBFL
SA7 A6+B1 LIMIT
SX6 B1
BX6 X1+X6 FILE NAME
SA6 A0
BX6 X6-X6
SB4 A0 FET ADDRESS
SB5 A0+8
SB6 A0+13
+ SA6 B5 ZERO OUT FET AREA
SB5 B5+B1
NE B5,B6,* LOOP
SB5 B4-IFL=
PL B5,DIE26 IF OVERFLOW DURING INITIALIZATION
SA1 B4+7
PL X1,XXJ13 IF NOT A TAPE FILE
MX6 1 ATTACH MODE FLAG
RJ ATT ATTACH JOURNAL FILE
ZR X2,XXJ14 IF FILE NOT PREVIOUSLY ATTACHED
SA1 B4+B1
MX6 12
BX1 X6*X1
LX1 12
SX2 X1-2RMT-4000B DEVICE TYPE MT (UPPER BIT SET)
ZR X5,XXJ12 IF CHECK FOR 7 TRACK TAPE
SX2 X1-2RNT-4000B DEVICE TYPE NT (UPPER BIT SET)
XXJ12 NZ X2,DIE13 IF JOURNAL FILE TYPE DOES NOT MATCH
SA3 B4
MX6 36
SX2 100B+1RT
BX6 X6*X3
LX2 -6
LX6 -6
BX0 X3 SAVE NAME OF TAPE JOURNAL FILE
IX7 X2+X6
SA0 B4 SAVE (B4)
SA7 DISK RENAME TAPE JOURNAL FILE (TXXJORN)
SX6 B1+B1 FLAG FOR TAPE JOURNAL FILE PROCESSING
SB4 A7
RJ ATT ATTACH DISK JOURNAL ASSOCIATED WITH TAPE
SB4 A0+ RESTORE ORIGINAL TAPE JOURNAL POINTER
REWIND DISK
WRITER X2
EQ XXJ14 CONTINUE PROCESSING
XXJ13 BX6 X6-X6 ATTACH MODE FLAG
RJ ATT ATTACH FILE IN MODIFY MODE
SA1 B4+B1
NG X1,DIE13 IF JOURNAL FILE TYPE NOT DISK
XXJ14 BX6 X5
SA6 A0+8 MT/NT FLAG
SX7 B0
SA7 A6+B1
SB4 B4+JFETL
SA0 B4
EQ XXJ7 LOOP
XXJ15 SA1 MSGQ
MX2 18
BX6 X2*X5 XXJ FILE NAME
LX2 -6
LX6 -6
BX2 -X2*X1
BX6 X2+X6 MERGE FILE NAME INTO MESSAGE
SA6 A1
MESSAGE MSGQ,0,R * XXJ FILE NOT FOUND.*
ABORT ABORT
* PROCESS *XXTASKL* STATEMENT.
XXJ16 SA4 XXJI
IX6 X2-X4
LX6 -24
NZ X6,DIE11 IF INCORRECT ENTRY
NZ X3,DIE10 IF INCORRECT DATA BASE NAME
SB5 XXJJ LIST FOR ARG
RJ UPK UNPACK PARAMETERS
SA3 DEV DEVICE TYPE
SA5 INTD FWA OF EDT HEADER
BX7 X7-X7
BX6 X3
SA6 X5+5 UPDATE EDT HEADER + 5
SA7 A3 CLEAR DEVICE TYPE
SA7 PAC CLEAR PACK NAME
SA1 TFLAG XXJ FILE TYPE FLAG
SA7 XXJA
NZ X1,XXJ7 IF TOTAL XXJ FILE
EQ XXJ30 GO TO NEXT STEP
* ADD TERMINATOR TO *LG*, *AI*, OR *BA* STATEMENT.
XXJ17 SX0 1R.
LX0 47-5
BX6 X5+X0
SA6 A5
BX5 X6
* SETUP XXTLOG INFORMATION IN EDT AREA.
XXJ18 RJ UPC UNPACK STATEMENT
NZ X6,DIE11 IF ERROR IN ARGUMENTS
SB4 B6-1 NUMBER OF ARGUMENTS
SB5 XXJJ LIST FOR ARG
RJ UPK GET TLOG PARAMETERS
SX7 0
SA7 XXJA CLEAR FOR NEXT STATEMENT
SA7 DEV
SA7 DTP
SA7 PAC
SA2 XXJN GET DATA BASE ID AND BUILD XXTLOG IN EDT
SA3 IFARA
SA6 A0+B1 SAVE IN EDT
LX3 -12
BX7 X2+X3
SA7 A0
SA0 A0+TFEN
EQ XXJ20 CONTINUE PROCESSING
* SETUP START OF EDT AREA FOR NO LOGGING.
XXJ19 SA2 XXJM
BX7 X2
SA7 A0 FAKE FILE NAME WHEN NO LOGGING
SA0 A0+TFEN
* INITIALIZE A DATA BASE FOR TOTAL.
XXJ20 SA1 TDBID CHECK IF *TOTAL* DATA MANAGER IS LOADED
NG X1,DIE42 IF *TOTAL* DATA MANAGER IS NOT LOADED
SA1 XXJK DBMOD NAME
MX0 12
BX3 X0*X1 DATA BASE ID
SA2 TOTIN INITIAL CALL HEADER
LX3 12
MX0 48
BX2 X0*X2
BX6 X2+X3
SA6 A0+2*TMAXFIL FIRST WORD OF SCHEMA LIST FOR INITL CALL
SA2 A2+1
SX7 A6
MX0 24
SA7 SA0 SAVE SCHEMA ADDRESS
LX1 12
BX1 X0*X1
BX6 X1+X2
SA6 A6+1 SECOND WORD OF LIST
BX6 X6-X6
SB5 60 INITIAL SHIFT COUNT FOR ACL
SA6 A6+B1 CLEAR NEXT WORD
BX7 X7-X7
SX6 B5 SAVE B REG 5, 6
SA7 XXJL CLEAR FILE COUNT
LX6 18
SX7 A6 (B6) FOR ACL
BX7 X6+X7
SA7 SBS
SA2 TLF READ TOTAL LOG FLAG
LX2 60-12
MX0 12
BX2 X0*X2
SB7 B1+B1 NUMBER OF CHARACTERS
RJ ACL PLACE CHARACTERS IN SCHEMA LIST
* READ TOTAL DATA BASE FILE NAMES.
XXJ21 READC TL,XXJA,8 GET NEXT FILE NAME
NZ X1,XXJ23 IF NO MORE FILES
SB7 XXJP FWA FOR UNPACK
SA5 XXJA
* TEST FOR ONLY FILE NAME.
MX0 24
BX0 -X0*X5
NZ X0,XXJ22 IF MORE THAN FILE NAME
SX0 1R. ADD TERMINATOR
LX0 35-5
BX6 X0+X5
SA6 A5
BX5 X6
XXJ22 RJ UPC UNPACK STATEMENT
NZ X6,DIE11 IF ERROR IN ARGUMENTS
SB4 B6-1 AGRUMENT COUNT
SB5 XXJJ LIST FOR ARG
RJ UPK UNPACK PARAMETERS
SX7 0
SA7 XXJA CLEAR FOR NEXT STATEMENT
SA7 DEV
SA7 DTP
SA7 PAC
SA1 XXJL CHECK IF TOO MANY FILES IN DATA BASE
SA6 A0+1 PUT IN EDT
SX0 X1-TMAXFIL-1
SA2 XXJP FILE NAME
SA3 XXJN DATA BASE ID
LX2 -12
SX7 X1+B1 ADVANCE FILE COUNT
BX6 X2+X3
LX2 12
PL X0,DIE21 IF TOO MANY FILES
SA6 A0 SAVE NAME IN EDT
SA7 A1 RESTORE FILE COUNT
SA0 A0+TFEN
SB7 4
RJ ACL PLACE IN LIST
SA2 PRIV
SB7 4
RJ ACL PLACE IN LIST
SA2 STAT
SB7 4
RJ ACL PLACE IN LIST
EQ XXJ21 CONTINUE PROCESSING
XXJ23 SA2 EOL END.
SB7 4
RJ ACL PLACE IN LIST
BX7 X7-X7
SA7 B6+B1 MAKE SURE OF ZERO WORD
SA2 SA0 SCHEMA ADDRESS
SA1 SCHEMA POINT TO SCHEMA LIST
MX0 42
BX1 X0*X1
BX7 X1+X2 ADD LIST ADDRESS
SA7 A1
SA1 STAT
BX6 X1
SX7 A0
SA6 STATUS
SA1 TQUE TOTAL INITIALIZATION QUEUE ENTRY
SA7 SA0 SAVE A0
BX6 X1
SA6 IRIQA QUEUE ENTRY
XXJ24 RJ XXJ24 INITIALIZE THE DATA BASE
* RJ =XTOTAL (CALL TOTAL)
SB1 1
* WAIT FOR TOTAL TO COMPLETE THE INITL CALL.
SA1 STATUS STATUS WORD
SA2 STAT PRESET STATUS
BX3 X1-X2
NZ X3,XXJ25 IF STATUS HAS CHANGED
RECALL
EQ XXJ24 CONTINUE PROCESSING
* CHECK IF TOTAL INITIALIZED CORRECTLY.
XXJ25 SA3 SA0
SA2 STATOK
SA0 X3
BX3 X1-X2
BX6 X1
ZR X3,XXJ28 IF INITIALIZED OKAY
* ISSUE MESSAGE AND ABORT TAF.
SA1 SCHEMA GET LIST ADDRESS
SA6 TMES2+1 STATUS TO MESSAGE
MX0 12
SA2 X1
SA4 A2+B1
LX2 -12
MX3 24
BX2 X0*X2 DATA BASE NAME - UPPER TWO
BX4 X3*X4
SA3 TMES1
MX0 36
LX4 -12
BX2 X2+X4 DATA BASE NAME
BX3 -X0*X3
BX6 X2+X3
SA6 A3 SET IN MESSAGE
MESSAGE TMES1,,R DBMOD NOT INITIALIZED
MESSAGE TMES2,,R TOTAL STATUS
SB7 A2-B1
XXJ26 SA2 B7+B1 READ PARAMETER LIST AND DISPLAY
ZR X2,XXJ27 IF END OF PARAMETER LIST
SB7 B7+B1
BX6 X2
SA6 TMES3
MESSAGE TMES3,,R TOTAL PARAMETER LIST WORD
EQ XXJ26 CONTINUE PROCESSING
XXJ27 ABORT
* CLEAR TOTAL PARAMETER LIST.
XXJ28 SA1 SCHEMA
MX7 0
SB7 X1 ADDRESS OF LIST
XXJ29 SA1 B7
ZR X1,XXJ30 IF END OF LIST
SB7 B7+B1
SA7 A1
EQ XXJ29 CONTINUE PROCESSING
XXJA BSS 8 WORKING BUFFER
XXJB VFD 42/7LACCOUNT,18/0
* *CPM* PARAMETER BLOCK.
XXJD CON 0 FAMILY NAME
CON 0 PASSWORD
CON 0 USER NAME
BSSZ 10 PARAMETERS
XXJE BSS 1 JOURNAL FILE COUNT
XXJF BSS 0
MS ARG -XXJG,TYP
NT ARG -XXJG-2,TYP
MT ARG -XXJG-1,TYP
B ARG -XXJG,BNS
R ARG -XXJG-1,BNS
ARG
XXJG CON 0
CON 1
CON 2
XXJH VFD 12/0,18/0LJOR,30/0
XXJI VFD 12/0,30/0LTASKL,18/0
XXJJ BSS 0
PN ARG XXJG,PAC
R ARG XXJG,DEV
ARG
XXJK CON 0 CURRENT DBMOD NAME
XXJL BSSZ 1 FILES IN DATA BASE
XXJM VFD 60/0LFILENAMES
XXJN BSSZ 1 CURRENT DATA BASE ID
XXJO DATA 0LUSER CHECK FOR *USER* STATEMENT
XXJP BSS 14
XXJQ BSS 1 *BRF PASSED* FLAG
XXJR BSS 1 SAVE USER FAMILY NAME HERE
XXJS BSSZ 1 NUMBER OF ALTERNATE KEYS
TYP BSS 1 TAPE/DISK STATUS
BNS BSS 1 BUFFERED/NON BUFFERED STATUS
PAC BSSZ 1 PACK NAME
DEV BSSZ 1 DEVICE TYPE
DTP BSSZ 1 DEVICE TYPE AND UNIT FOR EDT
SA0 BSSZ 1 SAVE A0
SBS BSSZ 1 SAVE B5 ABD B6
TFLAG BSSZ 1 TOTAL XXJ FLAG
TLF BSSZ 1 TOTAL LOG FLAG
TOTIN VFD 60/6L**TAF
VFD 24/0,36/6LUPDATE
STAT VFD 60/4L++++
STATOK VFD 60/4L****
TMES1 DATA C*XXXXXX NOT INITIALIZED BY TOTAL.*
TMES2 DATA C*STATUS IS *
TMES3 DATA C* *
TQUE VFD 24/0,6/77B,6/0,1/1,5/0,18/ILIST
ILIST VFD 6/4,18/4,12/50B,6/33B,18/TYPE
VFD 6/4,18/4,12/50B,6/33B,18/STATUS
SCHEMA VFD 6/4,18/4,12/50B,6/33B,18/-0
VFD 6/4,18/4,12/50B,6/33B,18/EOL
BSSZ 1
TYPE VFD 60/5LINITL
STATUS VFD 60/4L++++
PRIV VFD 60/4LPRIV
EOL VFD 60/4LEND.
ACL SPACE 4,10
** ACL - ADD CHARACTERS TO A LIST.
*
* ENTRY (X2) = CHARACTER STRING LEFT JUSTIFIED.
* (B7) = NUMBER OF CHARACTERS IN STRING.
* (SB5) = B REGISTERS 5, 6.
*
* USES X - ALL.
* A - 4, 6, 7.
* B - 4, 5, 6, 7.
ACL2 SX6 B5 SAVE B5 AND B6
SX7 B6
LX6 18
BX7 X6+X7
SA7 SBS
ACL SUBR ENTRY/EXIT
SA1 SBS SETUP B5 AND B6
MX0 6
SB6 X1
LX1 -18
SB5 X1
ACL1 ZR B7,ACL2 IF NO MORE CHARACTERS
LX1 X0,B5
LX3 X2,B5
LX2 6
SB5 B5-6
SB7 B7-B1
SA4 B6 READ CURRENT WORD OF LIST
BX3 X1*X3
BX6 X3+X4
SA6 A4 CHARACTER MERGED
NZ B5,ACL1 IF SAME WORD
SB6 B6+1
MX7 0
SB5 60
SA7 B6 CLEAR NEXT WORD
EQ ACL1 CONTINUE PROCESSING
ERR EJECT
* ERROR EXITS FOR DATA MANAGER INITIALIZATION.
*
* ENTRY (B5) - ERROR CODE NUMBER.
* (B4) - FWA OF FET.
* DATA MANAGER INITIALIZATION ERROR PROCESSOR.
DIE MX2 42
SA5 B4 FIRST WORD OF FET
BX5 X2*X5
SX2 B4 FET FWA
SB2 ERRTBLL
GT B5,B2,ERRA2 IF INCORRECT ERROR MESSAGE
SA1 ERRTBL+B5-1 PICK UP ADDRESS OF ERROR MESSAGE
SA4 X1
SB2 6
EQ B2,B5,DIE12 IF ATTACH ERROR
SB2 4
NE B2,B5,DIE1 IF NOT ERROR TYPE 4
SA6 A4+2 D.B. TO ERROR MESSAGE
EQ ERRA1 PROCESS ERROR
DIE1 SB2 5
NE B2,B5,ERRA1 NOT SPECIAL CASE ERROR
SA6 A4+3 D.B. TO ERROR MESSAGE
EQ ERRA1
DIE4 SX1 MSGD * NO DATA BASE ID FOR DATA MANAGER.*
EQ ERRA1
DIE5 SX1 MSGE * TOO MANY DATA BASE NAMES.*
EQ ERRA1
DIE6 SB5 MSGF * NO USER STATEMENT IN XXJ FILE.*
EQ DIE7 PUT FILE NAME IN MESSAGE
DIE7 SB2 1RX REPLACEMENT CHARACTER IN MESSAGE
SA1 TL DATA BASE NAME
MX0 42
BX1 X0*X1
RJ SNM SET NAME IN MESSAGE
SX2 B5 ERROR MESSAGE
EQ ERRA3 WRITE ERROR MESSAGE
DIE8 SB5 MSGG * TOO MANY TAF JOURNAL FILES IN XXJ FILE.*
EQ DIE7 PUT FILE NAME IN MESSAGE
DIE9 SB5 MSGH * MISSING HEADER WORD ON XXJ FILE.*
EQ DIE7 PUT FILE NAME IN MESSAGE
DIE10 SB5 MSGI * INCORRECT DATA BASE IN XXJ FILE.*
EQ DIE7 PUT FILE NAME IN MESSAGE
DIE11 SB5 MSGJ * ERROR IN XXJ FILE ARGUMENTS.*
EQ DIE7 PUT FILE NAME IN MESSAGE
DIE12 SB2 1RX
SA1 X2+ READ DATA BASE FILE NAME
MX0 42
BX1 X0*X1
SB5 MSGK * ATTACH ERROR ON - XXXXXXX.*
RJ SNM SET NAME IN MESSAGE
SX1 B5
EQ ERRA1
DIE13 SB5 MSGR * JOURNAL TYPE DOES NOT MATCH XXJ FILE.*
EQ DIE7 PUT FILE NAME IN MESSAGE
DIE14 SX1 MSGT * NO DATA BASE NAME IN XXJ FOR TOTAL.*
EQ ERRA1
DIE15 SX1 MSGU * INCORRECT TCF ENTRY.*
EQ ERRA1
DIE18 SX1 MSGX * UNABLE TO ATTACH TOTAL BINARIES.*
EQ ERRA1
DIE19 SX1 MSGY * UNABLE TO ATTACH TOTAL DBMOD BINARIES.*
EQ ERRA1
DIE20 SX1 MSGZ * ERROR IN LOADING TOTAL.*
EQ ERRA1
DIE21 SX1 MSGAA * TOO MANY FILES IN TOTAL DATA BASE.*
EQ ERRA1
DIE23 SX1 MSGAB * ERROR IN LOADING AIP.*
EQ ERRA1 PROCESS ERROR
DIE24 SX1 MSGAD * INCORRECT DATA BASE NAME ON DMS.*
EQ ERRA1 PROCESS ERROR
DIE25 SX1 MSGAE * AIP TOO LARGE FOR LOADING.*
EQ ERRA1 PROCESS ERROR
DIE26 SX1 MSGAF * MEMORY OVERFLOW DURING INITIALIZATION.*
EQ ERRA1 PROCESS ERROR
DIE27 MX0 42
SA1 XXJD+2 READ INCORRECT USER NAME
BX1 X0*X1
SB2 1RX REPLACEMENT CHARACTER
SB5 MSGAI FWA OF MESSAGE
RJ SNM SET NAME IN MESSAGE
SA1 XXJD READ FAMILY NAME
SB2 1RY REPLACEMENT CHARACTER
SB5 MSGAI+2 FWA OF MESSAGE
RJ SNM SET NAME IN MESSAGE
SX1 MSGAI
EQ ERRA1 WRITE ERROR MESSAGE
DIE28 SX1 MSGAX * ERROR IN LOADING AAMI.*
EQ ERRA1 WRITE ERROR MESSAGE
DIE29 SX2 MSGAL * FILE NAME MUST BE 2-7 CHARACTERS.*
EQ ERRA3 WRITE COMMAND
DIE30 SX2 MSGAM * FILE TYPE MUST BE AK, DA, OR IS.*
EQ ERRA3 WRITE COMMAND
DIE31 SX2 MSGAN * ATTACH MODE MUST BE W, M, R, OR RM.*
EQ ERRA3 WRITE COMMAND
DIE32 SX2 MSGAO * INCORRECT NUMBER FOR USERS.*
EQ ERRA3 WRITE COMMAND
DIE33 SX2 MSGAP * INCORRECT NUMBER FOR LOCKS.*
EQ ERRA3 WRITE COMMAND
DIE34 SX2 MSGAQ * INCORRECT NUMBER FOR KEY LENGTH.*
EQ ERRA3 WRITE COMMAND
DIE35 SX2 MSGAR * INCORRECT NUMBER FOR RECORD LENGTH.*
EQ ERRA3 WRITE COMMAND
DIE36 SX2 MSGAS * FIELD LENGTH EXCEEDED FOR LOCKS.*
EQ ERRA3 WRITE COMMAND
DIE37 SX2 MSGAT * FIELD LENGTH EXCEEDED FOR USERS.*
EQ ERRA3 WRITE COMMAND
DIE38 SX1 MSGAU * FIELD LENGTH EXCEEDED FOR RECORD.*
EQ ERRA1 WRITE ERROR MESSAGE
DIE40 SX2 MSGV * XXJ FILE ERROR - CRM DM NOT LOADED.*
EQ DIE7 PUT FILE NAME IN MESSAGE
DIE41 SX2 MSGAW * FIELD LENGTH EXCEEDED FOR CMM.*
EQ ERRA3 WRITE ERROR MESSAGE
DIE42 SX2 MSGW * XXJ FILE ERROR - TOTAL DM NOT LOADED.*
EQ DIE7 PUT FILE NAME IN MESSAGE
DIE43 SB5 MSGAZ * FILE XXXXXXX NOT FOUND.*
DIE44 SA1 TTIP+TIHR HASHING ROUTINE
SB2 1RX REPLACEMENT CHARACTER IN MESSAGE
RJ SNM SET NAME IN MESSAGE
SX1 B5
EQ ERRA1 WRITE ERROR MESSAGE
DIE45 SB5 MSGBA * ERROR IN LOADING HASH CODE XXXXXXX.*
EQ DIE44 PUT FILE NAME IN MESSAGE
DIE46 SX1 MSGBF * MISSING AKY STATEMENT.*
EQ ERRA1 WRITE ERROR MESSAGE
DIE47 SX2 MSGBG * INCORRECT NUMBER OF ALTERNATE KEYS.*
EQ ERRA3 WRITE COMMAND
DIE48 SX2 MSGBH * INCORRECT KEY ORDINAL.*
EQ ERRA3 WRITE COMMAND
DIE49 SX2 MSGBI * INCORRECT KEY RELATIVE POSITION.*
EQ ERRA3 WRITE COMMAND
DIE50 SX2 MSGBJ * INCORRECT KEY BEGINNING CHARACTER.*
EQ ERRA3 WRITE COMMAND
DIE51 SX2 MSGBK * BRF PARAMETER TOO LARGE OR INCORRECT.*
EQ ERRA3 WRITE COMMAND
DIE52 SX2 MSGBL * NO BRF STATEMENT FOR CRM DATA BASE.*
EQ ERRA3 WRITE COMMAND
DIE53 SX1 MSGBM * RECOVERY FILE INCONSISTENT.*
EQ ERRA1 WRITE ERROR MESSAGE
DIE54 SX2 MSGBN * FILE ATTACH ERROR.*
EQ ERRA1 WRITE ERROR MESSAGE
DIE55 SX1 MSGBO * RECOVERY OF CRM DATA BASE IMPOSSIBLE.*
EQ ERRA1 WRITE ERROR MESSAGE
DIE56 SX1 MSGBP * BOTH AFTER IMAGE FILES ACTIVE.*
EQ ERRA1 WRITE ERROR MESSAGE
DIE57 SX1 MSGBQ * ACTIVE ARF IS FULL.*
EQ ERRA1 WRITE ERROR MESSAGE
DIE58 SX2 MSGBR * INCORRECT FWI IN CRM STATEMENT.*
EQ ERRA3 WRITE COMMAND
DIE59 SX2 MSGBS * INCORRECT RECOVER OPTION IN CRM.*
EQ ERRA3 WRITE COMMAND
DIE60 SX2 MSGBT * INCORRECT DEVICE TYPE IN CRM STATEMENT.*
EQ ERRA3 WRITE COMMAND
DIE61 SX1 MSGBU * CIO ERROR ON RECOVERY FILE.*
EQ ERRA1 WRITE ERROR MESSAGE
DIE62 SX1 MSGBV * NOT ENOUGH FL FOR RECOVERY BUFFERS.*
EQ ERRA1 WRITE ERROR MESSAGE.
DIE63 SX1 MSGBW * DATA BASE NOT IN EDT.*
EQ ERRA1 WRITE ERROR MESSAGE
DIE64 SX1 MSGBX * INCORRECT FAMILY IN EDT.*
EQ ERRA1 WRITE ERROR MESSAGE.
DIE65 SX1 MSGBY * RECOVERY ACTIVE ON DATA BASE.*
EQ ERRA1 WRITE ERROR MESSAGE
DIE66 SX1 MSGBZ *ARF BLOCK SIZE IS LARGER THAN THE BUFFER*
EQ ERRA1 WRITE ERROR MESSAGE.
DIE67 SX1 MSGCA * NOT ENOUGH FL FOR RECOVERY TABLES.*
EQ ERRA1 WRITE ERROR MESAGE
DIE68 SX1 MSGCB * XXJ FILE MUST HAVE RMKDEFS.*
EQ ERRA1 WRITE ERROR MESSAGE
DIE69 SX1 MSGCC *CMM BFL IS NOT LARGE ENOUGH.*
EQ ERRA1 WRITE ERROR MESSAGE
ERRA1 MESSAGE X1,0,R ISSUE APPROPRIATE MESSAGE FROM TABLE
ERRA2 ABORT
ERRA3 MESSAGE XXJA WRITE COMMAND IN ERROR
BX1 X2
EQ ERRA1 WRITE ERROR MESSAGE
* INITIALIZATION ERROR AND INFORMATIONAL MESSAGES.
MSGD DATA C* NO DATA BASE ID FOR DATA MANAGER.*
MSGE DATA C* TOO MANY DATA BASE NAMES.*
MSGF DATA C* NO USER STATEMENT IN XXJ FILE.*
MSGG DATA C* TOO MANY TAF JOURNAL FILES IN XXJ FILE.*
MSGH DATA C* MISSING HEADER WORD ON XXJ FILE.*
MSGI DATA C* INCORRECT DATA BASE IN XXJ FILE.*
MSGJ DATA C* ERROR ON XXJ FILE ARGUMENTS.*
MSGK DATA C* ATTACH ERROR ON - XXXXXXX.*
MSGKL EQU *-MSGK LENGTH OF MESSAGE
MSGL DATA C* EDT TOO LARGE.*
MSGM DATA C* EDT FILE EMPTY.*
MSGN DATA C* FILE SPECIFIED AS EDT FILE IS NOT EDT FILE TYPE.*
MSGO DATA C* DUAL RECORDED FILE NNNNNNN NOT ATTACHED.*
MSGP DATA C* DUAL AND TRACE FLAGS FOR FILE NNNNNNN .*
MSGQ DATA C* XXJ FILE NOT FOUND.*
MSGR DATA C* JOURNAL TYPE DOES NOT MATCH XXJ FILE.*
MSGS DATA C* FATAL CIO ERROR STATUS.*
MSGT DATA C* NO DATA BASE NAME IN XXJ FOR TOTAL.*
MSGU DATA C* INCORRECT TCF ENTRY.*
MSGV DATA C* XXJ FILE ERROR - CRM DM NOT LOADED.*
MSGW DATA C* XXJ FILE ERROR - TOTAL DM NOT LOADED.*
MSGX DATA C* UNABLE TO ATTACH TOTAL BINARIES.*
MSGY DATA C* UNABLE TO ATTACH TOTAL DBMOD BINARIES.*
MSGZ DATA C* ERROR IN LOADING TOTAL.*
MSGAA DATA C* TOO MANY FILES IN TOTAL DATA BASE.*
MSGAB DATA C* ERROR IN LOADING AIP.*
MSGAD DATA C* INCORRECT DATA BASE NAME ON DMS STATEMENT.*
MSGAE DATA C* AIP TOO LARGE FOR LOADING.*
MSGAF DATA C* MEMORY OVERFLOW DURING INITIALIZATION.*
MSGAG DATA C* XXXXXX WORDS REQUIRED FOR AIP LOADING.*
MSGAH DATA C* AIP SUCCESSFULLY LOADED.*
MSGAI DATA C* UN=XXXXXXX NOT VALID ON FM=YYYYYYY.*
MSGAL DATA C* FILE NAME MUST BE 2-7 CHARACTERS.*
MSGAM DATA C* FILE TYPE MUST BE AK, DA, OR IS.*
MSGAN DATA C* ATTACH MODE MUST BE W, M, R, OR RM.*
MSGAO DATA C* INCORRECT NUMBER FOR USERS.*
MSGAP DATA C* INCORRECT NUMBER FOR LOCKS.*
MSGAQ DATA C* INCORRECT NUMBER FOR KEY LENGTH.*
MSGAR DATA C* INCORRECT NUMBER FOR RECORD LENGTH.*
MSGAS DATA C* FIELD LENGTH EXCEEDED FOR LOCKS.*
MSGAT DATA C* FIELD LENGTH EXCEEDED FOR USERS.*
MSGAU DATA C* FIELD LENGTH EXCEEDED FOR RECORD.*
MSGAW DATA C* FIELD LENGTH EXCEEDED FOR CMM.*
MSGAX DATA C* ERROR IN LOADING AAMI.*
MSGAY BSS MSGKL ASSEMBLY AREA FOR MESSAGE *MSGK*
MSGAZ DATA C* FILE XXXXXXX NOT FOUND.*
MSGBA DATA C* ERROR IN LOADING HASH CODE XXXXXXX.*
MSGBB DATA C* TAF DATA MANAGER SUCCESSFULLY LOADED.*
MSGBC DATA C* TOTAL DATA MANAGER SUCCESSFULLY LOADED.*
MSGBD DATA C* CRM DATA MANAGER SUCCESSFULLY LOADED.*
MSGBE DATA C* DUPLICATE DATA BASE IN TCF - XX.*
MSGBF DATA C* NUMBER OF AKY STATEMENTS MUST EQUAL NUMBER OF ALTERN
,ATE KEYS.*
MSGBG DATA C* INCORRECT NUMBER OF ALTERNATE KEYS.*
MSGBH DATA C* INCORRECT KEY ORDINAL.*
MSGBI DATA C* INCORRECT KEY RELATIVE POSITION.*
MSGBJ DATA C* INCORRECT KEY BEGINNING CHARACTER.*
MSGBK DATA C* BRF PARAMETER TOO LARGE OR INCORRECT.*
MSGBL DATA C* NO BRF STATEMENT FOR CRM DATA BASE.*
MSGBM DATA C* TAF/CRM RECOVERY FILE INCONSISTENT.*
MSGBN DATA C* FILE ATTACH/DEFINE ERROR.*
MSGBO DATA C* RECOVERY OF CRM DATA BASE IMPOSSIBLE.*
MSGBP DATA C* BOTH AFTER IMAGE FILES ACTIVE.*
MSGBQ DATA C* AFTER IMAGE RECOVERY FILE IS FULL.*
MSGBR DATA C* INCORRECT FWI IN THE CRM STATEMENT.*
MSGBS DATA C* INCORRECT RECOVER OPTION IN THE CRM STATEMENT.*
MSGBT DATA C* INCORRECT DEVICE TYPE IN CRM STATEMENT.*
MSGBU DATA C* CIO ERROR ON RECOVERY FILE.*
MSGBV DATA C* NOT ENOUGH FL FOR RECOVERY BUFFERS.*
MSGBW DATA C* DATA BASE NOT IN EDT.*
MSGBX DATA C* INCORRECT FAMILY NAME IN EDT.*
MSGBY DATA C* BATCH RECOVERY ACTIVE ON DATA BASE.*
MSGBZ DATA C* ARF BLOCK SIZE IS LARGER THAN THE BUFFER.*
MSGCA DATA C* NOT ENOUGH FL FOR RECOVERY TABLES.*
MSGCB DATA C* MISSING RMKDEF STATEMENT IN XXJ FILE.*
MSGCC DATA C* CMM BFL IS NOT LARGE ENOUGH.*
ERRTBL BSS 0
VFD 60/MSGL ERROR 1 FROM COMBINT
VFD 60/MSGM ERROR 2 FROM COMBINT
VFD 60/MSGN ERROR 3 FROM COMBINT
VFD 60/MSGO ERROR 4 FROM COMBINT
VFD 60/MSGP ERROR 5 FROM COMBINT
VFD 60/MSGK ERROR 6 FROM COMBINT
ERRTBLL EQU *-ERRTBL
ERP$ SX5 X2
SX1 MSGS
EQ ERRA1 ISSUE FATAL ERROR MESSAGE AND ABORT
SPACE 4
* INITIALIZATION PARAMETERS
RCRL EQU 101B BUFFER SIZE FOR UNIT RECORD
DSKL EQU 401B BUFFER SIZE FOR DISK
TAPL EQU 2001B BUFFER SIZE FOR TAPE
MAXDB EQU 25 MAXIMUM NUMBER OF DATA BASES
CCP BSS 1 CURRENT CORE POSITION
PDATE BSS 1 PACKED TIME AND DATE
DBID BSS 0
DBID FILEC HBUF,HBUFL,FET=13,EPR
TL BSS 0 TASK LIBRARY FET
"TLFM" RFILEB IBUF,IBUFL,FET=13,EPR
TIF BSS 0 TAF INITIALIZATION FILE
"TIF" FILEB RBUF,RBUFL
TCF BSS 0 TAF CONFIGURATION FILE
TCF FILEC TCBUF,TCBUFL,FET=13,EPR
DISK BSS 0
DISK RFILEB LBUF,LBUFL,FET=13,EPR
TDBID BSS 0
TDBID FILEC THBUF,THBUFL,FET=12,EPR
TOTALF BSS 0
TOTALE FILEC IBUF,IBUFL,FET=12,EPR
TOTFILE BSS 0
DBMOD FILEC IBUF,IBUFL,FET=13,EPR
CDBID BSS 0 FET FOR *CRM* DATA MANAGER
CDBID FILEC CBUF,CBUFL,FET=12,EPR
OTHER BSS 0 OTHER DATA BASES
OTHER FILEC OTBUF,OTBUFL,FET=13,EPR
ZZZZZDG BSS 0
ZZZZZDG FILEB IBUF,IBUFL,FET=2,EPR
SETLA DATA C* LIBRARY DIRECTORY EMPTY - ZZZZZZZ.*
SETLB DATA C* LIBRARY DIRECTORY TOO LONG - ZZZZZZZ.*
SETLC VFD 60/3LTLD DIRECTORY HEADER WORD
SETLD DATA C* LIBRARY DIRECTORY ERROR - ZZZZZZZ.*
SETLE VFD 60/0LZZCRF
SETLG BSS 0 OVERLAY ENTRY POINT LIST
DISPLAY HERE
CON 0 TERINATOR
SETLGL EQU *-SETLG LENGTH OF LIST
SETLH BSS 0 OVERLAY RELOCATABLE INSTRUCTION CONTROL
OREL HERE
SETLHL EQU *-SETLH LENGTH OF LIST
SETLI DATA C* LIBRARY DIRECTORY SPACE TOO LARGE. *
TITLE *CRM* INTERFACE ROUTINES.
AKY SPACE 4,20
** AKY - PROCESS ACTUAL KEY.
*
* ENTRY (B7) = FWA FOR UNPACKING PARAMETERS.
* (A0) = CURRENT MEMORY LOCATION.
* (A5) = ADDRESS OF FIRST WORD.
* (X5) = FIRST WORD OF COMMAND.
*
* EXIT TO *DIE11*, IF ERROR IN ARGUMENTS.
* TO *DIE34*, IF INCORRECT KEY LENGTH PARAMETER.
* TO *DIE48*, IF INCORRECT KEY ORDINAL PARAMETER.
* TO *DIE49*, IF INCORRECT KEY POSITION PARAMETER.
* TO *DIE50*, IF INCORRECT KEY BEGINNING CHARACTER.
* (A0) = CURRENT MEMORY LOCATION.
*
* USES X - 0, 2, 5, 6, 7.
* A - 2, 5, 6, 7.
* B - 2, 5, 6.
*
* CALLS CRM, CTW, DXB, UPC.
AKY SUBR
MX0 -1
SA2 CRMI BIT MAP OF FILE ORGANIZATIONS
BX7 -X0+X2
SA7 A2
RJ UPC UNPACK COMMAND
NZ X6,DIE11 IF ERROR IN ARGUMENTS
* PROCESS KEY ORDINAL.
LT B6,B1,DIE48 IF NO KEY ORDINAL
SA5 B7+1 KEY ORDINAL
RJ DXB CONVERT KEY ORDINAL TO BINARY
SA2 TTIP+TIKO LAST KEY ORDINAL
NZ X4,DIE48 IF INCORRECT KEY ORDINAL NUMBER
SX2 X2+B1
BX2 X6-X2
NZ X2,DIE48 IF WRONG ORDER
SA6 A2 SAVE CURRENT KEY ORDINAL
* PROCESS RELATIVE KEY POSITION.
SB6 B6-2
SA5 A5+B1 GET KEY OFFSET
LT B6,AKY2 IF NO KEY OFFSET
RJ DXB CONVERT KEY POSITION TO BINARY
NZ X4,DIE49 IF INCORRECT KEY POSITION NUMBER
ZR X6,DIE50 IF KEY OFFSET .EQ. 0
SX7 X6-1
SA2 TTIP+TIRL GET MAXIMUM RECORD LENGTH
IX5 X2-X6
NG X5,DIE50 IF KEY OFFSET TOO LARGE
RJ CTW CONVERT TO WORDS
BX7 X1 WORDS
SA6 TTIP+TIKP STARTING CHARACTER POSITION
SB6 B6-B1
SA7 TTIP+TIKW WORD POSITION
* PROCESS KEY LENGTH.
LT B6,B1,DIE34 IF NO KEY LENGTH
SA5 A5+1
RJ DXB CONVERT KEY LENGTH TO BINARY
NZ X4,DIE34 IF INCORRECT KEY LENGTH NUMBER
ZR X6,DIE34 IF ZERO LENGTH
SA6 TTIP+TIAL
SA5 TTIP+TIMK GET MAXIMUM KEY THIS FAR
IX5 X5-X6
SX7 A0
PL X5,AKY1 IF THIS KEY NOT GREATER
SA6 TTIP+TIMK SET NEW MAXIMUM KEY
* PROCESS ALTERNATE KEY.
AKY1 SA7 TTIP+TIAM
SB2 TTIP FWA OF TABLE OF PARAMETERS
SB5 3 PROCESS *AKY* STATEMENT
RJ CRM SAVE ALTERNATE KEY DESCRIPTION
EQ AKYX NORMAL RETURN
* PROCESS DELETED KEY.
AKY2 SX6 -B1 SET DELETED KEY FLAG
SX7 A0
SA6 TTIP+TIKW
EQ AKY1 PROCESS ALTERNATE KEY
CRM SPACE 4,35
** CRM - *CRM* INTERFACE ROUTINE.
*
* ENTRY (B5) = 0, IF PROCESSING *CRM* STATEMENT.
* 2, IF PROCESSING *IXN* STATEMENT.
* 3, IF PROCESSING *AKY* STATEMENT.
* 4, IF ALLOCATING FILE CONTROL ENTRIES.
* 5, IF ALLOCATING RECORD BUFFER.
* 6, IF RECONSTRUCTING *AAMI* TABLES.
* 7, IF ROLLING BACK *CRM* UPDATES.
* 8, IF ALLOCATING *BRF* BUFFERS.
* (B2) = *TTIP*, IF ALLOCATING RECORD BUFFER.
* TL = FWA OF FET FOR *XXJ* FILE.
* (B7) = FWA FOR UNPACKING PARAMETERS.
*
* EXIT TO *DIE11*, IF ERROR ON *CRM* STATEMENT ARGUMENTS.
* TO *DIE30*, IF INCORRECT FILE TYPE PARAMETER.
* TO *DIE31*, IF INCORRECT MODE PARAMETER.
* TO *DIE32*, IF INCORRECT USER PARAMETER.
* TO *DIE33*, IF INCORRECT LOCK PARAMETER.
* TO *DIE34*, IF INCORRECT KEY PARAMETER.
* TO *DIE35*, IF INCORRECT RECORD PARAMETER.
* TO *DIE36*, IF NOT ENOUGH FL FOR *CMM*.
* TO *DIE37*, IF NOT ENOUGH FL FOR USERS.
* TO *DIE38*, IF NOT ENOUGH FL FOR RECORD.
* TO *DIE43*, IF HASHING ROUTINE NOT FOUND.
* TO *DIE45*, IF ERROR ON LOADING HASHING ROUTINE.
* TO *DIE53*, IF RECOVERY FILE INCONSISTENT(EC=5).
* TO *DIE54*, IF FILE ATTACH/DEFINE ERROR(EC=6).
* TO *DIE55*, IF DATA BASE RECOVERY IMPOSSIBLE(EC=7)
* TO *DIE56*, IF BOTH *ARF-S* ACTIVE (EC=10B).
* TO *DIE57*, IF *ARF* IS FULL (EC = 11B).
* TO *DIE58*, IF INCORRECT *FWI* IN *CRM* STATEMENT.
* TO *DIE59*, IF INCORRECT *REC* IN *CRM* STATEMENT.
* TO *DIE60*, IF INCORRECT *DEV* IN *CRM* STATEMENT.
* TO *DIE61*, IF CIO ERROR ON RECOVERY FILE(EC=12B).
* TO *DIE62*, IF NOT ENOUGH FL FOR BUFFERS(EC=13B).
* TO *DIE63*, IF D.B. NOT IN EDT(EC=14B).
* TO *DIE64*, IF INCORRECT FAMILY NAME IN EDT(EC=15B).
* TO *DIE65*, IF *DMREC* ACTIVE FOR THIS D.B.(EC=16B).
* TO *DIE66*, IF *ARF* BLOCK .GT. *ARF* BUFFER(EC=17B).
* TO *DIE67*, IF NOT ENOUGH FL FOR TABLES(EC=20B).
* TO *DIE69*, IF *BFL* NOT LARGE ENOUGH (EC=21B).
* (A0) = CURRENT MEMORY LOCATION.
*
* USES X - ALL.
* A - 0, 1, 2, 3, 5, 6, 7.
* B - 1, 2, 4, 5, 6, 7.
*
* CALLS CER, DXB, IAM, UPC.
*
* MACROS ATTACH, FILEC, GET, LDREQ, LOADER, STATUS.
CRM SUBR ENTRY/EXIT
ZR B5,CRM2 IF *CRM* STATEMENT
CRMA BSS 0
CRM1 RJ 0 MODIFIED BY *INIT*
* RJ =XIAM INITIAL ACCESS METHOD
SA1 TTIP+TIAM UPDATE CURRENT CORE POSITION
SA0 X1
LX6 59-0
SB7 X6
JP B7+TCRM JUMP TO PROCESSING ROUTINE
TCRM PL X6,CRMX IF NO ERRORS
EQ DIE38 NOT ENOUGH FL FOR RECORD
PL X6,DIE37 IF NOT ENOUGH FL FOR USERS
EQ DIE36 NOT ENOUGH FL FOR LOCKS
PL X6,CRM12 IF NOT ENOUGH FL FOR *CMM*
EQ DIE53 RECOVERY FILE INCONSISTENT
PL X6,DIE54 IF FILE ATTACH ERROR
EQ DIE55 IF *CRM* DATA BASE RECOVERY IMPOSSIBLE
PL X6,DIE56 IF BOTH *ARF-S* ACTIVE
EQ DIE57 ACTIVE *ARF* IS FULL
PL X6,DIE61 IF CIO ERROR ON RECOVERY FILE.
EQ DIE62 IF NO FL FOR RECOVERY BUFFERS.
PL X6,DIE63 IF D.B. NOT IN EDT.
EQ DIE64 IF INCORRECT FAMILY IN EDT.
PL X6,DIE65 IF *DMREC* ACTIVE FOR THIS D.B.
EQ DIE66 IF *ARF* BLOCK .GT. *ARF* BUFFER
PL X6,DIE67 IF NO FL FOR RECOVERY TABLES.
EQ CRM13 IF *BFL* NOT LARGE ENOUGH
CRM2 RJ UPC UNPACK COMMAND
NZ X6,DIE11 IF ERROR IN ARGUMENTS
* PROCESS FILE NAME.
SA1 TL
LT B6,B1,DIE29 IF NO FILE NAME
SA2 B7+B1 FILE NAME FROM *CRM* STATEMENT
MX6 12 MASK FOR DATA BASE
BX1 X6*X1 DATA BASE
BX3 X6*X2 DATA BASE OF FILE
IX3 X3-X1
BX7 X2
NZ X3,DIE29 IF INCORRECT DATA BASE
SA7 TTIP+TIFN
SX3 B1
BX7 X7+X3
SA7 CRMC PUT LOGICAL FILE NAME IN FET
MX0 12
SA1 A7+B1
BX6 -X0*X1
BX7 X7-X7 CLEAR PACKNAME IN FET
SA6 A1+
SA7 CRMC+CFPK
SA7 TTIP+TIRF CLEAR *RECOVERABLE FILE* FLAG IN *TTIP*
SA7 TTIP+TIPN CLEAR PACKNAME
SA7 TTIP+TIDV CLEAR DEVICE TYPE
SA7 TTIP+TIHR CLEAR HASHING ROUTINE
SA7 TTIP+TIFW PRESET *FORCED WRITE* INDICATOR
SA7 TTIP+TIAE CLEAR ATTACH ERROR
* PROCESS FILE TYPE, (ORGANIZATION).
SB6 B6-2
LT B6,DIE30 IF NO FILE TYPE PARAMETER
SX7 3 *CRM* CODE FOR INDEX SEQUENTIAL
SA2 A2+B1 FILE TYPE
LX2 11-59 RIGHT JUSTIFY TYPE
SX3 X2-2RIS
ZR X3,CRM3 IF INDEX SEQUENTIAL
SX7 6
SX3 X2-2RAK
ZR X3,CRM3 IF ACTUAL KEY
SX3 X2-2RDA
NZ X3,DIE30 IF NOT DIRECT ACCESS
SX7 5 *CRM* CODE FOR DIRECT ACCESS
CRM3 SA7 TTIP+TIFO FILE ORGANIZATION
MX0 -1
SB4 X7
LX0 B4 POSITION FILE ORGANIZATION BIT
SA3 CRMI BIT MAP OF FILE ORGANIZATIONS
BX7 -X0+X3
SA7 A3
* CHECK MODE, (PROCESSING DIRECTION).
SB6 B6-1
BX7 X7-X7 ASSUME READ ONLY FILE MODE
LT B6,DIE31 IF NO MODE
SA2 A2+B1 MODE
MX0 12
SA3 CRMB LEGAL MODES
CRM4 BX4 X0*X3
BX5 X2-X4
SX4 X7-3
ZR X5,CRM5 IF LEGAL MODE
ZR X4,DIE31 IF INCORRECT MODE
LX3 15 NEXT LEGAL MODE
SX7 X7+B1
EQ CRM4 CONTINUE CHECKING MODE
CRM5 ZR X7,CRM6 IF READ ONLY MODE
SX7 3 *CRM* CODE FOR INPUT/OUTPUT
CRM6 SA7 TTIP+TIPD PROCESSING DIRECTION
LX3 2-47
MX0 -3
BX6 -X0*X3 ATTACH MODE
* PROCESS USERS.
SB6 B6-B1
SA6 CRMD
SA6 TTIP+TIMD SAVE THE ATTACH MODE
LT B6,DIE32 IF NO USER PARAMETER
SA5 A2+1 USERS
RJ DXB DISPLAY TO BINARY
NZ X4,DIE32 IF INCORRECT NUMBER
ZR X6,DIE32 IF ZERO USER
SA6 TTIP+TIUS NUMBER OF USERS
* PROCESS LOCKS.
SB6 B6-B1
SA5 A5+B1 LOCKS
LT B6,DIE33 IF NO LOCK PARAMETER
RJ DXB CONVERT LOCKS FROM DISPLAY TO BINARY
NZ X4,DIE33 IF INCORRECT LOCK NUMBER
ZR X6,DIE33 IF ZERO LOCKS
SA6 TTIP+TILK NUMBER OF LOCKS
* PROCESS MAXIMUM RECORD LENGTH.
SB6 B6-B1
SA5 A5+B1 MAXIMUM RECORD LENGTH
LT B6,DIE35 IF NO MAXIMUM RECORD LENGTH PARAMETER
RJ DXB CONVERT RECORD LENGTH TO BINARY
NZ X4,DIE35 IF INCORRECT RECORD LENGTH
ZR X6,DIE35 IF ZERO RECORD LENGTH
SA6 TTIP+TIRL RECORD LENGTH
SA3 VBCT BATCH CONCURRENCY SUBCP LENGTH
MX0 -24
BX5 -X0*X5 PREVIOUS LARGEST SUBCP LENGTH
SX6 X6+9 INSURE LAST WORD AVAILABLE
SX4 10
IX6 X6/X4 RECORD BUFFER LENGTH IN WORDS
SX6 X6+BSRB+NUAPL SUBCP LENGTH INCLUDES SYSTEM AREA
SX6 X6+63 ROUND UP TO 100B CM WORDS
MX0 -6
BX6 X0*X6
IX5 X5-X6
PL X5,CRM6.1 IF THIS SUBCP LENGTH NOT GREATER
BX6 X3+X6
SA6 A3 SET NEW MAXIMUM SUBCP LENGTH
* PROCESS KEY LENGTH.
CRM6.1 SB6 B6-B1
SA5 A5+B1 KEY LENGTH
LT B6,DIE34 IF NO KEY LENGTH PARAMETER
RJ DXB CONVERT KEY LENGTH FROM DISPLAY TO BINARY
NZ X4,DIE34 IF INCORRECT KEY LENGTH NUMBER
ZR X6,DIE34 IF ZERO KEY LENGTH
SA6 TTIP+TIKL KEY LENGTH
SA6 TTIP+TIMK MAXIMUM KEY LENGTH
* PROCESS HASHING ROUTINE.
SB6 B6-B1
SA5 A5+B1 HASHING ROUTINE FILE NAME
LT B6,CRM9 IF NO MORE PARAMETERS
ZR X5,CRM7 IF NO HASHING ROUTINE
BX6 X5
SA6 TTIP+TIHR
* PROCESS FILE RECOVERABILITY INDICATOR.
CRM7 SB6 B6-B1
LE B6,CRM9 IF NO MORE PARAMETERS
SA5 A5+B1 RECOVERABILITY INDICATOR
MX0 6
ZR X5,CRM7.1 IF OMITTED
SX6 2RNR
SX7 B1
LX6 -12
BX1 X5-X6
BX1 X0*X1
ZR X1,CRM7.1 IF NOT RECOVERABLE
LX6 6
BX1 X5-X6
BX1 X0*X1
NZ X1,DIE59 IF RECOVERIBILITY NOT *R* OR *N*
SA7 TTIP+TIRF
* PROCESS FORCED WRITE INDICATOR.
CRM7.1 SB6 B6-B1
LE B6,CRM9 IF NO MORE PARAMETERS
SA5 A5+B1 PICK FORCED WRITE INDICATOR
ZR X5,CRM7.2 IF DEFAULTED
SX6 2RNY
SX7 B1
LX6 -12
BX1 X5-X6
BX1 X0*X1
ZR X1,CRM7.2 IF *FWI* IS *N*
LX6 6
BX1 X5-X6
BX1 X0*X1
NZ X1,DIE58 IF FWI NEITHER *Y* NOR *N*
SA7 TTIP+TIFW
* PROCESS PACKNAME.
CRM7.2 SB6 B6-B1
LE B6,CRM9 IF END OF PARAMETERS
SA5 A5+B1 PACKNAME
BX6 X5
SA6 CRMC+CFPK
SA6 TTIP+TIPN PACKNAME INTO *TTIP*
* PROCESS DEVICE.
CRM8 SB6 B6-B1
LE B6,CRM9 IF NO MORE PARAMETERS
SA5 A5+B1
MX0 12
BX6 X0*X5 ISOLATE DEVICE MNEMONIC
SA1 CRMC+1
SA6 TTIP+TIDV DEVICE MNEMONIC INTO *TTIP*
BX1 -X0*X1
BX6 X6+X1
BX5 -X0*X5 CLEAR MNEMONIC OUT OF DEV.TYPE
SA6 A1 DEVICE INTO THE FET
LX5 12
SB7 -B1
RJ DXB
NZ X4,DIE60 IF NO. OF UNITS INCORRECT
SX2 X6-9
PL X2,DIE60 IF NO. OF UNITS TOO LARGE
ZR X6,CRM9 IF NO. OF UNITS = 0
SA1 CRMC+CFPK
SA2 TTIP+TIDV
BX7 X6+X1
BX6 X6+X2
SA7 A1 NO. OF UNITS INTO FET
SA6 A2 NO. OF UNITS INTO *TTIP*
CRM9 SB4 CRMC FWA OF FET
* CHECK IF FILE AT CONTROL POINT.
STATUS B4
SA1 B4 FET STATUS
MX6 11
LX1 59-11
BX6 X6*X1
NZ X6,CRM9.1 IF FILE AT CONTROL POINT
* ATTACH *CRM* FILE.
SA2 XXJD+2 USER NAME
MX0 42
BX0 X0*X2
ATTACH B4,,X0,,CRMD
RJ CER CHECK ERRORS
ZR X1,CRM9.1 IF NO ATTACH ERROR
SX6 B1+
SA6 TTIP+TIAE SET ATTACH ERROR
SA1 CRMC GET FILE NAME
MX0 42
BX1 X0*X1
SB2 1RX SUBSTITUTION CHARACTER
SB5 -CRMJ ERROR MESSAGE
SB3 CRMK ERROR MESSAGE ASSEMBLY AREA
RJ SNM SET NAME IN MESSAGE
MESSAGE CRMK,3 PUT MESSAGE IN DAYFILE
CRM9.1 SA2 TTIP+TIHR HASHING ROUTINE
ZR X2,CRM11 IF NO HASHING ROUTINE
SB4 CRMC FWA OF FET
SX3 B1
IX7 X2+X3
SA7 B4 PUT LOGICAL FILE NAME IN FET
* CHECK IF HASHING FILE AT CONTROL POINT.
STATUS B4
SA1 B4
MX6 11
LX1 59-11
BX6 X6*X1
NZ X6,CRM10 IF FILE AT CONTROL POINT
* GET HASHING ROUTINE.
SA2 XXJD+2 USER NAME
MX0 42
BX0 X0*X2
GET B4,X0
RJ CER CHECK ERRORS
NZ X1,DIE43 IF FILE NOT FOUND
* LOAD HASHING ROUTINE.
CRM10 SX2 3 REWIND FILE
SA1 TTIP+TIHR HASHING ROUTINE
BX7 X1+X2
BX6 X1
SA7 CRMG+1 SET FILE NAME IN LOAD REQUEST
MX0 18
SX3 A0 FWA OF AVAILABLE MEMORY
SA6 CRMH+1 SET ENTRY POINT IN ENTRY REQUEST
LX3 47-17
LX0 47-59
SA2 CRMF SETUP LOAD ADDRESS
BX2 -X0*X2
BX6 X3+X2
SA6 A2+
LOADER CRMF LOAD HASHING ROUTINE
* CHECK FOR LOADER ERRORS ON HASHING ROUTINE.
SB1 1
SA1 CRMF+2 LOAD STATUS
MX0 2
BX2 X0*X1
NZ X2,DIE45 IF ERROR IN LOADING HASHING ROUTINE
SA3 CRMH+1 GET FWA OF HASH ENTRY POINT
SX6 X3+
ZR X6,DIE45 IF ENTRY POINT NOT FOUND
SA6 TTIP+TIHR
SA1 LWPR LWA + 1 OF LOAD
SA0 X1+ FWA OF MEMORY ALLOCATION
* ALLOCATE TABLES FOR *CRM*.
CRM11 SX7 A0 FWA OF AVAILABLE MEMORY
SB5 B0 PROCESS *CRM* STATEMENT
SA7 TTIP+TIAM
SB2 TTIP FWA OF TABLE OF PARAMETERS
EQ CRM1 PROCESS TABLES FOR *CRM* STATEMENT
CRM12 RJ RBL REPORT *BFL* INFORMATION
EQ DIE41 REPORT NOT ENOUGH FL FOR *CMM*
CRM13 RJ RBL REPORT *BFL* INFORMATION
EQ DIE69 REPORT *BFL* NOT LARGE ENOUGH
* LEGAL MODES FOR *CRM*.
CRMB VFD 12/1LR,3/PTRD,12/1LW,3/PTWR,12/1LM,3/PTMD
VFD 12/2LRM,3/PTRM
CRMC FILEC IBUF,IBUFL,FET=13,EPR FET FOR *CRM* DATA BASE FILE
CRMD BSS 1 ATTACH MODE
CRMF LDREQ BEGIN,LAST,IFL=,0,0
LDREQ MAP,BSEX,MAP
CRMG LDREQ LOAD,(HASH/R)
LDREQ SATISFY
CRMH LDREQ ENTRY,(HASH) HASH ENTRY POINT
LDREQ END
CRMI CON 0 BIT MAP OF FILE ORGANIZATIONS
CRMJ DATA C* XXXXXXX FILE DOWN DUE TO ATTACH ERROR.*
CRMK BSSZ 4 ASSEMBLY AREA FOR *CRMJ*
CTW SPACE 4,10
** CTW - CHARACTERS TO WORDS.
*
* ENTRY (X7) = LENGTH IN CHARACTERS.
*
* EXIT (X1) = LENGTH IN WORDS.
* (X6) = REMAINDER IN CHARACTERS.
*
* USES X - 1, 4, 5, 6.
* B - 7.
CTW SUBR ENTRY/EXIT
SX6 10 CHARACTERS PER WORD
PX4 X7 COMPUTE LENGTH IN WORDS
PX5 X6
NX6 X5
FX4 X4/X6
UX6,B7 X4
LX1 B7,X6
PX6 X1 COMPUTE REMAINDER
DX4 X6*X5
UX6 X4
IX6 X7-X6 REMAINDER
EQ CTWX RETURN
IXN SPACE 4,20
** IXN - PROCESS IXN PARAMETERS.
*
* ENTRY (B7) = FWA FOR UNPACKING PARAMETERS.
* (A0) = CURRENT MEMORY LOCATION.
* (A5) = ADDRESS OF FIRST WORD.
* (X5) = FIRST WORD OF COMMAND.
*
* EXIT TO *DIE11*, IF ERROR ON *IXN* STATEMENT ARGUMENTS.
* TO *DIE12*, IF ATTACH ERROR ON INDEX FILE.
* TO *DIE29*, IF INCORRECT FILE NAME.
* TO *DIE47*, IF INCORRECT NUMBER OF ALTERNATE KEYS.
* (A0) = CURRENT MEMORY LOCATION.
*
* USES X - 0, 1, 2, 3, 5, 6, 7.
* A - 1, 2, 5, 6, 7.
* B - 2, 4, 5, 6.
*
* CALLS CER, CRM, DXB, UPC.
*
* MACROS ATTACH, STATUS.
IXN SUBR ENTRY/EXIT
RJ UPC UNPACK COMMAND
NZ X6,DIE11 IF ERROR IN ARGUMENTS
* PROCESS FILE NAME.
SA1 TL
LT B6,B1,DIE29 IF NO FILE NAME
SA2 B7+B1 FILE NAME FROM *IXN* STATEMENT
MX6 12 MASK FOR DATA BASE
BX1 X6*X1 DATA BASE
BX3 X6*X2 DATA BASE OF FILE
IX3 X3-X1
BX7 X2
NZ X3,DIE29 IF INCORRECT DATA BASE
SA7 TTIP+TIXN
SX3 B1
BX7 X7+X3
SA7 CRMC PUT LOGICAL FILE NAME IN FET
MX0 -48
SA1 A7+B1
BX6 -X0*X1
MX7 0 CLEAR PACKNAME IN FET
SA6 A1 CLEAR DEVICE
SA7 CRMC+CFPK
SA7 TTIP+TIHR ZERO FILE NAME OF HASHING ROUTINE
* PROCESS NUMBER OF ALTERNATE KEYS.
SB6 B6-2
LT B6,DIE47 IF NO NUMBER OF ALTERNATE KEYS
SA5 A2+B1
RJ DXB CONVERT TO BINARY
NZ X4,DIE47 IF INCORRECT NUMBER
ZR X6,DIE47 IF NUMBER OF ALTERNATE KEYS .EQ. ZERO
SA6 TTIP+TINK
SA6 XXJS NUMBER OF ALTERNATE KEYS
* PROCESS PACKNAME.
SB6 B6-B1
SA5 A5+B1
LE B6,IXN2 IF NO MORE PARAMETERS
BX6 X5
ZR X5,IXN1 IF NO PACKNAME
SA6 CRMC+CFPK
* PROCESS DEVICE.
IXN1 LT B6,B1,IXN2 IF NO MORE PARAMETERS
SA5 A5+B1
MX0 12
BX5 X0*X5
SA1 CRMC+1
BX6 X5+X1
SA6 A1+
* CHECK IF FILE AT CONTROL POINT.
IXN2 SB4 CRMC FWA OF FET
STATUS B4
SA1 B4 FET STATUS
MX6 11
LX1 59-11
BX6 X6*X1
NZ X6,IXN3 IF FILE AT CONTROL POINT
* ATTACH *IXN* INDEX FILE.
SA2 XXJD+2 USER NAME
MX0 42
BX0 X0*X2
ATTACH B4,,X0,,CRMD
RJ CER CHECK ERRORS
ZR X1,IXN3 IF NO ATTACH ERROR
SX6 B1+
SA6 TTIP+TIAE SET ATTACH ERROR
SA1 CRMC GET FILE NAME
MX0 42
BX1 X0*X1
SB2 1RX SUBSTITUTION CHARACTER
SB5 -CRMJ ERROR MESSAGE
SB3 CRMK ERROR MESSAGE ASSEMBLY AREA
RJ SNM SET NAME IN MESSAGE
MESSAGE CRMK,3 PUT MESSAGE IN DAYFILE
* ALLOCATE TABLES FOR MIPPED FILE.
IXN3 MX7 0
SA7 TTIP+TIKO INITIALIZE KEY ORDINAL
SX7 A0 FWA OF AVAILABLE MEMORY
SB5 B1+B1 PROCESS *IXN* STATEMENT
SA7 TTIP+TIAM
SB2 TTIP FWA OF TABLE OF PARAMETERS
RJ CRM INITIALIZE MIPPED FILE TABLES
EQ IXNX NORMAL RETURN
RMK SPACE 4,15
** RMK - PROCESS *RMKDEF* STATEMENTS.
*
* ENTRY (XXJS) = NUMBER OF ALTERNATE KEYS.
*
* EXIT TO *DIE11*, IF ARGUMENT ERROR.
* TO *DIE68*, IF *RMKDEF* ERROR.
* (X1) .NE. 0, IF NO MORE ENTRIES IN *XXJ* FILE.
*
* USES X - 1, 3, 5, 6.
* A - 3, 5, 6.
* B - 2, 7.
*
* CALLS DXB, UPC.
*
* MACROS READC.
RMK3 SA5 XXJS NUMBER OF ALTERNATE KEYS
NZ X5,DIE68 IF *RMKDEF* STATEMENT ERROR
RMK SUBR ENTRY/EXIT
RMK1 READC TL,XXJA,8 READ STATEMENT FROM *XXJ* FILE
SB7 XXJP
NZ X1,RMK3 IF EOF
SA5 XXJA
RJ UPC UNPACK CONTROL STATEMENT
NZ X6,DIE11 IF UNPACK ERRORS
SX1 X6
SA5 B7
MX3 42
BX5 X3*X5
SA3 RMKA
BX3 X3-X5
NZ X3,RMK3 IF NOT *RMKDEF* STATEMENT
SB2 4
LE B6,B2,RMK2 IF NO KEY LENGTH SPECIFIED
SA5 B7+B2 KEY LENGTH
RJ DXB CONVERT KEY LENGTH
NZ X4,DIE11 IF ERROR IN *RMKDEF* STATEMENT
ZR X6,RMK1 IF KEY LENGTH IS ZERO (SPARSE KEY)
RMK2 SA5 XXJS
SX6 X5-1 DECREMENT *RMKDEF* STATEMENT COUNT
SA6 A5+
EQ RMK1 PROCESS NEXT STATEMENT
RMKA VFD 60/6LRMKDEF
TITLE TOTAL INTERFACE ROUTINES.
IEOQ SPACE 4,10
** IEOQ - INITIALIZATION ENTER OUTPUT QUEUE.
* DUMMY ROUTINE FOR TOTAL DURING INITIALIZATION.
IEOQ SUBR ENTRY/EXIT
EQ IEOQX RETURN
IFAR SPACE 4,10
** IFAR - INITIALIZATION FILE ATTACH ROUTINE.
* ATTACH FILES FOR TOTAL DURING INITIALIZATION.
* IF FILE IS XXTLOG AND DOES NOT EXIST IT IS DEFINED.
* THE XXTLOG FILE IS POSITIONED AT EOI.
*
* ENTRY (X2) = ADDRESS OF FILE NAME TO ATTACH.
*
* EXIT (X6) = 0 ATTACH WAS OKAY.
* (X6) " 0 ERROR CODE.
*
* USES X - 0, 1, 2, 4, 5, 6, 7.
* A - 1, 2, 4, 6.
* B - 1, 7.
*
* CALLS PFM=, CIO=.
IFAR SUBR ENTRY/EXIT
SA1 X2 FILE NAME TO ATTACH
SB1 1
MX0 42
SX6 1
BX1 X0*X1
BX6 X6+X1
* FIND FILE IN EDT AND PLACE PACK INFORMATION IN THE FET.
SA2 SCHEMA
SA6 IFARB
SB7 X2-2*TMAXFIL-2 ADDRESS OF FIRST FILE NAME
IFAR1 SA2 B7 FILE NAME
SB7 B7+TFEN
BX6 X1-X2
ZR X2,IFARX IF FILE NAME NOT FOUND
NZ X6,IFAR1 IF NOT CORRECT FILE NAME
MX7 48
SA1 B7-B1 PACKNAME FOR FILE
LX7 6
BX6 X7*X1
LX1 -6
SA6 IFARB+CFPK PACK NAME AND UNIT INTO FET
MX4 -12
SA2 IFARB+1
BX4 -X4*X1 DEVICE TYPE
MX7 -48
LX4 -12
BX2 -X7*X2
IX6 X2+X4
SA6 A2 DEVICE TYPE TO FET
STATUS IFARB CHECK IF FILE EXISTS
SA1 IFARB
MX6 11
LX1 59-11
BX3 X6*X1
BX6 X6-X6
NZ X3,IFARX IF FILE EXISTS
ATTACH IFARB,,,,M
SA1 X2 CHECK FOR ATTACH ERROR
MX7 24
* CHECK IF FILE IS XXTLOG.
SA4 IFARA
LX1 12 REMOVE TWO CHARACTER DATA BASE NAME
MX0 -6
BX5 X7*X1
LX1 -12-10
BX4 X4-X5
BX6 -X0*X1
NZ X4,IFARX IF NOT XXTLOG FILE
* ATTACH XXTLOG FILE IN WRITE MODE.
ATTACH IFARB,,,,W
SA1 IFARB
LX1 -10
BX6 -X0*X1
NZ X6,IFAR2 IF ATTACH ERROR ON XXTLOG
SKIPEI X2,R POSITION XXTLOG AT EOI
BX6 X6-X6 INDICATE NO ERRORS
EQ IFARX RETURN
IFAR2 SX5 X6-2
NZ X5,IFARX IF NOT *FILE NOT FOUND*
DEFINE X2
SA4 IFARB CHECK FOR ERROR ON DEFINE
AX4 10
BX6 -X0*X4
EQ IFARX RETURN
IFARA VFD 60/0LTLOG
IFARB FILEC IBUF,IBUFL,FET=13,EPR
IGRA SPACE 4,10
** IGRA - INITIALIZATION GET REFERENCE ADDRESS.
* RETURN THE RA, FL AND DATA BASE ID FOR TRANEX1.
*
* ENTRY (X1) = SUB CONTROL POINT NUMBER.
*
* EXIT (X5) = 0 (DATA BASE ID).
* (X7) = FFL= (FL).
* (X6) = 0 (RA).
*
* USES X- 5, 6, 7.
IGRA SUBR ENTRY/EXIT
BX5 X5-X5 DATA BASE ID
BX6 X6-X6 RA
SX7 FFL= FL FOR INITIALIZATION
EQ IGRAX RETURN
IRIQ SPACE 4,10
** IRIQ - INITIALIZATION RETURN INPUT QUEUE.
* RETURN AN INPUT QUEUE ENTRY TO TOTAL.
*
* EXIT (X6) = 0 - QUEUE IS EMPTY.
* (X6) = QUEUE ENTRY.
*
* USES X - 1, 7.
* A - 1, 7.
IRIQ SUBR ENTRY/EXIT
SA1 IRIQA QUEUE ENTRY
BX7 X7-X7
BX6 X1
SA7 A1 CLEAR ENTRY
EQ IRIQX RETURN
IRIQA BSSZ 1 QUEUE ENTRY
TITLE LOADER= - INTERFACE TO LOADU.
LOADER= SPACE 4,10
** LOADER= IS THE INTERFACE NEEDED TO CALL LOADU
* FROM THE LOADER MACRO.
*
* EXIT DOES NOT RETURN FROM LDV CALL.
* RETURN IS TO CALLING ADDRESS +2.
*
* USES X - 0, 1, 2, 3, 4, 6, 7.
* A - 0, 1, 2, 3, 4, 6, 7.
* B - 2, 3, 4, 5, 6, 7.
*
* CALLS SYS=.
LOADER= SUBR ENTRY
SA1 LOADER=
LX1 30
SX2 B1 ADVANCE THE RETURN ADDRESS
SA3 X1
IX7 X1+X2
SX4 X7
SA5 X3 FIRST WORD OF PARAMETER LIST
SA0 IFL= TRANEX1 FIELD LENGTH
SB3 X5 LWA+1 OF LOADABLE AREA
AX5 30
MX0 -12
SX5 X5
SB5 X3+3
* DETERMINE LWA+1 OF PARAMETER AREA.
LOA1 SA1 B5 GET HEADER OF NEXT REQUEST
LX1 -36
BX2 -X0*X1 LENGTH OF REQUEST
SX2 X2+B1
SB5 B5+X2 NEXT PARAMETER ADDRESS
NZ X1,LOA1 IF NOT END OF PARAMETER AREA
* PUT PARAMETERS IN REGISTERS FOR LOADU
*
* (A0) = CM FIELD LENGTH.
* (X0) = EXTENDED MEMORY FIELD LENGTH.
* (B7) = FWA OF LOADABLE AREA. THIS IS THE ADDRESS
* WHERE LOADU IS LOADED.
* (X6) = BITS 0-17 - FWA OF USER-CALL PARAMETER AREA.
* 18-35 - LWA+1 OF USER-CALL PARAMETER AREA.
* 36-53 - ADDRESS FOR LOADU TO RETURN TO.
*
BX0 X0-X0 NO EXTENDED MEMORY FIELD LENGTH FOR LOAD
SX6 B5 LWA OF REQUEST LIST
SX7 X3 FWA OF REQUEST LIST
LX4 36
LX6 18
BX6 X4+X6
BX6 X6+X7
* CALL LDV TO LOAD AND EXECUTE LOADU.
SA1 LOAB NAME OF LOADER OVERLAY
SB7 X5 FWA OF LOADABLE AREA
SX3 B3 LWA+1 OF LOAD
SX4 141B U-BIT, V-BIT, E-BIT
BX7 X1
SA7 LOAC FIRST WORD OF LIST
LX3 18
LX4 36
BX3 X3+X5
* FORM LDV CALL WORD AND CALL LDV.
SA1 LOAA
BX7 X3+X4
SX2 A7
SA7 A7+B1 STORE THE SECOND WORD OF LIST
BX7 X1+X2 LDV CALL
LOA2 SA1 B1
NO
NZ X1,LOA2 IF SYSTEM REQUEST NON ZERO
SA7 A1 CALL LDV
LOA3 NO
NO
EQ LOA3 WAIT FOR LDV TO DROP CPU
LOAA VFD 18/0LLDV,42/0
LOAB VFD 60/0LLOADU
LOAC BSSZ 2 PARAMETER AREA FOR LDR CALL
AREA CURRENTLY BEING PROCESSED
SEG
SPACE 4,10
*** COMMON DECKS USED IN INITIALIZATION.
*CALL COMCARG
*CALL COMCCIO
*CALL COMCCOD
*CALL COMCCPM
*CALL COMCDXB
*CALL COMCLFM
*CALL COMCMVE
*CALL COMCOVL
*CALL COMCPFM
*CALL COMCRDC
*CALL COMCRDO
*CALL COMCRDS
*CALL COMCRDW
*CALL COMCSFN
*CALL COMCSNM
*CALL COMCSYS
*CALL COMCUPC
*CALL COMCWTO
*CALL COMCWTW
*CALL COMKTIP
*CALL COMKZFN
BUFFERS SPACE 4
* INITIALIZATION FILE BUFFERS
RBUFL EQU 201B
RBUF BSS RBUFL *TAF* INITIALIZATION FILE BUFFER
HBUFL EQU MAXDB BUFFER FOR *TAF* DATA BASES
HBUF BSS HBUFL
THBUFL EQU MAXDB BUFFER FOR *TOTAL* DATA BASES
THBUF BSS THBUFL
CBUFL EQU MAXDB BUFFER FOR *CRM* DATA BASES
CBUF BSS CBUFL
OTBUFL EQU MAXDB BUFFER FOR OTHER DATA BASES
OTBUF BSS OTBUFL
TCBUFL EQU HBUFL+THBUFL+CBUFL+OTBUFL
TCBUF BSS TCBUFL BUFFER FOR TCF
LBUFL EQU 101B
LBUF BSS LBUFL
IBUFL EQU 401B
IBUF EQU * COMMON BUFFER FOR INITIALIZATION FILE WORK
SPACE 4,10
FFL1 EQU * END OF *TAF1*
.FFL MAX IBUF+IBUFL+10B,FFL1
FFL= EQU .FFL FL REQUIRED FOR *TAF* *RFL*
QUAL *
"PROD"2 TTL "PROD"2 END/RECOVERY PROCESSOR - VER "VERT".
EJECT
QUAL "PROD"2
IDENT "PROD"2,REC,REC,1,0 END/RECOVERY.
*COMMENT TAF - END/RECOVERY.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
SPACE 4
*** TRANSACTION EXECUTIVE END/RECOVERY PROCESSOR.
* J. R. HOGUE 72/05/06.
SPACE 4
*** *TAF2* DOES THE END/RECOVERY PROCESSING FOR TAF.
* THIS INCLUDES
* 1) FLUSHING BUFFERED JOURNAL FILES
* 2) ISSUING STATISTICS TO THE DAYFILE
* 3) CLOSING THE CRM DATA BASE FILES.
* 4) CLOSING THE AFTER IMAGE RECOVERY FILES IF THEY EXIST.
* 5) CLOSING THE TAF COMMUNICATION RECOVERY FILE(S).
*
* TO RESTART TAF IN RECOVERY MODE, SENSE SWITCH 3 MUST BE *ON*.
* *TAFREC* WILL THEN USE THE VALUES IN THE RECOVERY FILE
* INSTEAD OF USING WHAT WAS SPECIFIED ON THE *TCF*.
SPACE 4
*** EXTERNAL DECISION KEYS
*
* SW4 IF SET - RESTART TRANEX AFTER A RECOVERY.
* SW5 IF SET - CALL *DMD* AND *OUT*, AFTER AN ABORT OR DROP.
REC TITLE END/RECOVERY DRIVER.
** REC DETERMINES RECOVERY OPTIONS BY EXAMINING THE SENSE
* SWITCHES AND EXECUTES THE APPROPRIATE ROUTINES.
ORG TRFL
REC SB1 1
MESSAGE RMES1,,R *RECOVERY IN PROGRESS.*
BX6 X6-X6
SA6 B1+B1
SA0 REC1 ERROR RETURN ADDRESS FOR *ERP$*
MEMORY ECS,2,R,,NABORT
STATUS TIF INITIALIZATION FILE
SA1 X2
MX6 11
LX1 59-11
BX1 X6*X1
NZ X1,REC2 IF INITIALIZATION FILE PRESENT
REC1 MESSAGE RMES2 RECOVERY IMPOSSIBLE
ENDRUN
REC2 REWIND TIF
SA1 VFSCP SAVE LAST VFSCP
BX6 X1
SA6 RECA
READ TIF
READW TIF,RECB,1 READ *TIF* STATUS WORD
READW TIF,VLOCS,VLOCL
SA2 VINT TRANEX1 COMPLETE FLAG
SA1 TROA
ZR X2,REC1 IF TRANEX1 WAS NOT COMPLETE
SA2 RECA FWA OF SUB-CONTROL POINTS
BX6 X2
SA6 VFSCP
ZR X1,REC3 TRANEX NOT ROLLED OUT
SA1 TROB+1 SET FIRST/IN/OUT/LIMIT TO USE SCRATCH AREA
SX6 RBUF
MX4 42
SA6 A1+B1 IN
BX1 X4*X1
BX7 X1+X6
SA6 A6+B1 OUT
SA2 A6+B1
SA7 A1 FIRST
SX6 RBUF+RBUFL-1
BX2 X4*X2
BX7 X2+X6
SA7 A2 LIMIT
REWIND TROB,R REWIND ROLLOUT FILE
READ TROB INITIATE READ
READW TROB,ROFL,ROFL-TRFL THROW AWAY FL WHICH RECOVERY USES
SA5 CURFL CURRENT FL
SX0 X5+
READW TROB,ROFL,X0-ROFL LOAD FL AFTER RECOVERY OVERLAY
REC3 RJ CSC CHECK SUBCONTROL POINTS
SA5 B0
LX5 59-11 POSITION TO SENSE SWITCH 6
PL X5,REC4 IF SENSE SWITCH 6 SET
WRITER OUTPUT,R
* WRITE TERMINATION FLAG ON *CRF* FILE.
REC4 RJ TTR TERMINATE COMMUNICATIONS RECOVERY FILES
* FORCE TOTAL TO FLUSH BUFFERS.
SA1 VTOT READ TOTAL INITIALIZATION FLAG
SA2 REC5 MODIFY CALL TO TOTAL
ZR X1,REC7 IF TOTAL WAS NOT LOADED
LX1 30
MX0 18
LX0 -12
BX6 -X0*X2
BX6 X1+X6
SA6 A2
RJ * VOID THE INSTRUCTION STACK
* PUT ENTRY INTO TOTAL INPUT QUEUE
SA1 TDI+1 FIRST
SA3 TQUE QUEUE ENTRY
SX6 X1+B1
BX7 X1
SA6 A1+B1 IN
BX6 X3
SA7 A6+B1 OUT
SA6 X7 PUT INTO QUEUE
REC5 RJ REC5 CALL TOTAL
* RJ =XTOTAL (CALL TOTAL)
SA1 STATUS
SA2 OSTAT CHECK FOR TOTAL DONE ON FINAL CALL
SB1 1
BX3 X2-X1
NZ X3,REC6 IF TOTAL DONE
RECALL
EQ REC5 TRY AGAIN
REC6 SA2 STAT
BX3 X2-X1
BX6 X1
ZR X3,REC7 IF TOTAL RECOVERED
SA6 RMEST2+1
MESSAGE RMEST1,,R RECOVERY OF TOTAL FAILED
MESSAGE RMEST2,,R TOTAL STATUS
* CLOSE *CRM* FILES.
REC7 SA1 VAAM AAM INITIALIZATION FLAG
ZR X1,REC8 IF AAM WAS NOT LOADED
RJ CCF CLOSE *CRM* FILES
REC8 RJ CAS CHECK FOR ASSIGNED EQUIPMENT
RJ RJF RECOVER JOURNAL FILES
RJ IDS ISSUE DAYFILE STATISTICS
MESSAGE RMES3,,R RECOVERY COMPLETE
SA1 B0
LX1 -6-4 SW4
PL X1,REC9 IF NOT TO RESTART TRANEX
ENDRUN
REC9 MESSAGE RMES4 NORMAL TERMINATION
ENDRUN
RECA BSS 1 FWA OF SUB-CONTROL POINTS
RECB BSS 1 *TIF* STATUS WORD
TIF BSS 0 *TAF* INITIALIZATION FILE
"TIF" FILEB RBUF,RBUFL
O BSS 0 OUTPUT DUMP FILE
OUTPUT FILEB RJF,1,FET=10
CAS SPACE 4
** CAS CHECK FOR ASSIGNED EQUIPMENT
* IF A TAPE UNIT(S) HAS BEEN ASSIGNED VIA THE K-DISPLAY
* AS A POOL UNIT FOR JOURNAL FILES, SET UP FOR USE IF
* TAPE PARITY ERROR OR END OF REEL PROCESSING BECOMES
* NECESSARY DURING BUFFERED JOURNAL FILE CLEAN UP
CAS PS
REWIND SCR,R SCRATCH FILE NUMBER 1
SA1 X2+4
BX4 X4-X4
MX6 12
BX6 X6*X1
ZR X6,CAS1 IF FILE NOT PRESENT
SX4 X2
CAS1 REWIND SCR1,R CHECK SCRATCH FILE 2
SA1 X2+4
MX6 12
BX6 X6*X1
ZR X6,CAS2 IF FILE NOT PRESENT
LX4 18
BX4 X4+X2
CAS2 BX6 X4
SA6 ASEQ ASSIGNED EQUIPMENT WORD
JP CAS *RETURN
CCF SPACE 4,15
** CCF - CLOSE *CRM* FILES.
*
* ENTRY (VAAQ) = FWA OF QUEUE.
* (X1) = ENTRY POINT FOR *AMI*.
*
* EXIT FILES ARE CLOSED.
*
* USES X - 1, 2, 3, 6, 7.
* A - 1, 2, 3, 6, 7.
* B - 2, 3, 5, 6, 7.
*
* CALLS AMI, CFD, SFN, SNM.
*
* MACROS MESSAGE.
CCF SUBR ENTRY/EXIT
SX6 B1 BUILD *RJ =XAMI* INSTRUCTION
LX6 24-0
SX1 X1+ *AMI* ENTRY POINT.
BX6 X6+X1
LX6 30
SA6 CCFA
RJ * VOID THE INSTRUCTION STACK
* PLACE RECOVERY ENTRY INTO AAM INPUT QUEUE.
CCF1 SA1 VAAQ FWA OF FET FOR INPUT QUEUE
SA3 CCFB RECOVERY REQUEST
LX1 17-41
SA1 X1+B1 FIRST WORD OF QUEUE
SX6 X1+B1
SA6 A1+B1 IN
BX7 X1
BX6 X3
SA7 A6+B1 OUT
SA6 X7 REQUEST INSERT IN QUEUE
MX7 1 SET FLAG IN *AMST* TO INDICATE IDLE
LX7 58-59
SA1 VAAM
SA7 X1-2
CCF2 BSS 0
CCFA RJ 0 MODIFIED BY *CCF*
* RJ =XAMI CALL ADVANCED ACCESS METHODS INTERFACE
SA2 CCFC D.B./FILE NAME
MX1 12
MX6 42
BX1 X1*X2
BX5 X6*X2
LX2 59
BX1 X1-X5
PL X2,CCF2 IF INCOMPLETE REQUEST
ZR X5,CCF4 IF NO MORE DATA BASES
SX5 CCFD ADDRESS OF THE COUNTERS
SB7 CCFFL NO. OF COUNTERS TO PROCESS
SB6 CCFO
ZR X1,CCF3 IF DATA BASE COUNTERS
SB7 CCFGL ADJUST FOR FILE COUNTERS
SB6 CCFK
CCF3 SA1 X5+
RJ CFD
SA6 CCFR CONVERTED COUNTER
SB2 1RX SUBSTITUTE CHARACTER
SB3 CCFS MESSAGE ASSEMBLY AREA
SA1 CCFC D.B./FILE NAME
SB5 -B6
RJ SNM
SB7 B7-B1
SX5 X5+B1
SB6 B6+CCFQL
MESSAGE CCFR
NE B7,CCF3 IF NOT ALL COUNTERS PROCESSED
EQ CCF1 ASK FOR NEXT FILE
CCF4 MESSAGE CCFT
EQ CCFX RETURN
CCFB VFD 24/0,6/0,6/TRTC,1/1,5/0,18/CCFC RECOVERY REQUEST
CCFC BSS 1 FILE NAME OR DATA BASE NAME
CCFD BSS 1 NUMBER OF OPENS OR BEGINS
CCFE BSS 1 NUMBER OF OPEN REJECTS OR COMMITS
CCFF BSS 1 NUMBER OF LOCKS OR FREES
CCFFL EQU *-CCFD
CCFG BSS 1 NUMBER OF LOCK REJECTS
CCFGL EQU *-CCFD
CCFK DATA C* KILO OPENS - XXXXXXX. *
CCFL DATA C* KILO OPEN REJECTS - XXXXXXX.*
CCFM DATA C* KILO LOCKS - XXXXXXX. *
CCFN DATA C* KILO LOCK REJECTS - XXXXXXX.*
CCFO DATA C* KILO BEGINS - XX. *
CCFP DATA C* KILO COMMITS - XX. *
CCFQ DATA C* KILO FREES - XX. *
CCFQL EQU *-CCFQ
CCFR BSS 1
CCFS BSS CCFQL
CCFT DATA C* AAM FILES CLOSED.*
ASEQ BSSZ 1 ASSIGNED EQUIPMENT WORD
SCR BSS 0 TAPE POOL EQUIPMENT ASSIGNMENT FILE 1
SCR RFILEB SCRB,SCRBL,FET=14
SCR1 BSS 0 TAPE POOL EQUIPMENT ASSIGNMENT FILE 2
SCR1 RFILEB SCRB,SCRBL,FET=14
SCRBL EQU 2001B DUMMY LENGTH FOR SCR(1) FET
SCRB EQU 101B DUMMY ADDRESS FOR SCR(1) FET
CSC SPACE 4,15
** CSC - CHECK SUBCONTROL POINTS.
*
* SEARCH ALL SUBCONTROL POINTS BEYOND *ITASK* TO CLEAR THE
* STORAGE LOCK FLAG AND SET THE RELEASABLE
* FLAG IN THE SUBCONTROL POINT TABLE.
* *AVAILCM* AND *ITASK-S* SUBCONTROL POINT FREE SPACE IS
* UPDATED.
*
* ENTRY (VCPA) = FWA OF SUBCONTROL POINT TABLE.
*
* EXIT ALL SUBCONTROL POINT TABLE ENTRIES UPDATED.
*
* USES X - ALL.
* A - 1, 2, 3, 4, 6, 7.
CSC2 SA4 A4-SCNSW GET *ITASK-S* SUBCP TABLE
LX4 SCFCN-SCFCS-1 RIGHT JUSTIFY *ITASK-S* FREE SPACE
SA2 AVAILCM
IX6 X4+X1 UPDATE *ITASK-S* FREE SPACE
IX7 X2+X1 UPDATE *AVAILCM*
LX6 SCFCS-SCFCN+1
SA7 A2
SA6 A4+
CSC SUBR ENTRY/EXIT
SA2 VCPA GET FWA OF SUBCONTROL POINT
LX2 -24
SA2 X2
SA4 A2+SCNSW GET FWA OF SUBCP AFTER *ITASK*
MX5 -SCFLN
BX1 X1-X1
SX2 X4+ FWA OF NEXT SUBCP
CSC1 ZR X2,CSC2 IF DONE SEARCHING SUBCP TABLE
MX0 -59
SA3 X2
BX6 -X0*X3 CLEAR STORAGE LOCK FLAG
LX0 SCRLS-59
LX3 SCFLN-1-SCFLS
BX4 -X5*X3 GET TASK FL
SX4 X4+NUAPL ADD SYSTEM AREA
IX1 X1+X4
BX7 X0+X6 ADD RELEASE SUBCONTROL POINT FLAG
SA3 A3+SCNSW GET NEXT SUBCP ADDRESS
SA7 X2 UPDATE FWA OF SUBCP TABLE
SX2 X3
EQ CSC1 CONTINUE SEARCH AT NEXT SUBCP
RJF SPACE 4
** RJF CHECKS JOURNAL FILE FETS AND ISSUES A *WRITER* FOR
* EACH BUFFERED JOURNAL FILE.
RJF PS
MEMORY CM,RJFC,R GET CURRENT FIELD LENGTH
SB6 RJF1 RETURN ADDRESS
SA1 JOUR0+1 FIRST
SB3 B1+B1
EQ RJF4 CHECK JOUR0 FET FOR LEGALITY
RJF1 WRITEF JOUR0,R FLUSH JOUR0
SA1 VEDT
LX1 -24
SA2 X1 EDT HEADER WORD 1
SX1 X1+1
LX2 -18
SX0 X2 EDT COUNT
RJF2 ZR X0,RJF IF ALL EDT-S PROCESSED
SA3 X1+
LX3 -18
SB5 X3-JFETL ADDRESS OF FIRST JOURNAL FILE - JFETL
MX6 -6
LX3 -36
BX3 -X6*X3
SB4 X3 JOURNAL COUNT FOR THIS EDT
SA1 A3-B1 HEADER WORD 1
SX6 X1+1 ADDRESS OF EDT HEADER WORD 2
SX0 X0-1 DECREMENT EDT COUNT
SA6 RJFB UPDATE EDT POINTER
RJF3 SA1 RJFB ADDRESS OF NEXT EDT
ZR B4,RJF2 IF DONE WITH THIS EDT
SB5 B5+JFETL BUMP FET POINTER FOR JOURNAL FILES
SB3 B1+B1
SB4 B4-B1 DECREMENT JOURNAL FILE COUNT
SA2 B5+7 JOURNAL STATUS WORD
SA1 B5+B1 FIRST
LX2 -1
NG X2,RJF3 IF NOT BUFFERED JOURNAL FILE
SB6 RJF6 RETURN ADDRESS
RJF4 SA4 RJFC CURRENT FIELD LENGTH
SX6 JBUF0-1 LOWER LEGAL LIMIT
LX4 30
SX7 X4 UPPER LEGAL LIMIT
* CHECK FET FOR VALIDITY
RJF5 SA2 A1+B1
SB3 B3-B1
SX1 X1
SX2 X2
IX3 X1-X6
IX4 X2-X6
NG X3,RJF3 IF FET ARGUMENT ERROR
NG X4,RJF3 IF FET ARGUMENT ERROR
IX3 X1-X7
IX4 X2-X7
PL X3,RJF3 IF FET ARGUMENT ERROR
PL X4,RJF3 IF FET ARGUMENT ERROR
SA1 A1+2
NZ B3,RJF5 IF OUT/LIMIT NOT CHECKED YET
JP B6 FET VALIDATED
RJF6 SA1 B5
SA2 RJFA CHECK FILE NAME
BX4 X1
MX3 18
LX1 12
BX3 X3*X1 CHARS 3 THROUGH 5 OF JOURNAL FILES
IX3 X3-X2
NZ X3,RJF3 IF NOT *XXJOR* TYPE FILE
LX4 59
PL X4,RJF8 IF LAST REQUEST NOT COMPLETE
SX2 B5+
* FLUSH BUFFER
SA0 RJF7 RETURN ADDRESS
WRITEF B5+,R WRITE FILE MARK
RJF7 SA0 RJF3 LOOP FOR ALL JOURNAL FILES
EQ ERP$ CHECK FOR ABNORMAL STATUS
* REISSUE THE *CIO* REQUEST.
* ENTRY (B5) = FET ADDRESS.
RJF8 SA1 B5+FEMGW
LX1 59-FEMGS
NG X1,RJF3 IF TAPE
SA1 B5+FECRW GET CURRENT RANDOM ADDRESS
ZR X1,RJF9 IF *CIO* NOT PROCESSED
BX7 X1
SA7 B5+FERRW RESET RANDOM ADDRESS
SA2 B5
SX6 B1 SET COMPLETION FLAG
SA1 B5+FEOOW GET OLD OUT POINTER
BX6 X2+X6
BX7 X1
SA6 B5
SA7 B5+FEOUW RESET OUT
REWRITEF B5,R REISSUE *CIO* REQUEST
EQ RJF3 CONTINUE WITH NEXT FILE
RJF9 SX6 B1 SET COMPLETION FLAG
SA1 B5
BX6 X1+X6
SA6 B5
WRITEF B5,R REISSUE *CIO* REQUEST
EQ RJF3 CONTINUE WITH NEXT FILE
RJFA VFD 60/0LJOR CHARACTERS 3 THROUGH 5 OF JOURNAL FILES
RJFB DATA 0 EDT POINTER
RJFC BSSZ 1 CURRENT FIELD LENGTH
TTR SPACE 4,15
** TTR - TERMINATE COMMUNICATIONS RECOVERY FILES.
*
* ENTRY (IDLA) = ZERO IF ABNORMAL TERMINATION.
* (VTST) = FIRST WORD OF *TST*.
*
* EXIT *CRF* HEADER UPDATED.
*
* USES A - 1, 2, 3, 4, 6, 7.
* X - 1, 2, 3, 4, 5, 6, 7.
* B - 3.
*
* CALLS FIO.
*
* MACROS CLOCK, DATE, RECALL, REWIND.
TTR SUBR ENTRY/EXIT
.B IFEQ IPTAR,1
DATE TTRA DATE OF TERMINATION
CLOCK TTRB TIME OF TERMINATION
SX7 -B1
SA7 TTRC FIRST *CRF*
TTR1 SA2 VTST GET FWA OF *TST* HEADER
LX2 -24
SB3 X2-TTFTL
SA1 TTRC
SX7 X1+1 INCREMENT *CRF* ID
LX1 X7,B1 MULTIPLY BY TWO
SX6 X7-MAXRC
ZR X6,TTRX IF ALL *CRF-S* PROCESSED
SA7 A1 UPDATE *CRF* ID
SA4 X1+B3
ZR X4,TTR1 IF NO *CRF* TO PROCESS
SX7 A4+
SA7 TTRE SAVE ID
SX5 X4+TTFTW FWA OF FET
SA1 X5
LX1 59-FECLS
NG X1,TTR2 IF LAST *CIO* REQUEST COMPLETED
MX0 FECON+FEFTN
LX0 FECOS-59
LX1 59-59-59+FECLS
BX2 X0*X1
SX3 X2-CIORW
NZ X3,TTR2 IF NOT REWRITE
MX0 8
LX1 59-17
BX1 X0*X1
NZ X1,TTR4 IF ERROR ON FILE
SA2 X5+B1 GET RANDOM ADDRESS
SA3 X2+TTRAW-TTBFW
BX7 X3
SX6 X2
SA7 X5+FERRW RESET RANDOM ADDRESS
SA6 X5+3 RESET OUT
SYSTEM CIO,R,X5 REISSUE REWRITE REQUEST
TTR2 SX2 1R0
SA4 TTRE GET ID
MX0 -TFIDN
SA1 X4+B1
LX1 TFIDN-TFIDS-1
BX7 -X0*X1
IX2 X2+X7 BINARY TO DISPLAY
LX2 29-5 FORM FILE NAME - *ZZCRFI*
MX6 30
SA3 CRF
BX3 X6*X3
BX6 X3+X2 FORM FILE NAME - *CRFI*
SX4 3
BX6 X6+X4 ADD COMPLETE/BINARY BITS
SA6 CRF
* READ *CRF* HEADER.
SX5 CRF FET ADDRESS
SX1 CIORD READ FUNCTION
SX2 B1+ ONE PRU TO READ
SX6 B1+ PRU ADDRESS
RJ FIO INITIATE READ
RECALL X5 WAIT FOR *CRF* I/O TO COMPLETE
SA1 X5 CHECK ERROR STATUS
MX2 8
LX1 59-17
BX1 X2*X1
NZ X1,TTR4 IF ERROR ON FILE
MX2 60-TRRSN
SA3 IDLA
SA1 RBUF+TRNRW
LX2 TRRSS-TRRSN+1
BX7 X2*X1 CLEAR SHUTDOWN FLAG
NZ X3,TTR3 IF NORMAL SHUT DOWN
BX2 -X2
BX7 X2+X1 ADD ABNORMAL SHUTDOWN FLAG
TTR3 SA7 A1
SA1 TTRA DATE
SA2 TTRB TIME
BX6 X1
BX7 X2
SA6 RBUF+TRTDW TERMINATION DATE
SA7 RBUF+TRTTW TERMINATION TIME
* REWRITE THE *CRF* HEADER.
SX1 CIORW
SX2 B1 ONE PRU TO WRITE
SX6 B1 PRU ADDRESS
SX5 CRF FET ADDRESS
RJ FIO REWRITE THE HEADER
RECALL CRF
REWIND CRF,R
EQ TTR1 PROCESS NEXT *CRF*
* ERROR ON FILE *CRF* ISSUE DAYFILE MESSAGE.
TTR4 SB2 1RX
SA1 CRF FILE NAME
MX0 42
SB3 DAYB DAYFILE BUFFER
BX1 X0*X1
SB5 -TTRD
RJ SNM SET NAME IN MESSAGE
MESSAGE DAYB ISSUE DAYFILE MESSAGE
EQ TTR1 CONTINUE PROCESS *CRF* FILE
TTRA BSS 1 DATE OF TERMINATION
TTRB BSS 1 TIME OF TERMINATION
TTRC BSS 1 CURRENT *CRF* ID BEING PROCESSED
TTRD DATA C* ERROR ON FILE - XXXX.*
TTRE BSS 1 TEMPORARY
.B ELSE
EQ TTRX RETURN
.B ENDIF
ERP SPACE 4
** ERP$ PROCESS READ/WRITE FILE ERRORS
*
* ENTRY (A0) = RETURN ADDRESS (NEGATIVE IF NO PROCESSING)
* (X2) = FET ADDRESS
* (X7) = CIO FUNCTION CODE (NEGATIVE IF WITH AUTO RECALL)
* (B6) = FWA ADDRESS WORKING BUFFER
* (B7) = NUMBER OF WORDS LEFT TO TRANSFER
*
* USES X - 1, 2, 3, 4, 6, 7
* A - 1, 2, 3, 4, 6, 7
* B - 3
ERP5 SB3 A0
JP B3 *RETURN
ERP$ BSS 0 ENTRY
SA1 X2 GET ERROR CODE
MX6 -4
SB3 A0 CHECK FOR NON JOURNAL FILE ERROR
LX6 10
BX4 -X6*X1
BX6 X6*X1 CLEAR OUT ERROR CODE
PL B3,ERP1 IF PROCESSING SELECTED
SB3 -B3
SX3 X4 ERROR CODE
BX4 X4-X4
SA0 B3 ERROR RETURN ADDRESS
ERP1 SA6 A1
ZR X4,ERP5 IF NO ABNORMAL CONDITIONS
SX3 B6
SA5 A1+1
PL X5,ERP5 IF NOT A TAPE FILE
SX6 B7
SA7 ERPA+1 SAVE X7
LX3 18
SX1 6000B
BX6 X3+X6 SAVE B6 AND B7
BX1 -X1*X4
NZ X1,ERP5 IF OTHER THAN PARITY/END OF REEL ERROR
SA6 ERPA
SA1 X2+B1 FIRST
SA3 A1+B1 SAVE IN AND OUT POINTERS
SX6 X1
SA4 A3+B1
LX3 18
SA6 A3 SET OUT = IN = FIRST
BX7 X3+X4
SA6 A4
SA7 ERPB
SA4 CIO= CIO= RETURN ADDRESS
UNLOAD X2,R UNLOAD AND RETURN TAPE
SA1 ASEQ
BX7 X4
MX6 36
SA7 CIO= RESTORE CIO= RETURN ADDRESS
NZ X1,ERP3 IF TAPE(S) PREASSIGNED
SA1 X2
SX3 100B+1RT
LX3 -6 REASSIGN *TXXJORN* TO *XXJORN*
BX6 X6*X1
LX6 -6
BX6 X6+X3 *TXXJORN*
SA6 A1
RENAME X2,X1 RENAME DISK JOURNAL FILE TO *XXJORN*
ERP2 SA1 ERPB RESTORE IN AND OUT
SX6 X1
LX1 -18
SA6 X2+3 OUT
SX7 X1
SA7 A6-B1 IN
SA4 CIO=
WRITER X2,R EMPTY BUFFER WITH EOR WRITE
BX7 X4
SA7 A4 RESTORE ORIGINAL CIO= EXIT ADDRESS
SA1 ERPA
SB7 X1 RESTORE B6 AND B7
SA3 A1+B1
LX1 -18
SB6 X1
BX7 X3 RESTORE X7
JP CIO=+1 RESTART CIO=
* ASSIGN NEW TAPE TO FILE
ERP3 SX3 X1
NZ X3,ERP4 IF FET ADDRESS IN LOWER FIELD
AX1 18
ERP4 SA3 X1
AX1 18 CLEAR FET ADDRESS
BX7 X1
SA1 X2 *XXJORN* FILE NAME
BX6 X3
SA7 ASEQ
SA6 X2
RENAME X2,X1 RENAME SCATCH TAPE FILE TO JOURNAL FILE
JP ERP2 CONTINUE WRITE ON NEW TAPE
ERPA BSS 2 STORAGE FOR B6/B7 AND X7 ENTRY PARAMETERS
ERPB BSS 1 STORAGE FOR IN AND OUT FET POINTERS
IDS SPACE 4
** IDS - ISSUE TAF STATISTICS TO DAYFILE.
*
IDS PS
SB6 IDSB
SA1 STAT16 CALCULATE AVERAGE NUMBER OF ACTIVE SUBCP
SX3 1000
SA2 A1+B1
IX1 X1*X3
IX7 X1/X2
SA7 A1
SA2 STAT16+1
SA1 STAT17 CALCULATE AVERAGE NUMBER OF *SSC* REQUEST
IX1 X1*X3
IX7 X1/X2
SA7 A1
IDS1 MX0 -12
SB7 IDSA
SA2 B6 POINTER TO QUANITY TO BE CONVERTED
ZR X2,IDS3 END OF TABLE
SB6 B6+B1
SA1 X2 GET QUANITY
IDS2 SA2 A2+B1 MOVE MESSAGE
SB6 B6+B1
BX6 X2
SA6 B7+B1
SB7 B7+B1
BX2 -X0*X2
NZ X2,IDS2 NOT END OF MESSAGE
ZR X1,IDS1 ZERO QUANITY - DONT ISSUE MESSAGE
RJ CFD CONVERT FOR OUTPUT
SA6 IDSA PUT IN MESSAGE
MESSAGE IDSA,,R WRITE TO DAYFILE
EQ IDS1 LOOP
* COMPUTE PER CENT CPU USAGE
IDS3 RTIME RTIME REAL TIME CLOCK
SA2 PTIME TIME AT START OF PROGRAM
SA4 RTIME TIME NOW
MX3 -36
BX5 -X3*X2
BX6 -X3*X4
IX7 X6-X5 MSECS SINCE START OF PROGRAM
TIME RTIME
SA4 RTIME ACCUMULATED CPU TIME
MX2 -12
BX5 -X2*X4 MSECS ACCUMULATED
SA1 CTIME
LX4 60-12
BX3 -X2*X4 SECS ACCUMULATED
SX0 1000
IX2 X0*X3 MULTIPLY BY 1000
IX6 X2+X5 TOTAL MSECS ACCUMULATED
IX6 X6-X1 TIME ACCUMULATED BEFORE PROGRAM
SX1 100000
IX3 X6*X1 MULTIPLY BY 100000
IX1 X3/X7
RJ CFD CONVERT FOR OUTPUT
SA6 IDSC-1
MESSAGE A6,,R PER CENT CPU USAGE
EQ IDS *RETURN
IDSA BSSZ 7 DAYFILE MESSAGE BUFFER
IDSB CON TSEQ
DIS ,* KILO TRANSACTIONS PROCESSED.*
CON STAT5
DIS ,* KILO TRANSACTION ABORTS.*
CON STAT1
DATA C* KILO TASK RELOADS.*
CON STAT2
DATA C* KILO ITASK RELOADS.*
CON STAT6
DATA C* KILO TAF FL INCREASES.*
CON STAT4
DATA C* KILO STORAGE MOVES OF TASKS.*
CON STAT10
DATA C* KILO NO FL FOR TASK LOAD.*
CON STAT11
DATA C* KILO NO SUBCONTROL POINTS.*
CON STAT12
DATA C* KILO NO COMMUNICATION BLOCKS.*
CON STAT14
DATA C* KILO TASK ROLLOUT STARTS.*
CON STAT13
DATA C* KILO TASK ROLLOUT COMPLETES.*
CON STAT15
DATA C* KILO TASK RECALLS.*
CON STAT9
DATA C* KILO TASK RECALLS FOR OUTPUT.*
CON STAT16
DATA C* AVERAGE ACTIVE SUBCONTROL POINTS.*
CON STAT17
DATA C* AVERAGE OUTSTANDING CDCS REQUESTS.*
CON STAT18
DATA C* KILO CDCS REQUEST REJECTS FOR MAXR.*
CON STAT19
DATA C* KILO CDCS REQUEST REJECTS FOR BUSY.*
CON STAT20
DATA C* KILO CDCS REQUESTS FROM TASKS.*
CON 0
IDSC DIS ,* PER CENT CPU USAGE.*
MSGQ SPACE 4
* END/RECOVERY MESSAGES
RMES1 DIS ,*RECOVERY IN PROGRESS.*
RMES2 DIS ,*RECOVERY IMPOSSIBLE.*
RMES3 DIS ,*RECOVERY COMPLETE.*
RMES4 DATA C*"PROD" TERMINATED.*
RMEST1 DIS ,*TOTAL DID NOT RECOVER PROPERLY.*
RMEST2 DIS ,*STATUS IS *
* PARAMETER LIST FOR TOTAL RECOVERY
TQUE VFD 24/0,6/77B,6/0,1/1,5/0,18/FLIST
FLIST VFD 6/4,18/4,12/50B,6/33B,18/TYPE
VFD 6/4,18/4,12/50B,6/33B,18/STATUS
VFD 6/4,18/4,12/50B,6/33B,18/SCHEMA
VFD 6/4,18/4,12/50B,6/33B,18/EOL
CON 0
TYPE VFD 60/5LFINAL
STATUS VFD 60/4L++++
SCHEMA VFD 60/10H**TRANEX**
VFD 60/10H****UPDATE
VFD 60/10HNLEND.
BSSZ 1
EOL VFD 60/4LEND.
BSSZ 1 END IF LIST
STAT VFD 60/4L****
OSTAT VFD 60/4L++++
* COMMUNICATIONS RECOVERY FILE BUFFER.
CRF BSS 0
ZZCRF RFILEB RBUF,RBUFL,FET=14
RBUF BSSZ 411B BUFFER FOR RECOVERY FILE
RBUFL EQU *-RBUF
CTEXT TITLE COMMON DECKS.
*CALL COMCCFD
*CALL COMCCIO
*CALL COMCCPM
*CALL COMCLFM
*CALL COMCOVL
*CALL COMCRDW
*CALL COMCSNM
*CALL COMCSYS
*CALL COMKFIO
ROFL BSS 0 UPPER LIMIT OF RECOVERY OVERLAY
ERRNG ENDR-* *TAF2* OVERFLOWS INTO RESERVED AREA
END