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