Table of Contents

TAF

Table Of Contents

  • [00011] “PROD” - TRANSACTION EXECUTIVE - VER “VERT”.
  • [00013] TRANSACTION FACILITY.
  • [00173] ALLOC - GENERATE A BIT RESERVATION MAP.
  • [00202] BCF - BATCH CONCURRENCY *CRM* FUNCTION TABLE.
  • [00222] CKT - CREATE KEYWORD TABLE.
  • [00244] DSL - DEFINE A DISPLAY LINE.
  • [00263] ENDOVL - TERMINATE OVERLAY.
  • [00285] ENTRY - DEFINE OVERLAY ENTRY POINT.
  • [00303] ERROR - SET AN ERROR CODE AND BRANCH TO ERROR PROCESSOR.
  • [00318] KCMND - DECLARE A *K*-DISPLAY COMMAND FOR INITIALIZATION.
  • [00333] OVLN - GENERATE OVERLAY NAME.
  • [00357] QTWCALL - QUEUE CALL MACRO.
  • [00392] RDSB - READ SUBSYSTEM BLOCK.
  • [00426] SBITS - SPECIFY BITS TO SET IN A WORD.
  • [00462] TRANOVL - DEFINE OVERLAY.
  • [00485] SYSTEM DEFINITIONS.
  • [00519] *TAF* TABLE AND INTERFACE DEFINITIONS.
  • [00553] RTL - REQUESTED TASK LIST.
  • [00587] ATL - ACTIVE TRANSACTION LIST.
  • [00598] TLS - TASK LOAD STACK.
  • [00617] ROLT - ROLLOUT TABLE.
  • [00725] ITTP - INTERNAL TASK TRACE PACKET.
  • [00763] TSB - *TAF* STORAGE BUFFER.
  • [01232] TROU - *DSP* PARAMETER BLOCK FOR THE *ROUTE* REQUEST.
  • [01270] TFUN - *DSP* FAMILY NAME AND USER NAME TABLE.
  • [01493] CCS - CHECK CDCS STATUS.
  • [01558] CSI - CONTROL SUBSYSTEM INTERFACE.
  • [01624] EXIT - PROGRAM STOP.
  • [01634] EXI - REPRIEVE PROCESSOR.
  • [01769] CORE RESIDENT ROUTINES.
  • [01771] RAC - RECOVER FROM ABORT OF *CDCS*.
  • [01833] RSP - RESTORE SUBCONTROL POINT REGISTERS.
  • [01854] SRO - SEARCH ROLLOUT TABLE.
  • [01895] ROLLIN AND ROLLOUT ROUTINES.
  • [01897] TRO - ROLLOUT.
  • [02007] TRI - ROLLIN FIELD LENGTH.
  • [02077] TSSC - TIME SLICE SUBCONTROL POINTS.
  • [02398] SRTN - PROCESS RETURN FROM SUBCP.
  • [03092] RA(S)+1 REQUEST PROCESSORS.
  • [04054] AAM - ADVANCED ACCESS METHODS REQUEST PROCESSOR.
  • [04234] CPM - CONTROL POINT MANAGER.
  • [04286] D00 - DIAGNOSTIC FUNCTION PROCESSOR.
  • [04369] SSC - SYSTEM CONTROL POINT REQUEST.
  • [04727] SSM - SUBSYSTEM MESSAGE.
  • [04765] TOT - ENTER A REQUEST INTO THE TOTAL DATA MANAGER QUEUE.
  • [05133] REQUEST CODE 3 - TERMINAL ARGUMENT OPERATION.
  • [05203] REQUEST CODE 6 - RETURN TERMINAL STATUS.
  • [05759] ITL - INCREASE TIME LIMIT.
  • [05785] IIO - INCREASE I/O LIMIT.
  • [05897] PROCESS BEGIN REQUEST - TRANSFER ZERO-LEVEL COMMUNICATION
  • [05941] TFP - *TSTAT* FUNCTION PROCESSING.
  • [06149] GSD - GET STATUS DATA.
  • [06268] PTK - PROCESS *TSTAT* KEYWORDS.
  • [06431] WFP - *WSTAT* FUNCTION PROCESSOR.
  • [06683] PSD - PUT STATUS DATA.
  • [06820] PWK - PROCESS *WSTAT* KEYWORDS.
  • [06951] ROU - *ROUTE* PROCESSOR.
  • [07198] KDC - PROCESS *DC=XX* (DISPOSITION CODE).
  • [07236] KDE - PROCESS *DEF* (DEFERRED ROUTE).
  • [07261] KDO - PROCESS *DO=XXX* (DESTINATION OUTPUT MAINFRAME).
  • [07305] KEC - PROCESS *EC=XX* (EXTERNAL CHARACTERISTIC).
  • [07346] KFC - PROCESS *FC=XX* (FORMS CODE).
  • [07378] KFM - PROCESS *FM=XXXXXXX* (FAMILY NAME).
  • [07413] KIC - PROCESS *IC=XX* (INTERNAL CHARACTERISTIC).
  • [07451] KID - PROCESS *ID=NN* (LOCAL DEVICE ID).
  • [07501] KJS - PROCESS *JSN=XXX* (UNIQUE JSN).
  • [07548] KOT - PROCESS *OT=XXXX* (ORIGIN TYPE).
  • [07591] KPI - PROCESS *PI=NNNNNNN* (PRINT IMAGE).
  • [07638] KPR - PROCESS *PRI=NNNN* (PRIORITY).
  • [07652] KRE - PROCESS *REP=NN* (REPEAT COUNT).
  • [07694] KSC - PROCESS *SC=XX* (SPACING CODE).
  • [07736] KST - PROCESS *ST=XXX* (DESTINATION MAINFRAME LOGICAL ID).
  • [07782] KSV - PROCESS *SCL=XX* (SERVICE CLASS).
  • [07822] KTD - PROCESS *TID=XX* (TERMINAL ID).
  • [07856] KUJ - PROCESS *UJN=XXXXXXX* (USER JOB NAME).
  • [07883] KUN - PROCESS *UN=XXXXXXX* (USER NAME).
  • [07912] MEM - MEMORY REQUEST.
  • [08274] MSG - PLACE MESSAGE ON LINE ONE OF CONSOLE *B-DISPLAY*.
  • [08354] PMA - PROCESS MESSAGE ADDRESS.
  • [08401] RFL - REQUEST FIELD LENGTH.
  • [08527] TMS - TAF MESSAGE TO DAYFILE.
  • [08571] *REC* SYSTEM REQUEST PROCESSOR.
  • [08573] RFP - RECOVERY FUNCTION PROCESSORS.
  • [08616] RRP - *REC* SYSTEM REQUEST PROCESSOR.
  • [08700] RTI - RECOVER TERMINAL INPUT.
  • [08796] RFB - RECOVERY FUNCTION BEGIN PROCESSOR.
  • [08933] RFC - RECOVERY FUNCTION COMPLETE PROCESSOR.
  • [08993] RFR - RECOVERY FUNCTION RESTART.
  • [09011] CIL - *CALLTRN* INPUT LOGGING.
  • [09165] GET - *RGET* FUNCTION PROCESSING.
  • [09285] PUT - *RPUT* FUNCTION PROCESSING.
  • [09390] RSE - *RSECURE* FUNCTION PROCESSING.
  • [09545] RUN - *RERUN* FUNCTION PROCESSING.
  • [09618] SEC - *SECURE* FUNCTION PROCESSING.
  • [09816] SRE - *RERUN* FUNCTION PROCESSING.
  • [09857] TIN - *TINVOKE* FUNCTION PROCESSING.
  • [09907] RECOVERY SUPPORTING ROUTINES.
  • [09909] CFA - COMPUTE FILE ADDRESS.
  • [09974] CID - CLEAR *NEWID* IDENTIFIER.
  • [10028] CMF - CHECK MESSAGE FIT.
  • [10051] CMU - CHECK MESAGE UNITS.
  • [10081] CRS - CHECK RECOVERY STATUS.
  • [10119] CRU - CHECK RECOVERY UNIT.
  • [10155] CTF - CHECK TASK FIT.
  • [10181] FMH - FORMAT MESSAGE HEADER.
  • [10214] GRP - GET REQUEST PARAMETERS.
  • [10254] IRU - INITIALIZE RECOVERY UNIT.
  • [10279] PSU - PROCESS SYSTEM AND USER *RERUN* FUNCTION.
  • [10625] REM - RESTORE END OF MESSAGE.
  • [10663] SEL - SET END OF LINE.
  • [10714] WTS - WRITE TERMINATION *STEP* TO *CRF*.
  • [10770] STF - SEARCH TERMINAL FILE TABLE.
  • [10808] BATCH CONCURRENCY SUPPORTING ROUTINES.
  • [10810] BAM - ENTER BATCH *CRM* REQUEST IN *AMI* QUEUE.
  • [11586] BJT - BATCH JOB TERMINATION.
  • [11637] PBC - PROCESS BATCH CONCURRENCY REQUEST.
  • [11735] SBC - SEARCH BATCH COMMUNICATION TABLE.
  • [11764] SCC - SET CONSTRAINT CODE.
  • [11785] SFL - SET FUNCTION LIST IN BCT.
  • [11806] PBE - PROCESS ERROR IN *UCP* REQUEST TO *TAF*.
  • [11924] SFR - ISSUE SFCALL REQUEST.
  • [12105] VBA - VALIDATE BATCH ACCESS.
  • [12313] MISCELLANEOUS ROUTINES.
  • [12315] AIQ - AGE INPUT QUEUE PRIORITIES.
  • [12350] ASN - ASSIGN SEQUENCE NUMBER.
  • [12515] CML - COMPUTE MESSAGE LENGTH.
  • [12703] CSM - PROCESS COMMAND/STATUS MESSAGES.
  • [12820] DCPT - DROP CPU FOR TASK.
  • [12899] ECR - PROCESS EXTENDED MEMORY ERROR WHILE LOADING TASK.
  • [12933] ESCP - END SUBCONTROL POINT PROGRAM.
  • [13257] EVS - ACTIVATE A TASK ON AN EVENT.
  • [13340] FCB - FORMAT COMMUNICATION BLOCK.
  • [13462] FFCB - FIND A FREE COMMUNICATION BLOCK.
  • [13523] FRR - FIND A FREE ROLLOUT TABLE ENTRY.
  • [13561] GTS - GET *TAF* STORAGE.
  • [13590] FNC - FIND AND CHAIN COMMUNICATION BLOCKS.
  • [13638] IDL - SET IDLE DOWN FLAGS.
  • [13668] ITA - INCREMENT/DECREMENT TASK ACTIVE COUNT.
  • [13693] JOL - JOURNAL TRANSACTION INPUT.
  • [13730] JSTS - WRITE PERIODIC ENTRIES TO JOURNAL FILE.
  • [13749] LTT - LOCATE A TASK OR TRANSACTION.
  • [13899] MSQ - MAKE A SCHEDULER QUEUE ENTRY TO ROLL IN A TASK.
  • [13940] MVD - MOVE DATA TO TASK.
  • [13993] PBT - PREPARE BATCH TRANSACTION.
  • [14379] PDIF - PLACE ENTRY INTO A FET.
  • [14663] RDCB - TRANSFER TRANSACTION INPUT FROM THE
  • [14872] RFQ - ROUTE FILE TO QUEUE.
  • [14966] RLC - RELEASE EXCESS COMMUNICATION BLOCKS.
  • [15034] RLR - RELEASE A ROLLOUT TABLE ENTRY.
  • [15074] RLS - RELEASE AN ENTRY IN A BIT RESERVATION MAP.
  • [15599] RSV - RESERVE AN ENTRY IN A BIT RESERVATION MAP.
  • [15635] RTK - ROLLIN TASK WAITING FOR INPUT.
  • [15745] RTS - RETURN *TAF* STORAGE.
  • [15820] SLB - SEND LAST MESSAGE BLOCK.
  • [15857] SRL - SCAN ROLLOUT LIST FOR TIMED OUT ENTRIES.
  • [15932] STD - SEARCH TASK/TRANSACTION DIRECTORY.
  • [16065] TRCL - TASK RECALL.
  • [16115] TRN - GENERATE A SYSTEM ORIGIN TRANSACTION.
  • [16224] TXT - TRACE XJP-S OF A TASK.
  • [16337] VTO - VERIFY TASK ORIGIN.
  • [16358] VUP - VALIDATE USER PARAMETERS.
  • [16401] TOTAL INTERFACE ROUTINES.
  • [16403] EOQ - ENTER OUTPUT QUEUE.
  • [16423] FAR - FILE ATTACH ROUTINE.
  • [16571] GRA - GET REFERENCE ADDRESS.
  • [16637] RIQ - READ INPUT QUEUE.
  • [16666] TCM - TAF *CMM* INTERFACE.
  • [16751] RCP - REQUEST FOR SUBCONTROL POINT.
  • [16920] MTD - MOVE TASKS DOWN (TOWARD HIGH MEMORY LOCATION).
  • [16972] MTK - MOVE TASK.
  • [17041] RMF - REQUEST MORE FIELD LENGTH.
  • [17120] SFS - SEARCH FOR FREE SPACE.
  • [17175] QUEUE MANAGEMENT.
  • [17177] ATW - ADVANCE *TAF* WORK.
  • [17310] QTW - QUEUE *TAF* WORK.
  • [17409] CRA - COMPUTE REAL ADDRESS.
  • [17431] JOURNAL FILE PROCESSING.
  • [17766] JSC - JOURNAL FILE STATUS CHECK.
  • [17911] UPDATE K-DISPLAY.
  • [17913] KDIS - UPDATE OPERATOR *K-DISPLAY*.
  • [18178] PNM - PUT NAME IN MESSAGE.
  • [18210] PTD - PROCESS TASK *K-DISPLAY* INPUT.
  • [18422] RKP - RESTORE K-DISPLAY POINTER.
  • [18460] OVERLAY PROCESSING.
  • [18462] LOVL - LOAD AND EXECUTE OVERLAY.
  • [18678] TERP - TASK FATAL ERROR PROCESSOR.
  • [19291] PRE - *TAF* PRESET.
  • [19538] PRESET ROUTINES.
  • [19540] CAS - CHECK FOR ASSIGNED EQUIPMENT.
  • [19575] IJF - INITIALIZE JOURNAL FILES.
  • [19675] LEC - LOAD ECS RESIDENT TASKS INTO EXTENDED MEMORY.
  • [19887] LCT - LOAD CM RESIDENT TASKS.
  • [20021] LIT - LOAD INITIAL TASK.
  • [20109] PBI - POTENTIALLY BLOCKED TASKS DURING INITIALIZATION.
  • [20219] PVV - SET INITIALIZATION DETERMINED VALUES.
  • [20286] DTS - DUMP A TASKS FIELD LENGTH AND ASSOCIATED CONTROL AREAS.
  • [20589] GPW - GET PASSWORD.
  • [20673] ECE - PROCESS EXTENDED MEMORY READ ERROR FROM TASK LIBRARY.
  • [22322] DISA - TASKS THAT CAN BE INVOKED BY *K-COMMAND*.
  • [22529] ULD - UPDATE CORE COPY OF A TASK LIBRARY DIRECTORY.
  • [22966] URD - UPDATE TRANSACTION DIRECTORY.
  • [23129] PBL - POTENTIALLY BLOCKED TASKS DURING LIBRARY UPDATE.
  • [23249] CIN - COMMUNICATION SUBSYSTEM INITIALIZATION.
  • [23728] EDT - ELEMENT DESCRIPTION TABLE.
  • [23784] TCF PROCESSOR.
  • [23786] PTF - PROCESS TAF CONFIGURATION FILE (*TCF*).
  • [23902] DMS - PROCESS *DMS* STATEMENT.
  • [24556] ABJ - ALLOCATE BUFFERS FOR JOURNAL FILES.
  • [24614] LTL - LOAD TASK LIBRARY DIRECTORIES.
  • [24900] LTR - LOAD TRANSACTION DIRECTORIVES.
  • [25198] INITIALIZE DATA MANAGER FILES.
  • [25200] ATT - ATTACH POOL, TRACE, AND JOURNAL FILES.
  • [25275] CER - CHECK ERROR STATUS.
  • [25345] SFD - SET FAMILY TO DEFAULT.
  • [25362] STI - SET TAF INDEX.
  • [25398] UPK - UNPACK AUXILIARY DEVICE INFORMATION FROM *XXJ* FILE.
  • [25439] VUN - VALIDATE USER NAME.
  • [25465] XXJ - INITIALIZE *XXJ* FILES. (XX=DATA BASE)
  • [26308] ACL - ADD CHARACTERS TO A LIST.
  • [26748] *CRM* INTERFACE ROUTINES.
  • [26750] AKY - PROCESS ACTUAL KEY.
  • [26838] CRM - *CRM* INTERFACE ROUTINE.
  • [27252] CTW - CHARACTERS TO WORDS.
  • [27277] IXN - PROCESS IXN PARAMETERS.
  • [27397] RMK - PROCESS *RMKDEF* STATEMENTS.
  • [27444] TOTAL INTERFACE ROUTINES.
  • [27446] IEOQ - INITIALIZATION ENTER OUTPUT QUEUE.
  • [27453] IFAR - INITIALIZATION FILE ATTACH ROUTINE.
  • [27547] IGRA - INITIALIZATION GET REFERENCE ADDRESS.
  • [27565] IRIQ - INITIALIZATION RETURN INPUT QUEUE.
  • [27584] LOADER= - INTERFACE TO LOADU.
  • [27919] CCF - CLOSE *CRM* FILES.
  • [28029] CSC - CHECK SUBCONTROL POINTS.
  • [28189] TTR - TERMINATE COMMUNICATIONS RECOVERY FILES.
  • [28422] IDS - ISSUE TAF STATISTICS TO DAYFILE.

Source Code

TAF.txt
  1. IDENT TAF,TFWA,PRE
  2. ABS
  3. SST CMBL,CPAL,FNTL,PSTP,TSSC,SSJN
  4. SYSCOM B1
  5. *COMMENT TAFNAM - TRANSACTION EXECUTIVE.
  6. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  7.  
  8. LIST X
  9. *CALL COMKTAF
  10. LIST -X
  11. TITLE "PROD" - TRANSACTION EXECUTIVE - VER "VERT".
  12.  
  13. *** TAF - TRANSACTION FACILITY.
  14. *
  15. * J. R. HOGUE. 1971. *TRANEX*.
  16. * F. R. SUTTON. 74/04/26. TASK ROLLOUT FEATURES.
  17. * J. R. HOGUE. 74/04/26.
  18. * L. A. BOELTER. 75/01/26. *TOTAL* DATA MANAGER INTERFACE.
  19. * G. W. PROPP. 75/06/01. TIME/EVENT ROLL ENHANCEMENT.
  20. * G. W. PROPP. 75/10/01. *TAF*.
  21. * J. R. HOGUE. 75/10/01.
  22. * M. M. CHEN. 77/04/01. INTERACTIVE VIRTUAL TERMINAL.
  23. * G. W. PROPP. 78/10/11. *CRM* DATA MANAGER INTERFACE.
  24. * M. M. CHEN. 80/01/01. *CDCS* DATA MANAGER INTERFACE.
  25. * S. M. KEEFER. 80/03/01. POTENTIALLY BLOCKED TASKS.
  26. * G. W. PROPP. 80/05/15. *TAF* AUTOMATIC RECOVERY.
  27. * S. M. KEEFER. 80/06/01. TRANSACTION UNIT PROCESSING.
  28. * D. A. BONDE. 80/06/10. BATCH CONCURRENCY.
  29. SPACE 4,10
  30. *** TAF.
  31. *
  32. * TAF PROVIDES FOR THE ORDERLY CONTROL AND EXECUTION OF
  33. * TASKS WITHIN THE NETWORK OPERATING SYSTEM.
  34. *
  35. * TRANSACTIONS IN TAF ARE PROCESSED BY APPLICATION
  36. * PROGRAMS (TASKS) RUNNING AT SUBCONTROL POINTS,
  37. * CONTAINED WITHIN TAF-S FIELD LENGTH.
  38. * A TRANSACTION IS A STRING (GROUP) OF CHARACTERS RECEIVED
  39. * FROM THE COMMUNICATION EXECUTIVE VIA AN INTER CONTROL POINT
  40. * TRANSFER. THE TRANSACTION DATA IS EXTRACTED FROM A
  41. * RECEIVING BUFFER, AND PLACED IN A MESSAGE BLOCK. THIS BLOCK
  42. * IS THE PHYSICAL REPRESENTATION OF THE TRANSACTION AND
  43. * REMAINS ASSOCIATED WITH THE TRANSACTION THROUGHOUT ITS
  44. * LIFE IN THE SYSTEM. WHEN THE TRANSACTION IS COMPLETED THE
  45. * BLOCK IS FREED FOR USE BY OTHER TRANSACTIONS.
  46. * A TASK IS THE ABSOLUTE BINARY CODE GENERATED FROM AN
  47. * APPLICATION PROGRAM. EACH TASK RUNS WITH ITS OWN EXCHANGE
  48. * PACKAGE, REFERENCE ADDRESS (RELATIVE TO TRANEX), AND
  49. * FIELD LENGTH (A SUBSET OF TRANEX-S FIELD LENGTH). THUS IT
  50. * CAN RESIDE IN ANY CONTIGUOUS SEGMENT WITHIN TRANEX-S FIELD
  51. * LENGTH. TASK CORE IS ALLOCATED IN 100B WORD BLOCKS LOCATED
  52. * ON EVEN 100B WORD BOUNDARIES (EG. 32100 TO 32200). A SUB
  53. * CONTROL POINT CONSISTS OF 1 100B BLOCK OF CORE FOR SYSTEM USE
  54. * FOLLOWED BY SUFFICIENT 100B BLOCKS TO CONTAIN AN ENTIRE TASK.
  55. * TRANEX CAN RUN UP TO 31 SUB CONTROL POINTS SIMULTANEOUSLY
  56. * WITH THE CPU BEING ASSIGNED TO THE SUB CONTROL POINT WITH
  57. * THE HIGHEST CPU PRIORITY. TRANEX REGAINS CONTROL OF THE CPU
  58. * IF THE TASK EXECUTES A CENTRAL EXCHANGE JUMP, IF THE HARDWARE
  59. * DETECTS A CPU MODE ERROR, OR IF THE TASK EXECUTES LONGER
  60. * THAN A TRANEX DEFINED CPU JOB SWITCHING TIME SPAN.
  61. * AS A TASK RUNS, IT MAKES REQUESTS FOR EXTERNAL ACTION
  62. * BY PLACING A REQUEST CONTROL WORD INTO ITS SYSTEM REQUEST
  63. * AND EXECUTING A CENTRAL EXCHANGE JUMP. TRANEX WILL REGAIN
  64. * CONTROL OF THE CPU, EXAMINE THE REQUEST WORD, AND INITIATE
  65. * A SEQUENCE OF CODE TO PROCESS THE REQUEST. THERE ARE FIVE
  66. * GENERAL CATAGORIES OF REQUESTS (1) SCHEDULING, (2) KTS
  67. * DATA MANAGER, (3) TOTAL DATA MANAGER, (4) TRANEX INTERFACE,
  68. * AND (5) SYSTEM TYPE.
  69. * THE MESSAGE BLOCK (COMMUNICATION BLOCK) IS SCHEDULED
  70. * FIRST FOR A SPECIAL CORE RESIDENT TASK (INITIAL TASK) WHICH
  71. * DETERMINES FROM THE TRANSACTION CODES IN THE INPUT DATA THE
  72. * TASK(S) TO BE SCHEDULED TO PROCESS THE TRANSACTION. INITIAL
  73. * TASK THEN MAKES A SCHEDULING REQUEST.
  74. * UPON RECEIPT OF A SCHEDULING REQUEST, TRANEX WILL MAKE
  75. * AN ENTRY INTO ITS REQUESTED TASK LIST FOR THE FIRST TASK
  76. * SPECIFIED BY THE REQUEST. AT SOME LATER TIME, THE TRANEX
  77. * SCHEDULER WILL SELECT THIS TASK, RESERVE CORE FOR IT, AND
  78. * INITIATE LOADING. WHEN THE LOAD IS COMPLETE, THE CPU REQUEST
  79. * BIT IS SET FOR THE SUB CONTROL POINT AT WHICH THE TASK
  80. * RESIDES. SOONER OR LATER THE CPU WILL BE ASSIGNED TO THE
  81. * SUB CONTROL POINT AND THE TASK WILL START EXECUTING.
  82. * ONE OR MORE TASKS MAY BE SCHEDULED SERIALLY TO PROCESS A
  83. * TRANSACTION. THE COMMUNICATION METHOD ALONG A TASK CHAIN IS
  84. * THE COMMUNICATION BLOCK. IT IS MOVED FROM TASK TO TASK AND
  85. * MAY BE USED TO PASS PARAMETERS AND/OR DATA.
  86. *
  87. * TRANEX IS STRUCTURED AROUND TWO CONTROL LOOPS. AN OUTER
  88. * LOOP INITIATES TIME DEPENDENT PROCESSING, WHILE AN INNER LOOP
  89. * CONTROLS THE REQUEST PROCEESING TO SERVICE EXECUTING TASKS.
  90. * THE INNER LOOP EXECUTES UNTIL NO TASK CPU ACTIVITY IS
  91. * REQUESTED OR UNTIL A SPECIFIED TIME SPAN (40 MILLISECONDS)
  92. * HAS ELAPSED SINCE THE OUTER LOOP EXECUTED. THE OUTER LOOP
  93. * CHECKS FOR UNPROCESSED INPUT THEN CHECKS THE ELSPSED TIME
  94. * SINCE EACH TIME DEPENDENT ROUTINE WAS LAST EXECUTED. THESE
  95. * ROUTINES ARE EXECUTED WHEN THEIR TIME SPAN ELAPSES. AT THE
  96. * END OF THE TIME CHECKS THE INNER LOOP IS CALLED.
  97. * TRANEX TIME DEPENDENT PROCESSING INCLUDES - TASK
  98. * SCHEDULING, TASK REACTIVATION AFTER A RESOURCE CONFLICT CAUSED
  99. * TRANEX TO PLACE THE TASK IN RECALL, K-DISPLAY UPDATING AND
  100. * COMMAND PROCESSING, CORE USAGE CHECKS (INCLUDES ROLLOUT IF
  101. * TRANEX IDLE), TASK ACTIVITY CHECKING, AND PERIODIC JOURNALING
  102. * OF TERMINAL TRANSACTION COUNTS.
  103. SPACE 4,10
  104. *** OPERATOR ACTION.
  105. *
  106. * AFTER ASSIGNING A TAPE WITH THE K-DISPLAY THE OPERATOR
  107. * SHOULD WATCH THE CONSOLE FOR TAPE STATUS MESSAGES LIKE
  108. * *MT50 NT RDY* ETC. TRANEX WILL REWIND THE TAPE AND WRITE A
  109. * SMALL LABEL RECORD ON IT IMMEDIATELY AFTER ASSIGNMENT. AT
  110. * THIS POINT A NOT READY TAPE OR A TAPE WITH NO WRITE ENABLE
  111. * CAN HANG TRANEX WAITING FOR OPERATOR ACTION.
  112. * THE OPERATOR SHOULD REMEDY THE PROBLEM AS FAST AS POSSIBLE.
  113. SPACE 4,10
  114. *** EXTERNAL DECISION KEYS.
  115. *
  116. * SENSE SWITCH 4 - IF SET, THE TRANSACTION EXECUTIVE WILL
  117. * AUTOMATICALLY RESTART AFTER A RECOVERY.
  118. *
  119. * SENSE SWITCH 5 - IF SET, THE TRANSACTION EXECUTIVE WILL
  120. * CALL *DMP* TO ISSUE A FIELD LENGTH DUMP.
  121. SPACE 4,10
  122. *** MODIFY OPTIONS.
  123. *
  124. * *DEFINE DEBUG - CAUSES TAF TO ASSEMBLE IN DEBUG MODE.
  125. * ALL NETWORK MESSAGES WILL BE LOGGED ON THE TRACE FILE,
  126. * ZZZZZDN. THE TRACE OPTION CAN BE TURNED ON/OFF AT
  127. * RUN TIME BY OPERATOR K-DISPLAY COMMANDS -
  128. * *K.DEBUG.*/*K.NODEBUG.*.
  129. SPACE 4,10
  130. ** REGISTER CONVENTIONS (CAREFUL USAGE ADVISED).
  131. *
  132. * (B2) = START OF SYSTEM AREA FOR TASK CURRENTLY SELECTED FOR
  133. * CPU ASSIGNMENT.
  134. * (B7) = START OF SUBCONTROL POINT AREA FOR TASK CURRENTLY
  135. * SELECTED FOR CPU ASSIGNMENT.
  136. SPACE 4,10
  137. ** DOCUMENTATION CONVENTIONS.
  138. *
  139. * 1. IF NO REGISTER USES SPECIFIED, NO REGISTERS ARE SAVED
  140. * 2. IF NO ENTRY/EXIT CONDITIONS SPECIFIED, NONE EXIST
  141. * 3. THE FOLLOWING ABBREVIATIONS ARE USED -
  142. *
  143. * AAM ADVANCED ACCESS METHOD OF *CYBER* RECORD MANAGER.
  144. * AIP APPLICATION INTERFACE PROGRAM FOR NETWORKS.
  145. * ATL ACTIVE TRANSACTION LIST.
  146. * BCT BATCH COMMUNICATION TABLE.
  147. * C.B. COMMUNICATION BLOCK.
  148. * CMM CYBER MEMORY MANAGER.
  149. * D.M. DATA MANAGER.
  150. * EDT ELEMENT DESCRIPTION TABLE.
  151. * NAM NETWORK ACCESS METHOD.
  152. * RA(S) RA OF THE SUBCONTROL POINT.
  153. * ROLT ROLLOUT TABLE.
  154. * RTL REQUEST TASK LIST.
  155. * SUBCP SUBCONTROL POINT.
  156. * TIF *TAF* INITIALIZATION FILE.
  157. * TLD TASK LIBRARY DIRECTORY.
  158. * TRD TRANSACTION DIRECTORY.
  159. * CRF COMMUNICATIONS RECOVERY FILE.
  160. * TST TERMINAL STATUS TABLE.
  161. SPACE 4,10
  162. *IF DEF,DEBUG
  163. TFWA EQU 7000B FWA OF TAF EXECUTIVE
  164. DBUG EQU 0 DEBUG IS ON FOR *AIP*
  165. *ELSE
  166. TFWA EQU 2300B FWA OF TAF EXECUTIVE
  167. DBUG EQU 1 DEBUG IS OFF FOR *AIP*
  168. *ENDIF
  169. SPACE 4,10
  170. ORG TFWA *TAF* FWA
  171. MACROS TITLE MACROS.
  172. ALLOC SPACE 4,10
  173. ** ALLOC - GENERATE A BIT RESERVATION MAP.
  174. *
  175. * THE LOWER 47 BITS OF EACH WORD ARE SET TO INDICATE *NOT
  176. * RESERVED*. THE LAST WORD OF THE TABLE IS DENOTED BY
  177. * CLEARING BIT ZERO OF THAT WORD.
  178. *
  179. * ALLOC NUMBER,BIT
  180. *
  181. * NUMBER - NUMBER OF ENTRIES FOR ALLOCATION MAP.
  182. * BIT - NUMBER OF BITS/WORD TO USE.
  183.  
  184.  
  185. PURGMAC ALLOC
  186.  
  187. ALLOC MACRO NUMBER,BIT
  188. LOCAL AA,BB,CC
  189. MACREF ALLOC
  190. ERRPL BIT-48 NO MORE THAN 47 BITS/WORD
  191. AA SET NUMBER-1
  192. CC SET 47-BIT
  193. BB DUP AA/BIT
  194. VFD 12/2222B,BIT/-0,CC/0,1/1
  195. AA SET AA-BIT
  196. BB ENDD
  197. AA SET AA+1
  198. CC SET 48-AA
  199. VFD 12/2222B,AA/-0,CC/0
  200. ENDM
  201. BCF SPACE 4,15
  202. ** BCF - BATCH CONCURRENCY *CRM* FUNCTION TABLE.
  203. *
  204. * DEFINE A FUNCTION TABLE ENTRY WITH INFORMATION
  205. * ON EACH BATCH/CRM REQUEST CODE.
  206. *
  207. * BCF TSW,KA,KN,WS,FL
  208. *
  209. * TSW INDEX TO *TAF* STATUS WORD.
  210. * KA INDEX TO KEYAREA WORD.
  211. * KN INDEX TO KEYNAME WORD.
  212. * WS INDEX TO WORKING STORAGE AREA WORD.
  213. * FL FUNCTION LIST.
  214.  
  215.  
  216. PURGMAC BCF
  217.  
  218. BCF MACRO TSW,KA,KN,WS,FL
  219. VFD 3/TSW,6/KA,6/KN,6/WS,9/FL
  220. ENDM
  221. CKT SPACE 4,10
  222. ** CKT - CREATE KEYWORD TABLE.
  223. *
  224. * CKT KEYWORD,ROUTINE
  225. *
  226. * ENTRY *KEYWORD* = KEYWORD FOR REQUEST.
  227. * = *END* IF LAST KEYWORD.
  228. * *ROUTINE* = FWA OF ROUTINE TO PROCESS *KEYWORD*.
  229. *
  230. * EXIT KEYWORD PROCESSING TABLE IS CREATED.
  231.  
  232.  
  233. PURGMAC CKT
  234.  
  235. CKT MACRO KEYWORD,ROUTINE
  236. MACREF CKT
  237. .A IFC NE,*KEYWORD*END*
  238. VFD 42/0H_KEYWORD_,18/ROUTINE
  239. .A ELSE
  240. CON 0
  241. .A ENDIF
  242. ENDM
  243. DSL SPACE 4,10
  244. ** DSL - DEFINE A DISPLAY LINE.
  245. *
  246. * DSL X,Y,A
  247. *
  248. * WHERE X = X COORDINATE.
  249. * Y = Y COORDINATE.
  250. * A = CONSTANT TO BE DISPLAYED.
  251.  
  252.  
  253. PURGMAC DSL
  254.  
  255. DSL MACRO X,Y,A
  256. MACREF DSL
  257. B MICRO 1,6,$A$
  258. C MICRO 7,,$A$
  259. VFD 12/6000B+X*10,12/7756B-Y*10,36/6H"B"
  260. DATA H$"C"$
  261. ENDM
  262. ENDOVL SPACE 4,10
  263. ** ENDOVL - TERMINATE OVERLAY.
  264. *
  265. * ENDOVL
  266.  
  267.  
  268. PURGMAC ENDOVL
  269.  
  270. ENDOVL MACRO
  271. LOCAL A,AL
  272. MACREF ENDOVL
  273. QUAL
  274. L.D MAX L.,L.D
  275. A BSS 0
  276. QUAL "PROD""M."
  277. TINST HERE
  278. QUAL
  279. AL BSS 0
  280. OREL RMT
  281. VFD 24/0,18/AL-A,18/A
  282. OREL RMT
  283. ENDM
  284. ENTRY SPACE 4,10
  285. ** ENTRY - DEFINE OVERLAY ENTRY POINT.
  286. *
  287. * ENTRY NAME,K
  288. *
  289. * ENTRY NAME = NAME OF ENTRY POINT.
  290. * K IF PRESENT, DEFINES ENTRY POINT NAME AS A
  291. * K-DISPLAY COMMAND.
  292. *
  293. * CALLS ENTRY1 TO PASS CURRENT OVERLAY SUFFIX CHARACTER.
  294.  
  295.  
  296. PURGMAC ENTRY
  297.  
  298. ENTRY MACRO NAME,K
  299. MACREF ENTRY
  300. ENTRY1 NAME,K,"M."
  301. ENDM
  302. ERROR SPACE 4,10
  303. ** ERROR - SET AN ERROR CODE AND BRANCH TO ERROR PROCESSOR.
  304. *
  305. * ERROR N
  306. *
  307. * N = ERROR CODE.
  308.  
  309.  
  310. PURGMAC ERROR
  311.  
  312. ERROR MACRO N
  313. MACREF ERROR
  314. SX1 N
  315. EQ TERP BRANCH TO ERROR PROCESSOR
  316. ENDM
  317. KCMND SPACE 4,10
  318. ** KCMND - DECLARE A *K*-DISPLAY COMMAND FOR INITIALIZATION.
  319. *
  320. * KCMND COM,PRC
  321. *
  322. * COM 3 - CHARACTER LONG COMMAND.
  323. * PRC ADDRESS OF COMMAND PROCESSOR.
  324.  
  325.  
  326. PURGMAC KCMND
  327.  
  328. KCMND MACRO COM,PRC
  329. MACREF KCMND
  330. VFD 18/PRC,24/0,18/0L_COM
  331. ENDM
  332. OVLN SPACE 4,10
  333. ** OVLN - GENERATE OVERLAY NAME.
  334. *
  335. * OVLN
  336. *
  337. * EXIT (N.) = LAST CHARACTER OF OVERLAY NAME.
  338.  
  339.  
  340. PURGMAC OVLN
  341.  
  342. OVLN MACRO
  343. MACREF OVLN
  344. P. MICRO N.+1,1, ABCDEFGHIJKLMNOPQ
  345. M. MICRO 1,1, "P."
  346. N. SET N.+1
  347. ENDM
  348. SYMBOLS SPACE 4,10
  349. ** OVERLAY GENERATION SYMBOLS.
  350.  
  351.  
  352. NOREF N.,M.,L.,L.D
  353. N. SET 0 OVERLAY COUNTER
  354. L. SET 0 OVERLAY LENGTH
  355. L.D SET 0 MAXIMUM OVERLAY LENGTH
  356. QTWCALL SPACE 4,10
  357. ** QTWCALL - QUEUE CALL MACRO.
  358. *
  359. * QTWCALL EVBIT,TYPE,POS
  360. *
  361. * ENTRY *EVBIT* = EVENT COMPLETE BIT.
  362. * *TYPE* = EVENT TYPE.
  363. * *POS* = IF *FIRST*, PUT EVENT AT BEGINNING OF QUEUE.
  364. * OTHERWISE PUT EVENT AT END OF QUEUE.
  365. *
  366. * EXIT TO *TSSC*.
  367. *
  368. * USES X - 2, 4, 6.
  369. * B - 4.
  370. *
  371. * CALLS QTW.
  372.  
  373.  
  374. PURGMAC QTWCALL
  375.  
  376. QTWCALL MACRO EVBIT,TYPE,POS
  377. LOCAL B
  378. MACREF QTWCALL
  379. .A IFC EQ,*POS*FIRST*
  380. SB4 B1
  381. .A ELSE
  382. SB4 B0
  383. .A ENDIF
  384. SX2 59-EVBIT
  385. SX4 TYPE
  386. SX6 B
  387. RJ QTW QUEUE *TAF* WORK
  388. EQ TSSC TIME SLICE SUBCP
  389. B BSS 0
  390. QTWCALL ENDM
  391. RDSB SPACE 4,10
  392. ** RDSB - READ SUBSYSTEM BLOCK.
  393. *
  394. * RDSB QUEUE,WC,FROM,TO,STAT
  395. *
  396. * QUEUE = QUEUE PRIORITY OF DESIRED SUBSYSTEM
  397. * WC = WORD COUNT TO READ
  398. * FROM = ADDRESS IN SUB-SYSTEM TO READ
  399. * TO = ADDRESS IN PROGRAM TO READ TO
  400. * STAT = ADDRESS TO PLACE STATUS OF READ
  401.  
  402.  
  403. PURGMAC RDSB
  404.  
  405. RDSB MACRO Q,W,F,T,S
  406. MACREF RDSB
  407. R= X5,W
  408. R= X6,T
  409. LX5 36
  410. R= X7,F
  411. BX6 X6+X5
  412. LX7 18
  413. SX2 Q
  414. BX7 X7+X6
  415. LX2 18
  416. SX6 S
  417. SA7 X6
  418. BX6 X6+X2
  419. SX7 3RRSB
  420. PX7 X7
  421. LX7 42
  422. BX6 X6+X7
  423. RJ =XSYS=
  424. ENDM
  425. SBITS SPACE 4,10
  426. ** SBITS - SPECIFY BITS TO SET IN A WORD.
  427. *
  428. * SBITS (A,B,C,...N)
  429. * BITS A, B, ..., N ARE SET SUCH THAT A LEFT SHIFT EQUAL TO
  430. * THEIR VALUE RESULTS IN A NEGATIVE *X* REGISTER.
  431. *
  432.  
  433.  
  434. PURGMAC SBITS
  435.  
  436. SBITS MACRO A
  437. MACREF SBITS
  438. IRP A
  439. POS 60-A
  440. VFD 1/1
  441. IRP
  442. POS 0
  443. BSS 0
  444. ENDM
  445.  
  446. ENTRY1 MACRO NAME,K,OV
  447. MACREF ENTRY1
  448. DISPLAY RMT
  449. VFD 42/0L_NAME
  450. IFC EQ,*K**
  451. VFD 6/1R_OV
  452. ELSE 1
  453. VFD 6/40B+1R_OV
  454. VFD 12/NAME-TROVL
  455. DISPLAY RMT
  456. ENDIF
  457. QUAL
  458. _NAME EQU /"PROD""M."/_NAME
  459. QUAL "PROD""M."
  460. ENDM
  461. TRANOVL SPACE 4,10
  462. ** TRANOVL - DEFINE OVERLAY.
  463. *
  464. * TRANOVL (SUBTITLE)
  465. *
  466. * ENTRY (SUBTITLE) = TEXT OF SUBTITLE.
  467. * EXIT (M.) = 1 CHARACTER MICRO FOR OVERLAY NAME.
  468. * (L.D) = MAXIMUM DISPLAY OVERLAY LENGTH.
  469.  
  470.  
  471. PURGMAC TRANOVL
  472.  
  473. MACRO TRANOVL,A,SUBTITLE
  474. MACREF TRANOVL
  475. OVLN
  476. TTL "PROD""M." - SUBTITLE
  477. TITLE
  478. L. SET *
  479. IDENT "PROD""M.",TROVL,TROVL,1,0 SUBTITLE
  480. *COMMENT "PROD" - SUBTITLE
  481. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  482. QUAL "PROD""M."
  483. ORG TROVL
  484. ENDM
  485. TITLE SYSTEM DEFINITIONS.
  486. SPACE 4,10
  487. ** SYSTEM COMMON DECKS.
  488. *CALL COMCMAC
  489. *CALL COMSNCD
  490. EQUATES TITLE EQUATES.
  491. *CALL COMSPFM
  492. *CALL COMSPRD
  493. *CALL COMSIOQ
  494. *CALL COMSDSP
  495. *CALL COMSJIO
  496. *CALL COMSMSC
  497. QUAL COMSMTX
  498. *CALL COMSMTX
  499. QUAL BIO
  500. *CALL COMSBIO
  501. QUAL *
  502. QUAL COMSSCP
  503. *CALL COMSSCP
  504. QUAL
  505. *CALL COMSSSJ
  506. *CALL COMSSSD
  507. LIST X
  508. *CALL COMSTRX
  509. LIST -X
  510. ORG TFWA SET TAF FWA
  511. MACROS TITLE MACROS.
  512. *CALL COMCCMD
  513. *CALL COMCDCM
  514. *CALL COMCDCP
  515. *CALL COMCECM
  516. LIST X
  517. *CALL COMKFLD
  518. *CALL COMKIPR
  519. TITLE *TAF* TABLE AND INTERFACE DEFINITIONS.
  520. SPACE 4,10
  521. ** *TAF* COMMON DECKS.
  522.  
  523. * SOME OF THE FOLLOWING COMMON DECKS USE *BSS* TO ASSIGN
  524. * LOCATIONS TO SYMBOLS. *TAF* DOES NOT WANT TO ALLOCATE
  525. * STORAGE FOR THESE SYMBOLS SO THE CURRENT ORIGIN COUNTER
  526. * IS SAVED BY *BEGN* AND RESTORED AFTER THE COMMON DECKS
  527. * ARE PROCESSED.
  528.  
  529. *CALL COMKBRD
  530.  
  531. BEGINT BSS 0 DO NOT RESERVE SPACE
  532. *CALL COMKCBD
  533. LIST -X
  534. QUAL COMKCRM
  535. *CALL COMKCRM
  536. QUAL *
  537. LIST X
  538. *CALL COMKKIM
  539. *CALL COMKNWF
  540. *CALL COMKOPD
  541. *CALL COMKRRD
  542. *CALL COMKSCD
  543. *CALL COMKSTC
  544. *CALL COMKTDM
  545. *CALL COMKTLD
  546. *CALL COMKTRF
  547. *CALL COMKTSA
  548. *CALL COMKTSC
  549. *CALL COMKTST
  550. LIST -X
  551. ORG BEGINT RESET COUNTER
  552. RTL SPACE 4,25
  553. ** RTL - REQUESTED TASK LIST.
  554. *
  555. *T W1 12/ NAME,18/ FL,6/ CP,6/ MP,18/ L
  556. *T, W2 18/ CR,18/ 1S,18/ ,1/S,1/D,1/C,1/E,2/
  557. *T, W2 18/ CR,18/ 1S,6/ ,18/ RE
  558. *
  559. * WORD 1.
  560. * NAME - TASK DIRECTORY INDEX.
  561. * FL - FIELD LENGTH.
  562. * CP - CURRENT PRIORTY.
  563. * MP - MAXIMUM PRIORTY (FUTURE USE).
  564. * L - QUEUE LENGTH LIMIT.
  565. *
  566. * WORD 2 (IF NOT FOR TASK ROLLIN REQUEST).
  567. * CR - CURRENT *ATL* ENTRY.
  568. * 1S - FIRST *ATL* ENTRY.
  569. * S - SYSTEM TASK.
  570. * D - NON DESTRUCTIVE CODE.
  571. * C - CM RESIDENT.
  572. * E - EXTENDED MEMORY RESIDENT.
  573. *
  574. * WORD 2 (IF FOR A TASK ROLLIN REQUEST).
  575. * CR - CURRENT *ATL* ENTRY.
  576. * 1S - FIRST *ATL* ENTRY.
  577. * RE - ROLLOUT TABLE ENTRY ADDRESS OF TASK TO ROLL IN.
  578.  
  579.  
  580. RTLLE EQU 2 LENGTH OF A *RTL* ENTRY
  581. NRTL EQU 40 NUMBER OF *RTL* ENTRIES (MUST BE .LE. 47).
  582.  
  583. RTLW ALLOC NRTL,47 RESERVATION WORD FOR *RTL*
  584. RTL BSSZ NRTL*RTLLE *RTL* ENTRIES
  585. RTLL EQU *-RTL LENGTH OF *RTL*
  586. ATL SPACE 4,10
  587. ** ATL - ACTIVE TRANSACTION LIST.
  588. *
  589. *T 12/ NT,12/ PT,6/ ,30/ CBA
  590. *
  591. * NT - NEXT TASK IN QUEUE CHAIN (BIASED BY +1).
  592. * PT - PREVIOUS TASK IN QUEUE CHAIN (BIASED BY +1).
  593. * CBA - ADDRESS OF COMMUNICATIONS BLOCK.
  594.  
  595.  
  596. ATLL EQU 1 WORDS PER *ATL* ENTRY
  597. TLS SPACE 4,15
  598. ** TLS - TASK LOAD STACK.
  599. *
  600. *T W1 1/R,5/ ,18/ USN,18/ TFL,18/ SCP
  601. *T, W2 30/ TLN ,30/ RDA
  602. *
  603. * WORD 1.
  604. * R - 1, IF TASK ROLLIN.
  605. * USN - ADDRESS (-2) OF USER NAME FOR TASK LIBRARY.
  606. * TFL - TASK FIELD LENGTH.
  607. * SCP - FWA OF SUBCP TABLE ENTRY.
  608. *
  609. * WORD 2.
  610. * TLN - ADDRESS OF TASK LIBRARY NAME.
  611. * RDA - RANDOM DISK ADDRESS OF TASK.
  612.  
  613.  
  614. CCC BSSZ 5*2+1 FIVE ENTRIES + ZERO WORD TERMINATOR
  615. LTLRE EQU *-3 FWA OF LAST TASK LOAD REQUEST STACK ENTRY
  616. ROLT SPACE 4,35
  617. ** ROLT - ROLLOUT TABLE.
  618. *
  619. *T W1 1/C,1/W,1/T,1/D,1/R,1/L,36/ ID,18/ FET
  620. *T, W2 18/ FL,6/ CP,6/ MP,30/ RDA
  621. *T, W3 12/IDT,1/C,1/A,4/0,6/SCP,36/ ED
  622. *
  623. * WORD 1.
  624. * C - 1, IF ROLLOUT COMPLETE.
  625. * W - 1, IF WAIT FOR TERMINAL INPUT.
  626. * T - 1, IF TIMED ROLLOUT.
  627. * D - 1, IF DATA MANAGER REQUESTED ROLLOUT.
  628. * R - 1, IF DO NOT RELOAD COMMUNICATION BLOCK.
  629. * L - 1, IF RESTART TASK AT RECALL ENTRY POINT.
  630. * ID - EVENT DESCRIPTOR.
  631. * 24/C.B. ADDRESS,12/0 FOR CALLRTN ROLL.
  632. * 24/TIME,12/TST ORDINAL FOR WAITINP ROLL.
  633. * 18/0,18/ROLLIN FL FOR MEMORY REQUEST ROLL.
  634. * 24/TIME,12/C.B. INDEX FOR WAIT ROLL.
  635. * FET - FET ADDRESS OF ROLLOUT FILE.
  636. *
  637. * WORD 2.
  638. * RDA - DISK ADDRESS OF ROLLOUT FILE.
  639. * FL - FIELD LENGTH REQUIRED FOR ROLLIN.
  640. * CP - CURRENT PRIORITY.
  641. * MP - MAXIMUM PRIORITY (FUTURE USE).
  642. *
  643. * WORD 3.
  644. * IDT - IDENTIFICATION OF TYPE OF EVENT.
  645. * C - *CDCS* CONNECTED FLAG.
  646. * A - ABORT TASK FLAG. (*CDCS* DOWN)
  647. * SCP - SUBCONTROL POINT NUMBER.
  648. * ED - EVENT DESCRIPTOR.
  649. * 18/0,18/FWA OF REQUEST FOR D.M. ROLL.
  650. * 18/ACN,18/ABN FOR SEND IN *TAFNAM*.
  651. * 12/0,24/SEQ FOR WAIT INPUT.
  652. * 18/0,18/FL FOR MEMORY REQUEST.
  653.  
  654.  
  655. TROLE EQU 3 LENGTH OF A ROLLOUT TABLE ENTRY
  656. NROL EQU 50 NUMBER OF ROLLOUT TABLE ENTRIES
  657.  
  658. TROM ALLOC NROL,47 ROLLOUT TABLE ALLOCATION MAP
  659.  
  660. TROL BSSZ TROLE*NROL ROLLOUT TABLE
  661.  
  662. * SHIFT COUNTS FOR *ROLT* FIELDS.
  663.  
  664. RTBWI EQU 58 WAIT FOR TERMINAL INPUT
  665. RTBTR EQU 57 TIMED ROLLOUT
  666. RTBDM EQU 56 DATA MANAGER ROLLOUT
  667. RTBID EQU 53 ROLLOUT ID
  668. RTBCB EQU 35 ROLLOUT CONTROL BLOCK INDEX
  669. RTBCP EQU 23 SUBCP
  670.  
  671. RTTL FIELD 0,53,30 ROLLOUT TIME IN SECONDS
  672. RTCD FIELD 2,47,47 *CDCS* CONNECTED FLAG
  673. RTAB FIELD 2,46,46 ABORT TASK FLAG
  674. RTTS FIELD 2,23,0 SEQUENCE NUMBER FOR *WAITINP*
  675.  
  676. * WORD DEFINITIONS FOR *ROLT*.
  677.  
  678. RTWEV EQU 2 ROLT EVENT WORD
  679.  
  680. * *ROLT* ID TYPES.
  681.  
  682. EVDM EQU 1 DATA MANAGER LOCKED RECORD EVENT
  683. EVTO EQU 2 TERMINAL OUTPUT THRESHOLD ROLLOUT
  684. EVCR EQU 3 CALL TASK WITH RETURN ROLLOUT
  685. EVWD EQU 4 WAITING TO USE THE DATA MANAGER
  686. EVWI EQU 5 WAIT FOR TERMINAL INPUT
  687. EVRL EQU 6 REQUEST FIELD LENGTH
  688.  
  689. * BCFT - BATCH CONCURRENCY *CRM* FUNCTION TABLE.
  690.  
  691. BCFT BCF TSDF,NOKA,NOKN,NOWS,FLDF CLOSE
  692. BCF TSDF,NOKA,KNDE,NOWS,FLDF DELETE
  693. BCF TSDF,NOKA,KNLC,NOWS,FLDF LOCK
  694. BCF TSDF,NOKA,NOKN,NOWS,FLDF FLOCK
  695. BCF TSDF,NOKA,NOKN,NOWS,FLDF OPEN
  696. BCF TSDF,KARD,KNRD,WSRD,FLRD READ
  697. BCF TSDF,KARL,KNRL,WSRL,FLRD READL
  698. BCF TSDF,KARM,KNRM,WSRM,FLRD READM
  699. BCF TSDF,KARN,NOKN,WSRN,FLRD READN
  700. BCF TSDF,KARO,NOKN,WSRO,FLRD READNL
  701. BCF TSDF,NOKA,NOKN,NOWS,FLDF REWIND
  702. BCF TSDF,NOKA,KNRW,WSRW,FLWR REWRITE
  703. BCF TSDF,NOKA,NOKN,NOWS,FLDF SKIPBL
  704. BCF TSDF,NOKA,NOKN,NOWS,FLDF SKIPFL
  705. BCF TSDF,NOKA,KNUC,NOWS,FLDF UNLOCK
  706. BCF TSDF,NOKA,NOKN,NOWS,FLDF UNFLOCK
  707. BCF TSDF,KAWR,KNWR,WSWR,FLWR WRITE
  708. BCF TSDF,NOKA,KNST,NOWS,FLDF START
  709. BCF TSDF,NOKA,NOKN,NOWS,FLDF DBEGIN
  710. BCF TSCF,NOKA,NOKN,NOWS,FLDC DBCOMIT
  711. BCF TSCF,NOKA,NOKN,NOWS,FLDC DBFREE
  712. BCF TSDF,NOKA,NOKN,NOWS,FLDF DBSTAT
  713.  
  714. * FIELDS FOR BATCH *CRM* FUNCTION TABLE.
  715.  
  716. BFUE FIELD 0,59,30 UPPER TABLE ENTRY
  717. BFFL FIELD 0,08,00 FUNCTION LIST
  718. BFWS FIELD 0,14,09 WORKING STORAGE AREA INDEX
  719. BFKN FIELD 0,20,15 KEYNAME AREA INDEX
  720. BFKA FIELD 0,26,21 KEYAREA INDEX
  721. BFTS FIELD 0,29,27 *TAF* STATUS WORD INDEX
  722.  
  723. BCTF BSSZ 1 BATCH CONTINUATION FLAG
  724. ITTP SPACE 4,25
  725. ** ITTP - INTERNAL TASK TRACE PACKET.
  726. *
  727. *T W1 12/ TEF,12/ TID,18/ (B2),18/ (B7)
  728. *T,W2 60/ SYSTEM REQUEST
  729. *T,W3 60/ CB1W
  730. *T,W4 60/ SCPW
  731. *
  732. * WORD 1.
  733. * TEF - 2000B+ERROR FLAG RETURNED FROM SUBCP ACTIVATION.
  734. * TID - TASK TRACE PACKET IDENTIFIER (SET TO ZERO).
  735. * (B2) - START OF SYSTEM AREA PRECEDING THE RA OF THE TASK.
  736. * (B7) - ADDRESS OF SUBCP TABLE.
  737. *
  738. * WORD 2.
  739. * RA+1 - CONTENTS OF SYSTEM REQUEST IN THE TASK FL.
  740. *
  741. * WORD 3.
  742. * CB1W - FIRST WORD OF C.B. KEPT IN THE SYSTEM AREA
  743. * PRECEDING THE RA OF THE TASK.
  744. *
  745. * WORD 4.
  746. * SCPW - THIRD WORD OF SUBCP TABLE.
  747. * (SEE DEFINITION IN *COMKSCD*.)
  748.  
  749.  
  750. ITTPL EQU 4 LENGTH OF AN INTERNAL TASK TRACE PACKET
  751. ERRNG ITTPL-4 TRACE PACKET SIZE REDEFINED TO LESS THAN 4
  752.  
  753. * FIELDS FOR TRANSACTION INPUT.
  754.  
  755. INST FIELD 0,59,59 STATUS, 0 = DATA, 1 = STATUS
  756. INCT FIELD 0,58,58 1 IF MORE DATA BLOCKS OF INPUT
  757. INBT FIELD 0,56,56 BATCH TRANSACTION
  758. INSO FIELD 0,48,48 SYSTEM ORIGIN TRANSACTION
  759. INAT FIELD 0,47,45 APPLICATION CHARACTER TYPE
  760. INTO FIELD 0,35,18 TERMINAL ORDINAL
  761. INLC FIELD 0,17,0 MESSAGE LENGTH IN WORDS
  762. TSB SPACE 4,10
  763. ** TSB - *TAF* STORAGE BUFFER.
  764. *
  765. * USED BY PROCESSES THAT REQUIRE A BLOCK OF TEMPORARY STORAGE.
  766. * ACCESSED BY ROUTINES *GTS* AND *RTS*.
  767.  
  768.  
  769. TSBLE EQU 4 LENGTH OF *TAF* STORAGE BUFFER ENTRY
  770. NTSB EQU 50 NUMBER OF *TAF* STORAGE BUFFER ENTRIES
  771.  
  772. TSBM ALLOC NTSB,47 *TAF* STORAGE BUFFER RESERVATION MAP
  773.  
  774. TSB BSS TSBLE*NTSB *TAF* STORAGE BUFFER
  775. SPACE 4,10
  776. INFC FIELD 1,17,0 *ITASK* FUNCTION CODE
  777.  
  778.  
  779. * FIELDS FOR TAF-CDCS REQUEST BLOCK.
  780.  
  781. CDHD FIELD 0,59,14 HEADING
  782. CDRT FIELD 0,13,12 RETURN CONTROL
  783. CDES FIELD 0,11,1 ERROR AND STATUS
  784. CDRC FIELD 0,11,6 REASON CODE
  785. CDSF FIELD 0,5,1 STATUS FLAG
  786. CDCB FIELD 0,0,0 COMPLETION FLAG
  787. CDBF FIELD 1,59,42 ERROR BUFFER ADDRESS
  788. CDFC FIELD 1,5,0 FUNCTION CODE
  789. CDRA FIELD 2,59,42 RA OF TASK
  790. CDFL FIELD 2,41,24 FIELD LENGTH OF TASK
  791. CDTS FIELD 2,23,0 TRANSACTION SEQUENCE NUMBER
  792.  
  793. * *TAF* QUEUE WORK ENTRY FIELD DEFINITIONS.
  794.  
  795. QWNS FIELD 0,59,54 SUBCP OF NEXT ENTRY IN QUEUE
  796. QWNA FIELD 0,53,36 FWA OF NEXT ENTRY RELATIVE TO NEXT SUBCP
  797. QWNT FIELD 0,59,36 NEXT QUEUE ENTRY
  798. QWTY FIELD 0,35,30 QUEUE TYPE
  799. QWSP FIELD 0,29,24 SUBCP THAT NEEDS RESOURCE
  800. QWSH FIELD 0,23,18 SHIFT TO POSITION COMPLETE BIT TO BIT 59
  801. QWEV FIELD 0,17,0 FWA OF RESOURCE EVENT
  802. QWTM FIELD 1,53,18 MILLISECONDS FOR EVENT TO COMPLETE
  803. QWPR FIELD 1,17,0 QUEUE COMPLETE PROCESSOR
  804.  
  805. * *TAF* AUTOMATIC RECOVERY QUEUE ENTRY DEFINITIONS.
  806.  
  807. QRQ1 FIELD 0,59,0 *TAF* QUEUE WORD 1
  808. QRQ2 FIELD 1,59,0 *TAF* QUEUE WORD 2
  809. QRTC FIELD 2,59,59 RECOVERY PROCESSING COMPLETE
  810. QRST FIELD 2,58,58 RECOVERY STARTED COMPLETE
  811. QRTO FIELD 2,17,0 TERMINAL ORDINAL FOR RECOVERY PROCESSING
  812. QREC FIELD 3,59,0 RECOVERY REQUEST
  813.  
  814. * CDCS FUNCTION CODES.
  815.  
  816. CDIN EQU 13B INVOKE
  817. CDNT EQU 15B NORMAL TERMINATION
  818. CDAT EQU 17B ABNORMAL TERMINATION
  819.  
  820. * SUBSYSTEM ERROR STATUS.
  821.  
  822. SSNP EQU /COMSSCP/ES1/2 SUBSYSTEM NOT PRESENT
  823. SSBZ EQU /COMSSCP/ES2/2 SUBSYSTEM BUSY
  824. SSND EQU /COMSSCP/ES3/2 SUBSYSTEM NOT DEFINED
  825.  
  826. * *CDCS* ERROR CODE.
  827.  
  828. CDNF EQU 21B NON-FATAL ERROR
  829. CDER EQU 22B FATAL ERROR
  830.  
  831. * CDCS STATUS WORD.
  832.  
  833. CDST BSSZ 1 1, IF CDCS ABORTED
  834.  
  835. * CDCS TERMINATE REQUEST PARAMETER BLOCK.
  836.  
  837. CDPA VFD 24/4LCD22,12/0,6/2,4/0,2/3,6/0,5/0,1/0
  838. VFD 18/INDB+3,9/0,27/0,6/0
  839. VFD 18/0,18/0,24/1
  840. CDPB VFD 24/4LCD22,12/0,6/2,4/0,2/3,6/0,5/0,1/0
  841. VFD 18/3LSSC,6/0,18/CDSI,18/CDPA
  842.  
  843.  
  844. * *TAF* INPUT RECEIVING BUFFERS. *INRB* IS USED TO RECEIVE
  845. * *LIBTASK* ON-LINE LIBRARY UPDATE REQUESTS.
  846.  
  847. * *CDCS* RELATED GLOBAL SYMBOLS.
  848.  
  849. CMPF BSSZ 1 MEMORY PAUSE FLAG
  850.  
  851.  
  852. INRBL EQU 1+63 MAXIMUM BLOCK SIZE TO RECEIVE
  853. INRB BSSZ INRBL INTER CONTROL POINT RECEIVING BUFFER
  854.  
  855. INRB1L EQU 31 MAXIMUM BLOCK SIZE FOR BATCH TRANSACTION
  856. INRB1 BSSZ INRB1L BATCH TRANSACTION RECEIVING BUFFER
  857.  
  858. * *TAF* FETS.
  859.  
  860. TDI BSS 0 *TOTAL* INPUT FET
  861. TDMIQ FILEC TDIBF,TDIBFL,FET=5
  862.  
  863. TDO BSS 0 *TOTAL* OUTPUT FET
  864. TDMOQ FILEC TDOBF,TDOBFL,FET=5
  865.  
  866. TL BSS 0
  867. TASKLIB RFILEB OBUF,OBUFL,FET=14,EPR TASK LIBRARY FILE
  868.  
  869. O BSS 0
  870. OUTPUT FILEB OBUF,OBUFL,FET=14
  871.  
  872. SF BSS 0 RANDOM SCRATCH FILE
  873. ZZZZZG3 RFILEB OBUF,OBUFL
  874.  
  875. SCR BSS 0
  876. SCR FILEB OBUF,OBUFL,EPR,FET=14 SCRATCH FILE FOR TAPE ASSIGNMENT
  877.  
  878. SCR1 BSS 0
  879. SCR1 FILEB OBUF,OBUFL,EPR,FET=14 SCRATCH FILE FOR TAPE ASSIGNMENT
  880.  
  881. PJRNL BSS 0
  882. JOUR0 FILEB JBUF0,JBUFL,FET=15 FOURNAL FILE FET
  883.  
  884. RO BSS 0
  885. KTSROLL RFILEB OBUF,OBUFL,(FET=8) TASK ROLLOUT FILE
  886.  
  887. INT BSS 0
  888. INTRACE FILEB PBUF,PBUFL INTERNAL TRACE BUFFER FET
  889.  
  890. * THE FOLLOWING STATISTICS ARE MAINTAINED FOR TUNING PURPOSES.
  891.  
  892. STAT1 BSSZ 1 NUMBER OF TIMES A TASK WAS RELOADED
  893. STAT2 BSSZ 1 NUMBER OF TIMES INITIAL TASK WAS RELOADED
  894. STAT4 BSSZ 1 NUMBER OF STORAGE MOVES OF TASKS
  895. STAT5 BSSZ 1 NUMBER OF TIMES A TASK ABORT OCCURRED
  896. STAT6 BSSZ 1 NUMBER OF TIMES *TAF* FL WAS INCREASED
  897. STAT9 BSSZ 1 RECALLS FOR *NAM* OUTPUT BLOCK LIMIT
  898. STAT10 BSSZ 1 NUMBER OF TIMES NO FL FOR TASK LOAD
  899. STAT11 BSSZ 1 NUMBER OF TIMES NO AVAILABLE SUBCP
  900. STAT12 BSSZ 1 TIMES NO COMMUNICATION BLOCKS AVAILABLE
  901. STAT13 BSSZ 1 NUMBER OF TASK ROLLOUT COMPLETES
  902. STAT14 BSSZ 1 NUMBER OF ROLLOUT INITIATIONS FOR TASKS
  903. STAT15 BSSZ 1 NUMBER OF TIMES TASK IN RECALL
  904. STAT16 BSSZ 1 NUMBER OF ACTIVE SUBCONTROL POINTS
  905. BSSZ 1 NUMBER OF SAMPLES
  906. STAT17 BSSZ 1 NUMBER OF OUTSTANDING *CDCS* REQUESTS
  907. STAT18 BSSZ 1 NUMBER OF *CDCS* REJECTS FOR *MAXR*
  908. STAT19 BSSZ 1 NUMBER OF *CDCS* REQUESTS REJECTS FOR BUSY
  909. STAT20 BSSZ 1 NUMBER OF *CDCS* TASK REQUESTS
  910.  
  911. * *TAF* TIMERS. THE FOLLOWING TIMERS ARE USED TO SCHEDULE
  912. * PROCESSES IN *TAF*.
  913.  
  914. * ASSEMBLY CONSTANTS FOR TIMED LOOPS.
  915.  
  916. TMDTL EQU 100B MILLISECONDS BETWEEN TIME DEPENDENT CALL
  917. RCLTL EQU 20B MILLISECONDS FOR TASK RECALL
  918. SCHTL EQU 20B MILLISECONDS BETWEEN TIMED SCHEDULER RUNS
  919. SICTL EQU 4 MINIMUM MILLISECONDS BETWEEN *SIC* CALLS
  920. SFCTL EQU 1*1000 MILLISECONDS BETWEEN STATUS REQUESTS
  921.  
  922. * THE FOLLOWING MILLISECOND COUNTS MAY EXCEED 131,000 AND
  923. * THEREFORE REQUIRE A FULL WORD TO CONTAIN THEIR VALUE.
  924.  
  925. TACTL CON 2*60*1000 MIILISECONDS BETWEEN ACTIVITY CHECKS
  926. SJTTL CON 20*60*1000 MILLISECONDS BETWEEN PERIODIC JOURNALING
  927. ITRTL CON 1500D MILLISECONDS TO IDLE BEFORE ROLLING OUT
  928. TROTL CON 10*60*1000 MILLISECOND DURATION OF ROLLOUT
  929. RFRTL EQU 5*1000 MILLISECONDS BETWEEN SCREEN REFRESHING
  930. * BY TASK DRIVING *K-DISPLAY*
  931.  
  932. BTIME BSS 1 REAL TIME CLOCK AT LAST REJECTED *SIC*
  933. CTIME CON 0 MILLISECONDS OF ACCUMULATED CPU TIME
  934. DTIME BSS 1 REAL TIME CLOCK AT LAST DATA MANAGER CYCLE
  935. ETIME BSS 1 REAL TIME CLOCK AT LAST TASK RELEASE
  936. ITIME BSS 1 REAL TIME CLOCK AT LAST INPUT PROCESSING
  937. JTIME BSS 1 REAL TIME CLOCK AT LAST PERIODIC JOURNAL
  938. LTIME BSS 1 REAL TIME CLOCK AT START OF INNER LOOP
  939. MTIME BSS 1 REAL TIME CLOCK AT LAST FL REDUCTION
  940. OTIME BSS 1 REAL TIME CLOCK AT LAST 1 SECOND INTERVAL
  941. PTIME BSS 1 REAL TIME CLOCK AT START OF PROGRAM
  942. RTIME BSS 1 REAL TIME CLOCK AT LAST RECALL PROCESSING
  943. STIME BSS 1 REAL TIME CLOCK AT LAST SCHEDULER RUN
  944. TTIME BSS 1 REAL TIME CLOCK AT LAST ACTIVITY CHECK
  945. UTIME BSS 1 REAL TIME CLOCK AT LAST CORE USAGE CHECK
  946.  
  947. * SUBCP SCHEDULING VARIABLES. *CR* INDICATES THE SUBCP-S
  948. * THAT ARE CANDIDATES FOR EXECUTION. *RCR* INDICATES THE
  949. * SUBCP-S THAT ARE IN RECALL. *SREG* INDICATES THE CURRENTLY
  950. * ACTIVE SUBCP. BIT 46 OF *CR/RCR* CORRESPONDS TO SUBCP ONE,
  951. * BIT 45 TO SUBCP TWO, AND SO ON.
  952.  
  953. CR CON 0 SUBCP CPU REQUEST WORD
  954. CON 0 SUBCP CPU REQUEST WORD MASK
  955.  
  956. RCR CON 0 RECALL REQUEST WORD
  957.  
  958.  
  959. *T SREG 24/0,18/ SA,18/ SCP
  960. * SA - FWA OF TASK SYSTEM AREA.
  961. * SCP - FWA OF SUBCP TABLE ENTRY FOR TASK.
  962.  
  963. SREG CON 0
  964.  
  965. * MEMORY MANAGEMENT CONTROL.
  966. * THE FOLLOWING CONSTANTS CONTROL THE AMOUNT OF FIELD LENGTH
  967. * INCREASE OR DECREASE AND THE TIME PERIODS
  968. * BETWEEN FIELD LENGTH CHANGES.
  969.  
  970. RFLTL EQU 100 MILLISECONDS BEFORE INCREASE
  971. FCMFL EQU 100B MINIMUM FL TO RETAIN
  972. REDFL EQU 30000B MAXIMUM FL FOR ONE REDUCTION
  973. INCFL EQU 12000B MINIMUM FL FOR ONE INCREMENT
  974.  
  975. AVAILCM CON 0 AVAILABLE CENTRAL MEMORY
  976. CMRFL BSS 1 SUM OF CM RESIDENT INITIAL FL + NUAPL
  977. CMRPF BSS 1 SUM OF CM RESIDENT POTENTIAL FL
  978. CURFL BSS 1 CURRENT FIELD LENGTH
  979. MAXTTA BSS 1 MAXIMUM SIZE OF TOTAL TASK AREA
  980. MFL BSS 1 MAXIMUM FIELD LENGTH
  981. MINTTA BSS 1 MINIMUM SIZE OF TOTAL TASK AREA
  982. MINXT BSS 1 MINIMUM SIZE OF TRANSIENT TASK AREA
  983. MRSW BSSZ 1 MEMORY REQUEST STATUS WORD
  984.  
  985. TPLW CON 0 STATUS WORD FOR OUTSTANDING PPU REQUESTS
  986. DAYB BSSZ 5 BUFFER FOR DAYFILE MESSAGES
  987. TSEQ CON 0 TRANSACTION SEQUENCE NUMBER
  988. PDATE BSS 1 LATEST PACKED TIME
  989. RSCH BSS 1 REQUEST TASK SCHEDULER
  990.  
  991. * *STIN* CONTROLS START OF COMMUNICATIONS WITH JOBS,
  992. * SUBSYSTEMS, AND TERMINALS. IF *STIN* EQUALS ZERO,
  993. * COMMUNICATIONS SHOULD NOT BEGIN BECAUSE RECOVERY
  994. * PROCEDURES HAVE NOT FINISHED. IF *STIN* EQUALS 1
  995. * COMMUNICATIONS MAY BEGIN. IF *STIN* IS LESS THAN ZERO,
  996. * COMMUNICATIONS HAVE BEEN ENABLED.
  997.  
  998. STIN CON 0
  999.  
  1000. * *TAF* USES EVENT QUEUING TO PROCESS SOME OF ITS WORK.
  1001. * THE FOLLOWING VARIABLES AND DEFINITIONS ARE USED FOR QUEUING.
  1002.  
  1003. *T TAFQ 12/ ,6/LSUBCP,18/LAST,6/FSUBCP,18/FIRST
  1004. *
  1005. * LSUBCP - LAST SUBCP ENTRY IN QUEUE.
  1006. * THIS IS ZERO IF NO SUBCP IS ASSOCAITED WITH *LAST*.
  1007. * LAST - FWA OF LAST ENTRY IN QUEUE.
  1008. * FSUBCP - FIRST SUBCP IN QUEUE.
  1009. * THIS IS ZERO IF NO SUBCP IS ASSOCIATED WITH *FIRST*.
  1010. * FIRST - FWA OF NEXT ENTRY IN QUEUE.
  1011.  
  1012. TAFQ CON 0 *TAF* QUEUE POINTERS
  1013.  
  1014. * EACH ENTRY IN THE QUEUE HAS THE FOLLOWING FORMAT -
  1015. *
  1016. *T 6/NSUBCP ,18/NEXT,6/TYPE,6/SUBCP,6/SHIFT,18/EVENT
  1017. * 6/ ,36/TIME,18/RETURN
  1018. *
  1019. * NSUBCP - SUBCP OF NEXT ENTRY IN QUEUE. ZERO IF NO
  1020. * SUBCP FOR *NEXT*.
  1021. * NEXT - FWA OF NEXT ENTRY IN QUEUE. THIS IS ZERO FOR
  1022. * LAST ENTRY OF QUEUE.
  1023. * TYPE - TYPE OF EVENT.
  1024. * SUBCP - SUBCP OF QUEUED EVENT. SUBCP IS ZERO IF NO
  1025. * SUBCP IS INVOLVED.
  1026. * SHIFT - SHIFT TO MOVE COMPLETE BIT TO BIT 59.
  1027. * A 1 INDICATES A COMPLETE EVENT.
  1028. * EVENT - FWA OF EVENT.
  1029. * TIME - TIME FOR EVENT TO COMPLETE IN MILLISECONDS.
  1030. * RETURN - FWA OF PROCESSOR TO CALL WHEN EVENT IS COMPLETE.
  1031.  
  1032. * QUEUE TYPES.
  1033.  
  1034. QTEV EQU 0 QUEUE TYPE IS EVENT ONLY
  1035. QTET EQU 1 QUEUE TYPE IS EVENT OR TIME.
  1036.  
  1037. * GLOBAL EVENT COMPLETE WORDS.
  1038.  
  1039. EVCB VFD 1/1,59/0 BIT 59 = 1 IF COMMUNICATIONS BLOCKS FREE
  1040. EVIT VFD 1/1,59/0 BIT 59 = 1 IF *ITASK* MAY BE SCHEDULED
  1041.  
  1042.  
  1043. SSRP BSSZ 1 SYSTEM OR USER CONTROL POINT STORAGE
  1044. SSJN BSSZ 1 *UCP* SEQUENCE NUMBER AND *FST* ORDINAL
  1045. SSUH BSSZ 1 CALLSS HEADER WORD
  1046. SSUP BSSZ 50B *UCP* PARAMETERS
  1047. SSRPL EQU *-SSRP LENGTH OF BUFFER
  1048. TAID VFD 42/3LTAF,18/TRSI TAF IDENTIFICATION
  1049. BFPT VFD 1/0,1/0,4/0,18/0,1/1,17/SSRPL,18/SSRP BUFFER POINTER
  1050.  
  1051. ZWORD BSSZ 1 ZERO WORD
  1052.  
  1053. * TASKS FOR SPECIAL PROCESSING.
  1054.  
  1055. TLIST BSS 0
  1056. ABAS DATA L*MSABT* ABORT PROCESSING
  1057. BTAS DATA L*BTASK* *BTRAN* RECOVERY PROCESSING
  1058. CTAS DATA L*CTASK* *CRM* RECOVERY PROCESSING
  1059. ITAS DATA L*ITASK* INITIAL INPUT PROCESSING
  1060. KTAS DATA L*KDIS* COMMAND DISPLAY PROCESSING
  1061. OTAS DATA L*OFFTASK* OFF TASK PROCESSING
  1062. RCTAS DATA L*RCTASK* RECOVER CDCS TASK
  1063. RTAS DATA L*RTASK* TERMINAL RECOVERY PROCESSING
  1064. SMTAS DATA L*STASK* SEND MESSAGE TO TERMINAL
  1065. STAS DATA L*SYSMSG* SYSTEM MESSAGE PROCESSING
  1066. CON 0 END OF LIST
  1067.  
  1068. QUAL$ EQU 0 PROGRAM WILL HANDLE QUAL
  1069.  
  1070. * THE FOLLOWING DEFINE *CALLRTN* AND ROLLOUT FILE PARAMETERS.
  1071.  
  1072. ROLBL EQU 6000B ROLLOUT BLOCK SIZE
  1073. NPRBL EQU ROLBL/64 NUMBER OF PRUS PER ROLLOUT BLOCK
  1074. RFOVL EQU 4*NPRBL NUMBER OF PRUS TO LEAVE ON END OF FILE
  1075. NESTL EQU 16 NEST LIMIT FOR CALL TASK WITH RETURN
  1076. RTDNL EQU 2*1000 CORE TIME SLICE ALLOWED AFTER A *CALLRTN*
  1077. RLATL EQU 5 ROLLOUT FILE ALLOCATION AREA SIZE
  1078. MINTL EQU 4 MINIMUM TIME BEFORE *WAIT* CAUSES ROLLOUT
  1079. DWITL EQU 8*60 DELAY TIME OUT FOR WAIT FOR INPUT TASKS
  1080. DMRTL EQU 2 DURATION ON DATA MANAGER REQUESTED ROLLOUT
  1081. DRLTL EQU 10 DURATION OF MEMORY ROLLOUT
  1082.  
  1083.  
  1084. DCPPR EQU 2003B DEFAULT TASK CPU PRIORITY
  1085. DTSTL EQU 16 DEFAULT NUMBER OF TIME SLICES FOR A TASK
  1086. MAXSM EQU 300000B MAXIMUM AMOUNT OF CORE TO STORAGE MOVE
  1087. NAMTP EQU 1 FLAG FOR *TAFNAM* TELE-PROCESSOR
  1088.  
  1089. * *SEND* REQUEST OUTPUT FLOW PARAMETERS FOR TASK ROLLING.
  1090.  
  1091. ROLTO EQU 40 NUMBER OF WORDS TO CAUSE ROLLOUT
  1092. DTCPS EQU 30 DIAL-UP TERMINAL CHARACTERS PER SECOND
  1093. PTCPS EQU 15 POLLED TERMINAL CHARACTERS PER SECOND
  1094. DTRTL EQU 1 DELAY IN SECONDS ADDED TO *SEND* TIME
  1095.  
  1096. MAXJL EQU 2500 MAXIMUM NUMBER OF WORDS TO JOURNAL
  1097. MAXBW EQU 3 MAXIMUM TASK BRANCH COUNT
  1098. MAXRA EQU 500B NUMBER OF LEGAL SYSTEM REQUESTS
  1099. MOFFC EQU 2 TRANSACTION TERMINAL MESSAGE LIGHT OFF
  1100. MONFC EQU 3 TRANSACTION TERMINAL MESSAGE LIGHT ON
  1101. LOGFC EQU 13B LOG OFF FUNCTION CODE
  1102.  
  1103. * FET DESCRIPTION.
  1104.  
  1105. FELN FIELD 0,59,18 LOCAL FILE NAME
  1106. FEAT FIELD 0,13,10 ERROR STATUS
  1107. FECO FIELD 0,8,2 REQUEST CODE
  1108. FEFT FIELD 0,1,1 FILE TYPE
  1109. FECL FIELD 0,0,0 COMPLETION FLAG
  1110. FERM FIELD 1,47,47 RANDOM ACCESS FILE FLAG
  1111. FEFR FIELD 1,17,0 FIRST
  1112. FEIN FIELD 2,17,0 IN
  1113. FEOU FIELD 3,17,0 OUT
  1114. FELI FIELD 4,17,0 LIMIT
  1115. FERR FIELD 6,28,0 RANDOM REQUEST
  1116. FEMG FIELD 7,59,59 MAGNET TAPE
  1117. FEOO FIELD 13,17,0 OLD OUT POINTER
  1118. FECR FIELD 14,28,0 CURRENT EOI RANDOM INDEX
  1119.  
  1120. JFETL EQU FECRW+1 LENGTH OF JOURNAL FET
  1121.  
  1122. * DATA MANAGER CONSTANTS.
  1123.  
  1124. TFEN EQU 2 LENGTH OF TOTAL FILE ENTRY IN EDT
  1125. TIMDM EQU 10 MAXIMUM TASKS USING TOTAL
  1126. TMAXDB EQU 31 MAXIMUM TOTAL DATA BASES
  1127. TMAXFIL EQU 100 MAXIMUM FILES PER TOTAL DATA BASE
  1128.  
  1129. *** DATA MANAGER INITIALIZATION FLAGS.
  1130. *
  1131. * IF EQUATED TO 0 LOAD CORRESPONDING DATA MANAGER.
  1132. * IF EQUATED TO 1 AND FILE IS NOT PRESENT ABORT TRANEX.
  1133. * IF EQUATED TO -1 DO NOT LOAD THE DATA MANAGER.
  1134.  
  1135. CDBIDF EQU 0 LOAD AAM IF *CDBID* PRESENT
  1136. TDBIDF EQU 0 LOAD TOTAL IF TDBID PRESENT
  1137.  
  1138. * TLD RELATED CONSTANTS USED BY *TAF*.
  1139. *
  1140. * MAXAQ = MAXIMUM NUMBER OF ACTIVE COPIES OF A TASK WITH THE
  1141. * Q-ATTRIBUTE SPECIFIED.
  1142.  
  1143. MAXAQ EQU 7
  1144. TLTANM DECMIC TLTAN
  1145.  
  1146.  
  1147. DEVT VFD 48/0,12/0L"DTYM" DEFAULT DEVICE TYPE
  1148.  
  1149. * TASK DUMP DEFAULTS.
  1150.  
  1151. DFWA EQU 0 DEFAULT FWA OF TASK DUMP
  1152. DFWAM OCTMIC DFWA
  1153. DLWA EQU 100000B DEFAULT LWA OF TASK DUMP
  1154. DLWAM OCTMIC DLWA
  1155. DEXP EQU 1 DEFAULT EXCHANGE PACKAGE DUMP
  1156. DEXPM OCTMIC DEXP
  1157. DDMB EQU 0 DEFAULT DATA MANAGER BUFFER DUMP
  1158. DDMBM OCTMIC DDMB
  1159. DORT EQU 0 DEFAULT ORIGIN TYPE FOR TASK
  1160. DORTM MICRO 1,2,/BC/
  1161. DORC EQU BCOT DEFAULT ORIGIN CODE
  1162. DQDS EQU 0 DEFAULT QUEUE DESTINATION VALUE
  1163. DQDSM OCTMIC DQDS PRINTER ID
  1164.  
  1165. DSMNFL EQU 12 MINIMUM *DSDUMP* FL
  1166. DSQID EQU 0 DEFAULT *SUBMT* OUTPUT QUEUE ID
  1167.  
  1168.  
  1169. DTSE VFD 1/1,1/DEXP,1/DDMB,1/0,1/0,7/0,18/DLWA,12/0,18/DFWA
  1170. VFD 42/0,1/1,1/0,1/0,3/DORC,12/DORT
  1171.  
  1172. DTSG BSS 1 DUMP CALLED FROM ADDRESS
  1173.  
  1174. * TRANSACTION FACILITY DUMP DEFAULTS.
  1175.  
  1176. GTDL VFD 1/0,59/0 GLOBAL TASK DUMP FLAG AND LIMIT
  1177. DRID EQU 0 PRINTER ID FOR *K.DUMP* ROUTE
  1178. SPACE 4,10
  1179. * *DSP* FLAG BIT EQUIVALENCES.
  1180.  
  1181.  
  1182. FRTI EQU 4 *TID* OR FM/UN
  1183. FRDC EQU 20B DISPOSITION CODE
  1184. FRER EQU 10000B RETURN ERROR CODE
  1185.  
  1186.  
  1187. * *DSP* ERROR CODES FOR THE *SUBMT* REQUEST.
  1188.  
  1189.  
  1190. JBCE EQU 32B JOB STATEMENT ERROR
  1191. USCE EQU 34B INCORRECT USER STATEMENT
  1192. TDSP SPACE 4,10
  1193. ** *DSP* PARAMETER BLOCK FOR KTSDMP JOBS (TASK ABORT/DUMP),
  1194. * *K.DUMP*, *SUBMT*, AND *ROUTE* REQUESTS.
  1195. * THE FIRST WORD IS USED AS AN INTERLOCK TO PREVENT
  1196. * SIMULTANEOUS REQUESTS.
  1197.  
  1198.  
  1199. TDSP CON 0 FILE NAME / INTERLOCK
  1200. VFD 12/,12/,12/0LNO,6/,18/FRER+FRDC+FRTI
  1201. VFD 36/,24/DSQID
  1202. BSSZ 4
  1203. SPACE 4,10
  1204. * TAF ERROR CODES FOR THE *ROUTE* REQUEST.
  1205.  
  1206.  
  1207. EC100 EQU 100D FWA OF DATA NOT SPECIFIED
  1208. EC101 EQU 101D LENGTH PARAMETER IN ERROR
  1209. EC102 EQU 102D STATUS RETURN ADDRESS NOT SPECIFIED
  1210. EC103 EQU 103D INCORRECT *DSP* PARAMETER
  1211. EC104 EQU 104D PARAMETER VALUE REQUIRED
  1212. EC105 EQU 105D FORMS CODE SPECIFIED ON INPUT DISPOSITION
  1213. EC106 EQU 106D DEFERRED ROUTING NOT ALLOWED
  1214. EC107 EQU 107D INCORRECT EXTERNAL CHARACTERISTIC
  1215. EC108 EQU 108D INCORRECT *DEF* PARAMETER
  1216. EC109 EQU 109D INCORRECT OUTPUT MAINFRAME LOGICAL ID
  1217. EC110 EQU 110D INCORRECT FORMS CODE
  1218. EC111 EQU 111D *TID* AND *FM/UN* CONFLICT
  1219. EC112 EQU 112D *TID/FM/UN* AND *ID* CONFLICT
  1220. EC113 EQU 113D INCORRECT INTERNAL CHARACTERISTIC
  1221. EC114 EQU 114D INCORRECT LOCAL DEVICE ID
  1222. EC115 EQU 115D JSN NOT ALLOWED
  1223. EC116 EQU 116D INCORRECT JSN VALUE
  1224. EC117 EQU 117D JOB NOT SYSTEM ORIGIN
  1225. EC118 EQU 118D INCORRECT ORIGIN TYPE
  1226. EC119 EQU 119D INCORRECT PRINT TRAIN IMAGE
  1227. EC120 EQU 120D INCORRECT REPEAT COUNT
  1228. EC121 EQU 121D INCORRECT SPACING CODE
  1229. EC122 EQU 122D INCORRECT DESTINATION LOGICAL ID
  1230. EC123 EQU 123D INCORRECT SERVICE CLASS
  1231. TROU SPACE 4,10
  1232. ** TROU - *DSP* PARAMETER BLOCK FOR THE *ROUTE* REQUEST.
  1233. *
  1234. *T W0 42/ FILE NAME,6/ E,1/ F,4/ ,6/ OT,1/ C
  1235. *T, W1 12/ ,12/ FC,12/ DC,3/ EC,1/ S,2/ IC,18/ FLAGS
  1236. *T, W2 18/ SLID,18/ DLID,24/ TID
  1237. *T, W3 42/ UJN,18/ JP
  1238. *T, W4 2/ 0,1/ P,3/ PI,6/ SC,12/ SCL,12/ AC,7/ ,5/ RC,12/
  1239. *T, W5 60/
  1240. *T, W6 60/
  1241. *
  1242. * E - ERROR RETURN CODE.
  1243. * F - FORCE ORIGIN TYPE FLAG.
  1244. * OT - DESIRED ORIGIN TYPE.
  1245. * C - COMPLETION BIT.
  1246. * FC - FORMS CODE.
  1247. * DC - DISPOSITION CODE.
  1248. * EC - EXTERNAL CHARACTERISTIC.
  1249. * S - FORCED SERVICE CLASS FLAG.
  1250. * IC - INTERNAL CHARACTERISTIC.
  1251. * FLAGS - SEE *DSP* DECK.
  1252. * SLID - LOGICAL IDENTIFIER OF THE SOURCE MAINFRAME FOR THE
  1253. * FILE.
  1254. * DLID - LOGICAL IDENTIFIER OF THE DESTINATION MAINFRAME FOR
  1255. * THE FILE.
  1256. * TID - COMPLEMENT OF THE ADDRESS OF THE *FAMILY NAME - USER
  1257. * NAME* TWO-WORD BLOCK. CONTAINS 77777777B IF TO USE THE
  1258. * FAMILY AND USER NAME OF THE CALLING JOB.
  1259. * JP - JOB PRIORITY.
  1260. * P - PRINT IMAGE FLAG (INDICATES PRINT IMAGE CODE PRESENT).
  1261. * PI - PRINT IMAGE CODE (0-7) IF PRINT IMAGE FLAG SET.
  1262. * SC - SPACING CODE.
  1263. * SCL - SERVICE CLASS.
  1264. * AC - ABORT CODE.
  1265. * RC - REPEAT COUNT.
  1266.  
  1267.  
  1268. TROU EQU TDSP USE THE *SUBMT* *DSP* PARAMETER BLOCK
  1269. TFUN SPACE 4,10
  1270. ** TFUN - *DSP* FAMILY NAME AND USER NAME TABLE.
  1271. *
  1272. *T W0 42/ FAMILY NAME,18/
  1273. *T, W1 42/ USER NAME,18/
  1274.  
  1275.  
  1276. TFUN BSSZ 2 FAMILY NAME - USER NAME
  1277. SPACE 4,10
  1278. * *DSP* INTERNAL FLAGS.
  1279.  
  1280. PTID CON 0 *TID* PROCESSED
  1281. PFUN CON 0 FAMILY NAME AND USER NAME PROCESSED
  1282. PDID CON 0 DEVICE ID PROCESSED
  1283. PDEF CON 0 *DEF* PROCESSED
  1284. PJSN CON 0 JSN PROCESSED
  1285. PUJN CON 0 UJN PROCESSED
  1286. PDCT CON 0 DISPOSITION CODE TYPE
  1287. PECT CON 0 EXTERNAL CHARACTERISTIC TYPE
  1288. PJOT CON 0 JOB ORIGIN
  1289. LIST X
  1290. *CALL COMTDSP
  1291. LIST -X
  1292. KOPTS SPACE 4,10
  1293. HDRL EQU 7 LENGTH OF EDT HEADER
  1294.  
  1295.  
  1296. IFL= EQU 200000B TAF INITIALIZATION FWA
  1297. AFWA EQU VLOCL2 FWA FOR *AIP*
  1298. ALWA EQU IFL=-1 LWA FOR LOADU AREA
  1299. ECSXFR EQU 1000B EXTENDED MEMORY BLOCK TRANSFER
  1300. MAXR EQU /COMSSCP/MAXR MAXIMUM OUTSTANDING SSC REQUESTS
  1301. SPACE 4,10
  1302. ** ASSEMBLY TIME ERROR CHECKS.
  1303.  
  1304.  
  1305. ERRNG 1S"TLTANM"-1-MAXAQ VALUE MUST BE .LE. 2**TLTAN-1
  1306. ERRNG MAXAQ-1 VALUE MUST BE .GE. 1
  1307. ERRNZ VSIW-/COMSSCP/SSIW *VSIW* MUST EQUAL *SSIW*
  1308. ERRNZ VSCR-/COMSSCP/SSCR *VSCR* MUST EQUAL *SSCR*
  1309. ERRNZ VLWP-LWPR MEMORY MANAGEMENT NOT LOCATED AT *LWPR*
  1310. ERRNZ VHHA-104B *CMM* HIGHEST ADDRESS NOT AT 104B
  1311. ERRNG MAXMFL-SCMFL SCMFL MUST BE .LE. MAXMFL
  1312. ERRNG DLWA-DFWA-DSMNFL NUMBER OF WORDS TO BE DUMPED TOO FEW
  1313. ERRNG DSMNFL-12 MINIMUM *DSDUMP* FL IS 12
  1314. VERM DATA C*VERSION "VERT".*
  1315. TMDC TITLE TIME DEPENDENT ROUTINE CONTROL.
  1316. ** TMDC CHECK ELAPSED TIME SINCE PROCESSING FOR ALL TRANEX
  1317. * TIME DEPENDENT ROUTINES. IF THE TIME LIMIT FOR A
  1318. * ROUTINE HAS BEEN EXCEEDED, CALL THAT ROUTINE.
  1319.  
  1320.  
  1321. TMDC RTIME ITIME UPDATE CURRENT TIMD LOOP TIME
  1322. SA1 VSCR
  1323. NG X1,CSI IF SUBSYSTEM MESSAGE RECEIVED
  1324. SA4 INRB CHECK TRANSACTION INPUT
  1325. ZR X4,TMDC1 IF NO TRANSACTION INPUT
  1326. RJ PRIN PROCESS TRANSACTION INPUT
  1327. TMDC1 RJ NGL PROCESS TRANSACTION INPUT
  1328. TMDC2 SX7 SCHTL SCHEDULER TIME SPAN
  1329. SA3 STIME LAST SCHEDULER RUN
  1330. MX2 -36
  1331. SA4 ITIME CURRENT TIME
  1332. IX1 X4-X3
  1333. BX6 -X2*X1 MILLISECONDS SINCE LAST SCHEDULER RUN
  1334. IX3 X7-X6
  1335. PL X3,TMDC3 IF NOT TIME FOR SCHEDULER
  1336. BX7 X4
  1337. SA7 A3 NEW SCHEDULER TIME
  1338. RJ SCHD RUN SCHEDULER
  1339. TMDC3 SX7 RCLTL TASK RECALL TIME SPAN
  1340. SA3 RTIME LAST RECALL PROCESSING TIME
  1341. MX2 -36
  1342. SA4 ITIME CURRENT TIME
  1343. IX1 X4-X3
  1344. BX6 -X2*X1 MILLISECONDS SINCE LAST RECALL PROCESSING
  1345. IX3 X7-X6
  1346. PL X3,TMDC5 IF NOT TIME FOR PROCESSING RECALL
  1347. BX7 X4
  1348. SA1 RCR RECALL REQUEST WORD
  1349. SA7 A3 SET NEW RECALL TIME
  1350. ZR X1,TMDC5 IF NO TASK IN RECALL
  1351. SA2 CR CPU REQUEST WORD
  1352. SX6 B0
  1353. BX7 X1+X2 SET CPU REQUEST BIT FOR RECALLED TASKS
  1354. SA6 A1 ZERO OUT RECALL REQUEST WORD
  1355. SA7 A2
  1356. TMDC4 NZ X2,TMDC5 IF CPU CURRENTLY IN DEMAND
  1357. SA1 CR
  1358. MX0 1 CIRCUMVENT *DCPT* TRAP CHECK
  1359. LX0 -12
  1360. BX7 X1+X0 SET CPU REQUEST BIT
  1361. SA7 A1
  1362. TB7 -CPAL,VCPA
  1363. RJ DCPT FORCE CPU TASK SELECTION
  1364. EQ TSSC TIME SLICE SUBCP
  1365.  
  1366. * ONE SECOND INTERVAL TIME CHECKS.
  1367.  
  1368. TMDC5 SX7 1000 ONE SECOND
  1369. SA3 OTIME LAST ONE SECOND INTERVAL TIME
  1370. SA4 ITIME CURRENT TIME
  1371. MX2 -36
  1372. IX3 X4-X3
  1373. BX3 -X2*X3 MILLISECONDS SINCE LAST ONE SECOND CHECKS
  1374. IX3 X7-X3
  1375. PL X3,TMDC10 IF ONE SECOND NOT ELAPSED
  1376. BX7 X4
  1377. SA7 A3
  1378.  
  1379. * IF COMMUNICATIONS MAY BE ENABLED AFTER RECOVERY PROCEDURES,
  1380. * ENABLE *SIC* TRANSFERS, TERMINAL COMMUNICATIONS, AND
  1381. * SYSTEM CONTROL POINT TRANSFERS.
  1382.  
  1383. SA1 STIN START INPUT STATUS
  1384. NG X1,TMDC5.2 IF INPUT ENABLED
  1385. ZR X1,TMDC5.2 IF INPUT MAY NOT BE ENABLED
  1386. MX7 1 SET INPUT ENABLED
  1387. SA7 A1
  1388. SA2 TMDCC
  1389. NZ X2,TMDC5.2 IF *SIC* AND *SCP* ENABLED
  1390. SX7 B1
  1391. SA7 A2
  1392. SETICC TDMCD ENABLE *SIC* TRANSFERS
  1393. RJ NON ENABLE TERMINAL COMMUNICATIONS
  1394. SA1 BFPT MESSAGE POINTER
  1395. SA2 TAID ENABLE *SCP* COMMUNICATIONS
  1396. BX6 X1
  1397. BX7 X2
  1398. SA6 VSCR
  1399. SA7 VSIW
  1400. CALLSS 0,TMDCB INITIALIZE TAF AS A *SCP*
  1401. TMDC5.2 SA1 CR GET NUMBER OF ACTIVE SUBCP
  1402. SA2 RCR
  1403. CX3 X1
  1404. CX4 X2 NUMBER OF SUBCP IN RECALL
  1405. IX5 X3+X4
  1406. SX7 B1
  1407. ZR B2,TMDC5.3 IF NO ACTIVE SUBCP
  1408. IX5 X5+X7
  1409. TMDC5.3 SA1 STAT16 TOTAL ACTIVE TASKS
  1410. IX6 X1+X5
  1411. SA2 A1+B1
  1412. IX7 X2+X7 UPDATE NUMBER OF SAMPLE
  1413. SA6 A1
  1414. SA7 A2
  1415. SA1 STAT17 GET TOTAL NUMBER OF OUTSTAND *SSC* REQUEST
  1416. SA2 SSCC GET OUTSTANDING REQUEST COUNT
  1417. IX7 X1+X2
  1418. SA7 A1 UPDATE NUMBER OF OUTSTANDING *SSC* REQUEST
  1419. RJ KDIS UPDATE K-DISPLAY
  1420. RJ SRL CHECK ROLLOUT TABLE FOR TIMED OUT ENTRIES
  1421. RJ AIQ AGE INPUT QUEUE PRIORITIES
  1422. RJ CCS CHECK CDCS STATUS
  1423. SX7 CORTL CORE USAGE CHECK TIME
  1424. SA3 UTIME LAST CORE USAGE CHECK
  1425. SA4 ITIME CURRENT TIME
  1426. MX2 -36
  1427. IX1 X4-X3
  1428. BX6 -X2*X1 MILLISECONDS SINCE LAST CHECK
  1429. IX3 X7-X6
  1430. PL X3,TMDC7 IF NOT TIME FOR CORE USAGE CHECK
  1431. BX7 X4
  1432. SA7 A3 SET NEW CHECK TIME
  1433. RJ CORU CHECK CORE USAGE
  1434. TMDC7 SA2 TACTL ITASK ACTIVATION TIME CHECK
  1435. SA3 TTIME LAST ACTIVATION CHECK TIME
  1436. SA4 ITIME CURRENT TIME
  1437. MX7 -36
  1438. IX1 X4-X3
  1439. BX6 -X7*X1 MILLISECONDS SINCE LAST CHECK
  1440. IX3 X2-X6
  1441. PL X3,TMDC8 IF NOT TIME FOR INITIAL TASK CALL
  1442. BX7 X4
  1443. SA7 A3 SET NEW ACTIVATION CHECK TIME
  1444. SA4 ITAS INITIAL TASKS NAME
  1445. SX5 CIACT ITASK ACTIVATION CODE
  1446. SB3 B0 NO BUFFER INPUT
  1447. SX7 B0 SCHEDULE ONLY FROM SYSTEM LIBRARY
  1448. RJ TRN GENERATE A SYSTEM ORIGIN TRANSACTION
  1449. NZ X0,TMDC8 IF TRANSACTION SCHEDULED
  1450. SX7 B0+ RETRY NEXT PASS THROUGH LOOP
  1451. SA7 TTIME
  1452. TMDC8 SA2 SJTTL STATISTIC JOURNAL TIME
  1453. SA3 JTIME LAST JOURNAL TIME
  1454. SA4 ITIME CURRENT TIME
  1455. MX7 -36
  1456. IX1 X4-X3
  1457. BX6 -X7*X1 MILLISECONDS SINCE LAST JOURNAL
  1458. IX3 X2-X6
  1459. PL X3,TMDC9 IF NOT TIME FOR JOURNAL
  1460. BX7 X4
  1461. SA7 A3 SET NEW JOURNAL TIME
  1462. RJ JSTS WRITE STATISTICS TO JOURNAL FILE
  1463. TMDC9 SA1 B0 CHECK RA+0
  1464. LX1 59-15
  1465. PL X1,TMDC10 IF NO IDLE DOWN
  1466. BX6 X6-X6 CLEAR RA+0
  1467. SA6 B0
  1468. RJ IDL SET IDLE DOWN FLAG
  1469. TMDC10 NZ B7,TMDC11 IF AT LEAST ONE SUBCP ACTIVE
  1470. RECALL ** GIVE UP CP **
  1471. EQ TSSC TIME SLICE SUB CPS
  1472.  
  1473. TMDC11 SA1 CR ADVANCE CPU SWITCHING MASK
  1474. SA2 A1+B1
  1475. MX7 13
  1476. TX3 B7+CPAL,-VCPA EXTEND MASK TO ACTIVE SUB CP
  1477. BX2 -X2*X1
  1478. AX3 SCPAL
  1479. ZR X2,TMDC12 IF MASK EXTENDS TO HIGHEST ACTIVE SUBCP
  1480. SB3 X3
  1481. AX7 X7,B3
  1482. TMDC12 SA7 A2 SET NEW MASK
  1483. BX2 X2-X2
  1484. EQ TMDC4 FORCE RESELECTION OF SUBCP
  1485.  
  1486. TMDCB BSSZ 1 PARAMETER ADDRESS FOR INITIAL *CALLSS*
  1487. TMDCC BSSZ 1 1 IF *BTASK* SCHEDULED ONCE
  1488.  
  1489. TDMCD BSS 0 *SIC* CALL BUFFER POINTERS
  1490. VFD 12/0,6/INRBL-1,18/INRB,6/INRB1L-1,18/INRB1
  1491. VFD 12/0,6/0,18/0,6/0,18/0
  1492. CCS SPACE 4,20
  1493. ** CCS - CHECK CDCS STATUS.
  1494. *
  1495. * ENTRY (CDST) = 0, IF NORMAL CONDITION.
  1496. * 1, IF CDCS ABORTED.
  1497. * -1, IF CDCS TERMINATE REQUEST NOT COMPLETED.
  1498. * 2, IF *RCTASK* NOT SCHEDULED.
  1499. *
  1500. * EXIT (CDST) UPDATED ACCORDINGLY.
  1501. *
  1502. * USES X - 1, 2, 3, 4, 5, 6, 7.
  1503. * A - 1, 2, 3, 4, 7.
  1504. * B - 3.
  1505. *
  1506. * CALLS SYS=, TRN, TRO.
  1507.  
  1508.  
  1509. CCS SUBR ENTRY/EXIT
  1510. SA1 CDST
  1511. SB3 X1+
  1512. ZR X1,CCSX IF NORMAL - RETURN
  1513. NG X1,CCS2 IF TERMINATE REQUEST ISSUED
  1514. GT B3,B1,CCS3 IF *RCTASK* NOT SCHEDULED
  1515.  
  1516. * ISSUE FAKE CDCS TERMINATE REQUEST.
  1517. * THIS IS USED ONLY TO DETERMINE CDCS-STATUS.
  1518.  
  1519. CCS1 SA2 CDPB
  1520. BX7 X2
  1521. SA3 A2+B1 FWA OF CDCS REQUEST WORD
  1522. SA7 CDPA FWA OF REQUEST WORD
  1523. BX6 X3
  1524. SX7 -B1 INDICATE CDCS REQUEST ISSUED
  1525. SA7 CDST
  1526. RJ SYS= ISSUE CDCS REQUEST
  1527.  
  1528. * CHECK RETURN STATUS.
  1529.  
  1530. CCS2 SA2 CDPA FWA OF REQUEST
  1531. LX2 59-CDCBS
  1532. SX7 B1 INDICATE CDCS ABORTED
  1533. PL X2,CCSX IF REQUEST NOT COMPLETE
  1534. SA7 CDST
  1535. MX0 -CDSFN GET ERROR CODE
  1536. LX2 CDSFN-1-CDSFS-59+CDCBS
  1537. SX3 SSNP CDCS NOT AVAILABLE
  1538. BX7 -X0*X2
  1539. IX4 X7-X3
  1540. PL X4,CCSX IF CDCS NOT AVAILABLE
  1541.  
  1542. * WHEN CDCS IS UP, SCHEDULE *RCTASK*.
  1543.  
  1544. CCS3 SA1 TROA TAF ROLLOUT STATUS
  1545. ZR X1,CCS4 IF TAF IS ROLLED IN
  1546. RJ TRI ROLL TAF IN
  1547. CCS4 BX5 X5-X5
  1548. SB3 B0
  1549. SA4 RCTAS *RCTASK*
  1550. SX7 B0
  1551. RJ TRN SCHEDULE *RCTASK*
  1552. SX7 B1+B1
  1553. ZR X0,CCS5 IF *RCTASK* NOT SCHEDULED
  1554. BX7 X7-X7
  1555. CCS5 SA7 CDST
  1556. EQ CCSX RETURN
  1557. CSI SPACE 4,15
  1558. ** CSI - CONTROL SUBSYSTEM INTERFACE.
  1559. *
  1560. * ENTRY (SSRP) = SUBSYSTEM REQUEST BUFFER.
  1561. * (TROA) = 0, IF *TAF* NOT ROLLED OUT.
  1562. *
  1563. * EXIT TO *PBC*, IF BATCH/CRM REQUEST.
  1564. * TO *PBT*, IF BATCH TRANSACTION REQUEST.
  1565. * TO *PBE*, IF INCORRECT BATCH REQUEST.
  1566. * TO *TSSC*, IF SYSTEM GENERATED MESSAGE.
  1567. *
  1568. * USES X - 0, 1, 2, 3, 4, 5, 6.
  1569. * A - 1, 2, 3, 6.
  1570. * B - 3, 4.
  1571. *
  1572. * CALLS BJT, RAC, RAN, TRI.
  1573.  
  1574.  
  1575. CSI SA3 TROA
  1576. ZR X3,CSI1 IF *TAF* NOT ROLLED OUT
  1577. RJ TRI ROLL *TAF* IN
  1578. RTIME ITIME UPDATE CURRENT TIME
  1579. CSI1 MX0 -6
  1580. SA2 SSRP
  1581. LX2 5-23 RIGHT JUSTIFY STATUS FIELD
  1582. BX4 -X0*X2
  1583. SA1 SSJN FETCH QUEUE PRIORITY FOR SUBSYSTEM ABORT
  1584. NZ X4,CSI2 IF NOT A *UCP* REQUEST
  1585. SA2 SSUH FIRST WORD OF *UCP* PARAMETERS
  1586. LX2 5-23 RIGHT JUSTIFY WORD COUNT
  1587. SA1 SSUP SECOND WORD OF *UCP* PARAMETERS
  1588. UX1 B3 GET FUNCTION CODE
  1589. SX5 JSFC ERROR RETURN CODE
  1590. SB4 CSIB NUMBER OF LEGAL FUNCTIONS
  1591. GT B3,B4,PBE IF INCORRECT FUNCTION CODE
  1592. SA1 B3+CSIA
  1593. SB4 X1 REQUEST PROCESSOR ADDRESS
  1594. BX2 -X0*X2 NUMBER OF PARAMETER WORDS PASSED
  1595. AX1 18 EXPECTED WORD COUNT
  1596. BX1 X1-X2
  1597. NZ X1,PBE IF ERROR IN WORD COUNT
  1598. JP B4 BRANCH TO REQUEST PROCESSOR
  1599.  
  1600. CSI2 SX3 X4-4
  1601. ZR X3,CSI3 IF A SUBSYSTEM ABORT MESSAGE
  1602. RJ BJT PROCESS BATCH JOB TEMINATION
  1603. EQ CSI5 GO ACKNOWLEDGE REQUEST
  1604.  
  1605. CSI3 SX2 X1-CDSI
  1606. NZ X2,CSI4 IF NOT *CDCS* ABORT
  1607. RJ RAC RECOVER FROM ABORT OF *CDCS*
  1608. SX2 X1-NMSI
  1609. EQ CSI5 ACKNOWLEDGE REQUEST
  1610.  
  1611. CSI4 SX2 X1-NMSI
  1612. NZ X2,CSI5 IF NOT *NAM* ABORT
  1613. RJ RAN RECOVER FROM ABORT OF *NAM*
  1614. CSI5 SA1 BFPT
  1615. BX6 X1
  1616. SA6 VSCR ACKNOWLEDGE REQUEST
  1617. EQ TSSC EXIT TO TASK TIME SLICING
  1618.  
  1619. CSIA BSS 0 BATCH REQUEST JUMP TABLE
  1620. VFD 36/0,6/BCWC,18/PBC FC=0 - BATCH/CRM REQUEST
  1621. VFD 36/0,6/BTWC,18/PBT FC=1 - BATCH TRANSACTION
  1622. CSIB EQU *-CSIA-1
  1623. EXIT SPACE 4,10
  1624. ** EXIT - PROGRAM STOP.
  1625. *
  1626. * *TAF* HAS SEVERAL PLACES WHERE IT CAN DETECT AN INTERNAL
  1627. * SOFTWARE ERROR OF FATAL PORPORTIONS. IF THIS HAPPENS,
  1628. * *TAF* BRANCHES TO *EXIT*.
  1629.  
  1630.  
  1631. EXIT SUBR ENTRY
  1632. PS PROGRAM STOP
  1633. EXI SPACE 4,15
  1634. ** EXI - REPRIEVE PROCESSOR.
  1635. *
  1636. *
  1637. * ENTRY (TROA) = *TAF* ROLL STATUS.
  1638. * (EXIA) = REPRIEVE PARAMETER BLOCK.
  1639. *
  1640. * EXIT ABORT, IF INTERNAL ERROR OR OPERATOR DROP.
  1641. * TERMINATE, IF OPERATOR IDLE DOWN.
  1642. *
  1643. * CALLS LOVL, NOF, TRI.
  1644. *
  1645. * MACROS ABORT, ENDRUN, MESSAGE, REPRIEVE.
  1646.  
  1647.  
  1648. EXI BSS 0 ENTRY POINT FOR *REPRIEVE*
  1649. SA1 EXIT
  1650. NZ X1,EXI3 IF TAF INTERNAL ERROR
  1651. SA1 TROA *TAF* ROLLOUT STATUS
  1652. ZR X1,EXI1 IF *TAF* IS ROLLED IN
  1653. RJ TRI ROLL *TAF* IN
  1654. EXI1 SA1 CURFL RESET CURRENT FL
  1655. SETRFL X1
  1656. SA1 EXIA+7
  1657. MX0 -12
  1658. BX3 -X0*X1 ERROR CODE
  1659. SX5 X3-ORET
  1660. ZR X5,EXI4 IF OVERRIDE ERROR CONDITION
  1661. EXI2 SYSTEM DMD,R DUMP EXCHANGE PACKAGE TO OUTPUT
  1662. ONSW 10B SET SENSE SWITCH 4 FOR TAF RESTART
  1663. RJ NOF NETOFF
  1664. REPRIEVE EXIA,RESET,77B
  1665.  
  1666. * TAF DETECTED AN INTERNAL ERROR.
  1667.  
  1668. EXI3 SA1 CURFL RESET CURRENT FL
  1669. SETRFL X1
  1670. MESSAGE EXIB * TAF INTERNAL ERROR.*
  1671. EQ EXI2 ABORT
  1672.  
  1673. * OPERATOR OVERRIDE
  1674.  
  1675. EXI4 MESSAGE EXIC * OPERATOR OVERRIDE.*
  1676. ENDRUN TERMINATE
  1677.  
  1678. EXIA VFD 36/0,12/25,2/0,9/1,1/0 REPRIEVE PARAMETER BLOCK
  1679. VFD 30/0,30/EXI
  1680. BSSZ 23
  1681. EXIB DATA C* TAF INTERNAL ERROR.*
  1682. EXIC DATA C* OPERATOR OVERRIDE.*
  1683. PRIN TITLE PROCESS TRANSACTION INPUT.
  1684. ** PRIN PRIN TRANSFERS TRANSACTION INPUT FROM THE RECEIVING
  1685. * BUFFER TO COMMUNICATION BLOCKS, AND QUEUES THEM UP
  1686. * FOR INITIAL TASK TO PROCESS.
  1687. *
  1688. * ENTRY (A4) = ADDRESS OF INPUT BUFFER.
  1689. * (X0) = COMMUNICATION BLOCK ADDRESS, IF IN *NAM* MODE.
  1690. *
  1691. * EXIT (X0) = 0, IF INPUT NOT PROCESSED.
  1692. * = COMMUNICATION BLOCK ADDRESS, OTHERWISE.
  1693. * (PRINA) = COMMUNICATION BLOCK ADDRESS, IF *ITASK* BUSY.
  1694. * = NEGATIVE, IF COMMUNICATION BLOCK OVERFLOW.
  1695. *
  1696. * USES A - 1, 2, 3, 4, 6, 7.
  1697. * B - 3, 5, 6.
  1698. * X - ALL.
  1699. *
  1700. * CALLS RCPT, RDCB, TRI.
  1701.  
  1702.  
  1703. PRIN SUBR ENTRY/EXIT
  1704. SA4 A4
  1705. LX4 59-55
  1706. NG X4,PRIN3 IF COMMUNICATE WITH NAM
  1707. SX5 B0 CLEAR PRIOR OVERFLOW FLAG
  1708. BX6 X6-X6
  1709. SA2 PRINA CHECK FOR PRIOR UNPROCESSED INPUT
  1710. SA3 TROA ROLL STATUS
  1711. NZ X2,PRIN6 IF AN OVERFLOW CONDITION EXISTS
  1712. PRIN1 ZR X4,PRINX IF NO INPUT TO PROCESS
  1713. ZR X3,PRIN2 IF NOT ROLLED OUT
  1714. RJ TRI ROLLIN TRANEX
  1715. PRIN2 SA4 A4+
  1716. PL X4,CSM IF COMMAND/STATUS
  1717. RJ RDCB TRANSFER DATA TO A COMMUNICATION BLOCK
  1718. NG X0,PRIN IF INPUT WAS FOR INTERACTIVE TASK
  1719. NZ X0,PRIN3 IF COMMUNICATION BLOCK AVAILABLE
  1720. SX6 400000B
  1721. SA6 PRINA SET C.B. OVERFLOW FLAG
  1722. EQ PRINX RETURN
  1723.  
  1724. * SET UP TRANSACTION TO BE PROCESSED BT INTIAL TASK.
  1725.  
  1726. PRIN2.1 ZR X3,PRIN3 IF NOT ROLLED OUT
  1727. RJ TRI ROLL IN *TAF*
  1728. PRIN3 TA1 CPAHL,VCPA INITIAL TASK C. B. CONTROL WORD
  1729. SB6 A1+CPACL-1 END OF COMMUNICATION BLOCKS FOR TASK
  1730. PRIN4 ZR X1,PRIN5 IF CONTROL WORD OPEN
  1731. SB5 A1
  1732. SA1 A1+B1
  1733. NE B5,B6,PRIN4 IF NOT END OF CONTROL WORDS
  1734. SX7 X0 COMMUNICATION BLOCK ADDRESS
  1735. BX0 X0-X0
  1736. SX6 B0+ INDICATE *ITASK* BUSY EVENT
  1737. SA7 PRINA SET OVERFLOW FLAG - NOTE IT IS C.B. ADDR
  1738. SA6 EVIT INDICATE *ITASK* BUSY EVENT
  1739. EQ PRINX RETURN - ITASK BUSY
  1740.  
  1741. PRIN5 MX2 1
  1742. TA4 1,VCPA CONTROL POINT WORD
  1743. MX3 1
  1744. SX0 X0 COMMUNICATION BLOCK ADDRESS
  1745. LX2 -5 INITIAL LOAD BIT
  1746. BX2 X2+X3 SET WAITING FOR CPU BIT
  1747. LX3 1+36
  1748. BX7 X2+X0
  1749. SA7 A1 SET ENTRY FOR INITIAL TASK
  1750. IX6 X4+X3 INCREMENT COMMUNICATION BLOCK COUNT
  1751. SB6 A4-B1
  1752. SB3 X4
  1753. SA6 A4
  1754. NZ B3,PRINX IF *ITASK* ACTIVE - RETURN
  1755. SA4 VFSCP FWA OF SUB-CONTROL POINTS
  1756. SB3 PRIN RETURN ADDRESS AFTER REQUESTING CPU
  1757. AX4 24
  1758. EQ RCPT REQUEST CPU FOR INITIAL TASK
  1759.  
  1760. * PROCESS INPUT OVERFLOW CONDITIONS.
  1761.  
  1762. PRIN6 SA6 A2 CLEAR OVERFLOW INDICATOR
  1763. BX0 X2
  1764. PL X2,PRIN2.1 IF OVERFLOW DUE TO A BUSY ITASK
  1765. SX5 B1 SET PRIOR OVERFLOW FLAG
  1766. EQ PRIN1
  1767.  
  1768. PRINA CON 0 INPUT OVERFLOW FLAG
  1769. TITLE CORE RESIDENT ROUTINES.
  1770. RAC SPACE 4,10
  1771. ** RAC - RECOVER FROM ABORT OF *CDCS*.
  1772. *
  1773. * *RAC* WILL ABORT THOSE TASKS WAITING FOR THE COMPLETION
  1774. * OF A *CDCS* REQUEST.
  1775. *
  1776. * ENTRY (VCPA) = FWA OF SUBCP TABLE.
  1777. *
  1778. * EXIT (CDST) = 1.
  1779. * CDCS ABORT FLAG SET IN SCP TABLE OR ROLLOUT TABLE
  1780. * IF TERMINAL WAS WAITING FOR CDCS RESPONSE OR CONNECTED
  1781. * TO CDCS AND ROLLED OUT, RESPECTIVELY.
  1782. *
  1783. * USES X - ALL.
  1784. * A - 2, 4, 5, 7.
  1785. * B - 5.
  1786. *
  1787. * CALLS SRO, SSM.
  1788. *
  1789. * MACRO MESSAGE.
  1790.  
  1791.  
  1792. RAC5 RJ SSM SUBSYSTEM MESSAGE
  1793.  
  1794. RAC SUBR ENTRY/EXIT
  1795. SX7 B1+
  1796. SA7 CDST INDICATE CDCS IS ABORTED
  1797. MESSAGE RACA * CDCS ABORT.*
  1798. MX0 -18
  1799. SB5 B0
  1800. TA2 0,VCPA FIRST SUBCONTROL POINT TABLE ENTRY
  1801. MX3 1 SET CDCS ABORTED FLAG
  1802. LX3 SCCDS-59
  1803. SX6 SSC5
  1804. RAC2 BX4 X2
  1805. SA5 A2+B1
  1806. SA2 A5+B1 NEXT SUBCONTROL POINT TABLE ENTRY
  1807. LX5 59-SCRCS
  1808. PL X5,RAC3 IF TASK NOT IN RECALL STATUS
  1809. SA4 X4-NUAPL+RCL GET RETURN ADDRESS
  1810. BX1 -X0*X4
  1811. IX7 X1-X6
  1812. NZ X7,RAC3 IF NOT WAITING FOR *CDCS* RESPONSE
  1813. LX5 59-59-59+SCRCS
  1814. BX7 X3+X5 SET CDCS ABORTED FLAG
  1815. SA7 A5
  1816. RAC3 SX7 X2 NEXT SUBCONTROL POINT TABLE ENTRY
  1817. SA2 X2
  1818. NZ X7,RAC2 IF MORE SUBCP TO SEARCH
  1819. RAC4 RJ SRO SEARCH ROLLOUT TABLE
  1820. ZR B5,RAC5 IF ROLLOUT TABLE SEARCH COMPLETED
  1821. SA2 B5+2 GET WORD 2 OF ROLLOUT TABLE
  1822. BX3 X2
  1823. LX2 59-RTCDS
  1824. PL X2,RAC4 IF TASK IS NOT CONNECTED TO *CDCS*
  1825. MX7 1 SET ABORT FLAG
  1826. LX7 RTABS-59
  1827. BX7 X3+X7
  1828. SA7 A2
  1829. EQ RAC4 CONTINUE TO SEARCH THE ROLLOUT TABLE
  1830.  
  1831. RACA DATA C* ABORT OF CDCS DETECTED.*
  1832. RSP SPACE 4,15
  1833. ** RSP - RESTORE SUBCONTROL POINT REGISTERS.
  1834. *
  1835. * ENTRY (SREG) = 24/0,18/SA,18/SCP
  1836. * SA = FWA OF ACTIVE TASK SYSTEM AREA.
  1837. * SCP = FWA OF ACTIVE TASK SUBCONTROL POINT TABLE.
  1838. *
  1839. * EXIT (B2) = FWA OF ACTIVE TASK SYSTEM AREA.
  1840. * (B7) = FWA OF ACTIVE TASK SUBCONTROL POINT TABLE.
  1841. *
  1842. * USES A - 1.
  1843. * B - 2, 7.
  1844. * X - 1.
  1845.  
  1846.  
  1847. RSP SUBR ENTRY/EXIT
  1848. SA1 SREG FWA OF TASK SYSTEM AREA AND SUBCP
  1849. SB7 X1
  1850. AX1 18
  1851. SB2 X1
  1852. EQ RSPX RETURN
  1853. SRO SPACE 4,15
  1854. ** SRO - SEARCH ROLLOUT TABLE.
  1855. *
  1856. * ENTRY (B5) = 0 IF INITIAL CALL.
  1857. * A1/X1/B3/B6 = LAST EXIT VALUES IF NOT INITIAL CALL.
  1858. *
  1859. * EXIT (B5) = ADDRESS OF RESERVED ROLLOUT TABLE ENTRY.
  1860. * (B5) = 0 IF NO MORE RESERVED ENTRIES.
  1861. * (B6) = CURRENT SEARCH POSITION.
  1862. * (B3) = WORD OVERFLOW COUNTER.
  1863. * (A1/X1) = CURRENT ROLLOUT TABLE WORD BEING SEARCHED.
  1864. *
  1865. * USES A - 1.
  1866. * B - 3, 5, 6.
  1867. * X - 1, 2, 7.
  1868.  
  1869.  
  1870. SRO SUBR ENTRY/EXIT
  1871. MX7 1
  1872. NZ B5,SRO1 IF NOT INITIAL CALL
  1873. SB3 B0
  1874. SA1 TROM ROLLOUT TABLE MAP ALLOCATION
  1875. SB6 B1
  1876. BX1 X1+X7 SEARCHING FOR ZERO BITS
  1877. SRO1 NX1,B5 X1
  1878. SB6 B6+B5 ADVANCE POSITION
  1879. SB5 B6-NROL-1
  1880. NZ X1,SRO2 IF NOT AT END OF WORD
  1881. SA1 A1+1
  1882. SB3 B3+47
  1883. SB6 B3+B1
  1884. BX1 X1+X7
  1885. EQ SRO1 CONTINUE WITH NEXT WORD
  1886.  
  1887. SRO2 ZR B5,SROX IF END OF SEARCH
  1888. LX7 -12
  1889. BX1 X1+X7
  1890. SX7 TROLE LENGTH OF ROLLOUT TABLE ENTRY
  1891. SX2 B6
  1892. IX2 X2*X7
  1893. SB5 X2-TROLE+TROL FWA OF ROLLOUT TABLE ENTRY
  1894. EQ SROX RETURN
  1895. TITLE ROLLIN AND ROLLOUT ROUTINES.
  1896. TRO SPACE 4,20
  1897. ** TRO - ROLLOUT.
  1898. *
  1899. * WHEN NO TRANSACTIONS ARE IN PROCESS OR HAVE
  1900. * BEEN RECEIVED FOR N MILLESECONDS, THE TRANSACTION
  1901. * SUBSYSTEM ROLLS MOST OF ITS FIELD LENGTH
  1902. * TO A FILE, REDUCES ITS FIELD LENGTH,
  1903. * AND IDLES UNTIL A TRANSACTION OR A K-DISPLAY COMMAND
  1904. * IS RECEIVED.
  1905. *
  1906. * EXIT TO *TMDC*.
  1907. *
  1908. * USES X - 1, 2, 3, 4, 5, 6, 7.
  1909. * A - 1, 3, 4, 5, 6, 7.
  1910. * B - 5.
  1911. *
  1912. * CALLS NGL, PBT, PRIN, SRO, TRI.
  1913. *
  1914. * MACROS CONSOLE, MEMORY, MESSAGE, RECALL, REWIND, RTIME,
  1915. * WRITER.
  1916.  
  1917.  
  1918. TRO SX7 0
  1919. SA1 VTST O-DISPLAY CONTROL WORD
  1920. SA7 A1 SET O-DISPLAY INACTIVE
  1921. BX6 X1
  1922. SA6 TROD SAVE TST ADDRESS POINTERS
  1923. SA1 TROB+1 FIRST
  1924. SX7 X1
  1925. SA7 A1+B1 IN
  1926. SA7 A7+B1 OUT
  1927. SX7 X7+100B
  1928. SA7 A7+B1 LIMIT
  1929. REWIND TROB,R REWIND ROLLOUT FILE
  1930. SX6 TRFL IDLE FIELD LENGTH
  1931. SA1 CURFL CURRENT FIELD LENGTH
  1932. LX6 30
  1933. BX7 X1
  1934. SA7 TROB+4 LIMIT
  1935. SA6 TROC
  1936. SX7 X7-1
  1937. SA7 TROB+2 IN
  1938. WRITER TROB,R WRITE OUT FILED LENGTH TO DISK
  1939. CONSOLE KIDL SWITCH TO IDLE K DISPLAY
  1940. MEMORY CM,MRSW,R,TRFL REDUCE FL
  1941. RTIME TROA REAL TIME CLOCK AT START OF ROLLOUT
  1942. MESSAGE TROE,1 * TAF IDLE.*
  1943. MESSAGE ZWORD,2
  1944.  
  1945. * IDLE UNTIL INPUT IS AVAILABLE.
  1946.  
  1947. TRO2 SA1 TROA
  1948. ZR X1,TMDC RESUME NORMAL PROCESSING
  1949. RECALL
  1950. SA1 B0 CHECK RA+0
  1951. LX1 59-15
  1952. PL X1,TRO2.1 IF NO IDLE DOWN
  1953. BX6 X6-X6 CLEAR RA+0
  1954. SA6 B0
  1955. RJ TRI ROLL IN TAF
  1956. RJ IDL SET IDLE DOWN FLAG
  1957. EQ TMDC ENTER MAIN LOOP
  1958.  
  1959. TRO2.1 RTIME LTIME REAL TIME CLOCK
  1960. SA4 LTIME
  1961. SA3 TROA TIME AT ROLLOUT
  1962. MX2 -36
  1963. SA5 TROTL
  1964. IX1 X4-X3
  1965. BX6 -X2*X1 TIME SINCE ROLLOUT
  1966. IX3 X5-X6
  1967. PL X3,TRO4 IF NOT TIME FOR ROLLIN
  1968. TRO3 SA1 TROA
  1969. ZR X1,TMDC IF ALREADY ROLLED IN
  1970. RJ TRI ROLL IN
  1971. EQ TMDC ENTER MAIN LOOP
  1972.  
  1973. TRO4 SA1 VSCR
  1974. NG X1,CSI IF SUBSYSTEM MESSAGE RECEIVED
  1975. SA4 INRB
  1976. RJ PRIN CHECK FOR INPUT
  1977. RJ NGL GET INPUT FROM NAM
  1978. SA1 KBUF
  1979. NZ X1,TRO3 IF ACTIVITY, ROLLIN *TAF*
  1980. RJ CCS CHECK CDCS STATUS
  1981. SB5 B0+
  1982.  
  1983. * IF ANY ROLLOUT ENTRIES HAVE TIMED OUT, ROLLIN *TAF*.
  1984.  
  1985. TRO6 RJ SRO SEARCH ROLLOUT TABLE
  1986. ZR B5,TRO2 IF NO ROLLOUT ENTRIES TIMED OUT
  1987. SA5 B5 ROLLOUT ENTRY
  1988. LX5 59-RTBTR
  1989. PL X5,TRO6 IF NOT TIMED ROLLOUT
  1990. SA4 LTIME
  1991. LX5 59-RTBID+24-59+RTBTR
  1992. MX7 -24
  1993. LX4 24
  1994. BX4 -X7*X4 CURRENT TIME IN SECONDS
  1995. BX3 -X7*X5 ROLLIN TIME IN SECONDS
  1996. IX4 X3-X4
  1997. PL X4,TRO6 IF TIME NOT EXPIRED
  1998. EQ TRO3 ROLL *TAF* IN
  1999.  
  2000. TROA BSSZ 1 ROLLOUT FLAG WORD
  2001. TROB FILEB TRFL,TRFL ROLLOUT FET
  2002. TROC BSS 1 STATUS WORD FOR MEMORY REQUESTS
  2003. TROD BSS 1 SAVE TST POINTERS
  2004. TROE DATA C* TAF IDLE.*
  2005. TROF CON 0 ROLLOUT INHIBIT FLAG
  2006. TRI SPACE 4,15
  2007. ** TRI - ROLLIN FIELD LENGTH.
  2008. *
  2009. * TO RESUME PROCESSING AFTER A ROLLOUT, THIS ROUTINE
  2010. * REQUESTS FIELD LENGTH AND READS THE ROLLOUT FILE
  2011. * BACK OVER THE NEW FIELD LENGTH.
  2012. *
  2013. * USES A - 1, 2, 6, 7.
  2014. * X - 1, 2, 4, 6, 7.
  2015. *
  2016. * CALLS EXIT.
  2017. *
  2018. * MACROS CONSOLE, MEMORY, MESSAGE, READSKP, REWIND.
  2019.  
  2020.  
  2021. TRI SUBR ENTRY/EXIT
  2022. TRI1 SA1 CURFL FL REQUIRED FOR ROLLIN
  2023. MEMORY CM,MRSW,R,X1 REQUEST FL
  2024. SA2 MRSW GET STATUS WORD
  2025. MX4 30
  2026. BX6 X4*X2 NEW FL
  2027. SA1 CURFL REQUEST FL
  2028. LX6 30
  2029. IX2 X6-X1
  2030. NG X2,TRI1 IF FL NOT GRANTED
  2031. REWIND TROB ROLLOUT FILE
  2032. READSKP TROB,,R READ IN FIELD LENGTH
  2033. CONSOLE KCTRL1 SWITCH TO MAIN K DISPLAY
  2034. MESSAGE VERM,1 * VERSION NUMBER.*
  2035. MESSAGE ZWORD,2
  2036. SA1 TROD RESTORE TST ADDRESS POINTERS
  2037. BX7 X7-X7
  2038. BX6 X1
  2039. SA7 TROA CLEAR ROLLOUT FLAG
  2040. SA6 VTST SET O-DISPLAY ACTIVE
  2041. EQ TRIX RETURN
  2042.  
  2043.  
  2044. * DEFINE ERP$ FOR COMCCIO ERROR RETURN.
  2045.  
  2046. ERP$ BSS 0 ENTRY FROM COMCCIO FOR ERRORS
  2047. SA1 TROA
  2048. ZR X1,ERP IF TRANEX NOT ROLLED OUT
  2049. RJ EXIT FORCE ABORT IF ROLLED OUT
  2050. SPACE 4
  2051. * IDLE K DISPLAY.
  2052.  
  2053. KIDL VFD 24/KBUF,18/0,18/KIBF
  2054. KIBF CON 2
  2055. KDL 28,T,(TAF STATUS)
  2056. KSEQ KDL 35,,( )
  2057. KDL 15,K,(TRANSACTION SEQUENCE NUMBER)
  2058. K SET K+5
  2059. KDL 29,K,(- IDLE -)
  2060. CON 0
  2061. KBUF BSSZ 5 K-DISPLAY KEYBOARD BUFFER
  2062. DATA 1L. ALLOW COMMANDS WITH MISSING TERMINATOR
  2063.  
  2064. * COMMON DECKS USED BY ROLLIN PROCESSOR
  2065.  
  2066. *CALL COMCCIO
  2067. *CALL COMCCPM
  2068. *CALL COMCSYS
  2069. LIST X
  2070. *CALL COMKNWC
  2071. LIST -X
  2072.  
  2073.  
  2074. .1 SET *+77B
  2075. TRFL EQU .1/100B*100B ROLLOUT FIELD LENGTH
  2076. TSSC TITLE TIME SLICE SUBCONTROL POINTS.
  2077. ** TSSC - TIME SLICE SUBCONTROL POINTS.
  2078. *
  2079. * *TSSC* ACTIVATES SUBCP-S WHICH ARE REQUESTING THE CPU.
  2080. * IF THERE ARE ANY OUTSTANDING DATA MANAGER REQUESTS, *TSSC*
  2081. * BRANCHES TO THE DATA MANAGER BEFORE ACTIVATING A SUBCP.
  2082. * *TSSC* MONITORS PPU COMPLETION BITS AND REINITIATES ROUTINES
  2083. * WHEN THEIR PPU CALL IS COMPLETE.
  2084. * AT ABSOLUTE TIME INTERVALS, CONTROL IS PASSED BACK TO THE
  2085. * MAIN LOOP FOR TIME DEPENDENT AND RECALL DEPENDENT ROUTINES.
  2086. *
  2087. * ENTRY (DTIME) = TIME AT LAST DATA MANAGER CALL.
  2088. * (TDBAA) = *TOTAL* D.M. STATUS WORD.
  2089. * (TPLW) = STATUS WORD FOR OUTSTANDING PPU REQUESTS.
  2090. * (BTIME) = REAL TIME CLOCK AT LAST REJECTED *SIC*.
  2091. * (RSCH) = TASK SCHEDULER REQUEST WORD.
  2092. * (ITIME) = REAL TIME CLOCK AT LAST INPUT PROCESSING.
  2093. * (PBCA) = NUMBER OF OUTSTANDING *BATCH/CRM* REQUESTS.
  2094. *
  2095. * EXIT TO *TMDC* IF NO SUBCP REQUESTING THE CPU OR IF TIME
  2096. * FOR TIME DEPENDENT ROUTINE.
  2097. * TO *TERR23* IF *TOTAL* D.M. REQUESTED TASK ABORTED.
  2098. * TO *TERR16* IF OPERATOR DROP OR D.M. ABORT.
  2099. * TO *TRCL1* IF TASK RESTART AFTER RECALL.
  2100. * TO *BRC* IF ACTIVE *BATCH/CRM* REQUEST.
  2101. * TO ACTIVATE THE SUBCP WITH RETURN TO *SRTN*,
  2102. * IF NONE OF THE ABOVE CONDITIONS EXIST.
  2103. * (LTIME) = CURRENT REAL TIME CLOCK.
  2104. * (B1), (B2) AND (B7) ARE RESTORED.
  2105. *
  2106. * USES X - ALL.
  2107. * A - ALL.
  2108. * B - ALL.
  2109. *
  2110. * CALLS CLJF, /DBM/DMGR, EXIT, MVE=, PDMR,
  2111. * PRIN, RSP, SCHD, SNS, TOTAL,
  2112. * NGL (*TAFNAM* ONLY).
  2113. *
  2114. * MACROS RTIME, XCHNGE.
  2115.  
  2116.  
  2117. TSSC RTIME LTIME CURRENT TIME
  2118. RJ ATW ADVANCE *TAF* WORK
  2119. RJ RSP RESTORE SUBCP REGISTERS
  2120. SX7 DMMTL MINIMUM TIME BETWEEN DATA MANAGER RUNS
  2121. SA3 DTIME LAST DATA MANAGER CALLED TIME
  2122. SA4 LTIME CURRENT TIME
  2123. MX2 -36
  2124. IX3 X4-X3
  2125. BX3 -X2*X3 MILLISECONDS SINCE LAST DATA MANAGER RUN
  2126. IX3 X7-X3
  2127. PL X3,TSSC3 IF MINIMUM TIME NOT ELAPSED
  2128. BX6 X4
  2129. SA6 A3
  2130. SA1 TDBAA TOTAL D.M. STATUS
  2131. SX2 X1+ NUMBER OF OUTSTANDING *TOTAL* REQUESTS
  2132. ZR X2,TSSC1 IF NO OUTSTANDING TOTAL REQUESTS
  2133. TSSCA RJ EXIT CALL *TOTAL* - MODIFIED BY *PRE*
  2134. * RJ =XTOTAL (PROCESS *TOTAL* DATA MANAGER REQUEST)
  2135. SB1 1
  2136. RJ RSP RESTORE SUBCONTROL POINT REGISTERS
  2137. RJ PDMR PROCESS DATA MANAGER REPLIES
  2138. TSSC1 SA1 AAMA AAM STATUS WORD
  2139. SX2 X1 NUMBER OF OUTSTANDING AAM REQUESTS
  2140. ZR X2,TSSC3 IF NO AAM REQUESTS
  2141. TSSCB RJ 0 MODIFIED BY *PRE*
  2142. * RJ =XAMI (CALL ADVANCED METHODS INTERFACE)
  2143. SB1 1
  2144. RJ RSP RESTORE SUBCONTROL POINT REGISTERS
  2145. ZR B2,TSSC2 IF NO ACTIVE TASK
  2146. SA1 B7
  2147. SX7 B7
  2148. SB2 X1-NUAPL RA OF ACTIVE TASK
  2149. SX1 B2 UPDATE (SREG)
  2150. LX1 18
  2151. BX7 X1+X7
  2152. SA7 SREG
  2153. TSSC2 RJ PDMR PROCESS DATA MANAGER REPLIES
  2154. TSSC3 SA1 VSCR
  2155. NG X1,CSI IF SUBSYSTEM MESSAGE RECEIVED
  2156. SA1 TPLW
  2157. ZR X1,TSSC5 IF NO OUTSTANDING PPU REQUESTS
  2158. SB4 X1
  2159. BX7 X7-X7
  2160. ZR B4,TSSC4 IF NOT A TASK LOAD
  2161. SA2 B4
  2162. LX2 -1
  2163. PL X2,TSSC4 IF TASK LOAD NOT COMPLETED
  2164. SB4 TSSC4 RETURN ADDRESS
  2165. SA2 TL+5
  2166. ZR X2,SCHD12 IF NOT WAITING ON INTERLOCK
  2167. EQ SCHD15 RECHECK INTERLOCK
  2168.  
  2169. TSSC4 SA1 TPLW
  2170. LX1 -18
  2171. SB4 X1
  2172. ZR B4,TSSC5 IF NO ONE WAITING ON DATA FILE
  2173. SA3 BTIME LAST *SIC* ATTEMPT
  2174. SX7 SICTL-1 MINIMUM TIME BETWEEN *SIC* RETRYS
  2175. SA4 LTIME CURRENT TIME
  2176. MX2 -36
  2177. IX3 X4-X3
  2178. BX3 -X2*X3 MILLISECONDS SINCE LAST *SIC* ATTEMPT
  2179. IX3 X7-X3
  2180. SB3 TSSC5 RETURN ADDRESS
  2181. NG X3,SNS IF TIME TO RETRY *SIC*
  2182. TSSC5 RJ CLJF CHECK NON BUFFERED JOURNALS FOR COMPLETION
  2183. SA1 RSCH
  2184. ZR X1,TSSC6 IF SCHEDULER NOT REQUESTED
  2185. BX7 X7-X7
  2186. SA7 A1
  2187. RJ SCHD ACTIVATE THE TASK SCHEDULER
  2188. TSSC6 SA1 PBCA BATCH CONCURRENCY STATUS
  2189. ZR X1,TSSC7 IF NO BATCH CONCURRENCY REQUESTS
  2190. SA1 BCTF TOGGLE BATCH CONCURRENCY FLAG
  2191. MX0 1
  2192. BX6 X0-X1
  2193. SA6 A1
  2194. NG X1,TSSC7 IF NOT SECOND PASS THROUGH TSSC
  2195. SB6 B0 NO *BCT* ADDRESS
  2196. EQ BRC PROCESS CONTINUATION OF REQUEST
  2197.  
  2198. TSSC7 ZR B2,TMDC IF NO SUBCP REQUESTING THE CPU
  2199. SA2 ITIME
  2200. SX7 TMDTL
  2201. SA3 LTIME
  2202. MX6 -36
  2203. IX4 X3-X2 TIME SINCE LAST *TMDC* EXECUTION
  2204. BX6 -X6*X4 MILLISECONDS SINCE LAST SERVICING
  2205. IX2 X7-X6
  2206. NG X2,TMDC IF TIME FOR TIME DEPENDENT ROUTINE
  2207. SA4 INRB
  2208. ZR X4,TSSC8 IF NO TRANSACTION INPUT RECEIVED
  2209. RJ PRIN PROCESS INPUT
  2210. TSSC8 SA5 B7+B1
  2211. ZR B7,TMDC IF NO TASK SELECTED
  2212. MX7 60-SCTMN-SCCDN CLEAR TERMINATION AND CDCS ABORT FLAG
  2213. ERRNZ SCTMS-SCCDS-1 *SCTM* AND*SCCD* MUST BE ADJACENT
  2214. LX7 SCTMS-SCTMN-SCCDN+1
  2215. BX7 X7*X5
  2216. LX5 59-SCTMS
  2217. SA7 A5
  2218. NG X5,SCT8 IF TASK IS TO BE TERMINATED
  2219. LX5 59-SCCDS-59+SCTMS
  2220. NG X5,SSC13 IF CDCS ABORTED
  2221. LX5 59-SCTAS-59+SCCDS
  2222. PL X5,TSSC9 IF ABORT FLAG NOT SET
  2223. SA2 B2+DMEC DATA MANAGER ERROR CODE
  2224. NG X2,TERR23 IF DATA MANAGER REQUESTED TASK ABORT
  2225. EQ TERR16 OPERATOR DROP OR D.M. ABORT OCCURRED
  2226.  
  2227. TSSC9 LX5 59-SCRCS-59+SCTAS
  2228. NG X5,TRCL1 IF TASK RESTART AFTER RECALL
  2229. LX5 59-SCDRS-59+SCRCS
  2230. BX2 X5
  2231. LX5 59-SCTAS-59+SCDRS
  2232. NG X2,TERR16 IF DROPPED BY OPERATOR
  2233. LX5 59-59-59+SCTAS
  2234. SB4 X5
  2235. ZR B4,TSSC10 IF NO C.B. LOADED FOR TASK
  2236. SA2 X5+
  2237. NG X2,TSSC18 IF RESIDENT C.B. REQUESTING CPU
  2238. RJ EXIT FATAL ERROR IF THIS POINT REACHED
  2239.  
  2240. * FIND COMMUNICATION BLOCK REQUESTING THE CPU.
  2241.  
  2242. TSSC10 SB6 B7+CPAHL+CPACL
  2243. SA1 B7+CPAHL START OF STATUS WORDS
  2244. TSSC11 NG X1,TSSC12 IF AN ENTRY FOUND
  2245. SA1 A1+B1
  2246. SB5 A1-B6
  2247. NZ B5,TSSC11 IF NOT AT END OF LIST
  2248. RJ EXIT FATAL ERROR IF THIS POINT REACHED
  2249.  
  2250. * MOVE COMMUNICATION BLOCK TO TASK.
  2251.  
  2252. TSSC12 SA5 X1
  2253. SX2 X1+CMBHL COMMUNICATIONS BLOCK ADDRESS
  2254. BX6 X5
  2255. SA3 A5+B1 TRANSFER FIRST TWO WORDS OF C.B.
  2256. SX1 CMBL-CMBHL NUMBER OF WORDS ACCESSABLE TO TASK
  2257. MX0 -18
  2258. MX7 -CBTSN MASK FOR SEQUENCE NUMBER
  2259. SA4 B7+B1 WORD WITH CURRENT CM RESIDENT C.B. POINTER
  2260. SA6 B2+CB1C
  2261. LX6 CBTSN-1-CBTSS RIGHT JUSTIFY SEQUENCE NUMBER
  2262. BX7 -X7*X6
  2263. SA7 B2+TRID SET DEFAULT TRANSACTION IDENTIFIER
  2264. BX7 X3
  2265. SX6 A1
  2266. SX3 B2+NUAPL+SUAC START OF COMMUNICATION BLOCK IN TASK
  2267. BX0 X0*X4 MASK OUT OLD C.B. POINTER
  2268. SA7 A6+B1
  2269. IX6 X0+X6 ADD IN NEW STATUS WORD POINTER
  2270. SA6 A4
  2271. SX0 X3+
  2272. SA4 B7 READ SUBCP HEADER TABLE
  2273. LX4 59-57
  2274. NG X4,TSSC13 IF SOLICITED COMMUNICATION BLOCK LOAD
  2275. PL X6,TSSC13 IF NOT A SYSTEM TASK
  2276. SA7 B2+NUAPL+100B
  2277. BX6 X5 MOVE FIRST TWO WORDS OF C.B. TO USER AREA
  2278. SA6 A7-B1
  2279. TSSC13 SA5 A1
  2280. LX5 5 POSITION INITIAL LOAD BIT
  2281. NG X4,TSSC16 IF SOLICITED COMMUNICATION BLOCK LOAD
  2282. SA4 X2-CMBHL+CBITW
  2283. LX4 59-CBITS
  2284. MX7 -CBWCN
  2285. PL X4,TSSC15 IF NOT INITIAL TRANSFER TO C.B.
  2286. SA4 X2-CMBHL+CBWCW GET COUNT OF WORDS TO MOVE
  2287. BX1 -X7*X4 ONLY MOVE INPUT DATA IN C.B.
  2288. SB4 X1-CBDL-CBUL
  2289. SB5 -B4 CLEAR REST OF TASK C.B. AREA
  2290. BX7 X7-X7 CLEAR USER AREA IN C.B.
  2291. SB6 B2+NUAPL+SUAC+CMBL-CMBHL-CBTL-1
  2292. SA7 B6 LWA OF USER C.B. AREA
  2293. TSSC14 SB5 B5-B1
  2294. SA7 A7-B1
  2295. NZ B5,TSSC14 IF ENTIRE USER AREA NOT CLEAR
  2296. SA4 PDATE
  2297. BX6 X4
  2298. SX1 X1+CMBRL
  2299. SA6 B6+CBTL PUT DATE/TIME IN C.B.
  2300. TSSC15 RJ MVE= MOVE C.B. TO SUBCP
  2301. TSSC16 PL X5,TSSC18 IF NOT AN INITIAL TASK LOAD
  2302.  
  2303. * PROCESS INITIAL TASK LOAD BY INITIALIZING EXCHANGE PACKAGE
  2304. * AND COMMUNICATION AREA AS THE PRODUCT SET OBJECT
  2305. * ROUTINES EXPECT FROM EITHER *1AJ* OR THE *CYBER* LOADER.
  2306.  
  2307. SA1 B7+B1
  2308. MX3 18
  2309. SA2 B7
  2310. LX1 24
  2311. BX6 X3*X1 ENTRY POINT
  2312. SX7 X2 RA
  2313. LX2 24
  2314. BX4 X3*X2 FL
  2315. LX6 -6
  2316. LX4 -24
  2317. BX6 X6+X4 SET P AND A0=FL
  2318. LX4 18
  2319. SA6 B2
  2320. LX7 36
  2321. SA7 B2+B1 SET RA
  2322. BX6 X4
  2323. SA6 A7+B1 SET FL
  2324. MX1 1
  2325. .EM SX7 EEMC SET DEFAULT ERROR EXIT MODE
  2326. LX7 59-11
  2327. BX6 -X1*X5 MASK OFF INITIAL LOAD BIT
  2328. LX6 -5
  2329. SA7 A6+B1 EXIT MODE
  2330. SX7 DTSTL DEFAULT TIME SLICE LIMIT
  2331. SA6 A5
  2332. LX7 30 POSITION TIME SLICE LIMIT
  2333. BX6 X6-X6
  2334. SA6 A7+B1 ZERO OUT REST OF EXCHANGE PACKAGE
  2335. SA7 B2+TSAC TIME SLICE CONTROL WORD
  2336. SA6 A6+B1
  2337. SA6 A6+B1
  2338. .CEJ SA1 X0 GET DATA BASE NAME
  2339. SA6 B2+ERXC ERROR RETRY ADDRESS
  2340. MX7 1 ** POSITION DEPENDENT INSTRUCTION
  2341. SX6 TROT SET TRANSACTION ORIGIN TYPE IN *JOPR*
  2342. LX6 24
  2343. BX7 X7+X6
  2344. SA7 B2+NUAPL+XJPR SET CEJ/MEJ PRESENT STATUS
  2345. SA6 B2+TOWC CLEAR TERMINAL OUTPUT COUNT
  2346. SX7 B0+
  2347. SA7 B2+ROWC CLEAR ROLLOUT WORD COUNT FOR TERMINAL
  2348. .CMU MX4 -12
  2349. SX6 MAXRA DEFAULT SYSTEM REQUEST COUNT
  2350. MX7 1 ** POSITION DEPENDENT INSTRUCTION
  2351. SA2 B7 GET TASK FL
  2352. LX2 SCFLN-SCFLS-1
  2353. SX5 X2
  2354. BX7 X5+X7 ADD TASK FL
  2355. SA7 B2+NUAPL+104B SET FL IN WORD 104B
  2356. SA7 B2+NUAPL+LWPR SET CMU PRESENT STATUS
  2357. LX6 30
  2358. BX7 X7-X7
  2359. SA6 B2+RA1C COUNT OF NUMBER OF RA(S)+1 CALLS
  2360. SA7 B2+NUAPL RA(S)
  2361. LX1 -48
  2362. BX6 X6-X6
  2363. SA6 A7+B1 RA(S)+1
  2364. BX7 -X4*X1
  2365. SA6 A6+1 RA(S)+2 = 0 IMPLIES NO PARAMETERS
  2366. SA7 B2+DBNC DATA BASE NAME TASK IS VALIDATED FOR
  2367. SA5 B2+NUAPL+100B-20B+2 READ TASK NAME FROM *77-TABLE*
  2368. SA6 B2+BWCC BRANCH COUNT
  2369. SA6 B2+WICB+3 CLEAR ROLLOUT TABLE ADDRESS
  2370. MX7 42
  2371. SA6 B2+DMEC CLEAR DATA MANAGER ERROR CODE
  2372. BX7 X7*X5
  2373. SA6 B2+TOTC *TOTAL* DATA MANAGER REQUEST COUNT
  2374. SA6 B2+TSQN CLEAR QUARTER NANO-UNIT COUNT
  2375. SA7 B2+NUAPL+PGNR SET TASK NAME INTO *PGNR*
  2376. SA6 B2+SECR CLEAR *SECURE* REQUEST
  2377. SA6 B2+RERU CLEAR *RERUN* REQUEST
  2378. TSSC17 SA1 B2+CB2C GET COMMUNICATION BLOCK ADDRESS
  2379. SA4 X1+CBITW
  2380. LX4 59-CBITS
  2381. MX6 -59
  2382. BX6 -X6*X4 CLEAR INITIAL TRANSFER BIT
  2383. LX6 CBITS-59
  2384. SA6 A4
  2385. SA3 X1+CBRTW
  2386. BX4 X3
  2387. LX3 59-CBRTS
  2388. LX4 59-CBLCS
  2389. SX7 TSSC17 RETURN ADDRESS
  2390. PL X3,TSSC18 IF NOT RECOVERABLE TRANSACTION
  2391. PL X4,TRCL2 IF INPUT NOT LOGGED
  2392.  
  2393. * ACTIVATE THE SUBCP.
  2394.  
  2395. TSSC18 XCHNGE B2,TSKTL
  2396.  
  2397. SRTN TITLE PROCESS RETURN FROM SUBCP.
  2398. ** SRTN - PROCESS RETURN FROM SUBCP.
  2399. *
  2400. * *SRTN* CHECKS ERROR EXIT FLAGS AND SYSTEM REQUESTS FROM THE
  2401. * SUBCP. IF AN SYSTEM REQUEST IS PRESENT AND NO FATAL ERROR
  2402. * OCCURRED, CONTROL WILL BE GIVEN TO THAT REQUEST PROCESSOR.
  2403. *
  2404. * ENTRY (X6) = 12/2000B+ERROR FLAG,30/0,18/RA OF SUBCP.
  2405. * (X7) = 60/QUARTER NANO-UNITS USED BY TASK.
  2406. *
  2407. * EXIT (A5) = ADDRESS OF TASK SYSTEM REQUEST.
  2408. * (X1) = TASK FL.
  2409. * (X5) = SYSTEM REQUEST.
  2410. * (B2) = FWA OF TASK SYSTEM AREA.
  2411. * (B3) = (B5) = TASK RA.
  2412. * (B7) = FWA OF TASK SUBCP TABLE ENTRY.
  2413. * TO SYSTEM REQUEST PROCESSOR IF REQUEST PRESENT AND NO
  2414. * FATAL ERROR OCCURRED.
  2415. * TO *TERR15* IF TASK TIME LIMIT EXCEEDED.
  2416. * TO *TERP* IF ERROR FLAG INDICATES A NON-TIME-LIMIT
  2417. * ERROR AND NO ERROR RETRY ADDRESS IS PRESENT.
  2418. * TO *TERR14* IF NUMBER OF RA+1 CALLS EXCEEDS LIMIT.
  2419. * TO *TERR4* IF ILLEGAL RA+1 REQUEST.
  2420. * TO *TSSC* IF NO RA+1 REQUEST IS PRESENT AND NO
  2421. * FATAL ERROR OCCURRED OR IF AN ERROR
  2422. * OCCURRED AND AN ERROR RETRY ADDRESS
  2423. * IS PRESENT.
  2424. *
  2425. * USES X - 1, 3, 4, 5, 6, 7.
  2426. * A - 1, 3, 4, 5, 6, 7.
  2427. * B - 3, 4, 5.
  2428. *
  2429. * CALLS TXT.
  2430.  
  2431.  
  2432. SRTN SA1 B2+TSQN UPDATE TASK QUARTER NANO-UNIT COUNTER
  2433. UX6,B4 X6 EXIT FLAG
  2434. IX7 X1+X7
  2435. SA5 X6+B1 READ SYSTEM REQUEST
  2436. SA7 A1
  2437. NZ B4,SRTN1 IF TASK ERROR
  2438. SB3 X6+ RA
  2439. NZ X5,SRTN4 IF SYSTEM REQUEST PRESENT
  2440. EQ TSSC RESUME SUBCP PROCESSING
  2441.  
  2442. * CHECK EXIT CONDITIONS.
  2443.  
  2444. SRTN1 SX6 B4-TLET
  2445. NZ X6,SRTN3 IF TIME-SLICE NOT EXCEEDED
  2446. SA4 B2+TSAC
  2447. SX6 B1+
  2448. IX7 X4+X6 INCREMENT TIME COUNT
  2449. AX4 30 RIGHT JUSTIFY TIME LIMIT
  2450. SX6 X7 CLEAR UPPER 42 BITS
  2451. IX4 X4-X6 LIMIT-COUNT
  2452. SA7 A4+ RESET TIME COUNT
  2453. NG X4,SRTN2 IF TASK TIME LIMIT EXCEEDED
  2454. NZ X5,SRTN4 IF SYSTEM REQUEST PRESENT
  2455. EQ TSSC RESUME SUBCP PROCESSING
  2456.  
  2457. SRTN2 RJ TXT SET UP AND STORE INTERNAL TRACE PACKET
  2458. EQ TERR15 TASK TIME LIMIT EXCEEDED
  2459.  
  2460. SRTN3 RJ TXT SET UP AND STORE INTERNAL TRACE PACKET
  2461. SA4 B2+ERXC ERROR RETRY ADDRESS
  2462. LX4 -18
  2463. SX1 X4
  2464. ZR X1,TERP IF NO ERROR EXIT ADDRESS
  2465. BX7 X7-X7
  2466. MX6 24
  2467. SA7 A4
  2468. SA4 B2 GET P
  2469. LX1 36
  2470. BX6 -X6*X4 CLEAR P
  2471. IX7 X6+X1
  2472. SA7 B2 RESET P
  2473. EQ TSSC RESUME SUBCP PROCESSING
  2474.  
  2475. * PROCESS SYSTEM REQUEST.
  2476.  
  2477. SRTN4 RJ TXT SET UP AND STORE INTERNAL TRACE PACKET
  2478. SX7 B0+
  2479. SA3 B2+RA1C
  2480. BX6 X5 SAVE IMAGE OF RA + 1 REQUEST
  2481. SA7 A5 CLEAR SYSTEM REQUEST
  2482. SA6 B2+LRA1
  2483. SX6 B1
  2484. MX4 -18
  2485. IX6 X6+X3 INCREMENT COUNT OF NUMBER OF RA+1 CALLS
  2486. AX3 30 RIGHT JUSTIFY LIMIT
  2487. BX4 -X4*X6
  2488. SA6 A3 RESET COUNT
  2489. IX3 X4-X3
  2490. PL X3,TERR14 IF EXCEEDS LIMIT
  2491.  
  2492. * RE-ENTER HERE FROM RECALL.
  2493.  
  2494. SRTN4.1 SA1 B7+SCRAW SET RA AND FL
  2495. SA3 B2+LRA1 GET REQUEST
  2496. SA5 X1+B1 RA + 1
  2497. SB3 X1 RA
  2498. LX1 SCFLN-1-SCFLS
  2499. BX5 X3
  2500. LX5 18 SET REQUEST
  2501. SX7 X5
  2502. LX5 -18
  2503. SB5 B3 RA
  2504. BX6 X5
  2505. SX1 X1
  2506. SB4 X7-3RMSG USED IN TREE SEARCH
  2507. SA6 B2+LRA1 SAVE IMAGE OF RA + 1 REQUEST
  2508.  
  2509. * IDENTIFY THE REQUEST BY USING A TREE SEARCH AND
  2510. * THEN EXIT TO PROCESS THE REQUEST.
  2511.  
  2512. ZR B4,MSG IF *MSG*
  2513. PL B4,SRTN5 IF SEARCH DOWN GREATER THAN BRANCH OF TREE
  2514. SB4 X7-3REND
  2515. ZR B4,SCT IF *END* REQUEST
  2516. SB4 X7-3RD00
  2517. ZR B4,D00 IF *D00* REQUEST
  2518. SB4 X7-3RCTI
  2519. ZR B4,CTI IF *CTI*
  2520. SB4 X7-3RCPM
  2521. ZR B4,CPM IF *CPM* REQUEST
  2522. SB4 X7-3RABT
  2523. ZR B4,SCT36 IF *ABT* REQUEST
  2524. SB4 X7-3RAAM
  2525. ZR B4,AAM IF *AAM*
  2526. SB4 X7-3RMEM
  2527. ZR B4,MEM IF *MEM* REQUEST
  2528. EQ TERR4 INCORRECT REQUEST
  2529.  
  2530.  
  2531.  
  2532. SRTN5 SB4 X7-3RSCT
  2533. ZR B4,SCT IF *SCT*
  2534. SB4 X7-3RREC
  2535. ZR B4,RRP IF *REC* REQUEST
  2536. SB4 X7-3RRFL
  2537. ZR B4,RFL IF *RFL* REQUEST
  2538. SB4 X7-3RTOT
  2539. ZR B4,TOT IF *TOT*
  2540. SB4 X7-3RTIM
  2541. ZR B4,TIM IF *TIM*
  2542. SB4 X7-3RTMS
  2543. ZR B4,TMS IF *TMS* REQUEST
  2544. SB4 X7-3RSSC
  2545. ZR B4,SSC IF *SSC* REQUEST
  2546. EQ TERR4 INCORRECT REQUEST
  2547.  
  2548. SCHD TITLE TASK SCHEDULER.
  2549. ** SCHD SCHD SEARCHES THE REQUESTED TASK LIST FOR THE HIGHEST
  2550. * PRIORITY TASK, REQUESTS ENOUGH CORE TO RUN THE TASK,
  2551. * AND IF THE CORE IS AVAILABLE INITIATES LOADING OF THE
  2552. * TASK.
  2553. *
  2554.  
  2555.  
  2556. SCHD35 SA1 STAT10 NUMBER OF TIMES NO FL FOR TASK LOAD
  2557. SX6 B1
  2558. IX6 X1+X6
  2559. SA6 A1+
  2560.  
  2561. SCHD PS ENTRY/EXIT
  2562. SCHD1 MX7 -6
  2563. SA1 LTLRE
  2564. MX0 1
  2565. NZ X1,SCHD IF REQUESTED TASK LOAD LIST FULL
  2566. SA1 RTLW RTL RESERVATION WORD
  2567. SB5 B0
  2568. IX1 X1+X0 LOOKING FOR ZERO BITS
  2569. SB3 370000B
  2570. SB6 B0
  2571. LX0 -12
  2572. MX5 -12
  2573. SCHD2 NX1 B4,X1 FIND AN RTL ENTRY
  2574. SB4 B4+B4 TWO WORDS / ENTRY
  2575. IX1 X1+X0
  2576. SB5 B5+B4
  2577. SB4 B5-RTLL
  2578. PL B4,SCHD3 IF END OF LIST
  2579. SA2 B5+RTL CHECK AN ENTRY
  2580. LX2 5-29
  2581. BX3 -X7*X2 CURRENT PRIORITY
  2582. LX2 11-59-5+29
  2583. SB4 X3+
  2584. BX3 -X5*X2 TASK DIRECTORY INDEX
  2585. LT B4,B6,SCHD2 IF PRIORITY .LT. CURRENTLY SELECTED TASK
  2586. TA3 X3+1,VTLD GET TASK CHARACTERISTICS
  2587. LX3 59-57
  2588. NG X3,SCHD2 IF REQUEST FOR CM RESIDENT TASK
  2589. LX3 59-TLQUS-59+57
  2590. PL X3,SCHD2.1 IF NOT Q-TYPE OF TASK
  2591. MX4 -TLTAN
  2592. LX3 TLTAN-1-TLTAS-59+TLQUS
  2593. BX4 -X4*X3
  2594. ZR X4,SCHD2.1 IF NO COPIES OF TASK ARE ACTIVE
  2595. SX4 X4-MAXAQ
  2596. ZR X4,SCHD2 IF NUMBER OF COPIES AT LIMIT
  2597. LX2 17-17-11+59
  2598. MX4 -18 CHECK IF RTL ENTRY AT *QL* LIMIT
  2599. BX4 -X4*X2
  2600. LX2 11-59-17+17
  2601. NZ X4,SCHD2 IF ENTRY NOT AT *QL* LIMIT
  2602. SCHD2.1 EQ B4,B6,SCHD2.2 IF TASK PRIORITIES ARE EQUAL
  2603. SB6 B4 NEW HIGHEST PRIORITY
  2604. SX6 A2 RTL ADDRESS OF TASK WITH HIGHEST PRIORITY
  2605. LX2 17-47-11+59 GET TASK FL
  2606. SB3 X2
  2607. JP SCHD2
  2608.  
  2609. SCHD2.2 LX2 17-47-11+59
  2610. SB4 X2
  2611. GE B4,B3,SCHD2 IF FL GREATER THAN CURRENTLY SELECTED TASK
  2612. SB3 X2 NEW LOWEST FL VALUE
  2613. SX6 A2
  2614. JP SCHD2
  2615.  
  2616. SCHD3 ZR B6,SCHD *EXIT - NO TASKS IN REQUESTED TASK LIST
  2617. SA5 SCHDA
  2618. ZR X5,SCHD6 NO REUSABLE PROGRAMS IN CORE
  2619. SA2 X6
  2620. PX4 X5
  2621. BX3 X3-X3
  2622. MX5 12
  2623. SB3 B0
  2624. MX0 1
  2625. BX2 X5*X2 TASK ID
  2626. LX0 -12
  2627. SB5 SCPAL
  2628. EQ SCHD5 ENTER LOOP
  2629.  
  2630. * CHECK REUSABLE PROGRAMS FOR REQUESTED TASK MATCH
  2631.  
  2632. SCHD4 SX3 X3+B6
  2633. LX7 X3,B5
  2634. TA1 X7-CPAL+2,VCPA
  2635. BX1 X5*X1 TASK ID
  2636. IX1 X1-X2
  2637. ZR X1,SCHD21 MATCH FOUND
  2638. SCHD5 BX1 -X0*X4
  2639. NX4,B6 X1 FIND NEXT SET BIT
  2640. NZ X4,SCHD4 ENTRIES LEFT TO CHECK
  2641.  
  2642. * REQUEST FIELD LENGTH FOR PROGRAM TO BE SCHEDULED
  2643.  
  2644. SCHD6 SA2 X6
  2645. SA6 SCHDB SAVE RTL ADDRESS
  2646. LX2 -30
  2647. SX0 X2+NUAPL FL REQUIRED TO RUN TASK
  2648. RJ RCP REQUEST SUBCONTROL POINT
  2649. ZR X5,SCHD35 IF NO FL CURRENTLY AVAILABLE
  2650.  
  2651. * SET UP SUB CONTROL POINT AREA FOR NEW TASK
  2652.  
  2653. SA2 SCHDB RTL ADDRESS OF TASK TO LOAD
  2654. SX3 B4
  2655. LX0 18
  2656. BX0 X0+X3 SUB CP ADDRESS AND FL
  2657. SA1 X2 FIRST WORD OF RTL ENTRY
  2658. MX5 12
  2659. SB5 X2
  2660. SA2 B5+1 SECOND WORD OF RTL ENTRY
  2661. MX6 -2
  2662. BX5 X5*X1 TASK ID
  2663. SB4 B4+CPAHL
  2664. MX7 30
  2665. BX4 X4-X4
  2666. ZR X5,SCHD8.1 IF TASK ROLL IN
  2667. SA3 B4-CPAHL+2
  2668. LX6 4
  2669. IX7 X5+X3
  2670. LX5 12
  2671. BX6 -X6*X2 DESTRUCTIVE CODE AND SYSTEM TASK FLAG
  2672. TA1 X5-1,VTLD 1ST WORD OF TLD
  2673. MX4 30
  2674. SA5 A1+B1
  2675. SX1 X1 ENTRY POINT
  2676. BX5 X4*X5 DISK ADDRESS OF TASK
  2677. LX6 60-6
  2678. LX1 18
  2679. SA7 A3 SET NAME AND TIME SLICE LIMIT
  2680. BX1 X1+X6 ENTRY POINT AND DESTRUCTIVE CODE FLAG
  2681. SA3 A5+TLTAW-TLDAW TASK ATTRIBUTES AND STATUS
  2682. SX6 1
  2683. LX3 59-TLQUS
  2684. LX5 30 POSITION DISK ADDRESS FOR TASK LOAD
  2685. PL X3,SCHD6.1 IF Q-ATTRIBUTE NOT SPECIFIED
  2686. RJ ITA INCREMENT TASK ACTIVE COUNT
  2687. SCHD6.1 BX4 X1
  2688.  
  2689. * DETERMINE WHICH TASK LIBRARY FILE TO USE
  2690.  
  2691. SX6 A1+B1 ADDRESS OF TLD ENTRY
  2692. SB3 VUSN-2 SYSTEM LIBRARY USER NAME
  2693. SB6 VTFL SYSTEM TASK LIBRARY NAME
  2694. TA3 0,VEDT
  2695. SA1 A3+4
  2696. SX3 X3 LINK TO NEXT EDT
  2697. LX1 -18
  2698. SCHD7 SX7 X1
  2699. ZR X7,SCHD8 NO DIRECTORY FOR DATA BASE
  2700. IX7 X7-X6
  2701. PL X7,SCHD8.2 IF ENTRY IN PREVIOUS TLD
  2702. SB3 A3+ EDT ADDRESS
  2703. SB6 X1-1
  2704. SCHD8 ZR X3,SCHD8.2 IF AT END OF EDTS
  2705. SA1 X3+4
  2706. SB3 A3
  2707. SA3 X3
  2708. LX1 -18
  2709. SX3 X3 NEXT EDT
  2710. EQ SCHD7 LOOP
  2711.  
  2712. SCHD8.1 MX6 1
  2713. SA1 X2
  2714. SB3 B0
  2715. SA3 A1+B1
  2716. BX0 X6+X0 SET ROLL IN FLAG
  2717. SB6 X1+ ROLLOUT FILE FET ADDRESS
  2718. BX5 -X7*X3 DISK ADDRESS OF ROLLED OUT TASK
  2719. SCHD8.2 SX1 B6 ADDRESS OF NAME OF TASK LIBRARY
  2720. SX6 B3 ADDRESS OF USER NAME FIELD FOR LIBRARY
  2721. LX1 30
  2722. BX5 X5+X1
  2723. LX6 36
  2724. SB3 SCHD11 CONTINUATION ADDRESS
  2725. BX0 X0+X6
  2726. NG X0,SCHD9 IF TASK ROLL IN
  2727. BX3 X2 WORD 2 OF RTL
  2728. LX3 59-2
  2729. PL X3,SCHD9 IF NOT EXTENDED MEMORY RESIDENT
  2730. SB3 SCHD31 RETURN ADDRESS FOR EXTENDED MEMORY LOADING
  2731.  
  2732. * ENTRY (B3) = RETURN ADDRESS
  2733. * (B4) = 1ST C.B. STATUS WORD AT SELECTED SUB CP
  2734. * (B5) = RTL ADDRESS OF REQUESTED TASK
  2735. * (X4) = SUB CP STATUS WORD 2
  2736. * (X2) = 2ND WORD OF RTL ENTRY
  2737.  
  2738. SCHD9 MX7 1
  2739. SA3 RTLW RTL RESERVATION WORD
  2740. LX7 -12
  2741. SX1 B5-RTL RTL ENTRY
  2742. SB6 B0
  2743. AX1 1 TWO WORDS PER RTL ENTRY
  2744. LX2 36
  2745. SB5 X1
  2746. TX2 X2+1,-VATL RELATIVE ADDRESS OF FIRST ATL ENTRY
  2747. LX7 -B5,X7 POSITION BIT TO RELEASE RTL ENTRY
  2748. IX6 X7+X3
  2749. MX1 -12
  2750. SA6 A3 RESET RTL RESERVATION WORD
  2751.  
  2752. * SEARCH THE ATL AND SET POINTERS TO THE QUEUED TASKS C.B.S
  2753.  
  2754. SCHD10 MX7 1
  2755. TA3 X2-1,VATL
  2756. MX2 1
  2757. SX6 X3 CONTEXT BLOCK ADDRESS
  2758. LX2 -5 INITIAL LOAD BIT
  2759. BX2 X2+X7 SET REQUEST CPU BIT
  2760. IX7 X6+X2
  2761. LX3 12
  2762. SA7 B4+B6 INDICATE TASK IN CORE AND WAITING FOR CPU
  2763. BX2 -X1*X3
  2764. SB6 B6+B1 INCREMENT ATL ENTRY COUNT
  2765. NZ X2,SCHD10 MORE ATL ENTRIES
  2766. SX1 B6
  2767. BX7 X0
  2768. LX1 36
  2769. IX6 X4+X1 SET NUMBER OF CONTEXT BLOCKS AT SUB CP
  2770. SA6 B4-CPAHL+1
  2771. SB4 SCHD1
  2772. JP B3 *EXIT
  2773.  
  2774. * LOAD TASK CODE AT THE SUB CP
  2775.  
  2776. SCHD11 SA3 CCC
  2777. ZR X3,SCHD18 NO TASK BEING LOADED NOW
  2778. SA1 TL+5
  2779. SA2 TL
  2780. LX2 -1
  2781. ZR X1,SCHD11.1 IF NOT WAITING FOR INTERLOCK
  2782. BX2 X2-X2
  2783. SCHD11.1 NG X2,SCHD12 IF PRIOR TASK LOAD REQUEST IS FINISHED
  2784.  
  2785. * STACK UP TASK LOAD REQUEST
  2786.  
  2787. SA3 A3+2
  2788. SCHD11.2 ZR X3,SCHD17 IF UNUSED STACK ENTRY
  2789. SA3 A3+2
  2790. EQ SCHD11.2 TRY NEXT ENTRY
  2791.  
  2792. * A TASK IS LOADED - ADVANCE STACK AND REQUEST CPU
  2793.  
  2794. SCHD12 SA2 CCC STACK ENTRY FOR TASK THAT WAS LOADED
  2795. SA3 A2+B1
  2796. SA4 A3+B1
  2797. SA1 X2 FWA OF SUBCP TABLE ENTRY
  2798. ZR X4,SCHD14 NO TASK WAITING TO BE LOADED
  2799. SA2 A4
  2800. SCHD13 BX6 X2
  2801. SA6 A3-B1 MOVE ENTRY TOWARD TOP OF STACK
  2802. SA3 A2+B1
  2803. SA2 A3+B1 NEXT STACK ENTRY
  2804. BX6 X3
  2805. SA6 A6+B1
  2806. NZ X2,SCHD13 MORE ENTRIES TO MOVE
  2807. SCHD14 SX4 X1-NUAPL
  2808. BX6 X5
  2809. SA7 A3-B1 NEW STACK ENTRY - OR ZERO TERMINATOR
  2810. SB3 SCHD15 RETURN ADDRESS
  2811. SA3 A1+SCNMW
  2812. MX5 SCNMN
  2813. SA6 A7+B1 DISK ADDRESS OF REQUESTED TASK
  2814. SX2 B1
  2815. MX6 1
  2816. SCHD14.1 BX5 X5*X3 TASK DIRECTORY INDEX
  2817. LX2 42
  2818. BX6 -X6*X1 CLEAR STORAGE MOVE LOCK OUT
  2819. LX5 12
  2820. SB6 A1 SUBCP TABLE ENTRY FOR THIS TASK
  2821. SA6 A1
  2822. ZR X5,SCHD23 IF TASK ROLL IN
  2823. SX7 DCPPR SET DEFAULT CPU PRIORITY
  2824. TA3 X5+1,VTLD
  2825. LX7 -12 TASK PRIORITY
  2826. LX3 59-TLTLS
  2827. SA7 X4+CB1C TASK PRIORITY UNTIL A C.B. IS LOADED
  2828. IX6 X3+X2 BUMP TIMES LOADED COUNT
  2829. LX6 TLTLS-59
  2830. SA6 A3
  2831. LX6 59-TLSCS GET SOLICITED C.B. FLAG
  2832. PL X6,RCPU IF NOT SOLICITED COMMUNICATION BLOCK TASK
  2833. MX6 1 SET SOLICITED COMMUNICATION BLOCK FLAG
  2834. LX6 57-59
  2835. SA3 B6 SUBCP TABLE FOR THIS TASK
  2836. BX6 X3+X6
  2837. SA6 A3
  2838. EQ RCPU REQUEST CPU FOR NEWLY LOADED TASK
  2839.  
  2840. * IF STACK ENTRY PRESENT, INITIATE LOAD OF REQUESTED TASK
  2841.  
  2842. SCHD15 SA1 CCC
  2843. ZR X1,SCHD16 NO TASK WAITING TO BE LOADED
  2844. SA5 A1+B1
  2845. SA2 X1
  2846. SX6 X2+77B-16B FWA FOR TASK LOAD
  2847. BX7 X5
  2848. SX0 X2 TASK RA
  2849. SA7 TL+6
  2850. LX2 -18
  2851. LX5 30
  2852. SB5 X5 ROLLOUT FILE FET ADDRESS
  2853. SX7 X5
  2854. SB6 X2+16B-77B
  2855. SA3 TL+1 FET+1 OF TASK LIBRARY FILE
  2856. PL X1,SCHD15.1 IF NOT TASK ROLL IN
  2857. SA1 B5+5
  2858. NZ X1,SCHD15.2 IF ROLLOUT FILE INTERLOCKED
  2859. SX6 A2
  2860. SA6 A1 INTERLOCK ROLLOUT FILE
  2861. SX6 X0-NUAPL START OF SUB CONTROL POINT AREA
  2862. SB6 X2+NUAPL FL TO ROLL IN
  2863. SCHD15.1 BX7 X7-X7
  2864. MX4 -18
  2865. SA7 A7-B1 CLEAR WAITING FOR INTERLOCK STATUS
  2866. BX3 X4*X3
  2867. BX7 X3+X6
  2868. SA7 A3 SET FIRST
  2869. MX2 1
  2870. SA6 A7+B1 SET IN = FIRST
  2871. SA6 A6+B1 SET OUT = FIRST
  2872. SX7 B6+X6
  2873. SA3 A6+B1
  2874. BX3 X4*X3
  2875. SA4 B5 TASK LIBRARY FILE NAME
  2876. BX7 X3+X7
  2877. BX6 X4
  2878. SA7 A6+B1 SET LIMIT = LWA OF SUB CP TASK AREA
  2879. SA6 TL
  2880. SA1 A2
  2881. BX7 X2+X1 SET STORAGE MOVE LOCK OUT BIT
  2882. SA7 A1
  2883. READSKP A6 INITIATE LOAD OF TASK
  2884. JP B4 *EXIT
  2885.  
  2886. SCHD15.2 SX7 A1
  2887. SA7 A7-B1 SET WAITING FOR INTERLOCK STATUS
  2888. JP B4 *EXIT
  2889.  
  2890. * CLEAR LOCK ON LIBRARY FILE
  2891.  
  2892. SCHD16 SA2 TPLW STATUS WORD FOR RECALL COMPLETION CHECKS
  2893. MX3 -18
  2894. BX6 X3*X2 MASK OUT TASK BEING LOADED STATUS
  2895. SA6 A2
  2896. JP B4 *EXIT
  2897.  
  2898. * ENTER LOAD REQUEST INTO STACK
  2899.  
  2900. SCHD17 BX6 X5
  2901. SA7 A3 STORE STACK ENTRY
  2902. SA6 A3+1 RANDOM ADDRESS
  2903. JP B4 *EXIT
  2904. SCHD18 SX2 TL
  2905. SA1 TPLW STATUS WORD FOR RECALL COMPLETION CHECKS
  2906. BX6 X1+X2
  2907. SA7 CCC STORE STACK ENTRY
  2908. SA6 A1 SET TASK BEING LOADED STATUS
  2909. BX7 X5
  2910. SA7 A7+B1
  2911. EQ SCHD15 LOAD REQUESTED TASK
  2912.  
  2913. * SET UP TO QUEUE ENTRIES AT TASK ALREADY RESIDENT IN CM
  2914.  
  2915. SCHD21 SB6 X3 SHIFT COUNT FOR SUB CP
  2916. SB5 X6
  2917. LX2 12 POSITION TASK ID
  2918. SX6 B1
  2919. TA3 X2+TLTAW-TLDAW,VTLD TASK ATTRIBUTES AND STATUS
  2920. SA2 A5+ LIST OF REUSABLE TASKS IN CM
  2921. LX3 59-TLQUS
  2922. PL X3,SCHD21.1 IF Q-ATTRIBUTE NOT SPECIFIED
  2923. RJ ITA INCREMENT TASK ACTIVE COUNT
  2924. SCHD21.1 LX0 X0,-B6 POSITION BIT TO RELEASE SUBCP FROM LIST
  2925. BX7 -X0*X2 CLEAR BIT
  2926. SA4 A1-1 SUBCONTROL POINT STATUS WORD 2
  2927. SA5 AVAILCM
  2928. MX1 1
  2929. SA3 A4-B1 SUB CP STATUS WORD 1
  2930. LX1 -1
  2931. SA7 A2+
  2932. BX6 -X1*X3 CLEAR RELEASEABLE BIT FOR SUB CP
  2933. SX0 X3-NUAPL START OF SUB CP FL
  2934. SA6 A3
  2935. LX3 -18
  2936. SA2 B5+B1
  2937. SX3 X3+NUAPL CORE USED BY TASK
  2938. SB4 A1+B1 1ST C.B. STATUS WORD AT SUB CP
  2939. IX7 X5-X3
  2940. SB3 SCHD22
  2941. SX5 A3 SUB CP AREA
  2942. SA7 A5 DECREMENT AVAILABLE CORE COUNT
  2943. EQ SCHD9 LOAD TASK QUEUE FOR EXECUTION
  2944.  
  2945. SCHD22 SB6 X5 SUB CP AREA
  2946. SX4 X0 START OF SUB CP FL
  2947. SB3 SCHD1 RETURN ADDRESS
  2948. EQ RCPT REQUEST CPU FOR TASK
  2949.  
  2950. * PROCESS ROLLIN COMPLETE.
  2951.  
  2952. SCHD23 SB5 X4 SUB CONTROL POINT AREA OF TASK
  2953. SX1 X1 TASK RA
  2954. MX7 24
  2955. SA3 X4+B1
  2956. LX1 36
  2957. BX7 -X7*X3 CLEAR OLD RA FROM EXCHANGE PACKAGE
  2958. SA5 X4+ROSC
  2959. BX7 X7+X1
  2960. SA7 A3
  2961. SA3 B5+RSCC
  2962. BX6 X6-X6
  2963. MX4 12
  2964. SA2 X5 FIRST WORD OF ROLLOUT TABLE ENTRY
  2965. SX0 B6
  2966. SA1 A3+B1
  2967. SA6 X2+5 RELEASE INTERLOCK ON ROLLOUT FILE
  2968. BX4 X4*X1 TASK INDEX
  2969. SA2 B6+2 RESTORE TASK INDEX
  2970. SX7 X3
  2971. BX6 X4+X2
  2972. SA6 A2
  2973. ZR X7,SCHD25 IF C.B. NOT RESERVED DURING ROLLOUT
  2974. IX7 X3+X0 REBIAS STATUS WORD POINTER
  2975. SX1 CPACL
  2976. SA7 B6+B1
  2977. SA4 A2+B1 SAVE CORRECT ACTIVE C.B.
  2978. BX7 X4
  2979. SA7 SCHDC
  2980. SX2 A1+B1 RELOAD ACTIVE TASK STATUS WORDS
  2981. SX3 B6+CPAHL
  2982. RJ MVE=
  2983. SA1 X0+B1 ACTIVE C.B. POINTER IN SUBCP TABLE
  2984. SA2 X1
  2985. MX3 42
  2986. BX7 X3*X2
  2987. SA1 SCHDC
  2988. BX1 -X3*X1
  2989. BX7 X1+X7
  2990. SA7 A2+ REPLACE ACTIVE C.B. ADDRESS
  2991. SCHD24 SX4 X5 ROLLOUT TABLE ENTRY
  2992. SA1 X0
  2993. SB6 X0+ SUB CONTROL POINT ADDRESS
  2994. SB5 X1-NUAPL SUB CONTROL POINT AREA
  2995. SB3 SCHD26 RETURN ADDRESS
  2996. JP ROL16 RELEASE ROLLOUT FILE SPACE
  2997.  
  2998. SCHD25 SA1 B6+CPAHL
  2999. SX7 B1 CLEAR INITIAL CALL BIT
  3000. SX6 A1
  3001. LX7 54
  3002. IX6 X6+X3 SET C.B. STATUS WORD POINTER
  3003. BX7 -X7*X1
  3004. SA7 A1
  3005. SA6 B6+SCCCW ACTIVE C.B. FOR THIS TASK
  3006. EQ SCHD24 CONTINUE
  3007.  
  3008. SCHD26 LX6 59-54
  3009. PL X6,SCHD26.1 IF NOT RECALL RESTART TASK
  3010. MX0 1
  3011. SA1 B5+SCRC TASK RECALL STATUS WORD
  3012. SA3 LTIME
  3013. MX7 -5
  3014. SA2 A1+B1
  3015. LX7 18
  3016. BX6 X3
  3017. SA6 A1
  3018. BX6 X1
  3019. TX4 B6+CPAL,-VCPA
  3020. SA6 B5+RCL
  3021. BX7 X7*X2 CLEAR OLD SUB CP NUMBER
  3022. AX4 SCPAL
  3023. SX5 B1
  3024. LX4 18
  3025. BX7 X7+X4
  3026. LX4 -18
  3027. SA7 A6+B1
  3028. LX0 -12
  3029. SA1 RCR RECALL REQUEST WORD
  3030. LX5 56
  3031. SA2 B6+B1 STATUS WORD TWO OF SUB CP AREA
  3032. SB5 X4
  3033. BX6 X5+X2 SET TASK RECALL REQUEST BIT
  3034. AX4 X0,B5
  3035. IX7 X1+X4
  3036. SA6 B6+B1
  3037. SA7 A1 SET TASK RECALL REQUEST WORD
  3038. SA1 STAT15 NUMBER OF TIMES TASK IN RECALL
  3039. SX6 B1
  3040. IX6 X1+X6
  3041. SA6 A1
  3042. JP SCHD15
  3043.  
  3044. SCHD26.1 SA1 B5+CB1C CHECK RECALL STATUS
  3045. SX4 B5
  3046. LX1 59-46
  3047. NG X1,SCHD15 IF TASK IN RECALL ALL STATUS
  3048. SB3 SCHD15
  3049. JP RCPU REQUEST CPU FOR TASK JUST LOADED
  3050.  
  3051.  
  3052. * INITIATE LOAD OF REQUESTED TASK FROM EXTENDED MEMORY. THE
  3053. * INTERPRETIVE EXTENDED MEMORY READ MACROS AND RELATED ROUTINES
  3054. * IN *COMCECS* ARE USED TO HELP PROVIDE A CONTROLLED USAGE OF
  3055. * EXTENDED MEMORY.
  3056. *
  3057. * (X7) = 1/EPC,5/,18/EDT,18/TFL,18/SCP
  3058. * (X5) = 30/ TLN ,30/RDA
  3059. *
  3060. * EPC - ERROR PROCESSOR CALL.
  3061. * EDT - ELEMENT DESCRIPTOR TABLE ADDRESS.
  3062. * TFL - TASK FIELD LENGTH.
  3063. * SCP - START OF SUB CP TABLE.
  3064. * TLN - ADDRESS OF TASK LIBRARY NAME.
  3065. * RDA - RANDOM DISK/ECS ADDRESS OF TASK.
  3066.  
  3067. SCHD31 SA1 X7 TASK RA
  3068. SA0 X1+77B-16B FWA FOR TASK LOAD
  3069. MX0 -24
  3070. BX0 -X0*X5 EXTENDED MEMORY FWA
  3071. LX7 -18
  3072. SB3 X7+16B-77B-NUAPL TASK FIELD LENGTH - FWA FOR LOAD
  3073. LX7 18
  3074. RE B3 READ TASK FROM EXTENDED MEMORY
  3075. EQ ECR PROCESS EXTENDED MEMORY READ ERROR
  3076.  
  3077. SCHD34 NG X7,TERP19 IF ERROR PROCESSOR CALL
  3078. SB3 SCHD1 RETURN ADDRESS
  3079. MX6 1 SET MASK TO REQUEST CPU
  3080. BX2 X7
  3081. SA1 X2
  3082. BX3 X5
  3083. SX4 X1-NUAPL
  3084. SA3 A1+2
  3085. SX2 B1
  3086. MX5 12
  3087. EQ SCHD14.1 CONTINUE SCHEDULING THIS TASK
  3088.  
  3089. SCHDA BSSZ 1 REUSABLE TASKS CURRENTLY CM RESIDENT
  3090. SCHDB BSS 1 RTL ADDRESS OF TASK TO LOAD
  3091. SCHDC CON 0 CURRENT C.B. ADDRESS
  3092. TITLE RA(S)+1 REQUEST PROCESSORS.
  3093. SPACE 4
  3094. *** SUBCONTROL POINT PROGRAM REQUEST.
  3095. *
  3096. * SUBCONTROL POINT PROGRAM REQUESTS ARE PASSED
  3097. * THROUGH RELATIVE ADDRESS 1. THE FORMAT IS AS FOLLOWS -
  3098. *
  3099. *T 18/ NAME,6/ R,36/ ARG
  3100. *
  3101. * NAME REQUEST NAME.
  3102. * R 20B IF AUTO RECALL DESIRED.
  3103. * ARG ARGUMENTS.
  3104. *
  3105. * THE RECALL PARAMETER IS OF USE ONLY ON DATA MANAGER
  3106. * REQUESTS, AS ALL OTHER TYPES ARE REQUESTS ARE ANSWERED
  3107. * IMMEDIATELY.
  3108. *
  3109. * IF THE FORMAT OF THE REQUEST IS INCORRECT, THE TASK IS
  3110. * ABORTED.
  3111. SCT SPACE 4,50
  3112. *** SCT - SCHEDULE TASK.
  3113. *
  3114. * THIS PROCESSOR PERFORMS THE FUNCTIONS RELATING TO TASK
  3115. * SCHEDULING. THE FORMAT OF THE REQUEST IS -
  3116. *
  3117. *T 24/ 3LSCT,18/ FNC,18/ ADDR
  3118. *
  3119. * FNC SCHEDULE FUNCTION CODE.
  3120. * ADDR PARAMETER ADDRESS.
  3121. *
  3122. * FNC SCHEDULE TYPE
  3123. *
  3124. * 0 CEASE - END CURRENT TASK.
  3125. * 1 NEWTRAN - START A NEW TRANSACTION.
  3126. * 2 CALLTSK - CALL TASK WITH CEASE.
  3127. * 3 CALLTSK - CALL TASK WITHOUT CEASE.
  3128. * 4 CALLRTN - CALL TASK WITH RETURN.
  3129. * 5 WAITINP - WAIT FOR TERMINAL INPUT.
  3130. * 6 WAIT - WAIT FOR SPECIFIED TIME PERIOD.
  3131. * 7 CHKON - SET *TOTAL* INTERLOCK FLAG.
  3132. * 8 CHKOFF - CLEAR *TOTAL* INTERLOCK FLAG.
  3133. * 9 BWAITINP - BUFFER WAIT FOR TERMINAL INPUT.
  3134. * 10 CALLTRN - CALL TRANSACTION.
  3135. *
  3136. * ENTRY (X1) = TASK FL.
  3137. * (X5) = SYSTEM REQUEST.
  3138. * (B2) = FWA OF TASK SYSTEM AREA.
  3139. * (B5) = TASK RA.
  3140. * (B7) = FWA OF TASK SUBCP TABLE ENTRY.
  3141. *
  3142. * EXIT TO *TERR1* IF REQUESTED ABORT.
  3143. * TO *TERR2* IF ADDRESS OUT OF BOUNDS.
  3144. * TO *TERR3* IF INCORRECT FUNCTION CODE.
  3145. * TO *TERR5* IF MORE THAN FIVE TASKS IN TASK CHAIN.
  3146. * TO *TERR6* IF INCORRECT TASK NAME.
  3147. * TO *TERR10* IF TASK CEASE WITH OUTSTANDING DATA
  3148. * MANAGER REQUEST.
  3149. * TO *TERR11* IF TASK NOT VALIDATED FOR REQUEST.
  3150. * TO *TERR12* IF TASK BRANCH LIMIT EXCEEDED.
  3151. * TO *TERR18* IF NEST-LEVEL LIMIT EXCEEDED.
  3152. * TO *TERR19* IF SCHEDULING REQUEST WITH DATA
  3153. * MANAGER REQUEST OUTSTANDING.
  3154. * TO *TERR20* IF INCORRECT WAIT FOR INPUT.
  3155. * TO *TERR21* IF MORE THAN ONE TRANSACTION USING TASK
  3156. * CONTAINING A *WAITINP* REQUEST.
  3157. * TO *TERR22* IF NOT CALLED FROM SYSTEM TASK LIBRARY.
  3158. * TO *TERR40* IF TRANSACTION NAME UNKNOWN.
  3159. * TO *TSSC* WHEN PROCESSING COMPLETE.
  3160.  
  3161.  
  3162. SCT SB4 X5+ ADDRESS OF PARAMETERS
  3163. LX5 -18
  3164. SB4 -B4
  3165. SX0 X5 FUNCTION CODE
  3166. SX5 B2+CB1C C.B. HEADER BLOCK LOCATION
  3167. LX0 -1
  3168. ZR X0,SCT1 IF CEASE
  3169. SB3 X0
  3170. SX7 X1+B4
  3171. GT B4,TERR2 ADDRESS WORD OUT OF BOUNDS
  3172. SX6 B3-SCTJTL
  3173. NG X7,TERR2 ADDRESS WORD OUT OF BOUNDS
  3174. PL X6,TERR3 IF INCORRECT FUNCTION CODE
  3175. JP B3+SCTJT JUMP THRU TABLE TO PROCESS CALL
  3176.  
  3177. * JUMP TABLE TO HANDLE *SCT* CALL.
  3178.  
  3179. SCTJT PL X0,SCT1 CEASE
  3180. EQ SCT32 NEWTRAN
  3181. PL X0,SCT14 IF CALL TASK WITH CEASE
  3182. EQ SCT23 CALL TASK WITHOUT CEASE
  3183. PL X0,SCT37 IF CALL TASK WITH RETURN
  3184. JP SCT51 WAIT FOR TERMINAL INPUT
  3185. PL X0,SCT57 IF TIMED ROLLOUT
  3186. JP SCT60 CHKON
  3187. PL X0,SCT61 IF CHKOFF
  3188. EQ SCT51 BUFFER WAIT FOR TERMINAL INPUT
  3189. PL X0,SCT62 IF CALL TRANSACTION
  3190. EQ TERR3 IF INCORRECT SUBFUNCTION CODE
  3191.  
  3192. SCTJTL EQU *-SCTJT LENGTH OF SCT JUMP TABLE
  3193.  
  3194. * CEASE - PROCESS A TASK CEASE.
  3195. *
  3196. * ENTRY (B5) = TASK RA.
  3197. * (B4) = NEGATIVE VALUE OF PARAMETER, PARAMETER
  3198. * VALUES AND DESCRIPTIONS FOR THE *CEASE*
  3199. * REQUEST FOLLOW -
  3200. * .LT. -1 RESERVED FOR CDC.
  3201. * = -1 IF NORMAL CEASE AND TERMINAL
  3202. * IS NOT TO BE UNLOCKED.
  3203. * = 0 IF NORMAL CEASE.
  3204. * = 1 IF ABNORMAL CEASE WITHOUT DUMP.
  3205. * .GT. 1 IF ABNORMAL CEASE WITH DUMP.
  3206.  
  3207.  
  3208.  
  3209. SCT1 SA1 KDISB
  3210. ZR X1,SCT2 IF NO TASK *K-DISPLAY* ACTIVE
  3211. MX6 42
  3212. SB3 X1 C.B. ADDRESS
  3213. SA2 B2+CB2C CURRENT C.B. WORD TWO
  3214. SB5 X2 C.B. ADDRESS
  3215. SX7 B3-B5
  3216. NZ X7,SCT2 IF ANOTHER TASK HAS *K-DISPLAY*
  3217. SX1 KFRM SWITCH *K-DISPLAY* TO *TAF*
  3218. SA2 KCTRL1
  3219. BX6 X6*X2
  3220. SA7 A1 CLEAR INTERLOCK *KDISB*
  3221. BX6 X6+X1
  3222. SA6 A2
  3223. CONSOLE KCTRL1
  3224. MESSAGE ZWORD,2
  3225. SCT2 ZR B4,SCT3 IF NO PARAMETER
  3226. NG B4,SCT36 IF CEASE WITH ABORT
  3227. SB4 B4-B1
  3228. NZ B4,SCT36 IF CEASE WITH ABORT
  3229. MX7 1
  3230. LX7 CBLKS-59
  3231. SA1 B2+CB1C
  3232. BX7 X1+X7
  3233. SA7 A1+
  3234. SCT3 SA1 B2+CB2C COMMUNICATION BLOCK WORD 2
  3235. MX6 12
  3236. SX0 X1 FWA OF COMMUNICATION BLOCK
  3237. SB3 SCT11 RETURN ADDRESS
  3238. SA3 X0+CBTLW TASK LIST
  3239. BX6 -X6*X3
  3240. LX6 12
  3241. SA6 A3+
  3242. NZ X6,SCT17 IF MORE TASKS TO SCHEDULE FOR C. B.
  3243. SA2 X0+CBCR CHECK *CALLRTN* TASKS
  3244. LX2 59-CBRFS
  3245. NG X2,SCT45 IF TASK WAS INITIATED BY A *CALLRTN*
  3246. LX1 17-CBTAS
  3247. SX3 X1 TST ADDRESS
  3248. SA4 X0+CMBHL+1
  3249. ZR X3,SCT8 IF TAF ORIGIN TRANSACTION
  3250. LX4 59-CBBTS
  3251. MX6 60-TSAUN
  3252. NG X4,SCT7 IF BATCH TRANSACTION
  3253. .A IFEQ IPTAR,1 IF AUTOMATIC RECOVERY INSTALLED
  3254.  
  3255. * IF *SECURE* REQUEST WAS ISSUED, SEND MESSAGE TO TERMINAL.
  3256.  
  3257. SB5 B2+NUAPL FWA OF TASK RA
  3258. SA4 B2+SECR SEND PARAMETERS FOR *SECURE*
  3259. ZR X4,SCT6 IF NO *SECURE* MESSAGE
  3260. SA2 B2+SECH APPLICATION BLOCK HEADER
  3261. MX0 -AHCTN MASK FOR CHARACTER TYPE
  3262. LX2 AHCTN-1-AHCTS RIGHT JUSTIFY CHARACTER TYPE
  3263. SA3 B2+CB1C INDICATE TRANSACTION SEND
  3264. MX7 1
  3265. LX7 CBSDS-59
  3266. BX7 X3+X7
  3267. SA7 A3+
  3268. BX4 -X0*X2 CHARACTER TYPE
  3269. SX3 X4-4
  3270. NZ X3,SCT4 IF NOT DISPLAY CHARACTER TYPE
  3271. LX2 AHCTS-AHCTN+1
  3272. BX7 X2
  3273. MX5 -AHLCN
  3274. BX3 -X5*X2 LENGTH OF MESSAGE
  3275. ERRNZ AHLCS-AHLCN+1 IF LENGTH NOT RIGHT JUSTIFIED
  3276. RJ CML COMPUTE MESSAGE LENGTH
  3277. SA2 B2+SECR *SEND* REQUEST FOR *SECURE*
  3278. SB6 X6+ REMAINDER OF MESSAGE OVER WORD BOUNDARY
  3279. LX2 17-47 FWA OF MESSAGE RELATIVE TO TASK
  3280. SX3 X2+B5 FWA OF MESSAGE RELATIVE TO *TAF*
  3281. RJ SEL SET END OF LINE BYTE
  3282. MX0 60-AHLCN
  3283. SX3 10 COMPUTE MESSAGE LENGTH
  3284. BX7 X0*X7
  3285. IX6 X1*X3
  3286. BX7 X6+X7
  3287. SA7 B2+SECH
  3288. SA2 B2+SECR FIRST WORD OF *SEND* REQUEST
  3289. MX4 60-18
  3290. BX2 X4*X2 CLEAR OLD MESSAGE WORD COUNT
  3291. BX2 X2+X1 NEW MESSAGE WORD COUNT
  3292. BX7 X2
  3293. SA7 B2+SECR
  3294. SCT4 SA2 B2+SECR FIRST WORD OF *SEND* REQUEST
  3295. SB3 X2 WORD COUNT OF MESSAGE
  3296. LX2 17-47 FWA OF MESSAGE RELATIVE TO TASK
  3297. SB6 X2
  3298. SB6 -B6+B1
  3299. SA1 B2+CB2C FWA OF TERMINAL
  3300. LX1 17-CBTAS
  3301. SA4 X1 FIRST WORD OF TERMINAL ENTRY
  3302. SX7 SCT5 RETURN ADDRESS
  3303. SA7 B2+SCRC+1
  3304. LX4 59-TSLIS
  3305. EQ SND SEND MESSAGE
  3306.  
  3307. SCT5 SA1 B2+SECH
  3308. SA2 B2+SECR
  3309. RJ REM RESTORE END OF MESSAGE
  3310. EQ SCT8 CONTINUE CEASE PROCESS
  3311. .A ENDIF
  3312.  
  3313. * SEND LAST MESSAGE BLOCK IF IT IS NOT SENT YET.
  3314.  
  3315. SCT6 SA2 B2+CB1C COMMUNICATION BLOCK WORD ONE
  3316. LX2 59-CBLKS
  3317. NG X2,SCT8 IF NOT TO UNLOCK TERMINAL
  3318. SA3 X1+
  3319. SA4 X1+B1 WORD TWO OF TST
  3320. LX3 59-TSLIS
  3321. PL X3,SCT8 IF TERMINAL NOT LOGGED IN
  3322. LX4 59-TSMSS
  3323. SX7 SCT8 RETURN ADDRESS
  3324. MX0 -59
  3325. BX6 -X0*X4
  3326. LX6 TSMSS-59
  3327. SA6 A4+
  3328. NG X4,SCT8 IF LAST MESSAGE ISSUED
  3329. RJ SLB SEND LAST MESSAGE BLOCK
  3330.  
  3331. * CLEAR BATCH TRANSACTION USER ACTIVE FLAG.
  3332.  
  3333. SCT7 LX6 TSAUS-0
  3334. SA4 X3 TST WORD ONE
  3335. SX5 CSCE CEASE/JOB END *STEP*
  3336. SX3 SCT8 RETURN ADDRESS
  3337. BX6 X6*X4
  3338. SA6 A4
  3339. SA2 B2+CB2C WORD TWO OF C.B.
  3340. SA2 X2+CBRTW CHECK IF RECOVERABLE TRANSACTION
  3341. LX2 59-CBRTS
  3342. PL X2,SCT8 IF NOT RECOVERABLE
  3343. RJ WTS WRITE TERMINATION *STEP*
  3344.  
  3345. * ENTRY POINT FROM *TSSC* FOR TRANSACTION TERMINATION.
  3346.  
  3347. SCT8 SA2 B2+CB2C
  3348. SA3 X2+CBTRW CHECK IF RESTART
  3349. MX7 -60+CBTRN CLEAR RESTARTED FLAG
  3350. LX3 59-CBTRS
  3351. PL X3,SCT9 IF NOT RESTART
  3352. BX7 -X7*X3
  3353. LX7 CBTRS-59
  3354. SA7 A3+
  3355. SX3 SCT9 RETURN ADDRESS
  3356. RJ CID CLEAR *NEWID* ON *CRF*
  3357. SCT9 SA2 B2+CB2C
  3358. LX2 CBTAN-1-CBTAS GET *TST* ADDRESS
  3359. SX7 X2
  3360. LX2 CBTAS-CBTAS-CBTAN+1+CBTAS
  3361. ZR X7,SCT10 IF NOT *TST* ADDRESS
  3362. SA3 X7 CLEAR RECOVERABLE TRANSACTION FLAG
  3363. MX7 60-TSNRN
  3364. LX7 TSNRS-TSNRN+1
  3365. BX7 X7*X3
  3366. SA7 A3
  3367. SCT10 SA3 B2+CB1C CLEAR NEXT C.B. LINK IN *CB1C*
  3368. MX6 60-CBNCN
  3369. BX6 X6*X3
  3370. SA6 A3
  3371. RJ RSC RELEASE SECONDARY COMMUNICATION BLOCKS
  3372. SX0 DMCC DATA MANAGER CEASE CODE
  3373. RJ PCDM PROCESS CEASE FOR DATA MANAGER
  3374. SB3 SCT11 RETURN ADDRESS
  3375. NG X5,SCT11 IF DATA MANAGER REQUESTS OUTSTANDING
  3376. SA1 B2+CB2C FWA OF COMMUNICATION BLOCK
  3377. SX2 X1
  3378. RJ RLC RELEASE COMMUNICATION BLOCK
  3379. SCT11 MX6 -18
  3380. SA1 B7+B1
  3381. SX2 B1
  3382. BX6 X6*X1 MASK OFF CURRENT C.B. POINTER
  3383. LX6 -36
  3384. SB5 X6+
  3385. IX7 X6-X2 DECREMENT C.B. COUNT
  3386. BX6 X6-X6
  3387. LX7 36+2
  3388. SA6 X1+ ZERO OUT C.B. STATUS WORD
  3389. NG X7,SCT13 IF CM RESIDENT TASK
  3390. EQ B5,B1,ESCP NO MORE C.B. TO RUN
  3391. SCT12 LX7 -2
  3392. SA7 A1
  3393. NE B5,B1,TSSC IF MORE COMMUNICATION BLOCKS
  3394. RJ DCPT DROP CPU FOR TASK
  3395. EQ TSSC TIME SLICE SUBCP
  3396.  
  3397. * REDUCE CM RESIDENT TASK FL.
  3398.  
  3399. SCT13 MX0 -SCNMN
  3400. SA2 A1+B1 WORD 3 OF SUBCP TABLE
  3401. LX2 SCNMN-SCNMS-1
  3402. BX6 -X0*X2 TASK INDEX
  3403. TA3 X6+1,VTLD TLD WORD 3
  3404. LX3 59-TLRES
  3405. PL X3,SCT28 IF REDUCE TASK FL NOT SELECTED
  3406. SA2 A3-2 FWA OF TLD ENTRY
  3407. MX0 -TLFLN GET TASK ORIGINAL FL
  3408. LX2 TLFLN-TLFLS-1
  3409. SA3 B7
  3410. MX6 -SCFLN
  3411. BX0 -X0*X2
  3412. LX3 SCFLN-SCFLS-1 GET TASK CURRENT FL
  3413. BX4 -X6*X3
  3414. LX0 6
  3415. BX3 X6*X3 CLEAR OLD FL
  3416. BX3 X0+X3
  3417. IX0 X4-X0
  3418. NG X0,SCT28 IF FL DOES NOT NEED TO BE REDUCED
  3419. SA2 AVAILCM UPDATE FREE CORE COUNT
  3420. IX6 X2+X0
  3421. LX0 SCFCS-SCFCN+1
  3422. SA6 A2
  3423. LX3 SCFCS-SCFCN+1-SCFLN+SCFLS+1
  3424. IX6 X0+X3 UPDATE FREE CORE AFTER SUBCP
  3425. SA6 B7
  3426. EQ SCT28 SEARCH FOR ADDITIONAL TASKS
  3427.  
  3428. * CALLTSK - SCHEDULE A TASK WITH CEASE.
  3429.  
  3430. SCT14 SA2 X5+B1 GET COMMUNICATION BLOCK ADDRESS
  3431. SB3 SCT11 RETURN ADDRESS
  3432. SX6 X3
  3433. SX0 X2
  3434. SCT15 SA2 B5-B4 TASK LIST
  3435. BX6 X6-X6
  3436. SX4 60
  3437. SCT16 SX4 X4-12
  3438. NG X4,TERR5 MORE THAN 5 TASKS IN LIST
  3439. SA3 B2+DBNC D.B. OF THIS TASK
  3440. SB4 0 DETECT *OFF* STATUS
  3441. SB5 0 TASK SEARCH
  3442. RJ LTT LOCATE TASK
  3443. ZR X6,TERR6 TASK NOT FOUND
  3444. SA2 A2+B1 NEXT TASK IN LIST
  3445. LX6 12
  3446. NZ X2,SCT16 IF MORE TASKS IN LIST
  3447. SB4 X4 SHIFT COUNTER
  3448. LX6 X6,B4 LEFT JUSTIFY ACCUMULATOR
  3449. SCT17 SA3 B7+B1
  3450. BX4 X4-X4
  3451. SA6 X0+CBTLW STORE CHAIN IN C.B.
  3452. PL X3,SCT18 IF NOT A SYSTEM PRIVILEGE TASK
  3453. SX4 CMBRL
  3454.  
  3455. * SCHEDULE A TASK AND CEASE ONCE THE TASK BIAS HAS BEEN
  3456. * DETERMINED. ENTRY IS FROM THE *CALLTRN* PROCESSOR.
  3457. *
  3458. * ENTRY (B3) = RETURN ADDRESS FOR ROUTINE *ETSQ*.
  3459. * (X0) = COMMUNICATION BLOCK ADDRESS.
  3460. * (X4) = 0, IF NOT SYSTEM PRIVILEGED TASK.
  3461. * = *CMBRL* OTHERWISE.
  3462. * (X5) = ADDRESS OF *CB1C* WORD.
  3463.  
  3464. SCT18 SA2 X5
  3465. SX1 X4+CMBL-CMBHL-CMBRL
  3466. SA3 X5+B1 TRANSFER C.B. HEADER WORDS
  3467. BX6 X2
  3468. LX7 X3
  3469. MX2 -48 RESET CPU PRIORITY TO DEFAULT
  3470. BX6 -X2*X6
  3471. SX3 DCPPR SET DEFAULT CPU PRIORITY
  3472. LX3 48
  3473. BX6 X3+X6
  3474. SX2 B2+NUAPL+SUAC+CMBRL
  3475. SA5 B7 SUBCP TABLE HEADER
  3476. LX5 59-57
  3477. PL X5,SCT19 IF NOT SOLICITED COMMUNICATION BLOCK
  3478. SA5 A5+B1 CURRENT COMMUNICATION BLOCK ADDRESS
  3479. SA5 X5 COMMUNICATION BLOCK POINTER
  3480. LX5 17-35
  3481. SX2 X5+ (X2) = FWA C.B. IN TASK AREA
  3482. SCT19 SA6 X0
  3483. SA7 X0+B1
  3484. SX3 X0+CMBHL+CMBRL
  3485. IX2 X2-X4 BIAS COUNT IF PRIVELDGED TASK
  3486. IX3 X3-X4
  3487. RJ MVE= MOVE C.B. BACK TO STORAGE AREA
  3488. SCT20 RJ ETSQ ENTER TASK INTO SCHEDULING QUEUE
  3489. ZR X6,SCT21 IF THE RTL IS FULL
  3490. JP B3 EXIT
  3491.  
  3492. * THE RTL IS FULL, SO PLACE TASK IN RECALL.
  3493.  
  3494. SCT21 SX1 B3+
  3495. SX7 SCT22 RETURN ADDRESS
  3496. LX1 18
  3497. BX7 X1+X7
  3498. SA7 B2+RCL
  3499. EQ TRCL PLACE TASK ON RECALL
  3500.  
  3501. SCT22 SA2 B2+CB2C RESTORE C.B. ADDRESS
  3502. LX1 -18
  3503. SB3 X1 RESET EXIT ADDRESS
  3504. SX0 X2
  3505. EQ SCT20 TRY TO ENTER REQUEST INTO RTL AGAIN
  3506.  
  3507. * CALLTSK - SCHEDULE A TASK WITHOUT CEASE.
  3508.  
  3509. SCT23 SA1 X5+B1 C.B. HEADER WORD
  3510. SA4 B2+BWCC TASK BRANCH COUNT
  3511. BX6 X1
  3512. SX2 X4-MAXBW
  3513. SX7 X4+B1 BUMP BRANCH COUNT
  3514. SA7 A4
  3515. PL X2,TERR12 TASK BRANCH LIMIT EXCEEDED
  3516. SA3 X5
  3517. BX7 X3
  3518. SA7 B2+SCRC SAVE C.B. HEADER WORDS
  3519. SB6 B4
  3520. SA6 A7+B1
  3521. SCT24 SX0 1 SYSTEM REQUEST
  3522. RJ FFCB GET A COMMUNICATION BLOCK
  3523. ZR X0,SCT26 IF NO COMMUNICATION BLOCK
  3524. SA4 A3+B1 GET TERMINAL ORDINAL
  3525. SA3 X1+CMBHL+1
  3526. BX7 X3
  3527. MX3 -18
  3528. SA7 X0+CMBHL+1
  3529. SA2 A3-B1 SET UP TASK ACCESSABLE C.B. HEADER
  3530. MX7 -24
  3531. BX6 X3*X1 CLEAR OLD C.B. ADDRESS
  3532. BX6 X6+X0
  3533. SA6 A1 SET NEW C.B. ADDRESS INTO C.B. HEADER
  3534. MX6 -CBTON
  3535. LX4 CBTON-CBTOS-1
  3536. BX1 -X6*X4 TERMINAL ORDINAL
  3537. BX4 X7*X2 CLEAR TASK SEQUENCE NUMBER
  3538. SB3 B6 SAVE FWA OF TASK NAME
  3539. RJ ASN GET SEQUENCE NUMBER
  3540. BX7 X4+X6 ADD SEQUENCE NUMBER
  3541. SA7 A7-B1
  3542. SX2 20031B CREATE NEW C.B. HEADER WORD ONE
  3543. LX6 18
  3544. LX2 -15
  3545. BX6 X6+X2 SEQ NUMBER + PRIORITY + MESSAGE SENT
  3546. SA6 X5
  3547. SB4 B3+ FWA OF TASK NAME
  3548. SB3 SCT25 RETURN ADDRESS
  3549. EQ SCT15 SCHEDULE TASK
  3550.  
  3551. SCT25 SA1 B2+SCRC RESTORE C.B. HEADER WORDS
  3552. SA2 A1+B1
  3553. MX7 CBLKN SET LOCK TERMINAL FLAG
  3554. LX7 CBLKS-59
  3555. BX7 X1+X7
  3556. LX6 X2
  3557. SA7 B2+CB1C
  3558. SA6 A7+B1
  3559. EQ TSSC ENTER SWITCHING LOOP
  3560.  
  3561. * PLACE TASK ON RECALL - NO AVAILABLE C.B.
  3562.  
  3563. SCT26 SX1 B6 SAVE IMPORTANT REGISTERS
  3564. BX7 -X1
  3565. SX4 SCT27 RETURN ADDRESS
  3566. LX7 18
  3567. BX7 X7+X4
  3568. EQ TRCL2 PLACE TASK ON RECALL
  3569.  
  3570. SCT27 LX1 -18
  3571. SX5 B2+CB1C C.B. HEADER WORD ADDRESS
  3572. SB6 X1
  3573. SB6 -B6
  3574. SA3 X5 GET COMMUNICATION BLOCK ADDRESS
  3575. SB5 B2+NUAPL TASK RA
  3576. SA1 X5+B1
  3577. EQ SCT24 TRY TO BRANCH AGAIN
  3578.  
  3579. * FIND TASKS SCHEDULED FOR CORE RESIDENT TASK NOW ENDING.
  3580.  
  3581. SCT28 NE B5,B1,SCT12 IF MORE TASKS TO PROCESS
  3582. SA2 RTLW RTL RESERVATION WORD
  3583. TB4 B7,-VCPA
  3584. ZR B4,SCT31 IF *ITASK*, DO NOT CHECK REQUEST TASK LIST
  3585. LX7 -2
  3586. SB5 0
  3587. MX0 12
  3588. SA3 A1+1 SUB CP STATUS WORD 3
  3589. MX1 1
  3590. BX2 X1+X2 LOOKING FOR ZERO BITS
  3591. SA7 A1
  3592. SX6 B2 SAVE FWA OF TASK SYSTEM AREA
  3593. SA6 SCTD
  3594. SB2 B0
  3595. MX7 -6
  3596. BX3 X0*X3 TASK NAME
  3597. LX1 -12
  3598. SCT29 NX2 B4,X2 FIND A ZERO BIT
  3599. SB4 B4+B4 2 WORDS / ENTRY
  3600. IX2 X2+X1 CLEAR ZERO BIT
  3601. SB5 B5+B4
  3602. SB3 B5-RTLL
  3603. PL B3,SCT29.1 IF END OF LIST
  3604. SA4 B5+RTL RTL ENTRY
  3605. BX6 X0*X4 TASK NAME
  3606. IX6 X6-X3
  3607. NZ X6,SCT29 IF NOT THE SAME TASK
  3608. LX4 5-29
  3609. BX6 -X7*X4 CURRENT PRIORITY
  3610. SB6 X6
  3611. LE B6,B2,SCT29 IF PRIORITY .LE. SELECTED
  3612. SB2 B6 NEW HIGHEST PRIORITY
  3613. SX5 A4+ NEW SELECTED RTL ADDRESS
  3614. EQ SCT29 CONTINUE PROCESSING
  3615.  
  3616. SCT29.1 SA2 SCTD FWA OF TASK SYSTEM AREA
  3617. SX4 B2 SELECTED HIGHEST PRIORITY
  3618. SB2 X2 RESTORE (B2)
  3619. ZR X4,SCT30 IF NO MATCH FOUND
  3620. SB5 X5 GET SELECTED TASK
  3621. SA4 A7 STATUS WORD 2
  3622. SB4 B7+CPAHL
  3623. SA2 B5+1 WORD 2 OF RTL ENTRY
  3624. SB3 TSSC RETURN ADDRESS
  3625. EQ SCHD9 QUEUE THE C.B.S FOR EXECUTION
  3626.  
  3627. SCT30 RJ DCPT DROP CPU FOR TASK
  3628. EQ TSSC TIME SLICE SUBCP
  3629.  
  3630. SCT31 MX6 1 *ITASK* MAY ACCEPT MORE TRANSACTIONS
  3631. SA6 EVIT
  3632. EQ SCT12 CHECK FOR MORE WORK FOR TASK
  3633.  
  3634. * NEWTRAN - START A NEW TRANSACTION CHAIN.
  3635.  
  3636. SCT32 RJ VTO VERIFY TASK ORIGIN
  3637. NG X6,TERR11 TASK NOT VALIDATED FOR REQUEST
  3638. SB6 B4+
  3639. SCT33 SX0 1 SYSTEM REQUEST
  3640. RJ FFCB GET A COMMUNICATION BLOCK
  3641. ZR X0,SCT34 IF NO C.B. AVAILABLE
  3642. SA1 B2+CB1C
  3643. SA2 A1+B1
  3644. BX6 X1 SAVE OLD C.B. HEADER WORDS
  3645. SA6 B2+SCRC
  3646. LX7 X2
  3647. SA7 A6+B1
  3648. SA1 TSEQ
  3649. SB4 B6
  3650. SX4 DCPPR SET DEFAULT CPU PRIORITY
  3651. SX6 B1
  3652. LX4 -12
  3653. SX3 66B READ/UPDATE SECURITY LEVELS
  3654. IX6 X6+X1
  3655. BX7 X7-X7
  3656. SA6 X0+CMBHL USER ACCESABLE C.B. HEADER
  3657. LX3 36
  3658. SA7 A6+B1
  3659. SB3 SCT25 RETURN ADDRESS
  3660. SA6 A1 RESET ADVANCED SEQUENCE NUMBER
  3661. SA6 B5-B4
  3662. BX7 X3+X0
  3663. LX6 18
  3664. SB4 B4-B1
  3665. IX6 X6+X4
  3666. SA7 X5+B1
  3667. SA6 X5+
  3668. EQ SCT15 SCHEDULE TASK
  3669.  
  3670. * PLACE TASK ON RECALL - NO AVAILABLE C.B.
  3671.  
  3672. SCT34 SX7 B6 SAVE LIST ADDRESS
  3673. BX7 -X7
  3674. SX3 SCT35 RETURN ADDRESS
  3675. LX7 18
  3676. BX6 X3+X7
  3677. SA6 B2+RCL
  3678. EQ TRCL PLACE TASK ON RECALL
  3679.  
  3680. SCT35 LX1 -18 RESTORE IMPORTANT REGISTERS
  3681. SX5 B2+CB1C C.B. HEADER WORD ADDRESS
  3682. SB6 X1
  3683. SB6 -B6
  3684. SB5 B2+NUAPL TASK RA
  3685. EQ SCT33 TRY AGAIN
  3686.  
  3687. * DUMP TASK FIELD LENGTH.
  3688.  
  3689. SCT36 SB3 -B4
  3690. EQ B3,B1,TERR1 ABNORMAL CEASE WITHOUT DUMP
  3691. BX6 X6-X6
  3692. SA3 TDSP CHECK *DSP* INTERLOCK
  3693. SX7 SRTN4.1
  3694. NZ X3,TRCL2 IF A ROUTE IS IN PROGRESS
  3695. SA3 B2+CB2C
  3696. SA6 DTSG USE *P* AS CALLED FROM ADDRESS
  3697. SX0 X3+ COMMUNICATION BLOCK ADDRESS
  3698. SB3 X3+3 TASK DUMP CONTROL WORDS
  3699. SA1 LOVC
  3700. RJ LOVL LOAD/EXECUTE DUMP TASK OVERLAY
  3701. EQ TERR1 ABORT TASK
  3702.  
  3703. * CALLRTN - SCHEDULE A TASK WITH RETURN.
  3704.  
  3705. SCT37 MX4 CBNLN
  3706. SA5 X5+B1
  3707. SA3 X5+CBCR GET CURRENT NEST LEVEL
  3708. MX0 -60+CBNLN
  3709. BX6 X4*X3
  3710. LX6 6
  3711. SB3 X6 NEST LEVEL COUNT
  3712. SX6 X6+B1 INCREMENT NEST LEVEL COUNT
  3713. BX4 -X0*X3
  3714. SX0 X6-NESTL-1
  3715. LX6 -6
  3716. BX7 X6+X4
  3717. PL X0,TERR18 IF NEST LEVEL LIMIT EXCEEDED
  3718. GT B3,B1,SCT38 IF NEST LEVEL IS GREATER THAN ONE
  3719. SA1 X5+2 SAVE REQUESTED TASK STRING
  3720. BX6 X1
  3721. SA6 B2+RTSC
  3722. SCT38 SB3 SCT41 RETURN ADDRESS
  3723. SX0 X5
  3724. SA7 A3 UPDATE *CBCR* WORD
  3725. SX5 B2+CB1C
  3726. EQ SCT15 SCHEDULE TASK(S)
  3727.  
  3728. * SET TASK ELIGIBLE FOR ROLLOUT AFTER *RTNDL* MILLESECONDS.
  3729.  
  3730. SCT41 RJ FFR RESERVE A ROLLOUT TABLE ENTRY
  3731. ZR X0,SCT43 IF ROLLOUT TABLE ENTRY NOT AVAILABLE
  3732. SA3 B2+CB2C GET C.B. ADDRESS
  3733. SX2 B1 SET *CALLRTN* FLAG IN *CBCR* WORD
  3734. SA1 X3+CBCR
  3735. LX2 CBRFS
  3736. BX7 X1+X2
  3737. SA7 A1
  3738. SCT42 SX5 RTDNL TIME ALLOWED BEFORE ROLLOUT
  3739. SX1 X3+ C.B. ADDRESS
  3740. SX4 0500B ROLLIN BASED ON SCHEDULING PRIORITY + 5
  3741. LX1 30
  3742. BX1 X1+X4
  3743. SB4 EVCR ROLLOUT TYPE
  3744. BX6 X6-X6
  3745. PX6 X6,B4
  3746. JP ROL3 SET TASK ELIGIBLE FOR ROLLOUT
  3747.  
  3748. * PLACE TASK IN RECALL.
  3749.  
  3750. SCT43 SX7 SCT41 RETURN ADDRESS
  3751. JP TRCL2 PLACE TASK IN RECALL
  3752.  
  3753.  
  3754. * PROCESS CEASE FROM A *CALLRTN* INITIATED TASK.
  3755.  
  3756. SCT45 SA5 X0+CBCR
  3757. SA2 B2+CB1C TRANSFER C.B. HEADER WORD 1
  3758. BX6 X2
  3759. MX3 -6
  3760. SB3 X5 ROLLOUT TABLE ADDRESS
  3761. LX5 12
  3762. BX5 -X3*X5 SUB CONTROL POINT NUMBER OF CALLER
  3763. SA6 X0
  3764. SA3 A2+B1 TRANSFER C.B. HEADER WORD 2
  3765. BX6 X3
  3766. SA6 X0+B1
  3767. LX5 SCPAL
  3768. TX5 X5-CPAL,VCPA SUB CONTROL POINT OF CALLER
  3769. SX1 CMBL-CMBHL-CMBRL
  3770. SX2 B2+NUAPL+SUAC+CMBRL
  3771. SA4 B7 SET SUBCP TABLE WORD 1
  3772. LX4 59-57
  3773. PL X4,SCT47 IF NOT SOLICITED C.B. LOAD
  3774. SA4 A4+B1 SET STATUS POINTER WORD
  3775. SA4 X4 SET COMMUNICATION BLOCK WORD
  3776. LX4 17-35
  3777. SX2 X4 SET FWA OF USER SPECIFIED BUFFER
  3778. SCT47 SX3 X0+CMBHL+CMBRL
  3779. RJ MVE= RECOPY COMMUNICATION BLOCK
  3780. SA2 B3
  3781. NG X2,SCT48 IF CALLERS ROLLOUT COMPLETE
  3782. SA4 X5
  3783. SX4 X4-NUAPL SUB CONTROL POINT AREA OF CALLER
  3784. SA4 X4+ROSC
  3785. MX7 1
  3786. BX7 X7+X4 SET FINISHED DURING ROLLOUT FLAG
  3787. SA7 A4+
  3788. SA4 X5+SCCCW GET ACTIVE C.B.
  3789. MX7 42
  3790. SA4 X4 RESET NEW C.B. ADDRESS
  3791. BX7 X7*X4
  3792. BX7 X7+X0
  3793. SA7 A4+
  3794. JP SCT11 CONTINUE CEASE PROCESSING
  3795.  
  3796. * REQUEST ROLL IN OF CALLER.
  3797.  
  3798. SCT48 SA4 B3
  3799. SX3 X4
  3800. NZ X3,SCT50 IF NOT CALLED BY CORE RESIDENT TASK
  3801. SA5 X5+SCCCW RESET NEW C.B. ADDRESS
  3802. MX7 42
  3803. SA5 X5
  3804. BX7 X7*X5
  3805. BX7 X7+X0
  3806. SA7 A5
  3807. LX4 -18
  3808. SA5 X4 SUB CONTROL POINT ADDRESS OF TASK
  3809. SB5 X5-NUAPL CONTROL POINT AREA OF CORE RESIDENT TASK
  3810. SB6 X4
  3811. SX4 B3 ROLLOUT TABLE ADDRESS
  3812. SB3 SCT49
  3813. JP ROL16 RELOAD C.B. AND RESTORE OLD ROLLOUT WORDS
  3814.  
  3815. SCT49 SB3 SCT11 CONTINUE CEASE PROCESSING
  3816. SX4 B5+
  3817. JP RCPU REQUEST CPU FOR CORE RESIDENT TASK
  3818.  
  3819. SCT50 SX5 B3
  3820. RJ MSQ MAKE SCHEDULER ENTRY FOR ROLL IN
  3821. JP SCT11 CONTINUE CEASE PROCESSING
  3822.  
  3823. * WAITINP - WAIT FOR TERMINAL INPUT.
  3824. * BWAITINP - BUFFERED WAIT FOR TERMINAL INPUT.
  3825.  
  3826. SCT51 SA3 B2+CB1C COMMUNICATION BLOCK WORD 1
  3827. BX4 X3
  3828. SA1 B7+B1
  3829. MX7 1 PRESET ERROR CODE
  3830. SA2 B2+CB2C COMMUNICATION BLOCK WORD 2
  3831. LX4 59-CBSDS LEFT JUSTIFY SEND FLAG
  3832. LX1 2
  3833. NG X1,TERR20 IF CM RESIDENT TASK
  3834. PL X4,TERR28 IF NO SEND PRIOR TO WAIT INPUT
  3835. LX1 -2-36
  3836. SX3 X1-1
  3837. LX2 CBTAN-1-CBTAS RIGHT JUSTIFY TERMINAL ADDRESS
  3838. SX6 X2 TERMINAL STATUS TABLE ADDRESS
  3839. NZ X3,TERR21 IF MORE THAN ONE TRANSACTION USING TASK
  3840. ZR X6,TERR20 IF NO ORIGINATING TERMINAL
  3841. SA3 X6+TSIWW INPUT WANTED STATUS FOR TERMINAL
  3842. LX3 59-TSIWS
  3843. ZR X3,SCT56 IF TERMINAL IN INPUT WANTED STATE
  3844. SX7 SCT52 RETURN ADDRESS
  3845. RJ SLB SEND LAST BLOCK
  3846. SCT52 MX4 TSIWN SET INPUT WANTED FLAG
  3847. SA3 B2+CB2C GET TST ADDRESS
  3848. LX4 CBITS-59
  3849. SA2 X3+CBITW SET INITIAL TRANSFER BIT
  3850. LX3 CBTAN-1-CBTAS
  3851. ERRNZ TSIWN-CBITN INPUT WANTED .NE. INITIAL TRANSFER
  3852. BX6 X4+X2
  3853. SA6 A2+
  3854. SA2 X3+TSIWW GET TST WORD 2
  3855. LX4 TSIWS-59-CBITS+59
  3856. BX6 X2+X4 ADD INPUT WANTED FLAG
  3857. SA6 A2 UPDATE TST WORD 2
  3858. LX3 17-CBFWS-CBTAN+1+CBTAS
  3859. SX2 X3
  3860. MX7 CBTON
  3861. BX7 X7*X3 TERMINAL ORDINAL
  3862. ERRNZ CBTOS-59 IF TERMINAL ORDINAL NOT LEFT JUSTIFIED
  3863. LX7 35-59
  3864. SA7 B2+RCLA
  3865. SA3 X2+CBTLW SAVE W3 - W6 OF C.B. SYSTEM HEADER
  3866. SA4 A3+B1 WORD 4
  3867. BX6 X3
  3868. SA5 A4+B1 WORD 5
  3869. BX7 X4
  3870. SA6 B2+WICB
  3871. SA3 A5+B1 WORD 6
  3872. SA7 A6+B1
  3873. BX6 X5
  3874. BX7 X3
  3875. SA6 A7+B1
  3876. SA7 A6+B1
  3877. RJ RLC RELEASE COMMUNICATION BLOCK
  3878. SCT53 SX7 SCT53
  3879. RJ FFR RESERVE A ROLLOUT TABLE ENTRY
  3880. ZR X0,TRCL2 IF ROLLOUT TABLE FULL
  3881. SA1 B7+B1
  3882. SX3 B7
  3883. MX6 42
  3884. BX6 X6*X1 CLEAR SUB CP C.B. STATUS WORD POINTER
  3885. SA2 B2+CB1C+1
  3886. BX6 X6+X3
  3887. LX2 -42
  3888. SX1 30B WAITING FOR INPUT AND TIMED ROLLOUT
  3889. SX2 X2 TERMINAL ORDINAL
  3890. SA6 A1
  3891. LX2 18
  3892. SX7 B1
  3893. LX1 54
  3894. SA3 B2+LRA1 RETRIEVE PARAMETER ADDRESS
  3895. BX1 X1+X2
  3896. SB3 B2+NUAPL TASK RA
  3897. SA4 SCTA READ BUFFER-*WAITINP* REQUEST
  3898. MX2 42
  3899. BX5 X2*X3
  3900. BX5 X5-X4
  3901. MX2 -11
  3902. NZ X5,SCT54 IF NOT BUFFER *WAITINP* REQUEST
  3903. MX5 1 SET RECALL BIT IN *LRA1*
  3904. LX5 40-59
  3905. BX6 X5+X3
  3906. SX4 DWITL (X4) = DEFAULT *WAITINP* TIMEOUT LIMIT
  3907. SA6 A3
  3908. EQ SCT55 CONTINUE PROCESSING BUFFER *WAITINP*
  3909.  
  3910. SCT54 SA4 X3+B3 READ TASK SUPPLIED TIME-OUT VALUE
  3911. SA7 A4 SET ROLLOUT COMPLETE FLAG FOR TASK
  3912. BX4 -X2*X4 USER DESIRED TIME OUT ON WAIT FOR INPUT
  3913. MX7 -RTTLN MASK SECONDS
  3914. NZ X4,SCT55 IF USER SPECIFIED TIME OUT
  3915. SX4 DWITL DEFAULT TIME OUT FOR WAIT ON INPUT
  3916. SCT55 SA2 LTIME CURRENT TIME
  3917. BX5 X5-X5
  3918. AX2 36
  3919. BX2 -X7*X2
  3920. IX2 X2+X4 TIME TO TIME OUT TASK WAITING FOR INPUT
  3921. LX2 30
  3922. BX1 X2+X1
  3923. SB4 EVWI ROLLOUT TYPE
  3924. SA2 B2+CB1C
  3925. MX3 -CBTSN MASK TRANSACTION SEQUENCE NUMBER
  3926. LX2 CBTSN-CBTSS-1 RIGHT JUSTIFY SEQUENCE NUMBER
  3927. BX6 -X3*X2
  3928. LX6 RTTSS-RTTSN+1
  3929. SA3 B2+WICB+3 GET *CDCS* CONNECTION FLAG
  3930. MX7 1
  3931. LX3 59-CDDM
  3932. BX2 X7*X3
  3933. LX2 RTCDS-59
  3934. BX6 X2+X6 ADD *CDCS* CONNECTION FLAG
  3935. PX6 X6,B4
  3936. EQ ROL3 ROLLOUT TASK UNTIL INPUT RECEIVED
  3937.  
  3938. SCT56 SA7 B2+16B SET STATUS IN TASK X6
  3939. EQ TSSC ENTER MAIN LOOP
  3940.  
  3941. * WAIT - ROLL TASK OUT FOR SPECIFIED TIME PERIOD.
  3942.  
  3943. SCT57 SA3 X5
  3944. SA4 B5-B4 PARAMETER WORD
  3945. MX6 -12
  3946. SA1 B7+B1 GET WORD 2 OF SUBCP TABLE ENTRY
  3947. SA3 LTIME
  3948. MX7 24
  3949. BX6 -X6*X4 USER REQUESTED ROLLOUT TIME (IN SECONDS)
  3950. SX5 X6-MINTL MINIMUM TIME TO STAY IN CORE
  3951. BX7 X7*X3 CURRENT SECOND COUNT FROM REAL TIME CLOCK
  3952. LX6 36
  3953. SX4 12B
  3954. IX6 X6+X7 TIME AT WHICH TO ROLLIN TASK
  3955. LX6 -6
  3956. LX1 59-SCCRS POSITION CM RESIDENT BIT
  3957. LX4 54
  3958. NG X1,SCT58 IF CM RESIDENT TASK
  3959. NG X5,SCT58 IF DELAY PERIOD IS LESS THAN *MINTL*
  3960. SX5 B0
  3961. BX1 X4+X6 EVENT DESCRIPTOR
  3962. JP ROLL ROLLOUT TASK
  3963.  
  3964. * PUT TASK INTO RECALL.
  3965.  
  3966. SCT58 SX7 SCT59 RETURN ADDRESS
  3967. LX6 6 POSITION BACK
  3968. IX7 X6+X7
  3969. EQ TRCL2 PUT TASK INTO RECALL
  3970.  
  3971. * PROCESS TASK AFTER RECALL.
  3972.  
  3973. SCT59 MX3 24 CHECK IF REAL TIME ELAPSED
  3974. SA2 LTIME
  3975. BX4 X3*X1 TASK ACTIVATION TIME
  3976. BX5 X3*X2 REAL TIME
  3977. IX6 X4-X5
  3978. PL X6,TRCL IF NOT TIME TO ACTIVATE TASK
  3979. EQ TSSC ENTER MAIN LOOP
  3980.  
  3981. * CHKON - SET *TOTAL* INTERLOCK FLAG.
  3982.  
  3983. SCT60 SA1 B2+DBNC DATA BASE NAME
  3984. RJ VTO VERIFY TASK ORIGIN
  3985. SA3 TOTLCK TOTAL INTERLOCK FLAG
  3986. NG X6,TERR26 IF TASK ORIGIN NOT TASKLIB
  3987. SA2 B2+CB1C SEQUENCE NUMBER
  3988. NZ X3,TERR26 IF INTERLOCK ALREADY SET
  3989. MX3 24
  3990. LX2 18
  3991. SX1 X1 TASK ID
  3992. BX6 X3*X2 SEQUENCE NUMBER
  3993. BX6 X6+X1
  3994. SA6 A3 SET TOTAL INTERLOCK FLAG
  3995. EQ TSSC REQUEST COMPLETE - REENTER SWITCHING LOOP
  3996.  
  3997. * CHKOFF - CLEAR *TOTAL* INTERLOCK FLAG.
  3998.  
  3999. SCT61 SA1 B2+CB1C TASK SEQUENCE NUMBER
  4000. RJ VTO VERIFY TASK ORIGIN
  4001. SA2 TOTLCK TOTAL INTERLOCK FLAG
  4002. NG X6,TERR26 IF TASK ORIGIN NOT TASKLIB
  4003. ZR X2,TERR26 IF INTERLOCK NOT SET
  4004. MX3 24
  4005. LX1 18
  4006. BX2 X3*X2
  4007. BX1 X3*X1
  4008. IX6 X1-X2 VERIFY SEQUENCE NUMBER OF TASK
  4009. NZ X6,TERR26 IF NOT THE SAME TASK AS THE SETTING TASK
  4010. SA6 TOTLCK CLEAR TOTAL INTERLOCK FLAG
  4011. EQ TSSC REQUEST COMPLETE - REENTER SWITCHING LOOP
  4012.  
  4013. * CALLTRN - SCHEDULE A TRANSACTION.
  4014.  
  4015. SCT62 RJ VTO VALIDATE TERMINAL ORIGIN
  4016. NG X6,TERR11 IF NOT SYSTEM ORIGIN TASK
  4017. SA2 B5-B4 PARAMETER WORD
  4018. SA3 B2+DBNC GET DATA BASE NAME
  4019. SB5 B1 TRANSACTION SEARCH
  4020. RJ LTT LOCATE TRANSACTION
  4021. ZR X6,TERR40 IF TRANSACTION NAME UNKNOWN
  4022. SA4 A1+B1 WORD TWO OF TRD ENTRY
  4023. BX6 X4
  4024. SA4 B2+CB2C SYSTEM C.B. HEADER
  4025. SA6 X4+CBTLW PUT TASK LIST IN C.B.
  4026. SB3 X4 FWA OF C.B.
  4027. SA4 X4+CBCSW
  4028. SA2 A1 WORD ONE OF TRD ENTRY
  4029. MX6 -1
  4030. BX3 -X6*X2
  4031. LX3 CBRTS-0
  4032. BX4 X4+X3 ADD RECOVERABLE TRANSACTION FLAG
  4033. MX6 -2
  4034. LX6 TDDCS-TDRMS
  4035. BX3 -X6*X2
  4036. LX3 CBCSS-TDDCS
  4037. BX6 X4+X3 ADD DATA MANAGERS ALLOWED FLAG
  4038. SA6 A4
  4039. ERRNZ TDDCS-TDRMS-1 BITS MUST BE ADJACENT
  4040. ERRNZ CBCSS-CBRMS-1 BITS MUST BE ADJACENT
  4041. RJ RTI RECOVER TERMINAL INPUT
  4042. SX5 B2+CB1C
  4043. BX4 X4-X4
  4044. SA2 X5+B1 GET COMMUNICATION BLOCK ADDRESS
  4045. SX0 X2+ FWA OF C.B.
  4046. SB3 SCT11 RETURN ADDRESS AFTER TASK IS SCHEDULED
  4047. EQ SCT18 SCHEDULE FIRST TASK
  4048.  
  4049. SCTA VFD 24/4LSCTP,6/0,12/9,18/0 FORM OF BUFFER-*WAITINP*
  4050. SCTB BSS 1 BIAS OF *OFFTASK*
  4051. SCTC BSS 1 BIAS OF *CTASK*
  4052. SCTD CON 0 FWA OF TASK SYSTEM AREA
  4053. AAM SPACE 4,30
  4054. ** AAM - ADVANCED ACCESS METHODS REQUEST PROCESSOR.
  4055. * AAM ENTERS REQUEST INTO *AMIQ* INPUT QUEUE.
  4056. *
  4057. * ENTRY (X5) = 24/3LAAM,18/FNC,18/ADR
  4058. * FNC - FUNCTION CODE FOR REQUEST.
  4059. * ADR - ADDRESS OF PARAMENTER LIST.
  4060. *
  4061. * EXIT TO *DCPT* IF NO ERRORS AND RECALL REQUESTED.
  4062. * TO *TERR2* IF INCORRECT PARAMETER ADDRESS.
  4063. * TO *TERR3* IF INCORRECT FUNCTION CODE.
  4064. * TO *TERR39* IF AAM USAGE NOT SELECTED
  4065. * TO *TERR30* IF *CRM* DATA MANAGER NOT LOADED.
  4066. * TO *TRCL* IF NO MORE TRANSACTIONS CAN MAKE REQUESTS.
  4067. * TO *TRCL2* IF INPUT QUEUE IS FULL.
  4068. * TO *TSSC* IF NO ERRORS AND NO RECALL REQUESTED.
  4069. *
  4070. * *AMIQ* CONTAINS QUEUE ENTRY -
  4071. *
  4072. * 24/ TS,6/0,6/ FC,1/R,5/ SN,18/ ADR
  4073. * TS - TRANSACTION SEQUENCE NUMBER
  4074. * FC - REQUEST FUNCTION CODE.
  4075. * R - RECALL FLAG, ALWAYS = 1 FOR RECALL.
  4076. * SN - SUB-CONTROL POINT NUMBER.
  4077. * ADR - FWA OF REQUEST PARAMETERS.
  4078. *
  4079. * USES X - ALL.
  4080. * A - 1, 3, 4, 5, 7.
  4081. * B - 3, 4, 5.
  4082. *
  4083. * CALLS PDIF.
  4084.  
  4085.  
  4086. AAM TX3 0,VAAM,LWA AAM INITIALIZATION FLAG
  4087. SB4 X5+ ADDRESS OF PARAMETERS
  4088. ZR X3,TERR30 IF *CRM* DATA MANAGER NOT LOADED
  4089. ZR B4,TERR2 IF PARAMETER ADDRESS ZERO
  4090. LX5 -18
  4091. SB4 -B4
  4092. SX0 X5 FUNCTION CODE
  4093. SX6 X1+B4
  4094. NG X6,TERR2 IF PARAMETER ADDRESS OUT OF BOUNDS
  4095. PL B4,TERR2 IF PARAMETER ADDRESS OUT OF BOUNDS
  4096. SX6 X5-100B
  4097. PL X6,TERR3 IF FUNCTION CODE GREATER THAN 6 BITS
  4098. SX3 X0-DMCC
  4099. ZR X3,TERR3 IF TASK USED DATA MANAGER CEASE CODE
  4100.  
  4101. * BUILD INPUT QUEUE REQUEST.
  4102.  
  4103. LX0 30-6 FUNCTION CODE
  4104. SX4 -B4 ADDRESS OF PARMETER LIST
  4105. SB3 AAM6 RETURN ADDRESS
  4106. SA2 B2+CB2C COMMUNICATION BLOCK ADDRESS
  4107. SA3 X2+CBSOW
  4108. LX3 59-CBSOS
  4109. NG X3,AAM1 IF SYSTEM TASK
  4110. SX1 X5
  4111. SX2 X1-TRSR
  4112. PL X2,TERR3 IF TASK USED SYSTEM REQUEST
  4113.  
  4114. * ENTRY POINT FOR TASK CEASE.
  4115.  
  4116. AAM1 TX2 B7+CPAL,-VCPA COMPUTE SUBCP NUMBER
  4117. SA3 B2+TRID TRANSACTION IDENTIFIER
  4118. IX4 X4+X0 ADD FUNCTION CODE
  4119. MX0 1
  4120. LX0 23-59 FORCE RECALL
  4121. AX2 SCPAL
  4122. BX4 X4+X0 ADD RECALL BIT
  4123. LX2 23-5 SUB-CONTROL POINT NUMBER
  4124. BX4 X4+X2 ADD SUB CONTROL POINT NUMBER
  4125. LX3 59-23 POSITION TRANSACTION IDENTIFIER
  4126. SA5 AAMA AAM STATUS WORD
  4127. SX1 B1
  4128. BX6 X4+X3 ADD TRANSACTION IDENTIFIER
  4129. SA3 B2+CB2C FWA OF COMMUNICATION BLOCK
  4130. SX0 X3+
  4131. SA3 X3+CBCR
  4132. LX3 59-AAMDM
  4133. MX7 1
  4134. NG X3,AAM3 IF TRANSACTION MADE A PREVIOUS REQUEST
  4135.  
  4136. * IF TRANSACTION RECOVERABLE AND AAM REQUEST NOT ALLOWED,
  4137. * ABORT TASK.
  4138.  
  4139. SA4 X0+CBRTW
  4140. LX4 59-CBRTS
  4141. PL X4,AAM2.1 IF NOT A RECOVERABLE TRANSACTION
  4142. ERRNZ CBRTW-CBRMW RECOVERABLE TRANSACTION BIT NOT IN SAME
  4143. WORD AS *CRM* ALLOWED BIT
  4144. LX4 59-CBRMS-59+CBRTS
  4145. PL X4,TERR39 IF AAM USAGE NOT SELECTED
  4146.  
  4147. * CHECK IF ANOTHER TRANSACTION CAN MAKE REQUEST.
  4148.  
  4149. AAM2.1 LX5 17-35 FUNCTION
  4150. SB4 X5
  4151. BX7 X7+X3 ALLOW TRANSACTION TO USE AAM
  4152. LX7 AAMDM-59
  4153. SA7 A3+
  4154. ZR B4,AAM9 IF AAM CANNOT ACCEPT CALLS
  4155. IX5 X5-X1 DECREMENT AAM TRANSACTION COUNT
  4156. LX5 18
  4157. BX7 X5
  4158. SA7 A5
  4159.  
  4160. * ENTER REQUEST INTO INPUT QUEUE.
  4161.  
  4162. AAM3 TB5 0,VAAQ FWA OF INPUT QUEUE FET
  4163. SX4 B3+ SAVE RETURN ADDRESS
  4164. AAM4 RJ PDIF PUT ENTRY IN INPUT QUEUE
  4165. SB3 X4 RESTORE RETURN ADDRESS
  4166. ZR X7,AAM7 IF INPUT QUEUE FULL
  4167. MX1 -6
  4168. BX7 X7-X7 INSURE THAT *AMI* WILL BE CALLED
  4169. LX6 -24
  4170. SA7 DTIME
  4171. BX1 -X1*X6
  4172. SX3 B1
  4173. SX1 X1-DMCC
  4174. IX7 X5+X3 ADVANCE OUTSTANDING REQUESTS
  4175. SA7 A5
  4176. ZR X1,AAM5 IF TASK CEASE REQUEST
  4177. SA1 B2+AAMC AAM STATUS WORD
  4178. IX6 X1+X3 AAM OUTSTANDING REQUEST COUNT
  4179. SA6 A1
  4180. AAM5 JP B3 RETURN
  4181.  
  4182. AAM6 RJ DCPT DROP THE CPU FOR THE TASK
  4183. EQ TSSC TIME SLICE SUBCP
  4184.  
  4185. * PLACE TASK IN RECALL BECAUSE QUEUE IS FULL.
  4186.  
  4187. AAM7 SX7 AAM8 RESTART ADDRESS FOR TASK RECALL
  4188. SX2 B3+ RETURN ADDRESS AFTER TASK MAKES REQUEST
  4189. LX2 18
  4190. BX7 X7+X2 SAVE RETURN ADDRESS
  4191. SA6 B2+RCLA
  4192. EQ TRCL2 PLACE TASK ON RECALL
  4193.  
  4194. * TASK HAS COME OUT OF RECALL. TRY PUTTING REQUEST
  4195. * IN QUEUE AGAIN.
  4196.  
  4197. AAM8 AX1 18
  4198. SA4 A1+B1 AAM INPUT QUEUE ENTRY
  4199. SA5 AAMA AAM STATUS WORD
  4200. SB3 X1 RETURN ADDRESS
  4201. BX6 X4 SET INPUT QUEUE ENTRY
  4202. EQ AAM3 TRY TO PLACE IN QUEUE AGAIN
  4203.  
  4204. * PLACE TASK ON RECALL BECAUSE NO MORE TRANSACTIONS
  4205. * MAY USE DATA MANAGER AT THIS TIME.
  4206.  
  4207. AAM9 SX7 AAM10 RETURN ADDRESS FROM RECALL
  4208. SX2 B3+ RETURN ADDRESS AFTER PLACING IN QUEUE
  4209. LX2 18
  4210. BX7 X7+X2
  4211. SA6 B2+RCLA SAVE QUEUE ENTRY
  4212. SA7 B2+RCL
  4213. EQ TRCL PLACE TASK ON RECALL
  4214.  
  4215. * TASK HAS COME OUT OF RECALL. CHECK TO SEE IF DATA
  4216. * MANAGER CAN NOW HANDLE NEW TRANSACTION.
  4217.  
  4218. AAM10 SA5 AAMA AAM STATUS WORD
  4219. SX3 B1
  4220. LX5 -18
  4221. SB4 X5
  4222. ZR B4,TRCL IF STILL UNABLE TO START TRANSACTION
  4223. IX7 X5-X3 DECREMENT TRANSACTIONS MAKING REQUESTS
  4224. LX7 18
  4225. SA7 A5
  4226. EQ AAM8 SET UP QUEUE REQUEST
  4227.  
  4228. *T AAMA 24/0,18/ ANS,18/ ANO
  4229. *
  4230. * ANS - MAXIMUM TRANSACTIONS MAKING *CRM* REQUESTS.
  4231. * ANO - NUMBER OF OUTSTANDING TRANSACTIONS.
  4232. AAMA VFD 24/0,18/0,18/0
  4233. CPM SPACE 4,25
  4234. ** CPM - CONTROL POINT MANAGER.
  4235. *
  4236. * FUNCTION PROCESSOR FOR *CPM* FUNCTIONS 27B - GET JOB ORIGIN
  4237. * AND 137B - GET CONSOLE TYPE. IN ORDER FOR SOME PRODUCT SET
  4238. * BINARIES TO MAKE RUN-TIME DETERMINATION AS TO WHETHER OR NOT
  4239. * THE CODE SEGMENT IS EXECUTING IN THE TRANSACTION ENVIRONMENT,
  4240. * THE *GETJO* FUNCTION OF *CPM* IS SUPPORTED.
  4241. *
  4242. *T 18/ CPM, 6/ R, 12/ FUNC, 24/ ADDR.
  4243. *
  4244. * ADDR - ADDRESS TO RETURN JOB ORIGIN.
  4245. *
  4246. * ENTRY (X1) = TASK FL.
  4247. * (X5) = SYSTEM REQUEST.
  4248. * (B3) = TASK RA.
  4249. *
  4250. * EXIT TO *TERR2* IF INCORRECT PARAMETER ADDRESS.
  4251. * TO *TERR3* IF INCORRECT *CPM* FUNCTION CODE.
  4252. * TO *TSSC* UPON COMPLETION.
  4253. *
  4254. * USES A - 7.
  4255. * X - 0, 6, 7.
  4256. * B - 4, 6.
  4257. *
  4258. * MACROS CSTATUS.
  4259.  
  4260.  
  4261. CPM SB6 X1+ (B6) = FL
  4262. SB4 X5 (B4) = ADDRESS OF PARAMETERS
  4263. SX6 B4-B6
  4264. PL X6,TERR2 IF ADDRESS OUT OF BOUNDS
  4265. LE B4,B1,TERR2 IF ADDRESS OUT OF BOUNDS
  4266. MX0 -12 EXTRACT *CPM* FUNCTION CODE
  4267. BX6 X5
  4268. LX6 11-35
  4269. BX6 -X0*X6
  4270. SX6 X6-137B
  4271. SX7 TROT SET TRANSACTION ORIGIN
  4272. ZR X6,CPM2 IF CONSOLE TYPE REQUESTED
  4273. SX6 X6-27B+137B
  4274. NZ X6,TERR3 IF UNSUPPORTED FUNCTION CODE REQUESTED
  4275.  
  4276. * PROCESS 27B REQUEST BY RETURNING TRANSACTION ORIGIN TO TASK.
  4277.  
  4278. SA7 X5+B3
  4279. EQ TSSC ENTER TASK SWITCHING LOOP
  4280.  
  4281. * PROCESS 137B REQUEST BY RETURNING CONSOLE TYPE TO TASK.
  4282.  
  4283. CPM2 CSTATUS B3+B4
  4284. EQ TSSC ENTER TASK SWITCHING LOOP
  4285. D00 SPACE 4,40
  4286. ** D00 - DIAGNOSTIC FUNCTION PROCESSOR.
  4287. *
  4288. * *D00* IS CALLED BY THE COBOL DIAGNOSTIC ROUTINES TO
  4289. * RETRIEVE MESSAGE TEXTS FROM *STEXT* TYPE RECORDS WHICH
  4290. * RESIDE ON THE SYSTEM FILE.
  4291. *
  4292. *T 18/ D00, 6/ R, 18/ 0, 18/ ADDR.
  4293. *
  4294. * ADDR 12/ FUNC, 12/ MESS NUM, 12/ BUF LEN, 18/ BUF, 6/ 0.
  4295. *
  4296. * WHERE - FUNC = DIRECTIVES TO *DOO* FOR MESSAGE DESTINATION.
  4297. * MESS NUM = MESSAGE NUMBER TO BE RETRIEVED.
  4298. * BUF LEN = LENGTH OF MESSAGE BUFFER.
  4299. * BUF = FWA OF BUFFER.
  4300. *
  4301. * RESPONSE -
  4302. *
  4303. *T ADDR 36/ 0, 12/ WORD COUNT, 12/ 1
  4304. *
  4305. * WORD COUNT = LENGTH OF THE TRANSFERRED CHARACTER STRING.
  4306. * = 7777B - IF AN ERROR STATUS FOR EITHER
  4307. * NON-EXISTENT ERROR NUMBERS OR *STEXTS*.
  4308. *
  4309. * *D00* WILL NOT ABORT THE EXECUTIVE FOR SUCH ERRORS.
  4310. * THEREFORE, ERROR CHECKING SHOULD BE PERFORMED BY THE
  4311. * EXECUTIVE PRIOR TO RETURN TO THE SUB-CONTROL POINT.
  4312. *
  4313. * USES A - 1, 7.
  4314. * X - 0, 1, 4, 6, 7.
  4315. * B - 4, 6.
  4316. *
  4317. * EXITS TO *TERR2*, IF PARAMETER ADDRESS INCORRECT.
  4318. * TO *TERR3*, IF ERROR DETECTED BY *D00* ON CALL.
  4319. * TO *TSSC*, UPON COMPLETION OF REQUEST.
  4320. *
  4321. * CALLS SYS=.
  4322.  
  4323.  
  4324. D00 SB6 X1 (B6) = FL
  4325. SB4 X5 (B4) = ADDRESS OF PARAMETERS
  4326. SX6 B4-B6
  4327. MX0 -18
  4328. PL X6,TERR2 IF ADDRESS OUT OF BOUNDS
  4329. SA1 X5+B3 READ REQUEST WORD
  4330. LE B4,B1,TERR2 IF ADDRESS OUT OF BOUNDS
  4331.  
  4332. * VALIDATE AND RELAVITIZE ADDRESS IN PARAMETER BLOCK.
  4333.  
  4334. LX1 17-23
  4335. BX6 -X0*X1
  4336. MX0 -12 EXTRACT BUFFER LENGTH FOR BOUNDS CHECKING
  4337. LX1 11-29
  4338. BX7 -X0*X1
  4339. IX6 X6+X7
  4340. SX4 B6 (X4) = SUBCP FL
  4341. SX7 B3 (X7) = RA(S)
  4342. IX6 X6-X4
  4343. LX7 6
  4344. PL X6,TERR2 IF ADDRESS OUT OF BOUNDS
  4345. LX1 35-11
  4346. IX7 X7+X1 (X7) = BIASED *D00* HEADER
  4347. BX6 X7 TEST FOR UNSUPPORTED SUB-FUNCTION CODE
  4348. LX6 59-58
  4349. NG X6,TERR3 IF UNSUPPORTED FUNCTION CODE
  4350. SA7 A1
  4351.  
  4352. * RELAVATIVE ADDRESS POINTER IN REQUEST WORD.
  4353.  
  4354. SX7 B3+
  4355. MX4 1 SET RECALL UNCONDITIONALLY
  4356. BX6 X5
  4357. LX4 40-59
  4358. IX6 X6+X7
  4359. BX6 X6+X4
  4360. RJ SYS= RE-ISSUE REQUEST TO SYSTEM
  4361.  
  4362. * CHECK FOR RETURNED ERROR STATUS FROM *D00*.
  4363.  
  4364. SA1 X6 READ REQUEST WORD
  4365. LX1 59-23
  4366. NG X1,TERR3 IF ERROR STATUS RETURNED
  4367. EQ TSSC ENTER TASK SWITCHING LOOP
  4368. SSC SPACE 4,50
  4369. ** SSC - SYSTEM CONTROL POINT REQUEST.
  4370. *
  4371. * THIS PROCESSOR ACCEPTS THE TASK REQUEST, ADDS TASK-S RA, FL,
  4372. * AND SEQUENCE NUMBER TO WORD 2 OF REQUEST BLOCK AND ISSUES
  4373. * THE *SSC* REQUEST WITHOUT RECALL. THE FORMAT OF REQUEST IS
  4374. *
  4375. *T W0 24/RCDS,12/RIN,6/WC,4/RCDC,2/RT,6/RC,5/SF,1/CB
  4376. *T,W1 18/EBUF,9/ENUM,27/ ,6/FC
  4377. *T,W2 18/RA,18/FL,24/TS
  4378. *
  4379. * RT - RETURN CONTROL FLAG.
  4380. * RC - REASON CODE RETURNED BY *CDCS*.
  4381. * SF - ERROR STATUS.
  4382. * CB - COMPLETE BIT.
  4383. * EBUF - ERROR MESSAGE BUFFER.
  4384. * FC - FUNCTION CODE.
  4385. * RA - RA OF TASK.
  4386. * FL - FL OF TASK.
  4387. * TS - TRANSACTION SEQUENCE NUMBER.
  4388. *
  4389. * 1. VERIFY THAT THE REQUEST BLOCK IS IN THE TASK-S FL AND
  4390. * THAT THE REQUEST IS FOR *CDCS*.
  4391. * 2. IF A TERMINATION REQUEST IS NOT THE LAST TASK OF THE
  4392. * TRANSACTION, RETURN WITH THE COMPLETION BIT SET TO 1.
  4393. * 3. SET THE RETURN CONTROL FLAG IN FWA OF THE REQUEST BLOCK.
  4394. * 4. SET THE TASK-S RA, FL, AND SEQUENCE NUMBER IN WORD 2.
  4395. * 5. ISSUE THE REQUEST WITHOUT RECALL.
  4396. * 6. IF THE REQUEST IS NOT COMPLETE, PUT THE TASK IN RECALL.
  4397. * 7. IF *CDCS* IS NOT PRESENT, ABORT THE TASK.
  4398. * 8. IF *CDCS* IS BUSY, PUT THE TASK IN RECALL AND TRY TO
  4399. * REISSUE THE REQUEST LATER.
  4400. * 9. IF A FATAL ERROR OCCURS, MOVE THE FATAL CDCS MESSAGE
  4401. * TO THE LAST 14 WORDS OF TASK COMMUNICATION BLOCK (*MSABT*
  4402. * WILL SEND THIS MESSAGE TO THE ORIGINATING TERMINAL).
  4403. * JOURNAL THE ERROR MESSAGE AND ABORT THE TASK.
  4404. * 10. RETURN TO CALLER.
  4405. *
  4406. * ENTRY (X1) = TASK FL.
  4407. * (X5) = 24/4LSSCP,18/SS,18/FWA PARAMETER BLOCK.
  4408. * SS = SUBSYSTEM PRIORITY.
  4409. * (B2) = FWA OF SYSTEM AREA.
  4410. * (B7) = FWA OF SUBCONTROL POINT TABLE.
  4411. * (B5) = TASK RA.
  4412. *
  4413. * EXIT TO *TERR31* IF *CDCS* NOT PRESENT.
  4414. * TO *TERR32* IF FATAL ERROR.
  4415. * TO *TERR39* IF *CDCS* USAGE NOT SELECTED.
  4416. * TO *TSSC* OR *PCDMX* IF NO ERROR.
  4417. * WORD *CBCR* BIT *CDCSDM* OF C.B. UPDATED.
  4418. *
  4419. * USES X - ALL.
  4420. * A - 1, 2, 3, 4, 5, 6, 7.
  4421. * B - 3, 4, 5, 6.
  4422. *
  4423. * CALLS SSM, SYS=, TRCL.
  4424.  
  4425.  
  4426. SSC SB3 TSSC RETURN ADDRESS
  4427. SA2 CDST
  4428. NZ X2,SSC13.1 IF CDCS ABORTED
  4429. MX0 -CDFCN
  4430. SB4 X5 FWA OF PARAMETER BLOCK
  4431. SX2 X5+B1
  4432. IX2 X1-X2
  4433. LE B4,B1,TERR2 IF ADDRESS OUT OF RANGE
  4434. NG X2,TERR2 IF ADDRESS OUT OF RANGE
  4435. MX7 -12 MASK SUBSYSTEM PRIORITY
  4436. LX5 0-18
  4437. SX2 CDSI *CDCS* SUBSYSTEM ID
  4438. BX7 -X7*X5
  4439. IX3 X2-X7
  4440. NZ X3,TERR4 IF INCORRECT SYSTEM REQUEST
  4441. SB4 B4+B5 FWA OF PARAMETER BLOCK
  4442. LX5 18-0
  4443. SA2 B4+B1 FETCH FUNCTION CODE
  4444. MX6 6
  4445. SX4 CDNT NORMAL TERMINATION FUNCTION CODE
  4446. BX2 -X0*X2
  4447. IX0 X2-X4
  4448. NZ X0,SSC1 IF NOT TERMINATION REQUEST
  4449. SA2 B2+CB2C
  4450. SA3 X2+CBCR
  4451. SX0 B1
  4452. BX7 X6*X3
  4453. SA4 X2+2 GET TASK LIST
  4454. BX4 X7+X4
  4455. ZR X4,SSC1 IF LAST TASK IN CHAIN
  4456. SA3 B4
  4457. BX6 X3+X0 SET COMPLETE BIT
  4458. SA6 B4
  4459. EQ TSSC ENTER MAIN LOOP
  4460.  
  4461. * ENTRY POINT FROM *PCDM*.
  4462. *
  4463. * (B2) = FWA OF TASK SYSTEM AREA.
  4464. * (B3) = RETURN ADDRESS.
  4465. * (B4) = FWA OF PARAMETER BLOCK.
  4466. * (B5) = TASK RA.
  4467. * (B7) = FWA OF TASK SUBCONTROL POINT TABLE.
  4468. * (X1) = TASK FL.
  4469. * (X5) = 24/4LSSCP,18/,18/FWA OF PARAMETER BLOCK.
  4470.  
  4471. SSC1 MX7 -59 CLEAR RECALL FLAG
  4472. SX4 B5 TASK RA
  4473. SA2 CDST
  4474. NZ X2,SSC13.1 IF CDCS ABORTED
  4475. SA2 STAT20 UPDATE NUMBER OF *SSC* REQUESTS FOR TASKS
  4476. SX6 B1
  4477. IX6 X2+X6
  4478. SA6 A2
  4479. MX0 CDRTN ADD RETURN CONTROL FLAG
  4480. SA2 B2+CB1C GET TRANSACTION SEQUENCE NUMBER
  4481. SA3 B2+CB2C GET FWA OF COMMUNICATION BLOCK
  4482. SA3 X3+CBRTW
  4483. LX3 59-CBRTS
  4484. PL X3,SSC1.1 IF NOT RECOVERABLE TRANSACTION
  4485. ERRNZ CBRTW-CBCSW RECOVERABLE TRANSACTION BIT NOT IN SAME
  4486. WORD AS *CDCS* ALLOWED BIT
  4487. LX3 59-CBCSS-59+CBRTS
  4488. PL X3,TERR39 IF *CDCS* USAGE NOT ALLOWED
  4489. SSC1.1 LX7 40-59
  4490. BX6 -X7*X5 DELETE RECALL FLAG
  4491. SA3 B4 FIRST WORD OF PARAMETER BLOCK
  4492. LX2 CDTSS-CBTSS
  4493. SA6 B2+CDFN SAVE REQUEST WORD
  4494. LX0 CDRTS-59
  4495. LX1 CDFLS-17
  4496. IX6 X6+X4 ADD TASK RA TO REQUEST WORD
  4497. MX7 CDHDN
  4498. BX3 X7*X3 CLEAR RC, SF, AND CB FIELD
  4499. LX4 CDRAS-17
  4500. BX7 X3+X0 ADD RETURN CONTROL FLAG
  4501. SA7 B4
  4502. BX4 X4+X1 ADD RA AND FL
  4503. MX0 -CDTSN
  4504. BX3 -X0*X2 MASK TRANSACTION SEQUENCE NUMBER
  4505. BX7 X3+X4
  4506. SA1 CMPF GET PAUSE FLAG
  4507. SA7 B4+CDRAW
  4508. NZ X1,SSC2 IF PAUSE FLAG SET
  4509. SA5 SSCC GET OUTSTANDING REQUEST COUNT
  4510. SX7 X5-MAXR
  4511. NG X7,SSC4 IF OUTSTANDING REQUESTS LESS THAN MAXR
  4512. SSC1.5 SA2 STAT18 UPDATE NUMBER OF *SSC* REJECTS FOR *MAXR*
  4513. SX6 B1+
  4514. IX6 X2+X6
  4515. SA6 A2+
  4516.  
  4517. * PUT TASK INTO RECALL.
  4518.  
  4519. SSC2 SX7 SSC3 RETURN ADDRESS
  4520. SB5 B2+NUAPL SUBCP RA
  4521. SX3 B4-B5 SAVE PARAMETERS FOR RECALL
  4522. SX2 B3
  4523. LX3 18
  4524. LX2 -18
  4525. BX7 X3+X7
  4526. BX7 X2+X7 (X7) = 18/ADDR,6/0,18/FWA OF PAR,18/SSC3
  4527. EQ TRCL2 PUT TASK INTO RECALL
  4528.  
  4529. * RETURN FROM RECALL.
  4530.  
  4531. SSC3 LX1 -18 RESET PARAMETERS
  4532. SA3 CMPF GET PAUSE FLAG
  4533. SB4 X1 FWA OF PARAMETER BLOCK
  4534. NZ X3,TRCL IF PAUSE STILL SET
  4535. SA5 SSCC GET OUTSTANDING REQUEST COUNT
  4536. SX6 X5-MAXR
  4537. SA2 B2+CDFN GET REQUEST WORD
  4538. LX1 -24
  4539. SB3 X1 RETURN ADDRESS
  4540. SB5 B2+NUAPL TASK RA
  4541. SX4 B5 TASK RA
  4542. SB4 B4+B5
  4543. PL X6,SSC1.5 IF OUTSTANDING REQUESTS .GE. LIMIT
  4544. IX6 X2+X4 ADD TASK TO REQUEST WORD
  4545. MX0 CDHDN+CDRTN
  4546. LX4 CDRAS-17
  4547. SA1 B4 FWA OF PARAMETERS
  4548. SA2 B4+CDRAW WORD 2 OF PARAMETERS
  4549. BX7 X0*X1 CLEAR RC, SF, AND CB FIELD
  4550. SA7 A1
  4551. MX0 CDRAN CLEAR RA FIELD
  4552. BX2 -X0*X2
  4553. IX7 X2+X4 ADD NEW TASK RA
  4554. SA7 A2
  4555.  
  4556. * RE-ISSUE REQUEST TO SYSTEM CONTROL POINT.
  4557.  
  4558. SSC4 SX7 X5+B1 INCREMENT OUTSTANDING REQUEST COUNTER
  4559. SA7 A5
  4560. RJ SYS= ISSUE REQUEST TO SYSTEM
  4561. SX7 SSC5
  4562. SA2 B4 FIRST WORD OF PARAMETER BLOCK
  4563. LX2 59-CDCBS
  4564. NG X2,SSC6 IF OPERATION ALREADY COMPLETE
  4565. MX0 1 SET STORAGE MOVE NOT ALLOWED
  4566. SA1 B7
  4567. SX2 B3 SET RECALL PARAMETER
  4568. SX3 B4
  4569. BX6 X0+X1
  4570. LX2 -18
  4571. LX3 18
  4572. BX7 X2+X7 ADD FINAL RETURN ADDRESS
  4573. SA6 B7
  4574. BX7 X3+X7 ADD FWA OF PARAMETER BLOCK
  4575. EQ TRCL2 PLACE TASK INTO RECALL
  4576.  
  4577. * PROCESS RETURN FROM RECALL.
  4578.  
  4579. SSC5 LX1 -18
  4580. SA2 X1 FIRST WORD OF PARAMETER BLOCK
  4581. LX2 59-CDCBS
  4582. MX0 -59 CLEAR STORAGE MOVE NOT ALLOWED FLAG
  4583. PL X2,TRCL IF REQUEST NOT COMPLETE YET
  4584. SA3 B7
  4585. SB4 X1
  4586. BX6 -X0*X3
  4587. LX1 -24
  4588. SB3 X1 RETURN ADDRESS
  4589. SA6 B7
  4590. SSC6 MX0 -CDESN GET ERROR CODE
  4591. BX6 -X0*X2
  4592. SA5 SSCC DECREMENT OUTSTANDING REQUEST COUNT
  4593. SX7 X5-1
  4594. SA2 B4+B1 GET FUNCTION CODE
  4595. MX0 -CDFCN
  4596. SX4 CDNT
  4597. BX2 -X0*X2
  4598. IX0 X2-X4
  4599. SA3 B2+CB2C
  4600. SX4 CDAT
  4601. SA7 A5
  4602. MX1 -59
  4603. SA5 X3+CBCR WORD CBCR OF C.B. SYSTEM AREA
  4604. LX1 CDDM-59
  4605. BX7 -X1*X5
  4606. ZR X0,SSC7 IF NORMAL TERMINATION
  4607. IX0 X2-X4
  4608. ZR X0,SSC7 IF ABNORMAL TERMINATION
  4609. BX7 X1+X5 SET CONNECTION FLAG
  4610. SSC7 SA7 A5+
  4611. NZ X6,SSC8 IF ERROR OCCURRED
  4612. SSC7.1 RJ SSM ISSUE SUBSYSTEM MESSAGE
  4613. SSCA EQU SSC7.1 UPDATED BY ROUTINE *SSM*
  4614. * JP B3 (CDCS CONNECTION ESTABLISHED - RETURN)
  4615.  
  4616. * PROCESS ERROR CONDITIONS.
  4617.  
  4618. SSC8 MX4 -CDSFN
  4619. SX3 SSNP *CDCS* NOT AVAILABLE
  4620. BX7 -X4*X6
  4621. IX4 X3-X7
  4622. AX6 CDSFN RIGHT JUSTIFY REASON CODE
  4623. SX3 CDER
  4624. IX0 X3-X6 CHECK FATAL ERROR
  4625. SX3 SSBZ *CDCS* BUSY
  4626. IX3 X3-X7
  4627. ZR X3,SSC10 IF *CDCS* BUSY
  4628. SX3 CDIN INVOKE FUNCTION CODE
  4629. ZR X4,SSC13.1 IF CDCS NOT PRESENT
  4630. SX4 CDNF NON-FATAL ERROR
  4631. ZR X0,SSC9 IF FATAL ERROR
  4632. IX3 X2-X3
  4633. IX4 X4-X6
  4634. NZ X3,SSC8.1 IF NOT INVOKE
  4635. ZR X4,SSC12 IF NON-FATAL ERROR ON INVOKE
  4636. SSC8.1 RJ SSM ISSUE SUBSYSTEM MESSAGE
  4637. SSCB EQU SSC8.1 UPDATED BY ROUTINE *SSM*
  4638. * JP B3 (CDCS CONNECTION ESTABLISHED - RETURN)
  4639.  
  4640. * PROCESS TASK FATAL ERROR.
  4641. *
  4642. * ENTRY (B4) = FWA OF PARAMETER BLOCK.
  4643. * (B2) = FWA OF TASK SYSTEM AREA.
  4644.  
  4645. SSC9 SB3 TERR32 JOURNAL ERROR MESSAGE
  4646. BX7 -X1*X5 CLEAR *CDCS* CONNECTION FLAG
  4647. SA7 A5 WORD CBCR OF C.B. SYSTEM AREA
  4648. SA1 B2+CB2C
  4649. SA2 B4+CDBFW GET FWA OF MESSAGE
  4650. SX0 X1 COMMUNICATION BLOCK ADDRESS
  4651. MX1 -CDBFN
  4652. LX2 CDBFN-CDBFS-1
  4653. BX5 -X1*X2
  4654. SX6 12
  4655. LX6 18
  4656. SB5 B2+NUAPL TASK RA
  4657. SX5 X5+B5
  4658. SA3 X5 FWA OF CDCS FATAL ERROR MESSAGE
  4659. SB5 12 LENGTH OF MESSAGE
  4660. SB6 B1+B1
  4661. BX7 X3
  4662. SA7 B2+NUAPL+TIMD-14 WORD 61 OF C.B. OF TASK
  4663. SSC9.1 SA3 A3+B1
  4664. ZR X3,SSC9.2 IF END OF MESSAGE
  4665. BX7 X3
  4666. SA7 A7+B1 MOVE TO C.B.
  4667. SB6 B6+B1
  4668. LE B6,B5,SSC9.1 IF NOT DONE MOVING MESSAGE
  4669. EQ SSC9.3 JOURNAL MESSAGE
  4670.  
  4671. SSC9.2 BX7 X7-X7
  4672. SA7 A7+B1 CLEAR NEXT WORD
  4673. SB6 B6+B1
  4674. LE B6,B5,SSC9.2 IF NOT DONE CLEARING REMAINING WORDS
  4675. SSC9.3 BX5 X5+X6 ADD MESSAGE LENGTH
  4676. SB4 11B ORIGIN CODE
  4677. SB5 PJRNL JOURNAL FILE
  4678. EQ JRNL JOURNAL MESSAGE
  4679.  
  4680. * UPDATE *CDCS* BUSY COUNTER.
  4681.  
  4682. SSC10 SX7 B1 UPDATE *CDCS* BUSY COUNTER
  4683. SA3 STAT19
  4684. IX7 X3+X7
  4685. SA7 A3
  4686. EQ SSC2 PUT TASK INTO RECALL
  4687.  
  4688. * INVOKE FAILURE, CLEAR *CDCS* CONNECTION FLAG.
  4689.  
  4690. SSC12 BX7 -X1*X5 CLEAR *CDCS* CONNECTION FLAG
  4691. SA7 A5 WORD CBCR OF C.B. SYSTEM AREA
  4692. EQ TERR38 ABORT TASK WITH INVOKE FAILURE
  4693.  
  4694. * CDCS ABORTED, TERMINATE TRANSACTION.
  4695. * ENTRY (B2) = FWA OF TASK SYSTEM AREA.
  4696.  
  4697. SSC13 SA1 SSCC DECREMENT OUTSTANDING REQUEST COUNT
  4698. SX7 X1-1
  4699. SA7 A1+
  4700. SSC13.1 MX0 CBTON MASK TERMINAL ORDINAL
  4701. SA1 B2+CB2C GET COMMUNICATION BLOCK ADDRESS
  4702. MX7 60-CBCSN CLEAR CDCS DATA MANAGER USAGE FLAG
  4703. BX4 X0*X1
  4704. ERRNZ CBTOS-59 TERMINAL ORDINAL NOT LEFT JUSTIFIED
  4705. SA2 X1+CBRTW
  4706. LX7 CDDM-0
  4707. LX2 59-CBRTS
  4708. SA1 X1+CBCR
  4709. BX7 X7*X1
  4710. SA7 A1
  4711. .A IFEQ IPTAR,1
  4712. PL X2,TERR31 IF NOT A RECOVERABLE TRANSACTION
  4713. MX7 SCTMN SET TRANSACTION TO BE TERMINATED FLAG
  4714. LX7 SCTMS-59
  4715. SA1 B7+SCTMW
  4716. BX7 X1+X7
  4717. SA7 A1
  4718. SX5 CSCD CDCS DOWN *STEP*
  4719. SX3 TSSC RETURN ADDRESS
  4720. RJ WTS WRITE TERMINATION *STEP*
  4721. .A ELSE
  4722. EQ TERR31 ABORT TASK
  4723. .A ENDIF
  4724.  
  4725. SSCC BSSZ 1 OUTSTANDING REQUEST COUNTER
  4726. SSM SPACE 4,15
  4727. ** SSM - SUBSYSTEM MESSAGE.
  4728. *
  4729. * THIS ROUTINE UPDATES THE LOCATION OF *SSCA* AND *SSCB*
  4730. * AND ISSUES THE DAYFILE MESSAGE WHEN *CDCS* CONNECTION
  4731. * IS ESTABLISHED.
  4732. *
  4733. * ENTRY (B3) - RETURN ADDRESS IF CALLED BY *SSC*.
  4734. *
  4735. * EXIT (SSCA) AND (SSCB) UPDATED.
  4736. * TO (B3) IF CALLED BY *SSC*.
  4737. *
  4738. * USES A - 1, 2, 3, 7.
  4739. * X - 1, 2, 3, 4, 7.
  4740. *
  4741. * MACRO MESSAGE.
  4742.  
  4743.  
  4744. SSM SUBR ENTRY/EXIT
  4745. SA1 SSCA CHECK FOR FIRST CALL
  4746. SA2 SSMA
  4747. SA3 SSMB
  4748. IX4 X1-X2
  4749. ZR X4,SSM1 IF FIRST CALL
  4750. BX7 X2
  4751. SA7 A1
  4752. SA7 SSCB
  4753. EQ SSMX EXIT
  4754.  
  4755. SSM1 BX7 X3
  4756. SA7 A1
  4757. SA7 SSCB
  4758. MESSAGE SSMC * CDCS CONNECTION ESTABLISHED.*
  4759. JP B3 EXIT
  4760.  
  4761. SSMA RJ SSM FIRST CALL
  4762. SSMB JP B3 NORMAL OPERATION
  4763. SSMC DATA C* CDCS CONNECTION ESTABLISHED.*
  4764. TOT SPACE 4,10
  4765. ** TOT - ENTER A REQUEST INTO THE TOTAL DATA MANAGER QUEUE.
  4766. *
  4767. *T 24/ 3LTOT,18/ FNC,18/ ADDR.
  4768. *
  4769. * FNC = TOTAL DATA MANAGER FUNCTION CODE.
  4770. * ADDR = PARAMETER LIST ADDRESS.
  4771.  
  4772.  
  4773. TOT TX3 0,VTOT,LWA TOTAL DATA MANAGER INITIALIZATION FLAG
  4774. SB4 X5+ ADDRESS OF PARAMETERS
  4775. ZR X3,TERR25 IF TOTAL DATA MANAGER NOT LOADED
  4776. ZR B4,TERR2 IF PARAMETER ADDRESS ZERO
  4777. LX5 -18
  4778. SB4 -B4
  4779. SX0 X5 FUNCTION CODE
  4780. SX6 X1+B4
  4781. NG X6,TERR2 IF PARAMETER ADDRESS OUT OF BOUNDS
  4782. PL B4,TERR2 IF PARAMETER ADDRESS OUT OF BOUNDS
  4783. SX6 X5-100B
  4784. PL X6,TERR3 IF FUNCTION CODE GREATER THAN 6 BITS
  4785.  
  4786.  
  4787. ** BUILD A TOTAL INPUT QUEUE REQUEST OF THE FOLLOWING FORMAT.
  4788. *
  4789. *T 24/ TS,6/ SC,6/ FC,1/R,5/ SN,18/ ADDR
  4790. *
  4791. * TS TASK SEQUENCE NUMBER.
  4792. * SC TASK READ/WRITE SECUITY.
  4793. * FC FUNCTION CODE FOR TOTAL.
  4794. * R RECALL REQUEST BIT.
  4795. * SN SUB CONTROL POINT NUMBER.
  4796. * ADDR ADDRESS OF PARAMETER AREA.
  4797.  
  4798. SX3 X0-DMCC
  4799. ZR X3,TERR3 IF TASK USED DATA MANAGER CEASE CODE
  4800. LX0 24 FUNCTION CODE
  4801. SX4 -B4 ADDRESS OF PARAMETER LIST
  4802. SB3 TOT5 RETURN ADDRESS
  4803.  
  4804. * ENTRY POINT FROM CEASE CALL FROM TASK.
  4805.  
  4806. TOT1 MX7 -6
  4807. LX7 36
  4808. SA3 B2+TRID TRANSACTION IDENTIFIER
  4809. TX2 B7+CPAL,-VCPA COMPUTE SUBCP NUMBER
  4810. SA1 B2+CB2C COMMUNICATION BLOCK WORD 2
  4811. IX4 X4+X0 ADD FUNCTION CODE
  4812. MX0 1 FORCE RECALL FOR TOTAL
  4813. LX0 1+23
  4814. BX7 -X7*X1 SECURITY LEVELS
  4815. AX2 SCPAL
  4816. BX4 X4+X0 ADD RECALL BIT
  4817. LX2 18 SUB CONTROL POINT NUMBER
  4818. BX4 X4+X2 ADD SUB CP NUMBER
  4819. SA5 TDBAA TOTAL STATUS WORD
  4820. LX7 -6
  4821. IX4 X4+X7 ADD SECURITY LEVELS
  4822. LX3 59-23 POSITION TRANSACTION IDENTIFIER
  4823. SX1 B1+
  4824. BX4 X4+X3 ADD TRANSACTION IDENTIFIER
  4825. SA3 B2+CB2C COMMUNICATION BLOCK WORD 2
  4826. SA3 X3+CBCR
  4827. LX3 59-TOTDM
  4828. NG X3,TOT2 IF OK TO MAKE REQUEST
  4829.  
  4830. * CHECK IF SUB CP CAN MAKE REQUEST.
  4831.  
  4832. LX5 -18
  4833. SB4 X5
  4834. MX7 1
  4835. BX7 X7+X3 SET TOTAL REQUESTS OK
  4836. LX7 TOTDM-59
  4837. SA7 A3+ ENABLE TOTAL REQUESTS FOR TRANSACTION
  4838. ZR B4,TOT8 IF CANNOT MAKE TOTAL CALLS NOW
  4839. IX5 X5-X1
  4840. LX5 18
  4841.  
  4842. * ENTER REQUEST IN TOTAL INPUT QUEUE.
  4843.  
  4844. TOT2 SB5 TDI TOTAL INPUT QUEUE FET
  4845. SA2 TOTLCK READ QUEUE LOCK FLAG
  4846. BX6 X4 TOTAL REQUEST
  4847. SX4 B3 RETURN ADDRESS
  4848. ZR X2,TOT3 IF INPUT QUEUE IS NOT LOCKED
  4849.  
  4850. * CHECK IF TASK CAN STILL MAKE TOTAL REQUEST.
  4851.  
  4852. SA3 B2+DBNC TRANSACTION DATA BASE ID
  4853. SX3 X3
  4854. SX1 X2 NAME OF LOCKED TOTAL DATA BASE
  4855. BX3 X1-X3
  4856. NZ X3,TOT6 IF NO MATCH ON DATA BASE NAMES
  4857. MX1 24
  4858. BX2 X6-X2
  4859. BX2 X1*X2
  4860. NZ X2,TOT6 IF NOT THE SAME SEQUENCE NUMBER
  4861. TOT3 RJ PDIF PUT ENTRY INTO INPUT QUEUE
  4862. SB3 X4
  4863. ZR X7,TOT6 IF THE INPUT QUEUE IS FULL
  4864. MX1 -6
  4865. SX7 B0
  4866. SA7 DTIME INSURE TOTAL WILL BE CALLED ON NEXT PASS
  4867. LX6 -24
  4868. BX1 -X1*X6
  4869. SX1 X1-DMCC
  4870. SX3 B1
  4871. IX7 X5+X3 ADVANCE TOTAL CALL COUNT
  4872. SA7 A5
  4873. ZR X1,TOT4 IF TASK CEASE REQUEST
  4874. SA1 B2+TOTC
  4875. IX6 X1+X3 TOTAL OUTSTANDING REQUEST COUNT
  4876. SA6 A1
  4877. TOT4 JP B3 RETURN
  4878.  
  4879. TOT5 ZR X0,TSSC IF RECALL NOT REQUESTED
  4880. RJ DCPT DROP CPU FOR TASK
  4881. EQ TSSC TIME SLICE SUBCP
  4882.  
  4883. * TOTAL QUEUE IS FULL - PLACE THE TASK ON RECALL.
  4884.  
  4885. TOT6 SX7 TOT7 RESTART ADDRESS FOR TASK RECALL
  4886. AX0 23
  4887. LX0 -2
  4888. SX2 B3 RETURN ADDRESS AFTER TASK MAKES REQUEST
  4889. BX7 X7+X0 RECALL STATUS OF REQUEST
  4890. LX2 18
  4891. BX7 X7+X2 SAVE RETURN ADDRESS
  4892. SA6 B2+RCLA
  4893. JP TRCL2 PLACE TASK ON RECALL
  4894.  
  4895. * RETRY TOTAL QUEUE ENTRY AFTER QUEUE WAS FULL.
  4896.  
  4897. TOT7 AX1 18
  4898. SA4 A1+B1 TOTAL INPUT QUEUE ENTRY
  4899. SB3 X1+ RETURN ADDRESS
  4900. SA5 TDBAA TOTAL STATUS WORD
  4901. AX1 40
  4902. SX0 X1 RECALL STATUS
  4903. LX0 23
  4904. EQ TOT2 TRY TO PLACE IN QUEUE AGAIN
  4905.  
  4906. * PLACE TASK ON RECALL.
  4907.  
  4908. TOT8 SX7 TOT9 RETURN ADDRESS FROM RECALL
  4909. AX0 23
  4910. BX6 X4 TOTAL INPUT QUEUE ENTRY
  4911. LX0 -2
  4912. SX2 B3 RETURN ADDRESS AFTER PLACING IN QUEUE
  4913. IX7 X7+X0
  4914. LX2 18
  4915. BX7 X7+X2
  4916. SA6 B2+RCLA SAVE QUEUE ENTRY
  4917. SA7 A6-B1
  4918. JP TRCL PLACE TASK ON RECALL
  4919.  
  4920. * RETURN FROM RECALL TRY TO MAKE REQUEST AGAIN.
  4921.  
  4922. TOT9 SA5 TDBAA TOTAL STATUS WORD
  4923. SX3 B1
  4924. LX5 -18
  4925. SB4 X5
  4926. ZR B4,TRCL IF STILL UNABLE TO ENTER QUEUE
  4927. IX7 X5-X3
  4928. LX7 18
  4929. SA7 A5 UPDATE TOTAL STATUS
  4930. EQ TOT7 OK TO MAKE REQUESTS
  4931.  
  4932. *T TDBAA 24/ ,18/ TNS,18/ TNO
  4933. *
  4934. * TNS NUMBER OF TASKS TO RUN WHICH MAKE TOTAL TASKS.
  4935. * TNO NUMBER OF OUTSTANDING TOTAL REQUESTS.
  4936.  
  4937. TDBAA VFD 24/0,18/TIMDM,18/0
  4938. TOTLCK CON 0 QUEUE ENTRY LOCK FLAG
  4939. CTI SPACE 4,60
  4940. *** CTI - CALL TRANSACTION INTERFACE.
  4941. *
  4942. * THIS PROCESSOR PERFORMS THE FUNCTIONS RELATING TO TASK
  4943. * CONTROL. THE FORMAT OF THE REQUEST IS -
  4944. *
  4945. *T 24/ 3LCTI,18/ FNC,18/ ADDR
  4946. *
  4947. * FNC REQUEST CODE.
  4948. * ADDR ADDRESS OF PARAMETER LIST.
  4949. *
  4950. * FNC REQUEST TYPE
  4951. *
  4952. * 0 SEND - SEND MESSAGE TO TERMINAL.
  4953. * 1 JOURNL - MAKE JOURNAL FILE ENTRY.
  4954. * 2 TRANCHK - CHECK TRANSACTION ACTIVITY.
  4955. * 3 TARO - TERMINAL ARGUMENT OPERATION.
  4956. * 4 CMDUMP - DUMP TASK FIELD LENGTH.
  4957. * 5 DSDUMP - CHANGE DEFAULT DUMP PARAMETERS.
  4958. * 6 TSIM - RETURN TERMINAL STATUS.
  4959. * 7 KPOINT - TERMINAL *K-DISPLAY* REQUEST.
  4960. * 8 KDIS - *K-DISPLAY* REQUEST.
  4961. * 9 RESERVED
  4962. * 10 SUBMT - SUBMIT BATCH TRANSACTION.
  4963. * 11 ITL - INCREASE TASK TIME LIMIT.
  4964. * 12 IIO - INCREASE TASK I/O LIMIT.
  4965. * 13 LOGT - LOG OUT TRANSACTION TERMINAL.
  4966. * 14 LOADCB - LOAD ADDITIONAL INPUT TO USER BUFFER.
  4967. * 15 RELSCB - RELEASE SECONDARY C.B.-S.
  4968. * 16 SETCHT - SET TERMINAL CHARACTER TYPE.
  4969. * 17 TERMDEF - DEFINE TERMINAL CHARACTERISTICS.
  4970. * 18 GETABH - GET APPLICATION BLOCK HEADER.
  4971. * 19 ARGERR - ABORT TASK FOR SOFTWARE ERROR.
  4972. * 20 TPSTAT - RETURN TELEPROCESSOR IDENTITY.
  4973. * 21 BEGIN - TRANSFER C.B. TO TASK.
  4974. * 22 TSTAT - OBTAIN *TAF* ENVIRONMENT STATUS FROM *CRF*.
  4975. * 23 WSTAT - WRITE *TAF* ENVIRONMENT STATUS TO *CRF*.
  4976. * 24 ROUTE - ROUTE FILE TO INPUT/OUTPUT QUEUES.
  4977. *
  4978. * ENTRY (X1) = TASK FL.
  4979. * (X5) = SYSTEM REQUEST.
  4980. * (B2) = FWA OF TASK SYSTEM AREA.
  4981. * (B5) = TASK RA.
  4982. * (B7) = FWA OF TASK SUBCP TABLE ENTRY.
  4983. *
  4984. * EXIT TO *TERR2* IF ADDRESS OUT OF RANGE.
  4985. * TO *TERR3* IF INCORRECT FUNCTION CODE.
  4986. * TO *TERR4* IF SYSTEM REQUEST CALL ERROR.
  4987. * TO *TERR7* IF TERMINAL NOT FOUND.
  4988. * TO *TERR9* IF TOO MANY WORDS TO JOURNAL.
  4989. * TO *TERR11* IF NOT VALIDATED FOR REQUEST.
  4990. * TO *TERR13* IF INCORRECT RA(S)+1 CALL PARAMETER.
  4991. * TO *TERR17* IF ERROR IN *SUBMIT* FILE.
  4992. * TO *TERR34* IF INCORRECT *CMM* REQUEST.
  4993. * TO *TSSC* TO CONTINUE PROCESSING.
  4994.  
  4995.  
  4996. CTI SB4 X5+ ADDRESS OF PARAMETERS
  4997. LX5 -18
  4998. SB4 -B4
  4999. SX0 X5+ FUNCTION CODE
  5000. SX6 X1+B4
  5001. LX0 -1
  5002. SB6 B2+CB1C START OF C.B. HEADER
  5003. NG X6,TERR2 PARAMETER LIST OUT OF BOUNDS
  5004. SX6 X0-CTIJTL
  5005. PL X6,TERR3 IF INCORRECT FUNCTION CODE
  5006. GT B4,TERR2 ADDRESS WORD OUT OF BOUNDS
  5007. SB3 X0+
  5008. JP B3+CTIJT JUMP THRU TABLE
  5009.  
  5010. CTIJT PL X0,CTS SEND TERMINAL OUTPUT
  5011. EQ CTI1 JOURNAL REQUEST
  5012. PL X0,CTI5 TRANCHK
  5013. JP CTI7 PROCESS TERMINAL ARGUMENT OPERATION
  5014. PL X0,CTI19 CMDUMP REQUEST
  5015. JP CTI30 DSDUMP REQUEST
  5016. PL X0,CTI12 RETURN TERMINAL STATUS
  5017. EQ CTI31 CRASS TERMINAL K-DISPLAY COMMAND
  5018. PL X0,CTI40 K-DISPLAY REQUEST
  5019. EQ TERR3 NOT USED
  5020. PL X0,CTI41 SUBMIT BATCH JOB
  5021. EQ CTI43 INCREASE TIME LIMIT
  5022. PL X0,CTI45 INCREASE I/O LIMIT
  5023. EQ TLO LOG OUT DIAL-IN TRANSACTION TERMINAL
  5024. PL X0,CTI46 READ MULTIPLE INPUT COMMUNICATION BLOCKS
  5025. EQ CTI51 RELEASE MULITIPLE COMMUNICATION BLOCKS
  5026. PL X0,CTA SET CHARACTER INPUT TYPE
  5027. EQ CTD DEFINE TERMINAL CHARACTERISTICS
  5028. PL X0,CTH GET APPLICATION BLOCK HEADER
  5029. EQ TERR28 ABORT TASK DUE TO ARGUMENT ERROR
  5030. PL X0,CTI52 RETURN ACTIVE TELEPROCESSOR IDENTITY
  5031. EQ CTI53 PROCESS BEGIN REQUEST
  5032. PL X0,TFP IF *TSTATUS* FUNCTION
  5033. EQ WFP *WSTATUS* FUNCTION
  5034. PL X0,ROU IF ROUTE REQUEST
  5035. EQ TERR3 NOT USED
  5036.  
  5037. CTIJTL EQU *-CTIJT LENGTH OF CTI JUMP TABLE
  5038.  
  5039.  
  5040. ** TASK JOURNAL REQUEST.
  5041. *
  5042. *T ADDR 6/ ,18/ JN,18/ NUM,18/ MSG
  5043. *
  5044. * MSG - FWA OF BLOCK TO BE JOURNALED
  5045. * NUM - NUMBER OF WORDS TO WRITE TO JOURNAL FILE
  5046. * JN - JOURNAL FILE NUMBER
  5047.  
  5048.  
  5049. CTI1 SA2 B5-B4 PARAMETER WORD
  5050. SA4 B2+CB2C
  5051. SB6 X2 FWA OF JOURNAL MESSAGE
  5052. LX2 -18
  5053. SX3 X2-MAXJL
  5054. SX5 X2 NUMBER OF WORDS TO JOURNAL
  5055. LX2 -18
  5056. PL X3,TERR9 IF TOO MANY WORDS REQUESTED TO JOURNAL
  5057. SX7 X2 JOURNAL FILE NUMBER
  5058. NG X5,TERR2 IF NEGATIVE NUMBER OF WORDS TO JOURNAL
  5059. NG X7,TERR2 IF NEGATIVE JOURNAL FILE NUMBER
  5060. SX0 X4 C.B. ADDRESS
  5061. LX5 18
  5062. NG B6,TERR2 IF NEGATIVE JOURNAL MESSAGE ADDRESS
  5063. SB5 PJRNL
  5064. SX3 B6+NUAPL START OF JOURNAL BLOCK
  5065. SB6 -B6+B1
  5066. BX5 X5+X3
  5067. SX1 X1+B6 CHECK FOR MESSAGE OUTSIDE TASK FL
  5068. SB4 B0
  5069. NG X1,TERR2 IF JOURNAL MESSAGE OUTSIDE TASK FL
  5070. ZR X7,CTI4 IF JOUR0
  5071. SA4 B2+DBNC D.B. FOR THIS TASK
  5072. TA2 0,VEDT EDT HEADER
  5073. MX3 12
  5074. SX4 X4+
  5075. LX4 -12
  5076. CTI2 BX6 X3*X2 DATA BASE NAME FROM EDT
  5077. IX6 X6-X4
  5078. ZR X6,CTI3 IF MATCH FOUND
  5079. SB3 X2
  5080. SA2 X2 LINK TO NEXT EDT
  5081. NZ B3,CTI2 IF MORE EDT-S REMAIN TO BE SEARCHED
  5082. EQ TERR9 DATA BASE NOT FOUND
  5083.  
  5084. CTI3 SA1 A2+B1 SECOND WORD OF EDT
  5085. MX6 6
  5086. BX6 X6*X1 NUMBER OF JOURNAL FILES FOR THIS DATA BASE
  5087. LX6 6
  5088. IX6 X6-X7
  5089. NG X6,TERR9 IF INCORRECT JOURNAL FILE NUMBER
  5090. LX1 -18
  5091. SB4 X1-JFETL
  5092. SX2 JFETL
  5093. IX1 X2*X7
  5094. SB5 X1+B4
  5095. SB4 0
  5096. CTI4 SB3 TSSC RETURN ADDRESS
  5097. EQ JRNL JOURNAL ENTRY
  5098.  
  5099.  
  5100. ** CHECK FOR TASK CHAIN IN SYSTEM
  5101. *
  5102. *T ADDR 18/ ,24/ SEQ,18/ STAT
  5103. *
  5104. * SEQ - SEQUENCE NUMBER OF TRANSACTION
  5105. * STAT - SET STAT TO ZERO IF TRANSACTION NOT IN SYSTEM
  5106.  
  5107.  
  5108. CTI5 SA2 B5-B4 PARAMETER WORD
  5109. BX6 X6-X6
  5110. MX5 -24
  5111. SB3 X2 STATUS WORD ADDRESS
  5112. SB3 -B3
  5113. SX7 X1+B3
  5114. PL B3,TERR2 IF STATUS WORD OUT OF BOUNDS
  5115. SB3 B5-B3 STATUS WORD ABSOLUTE ADDRESS
  5116. SB5 B0
  5117. NG X7,TERR2 IF STATUS WORD OUT OF BOUNDS
  5118. SA6 B3+ CLEAR STATUS WORD
  5119. LX2 -18
  5120. BX0 -X5*X2 SEQUENCE NUMBER TO CHECK FOR
  5121. CTI6 RJ SCB GET NEXT RESERVED COMMUNICATION BLOCK
  5122. ZR B5,TSSC IF END OF RESERVED C.B.S
  5123. SA2 B5
  5124. LX2 -18
  5125. BX3 -X5*X2 SEQUENCE NUMBER
  5126. BX2 X3-X0
  5127. NZ X2,CTI6 IF NO MATCH ON SEQUENCE NUMBER
  5128. SX6 B1
  5129. SA6 A6 SET TASKS STATUS WORD TO 1
  5130. JP TSSC ENTER SWITCHING LOOP
  5131.  
  5132.  
  5133. ** REQUEST CODE 3 - TERMINAL ARGUMENT OPERATION.
  5134. *
  5135. *T ADDR 42/ TERMINAL NAME,18/ RETURN ADDRESS
  5136. *T 30/ VALUE,30/ MASK
  5137. *
  5138. * TERMINAL NAME IDENTIFIES TERMINAL TO BE OPERATED UPON.
  5139. * IF ZERO, ORIGINATING TERMINAL IS ASSUMED.
  5140. * RETURN ADDRESS = LOCATION TO PLACE RESULT OF OPERATOIN
  5141. * (IN ADDITION TO TERMINAL TABLE). ZERO IF NO RETURN DESIRED.
  5142. * VALUE= A VALUE TO BE USED TO ALTER TERMINAL ARGUMENTS.
  5143. * MASK= A 24 BIT MASK.
  5144. *
  5145. * OPERATION -
  5146. * THE *USER ARGUMENT* AREA (24 BITS IN EACH TERMINAL TABLE
  5147. * ENTRY) IS OPERATED UPON AS FOLLOWS -
  5148. * RETURN=USER ARG=(USER ARG.AND.MASK).XOR.VALUE
  5149. *
  5150. * NON-SYSTEM TASKS MAY ONLY ALTER TERMINAL ARGUMENTS FOR THOSE
  5151. * TERMINALS THAT SHARE THE ORIGINATING TERMINAL DATA BASE.
  5152.  
  5153.  
  5154. CTI7 SA4 B5-B4 READ TERMINAL NAME
  5155. SB3 X1+B4 CHECK ALL WORDS IN BOUNDS
  5156. MX0 42
  5157. SX5 X4 RETURN ADDRESS
  5158. EQ B3,B1,TERR2 IF SECOND WORD AT FL
  5159. SA2 B6+B1 TST ENTRY FOR ORIGINATING TERMINAL
  5160. BX4 X0*X4 TERMINAL NAME
  5161. LX2 -18
  5162. IX7 X5-X1
  5163. SA1 X2 READ ORIGINATING TERMINAL TST ENTRY
  5164. MX0 -24
  5165. ZR X5,CTI8 IF NO RETURN DESIRED
  5166. PL X7,TERR2 IF RETURN ADDRESS OUT OF BOUNDS
  5167. CTI8 ZR X4,CTI10 IF TERMINAL NAME NOT GIVEN
  5168.  
  5169. * SEARCH FOR GIVEN TERMINAL NAME.
  5170.  
  5171. RJ STST SEARCH TERMINAL STATUS TABLE
  5172. ZR X3,TERR7 IF TERMINAL NOT FOUND
  5173. SA1 A3-1 READ TST ENTRY
  5174.  
  5175. * UPDATE USER ARGUMENTS.
  5176.  
  5177. CTI10 SA2 B2+DBNC DATA BASE OF ORIGINATING TERMINAL
  5178. MX6 -12
  5179. LX1 -24
  5180. SX4 X2
  5181. BX6 -X6*X1 DATA BASE OF TERMINAL BEING OPERATED ON
  5182. LX1 24
  5183. BX4 X4-X6
  5184. ZR X4,CTI11 IF SAME DATA BASE
  5185. NG X2,CTI11 IF TERMINAL VALIDATED FOR ALL DATA BASES
  5186. SX2 X2-2RSY
  5187. NZ X2,TERR11 IF NOT VALIDATED FOR SYSTEM DATA BASE
  5188. CTI11 SA4 A4+B1 READ VALUE AND MASK
  5189. BX3 -X0*X1 EXTRACT USER ARGUMENTS
  5190. BX6 -X0*X4 EXTRACT MASK
  5191. LX4 30 EXTRACT VALUE
  5192. BX7 X0*X1 REMOVE OLD USER ARGUMENT
  5193. BX4 -X0*X4
  5194. BX1 X6*X3 MASK ARGUMENTS
  5195. BX6 X4-X1 INSERT VALUE
  5196. IX7 X7+X6 REPLACE USER ARGUMENTS
  5197. SA7 A1
  5198. ZR X5,TSSC IF NO RETURN DESIRED
  5199. SA6 B5+X5 RETURN UPDATED USER ARGUMENTS
  5200. JP TSSC
  5201.  
  5202.  
  5203. ** REQUEST CODE 6 - RETURN TERMINAL STATUS.
  5204. *
  5205. *T ADDR 6/ ,6/ CODE,18/ LIST,12/ LENG,18/ RETURN
  5206. *T 60/ MASK
  5207. *T 60/ CRIT
  5208. * CODE =0 IF DATA BASE NAME FIELD IS TO BE SEARCHED.
  5209. * =1 IF USER ARGUMENT FIELD IS TO BE SEARCHED.
  5210. * =2 IF COMMUNICATION LINE FIELD IS TO BE SEARCHED.
  5211. * =3 IF TERMINAL NAME FIELD IS TO BE SEARCHED.
  5212. * CRIT CRITERION VALUE FOR SEARCH.
  5213. * LENG NUMBER OF WORDS THAT LIST CAN HOLD.
  5214. * LIST FWA OF LIST OF RETURNED TERMINAL ENTRIES. IF ZERO,
  5215. * NO LIST IS RETURNED, BUT THE NUMBER OF FOUND ENTRIES
  5216. * WILL BE RETURNED AS SPECIFIED BELOW.
  5217. * MASK A VALUE TAKEN AS A BINARY MASK.
  5218. * RETURN ADDRESS IN WHICH TO PLACE THE NUMBER OF ENTRIES FOUND.
  5219. *
  5220. * OPERATION -
  5221. * THE FIELD SPECIFIED BY *CODE* IS EXAMINED IN EACH TERMINAL
  5222. * TABLE ENTRY BY TAKING THE LOGICAL PRODUCT OF THE FIELD AND
  5223. * *MASK* AND THEN TAKING THE LOGICAL DIFFERENCE OF THIS PRODUCT
  5224. * AND *CRIT*. IF THIS RESULT IS ZERO, THE TERMINAL ENTRY IS
  5225. * PLACED INTO *LIST* AND THE NUMBER OF FOUND ENTRIES IS
  5226. * INCREMENTED. IF THE TASK DATA BASE IS NOT THE SAME AS
  5227. * THE ONE BEING INTEROGATED, THEN THE REQUEST WILL BE IGNORED.
  5228. * FURTHER, IF THE MASK, I. E. THE DATA BASE, OR THE CRITERION
  5229. * IS ZERO, THIS IS CONSIDERED AN AUTOMATIC FAILURE CASE, AND
  5230. * THE REQUEST IS IGNORED.
  5231.  
  5232.  
  5233. * DIAGNOSE CALL ERRORS.
  5234.  
  5235. CTI12 SX6 X1+B4 CHECK ALL ARGUMENT WORDS IN BOUNDS
  5236. SA2 B5-B4 READ (ADDR)
  5237. SX6 X6-3
  5238. MX7 -6
  5239. NG X6,TERR2 IF ARGUMENTS EXTEND PAST FL
  5240. SX6 X2 SAVE RETURN ADDRESS
  5241. LX2 -48
  5242. NG X6,TERR2 IF RETURN ADDRESS OUT OF BOUNDS
  5243. BX4 -X7*X2
  5244. SA6 CTIB
  5245. IX6 X6-X1
  5246. LX2 18
  5247. PL X6,TERR2 IF RETURN ADDRESS OUT OF BOUNDS
  5248. SB3 X4-CTIAL
  5249. SX4 X2 LIST ADDRESS
  5250. PL B3,TERR4 IF CODE .GT. 3
  5251. LX2 12
  5252. NG X4,TERR2 IF LIST ADDRESS OUT OF BOUNDS
  5253. BX7 X7-X7
  5254. ZR X4,CTI13 IF NO LIST DESIRED
  5255. IX6 X4-X1
  5256. MX7 -12
  5257. PL X6,TERR2 IF LIST FWA OUT OF BOUNDS
  5258. BX7 -X7*X2 LENGTH
  5259. IX7 X4+X7 LWA+1
  5260. IX6 X1-X7
  5261. NG X6,TERR2 IF LIST EXTENDS PAST FL
  5262.  
  5263. * PREPARE FOR TST SEARCH.
  5264.  
  5265. CTI13 SA1 CTIA+4+B3 READ SEARCH INFORMATION
  5266. SA5 A2+B1 READ MASK
  5267. UX0,B6 X1 B6= SHIFT TO RIGHT JUSTIFY FIELD, X0= WORD
  5268. TB3 0,VTST SET TST FWA ENTRY
  5269. TB4 0,VTST,LWA SET TST LWA
  5270. SA2 A5+1 READ CRITERION
  5271. SX4 X4+B5 BIAS ADDRESSES BY TASK RA
  5272. SX7 X7+B5
  5273. ZR X2,CTI18 IF MASK .EQ. ZERO
  5274. SA3 B2+DBNC TASK DATA BASE NAME
  5275. ZR X5,CTI18 IF CRITERION .EQ. ZERO
  5276.  
  5277. * SEARCH TST.
  5278.  
  5279. CTI14 SB3 B3+TSTLLE ADVANCE TST ENTRY ADDRESS
  5280. GT B3,B4,CTI18 IF END OF TST
  5281. SA1 B3+X0 READ TST ENTRY WORD
  5282. AX1 X1,B6 RIGHT JUSTIFY SEARCH FIELD
  5283. BX6 X5*X1 MASK FIELD
  5284. BX6 X6-X2 COMPARE
  5285. NZ X6,CTI14 IF NOT MATCH
  5286.  
  5287. * MOVE TST ENTRY INTO LIST.
  5288.  
  5289. SX6 X4+TSTLLE ADVANCE LIST ADDRESS
  5290. IX6 X7-X6
  5291. SA1 B3 ENTER TERMINAL ENTRY INTO LIST
  5292. NG X6,CTI17 IF LIST FULL
  5293. MX6 -12
  5294. AX1 24
  5295. BX6 -X6*X1
  5296. LX1 24
  5297. BX6 X3-X6
  5298. ZR X6,CTI15 IF SAME DATA BASE
  5299. SX6 X3-2RSY
  5300. NZ X6,CTI14 IF NOT VALIDATED FOR SYSTEM DATA BASE
  5301. CTI15 BX6 X1 RETURN TST ENTRY
  5302. SA6 X4
  5303. SX4 -TSTLLE+1
  5304. CTI16 SA1 A1+B1 READ NEXT WORD FROM TST
  5305. SX4 X4+B1
  5306. BX6 X1
  5307. SA6 A6+B1 ENTER TST ENTRY INTO LIST
  5308. NZ X4,CTI16 IF NOT END OF TST ENTRY
  5309. SX4 A6+B1 NEXT LIST ADDRESS AVAILABLE
  5310. IX6 X7-X4
  5311. NZ X6,CTI14 IF NOT END OF LIST
  5312. ZR X3,CTI18 IF NO COUNT DESIRED
  5313.  
  5314. * RETURN NUMBER OF FOUND ENTRIES.
  5315.  
  5316. CTI17 SX6 B5
  5317. IX6 X6-X7
  5318. NZ X6,CTI18 IF COUNT NOT DESIRED
  5319. SX4 X4+TSTLLE UPDATE TABLE LOCATION
  5320. EQ CTI14 CONTINUE COUNTING
  5321. CTI18 SA1 A2-2 COMPUTE NUMBER OF ENTRIES FOUND
  5322. SA3 CTIB RESTORE RETURN ADDRESS
  5323. SX2 TSTLLE
  5324. LX1 -30
  5325. SX1 X1+B5
  5326. IX6 X4-X1 NUMBER OF WORDS ENTERED
  5327. PX6 X6
  5328. NX6 X6 COMPUTE NUMBER OF ENTRIES
  5329. PX2 X2
  5330. NX2 X2
  5331. FX7 X6/X2
  5332. UX7 X7,B3
  5333. LX7 X7,B3
  5334. SA7 B5+X3 STORE NUMBER OF ENTRIES RETURNED
  5335. JP TSSC
  5336.  
  5337. CTIA BSS 0 TERMINAL TABLE SEARCH INFORMATION
  5338. LOC 0
  5339. VFD 12/2000B+24,48/0 CODE 0 - DATA BASE NAME
  5340. VFD 12/2000B+00,48/0 CODE 1 - USER ARGUMENTS
  5341. VFD 12/2000B+42,48/0 CODE 2 - COMMUNICATION LINE
  5342. VFD 12/2000B+18,48/1 CODE 3 - TERMINAL NAME
  5343. CTIAL BSS 0
  5344. LOC *O
  5345.  
  5346. CTIB CON 1 STORAGE FOR RETURN ADDRESS
  5347.  
  5348. ** CMDUMP
  5349. *
  5350. *T ADDR 1/E,1/D,1/A,1/B,8/ ,18/ LWA,12/ ,18/ FWA
  5351. *T, ADDR+1 42/ QD,18/ OQ
  5352. *T, ADDR+2 12/ ,18/ AD,26/ ,4/ NF
  5353. *T, ADDR+N 24/ FN,36/
  5354. *
  5355. * E DUMP EXCHANGE PACKAGE.
  5356. * D DUMP DATA MANAGER BUFFERS.
  5357. * A USE DEFAULT EXCHANGE PACKAGE PARAMETER.
  5358. * B USE DEFAULT DATA MANAGER PARAMETER.
  5359. * LWA LAST WORD ADDRESS OF TASK TO DUMP.
  5360. * FWA FIRST WORD ADDRESS OF TASK TO DUMP.
  5361. * QD QUEUE DESTINATION.
  5362. * OQ OUTPUT QUEUE.
  5363. * AD ADDRESS USER CALLED FROM.
  5364. * NF NUMBER OF SPECIFIED FILES.
  5365. * FN SPECIFIED FILE NAME.
  5366. *
  5367. * TASK WILL BE PUT INTO RECALL IF LAST *DSP* REQUEST IS NOT
  5368. * COMPLETE.
  5369.  
  5370.  
  5371. CTI19 SA3 TDSP CHECK *DSP* INTERLOCK
  5372. SX7 SRTN4.1
  5373. NZ X3,TRCL2 IF A ROUTE IS IN PROGRESS
  5374. SA3 B6+B1
  5375. SA2 B5-B4 FIRST PARAMETER WORD
  5376. SB3 CTI28 EXIT ADDRESS
  5377. SB4 2
  5378. SA4 X3+3 DSDUMP CONTROL
  5379. NG X4,CTI20 IF PRIOR VALID *DSDUMP* PARAMETERS PRESENT
  5380. SA4 DTSE SYSTEM DEFAULT VALUES
  5381.  
  5382. * ASSEMBLE TASK DUMP CONTROL WORDS
  5383. * (B3) = RETURN ADDRESS
  5384. * (B4) = LOCTATION TO STORE CONTROL WORDS
  5385. * (A2/X2) = 1ST PARAMETER WORD
  5386. * (A4/X4) = 1ST DEFAULT CONTROL WORD
  5387.  
  5388. CTI20 MX5 2
  5389. SX7 X2 FWA
  5390. LX2 -30
  5391. SX0 X2 LWA
  5392. LX2 30-1
  5393. PL X7,CTI21 IF SPECIFIED FWA IS TO BE USED
  5394. SX7 X4 DEFAULT FWA
  5395. CTI21 LX4 -30
  5396. PL X0,CTI23 IF SPECIFIED LWA IS TO BE USED
  5397. SX0 X4 DEFAULT LWA
  5398. CTI23 IX6 X7-X0
  5399. NG X6,CTI24 IF FWA .LT. LWA
  5400. SX0 X7
  5401. CTI24 SX1 DSMNFL
  5402. IX6 X0-X7
  5403. ZR X6,CTI25 IF NO FL DUMP SELECTED
  5404. IX6 X6-X1
  5405. PL X6,CTI25 IF LWA-FWA .GE. DSMNFL
  5406. SX0 X4 USE DEFAULT LWA
  5407. LX4 30
  5408. SX7 X4+ USE DEFAULT FWA
  5409. CTI25 LX5 -3
  5410. BX6 X5*X2 DEFAULT EP AND DB FLAGS
  5411. LX5 2
  5412. LX0 30
  5413. BX2 X5*X2 EP AND DB FIELD
  5414. LX6 2
  5415. IX7 X7+X0 FWA + LWA
  5416. LX4 30
  5417. BX4 X6*X4 DEFAULT EP AND DB VALUES
  5418. MX0 1
  5419. IX5 X4+X2 SPECIFIED AND DEFAULT VALUES
  5420. BX7 X7+X0
  5421. SA4 A4+B1
  5422. SA2 A2+B1
  5423. MX6 42
  5424. BX1 X6*X2
  5425. SX0 X2
  5426. PL X2,CTI26 IF SPECIFIED QD IS TO BE USED
  5427. MX0 1 FORCE DEFAULT FOR BOTH PARAMETERS
  5428. CTI26 BX7 X7+X5 FWA + LWA + DB + EP
  5429. MX5 -12
  5430. SA7 B4+ DUMP CONTROL WORD 1
  5431. PL X0,CTI27 IF SPECIFIED OUTPUT QUEUE IS TO BE USED
  5432. BX1 X6*X4 DEFAULT QUEUE DESTINATION
  5433. BX0 -X5*X4
  5434. CTI27 SX6 X0-CTICL
  5435. PL X6,CTI29 IF ERROR IN VALUE
  5436. NG X0,CTI29 IF ERROR IN VALUE
  5437. SA5 X0+CTIC CONVERT OUTPUT QUEUE TO SYSTEM FORMAT
  5438. BX6 X1+X5 QD + OQ
  5439. SA6 A7+B1 DUMP CONTROL WORD 2
  5440. JP B3 EXIT - CONTROL WORDS BUILT
  5441.  
  5442. CTI28 SA5 A2+B1 GET ADDRESS CALLED FROM
  5443. MX2 -4
  5444. SB3 A7
  5445. SX7 A5 ADDRESS - 1 OF FILE NAME LIST
  5446. BX2 -X2*X5 FILE COUNT
  5447. LX5 -30
  5448. LX2 18
  5449. SX5 X5 CALLED FROM ADDRESS
  5450. SX0 X3 COMMUNICATION BLOCK ADDRESS
  5451. BX5 X5+X2
  5452. LX5 24
  5453. BX7 X7+X5
  5454. SA7 DTSG
  5455. SA1 LOVC
  5456. RJ LOVL DUMP THE TASK
  5457. EQ TSSC ENTER SWITCHING LOOP
  5458.  
  5459. CTI29 BX0 -X5*X4 IF ERROR - USE DEFAULT OUTPUT QUEUE VALUE
  5460. EQ CTI27 RESUME PROCESSING
  5461.  
  5462. CTIC BSS 0 OUTPUT QUEUE EQUIVELENCE TABLE
  5463. LOC 0
  5464. VFD 42/0,3/0,3/BCOT,12/*
  5465. VFD 42/0,3/0,3/EIOT,12/*
  5466. VFD 42/0,3/0,3/BCOT,12/*
  5467. CTICL BSS 0
  5468. LOC *O
  5469.  
  5470. ** DSDUMP
  5471. *
  5472. *T ADDR 1/E,1/D,1/A,1/B,8/ ,18/ LWA,12/ ,18/ FWA
  5473. *T, ADDR+1 42/ QD,18/ OQ
  5474. *
  5475. * E DUMP EXCHANGE PACKAGE.
  5476. * D DUMP DATA MANAGER BUFFERS.
  5477. * A USE DEFAULT EXCHANGE PACKAGE PARAMETER.
  5478. * B USE DEFAULT DATA MANAGER PARAMETER.
  5479. * LWA LAST WORD ADDRESS OF TASK TO DUMP.
  5480. * FWA FIRST WORD ADDRESS OF TASK TO DUMP.
  5481. * QD QUEUE DESTINATION.
  5482. * OQ OUTPUT QUEUE.
  5483.  
  5484.  
  5485. CTI30 SB3 TSSC RETURN ADDRESS
  5486. SA3 B6+B1
  5487. SA2 B5-B4 FIRST PARAMETER WORD
  5488. SB4 X3+3 PLACE ASSEMBLED CONTROL WORDS INTO C.B.
  5489. SA4 DTSE SYSTEM DEFAULT CMDUMP PARAMETER WORDS
  5490. EQ CTI20 ASSEMBLE CONTROL WORDS
  5491.  
  5492.  
  5493. ** TERMINAL K-DISPLAY COMMAND.
  5494. *
  5495. *T ADDR 60/ FIRST WORD OF A K-DISPLAY COMMAND.
  5496.  
  5497.  
  5498. CTI31 SB3 B5-B4 PARAMETER LIST ADDRESS
  5499. SB5 X1+B5 TASK FL
  5500. SX7 B3+
  5501. MX3 1
  5502. SB6 -B1 INDICATE SEARCH FOR DUMP
  5503. SA7 PCMDC
  5504. SX2 4 CHARACTER COUNTER
  5505. SX4 8 WORD COUNTER
  5506. SX0 PCMDA COMMAND BUFFER
  5507. SX6 B0+
  5508. CTI32 PL X3,CTI33 IF NOT THE END OF A WORD
  5509. ZR X4,TERR13 IF PARAMETER LIST LENGTH .GT. 8 WORDS
  5510. EQ B3,B5,TERR13 IF PARAMETER LIST EXTENDS BEYOND FL
  5511. SA5 B3+ LOAD A PARAMETER WORD
  5512. BX7 X5
  5513. SB3 B3+B1
  5514. SA7 X0+ SAVE COMMAND IN BUFFER
  5515. SX4 X4-1 DECREMENT WORD COUNTER
  5516. SX0 X0+1
  5517. CTI33 LX5 6
  5518. MX1 -6
  5519. BX7 -X1*X5 EXTRACT A CHARACTER
  5520. LX3 6 MOVE CHARACTER COUNTER
  5521. SB4 X7-1R
  5522. ZR B4,CTI32 IF CHARACTER IS A SPACE
  5523. ZR B6,CTI35 IF SEARCHING FOR 5TH NON-BLANK CHARACTER
  5524.  
  5525. * TEST FOR A TERMINATOR.
  5526.  
  5527. CTI34 SX1 X7-1R)
  5528. SB4 X7-1R.
  5529. ZR X1,CTI36 IF TERMINATOR = *)*
  5530. ZR B4,CTI36 IF TERMINATOR = *.*
  5531. GE B6,B1,CTI32 IF SEARCHING FOR A TERMINATOR
  5532.  
  5533. * SEARCH FOR *DUMP*.
  5534.  
  5535. LX6 6
  5536. BX6 X6+X7 SAVE CHARACTER TO TEST LATER
  5537. SX2 X2-1 DECREMENT CHARACTER COUNT FOR *DUMP*
  5538. NZ X2,CTI32 IF 4 NON-BLANK CHARACTERS NOT FOUND
  5539. SA1 CTIG 4RDUMP
  5540. SB6 B1+ DO NOT SEARCH FOR 5TH NON-BLANK CHARACTER
  5541. BX6 X6-X1
  5542. NZ X6,CTI32 IF PARAMETER IS NOT *DUMP*
  5543. SB6 B0
  5544. EQ CTI32 SEARCH FOR FIFTH NON-BLANK CHARACTER
  5545.  
  5546. * TEST 5TH NON-BLANK CHARACTER.
  5547.  
  5548. CTI35 SB6 1 INDICATE SEARCH FOR A TERMINATOR
  5549. SB4 X7-1R9
  5550. SX6 X7-1R*
  5551.  
  5552. * IF THE 5TH NON-BLANK CHARACTER IS ALPHANUMERIC, DISPLAY
  5553. * ZERO OR +*+, THE COMMAND IS NOT *DUMP*.
  5554.  
  5555. LT B4,B1,CTI32 IF ALPHANUMERIC, COMMAND NOT *DUMP*
  5556. ZR X6,CTI32 IF CHARACTER = +*+, COMMAND NOT *DUMP*
  5557. SB6 2 INDICATE *DUMP* COMMAND IS RECOGNIZED
  5558. EQ CTI34 SEARCH FOR TERMINATOR
  5559.  
  5560. CTI36 LE B6,B1,CTI38 IF PARAMETER IS NOT *DUMP*
  5561. SA1 GTDL GLOBAL TASK DUMP LIMIT
  5562. NZ X1,CTI37 IF *GTDL* VALUE IS NOT ZERO
  5563. MX6 1
  5564. SA6 A1 SET DUMP FLAG
  5565. MESSAGE CTIE,0 * GLOBAL TASK DUMP LIMIT EXHAUSTED.*
  5566. EQ TSSC EXIT, DO NOT PROCESS DUMP
  5567.  
  5568. CTI37 NG X1,TSSC IF NOT FIRST TO REACH LIMIT
  5569.  
  5570. * IF GLOBAL TASK DUMP LIMIT IS GREATER THAN ZERO.
  5571.  
  5572. SX6 B1+
  5573. IX6 X1-X6 DECREMENT *GTDL*
  5574. SA6 A1 REPLACE *GTDL*
  5575. EQ CTI39 DO NOT CHECK TASK ORIGIN
  5576.  
  5577. CTI38 RJ VTO CHECK TASK ORIGIN
  5578. NG X6,TERR11 IF TASK NOT VALIDATED FOR REQUEST
  5579.  
  5580. * SAVE TERMINAL ORDINAL, B2, AND B7.
  5581.  
  5582. CTI39 SX7 B2
  5583. SA3 B2+CB2C C.B. SYSTEM HEADER WORD 2
  5584. SX6 B7
  5585. LX3 18
  5586. LX7 18
  5587. SX3 X3 TERMINAL ORDINAL
  5588. BX7 X7+X6
  5589. LX3 36
  5590. BX7 X7+X3
  5591. SA5 PCMDA FIRST WORD OF COMMAND
  5592. SA7 PCMDB SAVE TERMINAL ORDINAL, B2, AND B7
  5593. EQ PCMD EXIT, PROCESS COMMAND
  5594.  
  5595. CTIE DATA C/ GLOBAL TASK DUMP LIMIT EXHAUSTED./
  5596. CTIG DATA 4RDUMP
  5597.  
  5598.  
  5599. ** SET K-DISPLAY TO RUN FROM A TASK
  5600. *
  5601. *T ADDR 60/ KCW
  5602. *
  5603. * KCW K-DISPLAY CONTROL WORD
  5604.  
  5605.  
  5606. CTI40 SA1 KCTRL1 K-DISPLAY CONTROL WORD
  5607. RJ VTO CHECK TASK ORIGIN
  5608. NG X6,TERR11 IF TASK NOT VALIDATED FOR REQUEST
  5609. SA2 KDISB
  5610. PL X2,CTI40.1 IF TASK ALREADY EXECUTING
  5611. SA3 B7+2
  5612. MX0 12
  5613. BX3 X0*X3 TASK LIBRARY DIRECTORY INDEX
  5614. MX0 42
  5615. LX3 12
  5616. TA4 X3-1,VTLD TASK NAME
  5617. SA3 KDISE
  5618. BX4 X0*X4
  5619. BX6 X3-X4
  5620. NZ X6,TERR11 IF TASK NOT REQUESTED
  5621. EQ CTI40.2 CLEAR *KDISB* BITS
  5622.  
  5623. CTI40.1 SB6 X2
  5624. SA3 B2+CB2C CURRENT TASK C.B. WORD TWO
  5625. MX6 -42
  5626. SB3 X3
  5627. NE B3,B6,TERR11 IF SCREEN NOT ASSIGNED TO THIS TASK
  5628. LX6 35-59 CLEAR MESSAGE ADDRESS
  5629. BX2 -X6*X2
  5630. CTI40.2 MX6 2
  5631. BX7 -X6*X2 CLEAR *TASK REQUESTED*+*INPUT READY* BITS
  5632. SX2 B5-B4 START OF TASK K-DISPLAY BUFFER
  5633. MX6 42
  5634. BX6 X6*X1
  5635. SX3 -B4 FWA OF MESSAGE
  5636. BX6 X6+X2
  5637. LX3 35-17
  5638. BX7 X3+X7 ADD FWA OF MESSAGE
  5639. SA6 A1
  5640. SA7 A2
  5641. SX6 B7 SAVE SUBCP ADDRESS
  5642. SA6 KDISG
  5643. SA1 ITIME
  5644. BX6 X1
  5645. SA6 KDISF SAVE TIME OF THE REQUEST
  5646. CONSOLE KCTRL1 DEFINE NEW K-DISPLAY
  5647. MESSAGE ZWORD,2 ZERO OUT REQUEST K-DISPLAY MESSAGE
  5648. RJ DCPT DROP CPU FOR TASK
  5649. EQ TSSC TIME SLICE SUBCP
  5650.  
  5651.  
  5652. ** SUBMIT JOB TO BATCH
  5653. *
  5654. *T ADDR 6/ ,18/PRU,12/ ,24/BYTE COUNT
  5655. * CONTENTS OF ADDR IS THE FIRST CONTROL WORD FOR
  5656. * THE OUTPUT JOB DATA.
  5657. * PRU - NUMBER OF 60 BIT WORDS IN EACH PRU ON DEVICE
  5658. * BYTE COUNT - NUMBER OF DATA BYTES IN THIS PRU
  5659. * THE BLOCK OF INFORMATION STARTING AT ADDR IS SET
  5660. * UP IN CONTROL WORD FORMAT
  5661. *
  5662. * TASK WILL BE PUT INTO RECALL IF LAST *DSP* REQUEST IS NOT
  5663. * COMPLETE.
  5664.  
  5665.  
  5666. CTI41 SA2 TDSP CHECK INTERLOCK
  5667. SX7 SRTN4.1 RECALL RETURN ADDRESS
  5668. NZ X2,TRCL2 IF PREVIOUS REQUEST NOT COMPLETED
  5669. SB4 -B4
  5670. SX3 100B PRU SIZE
  5671. SB3 B4
  5672. SX7 17B END OF JOB FILE FLAG
  5673. SX0 5 NUMBER OF BYTES PER CM WORD
  5674. SA2 B5+B4 FETCH FIRST HEADER WORD
  5675. SX2 X2
  5676. ZR X2,TERR17 IF FIRST HEADER IS BAD
  5677.  
  5678. CTI42 SA2 B5+B4 LOAD NEXT CONTROL WORD
  5679. MX6 36
  5680. BX4 X6*X2 GET TOP 36 BITS OF HEADER WORD
  5681. SB6 B7 SAVE B7
  5682. LX4 -36
  5683. BX6 -X6*X2 USERS NUMBER OF BYTES OF DATA
  5684. IX4 X4-X3 CHECK FOR CORRECT CONTENTS OF HEADER WORD
  5685. BX2 X6
  5686. NZ X4,TERR17 IF BAD HEADER WORD
  5687. LX4 X0 NUMBER OF BYTES PER CM WORD
  5688. IX6 X6/X4 NUMBER OF CM WORDS OF DATA
  5689. SB7 B6 RESTORE B7
  5690. IX4 X6*X0
  5691. SB6 X6+B1 NUMBER OF DATA WORDS + HEADER WORD
  5692. IX2 X2-X4
  5693. SB4 B6+B4
  5694. MX4 -48
  5695. NZ X2,TERR17 IF NUMBER OF BYTES NOT A MULTIPLE OF 5
  5696. IX6 X3-X6
  5697. SB6 X1 FIELD LENGTH
  5698. NG X6,TERR17 IF LENGTH OF DATA GREATER THAN 1 PRU
  5699. SB6 B4-B6
  5700. SA2 B5+B4 TRAILER CONTROL WORD
  5701. PL B6,TERR17 IF DATA GOES BEYOND LWA
  5702. BX4 -X4*X2
  5703. AX2 48
  5704. NZ X4,TERR17 IF BAD TRAILER WORD
  5705. SB4 B4+1 ADD TRAILER WORD TO CURRENT POSITION
  5706. NG X2,TERR17 IF INCORRECT LEVEL NUMBER
  5707. IX6 X2-X7
  5708. NG X6,CTI42 IF LEVEL NUMBER IS IN THE RANGE (0-16B)
  5709. NZ X6,TERR17 IF BAD CONTROL CHARACTER IN TRAILER WORD
  5710.  
  5711. SX7 B5+B3
  5712. SB3 B4-B3 FIND LENGTH OF JOB
  5713. SX6 A2+B1 SET END OF JOB + 1
  5714. SB4 X6
  5715. NG B3,TERR17 IF LESS THAN FIRST
  5716. SA3 SF+1 FETCH FIRST POINTER
  5717. MX0 42
  5718. BX3 X0*X3
  5719. SA4 SF+4 FETCH LIMIT POINTER
  5720. BX7 X3+X7 INSERT BEGGINING ADDRESS OF JOB
  5721. SX6 X6+B1 CALCULATE NEW LIMIT POINTER
  5722. SA7 A3 STORE FIRST POINTER
  5723. BX4 X0*X4
  5724. BX6 X4+X6 INSERT NEW LIMIT POINTER
  5725. SA6 A4 STORE LIMIT
  5726. REWIND SF,R
  5727. SX6 B4+
  5728. SA6 SF+2 RESTORE IN
  5729. WRITECW SF,R
  5730. MX0 42
  5731. SA3 SF+1 FETCH FIRST POINTER
  5732. SX6 OBUF
  5733. SA6 A3+B1 RESTORE IN POINTER
  5734. SA6 A6+B1 RESTORE OUT POINTER
  5735. BX3 X0*X3
  5736. SA4 A6+B1 FETCH LIMIT POINTER
  5737. BX6 X3+X6
  5738. SX7 OBUF+OBUFL
  5739. BX4 X0*X4
  5740. SA6 A3 RESTORE FIRST POINTER
  5741. BX7 X4+X7
  5742. SA7 A4 RESTORE LIMIT POINTER
  5743. SA1 SF
  5744. BX7 X0*X1
  5745. SA7 TDSP SET FILE NAME
  5746. SA1 CTIF SET PARAMETERS
  5747. SA3 A1+B1 STATUS PROCESSOR INFORMATION
  5748. SA4 A3+B1 ERROR MESSAGE - *K SUBMIT.*
  5749. EQ RFQ ROUTE FILE TO QUEUE
  5750.  
  5751.  
  5752. CTIF VFD 12/,12/,12/0LNO,3/,1/0,2/,18/FRER+FRDC+FRTI
  5753. VFD 6/,18/TERR17,18/TSSC,18/RFQ4
  5754. DATA L*K SUBMIT.*
  5755.  
  5756.  
  5757.  
  5758.  
  5759. ** ITL - INCREASE TIME LIMIT.
  5760. *
  5761. *T ADDR 48/ ,12/TL
  5762. * TL NEW TIME LIMIT IN XJ TIME UNITS
  5763. * EACH CALL TO THIS FUNCTION DECREMENTS THE CPU
  5764. * PRIORITY OF THE TASK UNTIL ZERO IS REACHED. SUBSEQUENT
  5765. * CALLS DO NOT AFFECT THE CPU PRIORITY.
  5766.  
  5767.  
  5768. CTI43 SA3 B2+TSAC GET ACCUMULATED TIME
  5769. SA2 B2+CB1C GET C.B. HEADER
  5770. MX6 -12
  5771. BX3 -X6*X3 MASK OFF TIME COUNT
  5772. SA5 B5-B4 GET NEW TIME LIMIT
  5773. UX2,B4 X2 CPU PRIORITY TO B4
  5774. BX7 -X6*X5 GET 12 BIT NEW TIME LIMIT
  5775. LX7 30 POSITION TIME LIMIT
  5776. IX7 X7+X3 COMBINE LIMIT AND COUNT
  5777. SB4 B4-B1 DECREMENT CPU PRIORITY
  5778. ZR B4,CTI44 IF CPU PRIORITY AT ONE
  5779. PX6 B4,X2
  5780. SA6 A2 SET NEW CPU PRIORITY
  5781. CTI44 SA7 B2+TSAC STORE NEW TIME LIMIT
  5782. EQ TSSC ENTER SWITCHING LOOP
  5783.  
  5784.  
  5785. ** IIO - INCREASE I/O LIMIT.
  5786. *
  5787. *T ADDR 42/ ,18/IO
  5788. * IO NEW I/O LIMIT IN RA + 1 CALLS
  5789.  
  5790.  
  5791. CTI45 MX6 -18
  5792. SA5 B5-B4 GET NEW I/O LIMIT
  5793. SA2 B2+RA1C GET RA + 1 COUNT
  5794. BX2 -X6*X2
  5795. BX6 -X6*X5 GET NEW LIMIT
  5796. LX6 30
  5797. IX6 X6+X2 STORE NEW LIMIT IN
  5798. SA6 A2+ UPPER 30 BITS OF RA1C
  5799. EQ TSSC ENTER SWITCHING LOOP
  5800.  
  5801.  
  5802. ** READ MULTIPLE COMMUNICATION BLOCK INPUT.
  5803. *
  5804. *T ADDR 1/R,11/ ,18/ LEN,12/ ,18/ BUF
  5805. *
  5806. * R RELEASE EXTRA COMMUNICATION BLOCK(S) AFTER TRANSFER.
  5807. * LEN LENGTH OF BUFFER IN TASK TO RECEIVE DATA.
  5808. * BUF FWA OF BUFFER IN TASK TO RECEIVE DATA.
  5809.  
  5810.  
  5811. CTI46 SA5 B5-B4 READ PARAMETER WORD
  5812. MX2 -24
  5813. SA3 B6+
  5814. SB3 X5 FWA OF USER BUFFER AREA
  5815. LX5 -30
  5816. NG B3,TERR2 IF INCORRECT BUFFER ADDRESS
  5817. LX3 -18
  5818. SB4 X5 LENGTH OF USER BUFFER
  5819. SX5 B5+B3 ABSOLUTE FWA OF USER BUFFER
  5820. BX0 -X2*X3 TRANSACTION SEQUENCE NUMBER OF REQUESTOR
  5821. SB5 B3+B4
  5822. SX7 X5+B4 ABSOLUTE LWA OF USER BUFFER PLUS ONE
  5823. SB5 -B5
  5824. SX3 X5
  5825. NG B4,TERR2 IF INCORRECT LENGTH PARAMETER
  5826. LX5 18
  5827. SX6 X1+B5
  5828. SB5 B0+
  5829. BX7 X5+X7
  5830. LX7 18
  5831. NG X6,TERR2 IF BUFFER + LENGTH OUTSIDE OF TASK FL
  5832. BX5 X7+X3
  5833. SA2 B2+CB2C GET CB ADDRESS
  5834. SB5 X2 CURRENT CB ADDRESS
  5835. CTI47 SA3 B5+CBNCW POINTER TO NEXT CB IN CHAIN
  5836. SB5 X3+
  5837. ZR B5,CTI49 IF NO MORE COMMUNICATION BLOCKS
  5838. SA2 B5+CMBHL+1
  5839. MX4 -12
  5840. SX6 B5
  5841. BX4 -X4*X2 NUMBER OF DATA WORDS IN COMMUNICATION BLOCK
  5842. SX1 X4 NUMBER OF WORDS TO TRANSFER
  5843. SX3 X5 FWA OF AREA TO TRANSFER TO
  5844. LX5 -18
  5845. IX7 X3+X1
  5846. SX4 X5 MAXIMUM LWA OF USER BUFFER AREA
  5847. IX2 X7-X4
  5848. LX5 18
  5849. NG X2,CTI48 IF ENOUGH ROOM IN BUFFER
  5850. IX1 X1-X2
  5851. BX0 X0-X0 SET BUFFER FULL FLAG
  5852. CTI48 MX4 -18
  5853. SX2 X6+CMBHL+CMBRL
  5854. BX5 X4*X5 CLEAR OLD CURRENT POSITION
  5855. BX5 X5+X7
  5856. MOVE X1,X2,X3 LOAD DATA INTO TASK
  5857. NZ X0,CTI47 IF BUFFER NOT FULL
  5858.  
  5859. * RETURN DATA TRANSFERED COUNT TO TASK
  5860.  
  5861. CTI49 SX7 X5 LAST WORD WRITTEN
  5862. LX5 -36
  5863. SX4 X5 FWA OF USER BUFFER
  5864. IX7 X7-X4
  5865. CTI50 SA5 A5+ USER PARAMETER WORD
  5866. SA7 B2+16B SET STATUS IN TASKS X6 REGISTER
  5867. SB6 B2+CB1C
  5868. PL X5,TSSC IF NOT TO RELEASE EXTRA C.B.
  5869. * EQ CTI51 RELEASE REMAINING COMMUNICATION BLOCKS
  5870.  
  5871.  
  5872. ** RELEASE EXTRA COMMUNICTION BLOCKS CONTAINING LONG INPUT DATA.
  5873. *
  5874.  
  5875.  
  5876. CTI51 SA3 B6+B1
  5877. SX2 X3 COMMUNICATION BLOCK ADDRESS
  5878. SA3 B2+CB1C CLEAR NEXT C.B. LINK IN *CB1C*
  5879. MX6 60-CBNCN
  5880. BX6 X6*X3
  5881. SA6 A3
  5882. RJ RSC RELEASE SECONDARY COMMUNICATION BLOCKS
  5883. JP TSSC ENTER SWITCHING LOOP
  5884.  
  5885. ** RETURN NAM COMMUNICATIONS MODE TO TASK.
  5886. *
  5887. *T ADDR 48/ 0,12/ TPSTAT.
  5888. *
  5889. * (ADDR) = NAMTP = 1 - IF *TAF* INSTALLED WITH *COMKNWC*.
  5890.  
  5891.  
  5892. CTI52 SX6 NAMTP SET NAM COMMUNICATION MODE
  5893. SB5 B5-B4 TASK PARAMETER ADDRESS
  5894. SA6 B5
  5895. EQ TSSC ENTER TO SWITCHING LOOP
  5896. SPACE 4
  5897. ** PROCESS BEGIN REQUEST - TRANSFER ZERO-LEVEL COMMUNICATION
  5898. * BLOCK TO TASK SPECIFIED LOCATION.
  5899. *
  5900. * ADDR 42/ , 18/ BUF
  5901. *
  5902. * BUF FWA OF BUFFER IN TASK TO RECEIVE COMMUNICATION BLOCK.
  5903. *
  5904. * EXIT COMMUNICATION BLOCK MOVED TO (BUF - BUF+CMBL).
  5905. * TO *TSSC* - WHEN OPERATION COMPLETE.
  5906. *
  5907. * USES A - 1, 2, 6.
  5908. * X - 0, 1, 2, 3, 5, 6.
  5909. * B - 3, 4, 6.
  5910. *
  5911. * CALLS MVE=.
  5912.  
  5913.  
  5914. CTI53 SB4 X1-CMBL FL - COMMUNICATION BLOCK LENGTH
  5915. LX5 18
  5916. SB3 X5 (B3) = PARAMETER ADDRESS
  5917. MX0 -18
  5918. NG B3,TERR2 IF PARAMETER .LT. ZERO
  5919. SB4 B3+B5
  5920. SB6 B3
  5921. GE B3,B4,TERR2 IF PARAMETER ADDRESS .GT. FL
  5922. BX5 -X0*X5
  5923. LX5 35-17
  5924.  
  5925. * SET TASK SPECIFIED COMMUNICATION BLOCK IN SUB-CONTROL
  5926. * POINT TABLE.
  5927.  
  5928. SA1 B7+B1 UPDATE SUBCP TABLE WORD,N
  5929. SA2 X1 READ CURRENT COMMUNICATION BLOCK ADDRESS
  5930. LX0 18
  5931. BX6 X0*X2
  5932. BX6 X6+X5
  5933. SA6 A2
  5934. SX3 B2+B3 SET FWA OF USER SPECIFIED BUFFER
  5935. SX2 X2+CMBHL SET FWA OF COMMUNICATIONS BLOCK ADDRESS
  5936. SX1 CMBL-CMBHL SET WORD COUNT
  5937. SX3 X3+NUAPL
  5938. RJ MVE= MOVE COMMUNICATION BLOCK TO SUBCP
  5939. EQ TSSC ENTER TASK SWITCHING LOOP
  5940. TFP SPACE 4,20
  5941. ** TFP - *TSTAT* FUNCTION PROCESSING.
  5942. *
  5943. * ENTRY (X1) = FL OF SUBCP.
  5944. * (X5) = SYSTEM REQUEST.
  5945. * (X7) = TERMINAL ORDINAL, IF (B5) EQUALS ZERO.
  5946. * (B2) = FWA OF TASK SYSTEM AREA.
  5947. * (B3) = FWA OF QUEUE ENTRY, IF (B5) EQUALS ZERO.
  5948. * (B5) = SUBCP RA.
  5949. * (B7) = FWA OF SUBCP TABLE ENTRY.
  5950. *
  5951. * EXIT TO *TSSC*.
  5952. * TO *TERR2*, IF INCORRECT PARAMETERS.
  5953. *
  5954. * USES X - 1, 2, 3, 4, 5, 6.
  5955. * A - 1, 2, 3, 4, 6, 7.
  5956. * B - 3, 6.
  5957. *
  5958. * CALLS CFA, CRS, DCPT, EXIT, FIO, GSD, GRP, PTK, RCPU,
  5959. * RSP, STF, VUP.
  5960. *
  5961. * MACROS QTWCALL.
  5962.  
  5963.  
  5964. TFP NZ B5,TFP1 IF NOT AN INTERNAL *TAF* REQUEST
  5965.  
  5966. * REQUEST IS INTERNAL REQUEST OF *TAF*.
  5967.  
  5968. SX6 B0
  5969. LX5 59-59-17+35
  5970. SA6 TFPB SUBCP
  5971. SA7 TFPA TERMINAL ORDINAL
  5972. BX6 X5 REQUEST
  5973. SX7 B3 FWA OF QUEUE ENTRY
  5974. SA6 TFPC
  5975. SA7 TFPD FWA OF QUEUE ENTRY RELATIVE TO SUBCP
  5976. SA7 TFPE FWA OF QUEUE ENTRY RELATIVE TO *TAF*
  5977. EQ TFP2 PROCESS *TSTAT* KEYWORDS
  5978.  
  5979. TFP1 SB6 B1 REQUIRED NUMBER OF PARAMETERS
  5980. LX5 59-59-17+35
  5981. SB3 PTKBL*2+1 MAXIMUN NUMBER OF PARAMETERS
  5982. RJ VUP VALIDATE USER PARAMETERS
  5983. NZ X6,TERR2 IF INCORRECT PARAMETER
  5984. BX6 X5 SAVE SYSTEM REQUEST
  5985. MX3 -CBTON
  5986. SA4 B5-NUAPL+CB2C GET DEFAULT TERMINAL ORDINAL
  5987. SA6 TFPC
  5988. LX4 CBTON-1-CBTOS RIGHT JUSTIFY TERMINAL ORDINAL
  5989. BX7 -X3*X4
  5990. SA7 TFPA
  5991. TX6 B7+CPAL,-VCPA COMPUTE SUBCP
  5992. AX6 SCPAL
  5993. SA6 TFPB
  5994. SX6 RCL FWA OF QUEUE ENTRY RELATIVE TO SUBCP
  5995. SA6 TFPD
  5996. SX6 B5-NUAPL+RCL FWA OF QUEUE RELATIVE TO *TAF*
  5997. SA6 TFPE
  5998.  
  5999. * SOME KEYWORDS MAY NOT NEED TO ACCESS THE RECOVERY FILE.
  6000. * OTHER KEYWORDS MAY SPECIFIY THE USER/TERMINAL NAME WHICH
  6001. * WILL DETERMINE THE RECOVERY FILE TO BE LOCKED.
  6002.  
  6003. TFP2 SX2 B5 COMPUTE REQUEST ADDRESS RELATIVE TO *TAF*
  6004. IX5 X5+X2
  6005. RJ PTK PROCESS *TSTAT* KEYWORDS
  6006. NG X6,TERR11 IF TASK NOT VALIDATED FOR REQUEST
  6007. NZ X6,TFP3 IF BAD KEYWORD
  6008. SX6 TSNE RECOVERY STATUS NO ERRORS
  6009. ZR X0,TFP3 IF NO KEYWORDS REQUIRE RECOVERY FILE
  6010. ZR X7,TFP5 IF *TSTAT* DID NOT SPECIFY TERMINAL
  6011. SA7 TFPA
  6012. EQ TFP5 PROCESS RECOVERY KEYWORDS
  6013.  
  6014. * RETURN STATUS TO TASK.
  6015.  
  6016. TFP3 SA2 X5 FWA OF *TSTAT* STATUS
  6017. SA6 X2+B5
  6018. NZ B5,TSSC IF NOT INTERNAL *TAF* REQUEST
  6019.  
  6020. * SET *TSTAT* PROCESSING COMPLETE TO ALLOW WAITING
  6021. * PROCESS TO CONTINUE.
  6022.  
  6023. TFP4 MX7 QRTCN
  6024. LX7 QRTCS-59
  6025. SA1 TFPE FWA OF QUEUE ENTRY RELATIVE TO *TAF*
  6026. SA4 X1+QRTCW FUNCTION COMPLETE
  6027. BX6 X4+X7
  6028. SA6 A4
  6029. EQ TSSC TIME SLICE SUBC
  6030.  
  6031. .A IFEQ IPTAR
  6032. TFP5 RJ EXIT PROGRAM ERROR
  6033. .A ELSE
  6034. TFP5 ZR B5,TFP6 IF AN INTERNAL *TAF* REQUEST
  6035.  
  6036. * DROP CPU FOR TASK. THE CPU WILL BE REQUESTED FOR THE SUBCP
  6037. * WHEN THE *TSTAT* FUNCTION COMPLETES.
  6038.  
  6039. RJ DCPT DROP CPU FOR TASK
  6040. TFP6 SA1 TFPA TERMINAL STATUS TABLE ORDINAL
  6041. SA2 TFPC REQUEST
  6042. SA3 TFPE FWA OF QUEUE ENTRY
  6043. SX7 X1 SAVE TERMINAL STATUS TABLE ORDINAL
  6044. BX6 X2 SAVE REQUEST IN QUEUE
  6045. SA7 X3+QRTOW
  6046. SA6 X3+QRECW
  6047.  
  6048. * DETERMINE RECOVERY FILE FOR TERMINAL.
  6049. * SEVERAL RECOVERY FILES MAY BE USED TO SUPPORT
  6050. * MULTI-MAINFRAME RECOVERY AND HIGHER PERFORMANCE.
  6051.  
  6052. TFP7 RJ STF SEARCH TERMINAL FILES FOR TERMINAL ORDINAL
  6053.  
  6054. * IF RECOVERY FILE IS NOT LOCKED, LOCK RECOVERY FILE
  6055. * AND START PROCESSING FUNCTION. IF RECOVERY FILE IS LOCKED,
  6056. * QUEUE THE REQUEST.
  6057.  
  6058. SA4 B4+TTLKW LOCK STATUS
  6059. ERRNZ TTLKS-59 IF LOCK NOT IN BIT 59
  6060. NG X4,TFP10 IF FILE IS LOCKED
  6061. MX7 -60+TTLKN SET RECOVERY FILE LOCKED
  6062. ERRNZ TTLKS-59 IF LOCK FIELD NOT IN BIT 59
  6063. BX6 X4+X7
  6064. LX7 TTEVS-59
  6065. ERRNZ TTLKN-TTEVN IF EVENT AND LOCK FIELDS NOT EQUAL
  6066. BX6 -X7*X6 CLEAR FILE RELEASE EVENT
  6067. ERRNZ TTLKW-TTEVW IF LOCK AND LOCK EVENT NOT IN SAME WORD
  6068. SA6 A4
  6069.  
  6070. * READ STATUS FROM RECOVERY FILE.
  6071.  
  6072. SX1 MSST MESSAGE SOURCE IS STATUS
  6073. BX2 X3 TERMINAL ORDINAL IN RECOVERY FILE
  6074. RJ CFA COMPUTE FILE ADDRESS FOR STATUS
  6075. SX5 B4+TTFTW FWA OF FET
  6076. SX2 TRUPL LENGTH OF RECOVERY STATUS IN PRUS
  6077. SX1 CIORD *CIO* READ FUNCTION
  6078. RJ FIO DO FILE INPUT/OUTPUT
  6079.  
  6080. * QUEUE REQUEST TO LET *TAF* DO OTHER WORK UNTIL
  6081. * INPUT IS COMPLETE.
  6082.  
  6083. SX1 B4+TTFTW FWA OF INPUT COMPLETE EVENT
  6084. SA3 TFPB SUBCP
  6085. SA4 TFPD FWA OF RECOVERY QUEUE ENTRY
  6086. SB3 X4
  6087. SX5 B0 NO TIME OUT ON EVENT
  6088. QTWCALL 0,QTEV WAIT FOR INPUT TO COMPLETE
  6089. RJ GRP GET REQUEST PARAMETERS AFTER WAIT
  6090. SX7 B6+ FWA OF QUEUE ENTRY RELATIVE TO *TAF*
  6091. SA6 TFPB SAVE SUBCP
  6092. SA7 TFPE
  6093. RJ STF SEACH TERMINAL FILE TABLE FOR ORDINAL
  6094. RJ CRS CHECK RECOVERY STATUS FOR ERRORS
  6095.  
  6096. * PROCESS *TSTAT* KEYWORDS.
  6097.  
  6098. RJ GSD GET STATUS DATA
  6099. NZ X6,TFP8 IF ERRORS, RECOVERY FUNCTION COMPLETE
  6100. SX6 TSNE RECOVERY STATUS NO ERRORS
  6101. TFP8 SA2 X5 FWA OF *TSTAT* STATUS
  6102. SA6 X2+B5 RETURN STATUS TO TASK
  6103.  
  6104. * UNLOCK RECOVERY FILE
  6105.  
  6106. SA4 B4+TTLKW LOCK STATUS
  6107. MX7 -59
  6108. ERRNZ TTLKS-59 IF LOCK NOT IN BIT 59
  6109. BX6 -X7*X4 CLEAR LOCK
  6110. ERRNZ TTLKW-TTEVW IF LOCK AN LOCK EVENT NOT IN SAME WORD
  6111. LX7 TTEVS-59
  6112. BX6 X7+X6 SET FILE RELEASE EVENT
  6113. SA6 A4
  6114. SA2 TFPB SUBCP
  6115. ZR X2,TFP4 IF NOT A SUBCP REQUEST
  6116.  
  6117. * REQUEST CPU FOR SUBCP.
  6118.  
  6119. LX2 SCPAL COMPUTE SUBCP TABLE ADDRESS
  6120. TA4 X2-CPAL,VCPA
  6121. SB6 A4 FWA OF SUBCP TABLE ENTRY
  6122. SX4 X4-NUAPL FWA OF TASK SYSTEM AREA
  6123. SB3 TSSC RETURN ADDRESS AFTER REQUESTING CPU
  6124. RJ RSP RESTORE SUBCP REGISTERS
  6125. EQ RCPU REQUEST CPU FOR TASK
  6126.  
  6127. * RECOVERY FILE IS LOCKED, SO QUEUE REQUEST.
  6128.  
  6129. TFP10 SX1 B4+TTEVW FWA OF LOCK RELEASE EVENT
  6130. SA3 TFPB SUBCP
  6131. SA4 TFPD FWA OF QUEUE ENTRY
  6132. SB3 X4
  6133. SX5 B0 NO TIME OUT ON EVENT
  6134. QTWCALL TTEVS,QTEV WAIT UNTIL LOCK IS RELEASED
  6135. RJ GRP GET REQUEST PARAMETERS
  6136. SA6 TFPB SAVE SUBCP
  6137. SX6 B3+ SAVE FWA OF QUEUE ENTRY
  6138. SA6 TFPD
  6139. EQ TFP7 DETERMINE RECOVERY FILE
  6140.  
  6141. .A ENDIF
  6142. TFPA BSS 1 TERMINAL STATUS TABLE ORDINAL
  6143. TFPB BSS 1 SUBCP
  6144. TFPC BSS 1 REQUEST
  6145. TFPD BSS 1 FWA OF QUEUE ENTRY RELATIVE TO SUBCP
  6146. TFPE BSS 1 FWA OF QUEUE ENTRY RELATIVE TO *TAF*
  6147. .A IFGE IPTAR,1
  6148. GSD SPACE 4,15
  6149. ** GSD - GET STATUS DATA.
  6150. *
  6151. * ENTRY (X5) = FWA OF REQUEST.
  6152. * (B4) = FWA OF RECOVERY FILE ENTRY.
  6153. * (B5) = SUBCP RA.
  6154. *
  6155. * EXIT (X6) = 0, IF NO ERRORS.
  6156. * *RSBK*, IF BAD KEYWORD.
  6157. *
  6158. * USES X - 0, 1, 2, 3, 4, 6, 7.
  6159. * A - 1, 2, 4, 6, 7.
  6160. * B - 2, 6, 7.
  6161.  
  6162.  
  6163. GSD SUBR ENTRY/EXIT
  6164. SB2 X5+B1 FWA OF FIRST KEYWORD
  6165. SB7 B0+ COUNT OF KEYWORDS PROCESSED
  6166. GSD1 SA1 B2 FWA OF USER KEYWORD
  6167. SX6 B0 NO ERRORS
  6168. ZR X1,GSDX IF END OF USER KEYWORDS
  6169. MX7 -18
  6170. SB7 B7+B1 UPDATE NUMBER OF KEY WORDS PROCESSED
  6171. SA2 GSDB FIRST KEY WORD
  6172. SX3 3H BLANKS
  6173. BX3 -X7*X3
  6174. SA1 X1+B5 KEYWORD
  6175.  
  6176. * DETERMINE ROUTINE TO PROCESS KEYWORD.
  6177.  
  6178. GSD2 ZR X2,GSD4 IF BAD KEYWORD
  6179. SB6 X2 ROUTINE TO PROCESS KEYWORD
  6180. BX2 X7*X2
  6181. BX2 X2+X3 BLANK FILL KEYWORD FROM TABLE
  6182. BX4 X2-X1
  6183. SA2 A2+1 NEXT KEYWORD FROM TABLE
  6184. NZ X4,GSD2 IF NOT DESIRED KEYWORD
  6185. SB2 B2+2 NEXT KEYWORD
  6186. JP B6 PROCESS KEYWORD
  6187.  
  6188. * RETURN KEYWORD VALUE TO TASK.
  6189.  
  6190. GSD3 SA1 B2-1 FWA OF VALUE IN TASK
  6191. BX7 -X2*X4 VALUE
  6192. SA7 X1+B5 RETURN VALUE TO TASK
  6193. EQ GSD1 PROCESS NEXT KEYWORD
  6194.  
  6195. * RETURN BAD KEY STATUS TO TASK.
  6196.  
  6197. GSD4 SX7 B7 POSITION OF BAD KEYWORD
  6198. SX6 TSBK RECOVERY STATUS BAD KEYWORD
  6199. IX6 X7+X6
  6200. SA1 X5 FWA OF STATUS
  6201. SA6 X1+B5 RETURN STATUS
  6202. EQ GSDX RETURN
  6203.  
  6204. * GET *CDCS* KEYWORD VALUE.
  6205.  
  6206. GSD5 SA4 B4+TTBFW+TRCCW *CDCS* VALUE
  6207. MX2 -TRCCN MASK FOR *CDCS*
  6208. LX4 TRCCN-1-TRCCS RIGHT JUSTIFY *CDCS* VALUE
  6209. EQ GSD3 RETURN VALUE TO TASK
  6210.  
  6211. * GET *CRM* KEYWORD VALUE.
  6212.  
  6213. GSD6 SA4 B4+TTBFW+TRCRW *CRM* VALUE
  6214. MX2 -TRCRN MASK FOR *CRM*
  6215. LX4 TRCRN-1-TRCRS RIGHT JUSTIFY *CRM*
  6216. EQ GSD3 RETURN VALUE TO TASK
  6217.  
  6218. * GET *NEWID* KEYWORD VALUE.
  6219.  
  6220. GSD7 SA4 B4+TTBFW+TRNIW *NEWID* VALUE
  6221. MX2 -TRNIN
  6222. LX4 TRNIN-1-TRNIS RIGHT JUSTIFY *NEWID*
  6223. EQ GSD3 RETURN VALUE TO TASK
  6224.  
  6225. * GET *OLDID* KEYWORD VALUE.
  6226.  
  6227. GSD8 SA4 B4+TTBFW+TROIW *OLDID* VALUE
  6228. MX2 -TROIN
  6229. LX4 TROIN-1-TROIS RIGHT JUSTIFY *OLDID*
  6230. EQ GSD3 RETURN VALUE TO TASK
  6231.  
  6232. * GET *SEQ* KEYWORD VALUE.
  6233.  
  6234. GSD9 SA4 B4+TTBFW+TRCNW *SEQ* VALUE
  6235. MX2 -TRCNN MASK FOR *SEQ*
  6236. LX4 TRCNN-1-TRCNS RIGHT JUSTIFY *SEQ* FIELD
  6237. EQ GSD3 RETURN VALUE TO TASK
  6238.  
  6239. * GET *STEP* KEYWORD VALUE.
  6240.  
  6241. GSD10 SA4 B4+TTBFW+TRCSW *STEP* VALUE
  6242. MX2 -TRCSN MASK FOR *STEP*
  6243. LX4 TRCSN-1-TRCSS RIGHT JUSTIFY *STEP*
  6244. EQ GSD3 RETURN VALUE TO TASK
  6245.  
  6246. * GET *TRAN* KEYWORD VALUE.
  6247.  
  6248. GSD11 SA4 B4+TTBFW+TRTYW *TRAN* VALUE
  6249. MX2 -TRTYN MASK FOR *TRAN*
  6250. LX4 TRTYN-1-TRTYS RIGHT JUSIFY *TRAN*
  6251. EQ GSD3 RETURN VALUE TO TASK
  6252.  
  6253. * KEYWORDS AND ASSOCIATED PROCESSING ROUTINES.
  6254.  
  6255. GSDB CKT CDCS,GSD5
  6256. CKT CRM,GSD6
  6257. CKT NEWID,GSD7
  6258. CKT NEXT,GSD1
  6259. CKT OLDID,GSD8
  6260. CKT RESTART,GSD1
  6261. CKT SEQ,GSD9
  6262. CKT STEP,GSD10
  6263. CKT TRAN,GSD11
  6264. CKT USER,GSD1
  6265. CKT END
  6266. .A ENDIF
  6267. PTK SPACE 4,20
  6268. ** PTK - PROCESS *TSTAT* KEYWORDS.
  6269. *
  6270. * ENTRY (X5) = FWA OF REQUEST.
  6271. * (B5) = SUBCP RA.
  6272. * (B7) = FWA OF SUBCP TABLE ENTRY.
  6273. *
  6274. * EXIT (X0) = 0, IF NO KEYWORDS ACCESS RECOVERY FILE.
  6275. * (X6) = 0, IF NO KEYWORD ERRORS.
  6276. * *RSBK*, IF BAD KEYWORD.
  6277. * *TSRU*, IF RECOVERY UNAVAILABLE.
  6278. * NEGATIVE, IF TASK NOT VALIDATED FOR KEYWORDS.
  6279. * (X7) = TERMINAL STATUS TABLE ORDINAL, IF NON-ZERO.
  6280. *
  6281. * USES X - 0, 1, 2, 3, 4, 6, 7.
  6282. * A - 1, 2, 4, 6, 7.
  6283. * B - 2, 3, 4, 6.
  6284. *
  6285. * CALLS STST, VTO, ZFN, ZTB.
  6286.  
  6287.  
  6288. PTK12 SX6 B0+ NO ERRORS
  6289. SA1 PTKC TERMINAL STATUS TABLE ORDINAL
  6290. SX7 X1+
  6291. ZR X1,PTKX IF TERMINAL NOT SPECIFIED
  6292. ZR B5,PTKX IF INTERNAL *TAF* REQUEST
  6293. RJ VTO VALIDATE TASK ORIGIN
  6294. BX2 X6
  6295. SX6 B0 NO ERRORS
  6296. PL X2,PTKX IF TASK ON SYSTEM LIBRARY
  6297. MX6 1
  6298.  
  6299. PTK SUBR ENTRY/EXIT
  6300. SB2 X5+B1 FWA OF KEYWORDS
  6301. SX0 B0 NO KEYWORDS ACCESS RECOVERY FILE
  6302. SX6 B0 CLEAR TERMINAL ORDINAL
  6303. SB3 B0+ COUNT OF KEYWORDS PROCESSED
  6304. SA6 PTKC
  6305. PTK1 SA1 B2 FWA OF KEYWORD
  6306. ZR X1,PTK12 IF END OF KEYWORDS
  6307. SB3 B3+B1 UPDATE COUNT OF KEYWORDS PROCESSED
  6308. MX7 -18
  6309. SX3 3H BLANKS
  6310. BX3 -X7*X3
  6311. SA1 X1+B5 KEYWORD
  6312.  
  6313. * DETERMINE ROUTINE TO PROCESS KEYWORD.
  6314.  
  6315. SA2 PTKB TABLE OF KEY WORDS
  6316. PTK2 ZR X2,PTK4 IF KEYWORD NOT FOUND
  6317. SB6 X2 ROUTINE TO PROCESS KEYWORD
  6318. BX2 X7*X2
  6319. BX2 X2+X3 FILL KEY WORD WITH BLANKS
  6320. BX4 X1-X2
  6321. SA2 A2+B1 NEXT KEYWORD
  6322. NZ X4,PTK2 IF NOT DESIRED KEY WORD
  6323. SB2 B2+2 NEXT KEYWORD
  6324. JP B6 PROCESS KEYWORD
  6325.  
  6326. * RETURN KEYWORD VALUE TO TASK.
  6327.  
  6328. PTK3 SA1 B2-1 FWA OF VALUE IN TASK
  6329. BX7 -X2*X4 VALUE
  6330. SA7 X1+B5 RETURN VALUE TO TASK
  6331. EQ PTK1 PROCESS NEXT KEYWORD
  6332.  
  6333. * RETURN BAD KEY STATUS TO TASK.
  6334.  
  6335. PTK4 SX1 B3 COUNT OF KEYWORDS PROCESSED
  6336. SX6 TSBK RECOVERY STATUS BAD KEYWORD
  6337. IX6 X6+X1 STATUS CODE
  6338. PTK5 SA2 X5 FWA OF STATUS
  6339. SA6 X2+B5
  6340. EQ PTKX RETURN
  6341.  
  6342. * IF RECOVERY IS INSTALLED, INDICATE KEYWORD NEEDS
  6343. * RECOVERY FILE. IF RECOVERY IS NOT INSTALLED, RETURN
  6344. * RECOVERY NOT INSTALLED STATUS TO TASK.
  6345.  
  6346. .A IFGE IPTAR,1
  6347. PTK6 SX0 B1 INDICATE KEYWORD NEEDS RECOVERY FILE
  6348. EQ PTK1 GET NEXT KEYWORD
  6349. .A ELSE
  6350. PTK6 SX6 TSRU RECOVERY STATUS RECOVERY UNAVAILABLE
  6351. EQ PTKX RETURN
  6352. .A ENDIF
  6353.  
  6354. * DETERMINE TERMINAL ORDINAL FOR KEYWORD *NEXT*.
  6355.  
  6356. PTK7 SA1 B2-B1 FWA OF VALUE FOR *NEXT* KEYWORD
  6357. SA2 PTKA SPACES
  6358. SA1 X1+B5 VALUE FOR *NEXT*
  6359. BX6 X1-X2
  6360. SX7 B1 INITIAL TERMINAL ORDINAL
  6361. TB4 TSTLLE+1,VTST FWA OF FIRST TERMINAL
  6362. NZ X6,PTK9 IF NOT FIRST CALL OF *NEXT* USER
  6363. PTK8 SA4 B4 TERMINAL/USER
  6364. SA7 PTKC
  6365. MX0 TSTNN MASK FOR TERMINAL NAME
  6366. ERRNZ TSTNS-59 IF TERMINAL NAME NOT LEFT JUSTIFIED
  6367. BX1 X0*X4 TERMINAL NAME
  6368. RJ ZTB CHANGE ZEROS TO BLANKS IN TERMINAL NAME
  6369. SA6 A1 RETURN TERMINAL/USER TO TASK
  6370. EQ PTK1 PROCESS NEXT KEYWORD
  6371.  
  6372. PTK9 RJ ZFN ZERO FILE NAME
  6373. BX4 X1 FIND NAME IN TERMINAL STATUS TABLE
  6374. RJ STST SEARCH *TST* FOR USER
  6375. SX6 TSUU RECOVERY STATUS END OF NEXT
  6376. ZR X3,PTK5 IF TERMINAL/USER NOT FOUND
  6377. SX7 X3+1 TERMINAL ORDINAL FOR *NEXT*
  6378. SB4 A3+TSTLLE FWA OF NEXT TERMINAL/USER
  6379. TB6 2,VTST,LWA LWA OF TERMINAL STATUS TABLE
  6380. SX6 TSEN RECOVERY STATUS END OF *NEXT* PROCESSING
  6381. GE B4,B6,PTK5 IF END OF TERMINAL STATUS TABLE
  6382. EQ PTK8 RETURN TERMINAL TO TASK
  6383.  
  6384. * IF RECOVERY IS INSTALLED, EXTRACT VALUE FOR *RESTART*
  6385. * KEYWORD. IF RECOVERY IS NOT INSTALLED, RETURN RECOVERY
  6386. * NOT INSTALLED STATUS TO TASK.
  6387.  
  6388. .A IFGE IPTAR,1
  6389. PTK10 SA4 B5-NUAPL+CB2C FWA OF COMMUNICATION BLOCK
  6390. SA4 X4+CBTRW RESTART ATTRIBUTE
  6391. MX2 -CBTRN MASK FOR RESTART FIELD
  6392. LX4 CBTRN-1-CBTRS RIGHT JUSTIFY RESTART FIELD
  6393. EQ PTK3 RETURN VALUE TO TASK
  6394. .A ELSE
  6395. PTK10 SX6 TSRU RECOVERY STATUS RECOVERY UNAVAILABLE
  6396. EQ PTKX RETURN
  6397. .A ENDIF
  6398.  
  6399. * DETERMINE TERMINAL ORDINAL FOR *USER* KEYWORD.
  6400.  
  6401. PTK11 SA1 B2-B1 FWA OF VALUE FOR *USER*
  6402. SA1 X1+B5 TERMINAL NAME
  6403. RJ ZFN ZERO FILL TERMINAL NAME
  6404. BX4 X1
  6405. RJ STST SEARCH TERMINAL STATUS TABLE
  6406. SX6 TSUU RECOVERY STATUS USER UNKNOWN
  6407. ZR X3,PTK5 IF TERMINAL/USER NOT FOUND
  6408. SX7 X3+
  6409. SA7 PTKC
  6410. EQ PTK1 PROCESS NEXT KEYWORD
  6411.  
  6412. PTKA DATA 10H
  6413.  
  6414. * KEYWORDS AND THEIR ASSOCIATED PROCESSING ROUTINES.
  6415.  
  6416. PTKB CKT CDCS,PTK6
  6417. CKT CRM,PTK6
  6418. CKT NEWID,PTK6
  6419. CKT NEXT,PTK7
  6420. CKT OLDID,PTK6
  6421. CKT RESTART,PTK10
  6422. CKT SEQ,PTK6
  6423. CKT STEP,PTK6
  6424. CKT TRAN,PTK6
  6425. CKT USER,PTK11
  6426. PTKBL EQU *-PTKB NUMBER OF KEYWORDS
  6427. CKT END
  6428.  
  6429. PTKC BSS 1 TERMINAL STATUS TABLE ORDINAL
  6430. WFP SPACE 4,20
  6431. ** WFP - *WSTAT* FUNCTION PROCESSOR.
  6432. *
  6433. * ENTRY (X1) = SUBCP FL.
  6434. * (X5) = SYSTEM REQUEST.
  6435. * (X7) = TERMINAL STATUS TABLE TERMINAL ORDINAL.
  6436. * (B2) = FWA OF TASK SYSTEM AREA.
  6437. * (B5) = TASK RA.
  6438. * (B7) = FWA OF SUBCP TABLE ENTRY.
  6439. *
  6440. * EXIT TO *TSSC*.
  6441. * TO *TERR11*, IF TASK NOT ON SYSTEM LIBRARY.
  6442. *
  6443. * USES X - ALL.
  6444. * A - 1, 2, 3, 4, 5, 6, 7.
  6445. * B - 3, 5, 6.
  6446. *
  6447. * CALLS CFA, CRS, DCPT, EXIT, FIO, GRP, IRU, PSD,
  6448. * RCPU, STF, VTO, VUP.
  6449. *
  6450. * MACROS QTWCALL.
  6451.  
  6452.  
  6453. WFP ZR B5,WFP1 IF AN INTERNAL REQUEST
  6454. RJ VTO VALIDATE TASK ORIGIN
  6455. NG X6,TERR11 IF TASK NOT ON SYSTEM LIBRARY
  6456. SB6 B1 REQUIRED NUMBER OF PARAMETERS
  6457. LX5 59-59-17+35
  6458. SX7 TSSC SET RETURN ADDRESS
  6459. SA7 B2+RWTS
  6460.  
  6461. * ENTRY FROM *WTS*.
  6462.  
  6463. WFP0 SB3 PWKBL*2+1
  6464. RJ VUP VALIDATE USER PARAMETERS
  6465. NZ X6,TERR2 IF INCORRECT PARAMETER
  6466. BX6 X5 SAVE SYSTEM REQUEST
  6467. MX3 -CBTON
  6468. SA4 B5-NUAPL+CB2C GET DEFAULT TERMINAL ORDINAL
  6469. SA6 WFPC
  6470. LX4 CBTON-1-CBTOS RIGHT JUSTIFY TERMINAL ORDINAL
  6471. BX7 -X3*X4
  6472. SA7 WFPA
  6473. TX6 B7+CPAL,-VCPA COMPUTE SUBCP
  6474. AX6 SCPAL
  6475. SA6 WFPB
  6476. SX6 RCL FWA OF QUEUE RELATIVE TO SUBCP
  6477. SA6 WFPD
  6478. SX6 B5-NUAPL+RCL FWA OF QUEUE RELATIVE TO *TAF*
  6479. SA6 WFPE
  6480. EQ WFP2 PROCESS *WSTAT* KEYWORDS
  6481.  
  6482. WFP1 SX6 B0 NO SUBCP
  6483. LX5 59-59-17+35
  6484. SA6 WFPB
  6485. SA7 WFPA TERMINAL ORDINAL
  6486. SX7 B3 FWA TO QUEUE WORK
  6487. SA7 WFPD
  6488. SA7 WFPE
  6489. BX6 X5 SAVE REQUEST
  6490. SA6 WFPC
  6491. WFP2 SX2 B5 COMPUTE ADDRESS RELATIVE TO *TAF*
  6492. IX5 X5+X2
  6493. RJ PWK PROCESS *WSTAT* KEYWORDS
  6494. NZ X6,WFP3 IF ERROR IN KEYWORDS
  6495. SX6 TSNE RECOVERY STATUS NO ERRORS
  6496. ZR X0,WFP3 IF RECOVERY FILE NOT NEEDED
  6497. ZR X7,WFP5 IF TERMINAL NOT SPECIFIED BY KEYWORDS
  6498. SA7 WFPA
  6499. EQ WFP5 SET UP QUEUE ENTRY
  6500.  
  6501. * RETURN STATUS TO TASK AND COMPLETE *WSTAT* PROCESSING.
  6502.  
  6503. WFP3 SA1 X5 FWA OF STATUS
  6504. SA6 X1+B5
  6505. NZ B5,TSSC IF NOT AN INTERNAL *TAF* REQUEST
  6506.  
  6507. * SET *WSTAT* PROCESSING COMPLETE TO ALLOW WAITING
  6508. * PROCESS TO CONTINUE.
  6509.  
  6510. WFP4 MX7 QRTCN
  6511. LX7 QRTCS-59
  6512. SA3 WFPE FWA OF QUEUE ENTRY
  6513. SA4 X3+QRTCW FUNCTION COMPLETE
  6514. BX6 X4+X7
  6515. SA6 A4
  6516. EQ TSSC TIME SLICE SUBCP
  6517.  
  6518. .A IFEQ IPTAR
  6519. WFP5 RJ EXIT PROGRAM ERROR
  6520. .A ELSE
  6521. WFP5 ZR B5,WFP6 IF AN INTERNAL *TAF* REQUEST
  6522.  
  6523. * DROP CPU FOR TASK. THE CPU WILL BE REQUESTED FOR THE SUBCP
  6524. * WHEN THE *WSTAT* FUNCTION COMPLETES.
  6525.  
  6526. SB5 B7+ SAVE FWA OF SUBCP TABLE ENTRY
  6527. RJ DCPT DROP CPU FOR TASK
  6528. SA1 B5+SCRAW TASK RA
  6529. SB5 X1
  6530. SX3 X1
  6531. SA5 B5-NUAPL+LRA1 SYSTEM REQUEST
  6532. IX5 X5+X3 REQUEST ADDRESS RELATIVE TO *TAF*
  6533.  
  6534. * SAVE PARAMETERS FOR RECOVERY PROCESSING IN THE QUEUE ENTRY.
  6535.  
  6536. WFP6 SA1 WFPA *TST* ORDINAL
  6537. SA2 WFPC REQUEST
  6538. SA3 WFPE FWA TO QUEUE REQUEST
  6539. SX7 X1 SAVE TERMINAL STATUS TABLE ORDINAL
  6540. BX6 X2 SAVE REQUEST IN QUEUE
  6541. SA7 X3+QRTOW
  6542. SA6 X3+QRECW
  6543.  
  6544. * DETERMINE RECOVERY FILE FOR TERMINAL.
  6545.  
  6546. WFP8 RJ STF SEARCH TERMINAL FILES FOR TERMINAL ORDINAL
  6547.  
  6548. * IF RECOVERY FILE IS NOT LOCKED, LOCK RECOVERY FILE AND
  6549. * START PROCESSING. IF RECOVERY FILE IS LOCKED,
  6550. * QUEUE THE REQUEST.
  6551.  
  6552. SA4 B4+TTLKW LOCK STATUS
  6553. ERRNZ TTLKS-59 IF LOCK NOT IN BIT 59
  6554. NG X4,WFP10 IF FILE IS LOCKED
  6555. MX7 TTLKN SET RECOVERY FILE LOCKED
  6556. BX6 X4+X7
  6557. LX7 TTEVS-59
  6558. ERRNZ TTLKN-TTEVN IF EVENT AND LOCK FIELDS NOT EQUAL
  6559. BX6 -X7*X6 CLEAR FILE RELEASE EVENT
  6560. ERRNZ TTLKW-TTEVW IF LOCK AND LOCK EVENT NOT IN SAME WORD
  6561. SX0 TSTLLE TERMINAL STATUS TABLE ENTRY LENGTH
  6562. SA6 A4+
  6563.  
  6564. * READ STATUS FROM RECOVERY FILE.
  6565.  
  6566. SX1 MSST MESSAGE SOURCE IS STATUS
  6567. BX2 X3 TERMINAL ORDINAL IN RECOVERY FILE
  6568. RJ CFA COMPUTE FILE ADDRESS FOR STATUS
  6569. SX5 B4+TTFTW FWA OF FET
  6570. SX2 TRUPL LENGTH OF RECOVERY STATUS IN PRUS
  6571. SX1 CIORD *CIO* READ FUNCTION
  6572. RJ FIO DO FILE INPUT/OUTPUT
  6573.  
  6574. * QUEUE REQUEST TO LET *TAF* DO OTHER WORK UNTIL
  6575. * INPUT IS COMPLETE.
  6576.  
  6577. SX1 B4+TTFTW FWA OF INPUT COMPLETE EVENT
  6578. SA3 WFPB SUBCP
  6579. SA4 WFPD FWA OF RECOVERY QUEUE ENTRY
  6580. SB3 X4
  6581. SX5 B0 NO TIME OUT ON EVENT
  6582. QTWCALL 0,QTEV WAIT FOR INPUT TO COMPLETE
  6583. RJ GRP GET REQUEST PARAMETERS AFTER WAIT
  6584. SA6 WFPB SAVE SUBCP
  6585. SX7 B6 FWA OF QUEUE ENTRY RELATIVE TO TAF
  6586. SX6 B3 FWA OF QUEUE ENTRY RELATIVE TO TASK
  6587. SA7 WFPE
  6588. SA6 WFPD
  6589. RJ STF SEACH TERMINAL FILE TABLE FOR ORDINAL
  6590. SX7 X3+ RECOVERY FILE TERMINAL ORDINAL
  6591. SA7 WFPF
  6592. RJ CRS CHECK RECOVERY STATUS FOR ERRORS
  6593. RJ PSD PUT STATUS DATA
  6594. NZ X6,WFP9 IF ERRORS, RECOVERY FUNCTION COMPLETE
  6595.  
  6596. * WRITE *WSTAT* DATA TO RECOVERY FILE.
  6597.  
  6598. SX1 MSST MESSAGE SOURCE IS STATUS
  6599. SA2 WFPF TERMINAL ORDINAL IN RECOVERY FILE
  6600. RJ CFA COMPUTE FILE ADDRESS FOR *WSTAT*
  6601. SX5 B4+TTFTW FWA OF FET
  6602. SX2 TRUPL LENGTH TO WRITE IN PRUS
  6603. SX1 CIORW *CIO* REWRITE
  6604. RJ FIO DO FILE INPUT/OUTPUT
  6605.  
  6606. * QUEUE REQUEST TO LET *TAF* DO OTHER WORK UNTIL
  6607. * OUTPUT IS COMPLETE.
  6608.  
  6609. SX1 B4+TTFTW FWA OF EVENT COMPLETE IS FET
  6610. SA3 WFPB SUBCP OF EVENT
  6611. SA4 WFPD FWA OF RECOVERY QUEUE ENTRY
  6612. SB3 X4
  6613. SX5 B0 NO TIME OUT ON EVENT
  6614. QTWCALL 0,QTEV WAIT ON BIT 0 OF FET TO COMPLETE
  6615. RJ GRP GET REQUEST PARAMETERS AFTER WAIT
  6616. SX7 B6+ FWA OF QUEUE RELATIVE TO *TAF*
  6617. SA6 WFPB SAVE SUBCP
  6618. SA7 WFPE
  6619. RJ STF SEARCH TERMINAL FILE FOR ORDINAL
  6620. RJ CRS CHECK RECOVERY STATUS FOR ERRORS
  6621.  
  6622. * RETURN STATUS TO TASK.
  6623.  
  6624. SX6 TSNE RECOVERY STATUS NO ERRORS
  6625. SA4 X5 FWA OF STATUS
  6626. SA6 X4+B5 RETURN STATUS
  6627.  
  6628. * UNLOCK RECOVERY FILE.
  6629.  
  6630. WFP9 SA4 B4+TTLKW LOCK STATUS
  6631. MX7 -60+TTLKN
  6632. ERRNZ TTLKS-59 IF LOCK NOT IN BIT 59
  6633. BX6 -X7*X4 CLEAR LOCK
  6634. ERRNZ TTLKW-TTEVW IF LOCK AND LOCK EVENT NOT IN SAME WORD
  6635. LX7 TTEVS-59
  6636. ERRNZ TTLKN-TTEVN IF EVENT AND LOCK FIELDS NOT EQUAL
  6637. BX6 X7+X6 SET FILE RELEASE EVENT
  6638. SA6 A4
  6639. SA2 WFPB SUBCP
  6640. ZR X2,WFP4 IF AN INTERNAL *TAF* REQUEST
  6641.  
  6642. * REQUEST CPU FOR SUBCP.
  6643.  
  6644. LX2 SCPAL COMPUTE SUBCP TABLE ADDRESS
  6645. TA4 X2-CPAL,VCPA
  6646. SB6 A4 FWA OF SUBCP TABLE ENTRY
  6647. SX4 X4-NUAPL FWA OF TASK SYSTEM AREA
  6648. SA3 X4+RWTS GET RETURN ADDRESS
  6649. SB3 TSSC
  6650. SX6 X3+
  6651. SA6 X4+RCL RETURN AFTER RECALL
  6652. SA5 B6+SCRCW SET RECALL FLAG
  6653. MX6 SCRCN
  6654. LX6 SCRCS-59
  6655. BX6 X6+X5
  6656. SA6 A5
  6657. RJ RSP RESTORE SUBCP REGISTERS
  6658. EQ RCPU REQUEST CPU FOR TASK
  6659.  
  6660. * RECOVERY FILE IS LOCKED, SO QUEUE REQUEST.
  6661.  
  6662. WFP10 SX1 B4+TTEVW FWA OF LOCK RELEASE EVENT
  6663. SA3 WFPB SUBCP
  6664. SA4 WFPD FWA OF QUEUE ENTRY
  6665. SB3 X4
  6666. SX5 B0 NO TIMEOUT ON EVENT
  6667. QTWCALL TTEVS,QTEV WAIT UNIT LOCK IS RELEASED
  6668. RJ GRP GET REQUEST PARAMETERS
  6669. SA6 WFPB SAVE SUBCP
  6670. SX6 B3+ SAVE FWA OF QUEUE ENTRY
  6671. SA6 WFPD
  6672. EQ WFP8 DETERMINE RECOVERY FILE
  6673.  
  6674. .A ENDIF
  6675. WFPA BSS 1 TERMINAL STATUS TABLE ORDINAL
  6676. WFPB BSS 1 SUBCP
  6677. WFPC BSS 1 REQUEST
  6678. WFPD BSS 1 FWA OF QUEUE ENTRY TO SUBCP
  6679. WFPE BSS 1 FWA OF QUEUE ENTRY RELATIVE TO *TAF*
  6680. WFPF BSS 1 RECOVERY FILE TERMINAL ORDINAL
  6681. .A IFGE IPTAR,1
  6682. PSD SPACE 4,15
  6683. ** PSD - PUT STATUS DATA.
  6684. *
  6685. * ENTRY (X5) = RA REQUEST.
  6686. * (B5) = SUBCP RA.
  6687. *
  6688. * EXIT (X6) = 0, IF NO KEYWORD ERRORS.
  6689. * *RSBK*, IF BAD KEYWORD.
  6690. *
  6691. * USES X - 1, 2, 3, 4, 6, 7.
  6692. * A - 1, 2, 4, 6, 7.
  6693. * B - 2, 6, 7.
  6694.  
  6695.  
  6696. PSD SUBR ENTRY/EXIT
  6697. SB2 X5+B1 FWA OF KEYWORDS
  6698. SB7 B0+ COUNT OF KEYWORDS PROCESSED
  6699. PSD1 SA1 B2 FWA OF KEYWORD
  6700. SX6 B0 NO ERRORS
  6701. ZR X1,PSDX IF END OF KEYWORDS
  6702. SB7 B7+B1 UPDATE COUNT OF KEYWORDS PROCESSED
  6703. MX7 -18
  6704.  
  6705. * DETERMINE ROUTINE TO PROCESS KEYWORD.
  6706.  
  6707. SA2 PSDB FIRST *WSTAT* KEYWORD
  6708. SX3 3H BLANKS
  6709. BX3 -X7*X3
  6710. SA1 X1+B5 KEYWORD
  6711. PSD2 ZR X2,PSD3 IF BAD KEYWORD
  6712. SB6 X2 ROUTINE TO PROCESS KEYWORD
  6713. BX2 X7*X2
  6714. BX2 X2+X3 BLANK FILL KEYWORD
  6715. BX4 X1-X2
  6716. SA2 A2+1 NEXT KEYWORD
  6717. NZ X4,PSD2 IF NOT DESIRED KEYWORD
  6718. SA1 B2+B1 FWA OF VALUE FOR KEYWORD
  6719. SA1 X1+B5 VALUE FOR KEYWORD
  6720. SB2 B2+2 NEXT KEYWORD
  6721. JP B6 PROCESS KEYWORD
  6722.  
  6723. * PROCESS BAD KEYWORD.
  6724.  
  6725. PSD3 SX7 B7 BAD KEYWORD POSITION
  6726. SX6 TSBK RECOVERY STATUS BAD KEYWORD
  6727. IX6 X6+X7
  6728. PSD4 SA1 X5 FWA OF STATUS
  6729. SA6 X1+B5 RETURN STATUS TO TASK
  6730. EQ PSDX RETURN
  6731.  
  6732. * PUT *CDCS* KEYWORD VALUE IN BUFFER.
  6733.  
  6734. PSD5 SA4 B4+TTBFW+TRCCW *CDCS* VALUE
  6735. MX2 60-TRCCN
  6736. LX4 TRCCN-1-TRCCS RIGHT JUSTIFY *CDCS* FIELD
  6737. BX7 X2*X4
  6738. BX7 X7+X1
  6739. LX7 TRCCS-TRCCN+1 POSITION *CDCS* FIELD
  6740. SA7 A4
  6741. EQ PSD1 PROCESS NEXT KEYWORD
  6742.  
  6743. * PUT *CRM* KEYWORD VALUE IN BUFFER.
  6744.  
  6745. PSD6 SA4 B4+TTBFW+TRCRW *CRM* FIELD
  6746. MX2 60-TRCRN
  6747. LX4 TRCRN-1-TRCRS RIGHT JUSTIFY *CRM* FIELD
  6748. BX7 X2*X4
  6749. BX7 X1+X7 NEW *CRM* VALUE
  6750. LX7 TRCRS-TRCRN+1 POSITION *CRM* FIELD
  6751. SA7 A4
  6752. EQ PSD1 PROCESS NEXT KEYWORD
  6753.  
  6754. * PUT *NEWID* KEYWORD VALUE IN BUFFER.
  6755.  
  6756. PSD7 BX7 X1
  6757. ERRNZ TRNIN-60 IF FIELD DOES NOT OCCUPY FULL WORD
  6758. SA7 B4+TTBFW+TRNIW
  6759. EQ PSD1 PROCESS NEXT KEYWORD
  6760.  
  6761. * PUT *OLDID* KEYWORD VALUE IN BUFFER.
  6762.  
  6763. PSD8 BX7 X1
  6764. ERRNZ TROIN-60
  6765. SA7 B4+TTBFW+TROIW
  6766. EQ PSD1 PROCESS NEXT KEYWORD
  6767.  
  6768. * PUT *SEQ* KEYWORD VALUE IN BUFFER.
  6769.  
  6770. PSD9 SA4 B4+TTBFW+TRCNW *SEQ* FIELD
  6771. LX4 TRCNN-1-TRCNS RIGHT JUSTIFY *SEQ* FIELD
  6772. MX2 60-TRCNN
  6773. BX7 X2*X4
  6774. BX7 X7+X1 SET NEW *SEQ* VALUE
  6775. LX7 TRCNS-TRCNN+1 POSITION *SEQ* FIELD
  6776. SA7 A4
  6777. EQ PSD1 PROCESS NEXT KEYWORD
  6778.  
  6779. * PUT *STEP* KEYWORD VALUE IN BUFFER.
  6780.  
  6781.  
  6782. PSD10 SX4 X1-CSTT
  6783. ZR X4,PSD1 IF START INPUT REQUEST
  6784. SA4 B4+TTBFW+TRCSW *STEP* FIELD
  6785. MX2 60-TRCSN
  6786. LX4 TRCSN-1-TRCSS RIGHT JUSTIFY *STEP*
  6787. BX7 X2*X4
  6788. BX7 X7+X1 NEW STEP FIELD
  6789. LX7 TRCSS-TRCSN+1 POSITION *STEP* FIELD
  6790. SA7 A4
  6791. EQ PSD1 PROCESS NEXT KEYWORD
  6792.  
  6793.  
  6794. * PUT *TRAN* KEYWORD VALUE IN BUFFER.
  6795.  
  6796. PSD11 SA4 B4+TTBFW+TRTYW *TRAN* FIELD
  6797. MX2 60-TRTYN
  6798. LX4 TRTYN-1-TRTYS RIGHT JUSTIFY *TRAN*
  6799. BX7 X2*X4
  6800. BX7 X7+X1 NEW *TRAN* VALUE
  6801. LX7 TRTYS-TRTYN+1 POSITION *TRAN* FIELD
  6802. SA7 A4
  6803. EQ PSD1 PROCESS NEXT KEYWORD
  6804.  
  6805. * KEYWORDS AND THEIR ASSOCIATED PROCESSING ROUTINE.
  6806.  
  6807. PSDB CKT CDCS,PSD5
  6808. CKT CRM,PSD6
  6809. CKT NEWID,PSD7
  6810. CKT NEXT,PSD3
  6811. CKT OLDID,PSD8
  6812. CKT RESTART,PSD3
  6813. CKT SEQ,PSD9
  6814. CKT STEP,PSD10
  6815. CKT TRAN,PSD11
  6816. CKT USER,PSD1
  6817. CKT END
  6818. .A ENDIF
  6819. PWK SPACE 4,20
  6820. ** PWK - PROCESS *WSTAT* KEYWORDS.
  6821. *
  6822. * ENTRY (X5) = FWA OF REQUEST.
  6823. * (B5) = SUBCP RA.
  6824. *
  6825. * EXIT (X0) = 0, IF NO KEYWORDS ACCESS RECOVERY FILE.
  6826. * (X6) = 0, IF NO KEYWORD ERRORS.
  6827. * *RSBK*, IF BAD KEYWORD.
  6828. * (X7) = TERMINAL STATUS TABLE ORDINAL, IF NON-ZERO.
  6829. * (STIN) = 1, IF COMMUNICATIONS ENABLED, OTHERWISE 0.
  6830. *
  6831. * USES X - 0, 1, 2, 3, 4, 6, 7.
  6832. * A - 1, 2, 6, 7.
  6833. * B - 2, 3, 6.
  6834. *
  6835. * CALLS STST, ZFN.
  6836. *
  6837. * MACROS ABORT, MESSAGE.
  6838.  
  6839.  
  6840. PWK11 SX6 B0+ NO ERRORS
  6841. SA1 PWKD TERMINAL STATUS TABLE ORDINAL
  6842. SX7 X1+
  6843.  
  6844. PWK SUBR ENTRY/EXIT
  6845. SB2 X5+B1 FWA OF KEYWORDS
  6846. SX0 B0 NO KEYWORDS ACCESS RECOVERY FILE
  6847. SX6 B0 CLEAR TERMINAL ORDINAL
  6848. SB3 B0+ COUNT OF KEYWORDS PROCESSED
  6849. SA6 PWKD
  6850. PWK1 SA1 B2 FWA OF KEYWORD
  6851. ZR X1,PWK11 IF END OF KEYWORDS
  6852. SB3 B3+B1 UPDATE COUNT OF KEYWORDS
  6853. MX7 -18
  6854. SX3 3H BLANKS TO FILL KEYWORD
  6855. BX3 -X7*X3
  6856.  
  6857. * DETERMINE ROUTINE TO PROCESS KEYWORD.
  6858.  
  6859. SA2 PWKB FIRST KEYWORD
  6860. SA1 X1+B5 USER KEYWORD
  6861. PWK2 ZR X2,PWK3 IF BAD KEYWORD
  6862. SB6 X2 ROUTINE TO PROCESS KEYWORD
  6863. BX2 X7*X2
  6864. BX2 X2+X3 BLANK FILL KEYWORD
  6865. BX4 X2-X1
  6866. SA2 A2+B1 NEXT KEYWORD
  6867. NZ X4,PWK2 IF NOT USER TASK KEYWORD
  6868. SA1 B2+B1 FWA OF VALUE FOR KEYWORD
  6869. SA1 X1+B5 VALUE FOR KEYWORD
  6870. SB2 B2+2 NEXT KEYWORD
  6871. JP B6 PROCESS KEYWORD
  6872.  
  6873. * PROCESS BAD KEYWORD.
  6874.  
  6875. PWK3 SX7 B3 BAD KEYWORD POSITION
  6876. SX6 TSBK RECOVERY STATUS BAD KEYWORD
  6877. IX6 X6+X7
  6878. PWK4 SA1 X5 FWA OF STATUS
  6879. SA6 X1+B5 RETURN STATUS TO TASK
  6880. EQ PWKX RETURN
  6881.  
  6882. * IF RECOVERY IS INSTALLED, INDICATE KEYWORD NEEDS RECOVERY
  6883. * FILE. IF RECOVERY IS NOT INSTALLED, RETURN RECOVERY NOT
  6884. * INSTALLED STATUS TO TASK.
  6885.  
  6886. .A IFGE IPTAR,1
  6887. PWK5 SX0 B1 INDICATE KEYWORD NEEDS RECOVERY FILE
  6888. EQ PWK1 PROCESS NEXT KEYWORD
  6889. .A ELSE
  6890. PWK5 SX6 TSRU RECOVERY STATUS RECOVERY UNAVAILABLE
  6891. EQ PWKX RETURN
  6892. .A ENDIF
  6893.  
  6894. * PROCESS *STEP* KEYWORD. IF *STEP* VALUE EQUALS *CSTT*
  6895. * ABORT *TAF*. IF *STEP* VALUE EQUALS *CSST* TELL *TAF*
  6896. * TO ALLOW TRANSACTION INPUT.
  6897.  
  6898.  
  6899. PWK7 SX2 X1-CSTT
  6900. ZR X2,PWK8 IF TERMINATE *TAF*
  6901. SX2 X1-CSST
  6902. ZR X2,PWK9 IF START TERMINAL/JOB INPUT
  6903. EQ PWK5 INDICATE KEYWORD NEEDS RECOVERY FILE
  6904.  
  6905. PWK8 MESSAGE PWKC * RECOVERY NOT SUCCESSFUL.*
  6906. ABORT
  6907.  
  6908. PWK9 SX7 B1+ START INPUT FOR TERMINALS/JOBS
  6909. SA7 STIN
  6910. SA4 B5-NUAPL+CB2C GET *TST* ADDRESS
  6911. LX4 CBTAN-CBTAS-1
  6912. SX4 X4
  6913. ZR X4,PWK1 IF SYSTEM ORIGIN TRANSACTION
  6914. MX6 TSCPN-60
  6915. LX6 TSCPS-59 CLEAR CONNECTION POSTPONE FLAG
  6916. SA4 X4+B1 WORD 2 OF *TST*
  6917. BX6 -X6*X4
  6918. SA6 A4+ UPDATE WORD 2 OF *TST*
  6919. EQ PWK1 PROCESS NEXT KEYWORD
  6920.  
  6921. * PROCESS *USER* KEYWORD. SEARCH TERMINAL STATUS TABLE FOR
  6922. * SPECIFIED USER NAME AND DETERMINE TERMINAL ORDINAL.
  6923.  
  6924. PWK10 RJ ZFN ZERO FILL NAME
  6925. BX4 X1
  6926. RJ STST SEARCH TERMINAL STATUS TABLE
  6927. SX6 TSUU RECOVERY STATUS USER UNKNOWN
  6928. ZR X3,PWK4 IF TERMINAL NAME NOT FOUND
  6929. SX7 X3+ SAVE TERMINAL ORDINAL
  6930. SA7 PWKD
  6931. EQ PWK1 PROCESS NEXT KEYWORD
  6932.  
  6933. * KEYWORDS AND THEIR ASSOCIATED PROCESSING ROUTINES.
  6934.  
  6935. PWKB CKT CDCS,PWK5
  6936. CKT CRM,PWK5
  6937. CKT NEWID,PWK5
  6938. CKT NEXT,PWK3
  6939. CKT OLDID,PWK5
  6940. CKT RESTART,PWK3
  6941. CKT SEQ,PWK5
  6942. CKT STEP,PWK7
  6943. CKT TRAN,PWK5
  6944. CKT USER,PWK10
  6945. PWKBL EQU *-PWKB NUMBER OF KEYWORDS
  6946. CKT END
  6947.  
  6948. PWKC DATA C* RECOVERY NOT SUCCESSFUL.*
  6949. PWKD BSS 1 TERMINAL STATUS TABLE ORDINAL
  6950. ROU SPACE 4,10
  6951. ** ROU - *ROUTE* PROCESSOR.
  6952. *
  6953. * ENTRY (X1) = TASK FL.
  6954. * (B4) = COMPLEMENT OF FWA OF PARAMETER LIST.
  6955. * (B5) = TASK RA.
  6956. *
  6957. * EXIT TO *TSSC*, IF ERROR ENCOUNTERED.
  6958. * TO *TRCL2*, IF LAST DSP REQUEST NOT COMPLETED.
  6959. * TO *RFQ*, IF FILE IS TO BE ROUTED.
  6960. *
  6961. * USES X - 0, 1, 2, 3, 4, 6, 7.
  6962. * A - 1, 2, 3, 6, 7.
  6963. * B - 3, 5, 6.
  6964. *
  6965. * CALLS KDC, KDE, KDO, KEC, KFC, KFM, KIC, KID, KJS, KOT, KPI,
  6966. * KPR, KRE, KSC, KST, KSV, KTD, KUJ, KUN, RSP, ZFN.
  6967. *
  6968. * MACROS REWIND, WRITE, WRITER.
  6969.  
  6970.  
  6971. ROU BSS 0 ENTRY
  6972. SA2 TDSP CHECK INTERLOCK
  6973. SX7 SRTN4.1 RECALL RETURN ADDRESS
  6974. NZ X2,TRCL2 IF LAST DSP REQUEST NOT COMPLETED
  6975. SX6 B5 SAVE TASK RA
  6976. SA6 ROUB
  6977. MX7 0 CLEAR INTERNAL FLAGS
  6978. SA7 PTID
  6979. SA7 A7+B1 CLEAR *PFUN*
  6980. SA7 A7+B1 CLEAR *PDID*
  6981. SA7 A7+B1 CLEAR *PDEF*
  6982. SA7 A7+B1 CLEAR *PJSN*
  6983. SA7 A7+B1 CLEAR *PUJN*
  6984. SA7 A7+B1 CLEAR *PDCT*
  6985. SA7 A7+B1 CLEAR *PECT*
  6986. SA7 A7+B1 CLEAR *PJOT*
  6987.  
  6988. * INITIALIZE *DSP* PARAMETER BLOCK.
  6989.  
  6990. SA2 SF SET FILE NAME IN *TROU*
  6991. MX0 42
  6992. BX6 X0*X2
  6993. SA6 TROU
  6994. SX2 FRER+FRFN INITIALIZE *TROU+1*
  6995. BX6 -X0*X2
  6996. SA6 A6+B1
  6997. MX2 -24 INITIALIZE *TROU+2*
  6998. BX6 -X2
  6999. SA6 A6+B1
  7000. BX6 X6-X6 INITIALIZE REST OF PARAMETER BLOCK
  7001. SA6 A6+B1
  7002. SA6 A6+B1
  7003. SA6 A6+1
  7004. SA6 A6+B1
  7005.  
  7006. * GET FWA OF DATA.
  7007.  
  7008. SA2 B5-B4 FWA OF PARAMETER LIST
  7009. MX0 -18
  7010. BX7 -X0*X2
  7011. SX6 EC100
  7012. ZR X7,ROU8 IF NO DATA TO ROUTE
  7013. SA3 SF+1
  7014. SX7 B5+X7 FWA OF DATA (RELATIVE TO TAF)
  7015. BX7 -X0*X7
  7016. BX3 X0*X3
  7017. BX7 X3+X7
  7018. SA7 A3+ STORE *FIRST*
  7019.  
  7020. * GET LENGTH (IN CM WORDS).
  7021.  
  7022. SA2 A2+B1 GET FWA OF LENGTH
  7023. BX2 -X0*X2
  7024. SX6 EC101
  7025. ZR X2,ROU8 IF LENGTH NOT SPECIFIED
  7026. SA3 X2+B5
  7027. IX4 X1-X3
  7028. ZR X3,ROU8 IF NO DATA TO ROUTE (LENGTH = 0)
  7029. NG X4,ROU8 IF LENGTH OF DATA EXCEEDS TASK FL
  7030. IX6 X7+X3 LWA+1 OF DATA (RELATIVE TO TAF)
  7031. SA3 SF+4
  7032. BX6 -X0*X6
  7033. SX6 X6+1
  7034. SA2 A2+B1 FWA OF STATUS WORD
  7035. BX3 X0*X3
  7036. BX6 X3+X6
  7037. SA6 A3+ SET *LIMIT*
  7038.  
  7039. * GET FWA OF STATUS WORD.
  7040.  
  7041. BX2 -X0*X2
  7042. SX6 EC102
  7043. ZR X2,ROU8 IF NO STATUS RETURN ADDRESS SPECIFIED
  7044. SX6 X2 SAVE STATUS RETURN ADDRESS
  7045. SB6 A2+B1 POINT TO NEXT PARAMETER
  7046. SA6 ROUA
  7047.  
  7048. * RETURN HERE FROM PARAMETER PROCESSOR.
  7049. * (B6) = ADDRESS OF NEXT PARAMETER.
  7050.  
  7051. * PROCESS NEXT PARAMETER.
  7052.  
  7053. ROU1 SA1 ROUB GET TASK RA
  7054. SB5 X1
  7055. SA1 B6 GET FWA OF NEXT PARAMETER
  7056. ZR X1,ROU3 IF END OF PARAMETERS
  7057. SA1 X1+B5 ACTUAL PARAMETER
  7058. RJ ZFN ZERO FILL ACTUAL PARAMETER
  7059. SA3 B6+B1 FWA OF PARAMETER VALUE
  7060. SB6 B6+2
  7061.  
  7062. * SEARCH FOR PARAMETER PROCESSOR.
  7063.  
  7064. MX0 36
  7065. SA2 TKEY-1
  7066. ROU2 SA2 A2+B1
  7067. BX7 X1-X2 COMPARE PARAMETER
  7068. BX7 X0*X7
  7069. SB3 X2 SET PARAMETER PROCESSOR ADDRESS
  7070. SX6 EC103
  7071. ZR X2,ROU8 IF PARAMETER NOT FOUND IN TABLE
  7072. NZ X7,ROU2 IF NOT THIS PARAMETER
  7073. SX6 EC104
  7074. ZR X3,ROU8 IF NO PARAMETER VALUE SPECIFIED
  7075. SA1 X3+B5
  7076. RJ ZFN ZERO FILL PARAMETER VALUE
  7077. BX3 X1
  7078. JP B3 EXECUTE PARAMETER PROCESSOR
  7079.  
  7080. * MAKE *DSP* CALL.
  7081.  
  7082. ROU3 SA1 TROU+1 *DSP* PARAMETER BLOCK WORD 1
  7083. MX0 -12
  7084. BX2 X1
  7085. AX1 24
  7086. BX7 -X0*X1 DISPOSITION CODE
  7087. SB3 B0 INITIALIZE POINTER FOR *ROUC* TABLE
  7088. AX1 12
  7089. BX1 -X0*X1 FORMS CODE
  7090. SX3 X7-2RSC
  7091. ZR X3,ROU5 IF *DC=SC*
  7092. ROU4 SA3 ROUC+B3 GET INPUT MNEMONIC
  7093. ZR X3,ROU5 IF END OF TABLE
  7094. IX3 X7-X3
  7095. SB3 B3+B1 GET NEXT MNEMONIC
  7096. NZ X3,ROU4 IF NO MATCH
  7097. SX6 EC105
  7098. NZ X1,ROU8 IF *FC* SPECIFIED ON INPUT DISPOSITION
  7099. SA1 PDEF CHECK FOR *DEF* PARAMETER
  7100. SX6 EC106
  7101. NZ X1,ROU8 IF DEFERRED INPUT FILE
  7102. ROU5 SA1 PFUN
  7103. SA3 PTID
  7104. SX4 FRTI
  7105. BX6 X3+X1
  7106. BX7 X4+X2
  7107. ZR X6,ROU6 IF NOT REMOTE ROUTING
  7108. SA7 TROU+1 SET *TID* FLAG BIT
  7109. SA1 TFUN
  7110. SA2 A1+B1
  7111. BX2 X2+X1
  7112. ZR X2,ROU6 IF IMPLICIT REMOTE ROUTING
  7113. SA2 TROU+2
  7114. SX3 A1 SET ADDRESS OF FAMILY/USER NAME BLOCK
  7115. MX0 36
  7116. BX3 -X3
  7117. BX6 -X0*X3
  7118. BX2 X0*X2
  7119. BX6 X2+X6
  7120. SA6 TROU+2
  7121. ROU6 MX0 -3
  7122. SA1 PDCT
  7123. LX0 3
  7124. SA2 PECT
  7125. BX1 -X0*X1 GET *DC* TYPE
  7126. BX2 -X0*X2 GET *EC* TYPE
  7127. ZR X1,ROU7 IF NO *DC* TYPE
  7128. ZR X2,ROU7 IF NO *EC* TYPE
  7129. BX1 X1-X2
  7130. ZR X1,ROU7 IF TYPES COMPARE
  7131. SX6 EC107
  7132. EQ ROU8 RETURN ERROR CODE
  7133.  
  7134. * ROUTE DATA AND GET STATUS.
  7135.  
  7136. ROU7 REWIND SF,R
  7137. SA2 SF+4 SET *IN* TO *LIMIT-1*
  7138. MX0 -18
  7139. BX6 -X0*X2
  7140. SX3 B1
  7141. IX6 X6-X3
  7142. SA6 A2-2
  7143. WRITER SF,R WRITE DATA TO SCRATCH FILE
  7144. SA1 SF+1 *FIRST*
  7145. SX6 OBUF
  7146. MX0 42
  7147. SA6 A1+B1 RESTORE *IN*
  7148. SA6 A6+B1 RESTORE *OUT*
  7149. BX1 X0*X1
  7150. SA2 A6+B1 *LIMIT*
  7151. BX6 X1+X6
  7152. SX7 OBUF+OBUFL
  7153. BX2 X0*X2
  7154. SA6 A1 RESTORE *FIRST*
  7155. BX7 X2+X7
  7156. SA7 A2 RESTORE *LIMIT*
  7157. RJ RSP RESTORE B2 AND B7
  7158. SA1 TROU+1 GET PARAMETER FLAGS
  7159. SA3 ROUA GET STATUS RETURN ADDRESS
  7160. SX6 RFQ3 *ROUTE* REQUEST STATUS PROCESSOR
  7161. LX3 18
  7162. BX3 X3+X6 24/, 18/ STATUS ADDR, 18/ STATUS PROC-R
  7163. EQ RFQ ROUTE FILE TO QUEUE
  7164.  
  7165.  
  7166. * RETURN HERE IF TAF DETECTS A *ROUTE* PARAMETER VALUE ERROR.
  7167. * (X6) = ERROR CODE.
  7168.  
  7169. ROU8 SA3 ROUA RETURN STATUS ADDRESS
  7170. SA1 ROUB
  7171. IX3 X3+X1
  7172. SA6 X3 STORE ERROR CODE
  7173. EQ TSSC ENTER SWITCH LOOP
  7174.  
  7175.  
  7176. ROUA BSSZ 1 RETURN STATUS ADDRESS
  7177. ROUB BSSZ 1 TEMPORARY STORAGE FOR TASK RA
  7178.  
  7179. * INPUT DISPOSITION CODE TABLE.
  7180.  
  7181. ROUC DATA 2RIN *DC=IN*
  7182. DATA 2RNO *DC=NO*
  7183. DATA 2RTO *DC=TO*
  7184. DATA 0
  7185. SPACE 4,10
  7186. ** ALL OF THE FOLLOWING ROUTINES (*KDC* THROUGH *KUN*) HAVE THE
  7187. * FOLLOWING COMMON ENTRY AND EXIT CONDITIONS. REFER TO THE
  7188. * INDIVIDUAL ROUTINES FOR SPECIFIC CONDITIONS.
  7189. *
  7190. * ENTRY (X3) = PARAMETER VALUE WHEN *PARAMETER = PARAMETER
  7191. * VALUE* IS THE FORMAT.
  7192. * (X3) = 0 IF *PARAMETER* IS THE FORMAT.
  7193. *
  7194. * EXIT TO *ROU1* IF NO ERROR.
  7195. * ENTRIES MADE IN *DSP* PARAMETER BLOCK *TROU*.
  7196. * (B6) = ENTRY VALUE.
  7197. KDC SPACE 4,10
  7198. ** KDC - PROCESS *DC=XX* (DISPOSITION CODE).
  7199. *
  7200. * ENTRY (X3) = DISPOSITION CODE, LEFT JUSTIFIED.
  7201. *
  7202. * EXIT TO *ROU1*.
  7203. * *DC* FIELD IN *TROU+1* = DISPOSITION CODE.
  7204. * DISPOSITION CODE FLAG SET IN *TROU+1*.
  7205. * (PDCT) = DISPOSITION CODE TYPE.
  7206. * (B6) = ENTRY VALUE.
  7207. *
  7208. * USES X - 0, 1, 3, 7.
  7209. * A - 1, 7.
  7210.  
  7211.  
  7212. KDC BSS 0 ENTRY
  7213. SA1 TDCC-1
  7214. MX0 12
  7215.  
  7216. * FIND CODE IN TABLE.
  7217.  
  7218. KDC1 SA1 A1+1
  7219. BX7 X1-X3 COMPARE CODES
  7220. BX7 X0*X7
  7221. ZR X1,KDC2 IF END OF TABLE
  7222. NZ X7,KDC1 IF NO MATCH
  7223. KDC2 BX7 X1
  7224. SA7 PDCT SET TYPE PROCESSED
  7225. LX3 -24 POSITION PARAMETER
  7226. SA1 TROU+1
  7227. SX7 FRDC
  7228. LX0 -24 POSITION MASK
  7229. BX3 X0*X3
  7230. BX1 -X0*X1
  7231. BX3 X1+X3 ENTER *DC* PARAMETER
  7232. BX7 X3+X7 ENTER FLAG BIT
  7233. SA7 A1
  7234. EQ ROU1 RETURN
  7235. KDE SPACE 4,10
  7236. ** KDE - PROCESS *DEF* (DEFERRED ROUTE).
  7237. *
  7238. * EXIT TO *ROU1*.
  7239. * DEFERRED ROUTE FLAG SET IN *TROU+1*.
  7240. * (PDEF) = NON-ZERO.
  7241. * (B6) = ENTRY VALUE.
  7242. *
  7243. * ERROR TO *ROU8* IF INCORRECT *DEF* PARAMETER.
  7244. *
  7245. * USES X - 1, 6, 7.
  7246. * A - 1, 7.
  7247.  
  7248.  
  7249. KDE BSS 0 ENTRY
  7250. NZ X3,KDE1 IF EQUIVALENCED PARAMETER
  7251. SA1 TROU+1
  7252. SX7 FRDR
  7253. SA7 PDEF SET *DEF* PARAMETER ENTERED FLAG
  7254. BX7 X1+X7 ENTER FLAG
  7255. SA7 A1
  7256. EQ ROU1 RETURN
  7257.  
  7258. KDE1 SX6 EC108 INCORRECT *DEF* PARAMETER
  7259. EQ ROU8 RETURN ERROR CODE
  7260. KDO SPACE 4,10
  7261. ** KDO - PROCESS *DO=XXX* (DESTINATION OUTPUT MAINFRAME).
  7262. *
  7263. * ENTRY (X3) = OUTPUT MAINFRAME *LID*, LEFT JUSTIFIED.
  7264. *
  7265. * EXIT TO *ROU1*.
  7266. * *SLID* FIELD IN *TROU+2* = OUTPUT MAINFRAME *LID*.
  7267. * *SLID/DLID* FLAG SET IN *TROU+1*.
  7268. * (B6) = ENTRY VALUE.
  7269. *
  7270. * ERROR TO *ROU8* IF INCORRECT *DO* VALUE.
  7271. *
  7272. * USES X - 0, 1, 2, 3, 4, 5, 6.
  7273. * A - 1, 2, 5, 6.
  7274.  
  7275.  
  7276. KDO BSS 0 ENTRY
  7277. MX0 18
  7278. BX2 -X0*X3
  7279. AX2 18
  7280. NZ X2,KDO2 IF *LID* GREATER THAN THREE CHARACTERS
  7281. BX6 X0*X3 EXTRACT OUTPUT MAINFRAME *LID*
  7282. SX5 1R* CHECK FOR ASTERISK
  7283. LX5 17-5
  7284. R= X4,LCPD SET *SLID* TO *PID*
  7285. LX6 18
  7286. IX3 X4-X6
  7287. PL X3,KDO2 IF .LE. SPECIAL *SLID* VALUES
  7288. BX5 X5-X6
  7289. NZ X5,KDO1 IF NOT ASTERISK
  7290. BX6 X4 SET *SLID*=*PID*
  7291. KDO1 SA2 TROU+2 SET *SLID* IN *TROU*
  7292. BX2 -X0*X2
  7293. LX6 42
  7294. BX6 X2+X6
  7295. SA6 A2
  7296. SX6 FRLD
  7297. SA1 A2-B1 SET *SLID/DLID* FLAG
  7298. BX6 X1+X6
  7299. SA6 A1+ STORE FLAG
  7300. EQ ROU1 RETURN
  7301.  
  7302. KDO2 SX6 EC109 INCORRECT *DO* VALUE
  7303. EQ ROU8 RETURN ERROR CODE
  7304. KEC SPACE 4,10
  7305. ** KEC - PROCESS *EC=XX* (EXTERNAL CHARACTERISTIC).
  7306. *
  7307. * ENTRY (X3) = EXTERNAL CHARACTERISTIC, LEFT JUSTIFIED.
  7308. *
  7309. * EXIT TO *ROU1*.
  7310. * *EC* FIELD IN *TROU+1* = EXTERNAL CHARACTERISTIC.
  7311. * EXTERNAL CHARACTERISTIC FLAG SET IN *TROU+1*.
  7312. * (PECT) = EXTERNAL CHARACTERISTIC TYPE.
  7313. * (B6) = ENTRY VALUE.
  7314. *
  7315. * ERROR TO *ROU8* IF INCORRECT *EC* VALUE.
  7316. *
  7317. * USES X - 0, 1, 2, 6, 7.
  7318. * A - 1, 2, 6.
  7319.  
  7320.  
  7321. KEC BSS 0 ENTRY
  7322. MX0 36
  7323. MX7 -3
  7324. SA1 TECC-1
  7325. SA2 TROU+1
  7326. KEC1 SA1 A1+B1
  7327. ZR X1,KEC2 IF EXTERNAL CHARACTERISTIC NOT FOUND
  7328. BX6 X3-X1
  7329. BX6 X0*X6
  7330. NZ X6,KEC1 IF NOT CORRECT EXTERNAL CHARACTERISTIC
  7331. BX6 X1
  7332. SA6 PECT SET TYPE PROCESSED
  7333. LX7 23-2 POSITION MASK
  7334. LX1 23-2 POSITION ENTRY FROM *EC* TABLE
  7335. SX6 FREC
  7336. BX2 X7*X2
  7337. BX1 -X7*X1
  7338. BX6 X2+X6 ENTER FLAG BIT
  7339. BX6 X1+X6 ENTER *EC* CODE
  7340. SA6 A2+
  7341. EQ ROU1 RETURN
  7342.  
  7343. KEC2 SX6 EC107 INCORRECT *EC* VALUE
  7344. EQ ROU8 RETURN ERROR CODE
  7345. KFC SPACE 4,10
  7346. ** KFC - PROCESS *FC=XX* (FORMS CODE).
  7347. *
  7348. * ENTRY (X3) = FORMS CODE, LEFT JUSTIFIED.
  7349. *
  7350. * EXIT TO *ROU1*.
  7351. * *FC* FIELD IN *TROU+1* = FORMS CODE.
  7352. * FORMS CODE FLAG SET IN *TROU+1*.
  7353. * (B6) = ENTRY VALUE.
  7354. *
  7355. * ERROR TO *ROU8* IF FORMS CODE GREATER THAN TWO CHARACTERS.
  7356. *
  7357. * USES X - 0, 1, 2, 3, 6.
  7358. * A - 1, 6.
  7359.  
  7360.  
  7361. KFC BSS 0 ENTRY
  7362. SA1 TROU+1
  7363. MX0 -48
  7364. BX2 -X0*X3
  7365. LX3 -12
  7366. NZ X2,KFC1 IF FORMS CODE GREATER THAN TWO CHARACTERS
  7367. LX0 -12
  7368. SX6 FRFC
  7369. BX1 X1+X6 ENTER FLAG BIT
  7370. BX3 X0*X3
  7371. BX6 X1+X3 ENTER FORMS CODE
  7372. SA6 A1
  7373. EQ ROU1 RETURN
  7374.  
  7375. KFC1 SX6 EC110 INCORRECT *FC* VALUE
  7376. EQ ROU8 RETURN ERROR CODE
  7377. KFM SPACE 4,10
  7378. ** KFM - PROCESS *FM=XXXXXXX* (FAMILY NAME).
  7379. *
  7380. * ENTRY (X3) = FAMILY NAME, LEFT JUSTIFIED.
  7381. *
  7382. * EXIT TO *ROU1*.
  7383. * (TFUN) = FAMILY NAME.
  7384. * (PFUN) = NON-ZERO.
  7385. * (B6) = ENTRY VALUE.
  7386. *
  7387. * ERROR TO *ROU8* IF *TID/FM/UN* - *ID* CONFLICT OR *TID* -
  7388. * *FM/UN* CONFLICT.
  7389. *
  7390. * USES X - 0, 1, 6, 7.
  7391. * A - 1, 7.
  7392.  
  7393.  
  7394. KFM BSS 0 ENTRY
  7395. SA1 PDID
  7396. NZ X1,KFM2 IF *FM* AND *ID* CONFLICT
  7397. SA1 PTID
  7398. SX7 FRTI
  7399. NZ X1,KFM1 IF *TID* PROCESSED
  7400. SA7 PFUN SET *FM-UN* FLAG
  7401. ZR X3,ROU1 IF IMPLICIT REMOTE ROUTING
  7402. MX0 42
  7403. BX7 X0*X3
  7404. SA7 TFUN STORE FAMILY NAME IN *TFUN*
  7405. EQ ROU1 RETURN
  7406.  
  7407. KFM1 SX6 EC111 *TID* AND *FM/UN* CONFLICT
  7408. EQ ROU8 RETURN ERROR CODE
  7409.  
  7410. KFM2 SX6 EC112 *TID/FM/UN* AND *ID* CONFLICT
  7411. EQ ROU8 RETURN ERROR CODE
  7412. KIC SPACE 4,10
  7413. ** KIC - PROCESS *IC=XX* (INTERNAL CHARACTERISTIC).
  7414. *
  7415. * ENTRY (X3) = INTERNAL CHARACTERISTIC, LEFT JUSTIFIED.
  7416. *
  7417. * EXIT TO *ROU1*.
  7418. * *IC* FIELD IN *TROU+1* = INTERNAL CHARACTERISTIC.
  7419. * INTERNAL CHARACTERISTIC FLAG SET IN *TROU+1*.
  7420. * (B6) = ENTRY VALUE.
  7421. *
  7422. * ERROR TO *ROU8* IF INCORRECT *IC* VALUE.
  7423. *
  7424. * USES X - 0, 1, 2, 6, 7.
  7425. * A - 1, 2, 6.
  7426.  
  7427.  
  7428. KIC BSS 0 ENTRY
  7429. SA1 TROU+1
  7430. SA2 TICC-1
  7431. SX6 FRIC
  7432. MX7 -2
  7433. MX0 36
  7434. LX7 19-1 POSITION MASK
  7435. BX6 X1+X6 ENTER FLAG BIT
  7436. KIC1 SA2 A2+B1
  7437. ZR X2,KIC2 IF UNKNOWN *IC* CODE
  7438. BX1 X3-X2
  7439. BX1 X0*X1
  7440. NZ X1,KIC1 IF NOT FOUND
  7441. LX2 19-1
  7442. BX6 X7*X6
  7443. BX2 -X7*X2
  7444. BX6 X6+X2 ENTER *IC* CODE
  7445. SA6 A1
  7446. EQ ROU1 RETURN
  7447.  
  7448. KIC2 SX6 EC113 INCORRECT *IC* VALUE
  7449. EQ ROU8 RETURN ERROR CODE
  7450. KID SPACE 4,10
  7451. ** KID - PROCESS *ID=NN* (LOCAL DEVICE ID).
  7452. *
  7453. * ENTRY (X3) = LOCAL DEVICE ID, LEFT JUSTIFIED.
  7454. *
  7455. * EXIT TO *ROU1*.
  7456. * *TID* FIELD IN *TROU+2* = LOCAL DEVICE ID.
  7457. * *TID* FLAG SET IN *TROU+1*.
  7458. * *PDID* SET IF *PTID* AND *PFUN* ARE ZERO.
  7459. * (B6) = ENTRY VALUE.
  7460. *
  7461. * ERROR TO *ROU8* IF INCORRECT *ID* VALUE.
  7462. * TO *KFM2* IF *ID* - *TID/FM/UN* CONFLICT.
  7463. *
  7464. * USES X - 0, 1, 2, 3, 5, 6, 7.
  7465. * A - 1, 2, 6, 7.
  7466. * B - 7.
  7467. *
  7468. * CALLS DXB.
  7469.  
  7470.  
  7471. KID BSS 0 ENTRY
  7472. SA1 PTID
  7473. SA2 PFUN
  7474. SX7 B1
  7475. BX1 X1+X2
  7476. NZ X1,KFM2 IF *ID* - *TID/FM/UN* CONFLICT
  7477. SA7 PDID
  7478. ZR X3,KID1 IF NON-EQUIVALENCED PARAMETER
  7479. SB7 B0 SET OCTAL CONVERSION DEFAULT
  7480. BX5 X3
  7481. RJ =XDXB
  7482. NZ X4,KID2 IF CONVERSION ERROR
  7483. SA1 TROU+2
  7484. MX0 36
  7485. SX2 X6-IDLM
  7486. BX7 X0*X1
  7487. PL X2,KID2 IF *ID* .GE. *IDLM*
  7488. BX7 X7+X6
  7489. SA7 A1
  7490. SX3 FRTI
  7491. KID1 SA2 TROU+1
  7492. SX6 FRCS
  7493. BX6 X2+X6 SET CENTRAL SITE ROUTING FLAG
  7494. BX6 X3+X6 OPTIONALLY SET *TID* FLAG
  7495. SA6 A2+
  7496. EQ ROU1 RETURN
  7497.  
  7498. KID2 SX6 EC114 INCORRECT *ID* VALUE
  7499. EQ ROU8 RETURN ERROR CODE
  7500. KJS SPACE 4,10
  7501. ** KJS - PROCESS *JSN=XXX* (UNIQUE JSN).
  7502. *
  7503. * ENTRY (X3) = JSN, LEFT JUSTIFIED.
  7504. *
  7505. * EXIT TO *ROU1*.
  7506. * FORCED JSN FIELD IN *TROU+6* = JSN.
  7507. * FORCED JSN FLAG SET IN *TROU+1*.
  7508. * (B6) = ENTRY VALUE.
  7509. *
  7510. * ERROR TO *ROU8* IF INCORRECT JSN OR JSN NOT ALLOWED.
  7511. *
  7512. * USES X - 0, 1, 2, 3, 6, 7.
  7513. * A - 1, 2, 6, 7.
  7514.  
  7515.  
  7516. KJS BSS 0 ENTRY
  7517. ZR X3,KJS1 IF NULL PARAMETER
  7518. SX6 B1+
  7519. SA6 PJSN
  7520. SA1 JOPR CHECK JOB ORIGIN TYPE
  7521. MX0 -12
  7522. LX1 0-24
  7523. BX1 -X0*X1
  7524. MX0 42
  7525. IFNE SYOT,0,1
  7526. SX1 X1-SYOT
  7527. SX6 EC115
  7528. NZ X1,ROU8 IF NOT SYSTEM ORIGIN JOB
  7529. LX3 18
  7530. BX1 X0*X3
  7531. NZ X1,KJS1 IF JSN TOO LONG
  7532. MX7 -6
  7533. BX1 -X7*X3
  7534. ZR X1,KJS1 IF JSN TOO SHORT
  7535. SA1 TROU+6
  7536. SA2 TROU+1
  7537. BX6 X0*X1
  7538. BX6 X6+X3 SET JSN IN FORCED JSN FIELD
  7539. SX7 FRFJ
  7540. BX7 X2+X7 SET FORCED JSN FLAG
  7541. SA6 A1
  7542. SA7 A2+
  7543. EQ ROU1 RETURN
  7544.  
  7545. KJS1 SX6 EC116 INCORRECT JSN VALUE
  7546. EQ ROU8 RETURN ERROR CODE
  7547. KOT SPACE 4,10
  7548. ** KOT - PROCESS *OT=XXXX* (ORIGIN TYPE).
  7549. *
  7550. * ENTRY (X3) = ORIGIN TYPE, LEFT JUSTIFIED.
  7551. *
  7552. * EXIT TO *ROU1*.
  7553. * *OT* FIELD IN *TROU* = ORIGIN TYPE.
  7554. * ORIGIN TYPE FLAG SET IN *TROU*.
  7555. * (B6) = ENTRY VALUE.
  7556. *
  7557. * ERROR TO *ROU8* IF JOB NOT SYSTEM ORIGIN OR INCORRECT *OT*
  7558. * VALUE.
  7559. *
  7560. * USES X - 0, 1, 2, 6, 7.
  7561. * A - 1, 2, 7.
  7562.  
  7563.  
  7564. KOT BSS 0 ENTRY
  7565. SA1 JOPR CHECK JOB ORIGIN TYPE
  7566. MX0 -12
  7567. LX1 11-35
  7568. BX1 -X0*X1
  7569. MX0 30
  7570. SA2 TLOT-1
  7571. SX1 X1-SYOT
  7572. SX6 EC117 JOB NOT SYSTEM ORIGIN
  7573. NZ X1,ROU8 IF NOT *SYOT* JOB ORIGIN
  7574. KOT1 SA2 A2+1
  7575. BX6 X3-X2
  7576. BX6 X0*X6
  7577. ZR X2,KOT2 IF END OF TABLE
  7578. NZ X6,KOT1 IF NOT A MATCH
  7579. MX0 -7
  7580. SA1 TROU
  7581. BX2 -X0*X2 EXTRACT ORIGIN VALUE
  7582. SX2 X2+4000B SET FLAG BIT
  7583. BX1 X0*X1
  7584. BX7 X1+X2 ENTER ORIGIN VALUE
  7585. SA7 TROU
  7586. EQ ROU1 RETURN
  7587.  
  7588. KOT2 SX6 EC118 INCORRECT *OT* VALUE
  7589. EQ ROU8 RETURN ERROR CODE
  7590. KPI SPACE 4,10
  7591. ** KPI - PROCESS *PI=NNNNNNN* (PRINT IMAGE).
  7592. *
  7593. * ENTRY (X3) = PRINT TRAIN IMAGE, LEFT JUSTIFIED.
  7594. *
  7595. * EXIT TO *ROU1*.
  7596. * *PI* FIELD IN *TROU+4* = PRINT TRAIN IMAGE.
  7597. * *PI* FLAG SET IN *TROU+4*.
  7598. * (B6) = ENTRY VALUE.
  7599. *
  7600. * ERROR TO *ROU8* IF INCORRECT *PI* VALUE.
  7601. * TO *ROU1* IF NO *PI* VALUE.
  7602. *
  7603. * USES X - 0, 1, 2, 6, 7.
  7604. * A - 1, 2, 7.
  7605. * B - 4.
  7606.  
  7607.  
  7608. KPI BSS 0 ENTRY
  7609. ZR X3,ROU1 IF NULL PARAMETER
  7610. SA1 TPIN-1
  7611. MX0 1
  7612.  
  7613. * CHECK FOR VALID PRINT IMAGE NAME.
  7614.  
  7615. KPI1 SA1 A1+B1 CHECK NEXT ENTRY
  7616. ZR X1,KPI2 IF END OF TABLE
  7617. SX6 X1 ISOLATE MASK SIZE
  7618. BX7 X1-X3
  7619. AX6 6
  7620. SB4 X6+
  7621. AX6 X0,B4 FORM MASK
  7622. BX2 X6*X7
  7623. NZ X2,KPI1 IF NO MATCH
  7624. SA2 TROU+4
  7625. MX0 -6 ISOLATE PRINT IMAGE ORDINAL
  7626. LX2 6
  7627. BX6 -X0*X1
  7628. BX7 X0*X2
  7629. SX6 X6+10B SET PRINT IMAGE FLAG
  7630. BX7 X6+X7 SET PRINT IMAGE CODE INTO PARAMETER BLOCK
  7631. LX7 -6
  7632. SA7 A2+
  7633. EQ ROU1 RETURN
  7634.  
  7635. KPI2 SX6 EC119 INCORRECT *PI* VALUE
  7636. EQ ROU8 RETURN ERROR CODE
  7637. KPR SPACE 4,10
  7638. ** KPR - PROCESS *PRI=NNNN* (PRIORITY).
  7639. *
  7640. * THE *PRI* PARAMETER IS IGNORED BY NOS. THIS ROUTINE PROVIDES
  7641. * UPWARD COMPATIBILITY FROM NOS/BE.
  7642. *
  7643. * ENTRY (X3) = FILE PRIORITY, LEFT JUSTIFIED.
  7644. *
  7645. * EXIT TO *ROU1*.
  7646. * (B6) = ENTRY VALUE.
  7647.  
  7648.  
  7649. KPR BSS 0 ENTRY
  7650. EQ ROU1 IGNORE PARAMETER *PRI*
  7651. KRE SPACE 4,10
  7652. ** KRE - PROCESS *REP=NN* (REPEAT COUNT).
  7653. *
  7654. * ENTRY (X3) = REPEAT COUNT, LEFT JUSTIFIED.
  7655. *
  7656. * EXIT TO *ROU1*.
  7657. * *RC* FIELD IN *TROU+4* = REPEAT COUNT.
  7658. * REPEAT COUNT FLAG SET IN *TROU+1*.
  7659. * (B6) = ENTRY VALUE.
  7660. *
  7661. * ERROR TO *ROU8* IF INCORRECT *REP* VALUE.
  7662. * TO *ROU1* IF *REP* VALUE .GT. 77B.
  7663. *
  7664. * USES X - 0, 1, 2, 5, 6, 7.
  7665. * A - 1, 2, 6, 7.
  7666. * B - 7.
  7667. *
  7668. * CALLS DXB.
  7669.  
  7670.  
  7671. KRE BSS 0 ENTRY
  7672. SB7 B1 SET DECIMAL CONVERSION
  7673. BX5 X3
  7674. RJ =XDXB CONVERT VALUE
  7675. NZ X4,KRE1 IF CONVERSION ERROR
  7676. SA1 TROU+1
  7677. MX0 -6
  7678. BX2 X0*X6
  7679. NZ X2,ROU1 IF VALUE .GT. 63D (77B)
  7680. SA2 TROU+4
  7681. SX7 FRRC
  7682. LX0 12 POSITION MASK
  7683. LX6 12 POSITION VALUE
  7684. BX2 X0*X2
  7685. BX7 X1+X7 SET FLAG BIT
  7686. SA7 A1
  7687. BX6 X6+X2 ENTER REPEAT COUNT
  7688. SA6 A2+
  7689. EQ ROU1 RETURN
  7690.  
  7691. KRE1 SX6 EC120 INCORRECT *REP* VALUE
  7692. EQ ROU8 RETURN ERROR CODE
  7693. KSC SPACE 4,10
  7694. ** KSC - PROCESS *SC=XX* (SPACING CODE).
  7695. *
  7696. * ENTRY (X3) = SPACING CODE, LEFT JUSTIFIED.
  7697. *
  7698. * EXIT TO *ROU1*.
  7699. * *SPACING* FIELD IN *TROU+4* = SPACING CODE.
  7700. * SPACING CODE FLAG SET IN *TROU+1*.
  7701. * (B6) = ENTRY VALUE.
  7702. *
  7703. * ERROR TO *ROU8* IF INCORRECT *SC* VALUE.
  7704. *
  7705. * USES X - 0, 1, 3, 5, 6.
  7706. * A - 1, 6.
  7707. * B - 7.
  7708. *
  7709. * CALLS DXB.
  7710.  
  7711.  
  7712. KSC BSS 0 ENTRY
  7713. SB7 B0 SET OCTAL CONVERSION
  7714. BX5 X3
  7715. RJ =XDXB CONVERT VALUE
  7716. NZ X4,KSC1 IF CONVERSION ERROR
  7717. MX0 -6 ENTER SPACING CODE
  7718. BX3 -X0*X6
  7719. BX1 X0*X6
  7720. ZR X1,KSC2 IF *SC* .LE. 77B
  7721. KSC1 SX6 EC121 INCORRECT *SC* VALUE
  7722. EQ ROU8 RETURN ERROR CODE
  7723.  
  7724. KSC2 SA1 TROU+4
  7725. LX0 48
  7726. BX1 X0*X1
  7727. LX3 48
  7728. BX6 X1+X3
  7729. SA6 A1+
  7730. SA1 TROU+1 SET SPACING CODE FLAG
  7731. SX6 FRSC
  7732. BX6 X6+X1
  7733. SA6 A1
  7734. EQ ROU1 RETURN
  7735. KST SPACE 4,10
  7736. ** KST - PROCESS *ST=XXX* (DESTINATION MAINFRAME LOGICAL ID).
  7737. *
  7738. * ENTRY (X3) = DESTINATION LOGICAL ID, LEFT JUSTIFIED.
  7739. *
  7740. * EXIT TO *ROU1*.
  7741. * *DLID* FIELD IN *TROU+2* = DESTINATION LOGICAL ID.
  7742. * *SLID/DLID* FLAG SET IN *TROU+1*.
  7743. * (B6) = ENTRY VALUE.
  7744. *
  7745. * ERROR TO *ROU8* IF INCORRECT *ST* VALUE OR IF *DLID* IS LESS
  7746. * THAN *PID*.
  7747. *
  7748. * USES X - 0, 1, 2, 3, 5, 6.
  7749. * A - 2, 5, 6.
  7750.  
  7751.  
  7752. KST BSS 0 ENTRY
  7753. MX0 18
  7754. BX2 -X0*X3
  7755. AX2 18
  7756. NZ X2,KST2 IF *LID* GREATER THAN THREE CHARACTERS
  7757. BX6 X0*X3
  7758. SX5 1R* CHECK FOR ASTERISK
  7759. LX5 17-5
  7760. R= X4,LCPD SET *DLID* TO *PID*
  7761. LX6 18
  7762. IX3 X4-X6
  7763. PL X3,KST2 IF .LE. SPECIAL *DLID* VALUES
  7764. BX5 X5-X6
  7765. NZ X5,KST1 IF NOT ASTERISK
  7766. BX6 X4 SET *DLID*=*PID*
  7767. KST1 LX6 24
  7768. SA2 TROU+2 SET *DLID* IN *TROU*
  7769. LX0 -18
  7770. BX2 -X0*X2
  7771. BX6 X6+X2
  7772. SX1 FRLD SET *SLID/DLID* FLAG
  7773. SA6 A2
  7774. SA2 A2-B1
  7775. BX6 X2+X1
  7776. SA6 A2 STORE FLAG
  7777. EQ ROU1 RETURN
  7778.  
  7779. KST2 SX6 EC122 INCORRECT *ST* VALUE
  7780. EQ ROU8 RETURN ERROR CODE
  7781. KSV SPACE 4,10
  7782. ** KSV - PROCESS *SCL=XX* (SERVICE CLASS).
  7783. *
  7784. * ENTRY (X3) = SERVICE CLASS, LEFT JUSTIFIED.
  7785. *
  7786. * EXIT TO *ROU1*.
  7787. * *SERVICE CLASS* FIELD IN *TROU+4* = SERVICE CLASS.
  7788. * FORCED SERVICE CLASS FLAG SET IN *TROU+1*.
  7789. * (B6) = ENTRY VALUE.
  7790. *
  7791. * ERROR TO *KSV2* IF INCORRECT *SCL* VALUE.
  7792. *
  7793. * USES X - 0, 1, 6, 7.
  7794. * A - 1, 7.
  7795.  
  7796.  
  7797. KSV BSS 0 ENTRY
  7798. SA1 TSCT-1
  7799.  
  7800. * CHECK FOR VALID SERVICE CLASS.
  7801.  
  7802. KSV1 SA1 A1+B1
  7803. ZR X1,KSV2 IF END OF TABLE
  7804. BX7 X1-X3
  7805. NZ X7,KSV1 IF NO MATCH
  7806. SA1 TROU+4
  7807. MX0 12
  7808. BX7 X0*X3 SET SERVICE CLASS INTO PARAMETER BLOCK
  7809. LX7 -12
  7810. BX7 X7+X1
  7811. SA7 A1
  7812. SA1 TROU+1 SET FORCED SERVICE CLASS FLAG
  7813. MX0 -1
  7814. LX0 20
  7815. BX7 -X0+X1
  7816. SA7 A1+
  7817. EQ ROU1 RETURN
  7818.  
  7819. KSV2 SX6 EC123 INCORRECT *SCL* VALUE
  7820. EQ ROU8 RETURN ERROR CODE
  7821. KTD SPACE 4,10
  7822. ** KTD - PROCESS *TID=XX* (TERMINAL ID).
  7823. *
  7824. * ENTRY (X3) = *TID* VALUE, LEFT JUSTIFIED.
  7825. *
  7826. * EXIT TO *ROU1*.
  7827. * TO *KID* IF *TID=C* (ROUTE TO CENTRAL SITE).
  7828. * TO *KUN* IF *TID=XX* (SAME AS *UN* PARAMETER).
  7829. * (PTID) = NON-ZERO IF IMPLICIT REMOTE ROUTING.
  7830. * (B6) = ENTRY VALUE.
  7831. *
  7832. * ERROR TO *KFM2* IF *TID* - *ID* CONFLICT.
  7833. * TO *KFM1* IF *TID* - *FM/UN* CONFLICT.
  7834. *
  7835. * USES X - 1, 3, 6, 7.
  7836. * A - 1, 7.
  7837.  
  7838.  
  7839. KTD BSS 0 ENTRY
  7840. SX6 1RC
  7841. LX6 59-5
  7842. BX6 X6-X3
  7843. ZR X6,KTD1 IF *TID=C* - ROUTE TO CENTRAL SITE
  7844. SA1 PDID
  7845. NZ X1,KFM2 IF *TID* - *ID* CONFLICT
  7846. SA1 PFUN
  7847. NZ X1,KFM1 IF *TID* - *FM/UN* CONFLICT
  7848. PL X3,KUN IF *TID=XX*
  7849. SX7 FRTI
  7850. SA7 PTID
  7851. EQ ROU1 RETURN
  7852.  
  7853. KTD1 SX3 0
  7854. EQ KID PROCESS AS *ID*
  7855. KUJ SPACE 4,10
  7856. ** KUJ - PROCESS *UJN=XXXXXXX* (USER JOB NAME).
  7857. *
  7858. * ENTRY (X3) = USER JOB NAME, LEFT JUSTIFIED.
  7859. *
  7860. * EXIT TO *ROU1*.
  7861. * *UJN* FIELD IN *TROU+3* = USER JOB NAME.
  7862. * *UJN* FLAG SET IN *TROU+1*.
  7863. * (PUJN) = NON-ZERO.
  7864. * (B6) = ENTRY VALUE.
  7865. *
  7866. * USES X - 1, 6, 7.
  7867. * A - 1, 6, 7.
  7868.  
  7869.  
  7870. KUJ BSS 0 ENTRY
  7871. SX6 B1+
  7872. SA6 PUJN
  7873. SA1 TROU+1 ENTER FLAG BIT
  7874. SX7 FRUJ
  7875. BX7 X1+X7
  7876. SA7 A1
  7877. SA1 TROU+3 ENTER *UJN* PARAMETER
  7878. BX1 -X0*X1
  7879. BX6 X1+X3
  7880. SA6 A1+
  7881. EQ ROU1 RETURN
  7882. KUN SPACE 4,10
  7883. ** KUN - PROCESS *UN=XXXXXXX* (USER NAME).
  7884. *
  7885. * ENTRY (X3) = USER NAME, LEFT JUSTIFIED.
  7886. *
  7887. * EXIT TO *ROU1*.
  7888. * (TFUN+1) = USER NAME IF NOT IMPLICIT REMOTE ROUTING.
  7889. * (PFUN) = NON-ZERO.
  7890. * (B6) = ENTRY VALUE.
  7891. *
  7892. * ERROR TO *KFM1* IF *FM/UN* - *TID* CONFLICT.
  7893. * TO *KFM2* IF *UN* - *ID* CONFLICT.
  7894. *
  7895. * USES X - 0, 1, 6, 7.
  7896. * A - 1, 6, 7.
  7897.  
  7898.  
  7899. KUN BSS 0 ENTRY
  7900. SA1 PDID
  7901. NZ X1,KFM2 IF *UN* - *ID* CONFLICT
  7902. SA1 PTID
  7903. SX7 FRTI
  7904. NZ X1,KFM1 IF *FM/UN* - *TID* CONFLICT
  7905. SA7 PFUN
  7906. ZR X3,ROU1 IF IMPLICIT REMOTE ROUTING
  7907. MX0 42
  7908. BX6 X0*X3
  7909. SA6 TFUN+1 STORE USER NAME
  7910. EQ ROU1 RETURN
  7911. MEM SPACE 4,30
  7912. ** MEM - MEMORY REQUEST.
  7913. *
  7914. * ENTRY (B2) = FWA OF TASK SYSTEM AREA.
  7915. * (B7) = FWA OF TASK SUBCP TABLE.
  7916. * (B5) = TASK RA.
  7917. * (X1) = TASK FL.
  7918. * (X5) = 18/3LMEM,6/,18/TYPE,18/ADDR.
  7919. * TYPE = 0 REQUEST CM ABORT IF NOT AVAILABLE.
  7920. * = 1 REQUEST ECS ABORT IF NOT AVAILABLE.
  7921. * = 2 REQUEST CM DO NOT ABORT.
  7922. * = 3 REQUEST EXTENDED MEMORY DO NOT ABORT.
  7923. * ADDR = ADDRESS OF STATUS WORD.
  7924. * (ADDR) = 30/VAL,26/,1/R,1/C,1/,1/0.
  7925. * VAL = 0, IF CURRENT FL DESIRED.
  7926. * -1, IF MAXIMUM FL DESIRED.
  7927. * .GT. 0, IF (VAL) = REQUEST FL.
  7928. * R = CLEAR *CMM* STATUS.
  7929. * C = *CMM* TYPE REQUEST.
  7930. *
  7931. * EXIT TO *TERR2* IF ADDRESS OUT OF RANGE.
  7932. * TO *TERR33* IF INCORRECT EXTENDED MEMORY REQUEST.
  7933. * TO *TERR34* IF INCORRECT CMM MEMORY REQUEST.
  7934. * TO *TERR35* IF RFL EXCEEDED MFL.
  7935. * TO *TERR36* IFINCORRECT REDUCTION OF FL.
  7936. * TO *TSSC* IF NO OTHER ERROR.
  7937. *
  7938. * USES A - ALL.
  7939. * B - 2, 3, 4, 5, 6, 7.
  7940. * X - ALL.
  7941. *
  7942. * CALLS MCP, MTU, RCP, SFS, TRCL.
  7943.  
  7944.  
  7945. MEM SA0 B7 SAVE B7 AND B2
  7946. SB3 X5 REQUEST ADDRESS
  7947. MX4 -2 EXTRACT *R* AND *C* BITS
  7948. SB4 X1 TASK FL
  7949. BX7 X5 SAVE REQUEST WORD
  7950. SA3 B7 FWA OF SUBCP TABLE
  7951. GE B3,B4,TERR2 IF ADDRESS GREATER THAN FL
  7952. LX5 -18
  7953. LE B3,B1,TERR2 IF ADDRESS OUT OF RANGE
  7954. SA2 B5+B3 READ STATUS WORD
  7955. AX2 2
  7956. BX4 -X4*X2
  7957. SB6 X5-1 REQUEST TYPE
  7958. ZR B6,TERR33 IF REQUEST EXTENDED MEMORY
  7959. GT B6,B1,TERR33 IF REQUEST EXTENDED MEMORY
  7960. SB6 X4-1
  7961. LX4 59-0
  7962. LX3 59-SCCMS
  7963. SA7 MEMB SAVE REQUEST WORD
  7964. LT B6,B1,MEM1 IF NOT TO CLEAR CMM FLAG
  7965. EQ B6,B1,TERR34 IF NOT A CMM TYPE REQUEST
  7966. PL X3,TERR34 IF CMM FLAG NOT SET ON CLEAR
  7967. EQ MEM3 CLEAR CMM STATUS
  7968.  
  7969. MEM1 NZ B6,MEM2 IF CMM FIELD IS 0
  7970. MX6 1 SET CMM STATUS FLAG
  7971. BX6 X6+X3
  7972. LX6 SCCMS-59
  7973. SA6 A3
  7974. EQ MEM4 CONTINUE MEMORY REQUEST
  7975.  
  7976. * CHECK NON-CMM REQUEST.
  7977.  
  7978. MEM2 PL X3,MEM4 IF NOT IN CMM STEP
  7979. BX4 X2
  7980. AX4 28 GET FL REQUEST
  7981. SX3 X4+
  7982. NG X3,MEM4 IF ENQUIRE FOR MFL
  7983. ZR X3,MEM4 IF ENQUIRE FOR CURRENT FL
  7984. EQ TERR34 SET MEMORY REQUEST IN CMM STATUS
  7985.  
  7986. * CLEAR CMM STATUS.
  7987.  
  7988. MEM3 MX6 -59 CLEAR CMM STATUS FLAG
  7989. BX6 -X6*X3
  7990. LX6 SCCMS-59
  7991. SA6 A3
  7992. MEM4 AX2 28
  7993. SA4 B7+SCNMW GET TASK ID
  7994. MX3 -SCNMN
  7995. SX2 X2 REQUEST FL
  7996. LX4 SCNMN-SCNMS-1
  7997. BX7 -X3*X4
  7998. IX0 X2-X1 AMOUNT OF INCREASE
  7999. TA4 X7,VTLD WORD 2 OF TLD ENTRY
  8000. MX6 -TLFLN
  8001. LX4 TLFLN-TLFLS-1
  8002. BX7 -X6*X4
  8003. LX4 TLEFN-TLEFS-1-TLFLN+TLFLS+1
  8004. BX3 -X6*X4 EXPANDABLE FL
  8005. IX7 X3+X7 MAXIMUM FL
  8006. SX6 B1
  8007. LX7 6
  8008. ZR X0,MEM5 IF ENQUIRE FL
  8009.  
  8010. * RETURN MAXIMUM FL.
  8011.  
  8012. PL X2,MEM5 IF NOT MFL REQUEST
  8013. LX7 30
  8014. BX7 X6+X7
  8015. SA7 B5+B3 RETURN MFL
  8016. EQ TSSC RETURN
  8017.  
  8018. * RETURN CURRENT FL.
  8019.  
  8020. MEM5 SX3 X2 REQUEST FL
  8021. LX1 30 RETURN CURRENT FL
  8022. BX6 X1+X6 SET COMPLETION FLAG
  8023. SA6 B5+B3
  8024. ZR X2,TSSC IF ENQUIRE FL
  8025. SX6 B1
  8026. LX1 30 CURRENT FL
  8027.  
  8028. * CHECK FOR OUTSTANDING DATA MANAGER REQUESTS.
  8029.  
  8030. MEM6 SA4 B2+CB1C C.B. HEADER WORD
  8031. SB6 X4+
  8032. NZ B6,TERR37 IF DATA MANAGER REQUEST OUTSTANDING
  8033.  
  8034. * SEARCH FOR FREE SPACE.
  8035.  
  8036. IX4 X7-X3
  8037. LX3 30
  8038. SB6 TERR35 ERROR CODE FOR RFL EXCEED MFL
  8039. IX2 X2-X1 CHECK IF REQUEST .LT. TASK FL
  8040. BX6 X6+X3
  8041. NG X4,MEM19 IF REQUESTED FL .GT. MFL
  8042. NG X2,MEM16 IF REDUCE FL
  8043. SX0 X2 AMOUNT OF INCREASE
  8044. SA6 B5+B3 RETURN FL REQUEST
  8045. SA3 AVAILCM SPACE CURRENTLY AVAILABLE
  8046. SX6 B3 SAVE PARAMETERS
  8047. LX0 18
  8048. LX6 -18
  8049. BX6 X1+X6 ADD CURRENT FL
  8050. BX6 X0+X6
  8051. SA6 MEMA
  8052. IX7 X3-X2
  8053. PL X7,MEM7 IF SPACE AVAILABLE
  8054. RJ RMF REQUEST MORE MEMORY
  8055. ZR X5,MEM12 IF MEMORY NOT AVAILABLE
  8056. SA1 MEMA
  8057. LX1 -18
  8058. SX2 X1 REQUESTED FL INCREASE
  8059.  
  8060. * TRY FL AFTER SUBCP.
  8061.  
  8062. MEM7 SA4 B7 GET FREE SPACE AFTER SUBCP
  8063. LX4 SCFCN-SCFCS-1
  8064. SX0 X4 AVAILABLE FL
  8065. IX7 X0-X2
  8066. PL X7,MEM14 IF FL AVAILABLE
  8067.  
  8068. * TRY NEXT SUBCP.
  8069.  
  8070. SA2 B7+2 GET NEXT SUBCP
  8071. BX0 -X7 SPACE REQUIRED
  8072. SX2 X2
  8073. RJ SFS SEARCH FOR FREE SPACE AFTER SUBCP
  8074. SB3 X7+B1
  8075. SA1 MEMA
  8076. SX3 X1 TASK FL
  8077. NG B3,MEM8 IF NO FL AVAILABLE
  8078. IX7 X6-X3
  8079. SA0 B7 ACTIVE SUBCP
  8080. PL X7,MEM8 IF MORE MEMORY TO MOVE
  8081. RJ MTD MOVE TASK TOWARD HIGH MEMORY LOCATION
  8082. EQ MEM14 CLEAR ASSIGNED AREA
  8083.  
  8084. * TRY PREVIOUS SUBCP FREE SPACE.
  8085.  
  8086. MEM8 SA4 B7+SCLSW LAST SUBCP
  8087. LX4 SCLSN-SCLSS-1
  8088. LX1 -18
  8089. SB5 X1 REQUEST INCREASE FL
  8090. SA2 X4 FWA OF LAST SUBCP TABLE
  8091. SA1 B7 FWA OF CURRENT SUBCP
  8092. LX2 SCFCN-SCFCS-1
  8093. LX1 SCFCN-SCFCS-1
  8094. SB3 X2
  8095. SB3 X1+B3 TOTAL FREE SPACE AVAILABLE IF STORAGE MOVE
  8096. LT B3,B5,MEM9 IF NOT ENOUGH FL AFTER LAST SUBCP
  8097. SB4 B7
  8098. SX4 X2 FREE SPACE
  8099. SB6 B0
  8100. LX2 SCFCS-SCFCN+1
  8101. RJ MTK MOVE TASK TOWARD LOW MEMORY LOCATION
  8102. EQ MEM14 CLEAR ASSIGN AREA
  8103.  
  8104. * TRY SOMEWHERE ELSE.
  8105.  
  8106. MEM9 SX0 X3+B5 TOTAL FL REQUIRED
  8107. RJ RCP LOOKING FOR NEW SUBCP
  8108. ZR X5,MEM12 IF NO SPACE AVAILABLE
  8109. MX0 6 UPDATE NEW SUBCP TABLE
  8110. SA1 B7 FIRST WORD
  8111. SA2 B4
  8112. BX6 X0*X1
  8113. BX6 X6+X2
  8114. SA6 A2 NEW FIRST WORD
  8115. SA2 B7+B1 WORD 2 OF SUBCP TABLE
  8116. SX7 X2 GET CC FIELD IN WORD 2
  8117. SA3 A2+B1 WORD 3 OF SUBCP TABLE
  8118. SB3 B4-B7 GET DIFFERENT
  8119. MX0 60-18 CLEAR CC FIELD
  8120. SX7 X7+B3
  8121. BX2 X0*X2 CLEAR CC FIELD
  8122. BX7 X2+X7 ADD NEW CC FIELD
  8123. SA7 B4+B1 NEW WORD 2 OF SUBCP TABLE
  8124. MX0 12
  8125. SA4 A7+B1 GET LS AND NS FIELD
  8126. BX6 X0*X3 GET TASK ID
  8127. BX6 X4+X6
  8128. SA6 A4 NEW WORD 3 OF SUBCP TABLE
  8129. SB6 B4
  8130. SB4 B7
  8131. SA0 B6+ NEW ACTIVE SUBCP
  8132. SB3 5
  8133. MEM10 SA3 A3+B1 MOVE WORD 4 TO 8
  8134. BX6 X3
  8135. SB3 B3-B1
  8136. SA6 A6+B1
  8137. NZ B3,MEM10 IF NOT YET FINISHED
  8138. SB3 MEM11 RETURN ADDRESS
  8139. SX4 X5 FWA OF SUBCP AREA
  8140. EQ RCPU REQUEST CPU ON NEW SUBCP
  8141.  
  8142. MEM11 SB6 X5 DESTINATION TO MOVE
  8143. BX4 X4-X4
  8144. RJ MTK MOVE TASK TO ASSIGN AREA
  8145. SB3 MEM14 RETURN ADDRESS AFTER RELEASING SUBCP
  8146. SB6 B4 SUBCP TO RELEASE
  8147. SB7 A0 ACTIVE SUBCP
  8148. MX6 1 SET FLAG - NOT TO UPDATE FL IN SUBCP TABLE
  8149. SA3 MEMA
  8150. LX6 41-59
  8151. BX6 X3+X6
  8152. SA6 A3
  8153. EQ ESCP1 RELEASE CURRENT SUBCP
  8154.  
  8155. * SINCE NO SPACE IS AVAILABLE, PUT TASK INTO RECALL
  8156. * OR ROLLOUT IT OUT OF MEMORY.
  8157.  
  8158. MEM12 SA4 B7+B1 CM RESIDENT TASK WORD IN SUBCP TABLE
  8159. SA1 MEMA RESTORE PARAMETERS
  8160. LX4 59-57
  8161. BX6 X1
  8162. SX7 MEM13 RETURN ADDRESS AFTER RECALL
  8163. SA6 B2+RCLA SAVE PARAMETERS
  8164. NG X4,TRCL2 IF CM RESIDENT TASK
  8165. RJ FFR RESERVE ROLLOUT TABLE
  8166. ZR X0,TRCL2 IF ROLLOUT TABLE FULL
  8167. SB4 EVRL MEMORY REQUEST EVENT
  8168. SX2 X1 TASK FL
  8169. LX1 -18 REQUESTED FL INCREASE
  8170. SX3 X1
  8171. IX2 X2+X3
  8172. SA4 LTIME CURRENT TIME
  8173. AX4 36
  8174. MX7 -18
  8175. BX4 -X7*X4
  8176. SX4 X4+DRLTL ROLLOUT TASK FOR *DRLTL* SECOND
  8177. SX3 13B SET TIMED ROLLOUT FLAG
  8178. LX3 54
  8179. LX4 30
  8180. BX1 X3+X4
  8181. PX6 B4,X2 ROLLOUT EVENT - FL
  8182. SA6 MEMC
  8183. BX5 X5-X5 NO DELAY REQUIRED
  8184. EQ ROL3 ROLLOUT TASK
  8185.  
  8186. * PROCESS RETURN FROM RECALL.
  8187.  
  8188. MEM13 SA1 B2+RCLA
  8189. BX6 X1 SAVE PARAMETERS
  8190. LX1 -18
  8191. SX2 X1 REQUESTED FL INCREASE
  8192. SA4 AVAILCM AVAILABLE SPACE
  8193. LX1 -24
  8194. SB3 X1
  8195. IX7 X2-X4
  8196. NG X7,TRCL IF SPACE STILL IS NOT AVAILABLE
  8197. SA0 B7+ SAVE (B7)
  8198. SA6 MEMA
  8199. EQ MEM7 TRY AGAIN
  8200.  
  8201. * CLEAR ASSIGNED AREA.
  8202.  
  8203. MEM14 SB7 A0 RESTORE B2 AND B7
  8204. SA2 A0 FWA OF SUBCP TABLE
  8205. SB2 X2-NUAPL
  8206. SX1 B2 RESTORE *SREG*
  8207. SX7 B7
  8208. LX1 18
  8209. BX7 X1+X7
  8210. SA7 SREG
  8211. SA1 MEMA
  8212. BX5 X1
  8213. SX3 X1
  8214. LX1 -18
  8215. SX2 X1 REQUEST INCREASE FL
  8216. IX7 X2+X3 FL AFTER REQUEST
  8217. LX1 59-0
  8218. SB4 X7-1
  8219. BX7 X7-X7
  8220. BX6 X6-X6
  8221. SB5 B2+NUAPL TASK SYSTEM REQUEST
  8222. SB3 2
  8223. SB6 B5+X3 FWA OF REQUEST FL
  8224. SB4 B4+B5 LWA OF TASK
  8225. MEM15 SA6 B6+
  8226. SA7 B6+B1
  8227. SB6 B6+B3
  8228. LT B6,B4,MEM15 IF NOT YET FINISHED
  8229. LX5 59-41
  8230. PL X1,MEM16 IF EVEN FL REQUEST
  8231. SA7 A7+1
  8232. MEM16 SA1 B7 FWA OF SUBCP TABLE
  8233. LX1 SCFLN-SCFLS-1
  8234. SX3 X1 CURRENT FL
  8235. IX4 X3+X2 UPDATE FL
  8236. NG X5,MEM18 IF NOT TO UPDATE FL IN SUBCP TABLE
  8237. SB6 TERR36 ERROR CODE FOR INCORRECT REDUCE FL
  8238. SX5 X4-CMBL-111B
  8239. NG X5,MEM19 IF INCORRECT REDUCTION OF FL
  8240. MX0 60-SCFLN UPDATE FL IN SUBCP TABLE
  8241. BX5 X0*X1
  8242. BX7 X4+X5
  8243. LX7 SCFCN-SCFCS-1+SCFLS-SCFLN+1
  8244. BX6 -X0*X7 FL AVAILABLE AFTER TASK
  8245. IX3 X6-X2
  8246. BX6 X0*X7
  8247. NG X3,MEM17 IF NO AVAILABLE FL AFTER TASK
  8248. BX6 X3+X6
  8249. MEM17 LX6 SCFCS-SCFCN+1
  8250. SA6 B7
  8251. SA4 AVAILCM UPDATE TOTAL AVAILABLE CM
  8252. IX7 X4-X2
  8253. SA7 A4
  8254. MEM18 MX7 -36 UPDATE FL IN EXCHANGE PACKAGE
  8255. SA1 B2+2
  8256. SA2 B7
  8257. BX7 -X7*X1 CLEAR OLD FL
  8258. LX2 SCFLN-SCFLS-1 GET CURRENT FL
  8259. SX6 X2
  8260. LX6 36
  8261. BX7 X6+X7
  8262. SA7 A1
  8263. RJ RKP RESTORE K-DISPLAY POINTER
  8264. EQ TSSC RETURN
  8265.  
  8266. MEM19 SA1 MEMB LAST SYSTEM REQUEST
  8267. LX1 59-19
  8268. NG X1,TSSC IF NOT TO ABORT TASK
  8269. JP B6 ABORT TASK
  8270.  
  8271. MEMA BSSZ 1 18/ADDR,1/F,5/0,18/FL INCREASE,18/TASK FL
  8272. MEMB BSSZ 1 REQUEST WORD
  8273. MSG SPACE 4,20
  8274. ** MSG - PLACE MESSAGE ON LINE ONE OF CONSOLE *B-DISPLAY*.
  8275. *
  8276. * ENTRY (X1) = TASK FIELD LENGTH.
  8277. * (X5) = 24/3LMSG,12/FNC,6/ ,18/ADDR.
  8278. * WHERE ADDR = ADDRESS OF MESSAGE TO DISPLAY.
  8279. * ALTERNATE FORM.
  8280. * (ADDR) = 12/0,18/ADDR1,30/0.
  8281. * ADDR1 = ADDRESS OF MESSAGE TO BE DISPLAYED.
  8282. * FNC = *MSG* FUNCTION CODE.
  8283. * VALUES PERMITTED FOR FNC ARE ZERO AND ONE.
  8284. * (B2) = FWA OF TASK SYSTEM AREA.
  8285. * (B5) = TASK RA.
  8286. * (B7) = FWA OF TASK SUBCONTROL POINT TABLE.
  8287. *
  8288. * EXIT TO *TSSC* IF NO ERRORS.
  8289. * TO *TERR3* IF FUNCTION CODE ERROR.
  8290. *
  8291. * USES A - 2.
  8292. * X - 0, 2, 5, 6.
  8293. * B - 3, 4, 6.
  8294. *
  8295. * CALLS PMA.
  8296. *
  8297. * MACROS MESSAGE.
  8298.  
  8299.  
  8300. MSG RJ PMA PROCESS MESSAGE ADDRESS
  8301. LX0 -1
  8302. SB3 X0
  8303. SX3 B3-MSGJTL
  8304. PL X3,TERR3 IF INCORRECT FUNCTION CODE
  8305. JP B3+MSGJT JUMP TO PROCESSOR
  8306.  
  8307. MSGJT PL X0,MSG3 JOURNAL MESSAGE
  8308. EQ MSG6 DISPLAY MESSAGE ON LINE ONE
  8309.  
  8310. MSGJTL EQU *-MSGJT LENGTH OF *MSGJT* JUMP TABLE
  8311.  
  8312. * SEND MESSAGE TO JOUR0 FILE.
  8313.  
  8314. MSG3 SA2 B5+B6 FWA OF MESSAGE
  8315. MX6 12
  8316. SB3 B0+ BIT COUNT
  8317. SX0 B1+ WORD COUNT
  8318. SB4 60 WORD SIZE
  8319.  
  8320. * CHECK WORD FOR ZERO BYTE.
  8321.  
  8322. MSG4 BX3 X6*X2
  8323. ZR X3,MSG5 IF END OF MESSAGE
  8324. LX6 12 SHIFT TO CHECK NEXT BYTE
  8325. SB3 B3+12 INCREMENT BIT COUNT
  8326. NE B4,B3,MSG4 IF NOT DONE WITH WORD
  8327. SX0 X0+B1 INCREMENT WORD COUNT
  8328. SA2 A2+B1 GET NEXT WORD OF MESSAGE
  8329. SB4 A2 CHECK FOR MAXIMUM LENGTH
  8330. SB3 B5+B6
  8331. SB3 B3+7
  8332. GT B4,B3,MSG5 IF MORE THAN 80 CHARACTERS
  8333. SB3 B0+
  8334. SB4 60
  8335. EQ MSG4 CHECK NEXT WORD
  8336.  
  8337. * SET UP JOURNAL CALL.
  8338.  
  8339. MSG5 SX5 B5+B6 GET MESSAGE ADDRESS WITH RESPECT TO TAF
  8340. LX0 18
  8341. BX5 X0+X5
  8342. SB4 12B SET ORIGIN CODE
  8343. SB3 TSSC RETURN ADDRESS
  8344. SB5 JOUR0 FET FOR JOURNAL ENTRY
  8345. SA2 B2+CB2C
  8346. SX0 X2+
  8347. EQ JRNL JOURNAL MESSAGE
  8348.  
  8349. * DISPLAY MESSAGE ON LINE-1.
  8350.  
  8351. MSG6 MESSAGE B5+B6,1
  8352. EQ TSSC ENTER SWITCHING LOOP
  8353. PMA SPACE 4,20
  8354. ** PMA - PROCESS MESSAGE ADDRESS.
  8355. *
  8356. * ENTRY (X1) = TASK FIELD LENGTH.
  8357. * (X5) = 24/3LTMS OR MSG,12/FNC,6/ ,18/ADDR.
  8358. * WHERE ADDR = ADDRESS OF MESSAGE TO DISPLAY.
  8359. * ALTERNATE FORM.
  8360. * (ADDR) = 12/0,18/ADDR1,30/0.
  8361. * ADDR1 = ADDRESS OF MESSAGE TO BE DISPLAYED.
  8362. * FNC = *TMS* OR *MSG* FUNCTION CODE.
  8363. * (B2) = FWA OF TASK SYSTEM AREA.
  8364. * (B5) = TASK RA.
  8365. * (B7) = FWA OF TASK SUBCONTROL POINT TABLE.
  8366. *
  8367. * EXIT (X0) = FUNCTION CODE.
  8368. * (B5) = TASK RA.
  8369. * (B6) = ADDRESS OF MESSAGE.
  8370. *
  8371. * USES A - 2.
  8372. * X - 0, 2, 3, 5, 6, 7.
  8373. * B - 3, 4, 6.
  8374.  
  8375.  
  8376. PMA SUBR ENTRY/EXIT
  8377. MX3 -12
  8378. SB6 X5 ADDRESS OF MESSAGE
  8379. LX5 11-35
  8380. BX0 -X3*X5 (X0) = *MSG* FUNCTION CODE
  8381. LE B6,B1,TERR2 IF ADDRESS .LE. 1
  8382. SB3 X1
  8383. MX6 12
  8384. GE B6,B3,TERR2 IF ADDRESS .GE. FL
  8385. SA2 B5+B6 READ FWA OF MESSAGE
  8386. BX7 X6*X2
  8387. ZR X2,PMA1 IF NULL MESSAGE
  8388. NZ X7,PMA1 IF MESSAGE PRESENT
  8389.  
  8390. * CONVERT INDIRECT ADDRESS FORM OF
  8391. * *MSG* REQUEST TO DIRECT ADDRESS FORM.
  8392.  
  8393. AX2 47-17
  8394. SB6 X2 FWA OF MESSAGE
  8395. LE B6,B1,TERR2 IF ADDRESS .LE. 1
  8396. PMA1 SB4 B6+5
  8397. GT B4,B3,TERR13 IF ADDRESS+5 .GT. FL
  8398. EQ PMAX RETURN
  8399. MEMC VFD 60/0LMEMFL ROLLOUT EVENT - FL
  8400. RFL SPACE 4,25
  8401. ** RFL - REQUEST FIELD LENGTH.
  8402. *
  8403. * ENTRY (X1) = TASK FIELD LENGTH.
  8404. * (B2) = FWA OF TASK SYSTEM AREA.
  8405. * (B7) = FWA OF TASK SUBCP TABLE.
  8406. * (B5) = TASK RA.
  8407. * (X5) = 18/3ARFL,6/,18/ADDR,1/N,17/FL.
  8408. * ADDR = STATUS RESPONSE ADDRESS.
  8409. * N = NO REDUCE OVERRIDE.
  8410. * FL = FIELD LENGTH REQUIRED.
  8411. *
  8412. * EXIT TO *TERR34* IF INCORRECT REQUEST.
  8413. * TO *MEM* IF NO ERROR.
  8414. * (ADDR) = 12/0,18/FL,30/1.
  8415. * IF FL = 0, THE CURRENT FL WILL BE RETURNED.
  8416. *
  8417. * USES A - 3, 7.
  8418. * B - 3, 4.
  8419. * X - 3, 5, 6, 7.
  8420. *
  8421. * CALLS MEM.
  8422.  
  8423.  
  8424. RFL MX6 -17 EXTRACT FL
  8425. BX7 -X6*X5
  8426. SA3 B7 CHECK CMM STATUS
  8427. AX5 18
  8428. LX3 59-SCCMS
  8429. SB3 X5 SET STATUS ADDRESS
  8430. LX7 30
  8431. SB4 X1
  8432. NG X3,TERR34 IF CMM STATUS SET
  8433. GT B3,B4,TERR2 IF ADDRESS GREATER THAN FL
  8434. LE B3,B1,TERR2 IF ADDRESS OUT OF RANGE
  8435. SA7 B5+B3
  8436. SX5 X5 REQUEST FL
  8437. EQ MEM REQUEST MEMORY
  8438. TIM SPACE 4,10
  8439. *** *TIM*.
  8440. * REQUEST SYSTEM TIME.
  8441. *
  8442. *T 18/ *TIM*,6/,12/ OP,6/,18/ ADDR
  8443. * OP TIME OPTION
  8444. * ADDR ADDRESS FOR RESPONSE
  8445. *
  8446. *
  8447. * OP RESPONSE
  8448. *
  8449. * 0 ACCUMULATED CPU TIME
  8450. *T ADDR 3/2,45/ SECONDS,12/ MILISEC.
  8451. *
  8452. * 1 DATE
  8453. *T ADDR 60/ * YY/MM/DD.*
  8454. *
  8455. * 2 CLOCK
  8456. *T ADDR 60/ * HH.MM.SS.*
  8457. *
  8458. * 3 JULIAN DATE
  8459. *T ADDR 24/ 0,36/ * YYDDD*
  8460. *
  8461. * 4 SCOPE FORMAT REAL TIME (NOT SUPPORTED)
  8462. *T ADDR 3/2,45/ SECONDS,12/ MILISEC.
  8463. *
  8464. * 5 REAL TIME
  8465. *T ADDR 24/ SECONDS,36/ MILLISECONDS
  8466. *
  8467. * 6 PACKED DATE/TIME
  8468. *T ADDR 24/ 0,6/ Y-70,6/ MM,6/ DD,6/ HH,6/ MM,6/ SS
  8469.  
  8470.  
  8471. TIM MX3 -12
  8472. SB4 X5 ADDRESS FOR REPLY
  8473. LX5 -24
  8474. SB4 -B4
  8475. BX0 -X3*X5 FUNCTION CODE
  8476. PL B4,TERR2 IF ADDRESS OUT OF BOUNDS
  8477. LX0 -1
  8478. SX7 X1+B4
  8479. SB3 X0
  8480. NG X7,TERR2 IF ADDRESS OUT OF BOUNDS
  8481. SX3 B3-TIMJTL
  8482. PL X3,TERR3 IF INCORRECT FUNCTION CODE
  8483. JP B3+TIMJT JUMP TO FUNCTION PROCESSOR
  8484.  
  8485. TIMJT PL X0,TIM1 TIME
  8486. EQ TIM2 DATE
  8487. PL X0,TIM3 CLOCK
  8488. EQ TIM4 JULIAN DATE
  8489. PL X0,TERR3 SCOPE FORMAT REAL TIME(NOT SUPPORTED)
  8490. EQ TIM5 REAL TIME
  8491. PL X0,TIM6 PACKED DATE/TIME
  8492. EQ TERR3 NOT USED
  8493. TIMJTL EQU *-TIMJT LENGTH OF TIM JUMP TABLE
  8494.  
  8495. * TIME
  8496.  
  8497. TIM1 TIME B5-B4
  8498. EQ TSSC ENTER SWITCHING LOOP
  8499.  
  8500. * DATE
  8501.  
  8502. TIM2 DATE B5-B4
  8503. EQ TSSC ENTER SWITCHING LOOP
  8504.  
  8505. * CLOCK
  8506.  
  8507. TIM3 CLOCK B5-B4
  8508. EQ TSSC ENTER SWITCHING LOOP
  8509.  
  8510. * JULIAN DATE
  8511.  
  8512. TIM4 JDATE B5-B4
  8513. EQ TSSC ENTER SWITCHING LOOP
  8514.  
  8515. * RTIME
  8516.  
  8517. TIM5 RTIME B5-B4
  8518. EQ TSSC ENTER SWITCHING LOOP
  8519.  
  8520. * PACKED DATE/TIME
  8521.  
  8522. TIM6 SA2 PDATE
  8523. BX6 X2
  8524. SA6 B5-B4
  8525. EQ TSSC ENTER SWITCHING LOOP
  8526. TMS SPACE 4,20
  8527. ** TMS - TAF MESSAGE TO DAYFILE.
  8528. *
  8529. * ENTRY (X1) = TASK FIELD LENGTH.
  8530. * (X5) = 24/3LTMS,12/FNC,6/ ,18/ADDR.
  8531. * WHERE ADDR = ADDRESS OF MESSAGE TO DISPLAY.
  8532. * ALTERNATE FORM.
  8533. * (ADDR) = 12/0,18/ADDR1,30/0.
  8534. * ADDR1 = ADDRESS OF MESSAGE TO BE DISPLAYED.
  8535. * FNC = *TMS*FUNCTION CODE.
  8536. * ONLY FNC = ZERO IS ALLOWED.
  8537. * (B2) = FWA OF TASK SYSTEM AREA.
  8538. * (B5) = TASK RA.
  8539. * (B7) = FWA OF TASK SUBCONTROL POINT TABLE.
  8540. *
  8541. * EXIT TO *TSSC* IF NO ERRORS.
  8542. * TO *TERR3* IF FUNCTION CODE ERROR.
  8543. *
  8544. * USES X - 0, 3.
  8545. * B - 3.
  8546. *
  8547. * CALLS PMA, VTO.
  8548. *
  8549. * MACROS MESSAGE.
  8550.  
  8551.  
  8552. TMS RJ VTO VERIFY TASK ORIGIN
  8553. NG X6,TERR11 IF TASK NOT VALIDATED FOR REQUEST
  8554. RJ PMA PROCESS MESSAGE ADDRESS
  8555. LX0 -1
  8556. SB3 X0
  8557. SX3 B3-TMSJTL
  8558. PL X3,TERR3 IF INCORRECT FUNCTION CODE
  8559. JP B3+TMSJT JUMP TO PROCESSOR
  8560.  
  8561. TMSJT PL X0,TMS1 IF FUNCTION CODE ZERO
  8562. EQ TERR3 IF INCORRECT FUNCTION CODE
  8563.  
  8564. TMSJTL EQU *-TMSJT LENGTH OF *TMSJT* JUMP TABLE
  8565.  
  8566. * PLACE MESSAGE IN THE USER AND SYSTEM DAYFILE AND
  8567. * ALSO DISPLAY IT AT LINE 1 OF THE CONTROL POINT.
  8568.  
  8569. TMS1 MESSAGE B5+B6,0
  8570. EQ TSSC ENTER SWITCHING LOOP
  8571. TITLE *REC* SYSTEM REQUEST PROCESSOR.
  8572. RFP SPACE 4,15
  8573. ** RFP - RECOVERY FUNCTION PROCESSORS.
  8574. *
  8575. * RFP SY,FC,MP,RP,PR
  8576. *
  8577. * ENTRY *SY* = IF *SYSTEM* SPECIFIED, REQUEST IS
  8578. * RESTRICTED TO SYSTEM TASKS.
  8579. * *FC* = FUNCTION CODE FOR RECOVERY REQUEST.
  8580. * *MP* = MAXIMUM PARAMETERS FOR REQUEST.
  8581. * *RP* = REQUIRED PARAMETERS FOR REQUEST.
  8582. * *PR* = PROCESSING ROUTINE FOR REQUEST.
  8583. *
  8584. * EXIT REMOTE CODE *CRFP*.
  8585.  
  8586.  
  8587. PURGMAC RFP
  8588.  
  8589. RFP MACRO SY,FC,MP,RP,PR
  8590. LOCAL A
  8591. MACREF RFP
  8592. .A IFC EQ,*SY*SYSTEM*
  8593. A SET 1
  8594. .A ELSE
  8595. A SET 0
  8596. .A ENDIF
  8597. CRFP RMT
  8598. ORG CRFC+FC
  8599. VFD 1/A,23/0,6/MP,6/RP,6/0,18/PR
  8600. CRFP RMT
  8601. RFP ENDM
  8602.  
  8603. SPACE 4,10
  8604. CRFC BSS 0 TABLE OF RECOVERY FUNCTION CODES
  8605.  
  8606. RFP SYSTEM,RFCA,0,0,CIL *CALLTRN* INPUT LOGGING
  8607. RFP USER,RFRE,TREPL,TRERL,RUN *RERUN*
  8608. RFP USER,RFRG,TRGPL,TRGRL,GET *RGET*
  8609. RFP USER,RFRP,TRGPL,TRGRL,PUT *RPUT*
  8610. RFP USER,RFRS,TSEPL,TRSEL,RSE *RSECURE*
  8611. RFP USER,RFSE,TSEPL,TSERL,SEC *SECURE*
  8612. RFP SYSTEM,RFSR,TSRPL,TSRRL,SRE *SRERUN*
  8613. RFP SYSTEM,RFTI,TTIPL,TTIRL,TIN *TINVOKE*
  8614. CRFP HERE
  8615. RRP SPACE 4,20
  8616. ** RRP - *REC* SYSTEM REQUEST PROCESSOR.
  8617. *
  8618. * ENTRY (X1) = SUBCP FL.
  8619. * (X5) = SYSTEM REQUEST.
  8620. * (B2) = FWA OF TASK SYSTEM AREA.
  8621. * (B5) = SUBCP RA.
  8622. * (B7) = FWA OF SUBCP TABLE ENTRY.
  8623. *
  8624. * EXIT TO *TSSC*, IF RECOVERY NOT INSTALLED.
  8625. * TO *TERR2*, IF INCORRECT PARAMETER LIST.
  8626. * TO *TERR3*, IF INCORRECT FUNCTION.
  8627. * TO *TERR11*, IF TASK NOT VALIDATED FOR REQUEST.
  8628. * TO *RFB*, IF PROCESSING OF REQUEST SHOULD CONTINUE.
  8629. *
  8630. * CALLS DCPT, VTO, VUP.
  8631. *
  8632. * USES X - ALL.
  8633. * A - 1, 2, 4.
  8634. * B - 2, 3, 5, 6.
  8635.  
  8636.  
  8637. RRP LX5 17-35 RIGHT JUSTIFY FUNCTION CODE
  8638. MX0 -6
  8639.  
  8640. * IF ANY OF THE FOLLOWING ERRORS OCCUR THE TASK IS ABORTED -
  8641. *
  8642. * 1. INCORRECT FUNCTION
  8643. * 2. INCORRECT NUMBER OF PARAMETERS
  8644. * 3. PARAMETERS OUTSIDE RA AND FL
  8645. * 4. INCORRECT FUNCTION FOR TASK ORIGIN
  8646.  
  8647. SX6 X5-TRECL
  8648. PL X6,TERR3 IF FUNCTION NOT IN TABLE, ABORT TASK
  8649. SX6 X5-RFCA
  8650. ZR X6,TERR3 IF *CALLTRN* FUNCTION, ABORT TASK
  8651. SA2 X5+CRFC REQUEST SPECIFICATIONS
  8652. AX2 24 REQUIRED NUMBER OF PARAMETERS
  8653. BX6 -X0*X2
  8654. SB6 X6
  8655. AX2 6 MAXIMUM NUMBER OF PARAMETERS
  8656. BX3 -X0*X2
  8657. SB3 X3+
  8658. LX5 59-59-17+35
  8659. RJ VUP VALIDATE USER PARAMETERS
  8660. SB6 B2+ NUMBER OF PARAMETERS PRESENT
  8661. SB2 B5-NUAPL SET TO TASK SYSTEM AREA
  8662. NZ X6,TERR2 IF INCORRECT PARAMETERS
  8663. RJ VTO FIND TASK ORIGIN
  8664. LX5 17-35 RIGHT JUSTIFY FUNCTION
  8665. SA1 X5+CRFC TASK ORIGIN ATTRIBUTE FOR REQUEST
  8666. PL X1,RRP1 IF REQUEST MAY BE USED BY ANY TASK
  8667. NG X6,TERR11 IF TASK NOT VALIDATED FOR REQUEST
  8668. RRP1 SX3 X5 FUNCTION
  8669. LX5 59-59-17+35
  8670. SX0 X3-RFSR
  8671. ZR X0,RRP3 IF *SRERUN* FUNCTION
  8672.  
  8673. * DROP CPU FOR SUBCP. THE CPU WILL BE REQUESTED FOR SUBCP
  8674. * WHEN THE RECOVERY FUNCTION COMPLETES.
  8675.  
  8676. RRP2 SB5 B7 SAVE FWA OF SUBCP TABLE ENTRY
  8677. RJ DCPT DROP CPU FOR TASK
  8678. TX6 B5+CPAL,-VCPA COMPUTE SUBCP
  8679. AX6 SCPAL
  8680. MX3 -CBTON
  8681. SA1 B5+SCRAW TASK RA
  8682. SB5 X1+
  8683. ERRNZ SCRAS-17 IF RA NOT IN BITS 0-17
  8684. SA4 B5-NUAPL+CB2C TERMINAL ORDINAL
  8685. LX4 CBTON-1-CBTOS RIGHT JUSTIFY TERMINAL ORDINAL
  8686. BX7 -X3*X4
  8687. SB3 RCL FWA TO QUEUE WORK FOR TASK
  8688. SA5 B5-NUAPL+LRA1 RA REQUEST
  8689. EQ RFB RECOVERY FUNCTION BEGIN PROCESSING
  8690.  
  8691. * IF *SRERUN* SPECIFIES USERNAME AND TASK NOT ON SYSTEM LIBRARY
  8692. * ABORT TASK.
  8693.  
  8694. RRP3 PL X6,RRP2 IF REQUEST FROM SYSTEM TASK
  8695. GT B6,B1,TERR11 IF USERNAME SPECIFIED
  8696. ERRNZ SRUS-1 USERNAME NOT SECOND PARAMETER
  8697. EQ RRP2 DROP CPU FOR TASK
  8698.  
  8699. RTI SPACE 4,20
  8700. ** RTI - RECOVER TERMINAL INPUT.
  8701. *
  8702. * ENTRY (B3) = FWA OF FIRST COMMUNICATION BLOCK.
  8703. * (CBTR) = 1, IF TRANSACTION RESTARTED.
  8704. * (CBRT) = 1, IF TRANSACTION RECOVERABLE, OTHERWIZE 0.
  8705. * (TSNR) = 0, IF NON RECOVERABLE TRANSACTION RUN.
  8706. * (CBTA) = FWA OF TERMINAL IN *TST*.
  8707. * (CBTO) = TERMINAL ORDINAL IN *TST*.
  8708. *
  8709. * EXIT (CBLC) = 1, IF RECOVERY PROCESSING COMPLETE.
  8710. *
  8711. * USES X - 1, 2, 3, 4, 5, 6, 7.
  8712. * A - 1, 3, 4, 6, 7.
  8713. * B - 3, 4.
  8714. *
  8715. * CALLS QTW.
  8716.  
  8717.  
  8718. .A IFGE IPTAR,1
  8719. RTI SUBR ENTRY/EXIT
  8720.  
  8721. * IF TRANSACTION IS BEING RESTARTED DO NOT LOG INPUT
  8722. * TO RECOVERY FILE.
  8723.  
  8724. SA1 B3+CBTRW TRANSACTION RESTART
  8725. BX2 X1
  8726. LX1 59-CBTRS
  8727. NG X1,RTI3 IF RESTARTED
  8728. ERRNZ CBTRW-CBRTW IF FIELDS IN DIFFERENT WORDS
  8729. LX1 59-CBRTS-59+CBTRS
  8730. PL X1,RTI2 IF NON-RECOVERABLE
  8731.  
  8732. * QUEUE TERMINAL LOGGING FOR LATER PROCESSING.
  8733.  
  8734. RTI1 SX6 3RREC SETUP RECOVERY REQUEST
  8735. LX6 59-17
  8736. SX2 RFCA *CALLTRN* FUNCTION
  8737. LX2 35-17
  8738. BX6 X6+X2
  8739. SX3 B3 FWA OF COMMUNICATION BLOCK
  8740. BX6 X6+X3
  8741. SA6 B3+CBQ1W+QRECW
  8742. SA1 B3+CBTOW TERMINAL ORDINAL
  8743. MX4 CBTON
  8744. ERRNZ 59-CBTOS IF TERMINAL ORDINAL NOT LEFT JUSTIFIED
  8745. BX7 X4*X1
  8746. LX7 CBTON-1-CBTOS RIGHT JUSTIFY TERMINAL ORDINAL
  8747. MX1 1 SET RECOVERY STARTED COMPLETE
  8748. LX1 QRSTS-59
  8749. BX7 X1+X7
  8750. SA7 B3+CBQ1W+QRTOW
  8751. SX1 A7 RECOVERY LOGGING EVENT ADDRESS
  8752. SX2 59-QRSTS RECOVERY STARTED COMPLETION BIT
  8753. BX3 X3-X3 NO SUBCP FOR EVENT
  8754. BX5 X5-X5 NO TIME OUT FOR EVENT
  8755. SB3 B3+CBQ1W FWA OF STORAGE FOR EVENT QUEUING
  8756. SX6 RFR RETURN AT RECOVERY FUNCTION RESTART
  8757. SX4 QTEV QUEUE ON EVENT ONLY
  8758. SB4 B0 QUEUE AT END OF QUEUE
  8759. RJ QTW QUEUE *TAF* WORK
  8760. EQ RTIX RETURN
  8761.  
  8762. * SET NON-RECOVERABLE BIT IN TST.
  8763.  
  8764. RTI2 SA3 B3+CBTAW TERMINAL ADDRESS
  8765. LX3 17-CBTAS
  8766. ERRNZ CBTAN-18 IF TERMINAL ADDRESS NOT 18 BITS
  8767. SA4 X3+TSNRW INDICATE NON-RECOVERABLE
  8768. MX7 60-TSNRN
  8769. LX7 TSNRS-TSNRN+1
  8770. BX7 X7*X4
  8771. SA7 A4 RESET TST WORD TSNRW
  8772. EQ RTIX RETURN
  8773.  
  8774. * INDICATE RECOVERY PROCESSING COMPLETE.
  8775.  
  8776. RTI3 MX7 CBLCN
  8777. LX7 CBLCS-59
  8778. BX7 X7+X2
  8779. SA7 A1
  8780. ERRNZ CBTRW-CBLCW IF RESTART AND LOGGING NOT IN SAME WORD
  8781. EQ RTIX RETURN
  8782. .A ELSE
  8783. RTI SUBR ENTRY/EXIT
  8784.  
  8785. * WHEN RECOVERY IS NOT INSTALLED, INDICATE RECOVERY PROCESSING
  8786. * IS COMPLETE.
  8787.  
  8788. SA1 B3+CBLCW RECOVERY LOGGING STATUS
  8789. MX7 CBLCN
  8790. LX7 CBLCS-59
  8791. BX7 X7+X1 SET RECOVERY COMPLETE
  8792. SA7 A1
  8793. EQ RTIX RETURN
  8794. .A ENDIF
  8795. RFB SPACE 4,20
  8796. ** RFB - RECOVERY FUNCTION BEGIN PROCESSOR.
  8797. *
  8798. * ENTRY (X5) = RECOVERY REQUEST.
  8799. * (X6) = SUBCP.
  8800. * (X7) = TERMINAL STATUS TABLE ORDINAL.
  8801. * (B3) = FWA TO QUEUE WORK FOR FUNCTION
  8802. * RELATIVE TO SUBCP.
  8803. * (B5) = SUBCP RA.
  8804. *
  8805. * EXIT TO RECOVERY FUNCTION PROCESSOR.
  8806. *
  8807. * USES X - ALL.
  8808. * A - 1, 2, 3, 4, 5, 6, 7.
  8809. * B - 3, 6.
  8810. *
  8811. * CALLS GRP, STF, STST, ZFN.
  8812. *
  8813. * MACROS QTWCALL.
  8814.  
  8815. RFB SA6 RFBB SAVE SUBCP
  8816. SA7 RFBA TERMINAL ORDINAL
  8817. BX6 X5 SAVE SYSTEM REQUEST
  8818. LX5 17-35 RIGHT JUSTIFY FUNCTION
  8819. SA6 RFBC
  8820. SX3 X5 FUNCTION
  8821. LX5 59-59-17+35
  8822. SX7 B3+ SAVE FWA OF QUEUE ENTRY
  8823. SA7 RFBF
  8824. SX2 B5 COMPUTE REQUEST ADDRESS RELATIVE TO *TAF*
  8825. IX5 X5+X2
  8826. SX0 X3-RFTI
  8827. ZR X0,RFB4 IF *TINVOKE* FUNCTION
  8828. SX0 X3-RFSR
  8829. ZR X0,RFB6 IF *SRERUN* FUNCTION
  8830.  
  8831. * SAVE RECOVERY PROCESSING PARAMETERS IN QUEUE ENTRY.
  8832.  
  8833. RFB1 SA1 RFBA TERMINAL STATUS TABLE ORDINAL
  8834. SA2 RFBC REQUEST
  8835. SB6 B3+ FWA OF QUEUE ENTRY FOR NO SUBCP
  8836. BX7 X1 SAVE TERMINAL STATUS TABLE ORDINAL
  8837. BX6 X2 SAVE REQUEST IN QUEUE
  8838. ZR B5,RFB2 IF NO SUBCP
  8839. SB6 B5-NUAPL FWA OF TASK SYSTEM AREA
  8840. SB6 B6+B3 FWA OF QUEUE ENTRY RELATIVE TO *TAF*
  8841. RFB2 SA7 B6+QRTOW
  8842. SA6 B6+QRECW
  8843. .A IFGE IPTAR,1
  8844.  
  8845. * DETERMINE RECOVERY FILE FOR TERMINAL.
  8846. * SEVERAL RECOVERY FILES MAY BE USED TO SUPPORT
  8847. * MULTI-MAINFRAME RECOVERY AND HIGHER PERFORMANCE.
  8848.  
  8849. RFB3 RJ STF SEARCH TERMINAL FILES FOR TERMINAL ORDINAL
  8850. SX6 X3+ TERMINAL ORDINAL RELATIVE TO RECOVERY FILE
  8851. SA6 RFBD
  8852.  
  8853. * IF RECOVERY FILE NOT LOCKED, LOCK RECOVERY FILE
  8854. * AND START PROCESSING FUNCTION.
  8855. * IF RECOVERY FILE LOCKED, QUEUE THE REQUEST.
  8856.  
  8857. SA4 B4+TTLKW LOCK STATUS
  8858. ERRNZ TTLKS-59 IF LOCK NOT IN BIT 59
  8859. NG X4,RFB5 IF FILE LOCKED
  8860. MX7 TTLKN SET RECOVERY FILE LOCKED
  8861. BX6 X4+X7
  8862. LX7 TTEVS-59
  8863. ERRNZ TTEVN-TTLKN IF EVENT AND LOCK FIELDS NOT EQUAL
  8864. BX6 -X7*X6 CLEAR FILE RELEASE EVENT
  8865. ERRNZ TTLKW-TTEVW IF LOCK AND LOCK EVENT NOT IN SAME WORD
  8866. SA6 A4
  8867. .A ENDIF
  8868.  
  8869. * PROCESS SPECIFIED FUNCTION. ALL PROCESSORS RETURN
  8870. * TO *RFC* WHEN COMPLETE.
  8871.  
  8872. RFB4 SA5 RFBC REQUEST
  8873. LX5 17-35 FUNCTION
  8874. SA1 X5+CRFC RECOVERY FUNCTION PROCESSOR
  8875. LX5 59-59-17+35
  8876. SX2 B5 COMPUTE REQUEST ADDRESS RELATIVE TO *TAF*
  8877. IX5 X5+X2
  8878. SB6 X1
  8879. JP B6 PROCESS FUNCTION
  8880. .A IFGE IPTAR,1
  8881.  
  8882. * RECOVERY FILE IS LOCKED, SO QUEUE REQUEST.
  8883.  
  8884. RFB5 SX1 B4+TTEVW FWA OF LOCK RELEASED EVENT
  8885. SA3 RFBB SUPCP
  8886. SA4 RFBF FWA OF QUEUE ENTRY
  8887. SB3 X4
  8888. SX5 B0 NO EVENT TIME OUT
  8889. QTWCALL TTEVS,QTEV WAIT UNTIL LOCK IS RELEASED
  8890. RJ GRP GET REQUEST PARAMETERS
  8891. SA7 RFBA TERMINAL ORDINAL IN TERMINAL STATUS TABLE
  8892. SA6 RFBB SUBCP
  8893. SX3 B5
  8894. IX6 X5-X3
  8895. SA6 RFBC REQUEST
  8896. SX7 B3+
  8897. SA7 RFBF FWA OF QUEUE ENTRY RELATIVE TO SUBCP
  8898. EQ RFB3 SEARCH TERMINAL FILES
  8899. .A ENDIF
  8900.  
  8901. * IF *SRERUN* HAS SPECIFIED A USER, DETERMINE TERMINAL STATUS
  8902. * TABLE ORDINAL FOR USER.
  8903.  
  8904. RFB6 SA1 X5+SRUS FWA OF USER
  8905. SA2 RFBE BLANKS
  8906. ZR X1,RFB1 IF NO USER SPECIFIED
  8907. SA1 X1+B5 USER
  8908. BX3 X1-X2
  8909. ZR X3,RFB1 IF NO USER SPECIFIED
  8910. RJ ZFN ZERO FILL USER NAME
  8911. BX4 X1
  8912. RJ STST SEARCH TERMINAL STATUS TABLE FOR USER
  8913. SX6 TSUU RECOVERY STATUS USER UNKNOWN
  8914. ZR X3,RFB7 IF USER UNKNOWN
  8915. SX7 X3+ SAVE NEW TERMINAL STATUS TABLE ORDINAL
  8916. ERRNZ QRTOS-17 IF TERMINAL ORDINAL NOT IN BITS 17-0
  8917. SA7 RFBA
  8918. EQ RFB1 DETERMINE RECOVERY FILE FOR TERMINAL
  8919.  
  8920. RFB7 SA1 X5+SRST FWA OF STATUS
  8921. SA6 X1+B5 RETURN STATUS
  8922. SB4 B0 DO NOT UNLOCK RECOVERY FILE
  8923. EQ RFC PROCESS RECOVERY FUNCTION COMPLETE
  8924.  
  8925. RFBA BSS 1 TERMINAL ORDINAL IN TERMINAL STATUS TABLE
  8926. RFBB BSS 1 SUBCP
  8927. RFBC BSS 1 SYSTEM REQUEST
  8928. RFBD BSS 1 TERMINAL ORDINAL IN RECOVERY FILE
  8929. RFBE DATA H
  8930. RFBF BSS 1 FWA OF QUEUE ENTRY FOR RECOVERY
  8931.  
  8932. PFC SPACE 4,15
  8933. ** RFC - RECOVERY FUNCTION COMPLETE PROCESSOR.
  8934. *
  8935. * ENTRY (B3) = FWA OF QUEUE ENTRY RELATIVE TO SUBCP.
  8936. * (B4) = 0, IF RECOVERY FILE SHOULD NOT BE UNLOCKED.
  8937. * = FWA OF RECOVERY FILE ENTRY, IF FILE
  8938. * SHOULD BE UNLOCKED.
  8939. * (RFBB) = SUBCP.
  8940. *
  8941. * EXIT TO *TSSC*.
  8942. *
  8943. * USES X - 1, 2, 3, 4, 5, 6, 7.
  8944. * A - 1, 2, 3, 4, 5, 6, 7.
  8945. * B - 3, 6.
  8946. *
  8947. * CALLS RCPU, RSP.
  8948.  
  8949.  
  8950. RFC BSS 0
  8951. .A IFGE IPTAR,1
  8952. ZR B4,RFC1 IF RECOVERY FILE SHOULD NOT BE UNLOCKED
  8953.  
  8954. * UNLOCK RECOVERY FILE.
  8955.  
  8956. SA4 B4 LOCK STATUS
  8957. ERRNZ TTLKW IF LOCK FIELD NOT IN WORD ZERO
  8958. MX7 -60+TTLKN
  8959. ERRNZ TTLKS-59 IF LOCK NOT IN BIT 59
  8960. BX6 -X7*X4 CLEAR LOCK
  8961. ERRNZ TTLKW-TTEVW IF LOCK AND LOCK EVENT NOT IN SAME WORD
  8962. LX7 TTEVS-59
  8963. ERRNZ TTLKN-TTEVN IF EVENT AND LOCK FIELDS NOT EQUAL
  8964. BX6 X7+X6 SET FILE RELEASE EVENT
  8965. SA6 A4
  8966. RFC1 BSS 0
  8967. .A ENDIF
  8968. SA2 RFBB SUBCP
  8969. ZR X2,RFC2 IF NOT A SUBCP REQUEST
  8970.  
  8971. * REQUEST CPU FOR SUBCP.
  8972.  
  8973. LX2 SCPAL COMPUTE SUBCP TABLE ADDRESS
  8974. TA4 X2-CPAL,VCPA
  8975. SB6 A4 FWA OF SUBCP TABLE ENTRY
  8976. SX4 X4-NUAPL FWA OF TASK SYSTEM AREA
  8977. SB3 TSSC RETURN ADDRESS AFTER REQUESTING CPU
  8978. RJ RSP RESTORE SUBCP REGISTERS
  8979. EQ RCPU REQUEST CPU FOR TASK
  8980.  
  8981. * SET RECOVERY PROCESSING COMPLETE TO ALLOW WAITING
  8982. * PROCESS TO CONTINUE.
  8983.  
  8984. RFC2 MX7 QRTCN
  8985. SA3 B3-CBQ1W+CBLCW LOGGING COMPLETE STATUS
  8986. LX7 CBLCS-59 SET LOGGING COMPLETE
  8987. BX7 X7+X3
  8988. SA7 A3
  8989. EQ TSSC TIME SLICE SUBCP
  8990.  
  8991. .A IFGE IPTAR,1
  8992. PFR SPACE 4,10
  8993. ** RFR - RECOVERY FUNCTION RESTART.
  8994. *
  8995. * ENTRY (B3) = FWA OF QUEUE ENTRY RELATIVE TO SUBCP.
  8996. * (X2) = FIRST WORD OF QUEUE ENTRY.
  8997. *
  8998. * EXIT TO *RFB*.
  8999. *
  9000. * USES X - 1, 5.
  9001. *
  9002. * CALLS GRP.
  9003.  
  9004.  
  9005. RFR RJ GRP GET REQUEST PARAMETERS
  9006. SX1 B5 COMPUTE REQUEST ADDRESS RELATIVE TO SUBCP
  9007. IX5 X5-X1
  9008. EQ RFB RECOVERY FUNCTION BEGIN PROCESSING
  9009. .A ENDIF
  9010. CIL SPACE 4,20
  9011. ** CIL - *CALLTRN* INPUT LOGGING.
  9012. *
  9013. * ENTRY (X5) = REQUEST.
  9014. * (B4) = FWA OF RECOVERY FILE ENTRY.
  9015. * (RFBD) = RECOVERY FILE TERMINAL ORDINAL.
  9016. * (RFBF) = FWA OF QUEUE ENTRY FOR RECOVERY.
  9017. *
  9018. * EXIT TO *RFC*.
  9019. * (B4) = FWA OF RECOVERY FILE ENTRY.
  9020. * (RFBB) = SUBCP.
  9021. *
  9022. * USES X - ALL.
  9023. * A - 1, 2, 3, 4, 6, 7.
  9024. * B - 3, 5, 6.
  9025. *
  9026. * CALLS CFA, CRS, EXIT, FIO, FMH, GRP, IRU, MVE=, SCB, STF.
  9027. *
  9028. * MACROS QTWCALL.
  9029.  
  9030.  
  9031. .A IFGE IPTAR,1
  9032. CIL SA2 X5+CBTAW FWA OF TERMINAL/USER
  9033. LX2 17-CBTAS RIGHT JUSTIFY TERMINAL ADDRESS
  9034. ERRNZ CBTAN-18 TERMINAL ADDRESS NOT 18 BITS
  9035. MX0 TSTNN
  9036. ERRNZ TSTNS-59 TERMINAL NAME DOES NOT START AT BIT 59
  9037. SA4 X2+TSTNW TERMINAL NAME
  9038. BX3 X0*X4
  9039. RJ IRU INITIALIZE RECOVERY UNIT
  9040. SX6 B0 INITIALIZE TO NO *SECURE* MESSAGE
  9041. SA6 B4+TTBFW+TRUWL+MRIWL+TRMSW
  9042.  
  9043. * LOG RECOVERABLE TRANSACTION INPUT TO RECOVERY FILE.
  9044.  
  9045. SX6 B4+TTBFW+TRUWL+TRMWL FWA OF COMMUNICATION BLOCKS
  9046. SA6 CILC
  9047.  
  9048. * FIND ALL COMMUNICATION BLOCKS FOR TRANSACTION.
  9049.  
  9050. SX2 X5 FWA OF COMMUNICATION BLOCK
  9051. CIL1 ZR X2,CIL2 IF END OF COMMUNICATION BLOCKS
  9052. SA3 X2+CBNCW FWA OF NEXT COMMUNICATION BLOCK
  9053. ERRNZ CBNCS-CBNCN+1 NEXT C. B. ADDRESS NOT RIGHT JUSTIFIED
  9054. SX6 X3+ SAVE NEXT COMMUNICATION BLOCK ADDRESS
  9055. SA6 CILA
  9056.  
  9057. * MOVE COMMUNICATION BLOCK TO RECOVERY FILE BUFFER.
  9058.  
  9059. SA3 CILC DESTINATION OF MOVE
  9060. SX1 CMBL WORD COUNT OF MOVE
  9061. IX6 X3+X1 COMPUTE NEXT MOVE DESTINATION
  9062. SA6 A3
  9063. RJ MVE=
  9064. SA2 CILA FWA OF NEXT COMMUNICATION BLOCK
  9065. EQ CIL1 CONTINUE SEARCH OF COMMUNICATION BLOCKS
  9066.  
  9067. * FORMAT RECOVERY UNIT STATUS INFORMATION.
  9068.  
  9069. CIL2 SA2 X5+CBCSW *CDCS* STATUS
  9070. MX0 -CBCSN
  9071. LX2 CBCSN-1-CBCSS *CDCS* STATUS
  9072. BX6 -X0*X2
  9073. LX6 TRCCS-TRCCN+1 POSITION *CDCS* STATUS
  9074. ERRNZ CBCSW-CBRMW *CDCS* AND *CRM* NOT IN SAME WORD
  9075. LX2 CBRMN-1-CBRMS-CBCSN+1+CBCSS RIGHT JUSTIFY *CRM*
  9076. BX3 -X0*X2
  9077. ERRNZ CBCSN-CBRMN *CDCS* AND *CRM* NOT THE SAME SIZE
  9078. LX3 TRCRS-TRCRN+1 POSITION *CRM* STATUS
  9079. ERRNZ TRCRW-TRCCW *CRM* AND *CDCS* NOT IN SAME WORD
  9080. BX6 X6+X3
  9081. SX4 CSTI STATUS IS RECOVERABLE INPUT
  9082. LX4 TRCSS-TRCSN+1 POSITION *STEP* FIELD
  9083. ERRNZ TRCRW-TRCSW *CRM* AND *STEP* NOT IN SAME WORD
  9084. BX6 X6+X4
  9085. LX2 59-CBSBS-CBRMN+1+CBRMS
  9086. ERRNZ CBSBW-CBRMW *BRTAN* AND *CRM* NOT IN SAME WORD
  9087. SX3 TYIT TYPE IS INTERACTIVE TERMINAL
  9088. NG X2,CIL5 IF *BTRAN* TRANSACTION
  9089. ERRNZ TRCSW-TRTYW *STEP* AND *TRAN* NOT IN SAME WORD
  9090. CIL3 LX3 TRTYS-TRTYN+1 POSITION *TRAN* FIELD
  9091. BX6 X6+X3
  9092. SA6 B4+TTBFW+TRTYW
  9093. SA1 X5+CBTSW TRANSACTION SEQUENCE NUMBER
  9094. MX0 -CBTSN MASK FOR SEQUENCE NUMBER
  9095. LX1 CBTSN-1-CBTSS RIGHT JUSTIFY SEQUENCE NUMBER
  9096. BX7 -X0*X1
  9097. SA7 B4+TTBFW+TRCNW
  9098.  
  9099. * FORMAT MESSAGE HEADER FOR TRANSACTION INPUT.
  9100.  
  9101. MX0 -TSCNN GET APPLICATION BLOCK HEADER
  9102. SA1 X5+CBTAW TERMINAL ADDRESS
  9103. AX1 CBTAS-17
  9104. SA2 X1+TSCNW APPLICATION CONNECTION NUMBER
  9105. LX2 TSCNN-1-TSCNS RIGHT JUSTIFY CONNECTION NUMBER
  9106. BX2 -X0*X2
  9107. SX7 B0+ SET NO APPLICATION BLOCK HEADER
  9108. ZR X2,CIL4 IF NO CONNECTION NUMBER
  9109. SX3 TNCTL NETWORK COMMUNICATION TABLE ENTRY LENGTH
  9110. IX4 X2*X3
  9111. SX4 X4+TNAHW
  9112. TX3 X4,VNCT
  9113. SA4 X3 APPLICATION BLOCK HEADER
  9114. BX7 X4
  9115. CIL4 SA1 CILC COMPUTE MESSAGE LENGTH
  9116. SX2 B4+TTBFW+TRUWL+TRMWL
  9117. IX1 X1-X2
  9118. SX3 MSTM MESSAGE SOURCE IS TRANSACTION MESSAGE
  9119. SX4 B1 MESSAGE UNIT IS WORDS
  9120. SB6 B4+TTBFW+TRUWL FWA OF MESSAGE HEADER
  9121. RJ FMH FORMAT MESSAGE HEADER
  9122.  
  9123. * WRITE RECOVERY UNIT TO RECOVERY FILE. THE *TSTAT* AND
  9124. * *SECURE* DATA ARE INITIALIZED.
  9125.  
  9126. SX1 MSST MESSAGE SOURCE IS STATUS
  9127. SA2 RFBD TERMINAL ORDINAL IN RECOVERY FILE
  9128. RJ CFA COMPUTE FILE ADDRESS FOR STATUS
  9129. SX2 TRUPL+MRIPL+TRMPL LENGTH IN PRUS TO WRITE
  9130. SX5 B4+TTFTW FWA OF FET
  9131. SX1 CIORW *CIO* REWRITE
  9132. RJ FIO DO FILE INPUT/OUTPUT
  9133.  
  9134. * QUEUE REQUEST TO LET *TAF* DO OTHER WORK UNTIL
  9135. * OUTPUT IS COMPLETE.
  9136.  
  9137. SA3 RFBF FWA OF RECOVERY QUEUE ENTRY
  9138. SB3 X3+
  9139. SX1 B4+TTFTW FWA OF OUTPUT COMPLETE EVENT
  9140. SX3 B0 NO SUBCP
  9141. SX5 B0 NO TIME OUT ON EVENT
  9142. QTWCALL 0,QTEV WAIT FOR OUTPUT TO COMPLETE
  9143. RJ GRP GET REQUEST PARAMETERS FOR *CALLTRN*
  9144. SA6 RFBB SAVE SUBCP
  9145. RJ STF SEARCH TERMINAL FILES FOR TERMINAL ORDINAL
  9146. SX2 TSTLLE TST ENTRY LENGTH
  9147. IX4 X2*X1 OFFSET INTO TST
  9148. TA2 X4+TSNRW,VTST INDICATE RECOVERABLE
  9149. MX0 -TSNRN
  9150. LX0 TSNRS-TSNRN+1
  9151. BX6 -X0+X2
  9152. SA6 A2 RESET TST WORD TSNRW
  9153. RJ CRS CHECK RECOVERY STATUS FOR ERRORS
  9154. EQ RFC RECOVERY FUNCTION COMPLETE PROCESSING
  9155.  
  9156. CIL5 SX3 TYBT *BTRAN* TRANSACTION
  9157. EQ CIL3 PUT TRANSACTION TYPE IN RECOVERY UNIT
  9158.  
  9159. CILA BSS 1 FWA OF NEXT COMMUNICATION BLOCK
  9160. CILC BSS 1 FWA FOR INPUT IN RECOVERY BUFFER
  9161. .A ELSE
  9162. CIL RJ EXIT ERROR IF ROUTINE IS CALLED
  9163. .A ENDIF
  9164. GET SPACE 4,20
  9165. ** GET - *RGET* FUNCTION PROCESSING.
  9166. *
  9167. * ENTRY (X5) = SYSTEM REQUEST.
  9168. * (B4) = FWA OF RECOVERY FILE ENTRY.
  9169. * (B5) = SUBCP RA.
  9170. * (RFBB) = SUBCP.
  9171. * (RFBD) = RECOVERY FILE TERMINAL ORDINAL.
  9172. *
  9173. * EXIT TO *RFC*.
  9174. * (RFBB) = SUBCP.
  9175. * (B4) = FWA OF RECOVERY FILE ENTRY.
  9176. *
  9177. * USES X - ALL.
  9178. * A - 1, 2, 3, 4, 6, 7.
  9179. * B - 3.
  9180. *
  9181. * CALLS CFA, CML, CMU, CRS, CRU, CTF, FIO, GRP, MVD, STF.
  9182. *
  9183. * MACROS QTWCALL.
  9184.  
  9185.  
  9186. .A IFGE IPTAR,1
  9187. GET RJ CRU CHECK RECOVERY UNIT FOR LEGAL RANGE
  9188. NZ X6,GET2 IF INCORRECT RECOVERY UNIT INDEX
  9189.  
  9190. * READ USER *RPUT* MESSAGE FROM RECOVERY FILE.
  9191.  
  9192. SA2 RFBD TERMINAL ORDINAL FOR RECOVERY FILE
  9193. SX1 MSRM MESSAGE SOURCE IS *RPUT* MESSAGE
  9194. RJ CFA COMPUTE FILE ADDRESS
  9195. SX5 B4+TTFTW FWA OF FET
  9196. SA4 B4+TTNPW PRUS IN USER MESSAGE
  9197. SX1 CIORD *CIO* READ FUNCTION
  9198. MX0 -TTNPN MASK FOR PRUS IN USER MESSAGE
  9199. LX4 TTNPN-1-TTNPS RIGHT JUSTIFY PRUS
  9200. BX2 -X0*X4
  9201. RJ FIO DO FILE INPUT/OUTPUT
  9202.  
  9203. * QUEUE REQUEST TO LET *TAF* DO OTHER WORK UNTIL
  9204. * INPUT IS COMPLETE.
  9205.  
  9206. SX1 B4+TTFTW FWA OF INPUT COMPLETE EVENT
  9207. SA3 RFBB SUBCP
  9208. SA4 RFBF FWA OF RECOVERY QUEUE ENTRY
  9209. SB3 X4
  9210. SX5 B0 NO TIME OUT ON EVENT
  9211. QTWCALL 0,QTEV WAIT FOR INPUT TO COMPLETE
  9212. RJ GRP GET REQUEST PARAMETERS AFTER RESTART
  9213. SA6 RFBB SAVE SUBCP
  9214. RJ STF SEARCH TERMINAL FILES FOR ORDINAL
  9215. RJ CRS CHECK RECOVERY STATUS FOR ERRORS
  9216.  
  9217. * IF NO MESSAGE WAS RECORDED BY *RPUT*, RETURN NO MESSAGE
  9218. * STATUS TO TASK.
  9219.  
  9220. SX6 TSNM RECOVERY STATUS NO MESSAGE
  9221. SA2 B4+TTBFW+TRMSW MESSAGE SOURCE
  9222. MX0 -TRMSN
  9223. ERRNZ TRMSN-TRMUN IF MESSAGE SOURCE .NE. UNITS FIELD LENGTH
  9224. LX2 TRMSN-1-TRMSS RIGHT JUSTIFY MESSAGE SOURCE
  9225. BX3 -X0*X2
  9226. ZR X3,GET2 IF NO MESSAGE
  9227.  
  9228. * IF *RGET* MESSAGE UNIT IS NOT EQUAL TO *RPUT* MESSAGE
  9229. * UNIT, RETURN MESSAGE UNIT CONFLICT STATUS TO TASK.
  9230.  
  9231. ERRNZ TRMUW-TRMSW IF MESSAGE SOURCE .NE. UNITS FIELD WORD
  9232. LX2 TRMUN-1-TRMUS+TRMSS-TRMSN+1 MESSAGE UNITS
  9233. BX7 -X0*X2
  9234. SA1 X5+RGMU FWA OF USER MESSAGE UNITS
  9235. ZR X1,GET1 IF PARAMETER NOT SPECIFIED
  9236. SA1 X1+B5 USER MESSAGE UNIT
  9237. GET1 RJ CMU CHECK MESSAGE UNIT
  9238. NZ X6,GET2 IF INCORRECT MESSAGE UNIT
  9239. IX7 X4-X7 USER UNITS - FILE UNITS
  9240. SX6 TSPG RECOVERY STATUS MESSAGE CONFLICT
  9241. NZ X7,GET2 IF USER UNITS .NE. FILE UNITS
  9242.  
  9243. * IF MESSAGE FROM RECOVERY FILE WILL NOT FIT IN USER
  9244. * AREA OR TASK FL RETURN MESSAGE WILL NOT FIT STATUS
  9245. * TO TASK.
  9246.  
  9247. MX0 -TRMLN MASK FOR MESSAGE LENGTH
  9248. LX2 TRMLN-1-TRMLS+TRMUS-TRMUN+1
  9249. SA1 X5+RGML FWA OF USER MESSAGE LENGTH
  9250. SA1 X1+B5 USER MESSAGE LENGTH
  9251. BX7 -X0*X2
  9252. SX6 TSMU RECOVERY STATUS MESSAGE .GR. USER AREA
  9253. SA7 A1 RETURN LENGTH TO USER
  9254. IX0 X1-X7 USER LENGTH - FILE LENGTH
  9255. BX3 X7 FILE MESSAGE LENGTH
  9256. NG X0,GET2 IF FILE LENGTH .GR. USER AREA
  9257. RJ CML COMPUTE MESSAGE LENGTH IN WORDS
  9258. SA2 RFBB SUBCP
  9259. SA3 X5+RGMA FWA OF MESSAGE RELATIVE TO TASK
  9260. SX3 X3
  9261. BX4 X6 SAVE REMAINDER OVER WORD
  9262. RJ CTF CHECK TASK FIT FOR MESSAGE
  9263. NZ X6,GET2 IF MESSAGE DOES NOT FIT IN FL
  9264. BX6 X4 RESTORE REMAINDER OVER WORD BOUNDARY
  9265.  
  9266. * MOVE MESSAGE TO TASK.
  9267.  
  9268. SX3 B5+X3 FWA OF MESSAGE RELATIVE TO *TAF*
  9269. SX2 B4+TTBFW+TRMWL FWA OF MESSAGE ORIGIN
  9270. RJ MVD MOVE MESSAGE TO TASK
  9271. SX6 TSNE RECOVERY STATUS NO ERRORS
  9272.  
  9273. * RETURN STATUS TO TASK.
  9274.  
  9275. GET2 SA4 X5+RGST FWA OF STATUS
  9276. SA6 X4+B5 RETURN STATUS
  9277. EQ RFC COMPLETE PROCESSING FOR RECOVERY FUNCTION
  9278. .A ELSE
  9279. GET SX6 TSRU RECOVERY STATUS RECOVERY UNAVAILABLE
  9280. SA4 X5+RGST FWA OF STATUS
  9281. SA6 X4+B5 RETURN STATUS
  9282. EQ RFC COMPLETE PROCESSING FOR RECOVERY FUNCTION
  9283. .A ENDIF
  9284. RPUT SPACE 4,20
  9285. ** PUT - *RPUT* FUNCTION PROCESSING.
  9286. *
  9287. * ENTRY (X5) = SYSTEM REQUEST.
  9288. * (B4) = FWA OF RECOVERY FILE ENTRY.
  9289. * (B5) = SUBCP RA.
  9290. * (RFBB) = SUBCP.
  9291. * (RFBF) = FWA OF RECOVERY FILE QUEUE ENTRY.
  9292. *
  9293. * EXIT TO *RFC*.
  9294. * (RFBB) = SUBCP.
  9295. * (B4) = FWA OF RECOVERY FILE ENTRY.
  9296. *
  9297. * USES X - 1, 2, 3, 4, 5, 6, 7.
  9298. * A - 1, 2, 3, 4, 6, 7.
  9299. * B - 3, 6.
  9300. *
  9301. * CALLS CFA, CMF, CML, CMU, CRS, CRU, FIO, FMH, GRP, MVE=,
  9302. * STF.
  9303. *
  9304. * MACROS QTWCALL.
  9305.  
  9306.  
  9307. .A IFGE IPTAR,1
  9308. PUT RJ CRU CHECK RECOVERY UNIT FOR LEGAL RANGE
  9309.  
  9310. * CHECK *RPUT* FOR VALID -
  9311. *
  9312. * 1. INDEX
  9313. * 2. MESSAGE UNIT
  9314. * 3. MESSAGE SIZE.
  9315. *
  9316. * IF ANY OF THE ABOVE PARAMETERS ARE INCORRECT
  9317. * RETURN STATUS TO TASK.
  9318.  
  9319. NZ X6,PUT2 IF INCORRECT RECOVERY UNIT INDEX
  9320. SA1 X5+RGMU FWA OF MESSAGE UNITS
  9321. ZR X1,PUT1 IF MESSAGE UNIT NOT SPECIFIED
  9322. SA1 X1+B5 MESSAGE UNITS
  9323. PUT1 RJ CMU CHECK MESSAGE UNIT
  9324. NZ X6,PUT2 IF INCORRECT MESSAGE UNIT
  9325. SA2 X5+RGML FWA OF MESSAGE LENGTH
  9326. SA3 X2+B5 MESSAGE LENGTH
  9327. RJ CML COMPUTE MESSAGE LENGTH
  9328. BX7 X1 SAVE MESSAGE LENGTH IN WORDS
  9329. SA7 PUTA
  9330. RJ CMF CHECK MESSAGE FIT IN RECOVERY FILE
  9331. NZ X6,PUT2 IF USER MESSAGE DOES NOT FIT IN FILE
  9332.  
  9333. * MOVE USER MESSAGE TO RECOVERY FILE BUFFER.
  9334.  
  9335. SX7 B0 NO APPLICATION BLOCK HEADER
  9336. SX1 X3 LENGTH IN MESSAGE UNITS
  9337. SX3 MSRM MESSAGE SOURCE IS *RPUT* MESSAGE
  9338. SB6 B4+TTBFW FWA OF MESSAGE HEADER
  9339. RJ FMH FORMAT MESSAGE HEADER
  9340. SA2 X5+RGMA FWA OF MESSAGE RELATIVE TO TASK
  9341. SX2 X2+B5 FWA OF ORIGIN RELATIVE TO *TAF*
  9342. SX3 B4+TTBFW+TRMWL FWA OF DESTINATION
  9343. SA1 PUTA MESSAGE LENGTH IN WORDS
  9344. RJ MVE= MOVE USER MESSAGE TO RECOVERY BUFFER
  9345.  
  9346. * WRITE *RPUT* MESSAGE TO RECOVERY FILE.
  9347.  
  9348. SX1 MSRM MESSAGE SOURCE IS *RPUT* MESSAGE
  9349. SA2 RFBD TERMINAL ORDINAL FOR RECOVERY FILE
  9350. SA4 X5+RGIN FWA OF USER RECOVERY UNIT INDEX
  9351. SA3 X4+B5 RECOVERY UNIT INDEX
  9352. RJ CFA COMPUTE FILE ADDRESS
  9353. SX5 B4+TTFTW FWA OF FET
  9354. SA2 PUTA COMPUTE MESSAGE LENGTH IN PRUS
  9355. SX2 X2+77B+TRMWL ROUND UP 1 PRU + MESSAGE HEADER
  9356. SX1 CIORW *CIO* REWRITE REQUEST
  9357. AX2 6
  9358. RJ FIO DO FILE INPUT/OUTPUT
  9359.  
  9360. * QUEUE REQUEST TO LET *TAF* DO OTHER WORK UNTIL
  9361. * OUTPUT IS COMPLETE.
  9362.  
  9363. SX1 B4+TTFTW FWA OF EVENT
  9364. SA3 RFBB SUBCP
  9365. SA4 RFBF FWA OF RECOVERY QUEUE ENTRY
  9366. SB3 X4
  9367. SX5 B0 NO TIME OUT ON EVENT
  9368. QTWCALL 0,QTEV WAIT ON BIT 0 OF FET
  9369. RJ GRP GET REQUEST PARAMETERS
  9370. SA6 RFBB SAVE SUBCP
  9371. RJ STF SEARCH TERMINAL FILE FOR TERMINAL
  9372. RJ CRS CHECK RECOVERY STATUS FOR ERRORS
  9373. SX6 TSNE RECOVERY STATUS NO ERRORS
  9374.  
  9375. * RETURN STATUS TO TASK.
  9376.  
  9377. PUT2 SA4 X5+RGST FWA OF STATUS
  9378. SA6 X4+B5 RETURN STATUS
  9379. EQ RFC COMPLETE PROCESSING FOR RECOVERY FUNCTION
  9380.  
  9381. PUTA BSS 1 LENGTH OF MESSAGE IN WORDS
  9382. .A ELSE
  9383. PUT SX6 TSRU RECOVERY STATUS RECOVERY UNAVAILABLE
  9384. SA4 X5+RGST FWA OF STATUS
  9385. SA6 X4+B5 RETURN STATUS
  9386. EQ RFC COMPLETE PROCESSING FOR RECOVERY FUNCTION
  9387.  
  9388. .A ENDIF
  9389. RSE SPACE 4,20
  9390. ** RSE - *RSECURE* FUNCTION PROCESSING.
  9391. *
  9392. * ENTRY (X5) = SYSTEM REQUEST.
  9393. * (B4) = FWA OF RECOVERY FILE ENTRY.
  9394. * (B5) = SUBCP RA.
  9395. * (RFBB) = SUBCP.
  9396. * (RFBD) = RECOVERY FILE TERMINAL ORDINAL.
  9397. * (RFBF) = FWA OF RECOVER FILE QUEUE ENTRY.
  9398. *
  9399. * EXIT TO *RFC*.
  9400. * (RFBB) = SUBCP.
  9401. * (B4) = FWA OF RECOVERY FILE ENTRY.
  9402. *
  9403. * USES X - ALL.
  9404. * A - 1, 2, 3, 4, 6, 7.
  9405. * B - 3, 6.
  9406. *
  9407. * CALLS CFA, CML, CMU, CRS, CTF, FIO, GRP, MVD, STF.
  9408. *
  9409. * MACROS QTWCALL.
  9410.  
  9411.  
  9412. .A IFGE IPTAR,1
  9413. RSE SX1 MSSM MESSAGE SOURCE IS *SECURE* MESSAGE
  9414.  
  9415. * READ *RSECURE* MESSAGE FROM RECOVERY FILE.
  9416.  
  9417. SA2 RFBD TERMINAL ORDINAL FOR RECOVERY FILE
  9418. RJ CFA COMPUTE FILE ADDRESS
  9419. SX5 B4+TTFTW FWA OF FET
  9420. SA4 B4+TTNPW PRUS IN *SECURE* MESSAGE
  9421. SX1 CIORD *CIO* READ FUNCTION
  9422. MX0 -TTNPN MASK FOR PRUS
  9423. LX4 TTNPN-1-TTNPS RIGHT JUSTIFY PRUS
  9424. BX2 -X0*X4
  9425. RJ FIO DO FILE INPUT/OUTPUT
  9426.  
  9427. * QUEUE REQUEST TO LET *TAF* DO OTHER WORK UNTIL
  9428. * INPUT IS COMPLETE.
  9429.  
  9430. SX1 B4+TTFTW FWA OF EVENT FOR INPUT COMPLETE
  9431. SA3 RFBB SUBCP
  9432. SA4 RFBF FWA OF RECOVERY QUEUE ENTRY
  9433. SB3 X4
  9434. SX5 B0 NO TIME OUT ON EVENT
  9435. QTWCALL 0,QTEV WAIT FOR INPUT TO COMPLETE
  9436. RJ GRP GET REQUEST PARAMETERS AFTER WAIT
  9437. SA6 RFBB SAVE SUBCP
  9438. RJ STF SEARCH TERMINAL FILES FOR ORDINAL
  9439. RJ CRS CHECK RECOVERY STATUS FOR ERRORS
  9440.  
  9441. * RETURN MESSAGE LENGTH, UNIT, FORMAT EFFECTOR, AND
  9442. * TRANSPARENT MODE TO TASK.
  9443.  
  9444. SX6 TSNM RECOVERY STATUS NO MESSAGE
  9445. SA4 B4+TTBFW+TRMSW MESSAGE SOURCE
  9446. MX0 -TRMSN
  9447. LX4 TRMSN-1-TRMSS RIGHT JUSTIFY MESSAGE SOURCE
  9448. BX3 -X0*X4
  9449. ZR X3,RSE1 IF NO MESSAGE
  9450. ERRNZ TRMSW-TRMLW IF SOURCE AND LENGTH NOT IN SAME WORD
  9451. ERRNZ TRMLW-TRMUW IF LENGTH AND UNIT NOT IN SAME WORD
  9452. LX4 TRMLN-1-TRMLS+TRMSS-TRMSN+1
  9453. MX0 -TRMLN MASK FOR MESSAGE LENGTH
  9454. BX6 -X0*X4 MESSAGE LENGTH
  9455. SA1 X5+SEML FWA OF TASK MESSAGE LENGTH
  9456. SA3 X1+B5 USER MESSAGE LENGTH
  9457. SA6 X1+B5 RETURN MESSAGE LENGTH
  9458. SA6 RSEA
  9459. BX7 X3 SAVE USER MESSAGE LENGTH
  9460. LX4 TRMUN-1-TRMUS+TRMLS-TRMLN+1 MESSAGE UNITS
  9461. MX3 -TRMUN MASK FOR MESSAGE UNITS
  9462. SA7 RSEB
  9463. BX7 -X3*X4 MESSAGE UNITS
  9464. SA2 X5+SEMU FWA OF TASK MESSAGE UNITS
  9465. SA1 X2+B5 USER MESSAGE UNITS
  9466. RJ CMU CHECK MESSAGE UNITS
  9467. NZ X6,RSE1 IF INCORRECT MESSAGE UNITS
  9468. SA7 X2+B5 RETURN MESSAGE UNITS
  9469. SA7 RSEC
  9470. BX6 X4 SAVE USER MESSAGE UNITS
  9471. SA6 RSED
  9472. SA4 B4+TTBFW+TRMHW APPLICATION BLOCK HEADER
  9473. MX0 -AHNFN
  9474. ERRNZ AHNFN-AHPTN IF FORMAT AND TRANSPARENT FIELDS UNEQUAL
  9475. LX4 AHNFN-1-AHNFS RIGHT JUSTIFY FORMAT EFFECTOR
  9476. BX6 -X0*X4 FORMAT EFFECTOR
  9477. SA2 X5+SEFE FWA OF TASK FORMAT EFFECTOR
  9478. SA6 X2+B5 RETURN FORMAT EFFECTOR TO TASK
  9479. LX4 AHPTN-1-AHPTS+AHNFS-AHNFN+1 RIGHT JUSTIFY MODE
  9480. BX7 -X0*X4 TRANSPARENT MODE
  9481. SA3 X5+SETM FWA OF TASK TRANSPARENT MODE
  9482. SA7 X3+B5 RETURN TRANSPARENT MODE
  9483.  
  9484. * IF MESSAGE DOES NOT FIT IN TASK USER AREA OR TASK
  9485. * FL RETURN MESSAGE DOES NOT FIT STATUS TO TASK.
  9486.  
  9487. SA3 RSEB USER MESSAGE LENGTH
  9488. SA4 RSED USER MESSAGE UNITS
  9489. MX0 -6
  9490. SX4 X4-2 COMPUTE BITS IN USER MESSAGE
  9491. SX1 6
  9492. IX1 X4*X1
  9493. SB6 X1
  9494. SX2 61410B BITS PER MESSAGE UNIT
  9495. AX2 B6
  9496. BX2 -X0*X2
  9497. IX1 X2*X3 NUMBER OF BITS FOR USER AREA
  9498. SA3 RSEA FILE MESSAGE LENGTH
  9499. SA4 RSEC FILE MESSAGE UNIT
  9500. SX6 X4-2 COMPUTE BITS IN FILE MESSAGE
  9501. SX2 6
  9502. IX2 X6*X2
  9503. SB6 X2
  9504. SX2 61410B BITS PER MESSAGE UNIT
  9505. AX2 B6
  9506. BX2 -X0*X2
  9507. IX0 X2*X3 NUMBER OF BITS IN *RSECURE* MESSAGE
  9508. IX7 X1-X0 USER LENGTH - MESSAGE LENGTH
  9509. SX6 TSMU RECOVERY STATUS MESSAGE .GR. USER AREA
  9510. NG X7,RSE1 IF MESSAGE DOES NOT FIT IN USER AREA
  9511. RJ CML COMPUTE FILE MESSAGE LENGTH IN WORDS
  9512. SA2 RFBB SUBCP
  9513. SA3 X5+SEMA FWA OF MESSAGE
  9514. BX4 X6
  9515. SX3 X3
  9516. RJ CTF CHECK MESSAGE FIT IN TASK FL
  9517. NZ X6,RSE1 IF MESSAGE DOES NOT FIT IN TASK FL
  9518. BX6 X4 RESTORE REMAINDER OVER WORD
  9519.  
  9520.  
  9521. * MOVE *SECURE* MESSAGE TO TASK.
  9522.  
  9523. SX2 B4+TTBFW+TRMWL FWA OF MESSAGE ORIGIN
  9524. SX3 B5+X3 DESTINATION RELATIVE TO *TAF*
  9525. RJ MVD MOVE MESSAGE TO TASK
  9526. SX6 TSNE RECOVERY STATUS NO ERRORS
  9527.  
  9528. * RETURN STATUS TO TASK.
  9529.  
  9530. RSE1 SA4 X5+SEST FWA OF STATUS
  9531. SA6 X4+B5 RETURN STATUS TO TASK
  9532. EQ RFC RECOVERY FUNCTION COMPLETE PROCESSING
  9533.  
  9534. RSEA BSS 1 FILE MESSAGE LENGTH IN MESSAGE UNITS
  9535. RSEB BSS 1 USER MESSAGE LENGTH IN MESSAGE UNITS
  9536. RSEC BSS 1 FILE MESSAGE UNIT
  9537. RSED BSS 1 USER MESSAGE UNIT
  9538. .A ELSE
  9539. RSE SX6 TSRU RECOVERY STATUS RECOVERY UNAVAILABLE
  9540. SA4 X5+SEST FWA OF STATUS
  9541. SA6 X4+B5 RETURN STATUS TO TASK
  9542. EQ RFC RECOVERY FUNCTION COMPLETE PROCESSING
  9543. .A ENDIF
  9544. RUN SPACE 4,20
  9545. ** RUN - *RERUN* FUNCTION PROCESSING.
  9546. *
  9547. * ENTRY (X5) = SYSTEM REQUEST.
  9548. * (B4) = FWA OF RECOVERY FILE ENTRY.
  9549. * (B5) = SUBCP RA.
  9550. * (RFBA) = TERMINAL ORDINAL.
  9551. * (RFBB) = SUBCP.
  9552. * (RFBD) = RECOVERY FILE TERMINAL ORDINAL.
  9553. * (RFBF) = FWA OF RECOVERY QUEUE ENTRY.
  9554. * EVCB = FWA OF COMMUNICATION BLOCK EVENT.
  9555. *
  9556. * EXIT TO *RFC* IF UNABLE TO RERUN.
  9557. * TO *TSSC OTHERWISE.
  9558. * (B4) = FWA OF RECOVERY FILE ENTRY.
  9559. *
  9560. * USES A - 1, 2, 3, 6.
  9561. * X - 1, 2, 3, 6.
  9562. * B - 5, 6.
  9563. *
  9564. * CALLS ASN, PSU, RSC.
  9565.  
  9566.  
  9567. .A IFGE IPTAR,1
  9568. RUN BSS 0 ENTRY
  9569. SA2 B5-NUAPL+CB2C CHECK FOR RECOVERABLE TRANSACTION
  9570. SA2 X2+CBRTW
  9571. LX2 59-CBRTS
  9572. PL X2,RUN1 IF NOT RECOVERABLE
  9573. SX6 B4+ FWA OF RECOVERY FILE ENTRY
  9574. SA6 PSUA
  9575. SA1 RFBA GET TERMINAL ORDINAL
  9576. RJ ASN ASSIGN SEQUENCE NUMBER
  9577. SA2 B5-NUAPL+TRID
  9578. SA6 A2
  9579. BX6 X2
  9580. SA6 RUNB SAVE OLD ID
  9581. SA2 B5-NUAPL+CB2C
  9582. SX6 B5 SAVE SUBCP
  9583. SX2 X2
  9584. SA6 RUNA
  9585. RJ RSC RELEASE SECONDARY C.B.
  9586. SA2 RUNA
  9587. SB5 X2 RESTORE SUBCP RA
  9588. SB6 NCBC-1 NUMBER OF C.B.-S TO RESERVE
  9589. RJ PSU PROCESS USER *RERUN* FUNCTION
  9590. SA3 RUNB RESTORE OLD ID
  9591. SA2 RUNA
  9592. BX6 X3
  9593. SA6 X2-NUAPL+TRID
  9594. NZ X1,RFC IF UNABLE TO RERUN
  9595. SA2 RFBB SUBCP NUMBER
  9596. LX2 SCPAL
  9597. MX3 SCTMN
  9598. TA2 X2-CPAL+SCTMW,VCPA
  9599. LX3 SCTMS-59
  9600. BX6 X3+X2
  9601. SA6 A2 UPDATE SUBCP TABLE WORD TWO
  9602. EQ RFC COMPLETE PROCESSING
  9603.  
  9604. RUN1 SX6 TSNO NOT RERUNNABLE STATUS
  9605. SA1 X5+REST
  9606. SA6 X1+B5 SAVE STATUS
  9607. EQ RFC COMPLETE PROCESSING
  9608.  
  9609. RUNA BSS 1 (B5) SUBCP RA
  9610. RUNB BSS 1 SUBCP SEQUENCE NUMBER.
  9611. .A ELSE
  9612. RUN SX6 TSRU RECOVERY STATUS RECOVERY UNAVAILABLE
  9613. SA4 X5+REST FWA OF STATUS
  9614. SA6 X4+B5 RETURN STATUS
  9615. EQ RFC RECOVERY PROCESSING COMPLETE
  9616. .A ENDIF
  9617. SEC SPACE 4,20
  9618. ** SEC - *SECURE* FUNCTION PROCESSING.
  9619. *
  9620. * ENTRY (X5) = SYSTEM REQUEST.
  9621. * (B4) = FWA OF RECOVERY FILE ENTRY.
  9622. * (B5) = SUBCP RA.
  9623. * (RFBB) = SUBCP.
  9624. * (RFBD) = RECOVERY FILE TERMINAL ORDINAL.
  9625. * (RFBF) = FWA OF RECOVERY QUEUE ENTRY.
  9626. *
  9627. * EXIT TO *RFC*.
  9628. * (RFBB) = SUBCP.
  9629. * (B4) = FWA OF RECOVERY FILE ENTRY.
  9630. *
  9631. * EXIT TO *RFC*.
  9632. * USES X - 0, 1, 2, 3, 4, 6, 7.
  9633. * A - 1, 2, 3, 4, 6, 7.
  9634. * B - 3, 6.
  9635. *
  9636. * CALLS CFA, CMF, CML, CMU, CRS, FIO, FMH, GRP, MVE=,
  9637. * REM, SEL, STF.
  9638. *
  9639. * MACROS QTWCALL.
  9640.  
  9641.  
  9642. .A IFGE IPTAR,1
  9643. SEC SA1 X5+SEMU FWA OF *SECURE* MESSAGE UNIT
  9644. SX0 X1+
  9645. ZR X1,SEC1 IF NO MESSAGE UNIT SPECIFIED
  9646.  
  9647. * IF INCORRECT MESSAGE UNIT, RETURN INCORRECT MESSAGE UNIT
  9648. * STATUS TO TASK.
  9649.  
  9650. SA1 X1+B5 MESSAGE UNIT
  9651. SEC1 RJ CMU CHECK MESSAGE UNIT
  9652. NZ X6,SEC5 IF INCORRECT MESSAGE UNITS
  9653. SA1 X5+SEML FWA OF MESSAGE LENGTH
  9654. SX2 B0 DEFAULT IS NON-TRANSPARENT MODE
  9655. SA1 X1+B5 MESSAGE LENGTH
  9656.  
  9657. * BUILD *NAM* APPLICATION BLOCK HEADER.
  9658. * THE TASK REQUEST MAY SUPPLY FORMAT EFFECTOR AND
  9659. * TRANSPARENT MODE PARAMETERS. IF INCORRECT PARAMETERS
  9660. * RETURN STATUS TO TASK.
  9661.  
  9662. BX7 X1
  9663. MX3 60-AHLCN
  9664. LX7 AHLCS-AHLCN+1 POSITION MESSAGE LENGTH
  9665. SX6 TSLS RECOVERY STATUS LENGTH EXCEEDS *SEND*
  9666. BX3 X3*X7
  9667. NZ X3,SEC6 IF MESSAGE LENGTH EXCEEDS 12 BITS
  9668. SX3 B1+ DEFAULT IS NO FORMAT EFFECTOR
  9669. ZR X0,SEC3 IF NO MESSAGE UNIT SPECIFIED
  9670. SA1 X5+SEFE FWA OF FORMAT EFFECTOR
  9671. ZR X1,SEC3 IF NO FORMAT EFFECTOR SPECIFIED
  9672. SA3 X1+B5 FORMAT EFFECTOR
  9673. ZR X3,SEC2 IF FORMAT EFFECTOR
  9674. SX0 X3-1
  9675. SX6 TSIM RECOVERY STATUS INCORRECT FORMAT EFFECTOR
  9676. NZ X0,SEC5 IF INCORRECT FORMAT EFFECTOR
  9677. SEC2 SA1 X5+SETM FWA OF TRANSPARENT MODE
  9678. ZR X1,SEC3 IF TRANSPARENT MODE NOT SPECIFIED
  9679. SA2 X1+B5 TRANSPARENT MODE
  9680. ZR X2,SEC3 IF NON TRANSPARENT MODE
  9681. SX0 X2-1
  9682. SX6 TSIT RECOVERY STATUS INCORRECT TRANSPARENT MODE
  9683. NZ X0,SEC5 IF INCORRECT TRANSPARENT MODE
  9684. SEC3 LX2 AHPTS-0 POSITION TRANSPARENT MODE
  9685. BX7 X7+X2
  9686. LX3 AHNFS-0 POSITION FORMAT EFFECTOR
  9687. BX7 X7+X3
  9688. LX4 AHCTS-AHCTN+1 POSITION APPLICATION CHARACTER TYPE
  9689. BX7 X7+X4
  9690. SX3 BTMS SET MESSAGE BLOCK TYPE
  9691. LX3 AHBTS-AHBTN+1 POSITION BLOCK TYPE
  9692. BX7 X7+X3 APPLICATION BLOCK HEADER
  9693. SA7 B5-NUAPL+SECH
  9694.  
  9695. * COMPUTE MESSAGE LENGTH IN WORDS. IF MESSAGE UNIT IS DISPLAY
  9696. * COMPLETE MESSAGE WITH AN END OF LINE BYTE.
  9697.  
  9698. MX0 -AHLCN
  9699. LX4 59-59-AHCTS+AHCTN-1
  9700. BX3 -X0*X7 LENGTH OF MESSAGE IN MESSAGE UNITS
  9701. SB3 X3
  9702. ERRNZ AHLCS-AHLCN+1 IF LENGTH NOT RIGHT JUSTIFIED
  9703. RJ CML COMPUTE MESSAGE LENGTH IN WORDS AND BITS
  9704. SX0 X4-4
  9705. SA3 X5+SEMA FWA OF MESSAGE
  9706. SA2 SECA *SEND* REQUEST WORD 1
  9707. LX3 47-17 POSITION MESSAGE FWA
  9708. SB6 X6 REMAINDER OF MESSAGE OVER WORD BOUNDARY
  9709. BX6 X3+X2
  9710. LX3 59-59-47+17
  9711. BX6 X6+X1 ADD LENGTH OF MESSAGE
  9712. SA6 B5-NUAPL+SECR SAVE *SEND* REQUEST WORD 1
  9713. NZ X0,SEC4 IF NOT DISPLAY MESSAGE UNIT
  9714. SX3 X3+B5 FWA OF MESSAGE RELATIVE TO *TAF*
  9715. RJ SEL SET END LINE
  9716. MX0 60-AHLCN COMPUTE NEW MESSAGE LENGTH
  9717. SX3 10 10 CHARACTERS PER WORD
  9718. BX7 X0*X7 CLEAR OLD MESSAGE LENGTH
  9719. IX6 X1*X3 NEW LENGTH
  9720. BX7 X6+X7
  9721.  
  9722. * IF MESSAGE CANNOT BE SENT, RETURN MESSAGE CANNOT BE SENT
  9723. * STATUS TO TASK.
  9724.  
  9725. SEC4 SX6 TSLS RECOVERY STATUS LENGTH EXCEEDS *SEND*
  9726. SX0 X1-MAXWS
  9727. PL X0,SEC6 IF MESSAGE CANNOT BE SENT
  9728. SX6 TSTM RECOVERY STATUS LENGTH EXCEEDS TRANSACTION
  9729. SA3 B5-NUAPL+TOWC TOTAL OUTPUT WORD COUNT
  9730. IX0 X1+X3 ADD NEW MESSAGE
  9731. SX3 X0-MAXTO
  9732. PL X3,SEC6 IF LENGTH EXCEEDS TRANSACTION MAXIMUM
  9733. RJ CMF CHECK MESSAGE FIT IN RECOVERY FILE
  9734. NZ X6,SEC6 IF MESSAGE DOES NOT FIT IN FILE
  9735. SB6 B4+TTBFW FWA OF MESSAGE HEADER IN BUFFER
  9736. SX6 X1 SAVE MESSAGE LENGTH IN WORDS
  9737. SX1 B3 MESSAGE LENGTH IN SPECIFIED UNITS
  9738. SA6 SECB
  9739. SX3 MSSM MESSAGE SOURCE IS *SECURE* MESSAGE
  9740. RJ FMH FORMAT MESSAGE HEADER
  9741.  
  9742. * MOVE *SECURE* MESSAGE TO RECOVERY FILE BUFFER.
  9743.  
  9744. SA4 X5+SEMA FWA OF *SECURE* MESSAGE
  9745. SX2 X4+B5 FWA OF MESSAGE RELATIVE TO *TAF*
  9746. SX3 B4+TTBFW+TRMWL FWA OF DESTINATION
  9747. SA1 SECB MESSAGE LENGTH IN WORDS
  9748. RJ MVE= MOVE MESSAGE
  9749.  
  9750. * WRITE *SECURE* MESSAGE TO RECOVERY FILE.
  9751.  
  9752. SX1 MSSM MESSAGE SOURCE IS *SECURE* MESSAGE
  9753. SA2 RFBD TERMINAL ORDINAL IN RECOVERY FILE
  9754. RJ CFA COMPUTE FILE ADDRESS
  9755. SX5 B4+TTFTW FWA OF FET
  9756. SA2 SECB COMPUTE MESSAGE LENGTH IN PRUS
  9757. SX1 CIORW *CIO* REWRITE
  9758. SX2 X2+77B
  9759. AX2 6
  9760. RJ FIO DO FILE INPUT/OUTPUT
  9761.  
  9762. * QUEUE REQUEST TO LET *TAF* DO OTHER WORK UNTIL
  9763. * OUTPUT IS COMPLETE.
  9764.  
  9765. SX1 B4+TTFTW FWA OF EVENT IS FET
  9766. SA3 RFBB SUBCP OF EVENT
  9767. SA4 RFBF FWA OF RECOVERY QUEUE ENTRY
  9768. SB3 X4
  9769. SX5 B0 NO TIME OUT ON EVENT
  9770. QTWCALL 0,QTEV WAIT ON BIT 0 OF FET
  9771. RJ GRP GET REQUEST PARAMETERS AFTER WAIT
  9772. SA6 RFBB SAVE SUBCP
  9773. RJ STF SEARCH TERMINAL FILE FOR ORDINAL
  9774. RJ CRS CHECK RECOVERY STATUS FOR ERRORS
  9775. SX6 TSNE RECOVERY STATUS NO ERRORS
  9776.  
  9777. * IF MESSAGE USES DISPLAY MESSAGE UNITS, RESTORE CHARACTERS
  9778. * USED BY END OF LINE BYTE.
  9779.  
  9780. SA1 B5-NUAPL+SECH APPLICATION BLOCK HEADER
  9781. SA2 B5-NUAPL+SECR *SEND* REQUEST FOR *SECURE*
  9782. RJ REM RESTORE END OF MESSAGE
  9783.  
  9784. * SET MESSAGE SENT FLAG IN TASK SYSTEM AREA.
  9785.  
  9786. SA1 B5+CB1C INDICATE TRANSACTION SEND
  9787. MX7 CBSDN
  9788. LX7 CBSDS-59
  9789. BX7 X1+X7
  9790. SA7 A1
  9791.  
  9792. * RETURN STATUS TO TASK.
  9793.  
  9794. SEC5 SA4 X5+SEST FWA OF *SECURE* STATUS
  9795. SA6 X4+B5 RETURN STATUS
  9796. EQ RFC COMPLETE PROCESSING FOR RECOVERY FUNCTION
  9797.  
  9798. SEC6 SX7 B0+ CLEAR *SECURE* REQUEST PRESENT
  9799. SA7 B5-NUAPL+SECR
  9800. EQ SEC5 RETURN STATUS TO TASK
  9801.  
  9802. * WORD 1 OF *SEND* REQUEST FOR *SECURE* MESSAGE.
  9803. * THE *SEND* IS DONE WITH FINAL BLOCK FLAG SET AND AN *ABH*
  9804. * SPECIFIED. THE *SEND* WILL BE DONE DURING
  9805. * TRANSACTION CEASE PROCESSING.
  9806.  
  9807. SECA VFD 1/0,1/1,3/0,1/1,1/1,5/0,18/0,18/0,12/0
  9808. SECB BSS 1 MESSAGE LENGTH IN WORDS
  9809. .A ELSE
  9810. SEC SX6 TSRU RECOVERY STATUS RECOVERY UNAVAILABLE
  9811. SA4 X5+SEST FWA OF STATUS
  9812. SA6 X4+B5 RETURN STATUS TO TASK
  9813. EQ RFC RECOVERY FUNCTION COMPLETE
  9814. .A ENDIF
  9815. SRE SPACE 4,20
  9816. ** SRE - *RERUN* FUNCTION PROCESSING.
  9817. *
  9818. * ENTRY (X5) = SYSTEM REQUEST.
  9819. * (B4) = FWA OF RECOVERY FILE ENTRY.
  9820. * (B5) = SUBCP RA.
  9821. * (RFBB) = SUBCP.
  9822. * (RFBD) = RECOVERY FILE TERMINAL ORDINAL.
  9823. * (RFBF) = FWA OF RECOVERY QUEUE ENTRY.
  9824. * EVCB = FWA OF COMMUNICATION BLOCK EVENT.
  9825. *
  9826. * EXIT TO *RFC*, IF RECOVERY FUNCTION COMPLETE.
  9827. * (B4) = FWA OF RECOVERY FILE ENTRY.
  9828. * (RFBB) = SUBCP.
  9829. *
  9830. * USES X - 0, 4, 6.
  9831. * A - 4, 6.
  9832. * B - 6.
  9833. *
  9834. * CALLS PSU, RFC.
  9835.  
  9836.  
  9837. .A IFGE IPTAR,1
  9838. SRE BSS 0 ENTRY
  9839. MX6 CBLKN SET TERMINAL LOCK FLAG
  9840. SA4 B5-NUAPL+CB1C
  9841. LX6 CBLKS-59
  9842. BX6 X4+X6
  9843. SA6 A4
  9844. SX6 B4+ SAVE FWA OF RECOVERY FILE ENTRY
  9845. SA6 PSUA
  9846. SB6 -NCBC+1 COMPLEMENT OF NUMBER OF C.B.-S TO RESERVE
  9847. RJ PSU PROCESS SYSTEM *RERUN*
  9848. EQ RFC RECOVERY FUNCTION COMPLETE
  9849.  
  9850. .A ELSE
  9851. SRE SX6 TSRU RECOVERY STATUS RECOVERY UNAVAILABLE
  9852. SA4 X5+REST FWA OF STATUS
  9853. SA6 X4+B5 RETURN STATUS
  9854. EQ RFC RECOVERY PROCESSING COMPLETE
  9855. .A ENDIF
  9856. TIN SPACE 4,15
  9857. ** TIN - *TINVOKE* FUNCTION PROCESSING.
  9858. *
  9859. * USES X - 0, 1, 4, 6.
  9860. * A - 1, 4, 6.
  9861. * B - 4.
  9862. *
  9863. * EXIT TO *RFC*.
  9864. * (B4) = 0.
  9865. *
  9866. * CALLS ASN.
  9867.  
  9868.  
  9869. .A IFGE IPTAR,1
  9870. TIN SA1 X5+TIOI FWA OF OLD IDENTIFIER
  9871. ZR X1,TIN2 IF OLD IDENTIFIER NOT SPECIFIED
  9872. SA4 X1+B5 OLD IDENTIFIER
  9873.  
  9874. * IF NO OLD IDENTIFIER ASSIGN A NEW IDENTIFIER, ELSE
  9875. * ASSIGN OLD IDENTIFIER TO TRANSACTION.
  9876.  
  9877. BX6 X4 SET NEW IDENTIFER .EQ. OLD IDENTIFER
  9878. TIN1 SA1 X5+TINI FWA OF NEW IDENTIFIER
  9879. SA6 X1+B5 RETURN NEW IDENTIFIER TO TASK
  9880. SA6 B5-NUAPL+TRID SET IDENTIFIER IN TASK SYSTEM AREA
  9881.  
  9882. * RETURN STATUS TO TASK.
  9883.  
  9884. SX6 TSNE RECOVERY STATUS NO ERRORS
  9885. SA1 X5+TIST FWA OF STATUS
  9886. SA6 X1+B5 RETURN STATUS TO TASK
  9887. SB4 B0 DO NOT UNLOCK RECOVERY FILE
  9888. EQ RFC RECOVERY FUNCTION COMPLETE
  9889.  
  9890. * ASSIGN A NEW SEQUENCE NUMBER.
  9891.  
  9892. TIN2 SA4 B5-NUAPL+CB2C GET TERMINAL ORDINAL
  9893. MX0 -CBTON MASK FOR TERMINAL ORDINAL
  9894. LX4 CBTON-1-CBTOS RIGHT JUSTIFY TERMINAL ORDINAL
  9895. BX1 -X0*X4
  9896. RJ ASN ASSIGN SEQUENCE NUMBER
  9897. EQ TIN1 CHANGE SEQUENCE NUMBER FOR TRANSACTION
  9898.  
  9899. .A ELSE
  9900. TIN SX6 TSRU RECOVERY STATUS RECOVERY UNAVAILABLE
  9901. SA4 X5+TIST FWA OF STATUS
  9902. SA6 X4+B5 RETURN STATUS
  9903. EQ RFC RECOVERY FUNCTION COMPLETE
  9904.  
  9905. .A ENDIF
  9906. .A IFGE IPTAR,1
  9907. TITLE RECOVERY SUPPORTING ROUTINES.
  9908. CFA SPACE 4,15
  9909. ** CFA - COMPUTE FILE ADDRESS.
  9910. *
  9911. *
  9912. * ENTRY (X1) = MESSAGE SOURCE.
  9913. * (X2) = TERMINAL ORDINAL RELATIVE TO RECOVERY FILE.
  9914. * (X3) = INDEX, IF MESSAGE SOURCE EQUALS *MSRM*.
  9915. * (B4) = FWA OF RECOVERY FILE ENTRY.
  9916. *
  9917. * EXIT (X6) = FILE PRU ADDRESS.
  9918. *
  9919. * USES X - 0, 3, 4, 6, 7.
  9920. * A - 4.
  9921.  
  9922.  
  9923. CFA SUBR ENTRY/EXIT
  9924.  
  9925. * COMPUTE SIZE OF RECOVERY FILE IN PRUS PRECEDING THE
  9926. * DESIRED TERMINAL ORDINAL.
  9927.  
  9928. SX2 X2-1
  9929. ERRNZ TTNPN-TTNMN IF SIZE AND NUMBER ARE NOT EQUAL
  9930. SA4 B4+TTNPW GET NUMBER AND SIZE OF RECOVERY UNITS
  9931. MX0 -TTNPN MASK FOR SIZE AND NUMBER OF USER DATA
  9932. ERRNZ TTNPN-TTNMN IF SIZE AND NUMBER ARE NOT EQUAL
  9933. ERRNZ TTNPW-TTNMW IF NUMBER AND SIZE NOT IN SAME WORD
  9934. LX4 TTNPN-1-TTNPS RIGHT JUSTIFY NUMBER OF PRUS
  9935. BX7 -X0*X4 USER AREA SIZE IN PRUS
  9936. LX4 TTNMN-1-TTNMS-TTNPN+1+TTNPS
  9937. BX4 -X0*X4 NUMBER OF USER MESSAGES
  9938. SX4 X4+1 ADD ONE MESSAGE FOR *SECURE*
  9939. IX4 X7*X4 SIZE OF USER AREA FOR RECOVERY UNIT
  9940. SX6 TRUPL+MRIPL+X4 ADD STATUS AND TRANSACTION INPUT
  9941. IX6 X2*X6 TOTAL SIZE FOR RECOVERY UNITS
  9942. SX6 X6+TRHPL+1 ADD RECOVERY FILE HEADER
  9943.  
  9944. * (X6) CONTAINS THE PRU ADDRESS FOR RECOVERABLE
  9945. * *TSTAT/WSTAT* DATA.
  9946. * DETERMINE MESSAGE SOURCE AND COMPUTE RECOVERY FILE
  9947. * ADDRESS INTO TERMINAL ORDINAL-S RECOVERY UNIT.
  9948.  
  9949. SX0 X1-MSTM
  9950. ZR X0,CFA1 IF TRANSACTION MESSAGE
  9951. SX0 X1-MSSM
  9952. ZR X0,CFA2 IF *SECURE* MESSAGE
  9953. SX0 X1-MSST
  9954. ZR X0,CFAX IF *TSTAT/*WSTAT* MESSAGE
  9955.  
  9956. * COMPUTE ADDRESS FOR *RPUT* MESSAGE.
  9957.  
  9958. IX3 X3*X7 USER INDEX * USER DATA SIZE
  9959. SX7 X3+TRUPL+MRIPL ADD STATUS AND TRANSACTION SIZE
  9960. IX6 X7+X6 ADD SIZE FOR PREVIOUS RECOVERY UNITS
  9961. EQ CFAX RETURN
  9962.  
  9963. * COMPUTE ADDRESS FOR TRANSACTION MESSAGE.
  9964.  
  9965. CFA1 SX6 X6+TRUPL ADD STATUS AREA SIZE
  9966. EQ CFAX RETURN
  9967.  
  9968. * COMPUTE ADDRESS FOR *SECURE* MESSAGE.
  9969.  
  9970. CFA2 SX6 X6+TRUPL+MRIPL ADD STATUS AND TRANSACTION SIZE
  9971. EQ CFAX RETURN
  9972. .A ENDIF
  9973. CID SPACE 4,10
  9974. ** CID - CLEAR *NEWID* IDENTIFIER.
  9975. *
  9976. * ENTRY (B2) = FWA OF TASK SYSTEM AREA.
  9977. * (B7) = SUBCP ADDRESS.
  9978. * (X3) = RETURN ADDRESS UPON COMPLETION.
  9979. *
  9980. * EXIT TO *WFP0* IF RECOVERY INSTALLED.
  9981. *
  9982. * USES X - 0, 1, 2, 3, 5, 6, 7.
  9983. * A - 1, 2, 3, 5, 6, 7.
  9984. * B - 3, 5, 6.
  9985.  
  9986.  
  9987. CID SUBR ENTRY/EXIT
  9988. .A IFEQ IPTAR,1 IF AUTOMATIC RECOVERY INSTALLED
  9989. BX7 X3 SAVE RETURN ADDRESS
  9990. SA1 CIDA PREPARE *WSTAT* REQUEST
  9991. SA2 A1+B1
  9992. SA7 B2+RWTS
  9993. SX7 SUAC+CBCH+5
  9994. BX6 X1
  9995. SB3 X7
  9996. SA6 B2+LRA1 FAKE SYSTEM REQUEST
  9997. SA6 B2+NUAPL+SUAC+CBCH *WSTAT* REQUEST BLOCK
  9998. SA7 A6+B1 ADDRESS OF STATUS
  9999. SA1 B7 PREPARE ENTRY CONDITIONS FOR *WFP0*
  10000. SB5 X1 TASK RA
  10001. SX6 X7+B1
  10002. SX7 X6+B1
  10003. SA6 A7+B1 ADDRESS OF *NEWID* PARAMETER
  10004. SA7 A6+B1 ADDRESS OF *NEWID* VALUE
  10005. BX6 X6-X6
  10006. SA6 A7+B1 PARAMETER TERMINATION WORD
  10007. SA7 B5+B3 STATUS
  10008. BX7 X2 *NEWID*
  10009. SA7 A7+B1
  10010. SA6 A7+1
  10011. MX0 -SCFLN
  10012. SA3 B2+CB2C GET TERMINAL ORDINAL
  10013. LX1 SCFLN-1-SCFLS
  10014. LX3 CBTON-1-CBTOS
  10015. SA5 B2+LRA1 SYSTEM REQUEST
  10016. BX1 -X0*X1 TASK FL
  10017. SX7 X3
  10018. SB6 B1 NUMBER OF PARAMETERS REQUIRED
  10019. EQ WFP0 CLEAR *NEWID* ON *CRF*
  10020.  
  10021. CIDA VFD 24/3LCTI,18/RFWS,18/SUAC+CBCH+1
  10022. DATA 5HNEWID
  10023. .A ELSE
  10024. EQ CIDX RETURN
  10025. .A ENDIF
  10026. .A IFEQ IPTAR,1 IF AUTOMATIC RECOVERY INSTALLED
  10027. CMF SPACE 4,10
  10028. ** CMF - CHECK MESSAGE FIT.
  10029. *
  10030. * ENTRY (B4) = FWA OF RECOVERY FILE.
  10031. * (X1) = USER MESSAGE LENGTH IN WORDS.
  10032. *
  10033. * EXIT (X6) = 0, IF MESSAGE FITS IN RECOVERY FILE.
  10034. * *TSMR*, IF MESSAGE DOES NOT FIT.
  10035. *
  10036. * USES X - 0, 2, 6.
  10037. * A - 2.
  10038.  
  10039.  
  10040. CMF SUBR ENTRY/EXIT
  10041. SX6 B0 INITIALIZE TO MESSAGE FITS
  10042. MX0 -TTNWN MASK FOR RECOVERY MESSAGE SIZE
  10043. SA2 B4+TTNWW RECOVERY MESSAGE SIZE IN WORDS
  10044. LX2 TTNWN-1-TTNWS RIGHT JUSTIFY RECOVERY MESSAGE SIZE
  10045. BX0 -X0*X2
  10046. IX0 X0-X1 RECOVERY FILE MESSAGE SIZE - USER SIZE
  10047. PL X0,CMFX IF USER MESSAGE FITS IN RECOVERY FILE
  10048. SX6 TSMR USER MESSAGE .GT. RECOVERY RECORD
  10049. EQ CMFX RETURN
  10050. CMU SPACE 4,10
  10051. ** CMU - CHECK MESAGE UNITS.
  10052. *
  10053. * ENTRY (X1) = MESSAGE UNIT.
  10054. *
  10055. * EXIT (X6) = 0, IF MESSAGE UNIT VALID.
  10056. * *RSIU*, IF MESSAGE UNIT INCORRECT.
  10057. * (X4) = MESSAGE UNIT.
  10058. *
  10059. * USES X - 3, 4, 6.
  10060.  
  10061.  
  10062. CMU1 SX6 TSIL RECOVERY STATUS INCORRECT UNIT
  10063.  
  10064. CMU SUBR ENTRY/EXIT
  10065. SX6 B0+ INITIALIZE TO VALID UNIT
  10066. SX4 4 SET TO DISPLAY MESSAGE UNIT
  10067.  
  10068. * IF MESSAGE UNIT IS NOT SPECIFIED, USE DISPLAY CODE.
  10069.  
  10070. ZR X1,CMUX IF NO MESSAGE UNIT GIVEN
  10071.  
  10072. * MESSAGE UNIT MUST BE IN THE RANGE OF 2 - 4.
  10073.  
  10074. SX3 X1-5
  10075. PL X3,CMU1 IF MESSAGE UNIT TOO LARGE
  10076. SX3 X1-2
  10077. NG X2,CMU1 IF MESSAGE UNITS TOO SMALL
  10078. SX4 X1+
  10079. EQ CMUX RETURN
  10080. CRS SPACE 4,15
  10081. ** CRS - CHECK RECOVERY STATUS.
  10082. *
  10083. * ENTRY (B4) = FWA OF COMMUNICATIONS RECOVERY FILE ENTRY.
  10084. *
  10085. * EXIT *TAF* ABORTS IF ERROR OCCURRED ON RECOVERY FILE.
  10086. *
  10087. * USES X - 0, 1, 4.
  10088. * A - 4.
  10089. * B - 2, 5.
  10090. *
  10091. * CALLS SNM.
  10092. *
  10093. * MACROS ABORT, MESSAGE.
  10094.  
  10095.  
  10096. CRS SUBR ENTRY/EXIT
  10097.  
  10098. * CHECK FOR RECOVERY FILE ERRORS.
  10099.  
  10100. SA4 B4+TTFTW FIRST WORD OF GET
  10101. MX0 -8
  10102. LX4 7-17 RIGHT JUSTIFY STATUS
  10103. BX1 -X0*X4
  10104. ZR X1,CRSX IF NO ERRORS, RETURN
  10105.  
  10106. * ABORT *TAF* ON RECOVERY FILE ERRORS.
  10107.  
  10108. MX0 42
  10109. LX4 59-59-7+17
  10110. BX1 X0*X4 FILE NAME
  10111. SB2 1RX REPLACEMENT CHARACTER IN MESSAGE
  10112. SB5 CRSA FWA OF MESSAGE
  10113. RJ SNM SET NAME IN MESSAGE
  10114. MESSAGE CRSA * CRF RECOVERY UNIT ERROR - XXXXXXX.*
  10115. ABORT
  10116.  
  10117. CRSA DATA C* CRF RECOVERY UNIT ERROR - XXXXXXX.*
  10118. CRU SPACE 4,15
  10119. ** CRU - CHECK RECOVERY UNIT.
  10120. *
  10121. * ENTRY (X5) = FWA OF TASK REQUEST PARAMETERS.
  10122. * (B4) = FWA OF RECOVERY FILE ENTRY.
  10123. * (B5) = FWA OF TASK RA.
  10124. *
  10125. * EXIT (X3) = USER RECOVERY UNIT INDEX.
  10126. * (X6) = 0, IF NO ERRORS.
  10127. * *TSII*, IF INCORRECT INDEX.
  10128. *
  10129. * USES X - 0, 3, 4, 6.
  10130. * A - 3, 4.
  10131.  
  10132.  
  10133. CRU1 SX6 TSII INCORRECT INDEX
  10134.  
  10135. CRU SUBR ENTRY/EXIT
  10136. MX0 -TTNMN MASK OF NUMBER OF USER MESSAGES
  10137. BX6 X6-X6 NO ERROR
  10138.  
  10139. * THE TASK RECOVERY UNIT INDEX MUST -
  10140. * 1. NOT BE EQUAL TO ZERO
  10141. * 2. NOT BE LESS THAN ZERO
  10142. * 3. BE .LE. TO MAXIMUM NUMBER OF MESSAGES ALLOWED.
  10143.  
  10144. SA3 X5+RGIN FWA OF TASK RECOVERY UNIT INDEX
  10145. SA4 B4+TTNMW NUMBER OF USER MESSAGES
  10146. SA3 X3+B5 TASK RECOVERY UNIT INDEX
  10147. ZR X3,CRU1 IF INDEX ERROR
  10148. NG X3,CRU1 IF INDEX ERROR
  10149. LX4 TTNMN-1-TTNMS RIGHT JUSTIFY MAXIMUM MESSAGES
  10150. BX0 -X0*X4
  10151. IX0 X0-X3
  10152. NG X0,CRU1 IF MORE THAN MAXIMUM NUMBER OF MESSAGES
  10153. EQ CRUX RETURN WITH NO ERRORS
  10154. CTF SPACE 4,15
  10155. ** CTF - CHECK TASK FIT.
  10156. *
  10157. * ENTRY (X1) = MESSAGE SIZE IN WORDS.
  10158. * (X2) = SUBCP.
  10159. * (X3) = FWA OF MESSAGE.
  10160. *
  10161. * EXIT (X6) = 0, IF MESSAGE FITS IN SUBCP FL.
  10162. * *RSMU*, IF MESSAGE DOES NOT FIT IN SUBCP FL.
  10163. *
  10164. * USES X - 0, 2, 6, 7.
  10165. * A - 2.
  10166.  
  10167.  
  10168. CTF SUBR ENTRY/EXIT
  10169. SX6 B0 INITIALIZE TO MESSAGE FITS IN SUBCP
  10170. LX2 SCPAL
  10171. TA2 X2-CPAL,VCPA GET SUBCP FL
  10172. LX2 SCFLN-1-SCFLS RIGHT JUSTIFY FL
  10173. ERRNZ SCFLN-18 IF NOT 18 BIT FIELD
  10174. SX0 X2 FL
  10175. IX7 X1+X3 END OF MESSAGE IN SUBCP
  10176. IX7 X0-X7 FL - END OF MESSAGE
  10177. PL X7,CTFX IF MESSAGE FITS IN SUBCP
  10178. SX6 TSMU RECOVERY STATUS MESSAGE .GR. USER AREA
  10179. EQ CTFX RETURN
  10180. FMH SPACE 4,20
  10181. ** FMH - FORMAT MESSAGE HEADER.
  10182. *
  10183. * ENTRY (X1) = MESSAGE LENGTH.
  10184. * (X3) = MESSAGE SOURCE.
  10185. * (X4) = MESSAGE UNIT.
  10186. * (X7) = APPLICATION BLOCK HEADER.
  10187. * (B6) = FWA OF MESSAGE HEADER.
  10188. *
  10189. * EXIT MESSAGE HEADER IN RECOVERY UNIT IS FORMATTED.
  10190. * (X1) = MESSAGE LENGTH ON ENTRY.
  10191. * (X4) = MESSAGE UNIT ON ENTRY.
  10192. *
  10193. * USES X - 3, 4, 6, 7.
  10194. * A - 7.
  10195. *
  10196. * MACROS CLOCK, DATE.
  10197.  
  10198.  
  10199. FMH SUBR ENTRY/EXIT
  10200. LX3 TRMSS-TRMSN+1 POSITION MESSAGE SOURCE
  10201. LX4 TRMUS-TRMUN+1 POSITION MESSAGE UNIT
  10202. SA7 B6+TRMHW SAVE APPLICATION BLOCK HEADER
  10203. BX6 X3+X4
  10204. LX4 59-59-TRMUS+TRMUN-1
  10205. ERRNZ TRMLS-TRMLN+1 IF MESSAGE LENGTH NOT RIGHT JUSTIFIED
  10206. BX7 X1+X6
  10207. SA7 B6+TRMSW
  10208. ERRNZ TRMSW-TRMLW IF SOURCE AND LENGTH NOT IN SAME WORD
  10209. ERRNZ TRMLW-TRMUW IF LENGTH AND UNITS NOT IN SAME WORD
  10210. DATE B6+TRMDW PUT DATE IN MESSAGE HEADER
  10211. CLOCK B6+TRMTW PUT TIME IN MESSAGE HEADER
  10212. EQ FMHX RETURN
  10213. GRP SPACE 4,20
  10214. ** GRP - GET REQUEST PARAMETERS.
  10215. *
  10216. * ENTRY (X2) = FIRST WORD OF QUEUE ENTRY.
  10217. * (B3) = FWA OF QUEUE ENTRY RELATIVE TO SUBCP.
  10218. * (B5) = FWA OF QUEUE ENTRY RELATIVE TO *TAF*.
  10219. *
  10220. * EXIT (X5) = SYSTEM REQUEST.
  10221. * THE ADDRESS PORTION OF THE REQUEST IN
  10222. * BITS 17-0 IS RELATIVE TO THE RA OF *TAF*.
  10223. * (X6) = SUBCP.
  10224. * (X7) = TERMINAL ORDINAL.
  10225. * (X1) = TERMINAL STATUS TABLE ORDINAL.
  10226. * (B5) = RA OF SUBCP.
  10227. * (B6) = FWA OF QUEUE ENTRY RELATIVE TO *TAF*
  10228. *
  10229. * USES X - 0, 1, 2, 3, 5, 6, 7.
  10230. * A - 1, 3, 5.
  10231. * B - 5, 6.
  10232.  
  10233.  
  10234. GRP SUBR ENTRY/EXIT
  10235. MX0 -QWSPN MASK FOR SUBCP
  10236. LX2 QWSPN-1-QWSPS RIGHT JUSTIFY SUBCP
  10237. BX6 -X0*X2
  10238. LX6 SCPAL COMPUTE TASK SYSTEM AREA FWA
  10239. SB6 B5 FWA OF QUEUE ENTRY
  10240. SB5 B0 RA FOR NO SUBCP
  10241. ZR X6,GRP1 IF NOT SUBCP REQUEST
  10242. TA3 X6-CPAL,VCPA
  10243. ERRNZ SCRAS-17 IF RA NOT IN BITS 0-17
  10244. AX6 SCPAL
  10245. SB5 X3 SUBCP RA
  10246. GRP1 SA5 B6+QRECW RECOVERY REQUEST
  10247. SX3 B5 COMPUTE REQUEST ADDRESS RELATIVE TO *TAF*
  10248. IX5 X5+X3
  10249. SA1 B6+QRTOW GET TERMINAL FOR RECOVERY REQUEST
  10250. ERRNZ QRTOS-17 IF TERMINAL ORDINAL NOT IN 17-0
  10251. SX7 X1+
  10252. EQ GRPX RETURN
  10253. IRU SPACE 4,15
  10254. ** IRU - INITIALIZE RECOVERY UNIT.
  10255. *
  10256. * ENTRY (X3) = RECOVERY UNIT NAME.
  10257. * (B4) = FWA OF RECOVERY UNIT ENTRY.
  10258. *
  10259. * EXIT RECOVERY UNIT INITIALIZED.
  10260. *
  10261. * USES X - 6, 7.
  10262. * A - 6, 7.
  10263. *
  10264. * MACROS CLOCK, DATE.
  10265.  
  10266.  
  10267. IRU SUBR ENTRY/EXIT
  10268. BX7 X3 PUT NAME IN RECOVERY UNIT
  10269. SX6 B0
  10270. SA7 B4+TTBFW+TRUNW
  10271. SA6 B4+TTBFW+TRCSW CLEAR STEP, TYPE AND DATA MANAGERS
  10272. SA6 B4+TTBFW+TRCNW CLEAR SEQUENCE NUMBER
  10273. SA6 B4+TTBFW+TROIW CLEAR OLDID
  10274. SA6 B4+TTBFW+TRNIW CLEAR NEWID
  10275. DATE B4+TTBFW+TRCDW PUT DATE IN RECOVERY UNIT
  10276. CLOCK B4+TTBFW+TRCTW PUT TIME IN RECOVERY UNIT
  10277. EQ IRUX RETURN
  10278. PSU SPACE 4,20
  10279. ** PSU - PROCESS SYSTEM AND USER *RERUN* FUNCTION.
  10280. *
  10281. * ENTRY (X0) = FWA OF COMMUNICATION BLOCK.
  10282. * (X5) = FWA OF RECOVERY FILE ENTRY.
  10283. * (B4) = FWA OF RECOVERY FILE ENTRY.
  10284. * (B5) = SUBCP RA.
  10285. * (B6) = NUMBER OF C.B.-S TO REQUEST FOR RERUN.
  10286. * (RFBB) = SUBCP.
  10287. * (RFBD) = RECOVERY FILE TERMINAL ORDINAL.
  10288. * (RFBF) = FWA OF RECOVERY QUEUE ENTRY.
  10289. * EVCB = FWA OF COMMUNICATION BLOCK EVENT.
  10290. *
  10291. * EXIT TO *RFB*, IF WAITING FOR COMMUNICATION BLOCKS.
  10292. * (B4) = FWA OF RECOVERY FILE ENTRY.
  10293. * (X1) = 0, IF INPUT PROCESSED.
  10294. * .NE. ZERO OTHERWISE.
  10295. * (RFBB) = SUBCP.
  10296. *
  10297. * USES X - ALL.
  10298. * A - 1, 2, 3, 4, 6, 7.
  10299. * B - 3, 4, 6.
  10300. *
  10301. * CALLS CFA, CRS, FFCB, FIO, FNC, GRP, MVE=, PRIN, RLC,
  10302. * RSP, STF.
  10303. *
  10304. * MACROS QTWCALL.
  10305.  
  10306.  
  10307.  
  10308. PSU SUBR ENTRY/EXIT
  10309. SX0 B0+
  10310. RJ FFCB GET A COMMUNICATION BLOCK
  10311. ZR X0,PSU1 IF NO COMMUNICATION BLOCK
  10312. SX6 X0
  10313. SA1 X0
  10314. SA6 PSUF FWA OF CHAIN OF COMMUNICATION BLOCKS
  10315. SA6 B5-NUAPL+RERU
  10316. SA6 PSUB FWA OF CURRENT COMMUNICATION BLOCK
  10317. RJ FNC FIND AND CHAIN COMMUNICATION BLOCKS
  10318. ZR B6,PSU2 IF ALL COMMUNICATION BLOCKS AVAILABLE
  10319.  
  10320. * IF ALL COMMUNICATION BLOCKS ARE NOT AVAILABLE RELEASE
  10321. * RESERVED COMMUNICATION BLOCKS AND RELEASE RECOVERY FILE LOCK.
  10322.  
  10323. SA2 PSUF FWA OF CHAINED COMMUNICATION BLOCKS
  10324. RJ RLC RELEASE CHAINED COMMUNICATION BLOCKS
  10325. SX6 B0+ CLEAR EVCB
  10326. SA6 EVCB INDICATE NO C.B. AVAILABLE
  10327. PSU1 SA1 PSUA FWA OF RECOVERY FILE ENTRY
  10328. SA4 X1+TTLKW RECOVERY FILE LOCK
  10329. MX7 -60+TTLKN
  10330. ERRNZ TTLKS-59 IF LOCK FIELD NOT IN BIT 59
  10331. BX6 -X7*X4 CLEAR LOCK
  10332. ERRNZ TTEVW-TTLKW IF LOCK AND EVENT NOT IN SAME WORD
  10333. LX7 TTEVS-TTLKS
  10334. ERRNZ TTLKN-TTEVN IF EVENT AND LOCK FIELDS NOT EQUAL
  10335. BX6 X7+X6 SET RELEASE FILE EVENT
  10336. SA6 A4
  10337.  
  10338. * QUEUE WAITING FOR COMMUNICATION BLOCKS.
  10339.  
  10340. SA4 RFBF FWA OF RECOVERY QUEUE ENTRY
  10341. SB3 X4
  10342. SX1 EVCB FWA OF EVENT FOR COMMUNICATION BLOCKS
  10343. SA3 RFBB SUBCP
  10344. SX5 B0 NO TIME OUT ON EVENT
  10345. QTWCALL 59,QTEV WAIT FOR FREE COMMUNICATION BLOCK EVENT
  10346. RJ GRP GET REQUEST PARAMETERS
  10347. SX1 B5
  10348. IX5 X5-X1
  10349. EQ RFB RECOVERY BEGIN PROCESSING
  10350.  
  10351. * READ RECOVERY FILE TO OBTAIN TRANSACTION RECOVERY
  10352. * UNIT AND STATUS.
  10353.  
  10354. PSU2 SX1 MSST MESSAGE SOURCE IS *TSTAT*
  10355. SA3 PSUA FWA OF RECOVERY FILE ENTRY
  10356. SA2 RFBD TERMINAL IN RECOVERY FILE ORDINAL
  10357. SB4 X3
  10358. RJ CFA COMPUTE FILE ADDRESS FOR *TSTAT* DATA
  10359. SX5 B4+TTFTW FWA OF FET
  10360. SX2 TRUPL+MRIPL NUMBER OF PRUS TO READ
  10361. SX1 CIORD *CIO* READ
  10362. RJ FIO DO FILE INPUT/OUTPUT
  10363.  
  10364. * QUEUE REQUEST TO LET *TAF* DO OTHER WORK UNTIL
  10365. * INPUT IS COMPLETE.
  10366.  
  10367. SX1 B4+TTFTW FWA OF INPUT COMPLETE EVENT
  10368. SA3 RFBB SUBCP
  10369. SX5 B0 NO TIME OUT ON EVENT
  10370. SA4 RFBF FWA OF RECOVERY QUEUE ENTRY
  10371. SB3 X4
  10372. QTWCALL 0,QTEV WAIT FOR INPUT TO COMPLETE
  10373. RJ GRP GET REQUEST PARAMETERS AFTER WAIT
  10374. SA7 RFBA SAVE TERMINAL ORDINAL
  10375. SA6 RFBB SAVE SUBCP
  10376. SX7 B3+ SAVE FWA OF QUEUE ENTRY
  10377. SA7 RFBF
  10378. RJ STF SEARCH TERMINAL FILE FOR TERMINAL ORDINAL
  10379. SX7 X3+
  10380. SA7 PSUG RECOVERY FILE TERMINAL ORDINAL
  10381. RJ CRS CHECK RECOVERY STATUS FOR ERRORS
  10382.  
  10383. * IF TRANSACTION IS NOT RECOVERABLE RETURN TRANSACTION
  10384. * IS NOT RECOVERABLE STATUS TO TASK.
  10385.  
  10386. SX6 B4+
  10387. SA6 PSUA FWA OF RECOVERY FILE ENTRY
  10388. SA1 B4+TTBFW+TRCSW TRANSACTION *STEP*
  10389. MX0 -TRCSN
  10390. ERRNZ TRCSS-TRCSN+1 IF *STEP* NOT RIGHT JUSTIFIED
  10391. BX2 -X0*X1 *STEP*
  10392. SX6 TSNO RECOVERY STATUS NOT RERUNNABLE
  10393. SX0 X2-CSNR
  10394. ZR X0,PSU8 IF TRANSACTION NOT RERUNNABLE
  10395. SX0 X2-CSCE
  10396. ZR X0,PSU8 IF CEASE/JOB END
  10397. SX0 X2-CSTA
  10398. ZR X0,PSU8 IF TRANSACTION ABORTED
  10399. SX0 X2-CSTN
  10400. ZR X0,PSU8 IF TRANSACTION NO LONGER RERUNNABLE
  10401.  
  10402. * MOVE TRANSACTION INPUT FROM RECOVERY FILE TO COMMUNICATION
  10403. * BLOCKS.
  10404.  
  10405. SX7 B4+TTBFW+TRUWL+TRMWL FWA OF INPUT IN RECOVERY FILE
  10406. SA7 PSUC
  10407. SA1 B4+TTBFW+TRUWL+TRMLW WORDS OF TRANSACTION INPUT
  10408. ERRNZ TRMLS-TRMLN+1 IF FIELD NOT RIGHT JUSTIFIED
  10409. MX0 -TRMLN
  10410. BX4 -X0*X1
  10411. ZR X4,PSU8 IF NO TRANSACTION INPUT
  10412. SX2 X7
  10413. IX6 X2+X4 END OF INPUT IN RECOVERY BUFFER
  10414. SA6 PSUD
  10415. SA1 B5-NUAPL+RERU RESTORE C.B. ADDRESS
  10416. BX7 X1
  10417. SA7 PSUB
  10418. PSU3 SX1 CMBL LENGTH TO MOVE IN WORDS
  10419. SA3 PSUB FWA OF COMMUNICATION BLOCK
  10420. SA4 X3 SAVE C.B. LINK
  10421. SX7 X4
  10422. SA7 PSUF
  10423. RJ MVE= MOVE INPUT TO COMMUNICATION BLOCK
  10424.  
  10425. * UPDATE TRANSACTION SEQUENCE NUMBER IN COMMUNICATION BLOCK.
  10426.  
  10427. SA1 PSUB FWA OF COMMUNICATION BLOCK
  10428. SA4 X1+CBTSW SEQUENCE NUMBER IN SYSTEM HEADER
  10429. SA2 B5-NUAPL+TRID CURRENT IDENTIFIER
  10430. MX0 60-CBTSN-CBNCN
  10431. BX7 X0*X4 CLEAR SEQUENCE NUMBER AND C.B. LINK
  10432. LX2 CBTSS-CBTSN+1
  10433. BX7 X7+X2 INSERT NEW SEQUENCE NUMBER
  10434. SA3 X1+CMBHL+TRSQ-SUAC
  10435. SA7 A4 UPDATE FWA OF C.B.
  10436. BX6 X0*X3
  10437. BX6 X6+X2
  10438. SX0 TSTLLE LENGTH OF TST ENTRY
  10439. SA6 A3
  10440.  
  10441. * INDICATE TRANSACTION IS BEING RESTARTED.
  10442.  
  10443. SA2 X1+CBTRW RESTART ATTRIBUTE
  10444. MX6 CBTRN
  10445. LX6 CBTRS-59
  10446. BX7 X2+X6
  10447. LX6 CBLCS-59-CBTRS+59
  10448. BX7 X6+X7 SET INPUT LOGGED COMPLETE
  10449. SA7 A2
  10450.  
  10451. * UPDATE TERMINAL ORDINAL AND TERMINAL STATUS TABLE
  10452. * ADDRESS IN COMMUNICATION BLOCK.
  10453.  
  10454. SA2 RFBA TST ORDINAL
  10455. IX3 X0*X2
  10456. TX4 X3,VTST FWA OF TERMINAL STATUS TABLE ENTRY
  10457. LX2 CBTOS-CBTON+1 POSITION TERMINAL ORDINAL
  10458. LX4 CBTAS-CBTAN+1 POSITION TERMINAL ADDRESS
  10459. BX2 X2+X4
  10460. SA1 PSUB
  10461. SA3 X1+CBFWW FWA OF COMMUNICATION BLOCK
  10462. BX6 X2+X1
  10463. MX0 CBRSN+CBUSN READ AND UPDATE SECURITY
  10464. LX0 CBRSS-59
  10465. BX4 X0*X3 SAVE READ AND UPDATE SECURITY
  10466. BX6 X6+X4
  10467. SA6 A3
  10468. SA2 PSUC CURRENT ADDRESS IN RECOVERY BUFFER
  10469. SA3 PSUD ADDRESS OF EOI
  10470. SX7 X2+CMBL NEXT ADDRESS IN RECOVERY BUFFER
  10471. IX6 X3-X7
  10472. SA7 A2
  10473. SX2 X7
  10474. SA3 PSUF FWA OF CHAINED COMMUNICATION BLOCKS
  10475. SX7 X3
  10476. SA7 PSUB CURRENT COMMUNICATION BLOCK
  10477. ZR X6,PSU4 IF NO MORE RECOVERY INPUT
  10478. SA4 A4 GET FWA OF LAST C.B.
  10479. BX7 X4+X7 ADD C.B. LINK
  10480. SA7 A4+
  10481. EQ PSU3 CONTINUE TRANSFER INPUT TO NEXT C.B.
  10482.  
  10483. * RETURN APPLICATION BLOCK HEADER TO NETWORK COMMUNICATION
  10484. * TABLE.
  10485.  
  10486. PSU4 MX0 -TSCNN GET ABH
  10487. ERRNZ TSARW-TSCNW IF FIELDS IN DIFFERENT WORDS
  10488. LX6 TSCNN-1-TSCNS RIGHT JUSTIFY CONNECTION NUMBER
  10489. BX2 -X0*X6
  10490. ZR X2,PSU5 IF NO NETWORK CONNECTION
  10491. SX3 TNCTL NETWORK COMMUNICATION TABLE ENTRY LENGTH
  10492. IX4 X2*X3
  10493. SX4 X4+TNAHW
  10494. TX3 X4,VNCT
  10495. SA1 B4+TTBFW+TRUWL+TRMHW APPLICATION BLOCK HEADER
  10496. BX7 X1
  10497. SA7 X3 APPLICATION BLOCK HEADER
  10498. PSU5 BSS 0
  10499. SX6 TSNE RECOVERY STATUS NO ERRORS
  10500.  
  10501. * RETURN STATUS TO TASK AND RELEASE UNUSED COMMUNICATION
  10502. * BLOCKS.
  10503.  
  10504. SA1 X5+REST FWA OF STATUS
  10505. SA6 X1+B5 RETURN STATUS
  10506. SA2 PSUF FWA OF CHAIN OF COMMUNICATION BLOCKS
  10507. RJ RLC RELEASE COMMUNICATION BLOCKS
  10508.  
  10509. * UPDATE THE TRANSACTION SEQUENCE NUMBER IN THE *CRF*.
  10510.  
  10511. SA2 B5-NUAPL+TRID CURRENT SEQUENCE NUMBER
  10512. SA4 PSUA FWA OF RECOVERY FILE ENTRY
  10513. BX7 X2
  10514. SB4 X4
  10515. SA7 B4+TTBFW+TRCNW
  10516. SX1 MSST MESSAGE SOURCE IS STATUS
  10517. SA2 PSUG TERMINAL ORDINAL IN RECOVERY FILE
  10518. RJ CFA COMPUTE FILE ADDRESS
  10519. SX5 B4+TTFTW FWA OF FET
  10520. SX2 TRUPL LENGTH TO WRITE IN PRU-S
  10521. SX1 CIORW *CIO* REWRITE
  10522. RJ FIO DO FILE INPUT/OUPUT
  10523.  
  10524. * QUEUE REQUEST TO LET *TAF* DO OTHER WORK UNTIL
  10525. * OUTPUT IS COMPLETE.
  10526.  
  10527. SX1 B4+TTFTW FWA OF INPUT COMPLETE EVENT
  10528. SA3 RFBB SUBCP
  10529. SX5 B0 NO TIME OUT ON EVENT
  10530. SA4 RFBF FWA OF RECOVERY QUEUE ENTRY
  10531. SB3 X4
  10532. QTWCALL 0,QTEV WAIT FOR INPUT TO COMPLETE
  10533. RJ GRP GET REQUEST PARAMETERS AFTER WAIT
  10534. SA7 RFBA SAVE TERMINAL ORDINAL
  10535. SA6 RFBB SAVE SUBCP
  10536. SX7 B3+ SAVE FWA OF QUEUE ENTRY
  10537. SA7 RFBF
  10538. RJ STF SEARCH TERMINAL FILE FOR TERMINAL ORDINAL
  10539. RJ CRS CHECK RECOVERY STATUS FOR ERRORS
  10540. SX6 B4+
  10541. SA6 PSUA FWA OF RECOVERY FILE ENTRY
  10542.  
  10543. * ON *SRERUN*, SET USER ACTIVE IN TST.
  10544.  
  10545. SA1 B5-NUAPL+LRA1 CHECK LAST SYSTEM REQUEST
  10546. SX2 RFSR *SRERUN* FUNCTION CODE
  10547. LX1 17-35
  10548. MX0 -18
  10549. BX2 X2-X1
  10550. BX2 -X0*X2
  10551. NZ X2,PSU5.1 IF NOT *SRERUN*
  10552. SA3 RFBA TERMINAL ORDINAL IN TST
  10553. R= X0,TSTLLE *TST* ENTRY LENGTH
  10554. IX3 X0*X3
  10555. MX0 TSAUN
  10556. LX0 TSAUS-59
  10557. TA4 X3+TSAUW,VTST GET USER ACTIVE WORD OF TST ENTRY
  10558. BX6 X0+X4
  10559. SA6 A4 SET USER ACTIVE
  10560.  
  10561. * UNLOCK RECOVERY FILE BECAUSE TRANSACTION MAY HAVE TO WAIT
  10562. * FOR *ITASK*.
  10563.  
  10564. PSU5.1 SA1 PSUA FWA OF RECOVERY ENTRY
  10565. SA4 X1+TTLKW LOCK STATUS
  10566. ERRNZ TTLKS-59 IF LOCK NOT IN BIT 59
  10567. MX7 -60+TTLKN
  10568. BX6 -X7*X4 UNLOCK RECOVERY FILE
  10569. LX7 TTEVS-59
  10570. ERRNZ TTLKN-TTEVN IF EVENT AND LOCK FIELDS NOT EQUAL
  10571. BX6 X7+X6 SET FILE RELEASE EVENT
  10572. ERRNZ TTLKW-TTEVW IF LOCK AND LOCK EVENT NOT IN SAME WORD
  10573. SA6 A4
  10574.  
  10575. * SCHEDULE TRANSACTION.
  10576.  
  10577. PSU6 SA2 PRINA PROCESS INPUT AVAVALABLE STATUS
  10578. NZ X2,PSU7 IF INPUT CANNOT BE PROCESSED
  10579. RJ RSP RESTORE SUBCP REGISTERS
  10580. MX7 1 NO COMMUNICATION BLOCK REQUIRED
  10581. LX7 55-59
  10582. SA2 B5-NUAPL+RERU FWA OF COMMUNICATION BLOCK
  10583. SX0 X2
  10584. SA7 PSUE INPUT WORD FOR *PRIN*
  10585. SA4 A7
  10586. RJ PRIN PROCESS INPUT
  10587. SB4 B0 DO NOT UNLOCK RECOVERY FILE
  10588. SX6 B0 CLEAR *ITASK* BUSY STATUS
  10589. SA1 PRINA PROCESS INPUT STATUS
  10590. ZR X1,PSUX IF INPUT PROCESSED
  10591. SA6 A1+
  10592.  
  10593. * QUEUE COMMUNICATION BLOCK UNTIL *ITASK-S* QUEUE IS NOT FULL.
  10594.  
  10595. PSU7 SX1 EVIT FWA OF EVENT FOR *ITASK*
  10596. SA4 RFBF FWA OF RECOVERY QUEUE ENTRY
  10597. SX5 B0 NO TIME OUT ON EVENT
  10598. SB3 X4
  10599. SA3 RFBB SUBCP
  10600. QTWCALL 59,QTEV WAIT FOR *ITASK*
  10601. RJ GRP GET REQUEST PARAMETERS
  10602. SA6 RFBB SAVE SUBCP
  10603. SX7 B3 SAVE FWA OF QUEUE ENTRY
  10604. SA7 RFBF
  10605. EQ PSU6 SCHEDULE TRANSACTION
  10606.  
  10607. * NOT ABLE TO RERUN, RETURN STATUS.
  10608.  
  10609. PSU8 SA1 X5+REST FWA OF STATUS
  10610. SA6 X1+B5 RETURN STATUS
  10611. SA2 PSUF FWA OF CHAIN OF COMMUNICATION BLOCKS
  10612. RJ RLC RELEASE COMMUNICATION BLOCKS
  10613. SA1 PSUA FWA OF RECOVERY FILE ENTRY
  10614. SB4 X1
  10615. EQ RFC RECOVERY FUNCTION COMPLETE
  10616.  
  10617. PSUA BSS 1 FWA OF RECOVERY FILE ENTRY
  10618. PSUB BSS 1 CURRENT COMMUNICATION BLOCK FWA
  10619. PSUC BSS 1 CURRENT FWA IN RECOVERY FILE BUFFER
  10620. PSUD BSS 1 LWA TO PROCESS IN RECOVERY FILE BUFFER
  10621. PSUE BSS 1 *PRIN* INPUT WORD
  10622. PSUF BSS 1 FWA OF CHAIN OF COMMUNICATION BLOCKS
  10623. PSUG BSS 1 TERMINAL ORDINAL IN RECOVERY FILE
  10624. REM SPACE 4,15
  10625. ** REM - RESTORE END OF MESSAGE.
  10626. *
  10627. * ENTRY (X1) = APPLICATION BLOCK HEADER.
  10628. * (X2) = FIRST WORD OF *SEND* REQUEST.
  10629. * (B5) = SUBCP RA.
  10630. * (SML1) = LAST WORD OF MESSAGE.
  10631. * (SML2) = LAST WORD PLUS ONE OF MESSAGE.
  10632. *
  10633. * EXIT TASK AREA AT END OF MESSAGE RESTORED.
  10634. *
  10635. * USES X - 0, 1, 3, 4, 7.
  10636. * A - 3, 7.
  10637.  
  10638.  
  10639. REM SUBR ENTRY/EXIT
  10640.  
  10641. * IF MESSAGE USES DISPLAY MESSAGE UNITS, RESTORE CHARACTERS
  10642. * IN TASK USED BY END OF MESSAGE LINE BYTE. THE CHARACTERS
  10643. * MUST BE RESTORED TO KEEP THE TASK REUSEABLE.
  10644.  
  10645. MX0 -AHCTN MASK FOR MESSAGE UNIT
  10646. LX1 AHCTN-1-AHCTS RIGHT JUSTIFY MESSAGE UNIT
  10647. BX1 -X0*X1 MESSAGE UNIT
  10648. LX2 17-47 FWA OF MESSAGE
  10649. SX0 X1-4
  10650. NZ X0,REMX IF NOT DISPLAY MESSAGE, RETURN
  10651. SA3 B5-NUAPL+SML3 LENGTH OF MESSAGE IN WORDS
  10652. SX4 X3-1 LENGTH OF MESSAGE MINUS ONE
  10653. SX0 X2
  10654. IX4 X2+X4 LWA OF MESSAGE
  10655. SA3 B5-NUAPL+SML1
  10656. BX7 X3
  10657. SA7 X4+B5
  10658. SA3 B5-NUAPL+SML2
  10659. BX7 X3
  10660. SA7 A7+B1
  10661. EQ REMX RETURN
  10662. SEL SPACE 4,15
  10663. ** SEL - SET END OF LINE.
  10664. *
  10665. * ENTRY (X3) = FWA OF MESSAGE.
  10666. * (X1) = LENGTH OF MESSAGE IN WORDS.
  10667. * (B5) = SUBCP RA.
  10668. * (B6) = REMAINDER OF MESSAGE IN BITS OVER LAST WORD.
  10669. *
  10670. * EXIT (X1) = NEW LENGTH OF MESSAGE INCLUDING END OF LINE.
  10671. * (SML1) = LAST WORD OF MESSAGE.
  10672. * (SML2) = LAST WORD OF MESSAGE PLUS ONE.
  10673. *
  10674. * USES X - 0, 1, 2, 3, 6.
  10675. * A - 2, 3, 6.
  10676. * B - 6.
  10677.  
  10678.  
  10679. SEL SUBR ENTRY/EXIT
  10680. IX3 X1+X3 FWA OF END OF MESSAGE PLUS ONE
  10681. SA3 X3-1 SAVE LAST WORD OF MESSAGE
  10682. SA2 A3+B1 SAVE LAST WORD OF MESSAGE PLUS ONE
  10683. BX6 X3
  10684. SA6 B5-NUAPL+SML1
  10685. BX6 X2
  10686. SA6 B5-NUAPL+SML2
  10687. SX6 X1+
  10688. SA6 B5-NUAPL+SML3 SAVE MESSAGE LENGTH IN WORDS
  10689. ZR B6,SEL1 IF MESSAGE ENDS OF WORD BOUNDARY
  10690.  
  10691. * FORM END OF LINE IN LAST WORD OF MESSAGE.
  10692. * FOR MESSAGES IN DISPLAY CODE THE MESSAGE MUST HAVE AN
  10693. * AN END OF LINE BYTE OF 12 TO 60 BITS OF ZEROS.
  10694.  
  10695. MX0 1
  10696. SB6 B6-B1
  10697. AX0 B6
  10698. BX6 X0*X3 ZERO UNUSED MESSAGE BITS
  10699. SA6 A3
  10700. BX3 X6
  10701.  
  10702. * IF LAST WORD OF MESSAGE DOES NOT CONTAIN 12 BITS OF ZERO,
  10703. * ADD ONE WORD OF ZEROS TO FORM COMPLETE END OF LINE BYTE.
  10704.  
  10705. SEL1 MX0 -12
  10706. BX6 -X0*X3
  10707. ZR X6,SELX IF LAST WORD HAS END OF LINE
  10708. SX6 B0
  10709. SX1 X1+B1 ADD ONE TO LENGTH OF MESSAGE
  10710. SA6 A2+
  10711. EQ SELX RETURN
  10712. .A ENDIF
  10713. WTS SPACE 4,20
  10714. ** WTS - WRITE TERMINATION *STEP* TO *CRF*.
  10715. *
  10716. * ENTRY - (X5) = VALUE OF *STEP* TO WRITE.
  10717. * (X3) = RETURN ADDRESS UPON COMPLETION.
  10718. * (B7) = SUBCP ADDRESS
  10719. * (B2) = TASK SYSTEM AREA ADDRESS
  10720. *
  10721. * EXIT TO *WFP0*.
  10722. *
  10723. * USES X - 0, 1, 2, 3, 5, 6, 7.
  10724. * A - 1, 2, 3, 5, 6, 7.
  10725. * B - 3, 5, 6.
  10726.  
  10727.  
  10728. WTS SUBR ENTRY/EXIT
  10729. .B IFGE IPTAR,1
  10730. BX7 X3 SAVE RETURN ADDRESS
  10731. SA1 WTSA PREPARE *WSTAT* REQUEST
  10732. SA2 A1+B1
  10733. SA7 B2+RWTS
  10734. BX6 X1
  10735. SX7 SUAC+CBCH+5
  10736. SB3 X7+
  10737. SA6 B2+LRA1 FAKE SYSTEM REQUEST
  10738. SA6 B2+NUAPL+SUAC+CBCH *WSTAT* REQUEST BLOCK
  10739. SA7 A6+B1 ADDRESS OF STATUS
  10740. SA1 B7 PREPARE ENTRY CONDITIONS FOR *WFP0*
  10741. SB5 X1 TASK RA
  10742. SX6 X7+B1
  10743. SX7 X6+B1
  10744. SA6 A7+B1 ADDRESS OF *STEP* PARAMETER
  10745. SA7 A6+B1 ADDRESS OF *STEP* VALUE
  10746. BX6 X6-X6
  10747. SA6 A7+B1 PARAMETER TERMINATION WORD
  10748. SA7 B5+B3 STATUS
  10749. BX6 X2 *STEP*
  10750. BX7 X5
  10751. SA6 A7+B1
  10752. SA7 A6+B1
  10753. MX0 -SCFLN
  10754. SA3 B2+CB2C GET TERMINAL ORDINAL
  10755. LX1 SCFLN-1-SCFLS
  10756. LX3 CBTON-1-CBTOS
  10757. SA5 B2+LRA1 SYSTEM REQUEST
  10758. BX1 -X0*X1 TASK FL
  10759. SX7 X3
  10760. SB6 B1 NUMBER OF PARAMETERS REQUIRED
  10761. EQ WFP0 WRITE *STEP* TO *CRF*
  10762.  
  10763. WTSA VFD 24/3LCTI,18/RFWS,18/SUAC+CBCH+1
  10764. DATA 10HSTEP
  10765. .B ELSE
  10766. EQ WTSX RETURN
  10767. .B ENDIF
  10768.  
  10769. STF SPACE 4,15
  10770. ** STF - SEARCH TERMINAL FILE TABLE.
  10771. *
  10772. * ENTRY (X1) = TERMINAL STATUS TABLE TERMINAL ORDINAL.
  10773. *
  10774. * EXIT (X2) = TERMINAL FILE ENTRY.
  10775. * (B4) = FWA OF RECOVERY FILE ENTRY.
  10776. * = 0, IF NO ENTRY FOUND.
  10777. * (X3) = TERMINAL ORDINAL IN RECOVERY FILE.
  10778. *
  10779. * USES X - 2, 3, 6, 7.
  10780. * A - 2.
  10781. * B - 4, 6.
  10782.  
  10783.  
  10784. STF2 LX2 59-59-TFHON+1+TFHOS
  10785. SB4 X2+ FWA OF RECOVERY FILE ENTRY
  10786. ERRNZ TFTPS-17 IF FWA OF RECOVERY FILE ENTRY NOT IN 17-0
  10787.  
  10788. STF SUBR ENTRY/EXIT
  10789. SX3 B0 STARTING ORDINAL WITH RESPECT TO FILE
  10790. MX6 -TFHON MASK FOR TERMINAL ORDINAL
  10791. SB4 B0+ SET ENTRY NOT FOUND
  10792. SB6 TTFTL-1 END OF ENTRIES
  10793. TA2 -TTFTL,VTST FIRST TERMINAL FILE ENTRY
  10794. STF1 ZR X2,STFX IF ENTRY NOT FOUND
  10795. LX2 TFHON-1-TFHOS RIGHT JUSTIFY HIGHEST ORDINAL
  10796. BX7 -X6*X2 HIGHEST ORDINAL
  10797. IX6 X7-X1
  10798. IX3 X1-X3 TERMINAL ORDINAL WITH RESPECT TO FILE
  10799. PL X6,STF2 IF ENTRY CONTAINS TERMINAL
  10800. LE B6,B0,STFX IF ENTRY NOT FOUND
  10801. SA2 A2+TTFTE GET NEXT ENTRY
  10802. SX3 X7+ SAVE LOWEST ORDINAL MINUS 1 OF NEXT FILE
  10803. SB6 B6-B1
  10804. MX6 -TFHON
  10805. EQ STF1 CHECK NEXT TERMINAL FILE ENTRY
  10806.  
  10807. ENDR EQU * END OF SYSTEM REQUEST PROCESSORS
  10808. TITLE BATCH CONCURRENCY SUPPORTING ROUTINES.
  10809. BAM SPACE 4,15
  10810. ** BAM - ENTER BATCH *CRM* REQUEST IN *AMI* QUEUE.
  10811. *
  10812. * ENTRY (X4) = COMPLETION ADDRESS.
  10813. * (X5) = *TAF/CRM* FUNCTION CODE.
  10814. * (B3) = *TAF* STORAGE AREA ADDRESS.
  10815. * (B6) = *BCT* ADDRESS.
  10816. *
  10817. * EXIT (X7) = 0, IF REQUEST NOT ACCEPTED.
  10818. * (X7) = 1, IF REQUEST ENTERED IN QUEUE.
  10819. * (DTIME) = 0, TO INSURE *AMI* WILL BE CALLED.
  10820. *
  10821. * USES X - ALL.
  10822. * A - 1, 3, 5, 7.
  10823. * B - 3, 4, 5.
  10824. *
  10825. * CALLS PDIF, QTW.
  10826.  
  10827.  
  10828. BAM SUBR ENTRY/EXIT
  10829.  
  10830. * BUILD *AAM* INPUT QUEUE ENTRY.
  10831.  
  10832. SA1 B6+BCSNW *BCT* SUBCP WORD
  10833. LX1 BCSNN-1-BCSNS
  10834. MX0 -BCSNN
  10835. BX1 -X0*X1 SUBCP NUMBER
  10836. SA3 B6+BCTSW TRANSACTION SEQUENCE NUMBER
  10837. MX0 TFIDN+TFTSN
  10838. BX6 X0*X3
  10839. LX5 30-6 POSITION FUNCTION CODE
  10840. BX6 X6+X5 ADD TO REQUEST
  10841. LX1 23-5 POSITION SUBCP NUMBER
  10842. BX6 X6+X1 ADD TO REQUEST
  10843. SX1 BSAR
  10844. BX6 X6+X1 ADD REQUEST ADDRESS
  10845. SX7 B0
  10846. SA5 AAMA *AAM* STATUS WORD
  10847. LX5 17-35 POSITION TRANSACTION COUNT
  10848. SB3 X5+
  10849. TB5 0,VAAQ *AAM* INPUT QUEUE FET ADDRESS
  10850. SA1 B6+BCAMW *AAM* STATUS FLAG
  10851. LX1 59-BCAMS
  10852. MX0 1 SET *AAM* STATUS FLAG
  10853. NG X1,BAM1 IF *AAM* PREVIOUSLY CALLED
  10854. ZR B3,BAMX IF *AAM* CANNOT ACCEPT CALLS
  10855. BX7 X0+X1
  10856. LX7 BCAMS-59
  10857. SX1 B1+
  10858. SA7 A1+
  10859. IX5 X5-X1 DECREMENT *AAM* TRANSACTION COUNT
  10860.  
  10861. * IF *AAM* CAN ACCEPT MORE TRANSACTIONS, PUT REQUEST IN QUEUE.
  10862.  
  10863. BAM1 LX5 18
  10864. RJ PDIF PUT ENTRY IN INPUT QUEUE
  10865. ZR X7,BAMX IF INPUT QUEUE FULL
  10866. SX1 B1
  10867. IX7 X5+X1 ADVANCE OUTSTANDING REQUESTS
  10868. SA7 A5
  10869. BX7 X7-X7
  10870. SA7 DTIME INSURE *AMI* WILL BE CALLED
  10871.  
  10872. * QUEUE *BATCH/CRM* REQUEST UNTIL *AAM* REQUEST COMPLETE.
  10873.  
  10874. SA1 B6+BCSAW
  10875. ERRNZ BCSAS-17 TEMPORARY STORAGE ADDRESS NOT IN BIT 17
  10876. SB3 X1 *TAF* STORAGE AREA ADDRESS
  10877. BX3 X3-X3 SUBCP NUMBER
  10878. SX1 B6+BCSFW
  10879. SX2 59 SHIFT FOR COMPLETE BIT
  10880. SX6 X4 COMPLETION ADDRESS
  10881. SX4 QTEV EVENT TYPE
  10882. SB5 B0 NOT A TIMED EVENT
  10883. SB4 B0 QUEUE AT END OF QUEUE
  10884. BX5 X5-X5 NOT A TIMED EVENT
  10885. RJ QTW QUEUE REQUEST
  10886. SX7 B1 INDICATE REQUEST ACCEPTED
  10887. EQ BAMX RETURN
  10888. BRC SPACE 4,45
  10889. ** BRC BATCH REQUEST CONTINUATION.
  10890. *
  10891. * *BRC* IS CALLED WHENEVER A BATCH CONCURRENCY REQUEST
  10892. * IS DETECTED IN THE SUBSYSTEM REQUEST BUFFER OR PERIODICALLY
  10893. * FROM THE TASK SWITCHING ROUTINE *TSSC*. *BRC* ATTEMPTS TO
  10894. * COMPLETE ALL REQUESTS IN THE BATCH CONCURRENCY TABLE, *BCT*,
  10895. * BEFORE EXITING TO *TSSC*. THE STEPS PERFORMED ARE:
  10896. *
  10897. * 1. SEARCH *BCT* FOR ACTIVE ENTRIES. IF NONE, EXIT TO *TSSC*.
  10898. *
  10899. * 2. BRANCH TO SUBPROCESSOR ACCORDING TO FUNCTION LIST.
  10900. *
  10901. * 3. VALIDATE BATCH JOB CAN ACCESS *TAF/CRM*.
  10902. *
  10903. * 4. REQUEST A SUBCP AREA FOR REQUEST. IF RECOVERY IS
  10904. * REQUIRED ISSUE A *RSTDBI* REQUEST.
  10905. *
  10906. * 5. FOR WRITE REQUESTS GET RECORD FROM *UCP*.
  10907. *
  10908. * 6. CREATE *CRM* REQUEST IN SUBCP AREA AND QUEUE TO
  10909. * *AAM* INPUT QUEUE.
  10910. *
  10911. * 7. FOR READ REQUESTS RETURN RECORD TO *UCP*.
  10912. *
  10913. * 8. FOR DBCOMIT REQUESTS WRITE RECOVERY INFORMATION
  10914. * TO *CRF*.
  10915. *
  10916. * 9. RETURN REQUEST STATUS TO *UCP* AND ALLOW *UCP*
  10917. * TO EXECUTE.
  10918. *
  10919. * 10. CLEAR LONG TERM CONNECT WITH *UCP*, RELEASE
  10920. * SUBCP, AND RELEASE *BCT* ENTRY.
  10921. *
  10922. * ENTRY (B6) = 0, IF ENTERED FROM *TSSC*.
  10923. * (B6) = *BCT* ADDRESS IF ENTERED FROM *PBC*.
  10924. * (VBCT) = *BCT* ADDRESS.
  10925. * (VNBCT) = NUMBER OF *BCT* ENTRIES.
  10926. *
  10927. * EXIT TO *TSSC*.
  10928. *
  10929. * USES X - ALL.
  10930. * A - ALL.
  10931. * B - 2, 3, 4, 5, 6.
  10932. *
  10933. * CALLS ASN, BAM, GRA, GTS, MVE=, QTW, RTS, SCC,
  10934. * SFL, SFR, VBA.
  10935.  
  10936.  
  10937. BRC TX6 0,VBCT *BCT* ADDRESS
  10938. SX7 B0+
  10939. SA6 BRCA INITIALIZE SEARCH LOOP FWA
  10940. SA7 BRCB NUMBER OF *BCT* ENTRIES PROCESSED
  10941. NZ B6,BRC2 IF ENTERED FROM PBC
  10942. BRC1 SA1 BRCA NEXT *BCT* ENTRY ADDRESS
  10943. SA2 BRCB NUMBER OF ENTRIES PROCESSED
  10944. SB6 X1
  10945. SA3 VNBCT
  10946. SX3 X3
  10947. IX3 X2-X3
  10948. PL X3,TSSC IF NO MORE ACTIVITY TO PROCESS
  10949. SX6 X2+B1
  10950. SA6 BRCB INCREMENT NUMBER OF ENTRIES
  10951. SX2 BCTL *BCT* ENTRY LENGTH
  10952. SX6 X2+B6
  10953. SA6 BRCA NEXT *BCT* ENTRY ADDRESS
  10954. SA1 B6
  10955. ERRNZ BCRAW IF REQUEST ACTIVE NOT IN WORD ZERO
  10956. LX1 59-BCRAS
  10957. PL X1,BRC1 IF REQUEST NOT ACTIVE
  10958. MX0 BCCNN CONSTRAINT BIT
  10959. SA1 B6+BCCNW
  10960. LX1 59-BCCNS
  10961. PL X1,BRC1 IF REQUEST NOT CONSTRAINED
  10962. BX6 -X0*X1 CLEAR CONSTRAINT BIT
  10963. LX6 -59+BCCNS REPOSITION CONSTRAINT WORD
  10964. SA6 A1 STORE IN *BCT*
  10965. MX0 -BCCTN
  10966. LX6 BCCTN-1-BCCTS
  10967. BX7 -X0*X6 CONSTRAINT CODE
  10968. BRC2 SA5 B6+BCFLW
  10969. NX4,B3 X5 EXTRACT FUNCTION FROM LIST
  10970. SX4 B3
  10971. LX4 -1
  10972. SB3 X4 BRANCH TABLE INDEX
  10973. SA0 B6
  10974. SX6 B6 SAVE *BCT* ENTRY ADDRESS
  10975. SA6 BRCF
  10976. SA1 B6+BCSAW
  10977. ERRNZ BCSAS-17 TEMPORARY STORAGE ADDRESS NOT IN BIT 17
  10978. SB5 X1+ *TAF* STORAGE AREA ADDRESS
  10979. SB6 B6+BCSFW SFCALL AREA ADDRESS
  10980. JP B3+BRCJT BRANCH TO PROCESS FUNCTION
  10981.  
  10982. * JUMP TABLE TO HANDLE *BCT* FUNCTION LIST.
  10983.  
  10984. BRCJT PL X4,BRC3 IF VALIDATE BATCH ACCESS
  10985. EQ BRC9 REQUEST SUBCONTROL POINT
  10986. PL X4,BRC13 IF READ RECORD FROM *UCP*
  10987. EQ BRC14 QUEUE REQUEST TO *AAM* INPUT QUEUE
  10988. PL X4,BRC21 IF WRITE RECORD TO *UCP*
  10989. EQ BRC22 WRITE *CRF* RECOVERY FILE
  10990. PL X4,BRC25 IF COMPLETE TASK
  10991. EQ BRC28 CLEAR LONG TERM CONNECT
  10992. PL X4,BRC34 IF REQUEST COMPLETE
  10993. RJ EXIT FATAL ERROR
  10994.  
  10995. * VALIDATE BATCH ACCESS.
  10996.  
  10997. BRC3 RJ GTS GET TEMPORARY STORAGE
  10998. SA4 BRCF
  10999. SB6 X4+ RESTORE *BCT* ADDRESS
  11000. NZ B3,BRC4 IF STORAGE AVAILABLE
  11001. SX1 BCNTS WAITING FOR STORAGE CONSTRAINT CODE
  11002. RJ SCC SET REQUEST CONSTRAINED
  11003. EQ BRC1 CHECK NEXT ENTRY
  11004.  
  11005. BRC4 SA1 B6+BCSAW *BCT* STORAGE AREA ADDRESS
  11006. MX0 -BCSAN
  11007. BX6 X0*X1
  11008. ERRNZ BCSAN-18 TEMPORARY STORAGE ADDRESS NOT 18 BITS
  11009. SX1 B3 SAVE *TAF* STORAGE AREA ADDRESS
  11010. ERRNZ BCSAS-17 TEMPORARY STORAGE ADDRESS NOT IN BIT 17
  11011. BX6 X6+X1
  11012. SA6 A1
  11013. SB5 B3
  11014. SB6 B6+BCSFW
  11015.  
  11016. * GET USER NAME OF BATCH JOB.
  11017.  
  11018. BRC5 SX6 B6+BCKAW-BCSFW USE KEYAREA FOR JOB ID
  11019. SX1 /COMSSCP/CPID SFCALL FUNCTION CODE
  11020. LX6 6 POSITION *SCP* ADDRESS
  11021. BX6 X6+X1
  11022. SA6 B6+ SET SFCALL PARAMETERS IN *BCT*
  11023. SX2 BRC5 RETRY ADDRESS IF JOB SWAPPED OUT
  11024. RJ SFR ISSUE SF.CPID FUNCTION
  11025.  
  11026. * CHECK USER NAME AGAINST *TAF* VALIDATION RULES.
  11027.  
  11028. SB6 B6+BCKAW-BCSFW RECOVERY REQUEST AREA
  11029. SA4 B6+1 USER NAME FROM CPID FUNCTION
  11030. SX1 TYRM BATCH/CRM VALIDATION
  11031. SX5 BRC6 RETURN ADDRESS
  11032. EQ VBA VALIDATE BATCH ACCESS
  11033.  
  11034. BRC6 SA1 B6+BRTAW *TST* ADDRESS
  11035. SB6 B6-BCKAW+BCSFW SFCALL AREA ADDRESS
  11036. ERRNZ BRTAS-17 *TST* ADDRESS DOES NOT START IN BIT 17
  11037. SX6 X1
  11038. SA1 B6+BCTAW-BCSFW
  11039. MX0 60-BCSPN-BCTAN
  11040. BX1 X0*X1 CLEAR *TST* AND SUBCP ADDRESSES
  11041. LX6 BCTAS-BCTAN+1 POSITION *TST* ADDRESS
  11042. BX6 X6+X1
  11043. SA6 A1 STORE *TST* ADDRESS IN *BCT*
  11044. SX1 X3-JSRC
  11045. ZR X1,BRC8 IF ACCESS VALID
  11046. SB6 B6-BCSFW *BCT* ADDRESS
  11047.  
  11048. * RETURN ERROR STATUS.
  11049.  
  11050. BRC7 SA1 B6+BCUPW USER ERROR STATUS WORD
  11051. MX0 48
  11052. BX6 X0*X1
  11053. BX6 X6+X3
  11054. SA6 A1 SET ERROR STATUS IN USER PARAMETERS
  11055. MX0 BCERN
  11056. LX0 BCERS-59
  11057. SA1 B6+BCERW VALIDATION ERROR FLAG
  11058. BX6 X1+X0
  11059. SA6 A1 SET ERROR FLAG IN *BCT*
  11060. SX2 CTFN+CLFN+ENFN COMPLETE TASK AND CLEAR CONNECT
  11061. RJ SFL SET BITS IN FUNCTION LIST
  11062. EQ BRC2 PROCESS NEXT FUNCTION
  11063.  
  11064. * USER IS VALID. SET LONG TERM CONNECTION.
  11065.  
  11066. BRC8 SX6 /COMSSCP/SLTC SET LONG TERM CONNECT FUNCTION
  11067. SA6 B6+
  11068. SX2 BRC8 RETRY ADDRESS
  11069. RJ SFR ISSUE LONG TERM CONNECT FUNCTION
  11070. SX3 X5 RETURN CODE
  11071. SB6 B6-BCSFW *BCT* ADDRESS
  11072. SX4 B6 SAVE *BCT* ADDRESS
  11073. NZ X5,BRC7 IF SFCALL ERROR
  11074. SA2 B6+BCKAW+BRTOW GET *TST* ORDINAL
  11075. MX0 -BRTON
  11076. LX2 BRTON-BRTOS-1
  11077. BX1 -X0*X2
  11078. RJ ASN ASSIGN SEQUENCE NUMBER
  11079. SB6 X4 RESTORE *BCT* ADDRESS
  11080. LX6 BCTSS-BCTSN+1 POSITION SEQUENCE NUMBER
  11081. SA6 B6+BCTSW SET SEQUENCE NUMBER IN *BCT*
  11082. SX6 VLFN VALIDATE ACCESS FUNCTION
  11083. EQ BRC35 FUNCTION COMPLETE
  11084.  
  11085. * REQUEST SUBCONTROL POINT.
  11086.  
  11087. BRC9 RJ RSP RESTORE SUBCP REGISTERS
  11088. SA1 VBCT BATCH SUBCP LENGTH
  11089. SX0 X1+
  11090. RJ RCP REQUEST SUBCP
  11091. SA1 BRCF
  11092. SB6 X1+ *BCT* ADDRESS
  11093. NZ X5,BRC10 IF SUBCP AVAILABLE
  11094. SX1 BCNSC WAITING FOR SUBCP
  11095. RJ SCC SET CONSTRAINT CODE IN *BCT*
  11096. EQ BRC1 CHECK NEXT *BCT* ENTRY
  11097.  
  11098. BRC10 SB5 X5+NUAPL RA OF SUBCP
  11099. MX0 SCBCN
  11100. LX0 SCBCS-59 INDICATE SUBCP FOR BATCH CONCURRENCY
  11101. SA1 B4
  11102. ERRNZ SCBCW BATCH CONCURRENCY FLAG NOT IN WORD ZERO
  11103. ERRNZ SCBCW IF BATCH FLAG NOT IN WORD ZERO
  11104. SX6 B6
  11105. SA6 X5+BCTA STORE *BCT* ADDRESS IN SYSTEM AREA
  11106. BX6 X1+X0
  11107. SA6 B4 SET BATCH CONCURRENCY BIT IN SUBCP
  11108. TX3 B4+CPAL,-VCPA COMPUTE SUBCP NUMBER
  11109. AX3 SCPAL
  11110. SX6 B4
  11111. SA1 B6 *BCT* FIRST WORD
  11112. ERRNZ BCSPW IF SUBCP ADDRESS NOT IN WORD ZERO
  11113. BX6 X1+X6 ADD SUBCP TABLE ADDRESS
  11114. SA6 B6 STORE IN *BCT*
  11115. SA1 B6+BCSNW
  11116. SB3 X1 *TAF* STORAGE AREA ADDRESS
  11117. ERRNZ BCSNS-53 SUBCP NUMBER DOES NOT START IN BIT 53
  11118. LX3 BCSNS-BCSNN+1 POSITION SUBCP NUMBER
  11119. BX6 X1+X3
  11120. SA6 A1 SAVE SUBCP NUMBER IN *BCT*
  11121. SA1 B6 *BCT* FIRST WORD
  11122. ERRNZ BCTAW IF *TST* ADDRESS NOT IN WORD ZERO
  11123. MX0 -BCTAN
  11124. LX1 BCTAN-1-BCTAS RIGHT JUSTIFY *TST* ADDRESS
  11125. SA1 X1 *TST* ENTRY
  11126. BX2 X1
  11127. LX2 TSDBN-1-TSDBS RIGHT JUSTIFY DATA BASE NAME
  11128. MX0 -TSDBN
  11129. BX6 -X0*X2
  11130. LX1 59-TSARS POSITION RECOVERY REQUIRED BIT
  11131. SA6 X5+DBNC SET DATA BASE NAME IN SUBCP SYSTEM AREA
  11132. SX6 2RBC GENERATE TASK NAME FOR BATCH JOB
  11133. SA2 B6+BCJNW JOB HASH
  11134. MX0 24
  11135. BX2 X0*X2 JOB HASH + *BC*
  11136. BX6 X6+X2
  11137. LX6 59-11 LEFT JUSTIFY TASK NAME
  11138. SA6 X5+BCTN SET NAME IN SUBCP SYSTEM AREA
  11139. SX6 RSFN REQUEST SUBCP FUNCTION LIST BIT
  11140. PL X1,BRC35 IF RECOVERY NOT REQUIRED
  11141.  
  11142. * BUILD RESTORE DATA BASE ID REQUEST.
  11143.  
  11144. SB2 B5+BSAR ADDRESS OF ARGUMENT ARRAY
  11145. SX6 B5+BSUP ADDRESS OF ARGUMENTS
  11146. SB3 B5+BSRE LWA OF ARGUMENT ARRAY
  11147. BRC11 SA6 B2 STORE ARGUMENT ADDRESS
  11148. SB2 B2+B1
  11149. SX6 X6+1 INCREMENT ARGUMENT ADDRESS
  11150. LE B2,B3,BRC11 IF MORE ARGUMENTS
  11151. SX6 B0
  11152. SA6 B2 ZERO TERMINATES ARRAY
  11153. SA1 B6+BRNIW
  11154. SA2 B6+BROIW
  11155. BX6 X1
  11156. SA6 B5+BSNI CURRENT BEGIN ID
  11157. BX6 X2
  11158. SA6 B5+BSOI OLD BEGIN ID
  11159. SX4 BRC12 COMPLETION ADDRESS
  11160. SX5 /COMKCRM/TRRI RESTORE DATA BASE FUNCTION CODE
  11161. RJ BAM PUT REQUEST IN INPUT QUEUE
  11162. NZ X7,BRC1 IF REQUEST QUEUED
  11163. SX1 BCRDI WAITING TO QUEUE REQUEST
  11164. RJ SCC SET REQUEST CONSTRAINED
  11165. EQ BRC1 CHECK NEXT *BCT* ENTRY
  11166.  
  11167. * DATA BASE ID HAS BEEN RESTORED.
  11168.  
  11169. BRC12 SB6 X2-BCSFW *BCT* FWA
  11170. SX6 RSFN REQUEST SUBCP FUNCTION LIST BIT
  11171. EQ BRC35 FUNCTION COMPLETE
  11172.  
  11173. * READ RECORD FROM USER CONTROL POINT.
  11174.  
  11175. BRC13 SA1 B6+BCSNW-BCSFW
  11176. LX1 BCSNN-1-BCSNS RIGHT JUSTIFY SUBCP
  11177. MX0 -BCSNN
  11178. BX1 -X0*X1 SUBCP NUMBER
  11179. SX6 B0
  11180. RJ GRA GET RA OF SUBCP
  11181. SX6 X6+BSRB RECORD AREA WITHIN SUBCP
  11182. SA1 B6+BCWSW-BCSFW WORKING STORAGE AREA WITHIN *UCP*
  11183. LX1 24
  11184. BX6 X6+X1 ADD *SCP* ADDRESS
  11185. SA6 B6+BCEUW-BCSFW MOVE TO *BCT* SFCALL AREA
  11186. SA1 B6+BCWLW-BCSFW RECORD LENGTH IN CHARACTERS
  11187. SX1 X1+9 INSURE LAST WORD IS READ
  11188. SX2 10 CHARACTERS PER WORD
  11189. IX6 X1/X2 RECORD LENGTH IN WORDS
  11190. LX6 53-11 POSITION TO FP AREA
  11191. SX1 /COMSSCP/XRED EXTENDED READ FUNCTION
  11192. BX6 X6+X1
  11193. SX2 BRC13 RETRY ADDRESS
  11194. SA1 B6+BCSAW-BCSFW
  11195. SA6 B6 STORE SFCALL PARAMETERS
  11196. SB5 X1 *TAF* STORAGE AREA ADDRESS
  11197. RJ SFR ISSUE SFCALL EXTENDED READ
  11198. SB6 B6-BCSFW RESTORE *BCT* ADDRESS
  11199. SX6 RRFN READ RECORD FUNCTION LIST BIT
  11200. SX1 X5-/COMSSCP/RC43
  11201. SX3 JSFL ERROR RETURN CODE
  11202. ZR X1,BRC7 IF *UCP* ADDRESS NOT WITHIN FL
  11203. EQ BRC35 REQUEST COMPLETE
  11204.  
  11205. * CONSTRUCT *CRM* REQUEST.
  11206.  
  11207. BRC14 SB6 A0 *BCT* FWA
  11208. SA1 B6+BCSNW
  11209. LX1 BCSNN-1-BCSNS RIGHT JUSTIFY SUBCP
  11210. MX0 -BCSNN
  11211. BX1 -X0*X1 SUBCP NUMBER
  11212. SX6 B0+
  11213. RJ GRA GET RA OF SUBCP
  11214. SB5 X6 SAVE SUBCP RA
  11215. BX7 X7-X7
  11216. SA7 B5+DMEC-NUAPL CLEAR FATAL D.M. ERROR CODE
  11217. SX1 BCUPL NUMBER OF WORDS TO MOVE
  11218. SX2 B6+BCUPW SOURCE ADDRESS IN *BCT*
  11219. SX3 X6+BSUP DESTINATION ADDRESS IN SUBCP
  11220. RJ MVE= MOVE PARAMETERS TO SUBCP
  11221. SA1 BRCF *BCT* ADDRESS
  11222. SB4 B5+BSCE LWA+1 OF ARGUMENT ARRAY
  11223. SX6 BSUP+1 FWA OF USER PARAMETERS
  11224. SB2 B5+BSAR FWA OF ARGUMENT ARRAY
  11225. BRC15 SA6 B2 STORE ADDRESS OF PARAMETERS
  11226. SB2 B2+B1 INCREMENT ARRAY ADDRESS
  11227. SX6 X6+1 INCREMENT PARAMETER ADDRESS
  11228. LT B2,B4,BRC15 IF MORE PARAMETERS
  11229. SB6 X1 RESTORE *BCT* ADDRESS
  11230. MX0 -6
  11231. SA1 B6+BCUPW USER PARAMETERS
  11232. LX1 -18
  11233. BX4 -X0*X1 EXTRACT ARGUMENT COUNT
  11234. LX1 -6
  11235. BX5 -X0*X1 EXTRACT TAF/CRM FUNCTION CODE
  11236. BX1 X5
  11237. LX1 59-0
  11238. SA3 X1+BCFT FUNCTION TABLE ENTRY
  11239. NG X1,BRC16 IF LOWER ENTRY IN TABLE
  11240. LX3 BFUEN-1-BFUES RIGHT JUSTIFY UPPER ENTRY
  11241. BRC16 LX3 BFWSN-1-BFWSS RIGHT JUSTIFY WSA INDEX
  11242. SB2 B5+BSAR ARGUMENT ARRAY ADDRESS
  11243. MX0 -BFWSN
  11244. BX1 -X0*X3 WORKING STORAGE AREA WORD
  11245. ZR X1,BRC17 IF FUNCTION DOES NOT USE WSA
  11246. SX6 BSWS WORKING STORAGE AREA ADDRESS
  11247. SA6 X1+B2 STORE ADDRESS IN ARGUMENT ARRAY
  11248. BRC17 LX3 BFKNN-1-BFKNS+BFWSS-BFWSN+1 KEYNAME INDEX
  11249. BX1 -X0*X3 KEYNAME WORD
  11250. SX6 BSKN KEYNAME AREA ADDRESS
  11251. ZR X1,BRC18 IF FUNCTION DOES NOT USE KEYNAME
  11252. SA6 X1+B2 STORE KEYNAME ADDRESS IN ARRAY
  11253. BRC18 LX3 BFKAN-1-BFKAS+BFKNS-BFKNN+1 KEYAREA INDEX
  11254. BX1 -X0*X3 KEYAREA WORD
  11255. SX6 BSKA KEYAREA ADDRESS
  11256. MX0 -BFTSN
  11257. ZR X1,BRC19 IF FUNCTION DOES NOT USE KEYAREA
  11258. SA6 X1+B2 STORE KEYAREA ADDRESS IN ARRAY
  11259. BRC19 BX6 X6-X6
  11260. SA6 X4+B2 STORE END OF ARGUMENT ARRAY
  11261. LX3 BFTSN-1-BFTSS+BFKAS-BFKAN+1 *TAF* STATUS AREA INDEX
  11262. BX6 -X0*X3
  11263. SA6 B5+DMEC-NUAPL SAVE FOR FATAL D.M. ERROR
  11264. SX4 BRC20 COMPLETION ADDRESS
  11265. RJ BAM PUT REQUEST IN INPUT QUEUE
  11266. NZ X7,BRC1 IF REQUEST QUEUED
  11267. SX1 BCAMC WAITING TO QUEUE REQUEST
  11268. RJ SCC SET REQUEST CONSTRAINED
  11269. EQ BRC1 CHECK NEXT *BCT* ENTRY
  11270.  
  11271. BRC20 SB6 X2-BCSFW *BCT* ADDRESS
  11272. SX6 QRFN QUEUE REQUEST FUNCTION LIST BIT
  11273. EQ BRC35 FUNCTION COMPLETE
  11274.  
  11275. * WRITE RECORD TO USER CONTROL POINT.
  11276.  
  11277. BRC21 SA1 B6+BCSNW-BCSFW
  11278. LX1 BCSNN-1-BCSNS RIGHT JUSTIFY SUBCP
  11279. MX0 -BCSNN
  11280. BX1 -X0*X1 SUBCP NUMBER
  11281. SX6 B0
  11282. RJ GRA GET RA OF SUBCP
  11283. SB4 X6+ RA OF SUBCP
  11284. SX6 X6+BSRB RECORD AREA WITHIN SUBCP
  11285. SA1 B6+BCWSW-BCSFW WORKING STORAGE AREA WITHIN *UCP*
  11286. LX1 24
  11287. BX6 X6+X1 ADD *SCP* ADDRESS
  11288. SA6 B6+BCEUW-BCSFW MOVE TO *BCT* SFCALL AREA
  11289. SA1 B4+BSRL RECORD LENGTH IN CHARACTERS
  11290. SX1 X1+9 INSURE LAST WORD IS WRITTEN
  11291. SX2 10 CHARACTERS PER WORD
  11292. IX6 X1/X2 RECORD LENGTH IN WORDS
  11293. SX1 /COMSSCP/XWRT EXTENDED WRITE FUNCTION
  11294. LX6 53-11 POSITION RECORD LENGTH TO FP AREA
  11295. BX6 X6+X1
  11296. SX2 BRC21 RETRY ADDRESS
  11297. SA6 B6 SFCALL PARAMETERS
  11298. SA1 B6+BCSAW-BCSFW
  11299. SB5 X1 *TAF* STORAGE AREA ADDRESS
  11300. RJ SFR ISSUE SFCALL EXTENDED WRITE
  11301. SB6 B6-BCSFW RESTORE *BCT* ADDRESS
  11302. SX6 WRFN WRITE RECORD FUNCTION LIST BIT
  11303. SX1 X5-/COMSSCP/RC43
  11304. SX3 JSFL ERROR RETURN CODE
  11305. ZR X1,BRC7 IF *UCP* ADDRESS NOT WITHIN FL
  11306. EQ BRC35 FUNCTION COMPLETE
  11307.  
  11308. * WRITE COMMIT HISTORY TO *CRF*.
  11309.  
  11310. BRC22 SB6 A0 *BCT* FWA
  11311. SA1 B6+BCTSW TRANSACTION SEQUENCE NUMBER
  11312. BX6 X1
  11313. LX6 BCTSN-1-BCTSS RIGHT JUSTIFY SEQUENCE NUMBER
  11314. SA6 B6+BCWPW+1 *WSTAT* PARAMETER AREA IN *BCT*
  11315. SX7 TYRM
  11316. SA7 A6+1 STORE TRANSACTION TYPE IN AREA
  11317. SX6 CSBC
  11318. SA6 A7+B1 STORE RECOVERABLE TRAN STEP IN AREA
  11319. SX7 B1
  11320. SA7 A6+1 INDICATE *CRM* DATA MANAGER
  11321. SX6 BRCC FWA OF *WSTAT* KEYWORDS
  11322. SX7 B6+BCWPW FWA OF PARAMETER AREA
  11323. SX5 B6+BCWAW FWA OF ARGUMENT ARRAY
  11324. BRC23 SA7 X5 STORE PARAMETER ADDRESS IN ARRAY
  11325. SA6 A7+1 STORE KEYWORD ADDRESS IN ARRAY
  11326. SX5 A6+B1 INCREMENT ARRAY ADDRESS
  11327. SX6 X6+B1 INCREMENT KEYWORD ADDRESS
  11328. SX7 X7+B1 INCREMENT PARAMETER ADDRESS
  11329. SX2 X6-BRCD
  11330. NZ X2,BRC23 IF NOT END OF ARGUMENT ARRAY
  11331. SX6 B0
  11332. SA6 A6 STORE END OF ARRAY
  11333.  
  11334. * QUEUE RECOVERY REQUEST.
  11335.  
  11336. SX4 QTEV EVENT TYPE
  11337. SB3 B6+BCWQW QUEUEING AREA IN *BCT*
  11338. SX6 B0
  11339. SA6 B5+QRTCW CLEAR COMPLETE BIT
  11340. SX1 A6 EVENT ADDRESS
  11341. SX2 B0 SHIFT COUNT FOR COMPLETE BIT
  11342. BX3 X3-X3 SUBCP NUMBER
  11343. SX5 B0 NOT A TIMED EVENT
  11344. SB4 B0 QUEUE AT END OF QUEUE
  11345. SX6 BRC24 EVENT COMPLETE ADDRESS
  11346. RJ QTW QUEUE *TAF* WORK
  11347.  
  11348. * WRITE RECOVERY INFORMATION TO *CRF*.
  11349.  
  11350. SA5 BRCE *REC* SYSTEM REQUEST
  11351. SX1 B6+BCWAW
  11352. BX5 X5+X1 ADD ARGUMENT ARRAY ADDRESS
  11353. SA1 B6+BCTAW GET TERMINAL STATUS WORD
  11354. ERRNZ BCSPW IF SUBCP ADDRESS NOT IN WORD ZERO
  11355. LX1 BCTAN-1-BCTAS RIGHT JUSTIFY *TST* ADDRESS
  11356. MX0 -BCTAN
  11357. TX2 0,VTST *TST* FWA
  11358. BX1 -X0*X1
  11359. IX7 X1-X2
  11360. SX0 TSTLLE
  11361. IX7 X7/X0 *TST* ORDINAL
  11362. SB5 B0 SUBCP RA
  11363. BX6 X6-X6 SUBCP NUMBER
  11364. LX5 -18 POSITION REQUEST FOR CALL TO *WFP*
  11365. SA1 B6+BCSAW *TAF* STORAGE AREA ADDRESS
  11366. SB3 X1
  11367. EQ WFP *WSTAT* RECOVERY REQUEST
  11368.  
  11369. BRC24 SX6 WTFN WRITE *CRF* FUNCTION
  11370. SB6 B3-BCWQW *BCT* FWA
  11371. EQ BRC35 FUNCTION COMPLETE
  11372.  
  11373. * RETURN STATUS INFORMATION TO UCP.
  11374.  
  11375. BRC25 SA1 B6+BCSNW-BCSFW
  11376. LX1 BCSNN-1-BCSNS RIGHT JUSTIFY SUBCP
  11377. MX0 -BCSNN
  11378. BX1 -X0*X1 SUBCP NUMBER
  11379. SX6 B0
  11380. RJ GRA GET RA OF SUBCP
  11381. SX2 X6+BSUP SCPA ADDRESS IN SUBCP
  11382. SA1 B6+BCPAW-BCSFW *UCP* ADDRESS IN *BCT*
  11383. LX1 BCPAN-1-BCPAS RIGHT JUSTIFY *UCP* ADDRESS
  11384. SX1 X1+B1
  11385. SX6 BCUPL NUMBER OF WORDS TO RETURN
  11386. SA3 B6+BCERW-BCSFW VALIDATION STATUS WORD
  11387. LX3 59-BCERS
  11388. SX0 B1 COMPLETE BIT
  11389. PL X3,BRC26 IF NOT VALIDATION ERROR
  11390. SX6 B1+ ONE WORD OF STATUS RETURNED
  11391. SX2 B6+BCUPW-BCSFW RETURN STATUS FROM *BCT*
  11392. BRC26 LX6 18
  11393. BX6 X6+X1 ADD *UCP* ADDRESS
  11394. LX6 18
  11395. BX6 X6+X2 ADD SCPA ADDRESS IN SUBCP
  11396. SA3 X2 *UCP* STATUS WORD
  11397. BX7 X0+X3 SET COMPLETE BIT
  11398. SA7 X2
  11399. LX6 6
  11400. SX1 /COMSSCP/WRIT ADD SF.WRIT FUNCTION CODE
  11401. BX6 X6+X1
  11402. SA6 B6 STORE SFCALL PARAMETERS
  11403. SX2 BRC25 RETRY ADDRESS
  11404. RJ SFR ISSUE SFCALL WRITE REQUEST
  11405.  
  11406. * ISSUE END TASK FUNCTION TO UCP.
  11407.  
  11408. BRC27 SA1 B6+BCPAW-BCSFW *BCT* FIRST WORD
  11409. LX1 BCPAN-1-BCPAS RIGHT JUSTIFY PARAMETER ADDRESS
  11410. SX6 X1
  11411. LX6 24
  11412. SX1 /COMSSCP/ENDT ADD ENDTASK FUNCTION CODE
  11413. BX6 X6+X1
  11414. SA6 B6+ STORE SFCALL PARAMETERS
  11415. SX2 BRC27 RETRY ADDRESS IF FUNCTION REJECT
  11416. RJ SFR ISSUE SF.ENDT FUNCTION
  11417. SB6 B6-BCSFW RESTORE *BCT* FWA
  11418. SX6 CTFN COMPLETE TASK FUNCTION
  11419. EQ BRC35 PROCESS NEXT FUNCTION
  11420.  
  11421. * CLEAR LONG TERM CONNECT WITH UCP.
  11422.  
  11423. BRC28 SX7 X7-BCCSC
  11424. ZR X7,BRC30.1 IF RETRY OF DATA MANAGER CEASE
  11425. SA1 A0+BCABW CHECK FOR *UCP* ABORT
  11426. LX1 59-BCABS
  11427. PL X1,BRC29 IF NOT *UCP* ABORT
  11428. BRC28.1 MX1 17 CLEAR ALL OUTSTANDING REQUESTS
  11429. SX6 /COMSSCP/ENDT END TASK FUNCTION CODE
  11430. LX1 41-59 POSITION *UCPA*
  11431. BX6 X6+X1
  11432. SA6 B6 SAVE SFCALL PARAMETERS
  11433. SX2 BRC28.1 RETRY ADDRESS
  11434. RJ SFR ISSUE SF.ENDT FUNCTION
  11435. EQ BRC30 WRITE *STEP* TO *CRF*
  11436.  
  11437. BRC29 SA1 A0+BCERW *BCT* FIRST WORD
  11438. SX6 /COMSSCP/CLTC CLEAR LONG TERM CONNECT FUNCTION
  11439. SX1 X1 SUBCP TABLE ADDRESS
  11440. ZR X1,BRC33 IF NO SUBCP ASSIGNED
  11441. SA6 B6 STORE SFCALL PARAMETERS
  11442. SX2 BRC29 RETRY ADDRESS IF FUNCTION REJECT
  11443. RJ SFR ISSUE SF.CLTC FUNCTION
  11444.  
  11445. * BUILD *WSTAT* REQUEST TO LOG TERMINATION *STEP* TO *CRF*.
  11446.  
  11447. BRC30 SB6 B6-BCSFW *BCT* ADDRESS
  11448. SX6 CSCE BATCH CEASE/JOB END *STEP*
  11449. SA6 B6+BCWPW+1 *WSTAT* PARAMETER AREA IN BCT
  11450. SX7 B6+BCWPW FWA OF PARAMETER AREA
  11451. SX5 B6+BCWAW FWA OF ARGUMENT ARRAY
  11452. SX6 BRCC+2 *STEP* KEYWORD
  11453. SA7 X5 STORE PARAMETER ADDRESS IN ARRAY
  11454. SA6 A7+1 STORE KEYWORD ADDRESS
  11455. SX7 X7+1 STORE KEYWORD VALUE ADDRESS
  11456. SA7 A6+B1
  11457. BX6 X6-X6
  11458. SA6 A7+B1 STORE END OF ARRAY
  11459.  
  11460. * QUEUE RECOVERY REQUEST.
  11461.  
  11462. SX4 QTEV EVENT TYPE
  11463. SB3 B6+BCWQW QUEUEING AREA IN *BCT*
  11464. SX6 B0
  11465. SA6 B5+QRTCW CLEAR COMPLETE BIT
  11466. SX1 A6 EVENT ADDRESS
  11467. SX2 B0 SHIFT COUNT FOR COMPLETE BIT
  11468. BX3 X3-X3 SUBCP NUMBER
  11469. SX5 B0 NOT A TIMED EVENT
  11470. SB4 B0 QUEUE AT END OF QUEUE
  11471. SX6 BRC30.1 EVENT COMPLETE ADDRESS
  11472. RJ QTW QUEUE *TAF* WORK
  11473.  
  11474. * WRITE RECOVERY INFORMATION TO *CRF*.
  11475.  
  11476. SA5 BRCE *REC* SYSTEM REQUEST
  11477. SX1 B6+BCWAW
  11478. BX5 X5+X1 ADD ARGUMENT ARRAY ADDRESS
  11479. SA1 B6+BCTAW GET TERMINAL STATUS WORD
  11480. ERRNZ BCSPW SUBCP ADDRESS NOT IN WORD ZERO
  11481. LX1 BCTAN-1-BCTAS RIGHT JUSTIFY *TST* ADDRESS
  11482. MX0 -BCTAN
  11483. TX2 0,VTST *TST* FWA
  11484. BX1 -X0*X1
  11485. IX7 X1-X2
  11486. SX0 TSTLLE
  11487. IX7 X7/X0 *TST* ORDINAL
  11488. SB5 B0 SUBCP RA
  11489. BX6 X6-X6 SUBCP NUMBER
  11490. LX5 -18 POSITION REQUEST FOR CALL TO *WFP*
  11491. SA1 B6+BCSAW *TAF* STORAGE AREA ADDRESS
  11492. SB3 X1
  11493. EQ WFP *WSTAT* RECOVERY REQUEST
  11494.  
  11495. * ISSUE DATA MANAGER CEASE.
  11496.  
  11497. BRC30.1 SB6 B3-BCWQW *BCT* ADDRESS
  11498. SX5 DMCC D.M. CEASE FUNCTION CODE
  11499. SX4 BRC31 COMPLETION ADDRESS
  11500. RJ BAM PUT REQUEST IN INPUT QUEUE
  11501. NZ X7,BRC1 IF REQUEST QUEUED
  11502. SX1 BCCSC WAITING TO QUEUE REQUEST
  11503. RJ SCC SET REQUEST CONSTRAINED
  11504. EQ BRC1 CHECK NEXT *BCT* ADDRESS
  11505.  
  11506. * RELEASE SUBCONTROL POINT.
  11507.  
  11508. BRC31 SA0 X2-BCSFW *BCT* ADDRESS
  11509. SB3 BRC32 RETURN ADDRESS FROM *ESCP1*
  11510. SA1 A0
  11511. ERRNZ BCSPW IF SUBCP ADDRESS NOT IN WORD ZERO
  11512. SB6 X1 SUBCP TO RELEASE
  11513. ERRNZ BCSPS-17 SUBCP ADDRESS DOES NOT START IN BIT 17
  11514. MX0 SCBCN CLEAR BATCH CONCURRENCY BIT IN SUBCP
  11515. LX0 SCBCS-59
  11516. SA1 B6
  11517. ERRNZ SCBCW IF BATCH FLAG NOT IN WORD ZERO
  11518. BX6 -X0*X1
  11519. SA6 B6+
  11520. EQ ESCP1 RELEASE SUBCP
  11521.  
  11522. * SET USER INACTIVE AND RELEASE *BCT* ENTRY.
  11523.  
  11524. BRC32 SA1 AVAILCM UPDATE AVAILABLE CM
  11525. SA2 VBCT
  11526. SX2 X2
  11527. IX6 X1+X2
  11528. SA6 A1
  11529. SA1 A0 FIRST WORD OF *BCT*
  11530. ERRNZ BCTAW IF *TST* ADDRESS NOT IN WORD ZERO
  11531. LX1 BCTAN-1-BCTAS
  11532. MX0 TSAUN
  11533. LX0 TSAUS-59
  11534. SA1 X1 *TST* ENTRY
  11535. ERRNZ TSAUW USER ACTIVE NOT IN WORD ZERO OF *TST*
  11536. BX6 -X0*X1 CLEAR USER ACTIVE IN *TST*
  11537. SA6 A1
  11538. BRC33 SA2 A0+BCSAW
  11539. SB3 X2 *TAF* STORAGE ADDRESS
  11540. SX6 B0
  11541. SA6 A0 RELEASE *BCT* ENTRY
  11542. SA6 A6+B1
  11543. SA6 A6+B1
  11544. SA6 A6+B1
  11545. RJ RTS RELEASE TEMPORARY STORAGE
  11546.  
  11547. * BATCH *CRM* REQUEST IS COMPLETE.
  11548.  
  11549. BRC34 MX0 BCACN+BCRAN+BCABN+BCERN
  11550. SA1 A0 FIRST WORD OF *BCT*
  11551. ERRNZ BCACW+BCRAW+BCABW+BCERW IF ALL FIELDS NOT IN WORD 0
  11552. ERRNZ 59-BCACS FIELD NOT IN BIT 59
  11553. ERRNZ BCACS-BCACN-BCRAS FIELDS NOT ADJACENT
  11554. ERRNZ BCACW FIELD NOT IN WORD ZERO
  11555. ERRNZ BCACW-BCRAW FIELDS NOT IN SAME WORD
  11556. ERRNZ BCRAW-BCABW FIELDS NOT IN SAME WORD
  11557. ERRNZ BCABW-BCERW FIELDS NOT IN SAME WORD
  11558. BX6 -X0*X1 CLEAR ACTIVE BITS
  11559. SA6 A0
  11560. SA1 PBCA REQUEST COUNT
  11561. SX2 B1
  11562. IX6 X1-X2 DECREMENT OUSTANDING REQUESTS
  11563. SA6 A1+
  11564. NZ X6,BRC1 IF MORE REQUESTS TO PROCESS
  11565. EQ TSSC TIME SLICE SUBCP
  11566.  
  11567. * FUNCTION COMPLETE.
  11568.  
  11569. BRC35 LX6 BCFLS-BCFLN+1 POSITION FUNCTION COMPLETE BIT
  11570. SA1 B6+BCFLW FUNCTION LIST WORD
  11571. BX6 -X6*X1 CLEAR BIT IN FUNCTION LIST
  11572. SA6 A1
  11573. EQ BRC2 PROCESS NEXT FUNCTION
  11574.  
  11575. BRCA BSSZ 1 *BCT* FIRST WORD ADDRESS
  11576. BRCB BSSZ 1 NUMBER OF *BCT* ENTRIES
  11577. BRCC DATA 10HSEQ *WSTAT* KEYWORDS
  11578. DATA 10HTRAN
  11579. DATA 10HSTEP
  11580. DATA 10HCRM
  11581. BSSZ 1
  11582. BRCD EQU * END OF KEYWORDS
  11583. BRCE VFD 24/3LCTI,18/RFWS,18/0 *REC* SYSTEM REQUEST
  11584. BRCF BSSZ 1 CURRENT *BCT* ADDRESS
  11585. BJT SPACE 4,15
  11586. ** BJT - BATCH JOB TERMINATION.
  11587. *
  11588. * ENTRY (X4) = STATUS FIELD FROM *SCP* BUFFER.
  11589. *
  11590. * EXIT (BCACS) = 1.
  11591. * (BCRAS) = 1.
  11592. * (BCABS) = 1, IF BATCH JOB ABORTED.
  11593. * (BCFLS) = CLFN, CLEAR LONG TERM CONNECT.
  11594. *
  11595. * USES X - 0, 1, 2, 3, 5, 6, 7.
  11596. * A - 1, 3, 5, 6, 7.
  11597. *
  11598. * CALLS SBC, SCC, SFL.
  11599.  
  11600.  
  11601. BJT SUBR ENTRY/ EXIT
  11602. SA5 SSJN JOB SEQUENCE NUMBER AND *FST*
  11603. RJ SBC SEARCH FOR *BCT* ENTRY
  11604. ZR B6,BJTX IF NOT FOUND, RETURN
  11605. SA3 B6+B1 CHECK TERMINATION FLAG
  11606. LX3 59-BCTES
  11607. NG X3,BJTX IF ALREADY RECEIVED TERMINATION REQUEST
  11608. MX6 BCTEN SET TERMINATION FLAG
  11609. BX6 X6+X3
  11610. LX6 BCTES-59 SHIFT BACK
  11611. SA6 A3
  11612. SX1 X4-1 TEST MESSAGE TYPE
  11613. MX0 BCACN+BCRAN
  11614. ZR X1,BJT1 IF NORMAL JOB TERMINATION
  11615. MX0 BCACN+BCRAN+BCABN
  11616. ERRNZ BCACW NOT IN WORD ZERO
  11617. ERRNZ BCACW-BCRAW FIELDS NOT IN SAME WORD
  11618. ERRNZ BCABW-BCRAW FIELD NOT IN SAME WORD
  11619. BJT1 SA3 B6 *BCT* ENTRY
  11620. ERRNZ BCACW+BCRAW+BCABW IF ALL FIELDS NOT IN WORD ZERO
  11621. BX6 X0+X3
  11622. SA6 B6+ SET REQUEST ACTIVE IN *BCT*
  11623. SX2 CLFN+ENFN CLEAR LONG TERM CONNECT FUNCTION
  11624. RJ SFL SET FUNCTION LIST
  11625. NG X3,BJTX IF REQUEST ALREADY ACTIVE
  11626. SA1 PBCA REQUEST COUNT
  11627. SX2 B1
  11628. IX6 X1+X2 ADVANCE OUTSTANDING REQUESTS
  11629. SA6 A1+
  11630. SX1 BCTRC TERMINATE CONSTRAINT CODE
  11631. RJ SCC SET CONSTRAINT CODE IN *BCT*
  11632. SA1 ITIME REAL TIME CLOCK
  11633. BX7 X1
  11634. SA7 RDCBD SET CLOCK AT LAST BATCH REQUEST
  11635. EQ BJTX RETURN
  11636. PBC SPACE 4,20
  11637. ** PBC - PROCESS BATCH CONCURRENCY REQUEST.
  11638. *
  11639. * ENTRY (SSRP) = SUBSYSTEM REQUEST BUFFER.
  11640. * (VNBCT) = NUMBER OF BATCH *CRM* REQUESTS.
  11641. * (ITIME) = CURRENT TIME.
  11642. *
  11643. * EXIT BRC, IF VALID TAF/CRM REQUEST.
  11644. * PBE, IF INCORRECT BATCH REQUEST.
  11645. *
  11646. * USES X - ALL.
  11647. * A - 1, 2, 5, 6, 7.
  11648. * B - 3, 4, 6.
  11649. *
  11650. * CALLS MVE, SBC.
  11651.  
  11652.  
  11653. PBC SX5 JSDC ERROR RETURN CODE
  11654. SA2 VNBCT NUMBER OF REQUESTS ALLOWED
  11655. ZR X2,PBE IF BATCH CONCURRENCY DISABLED
  11656. SX5 JSNC ERROR RETURN CODE
  11657. SA2 VAAM AAM FILE MANAGER INITIALIIZATION FLAG
  11658. ZR X2,PBE IF TAF/CRM DATA MANAGER NOT LOADED
  11659. SA5 SSJN JOB SEQUENCE NUMBER AND *FST*
  11660. RJ SBC SEARCH FOR *BCT* ENTRY
  11661. ZR B6,PBC1 IF *BCT* ENTRY NOT FOUND
  11662. SA1 B6 *BCT* ENTRY
  11663. ERRNZ BCRAW IF ACTIVE FLAG NOT IN WORD ZERO
  11664. LX1 59-BCRAS POSITION ACTIVE BIT
  11665. SX5 JSOR ERROR RETURN CODE
  11666. NG X1,PBE IF REQUEST ALREADY ACTIVE
  11667. EQ PBC2 *BCT* ENTRY EXISTS
  11668.  
  11669. PBC1 BX5 X5-X5
  11670. RJ SBC SEARCH *BCT* FOR EMPTY ENTRY
  11671. SX5 JSTB ERROR RETURN CODE
  11672. ZR B6,PBE IF NO *BCT* ENTRIES AVAILABLE
  11673. SA1 PBCA NUMBER OF REQUESTS OUTSTANDING
  11674. SA2 VNBCT
  11675. LX2 -30
  11676. SX2 X2+ NUMBER OF REQUESTS ALLOWED
  11677. IX1 X1-X2
  11678. PL X1,PBE IF REQUEST CANNOT BE PROCESSED
  11679. SA5 SSJN *UCP* JOB IDENTIFIER
  11680. BX6 X5
  11681. SA6 B6+BCJNW MOVE JOB IDENTIFIER TO *BCT*
  11682. SX6 VLFN+RSFN VALIDATE AND REQUEST SUBCP FUNCTIONS
  11683. LX6 BCFLS-BCFLN+1
  11684. SA6 B6+BCFLW SET BITS IN FUNCTION LIST
  11685. PBC2 SA2 ITIME REAL TIME CLOCK
  11686. BX7 X2
  11687. SA7 RDCBD SET CLOCK AT LAST BATCH REQUEST
  11688. SA1 SSRP
  11689. SX1 X1 *UCP* PARAMETER AREA ADDRESS
  11690. SA2 B6 FIRST WORD OF *BCT*
  11691. ERRNZ BCPAW IF PARAMETER ADDRESS NOT IN WORD ZERO
  11692. MX0 -BCPAN
  11693. LX0 BCPAS-BCPAN+1 POSITION PARAMETER ADDRESS MASK
  11694. BX2 X0*X2
  11695. LX1 BCPAS-BCPAN+1
  11696. BX2 X1+X2 ADD PARAMETER AREA ADDRESS
  11697. MX0 BCACN+BCRAN
  11698. ERRNZ 59-BCACS FIELD NOT IN BIT 59
  11699. ERRNZ BCACS-BCACN-BCRAS FIELDS NOT ADJACENT
  11700. BX6 X0+X2 ADD *BCT* ACTIVE AND REQUEST ACTIVE BITS
  11701. SA6 A2
  11702. SA1 SSUP
  11703. LX1 -24 RIGHT JUSTIFY *TAF/CRM* FUNCTION
  11704. MX0 -6
  11705. BX1 -X0*X1
  11706. LX1 59-0
  11707. SA2 X1+BCFT FUNCTION TABLE ENTRY
  11708. NG X1,PBC3 IF LOWER ENTRY IN TABLE
  11709. LX2 BFUEN-1-BFUES RIGHT JUSTIFY UPPER ENTRY
  11710. PBC3 MX6 -BCFLN
  11711. BX6 -X6*X2 FUNCTION LIST FOR REQUEST
  11712. LX6 BCFLS-BCFLN+1
  11713. SA1 B6+B1
  11714. ERRNZ BCFLW-1 FIELD NOT IN WORD ONE
  11715. BX6 X1+X6 ADD TO PREVIOUS FUNCTIONS
  11716. SA6 A1 SET FUNCTION LIST IN *BCT*
  11717. SX1 BCUPL NUMBER OF WORDS TO MOVE
  11718. SX2 SSUP SOURCE ADDRESS IN *SCP* BUFFER
  11719. SX3 B6+BCUPW DESTINATION ADDRESS IN *BCT*
  11720. SX5 B6 SAVE *BCT* ADDRESS
  11721. RJ MVE= MOVE PARAMETERS TO *BCT*
  11722. SB6 X5 RESTORE *BCT* ADDRESS
  11723. SA1 BFPT
  11724. BX6 X1
  11725. SA6 VSCR ACKNOWLEDGE *SCP* REQUEST
  11726. SA1 PBCA REQUEST COUNT
  11727. SX2 B1
  11728. IX6 X1+X2 ADVANCE OUTSTANDING REQUESTS
  11729. SA6 A1
  11730. EQ BRC EXIT TO BRC
  11731.  
  11732. PBCA BSSZ 1 OUTSTANDING BATCH CONCURRENCY REQUESTS
  11733.  
  11734. SBC SPACE 4,15
  11735. ** SBC - SEARCH BATCH COMMUNICATION TABLE.
  11736. *
  11737. * ENTRY (X5) = JOB SEQUENCE NUMBER AND *FST* ORDINAL.
  11738. * (X5) = 0 TO FIND AN EMPTY ENTRY.
  11739. *
  11740. * EXIT (B6) = *BCT* ADDRESS.
  11741. * (B6) = 0 IF JOB IDENTIFIER NOT FOUND.
  11742. *
  11743. * USES X - 1, 2, 3.
  11744. * A - 1, 2, 3.
  11745. * B - 3, 6.
  11746.  
  11747.  
  11748. SBC SUBR ENTRY/EXIT
  11749. SA1 VNBCT NUMBER OF *BCT* ENTRIES
  11750. SB6 X1
  11751. TX2 0,VBCT *BCT* ADDRESS
  11752. SB3 BCTL *BCT* ENTRY LENGTH
  11753. SBC1 ZR B6,SBCX IF JOB NOT IN *BCT*
  11754. SA3 X2+BCJNW JOB SEQUENCE NUMBER AND *FST*
  11755. SB6 B6-B1 DECREMENT NUMBER OF ENTRIES
  11756. BX3 X3-X5
  11757. ZR X3,SBC2 IF CORRECT ENTRY
  11758. SX2 X2+B3 NEXT ENTRY ADDRESS
  11759. EQ SBC1 CHECK NEXT ENTRY
  11760.  
  11761. SBC2 SB6 X2 *BCT* ADDRESS
  11762. EQ SBCX RETURN
  11763. SCC SPACE 4,10
  11764. ** SCC - SET CONSTRAINT CODE.
  11765. *
  11766. * ENTRY (X1) = CONSTRAINT CODE.
  11767. * (B6) = *BCT* ADDRESS.
  11768. *
  11769. * EXIT CONSTRAINT CODE AND CONSTRAINT BIT SET IN *BCT* ENTRY.
  11770. *
  11771. * USES X - 0, 1, 5, 6.
  11772. * A - 5, 6.
  11773.  
  11774.  
  11775. SCC SUBR ENTRY/EXIT
  11776. MX0 BCCNN
  11777. LX0 BCCNS-59 POSITION CONSTRAINT BIT
  11778. SA5 B6+BCCTW CONSTRAINT WORD IN *BCT*
  11779. LX1 BCCTS-BCCTN+1 POSITION CONSTRAINT CODE
  11780. BX6 X0+X5
  11781. BX6 X6+X1
  11782. SA6 A5 SET REQUEST UNDER CONSTRAINT
  11783. EQ SCCX RETURN
  11784. SFL SPACE 4,10
  11785. ** SFL - SET FUNCTION LIST IN BCT.
  11786. *
  11787. * ENTRY (X2) = FUNCTION LIST RIGHT JUSTIFIED.
  11788. * (B6) = *BCT* ADDRESS.
  11789. *
  11790. * EXIT FUNCTION LIST SET IN BCT.
  11791. *
  11792. * USES X - 0, 1, 2, 6.
  11793. * A - 1, 6.
  11794.  
  11795.  
  11796. SFL SUBR ENTRY/EXIT
  11797. MX0 -BCFLN FUNCTION LIST MASK
  11798. LX0 BCFLS-BCFLN+1 POSITION MASK
  11799. LX2 BCFLS-BCFLN+1 POSITION FUNCTION LIST
  11800. SA1 B6+BCFLW
  11801. BX1 X0*X1 SAVE OTHER FIELDS
  11802. BX6 X1+X2 ADD NEW FUNCTION LIST
  11803. SA6 A1 STORE IN *BCT*
  11804. EQ SFLX RETURN
  11805. PBE SPACE 4,40
  11806. ** PBE - PROCESS ERROR IN *UCP* REQUEST TO *TAF*.
  11807. *
  11808. * ENTRY (X5) = ERROR CODE TO RETURN TO *UCP*.
  11809. *
  11810. * (SSRP) = 12/RIN,24/RSY,6/STAT,18/ADDR.
  11811. * RIN = RESERVED FOR INSTALLATION.
  11812. * RSY = RESERVED FOR SYSTEM.
  11813. * STAT = STATUS (TYPE OF MESSAGE).
  11814. * ADDR = ADDRESS WITHIN *UCP* OF PARAMETER BLOCK.
  11815. *
  11816. * (SSJN) = *UCP* JOB SEQUENCE NUMBER AND *FST* ORDINAL.
  11817. * (SSUP) = SECOND WORD OF *UCP* PARAMETER BLOCK.
  11818. * (BFPT) = SUBSYSTEM REQUEST BUFFER POINTER.
  11819. *
  11820. * EXIT TO *TSSC*.
  11821. *
  11822. * USES X - 0, 1, 2, 6, 7.
  11823. * B - 3, 5, 6.
  11824. * A - 1, 6, 7.
  11825. *
  11826. * CALLS GTS, RTS, SFR.
  11827. *
  11828. * NOTES THE CONTENTS OF THE SFCALL PARAMETER AREA ARE
  11829. *
  11830. * WORD 1 - 6/RC, 12/FP, 18/UCPA, 18/SCPA, 6/FC
  11831. * WHERE RC = RETURN CODE.
  11832. * FP = FUNCTION PARAMETER.
  11833. * UCPA = *UCP* ADDRESS.
  11834. * SCPA = *SCP* ADDRESS.
  11835. * FC = FUNCTION CODE.
  11836. *
  11837. * WORD 2 - *UCP* JOB SEQUENCE NUMBER AND *FST* ORDINAL.
  11838. *
  11839. * WORD 3 - 12/FC, 12/0, 12/SFC, 6/AC, 6/0, 12/(X5)
  11840. * WHERE FC = BATCH FUNCTION CODE.
  11841. * SFC = SUB FUNCTION CODE.
  11842. * AC = ARGUMENT COUNT.
  11843. * (X5) = ERROR CODE TO RETURN TO *UCP*.
  11844. *
  11845. * WORD 4 - ADDRESS WITHIN USER CONTROL POINT OF
  11846. * BATCH/CRM OR BTRAN REQUEST PACKET.
  11847.  
  11848.  
  11849. PBE RJ GTS GET TEMPORARY STORAGE
  11850. ZR B3,TSSC IF STORAGE NOT AVAILABLE, PROCESS LATER
  11851. SB5 B3+ SAVE STORAGE ADDRESS
  11852. RJ GTS GET SFCALL PARAMETER AREA
  11853. NZ B3,PBE1 IF STORAGE AVAILABLE
  11854. SB3 B5+
  11855. RJ RTS RELEASE TEMPORARY STORAGE
  11856. EQ TSSC PROCESS REQUEST LATER
  11857.  
  11858. * MOVE *UCP* PARAMETERS TO SFCALL AREA.
  11859.  
  11860. PBE1 SB6 B3
  11861. SA1 SSRP
  11862. SX7 X1 *UCP* PARAMETER ADDRESS
  11863. SA7 B6+BEPAW SAVE IN TEMPORARY STORAGE
  11864. SA1 SSUP SECOND WORD OF *UCP* PARAMETERS
  11865. MX0 42
  11866. BX7 X0*X1
  11867. BX7 X7+X5 ADD ERROR RETURN CODE
  11868. SA7 A7-B1 SAVE WORD TO RETURN TO *UCP*
  11869. SA1 SSJN
  11870. BX7 X1
  11871. SA7 A7-B1 MOVE JOB IDENTIFIER TO SFCALL AREA
  11872. SA1 BFPT
  11873. BX7 X1
  11874. SA7 VSCR ACKNOWLEDGE *UCP* REQUEST
  11875.  
  11876. * RETURN ERROR STATUS TO *UCP*.
  11877.  
  11878. PBE2 SA1 B6+BEPAW
  11879. SX2 B1+
  11880. LX2 18 NUMBER OF WORDS
  11881. SX6 X1+B1 *UCP* PARAMETER AREA ADDRESS
  11882. BX6 X6+X2
  11883. LX6 18
  11884. SX1 B6+BEESW *SCP* RETURN CODE ADDRESS
  11885. BX6 X6+X1
  11886. LX6 6
  11887. SX1 /COMSSCP/WRIT ADD IN SF.WRIT FUNCTION CODE
  11888. BX6 X6+X1
  11889. SA6 B6 STORE SFCALL PARAMETERS
  11890. SX2 PBE2 RETRY ADDRESS
  11891. RJ SFR ISSUE SF.WRIT FUNCTION
  11892. NZ X5,PBE5 IF SFCALL ERROR RETURN
  11893.  
  11894. * ABORT *UCP* IF INCORRECT REQUEST.
  11895.  
  11896. SA1 B6+BEESW ERROR RETURN CODE
  11897. SX1 X1-JSFC
  11898. NZ X1,PBE4 IF NOT INCORRECT REQUEST
  11899. PBE3 SA1 PBEB REGRETS SFCALL PARAMETERS
  11900. BX6 X1
  11901. SA6 B6 STORE SFCALL PARAMETERS
  11902. SX2 PBE3 RETRY ADDRESS IF JOB SWAPPED OUT
  11903. RJ SFR ISSUE SF.REGR FUNCTION
  11904.  
  11905. * INDICATE END OF TASK TO *UCP*.
  11906.  
  11907. PBE4 SA1 B6+BEPAW
  11908. SX6 X1 *UCP* PARAMETER ADDRESS
  11909. LX6 41-17
  11910. SX1 /COMSSCP/ENDT ADD END TASK FUNCTION CODE
  11911. BX6 X6+X1
  11912. SA6 B6 STORE SFCALL PARAMETERS
  11913. SX2 PBE4 RETRY ADDRESS IF JOB SWAPPED OUT
  11914. RJ SFR ISSUE SF.ENDT FUNCTION
  11915. PBE5 SB3 B6
  11916. RJ RTS RELEASE SFCALL PARAMETER STORAGE
  11917. SB3 B5
  11918. RJ RTS RELEASE QUEUEING STORAGE
  11919. EQ TSSC EXIT TO TIME SLICING
  11920.  
  11921. PBEA DATA C* TAF FUNCTION CODE NOT VALID.*
  11922. PBEB VFD 6/0,12/0,18/1,18/PBEA,6//COMSSCP/REGR
  11923. SFR SPACE 4,50
  11924. ** SFR - ISSUE SFCALL REQUEST.
  11925. *
  11926. * ENTRY (X2) = RETRY ADDRESS.
  11927. * (B5) = *TAF* STORAGE AREA ADDRESS.
  11928. * (B6) = SFCALL PARAMETER AREA ADDRESS.
  11929. *
  11930. * EXIT (X5) = 0 IF FUNCTION SUCCESSFUL.
  11931. * .NE. 0 IS SFCALL RETURN CODE.
  11932. * TO RETRY ADDRESS IF FUNCTION REJECTED
  11933. * BECAUSE JOB WAS SWAPPED OUT.
  11934. * (B5) = *TAF* STORAGE AREA ADDRESS.
  11935. * (B6) = SFCALL PARAMETER ADDRESS.
  11936. *
  11937. * USES X - 0, 1, 2, 3, 4, 5, 6.
  11938. * A - 1, 2, 6.
  11939. * B - 2, 3, 4, 5.
  11940. *
  11941. * CALLS COD, QTW, SNM.
  11942. *
  11943. * MACROS MESSAGE, SFCALL.
  11944. *
  11945. * NOTES THE SFCALL PARAMETER AREA MUST BE FORMATTED
  11946. * AS FOLLOWS.
  11947. *
  11948. * WORD 1 - 6/RC, 12/FP, 18/UCPA, 18/SCPA, 6/FC
  11949. * WHERE RC = RETURN CODE.
  11950. * FP = FUNCTION PARAMETER.
  11951. * UCPA = *UCP* ADDRESS.
  11952. * SCPA = *SCP* ADDRESS.
  11953. * FC = FUNCTION CODE.
  11954. * WORD 2 - *UCP* JOB SEQUENCE NUMBER AND *FST* ORDINAL.
  11955. * WORD 3 - 1/U, 1/S, 10/RES, 24/EUCPA, 24/ESCPA
  11956. * WHERE U = 1, IF EUCPA IS ECS ADDRESS.
  11957. * S = 1, IF ESCPA IS ECS ADDRESS.
  11958. * RES = RESERVED.
  11959. * EUCPA = EXTENDED *UCP* CM OR ECS
  11960. * ADDRESS.
  11961. * ESCPA = EXTENDED *SCP* CM OR ECS
  11962. * ADDRESS.
  11963. *
  11964. * THE *TAF* STORAGE AREA IS USED AS FOLLOWS.
  11965. *
  11966. * WORDS 1-2 - QUEUEING AREA USED BY *QTW*.
  11967. *
  11968. * WORD 3 - 24/ , 18/SA, 18/RA
  11969. * WHERE SA = SFCALL AREA ADDRESS.
  11970. * RA = RETURN ADDRESS.
  11971.  
  11972.  
  11973. SFR SUBR ENTRY/EXIT
  11974. SX6 B6+ SFCALL PARAMETER ADDRESS
  11975. LX6 18
  11976. BX6 X2+X6 ADD IN RETRY ADDRESS
  11977. SA6 B5+2 SAVE PARAMETERS IN *TAF* STORAGE AREA
  11978. SFR1 SFCALL B6 MAKE SUBSYSTEM FUNCTION REQUEST
  11979. SA2 B6 SFCALL PARAMETERS
  11980. MX0 59 CLEAR COMPLETE BIT
  11981. BX6 X0*X2
  11982. SA6 B6
  11983. MX0 6
  11984. BX5 X0*X6 EXTRACT RETURN CODE
  11985. LX5 6
  11986. MX0 -6
  11987. BX1 -X0*X6 EXTRACT FUNCTION CODE
  11988. MX0 -12
  11989. NZ X5,SFR3 IF ERROR RETURN CODE
  11990. SX4 X1-/COMSSCP/XRED
  11991. ZR X4,SFR2 IF EXTENDED READ REQUEST
  11992. SX4 X1-/COMSSCP/XWRT
  11993. NZ X4,SFRX IF NOT EXTENDED WRITE
  11994. SFR2 LX2 -42
  11995. BX3 -X0*X2 EXTRACT FP (WORD COUNT) FIELD
  11996. NZ X3,SFR1 IF MORE TO READ OR WRITE
  11997. EQ SFRX EXTENDED READ/WRITE COMPLETE
  11998.  
  11999. SFR3 SX4 X5-/COMSSCP/RC44
  12000. SX6 B0+
  12001. SA6 SFRC
  12002. ZR X4,SFR4 IF USER JOB SWAPPED OUT
  12003. SX4 X5-/COMSSCP/RC43
  12004. ZR X4,SFRX IF *UCP* ADDRESS NOT WITHIN *UCP* FL
  12005. RJ COD CONVERT FUNCTION TO DISPLAY CODE
  12006. BX1 X4
  12007. SB2 1RX REPLACEMENT CHARACTER
  12008. SB3 DAYB
  12009. SB5 -SFRA
  12010. RJ SNM SET FUNCTION CODE IN ERROR MESSAGE
  12011. BX1 X5
  12012. RJ COD CONVERT RETURN CODE
  12013. BX1 X4
  12014. SB2 1RY REPLACEMENT CHARACTER
  12015. SB5 DAYB
  12016. RJ SNM SET RETURN CODE IN ERROR MESSAGE
  12017. SA1 B6+B1
  12018. BX1 X0*X1
  12019. SB2 1RZ REPLACEMENT CHARACTER
  12020. SB5 DAYB
  12021. RJ SNM SET JOB SEQUENCE NUMBER IN ERROR MESSAGE
  12022. MESSAGE DAYB ISSUE DAYFILE MESSAGE
  12023. EQ SFRX RETURN WITH ERROR INDICATION
  12024.  
  12025. * ISSUE REQUEST TO SWAP JOB IN.
  12026.  
  12027. SFR4 SX6 /COMSSCP/SWPI BUILD SFCALL REQUEST
  12028. SA6 B6
  12029. SFCALL B6 REQUEST JOB TO BE SWAPPED IN
  12030. SFR5 SA1 B6 SFCALL PARAMETERS
  12031. MX0 59 CLEAR COMPLETE BIT
  12032. BX6 X0*X1
  12033. SA6 B6
  12034. MX0 6
  12035. BX5 X0*X1 EXTRACT RETURN CODE
  12036. LX5 6
  12037. LX1 59-0 POSITION COMPLETE BIT
  12038. PL X1,SFR8 IF REQUEST NOT COMPLETE
  12039. NZ X5,SFR6 IF ERROR RETURN CODE
  12040. SA1 B5+2 SAVED RETRY ADDRESS
  12041. BX6 X6-X6
  12042. SB4 X1
  12043. SA6 SFRC
  12044. JP B4 EXIT TO RETRY ADDRESS
  12045.  
  12046. SFR6 SX4 X5-/COMSSCP/RC44
  12047. NZ X4,SFR3 IF USER JOB NOT SWAPPED OUT
  12048.  
  12049. * WAIT FOR JOB SWAPIN WHEN ERROR WAS RETURNED.
  12050.  
  12051. SX1 B6 *BCT* SFCALL AREA ADDRESS
  12052. SX2 59-0 SHIFT COUNT
  12053. BX3 X3-X3 SUBCP NUMBER
  12054. SX4 QTET TIMED EVENT
  12055. SA5 LTIME GET REAL TIME
  12056. MX0 -QWTMN MASK FOR TIME
  12057. BX5 -X0*X5
  12058. SX0 SFCTL TIMEOUT VALUE IN MILLISECONDS
  12059. IX5 X5+X0 TIME OF EVENT COMPLETE
  12060. SB4 B0 QUEUE AT END OF QUEUE
  12061. SB3 B5 *TAF* STORAGE AREA ADDRESS
  12062. SX6 SFR7 EVENT COMPLETE ADDRESS
  12063. SA6 SFRC INHIBIT TAF FROM ROLLOUT
  12064. RJ QTW QUEUE *TAF* WORK
  12065. EQ TSSC EXIT UNTIL EVENT COMPLETE
  12066.  
  12067. * TIME FOR JOB SWAPIN EXPIRED. CHECK JOB STATUS.
  12068.  
  12069. SFR7 SB5 B3 RESTORE *TAF* STORAGE AREA ADDRESS
  12070. SA2 B5+2 PARAMETER SAVE AREA
  12071. SB4 X2 RESTORE RETRY ADDRESS
  12072. LX2 -18
  12073. SB6 X2 RESTORE SFCALL AREA ADDRESS
  12074. SX6 /COMSSCP/STAT BUILD SFCALL STATUS REQUEST
  12075. SA6 B6 STORE IN SFCALL AREA
  12076. SFCALL B6 REQUEST *UCP* STATUS
  12077. EQ SFR5 CHECK RETURN CODE
  12078.  
  12079. * WAIT FOR SWAPIN EVENT.
  12080.  
  12081. SFR8 SX1 B6 FWA OF SWAPIN REQUEST
  12082. SX2 59-0 SHIFT COUNT FOR COMPLETE BIT
  12083. BX3 X3-X3 SUBCONTROL POINT NUMBER
  12084. SX4 QTEV EVENT TYPE
  12085. BX5 X5-X5 NOT A TIMED EVENT
  12086. SB4 B0 QUEUE AT END OF QUEUE
  12087. SB3 B5 *TAF* STORAGE AREA ADDRESS
  12088. SX6 SFR9 EVENT COMPLETE ADDRESS
  12089. SA6 SFRC INHIBIT TAF FROM ROLLOUT
  12090. RJ QTW QUEUE *TAF* WORK
  12091. EQ TSSC EXIT UNTIL EVENT COMPLETE
  12092.  
  12093. * SWAPIN COMPLETE.
  12094.  
  12095. SFR9 SB5 B3 RESTORE *TAF* STORAGE AREA ADDRESS
  12096. SA2 B5+2 PARAMETER SAVE AREA
  12097. SB4 X2 RESTORE RETRY ADDRESS
  12098. LX2 -18
  12099. SB6 X2 RESTORE SFCALL AREA ADDRESS
  12100. EQ SFR5 CHECK RETURN CODE OF SWAPIN REQUEST
  12101.  
  12102. SFRA DATA C* SSF FUNCTION XX RECEIVED ERROR YY FOR ZZZZ.*
  12103. SFRC BSSZ 1 NON-ZERO IF *SFCALL* REQUEST OUTSTANDING
  12104. VBA SPACE 4,40
  12105. ** VBA - VALIDATE BATCH ACCESS.
  12106. *
  12107. * ENTRY (IDLA) = 0, IF *TAF* NOT TO BE IDLED.
  12108. * (X1) = TYBT, IF BTRAN USER.
  12109. * TYRM, IF BATCH/CRM USER.
  12110. * (X4) = BATCH USER NAME.
  12111. * (X5) = RETURN ADDRESS.
  12112. * (B5) = *TAF* STORAGE AREA ADDRESS.
  12113. * (B6) = ADDRESS OF RECOVERY REQUEST AREA.
  12114. *
  12115. * EXIT (X3) = VALIDATION STATUS.
  12116. * (B5) = *TAF* STORAGE AREA ADDRESS.
  12117. * (B6) = RECOVERY REQUEST AREA ADDRESS FORMATTED
  12118. * AS FOLLOWS.
  12119. *
  12120. * WORDS 1-2 - QUEUEING AREA FOR *CTI* RECOVERY
  12121. * ROUTINE.
  12122. *
  12123. * WORD 3 - 24/ , 18/*TST* ORDINAL,
  12124. * 18/*TST* ADDRESS
  12125. *
  12126. * WORD 4 - 18/ , 6/BI, 18/TS, 18/RA
  12127. * WHERE BI = TYPE OF BATCH ACCESS.
  12128. * TS = *TAF* STORAGE AREA ADDRESS.
  12129. * RA = RETURN ADDRESS.
  12130. *
  12131. * WORD 5 - RECOVERY REQUEST STATUS.
  12132. *
  12133. * WORD 7 - OLDID.
  12134. *
  12135. * WORD 9 - NEWID.
  12136. *
  12137. * WORD 11 - TRANSACTION TYPE.
  12138. *
  12139. * WORD 13 - STEP.
  12140. *
  12141. * USES X - ALL.
  12142. * A - 1, 2, 3, 5, 6, 7.
  12143. * B - 2, 3, 4.
  12144. *
  12145. * CALLS COD, QTW, RFB, SNM, STST.
  12146. *
  12147. * MACROS MESSAGE.
  12148.  
  12149. * IF *TAF* HAS BEEN IDLED DO NOT ALLOW ACCESS
  12150. * AND RETURN IDLE STATUS.
  12151.  
  12152.  
  12153. VBA SA3 IDLA
  12154. ZR X3,VBA1 IF *TAF* IS NOT TO BE IDLED
  12155. SX3 JSTI
  12156. SB3 X5 RETURN ADDRESS
  12157. JP B3 RETURN WITH *TAF* IDLE STATUS
  12158.  
  12159. * FIND USER IN TERMINAL STATUS TABLE.
  12160.  
  12161. VBA1 SX6 B6 SAVE RECOVERY REQUEST AREA ADDRESS
  12162. RJ STST SEARCH *TST* FOR TERMINAL/USER NAME
  12163. VBA2 SB3 X5 RETURN ADDRESS
  12164. SB6 X6 RESTORE RECOVERY REQUEST AREA ADDRESS
  12165. NZ X3,VBA3 IF USER NAME IN *TST*
  12166. SX3 JSNV
  12167. JP B3 RETURN WITH USER NOT VALID STATUS
  12168.  
  12169. * IF ANOTHER USER ACTIVE, RETURN USER ACTIVE STATUS.
  12170.  
  12171. VBA3 BX6 X3 *TST* ORDINAL
  12172. SX2 A3-TSTNW *TST* ENTRY ADDRESS
  12173. LX6 BRTOS-17
  12174. BX6 X6+X2
  12175. SA6 B6+BRTOW SAVE *TST* ORDINAL AND ADDRESS
  12176. SA3 X2 *TST* ENTRY
  12177. ERRNZ TSAUW IF USER ACTIVE FLAG NOT IN WORD ZERO
  12178. LX3 59-TSAUS
  12179. PL X3,VBA4 IF USER NOT ACTIVE
  12180. SX3 JSUA
  12181. JP B3 RETURN WITH USER ACTIVE STATUS
  12182.  
  12183. VBA4 LX3 59-TSARS-59+TSAUS
  12184. PL X3,VBA8 IF RECOVERY NOT REQUIRED
  12185.  
  12186. * BUILD RECOVERY REQUEST.
  12187.  
  12188. LX1 BRBIS-5 BATCH-CRM/BTRAN INDICATOR
  12189. SX2 B5
  12190. LX2 BRTSS-17
  12191. BX1 X1+X2 ADD *TAF* STORAGE AREA ADDRESS
  12192. SX2 B3
  12193. BX6 X1+X2 ADD RETURN ADDRESS
  12194. SA6 B6+BRBIW SAVE INPUT PARAMETERS
  12195. ERRNZ BRBIW-BRTSW FIELDS NOT IN SAME WORD
  12196. ERRNZ BRTSW-BRRAW FIELDS NOT IN SAME WORD
  12197. SX6 VBAA FWA OF *TSTAT* KEYWORDS
  12198. SX7 B6+BRRSW VALUE RETURN LOCATION
  12199. VBA5 SA7 X7 RETURN VALUE IN ARGUMENT ARRAY
  12200. SA6 A7+B1 ADDRESS OF KEYWORD
  12201. SX6 X6+B1 INCREMENT KEYWORD LOCATION
  12202. SX7 A6+B1 INCREMENT VALUE LOCATION
  12203. SX2 X6-VBAB
  12204. NZ X2,VBA5 IF NOT END OF ARGUMENT ARRAY
  12205. SX6 B0
  12206. SA6 A6 STORE END OF ARRAY
  12207.  
  12208. * QUEUE RECOVERY REQUEST.
  12209.  
  12210. SX6 B0
  12211. SA6 B5+QRTCW CLEAR COMPLETE BIT
  12212. SX1 A6 EVENT ADDRESS
  12213. SB3 B6 QUEUEING AREA ADDRESS
  12214. SX2 B0 SHIFT COUNT FOR COMPLETE BIT
  12215. BX3 X3-X3 SUBCONTROL POINT NUMBER
  12216. SX4 QTEV EVENT TYPE
  12217. BX5 X5-X5 NOT A TIMED EVENT
  12218. SB4 B0 QUEUE AT END OF QUEUE
  12219. SX6 VBA6 EVENT COMPLETE ADDRESS
  12220. RJ QTW QUEUE *TAF* WORK
  12221.  
  12222. * REQUEST RECOVERY INFORMATION.
  12223.  
  12224. SA1 B6+BRTSW *TAF* STORAGE AREA ADDRESS
  12225. LX1 BRTSN-1-BRTSS
  12226. SB3 X1
  12227. SA5 VBAC *REC* SYSTEM REQUEST
  12228. SX1 B6+BRRSW
  12229. BX5 X5+X1 ADD ARGUMENT ARRAY ADDRESS
  12230. SX6 B0 SUBCONTROL POINT NUMBER
  12231. SA1 B6+BRTOW
  12232. LX5 -18 POSITION REQUEST FOR CALL TO *TFP*
  12233. LX1 BRTON-1-BRTOS
  12234. SX7 X1 *TST* ORDINAL
  12235. ERRNZ BRTON-18 *TST* ORDINAL NOT 18 BITS
  12236. SB5 B0 SUBCONTROL POINT RA
  12237. EQ TFP *TSTATUS* RECOVERY REQUEST
  12238.  
  12239. * RECOVERY REQUEST COMPLETE.
  12240.  
  12241. VBA6 SB6 B3
  12242. SA1 B6+BRRAW
  12243. ERRNZ BRRAS-17 RETURN ADDRESS DOES NOT START IN BIT 17
  12244. SB3 X1 RESTORE RETURN ADDRESS
  12245. LX1 BRTSN-1-BRTSS
  12246. SB5 X1 RESTORE *TAF* STORAGE AREA ADDRESS
  12247. ERRNZ BRTSN-18 *TAF* STORAGE ADDRESS NOT 18 BITS
  12248. ERRNZ BRTSW-BRRAW FIELDS NOT IN SAME WORD
  12249. LX1 BRBIN-1-BRBIS-BRTSN+1+BRTSS RESTORE ACCESS TYPE
  12250. SA2 A1+B1 RECOVERY REQUEST STATUS
  12251. ERRNZ BRRAW-BRRSW+1 FIELDS NOT ADJACENT
  12252. ERRNZ BRRAW-BRRSW+1 IF STATUS NOT IN NEXT WORD
  12253. SX2 X2-TSNE
  12254. ZR X2,VBA7 IF COMPLETE WITH NO ERROR
  12255. SX1 X2
  12256. RJ COD CONVERT ERROR TO DISPLAY CODE
  12257. BX1 X4
  12258. SB2 1RX REPLACEMENT CHARACTER
  12259. SB3 DAYB
  12260. SB5 -VBAD
  12261. RJ SNM MOVE ERROR CODE TO MESSAGE
  12262. SA1 B6+BRTAW
  12263. SA1 X1+TSTNW TERMINAL/USER NAME
  12264. MX0 TSTNN
  12265. BX1 X0*X1
  12266. SB2 1RY REPLACEMENT CHARACTER
  12267. SB5 DAYB
  12268. RJ SNM MOVE USER NAME TO MESSAGE
  12269. MESSAGE DAYB ISSUE DAYFILE MESSAGE
  12270. SA1 B6+BRRAW
  12271. ERRNZ BRRAS-17 RETURN ADDRESS DOES NOT START IN BIT 17
  12272. SB3 X1 RESTORE RETURN ADDRESS
  12273. LX1 BRTSN-1-BRTSS
  12274. SB5 X1 RESTORE *TAF* STORAGE AREA ADDRESS
  12275. ERRNZ BRTSN-18 *TAF* STORAGE ADDRESS NOT 18 BITS
  12276. SX3 JSRE
  12277. JP B3 RETURN WITH REQUEST ERROR STATUS
  12278.  
  12279. * IF A BATCH *CRM* USER IS NOT CURRENTLY
  12280. * ACCESSING USERNAME, RETURN ACCESS ERROR.
  12281.  
  12282. VBA7 MX3 -BRBIN
  12283. SA2 B6+BRTRW TRANSACTION TYPE
  12284. BX1 -X3*X1
  12285. BX2 X2-X1
  12286. ZR X2,VBA8 IF SAME TYPE OF ACCESS
  12287. SX3 JSAT
  12288. JP B3 RETURN WITH DIFFERENT ACCESS ERROR
  12289.  
  12290. * SET USER ACTIVE IN *TST*.
  12291.  
  12292. VBA8 SA2 B6+BRTAW SAVED *TST* INFORMATION
  12293. SB2 X2 *TST* ADDRESS
  12294. ERRNZ BRTAS-17 *TST* ADDRESS DOES NOT START IN BIT 17
  12295. MX1 TSAUN
  12296. LX1 TSAUS-59
  12297. SA2 B2 *TST* ENTRY
  12298. ERRNZ TSAUW USER ACTIVE NOT IN WORD ZERO OF *TST*
  12299. ERRNZ TSAUW IF USER ACTIVE NOT IN WORD ZERO
  12300. BX6 X1+X2 SET USER ACTIVE IN *TST*
  12301. SA6 A2
  12302. SX3 JSRC USER VALID STATUS
  12303. JP B3 RETURN
  12304.  
  12305. VBAA DATA 10HOLDID *TSTAT* KEYWORDS
  12306. DATA 10HNEWID
  12307. DATA 10HTRAN
  12308. DATA 10HSTEP
  12309. BSSZ 1
  12310. VBAB EQU *
  12311. VBAC VFD 24/3LCTI,18/RFTS,18/0 *REC* SYSTEM REQUEST
  12312. VBAD DATA C* TSTAT REQUEST RECEIVED ERROR XXX FOR YYYYYYY.*
  12313. TITLE MISCELLANEOUS ROUTINES.
  12314. AIQ SPACE 4,10
  12315. ** AIQ - AGE INPUT QUEUE PRIORITIES.
  12316.  
  12317.  
  12318. AIQ SUBR ENTRY/EXIT
  12319. SA1 RTLW SEARCH REQUESTED TASK LIST (INPUT QUEUE)
  12320. MX4 1
  12321. SB5 B0
  12322. IX1 X1+X4 LOOKING FOR ZERO BITS
  12323. LX4 -12
  12324.  
  12325. AIQ1 NX1 B4,X1 FIND A RESERVED RTL ENTRY
  12326. SB4 B4+B4 TWO WORDS PER ENTRY
  12327. IX1 X4+X1
  12328. SB5 B5+B4
  12329. SB3 B5-RTLL
  12330. PL B3,AIQX IF END OF QUEUE
  12331.  
  12332. * INCREMENT INPUT QUEUE PRIORITY BY ONE.
  12333.  
  12334. SA2 B5+RTL
  12335. MX6 -6
  12336. LX2 -18
  12337. BX3 -X6*X2 MAXIMUM PRIORITY
  12338. LX2 -6
  12339. BX5 -X6*X2 CURRENT PRIORITY
  12340. BX7 X5-X3
  12341. ZR X7,AIQ1 IF MAXIMUM = CURRENT PRIORITY
  12342. BX2 X6*X2 CLEAR OLD CURRENT PRIORITY
  12343. SX7 X5+B1 INCREMENT OLD PRIORITY BY ONE
  12344. BX7 -X6*X7
  12345. BX6 X2+X7 NEW CURRENT PRIORITY
  12346. LX6 24
  12347. SA6 A2
  12348. JP AIQ1 LOOP
  12349. ASN SPACE 4,10
  12350. ** ASN - ASSIGN SEQUENCE NUMBER.
  12351. *
  12352. * ENTRY (X1) = *TST* TERMINAL ORDINAL.
  12353. *
  12354. * EXIT (X6) = ASSIGNED SEQUENCE NUMBER.
  12355. *
  12356. * USES X - 2, 3, 6, 7.
  12357. * A - 2, 6.
  12358. *
  12359. * CALLS EXIT, STF.
  12360.  
  12361.  
  12362. ASN2 MX7 -TFIDN-TFTSN USER SEQUENCE NUMBER MASK
  12363. BX6 -X7*X6
  12364.  
  12365. ASN SUBR ENTRY/EXIT
  12366. SA2 TSEQ UPDATE NUMBER OF TRANSACTIONS
  12367. SX7 B1
  12368. IX6 X2+X7
  12369. SA6 TSEQ
  12370.  
  12371. * IF RECOVERY IS NOT INSTALLED, THE NUMBER OF TRANSACTIONS
  12372. * EQUALS THE TRANSACTION SEQUENCE NUMBER. IF RECOVERY IS
  12373. * INSTALLED OBTAIN THE SEQUENCE NUMBER FROM THE TERMINAL
  12374. * NETWORK FILE.
  12375.  
  12376. .A IFGE IPTAR,1 IF RECOVERY INSTALLED
  12377. RJ STF SEARCH TERMINAL FILE FOR TERMINAL ORDINAL
  12378. ZR B4,ASN1 IF TERMINAL NOT FOUND
  12379. SA2 A2+TFTSW SEQUENCE NUMBER
  12380. SX7 B1 UPDATE SEQUENCE NUMBER
  12381. IX6 X2+X7
  12382. BX3 X6
  12383. LX3 59-TFTSS LEFT JUSTIFY SEQUENCE NUMBER
  12384. SA6 A2+
  12385. PL X3,ASN2 IF NO OVERFLOW, RETURN SEQUENCE NUMBER
  12386.  
  12387. * ON SEQUENCE NUMBER OVERFLOW, SET SEQUENCE NUMBER TO ONE.
  12388.  
  12389. MX7 59-TFTSS
  12390. ERRNZ TFTSN-1-TFTSS IF NUMBER NOT LEFT JUSTIFIED
  12391. BX6 X7*X2 CLEAR OLD SEQUENCE NUMBER
  12392. SX1 B1
  12393. IX6 X6+X1
  12394. SA6 A2+
  12395. EQ ASN2 RETURN SEQUENCE NUMBER
  12396.  
  12397. ASN1 RJ EXIT *TAF* INTERNAL ERROR
  12398. .A ELSE
  12399. EQ ASN2 RETURN SEQUENCE NUMBER
  12400. .A ENDIF
  12401. CIC SPACE 4,10
  12402. ** CIC EXTRACT WORD(S) FROM NON MASS STORAGE ASSOCIATED
  12403. * CIRCULAR BUFFER, AND PLACE INTO A WORKING BUFFER.
  12404. *
  12405. * ENTRY B5 = FET FOR BUFFER
  12406. * B6 = ADDRESS OF WORKING BUFFER
  12407. * B4 = WORDS / ENTRY
  12408. *
  12409. * EXIT (X1) = LAST WORD TRANSFERED
  12410. *
  12411. * USES X - 1, 2, 3, 6, 7
  12412. * A - 1, 2, 3, 6
  12413. * B - 3, 4, 5, 6
  12414.  
  12415.  
  12416. CIC PS ENTRY/EXIT
  12417. SX7 -B4 COMPLEMENT OF WORDS TO PICK UP
  12418. SA3 B5+B1 FIRST
  12419. SA1 A3+B1 IN
  12420. SA2 A1+B1 OUT
  12421. SB3 X1
  12422. SA1 A2+B1 LIMIT
  12423. SB4 X2
  12424. SB5 X1
  12425. CIC1 EQ B4,B3,CIC3 OUT = IN, END OF BUFFER INFO
  12426. SA1 B4 READ FIRST WORD
  12427. BX6 X1
  12428. SB4 B4+B1 (OUT + 1)
  12429. NE B4,B5,CIC2 IF (OUT + 1) .NE. LIMIT
  12430. SB4 X3 (OUT + 1) = FIRST
  12431. CIC2 SA6 B6 STORE WORD
  12432. SX7 X7+1
  12433. SB6 B6+B1 ADVANCE WORKING BUFFER
  12434. NZ X7,CIC1 LOOP TO FILL WORKING BUFFER
  12435. SX6 B4
  12436. SA6 A2 STORE OUT
  12437. EQ CIC *RETURN
  12438. CIC3 SX6 B4
  12439. SA6 A2 SET OUT
  12440. EQ CIC *RETURN
  12441. CLJF SPACE 4
  12442. ** CLJF CHECK FOR COMPLETION OF ANY NON BUFFERED JOURNAL FILE
  12443. * WRITES.
  12444. *
  12445. * USES X - 1, 2, 3, 4, 6, 7
  12446. * A - 1, 2, 3, 6, 7
  12447. * B - 6
  12448.  
  12449.  
  12450. CLJF PS
  12451. CLJF1 SA1 JRNLB WORD CONTAINING JOURNAL FILE LOCKS
  12452. ZR X1,CLJF *RETURN - NO LOCKS OUTSTANDING
  12453. MX3 -18
  12454. SB6 X1
  12455. ZR B6,CLJF2 IF NO ONE USING JOURNAL FILE
  12456. SA2 B6
  12457. LX2 -1
  12458. PL X2,CLJF2 IF FILE STILL BUSY
  12459. BX6 X3*X1
  12460. SA6 A1 CLEAR LOCK ON FILE
  12461. EQ CLJF5 CLEAR LOCK OUT ON STORAGE MOVE
  12462.  
  12463. CLJF2 LX1 -18
  12464. SB6 X1
  12465. ZR B6,CLJF3 IF NO ONE USING JOURNAL FILE
  12466. SA2 B6
  12467. LX2 -1
  12468. NG X2,CLJF4 IF FILE NOT BUSY - CLEAR LOCK OUT
  12469. CLJF3 LX1 -18
  12470. SB6 X1
  12471. ZR B6,CLJF *RETURN
  12472. SA2 B6
  12473. LX2 -1
  12474. PL X2,CLJF *RETURN - FILE STILL BUSY
  12475. BX6 X3*X1 CLEAR LOCK OUT ON JOURNAL FILE
  12476. LX6 18+18
  12477. SA6 A1+
  12478. EQ CLJF5 CLEAR LOCK OUT ON STORAGE MOVE
  12479.  
  12480. CLJF4 BX6 X3*X1 CLEAR LOCK OUT ON JOURNAL FILE
  12481. LX6 18
  12482. SA6 A1+
  12483.  
  12484. * CLEAR LOCK OUT ON STORAGE MOVE FOR SUB CONTROL POINT
  12485.  
  12486. CLJF5 SA2 B6+5
  12487. SX7 B1
  12488. MX1 1
  12489. SB6 X2 SUP CP USING FILE
  12490. BX6 X3*X2
  12491. SA3 B6 CONTROL WORD 1 OF SUB CP
  12492. BX7 X6+X7
  12493. SX4 X3-NUAPL START OF TASK CONTROL AREA
  12494. SA7 A2 CLEAR SUB CP ADDRESS
  12495. BX6 -X1*X3
  12496. SA1 X4+JTSC RESTORE WORDS DESTROYED BY HEADER
  12497. SA6 B6 CLEAR STORAGE MOVE LOCK OUT
  12498. IX2 X1+X4
  12499. SA1 A1+B1 WORD FROM FWA-1 OF JOURNAL DATA
  12500. SA3 A1+B1
  12501. BX6 X1
  12502. LX7 X3
  12503. SA6 X2-1 RESTORE 1ST WORD
  12504. SA1 A3+B1
  12505. SA7 A6-B1
  12506. BX6 X1
  12507. SA6 A7-B1 RESTORE 3RD WORD
  12508. SB3 CLJF6
  12509. SX3 B5
  12510. JP RCPU REQUEST CPU FOR SUB CONTROL POINT
  12511.  
  12512. CLJF6 SB5 X3 RESTORE (B5)
  12513. JP CLJF1 CHECK FURTHER JOURNAL FILES FOR COMPLETION
  12514. CML SPACE 4,10
  12515. ** CML - COMPUTE MESSAGE LENGTH.
  12516. *
  12517. * ENTRY (X3) = NUMBER OF MESSAGE UNITS.
  12518. * (X4) = MESSAGE UNIT.
  12519. *
  12520. * EXIT (X1) = MESSAGE LENGTH IN WORDS.
  12521. * (X6) = REMAINDER IN BITS OF MESSAGE OVER LAST WORD.
  12522. *
  12523. * USES X - 0, 1, 2, 6.
  12524. * B - 6.
  12525.  
  12526.  
  12527. CML SUBR ENTRY/EXIT
  12528. MX0 -6
  12529. SX6 X4-2 MESSAGE UNITS 0 AND 1 ARE NOT USED
  12530. SX2 6
  12531. IX6 X2*X6 COMPUTE SHIFT COUNT FOR BITS PER UNIT
  12532. SB6 X6
  12533.  
  12534. * (X2) CONTAINS THE BITS PER MESSAGE UNIT FOR EACH TYPE OF
  12535. * MESSAGE UNIT. MESSAGE UNIT 4 HAS 6 BITS PER UNIT.
  12536. * MESSAGE UNIT 3 HAS 12 BITS PER UNIT. MESSAGE UNIT 2
  12537. * HAS 8 BITS PER UNIT.
  12538.  
  12539. SX2 61410B
  12540. AX2 B6
  12541. BX0 -X0*X2 BITS PER MESSAGE UNIT
  12542. SX6 60 60 BITS PER WORD
  12543. IX2 X0*X3 MESSAGE LENGTH IN BITS
  12544. PX6 X6
  12545. SX0 X2
  12546. PX0 X0
  12547. NX6 X6
  12548. FX6 X0/X6 MESSAGE LENGTH IN WORDS
  12549. UX6,B6 X6
  12550. LX1 B6,X6
  12551. PX0 X1 COMPUTE REMAINDER
  12552. SX6 60
  12553. PX6 X6
  12554. DX0 X6*X0
  12555. UX6 X0
  12556. IX6 X2-X6 REMAINDER
  12557. ZR X6,CMLX IF REMAINDER .EQ. ZERO, RETURN
  12558. SX1 X1+1
  12559. EQ CMLX RETURN
  12560. CORU SPACE 4
  12561. * CORU - IF THERE IS MORE THAN *FCMFL* FIELD LENGTH NOT IN USE
  12562. * CORU WILL RELEASE UP TO *REDFL* FROM THE LAST SUB CONTROL
  12563. * POINT. CORU ALSO WILL RELEASE THE REUSEABLE TASK WITH THE
  12564. * HIGHEST RA EVERY *RRTTL* MILLESECONDS.
  12565.  
  12566.  
  12567. CORU PS
  12568. SA1 AVAILCM CURRENT FREE CORE
  12569. SX7 X1-FCMFL
  12570. TB6 0,VCPA FIRST SUB CONTROL POINT
  12571. NG X7,CORU3 IF NOT ABOVE THRESHOLD
  12572.  
  12573. * FIND THE LAST SUB CONTROL POINT AND RELEASE SOME FIELD LENGTH.
  12574.  
  12575. CORU1 SA2 B6+2 SUB CP STATUS WORD 3
  12576. SB6 X2+ NEXT SUB CP
  12577. NZ B6,CORU1 LOOP TILL END OF CHAIN REACHED
  12578. SA1 A2-2 SUB CP STATUS WORD 1
  12579. LX1 -36
  12580. SX2 X1 FREE CORE COUNT
  12581. SX4 REDFL AMOUNT OF MEMORY TO RELEASE
  12582. IX3 X2-X4
  12583. PL X3,CORU2 IF AT LEAST *REDFL* AVAILABLE AT LAST SUB
  12584. SX4 X2 RELEASE ALL FREE CORE AFTER SUB CP
  12585. CORU2 ZR X4,CORU3 NO FREE CORE TO DROP
  12586. SB6 A1+ SUB CP STATUS WORD 1
  12587. SA1 CURFL
  12588. IX7 X1-X4 DECREMENT TRANEX FIELD LENGTH STATUS WORD
  12589. MEMORY CM,MRSW,R,X7 REDUCE TAF FL
  12590. SA1 AVAILCM AVAILABLE CM
  12591. SA2 MRSW GET STATUS WORD
  12592. MX3 30
  12593. BX6 X3*X2 NEW FL
  12594. SA4 CURFL COMPUTE INCREMENT OF FL
  12595. LX6 30
  12596. IX4 X6-X4
  12597. IX7 X1+X4 NEW AVAILABLE CM
  12598. SA6 A4 SAVE *CURFL*
  12599. SA7 A1+ UPDATED AVAILABLE CM
  12600. SA1 B6 SUB CP STATUS WORD 1
  12601. LX1 SCFCN-1-SCFCS
  12602. IX7 X1+X4
  12603. LX7 59-59-SCFCN+1+SCFCS
  12604. SA7 A1+ DECREMENT FREE COUNT
  12605. SA1 MTIME TIME OF LAST FIELD LENGTH REDUCTION
  12606. SA2 ITIME
  12607. NZ X1,CORU3 IF NO FL INCREASE SINCE LAST DECREASE
  12608. BX6 X2
  12609. SA6 A1
  12610.  
  12611. * CHECK IF TIME TO ARBITRARILY GET RID OF A REUSABLE TASK
  12612.  
  12613. CORU3 SX7 RRTTL TIME INTERVAL TO EVICT A RELEASEABLE TASK
  12614. SA1 ITIME CURRENT TIME
  12615. SA2 ETIME LAST TIME A TASK WAS ARBITRARILY RELEASED
  12616. MX3 -36
  12617. IX2 X1-X2
  12618. BX2 -X3*X2 MILLESECONDS SINCE LAST TASK RELEASE
  12619. IX3 X7-X2
  12620. TB5 0,VCPA FIRST SUB CONTROL POINT
  12621. SB4 B1
  12622. BX5 X5-X5 SUB CONTROL POINT ACTIVE FLAG
  12623. PL X3,CORU4 IF NOT TIME TO CHECK REUSEABLE TASKS
  12624. BX7 X1
  12625. SB4 B0
  12626. SA7 A2
  12627. SB6 B0
  12628.  
  12629. * EVICT RELEASEABLE TASK WITH THE LARGEST RA.
  12630.  
  12631. CORU4 SA1 B5
  12632. SA2 B5+B1
  12633. LX1 59-58
  12634. SA3 A2+B1 LINK WORDS TO NEXT SUB CONTROL POINT
  12635. LX2 -36
  12636. PL X1,CORU5 IF NOT A RELEASEABLE TASK
  12637. SB6 B5
  12638. CORU5 SX2 X2
  12639. ZR X2,CORU6 IF SUB CONTROL POINT NOT ACTIVE
  12640. SX5 B1
  12641. CORU6 SB5 X3+ NEXT SUB CONTROL POINT
  12642. NZ B5,CORU4 IF NOT AT END OF SUB CONTROL POINTS
  12643. EQ B4,B1,CORU7 IF NOT TIME TO RELEASE TASK
  12644. ZR B6,CORU7 IF NO RELEASEABLE SUB CONTROL POINTS
  12645. SB3 CORU RETURN ADDRESS
  12646. JP ESCP1 RELEASE TASK
  12647.  
  12648. * CHECK IF TRANEX IDLE AND TIME TO ROLLOUT.
  12649.  
  12650. CORU7 NZ X5,CORU IF SUB CONTROL POINT(S) ACTIVE
  12651. SA1 TROF
  12652. NZ X1,CORU IF ROLLOUT IS PROHIBITED
  12653. SA2 PBCA
  12654. NZ X2,CORU IF BATCH CONCURRENCY JOB ACTIVE
  12655. SA1 SFRC
  12656. NZ X1,CORU IF *SFCALL* REQUEST OUTSTANDING
  12657. SA2 TAFQ
  12658. SX2 X2+
  12659. NZ X2,CORU IF JOBS TO PROCESS IN *TAFQ*
  12660. SA3 RDCBD LAST INPUT TIME
  12661. SA4 ITIME CURRENT TIME
  12662. SA5 ITRTL
  12663. MX2 -36
  12664. IX1 X4-X3
  12665. BX6 -X2*X1 TIME SINCE LAST INPUT
  12666. IX3 X5-X6
  12667. PL X3,CORU NOT TIME TO ROLLOUT
  12668. SA1 RTLW RTL RESERVATION WORD
  12669. MX2 12
  12670. BX1 -X2*X1 GET RESERVATION BITS
  12671. CX1 X1
  12672. SX1 X1-NRTL
  12673. NZ X1,CORU DONT ROLLOUT - TASK(S) SCHEDULED
  12674. SA1 IDLA
  12675. ZR X1,TRO IF NOT TO IDLE DOWN
  12676. SB5 B0+
  12677. RJ SRO SEARCH ROLLOUT TABLE
  12678. NZ B5,TRO IF ROLLOUT TABLE RESERVED
  12679. TX5 0,VNCMB NUMBER OF COMMUNICATION BLOCKS
  12680. MX7 12
  12681. TA2 0,VCBRT C.B. BIT MAP
  12682. BX7 -X7*X2
  12683. CX3 X7
  12684. IX4 X3-X5
  12685. NZ X4,TRO IF COMMUNICATION BLOCK RESERVED
  12686. CORU8 SX2 CORU8 RETRY ADDRESS
  12687. SB6 CORUA FWA OF PARAMETER
  12688. SB5 B6+2 FWA OF TAF STORAGE
  12689. RJ SFR ISSUE *SFCALL* REQUEST
  12690. RJ NOF ISSUE *NETOFF* REQUEST
  12691.  
  12692. * IDLE DOWN TAF.
  12693.  
  12694. SA1 CURFL SET RFL TO CURRENT FL
  12695. SETRFL X1
  12696. ENDRUN
  12697.  
  12698. * *SFCALL* *SF.EXIT* PARAMETERS.
  12699.  
  12700. CORUA VFD 6/0,12/0,18/0,18/0,6//COMSSCP/EXIT
  12701. BSSZ 4 *SFCALL* PARAMETERS
  12702. CSM SPACE 4,10
  12703. ** CSM - PROCESS COMMAND/STATUS MESSAGES.
  12704. *
  12705. * *CSM* PROCESSES COMMAND/STATUS MESSAGES RECEIVED FROM
  12706. * *LIBTASK* AND *DMREC*.
  12707. *
  12708. * ENTRY (X4) = FIRST WORD OF STATUS MESSAGE.
  12709. * (A4) = FWA OF STATUS MESSAGE.
  12710. *
  12711. * EXIT TO *TSSC* IF PROCESSING COMPLETE.
  12712. *
  12713. * USES A - 1, 2, 4, 7.
  12714. * B - 3, 4, 5.
  12715. * X - 0, 1, 2, 3, 4, 5, 7.
  12716. *
  12717. * CALLS JRNL, LOVL.
  12718. *
  12719. * MACROS MESSAGE.
  12720.  
  12721.  
  12722. CSM UX2,B3 X4 GET FUNCTION CODE
  12723. SX3 B3
  12724. LX3 -1
  12725. LX4 17-35
  12726. SB4 X3-CSMJTL
  12727. PL B4,CSM1 IF INCORRECT FUNCTION
  12728. SB3 X3 JUMP TABLE INDEX
  12729. BX7 X7-X7
  12730. JP B3+CSMJT JUMP THRU TABLE TO FUNCTION PROCESSOR
  12731.  
  12732. * CSM JUMP TABLE.
  12733.  
  12734. CSMJT PL X3,CSM3 IF TRANSACTION SUBSYSTEM PRESENT
  12735. EQ CSM1 INCORRECT FUNCTION
  12736. PL X3,CSM4 IF LIBTASK(TT) DIRECTORY UPDATE REQUEST
  12737. EQ CSM1 INCORRECT FUNCTION
  12738. PL X3,CSM1 IF INCORRECT FUNCTION
  12739. EQ CSM5 COMMUNICATION SUBSYSTEM INITIALIZATION
  12740. PL X3,CSM1 IF INCORRECT FUNCTION
  12741. EQ CSM6 IF *CRM* BATCH RECOVERY RESPONSE
  12742. CSMJTL EQU *-CSMJT LENGTH OF TABLE
  12743.  
  12744. * PROCESS INCORRECT *SIC* REQUEST.
  12745.  
  12746. CSM1 LX4 18
  12747. SB3 CSM2 RETURN ADDRESS
  12748. SX3 X4 LENGTH OF MESSAGE
  12749. SB4 7 INDICATES POSSIBLE MALICIOUS USER
  12750. SB5 PJRNL
  12751. SX5 A4 FWA OF MESSAGE
  12752. LX3 35-17
  12753. SX7 A4+ SAVE BUFFER ADDRESS
  12754. BX0 X0-X0 NO COMMUNICATION BLOCK
  12755. BX5 X5+X3 SET BUFFER ADDRESS AND LENGTH
  12756. SA7 CSMB
  12757. EQ JRNL PROCESS JOURNAL ENTRY
  12758.  
  12759. CSM2 MESSAGE CSMA NOTE THAT A BAD COMMAND WAS RECEIVED
  12760. SA2 CSMB RESTORE BUFFER ADDRESS
  12761. BX7 X7-X7 CLEAR INTER-CONTROL POINT BUFFER
  12762. SA7 X2
  12763. EQ TSSC ENTER TASK SWITCHING LOOP
  12764.  
  12765. * PROCESS CHECK ON STATUS OF TRANSACTION EXECUTIVE.
  12766.  
  12767. CSM3 SA7 A4 CLEAR INTER-CONTROL POINT BUFFER
  12768. EQ TSSC TIME SLICE TASKS
  12769.  
  12770. * PROCESS REQUEST FOR TASK DIRECTORY UPDATE.
  12771.  
  12772. CSM4 SA1 LOVF OVERLAY ENTRY POINT NAME
  12773. RJ LOVL LOAD/EXECUTE OVERLAY
  12774.  
  12775. * A COMMUNICATION SUBSYSTEM INITIALIZATION HAS TAKEN PLACE.
  12776.  
  12777. CSM5 SA7 A4+ CLEAR INTER-CONTROL POINT BUFFER
  12778. SA1 LOVG
  12779. RJ LOVL LOAD/EXECUTE OVERLAY
  12780. EQ TSSC
  12781.  
  12782. * PROCESS RESPONSE FROM *CRM* BATCH RECOVERY PROGRAM.
  12783.  
  12784. CSM6 SX7 A4 SAVE INPUT BUFFER ADDRESS
  12785. SA7 CSMB
  12786. MX0 -18
  12787. SA1 A4+
  12788. BX1 -X0*X1
  12789. SB3 X1 MESSAGE LENGTH
  12790. SB4 B3-CSMDL
  12791. SB5 B3-B1
  12792. SX5 B0 FUNCTION CODE
  12793. NG B5,CSM2 IF MESSAGE TOO LONG
  12794. CSM7 SA1 A4+B5
  12795. BX7 X1
  12796. SA7 CSMD+B5 MOVE MESSAGE TO TEMPORARY BUFFER
  12797. SB5 B5-B1
  12798. PL B5,CSM7 IF NOT ENTIRE MESSAGE MOVED
  12799. SX2 B3
  12800. SA1 CSME PROTOTYPE HEADER
  12801. BX7 X1+X2
  12802. SA7 A7
  12803. SB3 A7+
  12804. SA4 CSMC TASK NAME
  12805. RJ TRN SCHEDULE TASK
  12806. SA1 CSMB
  12807. ZR X0,TSSC IF TASK NOT SCHEDULED
  12808. SX7 B0
  12809. SA7 X1 CLEAR THE ORIGINAL INPUT BUFFER
  12810. EQ TSSC EXIT
  12811.  
  12812. CSMA DATA C* CSM - INCORRECT COMMUNICATION FUNCTION.*
  12813. CSMB CON 0 STORAGE FOR BUFFER ADDRESS
  12814. CSMC DATA 7LCRMTASK
  12815. CSMD BSS 4 TEMPORARY BUFFER FOR *SIC* MESSAGE
  12816. CSMDL EQU *-CSMD
  12817. CSME VFD 1/1,2/0,1/1,7/0,1/1,12/0,18/0,18/0
  12818.  
  12819. DCPT SPACE 4,10
  12820. ** DCPT - DROP CPU FOR TASK.
  12821. *
  12822. * ENTRY (B7) = CONTROL POINT ADDRESS.
  12823. *
  12824. * EXIT (B2) = FWA OF TASK SYSTEM AREA.
  12825. * (B7) = FWA OF TASK SUBCP TABLE.
  12826. * (SREG) = 24/0,18/(B2)/18/(B7).
  12827. *
  12828. * USES A - 1, 2, 6, 7.
  12829. * B - 2, 3, 4, 6, 7.
  12830. * X - ALL.
  12831. *
  12832. * CALLS EXIT.
  12833.  
  12834.  
  12835. DCPT SUBR ENTRY/EXIT
  12836. MX0 1
  12837. TX2 B7+CPAL,-VCPA CONTROL POINT ADDRESS
  12838. LX0 -12
  12839. SA1 CR CPU SWITCHING WORD
  12840. AX2 SCPAL
  12841. SB4 X2 CONTROL POINT NUMBER
  12842. AX3 X0,B4
  12843. BX7 -X3*X1 MASK OFF REQUEST CPU STATUS
  12844. SA7 A1
  12845. BX2 X3*X1
  12846. NZ X2,DCPT1 IF CPU SELECTED FOR THIS SUBCP
  12847. RJ EXIT
  12848. DCPT1 ZR X7,DCPT4 IF IDLE
  12849.  
  12850. * SEARCH CPU REQUEST WORD FOR NEXT SUBCP.
  12851.  
  12852. SA2 A1+B1 SWITCH MASK
  12853. BX3 X3-X3
  12854. SB3 B0
  12855. BX6 -X2*X7 SET LOWER CONTROL POINTS
  12856. SB7 SCPAL
  12857. PX4 X6
  12858. BX5 X5-X5
  12859. EQ DCPT3 ENTER LOOP
  12860.  
  12861. DCPT2 SX3 X3+B6 SET CP ADDRESS
  12862. LX6 X3,B7
  12863. TA1 X6-CPAL,VCPA
  12864. NO
  12865. SA1 X1-NUAPL+CB1C C.B. HEADER WORD 1
  12866. UX1,B4 X1 CHECK PRIORITY
  12867. LE B4,B3,DCPT3 IF PREVIOUS JOB NOT HIGHER
  12868. BX5 X6 SET NEW JOB
  12869. SB3 B4
  12870. DCPT3 BX1 -X0*X4 REMOVE JOB FROM STACK
  12871. NX4,B6 X1 SET NEXT JOB
  12872. NZ X4,DCPT2 IF MORE JOBS IN STACK
  12873. SX3 B0 SET UPPER CONTROL BITS
  12874. BX1 X2*X7
  12875. PX4 X1
  12876. SX2 B0
  12877. NZ X1,DCPT3 IF MORE JOBS REMAIN TO BE EXAMINED
  12878.  
  12879. * BEGIN A NEW SUBCP.
  12880.  
  12881. TA2 X5-CPAL,VCPA
  12882. SB7 A2
  12883. SX7 A2
  12884. SB2 X2-NUAPL SUB CP RA
  12885. SX2 B2+
  12886. LX2 18
  12887. BX7 X2+X7
  12888. SA7 SREG
  12889. NZ B3,DCPTX IF TASK FOUND, RETURN
  12890.  
  12891. * IDLE CPU.
  12892.  
  12893. DCPT4 BX6 X6-X6 CLEAR TASK POINTERS
  12894. SB2 B0
  12895. SA6 SREG
  12896. SB7 B0
  12897. EQ DCPTX RETURN
  12898. ECET SPACE 4,10
  12899. ** ECR - PROCESS EXTENDED MEMORY ERROR WHILE LOADING TASK.
  12900. *
  12901. * ENTRY - SEE OVERLAY ROUTINE *ECE*.
  12902.  
  12903.  
  12904. ECR SA1 LOVD OVERLAY ENTRY POINT
  12905. SA7 ECRA PARAMETERS FOR ECS ERROR OVERLAY
  12906. RJ LOVL LOAD/EXECUTE ECS TASK READ ERROR OVERLAY
  12907.  
  12908. * RE-ENTRY POINT IF ATTACH ERROR ON TASK LIBRARY.
  12909.  
  12910. ECR1 SX7 ECR2 RETURN ADDRESS
  12911. SX6 25 DELAY COUNT
  12912. LX6 18
  12913. BX7 X6+X7
  12914. EQ TRCL2 RECALL TASK FOR DELAY COUNT
  12915.  
  12916. ECR2 LX1 -18
  12917. SX6 X1-1
  12918. MX7 -18
  12919. ZR X6,ECR3 IF DELAY COUNT EXPIRED
  12920. BX7 X7*X1 CLEAR OLD COUNT VALUE
  12921. BX7 X7+X6
  12922. LX7 18
  12923. EQ TRCL2 DELAY
  12924.  
  12925. ECR3 SA1 LOVD ENTRY POINT NAME
  12926. SX2 B1 NO EXECUTE FLAG
  12927. BX1 X1+X2
  12928. RJ LOVL LOAD ECS TASK READ ERROR OVERLAY
  12929. EQ ECE9 PROCESS ECS READ ERROR
  12930.  
  12931. ECRA BSS 1 6/ ,18/EDT,18/FL,18/SCP
  12932. ESCP SPACE 4,10
  12933. ** ESCP - END SUBCONTROL POINT PROGRAM.
  12934. * REMOVE SUB CP FROM ACTIVE CHAIN AND PLACE INTO FREE
  12935. * SUBCP CHAIN. ALSO UPDATE CORE USAGE POINTERS.
  12936. *
  12937. * ENTRY (B7) = SUB CONTROL POINT ADDRESS
  12938. * (B6) .NE. (B7) IF RETURN DESIRED
  12939. * (B3) = RETURN ADDRESS
  12940. * (A1) = ADDRESS OF SUBCP WORD TWO.
  12941. * (X7) = STATUS WORD 2 OF SUB CP
  12942. *
  12943. * EXIT TO DCPT IF RETURN NOT REQUESTED
  12944. *
  12945. * USES X - 0, 1, 2, 3, 4, 5, 6, 7
  12946. * A - 1, 2, 3, 4, 5, 6, 7
  12947. * B - 6
  12948.  
  12949.  
  12950. ESCP SA3 B7+2 GET TASK ATTRIBUTES AND STATUS
  12951. MX6 -12
  12952. LX3 12
  12953. SA2 B7 CONTROL WORD ONE OF SUBCP
  12954. BX3 -X6*X3
  12955. SA5 AVAILCM
  12956. TA3 X3+TLTAW-TLDAW,VTLD TASK ATTRIBUTES AND STATUS
  12957. SX6 -B1
  12958. LX3 59-TLQUS
  12959. BX1 X7
  12960. PL X3,ESCP0.1 IF Q-ATTRIBUTE NOT SPECIFIED
  12961. RJ ITA DECREMENT TASK ACTIVE COUNT
  12962. ESCP0.1 BX7 X1
  12963. LX7 -1
  12964. SB6 B7 SUB CONTROL POINT ADDRESS
  12965. LX2 -18
  12966. SX3 X2+NUAPL CORE USED BY SUB CP
  12967. IX6 X5+X3 ADD TO AVAILABLE CORE COUNT
  12968. SA6 A5
  12969. PL X7,ESCP1 DO NOT REUSE TASK
  12970. LX7 -1
  12971. SX3 B1
  12972. LX2 18
  12973. SA7 A1+ SUBCONTROL POINT CONTROL WORD 2
  12974. LX3 59-1
  12975. TX6 B7+CPAL,-VCPA
  12976. BX7 X2+X3
  12977. AX6 SCPAL
  12978. SA4 SCHDA REUSABLE TASK STATUS WORD
  12979. LX3 1-12 POSITION AT BIT 47
  12980. SB6 X6
  12981. SA7 B7 SET REUSABLE BIT IN CONTROL WORD 1
  12982. AX3 X3,B6
  12983. BX6 X3+X4
  12984. SX7 B1 REQUEST TASK SCHEDULER
  12985. SA6 A4+ BIT SET IN REUSABLE TASK STATUS WORD
  12986. SA7 RSCH
  12987. RJ DCPT DROP CPU FOR TASK
  12988. EQ TSSC TIME SLICE SUBCP
  12989.  
  12990. * RELEASE SUB CONTROL POINT AND ITS CORE
  12991. * ENTRY (B6) = SUB CONTROL POINT TO RELEASE
  12992.  
  12993. ESCP1 TX6 B6+CPAL,-VCPA
  12994. SA4 SCHDA CLEAR BIT IN REUSEABLE TASK LIST
  12995. AX6 SCPAL
  12996. SX3 B1+
  12997. LX3 -1-12 POSITION AT BIT 47
  12998. SB1 X6+ SHIFT COUNT
  12999. AX3 X3,B1
  13000. BX6 -X3*X4 MASK OUT BIT - IF SET
  13001. SB1 1
  13002. SA6 A4+
  13003. SX7 B6
  13004. TA2 0,VNACP NEXT FREE SUB CONTROL POINT
  13005. BX6 X2
  13006. SA3 B6
  13007. SA7 A2 ADD RELEASED SUB CP TO START OF CHAIN
  13008. LX3 -18
  13009. SA6 B6 SET CHAIN POINTER IN CONTROL POINT AREA
  13010. SX7 X3+NUAPL TOTAL FL RELEASED
  13011. LX3 -18
  13012. SX2 X3 FREE CORE AFTER RELEASED SUB CP
  13013. IX4 X2+X7 TOTAL CONTIGOUS CORE
  13014.  
  13015. * FIND PREVIOUS SUB CP AND INCREMENT ITS FREE CORE COUNT.
  13016.  
  13017. SA2 B6+2 THIRD STATUS WORD OF SUB CP BEING DROPPED
  13018. MX5 -18
  13019. LX2 -18
  13020. SA3 X2+2 THIRD STATUS WORD OF PREVIOUS SUB CP
  13021. LX2 18
  13022. BX7 X5*X3 REMOVE NEXT SUB CP POINTER
  13023. BX6 -X5*X2
  13024. IX7 X7+X6 NEW NEXT SUB CP POINTER
  13025. SA7 A3
  13026. ZR X6,ESCP2 DROPPING AT END OF CHAIN
  13027. SA1 X6+2
  13028. LX1 -18
  13029. BX6 X5*X1 MASK OFF BACKWARD POINTER
  13030. SX1 A3-2
  13031. BX6 X1+X6 ADD NEW BACKWARD POINTER
  13032. LX6 18
  13033. SA6 A1+
  13034. ESCP2 LX2 -18
  13035. SA2 X2+ FIRST STATUS WORD OF PREVIOUS SUB CP
  13036. LX2 -36
  13037. IX6 X4+X2 ADD IN CORE RELEASED BY DROPPING SUB CP
  13038. LX6 36
  13039. SX7 B1 REQUEST TASK SCHEDULER
  13040. SA6 A2
  13041. SA7 RSCH
  13042. EQ B6,B7,ESCP3 IF DROP CPU FOR TASK
  13043. JP B3 RETURN TO CALLING ROUTINE
  13044.  
  13045. ESCP3 RJ DCPT DROP CPU FOR TASK
  13046. EQ TSSC TIME SLICE SUBCP
  13047. ETSQ SPACE 4
  13048. ** ETSQ ENTER A TASK INTO THE SCHEDULER QUEUE
  13049. *
  13050. * ENTRY (X0) = START OF COMMUNICATIONS BLOCK
  13051. * (B3) = ALTERNATE EXIT ADDRESS
  13052. *
  13053. * EXIT (X6) = 0 IF RTL FULL
  13054. *
  13055. * USES X - 1, 2, 3, 4, 6, 7
  13056. * A - 1, 2, 3, 4, 6, 7
  13057. * B - 4, 5, 6
  13058.  
  13059.  
  13060. ETSQ PS ENTRY/EXIT
  13061. TX4 X0,-VCBSA
  13062. SA1 X0+2 TASK LIST WORD
  13063. MX7 12
  13064. SX6 CMBL
  13065. BX2 X7*X1 TASK TO BE SCHEDULED
  13066. PX4 X4
  13067. SX1 B1
  13068. LX2 12
  13069. LX1 42
  13070. TA3 X2+1,VTLD TLD DIRECTORY WORD 3
  13071. BX7 X3
  13072. LX7 59-TLTOS
  13073. PL X7,ETSQ0 IF TASK NOT TURNED OFF
  13074. SA2 SCTB GET INDEX FOR *OFFTASK*
  13075. LX2 12
  13076. TA3 X2+1,VTLD TLD DIRECTORY WORD 3
  13077. ETSQ0 NX4 X4
  13078. PX6 X6
  13079. LX3 24
  13080. IX7 X3+X1 BUMP TIMES CALLED COUNT
  13081. LX2 -12 REPOSITION TASK ID
  13082. LX7 -24
  13083. SA7 A3
  13084. LX3 -24+2
  13085. PL X3,ETSQ4 NOT A CORE RESIDENT TASK
  13086. TA1 -3,VTLD
  13087. TB6 0,VCPA FIRST SUB CONTROL POINT
  13088. SB5 X1+ NUMBER OF CORE RESIDENT TASKS
  13089. SA1 B6+2 INITIAL TASK STATUS WORD 3
  13090. MX3 12
  13091. SB5 B5-B1
  13092. SB6 B6+CPAL ADVANCE POINTER TO NEXT SUB CP
  13093. BX3 X3*X1 NAME OF CORE RESIDENT TASK
  13094. IX3 X3-X2
  13095. NZ X3,ETSQ3 NOT A CALL TO INITIAL TASK
  13096. TA1 CPAHL,VCPA
  13097. SB6 A1+CPACL-1 END OF COMMUNICATION BLOCKS FOR TASK
  13098. ETSQ1 ZR X1,ETSQ2 OPEN ENTRY FOUND
  13099. SB5 A1
  13100. SA1 A1+B1
  13101. NE B5,B6,ETSQ1 CHECK NEXT ENTRY
  13102. BX6 X6-X6 SET RTL FULL CONDITION TO FORCE TASK RECALL
  13103. EQ ETSQ *EXIT - TRY SCHEDULING LATER
  13104.  
  13105. * SET UP C.B. TO BE PROCESSED BY INITIAL TASK
  13106.  
  13107. ETSQ2 MX2 1
  13108. TA4 1,VCPA CONTROL WORD
  13109. MX3 1
  13110. SX6 B1
  13111. LX2 -5 INITIAL LOAD BIT
  13112. BX2 X2+X3 SET WAITING FOR CPU BIT
  13113. LX4 -36
  13114. BX7 X2+X0
  13115. SA7 A1 C.B. STATUS WORD
  13116. IX6 X4+X6 BUMP C.B. COUNT FOR INITIAL TASK
  13117. SB6 A4-B1
  13118. LX6 36
  13119. SX4 X4 OLD C.B. COUNT
  13120. SA6 A4+
  13121. NZ X4,ETSQ IF ITASK ACTIVE
  13122. SA4 VFSCP FWA OF SUB-CONTROL POINTS
  13123. AX4 24
  13124. EQ RCPU REQUEST CPU FOR INITIAL TASK
  13125.  
  13126. * SEARCH CORE RESIDENT TASKS FOR MATCH TO REQUESTED TASK
  13127.  
  13128. ETSQ3 ZR B5,ETSQ4 END OF SEARCH
  13129. SA1 B6+B1 SUB CP STATUS WORD 2
  13130. SB5 B5-B1
  13131. SB6 B6+CPAL
  13132. LX1 -36
  13133. SX3 X1 C.B.S WAITING FOR TASK
  13134. NZ X3,ETSQ3 AT LEAST ONE IS WAITING
  13135. SA1 A1+B1
  13136. MX7 12
  13137. BX3 X7*X1 ID OF CORE RESIDENT TASK
  13138. IX3 X3-X2
  13139. NZ X3,ETSQ3 NOT SAME TASK
  13140. SA4 A1-B1
  13141. SX3 B1
  13142. SX1 41B WAITING FOR CPU AND INITIAL LOAD BITS
  13143. LX4 -36
  13144. SX7 X0 COMMUNICATION BLOCK ADDRESS
  13145. BX6 X4+X3 SET C.B. COUNT FOR SUB CP
  13146. LX1 -6
  13147. SA2 A4-1 FIRST WORD OF SUB CP AREA
  13148. LX6 36
  13149. BX7 X1+X7
  13150. SX4 X2-NUAPL START OF TASK CORE
  13151. SA6 A4
  13152. SA7 A1+B1
  13153. SB6 B6-CPAL
  13154. EQ RCPU REQUEST CPU FOR TASK
  13155. ETSQ4 NX6 X6
  13156. SA1 RTLW RTL RESERVATION WORD
  13157. FX3 X4/X6 DIVIDE BY C.B. LENGTH
  13158. UX6 B4,X3
  13159. SB5 0
  13160. MX3 1
  13161. LX6 B4,X6 C.B. NUMBER
  13162. BX1 X1+X3 LOOKING FOR ZERO BITS
  13163. SB6 X6
  13164. MX7 12
  13165.  
  13166. * LOOK FOR SIMILAR TASK ALREADY IN RTL
  13167.  
  13168. ETSQ5 NX1 B4,X1
  13169. SB4 B4+B4 TWO WORDS PER RTL ENTRY
  13170. SB5 B5+B4
  13171. SB4 B5-RTLL
  13172. PL B4,ETSQ7 NO FURTHER ENTRIES TO CHECK
  13173. SA4 B5+RTL READ AN RTL ENTRY
  13174. BX6 X7*X4 MASK OFF NAME
  13175. SX3 B1
  13176. IX6 X6-X2 COMPARE TASK ID
  13177. NZ X6,ETSQ6 NOT SIMILAR TASK REQUEST
  13178. SX6 X4
  13179. ZR X6,ETSQ6 QUEUE LIMIT ALREADY REACHED
  13180. SA2 A4+B1 UPDATE ATL POINTERS
  13181. IX6 X4-X3
  13182. MX7 18
  13183. TX4 B6,VATL
  13184. BX1 -X7*X2 MASK OFF CURRENT ATL POINTER
  13185. SA6 A4 DECREMENT QUEUE COUNT
  13186. SA3 X4 ATL ENTRY FOR C.B.
  13187. LX4 42
  13188. BX6 X1+X4 NEW CURRENT C.B. POINTER
  13189. MX7 36
  13190. SA6 A2
  13191. LX2 18
  13192. SX1 B6+B1
  13193. BX3 -X7*X3 MASK OFF ANY OLD ATL LINKS
  13194. LX1 48
  13195. SA4 X2
  13196. BX6 X4+X1 SET NEXT ATL POINTER FOR LAST ATL ENTRY
  13197. TX7 X2+1,-VATL
  13198. LX7 36
  13199. SA6 A4
  13200. BX6 X3+X7 SET PRIOR ATL POINTER FOR CURRENT ATL ENTRY
  13201. SA6 A3
  13202. EQ ETSQ *RETURN
  13203. ETSQ6 LX3 47
  13204. BX1 X3+X1
  13205. EQ ETSQ5 CHECK ANOTHER RTL ENTRY
  13206.  
  13207. * CREATE A NEW RTL ENTRY
  13208.  
  13209. ETSQ7 SA1 A1 RTL RESERVATION WORD
  13210. BX6 X6-X6
  13211. SX3 B1
  13212. NX4 X1,B4 FIND A NONRESERVED ENTRY
  13213. SB5 B4-RTLL/RTLLE
  13214. GE B5,B0,ETSQ RTL IS FULL
  13215. LX3 -13
  13216. LX3 X3,-B4
  13217. BX6 -X3*X1 RESERVE THE ENTRY
  13218. SB4 B4+B4
  13219. LX2 12 TLD BIAS FOR REQUESTED TASK
  13220. SA6 A1+
  13221. MX6 -TLMPN
  13222. TA4 X2,VTLD GET SCHEDULING INFORMATION FROM TLD
  13223. BX7 -X6*X4 GET MAXIMUM PRIORITY
  13224. SA3 A4+B1
  13225. LX6 TLBPS-TLBPN+1
  13226. BX1 -X6*X3 GET BASE PRIORITY
  13227. BX7 X1+X7
  13228. MX6 6
  13229. LX4 TLFLN-TLFLS-1 GET FIELD LENGTH
  13230. MX1 -TLFLN
  13231. BX6 X6*X3 RESIDENCE / DESTRUCTIVENESS/ PRIVELEDGES
  13232. LX7 18
  13233. BX4 -X1*X4
  13234. LX4 6
  13235. LX6 6
  13236. MX1 -TLQLN SET QUEUE LIMIT
  13237. BX3 -X1*X3
  13238. SX1 X3-1 QUEUE LIMIT
  13239. LX2 -12
  13240. BX7 X7+X1
  13241. LX4 30
  13242. BX7 X7+X2 ADD TLD BIAS
  13243. TX1 B6,VATL ATL ADDRESS
  13244. BX7 X7+X4
  13245. SA2 X1 READ ATL ENTRY
  13246. MX4 24
  13247. LX1 42
  13248. SA7 RTL+B4 1ST WORD OF RTL ENTRY
  13249. BX6 X6+X1
  13250. LX1 -18
  13251. BX6 X6+X1 ADD POINTERS TO ATL ENTRIES
  13252. SA6 A7+B1 2ND WORD OF RTL ENTRY
  13253. BX7 -X4*X2
  13254. SA7 A2 CLEAR ANY OLD ATL LINKS
  13255. EQ ETSQ *RETURN
  13256. EVS SPACE 4,15
  13257. ** EVS - ACTIVATE A TASK ON AN EVENT.
  13258. *
  13259. * ENTRY (X7) = EVENT.
  13260. *
  13261. * EXIT (B4) = ROLT ENTRY IF TASK ACTIVATED.
  13262. * = 0 IF NO TASK ACTIVATED.
  13263. *
  13264. * (B5) = 0 IF TASK SCHEDULED FOR ROLLIN.
  13265. * = NON ZERO IF TASK INTERRUPTED IN ROLLOUT.
  13266. *
  13267. * USES A - 1, 2, 3, 4, 5, 6, 7.
  13268. * B - 3, 4, 5, 6.
  13269. * X - ALL.
  13270. *
  13271. * CALLS MSQ, SRO.
  13272.  
  13273.  
  13274. EVS SUBR ENTRY/EXIT
  13275. MX3 RTTLN
  13276. LX3 RTBID-59 MASK FOR ROLT WAIT TIME
  13277. BX6 X3 INITIALIZE LONGEST WAIT FOR TASK
  13278. SB4 B0 FWA OF TASK WAITING THE LONGEST IF ANY
  13279. BX0 X7
  13280. SB5 B0+ BEGIN SEARCH OF ROLLOUT TABLE
  13281. EVS1 RJ SRO GET FIRST/NEXT ROLLOUT ENTRY
  13282. ZR B5,EVS3 IF END OF ROLT
  13283. SA5 B5+RTWEV ROLLED EVENT
  13284. MX2 -48
  13285. LX2 -12
  13286. SA4 B5 ROLT ENTRY
  13287. BX5 X0-X5
  13288. BX5 -X2*X5
  13289. NZ X5,EVS1 IF NOT REQUIRED EVENT
  13290. NG X4,EVS2 IF ROLLOUT COMPLETE
  13291.  
  13292. * INTERUPT ROLLOUT PROCESS.
  13293. * CHOOSE TASK IN ROLLOUT PROCESS RATHER THAN TASK WAITING
  13294. * LONGEST FOR EVENT TO MINIMIZE OVERHEAD.
  13295.  
  13296. MX6 -6
  13297. SA4 B5+RTWEV GET SUBCP NUMBER
  13298. LX4 -36
  13299. BX1 -X6*X4 SUB CONTROL POINT OF UNROLLED TASK
  13300. LX1 SCPAL
  13301. TA2 X1-CPAL,VCPA SUB CONTROL POINT ADDRESS
  13302. MX5 1
  13303. SA4 X2-NUAPL+ROSC
  13304. BX6 X5+X4 SET ROLLOUT INTERUPTED FLAG
  13305. SA6 A4
  13306. SB4 B5 ROLLOUT ENTRY SELECTED
  13307. JP EVS4
  13308.  
  13309. * SAVE TASK THAT HAS WAITED THE LONGEST FOR BST.
  13310. * TIME IN ROLT IS TIME THAT TASK IS SCHEDULED FOR ROLLIN.
  13311. * TASK WITH LEAST VALUE OF TIME IS TASK THAT HAS WAITED THE
  13312. * LONGEST.
  13313.  
  13314. EVS2 BX5 X3*X4 ROLLIN TIME FOR ROLT TASK
  13315. IX4 X5-X6
  13316. PL X4,EVS1 IF TASK HAS NOT WAITED THE LONGEST
  13317. BX6 X5 SAVE LONGEST WAIT ON EVENT
  13318. SB4 B5 SAVE ADDRESS OF ROLT ENTRY
  13319. JP EVS1 GET NEXT ROLT ENTRY
  13320.  
  13321. EVS3 ZR B4,EVSX IF NO TASKS IN ROLT WAITING FOR EVENT
  13322. SA5 B4 ROLLOUT ENTRY WAITING THE LONGEST
  13323. LX5 -18 GET C.B. INDEX
  13324. MX6 -12
  13325. BX4 -X6*X5 COMMUNICATION BLOCK INDEX
  13326. SX5 B4 ADDRESS OF ROLLOUT TABLE ENTRY
  13327. TX0 X4,VCBSA COMMUNICATION BLOCK ADDRESS
  13328. RJ MSQ PLACE TASK IN SCHEDULING QUEUE
  13329. SA1 B4 ROLLOUT TABLE ENTRY
  13330. MX7 2 CLEAR TIME AND WAIT FLAGS
  13331. LX7 RTBWI-59
  13332. BX7 -X7*X1
  13333. SA7 A1+
  13334. EVS4 MX6 24 CLEAR EVENT ID
  13335. SA1 B4+RTWEV
  13336. BX6 X6*X1
  13337. SA6 A1
  13338. EQ EVSX RETURN
  13339. FCB SPACE 4,35
  13340. ** FCB - FORMAT COMMUNICATION BLOCK.
  13341. *
  13342. * ENTRY (X4) = 1/X,1/X,1/0,1/B,7/0,1/S,12/0,18/X,18/LENG.
  13343. * X = FIELD IS NOT USED BY THIS ROUTINE BUT
  13344. * IT MAY CONTAIN DATA.
  13345. * B = 1 IF BATCH INPUT.
  13346. * S = 1 IF SYSTEM ORIGIN.
  13347. * LENG = MESSAGE LENGTH IN WORDS + 1.
  13348. * (A5)/(X5) = TST W2.
  13349. * (X0) = ADDRESS OF COMMUNICATION BLOCK.
  13350. * (X3) = TERMINAL ORDINAL.
  13351. * (B4) = INPUT BLOCK COUNT.
  13352. * (X7) = SEQUENCE NUMBER IF (B4).NE.1.
  13353. *
  13354. * EXIT COMMUNICATION BLOCK.
  13355. * (W1) = 12/CP,6/ ,24/CBTS,18/ .
  13356. * (W2) = 18/CBTO,3/RS,3/US,18/CBTA,18/CBFW.
  13357. * (W3) = 60/0.
  13358. * (W4) = 60/0.
  13359. * (W5) = 60/0.
  13360. * (W6) = 14/ ,1/I,16/ ,1/O,5/ ,1/B,22/ .
  13361. *
  13362. * USER HEADER.
  13363. * (W1) = 12/DB,24/UA,24/SEQ.
  13364. * (W2) = 42/TN,1/S,1/P,1/B,1/C,1/I,1/M,12/WC.
  13365. *
  13366. * SEE *COMKCBD* FOR EXPLANATION OF SYMBOLS.
  13367. * A BLANK FIELD MEANS NO DATA WAS ADDED.
  13368. *
  13369. * USES A - 1, 2, 6, 7.
  13370. * B - 3, 6.
  13371. * X - 1, 2, 3, 5, 6, 7.
  13372. *
  13373. * CALLS ASN, RTK.
  13374.  
  13375.  
  13376. FCB SUBR ENTRY/EXIT
  13377. BX6 X6-X6
  13378. ZR B4,FCB1 IF ONLY INPUT BLOCK
  13379. SX6 B1 MULTIPLE BLOCK FLAG
  13380. FCB1 MX2 1
  13381. SA7 FCBA SAVE TRANSACTION SEQUENCE NUMBER
  13382. MX1 1
  13383. LX6 12
  13384. LX2 INSOS-59
  13385. LX1 INBTS-59
  13386. BX2 X2*X4 MASK SYSTEM ORIGIN BIT
  13387. BX1 X1*X4 MASK BATCH TRANSACTION FLAG
  13388. LX1 CBSBS-INBTS
  13389. LX2 CBSOS-INSOS
  13390. SX7 B1
  13391. LX7 CBITS-0 INITIAL TRANSFER TO C.B.
  13392. BX7 X1+X7
  13393. BX7 X2+X7
  13394. LX2 CBSYS-CBSOS
  13395. BX6 X2+X6
  13396. SA7 X0+CBSBW WORD SIX OF C.B.
  13397. LX1 CBBTS-CBSBS
  13398. MX2 TSTNN MASK TERMINAL NAME
  13399. BX6 X1+X6
  13400. SX1 X4-1 MESSAGE LENGTH IN WORD
  13401. BX2 X2*X5 TERMINAL NAME
  13402. BX1 X2+X1 TERMINAL NAME + WORD COUNT
  13403. BX6 X1+X6 TERMINAL NAME + S + B + M + WORD COUNT
  13404. MX2 TSCDN
  13405. SA1 IDLA
  13406. LX2 TSCDS-59
  13407. LX1 CBIDS-59
  13408. BX6 X6+X1 TN + S + B + I + M + WC
  13409. BX2 X2*X5 GET CDCS ABORT FLAG
  13410. LX2 CBCDS-TSCDS
  13411. BX6 X6+X2 TN + S + B + C + I + M + WC
  13412. SA2 A5-B1 TST ENTRY
  13413. SA6 X0+CMBHL+1 WORD TWO OF USER HEADER
  13414. MX1 -6
  13415. LX2 -36
  13416. BX2 -X1*X2 UPDATE SECURITIES
  13417. LX3 -18 TERMINAL ORDINAL
  13418. SX1 A2 TST ENTRY
  13419. LX1 18
  13420. BX6 X3+X1 TERMINAL ORDINAL + TST
  13421. LX2 36
  13422. BX6 X6+X2 TERMINAL ORDINAL + SECURITIES + TST
  13423. SX1 X0 COMMUNICATION BLOCK ADDRESS
  13424. BX7 X6+X1 ADD COMMUNICATION BLOCK ADDRESS
  13425. LX3 18
  13426. BX6 X6-X6
  13427. SA7 X0+B1 SECOND WORD OF COMMUNICATION BLOCK
  13428. SX7 B4
  13429. SA6 A7+B1 ZERO OUT WORD 3 OF COMMUNICATION BLOCK
  13430. LX7 48
  13431. SA7 A6+B1 WORD 4 OF COMMUNICATION BLOCK
  13432. SA6 A7+B1 ZERO OUT WORD 5 OF COMMUNICATION BLOCK
  13433. SA1 FCBA GET TRANSACTION SEQUENCE NUMBER
  13434. BX6 X1
  13435. GT B4,B1,FCB3 IF NOT FIRST BLOCK
  13436. SA1 A5 INPUT WANTED
  13437. ERRNZ TSIWW-1 IF INPUT WANTED NOT IN WORD 1 OF *TST*
  13438. LX1 59-TSIWS
  13439. PL X1,FCB2 IF NOT IN WAIT INPUT STATE
  13440. SB3 B0
  13441. RJ RTK SEARCH FOR SEQUENCE NUMBER
  13442. EQ FCB3 CONTINUE PROCESS
  13443.  
  13444. FCB2 BX1 X3 TERMINAL ORDINAL
  13445. RJ ASN GET SEQUENCE NUMBER
  13446. FCB3 SA2 A5-B1 TST ENTRY
  13447. MX7 -36
  13448. SB3 DCPPR-2000B SET DEFAULT CPU PRIORITY
  13449. BX7 -X7*X2 DATA BASE + USER AREA
  13450. LX7 24
  13451. BX7 X6+X7 ADD SEQUENCE NUMBER
  13452. LX6 18
  13453. SA7 X0+CMBHL WORD ONE OF USER HEADER AREA
  13454. SA2 X0
  13455. PX6 B3,X6 ADD CPU PRIORITY
  13456. BX6 X6+X2 ADD FWA OF NEXT C.B.
  13457. SA6 X0 FIRST WORD OF C.B. SYSTEM HEADER
  13458. EQ FCBX RETURN
  13459.  
  13460. FCBA BSS 1 TRANSACTION SEQUENCE NUMBER
  13461. FFCB SPACE 4
  13462. ** FFCB - FIND A FREE COMMUNICATION BLOCK.
  13463. *
  13464. * ENTRY (X0) = 0, IF NON-SYSTEM REQUEST, NON-ZERO OTHERWISE.
  13465. *
  13466. * EXIT (X0) = ADDRESS OF ASSIGNED COMMUNICATION BLOCK.
  13467. * (X0) = 0, IF NO COMMUNICATION BLOCK IS AVAILABLE.
  13468. * (X7) = INDEX OF COMMUNICATION BLOCK + 1.
  13469. *
  13470. * USES X - 0, 2, 3, 6, 7.
  13471. * A - 2, 6, 7.
  13472. * B - 3, 4.
  13473.  
  13474.  
  13475. FFCB3 SA2 STAT12 NUMBER OF TIMES NO C.B. AVAILABLE
  13476. SX7 B1
  13477. IX7 X2+X7
  13478. SA7 A2+
  13479. BX7 X7-X7
  13480. SA7 EVCB INDICATE NO COMMUNICATION BLOCKS
  13481.  
  13482. FFCB SUBR ENTRY/EXIT
  13483. SB4 47
  13484. TA2 0,VCBRT
  13485. NZ X0,FFCB1 IF SYSTEM REQUEST
  13486. MX7 12
  13487. BX7 -X7*X2
  13488. CX3 X7 FREE COMMUNICATION BLOCKS LEFT
  13489. BX7 X7-X7
  13490. SX3 X3-RSCMB-1
  13491. NG X3,FFCB3 IF NO COMMUNICATION BLOCK
  13492. FFCB1 NX0 B3,X2 DETERMINE POSITION OF FIRST UNSET BIT
  13493. ZR X0,FFCB3 IF AT END OF TABLE
  13494. SB4 B4-B3
  13495. NZ B4,FFCB2 C.B. AVAILABLE
  13496. SA2 A2+1
  13497. SB4 47
  13498. EQ FFCB1 NO FREE BITS IN WORD TRY NEXT WORD
  13499.  
  13500. FFCB2 SX3 B1
  13501. LX3 B4,X3 POSITION BIT AT FREE ENTRY
  13502. BX7 -X3*X2 UNSET BIT TO RESERVE ENTRY
  13503. SA7 A2 REPLACE WORD
  13504.  
  13505. * CALCULATE ADDRESS OF COMMUNICATION BLOCK.
  13506.  
  13507. TX3 A2,-VCBRT NTH WORD IN TABLE
  13508. SX0 47
  13509. SX2 CMBL LENGTH OF COMMUNICATION BLOCK
  13510. IX3 X3*X0 NTH WORD COMMUNICATION BLOCK BIAS
  13511. SX7 X3+B3 INDEX OF COMMNICATION BLOCK
  13512. IX3 X7*X2
  13513. TX0 X3,VCBSA ADDRESS OF COMMUNICATION BLOCK
  13514. SX7 X7+B1
  13515. SB4 CMBHL+CMBRL CLEAR C.B. HEADERS AND STATUS WORD
  13516. BX6 X6-X6
  13517. SA6 X0
  13518. FFCB2.1 ZR B4,FFCBX IF DONE CLEARING C.B. HEADER
  13519. SA6 A6+B1
  13520. SB4 B4-B1 DECREMENT COUNTER
  13521. EQ FFCB2.1 CONTINUE TO CLEAR C.B. HEADER
  13522. FFR SPACE 4,10
  13523. ** FRR - FIND A FREE ROLLOUT TABLE ENTRY.
  13524. *
  13525. * EXIT (X0) = ADDRESS OF RESERVED ROLLOUT TABLE ENTRY.
  13526. * (X0) = 0, IF ROLLOUT TABLE FULL.
  13527. *
  13528. * USES A - 2, 6.
  13529. * B - 3, 6.
  13530. * X - 0, 2, 3, 6.
  13531.  
  13532.  
  13533. FFR SUBR ENTRY/EXIT
  13534. SB6 47 RESERVE A ROLLOUT TABLE ENTRY
  13535. SA2 TROM ROLLOUT TABLE ALLOCATION MAP
  13536. FFR1 NX0,B3 X2 LOCATE A FREE ROLLOUT TABLE ENTRY
  13537. ZR X0,FFRX IF END OF TABLE
  13538. SB6 B6-B3
  13539. NZ B6,FFR2 IF ENTRY AVAILABLE
  13540. SA2 A2+1
  13541. SB6 47
  13542. EQ FFR1 TRY NEXT RESERVATION WORD
  13543.  
  13544. FFR2 SX3 B1
  13545. LX3 X3,B6 POSITION TO LOCATED ENTRY
  13546. BX6 -X3*X2 RESERVE ENTRY
  13547. SA6 A2
  13548. SX3 A2-TROM COMPUTE WORD IN ROLLOUT MAP
  13549. SX2 47*TROLE
  13550. IX3 X3*X2
  13551. SX6 B3 NTH BIT IN WORD
  13552. SX2 TROLE
  13553. IX2 X2*X6
  13554. IX6 X2+X3 TABLE BIAS OF RESERVED ENTRY
  13555. SX0 X6+TROL FWA OF ROLLOUT TABLE ENTRY
  13556. BX6 X6-X6
  13557. SA6 X0 CLEAR FIRST WORD OF ENTRY
  13558. SA6 X0+RTWEV CLEAR EVENT WORD
  13559. EQ FFRX RETURN
  13560. GTS SPACE 4,15
  13561. ** GTS - GET *TAF* STORAGE.
  13562. *
  13563. * RESERVE A BLOCK OF STORAGE BY CLEARING A BIT IN THE
  13564. * RESERVATION MAP.
  13565. *
  13566. * EXIT (B3) = FWA OF STORAGE.
  13567. * = 0 IF NO STORAGE AVAILABLE.
  13568. *
  13569. * USES A - 2.
  13570. * X - 2, 3.
  13571. * B - 3, 6.
  13572. *
  13573. * CALLS RSV.
  13574.  
  13575.  
  13576. GTS SUBR ENTRY/EXIT
  13577. SB6 47
  13578. SA2 TSBM ADDRESS OF BIT MAP
  13579. RJ RSV RESERVE AN ENTRY
  13580. NZ X0,GTS1 IF ENTRY AVAILABLE
  13581. SB3 0
  13582. EQ GTSX RETURN
  13583.  
  13584. GTS1 SX2 B3
  13585. SX3 TSBLE
  13586. IX2 X2*X3
  13587. SB3 X2+TSB ADDRESS OF STORAGE AREA
  13588. EQ GTSX RETURN
  13589. FNC SPACE 4,15
  13590. ** FNC - FIND AND CHAIN COMMUNICATION BLOCKS.
  13591. *
  13592. * ENTRY (B6) = NUMBER OF COMMUNICATION BLOCKS NEEDED.
  13593. * POSITIVE IF NOT ALLOWED TO USE C.B.-S RESERVED
  13594. * FOR SMALL INPUT USERS.
  13595. * NEGATIVE IF ALLOWED TO USED C.B.-S RESERVED
  13596. * FOR SMALL INPUT USERS.
  13597. * (A1) = PRIMARY COMMUNICATION BLOCK ADDRESS.
  13598. *
  13599. * EXIT (B6) = NUMBER OF COMMUNICATION BLOCKS NOT OBTAINED.
  13600. *
  13601. * USES X - 0, 1, 3, 6.
  13602. * A - 1, 3, 6.
  13603. * B - 3, 6.
  13604. *
  13605. * CALLS FFCB.
  13606. *
  13607. * NOTE - PROBLEMS WITH DEADLOCK MAY BE ENCOUNTERED
  13608. * IF (B6) IS NEGATIVE AT ENTRY AND CARE SHOULD BE
  13609. * USED TO ENSURE THAT DEADLOCK DOES NOT OCCUR.
  13610.  
  13611.  
  13612. FNC2 SX6 B0+ ZERO END OF CHAIN
  13613. SA6 A1+
  13614.  
  13615. FNC SUBR ENTRY/EXIT
  13616. MX0 12
  13617. SB3 B6
  13618. PL B3,FNC.1 IF NOT TO USE SMALL INPUT C.B.-S
  13619. SB6 -B6
  13620. EQ FNC1 USE ALL BUT SYSTEM C.B.-S
  13621.  
  13622. FNC.1 TA3 0,VCBRT COMMUNICATION BLOCK ALLOCATION MAP
  13623. BX6 -X0*X3
  13624. CX3 X6
  13625. TB3 0,-VNSIN NUMBER OF C.B.-S RESERVED FOR SMALL INPUT
  13626. SB3 X3+B3
  13627. LT B3,B6,FNCX IF NOT ENOUGH COMMUNICATION BLOCKS
  13628. FNC1 ZR B6,FNC2 IF ALL COMMUNICATION BLOCKS AVAILABLE
  13629. SX0 B0+ DO NOT USE SYSTEM COMMUNICATION BLOCKS
  13630. RJ FFCB RESERVE COMMUNICATION BLOCK
  13631. SX6 X0
  13632. SA6 A1
  13633. ZR X0,FNCX IF NO COMMUNICATION BLOCK AVAILABLE
  13634. SB6 B6-B1
  13635. SA1 X0
  13636. EQ FNC1 GET NEXT COMMUNICATION BLOCK
  13637. IDL SPACE 4
  13638. ** IDL - SET IDLE DOWN FLAGS.
  13639. *
  13640. * IDLE DOWN INFORMS INITIAL TASK THAT AN IDLE DOWN WAS REQUESTED
  13641. * AND SETS THE IDLE DOWN FLAG. IT IS INITIAL TASKS
  13642. * RESPONSIBLITY TO CEASE PASSING TASKS THRU TO THE SYSTEM FOR
  13643. * PROCESSING.
  13644.  
  13645.  
  13646. IDL SUBR ENTRY/EXIT
  13647. MX7 1
  13648. SA4 ITAS INITIAL TASKS NAME
  13649. SA7 IDLA IDLE DOWN FLAG
  13650. SX5 CIIDL ITASK IDLE DOWN CODE
  13651. SB3 B0 NO BUFFER INPUT
  13652. SX7 B0 SCHEDULE ONLY FROM SYSTEM LIBRARY
  13653. RJ TRN CALL INITIAL TASK TO INFORM OF IDLE DOWN
  13654. NZ X0,IDLX IF *ITASK* SCHEDULED - RETURN
  13655.  
  13656. * PROCESS SITUATION WHERE NO COMMUNICATION BLOCK AVAILABLE.
  13657.  
  13658. SA1 KDISA
  13659. MX6 -18
  13660. SX2 1 SET INCOMPLETE IDLE DOWN FLAG
  13661. BX6 X6*X1
  13662. BX6 X6+X2
  13663. SA6 A1
  13664. EQ IDLX RETURN
  13665.  
  13666. IDLA CON 0 IDLE DOWN FLAG
  13667. ITA SPACE 4,15
  13668. ** ITA - INCREMENT/DECREMENT TASK ACTIVE COUNT.
  13669. *
  13670. * ENTRY (A3) = FWA+2 OF TLD ENTRY.
  13671. * (X3) = WORD THREE OF TLD ENTRY SHIFTED LEFT BY
  13672. * 59-TLQUS.
  13673. * (X6) = INCREMENT/DECREMENT VALUE.
  13674. *
  13675. * EXIT COUNT UPDATED.
  13676. *
  13677. * USES X - 3, 4, 7.
  13678. * A - 7.
  13679.  
  13680.  
  13681. ITA SUBR ENTRY/EXIT
  13682. MX4 -TLTAN
  13683. LX3 TLTAN-1-TLTAS-59+TLQUS
  13684. BX7 -X4*X3
  13685. IX7 X6+X7
  13686. BX3 X4*X3
  13687. BX7 -X4*X7
  13688. BX7 X3+X7
  13689. LX7 59-TLSTS-TLTAN+1+TLTAS
  13690. SA7 A3
  13691. EQ ITAX RETURN
  13692. JOL SPACE 4,10
  13693. ** JOL - JOURNAL TRANSACTION INPUT.
  13694. *
  13695. * ENTRY (X0) = ADDRESS OF COMMUNICATION BLOCK.
  13696. * (X4) = INPUT BLOCK LENGTH.
  13697. *
  13698. * USES A - 1, 6, 7.
  13699. * B - 3, 4, 5.
  13700. * X - 1, 3, 5, 6, 7.
  13701. *
  13702. * CALLS JRNL.
  13703. *
  13704.  
  13705.  
  13706. JOL2 SA1 JOLA RESTORE (X0)
  13707. BX0 X1
  13708.  
  13709. JOL SUBR ENTRY/EXIT
  13710. SB5 PJRNL JOURNAL FILE
  13711. BX6 X0
  13712. SX3 X4-1 INPUT BLOCK LENGTH
  13713. SB4 B1
  13714. LX4 1
  13715. SX5 X0+CMBHL+CMBRL START OF MESSAGE
  13716. PL X0,JOL1 IF NEITHER INTERACTIVE OR MULIT BLOCK
  13717. SB4 6
  13718. PL X4,JOL1 IF LAST BLOCK OF TRANSACTION
  13719. SB4 5
  13720. JOL1 LX3 18
  13721. SA6 JOLA SAVE X0
  13722. BX5 X5+X3 ADD LENGTH OF MESSAGE
  13723. SB3 JOL2 RETURN ADDRESS
  13724. EQ JRNL MAKE A JOURNAL ENTRY
  13725.  
  13726. JOLA BSS 1 TEMPORARY STORAGE FOR X0
  13727.  
  13728.  
  13729. JSTS SPACE 4
  13730. ** JSTS - WRITE PERIODIC ENTRIES TO JOURNAL FILE.
  13731. *
  13732.  
  13733.  
  13734. JSTS SUBR ENTRY/EXIT
  13735.  
  13736. * WRITE COPY OF TST TO JOURNAL FILE
  13737.  
  13738. SB3 JSTS RETURN ADDRESS
  13739. SB4 3 STATISTICAL DATA ORIGIN CODE
  13740. TX5 TSTLLE,VTST FWA OF TERMINAL STATUS TABLE
  13741. TX2 1,VTST,LWA LWA+1 OF TST
  13742. IX1 X2-X5 LENGTH OF TST
  13743. SB5 PJRNL JOURNAL FILE FET
  13744. LX1 18
  13745. BX0 X0-X0 NO COMMUNICATION BLOCK
  13746. IX5 X5+X1
  13747. EQ JRNL JOURNAL THE INFORMATION
  13748. LTT SPACE 4,25
  13749. ** LTT - LOCATE A TASK OR TRANSACTION.
  13750. *
  13751. * LOOK FOR THE NAMED TASK OR TRANSACTION ASSOCIATED WITH THE
  13752. * SPECIFIED DATA BASE.
  13753. *
  13754. * ENTRY (X2) = LEFT JUSTIFIED TASK OR TRANSACTION NAME.
  13755. * (X3) = RIGHT JUSTIFIED DATA BASE NAME OF TASK LIBRARY.
  13756. * = 0 IF SYSTEM TASK LIBRARY.
  13757. * (X6) = TASK LIST ACCUMULATOR IF (B5)=0.
  13758. * (B4) = 1 IF *OFF* STATUS TO BE IGNORED, IF (B5)=0.
  13759. * = 0 IF *OFF* STATUS DETECTED, IF (B5)=0.
  13760. * (B5) = 0 IF TASK SEARCH.
  13761. * .NE. 0 IF TRANSACTION SEARCH.
  13762. *
  13763. * EXIT (A0) = ADDRESS OF TLD ENTRY IF TASK TURNED OFF.
  13764. * (A1) = FWA OF TLD/TRD ENTRY MATCHED.
  13765. * (X0) = RESTORED.
  13766. * (X6) = TASK BIAS ADDED TO PRIOR CONTENTS IF (B5)=0.
  13767. * = 0 IF TASK OR TRANSACTION NOT FOUND.
  13768. * (B3) = RESTORED.
  13769. *
  13770. * USES A - 0, 1, 3, 6, 7.
  13771. * X - 0, 1, 2, 3, 6, 7.
  13772. * B - 3, 4, 5, 6.
  13773. *
  13774. * CALLS STD.
  13775.  
  13776.  
  13777. LTT10 SA3 LTTE RESTORE (B3) AND (X0)
  13778. SB3 X3+
  13779. LX3 -18
  13780. SX0 X3+
  13781.  
  13782. LTT SUBR ENTRY/EXIT
  13783. LX0 18 SAVE (X0) AND (B3)
  13784. SX7 B3+
  13785. BX7 X0+X7
  13786. SA7 LTTE
  13787. SX7 B4+
  13788. SA7 LTTC *OFF*-TEST FLAG
  13789. SX7 B5+
  13790. SA7 LTTD SEARCH FLAG
  13791. BX7 X3
  13792. SA7 LTTA
  13793. SA6 LTTB
  13794. SB3 TLDLE LENGTH OF TLD ENTRY
  13795. ZR X3,LTT4 IF NO DATA BASE SPECIFIED
  13796. TA3 0,VEDT
  13797. LX7 -12
  13798. LX3 17-35
  13799. SB4 X3 EDT COUNT
  13800. LX3 35-17
  13801. ZR B4,LTT1.1 IF NO EDT-S TO SEARCH
  13802. LTT1 MX6 12
  13803. BX6 X6*X3 EDT DATA BASE NAME
  13804. IX6 X6-X7
  13805. SB4 B4-B1
  13806. ZR X6,LTT2 IF DATA BASE NAME FOUND
  13807. SA3 X3+ LINK TO NEXT EDT
  13808. NZ B4,LTT1 IF ANOTHER EDT TO CHECK
  13809. LTT1.1 SX7 B0+
  13810. SA7 LTTA CLEAR DATA BASE FLAG
  13811. EQ LTT4 SEARCH SYSTEM TASK LIBRARY
  13812.  
  13813. * SEARCH USER TASK/TRANSACTION DIRECTORY.
  13814.  
  13815. LTT2 SA1 A3+4 FWA OF FIRST TLD ENTRY
  13816. ZR X1,LTT1.1 IF NO DATA BASE TASK LIBRARY
  13817. ZR B5,LTT3 IF TASK SEARCH
  13818. LX1 -18
  13819. SA1 X1+TRFWW FWA OF TLD HEADER
  13820. LX1 TRFWN
  13821. SB5 X1 FWA OF FIRST TRD ENTRY
  13822. SB3 TRDLE2 LENGTH OF TRD ENTRY
  13823. SA1 X1+TDLDW
  13824. SB6 X1-TRDLE2+1 FWA OF LAST TRD ENTRY
  13825. EQ LTT6 LOOK FOR TRANSACTION
  13826.  
  13827. LTT3 SB6 X1+ LWA OF TLD
  13828. BX7 X1
  13829. LX1 17-35
  13830. SB5 X1+ FWA OF TLD
  13831. SB6 B6-TLDLE+1 LWA IN TLD TO SEARCH
  13832. SA7 LTTA
  13833. EQ LTT6 LOOK FOR TASK
  13834.  
  13835. * SEARCH SYSTEM TASK/TRANSACTION DIRECTORY.
  13836.  
  13837. LTT4 NZ B5,LTT5 IF TRANSACTION SEARCH
  13838. TB5 0,VTLD START OF TLD
  13839. TB6 -TLDLE+1,VTLD,LWA LWA OF SYSTEM TLD FOR SEARCH
  13840. EQ LTT6 LOOK FOR TASK
  13841.  
  13842. LTT5 TX1 0,VTLD
  13843. SA1 X1+TRFWW
  13844. LX1 TRFWN
  13845. SB3 TRDLE2 LENGTH OF TRD ENTRY
  13846. SB5 X1 FWA OF FIRST TRD ENTRY
  13847. SA1 X1+TDLDW
  13848. SB6 X1-TRDLE2+1 FWA OF LAST TRD ENTRY
  13849. LTT6 RJ STD SEARCH TASK/TRANSACTION DIRECTORY
  13850. NZ X1,LTT9 IF ENTRY NOT FOUND
  13851.  
  13852. * TASK/TRANSACTION FOUND.
  13853.  
  13854. SA3 LTTD SEARCH FLAG
  13855. SX6 1
  13856. NZ X3,LTT10 IF TRANSACTION FOUND
  13857. TX7 A1+1,-VTLD ADD ONE TO RELATIVE ADDRESS TO AVOID ZERO
  13858. SA3 LTTC GET *OFF* FLAG
  13859. SB5 X3
  13860. SA3 A1+TLTOW
  13861. LX3 59-TLTOS *OFF* FLAG
  13862. NZ B5,LTT7 IF IGNORE *OFF* STATUS
  13863. NG X3,LTT8 IF TASK TURNED OFF
  13864. LTT7 LX3 59-TLDLS-59+TLTOS
  13865. NG X3,LTT9 IF TASK DELETED
  13866. LX7 48
  13867. SA3 LTTB TASK LIST ACCUMULATOR
  13868. BX6 X3+X7
  13869. EQ LTT10 RESTORE REGISTERS
  13870.  
  13871. * CALL A DEFAULT TASK IN PLACE OF A TASK THAT HAS BEEN
  13872. * TURNED OFF.
  13873.  
  13874. LTT8 SA1 OTAS DEFAULT TASK NAME
  13875. SA0 A3 ADDRESS OF TURNED-OFF TASK
  13876. BX2 X1
  13877. SA3 LTTA
  13878. ZR X3,LTT5 IF NO DATA BASE TASK LIBRARY
  13879. SB6 X3-TLDLE+1
  13880. LX3 -18
  13881. SB5 X3
  13882. EQ LTT6 SEARCH *DBTASKL* FOR DEFAULT TASK
  13883.  
  13884. * TASK OR TRANSACTION NOT FOUND.
  13885.  
  13886. LTT9 SA1 LTTA
  13887. BX6 X6-X6
  13888. SA6 A1
  13889. ZR X1,LTT10 IF ENTRY NOT FOUND AND NO *DBTASKL*
  13890. SB5 B3-TLDLE
  13891. EQ LTT4 NOW SEARCH SYSTEM TLD FOR DESIRED ENTRY
  13892.  
  13893. LTTA BSS 1 DATA BASE FLAG
  13894. LTTB BSS 1 TASK LIST ACCUMULATOR
  13895. LTTC BSS 1 *OFF*-TEST FLAG
  13896. LTTD BSS 1 SEARCH FLAG
  13897. LTTE BSS 1 24/0,18/(X0),18/(B3)
  13898. MSQ SPACE 4,10
  13899. ** MSQ - MAKE A SCHEDULER QUEUE ENTRY TO ROLL IN A TASK.
  13900. *
  13901. * ENTRY (X0) = COMMUNICATION BLOCK ADDRESS.
  13902. * (X5) = ROLLOUT TABLE ADDRESS OF TASK TO ROLL IN.
  13903. *
  13904. * USES A - 2, 3, 6, 7.
  13905. * B - 3, 6.
  13906. * X - 2, 3, 4, 6, 7.
  13907.  
  13908.  
  13909. MSQ SUBR ENYRY/EXIT
  13910. SA2 RTLW RTL RESERVATION WORD
  13911. SX3 B1
  13912. NX6 X2,B3 FIND A NONRESERVED ENTRY
  13913. LX3 -13
  13914. LX3 X3,-B3
  13915. BX6 -X3*X2 RESERVE THE ENTRY
  13916. SB3 B3+B3
  13917. TX4 X0,-VCBSA
  13918. SA6 A2
  13919. SB6 B7
  13920. SX7 CMBL COMPUTE THE C.B. NUMBER
  13921. IX7 X4/X7
  13922. SB7 B6
  13923. TX2 X7,VATL ATL ADDRESS
  13924. SA3 X2
  13925. MX7 30
  13926. BX6 -X7*X3 CLEAR ATL LINKS
  13927. SA6 A3
  13928. SA3 X5+B1
  13929. BX7 X7*X3 FL + PRIORITIES
  13930. LX2 42
  13931. LX7 -12
  13932. BX6 X2
  13933. LX2 -18
  13934. BX6 X6+X2
  13935. SA7 B3+RTL FIRST WORD OF RTL ENTRY
  13936. BX6 X6+X5
  13937. SA6 A7+B1 SECOND WORD OF RTL ENTRY
  13938. EQ MSQX RETURN
  13939. MVD SPACE 4,15
  13940. ** MVD - MOVE DATA TO TASK.
  13941. *
  13942. * ENTRY (X1) = LENGTH TO MOVE IN WORDS.
  13943. * (X2) = ORIGIN FWA.
  13944. * (X3) = DESTINATION FWA.
  13945. * (X6) = NUMBER OF BITS OVER WORD BOUNDARY.
  13946. *
  13947. * EXIT DATA IS MOVED FROM ORIGIN TO DESTINATION.
  13948. *
  13949. * USES X - 1, 2, 3, 4, 6, 7.
  13950. * A - 1, 2, 3, 4, 6, 7.
  13951. * B - 6.
  13952. *
  13953. * CALLS MVE=
  13954.  
  13955.  
  13956. MVD SUBR ENTRY/EXIT
  13957. SA6 MVDA REMAINDER OF BITS OVER LAST WORD
  13958. NZ X6,MVD2 IF DATA DOES NOT END ON WORD BOUNDARY
  13959. MVD1 RJ MVE= MOVE DATA
  13960. SA1 MVDA
  13961. ZR X1,MVDX IF DATA ENDS ON WORD BOUNDARY
  13962.  
  13963. * RESTORE USER BITS IN LAST WORD.
  13964.  
  13965. SA2 MVDB LWA OF DESTINATION
  13966. SA1 MVDC OLD LAST WORD OF DESTINATION
  13967. SA3 X2 NEW LAST WORD OF DESTINATION
  13968. SA4 MVDA MASK FOR SAVING NEW BITS IN LAST WORD
  13969. BX3 X4*X3 SAVE NEW BITS IN LAST WORD
  13970. BX4 -X4*X1 SAVE OLD BITS IN LAST WORD
  13971. BX7 X4+X3 MERGE OLD AND NEW
  13972. SA7 A3
  13973. EQ MVDX RETURN
  13974.  
  13975. * SAVE LAST WORD OF DESTINATION.
  13976.  
  13977. MVD2 IX7 X3+X1
  13978. SA4 X7-1
  13979. SX7 A4 LWA OF DESTINATION
  13980. SB6 X6-1
  13981. BX6 X4
  13982. SA7 MVDB
  13983. SA6 MVDC
  13984. MX7 1 MASK TO SAVE NEW BITS IN LAST WORD
  13985. AX7 B6
  13986. SA7 MVDA
  13987. EQ MVD1 MOVE DATA
  13988.  
  13989. MVDA BSS 1 MASK FOR SAVE NEW BITS
  13990. MVDB BSS 1 LWA OF DESTINATION
  13991. MVDC BSS 1 LAST WORD OF DESTINATION
  13992. PBT SPACE 4,65
  13993. ** PBT - PREPARE BATCH TRANSACTION.
  13994. *
  13995. * ENTRY (SSRP) = SUBSYSTEM REQUEST BUFFER.
  13996. *
  13997. * EXIT TO *TSSC*
  13998. * IF POSSIBLE *ITASK* HAS BEEN SCHEDULED WITH THE
  13999. * TRANSACTION INPUT. IF AN ERROR OCCURRED THE PROPER
  14000. * STATUS WAS RETURNED TO THE USER.
  14001. *
  14002. * USES X - XLL.
  14003. * A - ALL.
  14004. * B - 3, 4, 5, 6.
  14005. *
  14006. * CALLS FCB, FFCB, GTS, JOL, PRIN, RTS, SFR, VBA.
  14007. *
  14008. * NOTES *PBT* USES PART OF THE COMMUNICATION BLOCK FOR
  14009. * TEMPORARY STORAGE. BEFORE *FCB* FORMATS THE
  14010. * COMMUNICATION BLOCK, THE FORMAT IS -
  14011. *
  14012. *T W1 6/RC,12/FP,18/UCPA,18/SCPA,6/FC
  14013. *T, W2 35/JOBSN,12/0,12/FSTA
  14014. *T, W3 60/0
  14015. *T, W4 60/(SSRP)
  14016. *T, W5 35/JOBSN,12/0,12/FSTA
  14017. *T, W6 24/0,18/LENGTH,18/ATRAN
  14018. *T, W7 24/0,18/TSTO,18/TSTA
  14019. *T, W8 60/SCR
  14020. *
  14021. * WORD 1 THRU 3 CONTAIN THE *SFCALL* PARAMETER BLOCK.
  14022. *
  14023. * WORD 1.
  14024. * RC - REPLY CODE.
  14025. * FP - FUNCTION PARAMETER.
  14026. * UCPA- RELATIVE CM ADDRESS WITHIN UCP.
  14027. * SCPA- RELATIVE CM ADDRESS WITHIN SUBSYSTEM.
  14028. * FC - FUNCTION CODE.
  14029. *
  14030. * WORD 2.
  14031. * JOBSN - JOB SEQUENCE NUMBER.
  14032. * FSTA - FST ADDRESS.
  14033. *
  14034. * WORD 3.
  14035. * (NOT USED) PARAMETER FOR EXTENDED READ AND WRITE
  14036. * *SFCALL* FUNCTION.
  14037. *
  14038. * WORDS 4 THRU 7 ARE TEMPORARY STORAGE FOR DATA NEEDED FOR
  14039. * PROCESSING BATCH TRANSACTIONS.
  14040. *
  14041. * WORD 4.
  14042. * (SSRP) - CONTENTS OF SSRP WORD.
  14043. *
  14044. * WORD 5.
  14045. * JOBSN - JOB SEQUENCE NUMBER.
  14046. * FSTA - FST ADDRESS.
  14047. *
  14048. * WORD 6.
  14049. * LENGTH - LENGTH OF TRANACTION INPUT IN WORDS.
  14050. * ATRAN - ADDRESS OF TRANSACTION.
  14051. *
  14052. * WORD 7.
  14053. * TSTO - TST ORDINAL.
  14054. * TSTA - TST ADDRESS.
  14055. *
  14056. * WORD 8.
  14057. * SCR - SCRATCH STORAGE.
  14058.  
  14059.  
  14060. PBT SA2 PBTD
  14061. NZ X2,PBT12 IF LAST *BTRAN* INPUT NOT PROCESSED
  14062. RJ GTS GET TAF STORAGE
  14063. ZR B3,TSSC IF NO TAF STORAGE
  14064. SB5 B3 FWA OF STORAGE
  14065. SX0 B0 INDICATE NON-SYSTEM C.B.
  14066. RJ FFCB FIND FREE C.B.
  14067. SX5 JSTB TAF BUSY ERROR CODE
  14068. NZ X0,PBT1 IF C.B. AVAILABLE
  14069. SB3 B5
  14070. RJ RTS RETURN TAF STORAGE
  14071. EQ PBE PROCESS BATCH ERROR
  14072.  
  14073. PBT1 SB6 X0 SAVE C.B. ADDRESS
  14074.  
  14075. * MOVE SCP BUFFER INTO HEADER AREA OF C.B.
  14076.  
  14077. SA2 SSRP TAF RECEIVING BUFFER
  14078. BX6 X2
  14079. SA6 B6+3 SAVE (SSRP) PARAMETER AREA
  14080. SA2 SSJN JOB SEQUENCE NUMBER AND FST ORDINAL
  14081. BX6 X2
  14082. SA6 A6+B1
  14083. SA2 SSUP+1 LENGTH AND ADDRESS OF TRANSACTION INPUT
  14084. MX6 -36
  14085. BX6 -X6*X2
  14086. SA6 A6+1
  14087.  
  14088. * INDICATE REQUEST RECEIVED.
  14089.  
  14090. SA2 VSCR TAF RECEIVING BUFFER (SSCR)
  14091. MX3 -59
  14092. BX6 -X3*X2
  14093. SA6 A2+
  14094.  
  14095. * GET USER NAME AND VALIDATE.
  14096.  
  14097. PBT2 SX6 B6+CMBHL+CMBRL
  14098. SX1 /COMSSCP/CPID SFCALL FUNCTION CODE
  14099. LX6 6 POSITION SCP ADDRESS
  14100. BX6 X6+X1
  14101. SA6 B6+
  14102. SA2 B6+4 GET JOB SEQUENCE NUMBER AND FST ORDINAL
  14103. BX6 X2
  14104. SA6 A6+B1
  14105. SX2 PBT2 RETRY ADDRESS
  14106. RJ SFR ISSUE SFCALL REQUEST
  14107. NZ X5,PBT9 IF SFCALL ERROR
  14108. SB6 B6+CMBHL+CMBRL
  14109. SA4 B6+1 USER NAME FROM CPID FUNCTION
  14110. SX1 TYBT INDICATE *BTRAN* TRANSACTION.
  14111. SX5 PBT3 RETURN ADDRESS
  14112. EQ VBA VALIDATE BATCH ACCESS
  14113.  
  14114. PBT3 SB4 X3
  14115. BX7 X7-X7
  14116. SA2 B6+BRTOW SAVE TST ORDINAL AND ADDRESS
  14117. BX6 X2
  14118. SA7 A2 CLEAR TST ORDINAL FROM BODY OF C.B.
  14119. SB3 JSRC REQUEST COMPLETE CODE
  14120. SA7 A2-1 CLEAR TERMINAL NAME FROM C.B.
  14121. SB6 B6-CMBHL-CMBRL
  14122. SA6 B6+6
  14123. EQ B3,B4,PBT5 IF REQUEST COMPLETE
  14124. SB3 JSNV USER NOT VALID
  14125. NE B3,B4,PBT6 IF USER VALID
  14126. PBT4 SX3 B1 SET NORMAL SUBSYSTEM (FSET) ERROR FLAG
  14127. SX6 B0 SCP ADDRESS
  14128. SX1 /COMSSCP/REGR SFCALL FUNCTION CODE
  14129. LX6 6 POSITION SCP ADDRESS
  14130. BX6 X6+X1
  14131. LX3 41-17
  14132. BX6 X6+X3 ADD UCP ADDRESS
  14133. SA6 B6+ SFCALL PARAMETER WORD ONE
  14134. SX2 PBT4 RETRY ADDRESS
  14135. RJ SFR ISSUE SFCALL REQUEST
  14136. SX3 JSNV USER NOT VALID
  14137. EQ PBT6 RETURN STATUS TO USER
  14138.  
  14139. * CHECK LENGTH OF TRANSACTION INPUT DATA, IF VALID LENGTH
  14140. * THEN READ THE TRANSACTION INPUT DATA.
  14141.  
  14142. PBT5 SX6 B6+CMBHL+CMBRL-1 SCP ADDRESS
  14143. SA2 B6+5 LENGTH AND ADDRESS OF TRANSACTION INPUT
  14144. LX2 17-35
  14145. SX2 X2-62-1 LENGTH - MAXIMUM INPUT LENGTH
  14146. SX3 JSSB BLOCK TOO LONG ERROR CODE
  14147. PL X2,PBT6 IF TRANSACTION INPUT .GT. MAXIMUM ALLOWED
  14148. SX1 /COMSSCP/READ SFCALL FUNCTION CODE
  14149. LX6 6 POSITION SCP ADDRESS
  14150. BX6 X6+X1
  14151. SA3 B6+5 WORD 2 OF USER PARAMETERS
  14152. LX3 53-29 POSITION WORD COUNT AND UCP ADDRESS
  14153. BX6 X6+X3
  14154. SA6 B6+ SFCALL PARAMETER WORD ONE
  14155. SX2 PBT5 RETRY ADDRESS
  14156. RJ SFR ISSUE SFCALL REQUEST
  14157. SX3 JSRC REQUEST COMPLETE CODE
  14158. ZR X5,PBT6 IF NO CALL ERROR
  14159. SX3 JSFL DATA NOT WITHIN UCP FL CODE
  14160.  
  14161. * RETURN STATUS TO USER JOB.
  14162. * (X3) = STATUS CODE.
  14163.  
  14164. PBT6 SA2 PBTC SET UP FIRST USER PARAMETER
  14165. BX6 X3+X2 ADD NEW STATUS
  14166. SA6 B6+7
  14167. PBT7 SA3 B6+3 GET UCP PARAMETER AREA ADDRESS
  14168. SX6 B6+7 SCP ADDRESS
  14169. SX1 /COMSSCP/WRIT SFCALL FUNCTION CODE
  14170. LX6 6 POSITION SCP ADDRESS
  14171. BX6 X6+X1
  14172. SX3 X3+B1
  14173. LX3 41-17 POSITION UCP ADDRESS
  14174. BX6 X6+X3 ADD UCP ADDRESS
  14175. SX2 B1 WORDS TO WRITE TO UCP
  14176. LX2 53-11 ADD WORD COUNT
  14177. BX6 X6+X2
  14178. SA6 B6+
  14179. SX2 PBT7 RETRY ADDRESS
  14180. RJ SFR ISSUE SFCALL REQUEST
  14181.  
  14182. * TERMINATE CONNECTION WITH UCP.
  14183.  
  14184. PBT8 SA3 B6+3 GET UCP PARAMETER AREA ADDRESS
  14185. SX6 /COMSSCP/ENDT SFCALL FUNCTION CODE
  14186. SX3 X3
  14187. LX3 41-17
  14188. BX6 X6+X3
  14189. SA6 B6 FIRST WORD OF SFCALL PARAMETERS
  14190. SX2 PBT8 RETRY ADDRESS
  14191. RJ SFR ISSUE SFCALL REQUEST
  14192. SA5 B6+7 GET STATUS RETURNED TO USER
  14193. PBT9 SB3 X5+
  14194. SB4 JSRC REQUEST COMPLETE STATUS CODE
  14195. EQ B3,B4,PBT11 IF NO ERRORS
  14196. SA5 B6+6 GET TST ADDRESS
  14197. MX3 -60+TSAUN CLEAR USER ACTIVE BIT
  14198. SA4 X5+
  14199. ERRNZ TSAUW USER ACTIVE BIT NOT IN WORD ZERO
  14200. ERRNZ 59-TSAUS USER ACTIVE BIT NOT LEFT JUSTIFIED
  14201. BX6 -X3*X4
  14202. SA6 A4+
  14203. PBT10 SX2 B6
  14204. BX7 X7-X7 CLEAR NEXT C.B. FIELD
  14205. SA7 B6+
  14206. RJ RLC RELEASE COMMUNICATION BLOCK
  14207. ZR B5,TSSC IF NO TEMPORARY STORAGE
  14208. SB3 B5+
  14209. RJ RTS RELEASE TEMPORARY STORAGE
  14210. EQ TSSC CONTINUE PROCESSING
  14211.  
  14212. PBT11 SB3 B5
  14213. SX4 B6
  14214. RJ RTS RELEASE TEMPORARY STORAGE
  14215. SB6 X4
  14216.  
  14217. * FORMAT COMMUNICATION BLOCK.
  14218.  
  14219. SX6 B6 SAVE FWA OF C.B.
  14220. SA4 PBTA
  14221. SA3 B6+5
  14222. LX3 17-35
  14223. SB4 B0 INPUT BLOCK COUNT
  14224. SA6 PBTD
  14225. SX3 X3+1
  14226. SX7 B0 ZERO OUT WORD ONE OF C.B.
  14227. SA2 B6+6 GET TST ORDINAL AND ADDRESS
  14228. BX4 X4+X3
  14229. SA7 X6
  14230. SA5 X2+B1 GET WORD TWO OF TST
  14231. LX2 17-35 POSITION TST ORDINAL
  14232. SX3 X2 TST ORDINAL
  14233. SX0 B6+ FWA OF C.B.
  14234. RJ FCB FORMAT COMMUNICATION BLOCK
  14235.  
  14236. * JOURNAL TRANSACTION INPUT.
  14237.  
  14238. SA1 PBTD FWA OF C.B.
  14239. SX0 X1+
  14240. SA4 X1+CMBHL+1 USER HEADER WORD TWO
  14241. MX6 -12
  14242. BX4 -X6*X4 WORDS TO JOURNAL
  14243. RJ JOL JOURNAL TRANSACTION INPUT
  14244.  
  14245. * SCHEDULE *ITASK*.
  14246.  
  14247. PBT12 SA1 PRINA CHECK IF *ITASK* BUSY
  14248. NZ X1,TSSC IF *ITASK* BUSY RETURN AND TRY LATER
  14249. SA1 PBTD FWA OF C.B.
  14250. MX7 1 INDICATE C.B. ALREADY PRESENT
  14251. SX0 X1
  14252. LX7 55-59
  14253. SA7 PBTB
  14254. SA4 A7
  14255. RJ PRIN PROCESS TRANSACTION INPUT
  14256. ZR X0,TSSC IF ITASK NOT SCHEDULED
  14257. BX6 X6-X6 INDICATE *ITASK* SCHEDULED
  14258. SA6 PBTD
  14259. EQ TSSC CONTINUE PROCESSING
  14260.  
  14261. PBTA VFD 1/0,1/0,1/0,1/1,7/0,1/0,12/0,18/0,18/0
  14262. PBTB BSS 1 *PRIN* INPUT WORD
  14263. PBTC VFD 12/2001B,12/0,12/0,6/0,18/0 USER PARAMETER ONE
  14264. PBTD BSS 1 FWA OF COMMUNICATION BLOCK
  14265. PCDM SPACE 4,10
  14266. ** PCDM PCDM DOES HOUSEKEEPING FOR TRANSACTION END PROCESSING.
  14267. * IF THE TRANSACTION HAS MADE DATA MANAGER REQUESTS
  14268. * A DATA MANAGER CEASE REQUEST IS CREATED, ELSE THE
  14269. * END OF TRANSACTION MESSAGE IS JOURNALED.
  14270. *
  14271. * ENTRY (X0) = DATA MANAGER CODE
  14272. *
  14273. * EXIT (X5) .GE. 0 IF NO DATA MANAGER REQUEST WERE MADE.
  14274.  
  14275.  
  14276. PCDM SUBR ENTRY/EXIT
  14277. SA1 B2+CB2C
  14278. SA4 B2+CB1C
  14279. SA3 X1+CBSOW SYSTEM ORIGIN TRANSACTION
  14280. ERRNZ CBSOW-CBSBW IF *BTRAN* AND SYSTEM NOT IN SAME WORD
  14281. LX3 59-CBSOS
  14282. LX4 59-CBSDS
  14283. NG X3,PCDM1 IF SYSTEM ORIGIN TRANSACTION
  14284. LX3 59-CBSBS-59+CBSOS
  14285. SA1 B7+B1
  14286. LX1 59-SCTMS
  14287. NG X1,PCDM1 IF TASK IS TO BE TERMINATED
  14288. NG X3,PCDM1 IF *BTRAN*
  14289. PL X4,TERR22 IF NOT AT LEAST ONE SEND
  14290.  
  14291. PCDM1 SA1 B2+CB2C
  14292. SA2 X1+CBCR CHECK IF DATA MANAGER USED BY TASK
  14293. LX2 59-CDDM
  14294. PL X2,PCDM3 IF *CDCS* IS NOT CONNECTED
  14295. SA3 X1 FWA OF COMMUNICATION BLOCK
  14296. LX3 59-CBABS
  14297. SA4 PCDMA
  14298. BX7 X4
  14299. SA5 A4+1
  14300. SA7 B2+NUAPL+SUAC+CBCH
  14301. SB4 A7+ FWA OF PARAMETER BLOCK
  14302. SX2 CDAT ABNORMAL TERMINATION FUNCTION CODE
  14303. NG X3,PCDM2 IF TAF ABORT FLAG SET
  14304. LX3 59-CBRCS-59+CBABS
  14305. NG X3,PCDM2 IF TERMINAL OR NETWORK FAILURE
  14306. SX2 CDNT NORMAL TERMINATION FUNCTION CODE
  14307. PCDM2 BX7 X2+X5 ADD FUNCTION CODE
  14308. SB3 PCDM3 RETURN ADDRESS
  14309. SA7 A7+B1
  14310. SA5 A5+B1 REQUEST
  14311. SA1 B7 SET FL
  14312. SB5 B2+NUAPL TASK RA
  14313. AX1 18
  14314. SX1 X1 TASK FL
  14315. EQ SSC1 PROCESS TERMINATOR TO *CDCS* REQUEST
  14316.  
  14317. PCDM3 SA1 B2+CB2C
  14318. SA2 X1+CBCR CHECK FOR DATA MANAGER CALLS MADE
  14319. LX2 59-TOTDM
  14320. PL X2,PCDM5 IF TOTAL DATA MANAGER NOT USED
  14321. SB3 PCDM7 RETURN ADDRESS
  14322. SA4 B2+CB1C COMMUNICATION BLOCK WORD 1
  14323. BX5 X5-X5
  14324. SX0 DMCC CEASE FUNCTION CODE
  14325. LX0 24
  14326. SX1 X1 C.B. ADDRESS
  14327. LX4 59-CBABS
  14328. AX4 59
  14329. BX1 X1-X4 SET ERROR FLAG FOR DATA MANAGER
  14330. MX4 -18
  14331. BX4 -X4*X1
  14332. EQ TOT1 SEND CEASE CODE TO TOTAL DATA MANAGER
  14333.  
  14334. PCDM5 SA1 B2+CB2C
  14335. SA2 X1+CBCR CHECK FOR DATA MANAGER CALLS MADE
  14336. LX2 59-AAMDM
  14337. PL X2,PCDM7 IF AAM FILE MANAGER NOT USED
  14338. SB3 PCDM7 RETURN ADDRESS
  14339. SA4 B2+CB1C COMMUNICATION BLOCK WORD 1
  14340. BX5 X5-X5
  14341. SX0 DMCC CEASE FUNCTION CODE
  14342. LX0 24
  14343. SX1 X1 COMMUNICATION BLOCK ADDRESS
  14344. LX4 59-CBABS
  14345. AX4 59
  14346. BX1 X1-X4 SET ERROR FLAG FOR DATA MANAGER
  14347. MX4 -18
  14348. BX4 -X4*X1
  14349. EQ AAM1 SEND CEASE CODE TO AAM FILE MANAGER
  14350.  
  14351. PCDM7 SA1 B2+CB2C GET COMMUNICATION BLOCK ADDRESS
  14352. SA2 X1+CBCR
  14353. MX5 -4
  14354. SX0 X1 COMMUNICATION BLOCK ADDRESS
  14355. LX2 -18
  14356. BX2 -X5*X2
  14357. ZR X2,PCDM8 IF NO DATA MANAGER USED BY TASK
  14358. EQ PCDMX X5 IS NEGATIVE
  14359.  
  14360. * WRITE JOURNAL FILE ENTRY TO INDICATE TRANSACTION CEASE
  14361.  
  14362. PCDM8 SB3 PCDM9 RETURN ADDRESS
  14363. SA1 B2+CB2C SET COMMUNICATION BLOCK ADDRESS
  14364. SX5 SBUF+4 USE WORKING STORAGE BUFFER AS ADDRESS
  14365. SB4 4 END OF TRANSACTION INDICATOR
  14366. SX0 X1+
  14367. SB5 PJRNL
  14368. EQ JRNL JOURNAL MESSAGE
  14369.  
  14370. PCDM9 SA2 B2+CB2C
  14371. SX5 A2-B1
  14372. SX2 X2 C.B. ADDRESS
  14373. EQ PCDMX RETURN
  14374.  
  14375. PCDMA VFD 24/4LCD22,12/0,6/2,4/0,2/3,6/0,5/0,1/0 PARAMETER
  14376. VFD 18/SUAC+CBCH+3,9/0,27/0,6/0 PARAMETER BLOCK WORD 2
  14377. VFD 18/3LSSC,24/CDSI,18/SUAC+CBCH FUNCTION REQUEST
  14378. PDIF SPACE 4
  14379. ** PDIF - PLACE ENTRY INTO A FET.
  14380. *
  14381. * ENTRY (B5) = ADDRESS OF FET
  14382. * (X6) = WORD TO PLACE INTO FET
  14383. *
  14384. * EXIT (X7) = 0 IF FET FULL
  14385. *
  14386. * USES X - 1, 2, 3, 7
  14387. * A - 1, 2, 3, 6, 7
  14388. * B - 3, 4, 5
  14389.  
  14390.  
  14391. PDIF SUBR ENTRY/EXIT
  14392. SA3 B5+3 OUT
  14393. BX7 X7-X7
  14394. SA2 A3-B1 IN
  14395. SB5 X3
  14396. SA3 A3+B1 LIMIT
  14397. SB3 X2+B1 (IN +1)
  14398. SB4 X3
  14399. NE B3,B4,PDIF1 IF NOT WRAP-AROUND
  14400. SA1 A2-B1 FIRST
  14401. SB3 X1
  14402. PDIF1 EQ B3,B5,PDIFX IF BUFFER FULL - RETURN
  14403. SX7 B3
  14404. SA6 X2 STORE WORD
  14405. SA7 A2 ADVANCE IN
  14406. EQ PDIFX RETURN
  14407. PDMR SPACE 4,20
  14408. ** PDMR PROCESS D.M. OUTPUT QUEUE. IF A REPLY TO A TASK CEASE
  14409. * IS DETECTED, THE END OF TRANSACTION MESSAGE IS
  14410. * JOURNALED.
  14411. * IF A REPLY TO A *DBA* REQUEST WITH RECALL IS DETECTED,
  14412. * THE CPU IS REQUESTED FOR THE TASK.
  14413. *
  14414. * ENTRY (A5) = ADDRESS OF DBA STATUS WORD
  14415. * (X5) = DBA STATUS WORD
  14416. *
  14417. *T 6/ ,18/ EC,6/ ,6/ ,1/R,5/ SN,18/ AD
  14418. *
  14419. * EC - ERROR CODE
  14420. * R - IF REQUEST WAS MADE WITH RECALL
  14421. * SN - SUB CONTROL POINT OF REQUESTOR
  14422. * AD - ADDRESS OF REQUEST PARAMETERS. WHEN A *DMCC* IS ISSUED
  14423. * FOR A *TAF* TASK THIS IS EITHER THE ADDRESS OF THE
  14424. * TASK-S COMMUNICATION BLOCK OR ITS COMPLEMENT. WHEN A
  14425. * *DMCC* IS ISSUED FOR A BATCH TASK, THIS IS THE LOCATION
  14426. * *BSAR*. THESE CONVENTIONS ARE ASSUMED BY THE CODE AT
  14427. * *PDMR2*.
  14428.  
  14429.  
  14430. PDMR PS
  14431.  
  14432.  
  14433. * CHECK AAM OUTPUT QUEUE.
  14434.  
  14435. PDMR0 TB5 0,VAAQ,LWA FWA OF AAM OUTPUT QUEUE
  14436. ZR B5,PDMR1 IF AAM NOT LOADED
  14437. SA1 B5+2 FWA OF INPUT FOR OUTPUT QUEUE
  14438. SA2 A1+B1 OUT
  14439. IX3 X1-X2
  14440. ZR X3,PDMR1 IF NO QUEUE ENTRY
  14441. SB6 PDMRA LOCATION TO RETURN RESULT
  14442. SB4 B1+ WORD COUNT TO RETURN
  14443. SX0 AAMC
  14444. RJ CIC READ ONE OUTPUT QUEUE ENTRY
  14445. SA1 PDMRA
  14446. MX2 -6
  14447. LX1 -24
  14448. BX2 -X2*X1 FUNCTION CODE
  14449. LX1 24
  14450. SX3 X2-DMCC
  14451. SB4 AAMDM
  14452. SA5 AAMA AAM STATUS WORD
  14453. PDMR0.1 NZ X3,PDMR6 IF NOT A REPLY TO A CEASE CODE
  14454. EQ PDMR2 UPDATE REQUEST COUNT
  14455.  
  14456. * CHECK TOTAL DATA MANAGER OUTPUT QUEUE.
  14457.  
  14458. PDMR1 SA1 TDO+2 CHECK TOTAL OUTPUT QUEUE
  14459. SA2 A1+B1 OUT
  14460. IX3 X1-X2
  14461. ZR X3,PDMR IF NO QUEUE ENTRY
  14462. SB5 TDO FET FOR TOTAL OUTPUT QUEUE
  14463. SB6 PDMRA LOCATION TO RETURN ENTRY TO
  14464. SB4 B1+ WORD COUNT TO RETURN
  14465. SX0 TOTC
  14466. RJ CIC READ ONE OUTPUT QUEUE ENTRY
  14467. SA1 PDMRA READ ENTRY
  14468. MX2 -6
  14469. LX1 -24
  14470. BX2 -X2*X1 FUNCTION CODE
  14471. LX1 24
  14472. SX3 X2-DMCC
  14473. SB4 TOTDM
  14474. SA5 TDBAA TOTAL STATUS WORD
  14475. PDMR2 NZ X3,PDMR6 IF NOT A REPLY TO CEASE CODE
  14476. SX7 B1
  14477. IX5 X5-X7 DECREMENT OUTSTANDING REQUEST COUNT
  14478. LX7 18
  14479. IX7 X5+X7 INCREASE COUNT OF TOTAL ALLOWABLE TASKS
  14480. SA7 A5
  14481. SX6 X1 COMMUNICATION BLOCK ADDRESS
  14482. AX6 17 GET ABSOLUTE VALUE OF THE CB ADDRESS
  14483. BX6 X1-X6
  14484. BX3 X1
  14485. LX3 -18
  14486. MX2 -5
  14487. BX3 -X2*X3 SUBCP NUMBER
  14488. LX3 SCPAL
  14489. TA4 X3-CPAL,VCPA STATUS WORD 1 OF SUBCP
  14490. SX4 X4-NUAPL
  14491. SB6 A4 ADDRESS OF SUBCP AREA
  14492. SX5 B0 CLEAR ERROR CODE
  14493. SX2 X6-BSAR CHECK FOR BATCH CONCURRENCY
  14494. ZR X2,PDMR6.1 IF BATCH CONCURRENCY TASK
  14495. SA1 X6+CBCR
  14496. SX4 B1
  14497. BX2 X6 COMMUNICATION BLOCK ADDRESS
  14498. LX4 B4
  14499. MX6 -4
  14500. LX6 18
  14501. BX7 -X4*X1 CLEAR DATA MANAGER FLAG
  14502. SA7 A1
  14503. BX6 -X6*X7
  14504. NZ X6,PDMR0 IF DATA MANAGER REQUEST ACTIVE
  14505.  
  14506. * WRITE A JOURNAL FILE ENTRY TO INDICATE TRANSACTION COMPLETE.
  14507.  
  14508. SB3 PDMR5 RETURN ADDRESS
  14509. SB4 4 END OF TRANSACTION INDICATOR
  14510. SB5 PJRNL JOURNAL FILE NUMBER
  14511. SX5 JRNLA+3 DUMMY ADDRESS FOR JOURNAL FILE WRITE
  14512. SX0 X2 C.B. ADDRESS
  14513. BX7 X2
  14514. SA7 PDMRB C.B. ADDRESS
  14515. EQ JRNL JOURNAL ENTRY
  14516.  
  14517. PDMR5 SA2 PDMRB C.B. ADDRESS
  14518. RJ RLC RELEASE COMMUNICATION BLOCKS
  14519. EQ PDMR0 CHECK NEXT ENTRY
  14520.  
  14521. * PROCESS DATA MANAGER OUTPUT QUEUE ENTRY.
  14522.  
  14523. PDMR6 SA1 PDMRA ENTRY JUST READ
  14524. SX7 B1
  14525. MX2 -5
  14526. IX7 X5-X7 DECREMENT OUTSTANDING REQUEST COUNT
  14527. SX3 B1
  14528. SA7 A5
  14529. LX1 -18
  14530. BX2 -X2*X1 SUB CP NUMBER
  14531. LX1 -5
  14532. SB3 X0
  14533. LX2 SCPAL
  14534. BX0 X3*X1 RECALL BIT
  14535. TA4 X2-CPAL,VCPA STATUS WORD 1 OF SUB CP
  14536. LX1 -13
  14537. SX4 X4-NUAPL START OF ALLOCATED CORE FOR SUB CP
  14538. SB6 A4 ADDRESS OF SUB CP CONTROL POINT AREA
  14539. SX5 X1 ERROR CODE
  14540. SA1 X4+B3 DATA MANAGER OUTSTANDING REQUEST WORD
  14541. LX2 59-46
  14542. SX7 B1
  14543. IX7 X1-X7 DECREMENT COUNT
  14544. SA7 A1
  14545. SA1 B6 STATUS WORD 1 OF SUBCP TABLE
  14546. ERRNZ SCBCW IF BATCH FLAG NOT IN WORD ZERO
  14547. LX1 59-SCBCS
  14548. PL X1,PDMR6.2 IF NOT IN USE BY BATCH CONCURRENCY
  14549.  
  14550. * INDICATE COMPLETION OF BATCH *CRM* REQUEST.
  14551.  
  14552. PDMR6.1 SA1 X4+BCTA *BCT* FWA
  14553. SA1 X1+BCSFW COMPLETE BIT WORD IN *BCT*
  14554. MX0 -1
  14555. BX6 -X0+X1 SET REQUEST COMPLETE
  14556. SA6 A1
  14557. SX6 X5 ERROR CODE
  14558. ZR X5,PDMR0 IF NOT FATAL DATA MANAGER ERROR
  14559. SA1 X4+DMEC INDEX TO *TAF* STATUS WORD
  14560. SB3 X1+BSTS+NUAPL
  14561. SA6 X4+B3 SET ERROR CODE IN REQUEST
  14562. EQ PDMR0 PROCESS NEXT QUEUE ENTRY
  14563.  
  14564. PDMR6.2 NZ X5,PDMR8 IF FATAL DATA MANAGER ERROR
  14565. NG X2,PDMR7 IF RECALL ON ALL BIT IS SET
  14566. ZR X0,PDMR0 IF NO RECALL
  14567. SB3 PDMR0 RETURN ADDRESS
  14568. EQ RCPU REQUEST CPU FOR TASK
  14569.  
  14570. PDMR7 SX1 X6 NUMBER OF REQUESTS LEFT OUTSTANDING
  14571. NZ X1,PDMR0 IF MORE REQUESTS LEFT TO RETURN
  14572. SX2 B1
  14573. LX2 46
  14574. BX6 -X2*X6 CLEAR RECALL ALL BIT
  14575. SB3 PDMR0 RETURN ADDRESS
  14576. SA6 A2 RESET C.B. STATUS INFORMATION
  14577. EQ RCPU REQUEST CPU FOR TASK
  14578.  
  14579. * PROCESS FATAL D.M. ERROR
  14580.  
  14581. PDMR8 SA2 B6+B1 C.B. STATUS WORD TWO
  14582. SX3 B1
  14583. MX1 1
  14584. LX3 55-0 SET ABORT FLAG
  14585. SX6 X5 ERROR CODE
  14586. BX7 X2+X3
  14587. BX6 X6+X1
  14588. SA7 A2
  14589. SA6 X4+DMEC SAVE ERROR CODE
  14590. SB3 PDMR0 RETURN ADDRESS
  14591. EQ RCPU REQUEST CPU FOR TASK
  14592.  
  14593. PDMRA BSS 1
  14594. PDMRB BSS 1 C.B. ADDRESS
  14595. RCPT SPACE 4
  14596. ** RCPT REQUEST CPU FOR A TASK
  14597. *
  14598. * ENTRY (X4) = START OF SUB CP AREA
  14599. * (B6) = CONTROL POINT ADDRESS
  14600. * (B3) = RETURN ADDRESS
  14601. *
  14602. * USES X - 0, 1, 2, 3, 6, 7
  14603. * A - 1, 2, 3, 7
  14604. * B - 4, 5
  14605.  
  14606.  
  14607. RCPT MX0 1
  14608. TX6 B6+CPAL,-VCPA
  14609. LX0 -12
  14610. SA1 CR CPU REQUEST SWITCHING WORD
  14611. AX6 SCPAL
  14612. SB5 X6 CONTROL POINT NUMBER OF REQUESTOR
  14613. AX6 X0,B5
  14614. BX7 X1+X6 ADD IN REQUEST BIT
  14615. SA7 A1+
  14616. ZR B2,BNT NO ONE HAS THE CPU
  14617. SA2 B2+CB1C COMPARE PRIORITIES WITH CURRENT JOB
  14618. UX7,B4 X2
  14619. SA3 X4+CB1C PRIORITY OF REQUESTOR
  14620. UX0,B5 X3
  14621. GE B5,B4,BNT IF CURRENT JOB LOWER PRIORTY
  14622. JP B3 *EXIT
  14623. RCPU SPACE 4
  14624. ** RCPU REQUEST CPU WITHOUT CHANGING CURRENT ASSIGNMENT
  14625. * UNLESS NO TASK HAS THE CPU
  14626. *
  14627. * ENTRY (X4) = START OF SUB CP AREA
  14628. * (B6) = CONTROL POINT ADDRESS
  14629. * (B3) = RETURN ADDRESS
  14630. *
  14631. * USES X - 1, 6, 7
  14632. * A - 1, 7
  14633. * B - 5
  14634.  
  14635.  
  14636. RCPU MX7 1
  14637. TX6 B6+CPAL,-VCPA
  14638. LX7 -12
  14639. SA1 CR CPU REQUEST SWITCHING WORD
  14640. AX6 SCPAL
  14641. SB5 X6 CONTROL POINT NUMBER OF REQUESTOR
  14642. AX6 X7,B5
  14643. BX7 X1+X6 ADD IN REQUEST BIT
  14644. SA7 A1+
  14645. ZR B2,BNT NO ONE HAS THE CPU
  14646. JP B3 *RETURN
  14647. BNT SPACE 4
  14648. ** BNT ASSIGN CPU TO A DIFFERENT SUB CONTROL POINT
  14649. *
  14650. * ENTRY (B6) = CONTROL POINT ADDRESS
  14651. * (X4) = START OF SUB CP AREA
  14652. * (B3) = EXIT ADDRESS
  14653.  
  14654.  
  14655. BNT SB2 X4
  14656. SB7 B6 SET POINTERS
  14657. SX6 B7+
  14658. LX4 18
  14659. BX6 X4+X6
  14660. SA6 SREG (B2) + (B7)
  14661. JP B3 *EXIT
  14662. RDCB SPACE 4
  14663. ** RDCB - TRANSFER TRANSACTION INPUT FROM THE
  14664. * RECEIVING BUFFER TO A COMMUNICATION BLOCK.
  14665. *
  14666. * ENTRY (A4) = FWA OF INPUT BLOCK.
  14667. * (X4) = 1/D,1/M,1/0,1/B,7/0,1/S,12/0,18/TERN,18/LENG
  14668. * D = 1 IF INPUT IS A DATA MESSAGE , 0 FOR COMMAND.
  14669. * M = 1 IF MORE BLOCKS.
  14670. * B = 1 IF BATCH INPUT.
  14671. * S = 1 IF SYSTEM ORIGIN.
  14672. * TERN = TERMINAL NUMBER.
  14673. * LENG = MESSAGE LENGTH IN WORDS + 1.
  14674. *
  14675. * EXIT (X0) = COMMUNICATION BLOCK ADDRESS.
  14676. * (X0) = 0, IF NO COMMUNICATION BLOCK AVAILABLE.
  14677. *
  14678. * USES X - ALL.
  14679. * A - 1, 2, 3, 4, 5, 6, 7.
  14680. * B - 3, 4, 5, 6.
  14681. *
  14682. * CALLS FCB, FFCB, JOL, RSC, RTK, SCB.
  14683.  
  14684.  
  14685. RDCB SUBR ENTRY/EXIT
  14686. SX7 A4+
  14687. SA7 RDCBC FWA OF INPUT BUFFER
  14688. SA2 ITIME REAL TIME CLOCK
  14689. MX0 1 MASK SYSTEM ORIGIN
  14690. BX7 X2
  14691. SA7 RDCBD CLOCK AT LAST INPUT
  14692. LX0 48-59
  14693. BX0 X0*X4
  14694. RJ FFCB GET A COMMUNICATIONS BLOCK
  14695. LX4 -18
  14696. ZR X0,RDCBX IF NO COMMUNICATION BLOCK
  14697. SX1 X4
  14698. SB3 X1+ SAVE TERMINAL NUMBER
  14699. TX6 X4-1,-VNTST
  14700. NG X1,RDC17 IF NEGATIVE TERMINAL NUMBER
  14701. PL X6,RDC17 IF INCORRECT TERMINAL NUMBER
  14702. SX7 TSTLLE LENGTH OF A TST ENTRY
  14703. IX1 X1*X7 BIAS OF TST ENTRY
  14704. MX2 42
  14705. TA5 X1+1,VTST TERMINAL STATUS TABLE ENTRY
  14706. SB4 B0
  14707. LX5 59-17
  14708. BX6 X4
  14709. LX6 59+18-48
  14710. NG X6,RDC4 IF SYSTEM ORIGIN TRANSACTION
  14711. ZR B3,RDC17 IF TERN=0 AND NOT A SYSTEM-ORIGIN
  14712. PL X5,RDC4 IF FIRST BLOCK OF TRANSACTION DATA
  14713. SB5 B0
  14714. SX6 A5-B1
  14715.  
  14716. * FIND LAST COMMUNICATION BLOCK IN CHAIN.
  14717.  
  14718. RDC1 RJ SCB FIND A C.B. CONTAINING PREVIOUS DATA
  14719. ZR B5,RDC3 IF END OF RESERVED COMMUNICATION BLOCKS
  14720. SA3 B5+CBMCW WORD *CBMCW* OF COMMUNICATION BLOCK
  14721. MX2 -CBMCN GET BLOCK ORDINAL
  14722. LX3 CBMCN-CBMCS-1
  14723. BX2 -X2*X3 BLOCK COUNT OF COMMUNICATION BLOCK
  14724. SX3 X2+B1 CHECK THE HIGHEST BLOCK COUNT
  14725. SX7 B4 CURRENT BLOCK COUNT
  14726. IX3 X7-X3
  14727. SX7 X2-1 CHECK FOR THE FIRST BLOCK
  14728. NZ X7,RDC2 IF NOT FIRST C.B. OF LINKED CHAIN
  14729. SX7 B5 FIRST COMMUNICATION BLOCK ADDRESS
  14730. LX7 18
  14731. BX0 X0+X7
  14732. RDC2 PL X3,RDC1 IF BLOCK COUNT NOT GREATER THAN PRIOR COUNT
  14733. SB4 X2+1 NEW HIGHEST BLOCK COUNT
  14734. EQ RDC1 LOOP
  14735.  
  14736. RDC3 SB3 B4-NCBC-1 INPUT LIMIT
  14737. NG B3,RDC3.2 IF WITHIN LIMIT
  14738. BX3 X4
  14739. LX3 59-58+18 LEFT JUSTIFY BLOCK FLAG
  14740. NG X3,RDC17 IF MORE INPUT
  14741. BX2 X0
  14742. AX2 18 (X2) = PRIMARY COMMUNICATION BLOCK ADDRESS
  14743. RJ RSC RELEASE SECONDARY COMMUNICATION BLOCK
  14744. SX2 X0+ (X2) = CURRENT COMMUNICATION BLOCK ADDRESS
  14745. RJ RLC RELEASE COMMUNICATION BLOCK
  14746. RDC3.1 BX6 X6-X6
  14747. SX7 CIINL INPUT TOO LARGE REASON CODE
  14748. SA6 A4 FREE INPUT BUFFER FOR FURTHER TRANSFER
  14749. AX0 18 (X0) = PRIMARY COMMUNICATION BLOCK ADDRESS
  14750. SX2 B1
  14751. SA3 X0+CMBHL+1 WORD TWO OF USER AREA
  14752. MX4 48
  14753. BX4 X4*X3 CLEAR WORD COUNT
  14754. SA7 A3+B1 REASON CODE FOR *ITASK*
  14755. BX4 X4+X2 UPDATE WORD COUNT
  14756. LX2 CBSYS-CBSYN+1
  14757. BX7 X4+X2 ADD SYSTEM ORIGIN FLAG
  14758. SA6 A7+B1
  14759. SA7 A3
  14760. EQ RDCB RETURN
  14761.  
  14762. RDC3.2 SA3 A3+CMBHL-3 WORD ONE OF USER AREA
  14763. MX7 -24
  14764. BX7 -X7*X3 SEQUENCE NUMBER OF TRANSACTION
  14765.  
  14766. * CHECK FOR FIRST OR LAST INPUT BLOCK.
  14767.  
  14768. RDC4 SX3 X4 TERMINAL ORDINAL
  14769. MX6 1
  14770. LX4 18+1
  14771. BX1 X6*X4 LAST INPUT BLOCK FLAG
  14772. BX5 -X6*X5
  14773. LX4 -1
  14774. BX5 X5+X1
  14775. BX0 X0+X1 BYPASS SCHEDULER IF NOT LAST INPUT BLOCK
  14776. LX5 17-59
  14777. SX6 B1
  14778. ZR X1,RDC5 IF LAST INPUT BLOCK
  14779. BX6 X5
  14780. SA6 A5
  14781. NZ B4,RDC6 IF NOT FIRST OF A MULTI BLOCK INPUT
  14782. SB4 B1
  14783. EQ RDC6 DO NOT BUMP TERMINAL TRANSACTION COUNT
  14784.  
  14785. * FORMAT COMMUNICATIONS BLOCK.
  14786.  
  14787. RDC5 IX6 X6+X5 INCREMENT TERMINAL TRANSACTION COUNT
  14788. LX6 59-TSIWS
  14789. NG X6,RDC6 IF TERMINAL IN INPUT WANTED STATE
  14790. LX6 59-59-59+TSIWS
  14791. MX1 -TSTCN
  14792. SA6 A5
  14793. BX6 -X1*X6
  14794. NZ X6,RDC6 IF NOT FIELD OVERFLOW
  14795. BX6 X1*X5 RESET TERMINAL TRANSACTION COUNT TO ZERO
  14796. SA6 A5
  14797. RDC6 SB6 X0 COMMUNICATION BLOCK ADDRESS
  14798. RJ FCB
  14799. SA4 RDCBC
  14800. SA4 X4 FWA OF INPUT BUFFER
  14801. SX7 X4-1 WORDS TO MOVE TO COMMUNICATION BLOCK
  14802. SA5 A4+
  14803. SB6 X0+CMBHL+CMBRL
  14804.  
  14805. * TRANSFER TERMINAL INPUT TO COMMUNICATION BLOCK.
  14806.  
  14807. ZR X7,RDC9 ZERO LENGTH MESSAGE
  14808. RDC8 SA5 A5+B1 INPUT WORD
  14809. SB6 B6+B1
  14810. SX7 X7-1
  14811. BX6 X5 MOVE WORD TO COMMUNICATION BLOCK
  14812. SA6 B6-B1
  14813. NZ X7,RDC8 IF NOT END OF INPUT TRANSFER
  14814. RDC9 SA7 A4+ FREE INPUT BUFFER FOR FURTHER TRANSFER
  14815. BX1 X4
  14816. LX1 59-48
  14817. NG X1,RDCBX IF SYSTEM ORIGIN TRANSACTION
  14818. SA2 X0+CBTAW GET *TST* ADDRESS
  14819. LX2 CBTAN-1-CBTAS
  14820. SA5 X2+TSIWW
  14821. ERRNZ TSIWW-1 INPUT WANTED NOT IN WORD 2 OF *TST*
  14822. LX5 59-TSIWS
  14823. PL X5,RDC14 IF NOT INPUT WANTED
  14824. BX7 X0 COMMUNICATION BLOCK ADDRESS
  14825. NG X0,RDC14 IF NOT LAST INPUT BLOCK
  14826.  
  14827. * REQUEST ROLLIN OF TASK WAITING FOR INPUT.
  14828.  
  14829. SB5 X0+ FIRST COMMUNICATION BLOCK ADDRESS
  14830. SA7 RDCBB
  14831. SB4 X4+
  14832. AX0 18
  14833. NZ X0,RDC10.1 IF MULTIPLE BLOCK INPUT
  14834. SX0 B5 RESTORE FIRST BLOCK ADDRESS
  14835. SB5 B0 SET SINGLE BLOCK INPUT FLAG
  14836. RDC10.1 SB3 B1
  14837. RJ RTK ROLL IN TASK WAITING FOR INPUT
  14838. MX3 1
  14839. SA4 RDCBB
  14840. BX0 X3+X4 SET WAIT FOR INPUT PROCESSED FLAG
  14841. SX4 B4+
  14842.  
  14843. * JOURNAL THE TRANSACTION INPUT.
  14844.  
  14845. RDC14 RJ JOL JOURNAL TRANSACTION
  14846. LX1 -18
  14847. SX1 X1
  14848. ZR X1,RDCBX IF FIRST BLOCK OF INPUT
  14849. MX2 -18
  14850. BX0 X2*X0 CLEAR LAST BLOCK
  14851. BX0 X0+X1 FIRST BLOCK OF INPUT
  14852. EQ RDCBX RETURN
  14853.  
  14854. * PROCESS ERROR CONDITIONS.
  14855.  
  14856. RDC17 SA1 RDCBA NUMBER OF TIMES INPUT THROWN AWAY
  14857. BX6 X6-X6
  14858. SX2 X0
  14859. SX7 X1+B1 INCREMENT COUNT
  14860. SA6 A4 FREE INPUT BLOCK FOR FURTHER TRANSFERS
  14861. BX0 X0-X0
  14862. SA7 A1
  14863. RJ RLC RELEASE COMMUNICATION BLOCK
  14864. EQ RDCBX RETURN
  14865.  
  14866. RDCBA BSSZ 1 NUMBER OF TIMES INPUT WAS THROWN AWAY
  14867. RDCBB BSS 1 COMMUNICATION BLOCK ADDRESS
  14868. RDCBC BSS 1 FWA OF INPUT BUFFER
  14869. RDCBD BSS 1 REAL TIME CLOCK AT LAST INPUT
  14870. RDCBE BSS 1 COMMUNICATION BLOCK ADDRESS
  14871. RFQ SPACE 4,25
  14872. ** RFQ - ROUTE FILE TO QUEUE.
  14873. *
  14874. * *RFQ* SETS UP THE SECOND AND FIFTH WORDS OF THE *DSP*
  14875. * PARAMETER BLOCK AND ISSUES THE *ROUTE* REQUEST WITHOUT
  14876. * RECALL. IT THEN CHECKS THE COMPLETE BIT AND PUTS THE TASK
  14877. * IN RECALL UNTIL IT SETS.
  14878. *
  14879. * ENTRY (X1) = SECOND WORD OF DSP BLOCK (FC / DC / FLAGS).
  14880. * (X3) = 42/STATUS PROC-R PARAMS, 18/STATUS PROC-R ADDR.
  14881. * (X4) = ERROR MESSAGE WORD, FOR *SUBMT* OR *KTSDMP*.
  14882. *
  14883. * EXIT TO *TSSC* TO ENTER MAIN LOOP AFTER *ROUTE*.
  14884. * TO EXIT ADDRESS IN OTHER CASES.
  14885. *
  14886. * USES X - 1, 2, 5, 6, 7.
  14887. * A - 1, 2, 5, 6, 7.
  14888. * B - 3, 4, 5, 6.
  14889. *
  14890. * CALLS COD, SNM, TRCL.
  14891. *
  14892. * MACROS MESSAGE, RETURN, ROUTE.
  14893.  
  14894.  
  14895. RFQ BSS 0 ENTRY
  14896. BX6 X1 COMPLETE THE *DSP* PARAMETER BLOCK
  14897. SA6 TDSP+1
  14898. SA1 SF GET THE FILE NAME
  14899. BX7 X3 SAVE THE STATUS PROCESSOR INFORMATION
  14900. MX2 42
  14901. SA7 B2+RCLA
  14902. BX7 X4
  14903. SA7 RFQA+3
  14904. BX6 X2*X1 FILE NAME
  14905. SA6 A6-B1
  14906. ROUTE A6 ROUTE THE FILE
  14907.  
  14908. RFQ1 SA2 TDSP CHECK FOR COMPLETION
  14909. SX7 RFQ1 RECALL RETURN ADDRESS
  14910. LX2 59-0
  14911. PL X2,TRCL2 IF ROUTE NOT COMPLETE
  14912.  
  14913. BX7 X7-X7 CLEAR FILE NAME / INTERLOCK
  14914. SA7 A2
  14915. SA5 A1+B1 GET STATUS PROCESSOR INFORMATION
  14916. ERRNZ RCL+1-RCLA CODE ASSUMES RELATIONSHIP
  14917. SX6 DSQID RESTORE ORIGINAL TID
  14918. SA6 TDSP+2
  14919. SA7 A6+B1 CLEAR PARAMETER WORDS 3 - 6
  14920. SA7 A7+B1
  14921. SA7 A7+B1
  14922. SA7 A7+B1
  14923. MX6 -6 GET ERROR CODE
  14924. LX2 -12-59+0+60
  14925. BX6 -X6*X2
  14926. SB4 X5 STATUS PROCESSOR ADDRESS
  14927. SB5 B2+NUAPL TASK RA
  14928. AX5 18 STATUS PROCESSOR PARAMETERS
  14929. JP B4 EXECUTE STATUS PROCESSOR
  14930.  
  14931. RFQ2 BSS 0 *KTSDUMP* STATUS PROCESSOR
  14932. ZR X6,RFQ7 IF NO ERRORS
  14933. EQ RFQ5 REPORT ERROR
  14934.  
  14935. RFQ3 BSS 0 *ROUTE* STATUS PROCESSOR
  14936. SA6 B5+X5 RETURN STATUS TO CALLER
  14937. EQ TSSC ENTER MAIN LOOP
  14938.  
  14939. RFQ4 BSS 0 *SUBMIT* STATUS PROCESSOR
  14940. ZR X6,TSSC IF NO ERROR
  14941. SX1 X6-JBCE
  14942. ZR X1,RFQ6 IF JOB STATEMENT ERROR
  14943. SX1 X6-USCE
  14944. ZR X1,RFQ6 IF INCORRECT USER STATEMENT
  14945. AX5 18 ERROR EXIT ADDRESS
  14946.  
  14947. RFQ5 BX1 X6
  14948. SB6 B2 SAVE (B2)
  14949. RJ COD CONVERT TO DISPLAY CODE
  14950. MX1 -12
  14951. BX1 -X1*X6
  14952. LX1 59-11
  14953. SB2 1RX SEARCH CHARACTER
  14954. SB3 DAYB ASSEMBLY AREA
  14955. SB5 -RFQA MESSAGE FORMAT
  14956. RJ SNM SET NAME IN MESSAGE
  14957. SB2 B6 RESTORE (B2)
  14958. MESSAGE DAYB INFORM OPERATOR ABOUT POSSIBLE PROBLEM
  14959. RFQ6 RETURN SF,R
  14960. RFQ7 SB4 X5
  14961. JP B4 EXIT TO ERROR EXIT ADDRESS
  14962.  
  14963.  
  14964. RFQA DATA C* DSP ERROR XXB RETURNED ON TASK SUBMIT.*
  14965. RLC SPACE 4,10
  14966. ** RLC - RELEASE EXCESS COMMUNICATION BLOCKS.
  14967. *
  14968. * ENTRY (X2) = FWA OF FIRST COMMUNICATION BLOCK TO RELEASE.
  14969. *
  14970. * USES X - 1, 2, 3, 4, 5, 6.
  14971. * A - 3, 5, 6.
  14972. * B - 4.
  14973.  
  14974.  
  14975. RLC SUBR ENTRY/EXIT
  14976. SA5 X2+ LINK TO NEXT COMMUNICATION BLOCK
  14977. RLC1 ZR X2,RLCX IF NO MORE COMMUNICATION BLOCKS
  14978. SX3 47*CMBL
  14979. TX6 X2,-VCBSA RELATIVE C.B. ADDRESS
  14980. NG X6,RLCX IF TRYING TO RELEASE A FAKE C.B.
  14981. SB4 -1
  14982. SA6 X2+1 CLEAR TST DATA FROM WORD ONE
  14983. RLC2 IX6 X6-X3
  14984. SB4 B4+B1
  14985. PL X6,RLC2 IF C.B. BIT IN THE NEXT WORD
  14986. IX6 X6+X3
  14987. SX1 CMBL
  14988. PX6 X6 DIVIDE BY C.B. LENGTH TO GET BIT POSITION
  14989. TA3 B4,VCBRT
  14990. NX6 X6
  14991. PX1 X1 C.B. LENGTH
  14992. NX1 X1
  14993. FX4 X6/X1
  14994. UX4,B4 X4
  14995. LX1 X4,B4 RESULT OF DIVISION
  14996. SX6 B1
  14997. BX1 -X1
  14998. SB4 X1+47 SHIFT COUNT FOR BIT POSITION
  14999. LX6 B4,X6
  15000. BX6 X6+X3
  15001. SA6 A3 RESET COMMUNICATION BLOCK BIT MAP
  15002. BX6 X6-X6
  15003. SA6 X2 CLEAR FIRST WORD OF USER AREA
  15004. MX6 1 INDICATE COMMUNICATION BLOCKS AVAILABLE
  15005. SA6 EVCB
  15006. SX2 X5
  15007. SA5 X5 NEXT COMMUNICATION BLOCK TO RELEASE
  15008. EQ RLC1 CONTINUE TO RELEASE C.B.
  15009. RSC SPACE 4,10
  15010. ** RSC RELEASE SECONDARY COMMUNICATION BLOCKS.
  15011. *
  15012. * ENTRY (X2) = ADDRESS OF PRIMARY COMMUNICATION BLOCK.
  15013. *
  15014. * USES X - 2, 6.
  15015. * A - 2, 6.
  15016. * B - 5.
  15017. *
  15018. * EXIT (X2) = ADDRESS OF PRIMARY COMMUNICATION BLOCK.
  15019. *
  15020. * CALLS RLC.
  15021.  
  15022.  
  15023. RSC SUBR
  15024. SB5 X2 SAVE C.B. ADDRESS
  15025. MX6 60-CBNCN CLEAR NEXT C.B. LINK
  15026. SA2 X2
  15027. BX6 X6*X2
  15028. SA6 A2
  15029. SX2 X2 SECONDARY C.B. ADDRESS
  15030. RJ RLC RELEASE COMMUNICATION BLOCKS
  15031. SX2 B5+
  15032. EQ RSCX RETURN
  15033. RLR SPACE 4,10
  15034. ** RLR - RELEASE A ROLLOUT TABLE ENTRY.
  15035. *
  15036. * ENTRY (X0) = ROLLOUT TABLE ADDRESS.
  15037. * (B5) = SUB CONTROL POINT AREA OF TASK.
  15038. *
  15039. * USES X - 1, 3, 6.
  15040. * A - 3, 6.
  15041. * B - 4.
  15042.  
  15043.  
  15044. RLR SUBR ENTRY/EXIT
  15045. ZR X0,RLRX IF NO ROLLOUT TABLE ENTRY TO RELEASE
  15046. SX3 47*TROLE
  15047. SX6 X0-TROL
  15048. SB4 -1
  15049. RLR1 IX6 X6-X3
  15050. SB4 B4+B1
  15051. PL X6,RLR1 IF ADVANCE BLOCK COUNT
  15052. IX6 X6+X3
  15053. SA3 B4+TROM ROLLOUT TABLE MAP ALLOCATION
  15054. SB4 B7
  15055. SX1 TROLE ROLLOUT TABLE ENTRY LENGTH
  15056. IX1 X6/X1
  15057. SB7 B4
  15058. SX6 B1
  15059. BX1 -X1
  15060. SB4 X1+47 SHIFT COUNT FOR BIT POSITION
  15061. LX6 B4,X6
  15062. BX6 X6+X3
  15063. SA6 A3 RELEASE ENTRY
  15064. SA3 B5+CB2C GET C.B. ADDRESS
  15065. MX6 42
  15066. SA3 X3+CBCR GET ROLLOUT TABLE ADDRESS
  15067. SX4 X3
  15068. IX1 X0-X4
  15069. NZ X1,RLRX IF NOT TO CLEAR ROLLOUT TABLE ADDRESS
  15070. BX6 X6*X3 CLEAR ROLLOUT TABLE ADDRESS
  15071. SA6 A3
  15072. EQ RLRX *RETURN
  15073. RLS SPACE 4,15
  15074. ** RLS - RELEASE AN ENTRY IN A BIT RESERVATION MAP.
  15075. *
  15076. * ENTRY (A2) = ADDRESS OF BIT MAP.
  15077. * (X0) = ADDRESS OF ENTRY TO RELEASE.
  15078. * (X1) = LENGTH OF ENTRY.
  15079. * (X2) = FIRST WORD OF BIT MAP.
  15080. * (X3) = FWA OF TABLE.
  15081. * (B6) = NUMBER OF RESERVATION BITS PER WORD.
  15082. *
  15083. * USES A - 2, 6.
  15084. * X - 0, 2, 3, 6.
  15085. * B - 3, 6.
  15086.  
  15087.  
  15088. RLS SUBR ENTRY/EXIT
  15089. IX3 X0-X3
  15090. SB3 B7
  15091. IX3 X3/X1 ENTRY ORDINAL
  15092. SB7 B3
  15093. SB3 -1
  15094. SX0 B6
  15095. RLS1 SB3 B3+B1 COMPUTE RESERVATION WORD INDEX
  15096. IX3 X3-X0
  15097. PL X3,RLS1 IF ADVANCE WORD COUNT
  15098. SA2 A2+B3 RESERVATION WORD
  15099. IX3 X3+X0 BIT INDEX
  15100. SX6 B1
  15101. BX3 -X3
  15102. SB3 B6+X3
  15103. LX6 B3,X6
  15104. BX6 X6+X2
  15105. SA6 A2 RELEASE ENTRY
  15106. EQ RLSX RETURN
  15107. ROLL SPACE 4,10
  15108. ** ROLL SET TASK ELIGIBLE FOR ROLLOUT.
  15109. *
  15110. * ENTRY (X1) = ROLLOUT PARAMETERS.
  15111. * (X5) = TIME TO LEAVE TASK IN CORE BEFORE ROLLOUT.
  15112. *
  15113. *T (X1) 36/ ROLLOUT EVENT ID,12/ ,12/ PRIORITY BIAS
  15114.  
  15115.  
  15116. ROLL SX7 ROL1
  15117. RJ FFR RESERVE A ROLLOUT TABLE ENTRY
  15118. NZ X0,ROL2 IF ROLLOUT TABLE ENTRY RESERVED
  15119. LX5 18
  15120. BX7 X7+X5
  15121. SA7 B2+RCL
  15122. BX6 X1 ROLLOUT REQUEST TYPE
  15123. SA6 A7+B1
  15124. SX7 0
  15125. SA7 B2+ROSC
  15126. JP TRCL ROLLOUT TABLE FULL - PUT TASK ON RECALL
  15127. ROL1 SA4 B2+ROSC
  15128. AX1 18
  15129. BX5 X1
  15130. SA1 A1+1 RESET ROLLOUT REQUEST TYPE
  15131. NG X4,TSSC IF ROLLOUT INTERUPTED
  15132. JP ROLL TRY AGAIN
  15133.  
  15134. * ENTRY POINT IF ROLLOUT TABLE ENTRY PRERESERVED.
  15135. * (X0) = ROLLOUT TABLE ENTRY ADDRESS.
  15136.  
  15137. ROL2 SX6 B0+ CLEAR ROLL EVENT
  15138.  
  15139. * ENTRY POINT FOR EVENTS.
  15140. * (X6) = EVENT.
  15141.  
  15142. ROL3 TX4 B7+CPAL,-VCPA GET SUBCP NUMBER
  15143. SX7 X0
  15144. LX4 36-SCPAL
  15145. BX6 X4+X6 ADD SUBCP NUMBER
  15146. SA6 X0+RTWEV UPDATE SECOND WORD OF ROLLOUT TABLE
  15147. SX4 B1
  15148. SA2 B2+CB2C GET COMMUNICATION BLOCK ADDRESS
  15149. SA3 X2+CBCR
  15150. BX6 X3
  15151. SA6 B2+WICB+3
  15152. SA2 ROLB ADD SUBCP NUMBER AND ROLLOUT TABLE ADDRESS
  15153. BX6 X2*X6
  15154. TX3 B7+CPAL,-VCPA CALCULATE SUBCP NUMBER
  15155. LX3 48-SCPAL
  15156. BX6 X6+X0
  15157. BX6 X3+X6
  15158. SA6 A3+ UPDATE *CBCR* WORD
  15159. SA2 B7+B1 CHECK *CM* RESIDENT TASK
  15160. LX2 59-SCCRS
  15161. PL X2,ROL3.1 IF NOT CM RESIDENT TASK
  15162. MX7 1 ASSUME ROLLOUT COMPLETE
  15163. SX6 B7
  15164. LX6 18
  15165. BX7 X6+X7
  15166. SA7 X0
  15167. RJ DCPT DROP SUBCP
  15168. EQ TSSC TIME SLICE SUBCP
  15169.  
  15170. ROL3.1 SA2 STAT14 NUMBER OF TASK ROLLOUT STARTS
  15171. IX6 X2+X4
  15172. SA6 A2
  15173. MX6 42
  15174. SA7 B2+ROSC ROLLOUT TABLE ENTRY ADDRESS
  15175. MX3 -12
  15176. BX7 X6*X1 ROLLOUT EVENT ID
  15177. BX6 -X3*X1 PRIORITY BIAS
  15178. SA7 X0
  15179. LX6 30
  15180. SA6 X0+B1
  15181.  
  15182. * WAIT FOR DELAY TIME TO EXPIRE BEFORE CONTINUING ROLLOUT.
  15183.  
  15184. ZR X5,ROL5 IF NO DELAY TIME
  15185. SX6 ROL4
  15186. SA2 LTIME LATEST REAL TIME CLOCK READING
  15187. MX7 -36
  15188. SA6 B2+RCL
  15189. BX2 -X7*X2
  15190. IX7 X5+X2 SET TIME TO RESUME ROLLOUT PROCESSING
  15191. SA7 A6+B1
  15192. JP TRCL WAIT FOR DELAY TIME TO EXPIRE
  15193. ROL4 SA4 B2+ROSC
  15194. SA3 LTIME REAL TIME CLOCK
  15195. NG X4,ROL15 IF ROLLOUT WAS INTERUPTED
  15196. SA2 A1+B1
  15197. MX7 -36
  15198. BX3 -X7*X3
  15199. IX3 X2-X3
  15200. PL X3,TRCL IF TIME NOT YET ELASPED
  15201.  
  15202. * INTERLOCK ROLLOUT FILE.
  15203.  
  15204. ROL5 SA1 RO+5
  15205. ZR X1,ROL6 IF FILE NOT RESERVED
  15206. SX7 ROL5
  15207. SA4 B2+ROSC
  15208. NG X4,ROL15 IF ROLLOUT TO BE TERMINATED
  15209. JP TRCL2 PLACE TASK ON RECALL
  15210.  
  15211. * RESERVE ROLLOUT FILE SPACE FOR SUB CP.
  15212.  
  15213. ROL6 SX3 A1-5 FET ADDRESS OF ROLLOUT FILE
  15214. SA4 B2+ROSC
  15215. NG X4,ROL15 IF ROLLOUT WAS INTERUPTED
  15216. SX0 X4 RESTORE ROLLOUT TABLE ENTRY ADDRESS
  15217. SA4 X4 ROLLOUT TABLE ENTRY
  15218. SX7 B7
  15219. SA7 A1 SET ROLLOUT FILE INTERLOCK
  15220. SA0 A4
  15221. BX6 X4+X3
  15222. SA6 A4
  15223. SX5 ROLBL ROLLOUT BLOCK LENGTH
  15224. SA3 B7
  15225. SB5 X6 ROLLOUT FILE FET ADDRESS
  15226. LX3 -18
  15227. MX7 -48 GET ROLLOUT FL
  15228. SA4 X0+RTWEV CHECK IF MEMORY REQUEST ROLLOUT
  15229. LX7 -12
  15230. BX4 -X7*X4
  15231. SA2 MEMC
  15232. IX7 X2-X4
  15233. NZ X7,ROL6.1 IF NOT MEMORY REQUEST ROLLOUT
  15234. UX3,B3 X4
  15235. ROL6.1 MX4 1
  15236. SX2 X3+NUAPL TOTAL FIELD LENGTH TO ROLL
  15237. SB6 B7
  15238. IX7 X2/X5
  15239. SB7 B6
  15240. BX6 X6-X6
  15241. SB3 60
  15242. SB6 X7+ NUMBER OF ROLLOUT BLOCKS NEEDED
  15243. SB3 B3-B6
  15244. AX2 X4,B6
  15245. SB4 RLATL
  15246. TA1 0,VRLAT FIRST WORD OF ROLLOUT FILE ALLOCATION MAP
  15247. ROL7 BX3 X2*X1
  15248. ZR X3,ROL9 IF HOLE OR END OF FILE
  15249. LX1 1
  15250. SB3 B3-B1
  15251. NZ B3,ROL7 IF NOT END OF SEARCH
  15252. SB4 B4-B1
  15253. ZR B4,ROL8 IF FILE FULL
  15254. SB3 60
  15255. SA1 A1+B1 NEXT ALLOCATION WORD
  15256. SB3 B3-B6
  15257. EQ ROL7 CONTINUE SEARCH
  15258.  
  15259. ROL8 SX7 ROL5
  15260. SA7 B2+RCL
  15261. SA2 A0 ROLLOUT TABLE ENTRY
  15262. MX3 42
  15263. SA6 X2+5 CLEAR INTERLOCK ON ROLLOUT FILE
  15264. BX7 X3*X2
  15265. SA7 A2 CLEAR FET POINTER
  15266. JP TRCL ROLLOUT FILE FULL - PLACE TASK ON RECALL
  15267.  
  15268. ROL9 SB4 60
  15269. BX7 X2+X1 SET RESERVATION BITS
  15270. SB3 B3+B6
  15271. LX6 X2,B3 SAVE A COPY OF RESERVATION BITS
  15272. SA6 B2+RRSC
  15273. LX7 X7,B3 JUSTIFY RESERVATION WORD
  15274. SX2 B4+
  15275. SA7 A1
  15276. SX6 A1
  15277. TX3 A1,-VRLAT NTH WORD IN TABLE
  15278. SA6 B2+RRSC+1
  15279. SB4 B4-B3
  15280. IX3 X3*X2
  15281. SX4 NPRBL
  15282. SX3 X3+B4 ADD BIT POSITION IN WORD
  15283. IX7 X4*X3 DISK ADDRESS OF START OF ROLLOUT BLOCK
  15284.  
  15285. * COMPUTE SCHEDULING PRIORITY.
  15286.  
  15287. SA1 B7+2
  15288. MX3 -12
  15289. SA4 A0+B1 GET PRIORITY BIAS VALUE
  15290. LX1 12
  15291. BX2 -X3*X1
  15292. LX4 -30
  15293. TA2 X2,VTLD GET ORIGINAL TASK PRIORITY
  15294. BX1 -X3*X2
  15295. SA7 B5+6 SET DISK ADDRESS INTO FET
  15296. BX2 -X3*X4
  15297. IX1 X2+X1 SET SCHEDULING PRIORITY
  15298. BX3 -X3*X1 IN CASE OF OVERFLOW
  15299. SA1 B7
  15300. LX3 30
  15301. LX1 -18
  15302. SX5 X1+ FL OF TASK
  15303. BX6 X7+X3
  15304. LX5 42
  15305. BX6 X6+X5 FL / PRIORITY / DISK ADDRESS
  15306. SA6 A0+1
  15307. SA2 A7+B1 COMPARE WRITE ADDRESS TO CURRENT EOI
  15308. IX3 X2-X7
  15309. PL X3,ROL11 IF ADDRESS NOT BEYOND EOI
  15310.  
  15311. * EXTEND FILE TO DESIRED WRITE ADDRESS.
  15312.  
  15313. BX3 -X3
  15314. SX1 64
  15315. BX6 X2
  15316. IX2 X1*X3 NUMBER OF WORDS TO ENTEND FILE
  15317. SA1 B5+B1
  15318. MX3 42
  15319. SA6 B5+6 CURRENT EOI ADDRESS
  15320. BX3 X3*X1
  15321. SX4 100B USE START OF TRANEX FOR FIRST
  15322. IX7 X4+X2
  15323. SA7 B5+4 LIMIT
  15324. BX6 X3+X4
  15325. SA6 A1 FIRST
  15326. SX7 X7-1
  15327. SA7 A6+B1 IN = LIMIT -1
  15328. SX6 X6
  15329. SA6 A7+B1 OUT = IN
  15330. SX5 ROL10 RETURN ADDRESS
  15331. REWRITER B5 EXTEND FILE
  15332. LX2 18
  15333. BX7 X5+X2 ADD FET ADDRESS
  15334. JP TRCL2 WAIT FOR WRITE TO COMPLETE
  15335. ROL10 LX1 -18
  15336. SA2 X1 ROLLOUT FILE FET
  15337. SB5 X1
  15338. LX2 59
  15339. PL X2,TRCL IF FILE BUSY
  15340. SA4 B2+ROSC
  15341. PL X4,ROL11 IF ROLLOUT NOT INTERUPTED
  15342. SX7 B0+
  15343. SA7 B5+5 CLEAR INTERLOCK
  15344. JP ROL15 CLEAN UP ROLLOUT
  15345.  
  15346. * SET UP FET FOR ROLLOUT.
  15347.  
  15348. ROL11 SA1 B7
  15349. MX4 42
  15350. SX5 X1-NUAPL-1 START OF AREA TO ROLL - 1
  15351. SA2 B5+B1 FIRST
  15352. LX1 -18
  15353. SX6 X5+B1
  15354. BX2 X4*X2
  15355. SX1 X1+NUAPL LENGTH OF AREA TO ROLL
  15356. SA6 B5+3 OUT
  15357. SA3 A6+B1
  15358. BX7 X2+X5
  15359. IX1 X6+X1
  15360. SA7 A2 FIRST
  15361. BX4 X4*X3
  15362. BX7 X4+X1
  15363. SA7 A3 LIMIT
  15364. SX7 X5
  15365. SA7 A6-B1 IN
  15366.  
  15367. * SAVE SUB CONTROL POINT TABLE INFORMATION IN ROLLOUT BLOCK.
  15368.  
  15369. SA1 B7+B1
  15370. SA3 A1+B1
  15371. MX6 12
  15372. SX4 B7
  15373. IX7 X1-X4 UNBIAS ABSOLUTE STATUS WORD POINTER
  15374. SA7 B2+RSCC
  15375. BX6 X6*X3 TASK INDEX
  15376. SA6 A7+B1
  15377. SX1 CPACL SAVE SUB CP ACTIVE TASK STATUS WORDS
  15378. SX2 A3+B1
  15379. SA4 B7
  15380. MX7 1 SET STORAGE MOVE LOCK OUT
  15381. SX3 A6+B1
  15382. BX7 X7+X4
  15383. SA7 A4
  15384. RJ MVE= TRANSFER STATUS WORDS
  15385. REWRITER B5+ INITIATE WRITE
  15386. LX2 18
  15387. SX7 ROL12
  15388. BX7 X7+X2
  15389. JP TRCL2 WAIT FOR WRITE TO COMPLETE
  15390. ROL12 LX1 -18
  15391. SA2 X1 ROLLOUT FILE FET
  15392. BX6 X6-X6
  15393. LX2 59
  15394. PL X2,TRCL IF FILE BUSY
  15395. SA3 A2+6
  15396. SA1 A3+B1 COMPARE CURRENT POSITION TO EOI
  15397. AX3 30
  15398. IX2 X1-X3
  15399. SA1 B7
  15400. PL X2,ROL13 IF WRITE DID NOT EXTEND EOI
  15401. BX7 X3
  15402. SA7 A3+B1 SET NEW EOI
  15403.  
  15404. * RELEASE SUB CONTROL POINT AND FIELD LENGTH.
  15405.  
  15406. ROL13 MX3 1
  15407. SA4 B2+ROSC
  15408. BX7 -X3*X1 CLEAR STORAGE MOVE INTERLOCK
  15409. SA6 A2+5 RELEASE INTERLOCK ON ROLLOUT FILE
  15410. SA7 A1
  15411. SA2 X4
  15412. NG X4,ROL15 IF ROLLOUT WAS INTERUPTED
  15413. BX7 X3+X2
  15414. SA7 A2 SET ROLLOUT COMPLETE
  15415. LX1 -18
  15416. SB6 B7
  15417. SX1 X1+NUAPL AMOUNT OF CORE BEING RELEASED
  15418. SA2 AVAILCM
  15419. IX7 X1+X2
  15420. SA7 A2 UPDATE AVAILABLE CORE COUNT
  15421. SB4 CPACL-1
  15422. SA6 B7+CPAHL
  15423. ROL14 SA6 A6+B1
  15424. SB4 B4-B1
  15425. NZ B4,ROL14 IF ANOTHER STATUS WORD TO CLEAR
  15426. SA4 STAT13 NUMBER OF TASK ROLLOUT COMPLETES
  15427. SX6 B1
  15428. IX6 X4+X6
  15429. SA6 A4
  15430. EQ ESCP1 RELEASE SUBCONTROL POINT
  15431.  
  15432. * RELEASE ROLLOUT FILE SPACE AND TABLE ENTRY.
  15433.  
  15434. ROL15 SB3 TSSC RESUME PROCESSING AFTER CLEAN UP
  15435. SB5 B2
  15436. SA3 X4
  15437. SB6 B7
  15438. LX3 59-RTBDM
  15439. PL X3,ROL16 IF NOT DATA MANAGER ROLL
  15440. SB3 ROL31 EXIT ADDRESS
  15441.  
  15442. * ROLLIN PROCESSING.
  15443. *
  15444. * ENTRY (B3) = RETURN ADDRESS.
  15445. * (B5) = SUB CONTROL POINT AREA.
  15446. * (B6) = SUB CONTROL POINT ADDRESS.
  15447. * (X4) = ADDRESS OF ROLLOUT TABLE ENTRY.
  15448. * EXIT (X6) = FIRST WORD OF ROLLOUT TABLE ENTRY.
  15449.  
  15450. ROL16 SA1 X4
  15451. BX6 X1
  15452. SA2 X4+2 WORD 2 OF ROLLOUT TABLE
  15453. LX2 59-RTABS
  15454. PL X2,ROL16.1 IF NOT TO ABORT TASK
  15455. MX3 SCCDN SET CDCS ABORTED FLAG
  15456. SA2 B6+B1 GET WORD 2 OF SUBCP TABLE
  15457. LX3 SCCDS-59
  15458. BX7 X2+X3
  15459. SA7 A2
  15460. ROL16.1 SX0 X4
  15461. SX2 X1 ROLLOUT FILE FET ADDRESS
  15462. SA6 ROLA SAVE FIRST WORD OF ROLLOUT TABLE ENTRY
  15463. ZR X2,ROL17 IF NO FILE SPACE ASSIGNED
  15464. SA3 B5+RRSC+1
  15465. SA4 X3 ROLLOUT FILE RESERVATION WORD
  15466. SA2 A3-B1
  15467. BX6 -X2*X4 RELEASE ROLLOUT FILE RESERVATION SPACE
  15468. SA6 A4
  15469. ROL17 SA4 B6+B1 RESTORE C.B. HEADER WORDS
  15470. LX1 59-55
  15471. SA4 X4
  15472. SA0 B6
  15473. SA5 B5+WICB+3 RESTORE PREVIOUS ROLLOUT TABLE ADDRESS
  15474. SA2 X4+CBCR
  15475. SA3 ROLC MASK ABORT AND *DT* FLAGS
  15476. BX7 X3*X2
  15477. BX7 X5+X7
  15478. SA7 A2 UPDATE *CBCR* WORD
  15479. MX6 -6
  15480. NG X1,ROL20 IF NO RESTORE OF C.B. AFTER ROLLIN
  15481. SA1 X0+RTWEV GET ROLLOUT EVENT
  15482. LX1 12
  15483. BX6 -X6*X1
  15484. SX1 X6-EVWI
  15485. NZ X1,ROL17.1 IF NOT *WAITINP* ROLL
  15486. SA2 B5+WICB RESTORE W3 - W5 OF C.B. SYSTEM HEADER
  15487. BX6 X2
  15488. SA6 X4+CBTLW
  15489. SA2 A2+B1
  15490. SA1 X4+3 NEW MC FIELD
  15491. LX7 56-8
  15492. BX7 X7*X2 CLEAR OLD MC FIELD
  15493. BX7 X1+X7
  15494. SA2 A2+B1
  15495. SA7 A1
  15496. BX6 X2
  15497. SA6 A7+1
  15498.  
  15499. * MOVE COMMUNICATION BLOCK TO TASK AFTER FIRST DETERMINING
  15500. * IF A *WAITINP* TO A USER-DECLARED BUFFER IS ACTIVE.
  15501.  
  15502. ROL17.1 MX7 42
  15503. SA1 B5+LRA1 READ LAST SYSTEM REQUEST
  15504. SA2 SCTA READ BUFFER-*WAITINP* REQUEST
  15505. BX6 X7*X1
  15506. BX6 X2-X6
  15507. SX3 B5+NUAPL+SUAC
  15508. NZ X6,ROL18 IF NOT BUFFER-*WAITINP* REQUEST
  15509. SX3 B5+NUAPL
  15510. SX1 X1
  15511. IX3 X3+X1 (X3) = FWA OF USER-DECLARED BUFFER
  15512. ROL18 ZR X6,ROL19 IF BUFFER-*WAITINP*
  15513. SA2 B6
  15514. LX2 59-57
  15515. NG X2,ROL20 IF SOLICITED COMMUNICATION BLOCK TASK
  15516. ROL19 SA1 X4 RESTORE TASK-S CB1C
  15517. SA2 X4+B1
  15518. BX6 X1
  15519. BX7 X2
  15520. SX1 CMBL-CMBHL
  15521. SX2 X4+CMBHL
  15522. SA6 B5+CB1C
  15523. SA7 B5+CB2C
  15524. SA4 X2-CMBHL+CBITW
  15525. LX4 59-CBITS
  15526. MX6 -59
  15527. PL X4,ROL19.2 IF NOT INITIAL TRANSFER TO C.B.
  15528. BX6 -X6*X4 CLEAR INITIAL TRANSFER BIT
  15529. LX6 CBITS-59
  15530. SA6 A4
  15531. MX7 -CBWCN
  15532. SA4 X2-CMBHL+CBWCW GET COUNT OF WORDS TO MOVE
  15533. BX1 -X7*X4
  15534. SX4 B4 SAVE (B4)
  15535. SB6 B5+NUAPL+SUAC+CMBL-CMBHL-CBTL-1
  15536. SX6 B2+ SAVE (B2)
  15537. SB4 X1-CBDL-CBUL
  15538. SB2 -B4 CLEAR REST OF USER AREA IN C.B
  15539. BX7 X7-X7
  15540. SA7 B6+
  15541. ROL19.0 SB2 B2-B1
  15542. SA7 A7-B1
  15543. NZ B2,ROL19.0 IF NOT END OF USER AREA
  15544. SB4 X4 RESTORE (B4)
  15545. SB2 X6 RESOTRE (B2)
  15546. NZ X1,ROL19.1 IF TERMINAL INPUT
  15547. SA4 X2+CMBRL STATUS WORD OF C.B.
  15548. SX1 B1
  15549. IX4 X1-X4
  15550. ZR X4,ROL19.1 IF TERMINAL *WAITINP* TIMED OUT
  15551. SX1 B0+
  15552. ROL19.1 SX1 X1+CMBRL
  15553. ROL19.2 RJ MVE= MOVE C.B. INTO TASK FL
  15554. ROL20 LX5 12
  15555. SB6 A0 RESTORE B6
  15556. PL X5,ROL21 IF CALLRTN TASK DID NOT ABORT
  15557. SA2 B6+B1
  15558. SX3 B1
  15559. LX3 55
  15560. BX7 X2+X3 SET ABORT FLAG
  15561. SA7 A2+
  15562. ROL21 MX6 -CBNLN
  15563. SA4 X0+RTWEV CHECK ROLLOUT EVENT
  15564. LX4 12
  15565. BX4 -X6*X4
  15566. SX4 X4-EVCR
  15567. NZ X4,ROL23 IF NOT *CALLRTN* ROLL
  15568. SA4 B5+CB2C GET C.B. ADDRESS
  15569. SA5 X4+CBCR DECREMENT NEST LEVEL
  15570. LX5 CBNLN-1-CBNLS
  15571. BX3 -X6*X5
  15572. SX3 X3-1
  15573. BX6 X6*X5
  15574. BX7 X6+X3
  15575. LX7 CBNLS-CBNLN+1
  15576. SA7 A5
  15577. NZ X3,ROL23 IF NOT INITIAL TASK IN *CALLRTN* CHAIN
  15578. SA1 B5+RTSC RESTORE TASK CHAIN
  15579. BX6 X1
  15580. MX2 60-CBRFN
  15581. SA6 X4+CBTLW
  15582. LX2 CBRFS-0
  15583. BX7 X2*X7
  15584. SA7 A5+
  15585. ROL23 SX2 B4+
  15586. RJ RLR RELEASE ROLLOUT TABLE ENTRY
  15587. SB4 X2 RESTORE B4
  15588. SA1 ROLA FIRST WORD OF ROLLOUT TABLE ENTRY
  15589. BX6 X1
  15590. JP B3 RETURN
  15591.  
  15592. ROL31 RJ DCPT DROP CPU FOR TASK
  15593. EQ TSSC TIME SLICE SUBCP
  15594.  
  15595. ROLA BSS 1 FIRST WORD OF ROLLOUT TABLE ENTRY
  15596. ROLB VFD 6/77B,6/0,30/7777777777B,18/0 *CBCR* MASK WORD
  15597. ROLC VFD 6/0,6/0,1/1,25/0,4/17B,18/0 *CBCR* MASK WORD
  15598. RSV SPACE 4,15
  15599. ** RSV - RESERVE AN ENTRY IN A BIT RESERVATION MAP.
  15600. *
  15601. * ENTRY (A2) = ADDRESS OF BIT MAP.
  15602. * (X2) = FIRST WORD OF BIT MAP.
  15603. * (B6) = NUMBER OF RESERVATION BITS PER WORD.
  15604. *
  15605. * EXIT (A2) = ADDRESS OF WORD IN MAP CONTAINING THE BIT SET.
  15606. * (X0) = 0 IF NO ENTRY AVAILABLE.
  15607. * (B3) = ORDINAL OF RESERVED ENTRY.
  15608. *
  15609. * USES A - 2, 6.
  15610. * X - 0, 2, 3, 6.
  15611. * B - 3, 6.
  15612.  
  15613.  
  15614. RSV SUBR ENTRY/EXIT
  15615.  
  15616. * LOCATE A FREE ENTRY.
  15617.  
  15618. SX3 B6+
  15619. RSV1 NX0,B3 X2
  15620. ZR X0,RSVX IF NO ENTRIES AVAILABLE
  15621. SB6 B6-B3
  15622. NZ B6,RSV2 IF ENTRY AVAILABLE
  15623. SA2 A2+1
  15624. SB6 X3+ RESTORE ENTRIES PER WORD
  15625. EQ RSV1 TRY NEXT WORD
  15626.  
  15627. * RESERVE ENTRY.
  15628.  
  15629. RSV2 SX3 1
  15630. LX3 X3,B6 POSITION TO LOCATED ENTRY
  15631. BX6 -X3*X2 RESERVE ENTRY
  15632. SA6 A2+
  15633. EQ RSVX RETURN
  15634. RTK SPACE 4,10
  15635. ** RTK - ROLLIN TASK WAITING FOR INPUT.
  15636. *
  15637. * ENTRY (X0) = FWA OF COMMUNICATION BLOCK.
  15638. * (A5) = SECOND WORD OF TST ENTRY.
  15639. * (B3) .EQ. 0 IF SEARCH SEQUENCE NUMBER ONLY.
  15640. * .NE. 0 ROLL IN TASK WAITING FOR INPUT.
  15641. * EXIT (X6) = SEQUENCE NUMBER IF (B3) .EQ. 0.
  15642. *
  15643. * USES A - 1, 2, 3, 5, 6, 7.
  15644. * B - 5.
  15645. * X - 1, 2, 3, 5, 6, 7.
  15646. *
  15647. * CALLS EXIT, MSQ, SRO.
  15648.  
  15649.  
  15650. RTK6 MX7 60-TSIWN
  15651. SA1 A5+
  15652. ERRNZ TSIWW-1 IF INPUT WANTED NOT IN WORD 1
  15653. LX7 TSIWS-TSIWN+1
  15654. BX7 X7*X1 CLEAR WANT INPUT FLAG
  15655. SA7 A1+
  15656.  
  15657. RTK SUBR ENTRY/EXIT
  15658. SB5 B0 INITIAL CALL FOR ROUTINE *SRO*
  15659. MX6 12
  15660. SX7 B3+
  15661. SA2 X0+B1 SECOND WORD OF COMMUNICATION BLOCK
  15662. LX6 -30
  15663. SA7 RTKB
  15664. LX2 -24
  15665. BX5 X6*X2 GET TERMINAL ORDINAL
  15666. RTK1 RJ SRO SEARCH ROLLOUT TABLE
  15667. NZ B5,RTK4 IF ROLLOUT ENTRY FOUND
  15668. SA3 RTKA *WAITINP* REQUEST
  15669. TX1 B0,VCPA FWA OF SUBCONTROL POINT TABLE
  15670. MX7 42
  15671. BX6 X3
  15672. RTK2 SA2 X1 TASK RA
  15673. SA3 X2-NUAPL+LRA1 RA REQUEST
  15674. BX1 X7*X3
  15675. SA3 X2-NUAPL+RCLA TERMINAL ORDINAL
  15676. BX2 X1-X6
  15677. BX3 X5-X3
  15678. NZ X2,RTK3 IF NOT *WAITINP*
  15679. *
  15680. NZ X3,RTK3 IF NOT FOR SAME TERMINAL
  15681. SA3 A2+B1 WORD 2 OF SUBCONTROL POINT TABLE
  15682. MX5 1 COMMUNICATION BLOCK AT SUBCONTROL POINT
  15683. BX6 X5+X0
  15684. SA6 A2+CPAHL
  15685. BX7 X7*X3 CLEAR OLD FWA OF COMMUNICATION BLOCK
  15686. SA7 A3
  15687. SX6 TSSC RECALL ADDRESS
  15688. SA6 X2-NUAPL+RCL
  15689. SA3 X2+CB1C GET SEQUENCE NUMBER
  15690. MX7 -CBTSN
  15691. LX3 CBTSN-CBTSS-1
  15692. BX7 -X7*X3
  15693. EQ RTKX RETURN
  15694.  
  15695. RTK3 SA3 A2+2 FWA OF NEXT SUBCONTROL POINT
  15696. SX1 X3+
  15697. NZ X1,RTK2 IF MORE SUBCONTROL POINTS
  15698. RJ EXIT ROLLOUT TABLE ENTRY LOST
  15699. RTK4 SA2 B5
  15700. LX2 59-58
  15701. PL X2,RTK1 IF NOT WAIT FOR INPUT ROLLOUT ENTRY
  15702. LX2 58-59
  15703. BX3 X6*X2
  15704. BX3 X3-X5
  15705. NZ X3,RTK1 IF NO MATCH ON TERMINAL ORDINAL
  15706. SA3 B5+RTWEV GET SEQUENCE NUMBER
  15707. MX5 -RTTSN
  15708. LX3 RTTSN-RTTSS-1
  15709. BX6 -X5*X3 SEQUENCE NUMBER
  15710. SX5 B5
  15711. SA3 RTKB
  15712. ZR X3,RTKX IF SEARCH FOR SEQUENCE NUMBER ONLY
  15713. NG X2,RTK5 IF ROLLOUT COMPLETED
  15714. SA2 B5+2 WORD 2 OF ROLLOUT TABLE ENTRY
  15715. MX1 -6
  15716. LX2 -36 RIGHT JUSTIFY SUBCP NUMBER
  15717. BX1 -X1*X2 SUBCP NUMBER
  15718. LX1 SCPAL
  15719. TA2 X1-CPAL,VCPA SUB CONTROL POINT ADDRESS
  15720. MX7 42
  15721. SA3 A2+B1 WORD 2 OF SUB CONTROL POINT TABLE ENTRY
  15722. MX5 1
  15723. BX6 X5+X0 SET C.B. IS PRESENT AT SUB CONTROL POINT
  15724. BX7 X7*X3 MASK TERMINAL NAME
  15725. SA6 A2+CPAHL
  15726. SA2 X2-NUAPL+ROSC
  15727. SX1 A6
  15728. BX7 X7+X1 COMMUNICATION BLOCK STATUS
  15729. BX6 X5+X2 SET INTERRUPT ROLLOUT FLAG
  15730. SA7 A3
  15731. SA6 A2
  15732. EQ RTK6 CLEAR WAIT INPUT FLAG
  15733.  
  15734. RTK5 SA2 X5 ROLLOUT ENTRY
  15735. MX7 2 CLEAR WAIT INPUT AND TIMED FLAG
  15736. LX7 58-59
  15737. BX7 -X7*X2
  15738. SA7 A2
  15739. RJ MSQ REQUEST ROLLIN OF TASK TO PROCESS INPUT
  15740. EQ RTK6 CLEAR WAIT INPUT FLAG
  15741.  
  15742. RTKA VFD 24/4LSCTP,18/5,18/0
  15743. RTKB BSSZ 1 (B3)
  15744. RTS SPACE 4,15
  15745. ** RTS - RETURN *TAF* STORAGE.
  15746. *
  15747. * RETURN A BLOCK OF STORAGE BY SETTING A BIT IN THE
  15748. * RESERVATION WORD.
  15749. *
  15750. * ENTRY (B3) = FWA OF STORAGE.
  15751. *
  15752. * USES A - 2.
  15753. * X - 0, 1, 2, 3.
  15754. * B - 6.
  15755. *
  15756. * CALLS RLS.
  15757.  
  15758.  
  15759. RTS SUBR ENTRY/EXIT
  15760. SB6 47 NUMBER OF RESERVATION BITS PER WORD
  15761. SX0 B3 ADDRESS OF ENTRY TO RETURN
  15762. SX3 TSB FWA OF TABLE
  15763. SA2 TSBM ADDRESS OF BIT MAP
  15764. SX1 TSBLE LENGTH OF STORAGE ENTRY
  15765. RJ RLS RELEASE AN ENTRY
  15766. EQ RTSX RETURN
  15767. SCB SPACE 4,10
  15768. ** SCB SEARCH COMMUNICATION BLOCKS.
  15769. *
  15770. * ENTRY (B5) = 0 IF INITIAL CALL.
  15771. * A1/X1/B3/B6 = LAST EXIT VALUES IF NOT INITIAL CALL.
  15772. * (X6) = TERMINAL STATUS TABLE ADDRESS COMPARATOR.
  15773. * (X6) = 0 IF NO TST COMPARISONS TO BE MADE.
  15774. *
  15775. * USES A - 1, 2.
  15776. * B - 3, 5, 6.
  15777. * X - 1, 2, 3.
  15778. *
  15779. * EXIT (B5) = ADDRESS OF RESERVED COMMUNICATION BLOCK.
  15780. * (B5) = 0 IF NO MORE RESERVED ENTRIES.
  15781. * (B6) = CURRENT SEARCH POINTER.
  15782. * (B3) = WORD OVERFLOW COUNTER.
  15783. * (A1/X1) = CURRENT C.B. ALLOCATION WORD BEING SEARCHED.
  15784.  
  15785.  
  15786. SCB SUBR
  15787. MX3 1
  15788. NZ B5,SCB1 IF NOT INITIAL CALL
  15789. SB3 B0
  15790. TA1 0,VCBRT
  15791. SB6 B1
  15792. BX1 X3+X1 SEARCHING FOR ZERO BITS
  15793. SCB1 NX1,B5 X1
  15794. SB6 B6+B5 ADVANCE POSITION
  15795. TB5 B6-1,-VNCMB
  15796. NZ X1,SCB2 IF NOT AT END OF WORD
  15797. SA1 A1+B1
  15798. MX3 1
  15799. SB3 B3+47
  15800. SB6 B3 CURRENT POSITION
  15801. BX1 X3+X1
  15802. EQ SCB1 CONTINUE WITH NEXT WORD
  15803.  
  15804. SCB2 ZR B5,SCBX IF END OF SEARCH
  15805. SX3 1
  15806. SX2 CMBL LENGTH OF A C.B.
  15807. LX3 47
  15808. BX1 X1+X3 SET RESERVED BIT SO WE DONT FIND IT AGAIN
  15809. SX3 B6
  15810. IX2 X2*X3
  15811. TB5 X2-CMBL,VCBSA ADDRESS OF COMMUNICATION BLOCK
  15812. ZR X6,SCBX IF NO TST ADDRESS GIVEN
  15813. SA2 B5+B1
  15814. LX2 -18
  15815. SX2 X2 TST ADDRESS FROM COMMUNICATION BLOCK
  15816. BX2 X2-X6
  15817. ZR X2,SCBX IF MATCH ON TERMINAL STATUS TABLE ADDRESS
  15818. EQ SCB1 CHECK NEXT COMMUNICATION BLOCK
  15819. SLB SPACE 4,15
  15820. ** SLB - SEND LAST MESSAGE BLOCK.
  15821. *
  15822. * ENTRY (X7) = RETURN ADDRESS.
  15823. * (B2) = FWA OF TASK SYSTEM AREA.
  15824. *
  15825. * EXIT TO *SND*.
  15826. *
  15827. * USES X - 1, 2, 4, 6, 7.
  15828. * A - 1, 2, 4, 6, 7.
  15829. * B - 3, 5, 6.
  15830. *
  15831. * CALLS SND.
  15832.  
  15833.  
  15834. SLB SUBR ENTRY
  15835. SA7 B2+SCRC+1 SAVE RETURN ADDRESS
  15836. SA1 SLBA GET *SEND* BLOCK HEADER
  15837. BX6 X1
  15838. SA6 B2+NUAPL+SUAC+CBCH
  15839. SB5 B2+NUAPL TASK RA
  15840. SB6 SUAC+CBCH
  15841. SB6 -B6+B1
  15842. SA2 A6 FWA OF REQUEST PARAMETERS
  15843. SX6 B0
  15844. SA6 A6+B1
  15845. SA6 A6+B1
  15846. SA6 A6+B1
  15847. SB3 B0 WORD COUNT
  15848. LX2 30
  15849. SA1 B2+CB2C FWA OF TERMINAL IN TST
  15850. LX1 -18 RIGHT JUSTIFY TST ADDRESS
  15851. SA4 X1
  15852. LX4 59-58
  15853. EQ SND SEND MESSAGE
  15854.  
  15855. SLBA VFD 1/0,1/1,4/0,1/1,5/0,18/SUAC+CBCH,18/0
  15856. SRL SPACE 4,10
  15857. ** SRL - SCAN ROLLOUT LIST FOR TIMED OUT ENTRIES.
  15858.  
  15859.  
  15860. SRL SUBR ENTRY/EXIT
  15861. SRL0 SB5 B0+ INITIALIZE,SEARCH
  15862. SRL1 RJ SRO GET NEXT RESERVED ROLLOUT TABLE ENTRY
  15863. ZR B5,SRLX IF END OF SEARCH
  15864. SA5 B5
  15865. MX4 5
  15866. PL X5,SRL1 IF ROLLOUT NOT COMPLETE
  15867. LX4 -1
  15868. BX2 X4*X5
  15869. ZR X2,SRL1 IF NO SPECIAL PROCESSING REQUIRED
  15870. LX2 2
  15871. MX7 RTTLN
  15872. NG X2,SRL2 IF TIMED ROLLOUT
  15873. JP SRL1 CONTINUE SEARCH
  15874.  
  15875. * CHECKED TIMED ROLLOUT ENTRIES.
  15876.  
  15877. SRL2 SA4 ITIME CURRENT TIME
  15878. LX4 -6
  15879. LX7 -6
  15880. BX4 X7*X4 TIME IN SECONDS
  15881. BX3 X7*X5 ROLLIN TIME
  15882. MX6 -12
  15883. IX4 X3-X4
  15884. LX5 -18 GET C.B. INDEX
  15885. PL X4,SRL1 IF TIME NOT EXPIRED
  15886. LX2 -1
  15887. BX4 -X6*X5
  15888. NG X2,SRL3 IF WAIT ON INPUT TIME OUT
  15889. SRL2.1 BSS 0
  15890.  
  15891. * REQUEST ROLLIN OF TIMED OUT TASK.
  15892.  
  15893. TX0 X4,VCBSA COMMUNICATION BLOCK ADDRESS
  15894. SX5 A5 ROLLOUT TABLE ADDRESS
  15895. RJ MSQ PLACE TASK IN SCHEDULING QUEUE
  15896. SA1 X5 CLEAR TIME AND WAIT INPUT FLAGS
  15897. MX7 2
  15898. LX7 -1
  15899. BX7 -X7*X1
  15900. SA7 A1
  15901. BX6 X6-X6
  15902. SA6 X5+RTWEV CLEAR EVENT IN ROLLOUT
  15903. JP SRL0
  15904.  
  15905. * REQUEST ROLLIN OF WAIT ON INPUT TASK.
  15906.  
  15907. SRL3 SX7 1
  15908. LX4 18 TERMINAL ORDINAL
  15909. BX7 X4+X7 FORMAT A FAKE TRANSACTION INPUT WORD
  15910. SX6 B5 ROLLOUT TABLE ADDRESS
  15911. SA6 SRLC SAVE ROLLOUT TABLE ADDRESS
  15912. MX6 1
  15913. BX7 X6+X7
  15914. SA7 SRLA
  15915. SA4 SRLA
  15916. RJ RDCB FORCE ROLLIN OF TASK
  15917. ZR X0,SRLX IF NO COMMUNICATION BLOCK AVAILABLE
  15918. SA1 SRLC GET ROLLOUT TABLE ADDRESS
  15919. SA2 X1 FWA OF ROLLOUT TABLE ENTRY
  15920. MX7 -59 CLEAR TIME EVENT FLAG
  15921. LX7 57-59
  15922. BX7 -X7*X2
  15923. SA7 A2 UPDATE FWA OF ROLLOUT TABLE ENTRY
  15924. SX7 1
  15925. SA7 X0+CMBHL+CMBRL SET FLAG FOR USER
  15926. EQ SRLX RETURN
  15927.  
  15928. SRLA BSS 1
  15929. SRLB BSS 1 DELAY COUNT
  15930. SRLC BSS 1 ROLLOUT TABLE ADDRESS
  15931. SPACE 4,20
  15932. ** STD - SEARCH TASK/TRANSACTION DIRECTORY.
  15933. *
  15934. * PERFORM A BINARY SEARCH OF A TASK OR TRANSACTION DIRECTORY
  15935. * FOR THE SPECIFIED TASK OR TRANSACTION NAME.
  15936. *
  15937. * ENTRY (X2) = LEFT JUSTIFIED TASK/TRANSACTION NAME.
  15938. * (B3) = LENGTH OF ENTRY.
  15939. * (B5) = START OF DIRECTORY.
  15940. * (B6) = END OF DIRECTORY.
  15941. *
  15942. * EXIT (A1) = FWA OF ENTRY IF FOUND.
  15943. * (X1) = 0 IF ENTRY FOUND.
  15944. * (X1) .NE. 0 IF ENTRY NOT IN DIRECTORY.
  15945. * (X4) = RESTORED.
  15946. * (B7) = RESTORED.
  15947. *
  15948. * USES A - 1, 3, 4, 7.
  15949. * X - 0, 1, 3, 4, 7.
  15950. * B - 5, 6, 7.
  15951.  
  15952.  
  15953. STD SUBR ENTRY/EXIT
  15954. SX1 STD
  15955. GT B5,B6,STDX IF SEARCH NOT NECESSARY
  15956. SX7 B7
  15957. SA7 STDB SAVE (B7)
  15958. BX7 X4
  15959. BX0 X2
  15960. SA7 STDC SAVE (X4)
  15961. LX0 42 SHIFT SO NO SIGN BIT
  15962. SX7 B6+B3 LWA+1 OF BASE TLD
  15963. SA7 STDA
  15964. SB7 59
  15965. MX7 42 MASK FOR TASKS/TRANSACTIONS
  15966. SX3 1
  15967. EQ STD2 ENTER LOOP
  15968.  
  15969. STD1 SB5 A1+B3 SET NEW LOW LIMIT
  15970. GT B5,B6,STD5 IF SEARCH DONE IN BASE
  15971. STD2 ZR X3,STD5 IF END OF BASE DIRECTORY
  15972. SX3 B6-B5 FIND MIDDLE
  15973. SX1 B3
  15974. LX1 X1,B7 59-0
  15975. PL X1,STD3 IF EVEN NUMBER OF WORDS PER ENTRY
  15976. LX4 X3,B7 59-0
  15977. PL X4,STD4 IF ODD NUMBER OF ENTRIES REMAIN
  15978. SX3 X3+B3
  15979. EQ STD4 CONTINUE PROCESSING
  15980.  
  15981. STD3 LX4 X3,-B1 DIVIDE BY TWO
  15982. LX4 X4,B7 59-0
  15983. PL X4,STD4 IF ODD NUMBER OF ENTRIES REMAIN
  15984. SX3 X3+B3
  15985. STD4 AX3 1
  15986. SA1 B5+X3 READ AN ENTRY
  15987. BX4 X7*X1
  15988. LX4 42 SHIFT SO NO SIGN BIT
  15989. IX1 X4-X0
  15990. ZR X1,STD7 IF FOUND
  15991. NG X1,STD1 IF TOO LOW IN TABLE
  15992. SB6 A1-B3 SET NEW HIGH LIMIT
  15993. GE B6,B5,STD2 IF FIND NEXT ENTRY
  15994.  
  15995. * ENTRIES ADDED ON A NONCREATION RUN ARE PLACED SEQUENTIALLY
  15996. * AT THE END OF THE TLD.
  15997.  
  15998. STD5 SX3 B3-TLDLE
  15999. NZ X3,STD7 IF TRANSACTION SEARCH
  16000. SA3 STDA LWA+1 OF BASE TLD
  16001. ZR X3,STD7 IF END OF DIRECTORY
  16002. SB6 B3-TLDLE
  16003. NZ B6,STD7 IF TRANSACTION SEARCH
  16004. SB6 X3+
  16005. SB5 TLDLE LENGTH OF TLD
  16006. STD6 SA3 B6
  16007. SB6 B6+B5
  16008. ZR X3,STD7 IF END OF TLD
  16009. BX3 X7*X3
  16010. LX3 42 SHIFT SO NO SIGN BIT
  16011. IX3 X3-X0
  16012. NZ X3,STD6 IF TASK NAME DID NOT MATCH
  16013. SA1 A3
  16014. BX1 X1-X1
  16015.  
  16016. * SEARCH COMPLETE.
  16017.  
  16018. STD7 SA3 STDB RESTORE (B7)
  16019. SB7 X3+
  16020. SA4 STDC RESTORE (X4)
  16021. EQ STDX RETURN
  16022.  
  16023. STDA BSS 1 LWA+1 OF BASE TLD
  16024. STDB BSS 1 (B7)
  16025. STDC BSS 1 (X4)
  16026. STST SPACE 4,15
  16027. ** STST SEARCH TERMINAL STATUS TABLE FOR TERMINAL NAME
  16028. *
  16029. * ENTRY (X4) = LEFT JUSTIFIED TERMINAL NAME
  16030. *
  16031. * EXIT (X3) = TST ORDINAL OF TERMINAL
  16032. * (X3) = 0 IF TERMINAL NAME NOT FOUND
  16033. * (A3) = TST ADDRESS + 1 OF TERMINAL
  16034. *
  16035. * USES X - 3, 4, 7
  16036. * A - 3
  16037. * B - 4, 6
  16038.  
  16039.  
  16040. STST SUBR ENTRY/EXIT
  16041. TB4 TSTLLE+1,VTST START OF *TST*
  16042. TB6 2,VTST,LWA END OF TST
  16043. MX7 42
  16044. BX4 X7*X4
  16045. STST1 EQ B4,B6,STST2 TERMINAL NAME NOT IN TST
  16046. SA3 B4+
  16047. SB4 B4+TSTLLE
  16048. BX3 X7*X3 TERMINAL NAME
  16049. IX3 X3-X4
  16050. NZ X3,STST1 CHECK ANOTHER ENTRY
  16051. SX4 TSTLLE
  16052. TX3 A3-1,-VTST TST BIAS
  16053. PX4 X4
  16054. PX3 X3 DIVIDE TO GET TERMINAL NUMBER
  16055. NX4 X4
  16056. NX3 X3
  16057. FX4 X3/X4
  16058. UX4 X4,B6
  16059. LX3 X4,B6 TERMINAL NUMBER
  16060. EQ STSTX RETURN
  16061.  
  16062. STST2 BX3 X3-X3
  16063. EQ STSTX RETURN
  16064. TRCL SPACE 4,15
  16065. ** TRCL - TASK RECALL.
  16066. *
  16067. * PLACE A TASK INTO A TIME-DELAY RECALL. AFTER AN
  16068. * INSTALLATION-DEFINED TIME PERIOD, ALL TASKS IN RECALL
  16069. * ARE ACTIVATED.
  16070. *
  16071. * ENTRY (X7) = RETURN ADDRESS AFTER RECALL.
  16072. * (B2) = FWA OF TASK SYSTEM AREA.
  16073. * (B7) = FWA OF TASK SUBCP TABLE ENTRY.
  16074. *
  16075. * EXIT TO *TSSC* AFTER PROCESSING.
  16076. *
  16077. * CALLS DCPT.
  16078.  
  16079.  
  16080. TRCL2 SA7 B2+RCL SET RETURN ADDRESS
  16081.  
  16082. TRCL MX0 1
  16083. TX4 B7+CPAL,-VCPA
  16084. SX6 B1
  16085. LX0 -12
  16086. SA1 RCR RECALL REQUEST WORD
  16087. LX6 -4
  16088. SA2 B7+B1 STATUS WORD 2 OF SUB CP AREA
  16089. AX4 SCPAL
  16090. SB5 X4
  16091. BX6 X6+X2 SET TASK RECALL REQUEST BIT
  16092. AX4 X0,B5
  16093. IX7 X1+X4
  16094. SA6 B7+B1
  16095. SA7 A1 SET TASK RECALL REQUEST WORD
  16096. SA1 STAT15 NUMBER OF TIMES TASK IN RECALL
  16097. SX7 B1
  16098. IX7 X1+X7
  16099. SA7 A1
  16100. RJ DCPT DROP CPU FOR TASK
  16101. EQ TSSC TIME SLICE SUBCP
  16102.  
  16103.  
  16104. * JUMP TO RECALL PROCESSING ROUTINE
  16105.  
  16106. TRCL1 SA1 B2+RCL
  16107. MX3 1
  16108. SA2 B7+B1 STATUS WORD 2
  16109. LX3 -3
  16110. SB3 X1
  16111. BX7 -X3*X2 CLEAR RECALL BIT
  16112. SA7 A2
  16113. JP B3 EXIT TO RECALL PROCESSING ROUTINE
  16114. TRN SPACE 4,28
  16115. ** TRN - GENERATE A SYSTEM ORIGIN TRANSACTION.
  16116. *
  16117. * ENTRY (X4) = TASK NAME TO SCHEDULE.
  16118. * (X5) = MESSAGE CODE.
  16119. * (X7) = DATA BASE OF TASK LIBRARY.
  16120. * 0, IF SYSTEM TASK LIBRARY REQUIRED.
  16121. * (B3) = FWA OF BUFFER INPUT, ZERO IF NO INPUT.
  16122. * FORM IS - 12/4001B,12/,18/TO,18/WC.
  16123. * TO = TERMINAL ORDINAL.
  16124. * WC = WORD COUNT.
  16125. *
  16126. * EXIT (X0) = 0 IF TASK NOT SCHEDULED.
  16127. * = FWA OF COMMUNICATION BLOCK.
  16128. * (X7) = 0, IF NO COMMUNICATION BLOCK.
  16129. * 1, IF TASK NOT FOUND.
  16130. * 2, IF TASK NOT SCHEDULED.
  16131. *
  16132. * USES X - 0, 1, 2, 3, 4, 6, 7.
  16133. * A - 1, 4, 6, 7.
  16134. * B - 3.
  16135. *
  16136. * CALLS ETSQ, FFCB, LTT, RDCB, RLC.
  16137. *
  16138. * MACROS MESSAGE.
  16139.  
  16140.  
  16141. TRN SUBR ENTRY/EXIT
  16142. SA7 TRNB DATA BASE LIBRARY
  16143. ZR B3,TRN1 IF NO BUFFER INPUT
  16144. BX7 X4 SAVE TASK NAME
  16145. SA4 B3+ MESSAGE BUFFER FWA
  16146. SA7 TRNA
  16147. RJ RDCB READ COMMUNICATIONS BLOCK
  16148. ZR X0,TRNX IF NO C.B. AVAILABLE
  16149. SX2 77B READ AND UPDATE SECURITY
  16150. SA1 X0+B1
  16151. LX2 41-5
  16152. BX6 X1+X2
  16153. SA6 A1
  16154. SA4 TRNA TASK NAME
  16155. EQ TRN2 SCHEDULE TASK
  16156.  
  16157. TRN1 SX0 1 SYSTEM REQUEST
  16158. RJ FFCB GET A COMMUNICATION BLOCK
  16159. SX7 B0+ NO COMMUNICATION BLOCK
  16160. ZR X0,TRNX IF NO COMMUNICATIONS BLOCK AVAILABLE
  16161.  
  16162. * FORMAT COMMUNICATIONS BLOCK.
  16163.  
  16164. BX1 X1-X1
  16165. RJ ASN GET SEQUENCE NUMBER
  16166. SX7 DCPPR SET DEFAULT CPU PRIORITY
  16167. LX7 59-11
  16168. LX6 18
  16169. BX7 X6+X7 ADD SEQUENCE NUMBER
  16170. SX6 X0 COMMUNICATION BLOCK ADDRESS
  16171. SX2 77B READ SECURITY + UPDATE SECURITY
  16172. SA7 X0
  16173. LX2 41-5
  16174. BX6 X6+X2
  16175. SA6 X0+B1 C.B. HEADER WORD 2
  16176. SX7 B1 MESSAGE WORD COUNT OF ONE
  16177. SA7 X0+CMBHL+1 SECOND WORD OF C.B. USER HEADER
  16178. SX6 2RSY DATA BASE
  16179. LX6 -12
  16180. SA6 A7-B1 FIRST WORD OF C.B. USER HEADER
  16181. SX7 X5+ MESSAGE CODE
  16182. SA7 A7+B1
  16183. SA1 PDATE
  16184. BX7 X1
  16185. SA7 X0+CMBHL+TIMD-TRSQ
  16186.  
  16187. * SCHEDULE TASK.
  16188.  
  16189. TRN2 BX2 X4 SEARCH TASK LIBRARY DIRECTORY FOR NAME
  16190. MX7 1
  16191. SA3 X0+CMBHL+1 SECOND WORD OF C.B. USER AREA
  16192. LX7 17-59
  16193. BX6 X3+X7
  16194. SA6 A3
  16195. SA1 X0+CBSOW SYSTEM ORIGIN IN HEADER
  16196. LX7 CBSOS-59-17+59
  16197. BX7 X1+X7 SET SYSTEM ORIGIN IN HEADER
  16198. SA7 A1
  16199. SX6 B0 NO TASK LIST
  16200. SA3 TRNB DATA BASE LIBRARY FOR TASK
  16201. SB4 B0 DETECT *OFF* STATUS
  16202. SB5 B0 TASK SEARCH
  16203. RJ LTT LOCATE TASK
  16204. ZR X6,TRN4 IF TASK NOT IN DIRECTORY
  16205. SA6 X0+2 TASK TO SCHEDULE LIST IN C.B.
  16206. SB3 TRNX ALTERNATE RETURN ADDRESS
  16207. RJ ETSQ SCHEDULE TASK
  16208. TRN3 NZ X6,TRNX IF SCHEDULED
  16209. SX2 X0 RETURN C.B.
  16210. BX0 X0-X0
  16211. SX7 2 SET TASK NOT SCHEDULED
  16212. RJ RLC RELEASE COMMUNICATION BLOCK
  16213. EQ TRNX RETURN
  16214.  
  16215. TRN4 SX2 X0+ FWA OF COMMUNICATION BLOCK
  16216. SX7 B1 SET TASK NOT FOUND
  16217. SX0 B0 TASK NOT SCHEDULED
  16218. RJ RLC RELEASE COMMUNICATION BLOCK
  16219. EQ TRNX RETURN
  16220.  
  16221. TRNA BSSZ 1 TEMP
  16222. TRNB BSS 1 DATA BASE
  16223. TXT SPACE 4,70
  16224. ** TXT - TRACE XJP-S OF A TASK.
  16225. *
  16226. * ON RETURN FROM SELECTED SUBCP ACTIVATIONS, THE CONTENTS OF
  16227. * SEVERAL REGISTERS WHICH CONTAIN INFORMATION CONCERNING THE
  16228. * TASK ARE SAVED IN A CIRCULAR BUFFER. THIS INFORMATION CAN
  16229. * BE USEFUL IN DEBUGGING A PROBLEM IF *TAF* ABORTS AS A
  16230. * RESULT OF A TASK SYSTEM REQUEST CALL.
  16231. *
  16232. * ENTRY (B4) = ERROR FLAG RETURNED FROM SUBCP ACTIVATION.
  16233. * (B2) = START OF SYSTEM AREA PRECEDING RA OF THE TASK.
  16234. * (B7) = ADDRESS OF SUBCP TABLE.
  16235. * (X5) = CONTENTS OF SYSTEM REQUEST IN THE TASK FL.
  16236. * (A5) = SYSTEM REQUEST.
  16237. * (B3) = RA.
  16238. *
  16239. * EXIT ENTRY CONDITIONS PRESERVED.
  16240. * TASK TRACE PACKET ENTERED INTO CIRCULAR BUFFER.
  16241. *
  16242. * USES X - 1, 2, 3, 6.
  16243. * A - 1, 2, 6.
  16244. * B - 5, 6.
  16245. *
  16246. * NOTES THE CONTENTS OF A TASK TRACE PACKET IS
  16247. *
  16248. * WORD 1 - 12/TEF, 12/TID, 18/(B2), 18/(B7)
  16249. * WHERE TEF = 2000B+ERROR FLAG RETURNED FROM
  16250. * SUBCP ACTIVATION.
  16251. * TID = TASK TRACE PACKET IDENTIFIER (SET
  16252. * TO ZERO).
  16253. * (B2) = START OF SYSTEM AREA PRECEDING
  16254. * THE RA OF THE TASK.
  16255. * (B7) = ADDRESS OF SUBCP TABLE.
  16256. *
  16257. * WORD 2 - CONTENTS OF SYSTEM REQUEST IN TASK FL.
  16258. *
  16259. * WORD 3 - FIRST WORD OF C.B. KEPT IN THE SYSTEM AREA
  16260. * PRECEDING THE RA OF THE TASK.
  16261. *
  16262. * WORD 4 - THIRD WORD OF SUBCP TABLE.
  16263. * (SEE DEFINITION OF SUBCP TABLE IN THE
  16264. * *TABLES* SECTION.)
  16265. *
  16266. *
  16267. * THE FOLLOWING ARE PROVIDED AS GUIDELINES SHOULD
  16268. * AN INSTALLATION WISH TO MAKE MODIFICATIONS TO
  16269. * *TXT*. *TXT* IS BASED UPON THESE GUIDELINES AND
  16270. * NOT FOLLOWING THEM MAY CAUSE *TXT* NOT TO WORK
  16271. * PROPERLY.
  16272. * 1. SINCE *TXT* IS EXECUTED FREQUENTLY, THE CODE
  16273. * SHOULD BE SIMPLE AND FAST, ESSENTIALLY
  16274. * STRAIGHTLINE.
  16275. * 2. THE SIZE OF THE BUFFER USED TO STORE TRACE
  16276. * PACKETS, *PBUFL*, MUST BE DEFINED AS THE TOTAL
  16277. * NUMBER OF PACKETS THAT CAN BE STORED IN THE
  16278. * BUFFER AT ONCE MULTIPLIED BY *ITTPL*, THE PACKET
  16279. * SIZE.
  16280. * 3. IF THE PACKET LENGTH IS CHANGED, *ITTPL* MUST
  16281. * BE REDEFINED. ONLY LENGTHS OF FOUR OR MORE
  16282. * WORDS ARE ACCEPTABLE.
  16283. *
  16284. * IF TRACE PACKETS ARE PRODUCED FOR PURPOSES OTHER
  16285. * THAN TASK XJP TRACE, *TXT* CAN BE USED AS A GUIDE
  16286. * FOR THE INSTALLATION CODE. THE FOLLOWING SHOULD
  16287. * BE NOTED IN ADDITION TO THE ABOVE GUIDELINES.
  16288. * 1. IN ORDER TO IDENTIFY THE TYPE OF EVENT BEING
  16289. * TRACED, A UNIQUE *TID* SHOULD BE ASSIGNED FOR
  16290. * EACH EVENT AND BE STORED INTO BITS 47 - 36
  16291. * OF THE FIRST WORD OF THE PACKET.
  16292. * 2. IN ORDER TO INSURE THE CIRCULARITY OF THE BUFFER,
  16293. * THE *IN* POINTER OF THE *INTRACE* FET SHOULD BE
  16294. * UPDATED IN THE SAME MANNER AS *TXT* UPDATES IT.
  16295. * *TXT* CALCULATES THE VALUE OF THE *IN* POINTER FOR
  16296. * STORING THE NEXT PACKET BY TAKING THE VALUE OF THE
  16297. * *IN* POINTER FOR STORING THE FIRST WORD OF THE
  16298. * CURRENT PACKET AND ADDING *ITTPL* TO IT. IF THE
  16299. * VALUE FOR THE *IN* POINTER IS GREATER THAN OR
  16300. * EQUAL TO *LIMIT*, SET THE *IN* POINTER EQUAL TO
  16301. * *FIRST*.
  16302.  
  16303.  
  16304. TXT SUBR ENTRY/EXIT
  16305.  
  16306. * SET UP AND STORE THE CONTENTS OF ONE TRACE PACKET.
  16307.  
  16308. SX3 B2+ GET START OF SYSTEM AREA PRIOR TO TASK RA
  16309. SX2 B7 GET ADDRESS OF SUBCP TABLE
  16310. LX3 18
  16311. SA1 INT+2 GET *IN* POINTER FROM FET
  16312. BX2 X2+X3
  16313. PX6 X2,B4
  16314. SA6 X1+ STORE FIRST WORD OF PACKET
  16315. BX6 X5 STORE (SYSTEM REQUEST) OF THE TASK FL
  16316. SA6 A6+B1
  16317. SA2 B2+CB1C STORE FIRST WORD OF C.B.
  16318. BX6 X2
  16319. SA6 A6+B1
  16320. SA2 B7+2 STORE THIRD WORD OF SUBCP TABLE
  16321. BX6 X2
  16322. SA6 A6+B1
  16323.  
  16324. * DETERMINE THE VALUE OF THE *IN* POINTER FOR STORING THE
  16325. * NEXT PACKET INTO THE TRACE BUFFER.
  16326.  
  16327. SA2 A1+2 GET VALUE OF *LIMIT* FROM FET
  16328. SB5 X1+ITTPL GET NEXT VALUE FOR *IN* POINTER
  16329. SB6 X2+
  16330. LT B5,B6,TXT1 IF *IN* .LT. *LIMIT*
  16331. SA2 INT+1 GET VALUE OF *FIRST* FROM FET
  16332. SB5 X2+
  16333. TXT1 SX6 B5 STORE *IN* POINTER INTO FET
  16334. SA6 A1
  16335. EQ TXTX RETURN
  16336. VTO SPACE 4
  16337. ** VTO - VERIFY TASK ORIGIN.
  16338. *
  16339. * DETERMINE IF A TASK IS FROM THE SYSTEM TASK LIBRARY.
  16340. *
  16341. * EXIT (X6) .GE.0, IF FROM A SYSTEM TASK LIBRARY.
  16342. * (X6) .LT. 0, IF FROM A USER TASK LIBRARY.
  16343. *
  16344. * USES A - 2.
  16345. * X - 2, 6.
  16346.  
  16347.  
  16348. VTO SUBR ENTRY/EXIT
  16349. SA2 B7+2
  16350. MX6 12
  16351. BX6 X6*X2 DIRECTORY INDEX FOR TASK
  16352. TA2 -4,VTLD LENGTH OF SYSTEM TASK DIRECTORY
  16353. SX2 X2-4
  16354. LX6 12
  16355. IX6 X2-X6
  16356. EQ VTOX RETURN
  16357. VUP SPACE 4,20
  16358. ** VUP - VALIDATE USER PARAMETERS.
  16359. *
  16360. * ENTRY (X1) = FL.
  16361. * (X5) = RA REQUEST.
  16362. * (B3) = MAXIMUM NUMBER OF PARAMETERS ALLOWED.
  16363. * (B5) = SUBCP RA.
  16364. * (B6) = REQUIRED NUMBER OF PARAMETERS.
  16365. *
  16366. * EXIT (X6) = 0, IF NO ERRORS.
  16367. * 1, IF TOO MANY PARAMETERS OR
  16368. * IF REQUIRED PARAMETERS NOT PRESENT, OR
  16369. * IF PARAMETERS OUTSIDE RA AND FL.
  16370. * (B2) = NUMBER OF PARAMETERS PRESENT.
  16371. *
  16372. * USES X- 2, 3, 6, 7.
  16373. * A - 2.
  16374. * B - 2, 4.
  16375.  
  16376.  
  16377. VUP SUBR ENTRY/EXIT
  16378. SB2 B0 COUNT OF PARAMETERS PRESENT
  16379. SB4 X5 ADDRESS OF PARAMETERS
  16380. SB4 -B4
  16381. SX6 X1+B4
  16382. NG X6,VUP3 IF PARAMETER FWA GREATER THAN FL
  16383. PL B4,VUP3 IF PARAMETERS FWA LESS THAN RA
  16384. SX6 B0+ NO ERRORS
  16385. SX7 X5+B5 PARAMETER ADDRESS RELATIVE TO *TAF*
  16386. VUP1 GT B2,B3,VUP3 IF TOO MANY PARAMETETERS
  16387. SA2 X7+B2 PARAMETER ADDRESS
  16388. SB4 X2
  16389. ZR X2,VUP2 IF END OF PARAMETERS
  16390. SB4 -B4
  16391. SX3 X1+B4
  16392. NG X3,VUP3 IF PARAMETER .GE. FL
  16393. PL B4,VUP3 IF PARAMETER LESS THAN RA
  16394. SB2 B2+B1
  16395. EQ VUP1 GET NEXT PARAMETER
  16396.  
  16397. VUP2 GE B2,B6,VUPX IF REQUIRED PARAMETERS PRESENT, RETURN
  16398. VUP3 SX6 B1 INCORRECT PARAMETER LIST
  16399. EQ VUPX RETURN
  16400. SEG
  16401. TITLE TOTAL INTERFACE ROUTINES.
  16402. EOQ SPACE 4,10
  16403. ** EOQ - ENTER OUTPUT QUEUE.
  16404. *
  16405. * PLACE AN ENTRY INTO THE TOTAL OUTPUT QUEUE.
  16406. *
  16407. * ENTRY (X6) = QUEUE ENTRY.
  16408. *
  16409. * EXIT (X7) .NE. 0 - ENTRY IN QUEUE.
  16410. * (X7) = 0 - QUEUE IS FULL.
  16411. *
  16412. * USES B - 1, 5.
  16413. *
  16414. * CALLS PDIF.
  16415.  
  16416.  
  16417. EOQ SUBR ENTRY/EXIT
  16418. SB5 TDO TOTAL OUTPUT QUEUE FET
  16419. SB1 1
  16420. RJ PDIF MAKE QUEUE ENTRY
  16421. EQ EOQX RETURN
  16422. FAR SPACE 4,10
  16423. ** FAR - FILE ATTACH ROUTINE.
  16424. *
  16425. * ATTACH FILES FOR TOTAL.
  16426. * THE EDT IS SEARCHED FOR THE FILE NAME AND THE ATTACH
  16427. * INFORMATION IS PLACED INTO THE FET.
  16428. * IF THE FILE DOES NOT EXIST OR IS NOT IN THE EDT LIST
  16429. * AN ERROR STATUS IS RETURNED. IF THE FILE IS XXTLOG AND DOES
  16430. * NOT EXIST IT IS DEFINED. THE XXTLOG FILE IS POSITIONED
  16431. * AT EOI.
  16432. *
  16433. * ENTRY (X2) = ADDRESS OF FILE TO ATTACH.
  16434. *
  16435. * EXIT (X6) = 0 ATTACH OK.
  16436. * (X6) .NE. 0 IS ERROR CODE.
  16437. *
  16438. * USES X - 0, 1, 2, 3, 4, 5, 6.
  16439. * A - 1, 3, 4, 6.
  16440. * B - 1, 4, 7.
  16441. *
  16442. * CALLS PFM=.
  16443.  
  16444.  
  16445. FAR5 SB7 X6+ SAVE ERROR CODE
  16446. SA1 VUSN TAF USER NAME
  16447. SX6 TRUI TAF USER INDEX
  16448. MX0 42
  16449. BX6 X1+X6
  16450. SA6 FARC+2
  16451. SA1 VFMN TAF FAMILY NAME
  16452. SX2 13B FLAGS FOR *SETPFP*
  16453. BX6 X0*X1
  16454. BX6 X2+X6
  16455. SA6 FARC
  16456. SETPFP FARC SET PERMANENT FILE PARAMETERS
  16457. SX6 B7+ RESTORE ERROR CODE FOR TOTAL
  16458.  
  16459. FAR SUBR ENTRY/EXIT
  16460. SA1 X2 READ FILE NAME TO ATTACH
  16461. SB1 1
  16462. MX0 42
  16463. SX6 B1
  16464. BX2 X0*X1
  16465. MX0 12
  16466. BX6 X2+X6
  16467. SA6 FARB STORE IN FET
  16468.  
  16469. * FIND THE USER INDEX FOR THIS DATA BASE.
  16470.  
  16471. TA3 0,VEDT FIRST EDT
  16472. BX4 X0*X1 DATA BASE NAME
  16473. LX3 -18
  16474. SB4 X3 NUMBER OF EDTS
  16475. LX3 18
  16476. FAR1 BX6 X0*X3 EDT DATA BASE NAME
  16477. BX6 X6-X4
  16478. ZR X6,FAR2 IF CORRECT EDT
  16479. SB4 B4-B1
  16480. SA3 X3 NEXT EDT
  16481. NZ B4,FAR1 IF MORE EDTS
  16482. EQ FARX RETURN UNABLE TO FIND EDT
  16483.  
  16484. * CORRECT EDT FOUND.
  16485.  
  16486. FAR2 SA5 A3+2 USER INDEX WORD
  16487. SA4 A3+1 GET JOURNAL FILE COUNT
  16488. SX6 JFETL
  16489. AX4 54 JOURNAL FILE COUNT
  16490. IX6 X4*X6 LENGTH OF JOURNAL FILE FETS
  16491. SB4 X6+HDRL OFFSET OF FIRST FILE NAME IN EDT
  16492.  
  16493. * FIND THE PRIVATE PACK INFORMATION FOR THE FILE TO ATTACH.
  16494.  
  16495. SA4 B4+A3 FIRST FILE NAME
  16496. FAR3 ZR X4,FARX IF FILE NAME NOT FOUND
  16497. BX6 X4-X2
  16498. SA4 A4+TFEN NEXT FILE NAME
  16499. NZ X6,FAR3 IF FILE NOT FOUND
  16500. SA1 A4-B1 GET PACKNAME AND UNIT FOR FILE
  16501. MX7 48
  16502. LX7 6
  16503. BX6 X7*X1
  16504. SA6 FARB+CFPK PACKNAME AND UNIT INTO FET
  16505. LX1 -6
  16506. MX4 -12
  16507. BX4 -X4*X1 DEVICE TYPE
  16508. SA2 FARB+1
  16509. MX7 -48
  16510. LX4 -12
  16511. BX2 -X7*X2
  16512. IX6 X2+X4
  16513. SA6 A2 DEVICE TYPE TO FET
  16514. BX6 X5
  16515. SA6 FARC+2
  16516. SA1 A5+4 FAMILY NAME
  16517. SX2 13B SET FLAGS FOR *SETPFP*
  16518. BX6 X1+X2
  16519. SA6 FARC
  16520. SETPFP FARC SET PERMANENT FILE PARAMETERS
  16521. STATUS FARB CHECK IF FILE EXISTS
  16522. SA1 FARB
  16523. MX6 11
  16524. LX1 59-11
  16525. BX3 X6*X1
  16526. BX6 X6-X6
  16527. NZ X3,FAR5 IF FILE EXISTS
  16528. ATTACH FARB,,,,M
  16529. SA3 X2 CHECK FOR ATTACH ERROR
  16530. MX7 24
  16531.  
  16532. * CHECK FOR THE FILE BEING XXTLOG.
  16533.  
  16534. SA4 FARA
  16535. LX3 12
  16536. MX0 -6
  16537. BX7 X7*X3
  16538. LX3 -12-10
  16539. BX4 X7-X4
  16540. BX6 -X0*X3 ERROR CODE
  16541. NZ X4,FAR5 IF NOT XXTLOG FILE
  16542.  
  16543. * ATTACH XXTLOG FILE IN WRITE MODE.
  16544.  
  16545. ATTACH FARB,,,,W
  16546. SA3 FARB
  16547. LX3 -10
  16548. BX6 -X0*X3
  16549. NZ X6,FAR4 IF ERROR ON ATTACH
  16550. SKIPEI FARB,R POSITION XXTLOG AT EOI
  16551. BX6 X6-X6 INDICATE NO ERRORS
  16552. EQ FAR5
  16553.  
  16554. FAR4 SX7 X6-2
  16555. NZ X7,FAR5 IF NOT *FILE NOT FOUND*
  16556. DEFINE FARB
  16557. SA4 FARB GET STATUS FROM DEFINE OF XXTLOG
  16558. AX4 10
  16559. BX6 -X0*X4
  16560. EQ FAR5
  16561.  
  16562. FARA VFD 60/0LTLOG
  16563. FARB FILEB OBUF,OBUFL,FET=13,EPR
  16564.  
  16565. * CALL BLOCK FOR *SETPFP*.
  16566.  
  16567. FARC CON 0 42/ FAMILY NAME, 14/ , 4/ FLAGS
  16568. CON 0 42/ PACK NAME, 18/ PACK TYPE
  16569. CON 0 42/ USER NAME, 18/ USER INDEX
  16570. GRA SPACE 4,10
  16571. ** GRA - GET REFERENCE ADDRESS.
  16572. *
  16573. * RETURN THE RA, FL AND DATA BASE ID OF THE SUB CONTROL POINT.
  16574. *
  16575. * ENTRY (X1) = SUB CONTROL POINT NUMBER.
  16576. * (X6) = 1 IF CALLED BY *TOTAL*.
  16577. * 0 OTHERWISE.
  16578. *
  16579. * EXIT (X2) = 42/USER NAME,18/0.
  16580. * (X4) = 42/TASK NAME,18/0.
  16581. * (X5) = DATA BASE ID - RIGHT JUSTIFIED.
  16582. * (X6) = RA OF SUB CONTROL POINT.
  16583. * (X7) = FL OF SUB CONTROL POINT.
  16584. *
  16585. * USES X - 2, 4, 5, 6, 7.
  16586. * A - 4, 5.
  16587.  
  16588.  
  16589. GRA SUBR ENTRY/EXIT
  16590. SX2 IFL= FIELD LENGTH OF TRANEX1
  16591. SX4 B0+
  16592. BX5 X5-X5
  16593. LX1 SCPAL
  16594. ZR X1,GRA1 IF SUB CP 0 (TRANEX)
  16595. TA4 X1-CPAL,VCPA USER FL/RA
  16596. MX7 -6
  16597. BX2 X4
  16598. SA5 X4-NUAPL+DBNC DATA BASE NAME
  16599. LX2 -18
  16600. SX5 X5 DATA BASE ID
  16601. ZR X6,GRA1 IF NOT CALLED BY *TOTAL*
  16602. BX6 -X7*X5 CHECK SECOND CHARACTER FOR *S*
  16603. SX6 X6-1RS
  16604. BX7 X7*X5
  16605. NZ X6,GRA1 IF SECOND CHARACTER NOT AN *S*
  16606. SX5 X7+1RT CONVERT SECOND CHARACTER TO A *T*
  16607. GRA1 SX6 X4 SUB CP RA
  16608. SX7 X2 SUB CP FL
  16609. BX4 X4-X4 TASK NAME = 0, IF SUBCP = 0
  16610. MX2 12
  16611. ZR X1,GRAX IF SUBCP = 0
  16612. SA4 A4 STATUS WORD 1 OF SUBCP TABLE
  16613. LX4 59-SCBCS
  16614. PL X4,GRA2 IF SUBCP NOT FOR BATCH CONCURRENCY
  16615. SA4 X6-NUAPL+BCTN BATCH CONCURRENT TASK NAME
  16616. SA2 X6-NUAPL+BCTA GET FWA OF *BCT* ENTRY
  16617. SA2 X2 GET *TST* ADDRESS
  16618. LX2 BCTAN-1-BCTAS
  16619. SA2 X2+TSTNW *TST* WORD TWO
  16620. MX1 TSTNN
  16621. BX2 X1*X2
  16622. EQ GRAX RETURN
  16623.  
  16624. GRA2 SA4 A4+2 WORD 3 OF SUBCP
  16625. BX4 X2*X4 TASK LIBRARY DIRECTORY INDEX
  16626. LX4 12
  16627. TA4 X4-1,VTLD GET TASK NAME
  16628. MX2 42
  16629. BX4 X2*X4
  16630. SA2 X6-NUAPL+CB2C GET *TST* ADDRESS
  16631. LX2 CBTAN-1-CBTAS
  16632. SA2 X2+TSTNW
  16633. MX1 TSTNN
  16634. BX2 X1*X2
  16635. EQ GRAX RETURN
  16636. RIQ SPACE 4,10
  16637. ** RIQ - READ INPUT QUEUE.
  16638. *
  16639. * REMOVE AN ENTRY FROM THE TOTAL INPUT QUEUE.
  16640. *
  16641. * EXIT. (X6) = 0 - QUEUE IS EMPTY.
  16642. * (X6) = QUEUE ENTRY.
  16643. *
  16644. * USES X - 1, 2, 3, 5, 6, 7.
  16645. * A - 1, 2, 3, 5, 6, 7.
  16646. * B - 1.
  16647.  
  16648.  
  16649. RIQ SUBR ENTRY/EXIT
  16650. SB1 1
  16651. SA1 TDI+2 IN
  16652. SA2 A1+B1 OUT
  16653. IX6 X1-X2
  16654. ZR X6,RIQX IF QUEUE IS EMPTY
  16655. SA5 X2 READ QUEUE ENTRY
  16656. SA3 A2+B1 LIMIT
  16657. SX7 X2+B1 INCREASE OUT
  16658. BX3 X7-X3
  16659. NZ X3,RIQ1 IF NOT AT LIMIT
  16660. SA3 A1-B1 FIRST
  16661. BX7 X3
  16662. RIQ1 SA7 A2 ADVANCE OUT
  16663. BX6 X5 QUEUE ENTRY
  16664. EQ RIQX RETURN
  16665. TCM SPACE 4,20
  16666. ** TCM - TAF *CMM* INTERFACE.
  16667. *
  16668. * ENTRY (X7) = FIELD LENGTH CHANGE, NEGATIVE IF DECREASE.
  16669. * (VFSCP) = FWA OF SUB-CONTROL POINTS.
  16670. * (VCPA) = FWA OF SUB-CONTROL POINT TABLE.
  16671. *
  16672. * EXIT (X1) = FL GRANTED.
  16673. * (X2) = ZERO IF FIELD LENGTH GRANTED.
  16674. * .NE. ZERO, IF FIELD LENGTH NOT GRANTED.
  16675. *
  16676. * USES A - 0, 1, 2, 3, 4, 6, 7.
  16677. * B - 2, 3, 4, 6.
  16678. * X - 0, 1, 2, 3, 4, 6, 7.
  16679. *
  16680. * CALLS MTD, MTK, RMF, RKP.
  16681.  
  16682.  
  16683. TCM5 SA3 VFSCP UPDATE FWA OF TASK SUBCP
  16684. SA1 TCMA
  16685. AX3 24
  16686. IX6 X3+X1
  16687. SA4 AVAILCM UPDATE AVAILABLE CM COUNT
  16688. IX7 X4-X1
  16689. LX6 24
  16690. SA6 A3
  16691. SA7 A4
  16692.  
  16693. TCM SUBR ENTRY/EXIT
  16694. TX1 B0,VCPA FWA OF SUBCP TABLE
  16695. SA0 B7+ ACTIVE SUBCP
  16696. SA7 TCMA SAVE FL REQUEST
  16697. NG X7,TCM4 IF REDUCE FL
  16698. SA7 CMPF SET PAUSE FLAG
  16699. SA2 AVAILCM AVAILABLE FL
  16700. SX0 X7
  16701. IX7 X2-X7
  16702. PL X7,TCM1 IF SPACE AVAILABLE
  16703. RJ RMF REQUEST MORE FL
  16704. SX2 TCM SET X2 TO NONZERO
  16705. ZR X5,TCMX IF NO SPACE AVAILABLE
  16706. TCM1 TX2 B0,VCPA FWA OF SUBCP TABLE
  16707. RJ SFS SEARCH FOR FREE SPACE
  16708. SB3 X7+B1
  16709. NG B3,TCM3 IF NO SPACE AVAILABLE
  16710. SB4 A3 SUBCP TO MOVE
  16711. EQ B4,B5,TCM2 IF MOVE FIRST SUBCP - ITASK
  16712. SA2 B5+2 GET NEXT SUBCP
  16713. SB5 X2
  16714. RJ MTD MOVE TASK TOWARD HIGH MEMORY LOCATION
  16715.  
  16716. * MOVE FIRST SUBCP - ITASK.
  16717.  
  16718. TCM2 TA2 B0,VCPA FWA OF FIRST SUBCP
  16719. SA1 TCMA REQUEST FL
  16720. SB4 A2 SUBCP TO MOVE
  16721. BX4 -X1 AMOUNT OF FL TO REDUCE
  16722. SB3 X2-NUAPL TASK FWA
  16723. SB6 B3+X1 DESTINATION
  16724. RJ MTK MOVE TASK TOWARD HIGH MEMORY LOCATION
  16725. RJ RKP RESET K-DISPLAY POINTER
  16726. BX7 X7-X7
  16727. BX2 X2-X2
  16728. SA7 CMPF CLEAR PAUSE FLAG
  16729. EQ TCM5 UPDATE FWA OF TASK SUBCP
  16730.  
  16731. * UNABLE TO FIND A SPACE, SET PAUSE FLAG.
  16732.  
  16733. TCM3 SX2 TCM3 SET X2 TO NONZERO
  16734. SA7 CMPF BLOCK ALL TASKS MAKING *SSC* REQUEST
  16735. EQ TCMX FL NOT GRANTED
  16736.  
  16737. * PROCESS REDUCE FL.
  16738.  
  16739. TCM4 SB4 X1 SUBCP TO MOVE
  16740. SA2 X1 GET FWA OF TASK
  16741. SB3 X2-NUAPL FWA OF TASK
  16742. SB6 B3+X7 DESTINATION
  16743. BX4 -X7 ADDITIONAL SPACE AFTER MOVE
  16744. RJ MTK MOVE FIRST SUBCP UP
  16745. BX2 X2-X2
  16746. EQ TCM5 UPDATE FWA OF TASK SUBCP
  16747.  
  16748. TCMA BSSZ 1 REQUEST FIELD LENGTH
  16749. RCP TITLE MEMORY MANAGEMENT.
  16750. RCP SPACE 4,20
  16751. ** RCP - REQUEST FOR SUBCONTROL POINT.
  16752. * RCP WILL TRY TO FIND A CONTIGUOUS BLOCK OF SPACE TO
  16753. * SATISFY THE REQUEST. A STORAGE MOVE (COMPACTION) OF
  16754. * SPACE WILL BE MADE IF THE REQUEST CAN BE SATISFIED BY
  16755. * COMBINING SEVERAL HOLES BETWEEN TWO OR MORE SUBCPS.
  16756. *
  16757. * ENTRY (X0) = FL REQUIRED.
  16758. *
  16759. * EXIT (X5) = START OF ASSIGNED AREA.
  16760. * = 0 IF FL NOT AVAILABLE.
  16761. * (B4) = ASSIGNED SUBCONTROL POINT TABLE ADDRESS.
  16762. *
  16763. * USES X - 1, 2, 3, 4, 5, 6, 7.
  16764. * A - ALL.
  16765. * B - 2, 3, 4, 5, 6, 7.
  16766. *
  16767. * CALLS ESCP, RKP, RMF, SFS.
  16768.  
  16769.  
  16770. RCP14 SA1 STAT11 NUMBER OF TIMES NO SUBCONTROL POINTS
  16771. SX6 B1
  16772. IX6 X1+X6
  16773. SB7 A0 RESET (B2) AND (B7)
  16774. SB2 A5
  16775. BX5 X5-X5
  16776. SA6 A1
  16777.  
  16778. RCP SUBR
  16779. SA1 AVAILCM SPACE CURRENTLY AVAILABLE
  16780. BX5 X5-X5
  16781. IX7 X1-X0
  16782. PL X7,RCP1 IF NOT ENOUGH SPACE AVAILABLE
  16783. RJ RMF REQUEST MORE FIELD LENGTH
  16784. ZR X5,RCPX IF NO SPACE AVAILABLE
  16785. RCP1 BX6 X6-X6
  16786. TA2 0,VNACP NEXT FREE CONTROL POINT
  16787. SB6 B0
  16788. SA5 B2 SAVE B2
  16789. SA0 B7 SAVE B7
  16790. NZ X2,RCP1.1 IF SUBCP AVAILABLE
  16791. SA3 SCHDA
  16792. ZR X3,RCP14 IF NO RELEASABLE TASKS
  16793. SX7 B0+
  16794. SA7 ETIME TIME TO EVICT RELEASABLE TASK
  16795. RJ CORU RELEASE A RELEASABLE TASK
  16796. RCP1.1 TX2 0,VCPA FIRST SUBCONTROL POINT AREA
  16797. SB7 X2 FIRST SUBCP
  16798. SX3 X2 FWA OF SUBCP
  16799. SX5 377770B
  16800. BX7 X7-X7
  16801. SB4 B0
  16802. RCP2 RJ SFS SEARCH FOR FREE SPACE
  16803. PL X7,RCP11 IF ENOUGH FL AFTER SUBCP
  16804. SX7 X7+B1
  16805. IX1 X6-X5
  16806. ZR X2,RCP5 IF LAST SUBCP
  16807. ZR X7,RCP3 IF SPACE AVAILABLE
  16808. SB7 X2 TRY NEW BLOCK
  16809. EQ RCP2 SEARCH FOR FREE SPACE
  16810.  
  16811. RCP3 IX1 X6-X5
  16812. PL X1,RCP4 IF PREVIOUS AMOUNT WAS A BETTER CHOICE
  16813. BX5 X6 SWITCH POINTER
  16814. SB4 B5
  16815. SX7 B5 SAVE POINTER
  16816. SA7 RCPA
  16817. RCP4 SA2 B7+2 GET NEXT SUBCP
  16818. SX2 X2
  16819. SB7 X2
  16820. NZ B7,RCP2 IF NOT LAST SUBCP
  16821.  
  16822. RCP5 SX5 B0+
  16823. NZ B4,RCP6 IF SPACE AVAILABLE
  16824. SB7 A0 RESET (B2) AND (B7)
  16825. SB2 A5
  16826. EQ RCPX RETURN
  16827.  
  16828. * PERFORM STORAGE MOVE TO COMPACT ALLOCATABLE SPACE.
  16829.  
  16830. RCP6 SB3 RCP7 RETURN ADDRESS IF DROPING A SUBCP
  16831. SB7 B0+
  16832. RCP7 SA3 B4 FWA OF SUBCP TABLE
  16833. LX3 SCFCN-SCFCS-1 GET FREE SPACE
  16834. SX1 X3 FREE SPACE AFTER SUBCP
  16835. IX5 X1-X0
  16836. PL X5,RCP11 IF SPACE AVAILABLE AFTER SUBCP
  16837. SA4 B4+SCLSW GET LAST SUBCP
  16838. LX3 59-SCRLS-SCFCN+SCFCS+1
  16839. SB6 B4 SUBCP TO RELEASE
  16840. PL X3,RCP10 IF SUBCP NOT RELEASABLE
  16841. LX4 SCLSN-SCLSS-1 GET LAST SUBCP
  16842. SB4 X4
  16843. EQ ESCP1 RELEASE SUBCP
  16844.  
  16845. RCP10 SB4 X4 NEXT SUBCP
  16846. ZR X1,RCP7 IF NO FREE SPACE AFTER SUBCONTROL POINT
  16847. SA2 X4
  16848. LX2 59-SCRLS
  16849. SB4 A3
  16850. SB6 X4+ SUBCP TO RELEASE
  16851. NG X2,ESCP1 IF SUBCP RELEASABLE
  16852. SB4 X4 SUBCP TO MOVE
  16853. SA2 A3 FWA OF LAST SUBCP TABLE
  16854. SX4 X1 FREE SPACE OF SUBCP
  16855. SB6 B0
  16856. RJ MTK MOVE TASK TOWARD LOW MEMORY LOACTION
  16857. EQ RCP6 CONTINUE COMPACTING SUBCP
  16858.  
  16859. * ASSIGN SPACE TO A NEW SUBCONTROL POINT AND EXIT.
  16860. * (A3)/(X3) = FWA OF SUBCP TABLE.
  16861.  
  16862. RCP11 MX6 42
  16863. BX7 X6*X3 MASK OUT FREE SPACE COUNT
  16864. LX7 36
  16865. SA7 A3
  16866. SB6 B1+B1 CONSTANT 2
  16867. TA4 0,VNACP NEXT FREE SUBCONTROL POINT
  16868. SA2 A3+B6
  16869. BX1 X6*X2 MASK OUT POINTER TO NEXT SUBCONTROL POINT
  16870. IX7 X1+X4 NEW POINTER
  16871. SA7 A2
  16872. SA1 X4 NEXT FREE SUBCP
  16873. BX7 X1
  16874. SA7 A4 RESET NEXT FREE SUBCP POINTER
  16875. LX3 18
  16876. SX1 X3 FL OF CURRENT SUBCP
  16877. LX3 18
  16878. SX7 X3 RA OF CURRENT SUBCP
  16879. IX5 X7+X1 START OF NEW SUBCP SPACE
  16880. LX3 24
  16881. SX3 X3 FREE SPACE PRESENT BEFORE ASSIGNMENT
  16882. IX6 X3-X0 FREE SPACE PRESENT AFTER ASSIGNMENT
  16883. SX1 X0-NUAPL
  16884. LX6 18
  16885. SB4 X4
  16886. BX6 X6+X1 FL AT NEW SUBCP
  16887. LX6 18
  16888. SX3 X5+NUAPL
  16889. BX6 X6+X3 RA OF NEW SUBCP
  16890. SA6 X4 STATUS WORD ONE OF SUBCP AREA
  16891. SX7 A3 LAST SUBCP
  16892. SX2 X2
  16893. LX7 18
  16894. BX7 X7+X2
  16895. SA7 A6+2 STATUS WORD TWO
  16896. SA1 AVAILCM UPDATE AVAILABLE CM
  16897. IX6 X1-X0
  16898. SA6 A1
  16899. ZR X2,RCP12 IF ADDING TO END OF CHAIN
  16900. SA1 X2+B6
  16901. MX6 42
  16902. SX3 B4 POINT NEXT SUBCP BACK TO NEW ONE
  16903. LX1 -18
  16904. BX6 X6*X1 MASK OFF OLD BACK POINTER
  16905. IX6 X6+X3
  16906. LX6 18
  16907. SA6 A1
  16908. RCP12 SB2 A5 RESTORE B2
  16909. SB7 A0 RESTORE B7
  16910. RJ RKP RESTORE K-DISPLAY POINTER
  16911. SX1 B2 UPDATE (SREG)
  16912. SX7 B7
  16913. LX1 18
  16914. BX7 X1+X7
  16915. SA7 SREG
  16916. EQ RCPX RETURN
  16917.  
  16918. RCPA BSSZ 1 SUBCP TO START COMPACTION WITH
  16919. MTD SPACE 4,10
  16920. ** MTD - MOVE TASKS DOWN (TOWARD HIGH MEMORY LOCATION).
  16921. *
  16922. * ENTRY (B5) = FWA OF SUBCP TABLE - LAST TO MOVE.
  16923. * (A3) = FWA OF SUBCP TABLE - FIRST TO MOVE.
  16924. *
  16925. * USES A - 1, 2, 3, 7.
  16926. * B - 3, 4, 5, 6.
  16927. * X - ALL.
  16928. *
  16929. * CALLS ESCP, MTK.
  16930.  
  16931.  
  16932. MTD SUBR ENTRY/EXIT
  16933. ZR B5,MTDX IF NOTHING TO MOVE
  16934. SA2 B5+SCLSW GET TERMINATOR
  16935. SB4 A3 SUBCP TO MOVE
  16936. LX2 SCLSN-SCLSS-1
  16937. SX0 X2+ FWA OF SUBCP TABLE - TERMINATOR
  16938. MTD1 SB3 X0
  16939. EQ B3,B4,MTDX IF DONE WITH TASK MOVE
  16940. SA2 B4 GET FWA OF SUBCP
  16941. LX2 59-SCRLS
  16942. PL X2,MTD3 IF SPACE NOT RELEASABLE
  16943. SB6 B4 SUBCP TO RELEASE
  16944. SA3 B4+2 GET PRIVIOUS SUBCP
  16945. LX3 SCLSN-SCLSS-1
  16946. SB4 X3 PRIVIOUS SUBCP
  16947. SB3 MTD1 RETURN ADDRESS
  16948. EQ ESCP1 RELEASE SUBCP
  16949.  
  16950. MTD3 SA3 B4 TASK SUBCP
  16951. SB6 X3-NUAPL FWA OF SUBCP
  16952. LX3 SCFCN-SCFCS-1
  16953. SB6 X3+B6 DESTINATION
  16954. SX6 X3 FREE SPACE AFTER CURRENT SUBCP
  16955. SA2 B4+SCLSW GET PREVIOUS SUBCP
  16956. BX4 -X6
  16957. LX2 SCLSN-SCLSS-1
  16958. SB5 X2 PRIVIOUS SUBCP
  16959. SA1 X2 PREVIOUS SUBCP
  16960. LX1 SCFCN-SCFCS-1
  16961. SX2 X1 FREE SPACE AFTER PREVIOUS SUBCP
  16962. MX7 60-SCFCN
  16963. IX6 X2+X6 UPDATE FREE SPACE COUNT
  16964. BX5 X7*X1
  16965. BX7 X5+X6
  16966. LX7 SCFCS-SCFCN+1
  16967. SA7 A1
  16968. RJ MTK MOVE TASK TOWARD HIGH MEMORY LOCATION
  16969. SB4 B5 NEXT TASK TO MOVE
  16970. EQ MTD1 MOVE NEXT SUBCP
  16971. MTK SPACE 4,20
  16972. ** MTK - MOVE TASK.
  16973. *
  16974. * ENTRY (A0) = FWA OF ACTIVE TASK SUBCP TABLE.
  16975. * (B4) = FWA OF SUBCP TO BE MOVE.
  16976. * (A2)/(X2) = FWA OF LAST SUBCP TABLE IF (B6) .EQ. 0.
  16977. * (X4) = FREE SPACE OF CURRENT SUBCP.
  16978. * (B6) = 0, IF TASK MOVED UPWARD.
  16979. * ADDRESS TO MOVE TO, OTHERWISE.
  16980. *
  16981. * EXIT (A5) = ACTIVE TASK NEW RA.
  16982. *
  16983. * USES A - 1, 2, 3, 4, 5, 6, 7.
  16984. * B - 3, 6.
  16985. * X - 1, 2, 3, 4, 5, 6, 7.
  16986. *
  16987. * CALLS MVE=.
  16988. *
  16989. * NOTE - MOVE TASK UP IMPLIES MOVE TOWARD TAF RA.
  16990.  
  16991.  
  16992. MTK SUBR ENTRY/EXIT
  16993. NZ B6,MTK1 IF TASK MOVED DOWNWARD
  16994. MX7 18
  16995. SB6 X2 RA OF LAST SUBCONTROL POINT
  16996. LX7 -6
  16997. BX7 -X7*X2 ZERO OUT FREE SPACE COUNT
  16998. LX2 SCFLN-SCFLS-1
  16999. SB6 X2+B6 NEW FWA OF TASK
  17000. NO
  17001. SA7 A2+ RESET STATUS WORD ONE
  17002. MTK1 SA3 B4 STATUS WORD 1 OF SUBCP BEING MOVED
  17003. LX3 SCFCN-SCFCS-1
  17004. SX6 X3
  17005. IX6 X6+X4
  17006. NG X6,MTK2 IF NEGATIVE FREE SPACE COUNT
  17007. MX7 60-SCFCN
  17008. BX5 X7*X3
  17009. BX6 X5+X6
  17010. LX3 SCFLN-SCFLS-1+SCFCS-SCFCN+1
  17011. SX1 X3+NUAPL TOTAL MEMORY BEING MOVED
  17012. MX4 -18
  17013. SX3 B6 DESTINATION
  17014. SX2 B6+NUAPL NEW RA
  17015. LX6 SCFCS-SCFCN+1
  17016. BX7 X4*X6 MASK OFF OLD RA
  17017. SX5 X6-NUAPL START OF MEMORY TO BE MOVED
  17018. IX6 X7+X2
  17019. SA6 A3 RESET STATUS WORD
  17020. SA4 STAT4
  17021. SX2 X5 SOURCE
  17022. SX6 B1
  17023. IX6 X4+X6 BUMP STORAGE MOVE COUNT
  17024. SA6 A4
  17025. RJ MVE= MOVE TASK
  17026. SB3 A0
  17027. SA1 B4
  17028. SA2 X1-NUAPL+1 EXCHANGE PACKAGE WORD WITH RA
  17029. MX7 24
  17030. SX3 X1 NEW RA
  17031. BX7 -X7*X2
  17032. LX3 36
  17033. BX7 X7+X3 SET NEW RA INTO EXCHANGE PACKAGE
  17034. SA7 A2
  17035. NE B3,B4,MTKX IF ACTIVE SUBCP NOT MOVED
  17036. SA5 A2-B1 NEW RA
  17037. EQ MTKX RETURN
  17038.  
  17039. MTK2 RJ EXIT INCORRECT SUBCP TABLE
  17040. RMF SPACE 4,15
  17041. ** RMF - REQUEST MORE FIELD LENGTH.
  17042. *
  17043. * ENTRY (X7) = COMPLIMENT OF REQUEST FIELD LENGTH.
  17044. *
  17045. * EXIT (X5) = 0 IF FIELD LENGTH NOT AVAILABLE.
  17046. * (X5) = -1 IF FIELD LENGTH AVAILABLE.
  17047. *
  17048. * USES A - 1, 2, 3, 4, 6, 7.
  17049. * B - 3, 4.
  17050. * X - 1, 2, 3, 4, 5, 6, 7.
  17051. *
  17052. * MACROS MEMORY.
  17053.  
  17054.  
  17055. RMF5 SX5 B0+ MEMORY NOT AVAILABLE
  17056.  
  17057. RMF SUBR ENTRY/EXIT
  17058. SA3 MTIME LAST FL REDUCTION TIME
  17059. SA2 LTIME CURRENT TIME
  17060. ZR X3,RMF1 IF NO REDUCTION SINCE LAST INCREASE
  17061. IX3 X2-X3
  17062. MX6 -36
  17063. SX4 RFLTL
  17064. BX6 -X6*X3 TIME ELAPSED SINCE LAST REDUCTION
  17065. IX4 X6-X4
  17066. NG X4,RMF5 IF MINIMUM TIME NOT ELAPSED
  17067. BX6 X6-X6
  17068. SA6 A3
  17069. RMF1 SA2 MFL MAXIMUM FIELD LENGTH ALLOWED
  17070. SA3 CURFL CURRENT TAF FIELD LENGTH
  17071. IX6 X2-X3
  17072. ZR X6,RMF5 IF ALREADY AT MAXIMUM FIELD LENGTH
  17073. IX4 X6+X7
  17074. NG X4,RMF5 IF REQUESTING MORE FL WILL NOT HELP
  17075. SX1 X7+INCFL
  17076. BX4 -X7
  17077. NG X1,RMF2 IF REQUEST GREATER THAN MINIMUM REQUEST
  17078. IX4 X4+X1 REQUEST MINIMUM AMOUNT
  17079. IX7 X6-X4
  17080. PL X7,RMF2 IF REQUESTED WILL NOT EXCEED MAXIMUM
  17081. SX4 X6 REQUEST UP TO THE MAXIMUM ALLOWED
  17082. RMF2 NG X6,RMF5 IF CURRENTLY HAVE MORE THAN MAXIMUM
  17083. IX7 X3+X4 FIELD LENGTH DESIRED
  17084. SA7 RMFA SAVE REQUEST FL
  17085. MEMORY CM,MRSW,R,X7 REQUEST FL
  17086. SA1 AVAILCM AVAILABLE CM
  17087. SA2 MRSW GET STATUS WORD
  17088. MX3 30
  17089. BX6 X3*X2 NEW FL
  17090. SA3 RMFA REQUEST FL
  17091. LX6 30
  17092. IX2 X6-X3
  17093. SA4 CURFL COMPUTE INCREMENT OF FL
  17094. IX4 X6-X4
  17095. NG X2,RMF5 IF FL NOT GRANTED
  17096. IX7 X1+X4 UPDATE AVAILABLE SPACE COUNT
  17097. SA7 A1 NEW AVAILABLE SPACE COUNT
  17098. TB3 0,VCPA FIRST SUBCONTROL POINT AREA
  17099. SA6 CURFL NEW TAF FIELD LENGTH
  17100. SX6 B1+
  17101. SA1 STAT6
  17102. IX6 X6+X1 INCREMENT MEMORY INCREASE COUNT
  17103. SA6 A1+
  17104. RMF3 ZR B3,RMF4 IF AT END OF SUBCONTROL POINTS
  17105. SA1 B3+2
  17106. SB4 B3 NEXT ACTIVE SUBCONTROL POINT
  17107. SB3 X1
  17108. EQ RMF3 LOOP TO END OF CHAIN
  17109.  
  17110. RMF4 SA1 B4 STATUS WORD ONE OF LAST ACTIVE SUBCP
  17111. LX1 -36
  17112. IX7 X1+X4 ADD FL INCREASED AMOUNT
  17113. LX7 36
  17114. SA7 A1
  17115. SX5 -B1 FIELD LENGTH AVAILABLE
  17116. EQ RMFX RETURN
  17117.  
  17118. RMFA BSSZ 1 REQUEST FL
  17119. SFS SPACE 4,20
  17120. ** SFS - SEARCH FOR FREE SPACE.
  17121. *
  17122. * ENTRY (X2) = FWA OF SUBCP TABLE TO START WITH.
  17123. * (X0) = FIELD LENGTH REQUIRED.
  17124. *
  17125. * EXIT (X7) .GE. 0 IF FL AVAILABLE AFTER SUBCP.
  17126. * (X7) = -1 IF STORAGE MOVE IS REQUIRE TO GET FL.
  17127. * (X7) = -2 IF NO FIELD LENGTH AVAILABLE.
  17128. * (B3) = TOTAL FREE SPACE AVAILABLE.
  17129. * (B5) = FWA OF SUBCP TABLE.
  17130. * (X6) = AMOUNT OF SPACE TO MOVE.
  17131. * (X2) = NEXT SUBCP TO SEARCH.
  17132. * (A3)/(X3) = FWA OF LAST SUBCP TABLE IF (X7) .GE. -1
  17133. *
  17134. * USES X - 1, 2, 3, 4, 6, 7.
  17135. * A - 3.
  17136. * B - 3, 5, 6.
  17137.  
  17138.  
  17139. SFS3 SX7 -2 SPACE NOT AVAILABLE
  17140. SX6 377777B SET MAXIMUM SPACE TO MOVE
  17141.  
  17142. SFS SUBR ENTRY/EXIT
  17143. SB5 X2 FWA OF SUBCP TABLE
  17144. SB6 X0 FL REQUIRED
  17145. SB3 B0
  17146. BX6 X6-X6
  17147. SFS1 ZR X2,SFS3 IF DONE EVALUATING SUBCP
  17148. SA3 X2
  17149. BX1 X3
  17150. LX3 SCFCN-SCFCS-1 RIGHT JUSTIFY FREE SPACE AFTER SUBCP
  17151. SX2 X3 AVAILABLE FL AFTER SUBCP
  17152. LX1 SCFLN-SCFLS-1
  17153. SX4 X1 SUBCP FL
  17154. SX4 X4+NUAPL TOTAL FL OF SUBCP
  17155. LX1 59-SCRLS+SCFLS-SCFLN+1
  17156. IX7 X2-X0
  17157. PL X7,SFSX IF ENOUGH SPACE AFTER SUBCP
  17158. SA3 A3+2
  17159. SX7 X2 FREE SPACE AFTER SUBCP
  17160. PL X1,SFS2 IF SUBCP IS NOT RELEASEABLE
  17161. IX7 X2+X4 AVAILABLE SPACE
  17162. BX4 X4-X4
  17163. SFS2 SA1 X3
  17164. SX2 X3 NEXT SUBCP TO SEARCH
  17165. NG X1,SFS3 IF SUBCP LOCKED AGAINST STORAGE MOVE
  17166. IX6 X4+X6 TOTAL SPACE TO STORAGE MOVE
  17167. SB3 B3+X7 SPACE AVAILABLE IF STORAGE MOVE
  17168. LT B3,B6,SFS1 IF NOT ENOUGH SPACE AVAILABLE
  17169. SA3 A3-2 CURRENT SUBCP
  17170. SX4 X6-MAXSM
  17171. PL X4,SFS3 IF TOO MUCH SPACE TO MOVE
  17172. SX2 A3
  17173. SX7 -B1 SPACE AVAILABLE
  17174. EQ SFSX RETURN
  17175. TITLE QUEUE MANAGEMENT.
  17176. ATW SPACE 4,15
  17177. ** ATW - ADVANCE *TAF* WORK.
  17178. *
  17179. * ENTRY (TAFQ) = POINTERS TO QUEUED WORK.
  17180. *
  17181. * EXIT TO COMPLETE PROCESSOR, IF EVENT COMPLETE.
  17182. * (B3) = FWA OF QUEUED ENTRY RELATIVE TO TASK
  17183. * SUBCP SYSTEM AREA.
  17184. * (B5) = FWA OF QUEUED ENTRY RELATIVE TO *TAF*.
  17185. * (X2) = FIRST WORD OF QUEUE ENTRY.
  17186. *
  17187. * USES X - ALL.
  17188. * A - 1, 2, 3, 4, 5, 6, 7.
  17189. * B - 3, 4, 5, 6.
  17190. *
  17191. * CALLS CRA.
  17192.  
  17193.  
  17194. ATW SUBR ENTRY/EXIT
  17195. SB4 B0 FWA OF PRIOR QUEUE ENTRY
  17196. MX0 -QWNSN MASK FOR SUBCP
  17197. SA1 TAFQ POINTERS TO WORK
  17198. SX6 X1 FWA OF FIRST QUEUED ENTRY
  17199. ZR X6,ATWX IF NO WORK, RETURN
  17200. LX1 5-23 RIGHT JUSTIFY FIRST SUBCP
  17201. BX5 X5-X5 CLEAR PREVIOUS ENTRY
  17202. BX3 -X0*X1 SUBCP OF QUEUE ENTRY
  17203. LX1 59-59-5+23 FWA OF FIRST QUEUE ENTRY
  17204.  
  17205. * EXAMINE QUEUE FOR COMPLETED WORK.
  17206.  
  17207. ATW1 RJ CRA COMPUTE REAL ADDRESS
  17208. SA2 B5 QUEUED WORK ENTRY
  17209. SB5 X3+ SAVE SUBCP
  17210. SA3 X2 EVENT COMPLETE WORD
  17211. LX2 QWSHN-1-QWSHS RIGHT JUSTIFY EVENT COMPLETE SHIFT
  17212. BX7 -X0*X2
  17213. ERRNZ QWNSN-QWSHN IF SUBCP .NE. SHIFT FIELD
  17214. SB3 X7
  17215. LX3 B3 SHIFT EVENT COMPLETE TO BIT 59
  17216. SB3 X1
  17217. LX2 QWNAN-1-QWNAS-QWSHN+1+QWSHS
  17218. SX6 X2 NEXT ENTRY IN QUEUE
  17219. LX2 QWTYN-1-QWTYS-QWNAN+1+QWNAS QUEUE TYPE
  17220. ERRNZ QWTYN-QWNSN IF TYPE LENGTH .NE. SUBCP LENGTH
  17221. BX7 -X0*X2
  17222. LX2 59-59-QWTYN+1+QWTYS
  17223. NG X3,ATW3 IF EVENT COMPLETE
  17224. NZ X7,ATW8 IF TIMED EVENT
  17225. ATW2 SB4 A2 PREVIOUS ENTRY FWA
  17226. SX4 X1 PREVIOUS FWA WITH RESPECT TO SUBCP
  17227. SB6 B5+ PREVIOUS SUBCP
  17228. BX5 X2 PREVIOUS ENTRY
  17229. LX2 QWNSN-1-QWNSS RIGHT JUSTIFY NEXT SUBCP
  17230. BX3 -X0*X2 SUBCP
  17231. SX1 X6 FWA OF QUEUE ENTRY RELATIVE TO SUBCP
  17232. NZ X6,ATW1 IF MORE WORK, EXAMINE NEXT QUEUE ENTRY
  17233. EQ ATWX RETURN
  17234.  
  17235. * EVENT OCCURRED OR TIMED OUT.
  17236.  
  17237. ATW3 ZR X6,ATW6 IF END OF QUEUE
  17238. ZR B4,ATW9 IF NO PREVIOUS ENTRY IN QUEUE
  17239. BX3 X2
  17240.  
  17241. * SET PREVIOUS QUEUE ENTRY TO NEXT.
  17242.  
  17243. ATW4 MX0 60-QWNTN
  17244. LX5 QWNTN-1-QWNTS RIGHT JUSTIFY NEXT
  17245. BX5 X0*X5 CLEAR PREVIOUS ENTRY NEXT POINTER
  17246. LX3 QWNTN-1-QWNTS
  17247. BX7 -X0*X3 SAVE SUBCP AND FWA OF NEXT ENTRY
  17248. BX7 X5+X7 UPDATE NEXT IN PREVIOUS ENTRY
  17249. LX7 59-59-QWNTN+1+QWNTS
  17250. SA7 B4
  17251.  
  17252. * RETURN TO COMPLETE PROCESSOR.
  17253.  
  17254. ATW5 SA5 A2+B1 COMPLETE PROCESSOR
  17255. ERRNZ QWPRW-1 IF COMPLETE PROCESSOR NOT IN WORD 1
  17256. ERRNZ QWPRS-17 IF COMPLETE PROCESSOR NOT IN BITS 17-0
  17257. SB4 X5 RETURN PROCESSOR ADDRESS
  17258. SB5 A2+ FWA OF ENTRY RELATIVE TO TAF
  17259. JP B4 RETURN TO COMPLETE PROCESSOR
  17260.  
  17261. * WHEN LAST ENTRY IS REMOVED FROM QUEUE, UPDATE LAST IN
  17262. * *TAF* WORK POINTER.
  17263.  
  17264. ATW6 ZR B4,ATW7 IF NO PREVIOUS QUEUE ENTRY
  17265. SA1 TAFQ POINTER TO FIRST AND LAST WORK
  17266. MX0 -24 MASK FOR FIRST ENTRY IN QUEUE
  17267. SX7 B6 GET SUBCP OF PREVIOUS ENTRY
  17268. LX7 47-5
  17269. SX3 X4 FWA WITH RESPECT TO SUBCP
  17270. BX1 -X0*X1
  17271. LX3 41-17
  17272. BX7 X7+X3 NEW LAST ENTRY
  17273. BX7 X1+X7 ADD NEW LAST ENTRY
  17274. SA7 A1
  17275. SX3 B0 CLEAR NEXT IN PREVIOUS ENTRY
  17276. EQ ATW4 UPDATE QUEUE POINTERS
  17277.  
  17278. * WHEN NO PREVIOUS ENTRY EXISTS,
  17279. * INITIALIZE *TAF* QUEUE LAST AND FIRST TO ZERO.
  17280.  
  17281. ATW7 SA6 TAFQ
  17282. EQ ATW5 RETURN TO WAITING PROCESSOR
  17283.  
  17284. * CHECK FOR EVENT TIME OUT. IF EVENT TIMED OUT REMOVE
  17285. * ENTRY FROM QUEUE, ELSE CHECK NEXT QUEUE ENTRY.
  17286.  
  17287. ATW8 SA3 LTIME GET REAL TIME
  17288. MX7 -QWTMN MASK FOR TIME
  17289. BX0 -X7*X3
  17290. SA3 A2+QWTMW
  17291. LX3 QWTMN-1-QWTMS RIGHT JUSTIFY TIME
  17292. BX3 -X7*X3
  17293. IX3 X0-X3
  17294. MX0 -QWNSN RESTORE SUBCP MASK
  17295. PL X3,ATW3 IF EVENT TIMED OUT
  17296. EQ ATW2 CHECK NEXT QUEUED ENTRY
  17297.  
  17298. * UPDATE FIRST WHEN FIRST ENTRY REMOVED FROM QUEUE.
  17299.  
  17300. ATW9 SA1 TAFQ POINTERS TO FIRST AND LAST WORK
  17301. MX5 36
  17302. BX1 X5*X1 CLEAR OLD FIRST POINTER
  17303. LX2 23-59 RIGHT JUSTIFY NEXT IN CURRENT ENTRY
  17304. BX7 -X5*X2 SAVE POINTERS TO NEXT ENTRY
  17305. BX7 X7+X1 UPDATE FIRST
  17306. SA7 A1
  17307. LX2 59-59-23+59
  17308. EQ ATW5 RETURN TO WAITING PROCESSOR
  17309. QTW SPACE 4,15
  17310. ** QTW - QUEUE *TAF* WORK.
  17311. *
  17312. * ENTRY (X1) = FWA OF EVENT.
  17313. * (X2) = SHIFT TO PLACE EVENT BIT IN BIT 59.
  17314. * (X3) = SUBCP.
  17315. * (X4) = EVENT TYPE.
  17316. * (X5) = EVENT TIMEOUT IN MILLISECONDS.
  17317. * (X6) = RETURN ADDRESS TO PROCESS COMPLETE EVENT.
  17318. * (B3) = FWA TO SAVE WORK PARAMETERS.
  17319. * (B4) = 0, IF QUEUE AT END OF QUEUE.
  17320. * = 1, IF QUEUE AT BEGINNING OF QUEUE.
  17321. * (TAFQ) = POINTERS TO QUEUED WORK.
  17322. *
  17323. * EXIT (TAFQ) QUEUE POINTERS UPDATED.
  17324. *
  17325. * USES X - ALL.
  17326. * A - 3, 5, 6, 7.
  17327. *
  17328. * CALLS CRA.
  17329.  
  17330.  
  17331. QTW SUBR ENTRY/EXIT
  17332.  
  17333. * FORMAT QUEUE ENTRY.
  17334.  
  17335. LX5 QWTMS-QWTMN+1 POSITION TIME
  17336. BX7 X5+X6 TIME + RETURN ADDRESS
  17337. ERRNZ QWTMW-QWPRW IF TIME AND RETURN NOT IN SAME WORD
  17338. LX2 QWSHS-QWSHN+1 POSITION SHIFT
  17339. BX6 X2+X1 SHIFT + EVENT
  17340. ERRNZ QWSHW-QWEVW IF SHIFT AND EVENT NOT IN SAME WORD
  17341. SX1 B3 FWA TO SAVE WORK POINTERS
  17342. RJ CRA COMPUTE REAL ADDRESS FOR WORK QUEUING
  17343. LX3 QWSPS-QWSPN+1 POSITION SUBCP
  17344. BX6 X6+X3
  17345. ERRNZ QWEVW-QWSPW IF EVENT AND SUBCP NOT IN SAME WORD
  17346. SA7 B5+QWPRW
  17347. LX4 QWTYS-QWTYN+1 POSITION TYPE
  17348. BX6 X4+X6 ADD TYPE
  17349. ERRNZ QWSPW-QWTYW IF SUBCP AND TYPE NOT IN SAME WORD
  17350. SA5 TAFQ POINTERS TO FIRST AND LAST QUEUED WORK
  17351. LX5 17-41 RIGHT JUSTIFY LAST POINTERS
  17352. SX1 X5 FWA OF LAST
  17353. SX2 B3+
  17354. LX3 -QWSPS+QWSPN-1 RIGHT JUSTIFY SUBCP
  17355. MX0 -QWNSN
  17356. ZR X1,QTW1 IF NO PRIOR ENTRIES IN QUEUE
  17357. NZ B4,QTW2 IF QUEUE AT BEGINNING OF QUEUE
  17358.  
  17359. * PUT NEW ENTRY AT END OF QUEUE.
  17360.  
  17361. SA6 B5 NEXT QUEUE ENTRY EQUALS ZERO
  17362. LX5 5-47-17+41 POSITION SUBCP
  17363. BX4 X3
  17364. BX3 -X0*X5 SUBCP
  17365. RJ CRA COMPUTE REAL ADDRESS USING SUBCP
  17366. SA3 B5 UPDATE PRIOR QUEUE LINK
  17367. LX4 QWNSS-QWNSN+1 POSITION NEXT SUBCP
  17368. SX2 B3 FWA OF NEXT QUEUE ENTRY
  17369. LX2 QWNAS-QWNAN+1 NEXT QUEUE FWA
  17370. BX6 X3+X4 ADD NEXT SUBCP
  17371. BX6 X6+X2 ADD NEXT QUEUE FWA
  17372. SA6 A3
  17373. MX0 -24 UPDATE *TAFQ* LAST
  17374. LX5 -5+47 RESTORE *TAFQ*
  17375. BX6 -X0*X5 SAVE NEXT POINTERS
  17376. LX4 47-5-QWNSS+QWNSN-1 POSITION NEXT SUBCP IN *TAFQ*
  17377. BX6 X6+X4
  17378. LX2 41-17-QWNAS+QWNAN-1 POSITION NEXT QUEUE FWA
  17379. BX6 X2+X6
  17380. SA6 A5
  17381. EQ QTWX RETURN
  17382.  
  17383. * WHEN NO WORK EXISTS IN QUEUE, SET FIRST EQUAL TO LAST.
  17384.  
  17385. QTW1 LX3 23-5 POSITION SUBCP
  17386. BX1 X3+X2 SUBCP + FWA OF QUEUE ENTRY
  17387. SA6 B5+QWEVW FIRST WORD OF QUEUED EVENT
  17388. BX6 X1
  17389. LX6 47-23 LAST
  17390. BX6 X1+X6 FIRST + LAST
  17391. SA6 A5
  17392. EQ QTWX RETURN
  17393.  
  17394. * PUT NEW ENTRY AT BEGINNING OF QUEUE.
  17395.  
  17396. QTW2 LX5 41-17 UPDATE *TAFQ* FIRST
  17397. LX3 23-5 POSITION SUBCP
  17398. MX0 36
  17399. BX7 X3+X2 SUBCP + FWA OF NEW QUEUE ENTRY
  17400. BX4 X0*X5
  17401. BX7 X4+X7
  17402. SA7 A5
  17403. BX4 -X0*X5
  17404. LX4 QWNTS-QWNTN+1 POSITION NEW ENTRY NEXT POINTERS
  17405. BX6 X4+X6 ADD NEXT POINTERS TO NEW ENTRY
  17406. SA6 B5+QWEVW
  17407. EQ QTWX RETURN
  17408. CRA SPACE 4,15
  17409. ** CRA - COMPUTE REAL ADDRESS.
  17410. *
  17411. * ENTRY (X1) = FWA WITH RESPECT TO SUBCP.
  17412. * (X3) = SUBCP.
  17413. *
  17414. * EXIT (B5) = FWA WITH RESPECT TO *TAF*.
  17415. * (X3) = SUBCP.
  17416. *
  17417. * USES X - 2, 3
  17418. * A - 2.
  17419. * B - 5.
  17420.  
  17421.  
  17422. CRA SUBR ENTRY/EXIT
  17423. SB5 X1 ADDRESS WITH RESPECT TO SUBCP
  17424. LX3 SCPAL LENGTH OF SUBCP ENTRY
  17425. TA2 X3-CPAL,VCPA FWA OF SUBCP
  17426. ZR X3,CRAX IF NO SUBCP, ADDRESS IS RELATIVE TO *TAF*
  17427. SB5 X2-NUAPL ADDRESS OF TASK SYSTEM AREA
  17428. SB5 B5+X1
  17429. AX3 SCPAL
  17430. EQ CRAX RETURN
  17431. TITLE JOURNAL FILE PROCESSING.
  17432. JRNL SPACE 4,10
  17433. ** JRNL WRITE A JOURNAL FILE ENTRY.
  17434. *
  17435. * ENTRY (B3) = RETURN ADDRESS.
  17436. * (B4) = ORIGIN CODE.
  17437. * (B5) = JOURNAL FILE FET ADDRESS.
  17438. * (X0) = C.B. ADDRESS, IF TASK AFFILIATED.
  17439. * = 0, OTHERWISE.
  17440. * (X5) = START OF JOURNAL MESSAGE (+NUAPL) AND LENGTH.
  17441. * = 24/ 0, 18/ LENGTH, 18/ FWA OF MESSAGE.
  17442. *
  17443. * EXIT TO *DCPT*, IF NON-BUFFERED JOURNAL FILE.
  17444. * TO *TERR9*, IF TOO MANY WORDS TO JOURNAL.
  17445. * (B2) = FWA OF ACTIVE TASK SYSTEM AREA.
  17446. * (B7) = FWA OF ACTIVE TASK SUBCP TABLE.
  17447. *
  17448. * JOURNAL FILE ENTRY HEADERS.
  17449. *
  17450. *T W1 24/ SEQ,6/ OR,12/ ,18/ LN
  17451. *T, W2 42/ TASK NAME,18/ PT
  17452. *T, W3 42/ TN,18/
  17453. *
  17454. * WORD 1
  17455. *
  17456. * SEQ - SEQUENCE NUMBER IF TASK AFFILIATED.
  17457. * OR - ORIGIN CODE.
  17458. * 0 = TASK ORIGIN.
  17459. * 1 = TRANEX ORIGIN.
  17460. * 2 = DATA MANAGER ORIGIN (NOT USED).
  17461. * 3 = TRANEX RECOVERY/STATISTICAL DATA.
  17462. * 4 = END OF TRANSACTION INDICATOR.
  17463. * 5 = INCOMPLETE BLOCK OF TERMINAL INPUT DATA.
  17464. * 6 = TERMINAL INPUT FOR AN INTERACTIVE TASK.
  17465. * 7 = INCORRECT INTER-CONTROL POINT COMMUNICATION.
  17466. * 10B = ON-LINE TASK LIBRARY UPDATE.
  17467. * 11B = TASK FATAL ERROR (*CDCS* REQUEST).
  17468. * 12B = MESSAGE REQUEST WITH ZERO FUNCTION CODE.
  17469. * LN - LENGTH OF JOURNAL ENTRY (INCLUDING HEADER).
  17470. *
  17471. * WORD 2
  17472. *
  17473. * TASK NAME - ONLY FOR TASK AFFILIATED MESSAGES.
  17474. * PT - PACKED TIME HR/MIN/SEC.
  17475. *
  17476. * WORD 3
  17477. *
  17478. * TN - TERMINAL NAME.
  17479. *
  17480. * JOURNAL FILE LABEL RECORDS.
  17481. *
  17482. *T W1 48/ *TRANEX*,12/
  17483. *T, W2 60/ PDATE
  17484. *T, W3 42/ FILE NAME,18/
  17485. *
  17486. * USES A - 0, 1, 2, 3, 4, 6, 7.
  17487. * B - 3, 4, 5, 6.
  17488. * X - ALL.
  17489. *
  17490. * CALLS CLJF, ERP, RSP, TRCL.
  17491. *
  17492. * MACROS WRITER, WRITEW.
  17493.  
  17494.  
  17495. JRNL SA3 B5+7
  17496. SX2 B5 JOURNAL FET ADDRESS
  17497. SX1 X3
  17498. JRNL1 ZR X1,JRNL14 IF BUFFERED JOURNAL FILE
  17499. SA1 B5
  17500. LX1 59-0
  17501. NG X1,JRNL4 IF FILE NOT BUSY
  17502.  
  17503. * PLACE SUB CONTROL POINT IN RECALL.
  17504.  
  17505. JRNL2 SX4 B4
  17506. LX0 36
  17507. SX7 JRNL3 RETURN ADDRESS
  17508. SX3 B5
  17509. BX6 X5+X0
  17510. LX3 18
  17511. IX7 X7+X3 ADD JOURNAL FILE BIAS
  17512. LX4 36
  17513. SA6 B2+RCLA RECALL STATUS WORD 2
  17514. BX7 X7+X4
  17515. SA7 A6-B1 RECALL STAUS WORD 1
  17516. EQ TRCL PLACE SUB CP ON RECALL
  17517.  
  17518. * PROCESS SUB CP RETURN FROM RECALL ON JOURNAL REQUEST.
  17519.  
  17520. JRNL3 LX1 -18
  17521. SA2 A1+B1 RECALL STATUS WORD 2
  17522. MX3 24
  17523. SB5 X1 JOURNAL FILE FET
  17524. LX1 -18
  17525. BX5 -X3*X2 START OF MESSAGE AREA AND LENGTH
  17526. SB3 TSSC
  17527. SB4 X1 ORIGIN CODE
  17528. LX2 -36
  17529. SX0 X2 C.B. IF TASK AFFILIATED
  17530. SX2 B5
  17531. EQ JRNL1 TRY JOURNAL REQUEST AGAIN
  17532.  
  17533. * PROCESS ANY TAPE ERRORS/END OF TAPE CONDITIONS.
  17534.  
  17535. JRNL4 SA1 X2 CHECK FOR ERROR CODES
  17536. MX6 -4
  17537. LX1 -10
  17538. BX6 -X6*X1
  17539. ZR X6,JRNL6 IF NO ERROR CODES
  17540. SX6 B3
  17541. BX7 X7-X7
  17542. SA0 JRNL5 RETURN ADDRESS
  17543. SA6 B2+RCL
  17544. SB6 B0
  17545. EQ ERP PROCESS ERROR CONDITION
  17546.  
  17547. JRNL5 SA1 B2+RCL
  17548. SB5 X2 JOURNAL FILE FET ADDRESS
  17549. SB3 X1 RETURN ADDRESS
  17550.  
  17551. * SET HEADER AND WRITE UNIT RECORD JOURNAL FILE ENTRY.
  17552.  
  17553. JRNL6 RJ CLJF CLEAR LOCKS ON JOURNAL FILES
  17554. SB6 X5
  17555. NZ B4,JRNL7 IF REQUEST NOT FROM A SUB CP
  17556. SB6 X5+B2 ABSOLUTE FWA OF JOURNAL DATA
  17557. SX7 X5+
  17558. SA7 B2+JTSC SAVE RELATIVE ADDRESS
  17559. JRNL7 SA1 B6-B1
  17560. SA2 A1-B1 SAVE PRIOR 3 WORDS
  17561. BX6 X1
  17562. LX7 X2
  17563. SA6 B2+JTSC+1 SAVE IN SYSTEM AREA IN FRONT OF TASK
  17564. SA3 A2-B1
  17565. SA7 A6+B1
  17566. BX6 X3
  17567. SA6 A7+1
  17568. MX3 -18
  17569. SA2 PDATE PACKED TIME
  17570. BX2 -X3*X2
  17571. SX6 B0
  17572. SX1 B6+ SAVE (B6)
  17573. SB6 12B
  17574. EQ B4,B6,JRNL7.1 IF MESSAGE ORIGIN CODE
  17575. NZ B4,JRNL8 IF NOT TASK AFFILIATED
  17576. JRNL7.1 SA4 B7+2 GET TASK INDEX
  17577. MX7 12
  17578. BX4 X7*X4 TASK INDEX
  17579. SX6 377777B
  17580. LX4 12
  17581. TA3 X4-1,VTLD GET TASK NAME
  17582. BX6 -X6*X3
  17583. JRNL8 BX6 X6+X2
  17584. SB6 X1 RESTORE (B6)
  17585. SA6 B6-2 TASK NAME + PACKED TIME
  17586. BX4 X4-X4
  17587. SX7 B0
  17588. ZR X0,JRNL9 IF NOT TASK AFFILIATED
  17589. MX7 -24
  17590. SA3 X0+CMBHL TRANSACTION SEQUENCE NUMBER
  17591. SA4 A3+B1 TERMINAL NAME
  17592. BX7 -X7*X3
  17593. JRNL9 LX7 -24
  17594. SX3 B4 ORIGIN CODE
  17595. LX5 -18
  17596. LX3 30
  17597. SX2 X5+3 LENGTH OF JOURNAL ENTRY
  17598. MX6 42
  17599. IX7 X7+X2
  17600. BX6 X6*X4 TERMINAL NAME
  17601. IX7 X7+X3
  17602. SA7 B6-3
  17603. SA6 A6+B1
  17604. NZ B4,JRNL13 IF NOT FROM A SUB CONTROL POINT
  17605. LX5 18
  17606.  
  17607. * SET LOCK OUT ON STORAGE MOVE AND FILE FOR DURATION OF WRITE.
  17608.  
  17609. SA1 JRNLB GET STATUS OF NON BUFFERED JOURNAL FILES
  17610. SX7 B5 JOURNAL FILE FET ADDRESS
  17611. SX6 X1
  17612. NZ X6,JRNL10 IF FIELD IN USE - TRY NEXT FIELD
  17613. BX6 X1+X7
  17614. MX4 1
  17615. EQ JRNL12 SET LOCK OUT
  17616.  
  17617. JRNL10 LX1 -18
  17618. SX2 X1
  17619. SX7 B5 JOURNAL FILE FET ADDRESS
  17620. BX6 X1+X7
  17621. NZ X2,JRNL11 IF FIELD IN USE - TRY NEXT FIELD
  17622. LX6 18
  17623. MX4 1
  17624. EQ JRNL12 SET LOCK OUT
  17625.  
  17626. JRNL11 LX1 -18
  17627. SX2 X1+
  17628. BX6 X1+X7
  17629. NZ X4,JRNL2 IF ALL FIELDS IN USE - PLACE TASK ON RECALL
  17630. LX6 18+18
  17631. MX4 1
  17632. JRNL12 SA3 B7 SUB CP CONTROL WORD 1
  17633. SA6 A1 SET FILE LOCK OUT
  17634. BX7 X4+X3
  17635. SA7 B7 SET STORAGE MOVE LOCK OUT
  17636. SA1 B5+5
  17637. MX4 -18
  17638. SX3 B7 SUB CONTROL POINT AREA
  17639. BX7 X4*X1
  17640. BX7 X7+X3
  17641. LX5 -18
  17642. SA7 A1 SET FLAG TELLING WHICH SUB CP USING FILE
  17643.  
  17644. * SET UP FET FOR WRITE.
  17645.  
  17646. JRNL13 SA1 B5+B1 FIRST
  17647. SA2 B5+FEMGW
  17648. BX3 X3-X3
  17649. MX4 60-FEFRN
  17650. SX7 B6-3
  17651. NG X2,JRNL13.1 IF TAPE
  17652. SX6 B5+FECRW SET RETURN RANDOM INDEX ADDRESS
  17653. SA6 B5+FERRW
  17654. SX3 B1
  17655. BX6 X6-X6
  17656. SA6 B5+FECRW CLEAR OLD RANDOM INDEX
  17657. SA7 B5+FEOOW
  17658. JRNL13.1 LX3 FERMS-0 ADD RANDOM ACCESS FLAG
  17659. BX6 X4*X1 MASK OFF OLD FIRST ADDRESS
  17660. SA7 A1+2 OUT
  17661. BX6 X6+X7
  17662. BX6 X3+X6
  17663. SB6 X5+3 NUMBER OF WORDS TO JOURNAL
  17664. SX7 X7+B6
  17665. SA7 A7-B1 IN
  17666. SA3 B5+4 LIMIT
  17667. SA6 A1
  17668. BX4 X4*X3
  17669. SX7 X7+1
  17670. BX7 X7+X4
  17671. SA7 A3
  17672. SX3 B6-MAXJL-1
  17673. PL X3,TERR9 IF TOO MANY WORDS TO JOURNAL
  17674. WRITER B5+ INITIATE WRITE ON JOURNAL FILE
  17675. RJ DCPT DROP CPU FOR TASK
  17676. EQ TSSC TIME SLICE SUBCP
  17677.  
  17678.  
  17679. * PROCESS BUFFERED JOURNAL FILE ENTRIES.
  17680.  
  17681. JRNL14 SX2 X5 START OF MESSAGE
  17682. NZ B4,JRNL15 IF NOT TASK AFFILIATED
  17683. SX2 X2+B2 ADD SUB CONTROL POINT BIAS
  17684. JRNL15 LX5 -18
  17685. SA1 X2-1 SAVE THREE WORDS PRIOR TO JOURNAL MESSAGE
  17686. SA4 A1-B1 SECOND WORD TO SAVE
  17687. BX6 X1
  17688. SA6 JRNLA STORAGE AREA FOR WORDS SAVED
  17689. BX7 X4
  17690. SA3 A4-B1 THIRD WORD TO SAVE
  17691. SA7 A6+B1
  17692. BX6 X3
  17693. SA6 A7+B1
  17694. MX3 -18
  17695. SA1 PDATE PACKED TIME
  17696. MX7 12
  17697. BX1 -X3*X1
  17698. SX6 B0
  17699. SB6 12B
  17700. EQ B4,B6,JRNL15.1 IF MESSAGE ORIGIN CODE
  17701. NZ B4,JRNL16 IF NOT TASK AFFILIATED
  17702. JRNL15.1 SA4 B7+2 GET TASK INDEX
  17703. MX6 42
  17704. BX4 X7*X4 TASK INDEX
  17705. LX4 12
  17706. TA3 X4-1,VTLD GET TASK NAME
  17707. BX6 X6*X3
  17708. JRNL16 BX6 X6+X1 TASK NAME + PACKED TIME
  17709. SX3 X5+3 LENGTH OF JOURNAL ENTRY
  17710. BX4 X4-X4
  17711. SX7 B0
  17712. ZR X0,JRNL17 IF NOT TASK AFFILIATED
  17713. MX7 -24
  17714. SA1 X0+CMBHL TRANSACTION SEQUENCE NUMBER
  17715. SA4 A1+B1 TERMINAL NAME
  17716. BX7 -X7*X1
  17717. JRNL17 SA6 X2-2 STORE TASK NAME
  17718. LX7 -24
  17719. SX5 B4 ORIGIN CODE
  17720. LX5 30
  17721. BX7 X7+X3 SEQUENCE NUMBER AND LENGTH
  17722. MX1 42
  17723. IX7 X7+X5 ADD ORIGIN CODE
  17724. BX6 X1*X4 TERMINAL NAME
  17725. SA7 A6-B1
  17726. SA6 A6+B1
  17727. SX5 A7 ADDRESS OF FIRST WORD OF JOURNAL MESSAGE
  17728. SX1 X3-MAXJL-1
  17729. PL X1,TERR9 IF TOO MANY WORDS TO JOURNAL
  17730. SA0 B3 SAVE RETURN ADDRESS
  17731. SA1 B5+FEMGW
  17732. LX1 59-FEMGS
  17733. NG X1,JRNL18 IF TAPE
  17734. RJ JSC JOURNAL STATUS CHECK
  17735. SX7 B1 SET RANDOM ACCESS FLAG
  17736. SA2 B5+FERMW
  17737. LX7 FERMS-0
  17738. BX7 X2+X7
  17739. SA7 A2
  17740. BX6 X6-X6 CLEAR CURRENT EOI RANDOM INDEX
  17741. SA1 B5+FEOUW SAVE OLD OUT POINTER
  17742. SA6 B5+FECRW
  17743. SX7 A6
  17744. BX6 X1
  17745. SA7 B5+FERRW SET RETURN EOI INDEX ADDRESS
  17746. SA6 B5+FEOOW
  17747. JRNL18 WRITEW B5,X5,X3 WRITE JOURNAL FILE
  17748. RJ RSP RESTORE (B2) AND (B7)
  17749. SA1 JRNLA RESTORE HEADER WORDS
  17750. SA2 A1+B1
  17751. SA3 A2+B1
  17752. BX6 X2
  17753. SB3 A0+ RESTORE RETURN ADDRESS
  17754. BX7 X1
  17755. SA6 X5+B1 SECOND WORD OF HEADER
  17756. SA7 A6+B1 THIRD WORD
  17757. BX7 X3
  17758. SA7 A6-B1 FIRST WORD
  17759. JP B3 RETURN
  17760.  
  17761. JRNLA BSS 3 STORAGE AREA FOR WORDS DESTROYED BY JOURNAL
  17762. FILE HEADER
  17763.  
  17764. JRNLB BSSZ 1 WORD FOR NON BUFFERED JOURNAL FILE LOCKS
  17765. JSC SPACE 4,15
  17766. ** JSC - JOURNAL FILE STATUS CHECK.
  17767. *
  17768. * ENTRY (B5) = FWA OF FET.
  17769. * (X3) = LENGTH OF DATA IN WORDS TO JOURNAL.
  17770. *
  17771. * EXIT FILE IS READY TO JOURNAL.
  17772. *
  17773. * USES X - 1, 2, 4.
  17774. * A - 1, 2, 4.
  17775. * B - 3, 4, 6.
  17776. *
  17777. * MACROS RECALL.
  17778.  
  17779.  
  17780. JSC SUBR ENTRY/EXIT
  17781. SA1 B5 CHECK COMPLETION FLAG
  17782. LX1 59-FECLS
  17783. SA2 B5+FEINW GET IN
  17784. NG X1,JSCX IF PREVIOUS REQUEST COMPLETED
  17785. SA1 B5+FEOUW GET OUT
  17786. SX2 X2
  17787. SX1 X1
  17788. SB4 X2
  17789. SB6 X1
  17790. EQ B4,B6,JSCX IF BUFFER EMPTY
  17791. GT B6,B4,JSC2 IF OUT IS GREATER THAN IN
  17792. SB3 X3
  17793. SA4 B5+FEFRW GET FIRST
  17794. SX4 X4
  17795. IX1 X1-X4 SPACE BETWEEN FIRST AND OUT
  17796. SA4 B5+FELIW GET LIMIT
  17797. SX4 X4
  17798. IX2 X4-X2 SPACE BETWEEN IN AND LIMIT
  17799. IX1 X1+X2
  17800. SB6 X1-1 AVAILABLE SPACE
  17801. GE B6,B3,JSCX IF ENOUGH SPACE
  17802. JSC1 RECALL B5
  17803. EQ JSCX RETURN
  17804.  
  17805. JSC2 SB4 B6-B4
  17806. SB3 X3
  17807. GE B4,B3,JSCX IF ENOUGH SPACE
  17808. EQ JSC1 RECALL
  17809. ERP SPACE 4,10
  17810. ** ERP PROCESS READ/WRITE FILE ERRORS.
  17811. *
  17812. * ENTRY (A0) = RETURN ADDRESS (POSITIVE IF JOURNAL FILE).
  17813. * (X2) = FET ADDRESS.
  17814. * (X7) = CIO FUNCTION CODE (NEGATIVE IF WITH AUTO RECALL)
  17815. * = 0 IF RETURN TO (A0) AFTER ERROR PROCESSING.
  17816. * (B6) = FWA ADDRESS WORKING BUFFER.
  17817. * (B7) = NUMBER OF WORDS LEFT TO TRANSFER.
  17818. *
  17819. * USES X - 1, 2, 3, 4, 6, 7.
  17820. * A - 1, 2, 3, 4, 6, 7.
  17821. * B - 3.
  17822.  
  17823.  
  17824. ERP5 SB3 A0
  17825. JP B3 RETURN
  17826.  
  17827. ERP SA1 X2 GET ERROR CODE
  17828. MX6 -5
  17829. SB3 A0 CHECK FOR NON JOURNAL FILE ERROR
  17830. LX6 10
  17831. BX4 -X6*X1
  17832. BX6 X6*X1 CLEAR OUT ERROR CODE
  17833. PL B3,ERP1 IF ERROR ON JOURNAL FILE WRITE
  17834. SB3 -B3
  17835. SX3 X4 ERROR CODE
  17836. BX4 X4-X4
  17837. SA0 B3 ERROR RETURN ADDRESS
  17838. ERP1 SA6 A1
  17839. ZR X4,ERP5 IF NO ABNORMAL CONDITIONS
  17840. SX3 B6
  17841. SA5 A1+1
  17842. PL X5,ERP5 IF NOT A TAPE FILE
  17843. SX6 B7
  17844. SA7 ERPA+1 SAVE X7
  17845. LX3 18
  17846. SX1 6000B
  17847. BX6 X3+X6 SAVE B6 AND B7
  17848. BX1 -X1*X4
  17849. NZ X1,ERP5 IF OTHER THAN PARITY/END OF REEL ERROR
  17850. SA6 ERPA
  17851. SA1 X2+B1 FIRST
  17852. SA3 A1+B1 SAVE IN AND OUT POINTERS
  17853. SX6 X1
  17854. SA4 A3+B1
  17855. LX3 18
  17856. SA6 A3 SET OUT = IN = FIRST
  17857. BX7 X3+X4
  17858. SA6 A4
  17859. SA7 ERPB
  17860. SA4 CIO= CIO= RETURN ADDRESS
  17861. CLOSER X2,UNLOAD,R CLOSE OUT TAPE FILE
  17862. SA1 ASEQ
  17863. BX7 X4
  17864. MX6 36
  17865. SA7 CIO= RESTORE CIO= RETURN ADDRESS
  17866. NZ X1,ERP3 IF TAPE(S) PREASSIGNED
  17867. SA1 X2
  17868. SX3 100B+1RT
  17869. LX3 -6 REASSIGN *TXXJORN* TO *XXJORN*
  17870. BX6 X6*X1
  17871. LX6 -6
  17872. BX6 X6+X3 *TXXJORN*
  17873. SA6 A1
  17874. RENAME X2,X1 RENAME DISK JOURNAL FILE TO *XXJORN*
  17875. ERP2 SA1 ERPB RESTORE IN AND OUT
  17876. SX6 X1
  17877. LX1 -18
  17878. SA6 X2+3 OUT
  17879. SX7 X1
  17880. SA7 A6-B1 IN
  17881. SA4 CIO=
  17882. WRITER X2,R EMPTY BUFFER WITH EOR WRITE
  17883. BX7 X4
  17884. SA7 A4 RESTORE ORIGINAL CIO= EXIT ADDRESS
  17885. SA1 ERPA
  17886. SB7 X1+ RESTORE B6 AND B7
  17887. SA3 A1+B1
  17888. LX1 -18
  17889. SB6 X1
  17890. BX7 X3 RESTORE X7
  17891. ZR X3,ERP5 IF NOT CALLED BY CIO=
  17892. JP CIO=+1 RESTART CIO=
  17893.  
  17894. * ASSIGN NEW TAPE TO FILE.
  17895.  
  17896. ERP3 SX3 X1
  17897. NZ X3,ERP4 IF FET ADDRESS IN LOWER FIELD
  17898. AX1 18
  17899. ERP4 SA3 X1
  17900. AX1 18 CLEAR FET ADDRESS
  17901. BX7 X1
  17902. SA1 X2 *XXJORN* FILE NAME
  17903. BX6 X3
  17904. SA7 ASEQ
  17905. SA6 X2
  17906. RENAME X2,X1 RENAME SCATCH TAPE FILE TO JOURNAL FILE
  17907. JP ERP2 CONTINUE WRITE ON NEW TAPE
  17908.  
  17909. ERPA BSS 2 STORAGE FOR B6/B7 AND X7 ENTRY PARAMETERS
  17910. ERPB BSS 1 STORAGE FOR IN AND OUT FET POINTERS
  17911. TITLE UPDATE K-DISPLAY.
  17912. KDIS SPACE 4,10
  17913. ** KDIS - UPDATE OPERATOR *K-DISPLAY*.
  17914. *
  17915. * KDIS IS PERIODICALLY CALLED TO UPDATE THE OPERATOR
  17916. * *K-DISPLAY*. IF PREVIOUSLY ENTERED COMMANDS ARE INCOMPLETED,
  17917. * THEN THE PARAMETERS ARE RESTORED AND THE ROUTINE ENTERED
  17918. * FOR COMPLETION.
  17919. *
  17920. * ENTRY (KBUF) .NE. 0 - IF OPERATOR COMMAND TO BE EXECUTED.
  17921. * (KDISA) .NE. 0 - IF RETRY OF INCOMPLETED COMMAND.
  17922. *
  17923. * EXIT TO *IDL1* - IF RETRY OF *ITASK* IDLE DOWN REQUEST.
  17924. * TO *PCMD* - IF *K-DISPLAY* COMMAND PRESENT.
  17925. * TO *ULD0* - IF RETRY OF TASK LIBRARY DIRECTORY UPDATE.
  17926. * (SBUF - SBUF+1) UPDATED - IF TRANSFER TO *ULD0*.
  17927. *
  17928. * USES A - 1, 3, 4, 6, 7.
  17929. * X - 1, 2, 3, 4, 5, 6, 7.
  17930. * B - 3.
  17931. *
  17932. * CALLS CDD, COD, LOVL, RCPU, RSP.
  17933. *
  17934. * MACROS PDATE.
  17935.  
  17936.  
  17937. KDIS SUBR ENTRY/EXIT
  17938. SA5 KBUF
  17939. SX7 A5+
  17940. SA7 PCMDC
  17941. NZ X5,PCMD IF *K-DISPLAY* COMMAND PRESENT
  17942.  
  17943. * UPDATE K-DISPLAY.
  17944.  
  17945. KDIS1 SA1 AVAILCM UNUSED FIELD LENGTH
  17946. RJ COD CONVERT TO OCTAL DISPLAY CODE
  17947. SA6 KUNSF+3 UNUSED FIELD LENGTH
  17948. SA1 MFL MAXIMUM REQUESTABLE FIELD LENGTH
  17949. RJ COD CONVERT TO OCTAL DISPLAY CODE
  17950. SA6 KMXMF+3
  17951. SA1 TSEQ TRANSACTION SEQUENCE NUMBER
  17952. RJ CDD CONVERT TO DECIMAL DISPLAY CODE
  17953. SA6 KCRSN+1
  17954. SA6 KSEQ+1 SET IDLE *K-DISPLAY*
  17955. SA1 GTDL GLOBAL TASK DUMP LIMIT
  17956. SA4 KDISD *DUMPS LOST*
  17957. BX6 X4
  17958. NG X1,KDIS2 IF GLOBAL TASK DUMP FLAG SET
  17959. RJ CDD CONVERT TO DECIMAL DISPLAY CODE
  17960. KDIS2 SA6 KGTDL+3 *GTDL* INTO K-DISPLAY
  17961. RJ RSP RESTORE SUBCONTROL POINT REGISTERS
  17962. PDATE PDATE UPDATE PACKED DATE/TIME
  17963.  
  17964. * CHECK FOR TIME DELAYED ROUTINE RESTARTS.
  17965.  
  17966. SA1 KDISA TIME DELAY STATUS WORD
  17967. ZR X1,KDIS4 IF NO RETRIES
  17968. MX2 42
  17969. SB3 X1 RETRY IDLE DOWN FLAG
  17970. BX7 X2*X1
  17971. SA7 A1 CLEAR STATUS
  17972. ZR B3,KDIS3 IF NOT IDLE DOWN RESTART
  17973. SA1 LOVE
  17974. RJ LOVL LOAD OVERLAY
  17975. EQ IDL1 RETRY IDLE DOWN *ITASK* REQUEST
  17976.  
  17977. * PROCESS RETRY OF *LIBTASK,TT* REQUEST.
  17978.  
  17979. KDIS3 BX7 X7-X7 CLEAR STATUS
  17980. MX6 42
  17981. SA7 A1
  17982. BX6 X6*X1 USER NAME
  17983. SA6 SBUF+1
  17984. SA1 LOVF LOAD OVERLAY
  17985. SA3 KDISC READ TASK LIBRARY NAME
  17986. SX2 B1
  17987. BX6 X3
  17988. BX1 X1+X2
  17989. SA6 A6+B1
  17990. SA7 A7+1
  17991. RJ LOVL LOAD OVERLAY
  17992. SA4 SBUF
  17993. EQ ULD0 RETRY TASK LIBRARY UPDATE
  17994.  
  17995. * CHECK FOR TASK NEEDING SCREEN REFRESH.
  17996.  
  17997. KDIS4 SA1 KDISB
  17998. BX2 X1 C. B. ADDRESS OF DISPLAY TASK
  17999. LX1 59-56
  18000. NG X2,KDISX IF NO K-DISPLAY TASK ACTIVE
  18001. PL X1,KDISX IF NO SCREEN REFRESHING NEEDED
  18002. SA1 KDISF TIME OF THE LAST *CTI8* REQUEST
  18003. SA2 ITIME
  18004. SX3 RFRTL
  18005. MX6 24
  18006. IX1 X2-X1 TIME SINCE LAST DISPLAY
  18007. BX1 -X6*X1
  18008. IX3 X1-X3
  18009. NG X3,KDISX IF NOT ENOUGH TIME ELAPSED
  18010. SB2 B0
  18011. SA2 KDISG
  18012. SA4 X2
  18013. SB3 KDISX EXIT ADDRESS
  18014. MX6 -18
  18015. BX4 -X6*X4 TASK RA
  18016. SX4 X4-NUAPL
  18017. SB6 X2+
  18018. EQ RCPU REQUEST CPU FOR THE TASK
  18019.  
  18020. KDISA BSS 1 RESTART ROUTINE AFTER TIME DELAY
  18021.  
  18022. * KDISB - TASK *K-DISPLAY* INTERLOCK WORD.
  18023. *
  18024. *T 1/R,1/I,1/K,1/P,20/,18/MADDR,18/CBADDR
  18025. *
  18026. * R = DISPLAY TASK HAS BEEN SCHEDULED BUT
  18027. * HAS NOT YET ACQUIRED THE SCREEN(SCPT=0).
  18028. * I = DISPLAY TASK INPUT READY.
  18029. * K = *KDIS* IS ASSIGNED TO THE *K-DISPLAY*.
  18030. * P = THE TASK IS PERIODICALLY RECALLED TO REFRESH *K-DISPLAY,
  18031. * EVEN IF THERE IS NO INPUT(SEE *RFRTL*).
  18032. * MADDR = FWA OF MESSAGE WITHIN TASK FL.
  18033. * CBADDR = C.B. ADDRESS OF THE DISPLAY TASK
  18034.  
  18035. KDISB BSS 1 TASK *K-DISPLAY* INTERLOCK WORD.
  18036. KDISC BSS 1 PARAMETER FOR RESTART ROUTINE
  18037. KDISD DATA H*DUMPS LOST*
  18038. KDISE BSS 1 NAME OF TASK DRIVING *K-DISPLAY*
  18039. KDISF BSS 1 TIME OF LAST *CTI8* REQUEST BY
  18040. KDISG BSS 1 SUBCP ADDRESS
  18041. * DISPLAY-DRIVING TASK.
  18042. ASEQ BSSZ 1 ASSIGNED EQUIPMENT
  18043. PCMD SPACE 4,20
  18044. ** PCMD PROCESS OPERATOR K-DISPLAY COMMAND.
  18045. *
  18046. * PCMD USES UPC TO UNPACK THE COMMAND, SO ANY LEGAL
  18047. * COMMAND FORMAT CAN BE USED IN DELIMITING A
  18048. * K-DISPLAY COMMAND.
  18049. *
  18050. * ENTRY (X5) = FIRST WORD OF COMMAND.
  18051. * (A5) = ADDRESS OF FIRST WORD.
  18052. * (KBUF - KBUF+4) = K-DISPLAY COMMAND IF FROM CONSOLE.
  18053. * (PCMDA - PCMDA+7) = K-DISPLAY COMMAND IF FROM TASK.
  18054. * (PCMDB) = IF TASK INITIATED, 6/0,18/TO,18/SA,18/SCPA.
  18055. * = IF FROM CONSOLE, 60/0.
  18056. * TO = TERMINAL ORDINAL.
  18057. * SA = START OF SYSTEM AREA FOR TASK.
  18058. * SCPA = SUB-CONTROL POINT AREA FOR TASK.
  18059. * (PCMDC) = ADDRESS OF COMMAND BUFFER.
  18060. *
  18061. * USES X - 1, 2, 4, 6, 7.
  18062. * A - 1, 2, 4, 6, 7.
  18063. * B - 2, 3, 7.
  18064. *
  18065. * CALLS DSDM, LOVL, PTK, UPC, ZTB.
  18066. *
  18067. * MACROS MOVE.
  18068.  
  18069.  
  18070. PCMD SA1 PCMDB
  18071. NZ X1,PCMD0 IF TASK INITIATED
  18072. MOVE 5,KBUF,KINP+1 ECHO *DSD* INPUT TO K-DISPLAY
  18073. SA1 KDISB
  18074. ZR X1,PCMD0 IF K-DISPLAY NOT ASSIGNED TO ANY TASK
  18075. NG X1,PCMD4 IF SUBCP ADDRESS NOT IN *KDISG*
  18076. LX1 59-57
  18077. NG X1,PCMD0 IF *KDIS* HAS THE SCREEN
  18078. SA2 KDISG SUBCP ADDRESS
  18079. SA4 X2+ FIRST WORD OF SUBCP ENTRY
  18080. MOVE 5,KBUF,X4+TDUA ECHO PACKED INPUT TO C. B.
  18081. PCMD0 SA1 KBUF ALLOW MISSING TERMINATOR
  18082. SB3 5
  18083. SB2 B0+
  18084. PCMD0.1 RJ ZTB CONVERT TRAILING ZEROES TO BLANKS
  18085. SA6 A1
  18086. SB2 B2+B1
  18087. SA1 A1+1
  18088. LT B2,B3,PCMD0.1 IF NOT END OF INPUT BUFFER
  18089. SA5 A5+
  18090. SX6 B0+
  18091. SB7 SBUF ADDRESS TO PLACE FIRST PARAMETER
  18092. SA6 B7+ CLEAR FIRST WORD OF BUFFER
  18093. RJ UPC UNPACK K-DISPLAY COMMAND
  18094. RJ PTD PROCESS TASK K-DISPLAY, IF ANY
  18095. NZ X6,PCMD3 IF ERROR IN COMMAND FORMAT
  18096. SA1 SBUF K-DISPLAY COMMAND
  18097. SX2 B1
  18098. LX2 17
  18099. BX1 X2+X1
  18100. MX6 24
  18101. SA2 KILL BLANK OUT ERROR MESSAGE LINE
  18102. SA4 PCMDI
  18103. BX7 X4
  18104. BX2 X6*X2 SAVE COORDINATES
  18105. BX6 -X6*X4 EXTRACT TRAILING BLANKS
  18106. BX6 X2+X6
  18107. SA7 A2+1
  18108. SB2 B6+
  18109. SA6 A2+
  18110. RJ LOVL LOAD OVERLAY AND PROCESS COMMAND
  18111.  
  18112. PCMD1 SX7 KDM1
  18113. EQ DSDM ISSUE *INCORRECT STATEMENT.* MESSAGE
  18114.  
  18115. PCMD2 SX7 KDM2
  18116. EQ DSDM ISSUE *DROP IGNORED.* MESSAGE
  18117.  
  18118. PCMD3 SX7 KDM3
  18119. EQ DSDM ISSUE *FORMAT MESSAGE.* MESSAGE
  18120.  
  18121. PCMD4 SX7 KDM4
  18122. EQ DSDM ISSUE *SYSTEM BUSY.* MESSAGE
  18123.  
  18124. PCMD6 SX7 KDM6
  18125. EQ DSDM ISSUE *NOT AVAILABLE.* MESSAGE
  18126.  
  18127.  
  18128.  
  18129. * COMMON RETURN ADDRESS FOR COMMAND PROCESSORS.
  18130.  
  18131. PCMDX SA1 PCMDB
  18132. BX7 X7-X7
  18133. SA7 A1
  18134. SA7 KBUF REMOVE ENTRY FROM BUFFER
  18135. ZR X1,KDIS1 IF COMMAND NOT FROM A TASK
  18136. SB7 X1
  18137. LX1 -18 RESTORE B2 AND B7
  18138. SB2 X1+
  18139. EQ TSSC ENTER TASK SWITCHING LOOP
  18140.  
  18141. * ENTRY POINT FOR POST LIBTASK TT REQUEST.
  18142.  
  18143. PCMD7 SB3 PCMD8 RETURN ADDRESS FROM *ESCP*
  18144. SA1 PCMDD SUBCONTROL POINT ADDRESS
  18145. SB6 X1
  18146. BX7 X7-X7 CLEAR SUBCP ADDRESS AND LIBTASK ACTIVE
  18147. SA7 A1+
  18148. SA7 PCMDF
  18149. EQ ESCP1 RELEASE MEMORY AND SUBCONTROL POINT
  18150.  
  18151. * TASK LIBRARY UPDATE COMPLETE.
  18152.  
  18153. PCMD8 SB5 -PCMDE COMPLEMENT OF FWA OF MESSAGE
  18154. RJ PNM PUT NAME IN MESSAGE
  18155. EQ TSSC EXIT TO SWITCHING LOOP
  18156.  
  18157. * TASK LIBRARY UPDATE FAILED.
  18158.  
  18159. PCMD9 SA1 PCMDD SUBCONTROL POINT ADDRESS
  18160. BX7 X7-X7 CLEAR SUBCP ADDRESS AND LIBTASK ACTIVE
  18161. SA7 A1+
  18162. SA7 PCMDF
  18163. ZR X1,TSSC IF NO SUBCP PRESENT
  18164. SB3 TSSC RETURN ADDRESS
  18165. SB6 X1 SUBCP ADDRESS
  18166. EQ ESCP1 RELEASE MEMORY AND SUBCONTROL POINT
  18167.  
  18168. PCMDA BSS 8 TASK INITIATED K-DISPLAY COMMAND BUFFER
  18169. PCMDB BSSZ 1 TASK INITIATED K-DISPLAY SAVE AREA
  18170. PCMDC BSS 1 ADDRESS OF COMMAND BUFFER
  18171. PCMDD BSSZ 1 STORAGE FOR SUBCONTROL POINT ADDRESS
  18172. PCMDE DATA C* LIBRARY UPDATED - XXXXXXX, +++++++.*
  18173. PCMDF BSSZ 1 LIBTASK ACTIVE FLAG
  18174. PCMDG BSSZ 1 USER NAME
  18175. PCMDH BSSZ 1 TASK LIBRARY NAME
  18176. PCMDI DATA 10H
  18177. PNM SPACE 4,20
  18178. ** PNM - PUT NAME IN MESSAGE.
  18179. *
  18180. * ENTRY (B5) = COMPLEMENT OF FWA OF MESSAGE.
  18181. * (PCMDG) = USER NAME.
  18182. * (PCMDH) = TASK LIBRARY NAME.
  18183. *
  18184. * EXIT (B2) = FWA OF ACTIVE TASK SYSTEM AREA.
  18185. * (B7) = FWA OF ACTIVE TASK SUBCP TABLE.
  18186. *
  18187. * USES X - 1.
  18188. * B - 2, 3, 5.
  18189. * A - 1.
  18190. *
  18191. * CALLS RSP, SNM.
  18192. *
  18193. * MACROS MESSAGE.
  18194.  
  18195.  
  18196. PNM SUBR ENTRY/EXIT
  18197. SB2 1RX REPLACEMENT CHARACTER
  18198. SA1 PCMDH TASK LIBRARY NAME
  18199. SB3 DAYB ALTERNATIVE ASSEMBLY AREA
  18200. RJ SNM SET NAME IN MESSAGE
  18201. SB5 DAYB FWA OF MESSAGE
  18202. SA1 PCMDG USER NAME
  18203. SB2 1R+ REPLACEMENT CHARACTER
  18204. RJ SNM SET NAME IN MESSAGE
  18205. MESSAGE DAYB,3 DISPLAY DAYFILE MESSAGE
  18206. MESSAGE VERM,1 VERSION NUMBER
  18207. RJ RSP RESTORE SUBCP REGISTERS
  18208. EQ PNMX RETURN
  18209. SPACE 4,25
  18210. ** PTD - PROCESS TASK *K-DISPLAY* INPUT.
  18211. *
  18212. * THIS SUBROUTINE WILL MOVE THE TASK INPUT FROM *SBUF*
  18213. * TO TASK FIELD LENGTH, PLACING IT IN ITS COMMUNICATION
  18214. * BLOCK. THE CPU FOR THE TASK WILL THEN BE REQUESTED.
  18215. *
  18216. * ENTRY (X6) = 0 IF NO ERROR FROM *UPC*.
  18217. * (B6) = NUMBER OF WORDS IN *SBUF*.
  18218. * (SBUF) = UNPACKED TASK INPUT, IF NO ERROR FROM *UPC*.
  18219. *
  18220. * EXIT (X6) = ENTRY VALUE, IF *K-DISPLAY* NOT ASSIGNED TO ANY
  18221. * TASK OR IF *KDIS* HAS THE SCREEN.
  18222. * (KDISB) = BIT 58 SET, IF INPUT MOVED TO TASK FL.
  18223. * TO *PCMD4*, IF PREVIOUS INPUT NOT YET PROCESSED
  18224. * BY THE TASK.
  18225. * TO *PCMDX*, IF CPU FOR THE TASK REQUESTED.
  18226. *
  18227. * USES X - 1, 2, 4, 6, 7.
  18228. * A - 1, 2, 4, 6, 7.
  18229. * B - 3, 6.
  18230. *
  18231. * CALLS RCPU.
  18232.  
  18233.  
  18234. PTD SUBR ENTRY/EXIT
  18235. SA1 KDISB
  18236. ZR X1,PTDX IF *K-DISPLAY* NOT ASSIGNED TO ANY TASK
  18237. MX7 1
  18238. LX1 59-57
  18239. NG X1,PTDX IF *KDIS* HAS THE SCREEN
  18240. LX1 59-58-59+57
  18241. NG X1,PCMD4 IF PREVIOUS INPUT NOT PROCESSED
  18242. BX7 X1+X7 SET *INPUT READY* BIT
  18243. SA2 KDISG SUBCP ADDRESS
  18244. LX7 58-59
  18245. SA7 A1+
  18246. SA1 X2+ FIRST WORD OF SUBCP ENTRY
  18247. ZR X6,PTD2 IF NO ERROR FROM *UPC*
  18248. SA4 PCMDI
  18249. SB3 SBUF+1
  18250. SB6 4
  18251. BX6 X4
  18252. SA6 B3-1 SUBSTITUTE BLANK WORD FOR ILLEGAL COMMAND
  18253. BX6 X6-X6
  18254. PTD1 SA6 B3 CLEAR REST OF BUFFER
  18255. SB6 B6-B1
  18256. SB3 B3+1
  18257. NZ B6,PTD1 IF NOT END OF BUFFER
  18258. SB6 1 SET WORD COUNT TO REFLECT THE BLANK WORD
  18259. PTD2 SB3 B6 SAVE LENGTH OF UNPACKED MESSAGE IN WORDS
  18260. SB6 B6-1
  18261. SA1 X1+TNAM+1 FIRST WORD OF DATA INPUT AREA IN C. B.
  18262. PTD3 SA2 SBUF+B6 MOVE MSG TO COMMUNICATION BLOCK
  18263. BX6 X2
  18264. SA6 A1+B6
  18265. SB6 B6-B1
  18266. PL B6,PTD3 IF NOT ENTIRE MESSAGE MOVED
  18267. BX6 X6-X6
  18268. PTD4 SB6 B3-CBDL
  18269. SB6 -B6 NUMBER OF WORDS TO ZERO OUT IN INPUT AREA
  18270. NG B6,PTD5 IF MESSAGE COMPLETELY FILLS THE INPUT AREA
  18271. ZR B6,PTD5 IF MESSAGE COMPLETELY FILLS THE INPUT AREA
  18272. SA6 A1+B3 CLEAR DATA INPUT AREA
  18273. SB3 B3+B1
  18274. EQ PTD4 CLEAR REST OF DATA INPUT AREA
  18275.  
  18276. PTD5 MX6 -18
  18277. SA4 KDISG
  18278. SB6 X4
  18279. SA4 X4 SUBCP ADDRESS
  18280. BX4 -X6*X4 TASK RA
  18281. SB3 PCMDX
  18282. SB2 B0 CLEAR RESIDUE FROM *UPC*
  18283. SX4 X4-NUAPL
  18284. EQ RCPU REQUEST CPU FOR THE TASK
  18285. KSC1 SPACE 4
  18286. KCTRL1 VFD 1/0,1/1,4/0,18/KBUF,18/0,18/KFRM
  18287. KFRM VFD 12/0,36/0,12/2
  18288. KDL 28,T,(TAF STATUS)
  18289. KCRSN KDL 35,,( )
  18290. KDL 15,K,(TRANSACTION SEQUENCE NUMBER)
  18291. KUNSF KDL 15,K,(UNUSED FIELD LENGTH )
  18292. KMXMF KDL 15,K,(MAXIMUM FIELD LENGTH )
  18293. KGTDL KDL 15,H,(GLOBAL TASK DUMP LIMIT )
  18294. KDL 19,H,(CMDUMP/DSDUMP DEFAULT VALUES)
  18295. KDL 7,H,(OPTION DESCRIPTION)
  18296. KDFWA KDL 3,,( FW = "DFWAM")
  18297. KDL 22,K,(FWA OF TASK MEMORY TO BE DUMPED.)
  18298. KDLWA KDL 3,,( LW = "DLWAM")
  18299. KDL 22,K,(LWA OF TASK MEMORY TO BE DUMPED.)
  18300. KDEXP KDL 3,,( EP = "DEXPM")
  18301. KDL 22,K,(IF EP=1, DUMP EXCHANGE PACKAGE.)
  18302. KDL 22,K,(IF EP=0, DO NOT DUMP EXCHANGE PACKAGE.)
  18303. KDORT KDL 3,,( OQ = "DORTM")
  18304. KDL 22,K,(OUTPUT QUEUE.)
  18305. KDQDS KDL 3,,( QD = "DQDSM")
  18306. KDL 22,K,(QUEUE DESTINATION.)
  18307. KILL KDL 7,M,( )
  18308. KINP KDL 1,I,(
  18309. , )
  18310. BSSZ 1
  18311. SPACE 4,25
  18312. ** DSDM DISPLAY DIAGNOSTIC K-DISPLAY MESSAGE.
  18313. *
  18314. * IF THE K-DISPLAY COMMAND ORIGINATED FROM THE CONSOLE,
  18315. * THE DIAGNOSTIC MESSAGE WILL BE DISPLAYED ON THE K-DISPLAY.
  18316. * IF THE K-DISPLAY COMMAND ORIGINATED FROM A TASK, THE
  18317. * DIAGNOSTIC MESSAGE WILL BE DISPLAYED AT THE ORIGINATING
  18318. * TERMINAL. THIS IS DONE BY SCHEDULING THE SYSTEM TASK,
  18319. * *SYSMSG*. IF THE REQUEST TO SCHEDULE *SYSMSG* IS UNSUC-
  18320. * CESSFUL, THE ORIGINATING TASK IS RECALLED. UPON RETURN,
  18321. * AN ATTEMPT IS MADE TO SCHEDULE *SYSMSG* AGAIN. THIS
  18322. * REPEATS UNTIL *SYSMSG* IS SCHEDULED.
  18323. *
  18324. * ENTRY (X7) = K-DISPLAY MESSAGE CODE.
  18325. * (SBUF) = FIRST WORD OF THE ATTEMPTED K-DISPLAY
  18326. * COMMAND OR ZERO.
  18327. *
  18328. * USES X - 1, 2, 3, 4, 5, 6, 7.
  18329. * A - 1, 2, 3, 4, 5, 6, 7.
  18330. * B - 2, 3, 7.
  18331. *
  18332. * CALLS TRN, TRCL2.
  18333. *
  18334. * MACROS MOVE.
  18335.  
  18336.  
  18337. DSDM SA2 PCMDB
  18338. NZ X2,DSDM1 IF COMMAND IS FROM A TASK
  18339.  
  18340. * SEND A DIAGNOSTIC MESSAGE TO THE CONSOLE.
  18341.  
  18342. SA1 KILL
  18343. SX7 X7-1
  18344. SX4 2
  18345. IX4 X4*X7
  18346. MX3 24
  18347. SA2 X4+DSDMA FIRST WORD OF MESSAGE
  18348. BX1 X3*X1 EXTRACT DISPLAY COORDINATES
  18349. BX2 -X3*X2
  18350. BX7 X1+X2 ADD COORDINATES TO THE MESSAGE
  18351. SA7 A2
  18352. MOVE 2,A2,KILL MOVE MESSAGE TO DISPLAY BUFFER
  18353. EQ PCMDX RETURN
  18354.  
  18355. * SEND A DIAGNOSTIC MESSAGE TO A TERMINAL.
  18356.  
  18357. DSDM1 LX2 -36
  18358. SA5 SBUF FIRST WORD OF ATTEMPTED COMMAND
  18359. SX2 X2 TERMINAL ORDINAL
  18360. ZR X2,PCMDX IF TASK NOT OF TERMINAL ORIGIN
  18361. LX2 18
  18362. DSDM2 SX6 4001B BUFFER FUNCTION CODE
  18363. SA7 DSDMD SAVE THE MESSAGE CODE IN BUFFER
  18364. LX6 48
  18365. BX6 X6+X2
  18366. SX4 3 WORD COUNT
  18367. BX6 X6+X4
  18368. SA6 DSDMC BUFFER CONTROL WORD
  18369. BX7 X5
  18370. SA7 DSDME SAVE FIRST WORD OF ATTEMPTED COMMAND
  18371. SB3 DSDMC FIRST WORD OF THE BUFFER
  18372. SA4 DSDMB TASK NAME TO SCHEDULE
  18373. SX5 CSMSG SYSTEM MESSAGE CODE
  18374. SX7 B0+ SCHEDULE ONLY FROM SYSTEM LIBRARY
  18375. RJ TRN SCHEDULE *SYSMSG*
  18376. NZ X0,PCMDX IF *SYSMSG* WAS SCHEDULED
  18377.  
  18378. * RECALL THE ORIGINATING TASK AND ATTEMPT SCHEDULING LATER.
  18379.  
  18380. SA2 PCMDB RESTORE B2 AND B7
  18381. SB7 X2
  18382. AX2 18
  18383. SA3 DSDMD MESSAGE CODE
  18384. SB2 X2
  18385. LX3 18
  18386. SA4 DSDME FIRST WORD OF ATTEMPTED COMMAND
  18387. SX5 DSDM3
  18388. BX7 X5+X3
  18389. BX6 X4
  18390. SA6 B2+RCLA SAVE ATTEMPTED COMMAND
  18391. EQ TRCL2 RECALL TASK
  18392.  
  18393. * RESTORE THE REGISTERS AND TRY TO SCHEDULE *SYSMSG* AGAIN.
  18394.  
  18395. DSDM3 SA2 B2+CB2C SYSTEM AREA WORD 2
  18396. AX1 18 RESTORE MESSAGE CODE
  18397. SX6 B2 SAVE (B2)
  18398. SX3 B7 SAVE (B7)
  18399. LX6 18
  18400. SX7 X1
  18401. AX2 42 TERMINAL ORDINAL
  18402. BX6 X6+X3
  18403. SA5 B2+RCLA FIRST WORD OF ATTEMPTED COMMAND
  18404. LX2 18
  18405. SA6 PCMDB SAVE B2 AND B7
  18406. EQ DSDM2 TRY TO SCHEDULE *SYSMSG* AGAIN
  18407.  
  18408. * THE FOLLOWING IS A TABLE OF K-DISPLAY COMMAND DIAGNOSTIC
  18409. * MESSAGES WHICH IS ORDER DEPENDENT. A TABLE ENTRY
  18410. * MUST BE 2 WORDS LONG INCLUDING 4 LEADING BLANKS.
  18411.  
  18412. DSDMA DATA H* "KDM1M".*
  18413. DATA H* "KDM2M".*
  18414. DATA H* "KDM3M".*
  18415. DATA H* "KDM4M".*
  18416. DATA H* "KDM6M".*
  18417. DSDMB VFD 42/6LSYSMSG,18/0
  18418. DSDMC VFD 24/0,18/0,18/0 BUFFER CONTROL WORD
  18419. DSDMD BSS 1 K-DISPLAY COMMAND MESSAGE CODE
  18420. DSDME BSS 1 FIRST WORD OF ATTEMPTED COMMAND
  18421. RKP SPACE 4,15
  18422. ** RKP - RESTORE K-DISPLAY POINTER.
  18423. *
  18424. * ENTRY (KDISB) = 24/0,18/FWA OF MESSAGE,18/SUBCP ADDRESS.
  18425. *
  18426. * EXIT (KCTRL1) UPDATED.
  18427. * (X1) AND (X2) RESTORED.
  18428. *
  18429. * USES A - 3, 4, 6.
  18430. * B - 5.
  18431. * X - 1, 2, 3, 4, 6, 7.
  18432. *
  18433. * CALLS NONE.
  18434. *
  18435. * MACROS CONSOLE, MESSAGE.
  18436.  
  18437.  
  18438. RKP SUBR ENTRY/EXIT
  18439. MX7 42
  18440. SA3 KDISG SUBCP ADDRESS
  18441. SA3 X3
  18442. SA4 KDISB
  18443. ZR X4,RKPX IF NO TASK DISPLAY REQUEST
  18444. NG X4,RKPX IF K-DISPLAY TASK SCHEDULED, BUT NOT ACTIVE
  18445. LX4 17-35
  18446. SB5 X3 TASK RA
  18447. SA3 KCTRL1
  18448. SX4 X4+B5 ABSOLUTE K-DISPLAY ADDRESS
  18449. BX6 X7*X3 CLEAR OLD ADDRESS
  18450. BX6 X4+X6 UPDATE FWA OF MESSAGE
  18451. SA6 A3
  18452. BX3 X1 SAVE (X1) AND (X2)
  18453. BX4 X2
  18454. CONSOLE KCTRL1 ISSUE K-DISPLAY
  18455. MESSAGE VERM,1 * VERSION NUMBER.*
  18456. MESSAGE ZWORD,2
  18457. BX1 X3 RESTORE (X1) AND (X2)
  18458. BX2 X4
  18459. EQ RKPX RETURN
  18460. TITLE OVERLAY PROCESSING.
  18461. LOVL SPACE 4,10
  18462. ** LOVL - LOAD AND EXECUTE OVERLAY.
  18463. *
  18464. * ENTRY (X1) = ENTRY POINT NAME.
  18465. *
  18466. *T (X1) 42/ ENTRY POINT NAME,1/K,17/ RT
  18467. * K SET IF K-DISPLAY COMMAND.
  18468. * RT IF SET RETURN TO CALLER - DO NOT EXECUTE OVERLAY.
  18469. *
  18470. * USES A - 1, 2, 3, 4, 7.
  18471. * B - 4, 6.
  18472. * USES X - 1, 2, 3, 4, 6, 7.
  18473. *
  18474. * CALLS SETA, OVL=.
  18475.  
  18476.  
  18477. LOVL SUBR ENTRY/EXIT
  18478. MX6 43
  18479. TA4 -1,VOEP START OF OVERLAY ENTRY POINT NAMES
  18480. BX7 -X6*X1 EXECUTE / NO EXECUTE FLAG
  18481.  
  18482. LOV1 SA4 A4+B1
  18483. ZR X4,LOVLX IF ENTRY POINT NAME NOT FOUND
  18484. BX3 X1-X4
  18485. BX3 X6*X3
  18486. NZ X3,LOV1 IF NO MATCH ON NAME
  18487. LX4 -12
  18488. SA3 LOVA CURRENT OVERLAY IN CORE
  18489. MX6 -4
  18490. BX6 -X6*X4 OVERLAY ORDINAL
  18491. BX3 X3-X6
  18492. SA6 A3 SET NEW OVERLAY NAME
  18493. ZR X3,LOV2 IF OVERLAY IN CORE
  18494.  
  18495. * LOAD AND PRESET OVERLAY.
  18496.  
  18497. SA1 LOVB
  18498. SA2 LWPR SAVE FOR *CMM*
  18499. LX6 59-PRODL*6-5 SHIFT DEPENDS ON PRODUCT NAME
  18500. BX6 X6+X1 OVERLAY NAME
  18501. SA6 TROVL
  18502. BX6 X2
  18503. SA6 LOVH
  18504. OVERLAY TROVL,100B,S,TROVL-1 LOAD OVERLAY
  18505. SA3 LOVH (LWPR)
  18506. SA1 LOVA
  18507. TA2 X1-1,VOREL START OF RELOCATION ADDRESSES
  18508. SB4 X2
  18509. BX6 X3
  18510. LX2 -18
  18511. SA6 LWPR
  18512. SB6 X2-1
  18513. NG B6,LOV2 IF NO INSTRUCTIONS TO RELOCATE
  18514. RJ SETA RELOCATE INSTRUCTIONS
  18515.  
  18516. LOV2 NZ X7,LOVLX IF RETURN TO CALLER REQUESTED
  18517. SA4 A4 CONTROL WORD
  18518. MX7 -12
  18519. BX7 -X7*X4 ENTRY BIAS
  18520. SB6 X7
  18521. JP B6+TROVL
  18522.  
  18523. LOVA CON 0 CURRENT OVERLAY IN CORE
  18524.  
  18525. LOVB VFD 42/0L"PROD",18/0
  18526.  
  18527. LOVC VFD 42/0LDTS,18/0 TASK DUMP PROCESSOR
  18528. LOVD VFD 42/0LECE,18/0 ECS TASK LIBRARY READ ERROR PROCESSOR
  18529. LOVE VFD 42/0LIDLE,1/1,17/1 IDLE DOWN
  18530. LOVF VFD 42/0LULD,18/0 UPDATE TASK LIBRARY DIRECTORY
  18531. LOVG VFD 42/0LCIN,18/0 COMMUNICATION SUBSYSTEM INITIALIZATION
  18532. LOVH BSS 1 (LWPR)
  18533. SETA SPACE 4,10
  18534. ** SETA SET ADDRESSES IN TRANEX INSTRUCTIONS (ADAPTED FROM
  18535. * TELEX - USED WITH INMOD MACRO).
  18536. *
  18537. * ENTRY (B4) = START OF RELOCATION CONTROL TABLE.
  18538. * (B6) = LENGTH OF RELOCATION CONTROL TABLE.
  18539. *
  18540. * USES A - 1, 2, 6.
  18541. * B - 5, 6.
  18542. * X - 1, 2, 3, 4, 6.
  18543.  
  18544.  
  18545. SETA SUBR ENTRY/EXIT
  18546. SET1 SA1 B4+B6 READ THE NEXT RELOCATION WORD
  18547. SB6 B6-B1
  18548. UX4,B5 X1 SET POSITION IN WORD
  18549. SA2 X1 GET WORD
  18550. AX1 18
  18551. SX1 X1
  18552. MX6 -18
  18553. SX3 X1
  18554. PL X1,SET2 IF POSITIVE VAUE WANTED
  18555. BX1 -X1
  18556. SET2 SA1 X1
  18557. PL X3,SET3 IF COMPLEMENT OF ADDRESS WANTED
  18558. BX1 -X1
  18559. SET3 LX4 59-47
  18560. NG X4,SET4 IF LWA WANTED
  18561. AX1 24 GET FWA
  18562. SET4 BX1 -X6*X1
  18563. SX4 B5
  18564. SB5 B5-60
  18565. AX2 X2,B5 POSITION ADDRESS
  18566. BX3 -X6*X2 GET ADDRESS
  18567. BX2 X6*X2 MASK OUT ADDRESS
  18568. SX3 X3
  18569. IX3 X3+X1 GENERATE NEW ADDRESS
  18570. BX3 -X6*X3
  18571. BX2 X2+X3 MERGE ADDRESS
  18572. SB5 X4
  18573. LX6 X2,B5 REPOSITION INSTRUCTION
  18574. SA6 A2
  18575. PL B6,SET1 IF STILL MORE INSTRUCTIONS TO MODIFY
  18576. EQ SETAX RETURN
  18577. TERR TITLE ERROR PROCESSING.
  18578. * TERR FATAL TASK ERROR LIST.
  18579. *
  18580.  
  18581.  
  18582. TERR1 ERROR 1 TASK CEASE WITH REQUESTED ABORT
  18583.  
  18584. TERR2 ERROR 2 RA+1 CALL PARAMETER ADDRESS OUTSIDE FL
  18585.  
  18586. TERR3 ERROR 3 RA+1 CALL WITH ILLEGAL FUNCTION CODE
  18587.  
  18588. TERR4 ERROR 4 SYSTEM REQUEST CALL ERROR
  18589.  
  18590. TERR5 ERROR 5 MORE THAN 5 TASKS IN TASK CHAIN
  18591.  
  18592. TERR6 ERROR 6 INCORRECT TASK NAME
  18593.  
  18594. TERR7 ERROR 7 TERMINAL NAME DOE NOT EXIST
  18595.  
  18596. TERR8 ERROR 8 OUTPUT MESSAGE TOO LONG
  18597.  
  18598. TERR9 ERROR 9 INCORRECT JOURNAL FILE REQUEST
  18599.  
  18600. TERR10 ERROR 10 TASK CEASE WITH OUTSTANDING D.M. REQUESTS
  18601.  
  18602. TERR11 ERROR 11 TASK NOT VALIDATED FOR REQUEST
  18603.  
  18604. TERR12 ERROR 12 TASK BRANCH LIMIT EXCEEDED
  18605.  
  18606. TERR13 ERROR 13 INCORRECT RA(S)+1 CALL PARAMETER
  18607.  
  18608. TERR14 ERROR 14 TOO MANY SYSTEM REQUEST CALLS
  18609.  
  18610. TERR15 ERROR 15 TASK TIME LIMIT EXCEEDED
  18611.  
  18612. TERR16 MX6 1
  18613. BX2 -X6*X5 CLEAR ABORT FLAG
  18614. LX2 59-SCDRS-59+SCTAS
  18615. BX6 -X6*X2 CLEAR DROP FLAG
  18616. LX6 59-59-59+SCDRS
  18617. SA6 A5
  18618. ERROR 16 ABORT FLAG SET
  18619.  
  18620. TERR17 ERROR 17 ERROR IN SUBMIT FILE
  18621.  
  18622. TERR18 ERROR 18 *CALLRTN* NESTED CALL LIMIT EXCEEDED
  18623.  
  18624. TERR19 ERROR 19 SCHEDULING REQUEST WITH D.M. REQUESTS OUT
  18625.  
  18626. TERR20 ERROR 20 INCORRECT WAIT FOR INPUT REQUEST
  18627.  
  18628. TERR21 ERROR 21 *WAITINP* FROM MULTI QUEUED TASK
  18629.  
  18630. TERR22 MX6 1 SET SEND BIT
  18631. BX5 X6+X4
  18632. LX5 59-14-44 CLEAR ABORT BIT
  18633. BX6 -X6*X5
  18634. LX6 45-15-45
  18635. SA6 A4
  18636. ERROR 22 APPLICATION ERROR - NO TERMINAL OUTPUT
  18637.  
  18638. TERR23 MX6 1 CLEAR ABORT FLAG
  18639. BX6 -X6*X5
  18640. LX6 -4
  18641. SA6 A5
  18642. ERROR 23 TOTAL DATA MANAGER ERROR
  18643.  
  18644. * ERROR 24 RESERVED
  18645.  
  18646. TERR25 ERROR 25 TOTAL DATA MANAGER NOT LOADED
  18647.  
  18648. TERR26 ERROR 26 INCORRECT TOTAL INTERLOCK REQUEST
  18649.  
  18650. TERR27 ERROR 27 A SEND TO TERMINAL NOT LOGGED IN
  18651.  
  18652. TERR28 ERROR 28 ABORT TASK FOR ARGUMENT ERROR
  18653.  
  18654. TERR29 ERROR 29 NETWORK REQUEST NOT SUPPORTED
  18655.  
  18656. TERR30 ERROR 30 *CRM* DATA MANAGER NOT LOADED
  18657.  
  18658. TERR31 ERROR 31 *CDCS* NOT AVAILABLE
  18659.  
  18660. TERR32 ERROR 32 *CDCS* REQUEST ABORT
  18661.  
  18662. TERR33 ERROR 33 MEMORY REQUEST FOR ECS NOT ALLOWED
  18663.  
  18664. TERR34 ERROR 34 INCORRECT COMMON MEMORY MANAGER REQUEST
  18665.  
  18666. TERR35 ERROR 35 FL REQUEST BEYOND MFL (CM)
  18667.  
  18668. TERR36 ERROR 36 INCORRECT REDUCE FL
  18669.  
  18670. TERR37 ERROR 37 MEMORY REQUEST WITH DM REQUEST OUTST.
  18671.  
  18672. TERR38 ERROR 38 CDCS INVOKE FAILURE
  18673.  
  18674. TERR39 ERROR 39 DATA MANAGER USAGE NOT SELECTED
  18675.  
  18676. TERR40 ERROR 40 TAF TRANSACTION NAME UNKNOWN
  18677. TERP SPACE 4,15
  18678. ** TERP - TASK FATAL ERROR PROCESSOR.
  18679. *
  18680. * THIS ROUTINE MAKES A JOURNAL FILE ENTRY TO FLAG THE TASK
  18681. * ERROR, PRODUCES A TASK DUMP IF NECESSARY, AND SCHEDULES
  18682. * TASK *MSABT* TO SEND AN ERROR MESSAGE TO THE ORIGINATING
  18683. * TERMINAL. IF MORE TRANSACTIONS ARE QUEUED TO BE EXECUTED
  18684. * BY THE TASK OR IF THE TASK IS *INITIAL TASK*, THE TASK
  18685. * CODE IS RELOADED.
  18686. *
  18687. * ENTRY (X1) = ERROR CODE.
  18688. * (STAT5) = ERROR COUNT.
  18689.  
  18690.  
  18691. TERP SX7 X1+ ERROR CODE
  18692. RJ RSP RESTORE SUBCP REGISTERS
  18693. SA4 STAT5 ERROR COUNT
  18694. SA2 B2+ERRC
  18695. SX6 B1+
  18696. MX3 -18
  18697. IX6 X6+X4
  18698. BX3 X3*X2 CLEAR OLD ERROR CODE
  18699. SA6 A4 BUMP ERROR COUNT
  18700. IX7 X7+X3
  18701. SA7 A2 SET ERROR CODE IN TASK CONTROL AREA
  18702. SX6 B0 DO NOT SEND *SECURE*
  18703. SX5 B2
  18704. SA6 B2+SECR
  18705. SX1 X7+ ERROR CODE
  18706. RJ CDD CONVERT TO DECIMAL DISLAY
  18707. SB2 X5
  18708. BX6 X4
  18709. SB5 PJRNL PRIMARY JOURNAL FILE
  18710. SA6 TERPM1 SET ERROR CODE IN JOURNAL MESSAGE
  18711. SX3 TERPML LENGTH OF MESSAGE
  18712. SX5 TERPM START OF FATAL ERROR MESSAGE
  18713. SA2 B2+CB2C
  18714. LX3 18
  18715. SB3 TERP1 RETURN ADDRESS
  18716. BX5 X5+X3 START AND LENGTH OF MESSAGE
  18717. SX0 X2 CONTEXT BLOCK ADDRESS
  18718. SB4 B1 TRANEX ORIGIN
  18719. EQ JRNL JOURNAL THE ERROR MESSAGE
  18720.  
  18721. TERP1 SA1 KDISB
  18722. ZR X1,TERP1.1 IF NO TASK HAS K-DISPLAY ACTIVE
  18723. MX6 42
  18724. SB5 X1+ C.B. ADDRESS
  18725. BX7 X7-X7
  18726. SX1 KFRM
  18727. SA2 B2+CB2C CURRENT C.B. WORD 2
  18728. SB4 X2+ C.B. ADDRESS
  18729. NE B4,B5,TERP1.1 IF ANOTHER TASK HAS *K-DISPLAY*
  18730. TERP1.0 SA2 KCTRL1
  18731. BX6 X6*X2
  18732. SA7 A1 CLEAR *KDISB* INTERLOCK
  18733. BX6 X6+X1 SWITCH K-DISPLAY TO TAF
  18734. SA6 A2
  18735. CONSOLE KCTRL1
  18736. MESSAGE ZWORD,2
  18737. TERP1.1 SA2 B2+CB2C GET C. B. ADDRESS
  18738. SA2 X2+CBCR GET ROLLOUT TABLE ADDRESS
  18739. MX4 6
  18740. SX0 X2 ROLLOUT TABLE ADDRESS
  18741. BX1 X4*X2
  18742. ZR X1,TERP3 IF NOT A CALLRTN TASK
  18743. SX7 B1 SET CALLRTN ABORT BIT
  18744. LX7 47
  18745. BX7 X7+X2
  18746. SA7 A2
  18747. TERP3 SA1 B2+ERRC CHECK FOR SPECIAL CASE ERRORS
  18748. SX2 X1-1
  18749. NZ X2,TERP4 IF NOT CEASE WITH ABORT
  18750. SA3 B2+CB1C
  18751. SX4 B1
  18752. LX4 -1-15
  18753. BX7 X4+X3 SET PRIOR ABORT BIT TO BYPASS ERROR TASK
  18754. SA7 A3
  18755. EQ TERP9 DONT PRODUCE TASK DUMP
  18756.  
  18757. * PROCESS CALLTSK/CALLRTN/CALLTRN ERRORS.
  18758.  
  18759. TERP4 SX2 X1-40
  18760. ZR X2,TERP7 IF CALLTRN
  18761. SB4 X1-5
  18762. SA1 B2+LRA1 CHECK FOR CALLTSK W/O CEASE OR NEWTRAN
  18763. ZR B4,TERP5 IF TASK LIST TOO LONG
  18764. NE B4,B1,TERP8 IF NOT AN INCORRECT SCHEDULING REQUEST
  18765. TERP5 LX1 59-18
  18766. PL X1,TERP7 IF NOT NEWTRAN OR CALLTASK WITHOUT CEASE
  18767. SA2 B2+CB2C GET COMMUNICATION BLOCK ADDRESS
  18768. RJ RLC RELEASE COMMUNICATION BLOCK
  18769. TERP6 SA1 B2+SCRC
  18770. SA2 A1+B1 RESTORE OLD COMMUNICATION BLOCK HEADER
  18771. BX6 X1
  18772. LX7 X2
  18773. SA6 B2+CB1C
  18774. SA7 A6+B1
  18775.  
  18776. * DO NOT PRODUCE A DUMP FOR SYSTEM TASKS.
  18777.  
  18778. TERP7 MX7 -SCNMN GET TASK DIRECTORY INDEX
  18779. SA1 B7+SCNMW
  18780. LX1 SCNMN-SCNMS-1
  18781. BX7 -X7*X1
  18782. TA2 X7-1,VTLD TASK NAME
  18783. MX7 42
  18784. SA1 TERPA LIST OF TASKS NOT TO DUMP
  18785. TERP7.1 ZR X1,TERP8 IF END OF LIST
  18786. BX2 X7*X2
  18787. IX1 X1-X2
  18788. ZR X1,TERP9 IF NO DUMP WANTED
  18789. SA1 A1+B1
  18790. EQ TERP7.1 NEXT TASK IN LIST
  18791. TERP8 SA2 TDSP CHECK INTERLOCK
  18792. SX7 TERP8 RECALL RETURN ADDRESS
  18793. NZ X2,TRCL2 IF LAST DSP REQUEST NOT COMPLETED
  18794. SA1 B2+CB2C GET CB ADDRESS
  18795. MX7 0
  18796. SX0 X1 (X0) = COM. BLK. ADDRESS
  18797. SB3 X1+3 DUMP CONTROL WORDS
  18798. SA7 DTSG USE *P* AS CALLED FROM ADDRESS
  18799. SA1 LOVC TASK DUMP PROCESSING OVERLAY NAME
  18800. RJ LOVL LOAD/EXECUTE DUMP TASK OVERLAY
  18801.  
  18802. * TEST IF *MSABT* HAS BEEN RUN ONCE AGAINST THIS TASK.
  18803.  
  18804. TERP9 SA1 B2+ERRC ERROR CODE
  18805. BX6 X6-X6
  18806. SX7 X1
  18807. SA6 B2+NUAPL+TIMD-1 TRANEX ORIGIN INDICATOR FOR MSABT
  18808. SA7 B2+NUAPL+TIMD ERROR CODE FOR MSABT
  18809. SA4 B2+CB1C
  18810. MX3 1
  18811. LX3 -15
  18812. BX7 X4+X3
  18813. SX6 B0
  18814. LX4 15
  18815. SA7 A4 SET INTO C.B. HEADER
  18816. SA1 A4+B1
  18817. SA2 ABAS ABORT TASK
  18818. SX0 X1 C.B. ADDRESS FOR TRANSACTION
  18819. NG X4,TERP10 IF NOT TO SCHEDULE MSABT AGAIN
  18820. SA3 X0+CBSBW CHECK *BTRAN* TRANSACTION
  18821. LX3 59-CBSBS
  18822. NG X3,TERP10 IF *BTRAN* TRANSACTION
  18823. SA3 B2+DBNC D.B. OF THIS TASK
  18824. SB4 B0 DETECT *OFF* STATUS
  18825. SB5 B0 TASK SEARCH
  18826. RJ LTT LOCATE TASK
  18827. TERP10 LX6 -12
  18828. SA5 X0+CBRTW CHECK IF RECOVERABLE TRANSACTION
  18829. LX5 59-CBRTS
  18830. SA6 X0+2 SCHEDULE ERROR TASK NEXT
  18831. SA6 B2+RTSC
  18832. PL X5,TERP11 IF NOT RECOVERABLE
  18833. SX5 CSTA TASK ABORT *STEP*
  18834. SX3 TERP11 RETURN ADDRESS
  18835. RJ WTS WRITE TERMINATION *STEP*
  18836.  
  18837. TERP11 TX1 B7+CPAL,-VCPA RELATIVE SUBCP NUMBER
  18838. SA2 RCR
  18839. AX1 SCPAL
  18840. MX3 1
  18841. SB4 X1
  18842. LX3 -12
  18843. AX1 X3,B4
  18844. BX7 -X1*X2 CLEAR RECALL BIT
  18845. SA7 A2+
  18846.  
  18847. * CHECK FOR TOTAL INTERLOCK FLAG SET.
  18848.  
  18849. TERP12 SA2 TOTLCK INTERLOCK FLAG
  18850. ZR X2,TERP13 IF TOTAL INTERLOCK FLAG NOT SET
  18851. SA1 B2+CB1C TASK SEQUENCE NUMBER
  18852. MX3 24
  18853. LX1 18
  18854. BX2 X3*X2 SEQUENCE NUMBER OF SETTING TASK
  18855. BX1 X3*X1 ABORTING TASK SEQUENCE NUMBER
  18856. IX6 X1-X2
  18857. NZ X6,TERP13 IF ABORTING TASK DID NOT SET INTERLOCK
  18858. SA6 TOTLCK CLEAR TOTAL INTERLOCK FLAG
  18859.  
  18860. * RELOAD TASK IF IT IS TO BE USED AGAIN
  18861.  
  18862. TERP13 SA1 B7+B1 SUB CONTROL POINT CONTROL WORD TWO
  18863. TB4 B7,-VCPA
  18864. LX1 -36
  18865. ZR B4,TERP21 IF ITASK BOMBED
  18866. BX6 X1
  18867. MX7 -SCNCN
  18868. BX7 -X7*X6
  18869. SB5 X7+ NUMBER OF C.B.-S WAITING FOR TASK
  18870. LX1 36+2
  18871. NE B5,B1,TERP14
  18872. NG X1,TERP14 IF CM RESIDENT TASK
  18873. SX2 B1+
  18874. BX6 -X2*X1 CLEAR REUSABLE CODE BIT
  18875. SB4 B0
  18876. SX5 B2+CB1C
  18877. LX6 -2
  18878. SA6 A1
  18879. EQ SCT1 DO A CEASE ON THE TASK
  18880.  
  18881. * WRITE COMMUNICATION BLOCK.
  18882.  
  18883. TERP14 SX7 TERP13
  18884. SA3 LTLRE
  18885. NZ X3,TRCL2 IF TASK LOAD REQUEST STACK IS FULL
  18886. LX1 -2
  18887. SA4 X1 TASK CONTROL WORD
  18888. SX1 CMBL-CMBHL-CMBRL
  18889. SX2 B2+NUAPL+SUAC+CMBRL
  18890. SA5 B7 SUBCP TABLE WORD 1
  18891. LX5 59-57
  18892. PL X5,TERP14.1 IF NO USER SPECIFIED BUFFER
  18893. SA5 B7+B1
  18894. LX5 17-35
  18895. SX2 X5
  18896. TERP14.1 SA5 B2+CB1C COMMUNICATIONS BLOCK HEADER WORD
  18897. SX3 X4+CMBHL+CMBRL
  18898. SB5 A1
  18899. BX7 X5
  18900. SA7 X4
  18901. RJ MVE= WRITE COMMUNICATON BLOCK
  18902. SA1 B5+B1 SUB CP CONTROL WORD 3
  18903. MX2 12
  18904. MX6 30
  18905. SX4 B7
  18906. BX2 X2*X1 TASK ID
  18907. LX2 12
  18908. TA2 X2,VTLD GET TASK DISK ADDRESS
  18909. SA1 B7+
  18910. BX5 X6*X2
  18911. LX1 -18
  18912. SX1 X1+NUAPL TASK FL
  18913. LX5 30 POSITION TASK DISK INDEX
  18914. LX1 18
  18915. BX7 X1+X4
  18916. SX6 A2 ADDRESS OF TLD ENTRY
  18917. SB6 VTFL SYSTEM TASK LIBRARY NAME
  18918. TA3 0,VEDT
  18919. SA1 A3+4
  18920. SA2 A2+B1 WORD 3 OF TLD
  18921. SX3 X3 LINK TO NEXT EDT
  18922. LX1 -18
  18923. LX2 3 POSITION TO EXTENDED MEMORY RESIDENT BIT
  18924. TERP15 SX4 X1
  18925. ZR X4,TERP16 IF NO DIRECTORY FOR DATA BASE
  18926. IX4 X4-X6
  18927. PL X4,TERP17 IF ENTRY IN PREVIOUS TLD
  18928. SB6 X1-1
  18929. TERP16 ZR X3,TERP17 IF AT END OF EDTS
  18930. SA1 X3+4
  18931. SA3 X3
  18932. LX1 -18
  18933. SX3 X3+ NEXT EDT
  18934. EQ TERP15 LOOP
  18935.  
  18936. TERP17 SX1 B6
  18937. SX0 A3 ADDRESS OF EDT
  18938. LX1 30 ADDRESS OF NAME OF TASK LIBRARY FILE
  18939. BX5 X5+X1
  18940. LX0 36
  18941. SB4 TERP18
  18942. BX7 X0+X7
  18943. PL X2,SCHD11 IF NOT EXTENDED MEMORY RESIDENT LOAD
  18944. MX0 1 INDICATE TO SCHEDULER ERROR CALL
  18945. BX7 X0+X7
  18946. JP SCHD31 RELOAD EXTENDED MEMORY RESIDENT TASK
  18947.  
  18948. * SET RECALL BIT AND RECALL RETURN ADDRESS, THEN DROP THE CPU
  18949. * FOR THE TASK. WHEN THE LOAD IS COMPLETE, CONTINUE NORMAL TASK
  18950. * PROCESSING.
  18951.  
  18952. TERP18 SA2 B7+B1 SUB CP CONTROL WORD 2
  18953. SX1 B1
  18954. SX7 TERP19 *RECALL* RETURN ADDRESS
  18955. LX1 59-3 TASK RECALL BIT
  18956. BX6 X1+X2
  18957. SA7 B2+RCL
  18958. SA6 A2
  18959. RJ DCPT DROP CPU FOR TASK
  18960. EQ TSSC TIME SLICE SUBCP
  18961.  
  18962.  
  18963. * TASK HAS BEEN RELOADED - CONTINUE PROCESSING
  18964.  
  18965. TERP19 SA1 B7+B1
  18966. SX3 B2+NUAPL+SUAC
  18967. SA2 B7 SUBCP TABLE WORD 1
  18968. LX2 59-57
  18969. PL X2,TERP19.1 IF NO USER SPECIFIED BUFFER
  18970. SA2 X1
  18971. LX2 17-35
  18972. SX3 X2 (X3) = FWA OF USER SPECIFIED BUFFER
  18973. TERP19.1 SA2 X1 RELOAD COMMUNICATIONS BLOCK FOR TASK
  18974. SX1 CMBL-CMBHL
  18975. SA5 X2 C.B. HEADER WORD 1
  18976. BX7 X5
  18977. SX2 X2+CMBHL
  18978. SA7 B2+CB1C RESTORE HEADER WORD
  18979. RJ MVE= READ C.B.
  18980. SX7 B1+
  18981. SA1 STAT1 NUMBER OF TASKS WHICH HAVE BEEN RELOADED
  18982. IX7 X7+X1
  18983. SA7 A1+
  18984. TERP20 SX5 B2+CB1C
  18985. SB4 0
  18986. EQ SCT1 EXECUTE A CEASE ON THE C.B. THAT CAUSED
  18987. THE FATAL ERROR.
  18988.  
  18989. * RELOAD *INITIAL TASK*.
  18990.  
  18991. TERP21 SA1 B2+ERRC CHECK ERROR CODE
  18992. SX7 X1-6
  18993. ZR X7,TERP20 IF NO RELOAD FOR NONEXISTANT TASK
  18994. SA1 B7+B1
  18995. SA4 X1 TASK CONTROL WORD
  18996. SX1 CMBL-CMBHL-CMBRL
  18997. SX2 B2+NUAPL+SUAC+CMBRL
  18998. SX3 X4+CMBHL+CMBRL
  18999. SB5 A1+
  19000. RJ MVE= WRITE COMMUNICATON BLOCK
  19001. SA1 B5+B1 SUB CP CONTROL WORD 3
  19002. MX2 12
  19003. BX2 X2*X1 TASK INDEX
  19004. LX2 12
  19005. TA3 X2,VTLD
  19006. MX7 30
  19007. BX7 X7*X3 TASK DISK INDEX
  19008. SA5 B7 SUB CP CONTROL WORD 1
  19009. LX7 30
  19010. RECALL TL WAIT FOR TASK LIBRARY TO GO NON BUSY
  19011.  
  19012. * SET FET FOR RELOAD OF *INITIAL TASK*.
  19013.  
  19014. SA1 VTFL
  19015. SA4 TL+1 FIRST
  19016. BX6 X1 SYSTEM TASK LIBRARY NAME
  19017. SA6 A4-B1
  19018. SX6 X5+77B-16B FWA FOR TASK LOAD
  19019. MX2 -18
  19020. SA7 TL+6 RANDOM TASK INDEX
  19021. BX7 X2*X4
  19022. LX5 -18
  19023. BX7 X7+X6
  19024. SA6 A4+B1 IN
  19025. SA7 A4 FIRST
  19026. SA6 A6+B1 OUT
  19027. SA4 A6+B1 LIMIT
  19028. SX1 X5+16B-77B TASK FL (MINUS LOAD BIAS)
  19029. BX7 X2*X4
  19030. IX1 X1+X6
  19031. BX7 X7+X1 LIMIT
  19032. SA7 A4
  19033. READSKP TL,,R RELOAD INITIAL TASK
  19034. SX7 B1
  19035. SA1 STAT2
  19036. IX7 X7+X1 NUMBER OF TIMES INITIAL TASK RELOADED
  19037. SA7 A1
  19038. EQ TERP19 RESUME NORMAL PROCESSING
  19039.  
  19040. TERPA BSS 0 LIST OF TASKS NOT TO DUMP
  19041. VFD 42/0LCTASK,18/0
  19042. VFD 42/0LITASK,18/0
  19043. VFD 42/0LRTASK,18/0
  19044. VFD 42/0LXTASK,18/0
  19045. DATA 0 END OF LIST
  19046.  
  19047. TERPB VFD 60/0LMSABT NAME OF ERROR PROCESSING TASK
  19048.  
  19049. TERPM CON 10HFATAL ERRO
  19050. CON 10HR
  19051. TERPM1 BSSZ 2
  19052. TERPML EQU *-TERPM
  19053. CTEXT TITLE COMMON DECKS.
  19054. *CALL COMCARG
  19055. *CALL COMCCDD
  19056. *CALL COMCCOD
  19057. *CALL COMCDXB
  19058. *CALL COMCECS
  19059. *CALL COMCLFM
  19060. *CALL COMCOVL
  19061. ** *MODIFIED* MVE *** WARNING ***
  19062. *
  19063. * USES B6 INSTEAD OF B7
  19064. CTEXT COMCMVE - MOVE BLOCK OF DATA.
  19065. MVE SPACE 4
  19066. IF -DEF,QUAL$,1
  19067. QUAL COMCMVE
  19068. BASE D
  19069. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  19070. MVE SPACE 4
  19071. *** MVE - MOVE BLOCK OF DATA.
  19072. * G. R. MANSFIELD. 70/10/09.
  19073. * R. E. TATE. 73/11/04.
  19074. MVE SPACE 4
  19075. *** MVE MOVES A BLOCK OF DATA.
  19076. *
  19077. * NOTE- UPWARD MOVE MEANS TOWARD RA.
  19078. *
  19079. * ENTRY (X1) = WORD COUNT.
  19080. * (X2) = SOURCE ADDRESS.
  19081. * (X3) = DESTINATION ADDRESS.
  19082. * (B1) = 1
  19083. *
  19084. * USES X - 1, 2, 3, 4, 6, 7.
  19085. * B - 6.
  19086. * A - 2, 4, 6, 7.
  19087.  
  19088.  
  19089. * COMPARE MOVE UNIT BUFFER AREA/PRESET.
  19090. * MVEB IS READ UP AND THEN RETURN JUMPED TO IN ORDER TO VOID
  19091. * THE INSTRUCTION STACK. LATER MVEB IS USED FOR THE CMU
  19092. * DESCRIPTOR WORD.
  19093.  
  19094. MVE11 BSS 0 ENTRY FOR PRESET
  19095. MVEB IX4 X2-X3 CHECK DIRECTION OF MOVE (NO CMU)
  19096. MX7 59
  19097. JP MVE13
  19098.  
  19099. MVEC BX7 X2 CHECK IF CMU AVAILABLE (BUFFER AREA FWA)
  19100. SA2 CMUR
  19101. PL X2,MVE12 IF NO CMU
  19102. SA4 MVED
  19103. MVE12 BX6 X4
  19104. LX2 X7 RESTORE X2
  19105. SA6 MVEA
  19106. JP MVE1 RESTART LOOP
  19107.  
  19108. MVED IX4 X2-X3 CHECK DIRECTION OF MOVE (CMU)
  19109. BX7 X1 SET WORD COUNT
  19110. BX1 X0 SAVE X0
  19111. LX2 30
  19112.  
  19113. * DETERMINE MOVE DIRECTION.
  19114.  
  19115. MVE13 BX6 -X7*X1
  19116. IX1 X1-X6 REDUCE WORD COUNT TO EVEN NUMBER
  19117. PL X4,MVE15 IF MOVE UP
  19118.  
  19119. * BEGIN DOWNWARD MOVE.
  19120.  
  19121. ZR X6,MVE14 IF WORD COUNT EVEN
  19122. SB6 X1
  19123. SA4 X2+B6 MOVE INITIAL WORD
  19124. BX6 X4
  19125. SA6 X3+B6
  19126. MVE14 IX2 X2+X1
  19127. IX3 X3+X1
  19128. SB6 -2
  19129. EQ MVE16
  19130.  
  19131. * BEGIN UPWARD MOVE.
  19132.  
  19133. MVE15 SB6 -2 UPWARD MOVE
  19134. SX2 X2+B6
  19135. SX3 X3+B6
  19136. SB6 B1+B1
  19137. ZR X6,MVE16 IF WORD COUNT EVEN
  19138. SA4 X2+B6 MOVE INITIAL WORD
  19139. IX2 X2+X6
  19140. BX7 X4
  19141. SA7 X3+B6
  19142. IX3 X3+X6
  19143.  
  19144. * INITIALIZE MOVE LOOP.
  19145.  
  19146. MVE16 ZR X1,MVE= IF MOVE COMPLETE
  19147. SA2 X2+B6 MOVE FIRST 2 WORDS
  19148. SA4 A2+B1
  19149. BX6 X2
  19150. LX7 X4
  19151. SA6 X3+B6
  19152. SA7 A6+B1
  19153. SX3 B1+B1
  19154. IX1 X1-X3
  19155. ZR X1,MVE= IF MOVE COMPLETE
  19156. SA2 A2+B6 NEXT 2 WORDS
  19157. SA4 A4+B6
  19158.  
  19159. * MOVE LOOP.
  19160.  
  19161. MVE17 BX6 X2
  19162. SA2 A2+B6
  19163. LX7 X4
  19164. SA4 A4+B6
  19165. IX1 X1-X3
  19166. NO
  19167. SA6 A6+B6
  19168. SA7 A7+B6
  19169. NZ X1,MVE17
  19170.  
  19171. MVEE BSS 0 END OF CMU BUFFER AREA
  19172. MVELL EQU MVEE-MVEC NUMBER OF WORDS IN BUFFER
  19173.  
  19174. MVE= PS ENTRY/EXIT
  19175. MVEA BSS 0
  19176. MVE1 SA4 MVEB INITIALIZE FOR CMU
  19177. RJ MVE11
  19178. * IX4 X2-X3 CHECK DIRECTION OF MOVE (NO CMU)
  19179. * MX7 59 (NO CMU)
  19180. * JP MVE13 (NO CMU)
  19181. *
  19182. * IX4 X2-X3 CHECK DIRECTION OF MOVE (CMU)
  19183. * BX7 X1 (CMU)
  19184. * BX1 X0 SAVE X0 (CMU)
  19185. * LX2 30 (CMU)
  19186.  
  19187. * MOVE DATA WITH CMU.
  19188.  
  19189. ZR X7,MVE= IF NO DATA TO MOVE
  19190. SX6 X7-819
  19191. BX0 X4
  19192. NG X4,MVE2 IF MOVE DOWNWARD
  19193. BX0 -X4
  19194. MVE2 IX0 X0+X7
  19195. BX6 X0*X6
  19196. PL X6,MVE3 IF BLOCK TOO LONG FOR 1 MOVE OR BLOCKS LAP
  19197. BX0 X7 SET UP FOR 1 MOVE
  19198. BX2 X2+X3
  19199. BX7 X7-X7 SET TO FORCE EXIT
  19200. MX4 -4
  19201. SB6 MVE9
  19202. JP MVE10
  19203.  
  19204. MVE3 SX6 MVEC SET INTERMEDIATE BUFFER ADDRESS
  19205. NG X4,MVE6 IF MOVE DOWNWARD
  19206.  
  19207. * MOVE UPWARD.
  19208.  
  19209. BX2 X2+X6
  19210. LX6 30
  19211. BX3 X3+X6
  19212. MVE4 BX0 X7
  19213. SX7 X7-MVELL DECREMENT WORD COUNT
  19214. MX4 -4
  19215. NG X7,MVE5 IF LAST BLOCK TO MOVE
  19216. SX0 MVELL
  19217. MVE5 SB6 *+1 SET TO RETURN HERE
  19218. JP MVE10
  19219. IM MVEB
  19220. SB6 X7
  19221. BX0 X1 RESTORE X0
  19222. LT B6,B1,MVE= IF MOVE COMPLETE
  19223. SX4 -MVELL UPDATE ADDRESSES
  19224. IX3 X3-X4
  19225. LX4 30
  19226. IX2 X2-X4
  19227. JP MVE4
  19228.  
  19229. * MOVE DOWNWARD.
  19230.  
  19231. MVE6 LX6 30 SET LAST WORD ADDRESSES OF DATA AREAS
  19232. BX6 X7+X6
  19233. IX3 X3+X6
  19234. LX6 30
  19235. IX2 X2+X6
  19236. MVE7 SX6 MVELL
  19237. SX0 X7
  19238. IX7 X7-X6
  19239. MX4 -4
  19240. NG X7,MVE8 IF LAST BLOCK TO MOVE
  19241. BX0 X6
  19242. MVE8 BX6 X0 ADJUST DESTINATION AND SOURCE ADDRESSES
  19243. IX3 X3-X0
  19244. LX6 30
  19245. IX2 X2-X6
  19246. SB6 *+1 SET TO RETURN HERE
  19247. JP MVE10
  19248. IM MVEB MOVE DATA TO DESTINATION BUFFER
  19249. MVE9 SB6 X7
  19250. BX0 X1 RESTORE X0
  19251. LT B6,B1,MVE= IF MOVE COMPLETE
  19252. JP MVE7 LOOP
  19253.  
  19254. * SETUP MOVE WORD.
  19255. * (X0) = NUMBER OF WORDS TO MOVE.
  19256. * (X4) = 56 BIT MASK.
  19257.  
  19258. MVE10 LX6 X0,B1 10 * WORD COUNT = CHARACTER COUNT
  19259. LX0 3
  19260. IX6 X0+X6
  19261. BX0 -X4*X6 EXTRACT LOWER PORTION
  19262. BX4 X4*X6 EXTRACT UPPER PORTION
  19263. LX0 26
  19264. LX4 48-4
  19265. BX0 X4+X0
  19266. BX6 X2+X0
  19267. SA6 MVEB STORE FIRST DESCRIPTOR WORD
  19268. BX6 X3+X0
  19269. IM MVEB MOVE DATA TO INTERMEDIATE BUFFER
  19270. SA6 A6 STORE SECOND DESCRIPTOR WORD
  19271. JP B6
  19272. SPACE 4
  19273. BASE *
  19274. QUAL$ IF -DEF,QUAL$
  19275. QUAL *
  19276. MVE= EQU /COMCMVE/MVE=
  19277. QUAL$ ENDIF
  19278. ENDX
  19279. *CALL COMCPFM
  19280. *CALL COMCQFM
  19281. *CALL COMCRDW
  19282. *CALL COMCSFN
  19283. *CALL COMCSNM
  19284. *CALL COMCUPC
  19285. *CALL COMCWTW
  19286. *CALL COMCZTB
  19287. *CALL COMKFIO
  19288. *CALL COMKZFN
  19289. ENDT BSS 0 END OF RUN TIME CODE
  19290. PRE TITLE "PROD" PRESET.
  19291. ** PRE - *TAF* PRESET.
  19292. *
  19293. * THIS ROUTINE MODIFIES THE RETURN JUMP INSTRUCTIONS FOR
  19294. * *TOTAL* AND *CRM* IF THEY ARE TO BE LOADED. IT ALSO SETS
  19295. * THE VARIABLE ADDRESSES IN INITIALIZATION DEPENDENT
  19296. * INSTRUCTIONS AND VERIFIES THAT ALL SYSTEM TASKS ARE PRESENT.
  19297.  
  19298.  
  19299. PRE BSS 0 ENTRY
  19300. SB1 1
  19301. SX3 PREH FWA OF Y-COORDINATE TABLE
  19302. RJ PRK PRESET K-DISPLAY BUFFER
  19303.  
  19304. * INITIALIZE *RJ* FOR CALLING *CRM*, IF LOADED.
  19305.  
  19306. SA2 VAAM AAM INITIALIZATION FLAG
  19307. ZR X2,PRE1 IF *AAMI* NOT LOADED
  19308. SA3 PREA SETUP CALL TO INITIALIZATION
  19309. SB3 AAMA FWA OF MAXIMUM TRANSACTIONS USING *CRM*
  19310. BX6 X2+X3
  19311. SA6 A3
  19312. SA6 PREB CALL *IAM*, IF RECOVERY
  19313. RJ * BREAK INSTRUCTION STACK
  19314. LX2 30
  19315. SB5 B1 SET UP ENTRY POINT CALL TO *IAM*
  19316. SA1 TSSCB SETUP CALL TO *AMI*
  19317. BX6 X2+X1
  19318. SA6 A1
  19319. SB2 PREC FWA OF EXTERNAL ROUTINES
  19320. PREA RJ 0 MODIFIED BY *PRE*
  19321. * RJ =XIAM INITIALIZE EXTERNALS
  19322. RJ SETA LINK *AAMI* EXTERNAL ROUTINES
  19323.  
  19324. * INITIALIZE *RJ* FOR CALLING *TOTAL*, IF LOADED.
  19325.  
  19326. PRE1 SA2 VTOT TOTAL INITIALIZATION FLAG
  19327. ZR X2,PRE2 IF TOTAL DATA MANAGER NOT LOADED
  19328. MX0 1
  19329. LX2 30 POSITION ADDRESS OF TOTAL ENTRY POINT
  19330. LX0 -5
  19331. BX6 X0+X2 RJ INSTRUCTION
  19332. SA6 TSSCA MODIFY CALL FOR TOTAL
  19333. PRE2 SB6 TINSTL-1 SET ADDRESSES OF VARIABLE TABLE REFERENCES
  19334. SB4 TINST
  19335. RJ SETA
  19336. PRE3 RJ PVV SET VARIABLE VALUES
  19337. SA2 TLIST INSURE EXISTENCE OF SYSTEM TASKS
  19338. PRE3.1 ZR X2,PRE3.5 IF NO MORE TASKS IN LIST
  19339. BX0 X2
  19340. SB4 B0 DETECT *OFF* STATUS
  19341. SB5 B0+ TASK SEARCH
  19342. BX3 X3-X3 SEARCH SYSTEM TASK LIBRARY
  19343. BX6 X6-X6
  19344. RJ LTT LOCATE TASK
  19345. ZR X6,PRE3.4 IF TASK NOT FOUND
  19346. SA4 ITAS
  19347. IX4 X4-X2
  19348. NZ X4,PRE3.2 IF NOT *ITASK*
  19349. SX7 A1 FWA OF TLD ENTRY
  19350. SA6 LITA *ITASK* BIAS
  19351. SA7 LITC
  19352. PRE3.2 SA4 OTAS
  19353. IX4 X4-X2
  19354. NZ X4,PRE3.3 IF NOT *OFFTASK*
  19355. SA6 SCTB *OFFTASK* BIAS
  19356. PRE3.3 SA2 A2+B1
  19357. EQ PRE3.1 CHECK NEXT TASK IN LIST
  19358.  
  19359. PRE3.4 SX6 B1
  19360. SA1 A2 GET TASK NAME
  19361. SA6 PREG
  19362. SB5 -PREF FWA OF MESSAGE
  19363. SB2 1RX REPLACEMENT CHARACTER
  19364. SB3 DAYB SET ALTERNATE ASSEMBLY AREA
  19365. RJ SNM SET NAME IN MESSAGE
  19366. MESSAGE DAYB SYSTEM TASK LIBRARY MISSING TASK, XXXXXXX.
  19367. SA2 A2+B1
  19368. EQ PRE3.1 CHECK NEXT TASK IN LIST
  19369.  
  19370. PRE3.5 SA4 PREG ERROR FLAG
  19371. ZR X4,PRE3.6 IF ALL SYSTEM TASKS PRESENT
  19372. ABORT
  19373.  
  19374. PRE3.6 SB2 B1 SET BIT IN TLD ONLY
  19375. RJ LIT SET CORE RESIDENT BIT IN TLD
  19376. RJ PBI LOOK FOR POTENTIALLY BLOCKED TASKS
  19377. SB2 B0 SET FOR NORMAL CALL
  19378. RJ LIT LOAD INITIAL TASK
  19379. RJ LCT LOAD CORE RESIDENT TASKS
  19380. RJ LEC LOAD EXTENDED MEMORY RESIDENT TASKS
  19381. RJ IJF INITIALIZE JOURNAL FILES
  19382. REWIND RO,R REWIND ROLLOUT FILE
  19383. WRITEW X2,TMDC,ROLBL WRITE ONE BLOCK TO ROLLOUT FILE
  19384. WRITER X2,R
  19385. SA1 X2+6 GET RANDOM ADDRESS
  19386. MX6 30
  19387. BX6 X6*X1
  19388. LX6 30
  19389. SA6 X2+7 CURRENT EOI
  19390. MX7 1
  19391. SB2 B0 INITIALIZE ACTIVE TASK SYSTEM AREA FWA
  19392. BX6 X6-X6 INITIALIZE ACTIVE TASK POINTERS
  19393. SB7 B0+ INITIALIZE ACTIVE TASK SUBCP FWA
  19394. SA6 SREG
  19395. TA7 0,VRLAT
  19396. TX1 0,VREC
  19397. AX1 24
  19398. SX1 X1 USER RECOVERY
  19399. ZR X1,PRE4 IF NOT A RECOVERY
  19400. RJ CAS CHECK FOR ASSIGNED EQUIPMENT
  19401. SX5 CIREC RECOVERY CODE
  19402. SA4 ITAS INITIAL TASKS NAME
  19403. SB3 B0 NO BUFFER INPUT
  19404. SX7 B0 SCHEDULE ONLY FROM SYSTEM LIBRARY
  19405. RJ TRN GENERATE A SYSTEM ORIGIN TRANSACTION
  19406. TB7 0,VCPA
  19407. TB2 0,VFSCP
  19408. PRE4 GETMC PREE GET MACHINE CHARACTERISTICS
  19409. SA1 PREE
  19410. MX2 -2 MODEL 176 MASK
  19411. LX1 1-19
  19412. BX2 -X2*X1 EXTRACT MACHINE MODEL
  19413. ZR X2,PRE4.1 IF NOT MODEL 176
  19414. SA1 .EM GET DEFAULT ERROR EXIT MODE
  19415. MX2 59
  19416. LX2 30-0
  19417. BX6 X2*X1 DESELECT UNDERFLOW
  19418. SA6 .EM
  19419. PRE4.1 SA1 XJPR CHECK CEJ/MEJ STATUS
  19420. SA2 .CEJ
  19421. MX7 1
  19422. BX7 X7*X1 PRESENT/NOT PRESENT BIT
  19423. MX6 -1
  19424. LX7 1
  19425. BX6 X6*X2
  19426. BX6 X6+X7 INSTRUCTION SETTING CEJ/MEJ FOR SUB CPS
  19427. SA6 .CEJ
  19428. SA1 CMUR CHECK CMU STATUS
  19429. SA2 .CMU
  19430. MX7 1
  19431. BX7 X7*X1 PRESENT/NOT PRESENT BIT
  19432. MX6 -1
  19433. LX7 1
  19434. BX6 X6*X2
  19435. BX6 X6+X7 INSTRUCTION SETTING CMU FOR SUB CPS
  19436. SA6 .CMU
  19437. PDATE PDATE PACKED DATE/TIME
  19438. RTIME PTIME REAL TIME CLOCK AT START OF PROGRAM
  19439. TIME CTIME
  19440. MX2 -12
  19441. SA4 CTIME ACCUMULATED CPU TIME
  19442. BX5 -X2*X4 MSECS ACCUMULATED
  19443. LX4 60-12
  19444. BX3 -X2*X4 SECS ACCUMULATED
  19445. SX0 1000
  19446. IX2 X0*X3 MULTIPLY BY 1000
  19447. IX6 X2+X5 TOTAL MSECS ACCUMULATED
  19448. SA6 CTIME
  19449. SX7 B0
  19450. SA7 B0 CLEAR RA
  19451. SA1 PTIME
  19452. BX7 X1
  19453. SA7 RDCBD
  19454. MX7 42
  19455. SX1 DORC-BCOT
  19456. NZ X1,PRE5 IF NOT DEFAULT BATCH OUTPUT QUEUE
  19457. SX2 DQDS OUTPUT QUEUE DESTINATION
  19458. SA1 DTSE+1
  19459. LX2 18 SET PRINTER IDENTIFICATION
  19460. BX7 -X7*X1
  19461. BX7 X7+X2
  19462. SA7 A1
  19463. PRE5 CONSOLE KCTRL1,R SET MAIN DISPLAY CONTROL WORD
  19464. MESSAGE ZWORD,2 CLEAR MESSAGE LINE 2
  19465. MESSAGE VERM SEND VERSION NUMBER TO DAYFILE
  19466. SX7 B1+ SET NETWORKS DOWN
  19467. SA7 VNON
  19468. SA1 VREC
  19469. MX3 1
  19470. BX1 X3*X1 *CRM* RECOVERY BIT
  19471. ZR X1,PRE5.1 IF NOT A RECOVERY SITUATION
  19472. SB5 7 ROLL BACK D.B. FUNCTION
  19473. PREB RJ 0 SET UP BY *PRE*
  19474. * RJ =XIAM *AAMI* CALL IF RECOVERY
  19475. ZR X6,PRE5.1 IF CRM DATA BASE RECOVERED
  19476. ABORT
  19477.  
  19478. * SCHEDULE *CRM* DATA BASE RECOVERY TASK. IF TASK NOT
  19479. * SCHEDULED ABORT *TAF*.
  19480.  
  19481. PRE5.1 SA4 VAAM
  19482. ZR X4,PRE5.2 IF TAF/CRM DATA MANAGER NOT LOADED
  19483. SA1 VREC ADD CRM RECOVERY FLAG
  19484. MX7 1
  19485. BX7 X7+X1
  19486. SA7 A1
  19487. PRE5.2 SB3 B0 NO BUFFER INPUT
  19488. IFEQ IPTAR,1 IF AUTOMATIC RECOVERY INSTALLED
  19489. SX7 B0 SCHEDULE ONLY FROM SYSTEM LIBRARY
  19490. SA4 CTAS SCHEDULE *CTASK*
  19491. SX5 TYRM TRANSACTION TYPE IS RECORD MANAGER
  19492. RJ TRN GENERATE SYSTEM TRANSACTION
  19493. ZR X0,PRE6 IF *CTASK* NOT SCHEDULED
  19494. SA1 VREC GET RECOVERY FLAG
  19495. MX3 59
  19496. LX3 24-0
  19497. SA2 X0+CBTLW GET BIAS OF *CTASK*
  19498. BX7 X2
  19499. SA7 SCTC SAVE *CTASK* BIAS
  19500. BX6 X3*X1
  19501. SA6 X0+CMBHL+CMBRL+1 STORE IN WORD TWO OF MESSAGE AREA
  19502. ELSE IF AUTOMATIC RECOVERY NOT INSTALLED
  19503. SX7 B1 START INPUT FOR TERMINAL JOBS
  19504. SA7 STIN
  19505. ENDIF
  19506. REPRIEVE EXIA,SET,77B
  19507. EQ TMDC BEGIN PROCESSING
  19508.  
  19509. PRE6 MESSAGE PRED * NO C.B. AVAILABLE TO SCHEDULE CTASK.*
  19510. ABORT
  19511. * ENTRY POINTS FOR ROUTINES USED BY *AAMI*.
  19512.  
  19513. PREC VFD 42/0,18/MVE=
  19514. VFD 42/0,18/GRA
  19515. VFD 42/0,18/TCM
  19516. VFD 60/0
  19517.  
  19518. PRED DATA C* NO C.B. AVAILABLE TO SCHEDULE CTASK.*
  19519.  
  19520. PREE BSS 1 MACHINE CHARACTERISTICS
  19521.  
  19522. PREF DATA C* SYSTEM TASK LIBRARY MISSING TASK, XXXXXXX.*
  19523. PREG BSSZ 1 ERROR FLAG
  19524.  
  19525. * Y-COORDINATE TABLE.
  19526.  
  19527. PREH KDL *
  19528. SPACE 4,10
  19529. PRK HERE REMOTE BLOCK FROM *COMCDCP*
  19530. SPACE 4,10
  19531. * COMMON DECKS.
  19532.  
  19533.  
  19534. *CALL COMCCVL
  19535. LIST X
  19536. *CALL COMKDPB
  19537. LIST -X
  19538. TITLE PRESET ROUTINES.
  19539. CAS SPACE 4,15
  19540. ** CAS - CHECK FOR ASSIGNED EQUIPMENT.
  19541. *
  19542. * IF ONE OR MORE TAPE UNITS HAVE BEEN ASSIGNED VIA THE
  19543. * *K* DISPLAY AS A POOL UNIT FOR JOURNAL FILES, RESET THE
  19544. * ASSIGNED EQUIPMENT WORD.
  19545. *
  19546. * EXIT (ASEQ) = 22/0,18/TA,18/TB.
  19547. * TA = INFORMATION IF ONE TAPE UNIT IS ASSIGNED.
  19548. * TB = INFORMATION IF TWO TAPE UNITS ARE ASSIGNED.
  19549. *
  19550. * USES A - 1, 6.
  19551. * X - 1, 4, 6.
  19552. *
  19553. * MACROS REWIND.
  19554.  
  19555.  
  19556. CAS SUBR ENTRY/EXIT
  19557. REWIND SCR,R SCRATCH FILE NO. 1
  19558. SA1 X2+4
  19559. BX4 X4-X4
  19560. MX6 12
  19561. BX6 X6*X1
  19562. ZR X6,CAS1 IF FILE NOT PRESENT
  19563. SX4 X2
  19564. CAS1 REWIND SCR1,R CHECK SCRATCH FILE NO. 2
  19565. SA1 X2+4
  19566. MX6 12
  19567. BX6 X6*X1
  19568. ZR X6,CAS2 IF FILE NOT PRESENT
  19569. LX4 18
  19570. BX4 X4+X2
  19571. CAS2 BX6 X4
  19572. SA6 ASEQ ASSIGNED EQUIPMENT WORD
  19573. EQ CASX RETURN
  19574. IJF SPACE 4,15
  19575. ** IJF - INITIALIZE JOURNAL FILES.
  19576. *
  19577. * POSITION EACH JOURNAL FILE TO THE END OF INFORMATION
  19578. * AND WRITE A LABEL CONTAINING THE CURRENT DATE.
  19579. *
  19580. * ENTRY *JOUR0*, JOURNAL FILE ZERO.
  19581. * *XXJORN*, DATA BASE JOURNAL FILES, IF THEY EXIST.
  19582. *
  19583. * USES A - 0, 1, 4, 5, 6, 7.
  19584. * X - 0, 1, 2, 4, 5, 6, 7.
  19585. * B - 4.
  19586. *
  19587. * CALLS PFE.
  19588. *
  19589. * MACROS PDATE, WRITEF, WRITER, WRITEW.
  19590.  
  19591.  
  19592. IJF SUBR ENTRY/EXIT
  19593. PDATE IJFC SET PACKED DATE FOR JOURNAL LABEL
  19594. TA5 0,VEDT
  19595. LX5 -18
  19596. SX0 X5 EDT COUNT
  19597. SA0 JOUR0 JOURNAL FILE ZERO
  19598. SX5 1
  19599. EQ IJF2 INITIALIZE JOURNAL FILE ZERO
  19600.  
  19601. IJF1 ZR X0,IJFX IF NO MORE JOURNAL FILES, RETURN
  19602. SA5 A5
  19603. SA4 X5 NEXT EDT
  19604. SA1 A5+1 EDT HEADER WORD WITH JOURNAL FILE INFO
  19605. MX7 6
  19606. BX7 X7*X1 JOURNAL FILE COUNT FOR DATA BASE
  19607. LX1 -18
  19608. SX0 X0-1 DECREMENT EDT COUNT
  19609. SA0 X1 ADDRESS OF FIRST JOURNAL FET
  19610. LX7 6
  19611. SA5 A4+
  19612. SX5 X7 JOURNAL COUNT FOR THIS EDT
  19613. IJF2 ZR X5,IJF1 NO MORE JOURNAL FILES FOR THIS EDT
  19614. SA1 A0
  19615. BX6 X1
  19616. MX2 42
  19617. BX7 X2*X1
  19618. SA6 JF
  19619. SA7 IJFD
  19620. SB4 A6+
  19621. RJ PFE POSITION TO EOI
  19622. ZR X6,IJF3 FILE TERMINATED BY EOF
  19623. WRITEF JF,R WRITE A FILE MARK
  19624.  
  19625. * WRITE A LABEL TO JOURNAL FILE
  19626.  
  19627. IJF3 WRITEW JF,IJFB,IJFBL WRITE LABEL RECORD TO FILE
  19628. WRITER JF,R
  19629. SX5 X5-1 DECREMENT JOURNAL FILE COUNT
  19630. SA0 A0+JFETL BUMP FET POINTER FOR NEXT JOURNAL FILE
  19631. EQ IJF2
  19632.  
  19633. JF BSS 0
  19634. IJFA FILEB OBUF,OBUFL JOURNAL FILE INITIALIZATION FET
  19635.  
  19636. IJFB DIS ,/*TRANEX*/
  19637.  
  19638. IJFC BSS 1 FOR PACKED DATE
  19639.  
  19640. IJFD BSS 1 JOURNAL FILE NAME
  19641.  
  19642. IJFBL EQU *-IJFB LENGTH OF LABEL RECORED FOR JOURNAL FILE
  19643. PFE SPACE 4,15
  19644. ** PFE POSITION FILE TO END OF INFORMATION.
  19645. *
  19646. * ENTRY (B4) = FWA OF FET.
  19647. *
  19648. * EXIT (X6) .EQ. ZERO IF EOF TERMINATES FILE.
  19649. * (X6) .GT. ZERO IF EOI TERMINATES FILE.
  19650. * (X6) .LT. ZERO IF EOR TERMINATES FILE.
  19651. *
  19652. * USES A - 1, 2, 6.
  19653. * X - 1, 2, 6.
  19654. *
  19655. * MACROS BKSP, READSKP, SKIPEI.
  19656.  
  19657.  
  19658. PFE SUBR ENTRY/EXIT
  19659. SKIPEI B4+ SKIP TO EOI
  19660. BKSP X2
  19661. READSKP X2,,R POSITION TO END OF DATA
  19662. SA1 B4
  19663. SX6 1775B
  19664. BX6 X6*X1 *CIO* STATUS
  19665. SX4 X6-31B
  19666. SA1 B4+B1 RESET FET POINTERS
  19667. MX6 -18
  19668. BX6 -X6*X1
  19669. SA6 A1+B1 IN = FIRST
  19670. SA6 A6+B1 OUT = FIRST
  19671. SKIPEI X2 POSITION TO END OF DATA
  19672. SX6 X4
  19673. EQ PFEX RETURN
  19674. LEC SPACE 4,15
  19675. ** LEC - LOAD ECS RESIDENT TASKS INTO EXTENDED MEMORY.
  19676. *
  19677. * LOAD ECS RESIDENT TASKS FROM MASS STORAGE INTO ECS.
  19678. * INTERPRATIVE ECS MODE IS USED TO TRANSFER ECS BLOCKS TO
  19679. * STORAGE.
  19680. *
  19681. * USES X - ALL.
  19682. * A - ALL.
  19683. * B - 2, 3, 4, 5, 7.
  19684. *
  19685. * CALLS CDD, SNM.
  19686. *
  19687. * MACROS ABORT, MESSAGE, READ, READW.
  19688.  
  19689.  
  19690. LEC SUBR ENTRY/EXIT
  19691. TA5 -1,VTLD FWA-1 OF TLD
  19692. SA1 VECSC CURRENT ECS ADDRESS
  19693. BX7 X5 TASK LIBRARY FILE NAME
  19694. BX0 X1
  19695. SA0 ESBUF BUFFER FWA
  19696. SA7 TL
  19697. LEC1 SA2 A5+B1 READ TASK NAME
  19698. SA5 A5+TLDLE WORD 3 OF THE DIRECTORY
  19699. LX5 59-56 POSITION TO EXTENDED MEMORY RESIDENT BIT
  19700. ZR X2,LEC10 IF END OF CURRENT DIRECTORY
  19701. PL X5,LEC1 IF TASK NOT EXTENDED MEMORY RESIDENT
  19702. LEC2 SA2 A5-B1 WORD 2 OF DIRECTORY
  19703. LX2 TLFLN-TLFLS-1 GET TASK FIELD LENGTH
  19704. MX1 -TLFLN
  19705. BX5 -X1*X2
  19706. SA2 VECS READ REMAINING ECS
  19707. LX5 6
  19708. IX3 X5+X0
  19709. IX4 X2-X3
  19710. PL X4,LEC3 IF SPACE REMAINING TO LOAD THIS TASK
  19711.  
  19712. * PROCESS TASK NOT LOADED INTO EXTENDED MEMORY.
  19713.  
  19714. SA2 A5
  19715. MX1 -1
  19716. LX1 56-0
  19717. BX6 X1*X2
  19718. SA6 A5 CLEAR EXTENDED MEMORY BIT
  19719. SX3 B1
  19720. SA2 LECB
  19721. IX6 X3+X2 INCREMENT TASKS-NOT-LOADED COUNT
  19722. SA6 A2+
  19723. EQ LEC1 CONTINUE PROCESSING DIRECTORY
  19724.  
  19725. * SET UP FET FOR READING TASK TO MEMORY.
  19726.  
  19727. LEC3 SA1 A5-2 TASK NAME
  19728. MX6 42
  19729. BX1 X6*X1
  19730. SB2 1R+ REPLACEMENT CHARACTER
  19731. SB3 DAYB ALTERNATE BUFFER
  19732. SB5 -LECH
  19733. RJ SNM SET NAME IN MESSAGE
  19734. MESSAGE DAYB,1 * LOADING EXTENDED MEMORY TASK - +++++++.*
  19735. SX7 EBUF
  19736. SA3 TL+1
  19737. MX1 42
  19738. BX2 X1*X3
  19739. BX6 X2+X7
  19740. SA7 A3+B1 IN
  19741. SA6 A3 FIRST
  19742. SA7 A7+B1 OUT
  19743. SA2 A7+B1
  19744. BX1 X1*X2
  19745. SX6 X6+EBUFL
  19746. BX7 X1+X6
  19747. SA7 A2 LIMIT
  19748. SA2 A5-B1 WORD 2 OF DIRECTORY
  19749. LX2 30 DISK ADDRESS
  19750. MX1 -30
  19751. BX6 -X1*X2
  19752. SA6 A7+2 RANDOM ADDRESS
  19753. LX2 18 TASK FL
  19754. SX5 X2
  19755. AX5 6
  19756. LX5 6
  19757. READ TL INITIATE READ
  19758.  
  19759. * TRANSFER TASK TO EXTENDED MEMORY.
  19760.  
  19761. SX2 B2+
  19762. LX2 59-29
  19763. BX6 X2+X0
  19764. SA6 LECA SAVE (B2) AND (X0)
  19765. LEC4 SB7 ESBUFL
  19766. READW TL,A0,B7 READ PART OF TASK
  19767. SB4 ESBUFL
  19768. ZR X1,LEC5 IF NOT EOR/EOF/EOI
  19769. NG X1,LEC9 IF EOF/EOI - *LIBRARY STRUCTURE ERROR*
  19770. SB2 A0
  19771. SB4 B6-B2
  19772. ZR B4,LEC7 IF BUFFER EMPTY
  19773. LEC5 SX2 B4
  19774. IX5 X5-X2
  19775. NG X5,LEC9 IF RECORD GREATER THAN FL *LIBRARY ERROR*
  19776.  
  19777. * TRANSFER BLOCK TO EXTENDED MEMORY.
  19778.  
  19779. LEC6 WE B4
  19780. JP LEC8 IF EXTENDED MEMORY WRITE ERROR
  19781.  
  19782. SX2 B4
  19783. IX0 X2+X0 INCREMENT EXTENDED MEMORY ADDRESS
  19784. SX2 B4-ESBUFL
  19785. ZR X2,LEC4 IF NOT EOR
  19786.  
  19787. * TRANSFER COMPLETE.
  19788.  
  19789. LEC7 BX6 X0
  19790. SA6 VECSC CURRENT NEXT AVAILABLE ECS ADDRESS
  19791. SA2 A5-B1 WORD 2 OF DIRECTORY
  19792. MX1 -30
  19793. BX3 -X1*X2
  19794. SA4 LECA GET EXTENDED MEMORY FWA
  19795. LX4 59-29
  19796. SB2 X4 RESTORE (B2)
  19797. BX4 X1*X4
  19798. BX6 X4+X3
  19799. SA6 A2+ PUT EXTENDED MEMORY ADDRESS IN DIRECTORY
  19800. EQ LEC1 CONTINUE PROCESSING DIRECTORY
  19801.  
  19802. * ERROR PROCESSING.
  19803.  
  19804. LEC8 MESSAGE LECE,3,R * ECS WRITE PARITY ERROR ENCOUNTERED.*
  19805. SA2 LECA
  19806. LX2 59-29
  19807. SB2 X2 RESTORE (B2)
  19808. SX1 ESBUFL
  19809. IX0 X0+X1 INCREMENT PAST ERROR
  19810. EQ LEC2 RETRY LOAD
  19811.  
  19812. * ERROR IN READING TASK LIBRARY.
  19813.  
  19814. LEC9 MX0 42 READ TASK LIBRARY NAME
  19815. SA1 TL
  19816. BX1 X0*X1
  19817. SB2 1R+ REPLACEMENT CHARACTER
  19818. SB3 DAYB ALTERNATIVE BUFFER
  19819. SB5 -LECF
  19820. RJ SNM SET NAME IN MESSAGE
  19821. MESSAGE DAYB,3,R *ERROR IN READING TASK LIBRARY - +++++++.*
  19822. ABORT
  19823.  
  19824. * SEARCH FOR NEXT TLD.
  19825.  
  19826. LEC10 SA1 LECC
  19827. NZ X1,LEC11 IF NOT FIRST DATA BASE LIBRARY SEARCH
  19828. SA1 VEDT START OF EDTS
  19829. LX1 -24
  19830. SA3 X1
  19831. LX3 -18
  19832. SX7 X3 COUNT OF EDTS TO CHECK FOR *DBTASKL*
  19833. SA7 LECD
  19834. LEC11 SA2 LECD
  19835. ZR X2,LEC12 IF NO MORE TLD-S TO SEARCH
  19836. SA1 X1 NEXT EDT
  19837. SA3 A1+4 *DBTASKL* FWA,LWA IF PRESENT FOR THIS D.B.
  19838. SB2 X3 LWA OF TLD
  19839. LX3 -18
  19840. SX6 X2-1 DECREMENT COUNT OF EDTS
  19841. SA6 A2
  19842. ZR X3,LEC11 IF NO LIBRARY FOR THIS DATA BASE
  19843. BX7 X1
  19844. SB3 X3 FWA OF TLD
  19845. SA7 LECC
  19846. SA5 B3-B1
  19847. BX7 X5 TASK LIBRARY FILE NAME
  19848. SA7 TL
  19849. EQ LEC1 SEARCH *DBTASKL* FOR ECS RESIDENT TASKS
  19850.  
  19851. * END PROCESSING.
  19852.  
  19853. LEC12 SA1 LECB TASKS NOT LOADED COUNT
  19854. ZR X1,LECX IF ALL TASKS LOADED INTO EXTENDED MEMORY
  19855. RJ CDD CONVERT CONSTANT TO DECIMAL DISPLAY
  19856. BX1 X4
  19857. SB2 1R+ REPLACEMENT CHARACTER
  19858. SB3 DAYB ALTERNATIVE BUFFER
  19859. SB5 -LECG FWA OF FORMATTED TEXT
  19860. RJ SNM SET NAME IN MESSAGE
  19861. MESSAGE DAYB,3,R * +++ TASK(S) NOT LOADED INTO EXT. MEM.*
  19862. EQ LECX RETURN
  19863.  
  19864. LECA BSSZ 1
  19865. LECB BSSZ 1
  19866. LECC DATA 0 *DBTASKL*FWA,LWA POINTERS
  19867. LECD DATA 0 COUNT OF EDTS
  19868. LECE DATA C* EXTENDED MEMORY WRITE PARITY ERROR ENCOUNTERED.*
  19869. LECF DATA C* ERROR IN READING TASK LIBRARY - +++++++.*
  19870. LECG DATA C* +++ TASK(S) NOT LOADED INTO EXTENDED MEMORY.*
  19871. LECH DATA C* LOADING EXTENDED MEMORY TASK - +++++++.*
  19872.  
  19873.  
  19874. * THE FOLLOWING TEMPORARY BUFFER AREAS ARE USED BY *LEC*
  19875. * IN THE LOADING OF EXTENDED MEMORY RESIDENT TASKS. THE
  19876. * BUFFERS OVERLAY *TAF* PRESET CODE THAT HAS BEEN PREVIOUSLY
  19877. * EXECUTED AND THE FIXED LENGTH BUFFER AREAS.
  19878.  
  19879.  
  19880. EBUF BSS 0 SCRATCH BUFFER FOR EXTENDED MEMORY LOAD
  19881. EBUFL EQU 401B BUFFER LENGTH
  19882. ESBUF EQU EBUF+EBUFL WORKING STORAGE AREA FOR ECS LOAD
  19883. ESBUFL EQU 400B WORKING STORAGE BUFFER LENGTH
  19884.  
  19885. ERRNG LAST-ESBUF-ESBUFL IF BUFFER OVERFLOW THEN ERROR
  19886. LCT SPACE 4,10
  19887. ** LCT - LOAD CM RESIDENT TASKS.
  19888. *
  19889. * THIS ROUTINE SCANS THE TASK LIBRARY DIRECTORIES AND LOADS
  19890. * ONE COPY OF EACH CM RESIDENT TASK AT A SUBCONTROL POINT.
  19891. * LOGICALLY DELETED TASKS ARE IGNORED.
  19892. *
  19893. * USES A - 1, 2, 3, 4, 5, 6, 7.
  19894. * X - ALL.
  19895. * B - 2, 3, 4, 6, 7.
  19896. *
  19897. * MACROS READSKP.
  19898.  
  19899.  
  19900. LCT SUBR ENTRY/EXIT
  19901. TB2 0,VTLD START OF TLD
  19902. TB3 -1,VTLD,LWA END OF TLD
  19903. TB7 0,VCPA FIRST SUB CONTROL POINT
  19904. SB6 TLDLE
  19905. LCT1 SA4 B2+2
  19906. ZR X4,LCT5 IF NO MORE TASKS TO CHECK IN THIS TLD
  19907. SB2 B2+B6
  19908. LX4 59-TLCMS
  19909. PL X4,LCT1 NOT A CM RESIDENT TASK
  19910. LX4 59-TLDLS-59+TLCMS
  19911. NG X4,LCT1 IF TASK LOGICALLY DELETED
  19912. SA2 A4-2 TASK NAME
  19913. SA3 ITAS INITIAL TASKS NAME
  19914. MX1 42
  19915. BX2 X1*X2
  19916. IX3 X2-X3
  19917. SA1 B7
  19918. ZR X3,LCT1 DONT LOAD INITIAL TASK AGAIN
  19919. TX6 A4-1,-VTLD TLD BIAS
  19920. SA2 A4-B1
  19921. SX5 X1 RA OF PREVIOUS SUB CP
  19922. LX1 -18
  19923. SX3 X1 FL OF PREVIOUS SUB CP
  19924. LX6 -12
  19925. IX0 X5+X3 START OF THIS SUB CP
  19926. SX5 B7+ LAST SUBCP
  19927. SX0 X0+NUAPL RA OF THIS SUB CP
  19928. SA1 A2-B1
  19929. LX5 18
  19930. SA3 AVAILCM
  19931. BX6 X6+X5 TASK ID PLUS LAST SUB CP
  19932. MX4 -TLFLN GET TASK FIELD LENGTH
  19933. LX2 TLFLN-TLFLS-1
  19934. BX4 -X4*X2
  19935. LX4 6
  19936. SX1 X1 ENTRY POINT
  19937. SX5 X4+NUAPL TOTAL TASK FIELD LENGTH
  19938. SB4 X4-77B+16B
  19939. IX7 X3-X5
  19940. TA5 0,VNACP FIRST FREE SUB CONTROL POINT
  19941. SA7 A3
  19942. LX4 18
  19943. SA3 X5 NEXT FREE SUB CONTROL POINT
  19944. SB7 X5
  19945. LX7 36
  19946. BX4 X7+X4 FREE CORE COUNT AND FIELD LENGTH
  19947. LX2 TLDAN-TLDAS-1-TLFLN+TLFLS+1
  19948. BX7 X3
  19949. LX1 18
  19950. SA7 A5 RESET FREE SUB CONTROL POINT LINK
  19951. SX3 3 CORE RESIDENT AND REUSEABLE INDICATORS
  19952. BX7 X4+X0
  19953. LX3 -3
  19954. SA7 X5 1ST WORD OF SUB CP TABLE
  19955. SX4 100 TIME SLICE LIMIT
  19956. BX7 X3+X1
  19957. LX4 36
  19958. SA7 X5+B1 2ND WORD OF SUB CP TABLE
  19959. BX6 X4+X6
  19960. MX3 30
  19961. SA6 A7+B1 3RD WORD OF SUB CP TABLE
  19962. SX1 X0+77B-16B START FOR TASK LOAD
  19963. BX6 -X3*X2 RANDOM DISK INDEX FOR TASK
  19964. SA2 TL+1 FIRST
  19965. MX4 -18
  19966. BX7 X4*X2
  19967. SA6 TL+6 RANDOM DISK INDEX
  19968. BX7 X7+X1
  19969. SA7 A2
  19970. SX6 X1+B4
  19971. SX7 X1
  19972. SA7 A7+B1 IN
  19973. SA7 A7+B1 OUT
  19974. SA6 A7+1 LIMIT
  19975. READSKP TL,,R LOAD TASK INTO CENTRAL MEMORY
  19976. SA1 B7-CPAL+2
  19977. SX7 B7
  19978. BX7 X1+X7 SET FORWARD LINK IN PREVIOUS SUB CP
  19979. SA2 LCTA
  19980. SA7 A1
  19981. BX6 X2
  19982. SA6 X0-NUAPL+CB1C SET TASK PRIORITY
  19983. SA1 B7-CPAL
  19984. MX3 24
  19985. BX7 -X3*X1 SET FREE CORE COUNT TO ZERO
  19986. SA7 A1+
  19987. EQ LCT1 CHECK FOR MORE CM RESIDENT TASKS
  19988.  
  19989. LCT5 SA1 LCTD
  19990. NZ X1,LCT6 IF NOT FIRST *DBTASKL* SEARCH
  19991. SA1 VEDT START OF EDTS
  19992. LX1 -24
  19993. SA3 X1
  19994. LX3 -18
  19995. SX7 X3 COUNT OF EDTS TO CHECK FOR *DBTASKL*
  19996. SA7 LCTE
  19997. LCT6 SA2 LCTE
  19998. ZR X2,LCTX IF LAST TLD SEARCHED, RETURN
  19999. SA1 X1 NEXT EDT
  20000. SA3 A1+4 *DBTASKL* FWA,LWA IF PRESENT FOR THIS D.B.
  20001. SB3 X3 LWA OF TLD
  20002. LX3 -18
  20003. SX6 X2-1 DECREMENT COUNT OF EDTS
  20004. SA6 A2
  20005. ZR X3,LCT6 IF NO *DBTASKL* FOR THIS DATA BASE
  20006. BX7 X1
  20007. SB2 X3 FWA OF TLD
  20008. SA7 LCTD
  20009. SA1 B2-B1
  20010. BX7 X1 TASK LIBRARY FILE NAME
  20011. SA7 TL
  20012. EQ LCT1 SEARCH THIS *DBTASKL* FOR CORE RES. TASKS
  20013.  
  20014. LCTA VFD 12/DCPPR+1,48/0 HIGHER THAN DEFAULT CPU PRIORITY
  20015.  
  20016. LCTB BSSZ 1 CORE RESIDENT TASK COUNT
  20017.  
  20018. LCTD DATA 0 *DBTASKL* FWA,LWA POINTERS
  20019. LCTE DATA 0 COUNT OF EDTS
  20020. LIT SPACE 4,15
  20021. ** LIT - LOAD INITIAL TASK.
  20022. *
  20023. * LOAD THE INITIAL TASK FROM THE SYSTEM TASK LIBRARY TO
  20024. * SUBCONTROL POINT ONE. THE INITIAL TASK REMAINS AT
  20025. * THIS SUBCONTROL POINT AS LONG AS THE TRANSACTION
  20026. * EXECUTIVE IS RUNNING.
  20027. *
  20028. * ENTRY (B2) = 1, SET CORE RESIDENT BIT FOR INITIAL TASK.
  20029. * = 0, DO NOT SET CORE RESIDENT BIT.
  20030. * (LITA) = *ITASK* BIAS.
  20031. * (LITC) = FWA OF *ITASK* TLD ENTRY.
  20032. *
  20033. * USES A - 1, 2, 3, 5, 6, 7.
  20034. * X - ALL.
  20035. * B - 2.
  20036. *
  20037. * MACROS READSKP, RECALL.
  20038.  
  20039.  
  20040. LIT SUBR ENTRY/EXIT
  20041. RECALL TL
  20042. SA2 LITA SET *ITASK* BIAS
  20043. SA1 LITC GET FWA OF *ITASK* TLD ENTRY
  20044. BX6 X2
  20045. SA2 X1+B1 WORD TWO OF TLD ENTRY
  20046. SA1 X1+
  20047. ZR B2,LIT1 IF CORE RESIDENT BIT NOT TO BE SET
  20048. MX7 1 SET CORE RESIDENT BIT FOR INITIAL TASK
  20049. SA3 A2+B1
  20050. LX7 TLCMS-59
  20051. BX7 X7+X3
  20052. SA7 A3+
  20053. EQ LITX RETURN
  20054.  
  20055. LIT1 MX4 -TLFLN GET TASK FIELD LENGTH
  20056. TX0 NUAPL,VFSCP RA FOR INITIAL TASK
  20057. SA3 AVAILCM
  20058. LX2 TLFLN-TLFLS-1
  20059. BX4 -X4*X2
  20060. LX4 6
  20061. SX1 X1 ENTRY POINT
  20062. SX5 X4+NUAPL TOTAL TASK FIELD LENGTH
  20063. SB2 X4-77B+16B
  20064. IX7 X3-X5
  20065. TA5 0,VNACP FIRST FREE SUB CONTROL POINT
  20066. SA7 A3
  20067. LX4 18
  20068. SA3 X5 NEXT FREE SUB CONTROL POINT
  20069. LX7 36
  20070. BX4 X7+X4 FREE CORE COUNT AND FIELD LENGTH
  20071. LX2 TLDAN-TLDAS-1-TLFLN+TLFLS+1
  20072. BX7 X3
  20073. LX1 18
  20074. SA7 A5 RESET FREE SUB CONTROL POINT LINK
  20075. SX3 7 SYSTEM TASK AND CORE RESIDENT
  20076. BX7 X4+X0
  20077. LX3 -3
  20078. SA7 X5 1ST WORD OF SUB CP TABLE
  20079. SX4 100 TIME SLICE LIMIT
  20080. BX7 X3+X1
  20081. LX4 36
  20082. SA7 X5+B1 2ND WORD OF SUB CP TABLE
  20083. BX6 X4+X6
  20084. MX3 30
  20085. SA6 A7+B1 3RD WORD OF SUB CP TABLE
  20086. TX1 NUAPL+77B-16B,VFSCP START FOR LOAD
  20087. BX6 -X3*X2 RANDOM DISK INDEX FOR INITIAL TASK
  20088. SA2 TL+1 FIRST
  20089. MX4 -18
  20090. BX7 X4*X2
  20091. SA6 TL+6 RANDOM DISK INDEX
  20092. BX7 X7+X1
  20093. SA7 A2
  20094. SX6 X1+B2
  20095. SX7 X1
  20096. SA7 A7+B1 IN
  20097. SA7 A7+B1 OUT
  20098. SA6 A7+B1 LIMIT
  20099. READSKP TL,,R LOAD INITIAL TASK
  20100. SA1 LITB
  20101. BX7 X1
  20102. TA7 CB1C,VFSCP
  20103. EQ LITX RETURN
  20104.  
  20105. LITA BSS 1 *ITASK* BIAS FROM *PRE*
  20106. LITB VFD 12/DCPPR,48/0 DEFAULT TASK PRIORITY
  20107. LITC BSS 1 FWA OF *ITASK* ENTRY IN TLD FROM *PRE*
  20108. PBI SPACE 4,20
  20109. ** PBI - POTENTIALLY BLOCKED TASKS DURING INITIALIZATION.
  20110. *
  20111. * THIS ROUTINE MAKES THE CALCULATIONS NECESSARY TO DETECT
  20112. * A POTENTIALLY BLOCKED TASK AT INITIALIZATION AND INSURES
  20113. * THAT ENOUGH SUBCONTROL POINTS EXIST BEFORE CM RESIDENT
  20114. * TASKS ARE LOADED.
  20115. *
  20116. * EXIT (AVAILCM) = AVAILABLE CENTRAL MEMORY.
  20117. * (CURFL) = CURRENT FIELD LENGTH.
  20118. * ABORT - IF INSUFFICIENT SUBCONTROL POINTS.
  20119. * ABORT - IF BLOCKED TASKS DETECTED.
  20120. *
  20121. * USES A - 1, 2, 3, 4, 5, 6, 7.
  20122. * X - ALL.
  20123. * B - 2, 3, 5.
  20124. *
  20125. * CALLS CDD, DBC, DBN, RTD, SNM.
  20126. *
  20127. * MACROS ABORT, MEMORY, MESSAGE.
  20128.  
  20129.  
  20130. PBI SUBR ENTRY/EXIT
  20131. BX6 X6-X6
  20132. SB5 B0 INITIALIZE TASK COUNTER
  20133. SA6 CMRFL INITIALIZE ACCUMULATOR
  20134. SA6 CMRPF INITIALIZE ACCUMULATOR
  20135. SA6 DPBK SET FOR INITIALIZATION
  20136.  
  20137. * FIRST PASS THROUGH TASK LIBRARY DIRECTORIES.
  20138.  
  20139. SB3 -1 READ ALL TLD ENTRIES
  20140. TA5 0,VTLD EXAMINE SYSTEM TLD
  20141. RJ RTD RETURN TASK LIBRARY DATA
  20142. TA4 0,VEDT GET ADDRESS OF FIRST TLD
  20143. BX0 X4 CHECK EDT COUNT
  20144. LX0 -18
  20145. SX0 X0+
  20146. ZR X0,PBI3 IF NO MORE EDT-S
  20147. PBI1 SX0 X4 SAVE LINK TO NEXT HEADER
  20148. SA5 A4+4 GET FWA OF TLD IN WORD 5
  20149. AX5 18
  20150. ZR X5,PBI2 IF LIBRARY NOT ATTACHED
  20151. SA5 X5 SET UP SEARCH ADDRESS
  20152. SB3 -B1 READ ALL TLD ENTRIES
  20153. RJ RTD RETURN TASK LIBRARY DATA
  20154. PBI2 ZR X0,PBI3 IF NO MORE DIRECTORIES
  20155. SA4 X0+ RESTORE LINK TO NEXT HEADER
  20156. EQ PBI1 PROCESS NEXT TLD
  20157.  
  20158. * CHECK IF ENOUGH SUBCONTROL POINTS EXIST.
  20159.  
  20160. PBI3 TB2 0,VNSCP GET NUMBER OF SUBCP INITIALIZED
  20161. SA3 RTDA CHECK EXISTENCE OF NON CM RESIDENT TASKS
  20162. ZR X3,PBI4 IF NO NON CM RESIDENT TASKS EXIST
  20163. SB6 B5+1
  20164. PBI4 LT B2,B6,PBI5 IF NOT ENOUGH SUBCONTROL POINTS
  20165.  
  20166. * SET CORE RESIDENT TASK COUNT.
  20167.  
  20168. SX2 B5+ GET CM RESIDENT TASK COUNT
  20169. TA1 -3,VTLD WORD 2 OF TLD HEADER
  20170. MX3 42
  20171. BX6 X3*X1
  20172. BX6 X6+X2 PUT CM RESIDENT TASK COUNT IN HEADER
  20173. SA6 A1
  20174. SA1 MFL MFL OF TAF
  20175. BX6 X1
  20176. SA6 DPBJ
  20177.  
  20178. * LOOK FOR POTENTIAL BLOCKS.
  20179.  
  20180. RJ DBC DETECT BLOCKS IN CM RESIDENT TASKS
  20181. RJ DBN DETECT BLOCKS IN NON CM RESIDENT TASKS
  20182. NE B7,PBI6 IF BLOCKED TASKS DETECTED
  20183.  
  20184. * COMPUTE THE *RFL* NEEDED FOR *TAF* TO LOAD CM RESIDENT TASKS.
  20185.  
  20186. SA1 CMRFL
  20187. TX2 0,VFSCP FWA OF ALLOCATABLE TAF FL
  20188. IX6 X1+X2 FL TO BE REQUESTED
  20189. LX6 30
  20190. SA6 PBIB
  20191. MEMORY CM,PBIB,R REQUEST FIELD LENGTH FOR TAF
  20192. SA2 PBIB
  20193. LX2 30
  20194. SX6 X2 FL REQUESTED
  20195. SA6 CURFL CURRENT FIELD LENGTH
  20196. SA1 CMRFL
  20197. BX7 X1
  20198. SA7 AVAILCM AVAILABLE CENTRAL MEMORY
  20199. EQ PBIX RETURN
  20200.  
  20201. PBI5 SX1 B6+
  20202. RJ CDD CONSTANT TO DECIMAL DISPLAY CODE
  20203. SB2 1RX SET REPLACEMENT CHARACTER
  20204. SB5 PBIA FWA OF MESSAGE
  20205. BX1 X6
  20206. LX1 48
  20207. RJ SNM SET NAME IN MESSAGE
  20208. MESSAGE PBIA INSUFFICIENT SUBCONTROL POINTS
  20209. ABORT
  20210.  
  20211. PBI6 MESSAGE PBIC * POTENTIALLY BLOCKED TASKS DETECTED.*
  20212. ABORT
  20213.  
  20214. PBIA DATA C* NEED AT LEAST XX SUBCONTROL POINTS.*
  20215.  
  20216. PBIB BSS 1 STATUS RETURN FOR MEMORY MACRO
  20217. PBIC DATA C* POTENTIALLY BLOCKED TASKS DETECTED.*
  20218. PVV SPACE 4,15
  20219. ** PVV - SET INITIALIZATION DETERMINED VALUES.
  20220. *
  20221. * EXIT (DBAA) = *DBA* STATUS WORD.
  20222. * (DTSE+1) = USER NAME ADDED TO DEFAULT DUMP PARAMETERS.
  20223. * (MFL) = MAXIMUM FL ALLOWED.
  20224. * (TL) = TASK LIBRARY NAME IN FET.
  20225. *
  20226. * USES A - 1, 2, 6, 7.
  20227. * X - 1, 2, 6, 7.
  20228. *
  20229. * MACROS MEMORY, RECALL.
  20230.  
  20231.  
  20232. PVV SUBR ENTRY/EXIT
  20233. SA1 VMFL
  20234. BX6 X1 MAXIMUM FIELD LENGTH
  20235. SA6 MFL
  20236. SA2 VUSN TAF USER NAME
  20237. SA1 VTFL TASK LIBRARY FILE NAME
  20238. BX6 X1
  20239. SA1 DTSE+1 ADD DEFAULT USER NAME
  20240. SA6 TL
  20241. BX6 X1+X2
  20242. SA6 A1
  20243. EQ PVVX RETURN
  20244.  
  20245. PVV1 RECALL DEBUGING AID
  20246. SA1 B0
  20247. LX1 -1
  20248. PL X1,PVV1 LOOP UNTIL GIVEN GO AHEAD
  20249. EQ PVVX RETURN
  20250.  
  20251. PVVA CON 0 MEMORY STATUS WORD
  20252.  
  20253. * REMOTE CODE CONTAINING THE VARIABLE TABLE/BUFFER REFERENCES
  20254.  
  20255. TINST BSS 0
  20256. TINST HERE
  20257. TINSTL EQU *-TINST
  20258. ERRNG LAST-* PRESET OVERFLOW INTO TABLES
  20259. BUFFERS TITLE BUFFERS AND SUBCP-S.
  20260. * FIXED LENGTH BUFFERS.
  20261.  
  20262. JBUFL EQU 1201B
  20263. JBUF0 EQU ENDT
  20264.  
  20265. TDIBFL EQU TIMDM LENGTH OF TOTAL INPUT BUFFER
  20266. TDIBF EQU JBUF0+JBUFL TOTAL D.M. INPUT BUFFER
  20267.  
  20268. TDOBFL EQU 30B LENGTH OF TOTAL OUTPUT BUFFER
  20269. TDOBF EQU TDIBF+TDIBFL TOTAL OUTPUT BUFFER
  20270.  
  20271. OBUFL EQU 401B
  20272.  
  20273. OBUF EQU TDOBF+TDOBFL OUTPUT BUFFER
  20274.  
  20275. SBUFL EQU 100B
  20276. SBUF EQU OBUF+OBUFL SCRATCH WORKING BUFFER
  20277.  
  20278. PBUFL EQU 30*ITTPL SPACE FOR 30 INTERNAL TRACE PACKETS
  20279. PBUF EQU SBUF+SBUFL INTERNAL TRACE BUFFER
  20280.  
  20281. LASTF EQU PBUF+PBUFL LAST ADDRESS OF FIXED FIELD LENGTH
  20282. TROVL EQU LASTF+1
  20283.  
  20284. TRANOVL (PROCESS TASK DUMP.)
  20285. DTS SPACE 4,10
  20286. ** DTS - DUMP A TASKS FIELD LENGTH AND ASSOCIATED CONTROL AREAS.
  20287. *
  20288. * DTS FORMATS A JOB FILE CONTAINING THE TASK DUMP AREAS AND
  20289. * CONTROL BLOCKS AND SUBMITS THIS FILE TO THE SYSTEM FOR BATCH
  20290. * PROCESSING.
  20291. *
  20292. * REFERENCE *KTSDMP* FOR FURTHER DOCUMENTATION OF DUMP FILE
  20293. * FORMAT AND SUBSEQUENT PROCESSING.
  20294. *
  20295. * ENTRY (B2) = SUB CONTROL POINT AREA OF TASK.
  20296. * (B3) = DUMP CONTROL WORDS.
  20297. * (X0) = COMMUNICATION BLOCK ADDRESS.
  20298. *
  20299. * CALLS COD, GPW, RSP, SFN, SNM, ZTB.
  20300. *
  20301. * MACROS CLOCK, DATE, MESSAGE, RETURN, REWIND, ROUTE, SUBMIT,
  20302. * WRITER, WRITEW.
  20303.  
  20304.  
  20305. DTS BSS 0
  20306. ENTRY DTS
  20307.  
  20308. SA2 B3 DSDUMP/CMDUMP CONTROL INFORMATION
  20309. SX7 B0
  20310. SA0 A2
  20311. NG X2,DTS1 IF TASK SUPPLIED DSDUMP PARAMETERS
  20312. SA0 DTSE SYSTEM DEFAULT DUMP PARAMETERS
  20313.  
  20314. * FORMAT *ACCOUNT* COMMAND.
  20315.  
  20316. DTS1 SA7 SF+6 CLEAR JOBNAME FROM FET+6
  20317. REWIND SF,R REWIND DUMP FILE
  20318. SA1 X0+CMBHL FIRST WORD OF COMMUNICATION BLOCK
  20319. MX3 12
  20320. BX3 X3*X1 DATA BASE NAME
  20321. TB3 0,VEDT EDT HEADER WORD
  20322. DTS2 SA4 B3+
  20323. BX1 X3*X4 EDT DATA BASE NAME
  20324. BX1 X1-X3
  20325. SB3 X4+
  20326. ZR X1,DTS3 IF DATA BASE MATCH FOUND
  20327. NZ B3,DTS2 IF NO MATCH
  20328. RJ GPW GET TAF PASSWORD
  20329. SA4 VUSN-2 USE DEFAULT SYSTEM USER NAME/PASSWORD
  20330. DTS3 SA1 A4+2 USER NAME
  20331. MX0 42
  20332. SA5 A1+B1 PASSWORD
  20333. BX7 X7-X7
  20334. SA7 VPWD CLEAR TAF PASSWORD
  20335. BX1 X0*X1
  20336. BX5 X0*X5
  20337. RJ SFN SPACE FILL NAME
  20338. BX4 X0*X6 SPACE FILLED USER NAME
  20339. BX1 X5
  20340. RJ SFN SPACE FILL NAME
  20341. SA1 DTSB ACCOUNT COMMAND
  20342. BX2 X0*X6 SPACE FILLED PASSWORD
  20343. MX6 48
  20344. BX7 X6*X1 MERGE USER NUMBER/PASSWORD INTO CARD IMAGE
  20345. LX4 12
  20346. BX1 -X6*X4
  20347. LX2 24
  20348. SX3 1R,
  20349. BX7 X7+X1
  20350. SA7 A1 FIRST LINE
  20351. MX0 -24
  20352. BX6 X6*X4
  20353. LX3 24
  20354. BX7 -X0*X2
  20355. IX6 X6+X3
  20356. BX7 X7+X6 SECOND LINE
  20357. SX1 1R.
  20358. SA7 A7+B1
  20359. BX6 X0*X2
  20360. LX1 36
  20361. BX7 X1+X6 THIRD LINE
  20362. SA7 A7+B1
  20363.  
  20364. * FORMAT *ROUTE* COMMAND.
  20365.  
  20366. SA3 A0+B1
  20367. MX0 -12
  20368. BX5 -X0*X3 ORIGIN TYPE
  20369. MX6 42
  20370. SX7 X5-2
  20371. BX3 X6*X3 DESTINATION PARAMETER
  20372. ZR X7,DTS6 IF USER PERMANENT FILE OPTION SPECIFIED
  20373. ZR X5,DTS4 IF ROUTE TO LOCAL PRINTER (BATCH QUEUE)
  20374. SX2 3RUN=
  20375. LX2 42
  20376. AX3 18
  20377. BX1 X2+X3
  20378. RJ ZTB CONVERT ZEROES TO BLANKS
  20379. SA6 DTSD+2 COMPLETE *ROUTE* COMMAND
  20380. EQ DTS5 WRITE COMMANDS
  20381.  
  20382. DTS4 MX7 -6
  20383. MX0 -42
  20384. AX3 18
  20385. BX1 -X7*X3 PRINTER IDENTIFICATION FOR BATCH
  20386. RJ COD CONVERT OCTAL TO DISPLAY
  20387. AX4 18
  20388. SX2 3RID=
  20389. LX2 42
  20390. BX4 -X0*X6
  20391. BX6 X2+X4
  20392. SA6 DTSD+2 COMPLETE *ROUTE* COMMAND
  20393.  
  20394. * WRITE COMMANDS FOR BATCH OR *E/I* DUMP MODE.
  20395.  
  20396. DTS5 WRITEW SF,DTSA,DTSA2L
  20397. WRITER SF,R WRITE COMMANDS
  20398. EQ DTS7 CONTINUE
  20399.  
  20400. * SET UP COMMANDS FOR PERMANENT FILE DUMP OPTION.
  20401.  
  20402. DTS6 SX4 2R,,
  20403. SA1 DTSC *KTSDMP* COMMAND
  20404. MX7 36
  20405. LX4 12
  20406. BX1 X7*X1 KTSDMP
  20407. MX0 48
  20408. IX1 X1+X4 KTSDMP,,
  20409. LX3 12
  20410. SA4 DTSH *,P.*
  20411. BX6 -X0*X3
  20412. BX6 X6+X1 KTSDMP,,FI
  20413. SA6 A1
  20414. BX1 X0*X3
  20415. RJ SFN SPACE FILL USER NAME
  20416. MX0 30
  20417. BX7 X0*X6 LENAM
  20418. BX7 X7+X4 LENAM,P.
  20419. SA7 A6+B1
  20420. WRITEW SF,DTSA,DTSA1L
  20421. WRITER SF,R WRITE COMMANDS
  20422. SA1 DTSI RESTORE *KTSDMP* COMMAND
  20423. SX7 B0
  20424. BX6 X1
  20425. SA7 DTSC+1
  20426. SA6 DTSC *KTSDMP.*
  20427.  
  20428. * FORMAT GENERAL INFORMATION SECTION.
  20429.  
  20430. DTS7 SA1 SREG
  20431. MX5 1
  20432. AX1 18 POINTER TO TASK SYSTEM AREA
  20433. SA1 X1+CB1C
  20434. MX7 -24
  20435. LX1 -18
  20436. BX1 -X7*X1 TASK SEQUENCE NUMBER
  20437. RJ COD CONVERT TO DISPLAY CODE
  20438. SX6 2000B GENERAL INFORMATION HEADER
  20439. SB3 B2-B1
  20440. AX7 X5,B3 DELETE TRAILING BLANKS
  20441. BX7 X7*X4
  20442. LX6 48
  20443. SA7 DTSF-1 USE SEQUENCE NUMBER FOR DUMP RECORD NAME
  20444. SA6 A7+B1
  20445. SA1 SREG
  20446. BX5 X1 EXCHANGE PACKAGE ADDRESS
  20447. LX5 -18 RIGHT JUSTIFY FWA OF TASK SYSTEM AREA
  20448. SA1 X1+2
  20449. MX2 -12
  20450. LX1 12 TASK LIBRARY INDEX
  20451. BX1 -X2*X1
  20452. TA2 X1-1,VTLD TASK NAME
  20453. MX6 42
  20454. BX1 X6*X2 USE TASK NAME AS LABEL
  20455. RJ SFN SPACE FILL NAME
  20456. SA6 DTSF+1
  20457. DATE DTSF+2 DATE
  20458. CLOCK DTSF+3 CURRENT TIME
  20459. WRITEW SF,DTSF-1,DTSFL+1 GENERAL INFORMATION BLOCK
  20460.  
  20461. * FORMAT EXCHANGE PACKAGE SECTION.
  20462.  
  20463. SA1 A0
  20464. LX1 1
  20465. PL X1,DTS8 IF NO DUMP OF EXCHANGE PACKAGE DESIRED
  20466. SX7 2002B EXCHANGE PACKAGE DUMP HEADER
  20467. SX2 NUAPL LENGTH OF TASK SUB CP AREA
  20468. LX7 48
  20469. BX7 X7+X2
  20470. SA7 DTSF
  20471. WRITEW SF,DTSF,DTSFL WRITE EXCHANGE PACKAGE CONTROL BLOCK
  20472. WRITEW SF,X5,NUAPL WRITE TASK SUBCP AREA
  20473.  
  20474. * FORMAT COMMUNICATION BLOCK SECTION.
  20475.  
  20476. DTS8 LX5 18 RIGHT JUSTIFY FWA OF TASK SUBCP TABLE
  20477. SA2 X5+B1 COMMUNICATION BLOCK ADDRESS
  20478. LX5 -18 RIGHT JUSTIFY FWA OF TASK SYSTEM AREA
  20479. SA3 X2
  20480. SA1 X3+CMBHL FIRST WORD OF COMMUNICATION BLOCK
  20481. MX2 -24
  20482. BX7 -X2*X1 TRANSACTION SEQUENCE NUMBER
  20483. SA3 DTSG
  20484. SA1 X5
  20485. LX3 -24
  20486. NZ X3,DTS9 IF CALLED FROM ADDRESS GIVEN
  20487. LX1 24
  20488. BX3 -X2*X1 *P* ADDRESS OF SUB CONTROL POINT
  20489. DTS9 SX1 2003B COMMUNICATION BLOCK DUMP HEADER
  20490. SA7 DTSF+2
  20491. SX2 CMBL-CMBHL+3 LENGTH OF COMMUNICATION BLOCK + 3
  20492. SX7 X3
  20493. SA7 A7+B1 CALLED FROM ADDRESS
  20494. LX1 48
  20495. BX6 X2+X1
  20496. SA6 DTSF
  20497. WRITEW SF,DTSF,DTSFL COMMUNICATION BLOCK CONTROL HEADER
  20498. WRITEW SF,X5+NUAPL+SUAC,CMBL-CMBHL+3 WRITE C.B.
  20499.  
  20500. * FORMAT TASK MEMORY DUMP SECTION.
  20501.  
  20502. SA1 A0
  20503. SX7 X1+ FWA OF TASK TO DUMP
  20504. LX1 -30
  20505. SX6 X1 LWA OF TASK TO DUMP
  20506. IX0 X6-X7
  20507. ZR X0,DTS17 IF NO FIELD LENGTH TO DUMP
  20508. SA1 X5+2
  20509. LX1 24
  20510. SX2 X1 TASK FL
  20511. IX4 X2-X6
  20512. PL X4,DTS10 IF TASK FL .GE. LWA
  20513. SX6 X2
  20514. SX3 DSMNFL
  20515. IX0 X6-X7
  20516. IX4 X0-X3
  20517. PL X4,DTS10 IF LWA-FWA .GE. DSMNFL
  20518. BX7 X7-X7
  20519. IX0 X6-X7
  20520. DTS10 SA7 DTSF+1
  20521. SX5 X5+NUAPL TASK RA
  20522. SA6 A7+1
  20523. SX3 2001B
  20524. SX0 X0-1
  20525. LX3 48
  20526. BX6 X3+X0
  20527. SA6 A7-B1 SET TOTAL AMOUNT OF MEMORY TO DUMP
  20528. IX5 X5+X7
  20529. WRITEW SF,DTSF,DTSFL MEMORY BLOCK HEADER
  20530. WRITEW SF,X5,X0-11B TASK MEMORY (COMPENSATE FOR *WRITEW*)
  20531. IX5 X5+X0
  20532. WRITEW SF,X5-11B,6 WRITE LAST 11B WORDS IN 2 BLOCKS
  20533. WRITEW SF,X5-3,3
  20534.  
  20535. * SUBMIT DUMP FILE TO INPUT QUEUE FOR PROCESSING.
  20536.  
  20537. DTS17 WRITER SF,R FLUSH BUFFER
  20538. SA2 SF SET FILE NAME
  20539. MX0 42
  20540. BX7 X0*X2
  20541. SA7 TDSP
  20542. SX6 B0+ CLEAR JOB ID
  20543. SA6 TDSP+2
  20544. SA1 A0+B1
  20545. MX2 -3
  20546. LX1 -12
  20547. BX6 -X2*X1 ORIGIN CODE
  20548. SX3 X6-BCOT
  20549. ZR X3,DTS18 IF BATCH ORIGIN
  20550. MX0 -24 SET *TID* FOR IMPLICIT *EIOT* ROUTE
  20551. BX6 -X0
  20552. SA6 TDSP+2
  20553. DTS18 RJ RSP RESTORE B2 AND B7
  20554. SA1 DTSP DSP PARAMETERS
  20555. SA3 A1+B1
  20556. SA4 LOVLX GET RETURN ADDRESS
  20557. LX4 -30+18
  20558. BX3 X3+X4
  20559. SA4 A3+B1
  20560. EQ RFQ ROUTE FILE TO QUEUE
  20561.  
  20562.  
  20563. DTSA DIS ,*DUMP.*
  20564. DTSB DIS ,*ACCOUNT,USERNUM,PASSWOR.*
  20565. IFC NE,$"CGNM"$$
  20566. DATA C*CHARGE,"CGNM","PJNM".*
  20567. ENDIF
  20568. DTSC DIS ,*KTSDMP. *
  20569. DTSA1L EQU *-DTSA LENGTH OF COMMAND BLOCK FOR PF
  20570. DTSD DIS ,*ROUTE,OUTPUT,DC=PR, UN=USERNUM.*
  20571. DTSA2L EQU *-DTSA LENGTH OF COMMAND BLOCK FOR BC AND IE
  20572.  
  20573. DTSFL EQU 5 LENGTH OF A DUMP CONTROL BLOCK
  20574. BSS 1
  20575. DTSF BSS DTSFL DUMP CONTROL BLOCK STORAGE
  20576.  
  20577. DTSH VFD 30/0,18/3R,P.,12/0
  20578. DTSI VFD 60/10HKTSDMP.
  20579.  
  20580.  
  20581. DTSM DATA C* DSP ERROR XXB RETURNED ON JOB ROUTE.*
  20582.  
  20583. * *DSP* PARAMETERS FOR KTSDMP OF TASK.
  20584.  
  20585. DTSP VFD 12/,12/,12/0LNO,6/,18/FRER+FRDC+FRTI
  20586. VFD 24/,18/**,18/RFQ2 STATUS PROCESSOR INFORMATION
  20587. DATA L*K KTSDUMP.*
  20588. GPW SPACE 4,10
  20589. ** GPW - GET PASSWORD.
  20590. *
  20591. * GET TAF PASSWORD FROM TAF CONFIGURATION FILE.
  20592. *
  20593. * EXIT (VPWD) = TAF PASSWORD.
  20594. * (A0) = ENTRY VALUE.
  20595. *
  20596. * USES X - 0, 1, 2, 3, 4, 5, 7.
  20597. * A - 1, 4, 5, 7.
  20598. * B - 7.
  20599. *
  20600. * CALLS UPC.
  20601. *
  20602. * MACROS ABORT, MESSAGE, READ, READC, REWIND.
  20603.  
  20604.  
  20605. GPW SUBR ENTRY/EXIT
  20606. REWIND TCF,R
  20607. READ TCF
  20608.  
  20609. * READ AND UNPACK *TCF* STATEMENT.
  20610.  
  20611. GPW1 READC TCF,GPWB,GPWBL READ *TCF* STATEMENT
  20612. NZ X1,GPW3 IF NO MORE STATEMENTS IN THE *TCF*
  20613. SA5 GPWB FIRST WORD TO UNPACK
  20614. SB7 GPWC FWA TO UNPACK INTO
  20615. RJ UPC UNPACK STATEMENT
  20616. NZ X6,GPW4 IF UNPACK ERROR
  20617. MX0 42
  20618. SA1 GPWC
  20619. SA4 GPWA FWA OF STATEMENT TABLE
  20620.  
  20621. * SEARCH FOR STATEMENT IN TABLE.
  20622.  
  20623. GPW2 ZR X4,GPW1 IF END OF TABLE
  20624. BX5 X1-X4
  20625. BX2 X0*X5
  20626. SA4 A4+B1
  20627. NZ X2,GPW2 IF NO MATCH
  20628.  
  20629. * GET TAF PASSWORD FROM STATEMENT.
  20630.  
  20631. MX3 42
  20632. SA1 A1+2
  20633. BX7 X3*X1 PASSWORD
  20634. SA7 VPWD
  20635. BX7 X7-X7 CLEAR PASSWORD STORAGE AREA
  20636. SA7 A1
  20637. EQ GPWX RETURN
  20638.  
  20639. GPW3 SX1 GPWD *NO USER OR ACCOUNT STATEMENT IN THE TCF*
  20640. EQ GPW5 ISSUE MESSAGE
  20641.  
  20642. GPW4 SX1 GPWE *INCORRECT TCF ENTRY*
  20643. GPW5 MESSAGE X1,0,R ISSUE MESSAGE
  20644. ABORT
  20645.  
  20646. * RELEVANT *TCF* STATEMENT TABLE.
  20647.  
  20648. GPWA VFD 42/0LACCOUNT,18/0 *ACCOUNT* STATEMENT
  20649. VFD 42/0LUSER,18/0 *USER* STATEMENT
  20650. CON 0 TABLE TERMINATOR
  20651.  
  20652. GPWB BSSZ 16 BUFFER FOR *TCF* STATEMENT
  20653. GPWBL EQU *-GPWB BUFFER LENGTH
  20654. GPWC BSSZ 80 BUFFER FOR UNPACKED *TCF* STATEMENT
  20655.  
  20656. GPWD DATA C* NO USER OR ACCOUNT STATEMENT IN THE TCF.*
  20657. GPWE DATA C* INCORRECT TCF ENTRY.*
  20658. SPACE 4,10
  20659. *CALL COMCRDC
  20660. SPACE 4,10
  20661. * *TCF* FET.
  20662.  
  20663. TCF BSS 0 TAF CONFIGURATION FILE
  20664. TCF FILEC TCBUF,TCBUFL,FET=13,EPR
  20665.  
  20666. * *TCF* BUFFER.
  20667.  
  20668. TCBUFL EQU 2*64+1
  20669. TCBUF BSS TCBUFL BUFFER FOR *TCF*
  20670. ENDOVL
  20671. TRANOVL (EXTENDED MEMORY ERROR PROCESSING.)
  20672. ECE SPACE 4
  20673. ** ECE - PROCESS EXTENDED MEMORY READ ERROR FROM TASK LIBRARY.
  20674. *
  20675. * ENTRY (ECRA) = 6/,18/EDT,18/TFL,18/SCP
  20676. * (X5) = 30/TLN, 30/RDA
  20677. *
  20678. * EDT - ELEMENT DESCRIPTOR TABLE ADDRESS.
  20679. * TFL - TASK FIELD LENGTH.
  20680. * SCP - START OF SUB CP TABLE.
  20681. * TLN - ADDRESS OF TASK LIBRARY NAME.
  20682. * RDA - RANDOM DISK/EXTENDED MEMORY ADDRESS OF TASK.
  20683. *
  20684. * EXIT TO *SCHD11* - (X7) AND (X5) RETURNED FOR DISK LOADING.
  20685. *
  20686. * USES A - ALL.
  20687. * X - ALL.
  20688. * B - 3, 4, 5, 7.
  20689. *
  20690. *
  20691. * CALLS COD, SNM.
  20692. *
  20693. * MACROS ATTACH, ENTRY, MESSAGE, READ, READW, RECALL, SKIPB,
  20694. * SKIPEI.
  20695.  
  20696.  
  20697. ECE BSS 0
  20698. ENTRY ECE
  20699.  
  20700. SB4 SCHD1 SET SCHEDULAR LOADER EXIT
  20701. SA1 ECRA PARAMETERS FOR ECS ERROR PROCESSING
  20702. BX7 X1
  20703. MESSAGE ECEE,3,R * EXTENDED MEMORY READ ERROR.*
  20704. ECE1 BX6 X5 SAVE X5 AND X7
  20705. SA6 ECEA
  20706. BX0 X7
  20707. SX6 B2 SAVE B2, B4 AND B7
  20708. LX6 18
  20709. SX4 B7
  20710. BX6 X6+X4
  20711. LX6 18
  20712. SX4 B4
  20713. BX6 X6+X4
  20714. SA6 A6+B1
  20715.  
  20716. * ATTACH LIBRARY FILE IN MODIFY MODE.
  20717.  
  20718. RECALL TL WAIT FOR LIBRARY FILE IDLE
  20719. LX0 -36 EDT ADDRESS
  20720. MX2 42 USER NAME
  20721. SA3 X0+2
  20722. BX3 X2*X3
  20723. BX7 X7-X7 CLEAR PACKNAME FROM FET
  20724. SA7 TL+CFPK
  20725. MX6 -48
  20726. SA4 VUSN SYSTEM USER NAME
  20727. BX1 X3-X4
  20728. ZR X1,ECE2 IF SYSTEM TASK LIBRARY
  20729. SA4 X0+5 PACK NAME AND DEVICE TYPE TO FET
  20730. MX2 -12
  20731. LX2 6
  20732. BX7 X2*X4
  20733. LX4 59-17
  20734. SA1 TL+1
  20735. SA7 A7
  20736. BX7 -X6*X1
  20737. BX4 X6*X4
  20738. BX7 X7+X4
  20739. SA7 A1+
  20740. ECE2 LX5 30 SET LIBRARY NAME IN FET
  20741. SA2 X5+
  20742. BX6 X2
  20743. SA6 TL
  20744. MX2 1 SET *EPR* FOR THIS ATTACH
  20745. LX2 44-59
  20746. SA5 A6+1
  20747. BX6 X2+X5
  20748. SA6 A5
  20749. ATTACH TL,,X3,,M ATTACH LIBRARY FILE IN MODIFY MODE
  20750. SA1 X2 CHECK STATUS
  20751. BX7 X5 CLEAR *EPR*
  20752. MX2 -4
  20753. SA7 A5
  20754. LX1 -10
  20755. BX2 -X2*X1
  20756. NZ X2,ECE7 IF ATTACH ERROR
  20757.  
  20758. * READ LIBRARY DIRECTORY.
  20759.  
  20760. SX6 OBUF
  20761. SA1 TL+1 SET FET BUFFER ADDRESSES
  20762. MX2 42
  20763. BX7 X2*X1
  20764. BX7 X7+X6
  20765. SA6 A1+B1 IN
  20766. SA7 A1 FIRST
  20767. SA6 A6+B1 OUT
  20768. SA3 A6+B1 LIMIT
  20769. BX7 X2*X3
  20770. SX6 X6+OBUFL
  20771. BX7 X7+X6
  20772. SA7 A3
  20773. SKIPEI TL SKIP TO EOI
  20774. SKIPB TL,2 BACKSPACE TO POSITION AT DIRECTORY
  20775. READ TL START READ OF DIRECTORY
  20776.  
  20777. * FIND ENTRY ON LIBRARY DIRECTORY FOR TASK.
  20778.  
  20779. LX0 36 SCP ADDRESS
  20780. SA1 X0 SET BUFFER AT SUBCONTROL POINT RA+100B-4
  20781. SA0 X1+100B-TLDLH
  20782. SA2 A1+2 TASK DIRECTORY INDEX
  20783. MX3 12
  20784. BX4 X3*X2
  20785. LX4 12
  20786. TA5 X4-1,VTLD FIRST WORD OF TLD ENTRY
  20787. MX2 42
  20788. BX5 X2*X5 TASK NAME
  20789. SB7 TLDLH+TLDLE*10 BUFFER LENGTH (HEADER + 10 ENTRIES)
  20790. READW TL,A0,B7 READ DIRECTORY
  20791. NG X1,ECE6 IF DIRECTORY EMPTY
  20792. SA0 A0+TLDLH
  20793. SB4 A0+
  20794. ECE3 SB5 X1
  20795. MX3 42
  20796. NZ X1,ECE4 IF EOR
  20797. SB5 A0+10*TLDLE
  20798. ECE4 SA2 B4+ LOOK FOR MATCHING ENTRIES
  20799. BX4 X3*X2
  20800. IX6 X5-X4
  20801. ZR X6,ECE5 IF ENTRIES MATCH
  20802. SB4 A2+TLDLE
  20803. LT B4,B5,ECE4 IF MORE IN BUFFER
  20804. NZ X1,ECE6 IF SEARCH COMPLETE
  20805. SB7 10*TLDLE BUFFER LENGTH IS 10 ENTRIES
  20806. READW TL,A0,B7
  20807. NG X1,ECE6 IF EOF/EOI
  20808. SB4 A0+
  20809. EQ ECE3 CONTINUE READING DIRECTORY ENTRIES
  20810.  
  20811. * REPLACE OLD TLD ENTRY AND CLEAR EXTENDED MEMORY BIT.
  20812.  
  20813. ECE5 BX7 X2
  20814. SA7 A5
  20815. SA5 A2+B1
  20816. BX7 X5
  20817. SA7 A7+B1
  20818. SA2 A5+B1
  20819. SX3 B1
  20820. LX3 56
  20821. BX7 -X3*X2
  20822. SX4 12B REPLACE USAGE AND CORE RESIDENT/OFF BITS
  20823. LX4 -6
  20824. MX6 36
  20825. LX6 -6
  20826. BX6 X4+X6
  20827. SA4 A7+B1
  20828. BX6 X6*X4
  20829. BX7 X7+X6
  20830. SA7 A7+B1
  20831.  
  20832. * ISSUE DAYFILE MESSAGE.
  20833.  
  20834. SA2 A5-B1
  20835. MX3 42
  20836. BX1 X3*X2
  20837. SB2 1R+ REPLACEMENT CHARACTER
  20838. SB5 -ECED FWA OF FORMATTED TEXT
  20839. SB3 DAYB ALTERNATIVE BUFFER
  20840. RJ SNM SET NAME IN MESSAGE
  20841. MESSAGE DAYB,3,R * ECS TASK +++++++ NOW MS RESIDENT.*
  20842.  
  20843. * RE-ATTACH LIBRARY IN READ/MODIFY MODE.
  20844.  
  20845. LX0 -36
  20846. MX1 42
  20847. SA3 X0+2 USER NAME
  20848. BX3 X1*X3
  20849. ATTACH TL,,X3,,RM RE-ATTACH FILE
  20850.  
  20851. * PUT DISK ADDRESS IN LOAD STACK ENTRY.
  20852.  
  20853. SA3 ECEA RE-LOAD (X5) AND RESTORE DISK ADDRESS
  20854. MX1 30
  20855. BX2 X1*X3
  20856. LX5 30
  20857. BX4 -X1*X5
  20858. BX5 X2+X4
  20859. LX0 36
  20860. SA2 ECEB RESTORE (B2), (B4), (B7) AND (X7)
  20861. SB4 X2
  20862. LX2 -18
  20863. SB7 X2
  20864. LX2 -18
  20865. SB2 X2
  20866. BX7 X0
  20867. MX3 1
  20868. PL X7,SCHD11 IF NOT ENTERED FROM ERROR PROCESSING
  20869. BX7 -X3*X7 CLEAR ERROR BIT FOR DISK LOAD
  20870. SB4 TERP18 SET RETURN ADDRESS
  20871. EQ SCHD11 LOAD TASK FROM DISK
  20872.  
  20873. * CANNOT LOAD TASK FROM DISK OR EXTENDED MEMORY.
  20874.  
  20875. ECE6 SA1 X0+B1 SET PROGRAM STOP AT TASK ENTRY POINT
  20876. LX1 -18 ENTRY POINT ADDRESS
  20877. SA2 X0 TASK RA
  20878. BX6 X6-X6
  20879. SB3 X2
  20880. SA6 X1+B3
  20881. SA2 A1+B1 TURN TASK OFF
  20882. MX3 12
  20883. BX4 X3*X2
  20884. LX4 12
  20885. TA5 X4-1+2,VTLD WORD 3 OF DIRECTORY
  20886. MX3 1
  20887. LX3 55-59 OFF BIT
  20888. BX7 X3+X5
  20889. SA7 A5
  20890.  
  20891. * ISSUE DAYFILE MESSAGE.
  20892.  
  20893. SA2 A5-2 READ TASK NAME
  20894. SB3 DAYB ALTERNATIVE BUFFER
  20895. MX4 42
  20896. BX1 X4*X2
  20897. SB2 1RX REPLACMENT CHARACTER
  20898. SB5 -ECEC FWA OF MESSAGE TEXT
  20899. RJ SNM SET NAME IN MESSAGE
  20900. SA5 ECEA
  20901. LX5 30
  20902. SA2 X5 READ DATA BASE LIBRARY NAME
  20903. BX1 X4*X2
  20904. LX5 30
  20905. SB2 1R+ REPLACEMENT CHARACTER
  20906. SB5 DAYB FWA OF MESSAGE
  20907. RJ SNM SET NAME IN MESSAGE
  20908. MESSAGE DAYB,3 * OFF TASK XXXXXXX - LIBRARY +++++++.*
  20909. SB3 SCHD34 RE-START ADDRESS
  20910. EQ ECE8 INITIATE TASK
  20911.  
  20912. * CANNOT ATTACH TASK LIBRARY - PUT TASK IN RECALL.
  20913.  
  20914. ECE7 LX0 36 SET RECALL BIT IN TASK SCP TABLE
  20915. SA1 X0+B1
  20916. MX2 1
  20917. LX2 56-59
  20918. BX7 X2+X1
  20919. SA7 A1+
  20920. SA1 X0 SAVE (X0) AND (X5) IN TASK SYSTEM AREA
  20921. SA5 ECEA
  20922. BX7 X0
  20923. BX6 X5
  20924. SA6 X1-NUAPL+16B
  20925. SA7 A6+1
  20926. SX7 DCPPR-2 SET LOWER CPU PRIORITY
  20927. LX7 48
  20928. SA7 X1-NUAPL+CB1C
  20929. SX6 ECR1 RETURN ADDRESS
  20930. SB3 SCHD34 SCHEDULER RETURN ADDRESS
  20931. SA6 X1-NUAPL+RCL
  20932. PL X0,ECE8 IF CALL FROM SCHEDULER
  20933. SB3 ECE10 RETURN ADDRESS
  20934. ECE8 LX0 -36 RE-ATTACH LIBRARY IN READ/MODIFY MODE
  20935. SA3 X0+2
  20936. MX1 42
  20937. BX3 X1*X3
  20938. ATTACH TL,,X3,,RM
  20939. SA2 ECEB RESTORE (B2), (B4), (B7) AND (X7)
  20940. SB4 X2
  20941. LX2 -18
  20942. SB7 X2
  20943. LX2 -18
  20944. SB2 X2
  20945. LX0 36
  20946. BX7 X0
  20947. JP B3 EXIT
  20948.  
  20949. ECE9 SA5 B2+16B RESTORE (X5) AND (X7)
  20950. SA2 A5+B1
  20951. BX7 X2
  20952. SB4 ECE10 RETURN ADDRESS
  20953. EQ ECE1 RE-TRY ATTACH
  20954.  
  20955. ECE10 RJ DCPT DROP CPU FOR TASK
  20956. EQ TSSC TIME SLICE SUBCP
  20957.  
  20958. ECEA BSS 1 STORAGE FOR (X5)
  20959. ECEB BSS 1 STORAGE FOR (B2), (B4) AND (B7)
  20960. ECEC DATA C* OFF TASK XXXXXXX - LIBRARY +++++++.*
  20961. ECED DATA C* EXTENDED MEMORY TASK +++++++ NOW MS RESIDENT.*
  20962. ECEE DATA C* EXTENDED MEMORY READ ERROR.*
  20963.  
  20964. ENDOVL
  20965.  
  20966. ECE9 EQU /"PROD""M."/ECE9
  20967. TRANOVL (TAPE ASSIGNMENT.)
  20968. SPACE 4
  20969. *** K - D I S P L A Y C O M M A N D S
  20970. PASN SPACE 4
  20971. *** K.ASSIGN,EQ. OR K.ASSIGN,EQ,XX,N.
  20972. *
  20973. * ASSIGN TAPE EQUIPMENT -EQ- TO A *FREE* POOL OF UNITS FOR USE
  20974. * BY ANY JOURNAL FILE, OR ASSIGN TAPE EQUIPMENT -EQ- TO JOURNAL
  20975. * FILE -N- OF DATA BASE -XX- IF THE FILE HAS BEEN FORCED TO
  20976. * DISK BECAUSE IT NEEDED A TAPE UNIT WHEN NONE WAS AVAILABLE.
  20977. * A JOURNAL FILE MUST BE PREDEFINED AS A TAPE FILE TO ASSIGN
  20978. * IT A TAPE.
  20979. * ONLY TWO TAPES MAY BE ASSIGNED TO THE *FREE* POOL.
  20980. *
  20981. * EQ = EST ORDINAL OF TAPE UNIT.
  20982. * XX = DATA BASE NAME.
  20983. * N = JOURNAL FILE NUMBER (1-3)
  20984.  
  20985.  
  20986. ASSIGN BSS 0
  20987. ENTRY ASSIGN,K
  20988.  
  20989. SA5 SBUF+1 EQ PARAMETER
  20990. SB7 B0 ASSUME OCTAL BASE
  20991. SB6 B2-B1
  20992. RJ DXB CONVERT EQ TO BINARY NUMBER
  20993. NZ X4,PCMD3 IF ERROR IN CONVERSION
  20994. SA6 PASA SAVE EST ORDINAL
  20995. EQ B6,B1,PAS3 IF POOL ASSIGNMENT
  20996. SB3 3
  20997. NE B6,B3,PCMD3 IF INCORRECT PARAMETER COUNT
  20998.  
  20999. * TAPE ASSIGNED TO SPECIFIC JOURNAL FILE
  21000.  
  21001. SA5 A5+2 JOURNAL FILE NUMBER
  21002. RJ DXB CONVERT TO BINARY
  21003. NZ X4,PCMD3 IF ERROR IN CONVERSION
  21004. TA2 0,VEDT EDT HEADER
  21005. ZR X6,PCMD3 IF INCORRECT JOURNAL FILE NUMBER
  21006. SA5 A5-B1 DATA BASE NAME
  21007. SB3 X2
  21008. MX7 12
  21009. EQ PAS2 ENTER LOOP
  21010.  
  21011. PAS1 SB3 X2 LINK TO NEXT EDT
  21012. ZR B3,PCMD3 IF UNKNOWN DATA BASE NAME
  21013. SA2 B3
  21014. PAS2 BX3 X7*X2 DATA BASE NAME OF CURRENT EDT
  21015. BX3 X3-X5
  21016. NZ X3,PAS1 IF NO MATCH ON DATA BASE NAME
  21017. SA2 A2+B1
  21018. AX2 18
  21019. SX0 X2 ADDRESS OF FIRST DATA BASE JOURNAL FILE
  21020. AX2 36
  21021. ZR X2,PCMD3 IF NO JOURNAL FILES FOR THIS DATA BASE
  21022. SX3 X2+B1
  21023. IX3 X6-X3
  21024. PL X3,PCMD3 IF INCORRECT JOURNAL FILE NUMBER
  21025. SX3 JFETL
  21026. SX6 X6-1
  21027. IX3 X3*X6 JOURNAL FILE FET BIAS
  21028. IX0 X0+X3 FET ADDRESS
  21029. SA0 X0+
  21030. SA2 X0+7
  21031. PL X2,PCMD3 IF NOT A TAPE JOURNAL FILE
  21032. SX0 O USE OUTPUT FILE FOR SCRATCH
  21033. RETURN O,R RETURN WHATEVER IS THERE
  21034. SB4 PAS6
  21035. SB3 PAS9
  21036. JP PAS4 ASSIGN TAPE TO JOURNAL FILE
  21037.  
  21038. * TAPE ASSIGNED TO *POOL*
  21039.  
  21040. PAS3 SB3 PAS8
  21041. SA4 ASEQ ASSIGNED EQUIPMENT STATUS WORD
  21042. SX0 SCR
  21043. SB4 PAS6
  21044. ZR X4,PAS4 NO CURRENTLY ASSIGNED EQUIPMENT
  21045. SX6 X4
  21046. AX4 18
  21047. ZR X6,PAS4 ASSIGN TAPE TO SCR
  21048. SX0 SCR1
  21049. LX6 18
  21050. NZ X4,PCMD3 IF ALREADY 2 TAPES ASSIGNED TO *POOL*
  21051. SA6 A4
  21052.  
  21053. * CHECK STATUS OF TAPE
  21054.  
  21055. PAS4 RDSB MTSI,1,/COMSMTX/UBUF,2,3 READ UDT POINTER
  21056. SA5 2
  21057. SB2 X5 FWA OF UDT
  21058. LX5 -24
  21059. SB6 X5+ LWA + 1 OF UDT
  21060. SA4 PASA EST ORDINAL
  21061. PAS5 EQ B2,B6,PCMD3 IF EQUIPMENT NOT PRESENT
  21062. RDSB MTSI,/COMSMTX/UNITL,B2,OBUF,2 READ ONE UDT
  21063. SB2 B2+/COMSMTX/UNITL
  21064. SA1 2
  21065. PL X1,PCMD3 IF ERROR ON READ
  21066. SA1 OBUF+/COMSMTX/UST1
  21067. MX6 -12
  21068. LX1 0-24
  21069. BX6 -X6*X1 EST ORDINAL FROM UDT
  21070. BX6 X6-X4
  21071. NZ X6,PAS5 IF NO MATCH ON EST ORDINAL
  21072. SA2 OBUF+/COMSMTX/UVSN
  21073. MX6 36
  21074. BX6 X6*X2
  21075. LX2 59-23
  21076. ZR X6,PCMD3 IF NO TAPE MOUNTED
  21077. NG X2,PCMD3 IF LABEL CHECK IN PROGRESS
  21078. LX1 59-2-0+24-60
  21079. LX2 59-14-59+23
  21080. PL X2,PCMD3 IF NOT DEFAULT VSN
  21081. PL X1,PCMD3 IF NO WRITE ENABLE
  21082. JP B4 EXIT
  21083.  
  21084. * ASSIGN TAPE TO FILE
  21085.  
  21086. PAS6 SA1 PASE CREATE A FILE NAME FOR TAPE ASSIGNMENT
  21087. MX6 -5
  21088. BX2 X6*X1 1+*SCR*
  21089. SX1 X1+B1 ADVANCE POSTFIX CHARACTER
  21090. BX1 -X6*X1 USE ONLY 5 BITS (0-37)
  21091. BX7 X2+X1
  21092. LX1 35 APPEND CHARACTER TO FILE NAME
  21093. SA7 A1
  21094. BX6 X2+X1
  21095. LX6 1 SCR*X* + 1
  21096. SA6 X0
  21097. SA1 OBUF+/COMSMTX/UVRI
  21098. SA3 PASB
  21099. NZ X1,PCMD3 IF TAPE ASSIGNED TO ANOTHER JOB
  21100. MX6 -3
  21101. BX2 -X6*X4 CONVERT EST ORDINAL TO DISPLAY CODE
  21102. SA1 OBUF+/COMSMTX/UVSN CHECK VSN OF TAPE
  21103. AX4 3
  21104. BX7 -X6*X4
  21105. LX7 6
  21106. BX6 X6*X4
  21107. LX6 9
  21108. IX7 X6+X7
  21109. BX6 X7+X2
  21110. MX2 36
  21111. IX6 X6+X3 CREATE VSN OF ***NNN
  21112. BX1 X2*X1
  21113. LX6 24
  21114. BX1 X1-X6
  21115. NZ X1,PCMD3 IF INCORRECT VSN
  21116. SA5 OBUF+/COMSMTX/UST4
  21117. SA6 X0+9
  21118. MX7 -2
  21119. LX7 55-0
  21120. BX7 -X7*X5 SET TAPE DEVICE TYPE
  21121. SA7 A6-B1
  21122. MESSAGE VERM,1 CLEAR LABEL MESSAGE
  21123. SB4 PAS7
  21124. JP PAS4 RECHECK STATUS OF TAPE
  21125.  
  21126. PAS7 JP B3
  21127.  
  21128. * SET ASSIGNED EQUIPMENT WORD TO REFLECT TAPE ASSIGNMENT
  21129.  
  21130. PAS8 SA2 OBUF+/COMSMTX/UVRI
  21131. ZR X2,PCMD3 IF TAPE NOT ASSIGNED
  21132. SA1 ASEQ ASSIGNED EQUIPMENT WORD
  21133. BX7 X1+X0
  21134. SA7 A1
  21135. JP PCMDX *RETURN
  21136.  
  21137. * COPY DISK JOURNAL FILE TO THE ASSIGNED TAPE
  21138.  
  21139. PAS9 SA4 A0+7
  21140. SX0 A0 JOURNAL FILE FET ADDRESS
  21141. SX4 X4
  21142. NZ X4,PAS10 IF FILE NON BUFFERED
  21143. WRITER A0+,R FLUSH JOURNAL FILE
  21144. JP PAS12 WRITE LABEL RECORD
  21145.  
  21146. PAS10 SB2 A0
  21147. RECALL X0 WAIT JOURNAL FILE IDLE
  21148. SX0 2100B
  21149. RJ RCP REQUEST SUBCONTROL POINT
  21150. NZ X5,PAS11 IF CORE WAS AVAILABLE
  21151. RETURN O,R RETURN ASSIGNED EQUIPMENT
  21152. EQ PCMD4 *SYSTEM BUSY* MESSAGE
  21153.  
  21154. PAS11 SX0 B2+
  21155. SA2 B2+B1 FIRST
  21156. MX3 -18
  21157. SX7 X5+ START OF ALLOCATED CORE
  21158. BX6 X3*X2
  21159. SA7 A2+B1 IN
  21160. BX6 X6+X5
  21161. SA7 A7+B1 OUT
  21162. SA6 A2+
  21163. SX5 B4 SUB CONTROL POINT ASSIGNED WITH CORE
  21164. SX7 X7+2101B
  21165. SA7 A7+B1 LIMIT
  21166.  
  21167. * WRITE LABEL RECORD TO TAPE
  21168.  
  21169. PAS12 SA1 X0+5
  21170. SA2 PDATE SET CURRENT PDATE INTO LABEL
  21171. SX3 B1
  21172. BX6 X2
  21173. LX3 18 UPDATE REEL COUNT
  21174. IX7 X3+X1
  21175. SA6 PASC+1
  21176. SA4 X0 SET JOURNAL FILE NAME INTO LABEL
  21177. SA7 A1
  21178. MX6 42
  21179. BX6 X6*X4
  21180. AX7 18
  21181. SX7 X7 REEL COUNT
  21182. BX7 X6+X7
  21183. SA7 A6+B1
  21184. WRITEW O,PASC,3 3 WORD LABEL RECORD
  21185. WRITER X2,R
  21186.  
  21187. * SWITCH FETS AND SET UP FOR DISK TO TAPE COPY
  21188.  
  21189. SA1 X0 SWITCH FETS TO GIVE TAPE FILE THE LARGER
  21190. SA2 O
  21191. BX6 X1
  21192. LX7 X2
  21193. SA6 A2
  21194. SA7 A1
  21195. SA0 -PAS17 ERROR RETURN ADDRESS
  21196. REWIND O,R
  21197. PAS13 READ O INITIATE READ ON DISK FILE
  21198.  
  21199. * COPY DISK FILE TO TAPE FILE
  21200.  
  21201. PAS14 READW O,SBUF,SBUFL
  21202. NZ X1,PAS15 IF EOR/EOF/EOI
  21203. WRITEW X0,SBUF,SBUFL
  21204. EQ PAS14 LOOP
  21205.  
  21206. PAS15 SX4 X1+1
  21207. ZR X4,PAS16 IF EOF
  21208. NG X4,PAS18 IF EOI
  21209. SX4 X1-SBUF NUMBER OF WORDS READ
  21210. WRITEW X0,SBUF,X4
  21211. WRITER X2,R FLUSH BUFFER TO TAPE
  21212. JP PAS13 COPY ALL RECORDS OVER TO TAPE
  21213.  
  21214. PAS16 WRITEF X0,R
  21215. JP PAS13 COPY ALL FILES OVER TO TAPE
  21216.  
  21217. * ERROR ENCOUNTERED ON COPY
  21218.  
  21219. PAS17 RETURN X0,R RETURN TAPE
  21220. SA1 X0+B1
  21221. SX7 X1 SET FIRST = IN = OUT
  21222. SA7 A1+B1
  21223. SA7 A7+B1
  21224. RECALL O
  21225. SA1 O RESTORE JOURNAL FILE NAME
  21226. SA4 X0
  21227. BX6 X1
  21228. SA6 X0
  21229. SKIPEI X0,R POSITION JOURNAL FILE TO EOI
  21230. MESSAGE PASD * UNABLE TO USE TAPE.*
  21231. JP PAS19 RELEASE CORE IF NECESSARY
  21232.  
  21233. * COPY COMPLETE
  21234.  
  21235. PAS18 WRITER X0,R FLUSH BUFFER TO TAPE
  21236. REWIND O REWIND DISK FILE
  21237. WRITER O PURGE DATA FROM FILE
  21238. SX2 100B+1RT
  21239. SA3 O
  21240. MX6 36
  21241. BX6 X6*X3 ADD *T* TO FRONT OF JOURNAL FILE NAME
  21242. LX6 -6
  21243. LX2 -6
  21244. BX1 X6+X2 *TXXJORN*
  21245. RENAME O,X1 RENAME PERMANENT FILE
  21246. BX1 X3
  21247. SA4 X0
  21248. RENAME X0,X1 SET PROPER NAME FOR TAPE FILE
  21249. PAS19 SA1 X0+7
  21250. BX6 X4
  21251. SX2 X1
  21252. SA6 O RESTORE OUTPUT FILE NAME
  21253. ZR X2,PCMDX IF NO BUFFER TO RETURN
  21254. SB6 X5 SUB CONTROL POINT ASSIGNED WITH CORE
  21255. SB7 B0
  21256. SA1 AVAILCM
  21257. SX7 X1+2100B CORE USED TO COPY TAPE
  21258. SA7 A1+
  21259. SB3 PCMDX RETURN ADDRESS
  21260. JP ESCP1 RELEASE CORE
  21261.  
  21262. PASA CON 0 EST ORDINAL
  21263. PASB VFD 24/0,36/6L***000
  21264.  
  21265. PASC DATA C/*TRANEX*/ 3 WORD JOURNAL FILE LABEL RECORD
  21266. BSS 1 PDATE
  21267. BSS 1 FILE NAME AND REEL NUMBER
  21268.  
  21269. PASD DATA C* UNABLE TO USE TAPE.*
  21270.  
  21271. PASE VFD 1/1,18/3LSCR,41/0 1 + *SCR*
  21272.  
  21273. ENDOVL
  21274. TRANOVL (K-DISPLAY COMMANDS *1*.)
  21275. DEBUG SPACE 4,10
  21276. *** K.DEBUG.
  21277. *
  21278. * TURN ON *AIP* DEBUG OPTION.
  21279.  
  21280.  
  21281. DEBUG BSS 0
  21282. ENTRY DEBUG,K
  21283.  
  21284. .B IFEQ DBUG,0
  21285. SX6 B0+
  21286. RJ NDS TURN ON *AIP* DEBUG OPTION
  21287. EQ PCMDX RETURN
  21288. .B ELSE
  21289. EQ PCMD6 *NOT AVAILABLE.*
  21290. .B ENDIF
  21291. DROP SPACE 4,10
  21292. *** K.DROP,N.
  21293. *
  21294. * SET THE ABORT FLAG FOR SUB CONTROL POINT *N*. CAUTION IS
  21295. * ADVISED WHEN USING THIS COMMAND, BECAUSE OF THE DELAY BETWEEN
  21296. * THE TIME THE COMMAND IS ENTERED AND THE TIME IT IS PROCESSED.
  21297.  
  21298.  
  21299. DROP BSS 0
  21300. ENTRY DROP,K
  21301.  
  21302. SB2 B2-B1
  21303. NE B2,B1,PCMD3 IF TOO MANY PARAMETERS
  21304. SB7 B0 ASSUME OCTAL BASE
  21305. SA5 SBUF+1 SUB CONTROL POINT NUMBER
  21306. RJ DXB CONVERT TO BINARY FORM
  21307. NZ X4,PCMD3 IF ERROR IN CONVERSION
  21308. TX1 1,VNSCP NUMBER OF SUB CONTROL POINTS
  21309. ZR X6,PCMD3 IF SUB CONTROL POINT ZERO
  21310. IX1 X6-X1
  21311. LX6 SCPAL
  21312. PL X1,PCMD3 IF INCORRECT SUB CONTROL POINT NUMBER
  21313. TA3 X6-CPAL,VCPA 1ST WORD OF SUB CONTROL POINT TABLE
  21314. TX6 X3-1,-VCBRT SET RELATIVE ADDRESS DIFFERENCE
  21315. NG X6,PCMD3 IF SUB CONTROL POINT NOT ACTIVE
  21316. SA1 A3+B1
  21317. SX7 B1
  21318. LX7 55
  21319. BX7 X7+X1 SET ABORT FLAG
  21320. LX1 59-SCRCS
  21321. NG X1,DRO2 IF SUBCP IN RECALL
  21322. SA2 X3+B1 CHECK SYSTEM REQUEST OF TASK
  21323. LX2 18
  21324. SX2 X2-3RSIC
  21325. ZR X2,PCMD2 IF *SEND* REQUEST OUTSTANDING
  21326. SA2 A3+CPAHL COM. BLK. IN EXECUTION
  21327. LX2 59-54
  21328. NG X2,PCMD2 IF INITIAL LOAD BIT SET
  21329. BX6 X6-X6
  21330. SA7 A1+
  21331. SA6 X3-NUAPL+DMEC CLEAR DATA MANAGER ERROR CODE
  21332. DRO2 MX7 SCDRN SET TASK DROPPED FLAG
  21333. LX1 59-59-59+SCRCS
  21334. LX7 59-59-59+SCDRS
  21335. BX7 X1+X7
  21336. SA7 A1
  21337. EQ PCMDX EXIT
  21338. PDSD SPACE 4,10
  21339. *** K.DSDUMP,FW=ADDRESS,LW=ADDRESS,EP=N,DB=N,OQ=AA,QD=VALUE.
  21340. *
  21341. * CHANGE THE SYSTEM DEFAULT DUMP PARAMETERS FOR TASKS
  21342. * RUNNING UNDER CONTROL OF TRANEX. THE PARAMETERS MAY BE GIVEN
  21343. * IN ANY ORDER AND ONLY THOSE PARAMETERS TO BE CHANGED NEED BE
  21344. * GIVEN.
  21345. * *FW* IS THE DEFAULT FIRST WORD ADDRESS FOR TASK DUMPS,
  21346. * AND *LW* IS THE LAST WORD ADDRESS. *FW* IS ROUNDED DOWN TO
  21347. * THE NEAREST MULTIPLE OF 4 AND MUST BE LESS THAN *LW*.
  21348. * *EP* IS THE EXCHANGE PACKAGE DUMP FLAG. IF IT IS NONZERO
  21349. * THE EXCHANGE PCKAGE WILL BE DUMPED ON DEFAULT DUMPS.
  21350. * *DB* IS THE DATA MANAGER BUFFER DUMP FLAG. IF IT IS
  21351. * NONZERO ALL DATA MANAGER BUFFERS ASSOCIATED WITH THE TASK
  21352. * WILL BE DUMPED.
  21353. * *OQ* SIGNIFIES THE OUTPUT QUEUE FOR A DEFAULT DUMP, AND
  21354. * *QD* DEFINES A DESTINATION FOR THE DUMP. THE FOLLOWING TABLE
  21355. * SHOWS THEIR RELATIONSHIP.
  21356. *
  21357. * ORIGIN TYPE QUEUE DESTINATION FIELD
  21358. * BC = LOCAL BATCH PRINTER ID
  21359. * EI = E/I 200 USER NAME
  21360. * PF = USER PERMANENT FILE PERMANENT FILE NAME
  21361. * RB = REMOTE BATCH USER NAME
  21362.  
  21363.  
  21364. DSDUMP BSS 0
  21365. ENTRY DSDUMP,K
  21366.  
  21367. SB4 B2-B1 ARGUMENT COUNT
  21368. SA4 SBUF+1 FIRST ARGUMENT FOR COMCARG
  21369. SB7 B0
  21370. SB5 PDSA ARGUMENT TABLE
  21371. RJ ARG PROCESS COMMAND ARGUMENTS
  21372. NZ X1,PDS9 IF ERROR IN ARGUMENTS
  21373. SX6 B0+ CLEAR LWA/FWA PROCESSED FLAG
  21374. SA6 PDSC
  21375.  
  21376. * PROCESS FIRST WORD ADDRESS
  21377.  
  21378. SA5 PFW
  21379. ZR X5,PDS1 NO FIRST WORD ADDRESS SPECIFIED
  21380. RJ DXB CONVERT TO BINARY VALUE
  21381. NZ X4,PDS9 IF ERROR IN VALUE
  21382. SA1 DTSE
  21383. MX2 -18
  21384. BX6 -X2*X6
  21385. BX2 X2*X1 CLEAR OLD SYSTEM DEFAULT FWA
  21386. AX6 2
  21387. LX6 2 ROUND DOWN TO NEAREST EVEN MULTIPLE OF 4
  21388. SX1 X6
  21389. NG X1,PDS9 IF FWA TOO LARGE
  21390. BX7 X2+X6
  21391. SA7 PDSD
  21392. SX6 B1 SET FWA FLAG
  21393. SA6 PDSC
  21394. RJ COD CONVERT TO OCTAL FOR K-DISPLAY
  21395. BX6 X4
  21396. SA6 PFW
  21397.  
  21398. * PROCESS LAST WORD ADDRESS
  21399.  
  21400. PDS1 SA5 PLW
  21401. ZR X5,PDS1.2 IF NO LWA SPECIFIED
  21402. RJ DXB CONVERT TO BINARY VALUE
  21403. NZ X4,PDS9 IF ERROR IN VALUE
  21404. SA1 DTSE
  21405. SA2 PDSC
  21406. ZR X2,PDS1.1 IF FWA NOT PROCESSED
  21407. SA1 PDSD
  21408. PDS1.1 MX2 -18
  21409. LX2 30
  21410. BX2 X2*X1 CLEAR OLD SYSTEM DEFAULT LWA
  21411. SX6 X6 TRUNCATE IF NECESSARY
  21412. NG X6,PDS9 IF VALUE TOO LARGE
  21413. BX1 X6
  21414. LX6 30
  21415. BX7 X2+X6
  21416. SA7 PDSD
  21417. SX6 B1+B1 SET LWA FLAG
  21418. SA2 PDSC
  21419. BX6 X6+X2
  21420. SA6 A2
  21421. RJ COD CONVERT TO OCTAL FOR K-DISPLAY
  21422. BX6 X4
  21423. SA6 PLW
  21424. PDS1.2 SA4 PDSC
  21425. ZR X4,PDS2 IF NEITHER FWA/LWA CHANGED
  21426. SA1 PDSD POTENTIAL NEW *DTSE*
  21427. SX2 X1 FWA
  21428. LX1 -30
  21429. SX6 DSMNFL
  21430. SX3 X1+ LWA
  21431. IX7 X3-X2
  21432. NG X7,PDS9 IF FWA .GT. LWA
  21433. LX1 30
  21434. ZR X7,PDS1.3 IF NO DUMP SELECTED
  21435. IX7 X7-X6
  21436. NG X7,PDS9 IF LWA-FWA .LT. DSMNFL
  21437. PDS1.3 SA2 PFW UPDATE K-DISPLAY VALUES
  21438. SA3 PLW
  21439. BX6 X1
  21440. SA6 DTSE
  21441. BX6 X2
  21442. LX7 X3
  21443. LX4 59-0
  21444. PL X4,PDS1.4 IF FWA NOT CHANGED
  21445. SA6 KDFWA+1
  21446. PDS1.4 LX4 59-1-59+0
  21447. PL X4,PDS2 IF LWA NOT CHANGED
  21448. SA7 KDLWA+1
  21449.  
  21450. * PROCESS EXCHANGE PACKAGE
  21451.  
  21452. PDS2 SX3 1R0 DISPLAY CODE 1
  21453. SA1 PEP
  21454. SX2 B1
  21455. NZ X1,PDS3 TURN ON EXCHANGE PACKAGE DUMP
  21456. BX2 X2-X2
  21457. PDS3 SX7 3
  21458. SA1 DTSE
  21459. LX7 57
  21460. IX6 X3+X2 *0* OR *1* DEPENDING WHETHER PEP IS NONZERO
  21461. LX2 58
  21462. BX1 -X7*X1 CLEAR EXCHANGE PACKAGE / DATA BASE FLAGS
  21463. LX6 54
  21464. BX7 X2+X1 EXCHANGE PACKAGE DUMP FLAG
  21465. SA6 KDEXP+1
  21466. SA7 A1+
  21467.  
  21468. * PROCESS DATA BASE
  21469.  
  21470. SA1 PDB
  21471. SX2 B1
  21472. NZ X1,PDS4 TURN ON EXCHANGE PACKAGE DUMP
  21473. BX2 X2-X2
  21474. PDS4 SA1 DTSE
  21475. LX2 57
  21476. BX7 X2+X1 DATA MANAGER BUFFERS DUMP FLAG
  21477. SA7 A1
  21478.  
  21479. * PROCESS OUTPUT QUEUE
  21480.  
  21481. BX5 X5-X5
  21482. SA1 POT
  21483. MX2 12
  21484. ZR X1,PDS6 OUTPUT QUEUE NOT SPECIFIED
  21485. BX1 X2*X1 OUTPUT QUEUE
  21486. SA4 DTSE+1
  21487. LX1 12
  21488. MX6 -12
  21489. SX2 X1-2RBC
  21490. SX3 BCOT
  21491. ZR X2,PDS5 *BC* FOR LOCAL BATCH
  21492. SX2 X1-2RPF
  21493. SX5 B1+B1
  21494. ZR X2,PDS5 *PF* FOR PERMANENT FILE
  21495. SX5 B1
  21496. SX3 RBOT
  21497. SX2 X1-2RRB
  21498. ZR X2,PDS5 *RB* FOR REMOTE BATCH
  21499. SX3 EIOT
  21500. SX2 X1-2REI
  21501. ZR X2,PDS5 *EI* FOR E/I 200
  21502. EQ PDS9 INCORRECT ORIGIN TYPE
  21503.  
  21504. PDS5 MX2 3
  21505. BX6 X6*X4
  21506. LX2 12+3
  21507. BX6 -X2*X6 CLEAR ORIGIN CODE
  21508. LX3 12
  21509. LX7 X1
  21510. BX6 X6+X5 SET NEW ORIGIN TYPE
  21511. LX7 48
  21512. BX6 X6+X3
  21513. SA6 A4
  21514. SA7 KDORT+1
  21515.  
  21516. * PROCESS QUEUE DESTINATION
  21517.  
  21518. PDS6 SB3 PCMDX RETURN ADDRESS
  21519. SA5 PQD
  21520. ZR X5,PDS8 IF QUEUE DESTINATION NOT SPECIFIED
  21521. SA1 DTSE+1
  21522. MX2 -12
  21523. BX2 -X2*X1 ORIGIN TYPE
  21524. ZR X2,PDS7 IF BATCH DESTINATION TYPE
  21525. MX7 42
  21526. BX7 -X7*X1 CLEAR OLD USER NAME / PERMANENT FILE NAME
  21527. LX6 X5
  21528. BX7 X7+X5 SET NEW USER NAME / PERMANENT FILE NAME
  21529. SA6 KDQDS+1
  21530. SA7 A1+
  21531. EQ PDS8 COMPLETE PROCESSING
  21532.  
  21533. PDS7 RJ DXB CONVERT TO BINARY VALUE
  21534. NZ X4,PDS9 IF ERROR IN PRINTER ID
  21535. SA1 DTSE+1
  21536. MX7 42
  21537. SA5 PQD
  21538. BX1 -X7*X1 CLEAR OLD PRINTER ID
  21539. LX6 18
  21540. BX7 X5
  21541. BX6 X1+X6 SET NEW PRINTER ID
  21542. SA6 A1
  21543. SB3 PCMDX RETURN ADDRESS
  21544. SA7 KDQDS+1
  21545.  
  21546. * CLEAR ARGUMENTS FOR NEXT COMMAND
  21547.  
  21548. PDS8 BX6 X6-X6
  21549. SA6 PFW START OF LIST
  21550. SA6 A6+B1
  21551. SA6 A6+B1
  21552. SA6 A6+B1
  21553. JP B3 *RETURN
  21554.  
  21555. PDS9 SB3 PCMD3 *FORMAT ERROR* EXIT ADDRESS
  21556. EQ PDS8 CLEAR PARAMETER LIST
  21557.  
  21558. PDSA BSS 0
  21559. FW ARG PDSB,PFW,400B
  21560. LW ARG PDSB,PLW,400B
  21561. EP ARG PDSB,PEP
  21562. OQ ARG PDSB,POT
  21563. QD ARG PDSB,PQD,400B
  21564. DB ARG PDSB,PDB
  21565. PDSB CON 0
  21566.  
  21567. PFW BSSZ 1 FIRST WORD ADDRESS
  21568. PLW BSSZ 1 LAST WORD ADDRESS
  21569. POT BSSZ 1 ORIGIN TYPE
  21570. PQD BSSZ 1 QUEUE DESTINATION
  21571. PEP CON DEXP EXCHANGE PACKAGE
  21572. PDB CON DDMB DATA MANAGER BUFFERS
  21573. PDSC BSS 1 LWA/FWA FLAG
  21574. PDSD BSS 1 POTENTIAL NEW *DTSE*
  21575. PDMP SPACE 4,10
  21576. *** K.IDLE.
  21577. *
  21578. * FORCES TRANEX TO IDLE DOWN THE TRANSACTION SUBSYSTEM.
  21579. * ALL TRANSACTIONS CURRENTLY RUNNING ARE COMPLETED
  21580. * UNTIL NO MORE ACTIVITY EXISTS, NO NEW TRANSACTIONS ARE
  21581. * ACCEPTED. THIS IS ACCOMPLISHED BY INFORMING INITIAL TASK OF
  21582. * IDLE DOWN. INITIAL TASK WILL THEN TURN AROUND ALL INCOMING
  21583. * TRANSACTIONS INSTEAD OF PASSING THEM ON FOR PROCESSING.
  21584.  
  21585.  
  21586. IDLE BSS 0
  21587. ENTRY IDLE,K
  21588. SX7 B0+ SET INITIAL TRY
  21589. SA7 IDLA
  21590.  
  21591. NE B2,B1,PCMD3 IF INCORRECT PARAMETER COUNT
  21592. RJ IDL SET IDLE FLAGS
  21593. ZR X0,IDL2 IF NO COMMUNICATION BLOCK AVAILABLE
  21594. SA3 SREG
  21595. TX1 0,VFSCP
  21596. SB3 X3
  21597. LX1 18
  21598. TX2 0,VCPA SET NEW B2/B7 TO REPLECT INITIAL TASK
  21599. SB7 X2
  21600. BX7 X1+X2
  21601. EQ B3,B7,PCMDX CPU ASSIGNMENT NOT CHANGED BY IDL
  21602. SA7 SREG SET NEW CPU ASSIGNMENT
  21603. EQ PCMDX *RETURN
  21604.  
  21605. IDL1 SX6 B1 SET RETRY FLAG
  21606. SB2 B1
  21607. SA6 IDLA
  21608. EQ IDLE GO THRU IDLE DOWN AGAIN
  21609.  
  21610. IDL2 SA1 IDLA
  21611. ZR X1,PCMDX IF NOT A RETRY
  21612. RJ RSP RESTORE SUBCONTROL POINT REGISTERS
  21613. BX6 X6-X6 CLEAR TASK K-DISPLAY INTERLOCK
  21614. EQ KDISX
  21615.  
  21616. IDLA BSS 1 RETRY FLAG
  21617. PJND SPACE 4
  21618. *** K.JEND,XX,N.
  21619. *
  21620. * FORCE END OF REEL PROCESSING ON JOURNAL FILE -N- OF
  21621. * DATA BASE -XX-. JOURNALLING WILL CONTINUE FOR THIS FILE
  21622. * ON DISK UNTIL A NEW TAPE IS ASSIGNED.
  21623. * IF -N- IS NOT A TAPE FILE, THE COMMAND WILL BE IGNORED.
  21624.  
  21625.  
  21626. JEND BSS 0
  21627. ENTRY JEND,K
  21628.  
  21629. SB3 3
  21630. NE B2,B3,PCMD3 IF INCORRECT PARAMETER COUNT
  21631. SA5 SBUF+2
  21632. RJ DXB CONVERT TO BINARY
  21633. NZ X4,PCMD3 IF ERROR IN CONVERSION
  21634. TA2 0,VEDT EDT HEADER
  21635. ZR X6,PCMD3 IF INCORRECT JOURNAL FILE NUMBER
  21636. SA5 A5-B1 DATA BASE NAME
  21637. SB3 X2
  21638. MX7 12
  21639. EQ PJN2 ENTER LOOP
  21640. PJN1 SB3 X2 LINK TO NEXT EDT
  21641. ZR B3,PCMD3 IF UNKNOWN DATA BASE NAME
  21642. SA2 B3
  21643. PJN2 BX3 X7*X2 DATA BASE NAME OF CURRENT EDT
  21644. BX3 X3-X5
  21645. NZ X3,PJN1 IF NO MATCH ON DATA BASE NAME
  21646. SA2 A2+B1
  21647. AX2 18
  21648. SX0 X2 ADDRESS OF FIRST DATA BASE JOURNAL FILE
  21649. AX2 36
  21650. ZR X2,PCMD3 IF NO JOURNAL FILES FOR THIS DATA BASE
  21651. SX3 X2+B1
  21652. IX3 X6-X3
  21653. PL X3,PCMD3 IF INCORRECT JOURNAL FILE NUMBER
  21654. SX3 JFETL
  21655. SX6 X6-1
  21656. IX3 X3*X6 JOURNAL FILE FET BIAS
  21657. IX0 X0+X3 JOURNAL FILE FET ADDRESS
  21658. RECALL X0 RECALL ON JOURNAL FILE
  21659. SA1 X2+B1
  21660. SX6 OBUF SET FET POINTERS
  21661. MX4 42
  21662. SA6 A1+B1 IN
  21663. BX7 X4*X1
  21664. BX7 X7+X6
  21665. SA6 A6+B1 OUT
  21666. SA7 A1 FIRST
  21667. SX6 OBUF+OBUFL
  21668. SA1 X2
  21669. SA6 X2+4 LIMIT
  21670. SX3 B1
  21671. LX3 10
  21672. BX6 X3+X1 SET END OF REEL FLAG
  21673. SA6 A1
  21674. SA0 PCMDX RETURN ADDRESS
  21675. WRITER X2,R FORCE END OF REEL PROCESSING
  21676. JP PCMDX *RETURN
  21677. MAXFL SPACE 4,10
  21678. *** K.MAXFL,NNNNNN.
  21679. *
  21680. * CHANGE THE MAXIMUM AMOUNT OF FIELD LENGTH THAT *TAF* USES.
  21681. * IF THE AMOUNT IS LESS THAN THE CURRENT FIELD LENGTH, *TAF*
  21682. * WILL NOT MAKE AN EFFORT TO REDUCE. NORMAL FIELD LENGTH
  21683. * REDUCTIONS WILL CONTINUE, WITH THE FIELD LENGTH EVENTUALLY
  21684. * FALLING BELOW THE NEW MAXIMUM.
  21685.  
  21686.  
  21687. MAXFL BSS 0
  21688. ENTRY MAXFL,K
  21689.  
  21690. SB2 B2-B1
  21691. NE B2,B1,PCMD3 IF INCORRECT PARAMETER COUNT
  21692. SB7 B0
  21693. SA5 SBUF+1 MAXIMUM FIELD LENGTH VALUE
  21694. RJ DXB CONVERT TO BINARY VALUE
  21695. NZ X4,PCMD3 IF ERROR IN CONVERSION
  21696. SX5 MAXMFL MAXIMUM RFL OF TAF
  21697. IX5 X5-X6
  21698. NG X5,PCMD1 IF OUT OF RANGE
  21699. BX1 X6
  21700. SA6 DPBJ SAVE REQUESTED MFL
  21701. RJ COD CONSTANT TO OCTAL DISPLAY
  21702. SB2 1R+ REPLACEMENT CHARACTER
  21703. SB3 DAYB ALTERNATE ASSEMBLY AREA
  21704. SB5 -MAXA FWA OF MESSAGE
  21705. BX1 X6
  21706. LX1 24
  21707. RJ SNM SET NAME IN MESSAGE
  21708. MESSAGE DAYB * K.MAXFL,NNNNNNB.*
  21709. SA1 MFL CURRENT MFL
  21710. SA2 DPBJ REQUESTED MFL
  21711. IX2 X2-X1
  21712. PL X2,MAX1 IF MFL NOT DECREASING
  21713.  
  21714. * CHECK FOR POTENTIALLY BLOCKED TASKS.
  21715.  
  21716. RJ DBC DETECT BLOCKS IN CM RESIDENT TASKS
  21717. RJ DBN DETECT BLOCKS IN NON CM RESIDENT TASKS
  21718. ZR B7,MAX1 IF NO BLOCKED TASKS DETECTED
  21719. MESSAGE MAXB * K.MAXFL REJECTED.*
  21720. EQ PCMDX RETURN
  21721.  
  21722. * SET REQUESTED MFL.
  21723.  
  21724. MAX1 SA1 DPBJ GET REQUESTED MFL
  21725. BX6 X1
  21726. SA6 MFL
  21727. EQ PCMDX RETURN
  21728.  
  21729. MAXA DATA C* K.MAXFL,++++++B.*
  21730. MAXB DATA C* K.MAXFL REJECTED.*
  21731.  
  21732. NODEBUG SPACE 4,10
  21733. *** K.NODEBUG.
  21734. *
  21735. * TURN OFF *AIP* DEBUG OPTION.
  21736.  
  21737.  
  21738. NODEBUG BSS 0
  21739. ENTRY NODEBUG,K
  21740.  
  21741.  
  21742. .B IFEQ DBUG,0
  21743. SX6 B1+
  21744. RJ NDS TURN OFF *AIP* DEBUG OPTION
  21745. EQ PCMDX RETURN
  21746. .B ELSE
  21747. EQ PCMD6 *NOT AVAILABLE.*
  21748. .B ENDIF
  21749. OFFTASK SPACE 4,10
  21750. *** K.OFFTASK,AAAAAAA,DB.
  21751. *
  21752. * DISABLE THE TASK NAMED -AAAAAAA- OF DATA BASE -DB-.
  21753.  
  21754.  
  21755. OFFTASK BSS 0
  21756. ENTRY OFFTASK,K
  21757.  
  21758. SA2 SBUF+1 TASK NAME
  21759. SA3 LTTA *OFFTASK* TASK NAME
  21760. SB2 B2-B1
  21761. SB3 B1+B1
  21762. BX6 X6-X6
  21763. IX3 X3-X2
  21764. GT B2,B3,PCMD3 IF INCORRECT PARAMETER COUNT
  21765. ZR X3,PCMD3 IF TURN OFF THE *OFFTASK* TASK
  21766. EQ B2,B3,OFT1 IF D.B. SPECIFIED
  21767. BX6 X6-X6
  21768. SA6 A2+B1 CLEAR D.B. AREA
  21769. OFT1 SA0 0
  21770. SA3 A2+B1 DATA BASE NAME (IF=0 IMPLIES *TASKLIB*)
  21771. LX3 12
  21772. SB4 B0 DETECT *OFF* STATUS
  21773. SB5 B0 TASK SEARCH
  21774. RJ LTT LOCATE TASK
  21775. ZR X6,PCMD3 IF INCORRECT TASK NAME
  21776. SX4 A0
  21777. MX6 1
  21778. NZ X4,PCMD3 IF TASK ALREADY TURNED OFF
  21779. SA3 A1+TLTOW
  21780. LX6 -4
  21781. BX6 X6+X3 SET OFF BIT
  21782. SA6 A3+
  21783. EQ PCMDX *RETURN
  21784. ONTASK SPACE 4,10
  21785. *** K.ONTASK,AAAAAAA,DB.
  21786. *
  21787. * ENABLE THE TASK NAMED -AAAAAAA- OF DATA BASE -DB-. (DISABLED
  21788. * BY A PRIOR OFFTASK COMMAND.)
  21789.  
  21790.  
  21791. ONTASK BSS 0
  21792. ENTRY ONTASK,K
  21793.  
  21794. SA2 SBUF+1 TASK NAME
  21795. SB2 B2-B1
  21796. BX6 X6-X6
  21797. SB3 B1+B1
  21798. EQ B2,B3,ONT1 IF D.B. SPECIFIED
  21799. SA6 A2+B1
  21800. ONT1 SA0 0
  21801. SA3 A2+B1 DATA BASE NAME (IF=0 IMPLIES *TASKLIB*)
  21802. LX3 12
  21803. SB4 B0 DETECT *OFF* STATUS
  21804. SB5 B0 TASK SEARCH
  21805. RJ LTT LOCATE TASK
  21806. SX4 A0
  21807. SA3 A0 TLD WORD 2 OF TASK
  21808. ZR X4,PCMD3 IF TASK WAS NOT TURNED OFF
  21809. MX1 1
  21810. LX1 -4
  21811. BX7 -X1*X3 CLEAR OFF BIT
  21812. SA7 A3
  21813. EQ PCMDX *RETURN
  21814. SWITCH SPACE 4,10
  21815. *** K.SWITCH.
  21816. *
  21817. * TOGGLE TRANEX K-DISPLAY WITH TASK *KDIS* K-DISPLAY. *KDIS*
  21818. * CONTAINS A LIST OF ALL TRANEX K-DISPLAY COMMANDS.
  21819. *E
  21820.  
  21821.  
  21822.  
  21823. SWITCH BSS 0
  21824. ENTRY SWITCH,K
  21825.  
  21826. SA2 KDISB
  21827. SA1 KCTRL1 K-DISPLAY CONTROL WORD
  21828. NG X2,PCMD4 IF K-DISPLAY TASK SCHEDULED, BUT NOT ACTIVE
  21829. SA4 KTAS COMMAND DISPLAY TASK
  21830. SX2 X1-KFRM
  21831. NZ X2,SWI1 CURRENTLY DISPLAYING FROM A TASK
  21832. BX5 X5-X5 CLEAR CODE FOR TRN
  21833. SB3 B0 NO BUFFER INPUT FOR TASK SCHEDULING
  21834. SX7 B0+ SCHEDULE ONLY FROM SYSTEM LIBRARY
  21835. RJ TRN GENERATE A SYSTEM ORIGIN TRANSACTION
  21836. SX7 5 *TASK SCHEDULED* + *KDIS HAS SCREEN* BITS
  21837. ZR X0,PCMD4 IF TASK NOT SCHEDULED
  21838. SA4 KTAS
  21839. LX7 59-2
  21840. LX6 X4
  21841. BX7 X7+X0 MOVE C.B. ADDRESS INTO *KDISB*
  21842. SA6 KDISE
  21843. SA7 KDISB
  21844. EQ PCMDX *RETURN
  21845.  
  21846. * SET K-DISPLAY BACK TO TRANEX.
  21847.  
  21848. SWI1 MX6 42
  21849. SX2 KFRM
  21850. BX6 X6*X1 MASK OFF TASKS DISPLAY LOCATION
  21851. SA3 KDISG
  21852. BX6 X6+X2 DISPLAY FROM TRANEX PROGRAM BUFFER
  21853. SA6 A1
  21854. SA2 X3
  21855. SB6 X3 SUB CONTROL POINT WITH DISPLAY
  21856. SX4 X2-NUAPL START OF SUB CONTROL POINT
  21857. LX4 18
  21858. BX7 X4+X3
  21859. SA7 SREG
  21860. SX6 B0 CLEAR TASK K-DISPLAY INTERLOCK
  21861. LX4 -18
  21862. SA6 KDISB
  21863. CONSOLE KCTRL1 DEFINE TRANEX K-DISPLAY
  21864. MESSAGE ZWORD,2 ZERO OUT REQUEST K-DISPLAY MESSAGE
  21865. SB3 PCMDX
  21866. EQ RCPU REQUEST CPU FOR TASK WITH K-DISPALAY
  21867. ROLLTIM SPACE 4,10
  21868. *** K.ROLLTIM,NNNNNN.
  21869. *
  21870. * CHANGE THE AMOUNT OF TIME FOR TRANEX TO RETAIN ITS FIELD
  21871. * LENGTH BETWEEN COMMUNICATION INPUT BLOCKS.
  21872.  
  21873.  
  21874. ROLLTIM BSS 0
  21875. ENTRY ROLLTIM,K
  21876.  
  21877. SB2 B2-B1
  21878. NE B2,B1,PCMD3 IF INCORRECT PARAMETER COUNT
  21879. SB7 B1 SELECT DECIMAL CONVERSION
  21880. SA5 SBUF+1 TIME INTERVAL TO WAIT BETWEEN INPUTS
  21881. RJ DXB CONVERT TO BINARY VALUE
  21882. NZ X4,PCMD3 IF ERROR IN CONVERSION
  21883. SA6 ITRTL INTERVAL BETWEEN TRANEX INACTIVE ROLLOUTS
  21884. EQ PCMDX *RETURN
  21885. TBCON SPACE 4,20
  21886. *** K.TBCON,NN.
  21887. *
  21888. * CHANGE THE NUMBER OF BATCH/CRM USERS.
  21889.  
  21890.  
  21891. TBCON BSS 0
  21892. ENTRY TBCON,K
  21893.  
  21894. SA5 SBUF+1 NUMBER OF *BCT* ENTRIES
  21895. RJ DXB CONVERT TO BINARY VALUE
  21896. NZ X4,PCMD3 IF ERROR IN CONVERSION
  21897. SA1 VNBCT MAXIMUM NUMBER ALLOWED
  21898. MX0 -30
  21899. BX1 -X0*X1
  21900. IX2 X1-X6 SUBTRACT NUMBER SPECIFIED
  21901. NG X2,PCMD1 IF MORE THAN MAXIMUM
  21902. LX6 30 POSITION NUMBER SPECIFIED
  21903. BX6 X6+X1
  21904. SA6 A1 STORE NEW VALUE
  21905. EQ PCMDX *RETURN
  21906. SPACE 4,10
  21907. ** COMMON DECKS.
  21908.  
  21909.  
  21910. *CALL COMKDPB
  21911.  
  21912. ENDOVL
  21913.  
  21914. IDL1 EQU /"PROD""M."/IDL1
  21915. TRANOVL (K-DISPLAY COMMANDS *2*.)
  21916. PMSG SPACE 4
  21917. *** K.MESSAGE,TN=TERMINAL NAME.-MESSAGE-
  21918. *
  21919. * SEND A MESSAGE TO TERMINAL -TN-.
  21920. * MESSAGES ARE SENT AS UNSOLICITED OUTPUT, AND AS SUCH SHOULD
  21921. * BE USED WITH CARE BECAUSE OF THE PROBABILITY OF PRINTING
  21922. * OUT ON A FORM.
  21923.  
  21924.  
  21925. MESSAGE BSS 0
  21926. ENTRY MESSAGE,K
  21927.  
  21928. RJ TARG PROCESS ARGUMENTS
  21929. ZR X3,PCMD3 IF NO TERMINAL SPECIFIED
  21930. LX3 18
  21931. BX5 X3 SAVE TST ORDINAL
  21932. SX7 3777B SET DISASSEMBLY COUNTER
  21933.  
  21934. * ASSEMBLE MESSAGE TO BE SENT.
  21935.  
  21936. SA1 PCMDC COMMAND BUFFER ADDRESS
  21937. SA1 X1+1 SCAN COMMAND TO TERMINATOR
  21938. SB5 PMSGC ASSEMBLY AREA
  21939. SA2 PMSGD TERMINATOR CHARACTER MASK
  21940. MX3 60-6 CHARACTER MASK
  21941. LX1 6
  21942. EQ PMSG2 ENTER SCAN LOOP
  21943.  
  21944. PMSG1 SA1 A1+B1 READ NEXT WORD
  21945. SX7 3777B RESET INPUT CHARACTER COUNT
  21946. LX1 6
  21947. PMSG2 AX7 1 COUNT CHARACTER
  21948. BX4 -X3*X1 PICK CHARACTER
  21949. ZR X7,PMSG1 IF INPUT WORD EXHAUSTED
  21950. SB6 X4+ CHECK TERMINATOR
  21951. LX1 6 SHIFT DISASSEMBLY
  21952. LX6 X2,B6
  21953. PL X6,PMSG2 IF NOT TERMINATOR
  21954. SA2 PMSGA PRESET FIRST PART OF MESSAGE
  21955. SB6 60-36 OUTPUT CHARACTER POSITION
  21956. SB7 6
  21957. BX6 X2
  21958. EQ PMSG4 ENTER ASSEMBLY LOOP
  21959.  
  21960. PMSG3 SA1 A1+B1 READ NEXT WORD
  21961. SX7 3777B RESET INPUT CHARACTER COUNT
  21962. LX1 6
  21963. PMSG4 AX7 1 COUNT CHARACTER
  21964. BX4 -X3*X1 PICK CHARACTER
  21965. ZR X7,PMSG3 IF INPUT WORD EXHAUSTED
  21966. ZR X4,PMSG5 IF END OF LINE
  21967. LX4 X4,B6 POSITION CHARACTER
  21968. SB6 B6-B7 ADVANCE ASSEMBLY POSITION
  21969. LX1 6 SHIFT ASSEMBLY
  21970. BX6 X6+X4 INSERT CHARACTER
  21971. PL B6,PMSG4 IF ASSEMBLY NOT FULL
  21972. SA6 B5 STORE ASSEMBLY WORD
  21973. SB5 B5+1
  21974. BX6 X6-X6 CLEAR ASSEMBLY WORD
  21975. SB6 60-6 RESET ASSEMBLY POSITION
  21976. EQ PMSG4 LOOP TO END OF LINE
  21977.  
  21978. PMSG5 SA6 B5 TERMINATE MESSAGE
  21979. BX7 X7-X7
  21980. SA7 A6+1
  21981. SX2 A7-PMSGB MESSAGE LENGTH
  21982. SX1 4001B BUFFER FUNCTION CODE
  21983. LX1 59-11
  21984. BX6 X1+X2
  21985. BX6 X6+X5 SET TERMINAL ORDINAL
  21986. SA6 PMSGB BUFFER CONTROL WORD
  21987.  
  21988. * SET UP CALL TO TRN TO CALL SYSMSG.
  21989.  
  21990. SA4 STAS SYSTEM MESSAGE TASK
  21991. SX5 CSMSG SYSTEM MESSAGE CODE
  21992. SB3 PMSGB FWA OF BUFFER
  21993. SX7 B0 SCHEDULE ONLY FROM SYSTEM LIBRARY
  21994. RJ TRN SCHEDULE SYSMSG TASK
  21995. NZ X0,PCMDX IF TASK SCHEDULED
  21996. EQ PCMD4 ISSUE *SYSTEM BUSY* MESSAGE
  21997.  
  21998. PMSGA DATA 5L.SYS HEADER FOR SYSTEM ORIGIN MESSAGES
  21999. PMSGB VFD 24/0,18/0,18/0 BUFFER CONTROL WORD
  22000. CON KDM0 NULL K-DISPLAY MESSAGE CODE
  22001. PMSGC BSS 8 MESSAGE SPACE
  22002. PMSGD BSS 0 COMMAND TERMINATOR CHARACTER MASK
  22003. VFD 1/1
  22004. POS 60-1R.
  22005. VFD 1/1
  22006. BSS 0
  22007. PTST SPACE 4,10
  22008. *** K.TST,TN=TERMINAL NAME,DB=AA,RS=N,US=N,UU=NNNN,UL=NNNN,
  22009. * NN=NEW TERMINAL NAME.
  22010. *
  22011. * CHANGE TERMINAL STATUS TABLE. THE PARAMETERS MAY BE GIVEN
  22012. * IN ANY ORDER, *TN* PARAMETER MUST BE GIVEN BUT THE OTHERS
  22013. * NEED ONLY BE GIVEN IF DESIRED.
  22014. * *TN* IS THE NAME OF TERMINAL WHOSE TERMINAL STATUS TABLE
  22015. * ENTRY IS TO BE CHANGED.
  22016. * *DB* IS THE NEW DATA BASE NAME FOR TERMINAL TN.
  22017. * *RS* IS THE NEW READ SECURITY FOR TERMINAL TN.
  22018. * *US* IS THE NEW UPDATE SECURITY FOR TERMINAL TN.
  22019. * *UU* IS THE NEW VALUE OF THE UPPER 24 BITS OF THE USER
  22020. * ARGUMENT AREA FOR TERMINAL TN.
  22021. * *UL* IS THE NEW VALUE OF THE LOWER 24 BITS OF THE USER
  22022. * ARGUMENT AREA FOR TERMINAL TN.
  22023. * *NN* IS THE NEW NAME TO BE GIVEN TO TERMINAL TN.
  22024. *
  22025. *E
  22026.  
  22027.  
  22028. TST BSS 0
  22029. ENTRY TST,K
  22030.  
  22031. SB4 B2-B1 ARGUMENT COUNT
  22032. SA4 SBUF+1 FIRST ARGUMENT FOR COMCARG
  22033. SB7 B0
  22034. SB5 PTSTA ARGUMENT TABLE
  22035. RJ ARG PROCESS COMMAND ARGUMENTS
  22036. NZ X1,PTST12 IF ERROR IN ARGUMENTS
  22037.  
  22038. * SEARCH TERMINAL STATUS TABLE FOR TERMINAL NAME.
  22039.  
  22040. SA4 PTSTTN TERMINAL NAME
  22041. BX3 X3-X3
  22042. MX6 -14
  22043. ZR X4,PTST12 IF NO TERMINAL NAME IN COMMAND
  22044. RJ STST SEARCH TERMINAL STATUS TABLE
  22045. ZR X3,PTST12 IF TERMINAL NOT FOUND
  22046. SX7 NAM
  22047. SA2 A3-B1 WORD 1 OF TERMINAL STATUS TABLE (TST)
  22048. SX6 X3+ TST ORDINAL OF TERMINAL
  22049. LX2 59-TSTOS
  22050. ZR X7,PTST2 IF NOT TAFNAM MODE
  22051. PL X2,PTST12 IF TERMINAL ON
  22052. PTST2 SA6 PTSTC
  22053.  
  22054. * PROCESS DATA BASE PARAMETER *DB*
  22055.  
  22056. SA1 PTSTDB DATA BASE NAME
  22057. MX6 -48
  22058. ZR X1,PTST3 IF NO *DB* PARAMETER IN COMMAND
  22059. BX2 -X6*X1
  22060. NZ X2,PTST12 IF GREATER THEN 2 CHARACTERS
  22061. SA2 A3-B1 WORD 1 OF TERMINAL STATUS TABLE
  22062. LX6 36
  22063. BX7 -X6*X2
  22064. LX1 36
  22065. BX7 X7+X1 MASK IN NEW DATA BASE NAME
  22066. SA7 A2
  22067.  
  22068. * PROCESS READ SECURITY PARAMETER *RS*
  22069.  
  22070. PTST3 SA5 PTSTRS READ SECURITY VALUE
  22071. ZR X5,PTST4 IF NO *RS* PARAMETER IN COMMAND
  22072. SB7 B0
  22073. RJ DXB CONVERT TO BINARY NUMBER
  22074. NZ X4,PTST12 IF CONVERSION ERROR
  22075. MX1 -3
  22076. BX2 X1*X6
  22077. NZ X2,PTST12 IF RS GREATER THAN 7
  22078. LX1 42-3
  22079. SA2 A3-B1 WORD ONE OF TST
  22080. LX6 42-3
  22081. BX2 X1*X2
  22082. BX7 X2+X6 PLACE NEW RS IN TST
  22083. SA7 A2
  22084.  
  22085. * PROCESS UPDATE SECURITY PARAMETER *US*
  22086.  
  22087. PTST4 SA5 PTSTUS UPDATE SECURITY VALUE
  22088. ZR X5,PTST5 IF NO *US* PARAMETER IN COMMAND
  22089. SB7 B0
  22090. RJ DXB CONVERT TO BINARY NUMBER
  22091. NZ X4,PTST12 IF CONVERSION ERROR
  22092. MX1 -3
  22093. BX2 X1*X6
  22094. NZ X2,PTST12 IF US GREATER THAN 7
  22095. LX1 39-3
  22096. SA2 A3-B1 WORD ONE OF TST
  22097. LX6 39-3
  22098. BX2 X1*X2
  22099. BX7 X2+X6 PLACE NEW US IN TST
  22100. SA7 A2
  22101.  
  22102. * PROCESS USER AREA UPPER PARAMETER *UU*
  22103.  
  22104. PTST5 SA5 PTSTUU UPPER USER AREA VALUE
  22105. ZR X5,PTST6 IF NO *UU* PARAMETER IN COMMAND
  22106. SB7 B0
  22107. RJ DXB CONVERT TO BINARY NUMBER
  22108. NZ X4,PTST12 IF CONVERSION ERROR
  22109. MX1 -12
  22110. BX2 X1*X6
  22111. NZ X2,PTST12 IF UU GREATER THAN 2**12-1
  22112. LX1 24-12
  22113. LX6 24-12
  22114. SA2 A3-B1 WORD 1 OF TST
  22115. BX7 X1*X2
  22116. BX7 X7+X6 PLACE NEW UU IN TST
  22117. SA7 A2
  22118.  
  22119. * PROCESS USER AREA LOWER PARAMETER *UL*
  22120.  
  22121. PTST6 SA5 PTSTUL LOWER USER AREA VALUE
  22122. ZR X5,PTST7 IF NO *UL* PARAMETER IN COMMAND
  22123. SB7 B0
  22124. RJ DXB CONVERT TO BINARY NUMBER
  22125. NZ X4,PTST12 IF CONVERSION ERROR
  22126. MX1 -12
  22127. BX2 X1*X6
  22128. NZ X2,PTST12 IF UL GREATER THAN 2**12-1
  22129. MX1 12
  22130. LX1 12
  22131. SA2 A3-B1 WORD 1 OF TST
  22132. BX7 -X1*X2
  22133. BX7 X7+X6 PLACE NEW UL IN TST
  22134. SA7 A2
  22135.  
  22136. * PROCESS NEW TERMINAL NAME *NN*
  22137.  
  22138. PTST7 SA4 PTSTNN NEW TERMINAL NAME
  22139. ZR X4,PTST9 IF NO *NN* PARAMETER IN COMMAND
  22140. SB5 A3+ SAVE TST ADDRESS
  22141. RJ STST SEARCH TERMINAL STATUS TABLE
  22142. NZ X3,PTST12 IF TERMINAL FOUND
  22143. SA2 B5 SECOND WORD OF TST
  22144. MX1 -12
  22145. BX6 -X1*X2
  22146. BX6 X6+X4 NEW NAME TO TST
  22147. SA6 A2+
  22148. PTST9 SB3 PCMDX
  22149.  
  22150. * CLEAR ARGUMENTS FOR NEXT COMMAND
  22151.  
  22152. PTST10 BX6 X6-X6
  22153. SA6 PTSTTN
  22154. SB2 PTSTNN
  22155. PTST11 SA6 A6+B1
  22156. SB4 A6
  22157. LT B4,B2,PTST11 IF NOT END OF TABLE
  22158. JP B3 RETURN
  22159.  
  22160. PTST12 SB3 PCMD3 *FORMAT ERROR* EXIT ADDRESS
  22161. EQ PTST10 CLEAR PARAMETER LIST
  22162.  
  22163. PTSTA BSS 0
  22164. TN ARG PTSTB,PTSTTN
  22165. DB ARG PTSTB,PTSTDB
  22166. RS ARG PTSTB,PTSTRS,400B
  22167. US ARG PTSTB,PTSTUS,400B
  22168. UL ARG PTSTB,PTSTUL,400B
  22169. UU ARG PTSTB,PTSTUU,400B
  22170. NN ARG PTSTB,PTSTNN
  22171. PTSTB CON 0
  22172. PTSTC BSS 1 TST ORDINAL FOR TERMINAL
  22173.  
  22174. PTSTTN BSSZ 1 TERMINAL NAME
  22175. PTSTDB BSSZ 1 DATA BASE NAME
  22176. PTSTRS BSSZ 1 READ SECURITY
  22177. PTSTUS BSSZ 1 UPDATE SECURITY
  22178. PTSTUL BSSZ 1 USER AREA LOWER
  22179. PTSTUU BSSZ 1 USER AREA UPPER
  22180. PTSTNN BSSZ 1 NEW TERMINAL NAME
  22181. TARG SPACE 4
  22182. ** TARG TERMINAL COMMAND ARGUMENT CRACKER
  22183. *
  22184. * ENTRY (B2) = ARGUMENT COUNT
  22185. *
  22186. * EXIT (X3) = TST ORDINAL OF TERMINAL SPECIFIED IN COMMAND
  22187. * (A3) = TST ADDRESS OF TERMINAL SPECIFIED IN COMMAND
  22188.  
  22189.  
  22190. TARG PS
  22191. SB4 B2-1 ARGUMENT COUNT
  22192. SA4 SBUF+1 FIRST ARGUMENT FOR COMCARG
  22193. SB5 TARGA ARGUMENT TABLE
  22194. RJ ARG PROCESS COMMAND ARGUMENTS
  22195. NZ X1,PCMD3 IF ERROR IN ARGUMENTS
  22196. SA4 TN TERMINAL NAME
  22197. BX3 X3-X3
  22198. MX6 -14
  22199. ZR X4,TARG3 NO TERMINAL NAME IN COMMAND
  22200. RJ STST SEARCH TERMINAL STATUS TABLE
  22201. ZR X3,PCMD3 IF INCORRECT USER/TERMINAL
  22202.  
  22203. * CLEAR ARGUMENTS FOR NEXT COMMAND
  22204.  
  22205. TARG3 BX6 X6-X6
  22206. SA6 TN TERMINAL NAME
  22207. EQ TARG *RETURN
  22208.  
  22209. TARGA BSS 0
  22210. TN ARG TARGB,TN TERMINAL NAME
  22211. TARGB CON 0
  22212.  
  22213. TN BSS 1 TERMINAL NAME
  22214. ENDOVL
  22215. TRANOVL (K-DISPLAY COMMANDS *3*.)
  22216. DIS SPACE 4,35
  22217. *** K.DIS,TASKNAME,P1,P2,P3,P4,P5,P6.
  22218. *
  22219. * THE NAMED TASK WILL BE SCHEDULED FOR EXECUTION
  22220. * VIA SUBROUTINE *TRN*. THE OPTIONAL PARAMETERS WILL BE
  22221. * MOVED TO THE TEMPORARY AREA *DISC*. THIS AREA WILL BE
  22222. * SUBMITTED TO *TRN* AS INPUT AND EVENTUALLY END UP IN THE
  22223. * TASK-S COMMUNICATION BLOCK.
  22224.  
  22225. * NOTE THAT IF NO OPTIONAL PARAMETERS ARE PRESENT,
  22226. * TASK RECEIVES ONLY THE COMMUNICATION BLOCK HEADER.
  22227. * *SYSTEM BUSY* MESSAGE WILL APPEAR ON *K-DISPLAY* IF ANOTHER
  22228. * TASK HAS THE *K-DISPLAY* AT THIS TIME.
  22229. *
  22230. * ENTRY (B2) = NUMBER OF PARAMETERS IN *SBUF*.
  22231. * (SBUF+0) = DIS.
  22232. * (SBUF+1) = TASK NAME.
  22233. * (SBUF+2)...(SBUF+7) = OPTIONAL PARAMETERS.
  22234. * (KDISB) = BIT 59 SET TO 1, IF ANOTHER TASK
  22235. * HAS THE *K-DISPLAY*.
  22236. *
  22237. * EXIT (KDISB) = BITS 53-59 SET ACCORDING TO THE BIT
  22238. * MASK IN *BM* FIELD OF *DISA* TABLE ENTRY.
  22239. * TO *PCMDX*, IF TASK SCHEDULED.
  22240. * TO *PCMD1*, IF INCORRECT TASK OR TOO MANY PARAMETERS.
  22241. * TO *PCMD4*, IF ANOTHER TASK HAS THE DISPLAY OR
  22242. * IF NO COMMUNICATION BLOCK AVAILABLE.
  22243. *
  22244. * USES X - 0, 2, 3, 4, 5, 6.
  22245. * A - 2, 3, 4, 6.
  22246. * B - 2, 3, 4, 6.
  22247. *
  22248. * CALLS TRN.
  22249.  
  22250.  
  22251. DIS BSS 0
  22252. ENTRY DIS,K
  22253.  
  22254. SA2 KDISB
  22255. NZ X2,PCMD4 IF ANOTHER TASK HAS THE *K-DISPLAY*
  22256. SA4 SBUF+1
  22257. SB4 DISAL-1
  22258. MX0 42
  22259. SA2 DISA
  22260. SX5 B0 MESSAGE CODE FOR *TRN*
  22261. DIS1 SA3 A2+B4 VERIFY TASK NAME
  22262. BX6 X0*X3
  22263. BX6 X6-X4
  22264. SB4 B4-B1
  22265. ZR X6,DIS2 IF TASK FOUND
  22266. PL B4,DIS1 IF NOT ALL NAMES EXAMINED
  22267. EQ PCMD1 INCORRECT TASK NAME
  22268.  
  22269. DIS2 SA2 DISD PICK UP THE MODEL HEADER
  22270. SB6 B2+ NUMBER OF PARAMETERS IN *SBUF*
  22271. MX0 -12
  22272. BX3 -X0*X3 NUMBER OF PARAMETERS ALLOWED THIS TASK
  22273. SB6 B6-2 NUMBER OF OPTIONAL PARAMETERS
  22274. SX6 B6
  22275. SA6 DISF SAVE NUMBER OF OPTIONAL PARAMETERS
  22276. SB3 X3
  22277. SX6 A3+
  22278. SA6 DISE SAVE *DISA* ENTRY ADDRESS
  22279. SX6 B6+B1
  22280. BX6 X6+X2
  22281. LT B3,B6,PCMD1 IF TOO MANY PARAMETERS
  22282. SA6 DISB BUFFER HEADER
  22283. SB3 DISB
  22284. LE B6,DIS4 IF NO PARAMETERS TO MOVE
  22285. SB4 DISC-1
  22286. DIS3 SA2 SBUF+1+B6 MOVE PARAMETERS
  22287. BX6 X2
  22288. SA6 B4+B6
  22289. SB6 B6-1
  22290. NE B6,DIS3 IF NOT ALL PARAMETERS MOVED
  22291. DIS4 RJ TRN SCHEDULE TASK
  22292. ZR X0,PCMD4 IF NO COMMUNICATION BLOCK AVAILABLE
  22293. SA2 DISF
  22294. SB4 X2-CBDL
  22295. SB4 -B4 NUMBER OF WORDS TO ZERO OUT
  22296. BX6 X6-X6 CLEAR REST OF DATA INPUT AREA IN C.B.
  22297. SX3 X0+CMBHL+CMBRL+CBDL *TDUA*
  22298. SB3 X3-1 LWA OF DATA INPUT AREA
  22299. DIS5 SA6 B3+
  22300. SB3 B3-B1
  22301. SB4 B4-B1
  22302. NZ B4,DIS5 IF REST OF DATA INPUT AREA NOT CLEAR
  22303. SX4 CBDL+5 RESET MESSAGE WORD COUNT IN C.B.
  22304. SA2 X0+CMBHL+1
  22305. MX6 48
  22306. BX6 X6*X2
  22307. BX6 X6+X4
  22308. SA6 A2
  22309. MOVE 5,KBUF,X3 MOVE INPUT TO USER DEFINED AREA OF C.B.
  22310. SA2 DISE ADDRESS OF THE TASK ENTRY
  22311. MX6 42
  22312. MX3 6
  22313. SA2 X2+
  22314. BX6 X6*X2 TASK NAME
  22315. LX2 59-17
  22316. SA6 KDISE
  22317. BX6 X3*X2
  22318. BX6 X6+X0 MOVE C.B. ADDRESS INTO *KDISB*
  22319. SA6 KDISB
  22320. EQ PCMDX RETURN
  22321.  
  22322. ** DISA - TASKS THAT CAN BE INVOKED BY *K-COMMAND*.
  22323. *
  22324. *T 42/TN,6/BM,12/NO
  22325. *
  22326. * TN = TASK NAME.
  22327. * BM = BIT MASK TO INSERT IN *KDISB* BITS 53-59.
  22328. * NO = MAXIMUM NO. OF PARAMETERS (INCL. TASK NAME).
  22329.  
  22330. DISA BSS 0
  22331. VFD 42/7LCRMTASK,6/64B,12/3
  22332. DISAL EQU *-DISA
  22333.  
  22334. DISB BSS 1 HEADER WORD
  22335. DISC BSS 7 MESSAGE BUFFER
  22336. DISD VFD 12/4001B,12/0,18/0,18/0 PROTOTYPE HEADER
  22337. DISE BSS 1
  22338. DISF BSS 1 LENGTH OF UNPACKED INPUT IN WORDS
  22339. DUMP SPACE 4,20
  22340. *** K.DUMP,FWA,LWA. OR K.DUMP,LWA. OR K.DUMP.
  22341. *
  22342. * DUMP THE TRANSACTION EXECUTIVE FIELD LENGTH, WHERE FWA IS
  22343. * THE FIRST WORD OF MEMORY TO DUMP AND LWA IS THE LAST WORD
  22344. * OF MEMORY TO DUMP. THE DUMP WILL BE ROUTED TO A PRINTER
  22345. * WITH AN *ID* OF *DRID*.
  22346. *
  22347. * ENTRY (B2) = THE NUMBER OF PARAMETERS.
  22348. * (SBUF - SBUF+2) = PARAMETERS.
  22349. *
  22350. * EXIT TAF FIELD LENGTH DUMP COMPLETE.
  22351. * TO *PCMD3* IF ERROR ENCOUNTERED.
  22352. *
  22353. * USES X - 1, 2, 3, 4, 5, 6, 7.
  22354. * A - 1, 2, 3, 4, 5, 6, 7.
  22355. * B - 6, 7.
  22356. *
  22357. * CALLS DXB.
  22358. *
  22359. * MACROS CLOCK, DATE, MESSAGE, ROUTE, SYSTEM, WRITER, WRITEW.
  22360.  
  22361.  
  22362. DUMP BSS 0
  22363. ENTRY DUMP,K
  22364.  
  22365. SB7 3
  22366. GT B2,B7,PCMD3 IF INCORRECT PARAMETER COUNT
  22367. SB6 B2
  22368. SB7 B0+ ASSUME OCTAL FOR PARAMETER CONVERSION
  22369.  
  22370. * SET THE DEFAULT FWA AND LWA VALUES.
  22371.  
  22372. BX6 X6-X6
  22373. SX7 377777B
  22374. SA6 DUMQ ASSUME FWA = 0
  22375. SA7 DUMR ASSUME LWA = 377777B
  22376.  
  22377. * OBTAIN THE FIRST AND LAST ADDRESS OF THE DUMP
  22378. * FROM THE PARAMETERS.
  22379.  
  22380. EQ B6,B1,DUM2 IF FORM OF COMMAND IS *DUMP.*
  22381. SA5 SBUF+1 SECOND PARAMETER
  22382. RJ DXB CONVERT SECOND PARAMETER TO BINARY
  22383. NZ X4,PCMD3 IF ERROR IN CONVERSION OF NUMBER
  22384. SB7 3
  22385. EQ B6,B7,DUM1 IF FORM OF COMMAND IS *DUMP,FWA,LWA.*
  22386. SA6 DUMR USE SECOND PARAMETER AS LWA FOR DUMP
  22387. EQ DUM2 CHECK FOR ADDITIONAL ERRORS
  22388.  
  22389. DUM1 SB7 0
  22390. SA6 DUMQ USE SECOND PARAMETER AS FWA FOR DUMP
  22391. SA5 SBUF+2 THIRD PARAMETER
  22392. RJ DXB CONVERT THIRD PARAMETER TO BINARY
  22393. NZ X4,PCMD3 IF ERROR IN CONVERSION OF NUMBER
  22394. SA6 DUMR USE THIRD PARAMETER AS LWA
  22395.  
  22396. * CHECK FOR MORE ERRORS IN THE PARAMETERS.
  22397.  
  22398. DUM2 SA4 DUMQ FWA OF DUMP
  22399. SA5 DUMR LWA OF DUMP
  22400. IX6 X5-X4
  22401. SA3 DUMT MAXIMUM FL FOR A CONTROL POINT
  22402. IX3 X5-X3
  22403. PL X3,PCMD3 IF LWA .GE. MAXIMUM FL FOR A CONTROL POINT
  22404. NG X6,PCMD3 IF FWA .GE. LWA+1
  22405.  
  22406. * SET VARIABLE FIELDS IN THE HEADER PAGE.
  22407.  
  22408. SA2 DUMS
  22409. SA3 PCMDB
  22410. BX6 X2
  22411. ZR X3,DUM3 IF OPERATOR INITIATED
  22412. MX4 12
  22413. SA3 X3+2 WORD 3 OF SUBCONTROL POINT TABLE
  22414. BX3 X3*X4
  22415. LX3 12 TASK DIRECTORY INDEX
  22416. TA3 X3-1,VTLD TASK LIBRARY DIRECTORY ENTRY
  22417. MX4 42
  22418. BX6 X4*X3 TASK NAME LEFT JUSTIFIED, ZERO FILLED
  22419. DUM3 SA6 DUMJ MERGE TASK NAME INTO MESSAGE
  22420. DATE DUMD MERGE DATE INTO MESSAGE
  22421. CLOCK DUME MERGE TIME INTO MESSAGE
  22422.  
  22423. * WRITE THE HEADER PAGE.
  22424.  
  22425. SX5 DUMU
  22426. DUM4 WRITEW O,DUMA,DUMB SECURE MESSAGE
  22427. SX5 X5-1
  22428. NZ X5,DUM4 IF MORE MESSAGE
  22429. SX5 DUMV
  22430. DUM5 WRITEW X2,DUML,DUMM CARRIAGE CONTROL TO SKIP LINE
  22431. SX5 X5-1
  22432. NZ X5,DUM5 IF MORE MESSAGE
  22433. WRITEW X2,DUMC,DUMF DATE AND TIME
  22434. WRITEW X2,DUMG,DUMH DESCRIPTIVE MESSAGE
  22435. WRITEW X2,DUMI,DUMK ORIGINATOR OF DUMP
  22436. SX5 DUMV
  22437. DUM6 WRITEW X2,DUML,DUMM CARRIAGE CONTROL TO SKIP LINE
  22438. SX5 X5-1
  22439. NZ X5,DUM6 IF MORE LINES TO SKIP
  22440. SX5 DUMU
  22441. DUM7 WRITEW X2,DUMA,DUMB SECURE MESSAGE
  22442. SX5 X5-1
  22443. NZ X5,DUM7 IF MORE MESSAGE
  22444. WRITER X2,R COMPLETE WRITING THE HEADER PAGE
  22445.  
  22446. * COMPLETE THE DUMP OPERATION.
  22447.  
  22448. SA4 DUMQ FWA OF DUMP
  22449. SA5 DUMR LWA OF DUMP
  22450. SYSTEM DMD,R,X5,X4 REQUEST DUMP
  22451. ROUTE DUMN,R DISPOSE DUMP TO PRINT QUEUE
  22452. MESSAGE DUMO,0 MESSAGE TO DAYFILE
  22453. SA1 DUMN CLEAR ROUTE COMPLETION BIT
  22454. MX2 59
  22455. BX6 X2*X1
  22456. SA6 DUMN
  22457. EQ PCMDX EXIT
  22458.  
  22459. DUMA DATA 40L * * * * * * * * * * * * * * * * * * SE
  22460. DATA 40LCURE, GIVE TO CENTRAL SITE TAF SYSTEMS A
  22461. DATA 48CNALYST ONLY. * * * * * * * * * * * * * * * * * *
  22462. DUMB EQU *-DUMA MESSAGE LENGTH
  22463. DUMC DATA 50L
  22464. DUMD DATA 10H YY/MM/DD. DATE OF DUMP
  22465. DUME DATA 10H HH.MM.SS. TIME OF DUMP
  22466. CON 0 END OF LINE
  22467. DUMF EQU *-DUMC MESSAGE LENGTH
  22468. DUMG DATA 50L THE FOLLOWIN
  22469. DATA 40CG IS A DUMP OF THE FIELD LENGTH OF TAF.
  22470. DUMH EQU *-DUMG MESSAGE LENGTH
  22471. DUMI DATA 50L
  22472. DATA 20L DUMP INITIATED BY
  22473. DUMJ BSS 1 ORIGINATOR OF DUMP
  22474. DUMK EQU *-DUMI MESSAGE LENGTH
  22475. DUML VFD 60/1C-
  22476. DUMM EQU *-DUML
  22477. DUMN VFD 42/6LOUTPUT,18/0 ROUTE PARAMETER BLOCK
  22478. VFD 24/0,12/2LLP,24/00000026B
  22479. VFD 36/0,24/DRID
  22480. BSSZ 2
  22481. DUMO DATA 32C TAF FIELD LENGTH DUMP RELEASED.
  22482. DUMQ BSS 1 FWA OF DUMP
  22483. DUMR BSS 1 LWA OF DUMP
  22484. DUMS DATA 8COPERATOR
  22485. DUMT CON FLMAX MAXIMUM FL FOR A CONTROL POINT
  22486.  
  22487. * HEADER PAGE REPEAT COUNT DEFINITIONS.
  22488.  
  22489. DUMU EQU 15 SECURE MESSAGE REPEAT COUNT
  22490. DUMV EQU 5 LINE FEED REPEAT COUNT
  22491. DUMPLIM SPACE 4,20
  22492. *** K.DUMPLIM,N. OR K.DUMPLIM.
  22493. *
  22494. * SET THE GLOBAL TASK DUMP LIMIT TO THE VALUE SPECIFIED BY
  22495. * THE PARAMETER. IF NO PARAMETER IS SPECIFIED THE LIMIT IS
  22496. * SET TO ZERO. THE GLOBAL TASK DUMP FLAG IS CLEARED.
  22497. *
  22498. * ENTRY (B2) = NUMBER OF PARAMETERS.
  22499. * (SBUF - SBUF+1) = PARAMETERS.
  22500. *
  22501. * EXIT GLOBAL TASK DUMP LIMIT IS SET TO VALUE SPECIFIED.
  22502. * GLOBAL TASK DUMP FLAG IS CLEARED.
  22503. * TO *PCMD3* IF ERROR ENCOUNTERED.
  22504. *
  22505. * USES X - 5, 6.
  22506. * A - 5, 6.
  22507. * B - 3, 7.
  22508. *
  22509. * CALLS DXB.
  22510.  
  22511.  
  22512. DUMPLIM BSS 0
  22513. ENTRY DUMPLIM,K
  22514.  
  22515. SX6 B0+
  22516. EQ B2,B1,DML1 IF *N* IS NOT SPECIFIED
  22517. SB3 B1+B1
  22518. SB7 B1 DECIMAL BASE ASSUMED
  22519. GT B2,B3,PCMD3 IF INCORRECT PARAMETER COUNT
  22520. SA5 SBUF+1 NEW GLOBAL TASK DUMP LIMIT
  22521. RJ DXB CONVERT TO BINARY
  22522. NZ X4,PCMD3 IF ERROR IN CONVERSION
  22523. DML1 SA6 GTDL SAVE GLOBAL TASK DUMP LIMIT
  22524. EQ PCMDX EXIT
  22525.  
  22526. ENDOVL
  22527. TRANOVL (UPDATE A TASK LIBRARY.)
  22528. ULD SPACE 4,35
  22529. ** ULD - UPDATE CORE COPY OF A TASK LIBRARY DIRECTORY.
  22530. *
  22531. * UPDATE LIBRARY DIRECTORY IS EXECUTED IN RESPONSE TO A
  22532. * *LIBTASK,TT* REQUEST FOR AN ON-LINE TASK LIBRARY UPDATE BY
  22533. * PASSING THE USER NAME AND LIBRARY NAME TO THE TRANSACTION
  22534. * EXECUTIVE VIA A *SIC* REQUEST. IF THE USER NAME AND
  22535. * LIBRARY NAME DO NOT MATCH, A POSSIBLE BREACH OF SECURITY IS
  22536. * ASSUMED AND THE USER NAME AND LIBRARY NAME ARE JOURNALLED
  22537. * AND NO UPDATES ARE ATTEMPTED. OTHERWISE, MEMORY FOR THE
  22538. * UPDATE IS REQUESTED FROM *RCP* AND THE DIRECTORY READ INTO
  22539. * MEMORY. IF THE FORMAT OF THE NEW DIRECTORY IS CORRECT AND
  22540. * THE UPDATE DOES NOT RESULT IN A SITUATION WHERE ENOUGH FL
  22541. * CANNOT OR MIGHT NOT BE OBTAINED, THE NEW DIRECTORY REPLACES
  22542. * THE OLD ONE.
  22543. *
  22544. * ENTRY TO *ULD* IF FIRST ATTEMPT.
  22545. * (INRB) = LIBRARY UPDATE REQUEST.
  22546. * (PCMDF) = 0 IF NO LIBTASK REQUEST ACTIVE.
  22547. * TO *ULD0* IF RETRY ATTEMPT.
  22548. * (X4) = FIRST WORD OF LIBRARY REQUEST.
  22549. * (A4) = FWA OF LIBRARY REQUEST.
  22550. *
  22551. * EXIT TO *TSSC*.
  22552. * (KDISA) = USER NAME IF UPDATE MUST BE RETRIED.
  22553. * (KDISB) = TASK LIBRARY IF UPDATE MUST BE RETRIED.
  22554. *
  22555. * USES X - ALL.
  22556. * A - 1, 2, 3, 4, 5, 6, 7.
  22557. * B - 3, 4, 5, 6.
  22558. *
  22559. * CALLS ESCP1, JRNL, PBL, PNM, RCP.
  22560. *
  22561. * MACROS ATTACH, MOVE, READSKP, RECALL, RENAME, RETURN,
  22562. * SKIPB, SKIPEI.
  22563.  
  22564.  
  22565. ULD BSS 0
  22566. ENTRY ULD
  22567. SA4 PCMDF LIBTASK ACTIVE FLAG
  22568. NZ X4,TSSC IF LAST LIBTASK NOT COMPLETE
  22569. SX6 B1 SET LIBTASK ACTIVE
  22570. SA6 A4
  22571. SA4 INRB INTERCONTROL POINT RECEIVING BUFFER 0
  22572.  
  22573. ULD0 RECALL TL WAIT FOR LIBRARY FILE IDLE
  22574. SA4 A4+B1
  22575. BX6 X4 SAVE USER NAME
  22576. SA6 PCMDG
  22577. BX7 X7-X7 CLEAR INTERCONTROL POINT RECEIVING BUFFER
  22578. MX6 42
  22579. SA5 A4+B1 READ TASK LIBRARY NAME
  22580. BX0 X6*X5 (X0) = LIBRARY NAME
  22581. BX1 X6*X4 USER NAME OF LIBTASK SUBMITTER
  22582. SA7 A4-B1
  22583. BX6 X0
  22584. MX4 42
  22585. SA6 PCMDH
  22586. SA5 TL+B1
  22587. MX3 -48
  22588. BX6 -X3*X5 CLEAR DEVICE TYPE FROM FET
  22589. SA3 DEVT DEFAULT DEVICE TYPE
  22590. BX7 X7-X7
  22591. LX3 -12
  22592. BX6 X6+X3
  22593. SA6 A5
  22594. SA7 TL+CFPK CLEAR PACK NAME FROM FET
  22595. SA3 VUSN USER NAME FOR LIBRARY FILE
  22596. SA2 VTFL SYSTEM TASK LIBRARY NAME
  22597. BX7 X1-X3
  22598. LX6 X2
  22599. NZ X7,ULD0.1 IF NOT TAF-S USER NAME
  22600. BX7 X6-X0
  22601. BX4 X4*X7
  22602. TX7 0,VTLD
  22603. ZR X4,ULD3 IF SYSTEM TASK LIBRARY
  22604. ULD0.1 TA4 0,VEDT READ *EDT* HEADER
  22605. SB5 B1+B1
  22606. MX6 42
  22607. EQ ULD2 ENTER USER NAME VALIDITY SEARCH
  22608.  
  22609. * SEARCH *EDT* HEADERS FOR MATCHING USER NAME.
  22610.  
  22611. ULD1 ZR X4,ULD15 IF INCORRECT USER NAME
  22612. SA4 X4+
  22613. ULD2 SX4 X4
  22614. SA3 A4+B5
  22615. BX3 X6*X3
  22616. IX7 X3-X1
  22617. NZ X7,ULD1 IF NO MATCH ON USER NAME
  22618.  
  22619. * CHECK LIBRARY NAME FOR USER NAME.
  22620.  
  22621. SA5 A3+B5 (A5) = FWA OF FIRST TASK
  22622. LX5 17-35
  22623. ZR X5,ULD15 IF LIBRARY NOT ATTACHED
  22624. SA5 X5-1 READ TASK LIBRARY NAME
  22625. BX7 X6*X5
  22626. BX5 X7-X0
  22627. NZ X5,ULD1 IF NO MATCH ON LIBRARY NAME
  22628. BX6 X1 SAVE USER NAME
  22629. SA6 PCMDG
  22630. MX5 12
  22631. SA1 A4 FWA OF *EDT* HEADER
  22632. SA4 A3+B5 FWA OF XXTASKL FROM EDT HEADER + 4
  22633. BX7 X4
  22634. MX6 48
  22635. ZR X4,TSSC IF TASK LIBRARY NOT AT CONTROL POINT
  22636.  
  22637. * DETERMINE DEVICE ATTRIBUTES OF LIBRARY FILE RESIDENCE AND
  22638. * ATTACH FILE.
  22639.  
  22640. SA4 A4+B1 PACK NAME FROM EDT HEADER + 5
  22641. LX6 6
  22642. BX6 X6*X4
  22643. LX4 -18
  22644. BX4 X5*X4 DEVICE TYPE
  22645. AX7 18
  22646. SA5 TL+1
  22647. SA6 TL+CFPK PACK NAME AND UNIT INTO TASKLIB FET
  22648. MX6 -48
  22649. BX5 -X6*X5
  22650. IX6 X4+X5
  22651. SA6 A5 DEVICE TYPE INTO FET
  22652. ULD3 SA1 ULDE LOCAL FILE NAME
  22653. BX6 X1
  22654. SA6 TL STORE FILE NAME
  22655. MX2 1
  22656. SA5 A6+B1
  22657. SA7 ULDD FWA FOR *DBTASKL*
  22658. LX2 44-59 SET *EP* BIT TO CHECK FOR ATTACH ERROR
  22659. BX7 X2+X5
  22660. SA7 A5
  22661. ATTACH TL,PCMDH,X3,,M ATTACH,ZZZZZTL=DBTASKL/M=W
  22662. SA1 X2 FIRST WORD OF FET
  22663. BX7 X5
  22664. MX2 52
  22665. SA7 A5 CLEAR *EP* BIT FROM FET
  22666. LX2 10-0
  22667. BX7 X2*X1 CLEAR ERROR STATUS
  22668. SA7 A1
  22669. BX2 -X2*X1 ABNORMAL STATUS CODES
  22670. NZ X2,ULD14 IF ERROR ON ATTACH
  22671. SA1 ULDD FWA OF *DBTASKL*
  22672. SA2 X1-4
  22673.  
  22674. * REQUEST MEMORY FROM *RCP* AND READ DIRECTORY INTO
  22675. * PROVIDED SPACE.
  22676.  
  22677. SX0 X2+77B AMOUNT OF CORE TO REQUEST
  22678. AX0 6
  22679. LX0 6
  22680. BX6 X0 SAVE *TLD* LENGTH
  22681. LX2 TRFWN-1-TRFWS GET FWA OF *TRD*
  22682. SA1 X2-3
  22683. SX3 TRDLE1*TRDMN EXPANSION AREA OF *TRD*
  22684. LX1 TDLDN-1-TDLDS
  22685. SX1 X1 LENGTH OF DIRECTORY IN *TRD* HEADER
  22686. ERRNZ TDLDN-18 *TDLDN* NOT 18 BITS
  22687. IX3 X1+X3 SPACE NEEDED TO READ IN THE *TRD*
  22688. SX3 X3+177B ROUND TO NEAREST 200B
  22689. AX3 6
  22690. LX3 6
  22691. IX0 X3+X6 AMOUNT OF SPACE TO REQUEST
  22692. LX3 18
  22693. BX6 X3+X6
  22694. SA6 ULDK SAVE SPACE REQUIRED
  22695. RJ RCP REQUEST SUBCONTROL POINT
  22696. ZR X5,ULD13 IF MEMORY NOT AVAILABLE
  22697. SX6 B4+ SAVE SUBCP ADDRESS
  22698. SA6 PCMDD
  22699. SA1 TL+1 SET FET TO READ IN DIRECTORY
  22700. MX2 -18
  22701. SX6 X5 START OF CORE TO READ DIRECTORY TO
  22702. BX7 X2*X1
  22703. BX7 X7+X6
  22704. SA6 A1+B1 IN
  22705. SA7 A1 FIRST
  22706. SA6 A6+B1 OUT
  22707. SA3 A6+B1 LIMIT
  22708. BX7 X2*X3
  22709. BX7 X7+X6
  22710. SA1 ULDK
  22711. SX0 X1+ LIMIT FOR *TLD*
  22712. IX7 X7+X0
  22713. SA7 A3 LIMIT
  22714. SKIPEI TL,R SKIP TO EOI
  22715. SKIPB TL,2,R BACKSPACE TO POSITION AT DIRECTORY
  22716. READSKP TL,,R READ IN DIRECTORY
  22717. SA1 ULDD
  22718. SA3 X1-4
  22719. SA4 TL+2 IN
  22720. SA2 A4+B1 OUT
  22721. IX6 X4-X2 (X6) = NUMBER OF WORDS IN NEW *TLD*
  22722. SX0 X3
  22723. IX6 X0-X6
  22724. NG X6,ULD18 IF *TLD* ENLARGED PAST EXPANSION AREA
  22725.  
  22726. * CHECK NEW DIRECTORY HEADER FOR LEGALITY.
  22727.  
  22728. ULD6 SB4 B1+B1
  22729. SB5 X1 FWA OF OLD *TLD*
  22730. SA1 X1-3 OLD HEADER
  22731. SA2 X5+B1 NEW HEADER
  22732. SA4 ULDJ MASK FOR OLD DIRECTORY ENTRY EXTRACTION
  22733. MX3 42
  22734. BX7 X7-X7
  22735. LX6 X4
  22736. BX1 X3*X1 COMPARE UPPER 42 BITS ONLY
  22737. BX2 X3*X2
  22738. IX3 X2-X1 COMPARE
  22739. NZ X3,ULD17 IF NOT SAME TASK
  22740. SA3 TL+2 IN
  22741. SB3 X3+
  22742. SA4 TL+4 LIMIT
  22743. SB6 X4
  22744. SA2 B5
  22745. ULD8.1 SA7 B3 ZERO OUT TO END OF BUFFER
  22746. SB3 B3+B1
  22747. NE B3,B6,ULD8.1 IF NOT END OF BUFFER
  22748. MX4 59
  22749. SB3 TLDLE
  22750. MX3 59
  22751. LX4 57-0
  22752. LX3 TLQUS-0
  22753. SB6 X5+4 FWA OF NEW *TLD*
  22754. BX4 X3*X4 MASK FOR NEW ATTRIBUTES TO IGNORE
  22755.  
  22756. * ADD USAGE COUNTERS FROM CURRENT DIRECTORY.
  22757.  
  22758. ULD9 MX1 TLTNN MASK TASK NAME
  22759. SA3 B6 FWA OF NEW DIRECTORY ENTRY
  22760. BX7 X2-X3
  22761. BX7 X1*X7
  22762. NZ X7,ULD13.1 IF NO MATCH ON TASK NAME
  22763. SA3 A3+B4 THIRD WORD OF *TLD*
  22764. SA2 A2+B4
  22765. SB5 B5+B3
  22766. BX7 X6*X2 USAGE COUNTERS AND TASK STATUS
  22767. SB6 B6+B3
  22768. BX3 X4*X3 IGNORE NEW CM RESIDENT FIELD
  22769. BX7 X7+X3 ADD TO NEW DIRECTORY WORD
  22770. LX3 59-56 CHECK EXTENDED MEMORY BIT IN NEW ENTRY
  22771. PL X3,ULD11 IF NOT EXTENDED MEMORY RESIDENT
  22772. LX2 59-56 CHECK EXTENDED MEMORY BIT IN OLD ENTRY
  22773. PL X2,ULD10 IF NOT EXTENDED MEMORY RESIDENT
  22774. SA2 A2-2 REPLACE NEW ENTRY WITH OLD
  22775. BX7 X2
  22776. SA2 A2+B1
  22777. SA7 A3-2
  22778. BX7 X2
  22779. SA7 A7+B1
  22780. SA2 A2+B1
  22781. BX7 X2
  22782. EQ ULD11 CHECK END OF DIRECTORY
  22783.  
  22784. ULD10 SX2 1 CLEAR EXTENDED MEMORY BIT IN NEW ENTRY
  22785. LX2 56
  22786. BX7 -X2*X7
  22787. ULD11 SA7 A3
  22788. SA2 B5
  22789. NZ X2,ULD9 IF NOT FINISHED PROCESSING DIRECTORY
  22790. ULD11.1 SA3 B6+ NEXT *TLD* ENTRY IN NEW DIRECTORY
  22791. ZR X3,ULD11.2 IF FINISHED PROCESSING NEW INSERTIONS
  22792. SA3 A3+B4 THIRD WORD OF *TLD*
  22793. SB6 B6+B3 NEXT *TLD* ENTRY
  22794. LX3 59-TLECS CHECK EXTENDED MEMORY BIT IN NEW ENTRY
  22795. MX2 TLECN
  22796. PL X3,ULD11.1 IF NOT EXTENDED MEMORY RESIDENT
  22797. BX7 -X2*X3 CLEAR EXTENDED MEMORY BIT IN NEW ENTRY
  22798. LX7 TLECS-59
  22799. SA7 A3+
  22800. EQ ULD11.1 CHECK NEXT *TLD* ENTRY
  22801.  
  22802.  
  22803. * CHECK FOR POTENTIALLY BLOCKED TASKS.
  22804.  
  22805. ULD11.2 RJ PBL POTENTIAL BLOCKS DURING LIBRARY UPDATE
  22806. ZR B7,ULD11.3 IF NO BLOCKED TASKS DETECTED
  22807. EQ ULD13.1 BLOCKED TASKS DETECTED
  22808.  
  22809. * READ *TRD* FROM TASK LIBRARY.
  22810.  
  22811. ULD11.3 SX2 X5+TLDLH SAVE START OF NEW *TLD*
  22812. SA1 ULDD START OF OLD DIRECTORY
  22813. IX4 X2-X1 OFFSET OF DIRECTORY
  22814. LX2 18
  22815. BX6 X1+X2
  22816. SA6 ULDL
  22817. SX2 X0-TLDLH NUMBER OF WORDS TO MOVE
  22818. LX2 36
  22819. BX6 X2+X6
  22820. SA6 ULDM SAVE MOVE INFORMATION
  22821. RJ URD UPDATE *TRD*
  22822. ZR B3,ULD13.1 IF UPDATE *TRD* UNSUCCESSFUL
  22823.  
  22824. * REPLACE OLD TASK DIRECTORY.
  22825.  
  22826. SX7 B3+ LWA OF NEW *TRD*
  22827. SA7 ULDN
  22828. SA1 ULDM GET MOVE INFORMATION
  22829. SX3 X1 FWA OF OLD *TLD*
  22830. LX1 -18
  22831. SX2 X1 FWA OF NEW *TLD*
  22832. LX1 -18
  22833. SX1 X1+ NUMBER OF WORDS TO MOVE
  22834. MOVE X1,X2,X3
  22835.  
  22836. * REPLACE OLD TRANSACTION DIRECTORY.
  22837.  
  22838. SA1 ULDL GET FWA OF *TLD*
  22839. SA2 X1+TRFWW GET FWA OF OLD *TRD*
  22840. LX2 TRFWN-1-TRFWS
  22841. SX0 B1
  22842. SX3 X2-4 FWA OF OLD *TRD*
  22843. SA1 TL+1 GET FWA OF NEW *TRD*
  22844. SX2 X1+
  22845. SA4 ULDN LWA OF NEW *TRD*
  22846. SX6 X4-1
  22847. ZR X6,ULD12 IF NO *TRD* TO UPDATE
  22848. IX1 X4-X2 NUMBER OF WORDS TO MOVE
  22849. IX6 X3+X1 NEW LWA OF DIRECTORY
  22850. SA4 X2+B1 UPDATE LWA OF DIRECTORY IN HEADER
  22851. IX6 X6-X0
  22852. MX0 60-TDLWN
  22853. BX4 X0*X4
  22854. BX6 X4+X6 LWA OF DIRECTORY IN HEADER
  22855. SA6 A4
  22856. MOVE X1,X2,X3
  22857.  
  22858. * RELEASE CORE USED FOR NEW DIRECTORIES.
  22859.  
  22860. ULD12 SA3 ULDK SPACE FOR DIRECTORIES
  22861. SX0 X3+
  22862. AX3 18
  22863. SA1 AVAILCM
  22864. IX0 X0+X3
  22865. IX6 X1+X0
  22866. SA6 A1 ADD CORE TO FREE CORE COUNT
  22867. SA3 PCMDG
  22868. ATTACH TL,,X3,,RM REATTACH FILE IN READ MODE
  22869. RENAME TL,PCMDH RENAME TASK LIBRARY
  22870. BX0 X0-X0 NO COMMUNICATION BLOCK
  22871. SB4 8 8 = ON-LINE LIBTASK UPDATE
  22872. SX6 B1+B1 (X6) = NUMBER OF WORDS TO JOURNAL
  22873. SB3 PCMD7 RETURN ADDRESS
  22874. SB5 PJRNL (B5) = PRIMARY JOURNAL FILE FET
  22875. SX5 PCMDG
  22876. LX6 35-17
  22877. BX5 X6+X5 (X5) = LENGTH + FWA OF MESSAGE
  22878. EQ JRNL JOURNAL MESSAGE
  22879.  
  22880. * CAN NOT READ DIRECTORY - SET STATUS FOR LATER RETRY.
  22881.  
  22882. ULD13 SA3 PCMDG
  22883. RETURN TL,R RETURN LOCAL FILE
  22884. SA1 KDISA SET UP FOR REATTEMPT
  22885. SA3 PCMDG
  22886. SA2 PCMDH READ TASK LIBRARY NAME
  22887. BX6 X1+X3 SET USER NAME
  22888. BX7 X2
  22889. SA6 A1+
  22890. SA7 KDISC
  22891. EQ TSSC EXIT TO SWITCHING LOOP
  22892.  
  22893. * INCORRECT LIBTASK ATTEMPT.
  22894. * - INCORRECT USER.
  22895. * - LIBRARY FILE NOT ATTACHED.
  22896. * - BLOCKED TASKS DETECTED.
  22897. * - *TRD* UPDATE UNSUCCESSFUL.
  22898.  
  22899. * RELEASE CORE USED FOR NEW DIRECTORIES.
  22900.  
  22901. ULD13.1 SA3 ULDK SPACE FOR DIRECTORIES
  22902. SX0 X3+
  22903. AX3 18
  22904. SA1 AVAILCM
  22905. IX0 X0+X3
  22906. IX6 X1+X0
  22907. SA6 A1 ADD CORE TO FREE CORE COUNT
  22908. SB5 B5-ULDB
  22909. ZR B5,ULD16 IF LIBRARY FILE HEADER IS DIFFERENT
  22910.  
  22911. ULD14 RETURN TL,R RETURN NEW LIBRARY FILE
  22912.  
  22913. ULD15 SB5 -ULDA COMPLEMENT OF FWA OF MESSAGE
  22914. RJ PNM PUT NAME IN MESSAGE
  22915. ULD16 SB4 7 INCORRECT INTER-CONTROL POINT TRANSFER
  22916. SB3 PCMD9 (B3) = RETURN ADDRESS FROM *JRNL*
  22917. SB5 PJRNL (B5) = PRIMARY JOURNAL FILE FET
  22918. SX6 2 (X6) = NUMBER OF WORDS TO MOVE
  22919. SX5 PCMDG
  22920. LX6 35-17
  22921. BX5 X5+X6
  22922. BX0 X0-X0 NO COMMUNICATION BLOCK
  22923. EQ JRNL JOURNAL MESSAGE AND EXIT
  22924.  
  22925. * LIBRARY FILE HEADER IS DIFFERENT - ERROR.
  22926.  
  22927. ULD17 RETURN TL,R RETURN NEW LIBRARY FILE
  22928. SB5 -ULDB COMPLEMENT OF FWA OF MESSAGE
  22929. RJ PNM PUT NAME IN MESSAGE
  22930. SB5 ULDB
  22931. EQ ULD13.1 ISSUE MESSAGE
  22932.  
  22933. * LIBTASK OVERFLOW MESSAGE.
  22934.  
  22935. ULD18 SB5 -ULDC COMPLEMENT OF FWA OF MESSAGE
  22936. RJ PNM PUT NAME IN MESSAGE
  22937. SA1 ULDD
  22938. EQ ULD6 CONTINUE PROCESSING
  22939.  
  22940.  
  22941. ULDA DATA C* INCORRECT LIBTASK ATTEMPT - XXXXXXX, +++++++.*
  22942. ULDB DATA C* CHANGED TLD DETECTED - XXXXXXX, +++++++.*
  22943. ULDC DATA C* TLD OVERFLOW - XXXXXXX, +++++++.*
  22944. ULDD BSSZ 1 FWA OF OLD DIRECTORY
  22945. ULDE VFD 42/0LZZZZZTL,18/1 LOCAL FILE NAME
  22946. ULDJ VFD TLSTN/0 MASK FOR OLD DIRECTORY ENTRY EXTRACTION
  22947. VFD TLNDN/0
  22948. VFD TLCMN/1 CM RESIDENT
  22949. VFD TLECN/0
  22950. VFD TLTON/1 TASK ON/OFF
  22951. VFD TLDLN/0
  22952. VFD TLTLN/777777B NUMBER OF TIMES TASK LOADED
  22953. VFD TLTCN/777777B NUMBER OF TIMES TASK CALLED
  22954. VFD TLSCN/0
  22955. VFD TLQUN/1 QUEUING CONTROL
  22956. VFD TLREN/1 REDUCE FIELD LENGTH
  22957. VFD TLX1N/0
  22958. VFD TLBPN/0 BASE PRIORITY
  22959. VFD TLTAN/7 TASK ACTIVE STATUS
  22960. VFD TLQLN/0
  22961. ULDK BSS 1 SPACE FOR *TRD* AND *TLD*
  22962. ULDL BSS 1 FWA OF NEW AND OLD *TLD*
  22963. ULDM BSS 1 MOVE INFORMATION FOR *TLD*
  22964. ULDN BSS 1 LWA OF NEW *TRD*
  22965. URD SPACE 4,20
  22966. ** URD - UPDATE TRANSACTION DIRECTORY.
  22967. *
  22968. * ENTRY (X4) = DIFFERENCE BETWEEN NEW AND OLD DIRECTORY.
  22969. * (X5) = FWA OF NEW *TLD*.
  22970. * (ULDK) = SPACE REQUIRED TO READ IN *TRD*.
  22971. *
  22972. * EXIT (B3) = LWA OF NEW *TRD*.
  22973. * = 0, IF UPDATE UNSUCCESSFUL.
  22974. * = 1, IF NO *TRD* TO UPDATE.
  22975. * = (B2) AND (B7) RESTORED.
  22976. *
  22977. * USES A - 1, 2, 3, 4, 6, 7.
  22978. * X - ALL.
  22979. * B - 2, 3, 4, 5, 6, 7.
  22980. *
  22981. * CALLS LTT, RSP, SNM, STD.
  22982. *
  22983. * MACROS MESSAGE, READ.
  22984.  
  22985.  
  22986. URD SUBR ENTRY/EXIT
  22987. SB3 B1+
  22988. MX0 -TLTRN
  22989. SA1 X5 GET *TRD* PRU
  22990. BX6 -X0*X1
  22991. ZR X6,URDX IF NO PRU
  22992. BX7 X4 DIFFERENCE BETWEEN NEW AND OLD DIRECTORY
  22993. SA7 URDD
  22994. SA6 TL+6 PUT PRU IN FET
  22995. SA1 TL+1 FIRST
  22996. SA2 TL+4 LIMIT
  22997. MX0 42
  22998. SA3 ULDK GET SPACE NEEDED FOR *TRD*
  22999. SX7 X2
  23000. BX6 X0*X1
  23001. BX6 X6+X7
  23002. SA6 A1 UPDATE FIRST
  23003. SX5 X7
  23004. SA7 A6+1 UPDATE IN
  23005. SA7 A7+1 UPDATE OUT
  23006. BX0 X0*X2
  23007. LX3 -18
  23008. SX6 X3
  23009. IX7 X6+X7
  23010. BX7 X0+X7
  23011. SA7 A7+B1 UPDATE LIMIT
  23012.  
  23013. * READ TRANSACTION DIRECTORY.
  23014.  
  23015. READ TL,R READ IN DIRECTORY
  23016. SB3 B1
  23017. SA1 TL+2 IN
  23018. SA2 A1+B1 OUT
  23019. IX6 X1-X2 NUMBER OF WORDS IN *TRD*
  23020. ZR X6,URDX IF *TRD* EMPTY
  23021. SA1 A2+B1 LIMIT
  23022. SX1 X1+
  23023. IX1 X1-X2
  23024. IX6 X1-X6
  23025. NG X6,URD6 IF DIRECTORY TOO LONG
  23026. SA2 URDA VALIDATE *TRD* HEADER
  23027. MX6 TDDNN
  23028. SA1 X5+B1
  23029. BX3 X6*X1
  23030. IX7 X2-X3
  23031. SB3 X5+4
  23032. NZ X7,URD7 IF INCORRECT *TRD* HEADER WORD
  23033. LX1 TDLDN-1-TDLDS GET *TRD* LENGTH
  23034. SB5 X1
  23035. ZR B5,URDX IF *TRD* LENGTH IS ZERO
  23036. BX7 X7-X7
  23037. SA7 B3+B5 MAKE SURE LAST WORD IS ZERO
  23038. SB2 B3+
  23039.  
  23040. * CONVERT TASK TO INDEX.
  23041. *
  23042. * (B2) = POINTER TO CURRENT TRANSACTION TASK.
  23043. * (B3) = POINTER TO CURRENT TRANSACTION NAME.
  23044. * (URDD) = DIFFERENCE BETWEEN NEW AND OLD DIRECTORY.
  23045.  
  23046. URD1 SA1 B3+TDTNW GET TRANSACTION NAME
  23047. ZR X1,URD4 IF NO TRANSACTION NAME
  23048. BX7 X1 PUT TRANSACTION NAME IN FWA OF *TRD*
  23049. SB3 B3+B1
  23050. SA7 B2+
  23051. SB2 B2+B1 INCREMENT POINTER
  23052. BX5 X5-X5
  23053. SB7 5
  23054. URD2 SA2 B3 GET TASK NAME
  23055. SB3 B3+1
  23056. BX6 X6-X6
  23057. ZR X2,URD3 IF NO TASK NAME
  23058. SB4 B3+ SAVE POINTER
  23059. SA1 ULDL GET FWA OF NEW *TLD*
  23060. SB3 TLDLE LENGTH OF ENTRY
  23061. LX1 -18
  23062. SB5 X1 START OF DIRECTORY
  23063. SA1 X1-3
  23064. LX1 -18
  23065. SB6 X1+B5 END OF DIRECTORY
  23066. SB6 B6-TLDLE
  23067. RJ STD SEARCH TASK
  23068. SB3 A1+B1
  23069. TB5 0,VTLD
  23070. SX6 B3-B5
  23071. SA4 URDD GET DIFFERENCE
  23072. SB3 B4 RESTORE B3
  23073. IX6 X6-X4 INDEX
  23074. ZR X1,URD3 IF TASK FOUND
  23075. BX3 X3-X3 SERCH SYSTEM LIBRARY
  23076. BX6 X6-X6
  23077. SB4 B0
  23078. SB5 B0
  23079. RJ LTT LOCATE TASK
  23080. ZR X6,URD5 IF TASK NOT FOUND
  23081. LX6 12 RIGHT JUSTIFY BIAS
  23082. URD3 LX5 12
  23083. BX5 X5+X6
  23084. SB7 B7-1 DECREMENT COUNTER
  23085. NZ B7,URD2 IF NOT END OF CONVERSION
  23086. BX6 X5
  23087. SA6 B2 PUT TASK ORDINAL INTO *TRD*
  23088. SB2 B2+1 INCREMENT POINTER
  23089. EQ URD1 PROCESS NEXT TRANSACTION
  23090.  
  23091. URD4 SX7 B0+
  23092. SA7 B2+ ZERO OUT LAST WORD
  23093. SB3 B2+
  23094. RJ RSP RESTORE REGISTERS B2 AND B7
  23095. EQ URDX RETURN
  23096.  
  23097. URD5 SB3 B0+ TASK NOT FOUND
  23098. RJ RSP RESTORE REGISTERS B2 AND B7
  23099. EQ URDX RETURN
  23100.  
  23101. * DIRECTORY TOO LONG.
  23102.  
  23103. URD6 SB5 URDB
  23104. EQ URD8 ISSUE DAYFILE MESSAGE
  23105.  
  23106. * INCORRECT *TRD* HEADER.
  23107.  
  23108. URD7 SB5 URDC
  23109.  
  23110. * ISSUE DAYFILE MESSAGE.
  23111.  
  23112. URD8 SB2 1RZ DISPLAY CODE SEARCH CHARACTER
  23113. SA1 TL
  23114. MX0 42
  23115. BX1 X0*X1 LIBRARY NAME TO INSERT
  23116. SB3 DAYB
  23117. SB5 -B5
  23118. RJ SNM SET NAME IN MESSAGE
  23119. MESSAGE DAYB ISSUE DAYFILE MESSAGE
  23120. SB3 B0+
  23121. RJ RSP RESTORE REGISTERS B2 AND B7
  23122. EQ URDX RETURN
  23123.  
  23124. URDA VFD 60/0LTRD *TRD* HEADER
  23125. URDB DATA C* TRANSACTION DIRECTORY TOO LONG - ZZZZZZZ.*
  23126. URDC DATA C* INCORRECT TRANSACTION DIRECTORY HEADER - ZZZZZZZ.*
  23127. URDD BSS 1 DIFFERENCE BETWEEN NEW AND OLD DIRECTORY
  23128. PBL SPACE 4,20
  23129. ** PBL - POTENTIALLY BLOCKED TASKS DURING LIBRARY UPDATE.
  23130. *
  23131. * THIS ROUTINE DETECTS POTENTIALLY BLOCKED TASKS DURING
  23132. * A LIBRARY UPDATE. IF A BLOCK IS DETECTED, THE UPDATE IS
  23133. * REJECTED.
  23134. *
  23135. * ENTRY (X5) = FWA OF NEW DIRECTORY, INCLUDING HEADER.
  23136. * (PCMDH) = NAME OF NEW DIRECTORY.
  23137. *
  23138. * EXIT (B7) = 0, IF NO BLOCKED TASKS DETECTED.
  23139. * = 1, IF BLOCKED TASKS DETECTED.
  23140. * (X0) = RESTORED.
  23141. * (X5) = SAME AS ENTRY.
  23142. * (MINXT) = MINIMUM SIZE OF TRANSIENT TASK AREA.
  23143. *
  23144. * USES A - 1, 3, 4, 5, 6, 7.
  23145. * X - ALL.
  23146. * B - 3, 5.
  23147. *
  23148. * CALLS DBC, DBN, RTD.
  23149.  
  23150.  
  23151. PBL SUBR ENTRY/EXIT
  23152. BX6 X5 SAVE REGISTERS
  23153. BX7 X0
  23154. SA6 PBLA
  23155. SA7 PBLB
  23156. SX7 X5+4
  23157. SA7 DPBK FWA OF NEW DIRECTORY
  23158. SA1 CMRFL SAVE VALUES OF OLD ACCUMULATORS
  23159. BX7 X1
  23160. BX6 X6-X6
  23161. SA7 PBLC
  23162. SA1 CMRPF
  23163. BX7 X1
  23164. SB5 B0 INITIALIZE TASK COUNTER
  23165. SA7 PBLD
  23166. SA6 CMRFL INITIALIZE ACCUMULATOR
  23167. SA6 CMRPF INITIALIZE ACCUMULATOR
  23168. SA1 MFL MFL OF TAF
  23169. BX6 X1
  23170. SA6 DPBJ
  23171.  
  23172. * FIRST PASS THROUGH TASK LIBRARY DIRECTORIES.
  23173.  
  23174. SA1 VTFL NAME OF SYSTEM TASK LIBRARY
  23175. MX2 42
  23176. BX6 X2*X1
  23177. SB3 -1 READ ALL TLD ENTRIES
  23178. TA5 0,VTLD EXAMINE SYSTEM TLD
  23179. SA1 DPBK FWA OF NEW DIRECTORY
  23180. SA3 PCMDH NAME OF UPDATED LIBRARY
  23181. IX2 X3-X6
  23182. NZ X2,PBL1 IF LIBRARY NOT UPDATED
  23183. BX6 X3
  23184. SA6 DPBL NAME OF UPDATED LIBRARY
  23185. SA5 X1+
  23186. PBL1 RJ RTD RETURN TASK LIBRARY DATA
  23187. TA4 0,VEDT GET ADDRESS OF FIRST TLD
  23188. BX0 X4 CHECK EDT COUNT
  23189. LX0 -18
  23190. SX0 X0+
  23191. ZR X0,PBL5 IF NO MORE EDT-S
  23192. PBL2 SX0 X4 SAVE LINK TO NEXT HEADER
  23193. SA5 A4+4 GET FWA OF TLD IN WORD 5
  23194. AX5 18
  23195. ZR X5,PBL4 IF LIBRARY NOT ATTACHED
  23196. SA5 X5+ SET UP SEARCH ADDRESS
  23197. SA3 A5-1
  23198. MX2 42
  23199. BX6 X2*X3
  23200. SA1 DPBK FWA OF NEW DIRECTORY
  23201. SA3 PCMDH NAME OF UPDATED LIBRARY
  23202. IX2 X3-X6
  23203. NZ X2,PBL3 IF LIBRARY NOT UPDATED
  23204. BX6 X3
  23205. SA6 DPBL NAME OF UPDATED LIBRARY
  23206. SA5 X1+
  23207. PBL3 SB3 -1 READ ALL TLD ENTRIES
  23208. RJ RTD RETURN TASK LIBRARY DATA
  23209. PBL4 ZR X0,PBL5 IF NO MORE DIRECTORIES
  23210. SA4 X0+ RESTORE LINK TO NEXT HEADER
  23211. EQ PBL2 PROCESS NEXT TLD
  23212.  
  23213. * LOOK FOR POTENTIAL BLOCKS.
  23214.  
  23215. PBL5 RJ DBC DETECT BLOCKS IN CM RESIDENT TASKS
  23216. RJ DBN DETECT BLOCKS IN NON CM RESIDENT TASKS
  23217. NZ B7,PBL6 IF BLOCKED TASKS DETECTED
  23218. SA5 PBLA RESTORE REGISTERS
  23219. SA4 PBLB
  23220. BX0 X4
  23221. EQ PBLX RETURN
  23222.  
  23223. * RESTORE ACCUMULATORS IF ERROR AND RETURN.
  23224.  
  23225. PBL6 SA1 PBLC RESTORE CMRFL
  23226. SA3 PBLD RESTORE CMRPF
  23227. BX6 X1
  23228. BX7 X3
  23229. SA6 CMRFL
  23230. SA7 CMRPF
  23231. EQ PBLX RETURN
  23232.  
  23233. PBLA BSS 1 (X5)
  23234. PBLB BSS 1 (X0)
  23235. PBLC BSS 1 OLD (CMRFL)
  23236. PBLD BSS 1 OLD (CMRPF)
  23237. SPACE 4,10
  23238. SPACE 4,10
  23239. ** COMMON DECKS.
  23240.  
  23241.  
  23242. *CALL COMKDPB
  23243.  
  23244. ENDOVL
  23245.  
  23246. ULD0 EQU /"PROD""M."/ULD0
  23247. TRANOVL (TERMINAL INITIALIZATION.)
  23248. CIN SPACE 4,10
  23249. ** CIN - COMMUNICATION SUBSYSTEM INITIALIZATION.
  23250.  
  23251.  
  23252. CIN BSS 0
  23253. ENTRY CIN
  23254.  
  23255. TX7 0,VTST START OF TERMINAL STATUS TABLE
  23256. SA7 CINA
  23257.  
  23258. * EXAMINE THE STATUS OF EACH TERMINAL AND REINTIALIZE FOR ANY
  23259. * TERMINAL IN A STATE OF DEPENDENCY FOR ACTION BY THE
  23260. * COMMUNICATION SUBSYSTEM.
  23261.  
  23262. CIN1 SA1 CINA
  23263. TB5 X1+TSTLLE-1,-VTST,LWA
  23264. ZR B5,LOVL IF ALL ENTRIES PROCESSED
  23265. SX6 X1+TSTLLE NEXT TERMINAL TO PROCESS
  23266. SA6 CINA
  23267. SX2 B1
  23268. SA5 X6 FIRST WORD OF TERMINAL STATUS TABLE ENTRY
  23269. LX2 TSRBS-0
  23270. MX4 1
  23271. LX5 59-TSLIS
  23272. PL X5,CIN1 IF TERMINAL NOT LOGGED IN
  23273. BX5 -X4*X5 CLEAR LOGGED IN BIT
  23274. LX5 TSLIS-59
  23275. LX4 TSAUS-59
  23276. BX5 -X4*X5 CLEAR USER ACTIVE FIELD
  23277. BX6 X5
  23278. SA6 A5
  23279.  
  23280. * SET THE RECOVERY BIT FOR ALL LOGGED IN TERMINALS AND FOR ALL
  23281. * POLLED TERMINALS.
  23282.  
  23283. CIN2 BX7 X5+X2 SET USER RECOVERY BIT
  23284. .A IFEQ IPTAR,1 IF AUTOMATIC RECOVERY INSTALLED
  23285. BX3 X5 CHECK FOR RECOVERABLE TRANSACTION
  23286. LX4 TSARS-59-TSAUS+59
  23287. LX3 59-TSNRS
  23288. PL X3,CIN2.1 IF NO RECOVERABLE TRANSACTION RUNNING
  23289. LX3 59-59-59+TSNRS SET RECOVERY REQUIRED
  23290. BX7 X4+X3
  23291. SA3 A5+B1 WORD 2 OF *TST* ENTRY
  23292. LX4 TSCPS-59-TSARS+59
  23293. BX6 X3+X4
  23294. SA6 A3 SET CONNECTION POSTPONE FLAG
  23295. CIN2.1 BX7 X7+X2
  23296. .A ENDIF
  23297. TX1 A5,-VTST COMPUTE TERMINAL ORDINAL
  23298. SA7 A5
  23299. SX2 TSTLLE
  23300. SB3 B7
  23301. IX0 X1/X2
  23302. SB7 B3
  23303. SB5 B0
  23304. MX6 12
  23305. SA4 A5+TSIWW INPUT WANTED STATUS
  23306. MX3 TSIWN
  23307. LX4 59-TSIWS
  23308. PL X4,CIN1 IF NOT IN INPUT WANTED STATE
  23309.  
  23310. * FOR ALL TERMINALS WITH TASKS WAITING FOR INPUT, CLEAR THE
  23311. * TERMINAL WAITING FOR INPUT STATUS AND SET THE ROLLIN DELAY
  23312. * TIME TO ZERO.
  23313.  
  23314. BX7 -X3*X4 CLEAR WAIT INPUT STATUS
  23315. LX7 59-59-59+TSIWS
  23316. LX6 -30
  23317. SA7 A4
  23318. LX5 18
  23319. CIN3 RJ SRO SEARCH ROLLOUT TABLE
  23320. ZR B5,CIN1 IF END OF TABLE
  23321. SA2 B5
  23322. BX3 X6*X2
  23323. LX2 59-58
  23324. PL X2,CIN3 IF NOT A WAIT FOR INPUT ROLLOUT ENTRY
  23325. BX3 X3-X5
  23326. LX2 58-59
  23327. NZ X3,CIN3 IF NO MATCH ON TERMINAL ORDINAL
  23328. MX7 RTTLN
  23329. LX7 -6
  23330. BX7 -X7*X2 CLEAR ROLLIN TIME TO FORCE A ROLLIN
  23331. SA7 A2+
  23332. EQ CIN3
  23333.  
  23334. CINA BSS 1 CURRENT TERMINAL TABLE ENTRY
  23335.  
  23336. ENDOVL
  23337.  
  23338. L. SET * END OF LAST OVERLAY
  23339. L.D MAX L.,L.D
  23340.  
  23341. LAST EQU L.D LWA+1 OF TRANEX OVERLAY LOAD AREA
  23342. "PROD"1 TTL "PROD"1 - INITIALIZATION - VER "VERT".
  23343. EJECT
  23344. QUAL "PROD"1
  23345. IDENT "PROD"1,INIT,INIT,0,0 INITIALIZATION.
  23346. *COMMENT TAFNAM - EXECUTIVE INITIALIZATION.
  23347. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  23348. SPACE 4
  23349. *** *TAF1* - TRANSACTION FACILITY EXECUTIVE INITIALIZATION.
  23350. * J. R. HOGUE CSDD 1972
  23351. * L. A. BOELTER ASD 75/01/20. TOTAL DATA MANAGER INITIALIZATION.
  23352. * G. W. PROPP / J. R. HOGUE 75/10/01. TAF.
  23353. * M. M. CHEN. TAF/CDCS. 80/01/01.
  23354. SPACE 4
  23355. *** *TAF1* IS CALLED AFTER *TAFREC* COMPLETES EXECUTION.
  23356. * IT INITIALIZES POINTERS, BUILDS TABLES AND ALLOCATES
  23357. * BUFFERS USED BY *TAF* AND ITS DATA MANAGERS. IT ALSO
  23358. * ATTACHES FILES REQUIRED BY *TAF* AND ITS DATA MANAGERS.
  23359. * WHEN COMPLETE THE MAIN *TAF* OVERLAY IS LOADED AND EXECUTED.
  23360. *
  23361. * *TAF1* DETERMINES WHICH DATA MANAGERS ARE TO BE LOADED
  23362. * FROM THE *DMS* STATEMENTS IN THE TAF CONFIGURATION FILE.
  23363. *
  23364. * *TAF1* LOADS THE APPLICATION INTERFACE PROGRAM (AIP).
  23365. *
  23366. * *TAF1* BUILDS AN *INITL* CALL TO *TOTAL* FOR EACH DATA BASE
  23367. * SPECIFIED ON A *DMS(TOTAL,ON,...)* STATEMENT AND PLACE
  23368. * THE INFORMATION FROM THE XXJ FILE INTO THE ASSOCIATED *EDT*.
  23369. *
  23370. * IF OVERFLOW OF THE INITIALIZATION CODE OCCURS,
  23371. * THE MESSAGE * OVERFLOW DURING INITIALIZATION.*
  23372. * IS ISSUED AND THE INITIALIZATION IS ABORTED. CURRENTLY,
  23373. * *IFL=* IS AN ASSEMBLY OPTION, AND WILL HAVE TO BE INCREASED
  23374. * IF INITIALIZATIONS ARE ABORTED AFTER ADDING NEW DATA BASES
  23375. * TO THE *DMS* STATEMENT IN *TCF*.
  23376.  
  23377.  
  23378. *CALL,COMKIPR
  23379. SPACE 4,10
  23380. LIST X
  23381. *CALL COMKTIF
  23382. LIST -X
  23383. INIT TITLE INITIALIZATION.
  23384. ORG IFL=
  23385. INIT SB1 1
  23386. BX7 X7-X7
  23387. SA7 B0
  23388. GETJCR ATTB
  23389. PDATE PDATE SET PACKED TIME AND DATE
  23390. GETPFP STIA GET CURRENT FAMILY
  23391. SA1 STIA
  23392. BX6 X1
  23393. SA6 INITQ SAVE CURRENT FAMILY NAME
  23394. MEMORY CM,,R,FFL= SET INITIAL FL
  23395.  
  23396. * LOAD INITIALIZED LOW CM VALUES FROM TIF.
  23397.  
  23398. READ TIF INITIATE READ
  23399. READO TIF READ INITIALIZATION STATUSES
  23400. SA6 INITA
  23401. READW TIF,VLOCS,VLOCL LOAD LOW CM VALUES
  23402. SA1 INITA
  23403. LX1 59-TIRFS
  23404. NG X1,INIT3 IF RESTART
  23405. LX1 59-TICRS-59+TIRFS
  23406. NG X1,INIT2 IF TO INITIALIZE *CRM* RECOVERY FILES
  23407. SA2 VREC SET *CRM* RECOVERY FLAG
  23408. MX7 1
  23409. BX7 X7+X2
  23410. SA7 A2+
  23411.  
  23412. * SET UP INITIAL VALUES, VARIABLE TABLES AND BUFFERS.
  23413.  
  23414. INIT2 SX6 STAT1 FWA OF TAF STATISTICS
  23415. SA6 VSTAT1
  23416. SX6 RTLW REQUESTED TASK LIST
  23417. SA6 VRTLW
  23418. MX7 0
  23419. SA7 VINT CLEAR INITIALIZATION FLAGS
  23420. SA7 VTOT
  23421. SA7 VSND CLEAR NAM APPLICATION BLOCK NUMBER
  23422. SA7 VAAM CLEAR ADVANCED ACCESS METHODS
  23423. SA7 VAMB CLEAR POINTER TO AAM BUFFER
  23424. SA7 VAAQ CLEAR POINTERS TO *AAM* QUEUES
  23425. SA7 VBCT CLEAR ADDRESS OF BATCH CONCURRENCY TABLE
  23426. SA7 VNBCT CLEAR NUMBER OF ENTRIES
  23427. INIT3 RJ PTF PROCESS *TAF* CONFIGURATION FILE
  23428.  
  23429. * REQUEST EXTENDED MEMORY FIELD LENGTH.
  23430.  
  23431. SA2 VECS
  23432. ZR X2,INIT7 IF NO EXTENDED MEMORY REQUESTED
  23433. LX2 59-29 SET EXTENDED MEMORY FIELD LENGTH
  23434. BX6 X2
  23435. SA6 OBUF STATUS WORD
  23436. MEMORY ECS,OBUF,R,,NABORT
  23437. SA1 VECS READ OPERATOR REQUEST
  23438. SA2 OBUF READ RESPONSE
  23439. MX0 30
  23440. LX1 59-29
  23441. BX2 X0*X2
  23442. IX6 X1-X2
  23443. ZR X6,INIT7 IF EXTENDED MEMORY REQUEST WAS ASSIGNED
  23444. MESSAGE INITH * REQUESTED EXTENDED MEMORY NOT AVAILABLE*
  23445. ABORT
  23446.  
  23447. INIT7 SX7 LAST
  23448. SA7 VNACP
  23449.  
  23450. * LOAD APPLICATIONS INTERFACE PROGRAM.
  23451.  
  23452. LOADER INITO LOAD NAM *AIP*
  23453. MX0 2
  23454. SA1 INITO+2
  23455. BX2 X0*X1
  23456. SB1 1
  23457. SA1 LWPR LAST WORD OF *AIP* LOAD
  23458. NZ X2,DIE23 IF ERROR ON LOAD
  23459. SX1 X1-AFWA
  23460. RJ COD CONVERT OCTAL TO DISPLAY
  23461. SB2 1RX REPLACEMENT CHARACTER
  23462. SB5 MSGAG FWA OF MESSAGE
  23463. BX1 X4
  23464. RJ SNM SET NAME IN MESSAGE
  23465. MESSAGE MSGAG,3 * XXXXXX WORDS REQUIRED FOR AIP LOADING*
  23466. SA1 LWPR LWA OF LOAD
  23467. SX7 X1-TFWA
  23468. PL X7,DIE25 IF *AIP* TOO LARGE FOR LOADING
  23469. MESSAGE MSGAH,3 *AIP* SUCCESSFULLY LOADED.*
  23470. SA1 TDBID
  23471. NG X1,INIT14 IF NOT TO LOAD *TOTAL*
  23472.  
  23473. * ATTACH TOTAL BINARIES.
  23474.  
  23475. INIT10 ATTACH TOTALF
  23476. RJ CER CHECK FOR ATTACH ERROR
  23477. NZ X1,DIE18 IF ERROR ON ATTACH
  23478.  
  23479. * GET DATA BASE NAMES FOR TOTAL.
  23480.  
  23481. SB3 INITK+2 START OF LDREQS FOR DBMODS
  23482. INIT11 SA1 TDBID+3 OUT
  23483. SA2 A1-B1 IN
  23484. SA3 X1 DBMOD NAME
  23485. BX4 X1-X2
  23486. SX6 X1+B1 ADVANCE OUT
  23487. ZR X4,INIT12 IF BUFFER IS EMPTY
  23488. SA6 A1
  23489. SX4 1
  23490. BX6 X3+X4 FILE TO ATTACH
  23491. SA6 TOTFILE
  23492. ATTACH TOTFILE
  23493. RJ CER CHECK FOR ATTACH ERROR
  23494. NZ X1,DIE19 IF ERROR ON ATTACH OF DBMOD
  23495.  
  23496. * BUILD LDREQ TABLE FOR DATA BASE NAMES.
  23497.  
  23498. SA1 TOTFILE DBMOD NAME
  23499. MX0 42
  23500. SX2 3
  23501. BX1 X0*X1
  23502. BX7 X1+X2 LDREQ WORD
  23503. SA2 INITK INCREASE WORD COUNT OF TABLE
  23504. SA7 B3 STORE NAME IN LIST
  23505. SX6 B1
  23506. SB3 B3+B1 NEXT ADDRESS IN LDREQ TABLE
  23507. LX6 36
  23508. IX6 X2+X6
  23509. SA6 A2
  23510. EQ INIT11 CONTINUE
  23511.  
  23512. * LOAD TOTAL AND TOTAL DATA BASE DESCRIPTOR BINARIES.
  23513.  
  23514. INIT12 SA1 VNACP START ADDRESS FOR LOAD
  23515. SA2 INITJ START OF LIST FOR LOADU
  23516. MX0 18
  23517. LX1 30
  23518. LX0 -12
  23519. BX2 -X0*X2
  23520. BX6 X1+X2
  23521. SA1 TDBID+1 RESET OUT
  23522. SX7 X1
  23523. SA7 TDBID+3
  23524. SA1 INITL MOVE LDREQ FOR SATISFY
  23525. SA6 A2
  23526. SA2 A1+B1
  23527. BX6 X1
  23528. BX7 X2
  23529. SA6 B3
  23530. SA7 B3+B1
  23531. LOADER INITJ
  23532.  
  23533. * CHECK FOR LOADU ERRORS.
  23534.  
  23535. SA1 INITJ+2
  23536. SB1 1
  23537. MX0 2
  23538. BX2 X0*X1
  23539. NZ X2,DIE20 IF LOADU ERRORS
  23540.  
  23541. * MODIFY CALLS TO *INTOT.*
  23542.  
  23543. MX0 -18
  23544. BX6 -X0*X1 TRANSFER ADDRESS
  23545. SX7 B1
  23546. LX6 30
  23547. LX7 -6
  23548. BX6 X6+X7 RJ INSTRUCTION
  23549. SA6 INITU
  23550. SA1 INITM PARAMETER LIST FOR INTOT.
  23551. SA6 INIT17
  23552. RJ * VOID THE INSTRUCTION STACK
  23553. INITU RJ * INITIALIZE *INTOT.* FOR *TAF1*
  23554. * RJ =XINTOT. (CALL INTOT.)
  23555.  
  23556. * MODIFY THE RJ TO TOTAL INSTRUCTION.
  23557.  
  23558. SB1 1
  23559. SA6 VTOT TOTAL ENTRY POINT ADDRESS FROM INTOT.
  23560. SA1 XXJ24
  23561. MX0 18
  23562. LX6 30
  23563. LX0 -12
  23564. BX1 -X0*X1
  23565. BX6 X1+X6
  23566. SA6 A1
  23567.  
  23568. * RESET START OF EXECUTIVE-S TABLE ADDRESS.
  23569.  
  23570. SA1 LWPR LAST WORD ADDRESS OF PREVIOUS LOAD
  23571. SX6 X1+ LWA+1 OF LOAD
  23572. SA6 VNACP
  23573. MESSAGE MSGBC,3 * TOTAL DATA MANAGER SUCCESSFULLY LOADED.*
  23574.  
  23575. * CHECK IF *AAMI* IS TO BE LOADED.
  23576.  
  23577. INIT14 MX3 1
  23578. SA2 VREC GET RECOVERY FLAG
  23579. BX4 X3*X2
  23580. BX6 -X3*X2 CLEAR *CRM* RECOVERY BIT
  23581. SA1 CDBID
  23582. SA6 A2
  23583. NG X1,INIT16 IF NOT TO LOAD *CRM*
  23584. PL X4,INIT15 IF NO *CRM* RECOVERY
  23585. BX6 X6+X3 RESTORE *CRM* RECOVERY BIT
  23586. SA6 A2
  23587. INIT15 SA1 VNACP START OF ADDRESS FOR LOAD
  23588. SA2 INITS START OF LIST FOR LOADU
  23589. MX0 18
  23590. LX1 30
  23591. LX0 -12
  23592. BX2 -X0*X2
  23593. BX6 X1+X2
  23594. SA6 A2
  23595. LOADER INITS
  23596.  
  23597. * CHECK FOR LOADU ERRORS.
  23598.  
  23599. SB1 1
  23600. SA1 INITS+2
  23601. MX0 2
  23602. BX2 X0*X1
  23603. NZ X2,DIE28 IF LOADU ERRORS
  23604. SA1 INITT+1 ENTRY POINT FOR *IAM*
  23605. SA2 CRMA RJ TO *IAM*
  23606. LX1 30
  23607. BX6 X1+X2
  23608. SA6 CRMA
  23609. SA2 A1+B1 *AMI* ENTRY POINT
  23610. BX6 X1+X2
  23611. SX7 IFL= LWA OF MEMORY FOR TABLES
  23612. SA6 VAAM
  23613. SA2 A2+B1 *AMIQ* ENTRY POINT
  23614. LX2 24
  23615. SA3 A2+B1 *AMOQ* ENTRY POINT
  23616. BX6 X2+X3
  23617. SA6 VAAQ
  23618. SA7 TTIP+TILW
  23619. SA1 LWPR
  23620. SX6 X1+
  23621. SA6 VNACP
  23622. MESSAGE MSGBD,3 * CRM DATA MANAGER SUCCESSFULLY LOADED.*
  23623.  
  23624. * LOCATE VARIABLE TABLES AND BUFFERS SET BY INITIALIZATION.
  23625.  
  23626. INIT16 RJ SETL DETERMINE VARIABLE BUFFER/TABLE LOCATIONS
  23627. SA1 INITN PARAMETER LIST FOR INTOT.
  23628. INIT17 RJ INIT17 INITIALIZE INTOT. FOR TAF
  23629. * RJ =XINTOT. (CALL INTOT.)
  23630. SX7 1
  23631. SB1 1
  23632. SA7 VINT TRANEX1 COMPLETE FLAG
  23633. REWIND TIF,R
  23634. WRITEW TIF,INITA,1 WRITE STATUS WORD
  23635. WRITEW TIF,VLOCS,VLOCL WRITE LOW CM POINTERS TO *TIF*
  23636. WRITER TIF,R FLUSH BUFFER
  23637. RETURN TOTALF,R
  23638. SA1 INITA
  23639. MX7 -TIRFN
  23640. BX6 -X7*X1 RESTART BIT
  23641. SA2 VREC
  23642. BX3 -X7*X2
  23643. MX7 1
  23644. BX6 X3+X6
  23645. SX1 IPTAR TAF AUTOMATIC RECOVERY FLAG
  23646. BX2 X7*X2 MASK OFF *CRM* RECOVERY BIT
  23647. LX6 24
  23648. BX2 X2+X1
  23649. BX6 X6+X2 RECOVERY FLAG FOR MAIN PROGRAM
  23650. SA6 A2
  23651. OVERLAY INITC,,S LOAD MAIN PROGRAM
  23652.  
  23653.  
  23654. INITA CON 0 *TIF* INITIALIZATION STATUSES
  23655.  
  23656. INITB CON 0 INITIALIZATION FIELD LENGTH
  23657.  
  23658. INITC VFD 60/0L"PROD"
  23659.  
  23660. INITG BSS 0 JOURNAL FILE 0 INITIALIZATION FET
  23661. JOUR0 FILEB IBUF,IBUFL,FET=10,EPR
  23662.  
  23663. INITH DIS ,* REQUESTED EXTENDED MEMORY NOT AVAILABLE.*
  23664.  
  23665. INITI VFD 60/0L"PROD"0
  23666.  
  23667. * PARAMETER LIST FOR LOADU FOR LOADING TOTAL.
  23668.  
  23669. INITJ LDREQ BEGIN,LAST,IFL=,0,0
  23670. LDREQ MAP,N
  23671. INITK BSS 0 START OF FILE LIST
  23672. LDREQ LOAD,(TOTALE/R)
  23673. BSSZ TMAXDB+1
  23674. INITL LDREQ SATISFY,(TRANLIB)
  23675.  
  23676. * PARAMETER LIST FOR *INTOT.* FOR *TAF1*.
  23677.  
  23678. INITM VFD 60/IEOQ ENTER OUTPUT QUEUE
  23679. VFD 60/IFAR ATTACH FILE
  23680. VFD 60/IGRA RETURN RA, FL AND DB ID OF TAFXXX1
  23681. VFD 60/IRIQ RETURN QUEUE ENTRY
  23682.  
  23683. * PARAMETER LIST FOR *INTOT.* FOR TAF.
  23684.  
  23685. INITN VFD 60/EOQ ENTER TOTAL OUTPUT QUEUE
  23686. VFD 60/FAR ATTACH FILE
  23687. VFD 60/GRA GET RA, FL AND DATA BASE IDENTIFIER
  23688. VFD 60/RIQ READ TOTAL INPUT QUEUE
  23689.  
  23690. * PARAMETER LIST FOR LOADU FOR LOADING NAM AIP.
  23691.  
  23692. INITO LDREQ BEGIN,AFWA,ALWA
  23693. LDREQ OMIT,(PRINT,LIST,ENDL)
  23694. LDREQ MAP,N
  23695. .C IFEQ DBUG,0
  23696. LDREQ LIBLOAD,NETIOD,(NETCHEK,NETDBG,NETGET,NETGETF,NETGETL,N
  23697. ,ETOFF,NETON,NETPUT,NETSETP)
  23698. LDREQ SATISFY,(NETIOD)
  23699. .C ELSE
  23700. LDREQ LIBLOAD,NETIO,(NETCHEK,NETGET,NETGETF,NETGETL,NETOFF,NE
  23701. ,TON,NETPUT,NETSETP)
  23702. LDREQ SATISFY,(NETIO)
  23703. .C ENDIF
  23704. LDREQ SATISFY
  23705. INITP BSS 0 START OF ENTRY POINTS
  23706. .D IFEQ DBUG,0
  23707. LDREQ ENTRY,(NETCHEK,NETDBG,NETGET,NETGETF,NETGETL,NETOFF,NET
  23708. ,ON,NETPUT,NETSETP)
  23709. .D ELSE
  23710. LDREQ ENTRY,(NETCHEK,NETGET,NETGETF,NETGETL,NETOFF,NETON,NETP
  23711. ,UT,NETSETP)
  23712. .D ENDIF
  23713. INITPLE EQU *-INITP-1 NUMBER OF ENTRY POINTS
  23714. ERRNG NCTL-INITPLE NCT MUST HAVE ENOUGH ROOM FOR NAM
  23715. * ENTRY POINTS.
  23716. LDREQ END
  23717. INITQ CON 0 RUNNING FAMILY NAME
  23718. INITS LDREQ BEGIN,LAST,IFL=,0,0
  23719. LDREQ MAP,BSEX,MAP
  23720. LDREQ SUBST,(CMM.MEM-CMM,RM$SYS=-RM$TSYS,SETUP.-TSE)
  23721. LDREQ LIBLOAD,TRANLIB,(IAM,AMI,AMIQ,AMOQ)
  23722. LDREQ SATISFY,(AAMLIB,BAMLIB)
  23723. LDREQ SATISFY
  23724. INITT BSS 0 START OF ENTRY POINTS
  23725. LDREQ ENTRY,(IAM,AMI,AMIQ,AMOQ)
  23726. LDREQ END
  23727. EDT SPACE 4,69
  23728. ** EDT - ELEMENT DESCRIPTION TABLE.
  23729. *
  23730. *T VEDT1 12/ DB,12/ ,18/EDTCNT,18/ LINK
  23731. *T,VEDT2 6/JORCNT,18/ ,18/JORADR,18/TRCADR
  23732. *T,VEDT3 42/ USERNM,18/USINDX
  23733. *T,VEDT4 42/ PASSWD,18/
  23734. *T,VEDT5 24/0,18/TLDFWA,18/TLDLWA
  23735. *T,VEDT6 42/ PACNAM,12/ DEV,6/ UN
  23736. *T,VEDT7 42/FAMILY,18/
  23737. *
  23738. * WORD 1.
  23739. * DB - DATA BASE NAME.
  23740. * EDTCNT - NUMBER OF EDT-S (PRESENT ONLY IN FIRST HEADER).
  23741. * LINK - POINTER TO NEXT EDT.
  23742. *
  23743. * WORD 2.
  23744. * JORCNT - NUMBER OF JOURNAL FILES (MAXIMUM OF 3 PER DB).
  23745. * JORADR - ADDRESS OF FIRST JOURNAL FILE FET.
  23746. * TRCADR - ADDRESS OF TRACE FILE FET.
  23747. *
  23748. * WORD 3.
  23749. * USERNM - USER NAME (USED TO ATTACH MULTIPLE TLD-S).
  23750. * USINDX - USER INDEX (TO ATTACH JOURNAL AND
  23751. * DATA BASE FILES).
  23752. *
  23753. * WORD 4.
  23754. * PASSWD - PASSWORD.
  23755. *
  23756. * WORD 5.
  23757. * TLDFWA - FWA OF DBTASKL (NAME OF PARTICULAR TLD).
  23758. * TLDLWA - LWA OF DBTASKL.
  23759. *
  23760. * WORD 6.
  23761. * PACNAM - PACK NAME OF AUXILIARY DEVICE ON WHICH THE
  23762. * TASK LIBRARY RESIDES.
  23763. * DEV - DEVICE TYPE THE FILE WILL BE RESIDING
  23764. * ON (DI,DJ,...,).
  23765. * UN - NUMBER OF UNITS OF THE TYPE SPECIFIED IN THE
  23766. * DEVICE TYPE FIELD.
  23767. *
  23768. * WORD7.
  23769. * FAMILY - USER FAMILY NAME.
  23770.  
  23771.  
  23772. * BUFFER SPACE FOR ELEMENT DESCRIPTION TABLE.
  23773.  
  23774. DB FILEC DBBF,DBBFL EDT FILE FET
  23775. DBBF EQU *
  23776. DBBFL EQU 101B
  23777. BSS DBBFL
  23778. DBBF1 EQU *
  23779. DBBF2 BSS 14
  23780. EDFL EQU 13 EDT FET LENGTH
  23781.  
  23782. JFLG CON 0 JOURNAL FLAG
  23783. INTD BSS 1 CURRENT EDT ADDRESS
  23784. TITLE TCF PROCESSOR.
  23785. PTF SPACE 4,35
  23786. ** PTF - PROCESS TAF CONFIGURATION FILE (*TCF*).
  23787. *
  23788. * PTF READS THE *TCF* AND FOR EACH DIRECTIVE CALLS AN
  23789. * APPROPRIATE SUBPROCESSOR TO HANDLE THE DIRECTIVE. THE
  23790. * *TCF* HAS ALREADY BEEN PROCESSED IN *TAFREC*, SO ONLY THOSE
  23791. * DIRECTIVES NOT FULLY PROCESSED IN *TAFREC* ARE PROCESSED
  23792. * HERE.
  23793. *
  23794. * ENTRY NONE.
  23795. *
  23796. * EXIT TO *DIE15* IF INCORRECT *TCF* ENTRY.
  23797. * TO *DIE16* IF TCF/DM LOAD FLAG CONFLICT.
  23798. *
  23799. * USES A - 1, 2, 3, 4, 5, 6, 7.
  23800. * B - 3, 4, 5, 6.
  23801. * X - ALL.
  23802. *
  23803. * MACROS ABORT, MESSAGE, READ, READC, REWIND.
  23804.  
  23805.  
  23806. PTF SUBR ENTRY/EXIT
  23807. REWIND TCF,R
  23808. READ TCF INITIATE READ
  23809. SX6 -B1 INITIALIZE DATA MANAGER LOAD FLAG
  23810. SA6 CDBID
  23811. SA6 TDBID
  23812.  
  23813. * PROCESS TCF.
  23814.  
  23815. PTF1 READC TCF,PTFC,PTFCL READ STATEMENT IMAGE
  23816. NZ X1,PTF5 IF NO MORE ENTRIES
  23817. SB7 PTFD FWA TO UNPACK STATEMENT
  23818. SA5 PTFC FIRST WORD TO UNPACK
  23819. RJ UPC UNPACK STATEMENT IMAGE
  23820. NZ X6,DIE15 IF ERROR ON TCF
  23821. MX3 42 MASK KEY WORD
  23822. SA1 PTFD
  23823. SA4 PTFA FWA OF KEY WORD TABLE
  23824. PTF2 ZR X4,DIE15 IF INCORRECT TCF ENTRY
  23825. BX5 X1-X4
  23826. BX2 X3*X5
  23827. SB3 X4
  23828. SA4 A4+B1
  23829. NZ X2,PTF2 IF NO MATCH
  23830. JP B3 PROCESS CORRESPOUNDING KEY WORDS
  23831.  
  23832. * PROCESS *DMS* STATEMENT.
  23833.  
  23834. PTF4 RJ DMS PROCESS *DMS* STATEMENT
  23835. EQ PTF1 READ NEXT STATEMENT
  23836.  
  23837. * CHECK FOR DUPLICATE DATA BASE NAME.
  23838.  
  23839. PTF5 SA1 TDBID+3 FIRST DATA BASE NAME TO CHECK
  23840. SA2 OTHER+2 LAST
  23841. SB3 X1
  23842. SB6 B0 ASSUME NO DUPLICATE
  23843. SB5 X2+B1
  23844. PTF6 EQ B3,B5,PTF8 IF DONE CHECKING
  23845. SA1 B3
  23846. SB4 B3+B1 NEXT
  23847. SB3 B3+B1
  23848. ZR X1,PTF6 IF NO ENTRY
  23849. PTF7 EQ B4,B5,PTF6 IF DONE CHECKING FOR ONE DATA BASE
  23850. SA2 B4 NEXT
  23851. SB4 B4+B1 ADVANCE POINTER
  23852. ZR X2,PTF7 IF NO ENTRY
  23853. IX3 X1-X2
  23854. NZ X3,PTF7 IF NOT THE SAME NAME
  23855. SA3 MSGBE+3 PUT DATA BASE NAME IN MESSAGE
  23856. MX6 -48
  23857. BX4 -X6*X3 CLEAR OLD NAME
  23858. BX7 X4+X1
  23859. SA7 A3
  23860. MESSAGE MSGBE,3 * DUPLICATE DATA BASE IN TCF - XX.*
  23861. SB6 B1 SET FLAG INDICATE DUPLICATE DATA BASE
  23862. SB3 B3+B1 CHECK NEXT DATA BASE
  23863. EQ PTF6 CONTINUE CHECKING
  23864.  
  23865. PTF8 ZR B6,PTFX IF NO DUPLICATE DATA BASE NAME
  23866. ABORT
  23867.  
  23868. * KEY WORD TABLE.
  23869. * PROCESS *DISPLAY*, *NETWORK*, *RECOVER*, *K-COMMANDS*
  23870. * AS NO-OPS.
  23871.  
  23872. PTF9 EQ PTF1 READ NEXT STATEMENT
  23873.  
  23874. PTF10 SA5 PTFD+B1 NUMBER OF BATCH CONCURRENT JOBS ALLOWED
  23875. RJ DXB CONVERT NUMBER TO BINARY
  23876. NZ X4,DIE15 IF ERRORS IN CONVERSION
  23877. SA6 VNBCT NUMBER OF BATCH CONCURRENT JOBS
  23878. EQ PTF1 READ NEXT STATEMENT
  23879.  
  23880. PTF11 SA1 VFMN
  23881. SX5 10B *SETPFP* FLAGS
  23882. BX6 X1+X5
  23883. SA6 STIA *SETPFP* CALL BLOCK
  23884. SETPFP STIA SET FAMILY
  23885. EQ PTF1 PROCESS NEXT COMMAND
  23886.  
  23887.  
  23888. PTFA VFD 42/0LDMS,18/PTF4 DATA MANAGER STATUS
  23889. VFD 42/0LDISPLAY,18/PTF9
  23890. VFD 42/0LNETWORK,18/PTF9
  23891. VFD 42/0LRECOVER,18/PTF9
  23892. VFD 42/0LTBCON,18/PTF10
  23893. VFD 42/0LK,18/PTF9
  23894. VFD 42/0LACCOUNT,18/PTF11 *ACCOUNT* COMMAND
  23895. VFD 42/0LUSER,18/PTF11 *USER* COMMAND
  23896. PTFB BSSZ 1 TABLE TERMINATOR
  23897. PTFC BSSZ 16 BUFFER FOR STATEMENT IMAGE
  23898. PTFCL EQU *-PTFC LENGTH OF BUFFER
  23899. VFD 60/0L. DUMMY TERMINATOR
  23900. PTFD BSSZ 80 BUFFER FOR UNPACK STATEMENT
  23901. DMS SPACE 4,25
  23902. ** DMS - PROCESS *DMS* STATEMENT.
  23903. *
  23904. * THE *DMS* STATEMENT IS USED TO INDICATE WHICH DATA
  23905. * MANAGERS ARE TO BE LOADED. FOR EACH DATA MANAGER LOADED, A
  23906. * RELATIONSHIP IS DEFINED BETWEEN THE DATA MANAGER AND THE
  23907. * DATA BASES THAT CAN USE IT.
  23908. *
  23909. * DMS(DM,SW,DB1,DB2,...,DBN)
  23910. *
  23911. * WHERE DM = CRM, TOTAL, OR OTHER.
  23912. * SW = *ON* OR *OFF*.
  23913. * DBI = DATA BASE NAMES.
  23914. *
  23915. * CRM MEANS *CYBER RECORD MANAGER*.
  23916. * TOTAL IS *TOTAL* DATA MANAGER AND *OTHER* MEANS
  23917. * THAT THE APPLICATION WILL USE THE *CDCS* DATA MANAGER OR
  23918. * ELSE NO DATA MANAGER.
  23919. *
  23920. * *ON* MEANS THE DATA BASE NAMES ON THE *DMS* STATEMENT ARE
  23921. * TO BE PUT IN THE DATA BASE BUFFER. *OFF* IMPLIES THE *DMS*
  23922. * WILL BE TREATED AS A COMMENT STATEMENT.
  23923. * THERE IS NO RESTRICTION ON THE NUMBER OF STATEMENTS
  23924. * FOR A DATA MANAGER.
  23925. *
  23926. * ENTRY (A1) = FWA OF PARAMETER TO CHECK.
  23927. *
  23928. * EXIT TO *DIE4* IF NO DATA BASE ID FOR DATA MANAGER.
  23929. * TO *DIE5* IF TOO MANY DATA BASE NAMES.
  23930. * TO *DIE15* IF INCORRECT TCF ENTRY.
  23931. * TO *DIE24* IF INCORRECT DATA BASE NAME.
  23932. *
  23933. * USES A - 1, 2, 3, 6, 7.
  23934. * B - 3, 5, 6.
  23935. * X - ALL.
  23936.  
  23937.  
  23938. DMS SUBR ENTRY/EXIT
  23939. MX3 42 MASK PARAMETER
  23940. SA1 A1+B1 FIRST PARAMETER
  23941. SA2 DMSA CHECK DATA MANAGERS
  23942. DMS1 SB3 X2 ADDRESS TO JUMP TO
  23943. BX4 X1-X2
  23944. SA2 A2+B1
  23945. BX5 X3*X4
  23946. ZR B3,DIE15 IF INCORRECT *DMS* PARAMETER
  23947. NZ X5,DMS1 IF NO MATCH
  23948. JP B3 PROCESS TRANSFERS
  23949.  
  23950. * PROCESS CYBER RECORD MANAGER.
  23951.  
  23952. DMS3 SB5 CDBID FIRST
  23953. EQ DMS6 PROCESS TRANSFER
  23954.  
  23955. * PROCESS *TOTAL* DATA MANAGER.
  23956.  
  23957. DMS4 SB5 TDBID FIRST
  23958. EQ DMS6 PROCESS TRANSFER
  23959.  
  23960. * PROCESS *OTHER* PARAMETER.
  23961.  
  23962. DMS5 SB5 OTHER FIRST
  23963.  
  23964. * TRANSFER DATA BASE NAMES.
  23965.  
  23966. DMS6 SA2 PTFD+2 SECOND WORD OF PARAMETERS
  23967. MX0 42
  23968. SA3 DMSB CHECK *ON* OR *OFF*
  23969. BX4 X2-X3
  23970. BX5 X0*X4
  23971. ZR X5,DMSX IF *OFF* - DO NOT TRANSFER DATA BASE NAMES
  23972. SA3 A3+B1 CHECK IF *ON*
  23973. BX4 X2-X3
  23974. BX5 X0*X4
  23975. SX7 B1
  23976. NZ X5,DIE15 IF NOT *ON*
  23977. SA1 B5+2 IN
  23978. SA2 B5+4 LIMIT
  23979. SA3 PTFD+3 FIRST DATA BASE
  23980. SX6 X1+
  23981. SA7 B5 SET DATA MANAGER LOAD FLAG
  23982. ZR X3,DIE4 IF NO DATA BASE ID FOR DATA MANAGER
  23983. MX0 -48
  23984. MX5 48
  23985. LX5 59-11
  23986. SB6 TDBID
  23987. NE B5,B6,DMS7 IF NOT *TOTAL*
  23988. MX5 12
  23989. DMS7 ZR X3,DMS8 IF AT END OF PARAMETERS
  23990. BX7 -X0*X3 CHECK FOR INCORRECT DATA BASE NAME
  23991. BX7 X5*X7
  23992. NZ X7,DIE24 IF INCORRECT DATA BASE NAME
  23993. IX4 X6-X2
  23994. BX7 X3
  23995. PL X4,DIE5 IF TOO MANY DATA BASES
  23996. SA7 X6
  23997. SA3 A3+B1 NEXT
  23998. SX6 X6+B1 INCREMENT POINTER
  23999. EQ DMS7 CONTINUE TO TRANSFER DATA BASE NAMES
  24000.  
  24001. DMS8 SA6 A1
  24002. EQ DMSX RETURN
  24003.  
  24004. * DATA MANAGER TABLE.
  24005.  
  24006. DMSA VFD 42/0LCRM,18/DMS3
  24007. VFD 42/0LTOTAL,18/DMS4
  24008. VFD 42/0LOTHER,18/DMS5
  24009.  
  24010. * DATA MANAGER STATUS SWITCH.
  24011.  
  24012. DMSB VFD 42/0LOFF,18/0 OFF
  24013. VFD 42/0LON,18/0 ON
  24014. SPACE 4
  24015. SETL TITLE DETERMINE AND SET VARIABLE TABLES/BUFFERS.
  24016. ** SETL DETERMINE LOCATION OF VARIABLE TABLES/BUFFERS AND DO
  24017. * ANY NECESSARY HOUSEKEEPING FOR THESE TABLES/BUFFERS.
  24018. *
  24019.  
  24020.  
  24021. SETL SUBR ENTRY/EXIT
  24022. SA1 VNACP START OF TABLE ADDRESSES
  24023. SB7 X1+1
  24024. BX7 X1
  24025. LX7 24
  24026. SA7 A1
  24027. SX7 X1+1
  24028. SA7 X1
  24029. LX7 24
  24030. BX6 X6-X6
  24031. SA7 VCPA ADDRESS OF FIRST SUB CONTROL POINT
  24032. LX7 -24
  24033. SB6 IFL= INITIALIZATION FIELD LENGTH
  24034. SB5 B7-B6
  24035. PL B5,DIE26 IF OVERFLOW DURING INITIALIZATION
  24036.  
  24037. * ZERO CORE TO START OF INITIALIZATION CODE.
  24038.  
  24039. + SA6 B7
  24040. SB7 B7+B1
  24041. NE B6,B7,* LOOP TILL FINISH
  24042.  
  24043. * SET UP SUB-CONTROL POINT LINKED CHAIN.
  24044.  
  24045. SA1 VNSCP NUMBER OF SUB CONTROL POINTS
  24046. LX1 -24
  24047. SB2 X1
  24048. SETL1 SB2 B2-1
  24049. ZR B2,SETL2 FINISHED CHAINING SUB CONTROL POINT AREAS
  24050. SX7 X7+CPAL ADDRESS OF NEXT SUB CONTROL POINT AREA
  24051. SA7 X7-CPAL
  24052. EQ SETL1 LOOP
  24053.  
  24054. * SET COMMUNICATIONS BLOCK ALLOCATION MAP.
  24055.  
  24056. SETL2 SX6 X7
  24057. LX6 24
  24058. SA6 VLSP LAST SUB CONTROL POINT AREA
  24059. SB2 47
  24060. SA1 VNCMB NUMBER TO ALLOCATE
  24061. MX2 1
  24062. SX3 B1
  24063. SX4 2222B FOR USE WITH TABLE ASSIGNMENT
  24064. LX1 -24
  24065. SB3 X1-1
  24066. LX4 48
  24067. SB4 A7+CPAL+CPAL+1 FIRST WORD OF BIT MAP TABLE
  24068. SX7 B4
  24069. LX7 24
  24070. SX5 1
  24071. SA7 VCBRT SAVE ADDRESS
  24072. SETL3 SB3 B3-B2 USE 47 BITS/WORD
  24073. LE B3,SETL4 IF ALL COMMUNICATION BLOCKS ALLOCATED
  24074. AX3 X2,B2 SET ONE BIT PER ENTRY
  24075. LX3 -12
  24076. BX7 X4+X3
  24077. BX7 X7+X5 SET BIT 0
  24078. SA7 B4 STORE INTO BIT MAP
  24079. SB4 B4+B1
  24080. EQ SETL3 LOOP
  24081.  
  24082. SETL4 SB3 B3+B2
  24083. AX3 X2,B3 SET ONE BIT PER ENTRY
  24084. LX3 -12
  24085. BX7 X4+X3
  24086. SA7 B4 SET INTO BIT MAP TABLE
  24087.  
  24088. * RESERVE COMMUNICATIONS BLOCK AREA.
  24089.  
  24090. SX7 B4+B1 START OF COMMUNICATIONS BLOCKS
  24091. SA2 VNCMB NUMBER OF COMMUNICATIONS BLOCKS
  24092. SX6 X7-CMBL
  24093. LX2 -24
  24094. LX7 24
  24095. SA7 VCBSA SAVE ADDRESS
  24096. SX1 CMBL LENGTH OF ONE C.B.
  24097. IX3 X1*X2
  24098. SB4 B4+B1
  24099. SB4 B4+X3 START OF NEXT TABLE
  24100.  
  24101. * RESERVE ACTIVE TRANSACTION LIST AREA.
  24102.  
  24103. SA1 VNCMB NUMBER OF C.B.
  24104. LX1 -24
  24105. SX2 ATLL LENGTH OF ATL ENTRY
  24106. SX7 B4
  24107. SB5 X1 NUMBER OF ATL ENTRIES
  24108. LX7 24
  24109. SA7 VATL SAVE ADDRESS
  24110. SB6 B4
  24111. IX3 X1*X2
  24112. SB4 B4+X3 START OF NEXT TABLE AREA
  24113.  
  24114. * ENTER COMMUNICATION BLOCK ADDRESS POINTER
  24115. * FOR EACH ACTIVE TRANSACTION LIST ENTRY.
  24116.  
  24117. SETL5 EQ B6,B4,SETL6 THRU SETTING POINTERS
  24118. SX6 X6+CMBL
  24119. SA6 B6 SET POINTER
  24120. SB6 B6+B1
  24121. EQ SETL5
  24122.  
  24123. * READ TERMINAL STATUS TABLE FROM *TIF*.
  24124.  
  24125. SETL6 SB5 B4-IFL=
  24126. SA0 B4+
  24127. PL B5,DIE26 IF OVERFLOW DURING INITIALIZATION
  24128. SX7 B4+TTFTL
  24129. LX7 24 SAVE START ADDRESS OF TST
  24130. SA7 VTST
  24131. LX1 TSLIS-0
  24132. LX1 TSAUS-0-TSLIS+0
  24133. BX7 X7+X1 SET USER ACTIVE
  24134. LX2 TSRBS-0
  24135. READO TIF LENGTH OF *TST* TO X6
  24136. READW TIF,A0,X6 READ *TST* TO MEMORY
  24137. SA1 VTST
  24138. SB4 B6+ NEXT FREE WORD
  24139. SX7 B4-IFL=
  24140. PL X7,DIE26 IF OVERFLOW DURING INITIALIZATION
  24141. SX2 B4-B1
  24142. BX7 X1+X2 SET LWA OF TST
  24143. SA7 VTST
  24144. LX1 -24
  24145. IX7 X2-X1 LENGTH OF TST
  24146. SX2 TSTLLE
  24147. IX7 X7/X2 NUMBER OF TST ENTRIES
  24148. SB3 X7
  24149. LX7 24
  24150. SB3 B3+B1 NUMBER OF NCT ENTRIES
  24151. SA7 VNTST
  24152.  
  24153. * SET UP BATCH CONCURRENCY TABLES.
  24154.  
  24155. SA1 VNBCT NUMBER OF BATCH CONCURRENCY ENTRIES
  24156. SX2 X1
  24157. LX2 47-17 POSITION FOR ALLOWED VALUE
  24158. BX6 X1+X2
  24159. SA6 A1 SET ALLOWED AND MAXIMUM VALUES
  24160. ZR X1,SETL6.1 IF NO ENTRIES
  24161. SX7 B4 CURRENT ADDRESS
  24162. SX2 BCTL LENGTH OF EACH BATCH CONCURRENT TABLE
  24163. LX7 24
  24164. SA7 VBCT STARTING ADDRESS OF BATCH CONCURRENT
  24165. LX7 -24
  24166. IX6 X2*X1 LENGTH OF TABLE
  24167. IX6 X7+X6 NEXT FREE WORD FOR MEMORY ALLOCATION
  24168. SB4 X6
  24169. SX7 B4-IFL=
  24170. PL X7,DIE26 IF OVERFLOW DURING INITIALIZATION
  24171.  
  24172. * SET UP NAM COMMUNICATION TABLE (NCT).
  24173.  
  24174. SETL6.1 SX1 NAM
  24175. ZR X1,SETL15 IF NOT IN NAM COMMUNICATION MODE
  24176. SX3 B3-NCTL NETWORK FILE TERMINALS - NCT MAXIMUM SIZE
  24177. NG X3,SETL13 IF NETWORK TERMINALS LESS THAN NCT
  24178. SB3 NCTL+1 MAXIMUM SIZE FOR NCT ALLOCATION
  24179. SETL13 SX7 B4 NEXT FREE WORD FOR MEMORY ALLOCATION
  24180. SX6 B3
  24181. SX2 TNCTL LENGTH OF NCT ENTRY
  24182. LX7 41-17
  24183. IX3 X2*X6 SIZE OF NCT
  24184. SX0 X3-NETL
  24185. PL X0,SETL13.1 IF ENOUGH SPACE FOR *AIP* ENTRY POINTS
  24186. SX3 NETL MINIMUM SPACE FOR *AIP* ENTRY POINTS
  24187. SETL13.1 SB5 B4
  24188. SB4 X3+B4 NEXT FREE WORD FOR MEMORY ALLOCATION
  24189. BX7 X7+X6 FWA OF NCT + NUMBER OF NCT ENTRIES
  24190. MX3 1
  24191. SA7 VNCT
  24192.  
  24193. * SAVE NAM AIP ENTRY POINTS.
  24194.  
  24195. LX3 -5
  24196. MX0 -18 MASK FOR ENTRY POINTS
  24197. SB3 INITPLE NUMBER OF ENTRY POINTS
  24198. SETL14 SA2 INITP+B3 GET ENTRY POINT FROM LOADER
  24199. BX6 -X0*X2 ENTRY POINT ADDRESS
  24200. ZR X6,DIE23 IF NO ENTRY POINT NOTE LOADER ERROR
  24201. LX6 30
  24202. BX6 X3+X6 RJ TO ENTRY POINT
  24203. SB3 B3-B1
  24204. SA6 B5+B3 SAVE ENTRY POINT
  24205. NZ B3,SETL14 IF MORE ENTRY POINTS
  24206.  
  24207. * ATTACH JOURNAL FILE 0.
  24208.  
  24209. SETL15 SX0 B4
  24210. BX6 X6-X6 ATTACH MODE FLAG
  24211. SB4 INITG ADDRESS OF JOURNAL 0 FET
  24212. RJ ATT ATTACH FILE
  24213. SB4 X0
  24214.  
  24215. * RESERVE ROLLOUT FILE ALLOCATION WORDS.
  24216.  
  24217. SX7 B4
  24218. SX6 RLATL LENGTH OF ROLLOUT FILE ALLOCATION AREA
  24219. LX7 24
  24220. SB4 X6+B4
  24221. SA7 VRLAT FWA OF ROLLOUT FILE ALLOCATION AREA
  24222.  
  24223. * SET UP OVERLAY ENTRY POINT TABLE.
  24224.  
  24225. SX7 B4 START OF ENTRY POINT LIST
  24226. LX7 24
  24227. SA7 VOEP
  24228. MOVE SETLGL,SETLG,B4
  24229. SB4 B4+SETLGL
  24230.  
  24231. * SET UP OVERLAY RELOCATION CONTROL TABLE.
  24232.  
  24233. SX7 B4 START OF RELOCATION CONTROL
  24234. SX6 B4+SETLHL
  24235. LX7 24
  24236. BX7 X7+X6
  24237. SA7 VOREL
  24238. MOVE SETLHL,SETLH,B4
  24239. SB4 B4+SETLHL
  24240.  
  24241. * SET UP *CRF* TABLES, FETS AND BUFFERS.
  24242.  
  24243. SX1 IPTAR
  24244. ZR X1,IDM0 IF AUTOMATIC RECOVERY DISABLED
  24245. SA1 VTST
  24246. LX1 -24
  24247. SB2 X1-TTFTL FWA OF *TST* HEADER
  24248. SB6 B0
  24249. SB3 8 NUMBER OF HEADER ENTRIES
  24250. SB5 TTFTE ENTRY LENGTH
  24251. SA3 B2-B5
  24252. SETL18 SA3 A3+B5 NEXT ENTRY
  24253. SB3 B3-B1
  24254. NZ X3,SETL19 IF A *CRF* FOR THIS ID
  24255. SB6 B6+1
  24256. NE B3,SETL18 IF MORE ENTRIES
  24257. EQ SETL21 PACK DOWN ENTRIES
  24258.  
  24259. * FORMAT *TAF* RGCOVERY TABLE.
  24260.  
  24261. SETL19 SX4 B4 FWA OF *TAF* RECOVERY TABLE.
  24262. BX6 X3+X4
  24263. SA6 A3+
  24264. SA1 SETLE
  24265. SX2 B6+1R0 BINARY TO DISPLAY
  24266. LX2 29-5
  24267. BX6 X1+X2 FORM FILE NAME
  24268. SX2 CIORD *CIO* FUNCTION CODE
  24269. BX6 X6+X2
  24270. SA6 TL STORE IN FET
  24271. SX7 IBUF RESET BUFFER POINTERS
  24272. SA7 TL+2 IN
  24273. SYSTEM CIO,R,A6 READ *CRF* HEADER
  24274. SA1 IBUF+TRNWW
  24275. MX0 TRRSN
  24276. BX6 -X0*X1 REMOVE SHUTDOWN STATUS
  24277. MX0 -TRNWN
  24278. LX1 TRNWN-1-TRNWS
  24279. BX2 -X0*X1 WORDS IN USER MESSAGE
  24280. SX4 X2+77B
  24281. AX4 6 PRU-S IN USER MESSAGE
  24282. LX4 TTNPS-TTNPN+1
  24283. BX6 X6+X4
  24284. ERRNZ TTNRS-TRNRS RECOVERY UNITS NOT IN SAME FIELD
  24285. SA6 B4 FIRST WORD OF *CRF* TABLE
  24286. SA1 TL
  24287. BX6 X1
  24288. SA6 A6+TTFTW FIRST WORD OF FET
  24289. SX6 11B
  24290. LX6 47-3 POSITION RANDOM AND USER PROCESSING BITS
  24291. SX5 TTBFW-TTFTW-5 FET LENGTH-5
  24292. LX5 18
  24293. BX6 X6+X5
  24294. SX5 B4+TTBFW FIRST
  24295. BX6 X6+X5
  24296. SA6 A6+B1
  24297. BX6 X5
  24298. SA6 A6+B1 IN
  24299. SA6 A6+B1 OUT
  24300. LX4 60-TTNPS+TTNPN-1+6 CONVERT PRU-S TO WORDS
  24301. SX2 TRUWL+MRIWL+TRMRL BUFFER SIZE FOR SYSTEM
  24302. IX1 X2-X4 DETERMINE LARGER
  24303. BX6 X4
  24304. NG X1,SETL20 IF USER MESSAGE LARGER
  24305. BX6 X2
  24306. SETL20 SX1 B1+B1
  24307. IX6 X6+X1 BUFFER SIZE
  24308. IX6 X6+X5 LWA OF BUFFER
  24309. SA6 A6+B1 LIMIT
  24310. SB6 B6+B1
  24311. SB4 X6+ NEXT FREE WORD
  24312. SX6 B4-IFL=
  24313. PL X6,DIE26 IF OVERFLOW DURING INITIALIZATION
  24314. NE B3,SETL18 IF MORE *TST* HEADER ENTRIES
  24315.  
  24316. * COMPACT TERMINAL FILE TABLE.
  24317.  
  24318. SETL21 SB3 8 MAXIMUM *TST* HEADER ENTRIES
  24319. SB7 B2+
  24320. SETL22 SA1 B7+
  24321. NZ X1,SETL24 IF THERE IS A *CRF * FOR THIS ID
  24322. SETL23 SB3 B3-B1 DECREASE NUMBER OF ENTRIES LEFT
  24323. SB7 B7+B5 NEXT ENTRY ADDRESS
  24324. NE B3,SETL22 IF MORE ENTRIES
  24325. EQ SETL27 SET END OF*TST*
  24326.  
  24327. SETL24 SB6 B7-B2
  24328. NE B6,SETL25 IF WORDS TO MOVE
  24329. SB2 B7+B5
  24330. EQ SETL23 NEXT ENTRY
  24331.  
  24332. SETL25 SX1 B3
  24333. SX2 B5
  24334. IX2 X2*X1 WORDS TO MOVE
  24335. SB6 B2
  24336. SETL26 SA1 B7 MOVE DATA DOWN
  24337. BX6 X1
  24338. SA6 B6
  24339. SB7 B7+B1
  24340. SB6 B6+B1
  24341. SX2 X2-1
  24342. NZ X2,SETL26 IF MORE TO MOVE
  24343. SB3 B3-B1
  24344. SB2 B2+B5
  24345. SB7 B2
  24346. NE B3,SETL22 IF MORE ID-S TO PROCESS
  24347. SETL27 SA1 VTST
  24348. LX1 -24
  24349. SB2 X1
  24350. SX7 IBUF RESET *IN* POINTER
  24351. SA7 TL+2
  24352. EQ B2,B7,IDM0 IF ALL ID-S USED
  24353. BX6 X6-X6
  24354. SA6 B7 INDICATE END OF DATA IN HEADER
  24355. IDM TITLE INITIALIZE DATA MANAGER.
  24356. * INITIALIZE DATA MANAGER
  24357.  
  24358. IDM0 SB4 B4+B1
  24359. SX7 B4
  24360. SA7 CCP CURRENT CORE POSITION
  24361. LX7 24
  24362. SA7 VEDT START OF EDTS
  24363.  
  24364. * INITIAL TOTAL XXJ FILES.
  24365.  
  24366. IDM4 SA1 VTOT TOTAL LOADED FLAG
  24367. SX6 B1
  24368. ZR X1,IDM6 IF TOTAL IS NOT LOADED
  24369. SA6 TFLAG FLAG FOR XXJ FILE BEING FOR TOTAL
  24370. IDM5 SA2 TDBID+3 GET FET POINTERS AND DBMOD NAME
  24371. SA1 A2-B1
  24372. SA5 X2 DBMOD NAME
  24373. SX0 B1
  24374. BX6 X5
  24375. BX7 X0+X5
  24376. BX1 X1-X2
  24377. SA6 XXJK SAVE FOR XXJ PROCESSING
  24378. SA7 TOTFILE FILE NAME TO RETURN
  24379. MX0 12
  24380. BX6 X0*X5
  24381. SA6 XXJN SAVE DATA BASE ID
  24382. SX6 X2+B1
  24383. MX2 12
  24384. ZR X1,IDM6 IF NO MORE DBMODS
  24385. SA1 DBID+5 ADVANCE NUMBER OF EDTS
  24386. SA6 A2 ADVANCE OUT
  24387. SX6 X1+B1
  24388. SA6 A1
  24389. BX5 X2*X5 DATA BASE ID
  24390. RJ XXJ GET XXJ FILE AND BEGIN PROCESSING
  24391. SA3 CCP CURRENT CORE LOCATION
  24392. SX4 IFL= INITIALIZATION FIELD LENGTH
  24393. SB4 X3 CURRENT EDT ADDRESS
  24394. SA2 TL
  24395. MX0 12
  24396. BX6 X0*X2 DATA BASE NAME
  24397. SX7 B4
  24398. SA6 B4+ FIRST WORD OF EDT
  24399. SA7 INTD CURRENT EDT ADDRESS
  24400. SB4 B4+HDRL
  24401. BX5 X5-X5 FLAG FOR SECOND PASS IN XXJ
  24402. RJ XXJ CONTINUE XXJ FILE PROCESSING
  24403. SX7 B4+
  24404. SA7 CCP CURRENT CORE LOCATION
  24405. RETURN TOTFILE,R RETURN DBMOD BINARIES
  24406. RETURN TL,R RETURN XXJ FILE
  24407. EQ IDM5 GET NEXT DBMOD
  24408.  
  24409.  
  24410. * PROCESS AAM XXJ FILE.
  24411.  
  24412. IDM6 SX6 B1+ NOT TAF DATA MANAGER
  24413. SA1 VAAM AAM LOAD FLAG
  24414. ZR X1,IDM8 IF AAM NOT LOADED
  24415. SA6 TFLAG
  24416. SB2 ZZZZZDG
  24417. STATUS B2 CHECK IF ZZZZZDG IS LOCAL
  24418. SA1 B2
  24419. MX6 11
  24420. LX1 59-11
  24421. BX6 X6*X1
  24422. ZR X6,IDM7 IF FILE NOT AT C.P.
  24423. RETURN ZZZZZDG
  24424. IDM7 SA2 CDBID+3 OUT
  24425. SA1 A2-B1 IN
  24426. SA5 X2 DATA BASE NAME
  24427. SX6 X2+B1 ADVANCE OUT
  24428. BX1 X1-X2
  24429. SA6 A2
  24430. BX7 X5
  24431. ZR X1,IDM8 IF NO MORE DATA BASES
  24432. ZR X5,IDM7 IF NO ENTRY
  24433. SA1 DBID+5 ADVANCE DATA BASES INITIALIZED
  24434. SX7 X1+B1
  24435. MX2 12
  24436. SA7 A1
  24437. BX5 X2*X5 DATA BASE
  24438. BX6 X5
  24439. SX7 B4
  24440. SA6 B4 FIRST WORD OF EDT
  24441. SB4 B4+HDRL
  24442. SA7 INTD CURRENT EDT ADDRESS
  24443. RJ XXJ PROCESS XXJ FILE - INITIAL CALL
  24444. BX5 X5-X5 SECOND PASS OF XXJ FILE
  24445. RJ XXJ CONTINUE XXJ PROCESSING
  24446. SX7 B4+
  24447. SA7 CCP CURRENT CORE POSITION
  24448. RETURN TL RETURN XXJ FILE
  24449. EQ IDM7 PROCESS NEXT DATA BASE
  24450.  
  24451.  
  24452. * PROCESS XXJ FILES FOR OTHER DATA BASES.
  24453.  
  24454. IDM8 SA2 OTHER+3 OUT
  24455. SA1 A2-B1 IN
  24456. SA5 X2 DATA BASE NAME
  24457. SX6 X2+B1 ADVANCE OUT
  24458. BX1 X1-X2
  24459. SA6 A2
  24460. BX7 X5
  24461. ZR X1,IDM8.1 IF NO MORE DATA BASES
  24462. ZR X5,IDM8 IF NO DATA BASE NAME
  24463. SA1 DBID+5 ADVANCE DATA BASES INITIALIZED
  24464. SX7 X1+B1
  24465. MX2 12
  24466. SA7 A1
  24467. BX5 X2*X5 DATA BASE
  24468. RJ XXJ PROCESS XXJ FILE
  24469. SX4 IFL= AVAILABLE MEMORY FOR TABLES
  24470. SA3 CCP
  24471. SB4 X3 CURRENT EDT ADDRESS
  24472. MX0 12
  24473. SA2 TL DATA BASE
  24474. BX6 X0*X2 DATA BASE NAME
  24475. SX7 B4
  24476. SA6 B4+ FIRST WORD OF EDT
  24477. SB4 B4+HDRL
  24478. SA7 INTD CURRENT EDT ADDRESS
  24479. BX5 X5-X5 SECOND PASS OF XXJ FILE
  24480. RJ XXJ CONTINUE XXJ PROCESSING
  24481. SX7 B4
  24482. SA7 CCP CURRENT CORE POSITION
  24483. RETURN TL RETURN XXJ FILE
  24484. EQ IDM8 PROCESS NEXT DATA BASE
  24485.  
  24486. IDM8.1 BX6 X6-X6
  24487. SA6 B4
  24488. SA1 VEDT
  24489. SA3 DBID+5 EDT COUNT
  24490. LX1 -24
  24491. SA2 X1
  24492. SX4 X3
  24493. LX3 18
  24494. BX6 X2+X3
  24495. SA6 A2 UPDATE COUNT IN FIRST EDT HEADER
  24496. IDM9 SX4 X4-1
  24497. ZR X4,IDM10 IF NO MORE EDTS
  24498. SA2 X2
  24499. BX6 X2
  24500. EQ IDM9 LOOP
  24501.  
  24502. IDM10 MX7 -18
  24503. BX7 X7*X6 CLEAR POINTER TO NEXT EDT
  24504. SA7 A2
  24505. RJ ABJ ALLOCATE BUFFERS FOR JOURNAL FILES
  24506. RJ LTL LOAD TASK LIBRARY DIRECTORIES
  24507. SA1 TL+1
  24508. SX7 B1
  24509. LX7 44 CLEAR EPR BIT FROM TASK LIBRARY FET
  24510. BX7 -X7*X1
  24511. SA7 A1
  24512. SA1 VTLD
  24513. SX6 B4 ADDRESS OF LAST WORD OF LAST TLD
  24514. LX1 -24
  24515. SA2 X1-4 FIRST WORD OF TLD HEADER
  24516. LX6 24
  24517. BX6 X2+X6
  24518. SA6 A2 UPDATE FIRST TLD FOR K-DISPLAY
  24519. RJ LTR LOAD TRANSACTION DIRECTORY
  24520. SB4 B4+B1
  24521.  
  24522.  
  24523. * ALLOCATE SPACE FOR CMM.
  24524.  
  24525. IDM11 SA1 VAAM AAM LOAD FLAG
  24526. ZR X1,IDM13 IF *AAM* NOT INITIALIZED
  24527. SB5 5 ALLOCATE BUFFER SPACE
  24528. SX6 B4+ FWA OF AVAILABLE MEMORY
  24529. SA6 TTIP+TIAM
  24530. SB2 TTIP FWA OF PARAMETERS
  24531. SA1 VCMM GET CMM FL
  24532. SA3 CRMI BIT MAP OF FILE ORGANIZATIONS
  24533. BX6 X1
  24534. BX7 X3
  24535. RJ CRM ALLOCATE RECORD SPACE
  24536. RJ RBL REPORT *BFL* INFORMATION
  24537. SA1 VREC
  24538. MX2 1
  24539. BX1 X2*X1 *CRM* RECOVERY BIT
  24540. NZ X1,IDM12 IF RECOVERY SITUATION
  24541. SB5 6
  24542. RJ CRM INITIALIZE *AAMI* RECOVERY FILES
  24543. IDM12 SA4 TTIP+TIAM FWA OF AVAILABLE MEMORY
  24544. SB4 X4+
  24545.  
  24546. * SET START OF SUB CP AREA.
  24547.  
  24548. IDM13 SX7 B4+77B ROUND UP TO NEAREST 100B
  24549. AX7 6
  24550. LX7 24+6
  24551. SA7 VFSCP
  24552. SB5 B4-IFL=
  24553. PL B5,DIE26 IF OVERFLOW DURING INITIALIZATION
  24554. EQ SETLX RETURN
  24555. ABJ SPACE 4,10
  24556. ** ABJ - ALLOCATE BUFFERS FOR JOURNAL FILES.
  24557. *
  24558. * THIS ROUTINE DYNAMICALLY ALLOCATES BUFFER SPACE
  24559. * IN HIGH CORE FOR BUFFERED JOURNAL FILES.
  24560. *
  24561. * ENTRY (B4) = BEGINNING OF BUFFER AREA RETURNED BY *COMBINT*.
  24562. * (VEDT) = START OF EDTS.
  24563. *
  24564. * EXIT (B4) = END OF BUFFER ALLOCATION AREA.
  24565. * ALL BUFFERS HAVE BEEN INITIALIZED.
  24566. *
  24567. * USES A - 0, 1, 2, 3, 6, 7.
  24568. * X - 0, 1, 2, 3, 4, 6, 7.
  24569. * B - 4, 5.
  24570.  
  24571.  
  24572. ABJ SUBR ENTRY/EXIT
  24573. SA1 VEDT
  24574. LX1 -24
  24575. SA2 X1 EDT HEADER WORD 1
  24576. LX2 -18
  24577. SX4 X1+B1 ADDRESS OF EDT HEADER WORD 2
  24578. SB4 B4+B1
  24579. SX0 X2
  24580. ABJ1 SA3 X4 EDT HEADER WORD 2
  24581. ZR X0,ABJX IF COMPLETE - RETURN
  24582. AX3 18
  24583. SX0 X0-1 DECREMENT EDT COUNT
  24584. SA0 X3-JFETL ADDRESS OF FIRST JOURNAL FILE FET - JFETL
  24585. AX3 36 POSITION JOURNAL BUFFER COUNT
  24586. SB5 X3 JOURNAL COUNT FOR THIS EDT
  24587. SA1 A3-B1 FIRST WORD OF EDT HEADER
  24588. SX4 X1+B1 ADDRESS OF EDT HEADER WORD 2
  24589. ABJ2 ZR B5,ABJ1 IF NO MORE JOURNAL FILES FOR THIS EDT
  24590. SA0 A0+JFETL BUMP INDEX TO NEXT JOURNAL FET
  24591. SA1 A0+7
  24592. LX1 -1
  24593. SB5 B5-B1 DECREMENT JOURNAL COUNT
  24594. NG X1,ABJ2 NOT BUFFERED JOURNAL FILE
  24595. SX7 B4
  24596. LX1 1
  24597. SX6 TAPL+1 BLOCK SIZE FOR *MT,B*
  24598. NG X1,ABJ3 IF *MT,B*
  24599. SX6 DSKL+1 BLOCK SIZE FOR *MS,B*
  24600. ABJ3 SB4 X6+B4 INCREMENT BUFFER POINTER
  24601. MX1 42
  24602. SA2 A0+B1
  24603. BX2 X1*X2
  24604. SA7 A2+B1 IN
  24605. SA7 A7+B1 OUT
  24606. IX6 X6+X7
  24607. SA6 A7+B1
  24608. BX7 X2+X7
  24609. SA7 A2 FIRST
  24610. SX6 B4-IFL=
  24611. PL X6,DIE26 IF OVERFLOW DURING INITIALIZATION
  24612. EQ ABJ2 LOOP
  24613. LTL SPACE 4,25
  24614. ** LTL - LOAD TASK LIBRARY DIRECTORIES.
  24615. *
  24616. * LOAD THE SYSTEM TASK LIBRARY DIRECTORY, *TASKLIB*, AND AN
  24617. * *XXTASKL (XX=DATA BASE) LIBRARY DIRECTORY FOR EACH DATA BASE.
  24618. *
  24619. * ENTRY (B4) = BEGINNING OF DIRECTORY AREA.
  24620. * (DBNT) = LIST OF DATA BASE NAMES AND ACCOUNT NUMBERS
  24621. * ASSOCIATED WITH THAT DATA BASE.
  24622. *
  24623. * EXIT (B4) = LWA+1 OF DIRECTORY AREA.
  24624. * (VTLD-4) - (VTLD-1) = TASK LIBRARY HEADER.
  24625. * TO *DIE12* IF ERROR ON *ATTACH*.
  24626. * TO *DIE26* IF MEMORY OVERFLOW.
  24627. * ABORT IF TLD ERROR.
  24628. * ABORT IF TLD TOO LONG.
  24629. *
  24630. * USES A - ALL.
  24631. * X - ALL.
  24632. * B - 2, 3, 4, 5.
  24633. *
  24634. * CALLS CER, SNM.
  24635. *
  24636. * MACROS ABORT, ATTACH, MESSAGE, READ, READW, SKIPB, SKIPEI.
  24637.  
  24638.  
  24639. LTL SUBR ENTRY/EXIT
  24640. RJ STI SET TAF INDEX
  24641. RJ SFD SET FAMILY TO DEFAULT
  24642. SX6 HBUF INITIALIZE IN AND OUT IN DBID
  24643. SA6 DBID+3 OUT
  24644. RECALL TL WAIT FOR COMPLETION OF *CIO* REQUEST
  24645. SA1 VTFL SYSTEM TASK LIBRARY NAME
  24646. SX7 B0
  24647. BX6 X1
  24648. SA7 TL+8 CLEAR PERMANENT FILE NAME FROM FET
  24649. SA6 TL
  24650. SA0 B4 (A0) = CURRENT INITIALIZATION POINTER
  24651. MX4 -18
  24652. SX7 IBUF
  24653. SA1 A6+B1 TL FET +1
  24654. BX6 X4*X1 SET UP TASK LIBRARY FET
  24655. BX6 X6+X7
  24656. SA7 A1+B1 IN
  24657. SA6 A1 FIRST
  24658. SA7 A7+B1 OUT
  24659. SA2 A7+B1
  24660. SX6 X6+IBUFL
  24661. BX7 X4*X2
  24662. BX7 X7+X6
  24663. SA7 A2 LIMIT
  24664. ATTACH TL,,,,M ATTACH LIBRARY FILE IN WRITE MODE
  24665. RJ CER CHECK ERROR STATUS
  24666. NZ X1,DIE12 IF ERROR ON ATTACH
  24667. SKIPEI TL
  24668. SKIPB TL,2 BACKSPACE TO POSITION AT DIRECTORY
  24669. READ TL INITIATE READ
  24670. READW TL,A0,TLDMS
  24671. NG X1,LTL6 IF DIRECTORY EMPTY
  24672. ZR X1,LTL8 IF DIRECTORY TOO LONG
  24673. SX6 A0
  24674. IX4 X1-X6 NUMBER OF WORDS IN DIRECTORY
  24675. ZR X4,LTL6 IF DIRECTORY EMPTY
  24676. SA2 SETLC COPY OF DIRECTORY HEADER WORD
  24677. MX6 18
  24678. SA3 A0+B1 HEADER WORD ON DIRECTORY
  24679. BX4 X6*X3
  24680. IX7 X2-X4
  24681. NZ X7,LTL9 IF INCORRECT DIRECTORY HEADER WORD
  24682. SA5 TL
  24683. MX7 42
  24684. SX6 B1
  24685. BX7 X7*X5 NAME OF LIBRARY FILE
  24686. BX7 X7+X6
  24687. SA7 A0+3
  24688. SA7 HBUF SAVE LIBRARY NAME
  24689. SA2 A0 GET PRU OF *TRD*
  24690. SX6 A0 FWA OF *TLD*
  24691. MX0 -30
  24692. BX0 -X0*X2
  24693. LX0 59-29
  24694. BX6 X0+X6 *TRD* PRU + FWA OF *TLD*
  24695. SA6 A7+B1
  24696. SX6 A6+B1
  24697. SA6 DBID+2 UPDATE DBID IN
  24698. SX7 A0+4 FWA OF DIRECTORY
  24699. LX7 24
  24700. LX3 -18
  24701. SB5 X3+3 SIZE OF BASE DIRECTORY + HEADER WORDS
  24702. SX2 X1+TLDL+TLDLE DIRECTORY+EXPANSION AREA+TERMINATOR
  24703. SX6 A0+B5 LWA OF BASE DIRECTORY
  24704. BX7 X7+X6
  24705. SX3 A0 START OF TLD
  24706. IX6 X2-X3 TOTAL LENGTH OF TLD
  24707. SA6 A0 TOTAL LENGTH OF TLD TO TLD HEADER
  24708. SA0 X2 SAVE CURRENT POSITION
  24709. SA7 VTLD
  24710. SA4 LTLE
  24711. IX7 X4+X6
  24712. SA7 A4
  24713. SX1 X7-TLDMX CHECK FOR GREATER THAN 12-BIT OFFSET
  24714. PL X1,LTL9.1 IF TLD-S TAKE UP TOO MUCH SPACE
  24715. ATTACH TL,,,,RM ATTACH SYSTEM TASK LIBRARY FILE - READ MODE
  24716.  
  24717. * ATTACH XXTASKL FILES (XX=DATA BASE NAME) FOR EACH DATA BASE.
  24718.  
  24719. SA5 VEDT
  24720. LX5 -24
  24721. SA2 X5 EDT HEADER WORD 1
  24722. LX2 -18
  24723. SB4 A0+ NEXT AVAILABLE DIRECTORY LOCATION
  24724. SX0 X2 COUNT OF EDTS
  24725. LTL1 ZR X0,LTLX IF NO MORE EDT-S
  24726. MX1 12
  24727. SA4 X5 FIRST WORD OF EDT
  24728. BX3 X1*X4 DATA BASE
  24729. SA2 LTLA *00TASKL*
  24730. BX6 X3+X2
  24731. SX7 IBUF
  24732. SA3 TL+1
  24733. MX1 -18
  24734. SX4 B1
  24735. BX6 X6+X4 ADD ON COMPLETION BIT
  24736. SA6 A3-B1 *DBTASKL*
  24737. BX2 X1*X3
  24738. LX4 44 ERROR PROCESSING BIT
  24739. BX6 X2+X7
  24740. SA7 A3+B1 IN
  24741. BX6 X6+X4
  24742. SA6 A3 FIRST
  24743. SA7 A7+B1 OUT
  24744. SA2 A7+B1
  24745. SX6 X6+IBUFL
  24746. BX1 X1*X2
  24747. BX7 X1+X6
  24748. SB2 FETL-5
  24749. SA7 A2 LIMIT
  24750. BX7 X7-X7
  24751. LTL2 SA7 A7+B1 CLEAR OUT REMAINDER OF FET
  24752. SB2 B2-B1
  24753. NZ B2,LTL2 IF NOT FINISHED WITH FET
  24754. MX1 42
  24755. SA3 X5+2 USER NAME
  24756. BX7 X1*X3 USER NAME
  24757. SA4 X5+6 FAMILY IN *EDT* HEADER WORD 7
  24758. BX6 X1*X4
  24759. SA1 A4-B1 *EDT* HEADER WORD 6
  24760. SA7 LTLC SAVE USER NAME FOR *ATTACH*
  24761. SA6 LTLD SAVE USER FAMILY
  24762. MX7 48
  24763. LX7 6
  24764. BX6 X7*X1
  24765. SA6 TL+CFPK PACKNAME AND UNIT INTO FET
  24766. LX1 -6
  24767. MX4 -12
  24768. BX4 -X4*X1 DEVICE TYPE
  24769. SA2 TL+1
  24770. NZ X4,LTL3 IF DEVICE TYPE SPECIFIED
  24771. SA4 ATTA DEFAULT DEVICE
  24772. LTL3 MX7 -48
  24773. LX4 -12
  24774. BX2 -X7*X2
  24775. IX6 X2+X4
  24776. SA6 A2 DEVICE TYPE TO FET
  24777. SA1 LTLD
  24778. SX2 10B *SETPFP* FLAGS
  24779. BX6 X2+X1
  24780. SA6 STIA *SETPFP* CALL BLOCK
  24781. SETPFP STIA SWITCH TO USERS FAMILY
  24782. SA1 STIA
  24783. LX1 59-12
  24784. NG X1,LTL10 IF *SETPFP* ERRORS
  24785. ATTACH TL,,LTLC,,M ATTACH LIBRARY IN WRITE MODE
  24786. RJ CER CHECK ERROR STATUS
  24787. NZ X1,LTL5 IF *DBTASK* NOT AVAILABLE
  24788. SKIPEI TL
  24789. SKIPB TL,2 BACKSPACE TO POSITION AT DIRECTORY
  24790. READ TL INITIATE READ
  24791. READW TL,A0,TLDMS
  24792. SA2 TL
  24793. MX7 42
  24794. SX6 B1
  24795. BX7 X7*X2 NAME OF LIBRARY FILE
  24796. BX7 X7+X6
  24797. SA7 A0+3
  24798. BX3 X1
  24799. NG X3,LTL6 IF DIRECTORY EMPTY
  24800. ZR X3,LTL8 IF DIRECTORY TOO LONG
  24801. SA2 DBID+2 GET IN
  24802. SB4 X2
  24803. SA7 X2 SAVE LIBRARY NAME
  24804. SA2 A0 GET PRU OF *TRD*
  24805. MX6 -30
  24806. BX6 -X6*X2
  24807. LX6 59-29
  24808. SX2 A0 FWA OF *TLD*
  24809. BX6 X6+X2 *TRD* PRU + FWA OF *TLD*
  24810. SA6 A7+B1
  24811. SX6 A6+B1
  24812. SA6 DBID+2 UPDATE DBID IN
  24813. SX6 A0
  24814. IX4 X3-X6 NUMBER OF WORDS IN DIRECTORY
  24815. ZR X4,LTL6 IF DIRECTORY EMPTY
  24816. SA2 SETLC COPY OF DIRECTORY HEADER WORD
  24817. MX6 18
  24818. SA1 A0+B1 HEADER WORD IN DIRECTORY
  24819. BX4 X6*X1
  24820. IX7 X2-X4
  24821. NZ X7,LTL9 IF INCORRECT DIRECTORY HEADER WORD
  24822. SX7 A0+4 FWA OF DIRECTORY
  24823. LX7 18
  24824. LX1 -18
  24825. SB5 X1+3 SIZE OF DIRECTORY + HEADER WORDS
  24826. SX2 X3+TLDL+TLDLE DIRECTORY+EXPANSION AREA+TERMINATOR
  24827. SX6 A0+B5 LWA OF BASE DIRECTORY
  24828. MX1 42
  24829. BX7 X7+X6
  24830. SX3 A0 START OF TLD
  24831. IX6 X2-X3 TOTAL LENGTH OF TLD
  24832. SA6 A0 LENGTH OF TLD TO TLD HEADER
  24833. SA3 X5+2 USER NAME, PASSWORD
  24834. SA0 X2 SAVE CURRENT POSITION
  24835. SA7 X5+4 FWA,LWA OF *DBTASKL*
  24836. BX3 X1*X3 USER NAME
  24837. SA4 LTLE
  24838. IX7 X4+X6
  24839. SA7 A4
  24840. SX1 X7-TLDMX CHECK FOR GREATER THAN 12-BIT OFFSET
  24841. PL X1,LTL9.1 IF TLD-S TAKE UP TOO MUCH SPACE
  24842. ATTACH TL,,LTLC,,RM ATTACH LIBRARY IN READ MODE
  24843. LTL4 SA5 X5 GET POINTER TO NEXT EDT
  24844. SB4 A0 NEXT AVAILABLE DIRECTORY LOCATION
  24845. SX0 X0-1 DECREMENT EDT COUNT
  24846. SX1 B4-IFL=
  24847. PL X1,DIE26 IF MEMORY OVERFLOW
  24848. RJ SFD REVERT TO DEFAULT FAMILY
  24849. EQ LTL1 LOOP TO NEXT EDT HEADER
  24850.  
  24851. LTL5 SX7 0
  24852. SA7 X5+4 CLEAR FWA,LWA IN EDT HEADER
  24853. SA1 TL
  24854. MX6 42
  24855. BX1 X6*X1
  24856. SB2 1RX REPLACEMENT CHARACTER IN MESSAGE
  24857. SB5 -MSGK * ATTACH ERROR ON - XXXXXXX.*
  24858. SB3 MSGAY ASSEMBLY AREA FOR MESSAGE
  24859. RJ SNM SET NAME IN MESSAGE
  24860. MESSAGE MSGAY
  24861. EQ LTL4 PROCESS NEXT DATA BASE
  24862.  
  24863. * COMPLETE MESSAGE, ISSUE IT AND ABORT.
  24864.  
  24865. LTL6 SB5 SETLA * LIBRARY DIRECTORY EMPTY - ZZZZZZZ.*
  24866. LTL7 SA1 TL GET FILE NAME ASSOCIATED WITH ERROR
  24867. SB2 1RZ DISPLAY CODE SEARCH CHARACTER
  24868. MX5 42
  24869. BX1 X1*X5 DISPLAY CODE NAME TO INSERT
  24870. RJ SNM SET NAME IN MESSAGE
  24871. LTL7.1 MESSAGE B5
  24872. RJ SFD REVERT TO DEFAULT FAMILY
  24873. ABORT
  24874.  
  24875. LTL8 SB5 SETLB * LIBRARY DIRECTORY TOO LONG - ZZZZZZZ.*
  24876. EQ LTL7 COMPLETE MESSAGE, ISSUE IT, ABORT
  24877.  
  24878. LTL9 SB5 SETLD * LIBRARY DIRECTORY ERROR - ZZZZZZZ.*
  24879. EQ LTL7 COMPLETE MESSAGE, ISSUE IT, ABORT
  24880.  
  24881. LTL9.1 SB5 SETLI * LIBRARY DIRECTORY SPACE TOO LARGE. *
  24882. EQ LTL7.1 ISSUE MESSAGE AND ABORT
  24883.  
  24884. LTL10 SA1 LTLC USER NAME
  24885. SB2 1RX
  24886. SB5 MSGAI
  24887. RJ SNM
  24888. SA1 LTLD FAMILY
  24889. SB2 1RY
  24890. SB5 MSGAI+2
  24891. RJ SNM
  24892. MESSAGE MSGAI
  24893. RJ SFD REVERT TO DEFAULT FAMILY
  24894. ABORT
  24895. LTLA VFD 12/0,30/5LTASKL,18/0
  24896. LTLC BSS 1 USER NAME FROM *EDT*
  24897. LTLD BSS 1 USER FAMILY FROM *EDT*
  24898. LTLE BSSZ 1 NUMBER OF WORDS READ FROM TLD-S
  24899. LTR SPACE 4,25
  24900. ** LTR - LOAD TRANSACTION DIRECTORIVES.
  24901. *
  24902. * ENTRY (B4) = FWA OF TRANSACTION DIRECTORY AREA.
  24903. *
  24904. * EXIT TRANSACTION DIRECTORIVES LOADED WITH EXPANDABLE
  24905. * SPACE + 1 AT THE END OF EVERY *TRD*.
  24906. *
  24907. * USES X - ALL.
  24908. * A - ALL.
  24909. * B - 2, 3, 4, 5, 7.
  24910. *
  24911. * CALLS STLD.
  24912. *
  24913. * MACROS MESSAGE, READ, READW.
  24914.  
  24915.  
  24916. LTR11 SA1 LTRD GET TRANSACTION COUNT
  24917. NZ X1,LTRX IF COUNT NOT ZERO
  24918. MESSAGE LTRE
  24919.  
  24920. LTR SUBR ENTRY/EXIT
  24921. LTR1 SA1 DBID+2 GET IN
  24922. SA2 DBID+3 OUT
  24923. IX3 X1-X2
  24924. ZR X3,LTR11 IF LOADING COMPLETE
  24925.  
  24926. * DETERMINE LIBRARY NAME AND *TRD* ADDRESS.
  24927.  
  24928. SA0 B4 FWA OF *TRD*
  24929. SX6 X2+2 UPDATE OUT
  24930. SA6 A2
  24931. SA1 X2 GET LIBRARY NAME
  24932. SA2 A1+B1 GET *TRD* PRU + FWA OF *TLD*
  24933. SA3 X2 GET FWA OF *TLD*
  24934. SX6 A0+4 PUT FWA OF *TRD* IN FWA OF *TLD*
  24935. BX5 X6
  24936. LX6 59-17
  24937. BX6 X6+X3 ADD FWA OF *TRD*
  24938. SA6 A3 UPDATE FWA OF *TLD*
  24939. MX0 30
  24940. BX6 X0*X2 *TRD* PRU
  24941. ZR X6,LTR6 IF NO PRU
  24942. LX6 30
  24943. SA6 TL+6 PUT PRU IN FET
  24944. MX0 42 PUT LIBRARY NAME IN FET
  24945. BX7 X1
  24946. SA7 TL
  24947. SX6 THBUF
  24948. SA1 A7+B1
  24949. BX1 X0*X1
  24950. BX7 X6+X1
  24951. SA7 A7+B1 FIRST
  24952. SA6 A7+B1 IN
  24953. SA6 A6+B1 OUT
  24954. SX7 X6+IBUFL
  24955. SA1 A6+B1
  24956. BX1 X0*X1
  24957. BX7 X1+X7
  24958. SA7 A1 LIMIT
  24959.  
  24960. * READ TRANSACTION DIRECTORY.
  24961.  
  24962. READ TL INITIATE READ
  24963. READW TL,A0,TRDMS
  24964. BX3 X1
  24965.  
  24966. * VALIDATE TRANSACTION DIRECTORY.
  24967.  
  24968. SX4 A0
  24969. NG X1,LTR6 IF DIRECTORY EMPTY
  24970. ZR X1,LTR7 IF DIRECTORY TOO LONG
  24971. IX4 X3-X4 NUMBER OF WORDS IN DIRECTORY
  24972. MX6 18
  24973. ZR X4,LTR6 IF DIRECTORY EMPTY
  24974. SA2 LTRD INCREMENT TRANSACTION DIRECTORY COUNT
  24975. SX7 X2+1
  24976. SA7 LTRD
  24977. SA2 LTRA VALIDATE *TRD* HEADER
  24978. SA1 A0+B1 HEADER WORD IN DIRECTORY
  24979. BX4 X6*X1
  24980. IX7 X2-X4
  24981. SB3 X5 FWA OF *TRD*
  24982. NZ X7,LTR8 IF INCORRECT *TRD* HEADER WORD
  24983. SA3 HBUF GET DATA BASE NAME
  24984. SA2 TL
  24985. BX0 X0-X0
  24986. IX4 X2-X3
  24987. MX6 42
  24988. BX6 X6*X4
  24989. SB4 A0+TRDLH FWA OF FIRST TRANSACTION
  24990. ZR X6,LTR2 IF SYSTEM LIBRARY
  24991. MX0 12
  24992. BX0 X0*X2 DATA BASE NAME
  24993. LX0 12
  24994. LTR2 LX1 -18 GET *TRD* LENGTH
  24995. SB7 5 LENGTH OF *TRD* ENTRY
  24996. SB5 X1
  24997. ZR B5,LTR6 IF *TRD* LENGTH IS ZERO
  24998. BX7 X7-X7
  24999. SA7 B4+B5 MAKE SURE LAST WORD IS ZERO
  25000.  
  25001. * CREATE INDEX TO TASKS FOR TRANSACTIONS.
  25002.  
  25003. LTR3 SA1 B3 GET TRANSACTION NAME
  25004. ZR X1,LTR6 IF NO TRANSACTION NAME
  25005. BX7 X1 PUT TRANSACTION NAME IN WORD ONE OF *TRD*
  25006. SB3 B3+B1
  25007. SA7 X5
  25008. BX6 X6-X6
  25009. SX5 X5+B1 INCREMENT POINTER
  25010. LTR4 BX3 X0 DATA BASE NAME
  25011. SA2 B3+ TASK NAME
  25012. SB3 B3+B1
  25013. ZR X2,LTR5 IF NO TASK NAME
  25014. RJ STLD SEARCH FOR TASK NAME
  25015. LTR5 SB7 B7-B1
  25016. LX6 12
  25017. NZ B7,LTR4 IF NOT END OF CONVERSION
  25018. SB7 5
  25019. SA6 X5 PUT TASK ORDINAL INTO *TRD* WORD TWO
  25020. SX5 X5+B1 INCREMENT POINTER
  25021. EQ LTR3 PROCESS NEXT TRANSACTION
  25022.  
  25023. LTR6 SB4 X5+TRDL NEXT AVAILABLE SPACE
  25024. BX7 X7-X7
  25025. SA7 X5 CLEAR LAST WORD
  25026. EQ LTR10 PROCESS NEXT LIBRARY
  25027.  
  25028. LTR7 SB5 LTRB * TRANSACTION DIRECTORY TOO LONG *
  25029. EQ LTR10 PROCESS NEXT LIBRARY
  25030.  
  25031. LTR8 SB5 LTRC * INCORRECT TRANSACTION DIRECTORY HEADER *
  25032.  
  25033. * ISSUE DAYFILE MESSAGE.
  25034.  
  25035. LTR9 SB2 1RZ DISPLAY CODE SEARCH CHARACTER
  25036. SA1 TL GET FILE NAME ASSOCIATED WITH ERROR
  25037. MX0 42
  25038. BX1 X0*X1 LIBRARY NAME TO INSERT
  25039. SB3 DAYB ALTERNATE ASSEMBLY AREA
  25040. SB5 -B5
  25041. RJ SNM SET NAME IN MESSAGE
  25042. MESSAGE DAYB ISSUE DAYFILE MESSAGE
  25043.  
  25044. * PUT LWA OF *TRD* IN *TRD* HEADER.
  25045.  
  25046. LTR10 MX0 42
  25047. SX6 X5-1 LWA OF *TRD*
  25048. SA1 A0+B1 *TRD* HEADER
  25049. BX2 X0*X1
  25050. BX6 X2+X6
  25051. SA6 A1+
  25052. EQ LTR1 PROCESS NEXT LIBRARY
  25053.  
  25054. LTRA VFD 60/0LTRD *TRD* HEADER
  25055. LTRB DATA C* TRANSACTION DIRECTORY TOO LONG - ZZZZZZZ.*
  25056. LTRC DATA C* INCORRECT TRANSACTION DIRECTORY HEADER - ZZZZZZZ.*
  25057. LTRD BSSZ 1 TRANSACTION DIRECTORY COUNTER
  25058. LTRE DATA C* NO TRANSACTION NAME IS DEFINED IN TASK LIBRARY.*
  25059. STLD SPACE 4
  25060. ** STLD SEARCH THE TASK LIBRARY DIRECTORY
  25061. *
  25062. * ENTRY (X2) = LEFT JUSTIFIED TASK NAME
  25063. * (X6) = TASK LIST ACCUMULATOR
  25064. * (X3) = DATA BASE NAME OF TASK LIBRARY
  25065. * = 0 IF SYSTEM TASK LIBRARY
  25066. *
  25067. * EXIT (X6) = TASK BIAS ADDED TO PRIOR CONTENTS
  25068. * (A1) = ADDRESS OF 1ST WORD FOR *TLD* ENTRY MATCHED
  25069. * ABORT *TAF* IF *OFFTASK* NOT FOUND
  25070. *
  25071. * USES X - 1, 2, 3, 6, 7
  25072. * A - 1, 3, 6, 7
  25073. * B - 4, 5, 6
  25074. *
  25075. * MACROS ABORT.
  25076.  
  25077.  
  25078. STLD PS ENTRY/EXIT
  25079. BX7 X3
  25080. SA7 STLDB
  25081. SA6 A7+B1
  25082. ZR X3,STLD3 IF NO DATA BASE SPECIFIED
  25083. SA1 VEDT GET FWA OF EDT
  25084. LX1 -24
  25085. LX7 -12
  25086. SA3 X1+ FWA OF EDT
  25087. LX3 -18
  25088. SB4 X3 EDT COUNT
  25089. LX3 18
  25090. ZR B4,STLD13 IF NO EDTS TO SEARCH
  25091. STLD1 MX6 12
  25092. BX6 X6*X3 EDT DATA BASE NAME
  25093. IX6 X6-X7
  25094. SB4 B4-B1
  25095. ZR X6,STLD2 IF DATA BASE NAME MATCH
  25096. SA3 X3+ LINK TO NEXT EDT
  25097. NZ B4,STLD1 IF MORE EDTS
  25098. EQ STLD13 NO DATA DASE TASK LIBRARY
  25099. STLD2 SA1 A3+4 EDT HEADER + 4
  25100. SB6 X1
  25101. BX7 X1
  25102. LX1 -18
  25103. SB5 X1
  25104. SB6 B6-TLDLE+1
  25105. SA7 STLDB
  25106. NZ X1,STLD4 IF NO DATA BASE TASK LIBRARY
  25107. STLD3 SA3 VTLD START OF *TLD*
  25108. SB6 X3-TLDLE+1 LWA OF SYSTEM *TLD*
  25109. LX3 -24
  25110. SB5 X3 FWA OF *TLD*
  25111. STLD4 MX7 42 MASK FOR TASK NAME
  25112. SX3 B1
  25113. SB4 59
  25114. STLD5 ZR X3,STLD7 IF NO TASK FOUND
  25115. SX3 B6-B5
  25116. LX1 X3,B4
  25117. PL X1,STLD6 IF ODD NUMBER OF ENTRIES REMAIN
  25118. SX3 X3+TLDLE
  25119. STLD6 AX3 1
  25120. SA1 B5+X3 NEXT ENTRY
  25121. BX1 X7*X1
  25122. IX1 X1-X2
  25123. NG X1,STLD11 IF TO RAISE LOWER LIMIT
  25124. ZR X1,STLD10 IF TASK FOUND
  25125. SB6 A1-TLDLE LOWER UPPER LIMIT
  25126. GE B6,B5,STLD5 IF NOT DONE SEARCHING
  25127.  
  25128. * SEARCH *TLD* TRAILING ENTRIES (ENTRIES ADDED DYNAMICALLY BY
  25129. * LIBTASK ARE PLACED AT END OF REGULAR DIRECTORY)
  25130.  
  25131. STLD7 SA1 STLDB
  25132. ZR X1,STLD8 IF NO D.B. SPECIFIED
  25133. SB6 X1+B1 LWA OF SPECIFIED D.B.
  25134. SA1 B6
  25135. EQ STLD9 SEARCH *TLD*
  25136.  
  25137. STLD8 SA1 VTLD GET LAST WORD ADDRESS OF REGULAR *TLD*
  25138. SB6 X1+B1
  25139. SA1 B6
  25140. STLD9 ZR X1,STLD13 IF END OF LIST
  25141. BX1 X7*X1
  25142. IX1 X1-X2 COMPARE TASK NAMES
  25143. ZR X1,STLD10 IF TASK FOUND
  25144. SA1 A1+TLDLE
  25145. EQ STLD9 CONTINUE SEARCH
  25146.  
  25147. * TASK FOUND
  25148.  
  25149. STLD10 SA3 VTLD GET TASK BIAS
  25150. LX3 -24
  25151. SB6 X3-1
  25152. SX7 A1-B6
  25153. SA3 A1+2
  25154. LX3 59-55 LEFT JUSTIFY ON/OFF FLAG
  25155. NG X3,STLD12 IF TASK TURNED OFF
  25156. LX3 59-54-59+55 LEFT JUSTIFY DELETE FLAG
  25157. NG X3,STLD13 IF TASK DELETED
  25158. SA3 STLDB+1 TASK LIST ACCUMULATOR
  25159. LX7 48
  25160. BX6 X3+X7
  25161. EQ STLD *RETURN
  25162.  
  25163. STLD11 SB5 A1+TLDLE
  25164. LE B5,B6,STLD5 IF NOT DONE SEARCHING
  25165. EQ STLD7 NO TASK WITH REQUESTED NAME FOUND
  25166.  
  25167. * CALL A DEFAULT TASK IN PLACE OF TURNED OFF TASK
  25168.  
  25169. STLD12 SA1 STLDA DEFAULT TASK NAME
  25170. BX3 X1-X2 CHECK FOR DEFAULT TASK NAME
  25171. BX2 X1
  25172. ZR X3,STLD14 IF DEFAULT TASK NOT FOUND
  25173. SA3 STLDB
  25174. ZR X3,STLD3 IF SEARCH SYSTEM *TLD* FOR DEFAULT TASK
  25175. SB6 X3-TLDLE+1
  25176. LX3 -18
  25177. SB5 X3
  25178. EQ STLD4 SEARCH *DBTASKL* FOR DEFAULT TASK
  25179.  
  25180. * TASK MATCH NOT FOUND
  25181.  
  25182. STLD13 SA1 STLDB IF *DBTASKL* PRESENT
  25183. BX6 X6-X6
  25184. SA6 A1
  25185. ZR X1,STLD12 IF TASK NOT FOUND
  25186. EQ STLD3 NOW SEARCH SYSTEM *TLD* FOR DESIRED TASK
  25187.  
  25188. * DEFAULT TASK NOT AVAILABLE.
  25189.  
  25190. STLD14 MESSAGE STLDC,0,R * OFFTASK OFF OR UNDEFINED.*
  25191. ABORT ERROR ABORT
  25192.  
  25193. STLDA VFD 42/0LOFFTASK,18/0 TASK TO PROCESS TURNED OFF TASKS
  25194. STLDB BSS 1 DATA BASE FLAG
  25195. BSS 1 TASK LIST ACCUMULATOR
  25196. STLDC DATA C* OFFTASK OFF OR UNDEFINED.*
  25197. ATT SPACE 4,10
  25198. TITLE INITIALIZE DATA MANAGER FILES.
  25199. ATT SPACE 4,30
  25200. ** ATT - ATTACH POOL, TRACE, AND JOURNAL FILES.
  25201. *
  25202. * THIS ROUTINE FIRST CHECKS IF A POOL, TRACE OR JOURNAL
  25203. * FILE IS LOCAL TO THE CONTROL POINT. IF NOT, AN *ATTACH*
  25204. * IS ATTEMPTED ON THE FILE IN THE MODE SPECIFIED. AN
  25205. * EXCEPTION TO THIS IS A DISK FILE ASSOCIATED WITH TAPE
  25206. * JOURNALIZING, WHICH IS ATTACHED IN *WRITE* MODE. IF THE
  25207. * FILE CANNOT BE FOUND, A DIRECT ACCESS PERMANENT FILE IS
  25208. * CREATED IN *WRITE* MODE AND LEFT ATTACHED TO THE
  25209. * CONTROL POINT.
  25210. *
  25211. * ENTRY (B4) = ADDRESS OF CURRENT FET.
  25212. * (X6) = 0 IF ATTACH MODE IS MODIFY.
  25213. * = 1 IF ATTACH MODE IS WRITE.
  25214. * = 2 IF ATTACH DISK JOURNAL FILE ASSOCIATED
  25215. * WITH TAPE JOURNAL.
  25216. * = .LT. 0 IF TAPE JOURNAL FILE.
  25217. * (X0) = NAME OF TAPE JOURNAL FILE IF (X6) IS .LT. 0
  25218. * (X0) = NAME OF TAPE JOURNAL FILE IF (X6) IS NEGATIVE
  25219. * OR = 2.
  25220. *
  25221. * EXIT (X2) .NE. 0 IF FILE ALREADY ATTACHED.
  25222. * TO *DIE12* IF ATTACH ERRORS.
  25223. *
  25224. * USES X - 1, 2, 3, 4, 6.
  25225. * A - 1, 2, 3, 6.
  25226. * B - 3, 5.
  25227. *
  25228. * MACROS ATTACH, DEFINE, SKIPEI, STATUS.
  25229.  
  25230.  
  25231. ATT SUBR ENTRY/EXIT
  25232. SA6 ATTB SAVE ATTACH MODE FLAG
  25233. STATUS B4
  25234. SA1 B4
  25235. MX6 11
  25236. LX1 59-11
  25237. BX6 X6*X1 CHECK IF FILE EXISTS
  25238. SA6 ATTC
  25239. RJ CER CLEAR ERROR STATUS BITS
  25240. NZ X6,ATT3 IF FILE ALREADY AT CONTROL POINT
  25241. ATT1 SA3 ATTB ATTACH MODE
  25242. NZ X3,ATT4 IF ATTACH MODE IS WRITE
  25243. ATTACH B4,,,,M
  25244. ATT2 RJ CER CHECK ERROR STATUS
  25245. SB3 X1-2 TEST FOR FILE NOT FOUND
  25246. NZ X1,ATT6 IF ERROR ON ATTACH
  25247. ATT3 SKIPEI B4,R
  25248. SA2 ATTC ATTACH FLAG
  25249. EQ ATTX RETURN
  25250.  
  25251. ATT4 SA2 B4
  25252. MX4 42
  25253. SB5 X3-2
  25254. BX1 X4*X2
  25255. NZ B5,ATT5 IF NOT TAPE/DISK JOURNAL FILE PROCESSING
  25256. BX1 X4*X0
  25257. ATT5 ATTACH B4,X1,,,W
  25258. EQ ATT2 CHECK FOR ERRORS
  25259.  
  25260. ATT6 NZ B3,DIE12 IF FILE NOT FOUND
  25261. SA3 ATTB
  25262. SA2 B4
  25263. MX4 42
  25264. SB5 X3-2
  25265. BX1 X4*X2 PERMANENT FILE NAME
  25266. NZ B5,ATT7 IF NOT TAPE/DISK JOURNAL FILE PROCESSING
  25267. BX1 X4*X0
  25268. ATT7 DEFINE B4,X1,,,ATTA
  25269. EQ ATT2 CHECK FOR ERRORS
  25270.  
  25271. ATTA VFD 48/0,12/0L"DTYM" DEFAULT DEVICE TYPE
  25272. ATTB CON 0 FLAG FOR ATTACH MODE
  25273. ATTC CON 0 FILE ALREADY AT CONTROL POINT FLAG
  25274. CER SPACE 4,15
  25275. ** CER - CHECK ERROR STATUS.
  25276. *
  25277. * THIS ROUTINE EXAMINES THE ERROR STATUS IN THE FET.
  25278. * IT THEN CLEARS THE STATUS IN THE FET AND RETURNS.
  25279. *
  25280. * ENTRY (X2) = FET FWA.
  25281. *
  25282. * EXIT (X1) = STATUS.
  25283. *
  25284. * USES A - 1, 7.
  25285. * X - 1, 7.
  25286.  
  25287.  
  25288. CER SUBR ENTRY/EXIT
  25289. MX7 42
  25290. SA1 X2
  25291. MX3 -8
  25292. BX7 X7*X1
  25293. AX1 10
  25294. BX1 -X3*X1 ERROR STATUS BITS
  25295. SX3 B1
  25296. IX7 X7+X3
  25297. SA7 A1 CLEAR ERROR STATUS IN FET
  25298. EQ CERX RETURN
  25299. RBL SPACE 4,20
  25300. *** RBL - REPORT BFL INFORMATION.
  25301. *
  25302. * ENTRY (X6) = EXIT CONDITION.
  25303. * (VCMM) = 6/0, 18/TFL, 18/EFL, 18/BFL.
  25304. * (B2) = BFL-(FSTT+FIT+CMMCAP).
  25305. *
  25306. * EXIT MESSAGE ISSUED TO TAF-S DAYFILE STATING BFL
  25307. * INFORMATION.
  25308. *
  25309. * USES X - 0, 1, 6.
  25310. * A - 1, 6.
  25311. * B - 2, 3, 4, 5.
  25312. *
  25313. * CALLS COD, SNM.
  25314. *
  25315. * MACROS MESSAGE.
  25316.  
  25317. RBL SUBR ENTRY/EXIT
  25318. SA1 VCMM GET BFL
  25319. SB4 -B2
  25320. SX1 X1+B4
  25321. RJ COD CONVERT OCTAL TO DISPLAY
  25322. MX0 1
  25323. SB3 B2-B1
  25324. AX0 B3
  25325. BX1 X0*X4
  25326. SB2 1RX REPLACEMENT CHARACTER
  25327. SB5 RBLA MESSAGE ADDRESS
  25328. RJ SNM SET NAME IN MESSAGE
  25329. SA1 VCMM
  25330. SX1 X1+
  25331. RJ COD CONVERT OCTAL TO DISPLAY
  25332. MX0 1
  25333. SB3 B2-B1
  25334. AX0 B3
  25335. BX1 X0*X4
  25336. SB2 1RZ REPLACEMENT CHARACTER
  25337. SB5 RBLA MESSAGE ADDRESS
  25338. RJ SNM SET NAME IN MESSAGE
  25339. MESSAGE RBLA,3 ISSUE DAYFILE MESSAGE
  25340. EQ RBLX EXIT
  25341.  
  25342.  
  25343. RBLA DATA C* BFL = ZZZZZZB, MINIMUM REQUIRED = XXXXXXB.*
  25344. SFD SPACE 4
  25345. ** SFD - SET FAMILY TO DEFAULT.
  25346. *
  25347. * EXIT DEFAULT FAMILY SET.
  25348. *
  25349. * USES X - 6.
  25350. * A - 6.
  25351. *
  25352. * MACROS SETPFP.
  25353.  
  25354.  
  25355.  
  25356. SFD SUBR ENTRY/EXIT
  25357. SX6 10B *SETPFP* FLAGS
  25358. SA6 STIA *SETPFP* CALL BLOCK
  25359. SETPFP STIA SET DEFAULT FAMILY
  25360. EQ SFDX RETURN
  25361. STI SPACE 4,15
  25362. ** STI - SET TAF INDEX.
  25363. *
  25364. * ENTRY (VUSN) = TAF USER NAME.
  25365. * (VFMN) = TAF FAMILY NAME.
  25366. * TRUI = TAF USER INDEX.
  25367. *
  25368. * EXIT TAF USER VALIDATIONS SET.
  25369. *
  25370. * USES X - 0, 1, 2, 6.
  25371. * A - 1, 2, 6.
  25372. *
  25373. * MACROS SETPFP.
  25374.  
  25375.  
  25376. STI SUBR ENTRY/EXIT
  25377. SA1 VUSN TAF USER NAME
  25378. SX6 TRUI TAF USER INDEX
  25379. MX0 42
  25380. BX6 X1+X6
  25381. SA6 STIA+2
  25382. SA1 VFMN TAF FAMILY NAME
  25383. SX2 13B FLAG SETUP FOR *SETPFP*
  25384. BX6 X0*X1
  25385. BX6 X2+X6
  25386. SA6 STIA
  25387. SETPFP STIA
  25388. EQ STIX RETURN
  25389.  
  25390.  
  25391. * CALL BLOCK FOR *SETPFP*.
  25392.  
  25393.  
  25394. STIA CON 0 42/ FAMILY NAME, 14/ , 4/ FLAGS
  25395. CON 0 42/ PACK NAME, 18/ PACK TYPE
  25396. CON 0 42/ USER NAME, 18/ USER INDEX
  25397. UPK SPACE 4,15
  25398. ** UPK - UNPACK AUXILIARY DEVICE INFORMATION FROM *XXJ* FILE.
  25399. *
  25400. * ENTRY (B4) - ARGUMENT COUNT.
  25401. * (B5) - ARGUMENT TABLE.
  25402. * (B7) - LOW CORE AREA USED FOR UNPACKING.
  25403. *
  25404. * EXIT (DEV) - 42/PACKNAME,12/DEVICE TYPE,6/UNIT.
  25405. * (X6) = (DEV)
  25406. *
  25407. * USES A - 1, 3, 4, 6.
  25408. * X - 1, 3, 4, 6, 7.
  25409. * X - 1, 3, 4, 6, 7.
  25410. *
  25411. * CALLS ARG.
  25412.  
  25413.  
  25414. UPK SUBR ENTRY/EXIT
  25415. SA4 B7+B1 FIRST ARGUMENT TO PROCESS
  25416. RJ ARG PROCESS ARGUMENTS
  25417. NZ X1,DIE11 IF ARGUMENT ERROR
  25418. SA3 DEV
  25419. NZ X3,UPK2 IF DEVICE TYPE SPECIFIED
  25420. SA1 ATTA DEFAULT DEVICE TYPE
  25421. BX3 X1
  25422. UPK1 SA1 PAC PACKNAME
  25423. LX3 6
  25424. BX6 X3+X1
  25425. SA6 A3
  25426. EQ UPKX RETURN
  25427.  
  25428. UPK2 LX3 12
  25429. MX4 6
  25430. SX1 1R0
  25431. LX1 -6
  25432. BX7 X4*X3 NUMBER OF UNITS
  25433. IX1 X7-X1 UNIT NUMBER
  25434. ZR X7,UPK1 IF NO UNIT SPECIFIED
  25435. SX6 X3 DEVICE TYPE
  25436. IX3 X1+X6
  25437. EQ UPK1 SET PACKNAME
  25438. VUN SPACE 4,20
  25439. ** VUN - VALIDATE USER NAME.
  25440. *
  25441. * VALIDATE USER NAME SO THAT *TAF* MAY EXECUTE IN A
  25442. * MULTI-FAMILY ENVIRONMENT. USE OF INCORRECT USER NAMES OR
  25443. * USER NAMES NOT VALID FOR A GIVEN FAMILY MAY RESULT IN
  25444. * *TAF*-S ABORTING WHILE SUBMITTING A TASK DUMP FOR *BATCH*
  25445. * PROCESSING.
  25446. *
  25447. * ENTRY (XXJD - XXJD+5) = USER NAME, PASSWORD AND FAMILY NAME.
  25448. *
  25449. * EXIT (XXJD - XXJD+5) IS VALIDATED.
  25450. * (X6) = UI - IF VALID USER NAME.
  25451. * (X6) = 0 - IF INCORRECT USER NAME ON SPECIFIED FAMILY.
  25452. *
  25453. * USES A - 1.
  25454. * X - 1, 6.
  25455. *
  25456. * MACROS SYSTEM.
  25457.  
  25458.  
  25459. VUN SUBR ENTRY/EXIT
  25460. SYSTEM CPM,R,XXJD,56B*100B
  25461. SA1 XXJD+2 GET USER INDEX
  25462. SX6 X1+
  25463. EQ VUNX RETURN
  25464. XXJ SPACE 4,10
  25465. ** XXJ - INITIALIZE *XXJ* FILES. (XX=DATA BASE)
  25466. *
  25467. * THIS ROUTINE GETS THE *XXJ* FILES (XX=DATA BASE) FROM *TAF*-S
  25468. * USER INDEX FOR EACH DATA BASE SPECIFIED IN THE *TCF* FILE.
  25469. * INFORMATION FORM THE STATEMENTS IN THE *XXJ* FILES IS
  25470. * PROCESSED AND PLACED INTO AN *EDT* FOR THE DATA BASE.
  25471. *
  25472. * AN *INITL* CALL TO *TOTAL* IS GENERATED FOR EACH *TOTAL*
  25473. * DATA BASE.
  25474. *
  25475. * THE FORMAT OF THE *XXJ* FILE FOR A *CRM* DATA BASE IS -
  25476. *
  25477. * XXJ
  25478. * USER,USERN,PASSWD,FAMILY. (*USER* OR *ACCOUNT*)
  25479. * BRF,N.
  25480. * XXJOR1,DT,F.
  25481. * XXJOR2,DT,F.
  25482. * XXJOR3,DT,F.
  25483. * XXTASKL,PN=PACKNAM,R=DEV. (OPTIONAL).
  25484. * CRM(XXPF,TY,MODE,USERS,LOCKS,MRL,KL,HASH,
  25485. * REC,FWI,PACKNAM,DEV)
  25486. * (FOLLOWING ONLY FOR MIP FILES)
  25487. * IXN(XXPF,NKY,PACKNAM,DEV)
  25488. * AKY(KN,KO,KL) (ONE PER ALTERNATE KEY)
  25489. * RMKDEF(XXPF,RKW,RKP,KL,O,KF,KS,KG,KC,NL,IE,CH)
  25490. * (ONE PER ALTERNATE KEY)
  25491. *
  25492. * THE FORMAT OF THE *XXJ* FILE FOR A *TOTAL* DATA BASE IS -
  25493. *
  25494. * XXJ
  25495. * THE NEXT STATEMENT IS *ACCOUNT* OR *USER* IN THE FORM
  25496. * ACCOUNT,USERN,PASSWD,FAMILY. OR
  25497. * USER,USERN,PASSWD,FAMILY.
  25498. * XXJOR1,DT,F.
  25499. * XXJOR2,DT,F.
  25500. * XXJOR3,DT,F.
  25501. * XXTASKL,PN=PACKNAM,R=DEV. (OPTIONAL)
  25502. * NL -OR- LG -OR- AI -OR- BA -OR- UL
  25503. * -OR- LG,PN=PACKNAM,R=DEV.
  25504. * -OR- AI,PN=PACKNAM,R=DEV.
  25505. * -OR- BA,PN=PACKNAM,R=DEV.
  25506. * -OR- UL,PN=PACKNAM,R=DEV.
  25507. * AAAA. -OR- AAAA,PN=PACKNAM,R=DEV.
  25508. * ...
  25509. * ...
  25510. * ZZZZ. -OR- ZZZZ,PN=PACKNAM,R=DEV.
  25511. *
  25512. * WHERE XX = DATA BASE NAME.
  25513. * USERN = USER NAME.
  25514. * PASSWD = BATCH PASSWORD.
  25515. * FAMILY = DESIRED FAMILY. (IF OMITTED,
  25516. * DEFAULT FAMILY IS USED.)
  25517. * N = NO. OF BRF FILES FOR THIS D.B. (N IS OPTIONAL).
  25518. * PACKNAM = PACK NAME OF AUXILIARY DEVICE ON
  25519. * WHICH XXTASKL MAY RESIDE.
  25520. * DEV = DEVICE TYPE THE FILE WILL BE
  25521. * RESIDENT ON (DI,MD,...).
  25522. * DT = MT (SEVEN TRACK TAPE).
  25523. * MS (MASS STORAGE).
  25524. * NT (NINE TRACK TAPE).
  25525. * F = B (BLOCKED)
  25526. * R (RECORD)
  25527. * NL = NO LOGGING FOR TOTAL DATA BASE.
  25528. * LG = BEFORE IMAGE LOGGING (LOG RECORD IMAGE BEFORE
  25529. * UPDATING).
  25530. * AI = AFTER IMAGE LOGGING (LOG RECORD IMAGE AFTER
  25531. * UPDATING).
  25532. * BA = BEFORE AND AFTER IMAGE LOGGING.
  25533. * UL = USER LOGGING (USER SUPPLIES ROUTINE *TUSRLG*).
  25534. * AAAA = FOUR CHARACTER DATA BASE FILE NAME FOR TOTAL.
  25535. *
  25536. * XXPF = PERMANENT FILE NAME FOR *CRM*.
  25537. * (DATA FILE ON *CRM* OR INDEX FILE ON *IXN* STATEMENT).
  25538. * TY = FILE TYPE, *IS* FOR INDEX SEQUENTIAL
  25539. * OR *DA* FOR DIRECT ACCESS
  25540. * OR *AK* FOR ACTUAL KEY.
  25541. * MODE = ATTACH MODE FOR FILE.
  25542. * USER = NUMBER OF USERS THAT MAY OPEN FILE
  25543. * CONCURRENTLY.
  25544. * LOCKS = NUMBER OF RECORDS THAT MAY BE LOCKED
  25545. * CONCURRENTLY.
  25546. * MRL = MAXIMUM RECORD LENGTH IN CHARACTERS.
  25547. * KL = KEY LENGTH IN CHARACTERS.
  25548. * HASH = INDIRECT FILE NAME FOR HASHING ROUTINE.
  25549. * REC - FILE RECOVERABILITY INDICATOR.
  25550. * = R, FILE IS TO BE RECOVERED.
  25551. * = N, FILE IS NOT TO BE RECOVERED.
  25552. * FWI - CRM FILE FORCED WRITE INDICATOR.
  25553. * = Y, WRITE IN FORCED MODE.
  25554. * = N, NON-FORCED WRITE MODE.
  25555. * NKY = NUMBER OF ALTERNATE KEYS.
  25556. * KN = ALTERNATE KEY NUMBER (STARTING FROM 1).
  25557. * KO = ALTERNATE KEY OFFSET (STARTING FROM 1). THIS IS
  25558. * THE BEGINNING CHARACTER POSITION OF THE KEY.
  25559. * RKW = RELATIVE WORD IN THE RECORD IN WHICH THE
  25560. * ALTERNATE KEY BEGINS, COUNTING FROM 0.
  25561. * RKP = RELATIVE BEGINNING CHARACTER POSITION.
  25562. * 0 = REQUIRED TO MARK POSITION FOR RESERVED FIELD.
  25563. * KF = KEY FORMAT,
  25564. * 0 OR S - SYMBOLIC.
  25565. * 1 OR I - INTEGER.
  25566. * 2 OR U - UNCOLLATED SYMBOLIC.
  25567. * 3 OR P - PURGE ALTERNATE KEY FROM INDEX.
  25568. * KS = SUBSTRUCTURE FOR EACH PRIMARY KEY LIST IN
  25569. * THE INDEX; (OPTIONAL)
  25570. * U - UNIQUE (DEFAULT).
  25571. * I - INDEXED SEQUENTIAL.
  25572. * F - FIRST-IN FIRST-OUT.
  25573. * KG = LENGTH IN CHARACTERS OF THE REPEATING GROUP
  25574. * IN WHICH THE KEY RESIDES.
  25575. * KC = NUMBER OF OCCURRENCES OF THE REPEATING GROUP.
  25576. * NL = NULL SUPPRESSION; A NULL VALUE IS ALL SPACES
  25577. * (SYMBOLIC KEY) OR ALL ZEROS (INTEGER KEY):
  25578. * 0 - NULL VALUES ARE INDEXED (DEFAULT).
  25579. * N - NULL VALUES ARE NOT INDEXED.
  25580. * IE = INCLUDE/EXCLUDE SPARCE CONTROL CHARACTER:
  25581. * I - INCLUDE SPARCE CONTROL CHARACTER.
  25582. * E - EXCLUDE SPARSE CONTROL CHARACTER.
  25583. * CH = CHARACTERS THAT QUALIFY AS SPARCE CONTROL
  25584. * CHARACTERS.
  25585. * NOTE - *XXJORN* FILES ARE DEFINED SEQUENTIALLY, THAT IS
  25586. * XXJOR3 IMPLIES A PREVIOUS DEFINITION FOR XXJOR2 AND
  25587. * XXJOR1.
  25588. * WHEN THE PN= OR R= PARAMETER IS USED ON A STATEMENT,
  25589. * ONE OR BOTH MAYBE USED.
  25590. *
  25591. * ENTRY (B4) = ADDRESS OF FET.
  25592. * (X5) = DATA BASE NAME.
  25593. * (X5) = ZERO, IF NOT INITIAL CALL.
  25594. *
  25595. * EXIT (B4) = ADDRESS OF FET.
  25596. * TO *DIE6* IF NO *USER* OR *ACCOUNT* STATEMENT IN *XXJ*
  25597. * FILE.
  25598. * TO *DIE8* IF JOURNAL FILE LIMIT EXCEEDED.
  25599. * TO *DIE9* IF NO HEADER ON *XXJ* FILE.
  25600. * TO *DIE10* IF INCORRECT DATA BASE NAME IN FILE.
  25601. * TO *DIE11* IF ERROR ON *XXJ* FILE ARGUMENTS.
  25602. * TO *DIE13* IF JOURNAL FILE TYPE DOES NOT MATCH *XXJ*
  25603. * FILE.
  25604. * TO *DIE21* IF TOO MANY FILES IN DATA BASE.
  25605. * TO *DIE26* IF OVERFLOW OCCURRED DURING INITIALIZATION.
  25606. * TO *DIE27* IF INCORRECT USER.
  25607. * TO *DIE46* IF NO *AKY* STATEMENT PRESENT FOR MIP-FILE.
  25608. * TO *DIE51* IF INCORRECT *BRF* PARAMETER.
  25609. * TO *DIE52* IF NO *BRF* STATEMENT AT ALL.
  25610. * TO *DIE40* IF *CRM* D.M. IS NOT LOADED AND
  25611. * *CRM* D.M. RELATED STATEMENT IS SPECIFIED.
  25612. * TO *DIE42* IF *TOTAL* D.M. IS NOT LOADED AND
  25613. * *TOTAL* D.M. RELATED STATEMENT IS SPECIFIED.
  25614. * INITIALIZATION ALSO ABORTED IF *XXJ* FILE NOT FOUND.
  25615. *
  25616. * USES X - ALL.
  25617. * A - ALL.
  25618. * B - ALL.
  25619. *
  25620. * CALLS ACL, ARG, ATT, CRM, RMK, =TOTAL, UPC, UPK, VUN, ZFN.
  25621. *
  25622. * MACROS ABORT, GET, MESSAGE, READ, READC, REWIND,
  25623. * RECALL, SETUI, WRITER.
  25624.  
  25625.  
  25626. XXJ30 SA1 INTD
  25627. SA2 XXJE NUMBER OF JOURNAL FILES
  25628. SA3 X1+B1 SECOND WORD OF EDT HEADER
  25629. SB4 A0
  25630. LX2 54
  25631. SA5 X1 FIRST WORD OF EDT HEADER
  25632. SX7 B4
  25633. SA7 CCP UPDATE PLACE TO READ IN NEXT EDT
  25634. BX6 X3+X2
  25635. BX7 X7+X5
  25636. SA6 A3+
  25637. SA7 A5 UPDATE LINK WORD IN EDT HEADER
  25638.  
  25639. XXJ SUBR 0 ENTRY/EXIT
  25640. ZR X5,XXJ6 IF NOT FIRST CALL FOR THIS DATA BASE
  25641. SX1 1RJ
  25642. BX6 X5 DATA BASE NAME
  25643. LX1 -18
  25644. SA6 TTIP+TIDB
  25645. SX7 B4+ NEXT AVAILABLE MEMORY LOCATION
  25646. SA7 TTIP+TIAM
  25647. SX6 B1+
  25648. IX5 X5+X1 XXJ (WHERE XX=DATA BASE NAME)
  25649. BX7 X5+X6
  25650. SA7 TL XXJ NAME TO FET
  25651. LX6 44 ERROR PROCESSING BIT
  25652. SA1 A7+B1
  25653. BX6 X6+X1
  25654. SA6 A1
  25655. RJ STI SET TAF INDEX
  25656. RJ SFD SET FAMILY TO DEFAULT
  25657. GET TL GET XXJ FILE
  25658. SA5 TL
  25659. BX4 X5
  25660. MX2 8 CHECK FOR ATTACH ERROR
  25661. LX4 59-17
  25662. BX4 X2*X4
  25663. SA0 B4
  25664. SB5 B0
  25665. NZ X4,XXJ15 IF XXJ FILE NOT FOUND - ABORT
  25666. MX3 42
  25667. BX5 X3*X5
  25668.  
  25669. * PROCESS *XXJ* HEADER.
  25670.  
  25671. READ TL
  25672. READC TL,XXJA,8 READ FIRST STATEMENT ON XXJ FILE
  25673. SA1 XXJA
  25674. RJ ZFN ZERO FILL NAME
  25675. BX7 X1-X5
  25676. NZ X7,DIE9 IF HEADER WORD DOES NOT MATCH
  25677.  
  25678. * PROCESS THE *ACCOUNT* OR *USER* STATEMENT.
  25679.  
  25680. XXJ1 READC TL,XXJA,8
  25681. SB7 XXJP FWA TO UNPACK STATEMENT
  25682. SA5 XXJA FIRST WORD TO UNPACK
  25683. SA4 B4+ SAVE (B4)
  25684. RJ UPC
  25685. MX3 42
  25686. SB4 A4 RESTORE (B4) IN CASE OF AN ERROR
  25687. SA1 B7
  25688. BX1 X3*X1 CHECK FOR ACCOUNT NUMBER
  25689. SA2 XXJB
  25690. SA5 XXJO *USER* STATEMENT
  25691. BX2 X1-X2
  25692. BX5 X1-X5
  25693. SA3 B7+1 ACCOUNT NUMBER
  25694. ZR X2,XXJ2 IF *ACCOUNT* STATEMENT FOUND
  25695. NZ X5,DIE6 IF NO *USER* STATEMENT FOUND
  25696. XXJ2 BX6 X3
  25697. SA6 XXJD+2 USER NAME
  25698. SA3 A3+B1 PASSWORD
  25699. MX1 1 VALIDATE BATCH PASSWORD
  25700. LX1 2-59
  25701. BX7 X3+X1
  25702. SA3 A3+B1 POSSIBLE FAMILY
  25703. SA7 XXJD+1 PASSWORD
  25704. SA5 INITQ SET DEFAULT FAMILY
  25705. BX7 X3
  25706. NZ X3,XXJ3 IF NOT DEFAULT FAMILY
  25707. BX7 X5
  25708. XXJ3 SA7 XXJD FAMILY
  25709. SA7 XXJR SAVE USER FAMILY
  25710. SX7 B0+ CLEAR DEVICE TYPE
  25711. SA7 DTP
  25712. RJ VUN VALIDATE USER NAME
  25713. ZR X6,DIE27 IF INCORRECT USER
  25714. SA1 XXJD+2 USER NAME
  25715. MX0 42
  25716. BX6 X1+X6
  25717. SA6 STIA+2
  25718. SA1 XXJD FAMILY NAME
  25719. SX2 13B FLAG SETTING FOR *SETPFP*
  25720. BX6 X0*X1
  25721. BX6 X2+X6
  25722. SA6 STIA
  25723. SETPFP STIA SET PERMANENT FILE PARAMETERS
  25724. SA1 STIA
  25725. LX1 59-12
  25726. SX7 B0
  25727. NG X1,DIE27 IF ERROR
  25728. SA7 XXJA CLEAR INPUT FOR NEXT READ
  25729. READC TL,XXJA,8
  25730. SA5 XXJA
  25731. NZ X1,XXJX IF NO MORE ENTRIES
  25732. XXJ5 SX7 B0+
  25733. SA7 DEV CLEAR DEVICE TYPE FOR SUBSEQUENT USE
  25734. SA7 PAC
  25735. SA7 XXJQ NO *BRF PASSED* FLAG
  25736.  
  25737. * CHECK FOR *BRF* STATEMENT.
  25738.  
  25739. SB7 XXJP
  25740. RJ UPC UNPACK CONTROL STATEMENT
  25741. SX2 3RBRF
  25742. SA5 B7
  25743. LX2 -18
  25744. BX2 X5-X2
  25745. NZ X2,XXJX IF NO *BRF* STATEMENT - EXIT
  25746.  
  25747. * PROCESS *BRF* STATEMENT.
  25748.  
  25749. BX7 X7-X7
  25750. SA7 TTIP+TIQN
  25751. SA7 XXJA READ NEEDED FLAG
  25752. SA5 B7+B1 NO. OF *BRF-S* TO USE FOR THIS D.B.
  25753. SX7 B1
  25754. SA7 XXJQ *BRF PASSED* FLAG
  25755. RJ DXB
  25756. NZ X4,DIE51 IF NON-NUMERIC *BRF* PARAMETER
  25757. NZ X6,XXJ5.1 IF *BRF* SPECIFICATIONS NONTRIVIAL
  25758. SB6 B6-3
  25759. PL B6,DIE51 IF TOO MANY OR INCORRECT PARAMETER(S)
  25760. XXJ5.1 SX5 X6-BMAX-1
  25761. PL X5,DIE51 IF TOO MANY *BRF-S*
  25762. SA6 TTIP+TIQN
  25763. SB5 8
  25764. SB2 TTIP
  25765. SA1 CDBID
  25766. NG X1,DIE40 IF *CRM* IS NOT LOADED
  25767. RJ CRM
  25768. SA4 TTIP+TIAM
  25769. SB4 X4+ NEXT AVAILABLE MEMORY LOCATION
  25770. EQ XXJX RETURN
  25771.  
  25772. XXJ6 SA1 INTD
  25773. SA5 XXJD+2 USER NAME
  25774. SX4 B4 ADDRESS OF FIRST XXJORN FET
  25775. SA2 X1+B1 SECOND WORD OF EDT HEADER
  25776. LX4 18
  25777. BX6 X4+X2
  25778. BX7 X5
  25779. SA5 XXJD+1 PASSWORD
  25780. SA6 A2
  25781. BX6 X5 PASSWORD
  25782. SA7 A2+B1 EDT HEADER + 2
  25783. SA6 A7+B1 EDT HEADER + 3
  25784. SA2 XXJD FAMILY NAME
  25785. BX7 X2
  25786. SA7 A7+4 EDT HEADER+4
  25787.  
  25788. * INITIALIZE JOURNAL FILES.
  25789.  
  25790. BX7 X7-X7
  25791. SA0 B4
  25792. SX6 A6+1 ADDRESS OF *EDT* HEADER+4
  25793. SA7 XXJE INITIALIZE JOURNAL FILE COUNT
  25794. SA2 XXJA
  25795. BX1 X1-X1 FLAG FOR MORE PROCESSING
  25796. SA6 A5-B1 SAVE ADDRESS FOR PACK NAME PARAMETER
  25797. NZ X2,XXJ8 IF INFORMATION ALREADY PRESENT
  25798. XXJ7 READC TL,XXJA,8 READ STATEMENT IMAGE FROM *XXJ* FILE
  25799. NZ X1,XXJ30 IF NO MORE ENTRIES
  25800. XXJ8 SB7 XXJP
  25801. MX0 18
  25802. SA5 XXJA
  25803. BX6 X5
  25804. LX6 12
  25805. SX3 3RCRM
  25806. LX3 59-17
  25807. BX3 X3-X5
  25808. BX3 X0*X3
  25809. NZ X3,XXJ9 IF NOT *CRM* STATEMENT
  25810. SA1 XXJQ
  25811. ZR X1,DIE52 IF *CRM* STATEMENT WITHOUT PRECEDING *BRF*
  25812. SB5 B0
  25813. SA1 CDBID CHECK IF *CRM* DATA MANAGER IS LOADED
  25814. NG X1,DIE40 IF *CRM* IS NOT LOADED
  25815. RJ CRM PROCESS *CRM* STATEMENT
  25816. READC TL,XXJA,8 READ STATEMENT FROM *XXJ* FILE
  25817. SB7 XXJP FWA FOR UNPACK
  25818. ZR X1,XXJ8.1 IF MORE STATEMENTS
  25819. SX7 A0+ FWA OF AVAILABLE MEMORY
  25820. SB5 4
  25821. SA7 TTIP+TIAM
  25822. SB2 TTIP
  25823. RJ CRM ALLOCATE FILE CONTROL ENTRIES
  25824. EQ XXJ30 NO MORE ENTRIES
  25825.  
  25826. XXJ8.1 MX0 18
  25827. SA5 XXJA
  25828. SX3 3RIXN
  25829. LX3 59-17
  25830. BX3 X3-X5
  25831. BX3 X0*X3
  25832. ZR X3,XXJ8.2 IF *IXN* STATEMENT
  25833. SX7 A0 FWA OF AVAILABLE MEMORY
  25834. SB5 4
  25835. SA7 TTIP+TIAM
  25836. SB2 TTIP
  25837. RJ CRM ALLOCATE FILE CONTROL ENTRIES
  25838. EQ XXJ8 PROCESS STATEMENT
  25839.  
  25840. XXJ8.2 RJ IXN PROCESS *IXN* STATEMENT
  25841. XXJ8.3 READC TL,XXJA,8 READ STATEMENT FROM *XXJ* FILE
  25842. SB7 XXJP FWA FOR UNPACK
  25843. NZ X1,DIE46 IF NO *AKY* STATEMENT
  25844. SX3 3RAKY
  25845. SA5 XXJA
  25846. LX3 59-17
  25847. MX0 18
  25848. BX3 X3-X5
  25849. BX3 X0*X3
  25850. NZ X3,DIE46 IF NOT *AKY* STATEMENT
  25851. RJ AKY PROCESS *AKY* STATEMENT
  25852. SA5 TTIP+TINK
  25853. NZ X5,XXJ8.3 IF MORE *AKY* STATEMENTS EXPECTED
  25854. RJ RMK PROCESS *RMKDEF* STATEMENTS
  25855. NZ X1,XXJ30 IF NO MORE ENTRIES
  25856. EQ XXJ8 PROCESS NEXT STATEMENT
  25857.  
  25858. XXJ9 SA6 TLF SET *TOTAL* LOG FLAG
  25859. SX7 X6-2RLG
  25860. ZR X7,XXJ17 IF LOGGING REQUESTED FOR TOTAL
  25861. SX7 X6-2RBA
  25862. ZR X7,XXJ17 IF BEFORE AND AFTER IMAGE LOGGING
  25863. SX7 X6-2RAI
  25864. ZR X7,XXJ17 IF AFTER IMAGE LOGGING
  25865. SX7 X6-2RNL
  25866. ZR X7,XXJ19 IF NO LOGGING REQUESTED FOR TOTAL
  25867. BX6 X5
  25868. MX0 18
  25869. BX6 X0*X6
  25870. LX6 18
  25871. SX7 X6-3RLG,
  25872. ZR X7,XXJ18 IF LOGGING REQUESTED FOR TOTAL
  25873. SX7 X6-3RAI,
  25874. ZR X7,XXJ18 IF AFTER IMAGE LOGGING
  25875. SX7 X6-3RBA,
  25876. ZR X7,XXJ18 IF BEFORE AND AFTER IMAGE LOGGING
  25877. SX7 X6-3RNL.
  25878. ZR X7,XXJ19 IF NO LOGGING REQUESTED FOR TOTAL
  25879.  
  25880. * PROCESS *XXJOR* STATEMENT.
  25881.  
  25882. RJ UPC UNPACK PARAMETERS FROM STATEMENT
  25883. NZ X6,DIE11 IF ERROR IN ARGUMENTS
  25884. SA1 TL
  25885. SA2 B7 DATA BASE NAME
  25886. MX6 12
  25887. BX1 X6*X1
  25888. BX3 X6*X2
  25889. BX3 X3-X1
  25890. SA4 XXJH
  25891. BX2 -X6*X2
  25892. BX1 X4-X2
  25893. BX0 X1
  25894. AX0 30
  25895. NZ X0,XXJ16 IF NOT *XXJOR*
  25896. NZ X3,DIE10 IF INCORRECT DATA BASE NAME
  25897. SX3 1R0
  25898. LX1 -24
  25899. IX3 X1-X3
  25900. SB2 B7+ FWA OF ARGUMENTS
  25901. SA1 XXJE CHECK NUMERIC FIELD IN FILE NAME
  25902. SX7 B1
  25903. IX7 X7+X1 BUMP JOURNAL FILE COUNT
  25904. IX1 X3-X7
  25905. SB4 B6-B1 ARGUMENT COUNT
  25906. NZ X1,DIE11 IF ERROR IN JOURNAL FILE NAME
  25907. SA7 A1
  25908. SA4 B2+B1 FIRST ARGUMENT
  25909. SX7 X7-4
  25910. PL X7,DIE8 IF JOURNAL FILE LIMIT EXCEEDED
  25911. SB5 XXJF ARGUMENT TABLE
  25912. RJ ARG PROCESS ARGUMENTS
  25913. NZ X1,DIE11 IF ARGUMENT ERROR
  25914. SA1 TYP
  25915. SX5 0
  25916. ZR X1,XXJ10 IF MS
  25917. SX2 X1-1
  25918. ZR X2,XXJ10 IF MT
  25919. SX1 1
  25920. SX5 B1 SET NT FLAG
  25921. LX5 56
  25922. XXJ10 SA2 BNS
  25923. LX1 59
  25924. BX6 X2+X1 TAPE/DISK AND BUFFERED/NON BUFFERED STATUS
  25925. SA6 A0+7
  25926. SX4 B1+ ERROR PROCESSING
  25927. ZR X1,XXJ11 IF NOT A TAPE FILE
  25928. SX4 3 ERROR AND USER PROCESSING
  25929. XXJ11 SX6 DBBF
  25930. SX2 JFETL-5 FET LENGTH VALUE
  25931. LX4 44
  25932. LX2 18
  25933. BX2 X2+X4
  25934. BX7 X6+X2
  25935. SA7 A0+B1 FIRST
  25936. SA6 A7+B1 IN
  25937. SA6 A6+B1 OUT
  25938. SA1 B7 FILE NAME
  25939. SX7 DBBF+DBBFL
  25940. SA7 A6+B1 LIMIT
  25941. SX6 B1
  25942. BX6 X1+X6 FILE NAME
  25943. SA6 A0
  25944. BX6 X6-X6
  25945. SB4 A0 FET ADDRESS
  25946. SB5 A0+8
  25947. SB6 A0+13
  25948. + SA6 B5 ZERO OUT FET AREA
  25949. SB5 B5+B1
  25950. NE B5,B6,* LOOP
  25951. SB5 B4-IFL=
  25952. PL B5,DIE26 IF OVERFLOW DURING INITIALIZATION
  25953. SA1 B4+7
  25954. PL X1,XXJ13 IF NOT A TAPE FILE
  25955. MX6 1 ATTACH MODE FLAG
  25956. RJ ATT ATTACH JOURNAL FILE
  25957. ZR X2,XXJ14 IF FILE NOT PREVIOUSLY ATTACHED
  25958. SA1 B4+B1
  25959. MX6 12
  25960. BX1 X6*X1
  25961. LX1 12
  25962. SX2 X1-2RMT-4000B DEVICE TYPE MT (UPPER BIT SET)
  25963. ZR X5,XXJ12 IF CHECK FOR 7 TRACK TAPE
  25964. SX2 X1-2RNT-4000B DEVICE TYPE NT (UPPER BIT SET)
  25965. XXJ12 NZ X2,DIE13 IF JOURNAL FILE TYPE DOES NOT MATCH
  25966. SA3 B4
  25967. MX6 36
  25968. SX2 100B+1RT
  25969. BX6 X6*X3
  25970. LX2 -6
  25971. LX6 -6
  25972. BX0 X3 SAVE NAME OF TAPE JOURNAL FILE
  25973. IX7 X2+X6
  25974. SA0 B4 SAVE (B4)
  25975. SA7 DISK RENAME TAPE JOURNAL FILE (TXXJORN)
  25976. SX6 B1+B1 FLAG FOR TAPE JOURNAL FILE PROCESSING
  25977. SB4 A7
  25978. RJ ATT ATTACH DISK JOURNAL ASSOCIATED WITH TAPE
  25979. SB4 A0+ RESTORE ORIGINAL TAPE JOURNAL POINTER
  25980. REWIND DISK
  25981. WRITER X2
  25982. EQ XXJ14 CONTINUE PROCESSING
  25983.  
  25984. XXJ13 BX6 X6-X6 ATTACH MODE FLAG
  25985. RJ ATT ATTACH FILE IN MODIFY MODE
  25986. SA1 B4+B1
  25987. NG X1,DIE13 IF JOURNAL FILE TYPE NOT DISK
  25988. XXJ14 BX6 X5
  25989. SA6 A0+8 MT/NT FLAG
  25990. SX7 B0
  25991. SA7 A6+B1
  25992. SB4 B4+JFETL
  25993. SA0 B4
  25994. EQ XXJ7 LOOP
  25995.  
  25996. XXJ15 SA1 MSGQ
  25997. MX2 18
  25998. BX6 X2*X5 XXJ FILE NAME
  25999. LX2 -6
  26000. LX6 -6
  26001. BX2 -X2*X1
  26002. BX6 X2+X6 MERGE FILE NAME INTO MESSAGE
  26003. SA6 A1
  26004. MESSAGE MSGQ,0,R * XXJ FILE NOT FOUND.*
  26005. ABORT ABORT
  26006.  
  26007. * PROCESS *XXTASKL* STATEMENT.
  26008.  
  26009. XXJ16 SA4 XXJI
  26010. IX6 X2-X4
  26011. LX6 -24
  26012. NZ X6,DIE11 IF INCORRECT ENTRY
  26013. NZ X3,DIE10 IF INCORRECT DATA BASE NAME
  26014. SB5 XXJJ LIST FOR ARG
  26015. RJ UPK UNPACK PARAMETERS
  26016. SA3 DEV DEVICE TYPE
  26017. SA5 INTD FWA OF EDT HEADER
  26018. BX7 X7-X7
  26019. BX6 X3
  26020. SA6 X5+5 UPDATE EDT HEADER + 5
  26021. SA7 A3 CLEAR DEVICE TYPE
  26022. SA7 PAC CLEAR PACK NAME
  26023. SA1 TFLAG XXJ FILE TYPE FLAG
  26024. SA7 XXJA
  26025. NZ X1,XXJ7 IF TOTAL XXJ FILE
  26026. EQ XXJ30 GO TO NEXT STEP
  26027.  
  26028. * ADD TERMINATOR TO *LG*, *AI*, OR *BA* STATEMENT.
  26029.  
  26030. XXJ17 SX0 1R.
  26031. LX0 47-5
  26032. BX6 X5+X0
  26033. SA6 A5
  26034. BX5 X6
  26035.  
  26036. * SETUP XXTLOG INFORMATION IN EDT AREA.
  26037.  
  26038. XXJ18 RJ UPC UNPACK STATEMENT
  26039. NZ X6,DIE11 IF ERROR IN ARGUMENTS
  26040. SB4 B6-1 NUMBER OF ARGUMENTS
  26041. SB5 XXJJ LIST FOR ARG
  26042. RJ UPK GET TLOG PARAMETERS
  26043. SX7 0
  26044. SA7 XXJA CLEAR FOR NEXT STATEMENT
  26045. SA7 DEV
  26046. SA7 DTP
  26047. SA7 PAC
  26048. SA2 XXJN GET DATA BASE ID AND BUILD XXTLOG IN EDT
  26049. SA3 IFARA
  26050. SA6 A0+B1 SAVE IN EDT
  26051. LX3 -12
  26052. BX7 X2+X3
  26053. SA7 A0
  26054. SA0 A0+TFEN
  26055. EQ XXJ20 CONTINUE PROCESSING
  26056.  
  26057. * SETUP START OF EDT AREA FOR NO LOGGING.
  26058.  
  26059. XXJ19 SA2 XXJM
  26060. BX7 X2
  26061. SA7 A0 FAKE FILE NAME WHEN NO LOGGING
  26062. SA0 A0+TFEN
  26063.  
  26064. * INITIALIZE A DATA BASE FOR TOTAL.
  26065.  
  26066. XXJ20 SA1 TDBID CHECK IF *TOTAL* DATA MANAGER IS LOADED
  26067. NG X1,DIE42 IF *TOTAL* DATA MANAGER IS NOT LOADED
  26068. SA1 XXJK DBMOD NAME
  26069. MX0 12
  26070. BX3 X0*X1 DATA BASE ID
  26071. SA2 TOTIN INITIAL CALL HEADER
  26072. LX3 12
  26073. MX0 48
  26074. BX2 X0*X2
  26075. BX6 X2+X3
  26076. SA6 A0+2*TMAXFIL FIRST WORD OF SCHEMA LIST FOR INITL CALL
  26077. SA2 A2+1
  26078. SX7 A6
  26079. MX0 24
  26080. SA7 SA0 SAVE SCHEMA ADDRESS
  26081. LX1 12
  26082. BX1 X0*X1
  26083. BX6 X1+X2
  26084. SA6 A6+1 SECOND WORD OF LIST
  26085. BX6 X6-X6
  26086. SB5 60 INITIAL SHIFT COUNT FOR ACL
  26087. SA6 A6+B1 CLEAR NEXT WORD
  26088. BX7 X7-X7
  26089. SX6 B5 SAVE B REG 5, 6
  26090. SA7 XXJL CLEAR FILE COUNT
  26091. LX6 18
  26092. SX7 A6 (B6) FOR ACL
  26093. BX7 X6+X7
  26094. SA7 SBS
  26095. SA2 TLF READ TOTAL LOG FLAG
  26096. LX2 60-12
  26097. MX0 12
  26098. BX2 X0*X2
  26099. SB7 B1+B1 NUMBER OF CHARACTERS
  26100. RJ ACL PLACE CHARACTERS IN SCHEMA LIST
  26101.  
  26102. * READ TOTAL DATA BASE FILE NAMES.
  26103.  
  26104. XXJ21 READC TL,XXJA,8 GET NEXT FILE NAME
  26105. NZ X1,XXJ23 IF NO MORE FILES
  26106. SB7 XXJP FWA FOR UNPACK
  26107. SA5 XXJA
  26108.  
  26109. * TEST FOR ONLY FILE NAME.
  26110.  
  26111. MX0 24
  26112. BX0 -X0*X5
  26113. NZ X0,XXJ22 IF MORE THAN FILE NAME
  26114. SX0 1R. ADD TERMINATOR
  26115. LX0 35-5
  26116. BX6 X0+X5
  26117. SA6 A5
  26118. BX5 X6
  26119. XXJ22 RJ UPC UNPACK STATEMENT
  26120. NZ X6,DIE11 IF ERROR IN ARGUMENTS
  26121. SB4 B6-1 AGRUMENT COUNT
  26122. SB5 XXJJ LIST FOR ARG
  26123. RJ UPK UNPACK PARAMETERS
  26124. SX7 0
  26125. SA7 XXJA CLEAR FOR NEXT STATEMENT
  26126. SA7 DEV
  26127. SA7 DTP
  26128. SA7 PAC
  26129. SA1 XXJL CHECK IF TOO MANY FILES IN DATA BASE
  26130. SA6 A0+1 PUT IN EDT
  26131. SX0 X1-TMAXFIL-1
  26132. SA2 XXJP FILE NAME
  26133. SA3 XXJN DATA BASE ID
  26134. LX2 -12
  26135. SX7 X1+B1 ADVANCE FILE COUNT
  26136. BX6 X2+X3
  26137. LX2 12
  26138. PL X0,DIE21 IF TOO MANY FILES
  26139. SA6 A0 SAVE NAME IN EDT
  26140. SA7 A1 RESTORE FILE COUNT
  26141. SA0 A0+TFEN
  26142. SB7 4
  26143. RJ ACL PLACE IN LIST
  26144. SA2 PRIV
  26145. SB7 4
  26146. RJ ACL PLACE IN LIST
  26147. SA2 STAT
  26148. SB7 4
  26149. RJ ACL PLACE IN LIST
  26150. EQ XXJ21 CONTINUE PROCESSING
  26151.  
  26152. XXJ23 SA2 EOL END.
  26153. SB7 4
  26154. RJ ACL PLACE IN LIST
  26155. BX7 X7-X7
  26156. SA7 B6+B1 MAKE SURE OF ZERO WORD
  26157. SA2 SA0 SCHEMA ADDRESS
  26158. SA1 SCHEMA POINT TO SCHEMA LIST
  26159. MX0 42
  26160. BX1 X0*X1
  26161. BX7 X1+X2 ADD LIST ADDRESS
  26162. SA7 A1
  26163. SA1 STAT
  26164. BX6 X1
  26165. SX7 A0
  26166. SA6 STATUS
  26167. SA1 TQUE TOTAL INITIALIZATION QUEUE ENTRY
  26168. SA7 SA0 SAVE A0
  26169. BX6 X1
  26170. SA6 IRIQA QUEUE ENTRY
  26171. XXJ24 RJ XXJ24 INITIALIZE THE DATA BASE
  26172. * RJ =XTOTAL (CALL TOTAL)
  26173. SB1 1
  26174.  
  26175. * WAIT FOR TOTAL TO COMPLETE THE INITL CALL.
  26176.  
  26177. SA1 STATUS STATUS WORD
  26178. SA2 STAT PRESET STATUS
  26179. BX3 X1-X2
  26180. NZ X3,XXJ25 IF STATUS HAS CHANGED
  26181. RECALL
  26182. EQ XXJ24 CONTINUE PROCESSING
  26183.  
  26184. * CHECK IF TOTAL INITIALIZED CORRECTLY.
  26185.  
  26186. XXJ25 SA3 SA0
  26187. SA2 STATOK
  26188. SA0 X3
  26189. BX3 X1-X2
  26190. BX6 X1
  26191. ZR X3,XXJ28 IF INITIALIZED OKAY
  26192.  
  26193. * ISSUE MESSAGE AND ABORT TAF.
  26194.  
  26195. SA1 SCHEMA GET LIST ADDRESS
  26196. SA6 TMES2+1 STATUS TO MESSAGE
  26197. MX0 12
  26198. SA2 X1
  26199. SA4 A2+B1
  26200. LX2 -12
  26201. MX3 24
  26202. BX2 X0*X2 DATA BASE NAME - UPPER TWO
  26203. BX4 X3*X4
  26204. SA3 TMES1
  26205. MX0 36
  26206. LX4 -12
  26207. BX2 X2+X4 DATA BASE NAME
  26208. BX3 -X0*X3
  26209. BX6 X2+X3
  26210. SA6 A3 SET IN MESSAGE
  26211. MESSAGE TMES1,,R DBMOD NOT INITIALIZED
  26212. MESSAGE TMES2,,R TOTAL STATUS
  26213. SB7 A2-B1
  26214. XXJ26 SA2 B7+B1 READ PARAMETER LIST AND DISPLAY
  26215. ZR X2,XXJ27 IF END OF PARAMETER LIST
  26216. SB7 B7+B1
  26217. BX6 X2
  26218. SA6 TMES3
  26219. MESSAGE TMES3,,R TOTAL PARAMETER LIST WORD
  26220. EQ XXJ26 CONTINUE PROCESSING
  26221.  
  26222. XXJ27 ABORT
  26223.  
  26224. * CLEAR TOTAL PARAMETER LIST.
  26225.  
  26226. XXJ28 SA1 SCHEMA
  26227. MX7 0
  26228. SB7 X1 ADDRESS OF LIST
  26229. XXJ29 SA1 B7
  26230. ZR X1,XXJ30 IF END OF LIST
  26231. SB7 B7+B1
  26232. SA7 A1
  26233. EQ XXJ29 CONTINUE PROCESSING
  26234.  
  26235.  
  26236. XXJA BSS 8 WORKING BUFFER
  26237. XXJB VFD 42/7LACCOUNT,18/0
  26238.  
  26239. * *CPM* PARAMETER BLOCK.
  26240.  
  26241. XXJD CON 0 FAMILY NAME
  26242. CON 0 PASSWORD
  26243. CON 0 USER NAME
  26244. BSSZ 10 PARAMETERS
  26245.  
  26246. XXJE BSS 1 JOURNAL FILE COUNT
  26247.  
  26248. XXJF BSS 0
  26249. MS ARG -XXJG,TYP
  26250. NT ARG -XXJG-2,TYP
  26251. MT ARG -XXJG-1,TYP
  26252. B ARG -XXJG,BNS
  26253. R ARG -XXJG-1,BNS
  26254. ARG
  26255.  
  26256. XXJG CON 0
  26257. CON 1
  26258. CON 2
  26259.  
  26260. XXJH VFD 12/0,18/0LJOR,30/0
  26261. XXJI VFD 12/0,30/0LTASKL,18/0
  26262. XXJJ BSS 0
  26263. PN ARG XXJG,PAC
  26264. R ARG XXJG,DEV
  26265. ARG
  26266. XXJK CON 0 CURRENT DBMOD NAME
  26267. XXJL BSSZ 1 FILES IN DATA BASE
  26268. XXJM VFD 60/0LFILENAMES
  26269. XXJN BSSZ 1 CURRENT DATA BASE ID
  26270. XXJO DATA 0LUSER CHECK FOR *USER* STATEMENT
  26271. XXJP BSS 14
  26272. XXJQ BSS 1 *BRF PASSED* FLAG
  26273. XXJR BSS 1 SAVE USER FAMILY NAME HERE
  26274. XXJS BSSZ 1 NUMBER OF ALTERNATE KEYS
  26275.  
  26276. TYP BSS 1 TAPE/DISK STATUS
  26277. BNS BSS 1 BUFFERED/NON BUFFERED STATUS
  26278. PAC BSSZ 1 PACK NAME
  26279. DEV BSSZ 1 DEVICE TYPE
  26280. DTP BSSZ 1 DEVICE TYPE AND UNIT FOR EDT
  26281.  
  26282.  
  26283. SA0 BSSZ 1 SAVE A0
  26284. SBS BSSZ 1 SAVE B5 ABD B6
  26285. TFLAG BSSZ 1 TOTAL XXJ FLAG
  26286. TLF BSSZ 1 TOTAL LOG FLAG
  26287.  
  26288. TOTIN VFD 60/6L**TAF
  26289. VFD 24/0,36/6LUPDATE
  26290. STAT VFD 60/4L++++
  26291. STATOK VFD 60/4L****
  26292. TMES1 DATA C*XXXXXX NOT INITIALIZED BY TOTAL.*
  26293. TMES2 DATA C*STATUS IS *
  26294. TMES3 DATA C* *
  26295.  
  26296.  
  26297. TQUE VFD 24/0,6/77B,6/0,1/1,5/0,18/ILIST
  26298. ILIST VFD 6/4,18/4,12/50B,6/33B,18/TYPE
  26299. VFD 6/4,18/4,12/50B,6/33B,18/STATUS
  26300. SCHEMA VFD 6/4,18/4,12/50B,6/33B,18/-0
  26301. VFD 6/4,18/4,12/50B,6/33B,18/EOL
  26302. BSSZ 1
  26303. TYPE VFD 60/5LINITL
  26304. STATUS VFD 60/4L++++
  26305. PRIV VFD 60/4LPRIV
  26306. EOL VFD 60/4LEND.
  26307. ACL SPACE 4,10
  26308. ** ACL - ADD CHARACTERS TO A LIST.
  26309. *
  26310. * ENTRY (X2) = CHARACTER STRING LEFT JUSTIFIED.
  26311. * (B7) = NUMBER OF CHARACTERS IN STRING.
  26312. * (SB5) = B REGISTERS 5, 6.
  26313. *
  26314. * USES X - ALL.
  26315. * A - 4, 6, 7.
  26316. * B - 4, 5, 6, 7.
  26317.  
  26318.  
  26319. ACL2 SX6 B5 SAVE B5 AND B6
  26320. SX7 B6
  26321. LX6 18
  26322. BX7 X6+X7
  26323. SA7 SBS
  26324.  
  26325.  
  26326. ACL SUBR ENTRY/EXIT
  26327. SA1 SBS SETUP B5 AND B6
  26328. MX0 6
  26329. SB6 X1
  26330. LX1 -18
  26331. SB5 X1
  26332. ACL1 ZR B7,ACL2 IF NO MORE CHARACTERS
  26333. LX1 X0,B5
  26334. LX3 X2,B5
  26335. LX2 6
  26336. SB5 B5-6
  26337. SB7 B7-B1
  26338. SA4 B6 READ CURRENT WORD OF LIST
  26339. BX3 X1*X3
  26340. BX6 X3+X4
  26341. SA6 A4 CHARACTER MERGED
  26342. NZ B5,ACL1 IF SAME WORD
  26343. SB6 B6+1
  26344. MX7 0
  26345. SB5 60
  26346. SA7 B6 CLEAR NEXT WORD
  26347. EQ ACL1 CONTINUE PROCESSING
  26348. ERR EJECT
  26349. * ERROR EXITS FOR DATA MANAGER INITIALIZATION.
  26350. *
  26351. * ENTRY (B5) - ERROR CODE NUMBER.
  26352. * (B4) - FWA OF FET.
  26353.  
  26354.  
  26355. * DATA MANAGER INITIALIZATION ERROR PROCESSOR.
  26356.  
  26357. DIE MX2 42
  26358. SA5 B4 FIRST WORD OF FET
  26359. BX5 X2*X5
  26360. SX2 B4 FET FWA
  26361. SB2 ERRTBLL
  26362. GT B5,B2,ERRA2 IF INCORRECT ERROR MESSAGE
  26363. SA1 ERRTBL+B5-1 PICK UP ADDRESS OF ERROR MESSAGE
  26364. SA4 X1
  26365. SB2 6
  26366. EQ B2,B5,DIE12 IF ATTACH ERROR
  26367. SB2 4
  26368. NE B2,B5,DIE1 IF NOT ERROR TYPE 4
  26369. SA6 A4+2 D.B. TO ERROR MESSAGE
  26370. EQ ERRA1 PROCESS ERROR
  26371.  
  26372. DIE1 SB2 5
  26373. NE B2,B5,ERRA1 NOT SPECIAL CASE ERROR
  26374. SA6 A4+3 D.B. TO ERROR MESSAGE
  26375. EQ ERRA1
  26376.  
  26377. DIE4 SX1 MSGD * NO DATA BASE ID FOR DATA MANAGER.*
  26378. EQ ERRA1
  26379.  
  26380. DIE5 SX1 MSGE * TOO MANY DATA BASE NAMES.*
  26381. EQ ERRA1
  26382.  
  26383. DIE6 SB5 MSGF * NO USER STATEMENT IN XXJ FILE.*
  26384. EQ DIE7 PUT FILE NAME IN MESSAGE
  26385.  
  26386. DIE7 SB2 1RX REPLACEMENT CHARACTER IN MESSAGE
  26387. SA1 TL DATA BASE NAME
  26388. MX0 42
  26389. BX1 X0*X1
  26390. RJ SNM SET NAME IN MESSAGE
  26391. SX2 B5 ERROR MESSAGE
  26392. EQ ERRA3 WRITE ERROR MESSAGE
  26393.  
  26394. DIE8 SB5 MSGG * TOO MANY TAF JOURNAL FILES IN XXJ FILE.*
  26395. EQ DIE7 PUT FILE NAME IN MESSAGE
  26396.  
  26397. DIE9 SB5 MSGH * MISSING HEADER WORD ON XXJ FILE.*
  26398. EQ DIE7 PUT FILE NAME IN MESSAGE
  26399.  
  26400. DIE10 SB5 MSGI * INCORRECT DATA BASE IN XXJ FILE.*
  26401. EQ DIE7 PUT FILE NAME IN MESSAGE
  26402.  
  26403. DIE11 SB5 MSGJ * ERROR IN XXJ FILE ARGUMENTS.*
  26404. EQ DIE7 PUT FILE NAME IN MESSAGE
  26405.  
  26406. DIE12 SB2 1RX
  26407. SA1 X2+ READ DATA BASE FILE NAME
  26408. MX0 42
  26409. BX1 X0*X1
  26410. SB5 MSGK * ATTACH ERROR ON - XXXXXXX.*
  26411. RJ SNM SET NAME IN MESSAGE
  26412. SX1 B5
  26413. EQ ERRA1
  26414.  
  26415. DIE13 SB5 MSGR * JOURNAL TYPE DOES NOT MATCH XXJ FILE.*
  26416. EQ DIE7 PUT FILE NAME IN MESSAGE
  26417.  
  26418. DIE14 SX1 MSGT * NO DATA BASE NAME IN XXJ FOR TOTAL.*
  26419. EQ ERRA1
  26420.  
  26421. DIE15 SX1 MSGU * INCORRECT TCF ENTRY.*
  26422. EQ ERRA1
  26423.  
  26424. DIE18 SX1 MSGX * UNABLE TO ATTACH TOTAL BINARIES.*
  26425. EQ ERRA1
  26426.  
  26427. DIE19 SX1 MSGY * UNABLE TO ATTACH TOTAL DBMOD BINARIES.*
  26428. EQ ERRA1
  26429.  
  26430. DIE20 SX1 MSGZ * ERROR IN LOADING TOTAL.*
  26431. EQ ERRA1
  26432.  
  26433. DIE21 SX1 MSGAA * TOO MANY FILES IN TOTAL DATA BASE.*
  26434. EQ ERRA1
  26435.  
  26436. DIE23 SX1 MSGAB * ERROR IN LOADING AIP.*
  26437. EQ ERRA1 PROCESS ERROR
  26438.  
  26439. DIE24 SX1 MSGAD * INCORRECT DATA BASE NAME ON DMS.*
  26440. EQ ERRA1 PROCESS ERROR
  26441.  
  26442. DIE25 SX1 MSGAE * AIP TOO LARGE FOR LOADING.*
  26443. EQ ERRA1 PROCESS ERROR
  26444.  
  26445. DIE26 SX1 MSGAF * MEMORY OVERFLOW DURING INITIALIZATION.*
  26446. EQ ERRA1 PROCESS ERROR
  26447.  
  26448. DIE27 MX0 42
  26449. SA1 XXJD+2 READ INCORRECT USER NAME
  26450. BX1 X0*X1
  26451. SB2 1RX REPLACEMENT CHARACTER
  26452. SB5 MSGAI FWA OF MESSAGE
  26453. RJ SNM SET NAME IN MESSAGE
  26454. SA1 XXJD READ FAMILY NAME
  26455. SB2 1RY REPLACEMENT CHARACTER
  26456. SB5 MSGAI+2 FWA OF MESSAGE
  26457. RJ SNM SET NAME IN MESSAGE
  26458. SX1 MSGAI
  26459. EQ ERRA1 WRITE ERROR MESSAGE
  26460.  
  26461. DIE28 SX1 MSGAX * ERROR IN LOADING AAMI.*
  26462. EQ ERRA1 WRITE ERROR MESSAGE
  26463.  
  26464. DIE29 SX2 MSGAL * FILE NAME MUST BE 2-7 CHARACTERS.*
  26465. EQ ERRA3 WRITE COMMAND
  26466.  
  26467. DIE30 SX2 MSGAM * FILE TYPE MUST BE AK, DA, OR IS.*
  26468. EQ ERRA3 WRITE COMMAND
  26469.  
  26470. DIE31 SX2 MSGAN * ATTACH MODE MUST BE W, M, R, OR RM.*
  26471. EQ ERRA3 WRITE COMMAND
  26472.  
  26473. DIE32 SX2 MSGAO * INCORRECT NUMBER FOR USERS.*
  26474. EQ ERRA3 WRITE COMMAND
  26475.  
  26476. DIE33 SX2 MSGAP * INCORRECT NUMBER FOR LOCKS.*
  26477. EQ ERRA3 WRITE COMMAND
  26478.  
  26479. DIE34 SX2 MSGAQ * INCORRECT NUMBER FOR KEY LENGTH.*
  26480. EQ ERRA3 WRITE COMMAND
  26481.  
  26482. DIE35 SX2 MSGAR * INCORRECT NUMBER FOR RECORD LENGTH.*
  26483. EQ ERRA3 WRITE COMMAND
  26484.  
  26485. DIE36 SX2 MSGAS * FIELD LENGTH EXCEEDED FOR LOCKS.*
  26486. EQ ERRA3 WRITE COMMAND
  26487.  
  26488. DIE37 SX2 MSGAT * FIELD LENGTH EXCEEDED FOR USERS.*
  26489. EQ ERRA3 WRITE COMMAND
  26490.  
  26491. DIE38 SX1 MSGAU * FIELD LENGTH EXCEEDED FOR RECORD.*
  26492. EQ ERRA1 WRITE ERROR MESSAGE
  26493.  
  26494. DIE40 SX2 MSGV * XXJ FILE ERROR - CRM DM NOT LOADED.*
  26495. EQ DIE7 PUT FILE NAME IN MESSAGE
  26496.  
  26497. DIE41 SX2 MSGAW * FIELD LENGTH EXCEEDED FOR CMM.*
  26498. EQ ERRA3 WRITE ERROR MESSAGE
  26499.  
  26500. DIE42 SX2 MSGW * XXJ FILE ERROR - TOTAL DM NOT LOADED.*
  26501. EQ DIE7 PUT FILE NAME IN MESSAGE
  26502.  
  26503. DIE43 SB5 MSGAZ * FILE XXXXXXX NOT FOUND.*
  26504. DIE44 SA1 TTIP+TIHR HASHING ROUTINE
  26505. SB2 1RX REPLACEMENT CHARACTER IN MESSAGE
  26506. RJ SNM SET NAME IN MESSAGE
  26507. SX1 B5
  26508. EQ ERRA1 WRITE ERROR MESSAGE
  26509.  
  26510. DIE45 SB5 MSGBA * ERROR IN LOADING HASH CODE XXXXXXX.*
  26511. EQ DIE44 PUT FILE NAME IN MESSAGE
  26512.  
  26513. DIE46 SX1 MSGBF * MISSING AKY STATEMENT.*
  26514. EQ ERRA1 WRITE ERROR MESSAGE
  26515.  
  26516. DIE47 SX2 MSGBG * INCORRECT NUMBER OF ALTERNATE KEYS.*
  26517. EQ ERRA3 WRITE COMMAND
  26518.  
  26519. DIE48 SX2 MSGBH * INCORRECT KEY ORDINAL.*
  26520. EQ ERRA3 WRITE COMMAND
  26521.  
  26522. DIE49 SX2 MSGBI * INCORRECT KEY RELATIVE POSITION.*
  26523. EQ ERRA3 WRITE COMMAND
  26524.  
  26525. DIE50 SX2 MSGBJ * INCORRECT KEY BEGINNING CHARACTER.*
  26526. EQ ERRA3 WRITE COMMAND
  26527.  
  26528. DIE51 SX2 MSGBK * BRF PARAMETER TOO LARGE OR INCORRECT.*
  26529. EQ ERRA3 WRITE COMMAND
  26530.  
  26531. DIE52 SX2 MSGBL * NO BRF STATEMENT FOR CRM DATA BASE.*
  26532. EQ ERRA3 WRITE COMMAND
  26533.  
  26534. DIE53 SX1 MSGBM * RECOVERY FILE INCONSISTENT.*
  26535. EQ ERRA1 WRITE ERROR MESSAGE
  26536.  
  26537. DIE54 SX2 MSGBN * FILE ATTACH ERROR.*
  26538. EQ ERRA1 WRITE ERROR MESSAGE
  26539.  
  26540. DIE55 SX1 MSGBO * RECOVERY OF CRM DATA BASE IMPOSSIBLE.*
  26541. EQ ERRA1 WRITE ERROR MESSAGE
  26542.  
  26543. DIE56 SX1 MSGBP * BOTH AFTER IMAGE FILES ACTIVE.*
  26544. EQ ERRA1 WRITE ERROR MESSAGE
  26545.  
  26546. DIE57 SX1 MSGBQ * ACTIVE ARF IS FULL.*
  26547. EQ ERRA1 WRITE ERROR MESSAGE
  26548.  
  26549. DIE58 SX2 MSGBR * INCORRECT FWI IN CRM STATEMENT.*
  26550. EQ ERRA3 WRITE COMMAND
  26551.  
  26552. DIE59 SX2 MSGBS * INCORRECT RECOVER OPTION IN CRM.*
  26553. EQ ERRA3 WRITE COMMAND
  26554.  
  26555. DIE60 SX2 MSGBT * INCORRECT DEVICE TYPE IN CRM STATEMENT.*
  26556. EQ ERRA3 WRITE COMMAND
  26557.  
  26558. DIE61 SX1 MSGBU * CIO ERROR ON RECOVERY FILE.*
  26559. EQ ERRA1 WRITE ERROR MESSAGE
  26560.  
  26561. DIE62 SX1 MSGBV * NOT ENOUGH FL FOR RECOVERY BUFFERS.*
  26562. EQ ERRA1 WRITE ERROR MESSAGE.
  26563.  
  26564. DIE63 SX1 MSGBW * DATA BASE NOT IN EDT.*
  26565. EQ ERRA1 WRITE ERROR MESSAGE
  26566.  
  26567. DIE64 SX1 MSGBX * INCORRECT FAMILY IN EDT.*
  26568. EQ ERRA1 WRITE ERROR MESSAGE.
  26569.  
  26570. DIE65 SX1 MSGBY * RECOVERY ACTIVE ON DATA BASE.*
  26571. EQ ERRA1 WRITE ERROR MESSAGE
  26572.  
  26573. DIE66 SX1 MSGBZ *ARF BLOCK SIZE IS LARGER THAN THE BUFFER*
  26574. EQ ERRA1 WRITE ERROR MESSAGE.
  26575.  
  26576. DIE67 SX1 MSGCA * NOT ENOUGH FL FOR RECOVERY TABLES.*
  26577. EQ ERRA1 WRITE ERROR MESAGE
  26578.  
  26579. DIE68 SX1 MSGCB * XXJ FILE MUST HAVE RMKDEFS.*
  26580. EQ ERRA1 WRITE ERROR MESSAGE
  26581.  
  26582. DIE69 SX1 MSGCC *CMM BFL IS NOT LARGE ENOUGH.*
  26583. EQ ERRA1 WRITE ERROR MESSAGE
  26584.  
  26585. ERRA1 MESSAGE X1,0,R ISSUE APPROPRIATE MESSAGE FROM TABLE
  26586. ERRA2 ABORT
  26587.  
  26588. ERRA3 MESSAGE XXJA WRITE COMMAND IN ERROR
  26589. BX1 X2
  26590. EQ ERRA1 WRITE ERROR MESSAGE
  26591.  
  26592. * INITIALIZATION ERROR AND INFORMATIONAL MESSAGES.
  26593.  
  26594. MSGD DATA C* NO DATA BASE ID FOR DATA MANAGER.*
  26595. MSGE DATA C* TOO MANY DATA BASE NAMES.*
  26596. MSGF DATA C* NO USER STATEMENT IN XXJ FILE.*
  26597. MSGG DATA C* TOO MANY TAF JOURNAL FILES IN XXJ FILE.*
  26598. MSGH DATA C* MISSING HEADER WORD ON XXJ FILE.*
  26599. MSGI DATA C* INCORRECT DATA BASE IN XXJ FILE.*
  26600. MSGJ DATA C* ERROR ON XXJ FILE ARGUMENTS.*
  26601. MSGK DATA C* ATTACH ERROR ON - XXXXXXX.*
  26602. MSGKL EQU *-MSGK LENGTH OF MESSAGE
  26603. MSGL DATA C* EDT TOO LARGE.*
  26604. MSGM DATA C* EDT FILE EMPTY.*
  26605. MSGN DATA C* FILE SPECIFIED AS EDT FILE IS NOT EDT FILE TYPE.*
  26606. MSGO DATA C* DUAL RECORDED FILE NNNNNNN NOT ATTACHED.*
  26607. MSGP DATA C* DUAL AND TRACE FLAGS FOR FILE NNNNNNN .*
  26608. MSGQ DATA C* XXJ FILE NOT FOUND.*
  26609. MSGR DATA C* JOURNAL TYPE DOES NOT MATCH XXJ FILE.*
  26610. MSGS DATA C* FATAL CIO ERROR STATUS.*
  26611. MSGT DATA C* NO DATA BASE NAME IN XXJ FOR TOTAL.*
  26612. MSGU DATA C* INCORRECT TCF ENTRY.*
  26613. MSGV DATA C* XXJ FILE ERROR - CRM DM NOT LOADED.*
  26614. MSGW DATA C* XXJ FILE ERROR - TOTAL DM NOT LOADED.*
  26615. MSGX DATA C* UNABLE TO ATTACH TOTAL BINARIES.*
  26616. MSGY DATA C* UNABLE TO ATTACH TOTAL DBMOD BINARIES.*
  26617. MSGZ DATA C* ERROR IN LOADING TOTAL.*
  26618. MSGAA DATA C* TOO MANY FILES IN TOTAL DATA BASE.*
  26619. MSGAB DATA C* ERROR IN LOADING AIP.*
  26620. MSGAD DATA C* INCORRECT DATA BASE NAME ON DMS STATEMENT.*
  26621. MSGAE DATA C* AIP TOO LARGE FOR LOADING.*
  26622. MSGAF DATA C* MEMORY OVERFLOW DURING INITIALIZATION.*
  26623. MSGAG DATA C* XXXXXX WORDS REQUIRED FOR AIP LOADING.*
  26624. MSGAH DATA C* AIP SUCCESSFULLY LOADED.*
  26625. MSGAI DATA C* UN=XXXXXXX NOT VALID ON FM=YYYYYYY.*
  26626. MSGAL DATA C* FILE NAME MUST BE 2-7 CHARACTERS.*
  26627. MSGAM DATA C* FILE TYPE MUST BE AK, DA, OR IS.*
  26628. MSGAN DATA C* ATTACH MODE MUST BE W, M, R, OR RM.*
  26629. MSGAO DATA C* INCORRECT NUMBER FOR USERS.*
  26630. MSGAP DATA C* INCORRECT NUMBER FOR LOCKS.*
  26631. MSGAQ DATA C* INCORRECT NUMBER FOR KEY LENGTH.*
  26632. MSGAR DATA C* INCORRECT NUMBER FOR RECORD LENGTH.*
  26633. MSGAS DATA C* FIELD LENGTH EXCEEDED FOR LOCKS.*
  26634. MSGAT DATA C* FIELD LENGTH EXCEEDED FOR USERS.*
  26635. MSGAU DATA C* FIELD LENGTH EXCEEDED FOR RECORD.*
  26636. MSGAW DATA C* FIELD LENGTH EXCEEDED FOR CMM.*
  26637. MSGAX DATA C* ERROR IN LOADING AAMI.*
  26638. MSGAY BSS MSGKL ASSEMBLY AREA FOR MESSAGE *MSGK*
  26639. MSGAZ DATA C* FILE XXXXXXX NOT FOUND.*
  26640. MSGBA DATA C* ERROR IN LOADING HASH CODE XXXXXXX.*
  26641. MSGBB DATA C* TAF DATA MANAGER SUCCESSFULLY LOADED.*
  26642. MSGBC DATA C* TOTAL DATA MANAGER SUCCESSFULLY LOADED.*
  26643. MSGBD DATA C* CRM DATA MANAGER SUCCESSFULLY LOADED.*
  26644. MSGBE DATA C* DUPLICATE DATA BASE IN TCF - XX.*
  26645. MSGBF DATA C* NUMBER OF AKY STATEMENTS MUST EQUAL NUMBER OF ALTERN
  26646. ,ATE KEYS.*
  26647. MSGBG DATA C* INCORRECT NUMBER OF ALTERNATE KEYS.*
  26648. MSGBH DATA C* INCORRECT KEY ORDINAL.*
  26649. MSGBI DATA C* INCORRECT KEY RELATIVE POSITION.*
  26650. MSGBJ DATA C* INCORRECT KEY BEGINNING CHARACTER.*
  26651. MSGBK DATA C* BRF PARAMETER TOO LARGE OR INCORRECT.*
  26652. MSGBL DATA C* NO BRF STATEMENT FOR CRM DATA BASE.*
  26653. MSGBM DATA C* TAF/CRM RECOVERY FILE INCONSISTENT.*
  26654. MSGBN DATA C* FILE ATTACH/DEFINE ERROR.*
  26655. MSGBO DATA C* RECOVERY OF CRM DATA BASE IMPOSSIBLE.*
  26656. MSGBP DATA C* BOTH AFTER IMAGE FILES ACTIVE.*
  26657. MSGBQ DATA C* AFTER IMAGE RECOVERY FILE IS FULL.*
  26658. MSGBR DATA C* INCORRECT FWI IN THE CRM STATEMENT.*
  26659. MSGBS DATA C* INCORRECT RECOVER OPTION IN THE CRM STATEMENT.*
  26660. MSGBT DATA C* INCORRECT DEVICE TYPE IN CRM STATEMENT.*
  26661. MSGBU DATA C* CIO ERROR ON RECOVERY FILE.*
  26662. MSGBV DATA C* NOT ENOUGH FL FOR RECOVERY BUFFERS.*
  26663. MSGBW DATA C* DATA BASE NOT IN EDT.*
  26664. MSGBX DATA C* INCORRECT FAMILY NAME IN EDT.*
  26665. MSGBY DATA C* BATCH RECOVERY ACTIVE ON DATA BASE.*
  26666. MSGBZ DATA C* ARF BLOCK SIZE IS LARGER THAN THE BUFFER.*
  26667. MSGCA DATA C* NOT ENOUGH FL FOR RECOVERY TABLES.*
  26668. MSGCB DATA C* MISSING RMKDEF STATEMENT IN XXJ FILE.*
  26669. MSGCC DATA C* CMM BFL IS NOT LARGE ENOUGH.*
  26670.  
  26671. ERRTBL BSS 0
  26672. VFD 60/MSGL ERROR 1 FROM COMBINT
  26673. VFD 60/MSGM ERROR 2 FROM COMBINT
  26674. VFD 60/MSGN ERROR 3 FROM COMBINT
  26675. VFD 60/MSGO ERROR 4 FROM COMBINT
  26676. VFD 60/MSGP ERROR 5 FROM COMBINT
  26677. VFD 60/MSGK ERROR 6 FROM COMBINT
  26678. ERRTBLL EQU *-ERRTBL
  26679.  
  26680.  
  26681. ERP$ SX5 X2
  26682. SX1 MSGS
  26683. EQ ERRA1 ISSUE FATAL ERROR MESSAGE AND ABORT
  26684. SPACE 4
  26685. * INITIALIZATION PARAMETERS
  26686.  
  26687. RCRL EQU 101B BUFFER SIZE FOR UNIT RECORD
  26688. DSKL EQU 401B BUFFER SIZE FOR DISK
  26689. TAPL EQU 2001B BUFFER SIZE FOR TAPE
  26690. MAXDB EQU 25 MAXIMUM NUMBER OF DATA BASES
  26691. CCP BSS 1 CURRENT CORE POSITION
  26692.  
  26693. PDATE BSS 1 PACKED TIME AND DATE
  26694.  
  26695. DBID BSS 0
  26696. DBID FILEC HBUF,HBUFL,FET=13,EPR
  26697.  
  26698. TL BSS 0 TASK LIBRARY FET
  26699. "TLFM" RFILEB IBUF,IBUFL,FET=13,EPR
  26700.  
  26701. TIF BSS 0 TAF INITIALIZATION FILE
  26702. "TIF" FILEB RBUF,RBUFL
  26703.  
  26704. TCF BSS 0 TAF CONFIGURATION FILE
  26705. TCF FILEC TCBUF,TCBUFL,FET=13,EPR
  26706.  
  26707. DISK BSS 0
  26708. DISK RFILEB LBUF,LBUFL,FET=13,EPR
  26709.  
  26710. TDBID BSS 0
  26711. TDBID FILEC THBUF,THBUFL,FET=12,EPR
  26712.  
  26713. TOTALF BSS 0
  26714. TOTALE FILEC IBUF,IBUFL,FET=12,EPR
  26715.  
  26716. TOTFILE BSS 0
  26717. DBMOD FILEC IBUF,IBUFL,FET=13,EPR
  26718.  
  26719. CDBID BSS 0 FET FOR *CRM* DATA MANAGER
  26720. CDBID FILEC CBUF,CBUFL,FET=12,EPR
  26721.  
  26722. OTHER BSS 0 OTHER DATA BASES
  26723. OTHER FILEC OTBUF,OTBUFL,FET=13,EPR
  26724.  
  26725. ZZZZZDG BSS 0
  26726. ZZZZZDG FILEB IBUF,IBUFL,FET=2,EPR
  26727.  
  26728.  
  26729. SETLA DATA C* LIBRARY DIRECTORY EMPTY - ZZZZZZZ.*
  26730.  
  26731. SETLB DATA C* LIBRARY DIRECTORY TOO LONG - ZZZZZZZ.*
  26732.  
  26733. SETLC VFD 60/3LTLD DIRECTORY HEADER WORD
  26734.  
  26735. SETLD DATA C* LIBRARY DIRECTORY ERROR - ZZZZZZZ.*
  26736.  
  26737. SETLE VFD 60/0LZZCRF
  26738.  
  26739. SETLG BSS 0 OVERLAY ENTRY POINT LIST
  26740. DISPLAY HERE
  26741. CON 0 TERINATOR
  26742. SETLGL EQU *-SETLG LENGTH OF LIST
  26743.  
  26744. SETLH BSS 0 OVERLAY RELOCATABLE INSTRUCTION CONTROL
  26745. OREL HERE
  26746. SETLHL EQU *-SETLH LENGTH OF LIST
  26747. SETLI DATA C* LIBRARY DIRECTORY SPACE TOO LARGE. *
  26748. TITLE *CRM* INTERFACE ROUTINES.
  26749. AKY SPACE 4,20
  26750. ** AKY - PROCESS ACTUAL KEY.
  26751. *
  26752. * ENTRY (B7) = FWA FOR UNPACKING PARAMETERS.
  26753. * (A0) = CURRENT MEMORY LOCATION.
  26754. * (A5) = ADDRESS OF FIRST WORD.
  26755. * (X5) = FIRST WORD OF COMMAND.
  26756. *
  26757. * EXIT TO *DIE11*, IF ERROR IN ARGUMENTS.
  26758. * TO *DIE34*, IF INCORRECT KEY LENGTH PARAMETER.
  26759. * TO *DIE48*, IF INCORRECT KEY ORDINAL PARAMETER.
  26760. * TO *DIE49*, IF INCORRECT KEY POSITION PARAMETER.
  26761. * TO *DIE50*, IF INCORRECT KEY BEGINNING CHARACTER.
  26762. * (A0) = CURRENT MEMORY LOCATION.
  26763. *
  26764. * USES X - 0, 2, 5, 6, 7.
  26765. * A - 2, 5, 6, 7.
  26766. * B - 2, 5, 6.
  26767. *
  26768. * CALLS CRM, CTW, DXB, UPC.
  26769.  
  26770.  
  26771. AKY SUBR
  26772. MX0 -1
  26773. SA2 CRMI BIT MAP OF FILE ORGANIZATIONS
  26774. BX7 -X0+X2
  26775. SA7 A2
  26776. RJ UPC UNPACK COMMAND
  26777. NZ X6,DIE11 IF ERROR IN ARGUMENTS
  26778.  
  26779. * PROCESS KEY ORDINAL.
  26780.  
  26781. LT B6,B1,DIE48 IF NO KEY ORDINAL
  26782. SA5 B7+1 KEY ORDINAL
  26783. RJ DXB CONVERT KEY ORDINAL TO BINARY
  26784. SA2 TTIP+TIKO LAST KEY ORDINAL
  26785. NZ X4,DIE48 IF INCORRECT KEY ORDINAL NUMBER
  26786. SX2 X2+B1
  26787. BX2 X6-X2
  26788. NZ X2,DIE48 IF WRONG ORDER
  26789. SA6 A2 SAVE CURRENT KEY ORDINAL
  26790.  
  26791. * PROCESS RELATIVE KEY POSITION.
  26792.  
  26793. SB6 B6-2
  26794. SA5 A5+B1 GET KEY OFFSET
  26795. LT B6,AKY2 IF NO KEY OFFSET
  26796. RJ DXB CONVERT KEY POSITION TO BINARY
  26797. NZ X4,DIE49 IF INCORRECT KEY POSITION NUMBER
  26798. ZR X6,DIE50 IF KEY OFFSET .EQ. 0
  26799. SX7 X6-1
  26800. SA2 TTIP+TIRL GET MAXIMUM RECORD LENGTH
  26801. IX5 X2-X6
  26802. NG X5,DIE50 IF KEY OFFSET TOO LARGE
  26803. RJ CTW CONVERT TO WORDS
  26804. BX7 X1 WORDS
  26805. SA6 TTIP+TIKP STARTING CHARACTER POSITION
  26806. SB6 B6-B1
  26807. SA7 TTIP+TIKW WORD POSITION
  26808.  
  26809. * PROCESS KEY LENGTH.
  26810.  
  26811. LT B6,B1,DIE34 IF NO KEY LENGTH
  26812. SA5 A5+1
  26813. RJ DXB CONVERT KEY LENGTH TO BINARY
  26814. NZ X4,DIE34 IF INCORRECT KEY LENGTH NUMBER
  26815. ZR X6,DIE34 IF ZERO LENGTH
  26816. SA6 TTIP+TIAL
  26817. SA5 TTIP+TIMK GET MAXIMUM KEY THIS FAR
  26818. IX5 X5-X6
  26819. SX7 A0
  26820. PL X5,AKY1 IF THIS KEY NOT GREATER
  26821. SA6 TTIP+TIMK SET NEW MAXIMUM KEY
  26822.  
  26823. * PROCESS ALTERNATE KEY.
  26824.  
  26825. AKY1 SA7 TTIP+TIAM
  26826. SB2 TTIP FWA OF TABLE OF PARAMETERS
  26827. SB5 3 PROCESS *AKY* STATEMENT
  26828. RJ CRM SAVE ALTERNATE KEY DESCRIPTION
  26829. EQ AKYX NORMAL RETURN
  26830.  
  26831. * PROCESS DELETED KEY.
  26832.  
  26833. AKY2 SX6 -B1 SET DELETED KEY FLAG
  26834. SX7 A0
  26835. SA6 TTIP+TIKW
  26836. EQ AKY1 PROCESS ALTERNATE KEY
  26837. CRM SPACE 4,35
  26838. ** CRM - *CRM* INTERFACE ROUTINE.
  26839. *
  26840. * ENTRY (B5) = 0, IF PROCESSING *CRM* STATEMENT.
  26841. * 2, IF PROCESSING *IXN* STATEMENT.
  26842. * 3, IF PROCESSING *AKY* STATEMENT.
  26843. * 4, IF ALLOCATING FILE CONTROL ENTRIES.
  26844. * 5, IF ALLOCATING RECORD BUFFER.
  26845. * 6, IF RECONSTRUCTING *AAMI* TABLES.
  26846. * 7, IF ROLLING BACK *CRM* UPDATES.
  26847. * 8, IF ALLOCATING *BRF* BUFFERS.
  26848. * (B2) = *TTIP*, IF ALLOCATING RECORD BUFFER.
  26849. * TL = FWA OF FET FOR *XXJ* FILE.
  26850. * (B7) = FWA FOR UNPACKING PARAMETERS.
  26851. *
  26852. * EXIT TO *DIE11*, IF ERROR ON *CRM* STATEMENT ARGUMENTS.
  26853. * TO *DIE30*, IF INCORRECT FILE TYPE PARAMETER.
  26854. * TO *DIE31*, IF INCORRECT MODE PARAMETER.
  26855. * TO *DIE32*, IF INCORRECT USER PARAMETER.
  26856. * TO *DIE33*, IF INCORRECT LOCK PARAMETER.
  26857. * TO *DIE34*, IF INCORRECT KEY PARAMETER.
  26858. * TO *DIE35*, IF INCORRECT RECORD PARAMETER.
  26859. * TO *DIE36*, IF NOT ENOUGH FL FOR *CMM*.
  26860. * TO *DIE37*, IF NOT ENOUGH FL FOR USERS.
  26861. * TO *DIE38*, IF NOT ENOUGH FL FOR RECORD.
  26862. * TO *DIE43*, IF HASHING ROUTINE NOT FOUND.
  26863. * TO *DIE45*, IF ERROR ON LOADING HASHING ROUTINE.
  26864. * TO *DIE53*, IF RECOVERY FILE INCONSISTENT(EC=5).
  26865. * TO *DIE54*, IF FILE ATTACH/DEFINE ERROR(EC=6).
  26866. * TO *DIE55*, IF DATA BASE RECOVERY IMPOSSIBLE(EC=7)
  26867. * TO *DIE56*, IF BOTH *ARF-S* ACTIVE (EC=10B).
  26868. * TO *DIE57*, IF *ARF* IS FULL (EC = 11B).
  26869. * TO *DIE58*, IF INCORRECT *FWI* IN *CRM* STATEMENT.
  26870. * TO *DIE59*, IF INCORRECT *REC* IN *CRM* STATEMENT.
  26871. * TO *DIE60*, IF INCORRECT *DEV* IN *CRM* STATEMENT.
  26872. * TO *DIE61*, IF CIO ERROR ON RECOVERY FILE(EC=12B).
  26873. * TO *DIE62*, IF NOT ENOUGH FL FOR BUFFERS(EC=13B).
  26874. * TO *DIE63*, IF D.B. NOT IN EDT(EC=14B).
  26875. * TO *DIE64*, IF INCORRECT FAMILY NAME IN EDT(EC=15B).
  26876. * TO *DIE65*, IF *DMREC* ACTIVE FOR THIS D.B.(EC=16B).
  26877. * TO *DIE66*, IF *ARF* BLOCK .GT. *ARF* BUFFER(EC=17B).
  26878. * TO *DIE67*, IF NOT ENOUGH FL FOR TABLES(EC=20B).
  26879. * TO *DIE69*, IF *BFL* NOT LARGE ENOUGH (EC=21B).
  26880. * (A0) = CURRENT MEMORY LOCATION.
  26881. *
  26882. * USES X - ALL.
  26883. * A - 0, 1, 2, 3, 5, 6, 7.
  26884. * B - 1, 2, 4, 5, 6, 7.
  26885. *
  26886. * CALLS CER, DXB, IAM, UPC.
  26887. *
  26888. * MACROS ATTACH, FILEC, GET, LDREQ, LOADER, STATUS.
  26889.  
  26890.  
  26891. CRM SUBR ENTRY/EXIT
  26892. ZR B5,CRM2 IF *CRM* STATEMENT
  26893. CRMA BSS 0
  26894. CRM1 RJ 0 MODIFIED BY *INIT*
  26895. * RJ =XIAM INITIAL ACCESS METHOD
  26896. SA1 TTIP+TIAM UPDATE CURRENT CORE POSITION
  26897. SA0 X1
  26898. LX6 59-0
  26899. SB7 X6
  26900. JP B7+TCRM JUMP TO PROCESSING ROUTINE
  26901.  
  26902. TCRM PL X6,CRMX IF NO ERRORS
  26903. EQ DIE38 NOT ENOUGH FL FOR RECORD
  26904. PL X6,DIE37 IF NOT ENOUGH FL FOR USERS
  26905. EQ DIE36 NOT ENOUGH FL FOR LOCKS
  26906. PL X6,CRM12 IF NOT ENOUGH FL FOR *CMM*
  26907. EQ DIE53 RECOVERY FILE INCONSISTENT
  26908. PL X6,DIE54 IF FILE ATTACH ERROR
  26909. EQ DIE55 IF *CRM* DATA BASE RECOVERY IMPOSSIBLE
  26910. PL X6,DIE56 IF BOTH *ARF-S* ACTIVE
  26911. EQ DIE57 ACTIVE *ARF* IS FULL
  26912. PL X6,DIE61 IF CIO ERROR ON RECOVERY FILE.
  26913. EQ DIE62 IF NO FL FOR RECOVERY BUFFERS.
  26914. PL X6,DIE63 IF D.B. NOT IN EDT.
  26915. EQ DIE64 IF INCORRECT FAMILY IN EDT.
  26916. PL X6,DIE65 IF *DMREC* ACTIVE FOR THIS D.B.
  26917. EQ DIE66 IF *ARF* BLOCK .GT. *ARF* BUFFER
  26918. PL X6,DIE67 IF NO FL FOR RECOVERY TABLES.
  26919. EQ CRM13 IF *BFL* NOT LARGE ENOUGH
  26920.  
  26921. CRM2 RJ UPC UNPACK COMMAND
  26922. NZ X6,DIE11 IF ERROR IN ARGUMENTS
  26923.  
  26924. * PROCESS FILE NAME.
  26925.  
  26926. SA1 TL
  26927. LT B6,B1,DIE29 IF NO FILE NAME
  26928. SA2 B7+B1 FILE NAME FROM *CRM* STATEMENT
  26929. MX6 12 MASK FOR DATA BASE
  26930. BX1 X6*X1 DATA BASE
  26931. BX3 X6*X2 DATA BASE OF FILE
  26932. IX3 X3-X1
  26933. BX7 X2
  26934. NZ X3,DIE29 IF INCORRECT DATA BASE
  26935. SA7 TTIP+TIFN
  26936. SX3 B1
  26937. BX7 X7+X3
  26938. SA7 CRMC PUT LOGICAL FILE NAME IN FET
  26939. MX0 12
  26940. SA1 A7+B1
  26941. BX6 -X0*X1
  26942. BX7 X7-X7 CLEAR PACKNAME IN FET
  26943. SA6 A1+
  26944. SA7 CRMC+CFPK
  26945. SA7 TTIP+TIRF CLEAR *RECOVERABLE FILE* FLAG IN *TTIP*
  26946. SA7 TTIP+TIPN CLEAR PACKNAME
  26947. SA7 TTIP+TIDV CLEAR DEVICE TYPE
  26948. SA7 TTIP+TIHR CLEAR HASHING ROUTINE
  26949. SA7 TTIP+TIFW PRESET *FORCED WRITE* INDICATOR
  26950. SA7 TTIP+TIAE CLEAR ATTACH ERROR
  26951.  
  26952. * PROCESS FILE TYPE, (ORGANIZATION).
  26953.  
  26954. SB6 B6-2
  26955. LT B6,DIE30 IF NO FILE TYPE PARAMETER
  26956. SX7 3 *CRM* CODE FOR INDEX SEQUENTIAL
  26957. SA2 A2+B1 FILE TYPE
  26958. LX2 11-59 RIGHT JUSTIFY TYPE
  26959. SX3 X2-2RIS
  26960. ZR X3,CRM3 IF INDEX SEQUENTIAL
  26961. SX7 6
  26962. SX3 X2-2RAK
  26963. ZR X3,CRM3 IF ACTUAL KEY
  26964. SX3 X2-2RDA
  26965. NZ X3,DIE30 IF NOT DIRECT ACCESS
  26966. SX7 5 *CRM* CODE FOR DIRECT ACCESS
  26967. CRM3 SA7 TTIP+TIFO FILE ORGANIZATION
  26968. MX0 -1
  26969. SB4 X7
  26970. LX0 B4 POSITION FILE ORGANIZATION BIT
  26971. SA3 CRMI BIT MAP OF FILE ORGANIZATIONS
  26972. BX7 -X0+X3
  26973. SA7 A3
  26974.  
  26975. * CHECK MODE, (PROCESSING DIRECTION).
  26976.  
  26977. SB6 B6-1
  26978. BX7 X7-X7 ASSUME READ ONLY FILE MODE
  26979. LT B6,DIE31 IF NO MODE
  26980. SA2 A2+B1 MODE
  26981. MX0 12
  26982. SA3 CRMB LEGAL MODES
  26983. CRM4 BX4 X0*X3
  26984. BX5 X2-X4
  26985. SX4 X7-3
  26986. ZR X5,CRM5 IF LEGAL MODE
  26987. ZR X4,DIE31 IF INCORRECT MODE
  26988. LX3 15 NEXT LEGAL MODE
  26989. SX7 X7+B1
  26990. EQ CRM4 CONTINUE CHECKING MODE
  26991.  
  26992. CRM5 ZR X7,CRM6 IF READ ONLY MODE
  26993. SX7 3 *CRM* CODE FOR INPUT/OUTPUT
  26994. CRM6 SA7 TTIP+TIPD PROCESSING DIRECTION
  26995. LX3 2-47
  26996. MX0 -3
  26997. BX6 -X0*X3 ATTACH MODE
  26998.  
  26999. * PROCESS USERS.
  27000.  
  27001. SB6 B6-B1
  27002. SA6 CRMD
  27003. SA6 TTIP+TIMD SAVE THE ATTACH MODE
  27004. LT B6,DIE32 IF NO USER PARAMETER
  27005. SA5 A2+1 USERS
  27006. RJ DXB DISPLAY TO BINARY
  27007. NZ X4,DIE32 IF INCORRECT NUMBER
  27008. ZR X6,DIE32 IF ZERO USER
  27009. SA6 TTIP+TIUS NUMBER OF USERS
  27010.  
  27011. * PROCESS LOCKS.
  27012.  
  27013. SB6 B6-B1
  27014. SA5 A5+B1 LOCKS
  27015. LT B6,DIE33 IF NO LOCK PARAMETER
  27016. RJ DXB CONVERT LOCKS FROM DISPLAY TO BINARY
  27017. NZ X4,DIE33 IF INCORRECT LOCK NUMBER
  27018. ZR X6,DIE33 IF ZERO LOCKS
  27019. SA6 TTIP+TILK NUMBER OF LOCKS
  27020.  
  27021. * PROCESS MAXIMUM RECORD LENGTH.
  27022.  
  27023. SB6 B6-B1
  27024. SA5 A5+B1 MAXIMUM RECORD LENGTH
  27025. LT B6,DIE35 IF NO MAXIMUM RECORD LENGTH PARAMETER
  27026. RJ DXB CONVERT RECORD LENGTH TO BINARY
  27027. NZ X4,DIE35 IF INCORRECT RECORD LENGTH
  27028. ZR X6,DIE35 IF ZERO RECORD LENGTH
  27029. SA6 TTIP+TIRL RECORD LENGTH
  27030. SA3 VBCT BATCH CONCURRENCY SUBCP LENGTH
  27031. MX0 -24
  27032. BX5 -X0*X5 PREVIOUS LARGEST SUBCP LENGTH
  27033. SX6 X6+9 INSURE LAST WORD AVAILABLE
  27034. SX4 10
  27035. IX6 X6/X4 RECORD BUFFER LENGTH IN WORDS
  27036. SX6 X6+BSRB+NUAPL SUBCP LENGTH INCLUDES SYSTEM AREA
  27037. SX6 X6+63 ROUND UP TO 100B CM WORDS
  27038. MX0 -6
  27039. BX6 X0*X6
  27040. IX5 X5-X6
  27041. PL X5,CRM6.1 IF THIS SUBCP LENGTH NOT GREATER
  27042. BX6 X3+X6
  27043. SA6 A3 SET NEW MAXIMUM SUBCP LENGTH
  27044.  
  27045. * PROCESS KEY LENGTH.
  27046.  
  27047. CRM6.1 SB6 B6-B1
  27048. SA5 A5+B1 KEY LENGTH
  27049. LT B6,DIE34 IF NO KEY LENGTH PARAMETER
  27050. RJ DXB CONVERT KEY LENGTH FROM DISPLAY TO BINARY
  27051. NZ X4,DIE34 IF INCORRECT KEY LENGTH NUMBER
  27052. ZR X6,DIE34 IF ZERO KEY LENGTH
  27053. SA6 TTIP+TIKL KEY LENGTH
  27054. SA6 TTIP+TIMK MAXIMUM KEY LENGTH
  27055.  
  27056. * PROCESS HASHING ROUTINE.
  27057.  
  27058. SB6 B6-B1
  27059. SA5 A5+B1 HASHING ROUTINE FILE NAME
  27060. LT B6,CRM9 IF NO MORE PARAMETERS
  27061. ZR X5,CRM7 IF NO HASHING ROUTINE
  27062. BX6 X5
  27063. SA6 TTIP+TIHR
  27064.  
  27065. * PROCESS FILE RECOVERABILITY INDICATOR.
  27066.  
  27067. CRM7 SB6 B6-B1
  27068. LE B6,CRM9 IF NO MORE PARAMETERS
  27069. SA5 A5+B1 RECOVERABILITY INDICATOR
  27070. MX0 6
  27071. ZR X5,CRM7.1 IF OMITTED
  27072. SX6 2RNR
  27073. SX7 B1
  27074. LX6 -12
  27075. BX1 X5-X6
  27076. BX1 X0*X1
  27077. ZR X1,CRM7.1 IF NOT RECOVERABLE
  27078. LX6 6
  27079. BX1 X5-X6
  27080. BX1 X0*X1
  27081. NZ X1,DIE59 IF RECOVERIBILITY NOT *R* OR *N*
  27082. SA7 TTIP+TIRF
  27083.  
  27084. * PROCESS FORCED WRITE INDICATOR.
  27085.  
  27086. CRM7.1 SB6 B6-B1
  27087. LE B6,CRM9 IF NO MORE PARAMETERS
  27088. SA5 A5+B1 PICK FORCED WRITE INDICATOR
  27089. ZR X5,CRM7.2 IF DEFAULTED
  27090. SX6 2RNY
  27091. SX7 B1
  27092. LX6 -12
  27093. BX1 X5-X6
  27094. BX1 X0*X1
  27095. ZR X1,CRM7.2 IF *FWI* IS *N*
  27096. LX6 6
  27097. BX1 X5-X6
  27098. BX1 X0*X1
  27099. NZ X1,DIE58 IF FWI NEITHER *Y* NOR *N*
  27100. SA7 TTIP+TIFW
  27101.  
  27102. * PROCESS PACKNAME.
  27103.  
  27104. CRM7.2 SB6 B6-B1
  27105. LE B6,CRM9 IF END OF PARAMETERS
  27106. SA5 A5+B1 PACKNAME
  27107. BX6 X5
  27108. SA6 CRMC+CFPK
  27109. SA6 TTIP+TIPN PACKNAME INTO *TTIP*
  27110.  
  27111. * PROCESS DEVICE.
  27112.  
  27113. CRM8 SB6 B6-B1
  27114. LE B6,CRM9 IF NO MORE PARAMETERS
  27115. SA5 A5+B1
  27116. MX0 12
  27117. BX6 X0*X5 ISOLATE DEVICE MNEMONIC
  27118. SA1 CRMC+1
  27119. SA6 TTIP+TIDV DEVICE MNEMONIC INTO *TTIP*
  27120. BX1 -X0*X1
  27121. BX6 X6+X1
  27122. BX5 -X0*X5 CLEAR MNEMONIC OUT OF DEV.TYPE
  27123. SA6 A1 DEVICE INTO THE FET
  27124. LX5 12
  27125. SB7 -B1
  27126. RJ DXB
  27127. NZ X4,DIE60 IF NO. OF UNITS INCORRECT
  27128. SX2 X6-9
  27129. PL X2,DIE60 IF NO. OF UNITS TOO LARGE
  27130. ZR X6,CRM9 IF NO. OF UNITS = 0
  27131. SA1 CRMC+CFPK
  27132. SA2 TTIP+TIDV
  27133. BX7 X6+X1
  27134. BX6 X6+X2
  27135. SA7 A1 NO. OF UNITS INTO FET
  27136. SA6 A2 NO. OF UNITS INTO *TTIP*
  27137. CRM9 SB4 CRMC FWA OF FET
  27138.  
  27139. * CHECK IF FILE AT CONTROL POINT.
  27140.  
  27141. STATUS B4
  27142. SA1 B4 FET STATUS
  27143. MX6 11
  27144. LX1 59-11
  27145. BX6 X6*X1
  27146. NZ X6,CRM9.1 IF FILE AT CONTROL POINT
  27147.  
  27148. * ATTACH *CRM* FILE.
  27149.  
  27150. SA2 XXJD+2 USER NAME
  27151. MX0 42
  27152. BX0 X0*X2
  27153. ATTACH B4,,X0,,CRMD
  27154. RJ CER CHECK ERRORS
  27155. ZR X1,CRM9.1 IF NO ATTACH ERROR
  27156. SX6 B1+
  27157. SA6 TTIP+TIAE SET ATTACH ERROR
  27158. SA1 CRMC GET FILE NAME
  27159. MX0 42
  27160. BX1 X0*X1
  27161. SB2 1RX SUBSTITUTION CHARACTER
  27162. SB5 -CRMJ ERROR MESSAGE
  27163. SB3 CRMK ERROR MESSAGE ASSEMBLY AREA
  27164. RJ SNM SET NAME IN MESSAGE
  27165. MESSAGE CRMK,3 PUT MESSAGE IN DAYFILE
  27166. CRM9.1 SA2 TTIP+TIHR HASHING ROUTINE
  27167. ZR X2,CRM11 IF NO HASHING ROUTINE
  27168. SB4 CRMC FWA OF FET
  27169. SX3 B1
  27170. IX7 X2+X3
  27171. SA7 B4 PUT LOGICAL FILE NAME IN FET
  27172.  
  27173. * CHECK IF HASHING FILE AT CONTROL POINT.
  27174.  
  27175. STATUS B4
  27176. SA1 B4
  27177. MX6 11
  27178. LX1 59-11
  27179. BX6 X6*X1
  27180. NZ X6,CRM10 IF FILE AT CONTROL POINT
  27181.  
  27182. * GET HASHING ROUTINE.
  27183.  
  27184. SA2 XXJD+2 USER NAME
  27185. MX0 42
  27186. BX0 X0*X2
  27187. GET B4,X0
  27188. RJ CER CHECK ERRORS
  27189. NZ X1,DIE43 IF FILE NOT FOUND
  27190.  
  27191. * LOAD HASHING ROUTINE.
  27192.  
  27193. CRM10 SX2 3 REWIND FILE
  27194. SA1 TTIP+TIHR HASHING ROUTINE
  27195. BX7 X1+X2
  27196. BX6 X1
  27197. SA7 CRMG+1 SET FILE NAME IN LOAD REQUEST
  27198. MX0 18
  27199. SX3 A0 FWA OF AVAILABLE MEMORY
  27200. SA6 CRMH+1 SET ENTRY POINT IN ENTRY REQUEST
  27201. LX3 47-17
  27202. LX0 47-59
  27203. SA2 CRMF SETUP LOAD ADDRESS
  27204. BX2 -X0*X2
  27205. BX6 X3+X2
  27206. SA6 A2+
  27207. LOADER CRMF LOAD HASHING ROUTINE
  27208.  
  27209. * CHECK FOR LOADER ERRORS ON HASHING ROUTINE.
  27210.  
  27211. SB1 1
  27212. SA1 CRMF+2 LOAD STATUS
  27213. MX0 2
  27214. BX2 X0*X1
  27215. NZ X2,DIE45 IF ERROR IN LOADING HASHING ROUTINE
  27216. SA3 CRMH+1 GET FWA OF HASH ENTRY POINT
  27217. SX6 X3+
  27218. ZR X6,DIE45 IF ENTRY POINT NOT FOUND
  27219. SA6 TTIP+TIHR
  27220. SA1 LWPR LWA + 1 OF LOAD
  27221. SA0 X1+ FWA OF MEMORY ALLOCATION
  27222.  
  27223. * ALLOCATE TABLES FOR *CRM*.
  27224.  
  27225. CRM11 SX7 A0 FWA OF AVAILABLE MEMORY
  27226. SB5 B0 PROCESS *CRM* STATEMENT
  27227. SA7 TTIP+TIAM
  27228. SB2 TTIP FWA OF TABLE OF PARAMETERS
  27229. EQ CRM1 PROCESS TABLES FOR *CRM* STATEMENT
  27230.  
  27231. CRM12 RJ RBL REPORT *BFL* INFORMATION
  27232. EQ DIE41 REPORT NOT ENOUGH FL FOR *CMM*
  27233.  
  27234. CRM13 RJ RBL REPORT *BFL* INFORMATION
  27235. EQ DIE69 REPORT *BFL* NOT LARGE ENOUGH
  27236. * LEGAL MODES FOR *CRM*.
  27237.  
  27238. CRMB VFD 12/1LR,3/PTRD,12/1LW,3/PTWR,12/1LM,3/PTMD
  27239. VFD 12/2LRM,3/PTRM
  27240. CRMC FILEC IBUF,IBUFL,FET=13,EPR FET FOR *CRM* DATA BASE FILE
  27241. CRMD BSS 1 ATTACH MODE
  27242. CRMF LDREQ BEGIN,LAST,IFL=,0,0
  27243. LDREQ MAP,BSEX,MAP
  27244. CRMG LDREQ LOAD,(HASH/R)
  27245. LDREQ SATISFY
  27246. CRMH LDREQ ENTRY,(HASH) HASH ENTRY POINT
  27247. LDREQ END
  27248. CRMI CON 0 BIT MAP OF FILE ORGANIZATIONS
  27249. CRMJ DATA C* XXXXXXX FILE DOWN DUE TO ATTACH ERROR.*
  27250. CRMK BSSZ 4 ASSEMBLY AREA FOR *CRMJ*
  27251. CTW SPACE 4,10
  27252. ** CTW - CHARACTERS TO WORDS.
  27253. *
  27254. * ENTRY (X7) = LENGTH IN CHARACTERS.
  27255. *
  27256. * EXIT (X1) = LENGTH IN WORDS.
  27257. * (X6) = REMAINDER IN CHARACTERS.
  27258. *
  27259. * USES X - 1, 4, 5, 6.
  27260. * B - 7.
  27261.  
  27262.  
  27263. CTW SUBR ENTRY/EXIT
  27264. SX6 10 CHARACTERS PER WORD
  27265. PX4 X7 COMPUTE LENGTH IN WORDS
  27266. PX5 X6
  27267. NX6 X5
  27268. FX4 X4/X6
  27269. UX6,B7 X4
  27270. LX1 B7,X6
  27271. PX6 X1 COMPUTE REMAINDER
  27272. DX4 X6*X5
  27273. UX6 X4
  27274. IX6 X7-X6 REMAINDER
  27275. EQ CTWX RETURN
  27276. IXN SPACE 4,20
  27277. ** IXN - PROCESS IXN PARAMETERS.
  27278. *
  27279. * ENTRY (B7) = FWA FOR UNPACKING PARAMETERS.
  27280. * (A0) = CURRENT MEMORY LOCATION.
  27281. * (A5) = ADDRESS OF FIRST WORD.
  27282. * (X5) = FIRST WORD OF COMMAND.
  27283. *
  27284. * EXIT TO *DIE11*, IF ERROR ON *IXN* STATEMENT ARGUMENTS.
  27285. * TO *DIE12*, IF ATTACH ERROR ON INDEX FILE.
  27286. * TO *DIE29*, IF INCORRECT FILE NAME.
  27287. * TO *DIE47*, IF INCORRECT NUMBER OF ALTERNATE KEYS.
  27288. * (A0) = CURRENT MEMORY LOCATION.
  27289. *
  27290. * USES X - 0, 1, 2, 3, 5, 6, 7.
  27291. * A - 1, 2, 5, 6, 7.
  27292. * B - 2, 4, 5, 6.
  27293. *
  27294. * CALLS CER, CRM, DXB, UPC.
  27295. *
  27296. * MACROS ATTACH, STATUS.
  27297.  
  27298.  
  27299. IXN SUBR ENTRY/EXIT
  27300. RJ UPC UNPACK COMMAND
  27301. NZ X6,DIE11 IF ERROR IN ARGUMENTS
  27302.  
  27303. * PROCESS FILE NAME.
  27304.  
  27305. SA1 TL
  27306. LT B6,B1,DIE29 IF NO FILE NAME
  27307. SA2 B7+B1 FILE NAME FROM *IXN* STATEMENT
  27308. MX6 12 MASK FOR DATA BASE
  27309. BX1 X6*X1 DATA BASE
  27310. BX3 X6*X2 DATA BASE OF FILE
  27311. IX3 X3-X1
  27312. BX7 X2
  27313. NZ X3,DIE29 IF INCORRECT DATA BASE
  27314. SA7 TTIP+TIXN
  27315. SX3 B1
  27316. BX7 X7+X3
  27317. SA7 CRMC PUT LOGICAL FILE NAME IN FET
  27318. MX0 -48
  27319. SA1 A7+B1
  27320. BX6 -X0*X1
  27321. MX7 0 CLEAR PACKNAME IN FET
  27322. SA6 A1 CLEAR DEVICE
  27323. SA7 CRMC+CFPK
  27324. SA7 TTIP+TIHR ZERO FILE NAME OF HASHING ROUTINE
  27325.  
  27326. * PROCESS NUMBER OF ALTERNATE KEYS.
  27327.  
  27328. SB6 B6-2
  27329. LT B6,DIE47 IF NO NUMBER OF ALTERNATE KEYS
  27330. SA5 A2+B1
  27331. RJ DXB CONVERT TO BINARY
  27332. NZ X4,DIE47 IF INCORRECT NUMBER
  27333. ZR X6,DIE47 IF NUMBER OF ALTERNATE KEYS .EQ. ZERO
  27334. SA6 TTIP+TINK
  27335. SA6 XXJS NUMBER OF ALTERNATE KEYS
  27336.  
  27337. * PROCESS PACKNAME.
  27338.  
  27339. SB6 B6-B1
  27340. SA5 A5+B1
  27341. LE B6,IXN2 IF NO MORE PARAMETERS
  27342. BX6 X5
  27343. ZR X5,IXN1 IF NO PACKNAME
  27344. SA6 CRMC+CFPK
  27345.  
  27346. * PROCESS DEVICE.
  27347.  
  27348. IXN1 LT B6,B1,IXN2 IF NO MORE PARAMETERS
  27349. SA5 A5+B1
  27350. MX0 12
  27351. BX5 X0*X5
  27352. SA1 CRMC+1
  27353. BX6 X5+X1
  27354. SA6 A1+
  27355.  
  27356.  
  27357. * CHECK IF FILE AT CONTROL POINT.
  27358.  
  27359. IXN2 SB4 CRMC FWA OF FET
  27360. STATUS B4
  27361. SA1 B4 FET STATUS
  27362. MX6 11
  27363. LX1 59-11
  27364. BX6 X6*X1
  27365. NZ X6,IXN3 IF FILE AT CONTROL POINT
  27366.  
  27367. * ATTACH *IXN* INDEX FILE.
  27368.  
  27369. SA2 XXJD+2 USER NAME
  27370. MX0 42
  27371. BX0 X0*X2
  27372. ATTACH B4,,X0,,CRMD
  27373. RJ CER CHECK ERRORS
  27374. ZR X1,IXN3 IF NO ATTACH ERROR
  27375. SX6 B1+
  27376. SA6 TTIP+TIAE SET ATTACH ERROR
  27377. SA1 CRMC GET FILE NAME
  27378. MX0 42
  27379. BX1 X0*X1
  27380. SB2 1RX SUBSTITUTION CHARACTER
  27381. SB5 -CRMJ ERROR MESSAGE
  27382. SB3 CRMK ERROR MESSAGE ASSEMBLY AREA
  27383. RJ SNM SET NAME IN MESSAGE
  27384. MESSAGE CRMK,3 PUT MESSAGE IN DAYFILE
  27385.  
  27386. * ALLOCATE TABLES FOR MIPPED FILE.
  27387.  
  27388. IXN3 MX7 0
  27389. SA7 TTIP+TIKO INITIALIZE KEY ORDINAL
  27390. SX7 A0 FWA OF AVAILABLE MEMORY
  27391. SB5 B1+B1 PROCESS *IXN* STATEMENT
  27392. SA7 TTIP+TIAM
  27393. SB2 TTIP FWA OF TABLE OF PARAMETERS
  27394. RJ CRM INITIALIZE MIPPED FILE TABLES
  27395. EQ IXNX NORMAL RETURN
  27396. RMK SPACE 4,15
  27397. ** RMK - PROCESS *RMKDEF* STATEMENTS.
  27398. *
  27399. * ENTRY (XXJS) = NUMBER OF ALTERNATE KEYS.
  27400. *
  27401. * EXIT TO *DIE11*, IF ARGUMENT ERROR.
  27402. * TO *DIE68*, IF *RMKDEF* ERROR.
  27403. * (X1) .NE. 0, IF NO MORE ENTRIES IN *XXJ* FILE.
  27404. *
  27405. * USES X - 1, 3, 5, 6.
  27406. * A - 3, 5, 6.
  27407. * B - 2, 7.
  27408. *
  27409. * CALLS DXB, UPC.
  27410. *
  27411. * MACROS READC.
  27412.  
  27413.  
  27414. RMK3 SA5 XXJS NUMBER OF ALTERNATE KEYS
  27415. NZ X5,DIE68 IF *RMKDEF* STATEMENT ERROR
  27416.  
  27417. RMK SUBR ENTRY/EXIT
  27418. RMK1 READC TL,XXJA,8 READ STATEMENT FROM *XXJ* FILE
  27419. SB7 XXJP
  27420. NZ X1,RMK3 IF EOF
  27421. SA5 XXJA
  27422. RJ UPC UNPACK CONTROL STATEMENT
  27423. NZ X6,DIE11 IF UNPACK ERRORS
  27424. SX1 X6
  27425. SA5 B7
  27426. MX3 42
  27427. BX5 X3*X5
  27428. SA3 RMKA
  27429. BX3 X3-X5
  27430. NZ X3,RMK3 IF NOT *RMKDEF* STATEMENT
  27431. SB2 4
  27432. LE B6,B2,RMK2 IF NO KEY LENGTH SPECIFIED
  27433. SA5 B7+B2 KEY LENGTH
  27434. RJ DXB CONVERT KEY LENGTH
  27435. NZ X4,DIE11 IF ERROR IN *RMKDEF* STATEMENT
  27436. ZR X6,RMK1 IF KEY LENGTH IS ZERO (SPARSE KEY)
  27437. RMK2 SA5 XXJS
  27438. SX6 X5-1 DECREMENT *RMKDEF* STATEMENT COUNT
  27439. SA6 A5+
  27440. EQ RMK1 PROCESS NEXT STATEMENT
  27441.  
  27442.  
  27443. RMKA VFD 60/6LRMKDEF
  27444. TITLE TOTAL INTERFACE ROUTINES.
  27445. IEOQ SPACE 4,10
  27446. ** IEOQ - INITIALIZATION ENTER OUTPUT QUEUE.
  27447. * DUMMY ROUTINE FOR TOTAL DURING INITIALIZATION.
  27448.  
  27449.  
  27450. IEOQ SUBR ENTRY/EXIT
  27451. EQ IEOQX RETURN
  27452. IFAR SPACE 4,10
  27453. ** IFAR - INITIALIZATION FILE ATTACH ROUTINE.
  27454. * ATTACH FILES FOR TOTAL DURING INITIALIZATION.
  27455. * IF FILE IS XXTLOG AND DOES NOT EXIST IT IS DEFINED.
  27456. * THE XXTLOG FILE IS POSITIONED AT EOI.
  27457. *
  27458. * ENTRY (X2) = ADDRESS OF FILE NAME TO ATTACH.
  27459. *
  27460. * EXIT (X6) = 0 ATTACH WAS OKAY.
  27461. * (X6) " 0 ERROR CODE.
  27462. *
  27463. * USES X - 0, 1, 2, 4, 5, 6, 7.
  27464. * A - 1, 2, 4, 6.
  27465. * B - 1, 7.
  27466. *
  27467. * CALLS PFM=, CIO=.
  27468.  
  27469.  
  27470. IFAR SUBR ENTRY/EXIT
  27471. SA1 X2 FILE NAME TO ATTACH
  27472. SB1 1
  27473. MX0 42
  27474. SX6 1
  27475. BX1 X0*X1
  27476. BX6 X6+X1
  27477.  
  27478. * FIND FILE IN EDT AND PLACE PACK INFORMATION IN THE FET.
  27479.  
  27480. SA2 SCHEMA
  27481. SA6 IFARB
  27482. SB7 X2-2*TMAXFIL-2 ADDRESS OF FIRST FILE NAME
  27483. IFAR1 SA2 B7 FILE NAME
  27484. SB7 B7+TFEN
  27485. BX6 X1-X2
  27486. ZR X2,IFARX IF FILE NAME NOT FOUND
  27487. NZ X6,IFAR1 IF NOT CORRECT FILE NAME
  27488. MX7 48
  27489. SA1 B7-B1 PACKNAME FOR FILE
  27490. LX7 6
  27491. BX6 X7*X1
  27492. LX1 -6
  27493. SA6 IFARB+CFPK PACK NAME AND UNIT INTO FET
  27494. MX4 -12
  27495. SA2 IFARB+1
  27496. BX4 -X4*X1 DEVICE TYPE
  27497. MX7 -48
  27498. LX4 -12
  27499. BX2 -X7*X2
  27500. IX6 X2+X4
  27501. SA6 A2 DEVICE TYPE TO FET
  27502. STATUS IFARB CHECK IF FILE EXISTS
  27503. SA1 IFARB
  27504. MX6 11
  27505. LX1 59-11
  27506. BX3 X6*X1
  27507. BX6 X6-X6
  27508. NZ X3,IFARX IF FILE EXISTS
  27509. ATTACH IFARB,,,,M
  27510. SA1 X2 CHECK FOR ATTACH ERROR
  27511. MX7 24
  27512.  
  27513. * CHECK IF FILE IS XXTLOG.
  27514.  
  27515. SA4 IFARA
  27516. LX1 12 REMOVE TWO CHARACTER DATA BASE NAME
  27517. MX0 -6
  27518. BX5 X7*X1
  27519. LX1 -12-10
  27520. BX4 X4-X5
  27521. BX6 -X0*X1
  27522. NZ X4,IFARX IF NOT XXTLOG FILE
  27523.  
  27524. * ATTACH XXTLOG FILE IN WRITE MODE.
  27525.  
  27526. ATTACH IFARB,,,,W
  27527. SA1 IFARB
  27528. LX1 -10
  27529. BX6 -X0*X1
  27530. NZ X6,IFAR2 IF ATTACH ERROR ON XXTLOG
  27531. SKIPEI X2,R POSITION XXTLOG AT EOI
  27532. BX6 X6-X6 INDICATE NO ERRORS
  27533. EQ IFARX RETURN
  27534.  
  27535. IFAR2 SX5 X6-2
  27536. NZ X5,IFARX IF NOT *FILE NOT FOUND*
  27537. DEFINE X2
  27538. SA4 IFARB CHECK FOR ERROR ON DEFINE
  27539. AX4 10
  27540. BX6 -X0*X4
  27541. EQ IFARX RETURN
  27542.  
  27543.  
  27544. IFARA VFD 60/0LTLOG
  27545. IFARB FILEC IBUF,IBUFL,FET=13,EPR
  27546. IGRA SPACE 4,10
  27547. ** IGRA - INITIALIZATION GET REFERENCE ADDRESS.
  27548. * RETURN THE RA, FL AND DATA BASE ID FOR TRANEX1.
  27549. *
  27550. * ENTRY (X1) = SUB CONTROL POINT NUMBER.
  27551. *
  27552. * EXIT (X5) = 0 (DATA BASE ID).
  27553. * (X7) = FFL= (FL).
  27554. * (X6) = 0 (RA).
  27555. *
  27556. * USES X- 5, 6, 7.
  27557.  
  27558.  
  27559. IGRA SUBR ENTRY/EXIT
  27560. BX5 X5-X5 DATA BASE ID
  27561. BX6 X6-X6 RA
  27562. SX7 FFL= FL FOR INITIALIZATION
  27563. EQ IGRAX RETURN
  27564. IRIQ SPACE 4,10
  27565. ** IRIQ - INITIALIZATION RETURN INPUT QUEUE.
  27566. * RETURN AN INPUT QUEUE ENTRY TO TOTAL.
  27567. *
  27568. * EXIT (X6) = 0 - QUEUE IS EMPTY.
  27569. * (X6) = QUEUE ENTRY.
  27570. *
  27571. * USES X - 1, 7.
  27572. * A - 1, 7.
  27573.  
  27574.  
  27575. IRIQ SUBR ENTRY/EXIT
  27576. SA1 IRIQA QUEUE ENTRY
  27577. BX7 X7-X7
  27578. BX6 X1
  27579. SA7 A1 CLEAR ENTRY
  27580. EQ IRIQX RETURN
  27581.  
  27582.  
  27583. IRIQA BSSZ 1 QUEUE ENTRY
  27584. TITLE LOADER= - INTERFACE TO LOADU.
  27585. LOADER= SPACE 4,10
  27586. ** LOADER= IS THE INTERFACE NEEDED TO CALL LOADU
  27587. * FROM THE LOADER MACRO.
  27588. *
  27589. * EXIT DOES NOT RETURN FROM LDV CALL.
  27590. * RETURN IS TO CALLING ADDRESS +2.
  27591. *
  27592. * USES X - 0, 1, 2, 3, 4, 6, 7.
  27593. * A - 0, 1, 2, 3, 4, 6, 7.
  27594. * B - 2, 3, 4, 5, 6, 7.
  27595. *
  27596. * CALLS SYS=.
  27597.  
  27598.  
  27599. LOADER= SUBR ENTRY
  27600. SA1 LOADER=
  27601. LX1 30
  27602. SX2 B1 ADVANCE THE RETURN ADDRESS
  27603. SA3 X1
  27604. IX7 X1+X2
  27605. SX4 X7
  27606. SA5 X3 FIRST WORD OF PARAMETER LIST
  27607. SA0 IFL= TRANEX1 FIELD LENGTH
  27608. SB3 X5 LWA+1 OF LOADABLE AREA
  27609. AX5 30
  27610. MX0 -12
  27611. SX5 X5
  27612. SB5 X3+3
  27613.  
  27614. * DETERMINE LWA+1 OF PARAMETER AREA.
  27615.  
  27616. LOA1 SA1 B5 GET HEADER OF NEXT REQUEST
  27617. LX1 -36
  27618. BX2 -X0*X1 LENGTH OF REQUEST
  27619. SX2 X2+B1
  27620. SB5 B5+X2 NEXT PARAMETER ADDRESS
  27621. NZ X1,LOA1 IF NOT END OF PARAMETER AREA
  27622.  
  27623. * PUT PARAMETERS IN REGISTERS FOR LOADU
  27624. *
  27625. * (A0) = CM FIELD LENGTH.
  27626. * (X0) = EXTENDED MEMORY FIELD LENGTH.
  27627. * (B7) = FWA OF LOADABLE AREA. THIS IS THE ADDRESS
  27628. * WHERE LOADU IS LOADED.
  27629. * (X6) = BITS 0-17 - FWA OF USER-CALL PARAMETER AREA.
  27630. * 18-35 - LWA+1 OF USER-CALL PARAMETER AREA.
  27631. * 36-53 - ADDRESS FOR LOADU TO RETURN TO.
  27632. *
  27633.  
  27634. BX0 X0-X0 NO EXTENDED MEMORY FIELD LENGTH FOR LOAD
  27635. SX6 B5 LWA OF REQUEST LIST
  27636. SX7 X3 FWA OF REQUEST LIST
  27637. LX4 36
  27638. LX6 18
  27639. BX6 X4+X6
  27640. BX6 X6+X7
  27641.  
  27642. * CALL LDV TO LOAD AND EXECUTE LOADU.
  27643.  
  27644. SA1 LOAB NAME OF LOADER OVERLAY
  27645. SB7 X5 FWA OF LOADABLE AREA
  27646. SX3 B3 LWA+1 OF LOAD
  27647. SX4 141B U-BIT, V-BIT, E-BIT
  27648. BX7 X1
  27649. SA7 LOAC FIRST WORD OF LIST
  27650. LX3 18
  27651. LX4 36
  27652. BX3 X3+X5
  27653.  
  27654. * FORM LDV CALL WORD AND CALL LDV.
  27655.  
  27656. SA1 LOAA
  27657. BX7 X3+X4
  27658. SX2 A7
  27659. SA7 A7+B1 STORE THE SECOND WORD OF LIST
  27660. BX7 X1+X2 LDV CALL
  27661. LOA2 SA1 B1
  27662. NO
  27663. NZ X1,LOA2 IF SYSTEM REQUEST NON ZERO
  27664. SA7 A1 CALL LDV
  27665. LOA3 NO
  27666. NO
  27667. EQ LOA3 WAIT FOR LDV TO DROP CPU
  27668.  
  27669.  
  27670. LOAA VFD 18/0LLDV,42/0
  27671. LOAB VFD 60/0LLOADU
  27672. LOAC BSSZ 2 PARAMETER AREA FOR LDR CALL
  27673. AREA CURRENTLY BEING PROCESSED
  27674.  
  27675. SEG
  27676. SPACE 4,10
  27677. *** COMMON DECKS USED IN INITIALIZATION.
  27678.  
  27679.  
  27680. *CALL COMCARG
  27681. *CALL COMCCIO
  27682. *CALL COMCCOD
  27683. *CALL COMCCPM
  27684. *CALL COMCDXB
  27685. *CALL COMCLFM
  27686. *CALL COMCMVE
  27687. *CALL COMCOVL
  27688. *CALL COMCPFM
  27689. *CALL COMCRDC
  27690. *CALL COMCRDO
  27691. *CALL COMCRDS
  27692. *CALL COMCRDW
  27693. *CALL COMCSFN
  27694. *CALL COMCSNM
  27695. *CALL COMCSYS
  27696. *CALL COMCUPC
  27697. *CALL COMCWTO
  27698. *CALL COMCWTW
  27699. *CALL COMKTIP
  27700. *CALL COMKZFN
  27701. BUFFERS SPACE 4
  27702. * INITIALIZATION FILE BUFFERS
  27703.  
  27704. RBUFL EQU 201B
  27705. RBUF BSS RBUFL *TAF* INITIALIZATION FILE BUFFER
  27706.  
  27707. HBUFL EQU MAXDB BUFFER FOR *TAF* DATA BASES
  27708. HBUF BSS HBUFL
  27709.  
  27710. THBUFL EQU MAXDB BUFFER FOR *TOTAL* DATA BASES
  27711. THBUF BSS THBUFL
  27712.  
  27713. CBUFL EQU MAXDB BUFFER FOR *CRM* DATA BASES
  27714. CBUF BSS CBUFL
  27715.  
  27716. OTBUFL EQU MAXDB BUFFER FOR OTHER DATA BASES
  27717. OTBUF BSS OTBUFL
  27718.  
  27719. TCBUFL EQU HBUFL+THBUFL+CBUFL+OTBUFL
  27720. TCBUF BSS TCBUFL BUFFER FOR TCF
  27721.  
  27722. LBUFL EQU 101B
  27723. LBUF BSS LBUFL
  27724.  
  27725. IBUFL EQU 401B
  27726. IBUF EQU * COMMON BUFFER FOR INITIALIZATION FILE WORK
  27727.  
  27728. SPACE 4,10
  27729. FFL1 EQU * END OF *TAF1*
  27730.  
  27731. .FFL MAX IBUF+IBUFL+10B,FFL1
  27732. FFL= EQU .FFL FL REQUIRED FOR *TAF* *RFL*
  27733. QUAL *
  27734. "PROD"2 TTL "PROD"2 END/RECOVERY PROCESSOR - VER "VERT".
  27735. EJECT
  27736. QUAL "PROD"2
  27737. IDENT "PROD"2,REC,REC,1,0 END/RECOVERY.
  27738. *COMMENT TAF - END/RECOVERY.
  27739. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  27740. SPACE 4
  27741. *** TRANSACTION EXECUTIVE END/RECOVERY PROCESSOR.
  27742. * J. R. HOGUE 72/05/06.
  27743. SPACE 4
  27744. *** *TAF2* DOES THE END/RECOVERY PROCESSING FOR TAF.
  27745. * THIS INCLUDES
  27746. * 1) FLUSHING BUFFERED JOURNAL FILES
  27747. * 2) ISSUING STATISTICS TO THE DAYFILE
  27748. * 3) CLOSING THE CRM DATA BASE FILES.
  27749. * 4) CLOSING THE AFTER IMAGE RECOVERY FILES IF THEY EXIST.
  27750. * 5) CLOSING THE TAF COMMUNICATION RECOVERY FILE(S).
  27751. *
  27752. * TO RESTART TAF IN RECOVERY MODE, SENSE SWITCH 3 MUST BE *ON*.
  27753. * *TAFREC* WILL THEN USE THE VALUES IN THE RECOVERY FILE
  27754. * INSTEAD OF USING WHAT WAS SPECIFIED ON THE *TCF*.
  27755. SPACE 4
  27756. *** EXTERNAL DECISION KEYS
  27757. *
  27758. * SW4 IF SET - RESTART TRANEX AFTER A RECOVERY.
  27759. * SW5 IF SET - CALL *DMD* AND *OUT*, AFTER AN ABORT OR DROP.
  27760. REC TITLE END/RECOVERY DRIVER.
  27761. ** REC DETERMINES RECOVERY OPTIONS BY EXAMINING THE SENSE
  27762. * SWITCHES AND EXECUTES THE APPROPRIATE ROUTINES.
  27763.  
  27764.  
  27765. ORG TRFL
  27766. REC SB1 1
  27767. MESSAGE RMES1,,R *RECOVERY IN PROGRESS.*
  27768. BX6 X6-X6
  27769. SA6 B1+B1
  27770. SA0 REC1 ERROR RETURN ADDRESS FOR *ERP$*
  27771. MEMORY ECS,2,R,,NABORT
  27772. STATUS TIF INITIALIZATION FILE
  27773. SA1 X2
  27774. MX6 11
  27775. LX1 59-11
  27776. BX1 X6*X1
  27777. NZ X1,REC2 IF INITIALIZATION FILE PRESENT
  27778. REC1 MESSAGE RMES2 RECOVERY IMPOSSIBLE
  27779. ENDRUN
  27780.  
  27781. REC2 REWIND TIF
  27782. SA1 VFSCP SAVE LAST VFSCP
  27783. BX6 X1
  27784. SA6 RECA
  27785. READ TIF
  27786. READW TIF,RECB,1 READ *TIF* STATUS WORD
  27787. READW TIF,VLOCS,VLOCL
  27788. SA2 VINT TRANEX1 COMPLETE FLAG
  27789. SA1 TROA
  27790. ZR X2,REC1 IF TRANEX1 WAS NOT COMPLETE
  27791. SA2 RECA FWA OF SUB-CONTROL POINTS
  27792. BX6 X2
  27793. SA6 VFSCP
  27794. ZR X1,REC3 TRANEX NOT ROLLED OUT
  27795. SA1 TROB+1 SET FIRST/IN/OUT/LIMIT TO USE SCRATCH AREA
  27796. SX6 RBUF
  27797. MX4 42
  27798. SA6 A1+B1 IN
  27799. BX1 X4*X1
  27800. BX7 X1+X6
  27801. SA6 A6+B1 OUT
  27802. SA2 A6+B1
  27803. SA7 A1 FIRST
  27804. SX6 RBUF+RBUFL-1
  27805. BX2 X4*X2
  27806. BX7 X2+X6
  27807. SA7 A2 LIMIT
  27808. REWIND TROB,R REWIND ROLLOUT FILE
  27809. READ TROB INITIATE READ
  27810. READW TROB,ROFL,ROFL-TRFL THROW AWAY FL WHICH RECOVERY USES
  27811. SA5 CURFL CURRENT FL
  27812. SX0 X5+
  27813. READW TROB,ROFL,X0-ROFL LOAD FL AFTER RECOVERY OVERLAY
  27814. REC3 RJ CSC CHECK SUBCONTROL POINTS
  27815. SA5 B0
  27816. LX5 59-11 POSITION TO SENSE SWITCH 6
  27817. PL X5,REC4 IF SENSE SWITCH 6 SET
  27818. WRITER OUTPUT,R
  27819.  
  27820. * WRITE TERMINATION FLAG ON *CRF* FILE.
  27821.  
  27822. REC4 RJ TTR TERMINATE COMMUNICATIONS RECOVERY FILES
  27823.  
  27824. * FORCE TOTAL TO FLUSH BUFFERS.
  27825.  
  27826. SA1 VTOT READ TOTAL INITIALIZATION FLAG
  27827. SA2 REC5 MODIFY CALL TO TOTAL
  27828. ZR X1,REC7 IF TOTAL WAS NOT LOADED
  27829. LX1 30
  27830. MX0 18
  27831. LX0 -12
  27832. BX6 -X0*X2
  27833. BX6 X1+X6
  27834. SA6 A2
  27835. RJ * VOID THE INSTRUCTION STACK
  27836.  
  27837. * PUT ENTRY INTO TOTAL INPUT QUEUE
  27838.  
  27839. SA1 TDI+1 FIRST
  27840. SA3 TQUE QUEUE ENTRY
  27841. SX6 X1+B1
  27842. BX7 X1
  27843. SA6 A1+B1 IN
  27844. BX6 X3
  27845. SA7 A6+B1 OUT
  27846. SA6 X7 PUT INTO QUEUE
  27847. REC5 RJ REC5 CALL TOTAL
  27848. * RJ =XTOTAL (CALL TOTAL)
  27849. SA1 STATUS
  27850. SA2 OSTAT CHECK FOR TOTAL DONE ON FINAL CALL
  27851. SB1 1
  27852. BX3 X2-X1
  27853. NZ X3,REC6 IF TOTAL DONE
  27854. RECALL
  27855. EQ REC5 TRY AGAIN
  27856.  
  27857. REC6 SA2 STAT
  27858. BX3 X2-X1
  27859. BX6 X1
  27860. ZR X3,REC7 IF TOTAL RECOVERED
  27861. SA6 RMEST2+1
  27862. MESSAGE RMEST1,,R RECOVERY OF TOTAL FAILED
  27863. MESSAGE RMEST2,,R TOTAL STATUS
  27864.  
  27865. * CLOSE *CRM* FILES.
  27866.  
  27867. REC7 SA1 VAAM AAM INITIALIZATION FLAG
  27868. ZR X1,REC8 IF AAM WAS NOT LOADED
  27869. RJ CCF CLOSE *CRM* FILES
  27870. REC8 RJ CAS CHECK FOR ASSIGNED EQUIPMENT
  27871. RJ RJF RECOVER JOURNAL FILES
  27872.  
  27873. RJ IDS ISSUE DAYFILE STATISTICS
  27874. MESSAGE RMES3,,R RECOVERY COMPLETE
  27875. SA1 B0
  27876. LX1 -6-4 SW4
  27877. PL X1,REC9 IF NOT TO RESTART TRANEX
  27878. ENDRUN
  27879. REC9 MESSAGE RMES4 NORMAL TERMINATION
  27880. ENDRUN
  27881.  
  27882. RECA BSS 1 FWA OF SUB-CONTROL POINTS
  27883. RECB BSS 1 *TIF* STATUS WORD
  27884.  
  27885.  
  27886. TIF BSS 0 *TAF* INITIALIZATION FILE
  27887. "TIF" FILEB RBUF,RBUFL
  27888.  
  27889. O BSS 0 OUTPUT DUMP FILE
  27890. OUTPUT FILEB RJF,1,FET=10
  27891. CAS SPACE 4
  27892. ** CAS CHECK FOR ASSIGNED EQUIPMENT
  27893. * IF A TAPE UNIT(S) HAS BEEN ASSIGNED VIA THE K-DISPLAY
  27894. * AS A POOL UNIT FOR JOURNAL FILES, SET UP FOR USE IF
  27895. * TAPE PARITY ERROR OR END OF REEL PROCESSING BECOMES
  27896. * NECESSARY DURING BUFFERED JOURNAL FILE CLEAN UP
  27897.  
  27898.  
  27899. CAS PS
  27900. REWIND SCR,R SCRATCH FILE NUMBER 1
  27901. SA1 X2+4
  27902. BX4 X4-X4
  27903. MX6 12
  27904. BX6 X6*X1
  27905. ZR X6,CAS1 IF FILE NOT PRESENT
  27906. SX4 X2
  27907. CAS1 REWIND SCR1,R CHECK SCRATCH FILE 2
  27908. SA1 X2+4
  27909. MX6 12
  27910. BX6 X6*X1
  27911. ZR X6,CAS2 IF FILE NOT PRESENT
  27912. LX4 18
  27913. BX4 X4+X2
  27914. CAS2 BX6 X4
  27915. SA6 ASEQ ASSIGNED EQUIPMENT WORD
  27916. JP CAS *RETURN
  27917.  
  27918. CCF SPACE 4,15
  27919. ** CCF - CLOSE *CRM* FILES.
  27920. *
  27921. * ENTRY (VAAQ) = FWA OF QUEUE.
  27922. * (X1) = ENTRY POINT FOR *AMI*.
  27923. *
  27924. * EXIT FILES ARE CLOSED.
  27925. *
  27926. * USES X - 1, 2, 3, 6, 7.
  27927. * A - 1, 2, 3, 6, 7.
  27928. * B - 2, 3, 5, 6, 7.
  27929. *
  27930. * CALLS AMI, CFD, SFN, SNM.
  27931. *
  27932. * MACROS MESSAGE.
  27933.  
  27934.  
  27935. CCF SUBR ENTRY/EXIT
  27936. SX6 B1 BUILD *RJ =XAMI* INSTRUCTION
  27937. LX6 24-0
  27938. SX1 X1+ *AMI* ENTRY POINT.
  27939. BX6 X6+X1
  27940. LX6 30
  27941. SA6 CCFA
  27942. RJ * VOID THE INSTRUCTION STACK
  27943.  
  27944. * PLACE RECOVERY ENTRY INTO AAM INPUT QUEUE.
  27945.  
  27946. CCF1 SA1 VAAQ FWA OF FET FOR INPUT QUEUE
  27947. SA3 CCFB RECOVERY REQUEST
  27948. LX1 17-41
  27949. SA1 X1+B1 FIRST WORD OF QUEUE
  27950. SX6 X1+B1
  27951. SA6 A1+B1 IN
  27952. BX7 X1
  27953. BX6 X3
  27954. SA7 A6+B1 OUT
  27955. SA6 X7 REQUEST INSERT IN QUEUE
  27956. MX7 1 SET FLAG IN *AMST* TO INDICATE IDLE
  27957. LX7 58-59
  27958. SA1 VAAM
  27959. SA7 X1-2
  27960. CCF2 BSS 0
  27961. CCFA RJ 0 MODIFIED BY *CCF*
  27962. * RJ =XAMI CALL ADVANCED ACCESS METHODS INTERFACE
  27963. SA2 CCFC D.B./FILE NAME
  27964. MX1 12
  27965. MX6 42
  27966. BX1 X1*X2
  27967. BX5 X6*X2
  27968. LX2 59
  27969. BX1 X1-X5
  27970. PL X2,CCF2 IF INCOMPLETE REQUEST
  27971. ZR X5,CCF4 IF NO MORE DATA BASES
  27972. SX5 CCFD ADDRESS OF THE COUNTERS
  27973. SB7 CCFFL NO. OF COUNTERS TO PROCESS
  27974. SB6 CCFO
  27975. ZR X1,CCF3 IF DATA BASE COUNTERS
  27976. SB7 CCFGL ADJUST FOR FILE COUNTERS
  27977. SB6 CCFK
  27978. CCF3 SA1 X5+
  27979. RJ CFD
  27980. SA6 CCFR CONVERTED COUNTER
  27981. SB2 1RX SUBSTITUTE CHARACTER
  27982. SB3 CCFS MESSAGE ASSEMBLY AREA
  27983. SA1 CCFC D.B./FILE NAME
  27984. SB5 -B6
  27985. RJ SNM
  27986. SB7 B7-B1
  27987. SX5 X5+B1
  27988. SB6 B6+CCFQL
  27989. MESSAGE CCFR
  27990. NE B7,CCF3 IF NOT ALL COUNTERS PROCESSED
  27991. EQ CCF1 ASK FOR NEXT FILE
  27992.  
  27993. CCF4 MESSAGE CCFT
  27994. EQ CCFX RETURN
  27995.  
  27996. CCFB VFD 24/0,6/0,6/TRTC,1/1,5/0,18/CCFC RECOVERY REQUEST
  27997. CCFC BSS 1 FILE NAME OR DATA BASE NAME
  27998. CCFD BSS 1 NUMBER OF OPENS OR BEGINS
  27999. CCFE BSS 1 NUMBER OF OPEN REJECTS OR COMMITS
  28000. CCFF BSS 1 NUMBER OF LOCKS OR FREES
  28001. CCFFL EQU *-CCFD
  28002. CCFG BSS 1 NUMBER OF LOCK REJECTS
  28003. CCFGL EQU *-CCFD
  28004.  
  28005. CCFK DATA C* KILO OPENS - XXXXXXX. *
  28006. CCFL DATA C* KILO OPEN REJECTS - XXXXXXX.*
  28007. CCFM DATA C* KILO LOCKS - XXXXXXX. *
  28008. CCFN DATA C* KILO LOCK REJECTS - XXXXXXX.*
  28009. CCFO DATA C* KILO BEGINS - XX. *
  28010. CCFP DATA C* KILO COMMITS - XX. *
  28011. CCFQ DATA C* KILO FREES - XX. *
  28012. CCFQL EQU *-CCFQ
  28013.  
  28014. CCFR BSS 1
  28015. CCFS BSS CCFQL
  28016.  
  28017. CCFT DATA C* AAM FILES CLOSED.*
  28018. ASEQ BSSZ 1 ASSIGNED EQUIPMENT WORD
  28019.  
  28020. SCR BSS 0 TAPE POOL EQUIPMENT ASSIGNMENT FILE 1
  28021. SCR RFILEB SCRB,SCRBL,FET=14
  28022.  
  28023. SCR1 BSS 0 TAPE POOL EQUIPMENT ASSIGNMENT FILE 2
  28024. SCR1 RFILEB SCRB,SCRBL,FET=14
  28025.  
  28026. SCRBL EQU 2001B DUMMY LENGTH FOR SCR(1) FET
  28027. SCRB EQU 101B DUMMY ADDRESS FOR SCR(1) FET
  28028. CSC SPACE 4,15
  28029. ** CSC - CHECK SUBCONTROL POINTS.
  28030. *
  28031. * SEARCH ALL SUBCONTROL POINTS BEYOND *ITASK* TO CLEAR THE
  28032. * STORAGE LOCK FLAG AND SET THE RELEASABLE
  28033. * FLAG IN THE SUBCONTROL POINT TABLE.
  28034. * *AVAILCM* AND *ITASK-S* SUBCONTROL POINT FREE SPACE IS
  28035. * UPDATED.
  28036. *
  28037. * ENTRY (VCPA) = FWA OF SUBCONTROL POINT TABLE.
  28038. *
  28039. * EXIT ALL SUBCONTROL POINT TABLE ENTRIES UPDATED.
  28040. *
  28041. * USES X - ALL.
  28042. * A - 1, 2, 3, 4, 6, 7.
  28043.  
  28044.  
  28045. CSC2 SA4 A4-SCNSW GET *ITASK-S* SUBCP TABLE
  28046. LX4 SCFCN-SCFCS-1 RIGHT JUSTIFY *ITASK-S* FREE SPACE
  28047. SA2 AVAILCM
  28048. IX6 X4+X1 UPDATE *ITASK-S* FREE SPACE
  28049. IX7 X2+X1 UPDATE *AVAILCM*
  28050. LX6 SCFCS-SCFCN+1
  28051. SA7 A2
  28052. SA6 A4+
  28053.  
  28054. CSC SUBR ENTRY/EXIT
  28055. SA2 VCPA GET FWA OF SUBCONTROL POINT
  28056. LX2 -24
  28057. SA2 X2
  28058. SA4 A2+SCNSW GET FWA OF SUBCP AFTER *ITASK*
  28059. MX5 -SCFLN
  28060. BX1 X1-X1
  28061. SX2 X4+ FWA OF NEXT SUBCP
  28062. CSC1 ZR X2,CSC2 IF DONE SEARCHING SUBCP TABLE
  28063. MX0 -59
  28064. SA3 X2
  28065. BX6 -X0*X3 CLEAR STORAGE LOCK FLAG
  28066. LX0 SCRLS-59
  28067. LX3 SCFLN-1-SCFLS
  28068. BX4 -X5*X3 GET TASK FL
  28069. SX4 X4+NUAPL ADD SYSTEM AREA
  28070. IX1 X1+X4
  28071. BX7 X0+X6 ADD RELEASE SUBCONTROL POINT FLAG
  28072. SA3 A3+SCNSW GET NEXT SUBCP ADDRESS
  28073. SA7 X2 UPDATE FWA OF SUBCP TABLE
  28074. SX2 X3
  28075. EQ CSC1 CONTINUE SEARCH AT NEXT SUBCP
  28076. RJF SPACE 4
  28077. ** RJF CHECKS JOURNAL FILE FETS AND ISSUES A *WRITER* FOR
  28078. * EACH BUFFERED JOURNAL FILE.
  28079.  
  28080.  
  28081. RJF PS
  28082. MEMORY CM,RJFC,R GET CURRENT FIELD LENGTH
  28083. SB6 RJF1 RETURN ADDRESS
  28084. SA1 JOUR0+1 FIRST
  28085. SB3 B1+B1
  28086. EQ RJF4 CHECK JOUR0 FET FOR LEGALITY
  28087.  
  28088. RJF1 WRITEF JOUR0,R FLUSH JOUR0
  28089. SA1 VEDT
  28090. LX1 -24
  28091. SA2 X1 EDT HEADER WORD 1
  28092. SX1 X1+1
  28093. LX2 -18
  28094. SX0 X2 EDT COUNT
  28095. RJF2 ZR X0,RJF IF ALL EDT-S PROCESSED
  28096. SA3 X1+
  28097. LX3 -18
  28098. SB5 X3-JFETL ADDRESS OF FIRST JOURNAL FILE - JFETL
  28099. MX6 -6
  28100. LX3 -36
  28101. BX3 -X6*X3
  28102. SB4 X3 JOURNAL COUNT FOR THIS EDT
  28103. SA1 A3-B1 HEADER WORD 1
  28104. SX6 X1+1 ADDRESS OF EDT HEADER WORD 2
  28105. SX0 X0-1 DECREMENT EDT COUNT
  28106. SA6 RJFB UPDATE EDT POINTER
  28107. RJF3 SA1 RJFB ADDRESS OF NEXT EDT
  28108. ZR B4,RJF2 IF DONE WITH THIS EDT
  28109. SB5 B5+JFETL BUMP FET POINTER FOR JOURNAL FILES
  28110. SB3 B1+B1
  28111. SB4 B4-B1 DECREMENT JOURNAL FILE COUNT
  28112. SA2 B5+7 JOURNAL STATUS WORD
  28113. SA1 B5+B1 FIRST
  28114. LX2 -1
  28115. NG X2,RJF3 IF NOT BUFFERED JOURNAL FILE
  28116. SB6 RJF6 RETURN ADDRESS
  28117. RJF4 SA4 RJFC CURRENT FIELD LENGTH
  28118. SX6 JBUF0-1 LOWER LEGAL LIMIT
  28119. LX4 30
  28120. SX7 X4 UPPER LEGAL LIMIT
  28121.  
  28122. * CHECK FET FOR VALIDITY
  28123.  
  28124. RJF5 SA2 A1+B1
  28125. SB3 B3-B1
  28126. SX1 X1
  28127. SX2 X2
  28128. IX3 X1-X6
  28129. IX4 X2-X6
  28130. NG X3,RJF3 IF FET ARGUMENT ERROR
  28131. NG X4,RJF3 IF FET ARGUMENT ERROR
  28132. IX3 X1-X7
  28133. IX4 X2-X7
  28134. PL X3,RJF3 IF FET ARGUMENT ERROR
  28135. PL X4,RJF3 IF FET ARGUMENT ERROR
  28136. SA1 A1+2
  28137. NZ B3,RJF5 IF OUT/LIMIT NOT CHECKED YET
  28138. JP B6 FET VALIDATED
  28139. RJF6 SA1 B5
  28140. SA2 RJFA CHECK FILE NAME
  28141. BX4 X1
  28142. MX3 18
  28143. LX1 12
  28144. BX3 X3*X1 CHARS 3 THROUGH 5 OF JOURNAL FILES
  28145. IX3 X3-X2
  28146. NZ X3,RJF3 IF NOT *XXJOR* TYPE FILE
  28147. LX4 59
  28148. PL X4,RJF8 IF LAST REQUEST NOT COMPLETE
  28149. SX2 B5+
  28150.  
  28151. * FLUSH BUFFER
  28152.  
  28153. SA0 RJF7 RETURN ADDRESS
  28154. WRITEF B5+,R WRITE FILE MARK
  28155. RJF7 SA0 RJF3 LOOP FOR ALL JOURNAL FILES
  28156. EQ ERP$ CHECK FOR ABNORMAL STATUS
  28157.  
  28158. * REISSUE THE *CIO* REQUEST.
  28159. * ENTRY (B5) = FET ADDRESS.
  28160.  
  28161. RJF8 SA1 B5+FEMGW
  28162. LX1 59-FEMGS
  28163. NG X1,RJF3 IF TAPE
  28164. SA1 B5+FECRW GET CURRENT RANDOM ADDRESS
  28165. ZR X1,RJF9 IF *CIO* NOT PROCESSED
  28166. BX7 X1
  28167. SA7 B5+FERRW RESET RANDOM ADDRESS
  28168. SA2 B5
  28169. SX6 B1 SET COMPLETION FLAG
  28170. SA1 B5+FEOOW GET OLD OUT POINTER
  28171. BX6 X2+X6
  28172. BX7 X1
  28173. SA6 B5
  28174. SA7 B5+FEOUW RESET OUT
  28175. REWRITEF B5,R REISSUE *CIO* REQUEST
  28176. EQ RJF3 CONTINUE WITH NEXT FILE
  28177.  
  28178. RJF9 SX6 B1 SET COMPLETION FLAG
  28179. SA1 B5
  28180. BX6 X1+X6
  28181. SA6 B5
  28182. WRITEF B5,R REISSUE *CIO* REQUEST
  28183. EQ RJF3 CONTINUE WITH NEXT FILE
  28184.  
  28185. RJFA VFD 60/0LJOR CHARACTERS 3 THROUGH 5 OF JOURNAL FILES
  28186. RJFB DATA 0 EDT POINTER
  28187. RJFC BSSZ 1 CURRENT FIELD LENGTH
  28188. TTR SPACE 4,15
  28189. ** TTR - TERMINATE COMMUNICATIONS RECOVERY FILES.
  28190. *
  28191. * ENTRY (IDLA) = ZERO IF ABNORMAL TERMINATION.
  28192. * (VTST) = FIRST WORD OF *TST*.
  28193. *
  28194. * EXIT *CRF* HEADER UPDATED.
  28195. *
  28196. * USES A - 1, 2, 3, 4, 6, 7.
  28197. * X - 1, 2, 3, 4, 5, 6, 7.
  28198. * B - 3.
  28199. *
  28200. * CALLS FIO.
  28201. *
  28202. * MACROS CLOCK, DATE, RECALL, REWIND.
  28203.  
  28204. TTR SUBR ENTRY/EXIT
  28205. .B IFEQ IPTAR,1
  28206. DATE TTRA DATE OF TERMINATION
  28207. CLOCK TTRB TIME OF TERMINATION
  28208. SX7 -B1
  28209. SA7 TTRC FIRST *CRF*
  28210. TTR1 SA2 VTST GET FWA OF *TST* HEADER
  28211. LX2 -24
  28212. SB3 X2-TTFTL
  28213. SA1 TTRC
  28214. SX7 X1+1 INCREMENT *CRF* ID
  28215. LX1 X7,B1 MULTIPLY BY TWO
  28216. SX6 X7-MAXRC
  28217. ZR X6,TTRX IF ALL *CRF-S* PROCESSED
  28218. SA7 A1 UPDATE *CRF* ID
  28219. SA4 X1+B3
  28220. ZR X4,TTR1 IF NO *CRF* TO PROCESS
  28221. SX7 A4+
  28222. SA7 TTRE SAVE ID
  28223. SX5 X4+TTFTW FWA OF FET
  28224. SA1 X5
  28225. LX1 59-FECLS
  28226. NG X1,TTR2 IF LAST *CIO* REQUEST COMPLETED
  28227. MX0 FECON+FEFTN
  28228. LX0 FECOS-59
  28229. LX1 59-59-59+FECLS
  28230. BX2 X0*X1
  28231. SX3 X2-CIORW
  28232. NZ X3,TTR2 IF NOT REWRITE
  28233. MX0 8
  28234. LX1 59-17
  28235. BX1 X0*X1
  28236. NZ X1,TTR4 IF ERROR ON FILE
  28237. SA2 X5+B1 GET RANDOM ADDRESS
  28238. SA3 X2+TTRAW-TTBFW
  28239. BX7 X3
  28240. SX6 X2
  28241. SA7 X5+FERRW RESET RANDOM ADDRESS
  28242. SA6 X5+3 RESET OUT
  28243. SYSTEM CIO,R,X5 REISSUE REWRITE REQUEST
  28244. TTR2 SX2 1R0
  28245. SA4 TTRE GET ID
  28246. MX0 -TFIDN
  28247. SA1 X4+B1
  28248. LX1 TFIDN-TFIDS-1
  28249. BX7 -X0*X1
  28250. IX2 X2+X7 BINARY TO DISPLAY
  28251. LX2 29-5 FORM FILE NAME - *ZZCRFI*
  28252. MX6 30
  28253. SA3 CRF
  28254. BX3 X6*X3
  28255. BX6 X3+X2 FORM FILE NAME - *CRFI*
  28256. SX4 3
  28257. BX6 X6+X4 ADD COMPLETE/BINARY BITS
  28258. SA6 CRF
  28259.  
  28260. * READ *CRF* HEADER.
  28261.  
  28262. SX5 CRF FET ADDRESS
  28263. SX1 CIORD READ FUNCTION
  28264. SX2 B1+ ONE PRU TO READ
  28265. SX6 B1+ PRU ADDRESS
  28266. RJ FIO INITIATE READ
  28267. RECALL X5 WAIT FOR *CRF* I/O TO COMPLETE
  28268. SA1 X5 CHECK ERROR STATUS
  28269. MX2 8
  28270. LX1 59-17
  28271. BX1 X2*X1
  28272. NZ X1,TTR4 IF ERROR ON FILE
  28273. MX2 60-TRRSN
  28274. SA3 IDLA
  28275. SA1 RBUF+TRNRW
  28276. LX2 TRRSS-TRRSN+1
  28277. BX7 X2*X1 CLEAR SHUTDOWN FLAG
  28278. NZ X3,TTR3 IF NORMAL SHUT DOWN
  28279. BX2 -X2
  28280. BX7 X2+X1 ADD ABNORMAL SHUTDOWN FLAG
  28281. TTR3 SA7 A1
  28282. SA1 TTRA DATE
  28283. SA2 TTRB TIME
  28284. BX6 X1
  28285. BX7 X2
  28286. SA6 RBUF+TRTDW TERMINATION DATE
  28287. SA7 RBUF+TRTTW TERMINATION TIME
  28288.  
  28289. * REWRITE THE *CRF* HEADER.
  28290.  
  28291. SX1 CIORW
  28292. SX2 B1 ONE PRU TO WRITE
  28293. SX6 B1 PRU ADDRESS
  28294. SX5 CRF FET ADDRESS
  28295. RJ FIO REWRITE THE HEADER
  28296. RECALL CRF
  28297. REWIND CRF,R
  28298. EQ TTR1 PROCESS NEXT *CRF*
  28299.  
  28300. * ERROR ON FILE *CRF* ISSUE DAYFILE MESSAGE.
  28301.  
  28302. TTR4 SB2 1RX
  28303. SA1 CRF FILE NAME
  28304. MX0 42
  28305. SB3 DAYB DAYFILE BUFFER
  28306. BX1 X0*X1
  28307. SB5 -TTRD
  28308. RJ SNM SET NAME IN MESSAGE
  28309. MESSAGE DAYB ISSUE DAYFILE MESSAGE
  28310. EQ TTR1 CONTINUE PROCESS *CRF* FILE
  28311.  
  28312. TTRA BSS 1 DATE OF TERMINATION
  28313. TTRB BSS 1 TIME OF TERMINATION
  28314. TTRC BSS 1 CURRENT *CRF* ID BEING PROCESSED
  28315. TTRD DATA C* ERROR ON FILE - XXXX.*
  28316. TTRE BSS 1 TEMPORARY
  28317. .B ELSE
  28318. EQ TTRX RETURN
  28319. .B ENDIF
  28320. ERP SPACE 4
  28321. ** ERP$ PROCESS READ/WRITE FILE ERRORS
  28322. *
  28323. * ENTRY (A0) = RETURN ADDRESS (NEGATIVE IF NO PROCESSING)
  28324. * (X2) = FET ADDRESS
  28325. * (X7) = CIO FUNCTION CODE (NEGATIVE IF WITH AUTO RECALL)
  28326. * (B6) = FWA ADDRESS WORKING BUFFER
  28327. * (B7) = NUMBER OF WORDS LEFT TO TRANSFER
  28328. *
  28329. * USES X - 1, 2, 3, 4, 6, 7
  28330. * A - 1, 2, 3, 4, 6, 7
  28331. * B - 3
  28332.  
  28333.  
  28334. ERP5 SB3 A0
  28335. JP B3 *RETURN
  28336.  
  28337. ERP$ BSS 0 ENTRY
  28338. SA1 X2 GET ERROR CODE
  28339. MX6 -4
  28340. SB3 A0 CHECK FOR NON JOURNAL FILE ERROR
  28341. LX6 10
  28342. BX4 -X6*X1
  28343. BX6 X6*X1 CLEAR OUT ERROR CODE
  28344. PL B3,ERP1 IF PROCESSING SELECTED
  28345. SB3 -B3
  28346. SX3 X4 ERROR CODE
  28347. BX4 X4-X4
  28348. SA0 B3 ERROR RETURN ADDRESS
  28349. ERP1 SA6 A1
  28350. ZR X4,ERP5 IF NO ABNORMAL CONDITIONS
  28351. SX3 B6
  28352. SA5 A1+1
  28353. PL X5,ERP5 IF NOT A TAPE FILE
  28354. SX6 B7
  28355. SA7 ERPA+1 SAVE X7
  28356. LX3 18
  28357. SX1 6000B
  28358. BX6 X3+X6 SAVE B6 AND B7
  28359. BX1 -X1*X4
  28360. NZ X1,ERP5 IF OTHER THAN PARITY/END OF REEL ERROR
  28361. SA6 ERPA
  28362. SA1 X2+B1 FIRST
  28363. SA3 A1+B1 SAVE IN AND OUT POINTERS
  28364. SX6 X1
  28365. SA4 A3+B1
  28366. LX3 18
  28367. SA6 A3 SET OUT = IN = FIRST
  28368. BX7 X3+X4
  28369. SA6 A4
  28370. SA7 ERPB
  28371. SA4 CIO= CIO= RETURN ADDRESS
  28372. UNLOAD X2,R UNLOAD AND RETURN TAPE
  28373. SA1 ASEQ
  28374. BX7 X4
  28375. MX6 36
  28376. SA7 CIO= RESTORE CIO= RETURN ADDRESS
  28377. NZ X1,ERP3 IF TAPE(S) PREASSIGNED
  28378. SA1 X2
  28379. SX3 100B+1RT
  28380. LX3 -6 REASSIGN *TXXJORN* TO *XXJORN*
  28381. BX6 X6*X1
  28382. LX6 -6
  28383. BX6 X6+X3 *TXXJORN*
  28384. SA6 A1
  28385. RENAME X2,X1 RENAME DISK JOURNAL FILE TO *XXJORN*
  28386. ERP2 SA1 ERPB RESTORE IN AND OUT
  28387. SX6 X1
  28388. LX1 -18
  28389. SA6 X2+3 OUT
  28390. SX7 X1
  28391. SA7 A6-B1 IN
  28392. SA4 CIO=
  28393. WRITER X2,R EMPTY BUFFER WITH EOR WRITE
  28394. BX7 X4
  28395. SA7 A4 RESTORE ORIGINAL CIO= EXIT ADDRESS
  28396. SA1 ERPA
  28397. SB7 X1 RESTORE B6 AND B7
  28398. SA3 A1+B1
  28399. LX1 -18
  28400. SB6 X1
  28401. BX7 X3 RESTORE X7
  28402. JP CIO=+1 RESTART CIO=
  28403.  
  28404. * ASSIGN NEW TAPE TO FILE
  28405.  
  28406. ERP3 SX3 X1
  28407. NZ X3,ERP4 IF FET ADDRESS IN LOWER FIELD
  28408. AX1 18
  28409. ERP4 SA3 X1
  28410. AX1 18 CLEAR FET ADDRESS
  28411. BX7 X1
  28412. SA1 X2 *XXJORN* FILE NAME
  28413. BX6 X3
  28414. SA7 ASEQ
  28415. SA6 X2
  28416. RENAME X2,X1 RENAME SCATCH TAPE FILE TO JOURNAL FILE
  28417. JP ERP2 CONTINUE WRITE ON NEW TAPE
  28418.  
  28419. ERPA BSS 2 STORAGE FOR B6/B7 AND X7 ENTRY PARAMETERS
  28420. ERPB BSS 1 STORAGE FOR IN AND OUT FET POINTERS
  28421. IDS SPACE 4
  28422. ** IDS - ISSUE TAF STATISTICS TO DAYFILE.
  28423. *
  28424.  
  28425.  
  28426. IDS PS
  28427. SB6 IDSB
  28428. SA1 STAT16 CALCULATE AVERAGE NUMBER OF ACTIVE SUBCP
  28429. SX3 1000
  28430. SA2 A1+B1
  28431. IX1 X1*X3
  28432. IX7 X1/X2
  28433. SA7 A1
  28434. SA2 STAT16+1
  28435. SA1 STAT17 CALCULATE AVERAGE NUMBER OF *SSC* REQUEST
  28436. IX1 X1*X3
  28437. IX7 X1/X2
  28438. SA7 A1
  28439. IDS1 MX0 -12
  28440. SB7 IDSA
  28441. SA2 B6 POINTER TO QUANITY TO BE CONVERTED
  28442. ZR X2,IDS3 END OF TABLE
  28443. SB6 B6+B1
  28444. SA1 X2 GET QUANITY
  28445. IDS2 SA2 A2+B1 MOVE MESSAGE
  28446. SB6 B6+B1
  28447. BX6 X2
  28448. SA6 B7+B1
  28449. SB7 B7+B1
  28450. BX2 -X0*X2
  28451. NZ X2,IDS2 NOT END OF MESSAGE
  28452. ZR X1,IDS1 ZERO QUANITY - DONT ISSUE MESSAGE
  28453. RJ CFD CONVERT FOR OUTPUT
  28454. SA6 IDSA PUT IN MESSAGE
  28455. MESSAGE IDSA,,R WRITE TO DAYFILE
  28456. EQ IDS1 LOOP
  28457.  
  28458. * COMPUTE PER CENT CPU USAGE
  28459.  
  28460. IDS3 RTIME RTIME REAL TIME CLOCK
  28461. SA2 PTIME TIME AT START OF PROGRAM
  28462. SA4 RTIME TIME NOW
  28463. MX3 -36
  28464. BX5 -X3*X2
  28465. BX6 -X3*X4
  28466. IX7 X6-X5 MSECS SINCE START OF PROGRAM
  28467. TIME RTIME
  28468. SA4 RTIME ACCUMULATED CPU TIME
  28469. MX2 -12
  28470. BX5 -X2*X4 MSECS ACCUMULATED
  28471. SA1 CTIME
  28472. LX4 60-12
  28473. BX3 -X2*X4 SECS ACCUMULATED
  28474. SX0 1000
  28475. IX2 X0*X3 MULTIPLY BY 1000
  28476. IX6 X2+X5 TOTAL MSECS ACCUMULATED
  28477. IX6 X6-X1 TIME ACCUMULATED BEFORE PROGRAM
  28478. SX1 100000
  28479. IX3 X6*X1 MULTIPLY BY 100000
  28480. IX1 X3/X7
  28481. RJ CFD CONVERT FOR OUTPUT
  28482. SA6 IDSC-1
  28483. MESSAGE A6,,R PER CENT CPU USAGE
  28484. EQ IDS *RETURN
  28485.  
  28486. IDSA BSSZ 7 DAYFILE MESSAGE BUFFER
  28487.  
  28488. IDSB CON TSEQ
  28489. DIS ,* KILO TRANSACTIONS PROCESSED.*
  28490. CON STAT5
  28491. DIS ,* KILO TRANSACTION ABORTS.*
  28492. CON STAT1
  28493. DATA C* KILO TASK RELOADS.*
  28494. CON STAT2
  28495. DATA C* KILO ITASK RELOADS.*
  28496. CON STAT6
  28497. DATA C* KILO TAF FL INCREASES.*
  28498. CON STAT4
  28499. DATA C* KILO STORAGE MOVES OF TASKS.*
  28500. CON STAT10
  28501. DATA C* KILO NO FL FOR TASK LOAD.*
  28502. CON STAT11
  28503. DATA C* KILO NO SUBCONTROL POINTS.*
  28504. CON STAT12
  28505. DATA C* KILO NO COMMUNICATION BLOCKS.*
  28506. CON STAT14
  28507. DATA C* KILO TASK ROLLOUT STARTS.*
  28508. CON STAT13
  28509. DATA C* KILO TASK ROLLOUT COMPLETES.*
  28510. CON STAT15
  28511. DATA C* KILO TASK RECALLS.*
  28512. CON STAT9
  28513. DATA C* KILO TASK RECALLS FOR OUTPUT.*
  28514. CON STAT16
  28515. DATA C* AVERAGE ACTIVE SUBCONTROL POINTS.*
  28516. CON STAT17
  28517. DATA C* AVERAGE OUTSTANDING CDCS REQUESTS.*
  28518. CON STAT18
  28519. DATA C* KILO CDCS REQUEST REJECTS FOR MAXR.*
  28520. CON STAT19
  28521. DATA C* KILO CDCS REQUEST REJECTS FOR BUSY.*
  28522. CON STAT20
  28523. DATA C* KILO CDCS REQUESTS FROM TASKS.*
  28524. CON 0
  28525. IDSC DIS ,* PER CENT CPU USAGE.*
  28526. MSGQ SPACE 4
  28527. * END/RECOVERY MESSAGES
  28528.  
  28529. RMES1 DIS ,*RECOVERY IN PROGRESS.*
  28530.  
  28531. RMES2 DIS ,*RECOVERY IMPOSSIBLE.*
  28532.  
  28533. RMES3 DIS ,*RECOVERY COMPLETE.*
  28534.  
  28535. RMES4 DATA C*"PROD" TERMINATED.*
  28536.  
  28537. RMEST1 DIS ,*TOTAL DID NOT RECOVER PROPERLY.*
  28538. RMEST2 DIS ,*STATUS IS *
  28539.  
  28540. * PARAMETER LIST FOR TOTAL RECOVERY
  28541.  
  28542. TQUE VFD 24/0,6/77B,6/0,1/1,5/0,18/FLIST
  28543.  
  28544. FLIST VFD 6/4,18/4,12/50B,6/33B,18/TYPE
  28545. VFD 6/4,18/4,12/50B,6/33B,18/STATUS
  28546. VFD 6/4,18/4,12/50B,6/33B,18/SCHEMA
  28547. VFD 6/4,18/4,12/50B,6/33B,18/EOL
  28548. CON 0
  28549.  
  28550. TYPE VFD 60/5LFINAL
  28551. STATUS VFD 60/4L++++
  28552. SCHEMA VFD 60/10H**TRANEX**
  28553. VFD 60/10H****UPDATE
  28554. VFD 60/10HNLEND.
  28555. BSSZ 1
  28556. EOL VFD 60/4LEND.
  28557. BSSZ 1 END IF LIST
  28558. STAT VFD 60/4L****
  28559. OSTAT VFD 60/4L++++
  28560.  
  28561. * COMMUNICATIONS RECOVERY FILE BUFFER.
  28562.  
  28563. CRF BSS 0
  28564. ZZCRF RFILEB RBUF,RBUFL,FET=14
  28565.  
  28566. RBUF BSSZ 411B BUFFER FOR RECOVERY FILE
  28567. RBUFL EQU *-RBUF
  28568.  
  28569. CTEXT TITLE COMMON DECKS.
  28570. *CALL COMCCFD
  28571. *CALL COMCCIO
  28572. *CALL COMCCPM
  28573. *CALL COMCLFM
  28574. *CALL COMCOVL
  28575. *CALL COMCRDW
  28576. *CALL COMCSNM
  28577. *CALL COMCSYS
  28578. *CALL COMKFIO
  28579. ROFL BSS 0 UPPER LIMIT OF RECOVERY OVERLAY
  28580.  
  28581. ERRNG ENDR-* *TAF2* OVERFLOWS INTO RESERVED AREA
  28582.  
  28583. END