Table of Contents

MAGNET

Table Of Contents

  • [00009] MAGNET - MAGNETIC TAPE EXECUTIVE.
  • [00011] MAGNETIC TAPE EXECUTIVE.
  • [00103] MACRO DEFINITIONS.
  • [00105] INMOD - THIS MACRO IN CONJUNCTION WITH THE FOLLOWING OPDEF,S
  • [00408] PROCESSOR STRING DEFINITIONS.
  • [00411] PROC - PROCESSOR MACRO.
  • [00482] TPRO - TABLE OF PROCESSOR STRINGS.
  • [00870] MAIN PROGRAM.
  • [00872] MAIN PROGRAM.
  • [00977] MRT - ACS MOUNT REQUEST TABLE.
  • [00990] ACTIVATE PROCESSORS.
  • [00992] PPU - ACTIVATE PPU PROCESSORS.
  • [01094] INTER CONTROL POINT REQUEST PROCESSING.
  • [01096] CPR - PROCESS INTER-CONTROL POINT REQUEST.
  • [01133] TCPR - TABLE OF INTER CONTROL POINT REQUEST PROCESSORS.
  • [01156] ASU - ASSIGN UNIT.
  • [01267] CSA - CHECK TAPE ALTERNATE STORAGE ACTIVE.
  • [01275] RAR - RECEIVE ATF RESPONSE.
  • [01390] TARS - TABLE OF ATF RESPONSE CODES.
  • [01433] RDP - REQUEST PREVIEW DISPLAY PROMPT.
  • [01454] TMR - TRANSFER ACS MOUNT REQUESTS.
  • [01477] XUD - EXTERNAL UDT UPDATE.
  • [01515] ICR - PROCESS INCORRECT INTER-CONTROL POINT REQUEST.
  • [01535] SEND ATF REQUEST.
  • [01537] SAR - SEND ATF REQUEST.
  • [01625] EXTERNAL PP REQUEST PROCESSING.
  • [01627] PXR - PROCESS EXTERNAL PP REQUEST.
  • [01687] TXRP - TABLE OF EXTERNAL REQUEST PROCESSORS.
  • [01712] AMU - ACS VSN MOUNT ON SPECIFIED UNIT.
  • [01739] ESV - ENTER SCRATCH VSN.
  • [01760] EVS - ENTER VSN.
  • [01790] NVS - SPECIFY NEXT VSN.
  • [01823] SRT - SET *RETRY* FLAG.
  • [01837] STR - SET *TERMINATE* FLAG.
  • [01851] UGO - CLEAR TMS UNIT GO FLAG.
  • [01865] UST - SET TMS UNIT UNLOAD FLAG.
  • [01879] UNL - UNLOAD UNIT.
  • [01896] CUG - CLEAR TMS WAIT UNIT GO FLAG.
  • [01920] IXP - PROCESS INCORRECT EXTERNAL PP REQUEST.
  • [01941] CLS - CHECK LABELS READ STATUS.
  • [01960] MQX - MAKE QUEUE ENTRY FOR EXTERNAL REQUEST.
  • [01976] SFL - SET FLAG IN *UFLA*.
  • [01991] PERIODIC PROCESSING.
  • [01993] CAR - CHECK ACS MOUNT REQUESTS.
  • [02016] CAU - CHECK ACS UNITS.
  • [02056] COR - CHECK OPERATOR REQUESTS.
  • [02120] CUA - CHECK UNIT ACTIVITY.
  • [02228] REQUEST PROCESSING.
  • [02230] CUT - CHECK UNIT DESCRIPTOR TABLE.
  • [02389] EXI - COMMON EXIT POINTS.
  • [02450] REQUEST PROCESSORS.
  • [02461] CAT - CHECK STATISTICAL ACCUMULATOR THESHOLDS.
  • [02480] CCR - CHECK IF CLOSER/RETURN.
  • [02494] CCS - CHECK IF LABEL CHECKING COMPLETE.
  • [02506] CEF - CHECK ERROR FLAG.
  • [02537] CER - CLEAR END OF REEL FLAGS AND ADVANCE SECTION.
  • [02555] CET - CHECK END OF TAPE TYPE AND DETERMINE TYPE OF BACKSPACE
  • [02573] CEV - CHECK END OF VOLUME.
  • [02584] CFP - CHECK FILE POSITION.
  • [02610] CIL - COMPLETE INITIAL LABEL CHECK.
  • [02641] CLR - CHECK IF LABEL READ.
  • [02654] CLM - CHECK LABEL MATCH.
  • [02668] CLO - *CLOSE*TAPE ALTERNATE STORAGE ROUTINES.
  • [05302] CRJ - CHECK FOR REQUEST FROM STAGING JOB.
  • [05491] FJE - FIND JOB ENTRY IN ACTIVE STAGING JOB TABLE.
  • [05516] IRE - ISSUE ROLLIN EVENT AND/OR INITIATE STAGE JOB.
  • [05553] ISJ - INITIATE STAGING JOB.
  • [05684] ISM - ISSUE STATISTICAL MESSAGE.
  • [05771] QPR - QUEUE *PFM* REQUEST.
  • [05899] BUFFER AREA.
  • [05908] PRS - PRESET PROGRAM.
  • [06072] PRESET SUBROUTINES.
  • [06077] CLC - CLEAR MEMORY.
  • [06140] REL - RELOCATE INSTRUCTIONS.
  • [06189] PEQ - PROCESS EQUIPMENT ENTRIES.
  • [06225] AUD - ASSIGN UDT ENTRIES.
  • [06367] TER - TERMINATION PROCESSOR.
  • [06425] CPU - CPU UTILIZATION.
  • [06472] REC - LEVEL 3 RECOVERY.
  • [06585] RES - RESET TAPE ALTERNATE STORAGE.
  • [06626] SDF - SCAN DEMAND FILE.
  • [06732] ABT - ABORT ROUTINE.
  • [06767] END - ENDING ROUTINE.
  • [06783] ERX - ERROR EXIT PROCESSOR.

Source Code

MAGNET.txt
  1. IDENT MAGNET,TPRO,MAGNET
  2. ABS
  3. ENTRY MAGNET
  4. ENTRY RFL=
  5. SST
  6. SYSCOM B1
  7. *COMMENT MAGNET - TAPE EXECUTIVE.
  8. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  9. TITLE MAGNET - MAGNETIC TAPE EXECUTIVE.
  10. SPACE 4,10
  11. *** MAGNET - MAGNETIC TAPE EXECUTIVE.
  12. * R. E. TATE. 73/12/10.
  13. * R. J. PRIEVE. 77/07/15.
  14. * G. S. YODER. 93/02/11.
  15. MAGNET SPACE 4,10
  16. *** COMMAND PARAMETERS.
  17. *
  18. * MAGNET(SJ=N1,SV=N2)
  19. *
  20. * SJ = NUMBER OF STAGING JOBS (FOR TAPE ALTERNATE STORAGE).
  21. * IF *SJ*=0, STAGING OF FILES FROM TAPE IS DISABLED.
  22. * THE DEFAULT VALUE IS DEFINED BY *SJDF* IN *COMSMTX*.
  23. *
  24. * SV = NUMBER OF STAGING TAPE VSN-S (FOR TAPE ALTERNATE
  25. * STORAGE) TO DISPLAY ON THE *E,P* DISPLAY.
  26. * THE DEFAULT VALUE IS DEFINED BY *SVDF* IN *COMSMTX*.
  27. MAGNET SPACE 4,10
  28. *** *MAGNET* CONTROLS PROCESSING FOR ALL USER TAPES IN THE
  29. * SYSTEM.
  30. SPACE 4,10
  31. *** DAYFILE MESSAGES.
  32. *
  33. * * ERROR IN ARGUMENTS.* - AN INCORRECT PARAMETER OR
  34. * VALUE WAS SPECIFIED ON THE *MAGNET* COMMAND.
  35. *
  36. * * INCORRECT COMMAND.* - *MAGNET* WAS CALLED FROM
  37. * NON-SYSTEM ORIGIN JOB.
  38. SPACE 4,10
  39. *** ACCOUNT FILE MESSAGES.
  40. *
  41. * *SOBS, FILENAM, USERIN, FAMPACK, VSNVSN, VERS,R.*
  42. * STATISTICAL MESSAGE ISSUED ON RECEIPT OF A STAGE REQUEST
  43. * FROM *PFM* OR *PFROD* FOR A FILE ARCHIVED ON OPTICAL DISK.
  44. *
  45. * *STBS, FILENAM, USERIN, FAMPACK, VSNVSN, R.*
  46. * STATISTICAL MESSAGE ISSUED ON RECEIPT OF A STAGE REQUEST
  47. * FROM *PFM* OR *PFRES* FOR A FILE ARCHIVED ON TAPE.
  48. SPACE 4,10
  49. *** *MAGNET* CONTROL POINT AREA MESSAGES.
  50. *
  51. *
  52. * * MAGNET* - PRESENT AT *MAGNET* CONTROL POINT,
  53. * UNLESS ERROR CONDITION OR REQUEST FOR OPERATOR
  54. * ACTION OCCURS.
  55. *
  56. * *CHECK E,P DISPLAY* - AN ERROR CONDITION OR REQUEST
  57. * FOR OPERATOR ACTION IS CURRENTLY BEING DISPLAYED
  58. * ON THE *E,P* DISPLAY.
  59. MAGNET SPACE 4,10
  60. **** ASSEMBLY CONSTANTS.
  61.  
  62.  
  63. EX EQU 4000B *PROC* MACRO *BEI* ERROR EXIT FLAG
  64. MEMI EQU 1000B INCREMENT FOR CM FL INCREASE REQUESTS
  65. QUAL$ EQU 1 DEFINE UNQUALIFIED COMMON DECKS
  66.  
  67.  
  68. ****
  69. SPACE 4,10
  70. ** COMMON DECKS.
  71.  
  72.  
  73. *CALL COMCMAC
  74. *CALL COMCCMD
  75. *CALL COMCDCM
  76. QUAL ATF
  77. LIST X
  78. *CALL COMSATF
  79. LIST *
  80. QUAL *
  81. *CALL COMSPFM
  82. QUAL EVENT
  83. *CALL COMSEVT
  84. QUAL *
  85. *CALL COMSSSD
  86. LIST X
  87. *CALL COMSMTX
  88. LIST *
  89. *CALL COMSSFM
  90. QUAL CIO
  91. LIST X
  92. *CALL COMSCIO
  93. LIST *
  94. QUAL *
  95. QUAL RSX
  96. *CALL COMSRSX
  97. QUAL *
  98. QUAL TFM
  99. *CALL COMSTFM
  100. QUAL *
  101.  
  102.  
  103. TITLE MACRO DEFINITIONS.
  104. INMOD SPACE 4,10
  105. ** INMOD - THIS MACRO IN CONJUNCTION WITH THE FOLLOWING OPDEF,S
  106. * MAKES IT POSSIBLE TO SPECIFY A MODIFIER ON ALL 30 BIT
  107. * INCREMENT INSTRUCTIONS. THIS MODIFER MUST BE IN THE FORM
  108. * OF A POINTER TO ONE OF THE TABLE POINTERS THAT IS SET
  109. * DYNAMICALLY AT INITILIZATION TIME. THE INSTRUCTION WILL
  110. * BE MODIFIED DURING INITILIZATION.
  111. * THIS IS USEFUL FOR ACCESSING THE POINTERS THAT ARE
  112. * DYNAMICALLY SET AT INITILIZATION TIME SUCH AS THE FIRST
  113. * WORD ADDRESS OF THE QUEUE TABLE.
  114. *
  115. * DEFINITIONS.
  116. *
  117. * PTRA = POINTER DESIRED.
  118. * LWAF = IF DEFINED TAKE LWA INSTEAD OF FWA.
  119. *
  120. * EXAMPLE-
  121. * TA1 B5,VTTP
  122. * THIS WILL GENERATE A 30 BIT INSTRUCTION OF THE FOLLOWING FORM
  123. * SA1 B5+K
  124. * WHERE K = THE FIRST WORD ADDRESS OF THE QUEUE TABLE.
  125. *
  126. * TB3 0,UBUF,-LWA
  127. * THIS WILL SET B3 TO THE COMPLEMENT OF THE LAST WORD ADDRESS
  128. * OF UBUF.
  129.  
  130.  
  131. INMOD MACRO PTRA,LWAF
  132. LOCAL INM1,INM2,INM3
  133. QUAL
  134. INM1 SET *P
  135. INM2 SET *
  136. IFEQ INM1,60,2
  137. INM1 SET 0
  138. INM2 SET *-1
  139. INM3 SET PTRA
  140. QUAL *
  141. TINST RMT
  142. VFD 12/2000B+INM1
  143. IFC EQ,*LWAF**
  144. VFD 12/0
  145. ELSE 1
  146. VFD 12/4000B
  147. VFD 18/INM3
  148. VFD 18/INM2
  149. TINST RMT
  150. ENDM
  151. OPDEFS SPACE 4,10
  152. ** OPDEF-S USED WITH INMOD.
  153. CTEXT
  154.  
  155.  
  156. TAAQ,Q OPDEF P1,P2,P3,P4
  157. SA.P1 A.P2+P3
  158. INMOD P4
  159. ENDM
  160.  
  161.  
  162. TAA,Q OPDEF P1,P2,P4
  163. SA.P1 A.P2+0
  164. INMOD P4
  165. ENDM
  166.  
  167.  
  168. TAAQ,Q,Q OPDEF P1,P2,P3,P4,P5
  169. SA.P1 A.P2+P3
  170. INMOD P4,P5
  171. ENDM
  172.  
  173.  
  174. TAA,Q,Q OPDEF P1,P2,P4,P5
  175. SA.P1 A.P2+0
  176. INMOD P4,P5
  177. ENDM
  178.  
  179.  
  180. TABQ,Q OPDEF P1,P2,P3,P4
  181. SA.P1 B.P2+P3
  182. INMOD P4
  183. ENDM
  184.  
  185.  
  186. TAB,Q OPDEF P1,P2,P4
  187. SA.P1 B.P2+0
  188. INMOD P4
  189. ENDM
  190.  
  191.  
  192. TABQ,Q,Q OPDEF P1,P2,P3,P4,P5
  193. SA.P1 B.P2+P3
  194. INMOD P4,P5
  195. ENDM
  196.  
  197.  
  198. TAB,Q,Q OPDEF P1,P2,P4,P5
  199. SA.P1 B.P2+0
  200. INMOD P4,P5
  201. ENDM
  202.  
  203.  
  204. TAXQ,Q OPDEF P1,P2,P3,P4
  205. SA.P1 X.P2+P3
  206. INMOD P4
  207. ENDM
  208.  
  209.  
  210. TAX,Q OPDEF P1,P2,P4
  211. SA.P1 X.P2+0
  212. INMOD P4
  213. ENDM
  214.  
  215.  
  216. TAXQ,Q,Q OPDEF P1,P2,P3,P4,P5
  217. SA.P1 X.P2+P3
  218. INMOD P4,P5
  219. ENDM
  220.  
  221.  
  222. TAX,Q,Q OPDEF P1,P2,P4,P5
  223. SA.P1 X.P2+0
  224. INMOD P4,P5
  225. ENDM
  226.  
  227.  
  228. TAQ,Q OPDEF P1,P3,P4
  229. SA.P1 B0+P3
  230. INMOD P4
  231. ENDM
  232.  
  233.  
  234. TAQ,Q,Q OPDEF P1,P3,P4,P5
  235. SA.P1 B0+P3
  236. INMOD P4,P5
  237. ENDM
  238.  
  239.  
  240. TBAQ,Q OPDEF P1,P2,P3,P4
  241. SB.P1 A.P2+P3
  242. INMOD P4
  243. ENDM
  244.  
  245.  
  246. TBA,Q OPDEF P1,P2,P4
  247. SB.P1 A.P2+0
  248. INMOD P4
  249. ENDM
  250.  
  251.  
  252. TBAQ,Q,Q OPDEF P1,P2,P3,P4,P5
  253. SB.P1 A.P2+P3
  254. INMOD P4,P5
  255. ENDM
  256.  
  257.  
  258. TBA,Q,Q OPDEF P1,P2,P4,P5
  259. SB.P1 A.P2+0
  260. INMOD P4,P5
  261. ENDM
  262.  
  263.  
  264. TBBQ,Q OPDEF P1,P2,P3,P4
  265. SB.P1 B.P2+P3
  266. INMOD P4
  267. ENDM
  268.  
  269.  
  270. TBB,Q OPDEF P1,P2,P4
  271. SB.P1 B.P2+0
  272. INMOD P4
  273. ENDM
  274.  
  275.  
  276. TBBQ,Q,Q OPDEF P1,P2,P3,P4,P5
  277. SB.P1 B.P2+P3
  278. INMOD P4,P5
  279. ENDM
  280.  
  281.  
  282. TBB,Q,Q OPDEF P1,P2,P4,P5
  283. SB.P1 B.P2+0
  284. INMOD P4,P5
  285. ENDM
  286.  
  287.  
  288. TBXQ,Q OPDEF P1,P2,P3,P4
  289. SB.P1 X.P2+P3
  290. INMOD P4
  291. ENDM
  292.  
  293.  
  294. TBX,Q OPDEF P1,P2,P4
  295. SB.P1 X.P2+0
  296. INMOD P4
  297. ENDM
  298.  
  299.  
  300. TBXQ,Q,Q OPDEF P1,P2,P3,P4,P5
  301. SB.P1 X.P2+P3
  302. INMOD P4,P5
  303. ENDM
  304.  
  305.  
  306. TBX,Q,Q OPDEF P1,P2,P4,P5
  307. SB.P1 X.P2+0
  308. INMOD P4,P5
  309. ENDM
  310.  
  311.  
  312. TBQ,Q OPDEF P1,P3,P4
  313. SB.P1 B0+P3
  314. INMOD P4
  315. ENDM
  316.  
  317.  
  318. TBQ,Q,Q OPDEF P1,P3,P4,P5
  319. SB.P1 B0+P3
  320. INMOD P4,P5
  321. ENDM
  322.  
  323.  
  324. TXAQ,Q OPDEF P1,P2,P3,P4
  325. SX.P1 A.P2+P3
  326. INMOD P4
  327. ENDM
  328.  
  329.  
  330. TXA,Q OPDEF P1,P2,P4
  331. SX.P1 A.P2+0
  332. INMOD P4
  333. ENDM
  334.  
  335.  
  336. TXAQ,Q,Q OPDEF P1,P2,P3,P4,P5
  337. SX.P1 A.P2+P3
  338. INMOD P4,P5
  339. ENDM
  340.  
  341.  
  342. TXA,Q,Q OPDEF P1,P2,P4,P5
  343. SX.P1 A.P2+0
  344. INMOD P4,P5
  345. ENDM
  346.  
  347.  
  348. TXBQ,Q OPDEF P1,P2,P3,P4
  349. SX.P1 B.P2+P3
  350. INMOD P4
  351. ENDM
  352.  
  353.  
  354. TXB,Q OPDEF P1,P2,P4
  355. SX.P1 B.P2+0
  356. INMOD P4
  357. ENDM
  358.  
  359.  
  360. TXBQ,Q,Q OPDEF P1,P2,P3,P4,P5
  361. SX.P1 B.P2+P3
  362. INMOD P4,P5
  363. ENDM
  364.  
  365.  
  366. TXB,Q,Q OPDEF P1,P2,P4,P5
  367. SX.P1 B.P2+0
  368. INMOD P4,P5
  369. ENDM
  370.  
  371.  
  372. TXXQ,Q OPDEF P1,P2,P3,P4
  373. SX.P1 X.P2+P3
  374. INMOD P4
  375. ENDM
  376.  
  377.  
  378. TXX,Q OPDEF P1,P2,P4
  379. SX.P1 X.P2+0
  380. INMOD P4
  381. ENDM
  382.  
  383.  
  384. TXXQ,Q,Q OPDEF P1,P2,P3,P4,P5
  385. SX.P1 X.P2+P3
  386. INMOD P4,P5
  387. ENDM
  388.  
  389.  
  390. TXX,Q,Q OPDEF P1,P2,P4,P5
  391. SX.P1 X.P2+0
  392. INMOD P4,P5
  393. ENDM
  394.  
  395.  
  396. TXQ,Q OPDEF P1,P3,P4
  397. SX.P1 B0+P3
  398. INMOD P4
  399. ENDM
  400.  
  401.  
  402. TXQ,Q,Q OPDEF P1,P3,P4,P5
  403. SX.P1 B0+P3
  404. INMOD P4,P5
  405. ENDM
  406. ENDX
  407. DATA SPACE 4,10
  408. TITLE PROCESSOR STRING DEFINITIONS.
  409. ORG TPRO
  410. PROC SPACE 4,30
  411. ** PROC - PROCESSOR MACRO.
  412. * THIS MACRO DEFINES A STRING OF PROCESSORS, ROUTINES, AND/OR
  413. * FUNCTIONS TO BE PROCESSED FOR A PARTICULAR REQUEST.
  414. *
  415. *
  416. * PROC (P1,P2,.....PN)
  417. * P1 - PN = PROCESSORS, FUNCTIONS, ETC.
  418. *
  419. * IF PN .LT. TPRO, IT IS A FUNCTION TO BE ISSUED.
  420. * IF ((PN .GE. TPRO) .AND. (P1 .LE. (TPRO+TPROL))), THEN IT
  421. * DEFINES ANOTHER STRING TO CALL.
  422. * IF PN .GT. (TPRO+TPROL), IT IS A SUBROUTINE ADDRESS.
  423. * IF NEXT PN(S) AFTER A FUNCTION ISSUE HAVE BIT 11 SET, THEY
  424. * ARE PARAMETERS FOR THE FUNCTION. BIT 11 IS CLEARED
  425. * AND THE PN(S) ARE TAKEN IN ORDER AS PARAMETERS *MD*,
  426. * *PB*, AND *PA*. IF LESS THAN THREE ARE GIVEN, THE
  427. * REST WILL BE ASSUMED TO BE ZERO. IF NO PARAMETERS
  428. * ARE SPECIFIED, THEN (MD) = (X5). IF BIT 11 IS SET
  429. * WHERE IT IS NOT A PARAMETER THIS INDICATES A PARAMETER
  430. * TO PROCESS ONLY IF A *BEI* ERROR IS RETURNED.
  431. * OTHERWISE, THE PARAMETER IS SKIPPED. IF A *BEI* ERROR
  432. * PARAMETER IS PROCESSED, THE REST OF THE CURRENT STRING
  433. * IS SKIPPED. ONE MUST REMEMBER THAT FUNCTIONS FOR
  434. * *1MT* MUST HAVE ALL 3 PARAMETERS SPECIFIED IF THE NEXT
  435. * PARAMETER IS AN ERROR EXIT CASE AS AN ERROR EXIT AND A
  436. * PARAMETER WILL BOTH HAVE THE UPPER BIT SET.
  437. *
  438. * NOTE - ANY PARAMETER OF GREATER THAN THREE CHARACTERS THAT
  439. * BEGINS WITH *FN*, *RL*, *WL*, OR *AF* IS ASSUMED TO BE A
  440. * FUNCTION PARAMETER AND 4000B WILL BE ADDED TO IT.
  441.  
  442.  
  443. PROC MACRO P
  444. NOREF 1.,.2,.3
  445. .1 SET 0
  446. IRP P
  447. .1 SET .1+1
  448. PM MICRO 1,,$P$
  449. .2 MICCNT PM
  450. .3 SET 0
  451. IFGT .2,3,9
  452. CH MICRO 1,2,$P$
  453. IFC EQ,$"CH"$FN$,1
  454. .3 SET 4000B
  455. IFC EQ,$"CH"$RL$,1
  456. .3 SET 4000B
  457. IFC EQ,$"CH"$WL$,1
  458. .3 SET 4000B
  459. IFC EQ,$"CH"$AF$,1
  460. .3 SET 4000B
  461. VFD 12/P+.3
  462. IFEQ .1,5,1
  463. .1 SET 0
  464. IRP
  465. IFEQ .1,0,2
  466. VFD 60/0
  467. SKIP
  468. IFEQ .1,1,2
  469. VFD 48/0
  470. SKIP
  471. IFEQ .1,2,2
  472. VFD 36/0
  473. SKIP
  474. IFEQ .1,3,2
  475. VFD 24/0
  476. SKIP
  477. IFEQ .1,4,2
  478. VFD 12/0
  479. ENDIF
  480. ENDM
  481. TPRO SPACE 4,10
  482. ** TPRO - TABLE OF PROCESSOR STRINGS.
  483.  
  484.  
  485. TPRO BSS 0
  486.  
  487. * BECAUSE IT IS INDEXED BY A PORTION OF THE INTERNAL
  488. * *CIO* FUNCTION CODE, THE FIRST ENTRY GROUP OF THIS
  489. * TABLE IS CONSTRAINED TO NO MORE THAN FOUR PROCESSORS
  490. * PER STRING. ANY CHANGE TO *COMSCIO* MAY REQUIRE
  491. * CHANGES IN THIS TABLE.
  492.  
  493. * FIRST ENTRY GROUP.
  494.  
  495. ERRNZ /CIO/RDF TABLE POSITION DEPENDS ON VALUE
  496. ERRNZ /CIO/WTF-1 TABLE POSITION DEPENDS ON VALUE
  497. ERRNZ /CIO/SKP-2 TABLE POSITION DEPENDS ON VALUE
  498. ERRNZ /CIO/OPE-3 TABLE POSITION DEPENDS ON VALUE
  499. ERRNZ /CIO/CLO-4 TABLE POSITION DEPENDS ON VALUE
  500. ERRNZ /CIO/REW-5 TABLE POSITION DEPENDS ON VALUE
  501.  
  502. PRDA PROC (LAB,RDA,(EX+CRK)) READ
  503. PWDA PROC (LAB1,WDA,(EX+CWC),WDA1) WRITE
  504. PROC (PSKP) SKIP
  505. PROC (OPE,POLA) OPEN
  506. PROC (CLO) CLOSE
  507. PROC (PRRQ) REWIND
  508. ERRNZ FNRW
  509. TPROL1 EQU *-TPRO LENGTH OF FIRST TABLE SECTION
  510.  
  511. * SECOND ENTRY GROUP.
  512.  
  513. * ASSIGN REEL.
  514.  
  515. PASN PROC (FNH,ATM,AFN,4000B,AFRA,SRA)
  516. ERRNZ FNRW
  517.  
  518. * ADVANCE VSN FILE.
  519.  
  520. PAVS PROC (AVS,CNV,RRM)
  521.  
  522. * CHECK ERROR FLAG.
  523.  
  524. PCEF PROC (CEF,CJE,CEF1)
  525.  
  526. * VALIDATE HEADER LABEL WITH UDT.
  527.  
  528. PCFL PROC (PTM,RLA,4100B,RLVH,4000B,(EX+CLR),CRW,VTL)
  529.  
  530. * CHECK REEL TO MATCH REQUEST.
  531.  
  532. PCHR PROC (PREW,PDEN,SVC,RLA,4100B,RLCR,4000B,(EX+RRP),CRC,PASN)
  533.  
  534. * COMPLETE INITIAL LABEL CHECK.
  535.  
  536. PCIL PROC (CIL,PVSE)
  537.  
  538. * PERFORM INITIAL LABEL CHECK.
  539.  
  540. PCLA PROC (SED,FRE,PILA,PCIL)
  541.  
  542. * RETURN EXTENDED LABELS ON *CLOSE* AFTER READ.
  543.  
  544. PCLL PROC (RLA,4100B,RLCF,4000B,(EX+PCLO),PSBT,PCLO)
  545.  
  546. * *CLOSE* AFTER READ.
  547.  
  548. PCLO PROC (FET1,CLO3)
  549.  
  550. * WRITE *EOV1* AND ADVANCE REEL FOR *CLOSER* AFTER WRITE.
  551.  
  552. PCLR PROC (PWEV,CCR,PRME,LAB4,CUF)
  553.  
  554. * CHECK AND ASSIGN NEXT REEL.
  555.  
  556. PCNR PROC (PCEF,CNR)
  557.  
  558. * CALL TAPE MANAGER.
  559.  
  560. PCTM PROC (CTM,TCP)
  561.  
  562. * CLEAR VSN.
  563.  
  564. PCVS PROC (CVS)
  565.  
  566. * CHECK WRITE FROM LOAD POINT.
  567.  
  568. PCWL PROC (CWL)
  569.  
  570. * WRITE *EOF1* AND COMPLETE FET FOR *CLOSE* AFTER WRITE.
  571.  
  572. PCWT PROC (PWTL,CUF,CLO3)
  573.  
  574. * REISSUE PP REQUEST AFTER DELAY.
  575.  
  576. PDEL PROC (DRT,RPR)
  577.  
  578. * SET DENSITY.
  579.  
  580. PDEN PROC (FNH,4000B,FNSD)
  581.  
  582. * DETERMINE TYPE OF *POSMF*.
  583.  
  584. PDRW PROC (VMF,OPF,4000B,4001B,4000B,(EX+OPE2),OPE5)
  585.  
  586. * PROCESS EOF.
  587.  
  588. PEOF PROC (FET,PSBO,PSFO)
  589.  
  590. * PROCESS EOI.
  591.  
  592. PEOI PROC (EOI,FET,CET)
  593.  
  594. * PROCESS END OF TAPE.
  595.  
  596. PEOT PROC (RLA,4100B,RLCE,4000B,(EX+PEOI),PRER,PRDA)
  597.  
  598. * PROCESS END OF REEL FOR *CLOSER* AFTER READ.
  599.  
  600. PERP PROC (CCR,URN,PAVS,SVR,PRME,CUF)
  601.  
  602. * RETURN EXTENDED LABELS FOR *CLOSER* AFTER READ.
  603.  
  604. PERT PROC (RLA,4100B,RLCF,4000B,(EX+PERP),PSBT,PERP)
  605.  
  606. * NEXT VSN, REWIND.
  607.  
  608. PERW PROC (RFV,PAVS,REW6,CRA,PCNR)
  609.  
  610. * END OF REEL SKIP.
  611.  
  612. PEST PROC (SSC,RLA,4100B,RLCE,4000B,(EX+PPEO),PRER,PSKP)
  613.  
  614. * COMPLETE USER FET.
  615.  
  616. PFET PROC (FET2)
  617.  
  618. * HANG UNIT ON SYSTEM ERROR.
  619.  
  620. PHNG PROC (HNG)
  621.  
  622. * INITIAL LABEL CHECK.
  623.  
  624. PILA PROC (PDEN,RLA,4100B,FNH,CCS)
  625. ERRNZ RLCL
  626. ERRNZ FNRW
  627.  
  628. * WAIT FOR ROLLIN.
  629.  
  630. PJOB PROC (JOB)
  631.  
  632. * LOG STATISTICAL ACCUMULATORS.
  633.  
  634. PLAC PROC (AFN,4000B,AFLA)
  635.  
  636. * PROCESS LOAD POINT ERRORS.
  637.  
  638. PLPD PROC (LPD)
  639.  
  640. * PROCESS FATAL ERRORS.
  641.  
  642. PMAB PROC (CRS)
  643.  
  644. * WRITE MULTI FILE LABEL *EOF1*HDR1*.
  645.  
  646. PMFL PROC (WLA,4100B,WLME,USN,OPF,4000B,4000B,4000B,PWHL)
  647.  
  648. * REWIND MULTI-VOLUME, MULTI-FILE.
  649.  
  650. PMFR PROC (PERW,PCFL)
  651.  
  652. * PROCESS MULTI-FILE REEL SWAP FOR *POSMF*.
  653.  
  654. PMFS PROC (PERW,PCFL,PPEI)
  655.  
  656. * PROCESS MULTI FILE REEL SWAP.
  657.  
  658. PMFV PROC (PRER,PPEI)
  659.  
  660. * COMPLETE OPEN.
  661.  
  662. PNLB PROC (OPE4,FET1)
  663.  
  664. * OPEN.
  665.  
  666. POLA PROC (OPF,4000B,4000B,4000B,(EX+CLM),FNH,RLA,4100B,RLOF,OPE4
  667. ,,FET1)
  668. ERRNZ FNRW
  669.  
  670. * POSITION TO CORRECT FILE SET.
  671.  
  672. PPEI PROC (LAB,SKP,4014B,4001B,4000B,(EX+PPMF),PCEF,PPEI)
  673.  
  674. * PROCESS POSSIBLE EOI FOR SKIP OPERATIONS.
  675.  
  676. PPEO PROC (PEO,FET,CET)
  677.  
  678. * READ MULTI FILE LABELS.
  679.  
  680. PPMF PROC (RLA,4100B,RLCM,4000B,(EX+CFP),CEV,PTM,VTL,CPT,OPF,4000
  681. ,B,4000B,4000B,(EX+CLM),RXL,FET1)
  682.  
  683. * SKIP TO NEXT LABEL BLOCK.
  684.  
  685. PPNB PROC (SKP,4014B,4001B,4000B,(EX+PSKT),PCEF,PPNB)
  686.  
  687. * END OF REEL FOR READ/SKIP.
  688.  
  689. PRER PROC (CET,CUP,URN,PAVS,SVR,PRME)
  690.  
  691. * REPOSITION PRIOR TO END OF SET AND ISSUE MULTI-FILE
  692. * NOT FOUND ERROR.
  693.  
  694. PRES PROC (RLA,6100B,RLSM,4003B,MAB,4000B,(4000B+MFM))
  695.  
  696. * CHECK WRITE STATUS, REWIND, AND CHECK ACCUMULATORS.
  697.  
  698. PREW PROC (CWR,FNH,CAT)
  699. ERRNZ FNRW
  700.  
  701. * END OF REEL MESSAGE AND REEL SWAP.
  702.  
  703. PRME PROC (MAB,4000B,(4000B+ERM),RSP,CER,CRA,PCNR)
  704.  
  705. * ABORT REQUEST AND UNLOAD UNIT ON REEL REJECT.
  706.  
  707. PRRA PROC (MAB,PUNL)
  708.  
  709. * PROCESS *REWIND* REQUEST.
  710.  
  711. PRRQ PROC (CWR,FET1,FNH,SRF,CAT)
  712.  
  713. * RETURN UNIT FIRST SEQUENCE.
  714.  
  715. PRTA PROC (CWR)
  716.  
  717. * RETURN UNIT SECOND SEQUENCE.
  718.  
  719. PRTB PROC (RRF,CUR)
  720.  
  721. * RETURN UNIT THIRD SEQUENCE.
  722.  
  723. PRTC PROC (CRA,AFN,4000B,AFCJ,CVS,DUC)
  724.  
  725. * UNLOAD AND RESTART CHECK FOR NEXT REEL.
  726.  
  727. PRUL PROC (PUNL,PCNR)
  728.  
  729. * REWIND REEL AND SET REWIND FLAG AFTER *CLOSE*.
  730.  
  731. PRWC PROC (FNH,SRF)
  732. ERRNZ FNRW
  733.  
  734. * REWIND FILE PRIOR TO *CIO* FUNCTION.
  735.  
  736. PRWF PROC (REW,CRF)
  737.  
  738. * REWIND CURRENT REEL FOR *OPEN*.
  739.  
  740. PRWO PROC (PREW,REW5)
  741.  
  742. * REWIND AND REPOSITION TAPE FOR *POSMF* TO EXISTING FILE SET.
  743.  
  744. PRWP PROC (PREW,REW)
  745.  
  746. * RETURN LABELS ON *POSMF*.
  747.  
  748. PRXL PROC (PSBT,PSFO,RLA,4100B,RLOF)
  749.  
  750. * SKIP BACK 1 TAPE MARK.
  751.  
  752. PSBO PROC (RLA,6100B,RLSM,4001B)
  753.  
  754. * SKIP BACK 2 TAPE MARKS.
  755.  
  756. PSBT PROC (RLA,6100B,RLSM,4002B)
  757.  
  758. * CHECK ERROR FLAG DURING SKIP.
  759.  
  760. PSEF PROC (SSC,PCEF,PSKK)
  761.  
  762. * SKIP FORWARD 1 TAPE MARK.
  763.  
  764. PSFO PROC (RLA,4100B,RLSM,4001B)
  765.  
  766. * SKIP DATA.
  767.  
  768. PSKK PROC (SKR,(EX+PEST),SEF)
  769.  
  770. * CHECK WRITE, CHECK ACCUMULATORS, SKIP LABELS AND SKIP DATA.
  771.  
  772. PSKP PROC (CWR,CAT,LAB,PSKK)
  773.  
  774. * SKIP TO TAPE MARK.
  775.  
  776. PSKT PROC (SKP,4014B,4001B,4000B,(EX+PCFL),PCEF,PSKT)
  777.  
  778. * SKIP OVER *VOL1* AND *HDR1*.
  779.  
  780. PSLA PROC (RLA,4100B,RLSL)
  781.  
  782. * UNLOAD UNASSIGNED UNIT AND CLEAR VSN.
  783.  
  784. PULR PROC (FNH,4000B,FNUL,DMA,CVS)
  785.  
  786. * CHECK WRITE, UNLOAD, AND CHECK ACCUMULATORS.
  787.  
  788. PUNL PROC (CWR,FNH,4000B,FNUL,DMA,CAT)
  789.  
  790. * INITIATE UNIT SWAP.
  791.  
  792. PUSP PROC (USP,EX+USF,USC,PCHR)
  793.  
  794. * ISSUE EVENT AFTER ACS VSN MOUNT ERROR.
  795.  
  796. PVME PROC (VME)
  797.  
  798. * ISSUE VSN EVENT.
  799.  
  800. PVSE PROC (AFN,4000B,AFVE)
  801.  
  802. * WAIT UNIT ACCESSIBLE.
  803.  
  804. PWAC PROC (PCEF,WAC)
  805.  
  806. * WRITE MULTI-FILE LABELS AT BEGINNING OF TAPE.
  807.  
  808. PWBL PROC (FNH,OPF,4000B,4000B,4000B,PWHL)
  809. ERRNZ FNRW
  810.  
  811. * EOT ON WRITE PROCESSOR.
  812.  
  813. PWET PROC (PWEV,PRME)
  814.  
  815. * ADVANCE VSN FILE AND WRITE END OF VOLUME.
  816.  
  817. PWEV PROC (URN,PAVS,SVR,WLA,4100B,WLEV)
  818.  
  819. * WRITE *HDR1* AND POSITION BEFORE MULTI FILE LABEL.
  820.  
  821. PWFL PROC (PSBO,OPF,4000B,4000B,4000B,PWHL)
  822.  
  823. * WRITE *VOL1* AND/OR *HDR1*.
  824.  
  825. PWHD PROC (CWL,WLA,4100B,WLVH,VTL1)
  826.  
  827. * WRITE MULTI-FILE HDR1 AND COMPLETE FET.
  828.  
  829. PWHL PROC (PTM,PWHD,FET1)
  830.  
  831. * WRITE *VOL1* AND *HDR1* AFTER REEL SWAP.
  832.  
  833. PWHR PROC (WLA,4100B,WLVR,VTL1)
  834.  
  835. * WAIT FOR NOT BUSY.
  836.  
  837. PWNB PROC (PCEF,WNB)
  838.  
  839. * WAIT FOR OPERATOR SPECIFICATION OF NEXT VSN.
  840.  
  841. PWNV PROC (PCEF,WNV)
  842.  
  843. * WAIT FOR OPERATOR ACTION.
  844.  
  845. PWOP PROC (PCEF,LPD2)
  846.  
  847. * WRITE COMPLETE ON EOT.
  848.  
  849. PWTC PROC (CUP,PWET,CUF,LAB4)
  850.  
  851. * WAIT FOR TIME DELAY.
  852.  
  853. PWTD PROC (PCEF,WTD)
  854.  
  855. * WRITE NOT COMPLETE ON EOT.
  856.  
  857. PWTI PROC (CUP,PWET,PWDA)
  858.  
  859. * WRITE *EOF1* LABEL.
  860.  
  861. PWTL PROC (WLA,4100B,WLTR,RLA,6100B,RLSM,4004B)
  862.  
  863. * WAIT GO OR UNLOAD ON UNIT.
  864.  
  865. PWUG PROC (PCEF,WUG)
  866.  
  867. IFLT *,TPRO+TPROL,1
  868. BSSZ TPRO+TPROL-*
  869. ERRNG TPRO+TPROL-* INCREASE *TPROL* IN *COMSMTX*
  870. TITLE MAIN PROGRAM.
  871. MAGNET SPACE 4,10
  872. ** MAGNET - MAIN PROGRAM.
  873.  
  874.  
  875. MAG RJ RFL REDUCE MEMORY
  876. MAG1 RECALL
  877. SA3 RTIM
  878. RTIME RTIM
  879. SA1 RTIM
  880. SA2 INTC
  881. AX3 36
  882. AX1 36
  883. BX7 X2
  884. IX6 X3-X1
  885. PL X6,MAG2 IF NOT 1 SECOND ELAPSED
  886. SX6 B1
  887. IX7 X7+X6 ADVANCE INTERVAL COUNTER
  888. MAG2 BX6 X2-X7 SET INTERVAL TIMER MASK
  889. SA7 A2 UPDATE INTERVAL COUNTER
  890. SA6 ITIM UPDATE INTERVAL TIMER MASK
  891. RJ CUT CHECK UNIT TABLES
  892. RJ PPU PROCESS PPU REQUESTS
  893. SA5 XREQ
  894. ZR X5,MAG3 IF NO EXTERNAL PP REQUEST
  895. RJ PXR PROCESS EXTERNAL PP REQUEST
  896. MAG3 SA5 RCAL
  897. ZR X5,MAG4 IF NO INTER-CONTROL POINT REQUEST
  898. RJ CPR PROCEESS INTER-CONTROL POINT REQUEST
  899. MAG4 SA1 TAJP
  900. ZR X1,MAG7 IF TAPE ALTERNATE STORAGE NOT ACTIVE
  901. SA5 PFTB
  902. ZR X5,MAG7 IF NO *PFM* REQUEST
  903. RJ /STAGE/QPR QUEUE *PFM* REQUEST
  904. MAG7 SA1 ATFS
  905. ZR X1,MAG8 IF NO REQUESTS TO BE SENT TO ATF
  906. RJ SAR SEND ATF REQUEST
  907. MAG8 SA5 ITIM
  908. SA1 CUAF
  909. LX5 59-1 CHECK 2 SECOND INTERVAL
  910. BX2 X5+X1
  911. PL X2,MAG9 IF NOT TO CHECK UNIT ACTIVITY
  912. RJ CUA CHECK UNIT ACTIVITY
  913. MAG9 SA1 OPRF
  914. BX2 X1+X5
  915. PL X2,MAG10 IF NOT TO CHECK OPERATOR REQUESTS
  916. RJ COR CHECK OPERATOR REQUESTS
  917. MAG10 SA1 ACRF
  918. BX2 X5+X1
  919. PL X2,MAG11 IF NOT TO CHECK ACS MOUNT REQUESTS
  920. RJ CAR CHECK ACS MOUNT REQUESTS
  921. MAG11 PL X5,MAG13 IF NOT 2 SECOND INTERVAL
  922. SA1 TAJP
  923. ZR X1,MAG12 IF TAPE ALTERNATE STORAGE NOT ACTIVE
  924. RJ /STAGE/IRE CHECK STAGE JOB ROLLIN
  925. MAG12 LX5 59-5-59+1
  926. PL X5,MAG13 IF NOT 32 SECOND INTERVAL
  927. RJ RFL REDUCE MEMORY
  928. LX5 59-7-59+5
  929. PL X5,MAG13 IF NOT 128 SECOND INTERVAL
  930. RJ CAU CHECK ACS UNITS
  931. MAG13 SA1 B0 CHECK IF IDLEDOWN REQUESTED
  932. LX1 59-15
  933. PL X1,MAG1 IF IDLEDOWN NOT REQUESTED
  934. SA4 NTAS
  935. NZ X4,MAG1 IF TAPES STILL ASSIGNED
  936. MX7 1 FLAG IDLEDOWN FOR *MAGNET1*
  937. SA7 A4
  938. ENDRUN END *MAGNET*
  939. SPACE 4,10
  940. ** GLOBAL DATA.
  941.  
  942.  
  943. RTIM CON 0 REAL TIME CLOCK
  944.  
  945. * INTERVAL TIME WORDS.
  946. * *INTC* IS INCREMENTED AT APPROXIMATELY 1 SECOND INTERVALS.
  947. * *ITIM* IS A MASK OF BITS SET FOR ONE PASS THROUGH *MAGNET*
  948. * WHEN *INTC* IS INCREMENTED. BIT N WILL BE SET EVERY 2**N
  949. * SECONDS. I.E. TO PERFORM SOME OPERATION EVERY 8 SECONDS, BIT
  950. * 3 SOULD BE CHECKED. *ITIM* WILL BE ALL ZERO ON PASSES IN
  951. * WHICH *INTC* WAS NOT ICREMENTED.
  952.  
  953. INTC CON 0 1 SECOND INTERVAL COUNTER
  954. ITIM CON 0 INTERVAL TIMER MASK
  955.  
  956. CTIM CON 0 CPU TIME AT START UP
  957. STAR CON 0 REAL TIME AT START UP
  958.  
  959. PPIW CON 0 PPU REQUEST WORD
  960.  
  961. PBFL CON 0 LENGTH OF ENTRIES IN PREVIEW BUFFER
  962.  
  963. FLST CON 0 FIELD LENGTH STATUS
  964.  
  965. NTAS CON 0 NUMBER OF TAPES ASSIGNED
  966.  
  967. NXAU CON 0 NEXT ACS UNIT FOR MOUNT
  968.  
  969. OPRF CON 0 NEW OPERATOR REQUEST FLAG (BIT 59 SET)
  970. ACRF CON 0 NEW ACS MOUNT REQUEST FLAG (BIT 59 SET)
  971.  
  972. ATFS CON 0 REQUESTS TO BE SENT TO ATF FLAG
  973. ACRT CON 0 ATF NO RESPONSE TIME OUT
  974. ANRC CON 0 ATF RESPONSES WITH NO REQUEST
  975. ATRC CON 0 ATF TIMED OUT RESPONSES
  976. MRT SPACE 4,15
  977. ** MRT - ACS MOUNT REQUEST TABLE.
  978. *
  979. * ENTRY FORMAT -
  980. *
  981. *T 36/ VSN,24/ 0
  982. *
  983. * VSN = VSN TO MOUNT.
  984. *
  985. * ENTRIES ARE ORDERED BY PRIORITY AND TERMINATED BY A ZERO
  986. * WORD.
  987.  
  988.  
  989. MRT BSSZ MXRM+1 ACS MOUNT REQUEST TABLE
  990. TITLE ACTIVATE PROCESSORS.
  991. PPU SPACE 4,10
  992. ** PPU - ACTIVATE PPU PROCESSORS.
  993. *
  994. * EXIT REQUIRED COPIES OF *1MT* ACTIVATED.
  995. *
  996. * CALLS SYS=.
  997.  
  998.  
  999. PPU SUBR ENTRY/EXIT
  1000.  
  1001. * INITIALIZE UNIT MASKS AND REQUEST COUNT. UNIT CHECK IS
  1002. * PERFORMED EVERY 2 SECONDS.
  1003.  
  1004. TA1 -UNITL,UBUF
  1005. SA2 ITIM
  1006. SA3 APRQ
  1007. SX5 B0 INITIALIZE *1MT* UNIT REQUEST MASK
  1008. SX4 B0 INITIALIZE *1MT* UNIT CHECK MASK
  1009. SB7 B0 INITIALIZE *1MT* REQUEST COUNT
  1010. SX6 B1
  1011. MX7 12
  1012. LX2 59-1
  1013. SB6 X3+ INITIALIZE *1MU* REQUEST FLAG
  1014. PL X2,PPU1 IF NOT 2 SECOND INTERVAL
  1015. SB7 2 INDICATE 2 SECOND INTERVAL *1MT* CALL
  1016. MX4 MUNIT SET TO CHECK ALL UNITS
  1017. SB6 B1 SET TO CALL *1MU*
  1018.  
  1019. * CHECK UDT FOR REQUESTS.
  1020.  
  1021. PPU1 SA1 A1+UNITL+UXRQ CHECK FOR REQUEST
  1022. LX6 -1 ADVANCE REQUEST MASK
  1023. BX2 X7*X1
  1024. ZR X1,PPU1 IF NO REQUEST
  1025. NG X1,PPU3 IF END OF UDT
  1026. LX1 18
  1027. NZ X2,PPU1 IF REQUEST IN PROGRESS OR COMPLETE
  1028. AX1 54 FUNCTION CODE
  1029. SX1 X1-MDFN
  1030. PL X1,PPU2 IF *1MU* REQUEST
  1031. SB7 B7+B1 COUNT *1MT* REQUEST
  1032. BX5 X5+X6 UPDATE UNIT REQUEST MASK
  1033. EQ PPU1 CHECK NEXT UNIT
  1034.  
  1035. PPU2 SB6 B1 INDICATE *1MU* REQUEST
  1036. EQ PPU1 CHECK NEXT UNIT
  1037.  
  1038. * BUILD SPECIAL PP CALL.
  1039.  
  1040. PPU3 SX6 3RSPC
  1041. SX2 PPIW
  1042. LX6 42
  1043. SX3 3R1MT
  1044. BX6 X6+X2 BUILD *SPC* CALL
  1045. LX3 42
  1046. MX0 1
  1047.  
  1048. * ACTIVATE *1MT* PROCESSORS.
  1049.  
  1050. SA2 CST+CPST-CSTE
  1051. PPU4 SA2 A2+CSTE CHECK *1MT* STATUS
  1052. SA1 A2+CUAC-CPST
  1053. ZR X2,PPU5 IF ALL CHANNELS CHECKED
  1054. NG X2,PPU4 IF *1MT* ALREADY ACTIVE
  1055. BX7 X4+X5
  1056. BX7 X7*X1
  1057. ZR X7,PPU4 IF NO PROCESSING FOR THIS CHANNEL
  1058. BX4 -X1*X4 CLEAR UNITS TO BE CHECKED ON CHANNEL
  1059. SX1 370000B
  1060. SX7 A2 CST ADDRESS
  1061. BX1 X1*X2 CHANNEL NUMBER
  1062. BX7 X3+X7 BUILD *1MT* CALL
  1063. BX7 X7+X1
  1064. SA7 PPIW SET PP REQUEST WORD
  1065. BX7 X2+X0 SET *1MT* ACTIVE
  1066. SA7 A2
  1067. RJ SYS= CALL *1MT*
  1068. SA1 PPIW
  1069. NZ X1,PPU6 IF PP NOT ASSIGNED
  1070. GT B7,B1,PPU4 IF MULTIPLE REQUESTS OR 2 SECOND INTERVAL
  1071.  
  1072. * ACTIVATE *1MU*.
  1073.  
  1074. PPU5 ZR B6,PPUX IF NO *1MU* REQUEST
  1075. SA2 APS
  1076. NG X2,PPUX IF *1MU* ALREADY ACTIVE
  1077. SX7 3R1MU
  1078. LX7 42
  1079. SA7 PPIW
  1080. BX7 X2+X0 SET *1MU* ACTIVE
  1081. SA7 A2
  1082. RJ SYS= CALL *1MU*
  1083. SA1 PPIW
  1084. NZ X1,PPU6 IF PP NOT ASSIGNED
  1085. SX6 B0+
  1086. SA6 APRQ CLEAR *1MU* REQUEST FLAG
  1087. EQ PPUX RETURN
  1088.  
  1089. * PROCESS PP NOT ASSIGNED.
  1090.  
  1091. PPU6 BX7 -X0*X7 CLEAR PROCESSOR ACTIVE
  1092. SA7 A7
  1093. EQ PPUX RETURN
  1094. TITLE INTER CONTROL POINT REQUEST PROCESSING.
  1095. CPR SPACE 4,10
  1096. ** CPR - PROCESS INTER-CONTROL POINT REQUEST.
  1097. *
  1098. * ENTRY (X5) = 12/ CODE,48/ PARAMETERS.
  1099. * (A5) = *RCAL*.
  1100.  
  1101.  
  1102. CPRX SX6 B0+ SET REQUEST COMPLETE
  1103. SA6 RCAL
  1104.  
  1105. CPR PS ENTRY/EXIT
  1106. BX1 X5
  1107. SX2 X5+ WORD COUNT OF REQUEST
  1108. AX1 48 REQUEST CODE
  1109. SX6 X1-CRMX
  1110. SX3 X1-RUU
  1111. ZR X1,ICR IF INCORRECT REQUEST
  1112. PL X6,ICR IF INCORRECT REQUEST
  1113. SA1 TCPR+X1
  1114. ZR X3,XUD IF *RUU* REQUEST
  1115. MX0 -12
  1116. SB3 X1+ SET PROCESSOR ADDRESS
  1117. LX1 -24
  1118. BX3 -X0*X1 MINIMUM WORD COUNT
  1119. LX1 -12
  1120. IX3 X2-X3
  1121. BX4 -X0*X1 MAXIMUM WORD COUNT
  1122. NG X3,ICR IF WORD COUNT .LT. MINIMUM
  1123. IX4 X4-X2
  1124. NG X4,ICR IF WORD COUNT .GT. MAXIMUM
  1125.  
  1126. * EXIT TO PROCESSOR WITH -
  1127. *
  1128. * (X5) = (RCAL).
  1129. * (A5) = *RCAL*.
  1130.  
  1131. JP B3 EXIT TO REQUEST PROCESSOR
  1132. TCPR SPACE 4,10
  1133. ** TCPR - TABLE OF INTER CONTROL POINT REQUEST PROCESSORS.
  1134. *
  1135. * ONE WORD PER ENTRY -
  1136. *
  1137. *T 12/0,12/ MAXL,12/ MINL,6/0,18/ PADD
  1138. *
  1139. * MAXL MAXIMUM LENGTH OF REQUEST.
  1140. * MINL MINIMUM LENGTH OF REQUEST.
  1141. * PADD REQUEST PROCESSOR ADDRESS.
  1142.  
  1143.  
  1144. TCPR IVFD
  1145. IVFD RMA,(12/0,12/13B,12/13B,6/0,18/ASU)
  1146. IVFD SEV,(12/0,12/RCALL,12/1,6/0,18/CSA)
  1147. IVFD RER,(12/0,12/1,12/1,6/0,18/CSA)
  1148. IVFD TJE,(12/0,12/1,12/1,6/0,18/CSA)
  1149. IVFD QSR,(12/0,12/PFTBL,12/PFTBL,6/0,18/CSA)
  1150. IVFD AIB,(12/0,12/2,12/1,6/0,18/CSA)
  1151. IVFD ACR,(12/0,12/3,12/3,6/0,18/RAR)
  1152. IVFD AMR,(12/0,12/MXRM+1,12/1,6/0,18/TMR)
  1153. IVFD PDU,(12/0,12/1,12/1,6/0,18/RDP)
  1154. IVFD CRMX
  1155. ASU SPACE 4,30
  1156. ** ASU - ASSIGN UNIT.
  1157. *
  1158. * ENTRY
  1159. *
  1160. *T RCAL 12/ FC,12/ UDTO,18/,18/ WC
  1161. *T, 60/ *UVSN* FOR VERIFICATION
  1162. *T, 60/ *UMST* FOR VERIFICATION
  1163. *T, 60/ *UST4*
  1164. *T, 60/ *UVRI*
  1165. *T, 60/ *UTMS*
  1166. *T, 60/ *UTCI*
  1167. *T, 60/ *UESN*
  1168. *T, 60/ *UISN*
  1169. *T, 60/ *UUFN*
  1170. *T, 24/ JSN,12/0,12/ VP,12/ VS
  1171. *
  1172. * FC FUNCTION CODE = *RMA*.
  1173. * UDTO UDT ORDINAL.
  1174. * WC WORD COUNT OF REQUEST = 13B.
  1175. * JSN JOB SEQUENCE NAME (STAGING REQUEST ONLY).
  1176. * VP STAGING TAPE TWO-CHARACTER VSN PREFIX.
  1177. * VS STAGING TAPE NUMERIC VSN SUFFIX (0000 TO 4095).
  1178. *
  1179. * CALLS SUA, /STAGE/FJE.
  1180. *
  1181. * MACROS MOVE.
  1182.  
  1183.  
  1184. ASU BSS 0 ENTRY
  1185.  
  1186. * SET UDT ADDRESSS AND UDT ORDINAL.
  1187.  
  1188. AX5 36
  1189. RJ SUA SET UDT ADDRESS
  1190. PL X6,ICR IF INCORRECT UDT ORDINAL
  1191.  
  1192. * VERIFY NO CHANGE IN UDT AND CHECK UNIT ACTIVITY.
  1193.  
  1194. SA1 A0+UVSN
  1195. SA2 RCAL+1
  1196. SA3 A0+UMST
  1197. SA4 A2+B1
  1198. BX2 X1-X2 VERIFY *UVSN*
  1199. BX4 X3-X4 VERIFY *UMST*
  1200. BX0 X2+X4
  1201. SA1 A0+UVRI
  1202. SA3 A0+UREQ
  1203. NZ X2,CPRX IF NO MATCH
  1204. NZ X4,CPRX IF NO MATCH
  1205. NG X0,CPRX IF NO MATCH
  1206. NZ X1,CPRX IF UNIT ALREADY ASSIGNED OR UNIT SWAP
  1207. NZ X3,CPRX IF PROCESSOR ACTIVE
  1208.  
  1209. * SET TAPE DESCRIPTORS AND CHECK CONVERSION MODE AND DENSITY.
  1210.  
  1211. SA2 RCAL+3 GET TAPE DESCRIPTORS
  1212. SA1 A0+UST5
  1213. MX0 -3
  1214. BX6 X2
  1215. LX0 48
  1216. SA6 A0+UST4 INITIALIZE *UST4*
  1217. BX7 -X0*X1 CURRENT CONVERSION MODE
  1218. NZ X7,ASU1 IF CONVERSION MODE DETERMINED
  1219. BX7 -X0*X2 REQUESTED CONVERSION MODE
  1220. BX1 X1+X7 SET CURRENT CONVERSION MODE TO REQUESTED
  1221. ASU1 LX0 3
  1222. BX7 -X0*X1 CURRENT DENSITY
  1223. NZ X7,ASU2 IF DENSITY DETERMINED
  1224. BX7 -X0*X2 REQUESTED DENSITY
  1225. BX1 X1+X7 SET CURRENT DENSITY TO REQUESTED
  1226. ASU2 BX7 X1
  1227. SA7 A1 UPDATE DENSITY AND CONVERSION
  1228.  
  1229. * SET JOB ASSIGNMENT INFORMATION.
  1230.  
  1231. MOVE UUFN-UVRI+1,RCAL+4,A0+UVRI
  1232.  
  1233. * INCREMENT ASSIGNED UNIT COUNT AND ENABLE FILE REQUESTS.
  1234.  
  1235. SA1 NTAS
  1236. SX7 B0+
  1237. SA7 A0+UFRQ ENABLE FILE REQUESTS
  1238. SX6 X1+B1 INCREMENT ASSIGNED UNIT COUNT
  1239. SA6 A1
  1240.  
  1241. * PROCESS STAGING TAPE PARAMETERS.
  1242.  
  1243. SA1 TAJP
  1244. ZR X1,CPRX IF TAPE ALTERNATE STORAGE NOT ACTIVE
  1245. SA3 RCAL+12B CHECK FOR PACKED VSN
  1246. MX4 -24
  1247. BX4 -X4*X3
  1248. ZR X4,CPRX IF NOT ASSIGNMENT OF STAGING TAPE
  1249. MX6 24
  1250. BX5 X6*X3
  1251. ZR X5,ICR IF NO JSN PRESENT
  1252. RJ /STAGE/FJE FIND JOB ENTRY IN ACTIVE JOB TABLE
  1253. NZ X7,ICR IF NO CORRESPONDING JOB ENTRY
  1254. MX6 -24
  1255. BX3 -X6*X1 CHECK FOR EXISTING VSN
  1256. NZ X3,ICR IF JOB ALREADY HAS VSN ASSIGNED
  1257. SA2 /STAGE/MVSN
  1258. BX6 X1+X4 SET VSN INTO JOB ENTRY
  1259. SA6 A1
  1260. ZR X2,CPRX IF NO MORE VSN-S WAITING FOR PROCESSING
  1261. SA1 /STAGE/SJIF CHECK STAGING JOB INITIATION FLAG
  1262. NZ X1,CPRX IF INITIATION FLAG ALREADY SET
  1263. MX6 59 FORCE STAGING JOB INITIATION
  1264. SA6 A1
  1265. EQ CPRX RETURN
  1266. CSA SPACE 4,10
  1267. ** CSA - CHECK TAPE ALTERNATE STORAGE ACTIVE.
  1268.  
  1269.  
  1270. CSA BSS 0 ENTRY
  1271. SA1 TAJP
  1272. NZ X1,/STAGE/CRJ IF TAPE ALTERNATE STORAGE ACTIVE
  1273. EQ ICR PROCESS INCORRECT REQUEST
  1274. RAR SPACE 4,15
  1275. ** RAR - RECEIVE ATF RESPONSE.
  1276. *
  1277. * ENTRY
  1278. *
  1279. *T RCAL 12/ FC,30/,18/ WC
  1280. *T, 60/ *RQHD* RESPONSE WORD
  1281. *T, 60/ *RQP1* RESPONSE WORD
  1282. *
  1283. * FC FUNCTION CODE = *ACR*.
  1284. * WC WORD COUNT OF REQUEST = 3.
  1285. *
  1286. * CALLS DAU, PVD, PVE.
  1287.  
  1288.  
  1289. RAR BSS 0 ENTRY
  1290.  
  1291. * FIND UNIT FOR RESPONSE.
  1292.  
  1293. SA1 RCAL+1+/ATF/RQHD GET RESPONSE HEADER
  1294. SB2 -1
  1295. TB3 -UNITL,UBUF
  1296. TB4 0,UBUF,LWA
  1297. SX0 11B
  1298. MX7 22
  1299. LX7 -2
  1300. RAR1 SB3 B3+UNITL ADVANCE UDT ADDRESS
  1301. EQ B3,B4,RAR8 IF END OF UDT ENTRIES
  1302. SA3 B3+UMST
  1303. SB2 B2+B1 ADVANCE UDT ORDINAL
  1304. BX2 X0*X3
  1305. SX2 X2-1
  1306. NZ X2,RAR1 IF NOT WAITING FOR RESPONSE
  1307. SA4 B3+UARP
  1308. BX2 X4-X1 COMPARE REQUEST ID AND CODE
  1309. BX2 X7*X2
  1310. NZ X2,RAR1 IF RESPONSE NOT FOR THIS UNIT
  1311. SA0 B3+ SET UDT ADDRESS
  1312.  
  1313. * CONVERT RESPONSE CODE TO INTERNAL FORMAT.
  1314.  
  1315. SA2 TARS-1
  1316. MX6 -12
  1317. LX1 -24 POSITION RESPONSE CODE
  1318. RAR2 SA2 A2+1
  1319. ZR X2,RAR3 IF RESPONSE CODE NOT FOUND
  1320. BX7 X1-X2
  1321. BX7 -X6*X7
  1322. NZ X7,RAR2 IF NO MATCH
  1323. RAR3 SB3 A2-TARS INTERNAL RESPONSE CODE
  1324. SX2 B3
  1325. BX6 X3
  1326. LX2 30
  1327. SA6 RARA SAVE ENTRY *UMST*
  1328. BX7 X4+X2 SET RESPONSE CODE IN *UARP*
  1329. LX6 59-1
  1330. SA7 A4
  1331. NG X6,RAR6 IF DISMOUNT OPERATION
  1332.  
  1333. * CHECK STATUS OF MOUNT OPERATION.
  1334.  
  1335. ZR B3,RAR5 IF NORMAL COMPLETION
  1336. MX6 -22
  1337. LX6 2
  1338. BX6 -X6*X3 CLEAR VSN AND STATUS
  1339. SB4 B3-/ATF/MXVE
  1340. SX0 B1
  1341. NG B4,RAR4 IF VSN ERROR
  1342. LX0 2
  1343. BX6 X6+X0 SET CONTROL PATH ERROR
  1344. RAR4 SA6 A3+ UPDATE *UMST*
  1345. SA1 RARA GET VSN
  1346. RJ PVE PROCESS VSN ERROR
  1347. RJ PVD PROCESS VOLUME IN DRIVE ERROR
  1348. EQ CPRX SET REQUEST COMPLETE
  1349.  
  1350. RAR5 SA2 RCAL+1+/ATF/RQP1
  1351. TX1 0,UACI
  1352. LX1 3
  1353. MX6 48
  1354. MX7 57
  1355. BX6 X6*X3
  1356. BX7 X7*X2 VSN AND DRIVE IDENTIFICATION FROM RESPONSE
  1357. BX6 X6+X1 VSN AND DRIVE IDENTIFICATION FROM REQUEST
  1358. BX6 X6-X7
  1359. SX0 B1+B1
  1360. NZ X6,RAR8 IF INCORRECT VSN AND DRIVE IN RESPONSE
  1361. MX6 58
  1362. BX3 X6*X3
  1363. BX6 X3+X0 SET MOUNTED STATUS
  1364. SA6 A3 UPDATE *UMST*
  1365. EQ CPRX SET REQUEST COMPLETE
  1366.  
  1367. * CHECK STATUS OF DISMOUNT OPERATION.
  1368.  
  1369. RAR6 MX6 -22
  1370. LX6 2
  1371. BX6 -X6*X3 CLEAR VSN AND MOUNT STATUS
  1372. SX0 B1
  1373. ZR B3,RAR7 IF NORMAL COMPLETION
  1374. LX0 2
  1375. BX6 X6+X0 SET CONTROL PATH ERROR
  1376. RAR7 SA6 A3 UPDATE *UMST*
  1377. EQ CPRX SET REQUEST COMPLETE
  1378.  
  1379. * UPDATE NO REQUEST OUTSTANDING COUNT.
  1380.  
  1381. RAR8 SA1 ANRC COUNT NO REQUEST OUTSTANDING
  1382. SX6 B1
  1383. IX6 X1+X6 UPDATE COUNT
  1384. SA6 A1
  1385. EQ CPRX SET REQUEST COMPLETE
  1386.  
  1387.  
  1388. RARA CON 0 *UMST* ENTRY VALUE
  1389. TARS SPACE 4,10
  1390. ** TARS - TABLE OF ATF RESPONSE CODES.
  1391. *
  1392. * INDEXED BY *COMSATF* FORMAT RESPONSE CODE.
  1393. *
  1394. * ENTRY FORMAT -
  1395. *
  1396. * 18/ MNEM,30/0,12/ SRC
  1397. *
  1398. * MNEM 3 CHARACTER MNEMONIC.
  1399. * SRC SERVER FORMAT RESPONSE CODE.
  1400.  
  1401.  
  1402. TARS IVFD
  1403.  
  1404. IVFD /ATF/SUC,(18/3RSUC,30/0,12/0) SUCCESS
  1405. IVFD /ATF/NSA,(18/3RNSA,30/0,12/69) NOT IN SAME ACS
  1406. IVFD /ATF/URL,(18/3RURL,30/0,12/95) UNREADABLE LABEL
  1407. IVFD /ATF/VNL,(18/3RVNL,30/0,12/94) VOLUME NOT IN LIBRARY
  1408. IVFD /ATF/MTP,(18/3RMTP,30/0,12/65) MISPLACED TAPE
  1409. IVFD /ATF/VID,(18/3RVID,30/0,12/91) VOLUME IN DRIVE
  1410. IVFD /ATF/VIT,(18/3RVIT,30/0,12/99) VOLUME IN TRANSIT
  1411. IVFD /ATF/VIU,(18/3RVIU,30/0,12/99) VOLUME IN USE
  1412. IVFD /ATF/AFL,(18/3RAFL,30/0,12/1) ACS FULL
  1413. IVFD /ATF/ANL,(18/3RANL,30/0,12/2) ACS NOT IN LIBRARY
  1414. IVFD /ATF/AUD,(18/3RAUD,30/0,12/8) AUDIT IN PROGRESS
  1415. IVFD /ATF/CAN,(18/3RCAN,30/0,12/9) CANCELLED
  1416. IVFD /ATF/DBE,(18/3RDBE,30/0,12/23) DATA BASE ERROR
  1417. IVFD /ATF/DAV,(18/3RDAV,30/0,12/28) DRIVE AVAILABLE
  1418. IVFD /ATF/DNL,(18/3RDNL,30/0,12/30) DRIVE NOT IN LIBRARY
  1419. IVFD /ATF/DOF,(18/3RDOF,30/0,12/31) DRIVE OFFLINE
  1420. IVFD /ATF/DIU,(18/3RDIU,30/0,12/29) DRIVE IN USE
  1421. IVFD /ATF/LBS,(18/3RLBS,30/0,12/55) LIBRARY BUSY
  1422. IVFD /ATF/LFA,(18/3RLFA,30/0,12/56) LIBRARY FAILURE
  1423. IVFD /ATF/LNA,(18/3RLNA,30/0,12/57) LIBRARY NOT AVAILABLE
  1424. IVFD /ATF/LNL,(18/3RLNL,30/0,12/60) LSM NOT IN LIBRARY
  1425. IVFD /ATF/LOF,(18/3RLOF,30/0,12/61) LSM OFFLINE
  1426. IVFD /ATF/PFA,(18/3RPFA,30/0,12/74) PROCESS FAILURE
  1427.  
  1428. IVFD /ATF/MXRS-1
  1429. ERRNZ /ATF/MXRS-1-/ATF/RQE
  1430.  
  1431. CON 0 TABLE TERMINATOR
  1432. RDP SPACE 4,10
  1433. ** RDP - REQUEST PREVIEW DISPLAY PROMPT.
  1434. *
  1435. * ENTRY
  1436. *
  1437. *T RCAL 12/ FC,12/0,18/ PBL,18/ WC
  1438. *
  1439. * FC FUNCTION CODE = *PDU*.
  1440. * PBL LENGTH OF ENTRIES IN PREVIEW BUFFER.
  1441. * WC WORD COUNT OF REQUEST = 1.
  1442.  
  1443.  
  1444. RDP BSS 0 ENTRY
  1445. SA1 PBFL GET PREVIOUS PREVIEW BUFFER LENGTH
  1446. LX5 -18
  1447. SX6 X5 NEW PREVIEW BUFFER LENGTH
  1448. SA6 A1 PREVIEW BUFFER LENGTH
  1449. IX6 X1-X6
  1450. PL X6,CPRX IF NOT NEW REQUEST
  1451. SA6 OPRF SET NEW REQUEST FLAG
  1452. EQ CPRX RETURN
  1453. TMR SPACE 4,15
  1454. ** TMR - TRANSFER ACS MOUNT REQUESTS.
  1455. *
  1456. * ENTRY
  1457. *
  1458. *T RCAL 12/ FC,42/0,18/ WC
  1459. *
  1460. * FC FUNCTION CODE = *AMR*.
  1461. * WC WORD COUNT OF REQUESTS + 1.
  1462. *
  1463. * MACROS MOVE.
  1464.  
  1465.  
  1466. TMR BSS 0 ENTRY
  1467. SX1 X5-1 SET LENGTH OF ENTRIES
  1468. SX2 RCAL+1 SET SOURCE ADDRESS
  1469. SX3 MRT SET DESTINATION ADDRESS
  1470. MOVE X1,X2,X3 UPDATE MRT
  1471. SX6 B0
  1472. MX7 1
  1473. SA6 MRT-1+X5 TERMINATE ENTRIES
  1474. SA7 ACRF SET MOUNT REQUEST FLAG
  1475. EQ CPRX RETURN
  1476. XUD SPACE 4,15
  1477. ** XUD - EXTERNAL UDT UPDATE.
  1478. *
  1479. * ENTRY
  1480. *
  1481. *T RCAL 12/ FC,18/ 0,6/ FW,6/ WC,18/ UDTA
  1482. *T, 60/ UPDATE WORD 1
  1483. *T, 60/ UPDATE WORD 2
  1484. *T, 60/ UPDATE WORD 3
  1485. *T, 60/ UPDATE WORD 4
  1486. *T, 60/ UPDATE WORD 5
  1487. *
  1488. * FC FUNCTION CODE = *RUU*.
  1489. * FW INDEX INTO ENTRY OF FIRST WORD TO UPDATE.
  1490. * WC NUMBER OF WORDS TO UPDATE (1 - 5).
  1491. * UDTA ADDRESS OF UDT ENTRY TO UPDATE.
  1492.  
  1493.  
  1494. XUD BSS 0 ENTRY
  1495. TX7 X5,-UBUF
  1496. TX3 X5,-UBUF,LWA
  1497. BX2 -X3-X7
  1498. NG X2,ICR IF INCORRECT UDT ADDRESS
  1499. SA0 X5 (A0) = UDT ADDRESS
  1500. MX0 -6
  1501. AX5 18
  1502. BX6 -X0*X5
  1503. AX5 6
  1504. BX7 -X0*X5
  1505. SB2 X6 (B2) = WORD COUNT
  1506. SB3 X7 (B3) = UDT OFF-SET
  1507. XUD1 LE B2,CPRX IF LAST UPDATE WORD
  1508. SA5 A5+B1
  1509. BX7 X5
  1510. SA7 A0+B3
  1511. SB2 B2-B1
  1512. SB3 B3+B1
  1513. EQ XUD1 GET NEXT UPDATE WORD
  1514. ICR SPACE 4,10
  1515. ** ICR - PROCESS INCORRECT INTER-CONTROL POINT REQUEST.
  1516. *
  1517. * ENTRY (RCAL) = REQUEST.
  1518. *
  1519. * EXIT TO *CPRX*.
  1520. *
  1521. * USES X - 1, 2.
  1522. * A - 1, 2.
  1523. *
  1524. * CALLS IXR.
  1525.  
  1526.  
  1527. ICR BSS 0 ENTRY
  1528. SA1 RCAL GET REQUEST
  1529. SA2 ICRA SET MESSAGE TEXT
  1530. RJ IXR
  1531. EQ CPRX EXIT
  1532.  
  1533.  
  1534. ICRA DATA 5L CPR.
  1535. TITLE SEND ATF REQUEST.
  1536. SAR SPACE 4,15
  1537. ** SAR - SEND ATF REQUEST.
  1538. *
  1539. * EXIT REQUEST SENT TO ATF IF FOUND.
  1540. * (ATFS) = 0 IF NO REQUESTS REMAINING TO BE SENT.
  1541. * (ATFS) .NE. 0 IF REMAINING REQUESTS TO SEND.
  1542. * (ACRT) = TIME OF FIRST REJECT IF ATF REQUEST REJECTED.
  1543. *
  1544. * CALLS SYS=.
  1545.  
  1546.  
  1547. SAR6 SX6 B0+ SET NO REQUESTS WAITING
  1548. SA6 ATFS
  1549.  
  1550. SAR SUBR ENTRY/EXIT
  1551. SA1 SARD
  1552. ZR X1,SAR1 IF NO REJECT OF PREVIOUS REQUEST
  1553. SB3 X1 SET UDT ADDRESS
  1554. SX0 B0 INDICATE RETRY OF PREVIOUS REQUEST
  1555. SA3 B3+UMST GET *UMST*
  1556. SA4 B3+UARP GET *UARP*
  1557. EQ SAR3 RETRY LAST REQUEST
  1558.  
  1559. * SEARCH FOR REQUEST TO BE SENT.
  1560.  
  1561. SAR1 TB3 -UNITL,UBUF
  1562. TB4 0,UBUF,LWA
  1563. SX0 10B
  1564. SAR2 SB3 B3+UNITL
  1565. EQ B3,B4,SAR6 IF END OF UDT ENTRIES
  1566. SA3 B3+UMST
  1567. BX1 X0*X3 SEND REQUEST FLAG
  1568. ZR X1,SAR2 IF NOT SEND REQUEST
  1569.  
  1570. * BUILD ATF REQUEST.
  1571.  
  1572. MX6 48
  1573. SA4 B3+UARP
  1574. TX1 0,UACI
  1575. MX7 22
  1576. LX1 3
  1577. LX7 -2
  1578. BX6 X6*X3 VSN AND DRIVE IDENTIFIER
  1579. BX7 X7*X4 REQUEST CODE AND REQUEST IDENTIFIER
  1580. BX6 X6+X1 MERGE ACS IDENTIFIER
  1581. SA7 SARB+1+/ATF/RQHD SET REQUEST HEADER
  1582. SA6 SARB+1+/ATF/RQP1 SET PARAMETERS
  1583.  
  1584. * SEND REQUEST TO ATF.
  1585.  
  1586. SAR3 SA1 SARA
  1587. SX7 ATSI
  1588. LX7 30
  1589. SA7 SARC SET BUFFER NUMBER AND SUBSYSTEM ID
  1590. BX6 X1 SET *SIC* CALL
  1591. RJ SYS= SEND REQUEST TO ATF
  1592. SA1 SARC
  1593. SA2 RTIM
  1594. SB4 X1
  1595. AX2 36 REAL TIME SECONDS
  1596. NE B4,B1,SAR4 IF REQUEST NOT ACCEPTED
  1597. SX6 10B
  1598. SX7 /ATF/RSTO RESPONSE TIME OUT DELAY
  1599. BX6 -X6*X3 CLEAR SEND REQUEST FLAG
  1600. IX7 X2+X7 RESPONSE TIME OUT
  1601. SA6 A3 UPDATE STATUS
  1602. BX7 X4+X7 SET RESPONSE TIME OUT
  1603. SX6 B0
  1604. SA7 A4 UPDATE REQUEST PARAMETERS
  1605. SA6 SARD INDICATE REQUEST ACCEPTED
  1606. EQ SAR5 CLEAR NO RESPONSE FLAG
  1607.  
  1608. SAR4 ZR X0,SARX IF NOT FIRST REJECT OF REQUEST
  1609. SX6 /ATF/ICTO SET ATF REJECT TIME OUT
  1610. SX7 B3
  1611. IX6 X2+X6 ATF NO RESPONSE TIME
  1612. SA7 SARD SET UDT ADDRESS OF REJECTED REQUEST
  1613. SAR5 SA6 ACRT UPDATE ACS NO RESPONSE FLAG
  1614. EQ SARX RETURN
  1615.  
  1616.  
  1617. SARA VFD 18/3RSIC,6/0,18/SARB,18/SARC
  1618.  
  1619. SARB CON 3 REQUEST BLOCK LENGTH
  1620. BSSZ 2 ATF REQUEST
  1621.  
  1622. SARC VFD 18/0,12/ATSI,30/0 STATUS WORD
  1623.  
  1624. SARD CON 0 UDT ADDRESS IF REQUEST PREVIOUSLY REJECTED
  1625. TITLE EXTERNAL PP REQUEST PROCESSING.
  1626. PXR SPACE 4,15
  1627. ** PXR - PROCESS EXTERNAL PP REQUEST.
  1628. *
  1629. * ENTRY (X5) = REQUEST.
  1630. * (A5) = *XREQ*
  1631. *
  1632. *T XREQ 6/0, 6/ FC, 12/ UDTO, 36/ PARAM
  1633. *
  1634. * FC FUNCTION CODE.
  1635. * UDTO UDT ORDINAL.
  1636. * PARAM VALUE DEPENDS ON FUNCTION CODE.
  1637. *
  1638. * CALLS SUA.
  1639.  
  1640.  
  1641. PXRX SX6 B0+ SET REQUEST PROCESSED
  1642. SA6 XREQ
  1643.  
  1644. PXR PS ENTRY/EXIT
  1645.  
  1646. * CHECK REQUEST TYPE.
  1647.  
  1648. BX6 X5
  1649. AX6 48 REQUEST CODE
  1650. SB3 X6-XRMX
  1651. ZR X6,IXP IF NOT VALID REQUEST CODE
  1652. PL B3,IXP IF NOT VALID REQUEST CODE
  1653. SA1 TXRP+X6 GET PROCESSOR ADDRESS AND FUNCTION FLAGS
  1654. LX5 -36
  1655. RJ SUA SET UDT ADDRESS
  1656. PL X6,IXP IF INCORRECT UDT ORDINAL
  1657.  
  1658. * DETERMINE IF REQUEST CAN BE PROCESSED.
  1659.  
  1660. SA2 A0+UST1
  1661. SB3 X1 SET PROCESSOR ADDRESS
  1662. BX6 X1
  1663. LX1 59-20
  1664. LX2 59-49
  1665. LX6 59-18
  1666. PL X2,PXR1 IF NOT ACS UNIT
  1667. LX6 59-19-59+18
  1668. PXR1 PL X6,IXP IF REQUEST NOT VALID FOR UNIT TYPE
  1669. PL X1,PXR2 IF NO ACTIVITY CHECK REQUIRED
  1670. SA1 A0+UREQ
  1671. SA2 A0+UVRI
  1672. NZ X1,PXRX IF PROCESSOR ACTIVE
  1673. NZ X2,PXRX IF UNIT ASSIGNED OR SELECTED FOR UNIT SWAP
  1674. PXR2 MX0 36
  1675. BX1 X0*X5 SET PARAMETER
  1676.  
  1677. * EXIT TO PROCESSOR WITH -
  1678. *
  1679. * (X0) = 36 BIT MASK LEFT JUSTIFIED.
  1680. * (X1) = BITS 0 - 35 OF REQUEST LEFT JUSTIFIED.
  1681. * (X5) = REQUEST SHIFTED LEFT CIRCULAR 24 BITS.
  1682. * (A0) = UDT ADDRESS.
  1683. * (B2) = UDT ORDINAL.
  1684.  
  1685. JP B3 EXIT TO REQUEST PROCESSOR
  1686. TXRP SPACE 4,15
  1687. ** TXRP - TABLE OF EXTERNAL REQUEST PROCESSORS.
  1688. *
  1689. * ONE WORD PER ENTRY -
  1690. *
  1691. *T 39/0,1/R,1/A,1/N,18/ PADD
  1692. *
  1693. * R REJECT REQUEST IF UNIT ASSIGNED TO JOB OR REQUEST
  1694. * ACTIVE ON UNIT.
  1695. * A REQUEST ALLOWED ON ACS UNITS.
  1696. * N REQUEST ALLOWED ON NON-ACS UNITS.
  1697. * PADD REQUEST PROCESSOR ADDRESS.
  1698.  
  1699.  
  1700. TXRP IVFD
  1701. IVFD XEV,(39/0,1/1,1/0,1/1,18/EVS) ENTER VSN
  1702. IVFD XUU,(39/0,1/1,1/1,1/1,18/UNL) UNLOAD UNIT
  1703. IVFD XSV,(39/0,1/1,1/0,1/1,18/ESV) ENTER SCRATCH VSN
  1704. IVFD XRT,(39/0,1/0,1/1,1/1,18/SRT) SET *RETRY* FLAG
  1705. IVFD XUG,(39/0,1/0,1/1,1/1,18/UGO) UNIT GO (TMS)
  1706. IVFD XUS,(39/0,1/0,1/1,1/1,18/UST) UNIT STOP (TMS)
  1707. IVFD XTR,(39/0,1/0,1/1,1/1,18/STR) SET *TERMINATE* FLAG
  1708. IVFD XMU,(39/0,1/1,1/1,1/0,18/AMU) ACS UNIT MOUNT
  1709. IVFD XNV,(39/0,1/0,1/0,1/1,18/NVS) SPECIFY NEXT VSN
  1710. IVFD XRMX
  1711. AMU SPACE 4,15
  1712. ** AMU - ACS VSN MOUNT ON SPECIFIED UNIT.
  1713. *
  1714. * ENTRY
  1715. *
  1716. *T XREQ 6/0, 6/ FC, 12/ UDTO, 36/ VSN
  1717. *
  1718. * FC FUNCTION CODE = *XMU*.
  1719. * UDTO UDT ORDINAL.
  1720. * VSN VSN TO MOUNT.
  1721. *
  1722. * CALLS FAV, MAV.
  1723.  
  1724.  
  1725. AMU BSS 0 ENTRY
  1726. SA2 ACCU
  1727. SA3 A0+UMST
  1728. MX7 -3
  1729. LX2 B2
  1730. BX3 -X7*X3
  1731. PL X2,PXRX IF UNIT NOT ACCESSIBLE
  1732. NZ X3,PXRX IF MOUNT OR DISMOUNT OR CONTROL PATH ERROR
  1733. RJ FAV FIND ACS VSN
  1734. NZ B3,PXRX IF ACTIVITY OR ERROR ON VSN
  1735. SB6 A0+ SET UNIT FOR MOUNT
  1736. RJ MAV MOUNT VSN
  1737. EQ PXRX EXIT
  1738. ESV SPACE 4,10
  1739. ** ESV - ENTER SCRATCH VSN.
  1740. *
  1741. * ENTRY
  1742. *
  1743. *T XREQ 6/0, 6/ FC, 12/ UDTO, 36/
  1744. *
  1745. * FC FUNCTION CODE = *XSV*.
  1746. * UDTO UDT ORDINAL.
  1747. *
  1748. * CALLS CLS.
  1749.  
  1750.  
  1751. ESV BSS 0 ENTRY
  1752. RJ CLS CHECK LABELS READ STATUS
  1753. SX3 B1
  1754. LX3 22-0
  1755. BX6 X3+X2 SET SCRATCH FLAG
  1756. SA6 A2
  1757. SX7 PVSE ISSUE VSN EVENT
  1758. EQ MQX MAKE REQUEST AND EXIT
  1759. EVS SPACE 4,15
  1760. ** EVS - ENTER VSN.
  1761. *
  1762. * ENTRY
  1763. *
  1764. *T XREQ 6/0, 6/ FC, 12/ UDTO, 36/ VSN
  1765. *
  1766. * FC FUNCTION CODE = *XEV*.
  1767. * UDTO UDT ORDINAL.
  1768. * VSN VSN TO ENTER ON UNIT.
  1769. *
  1770. * CALLS CLS.
  1771.  
  1772.  
  1773. EVS BSS 0 ENTRY
  1774. RJ CLS CHECK LABELS READ STATUS
  1775. ZR X1,EVS1 IF CLEARING VSN
  1776. SX3 B1
  1777. BX2 -X0*X2 PRESERVE *UVSN* FLAGS
  1778. LX3 14-0
  1779. BX2 X1+X2 MERGE VSN
  1780. BX6 -X3*X2 CLEAR DEFAULT VSN FLAG
  1781. BX3 X3*X2 EXTRACT DEFAULT VSN FLAG
  1782. ZR X3,PXRX IF NOT DEFAULT VSN
  1783. SA6 A2+
  1784. SX7 PVSE ISSUE VSN EVENT
  1785. EQ MQX MAKE REQUEST AND EXIT
  1786.  
  1787. EVS1 SX7 PCVS CLEAR VSN
  1788. EQ MQX EXIT
  1789. NVS SPACE 4,15
  1790. ** NVS - SPECIFY NEXT VSN.
  1791. *
  1792. * ENTRY
  1793. *
  1794. *T XREQ 6/0, 6/ FC, 12/ UDTO, 36/ VSN
  1795. *
  1796. * FC FUNCTION CODE = *XNV*.
  1797. * UDTO UDT ORDINAL.
  1798. * VSN NEXT VSN TO REQUEST.
  1799. *
  1800. * CALLS CLS.
  1801.  
  1802.  
  1803. NVS BSS 0 ENTRY
  1804. SA2 A0+UVRI
  1805. SA4 A0+UISN
  1806. SA3 A0+UESN
  1807. MX6 -6
  1808. LX2 59-0
  1809. LX4 -12
  1810. PL X2,PXRX IF NO OPERATOR PROMPT
  1811. BX6 -X6*X4 PREVIEW DISPLAY MESSAGE CODE
  1812. LX4 12
  1813. SX6 X6-/RSX/NTV
  1814. BX3 -X0*X3
  1815. NZ X6,PXRX IF NO REQUEST FOR NEXT VSN
  1816. BX4 -X0*X4
  1817. BX6 X3+X1 SET EXTERNAL VSN
  1818. BX7 X4+X1 SET INTERNAL VSN
  1819. SA6 A3
  1820. SA7 A4+
  1821. EQ PXRX EXIT
  1822. SRT SPACE 4,10
  1823. ** SRT - SET *RETRY* FLAG.
  1824. *
  1825. * ENTRY
  1826. *
  1827. *T XREQ 6/0, 6/ FC, 12/ UDTO, 36/
  1828. *
  1829. * FC FUNCTION CODE = *XRT*.
  1830. * UDTO UDT ORDINAL.
  1831.  
  1832.  
  1833. SRT BSS 0 ENTRY
  1834. SB3 51
  1835. EQ SFL SET *RETRY* FLAG
  1836. STR SPACE 4,10
  1837. ** STR - SET *TERMINATE* FLAG.
  1838. *
  1839. * ENTRY
  1840. *
  1841. *T XREQ 6/0, 6/ FC, 12/ UDTO, 36/
  1842. *
  1843. * FC FUNCTION CODE = *XTR*.
  1844. * UDTO UDT ORDINAL.
  1845.  
  1846.  
  1847. STR BSS 0 ENTRY
  1848. SB3 52
  1849. EQ SFL SET *TERMINATE* FLAG
  1850. UGO SPACE 4,10
  1851. ** UGO - CLEAR TMS UNIT GO FLAG.
  1852. *
  1853. * ENTRY
  1854. *
  1855. *T XREQ 6/0, 6/ FC, 12/ UDTO, 36/
  1856. *
  1857. * FC FUNCTION CODE = *XUG*.
  1858. * UDTO UDT ORDINAL.
  1859.  
  1860.  
  1861. UGO BSS 0 ENTRY
  1862. SX6 B0+ DO NOT SET UNLOAD FLAG
  1863. EQ CUG CLEAR UNIT GO FLAG
  1864. UST SPACE 4,10
  1865. ** UST - SET TMS UNIT UNLOAD FLAG.
  1866. *
  1867. * ENTRY
  1868. *
  1869. *T XREQ 6/0, 6/ FC, 12/ UDTO, 36/
  1870. *
  1871. * FC FUNCTION CODE = *XUS*.
  1872. * UDTO UDT ORDINAL.
  1873.  
  1874.  
  1875. UST BSS 0 ENTRY
  1876. SX6 40000B SET UNLOAD FLAG
  1877. EQ CUG CLEAR UNIT GO FLAG
  1878. UNL SPACE 4,10
  1879. ** UNL - UNLOAD UNIT.
  1880. *
  1881. * ENTRY
  1882. *
  1883. *T XREQ 6/0, 6/ FC, 12/ UDTO, 36/
  1884. *
  1885. * FC FUNCTION CODE = *XUU*.
  1886. * UDTO UDT ORDINAL.
  1887. *
  1888. * CALLS CLS.
  1889.  
  1890.  
  1891. UNL BSS 0 ENTRY
  1892. RJ CLS CHECK LABELS READ STATUS
  1893. SX7 PULR UNLOAD UNIT AND CLEAR VSN
  1894. EQ MQX MAKE REQUEST AND EXIT
  1895. CUG SPACE 4,10
  1896. ** CUG - CLEAR TMS WAIT UNIT GO FLAG.
  1897. *
  1898. * ENTRY (X6) = 0 IF CLEAR UNIT GO FLAG ONLY.
  1899. * (X6) = 40000B IF CLEAR UNIT GO FLAG AND SET UNLOAD
  1900. * FLAG.
  1901. *
  1902. * EXIT WAIT UNIT GO FLAG CLEARED.
  1903. * UNLOAD FLAG SET IF REQUESTED.
  1904.  
  1905.  
  1906. CUG BSS 0 ENTRY
  1907. SA1 A0+UTMS
  1908. SA2 A0+UVRI
  1909. LX1 59-23
  1910. AX2 48
  1911. ZR X2,PXRX IF UNIT NOT ASSIGNED
  1912. MX7 -59
  1913. PL X1,PXRX IF NOT WAITING FOR UNIT GO
  1914. BX7 -X7*X1 CLEAR UNIT GO FLAG
  1915. LX7 23-23-59+23
  1916. BX7 X7+X6 MERGE UNLOAD STATUS
  1917. SA7 A1+
  1918. EQ PXRX EXIT
  1919. IXP SPACE 4,10
  1920. ** IXP - PROCESS INCORRECT EXTERNAL PP REQUEST.
  1921. *
  1922. * ENTRY (XREQ) = REQUEST.
  1923. *
  1924. * EXIT TO *PXRX*.
  1925. *
  1926. * USES X - 1, 2.
  1927. * A - 1, 2.
  1928. *
  1929. * CALLS IXR.
  1930.  
  1931.  
  1932. IXP BSS 0 ENTRY
  1933. SA1 XREQ GET REQUEST
  1934. SA2 IXPA SET EXTERNAL PP REQUEST
  1935. RJ IXR ISSUE EXTERNAL REQUEST ERROR MESSAGE
  1936. EQ PXRX RETURN
  1937.  
  1938.  
  1939. IXPA DATA 5L PXR.
  1940. CLS SPACE 4,10
  1941. ** CLS - CHECK LABELS READ STATUS.
  1942. *
  1943. * EXIT (X2) = *UVSN*.
  1944. * (A2) = ADDRESS OF *UVSN*.
  1945. * TO CALLER IF INITIAL LABEL CHECK COMPLETE.
  1946. * TO *PXRX* IF LABEL CHECK NOT PERFORMED OR IN PROGRESS.
  1947. *
  1948. * USES X - 2, 6.
  1949. * A - 2.
  1950.  
  1951.  
  1952. CLS SUBR ENTRY/EXIT
  1953. SA2 A0+UVSN
  1954. ZR X2,PXRX IF LABEL CHECK NOT PERFORMED
  1955. BX6 X2
  1956. LX6 59-23
  1957. NG X6,PXRX IF LABEL CHECK IN PROGRESS
  1958. EQ CLSX RETURN
  1959. MQX SPACE 4,10
  1960. ** MQX - MAKE QUEUE ENTRY FOR EXTERNAL REQUEST.
  1961. *
  1962. * ENTRY (X7) = REQUEST.
  1963. *
  1964. * EXIT TO *PXRX*.
  1965. *
  1966. * USES X - 5.
  1967. *
  1968. * CALLS MQE.
  1969.  
  1970.  
  1971. MQX BSS 0 ENTRY
  1972. SX5 B0
  1973. RJ MQE MAKE QUEUE ENTRY
  1974. EQ PXRX EXIT
  1975. SFL SPACE 4,10
  1976. ** SFL - SET FLAG IN *UFLA*.
  1977. *
  1978. * ENTRY (B3) = BIT LOCATION OF FLAG.
  1979. *
  1980. * USES X - 1, 6.
  1981. * A - 1, 6.
  1982.  
  1983.  
  1984. SFL BSS 0 ENTRY
  1985. SA1 A0+UFLA
  1986. SX6 B1
  1987. LX6 B3
  1988. BX6 X1+X6
  1989. SA6 A1
  1990. EQ PXRX EXIT
  1991. TITLE PERIODIC PROCESSING.
  1992. CAR SPACE 4,10
  1993. ** CAR - CHECK ACS MOUNT REQUESTS.
  1994. *
  1995. * ENTRY (X1) = (ACRF).
  1996. * (A1) = ADDRESS OF *ACRF*.
  1997. *
  1998. * EXIT MOUNT REQUEST MADE IF NECESSARY.
  1999. *
  2000. * CALLS FAV, MAV.
  2001.  
  2002.  
  2003. CAR SUBR ENTRY/EXIT
  2004. SX6 B0
  2005. SB7 MRT
  2006. SA6 A1
  2007. CAR1 SA1 B7
  2008. SB7 B7+B1 ADVANCE MRT POINTER
  2009. ZR X1,CARX IF END OF MOUNT REQUESTS
  2010. RJ FAV FIND VSN
  2011. NZ B3,CAR1 IF ACTIVITY OR ERROR ON VSN
  2012. ZR B6,CARX IF NO UNIT AVAILABLE FOR MOUNT
  2013. RJ MAV MOUNT VSN
  2014. EQ CAR1 CHECK NEXT ENTRY
  2015. CAU SPACE 4,10
  2016. ** CAU - CHECK ACS UNITS.
  2017. *
  2018. * EXIT VSN ERROR TABLE CLEARED.
  2019. * MOUNT OR DISMOUNT OPERATION TERMINATED IF ACS SERVER
  2020. * REQUEST TIMED OUT.
  2021. * CONTROL PATH ERROR CLEARED IN ACS UNIT UDT ENTRIES.
  2022.  
  2023.  
  2024. CAU SUBR ENTRY/EXIT
  2025. SX6 B0+ CLEAR VSN ERROR TABLE
  2026. SA6 VET
  2027. TB3 -UNITL,UBUF
  2028. TB4 0,UBUF,LWA
  2029. SX0 11B
  2030. SX7 4
  2031. CAU1 SB3 B3+UNITL
  2032. EQ B3,B4,CAUX IF ALL UNITS CHECKED
  2033. SA3 B3+UMST
  2034. BX1 X0*X3
  2035. BX6 X7*X3
  2036. SX1 X1-1
  2037. NZ X6,CAU2 IF CONTROL PATH ERROR
  2038. NZ X1,CAU1 IF NOT WAITING FOR RESPONSE FROM SERVER
  2039. SA2 RTIM
  2040. SA4 B3+UARP
  2041. MX6 -24
  2042. AX2 36 REAL TIME SECONDS
  2043. BX1 -X6*X4 RESPONSE TIME OUT
  2044. IX1 X2-X1
  2045. NG X1,CAU1 IF NOT TIMED OUT
  2046. SA1 ATRC COUNT RESPONSE TIME OUT
  2047. SX6 B1
  2048. IX6 X1+X6
  2049. SA6 A1+
  2050. CAU2 MX6 -20
  2051. LX6 4
  2052. BX6 -X6*X3 CLEAR VSN AND STATUS FLAGS
  2053. SA6 A3 SET DISMOUNTED STATUS
  2054. EQ CAU1 CHECK NEXT UNIT
  2055. COR SPACE 4,15
  2056. ** COR - CHECK OPERATOR REQUESTS.
  2057. *
  2058. * ENTRY (X1) = (OPRF) .LT. 0 IF NEW OPERATOR REQUEST.
  2059. * (X1) = (OPRF) .GE. 0 IF NOT NEW OPERATOR REQUEST.
  2060. * (A1) = ADDRESS OF *OPRF*.
  2061. * (X5) = *ITIM* SET FOR 2 SECOND INTERVAL TEST.
  2062. *
  2063. * EXIT PREVIEW DISPLAY PROMPT ISSUED IF NEW OPERATOR REQUEST
  2064. * OR IF OLD OPERATOR REQUESTS AND DELAY EXPIRED.
  2065. * PREVIEW DISPLAY PROMPT CLEARED IF NO OPERATOR
  2066. * REQUESTS.
  2067. * (X5) = *ITIM* SET FOR 2 SECOND INTERVAL TEST.
  2068. * (OPRF) = 0.
  2069. *
  2070. * MACROS MESSAGE.
  2071.  
  2072.  
  2073. COR SUBR ENTRY/EXIT
  2074. SA4 RTIM
  2075. SX6 B0+
  2076. SA6 A1 CLEAR NEW REQUEST FLAG
  2077. AX4 36 REAL TIME SECONDS
  2078. NG X1,COR3 IF NEW REQUEST
  2079.  
  2080. * CHECK FOR OLD OPERATOR REQUESTS.
  2081.  
  2082. SA3 PBFL
  2083. TB3 B0,UBUF SET UDT FWA
  2084. TB4 B0,UBUF,LWA SET UDT LWA+1
  2085. NZ X3,COR2 IF PREVIEW REQUESTS PRESENT
  2086. COR1 EQ B3,B4,COR4 IF ALL UNITS CHECKED
  2087. SA3 B3+UVRI
  2088. SB3 B3+UNITL ADVANCE UDT ADDRESS
  2089. LX3 59-0
  2090. PL X3,COR1 IF NO PREVIEW DISPLAY MESSAGE
  2091.  
  2092. * CHECK TIME DELAY.
  2093.  
  2094. COR2 SA1 CORA
  2095. ZR X1,COR3 IF NO TIME DELAY
  2096. IX1 X4-X1
  2097. NG X1,CORX IF NOT TIME TO REISSUE MESSAGE
  2098.  
  2099. * ISSUE MESSAGE.
  2100.  
  2101. COR3 MESSAGE CORB,2 * CHECK E,P DISPLAY*
  2102. SX6 NTIM
  2103. IX6 X4+X6 SET TIME FOR NEXT MESSAGE ISSUE
  2104. SA6 CORA
  2105. EQ CORX RETURN
  2106.  
  2107. * INSURE MESSAGE CLEARED WHEN NO REQUESTS PRESENT.
  2108.  
  2109. COR4 SA1 CORA
  2110. ZR X1,CORX IF NO MESSAGE ISSUED
  2111. SX6 B0 SET NO MESSAGE
  2112. SA6 A1
  2113. MESSAGE =0,2 CLEAR MESSAGE
  2114. EQ CORX RETURN
  2115.  
  2116.  
  2117. CORA CON 0 TIME FOR DELAYED MESSAGE REISSUE
  2118. CORB DATA C*$CHECK E,P DISPLAY*
  2119. CUA SPACE 4,15
  2120. ** CUA - CHECK UNIT ACTIVITY.
  2121. *
  2122. * ENTRY (X5) = *ITIM* SET FOR 2 SECOND INTERVAL TEST.
  2123. * (X1) = (CUAF).
  2124. * (A1) = ADDRESS OF *CUAF*.
  2125. *
  2126. * EXIT (X5) = *ITIM* SET FOR 2 SECOND INTERVAL TEST.
  2127. * LABEL CHECK INITIATED ON READY UNASSIGNED UNITS.
  2128. * UNLOAD INITIATED ON ACS UNITS IF ASSIGNMENT TIMEOUT
  2129. * EXPIRED.
  2130. * CLEAR OF LABEL INFORMATION INITIATED IF READY DROP
  2131. * DETECTED ON UNASSIGNED UNIT.
  2132. *
  2133. * CALLS MQE.
  2134.  
  2135.  
  2136. CUA SUBR ENTRY/EXIT
  2137.  
  2138. * INITIALIZE UNIT SCAN.
  2139.  
  2140. SX6 B0+
  2141. TA0 -UNITL,UBUF
  2142. SB2 -1
  2143. SA6 CUAF CLEAR CHECK UNIT FLAG
  2144.  
  2145. * CHECK FOR UNASSIGNED UNIT WITH NO ACTIVITY.
  2146.  
  2147. CUA1 SA0 A0+UNITL ADVANCE UDT ADDRESS
  2148. TB3 A0,-UBUF,LWA
  2149. ZR B3,CUAX IF ALL UNITS CHECKED
  2150. SA1 A0+UVRI
  2151. SB2 B2+1 ADVANCE UDT ORDINAL
  2152. NZ X1,CUA1 IF UNIT ASSIGNED OR SELECTED FOR UNIT SWAP
  2153. SA1 ACCU
  2154. SA2 A0+UST1
  2155. SA3 A0+UREQ
  2156. MX0 -2
  2157. LX6 X1,B2
  2158. SA1 A0+UVSN
  2159. NZ X3,CUA1 IF PROCESSOR ACTIVE
  2160. BX0 -X0*X2 BUSY AND READY STATUS
  2161. LX2 59-49 SET FOR ACS UNIT CHECK
  2162. ZR X1,CUA4 IF VSN NOT DEFINED
  2163. ZR X0,CUA3 IF UNIT NOT READY AND NOT BUSY
  2164. PL X6,CUA3 IF UNIT NOT ACCESSIBLE
  2165.  
  2166. * CHECK FOR INCOMPLETE INITIAL LABEL CHECK.
  2167. * THIS CAN OCCUR IF *1MT* RETURNED AN ERROR THAT TERMINATED THE
  2168. * *PCLA* REQUEST PROCESSOR.
  2169.  
  2170. LX1 59-23
  2171. PL X1,CUA2 IF NOT LABEL CHECK IN PROGRESS
  2172. MX6 -59
  2173. BX6 -X6*X1 CLEAR LABEL CHECK IN PROGRESS
  2174. LX6 23-23-59+23
  2175. SA6 A1+
  2176. SX7 PCIL COMPLETE LABEL CHECK
  2177. EQ CUA5 QUEUE REQUEST
  2178.  
  2179. * CHECK TIME TO UNLOAD ACS UNIT.
  2180.  
  2181. CUA2 PL X2,CUA1 IF NOT ACS UNIT
  2182. SA1 A0+UTIM
  2183. SA2 RTIM
  2184. SX6 ULTO INACTIVE ACS UNIT UNLOAD TIMEOUT
  2185. AX1 36 LABELS READ TIME
  2186. AX2 36 CURRENT TIME
  2187. IX1 X1+X6 TIME TO UNLOAD UNASSIGNED UNIT
  2188. IX2 X2-X1
  2189. NG X2,CUA1 IF NOT TIME TO UNLOAD UNIT
  2190. SX7 PULR UNLOAD UNIT
  2191. EQ CUA5 QUEUE REQUEST
  2192.  
  2193. * CLEAR LABEL INFORMATION ON UNLOADED OR INACCESSIBLE UNIT.
  2194. * IF AN ACS UNIT, DISMOUNTED STATUS WILL BE SET ON THE
  2195. * ASSUMPTION THAT A FORCED DISMOUNT WAS INITIATED FROM THE
  2196. * LIBRARY SERVER CONSOLE.
  2197.  
  2198. CUA3 SX7 PCVS
  2199. PL X2,CUA5 IF NOT ACS UNIT
  2200. SA3 A0+UMST
  2201. MX6 -20
  2202. LX6 4
  2203. BX6 -X6*X3 CLEAR VSN AND STATUS FLAGS
  2204. SA6 A3 SET DISMOUNTED STATUS
  2205. EQ CUA5 QUEUE REQUEST
  2206.  
  2207. * INITIATE LABEL READ OR UNIT CHECK.
  2208. * *PCLA* WILL BE CALLED IMMEDIATELY WHEN AN ATS OR MTS UNIT
  2209. * FIRST BECOMES ACCESSIBLE TO CHECK THE UNIT HARDWARE.
  2210.  
  2211. CUA4 SA3 A0+UDS4
  2212. LX0 59-1
  2213. LX2 59-43-59+49
  2214. NG X0,CUA1 IF UNIT BUSY
  2215. PL X6,CUA1 IF UNIT NOT ACCESSIBLE
  2216. SX7 PCLA INITIATE LABEL CHECK
  2217. NZ X0,CUA5 IF UNIT READY
  2218. NG X2,CUA1 IF CTS UNIT
  2219. NZ X3,CUA1 IF INITIAL UNIT CHECK COMPLETE
  2220.  
  2221. * ENTER QUEUED REQUEST.
  2222.  
  2223. CUA5 SX5 B0
  2224. RJ MQE MAKE QUEUE ENTRY
  2225. SA5 ITIM RESTORE INTERVAL TIMER
  2226. LX5 59-1
  2227. EQ CUA1 CHECK NEXT UNIT
  2228. TITLE REQUEST PROCESSING.
  2229. CUT SPACE 4,10
  2230. ** CUT - CHECK UNIT DESCRIPTOR TABLE.
  2231. *
  2232. * CALLS GNR, GNS, GPI, MQE, PCR, PUR, SPR.
  2233.  
  2234.  
  2235. CUT SUBR ENTRY/EXIT
  2236. TA0 0,UBUF SET FIRST UDT ADDRESS
  2237. SB2 B0+ SET FIRST UDT ORDINAL
  2238. EQ CUT11 ENTER LOOP
  2239.  
  2240. * PROCESS FILE REQUEST.
  2241.  
  2242. CUT1 BX6 X3
  2243. AX3 48
  2244. SX1 X3-CIO
  2245. ZR X1,CUT2 IF *CIO* REQUEST
  2246. SX1 X3-RTF
  2247. NZ X1,CUT10 IF NOT RETURN FILE REQUEST
  2248. RJ PUR PRE-PROCESS UNIT RETURN
  2249. EQ CUT3 MAKE QUEUE ENTRY
  2250.  
  2251. CUT2 SA3 A0+UCIA
  2252. RJ PCR PRE-PROCESS *CIO* REQUEST
  2253.  
  2254. * MAKE QUEUE ENTRY.
  2255.  
  2256. CUT3 LX7 36
  2257. SX3 12
  2258. BX5 X5+X7
  2259. LX3 48
  2260. BX6 X5+X3
  2261. IX4 X5+X3
  2262. SA6 A4
  2263.  
  2264. * PROCESS STRING CALL.
  2265.  
  2266. CUT4 SA6 CUTB SAVE REQUEST
  2267. RJ GNS GET NEXT STRING ITEM
  2268. CUT5 ZR X7,CUT8 IF END OF STRING
  2269. MX0 -36
  2270. BX5 -X0*X4
  2271. SB4 X7-TPRO
  2272. SB5 X7-TPRO-TPROL
  2273. PL B4,CUT6 IF NOT FUNCTION ISSUE
  2274.  
  2275. * FUNCTION ISSUE.
  2276.  
  2277. LX7 36 POSITION FUNCTION
  2278. BX5 X7
  2279. RJ GPI GET PARAMETER
  2280. LX7 24 MERGE MODE
  2281. BX5 X5+X7
  2282. RJ GPI GET PARAMETER
  2283. BX5 X5+X7 MERGE PARAMETER
  2284. RJ GPI GET PARAMETER
  2285. LX7 12 MERGE PARAMETER
  2286. BX6 X5+X7 MAKE *1MT* REQUEST
  2287. SA6 A0+UXRQ
  2288. NZ X4,CUT10 IF PROCESSOR NOT COMPLETE
  2289. RJ GNR GET NEXT REQUEST
  2290. EQ CUT10 PROCESS NEXT UNIT
  2291.  
  2292. * CHECK FOR ROUTINE CALL.
  2293.  
  2294. CUT6 NG B5,CUT7 IF ANOTHER STRING CALLED
  2295. JP B5+TPRO+TPROL
  2296.  
  2297. CUT7 RJ MQE MAKE QUEUE ENTRY
  2298.  
  2299. * CHECK NEXT REQUEST
  2300.  
  2301. CUT8 RJ GNR GET NEXT REQUEST
  2302. CUT9 BX6 X4
  2303. NZ X4,CUT4 IF REQUEST
  2304. EQ CUT11 CHECK FOR FILE REQUEST
  2305.  
  2306. * PROCESS NEXT UNIT.
  2307.  
  2308. CUT10 SA0 A0+UNITL ADVANCE UDT ADDRESS
  2309. SB2 B2+1 ADVANCE UDT ORDINAL
  2310. CUT11 SA1 A0+UXRQ
  2311. SA4 A0+UREQ
  2312. SA3 A0+UFRQ
  2313. NG X1,CUTX IF END OF UDT
  2314. NZ X4,CUT12 IF REQUEST PROCESSOR ACTIVE
  2315. ZR X3,CUT10 IF NO FILE REQUEST
  2316. EQ CUT1 PROCESS FILE REQUEST
  2317.  
  2318. CUT12 ZR X1,CUT9 IF NO PP REQUEST
  2319. BX7 X1
  2320. AX1 48
  2321. SB7 X1-NCP
  2322. NG B7,CUT10 IF IN PROGRESS
  2323. ERRNZ NCP-RIP-1
  2324. SA7 A0+ULRQ SAVE COMPLETED REQUEST
  2325. BX6 X6-X6 CLEAR REQUEST WORD
  2326. SA6 A1
  2327. ZR B7,CUT8 IF NORMAL COMPLETION
  2328. SB7 X1-ERR
  2329. ZR B7,CUT13 IF ERROR RETURN
  2330. SX7 PDEL SET REQUEUE WITH DELAY
  2331. SX5 B0
  2332. EQ EXI4 ENTER REQUEST
  2333.  
  2334. * PROCESS ERROR RETURN.
  2335.  
  2336. CUT13 SA1 A0+UVRI
  2337. SA5 A0+UST3
  2338. SA2 A0+UST1
  2339. SX7 B0+
  2340. AX1 48
  2341. LX5 48
  2342. ZR X1,EXI3 IF UNIT NOT ASSIGNED TO JOB
  2343. LX2 59-49
  2344. AX5 48 ERROR CODE
  2345. NG X2,CUT14 IF ACS UNIT
  2346. SX2 X5-TCF
  2347. SX3 /RSX/TCF
  2348. ZR X2,CUT16 IF *TCF* ERROR
  2349. SX2 X5-BFR
  2350. SX3 /RSX/BFR
  2351. ZR X2,CUT16 IF *BFR* ERROR
  2352. SX2 X5-BFW
  2353. SX3 /RSX/BFW
  2354. ZR X2,CUT16 IF *BFW* ERROR
  2355. CUT14 SX2 X5-BEI
  2356. ZR X2,CUT15 IF *BEI* ERROR
  2357. SX2 X5-RRJ
  2358. NZ X2,CUT17 IF NOT *RRJ* ERROR
  2359. CUT15 RJ GPI CHECK FOR ERROR PROCESSOR
  2360. ZR X2,CUT17 IF NO ERROR PROCESSOR
  2361. BX6 X6-X6 CLEAR CURRENT STRING
  2362. SA6 A4
  2363. EQ CUT5 CALL ERROR PROCESSOR
  2364.  
  2365. CUT16 RJ SPR SET PREVIEW DISPLAY REQUEST
  2366. SX7 PLPD PROCESS LOAD POINT RECOVERY
  2367. EQ EXI4 ENTER NEW REQUEST
  2368.  
  2369. CUT17 SA1 A0+UTMS
  2370. SA2 A0+ULRQ
  2371. SX5 B0+ USE UDT ERROR CODE IN ABORT REQUEST
  2372. LX1 59-11
  2373. LX2 12
  2374. PL X1,ABR IF NOT TMS CONTROLLED FILE
  2375. AX2 48 LAST PP REQUEST
  2376. LX1 11-11-59+11
  2377. SX3 X2-WTF
  2378. ZR X3,CUT18 IF WRITE DATA
  2379. SX3 X2-WLA
  2380. NZ X3,ABR IF NOT WRITE LABELS
  2381. CUT18 SX0 200B
  2382. BX6 X0+X1 SET UNRECOVERED WRITE ERROR
  2383. SA6 A1
  2384. EQ ABR ABORT REQUEST
  2385.  
  2386.  
  2387. CUTB CON 0
  2388. EXI SPACE 4,10
  2389. ** EXI - COMMON EXIT POINTS.
  2390.  
  2391.  
  2392. * EXIX - EXIT TO PROCESS NEXT UNIT.
  2393. * EXIT - EXIT AND PROCESS NEXT OPERATION FOR THIS UNIT.
  2394.  
  2395. EXIX EQU CUT10 PROCESS NEXT UNIT
  2396. EXIT EQU CUT8 PROCESS NEXT REQUEST
  2397.  
  2398. * EXI1 - CLEAR CURRENT REQUEST AND ENTER NEW REQUEST.
  2399. *
  2400. * ENTRY (X5) = PARAMETERS.
  2401. * (X7) = REQUEST.
  2402.  
  2403. EXI1 BSS 0 ENTRY
  2404. SX6 B0+ CLEAR CURRENT REQUEST
  2405. SA6 A0+UREQ
  2406. NZ X7,EXI4 IF NEW REQUEST
  2407. RJ GNR GET NEXT REQUEST
  2408. EQ EXIX PROCESS NEXT UNIT
  2409.  
  2410. * EXI2 - MAKE REQUEST TO *1MT* OR *1MU*.
  2411. *
  2412. * ENTRY (X5) = MD, PA, PB PARAMETERS.
  2413. * (X7) = FUNCTION.
  2414.  
  2415. EXI2 BSS 0 ENTRY
  2416. LX7 36
  2417. BX6 X5+X7
  2418. SA6 A0+UXRQ
  2419. EQ EXIX PROCESS NEXT UNIT
  2420.  
  2421. * EXI3 - EMPTY REQUEST QUEUE AND QUEUE NEW REQUEST.
  2422. *
  2423. * ENTRY (X5) = PARAMETER.
  2424. * (X7) = REQUEST.
  2425.  
  2426. EXI3 BSS 0 ENTRY
  2427. RJ GNR GET NEXT REQUEST
  2428. BX6 X6-X6 CLEAR REQUEST
  2429. SA6 A4
  2430. NZ X4,EXI3 IF REQUEST QUEUE NOT EMPTY
  2431. * EQ EXI4 QUEUE NEW REQUEST
  2432.  
  2433. * EXI4 - QUEUE NEW REQUEST.
  2434. *
  2435. * ENTRY (X5) = PARAMETERS.
  2436. * (X7) = REQUEST.
  2437.  
  2438. EXI4 BSS 0 ENTRY
  2439. ZR X7,EXIX IF NO REQUEST
  2440. RJ MQE
  2441. EQ EXIT PROCESS NEXT REQUEST
  2442.  
  2443. * EXI5 - REQUEUE OPERATION.
  2444.  
  2445. EXI5 BSS 0 ENTRY
  2446. SA1 CUTB
  2447. BX6 X1
  2448. SA6 A0+UREQ
  2449. EQ EXIX PROCESS NEXT UNIT
  2450. TITLE REQUEST PROCESSORS.
  2451. SPACE 4,10
  2452. ** REQUEST PROCESSOR REGISTER CONVENTIONS.
  2453. * UNLESS OTHERWISE DOCUMENTED ALL ROUTINES EXPECT THE FOLLOWING
  2454. * ENTRY CONDITIONS AND WILL EXIT WITH THESE REGISTERS
  2455. * UNCHANGED.
  2456. *
  2457. * ENTRY (A0) = FWA OF UDT.
  2458. * (B2) = UDT ORDINAL.
  2459. * (X5) = CIO INTERNAL REQUEST IF FIRST STRING PROCESSOR.
  2460. CAT SPACE 4,10
  2461. ** CAT - CHECK STATISTICAL ACCUMULATOR THESHOLDS.
  2462.  
  2463.  
  2464. CAT BSS 0 ENTRY
  2465. SA1 A0+UERC GET RECOVERED ERROR COUNTS
  2466. SA2 CATA
  2467. SA3 A0+UBLC GET BLOCKS TRANSFERRED COUNTS
  2468. SA4 CATB
  2469. BX1 X2*X1
  2470. BX3 X4*X3
  2471. IX1 X1+X3
  2472. ZR X1,EXIT IF NO ACCUMULATOR THRESHOLDS REACHED
  2473. SX7 PLAC LOG ACCUMULATORS
  2474. EQ EXI4 QUEUE NEW REQUEST
  2475.  
  2476.  
  2477. CATA CON 77700077700000777000B *UERC* THRESHOLDS MASK
  2478. CATB CON 77770000777700000000B *UBLC* THRESHOLDS MASK
  2479. CCR SPACE 4,10
  2480. ** CCR - CHECK IF CLOSER/RETURN.
  2481.  
  2482.  
  2483. CCR BSS 0 ENTRY
  2484. SA1 A0+UCIB CHECK EXTERNAL *CIO* REQUEST
  2485. SX2 774B
  2486. LX1 12
  2487. BX2 X2*X1
  2488. SX2 X2-374B
  2489. NZ X2,EXIT IF NOT CLOSER/RETURN
  2490. SX5 1 SET FET COMPLETION CODE
  2491. SX7 PFET
  2492. EQ EXI3 CLEAR QUEUE AND MAKE NEW REQUEST
  2493. CCS SPACE 4,10
  2494. ** CCS - CHECK IF LABEL CHECKING COMPLETE.
  2495.  
  2496.  
  2497. CCS BSS 0 ENTRY
  2498. SA1 A0+UVSN
  2499. BX5 X5-X5
  2500. LX1 59-23
  2501. ZR X1,CCS1 IF NO LABEL READ
  2502. PL X1,EXIX IF LABEL CHECK COMPLETE
  2503. CCS1 SX7 PILA
  2504. EQ EXI1 RESTART INITIAL LABEL CHECK
  2505. CEF SPACE 4,10
  2506. ** CEF - CHECK ERROR FLAG.
  2507. *
  2508. * THE REQUEST QUEUE WILL BE CLEARED IF AN APPROPRIATE ERROR
  2509. * FLAG IS SET AND A *CIO* REQUEST IS IN PROGRESS.
  2510.  
  2511.  
  2512. CEF BSS 0 ENTRY
  2513. SA1 A0+UFRQ
  2514. AX1 48
  2515. SX7 B0 SET NO NEW REQUEST
  2516. SX1 X1-CIO
  2517. ZR X1,EXIT IF *CIO* REQUEST
  2518. EQ EXI1 CLEAR CURRENT REQUEST
  2519.  
  2520. * REENTRY TO CHECK REQUEST STATUS.
  2521. * THE PREVIEW DISPLAY MESSAGE FLAG IS CLEARED TO INSURE THAT
  2522. * OPERATOR COMMANDS WHICH COULD MODIFY THE UDT ARE NOT
  2523. * PROCESSED WHILE THE *1MU* *MAB* FUNCTION IS EXECUTING.
  2524.  
  2525. CEF1 BSS 0 ENTRY
  2526. SA1 A0+ULRQ
  2527. SA2 A0+UVRI
  2528. MX6 -12
  2529. MX7 59
  2530. BX6 -X6*X1
  2531. BX7 X7*X2
  2532. ZR X6,EXIX IF NOT TO ABORT REQUEST
  2533. SA7 A2+ CLEAR MESSAGE FLAG
  2534. SX5 EFT SET ERROR FLAG TERMINATION
  2535. EQ ABR ABORT REQUEST
  2536. CER SPACE 4,10
  2537. ** CER - CLEAR END OF REEL FLAGS AND ADVANCE SECTION.
  2538. *
  2539. * THE SECTION NUMBER MUST BE ADVANCED WHEN THE END OF REEL
  2540. * FLAGS ARE CLEARED SO THAT REQUEST ABORT PROCESSING WILL WORK
  2541. * PROPERLY. SEE *1MU* *MAB* FUNCTION.
  2542.  
  2543.  
  2544. CER BSS 0
  2545. SA1 A0+UVRI
  2546. SA2 A0+UFSN
  2547. SX6 16B
  2548. SX7 1
  2549. BX6 -X6*X1 CLEAR END OF REEL FLAGS
  2550. IX7 X2+X7 INCREMENT SECTION NUMBER
  2551. SA6 A1
  2552. SA7 A2
  2553. EQ EXIT PROCESS NEXT REQUEST
  2554. CET SPACE 4,10
  2555. ** CET - CHECK END OF TAPE TYPE AND DETERMINE TYPE OF BACKSPACE
  2556. * TO DO.
  2557.  
  2558.  
  2559. CET BSS 0 ENTRY
  2560. SA1 A0+UST4
  2561. SX2 3
  2562. SX7 RLA
  2563. SA5 =210000010300B
  2564. LX1 -46
  2565. BX3 X2*X1
  2566. SB3 X3
  2567. SX6 B1
  2568. ZR B3,EXI2 IF READ TO TAPE MARK
  2569. LX6 12
  2570. BX5 -X6*X5
  2571. EQ EXI2 ENTER *1MT* REQUEST
  2572. CEV SPACE 4,10
  2573. ** CEV - CHECK END OF VOLUME.
  2574. * (PA) FROM LAST REQUEST = 4XXX IF *EOV1* ENCOUNTERED.
  2575.  
  2576.  
  2577. CEV BSS 0 ENTRY
  2578. SA1 A0+ULRQ CHECK IF *EOV1* ENCOUNTERED
  2579. LX1 59-23
  2580. PL X1,EXIT IF NOT REEL SWAP
  2581. SX7 PMFV
  2582. EQ EXI3 CLEAR REQUEST QUEUE AND ENTER NEW REQUEST
  2583. CFP SPACE 4,10
  2584. ** CFP - CHECK FILE POSITION.
  2585. * IF POSITIONED AT END OF SET AND POSMF *9999* FUNCTION,
  2586. * THEN WRITE MULTI FILE LABEL.
  2587.  
  2588.  
  2589. CFP BSS 0 ENTRY
  2590. SA1 A0+ULRQ CHECK IF EOI
  2591. SX7 PWFL SET TO WRITE MULTI-FILE LABEL
  2592. SA3 A0+UST2 CHECK FOR MULTI-FILE MISSING
  2593. SX2 7000B
  2594. LX3 59-6
  2595. BX4 X2*X1
  2596. NG X3,CFP2 IF MULTI-FILE NOT FOUND
  2597. NZ X4,CFP1 IF END OF TAPE AND USER PROCESSING SET
  2598. LX1 36
  2599. AX1 48
  2600. ZR X1,EXI4 IF END OF SET AND POSMF *9999*
  2601. SX7 PPEI CONTINUE SKIP
  2602. EQ EXI4 QUEUE NEW REQUEST
  2603.  
  2604. CFP1 SX7 PEOI SET TO COMPLETE FET
  2605. EQ EXI3 CLEAR REQUEST QUEUE AND ENTER NEW REQUEST
  2606.  
  2607. CFP2 SX7 PRES SET TO REPOSITION PRIOR TO END OF SET
  2608. EQ EXI3 CLEAR REQUEST QUEUE AND QUEUE NEW REQUEST
  2609. CIL SPACE 4,10
  2610. ** CIL - COMPLETE INITIAL LABEL CHECK.
  2611.  
  2612.  
  2613. CIL BSS 0 ENTRY
  2614. SA1 A0+UST1
  2615. SA3 A0+UMST
  2616. MX6 -2
  2617. LX1 59-49
  2618. PL X1,CIL1 IF NOT ACS UNIT
  2619. BX6 -X6*X3 MOUNT STATUS FLAGS
  2620. SX7 X6-2
  2621. ZR X7,CIL1 IF MOUNT COMPLETE
  2622. NZ X6,EXI5 IF MOUNT OR DISMOUNT OPERATION IN PROGRESS
  2623. MX6 57
  2624. SX2 2
  2625. BX3 X6*X3 CLEAR STATUS FLAGS
  2626. BX6 X3+X2 SET MOUNTED STATUS
  2627. SX5 B0
  2628. SA6 A3
  2629. SX7 PULR UNLOAD UNIT NOT MOUNTED FROM THIS SYSTEM
  2630. EQ EXI3 CLEAR QUEUE AND MAKE NEW REQUEST
  2631.  
  2632. CIL1 SA1 RTIM
  2633. SA2 A0+UTIM
  2634. MX6 24
  2635. BX1 X6*X1
  2636. BX2 -X6*X2
  2637. BX6 X1+X2 SET LABELS READ TIME
  2638. SA6 A2
  2639. EQ EXIT EXIT
  2640. CLR SPACE 4,10
  2641. ** CLR - CHECK IF LABEL READ.
  2642. * (PA) FROM LAST REQUEST = 74 IF LABEL NOT READ.
  2643.  
  2644.  
  2645. CLR BSS 0 ENTRY
  2646. SA1 A0+ULRQ
  2647. SX7 PPNB SET TO SKIP TO END OF LABEL BLOCK
  2648. LX1 36
  2649. AX1 48
  2650. ZR X1,EXI4 IF LABELS READ
  2651. SX7 PSKT CONTINUE TO SKIP DATA
  2652. EQ EXI4 QUEUE NEW REQUEST
  2653. CLM SPACE 4,10
  2654. ** CLM - CHECK LABEL MATCH.
  2655.  
  2656.  
  2657. CLM BSS 0 ENTRY
  2658. SX7 PPEI SEARCH FOR CORRECT FILE SET
  2659. SA2 A0+UCIB CHECK IF POSMF
  2660. AX2 50
  2661. MX3 -8
  2662. BX2 -X3*X2
  2663. SX2 X2-22B
  2664. ZR X2,EXI4 IF POSMF
  2665. SX7 PNLB PROCESS NORMAL ERROR
  2666. EQ EXI4 QUEUE NEW REQUEST
  2667. CLO SPACE 4,10
  2668. ** CLO - *CLOSE*/*CLOSER* PROCESSOR.
  2669.  
  2670.  
  2671. CLO BSS 0 ENTRY
  2672. SA1 A0+UST2
  2673. SA2 A0+UCIB
  2674. LX1 59-4
  2675. LX2 59-55
  2676. PL X1,CLO1 IF LAST OPERATION NOT WRITE
  2677. SX7 PCWT WRITE EOF1 LABEL
  2678. PL X2,EXI4 IF NOT CLOSE REEL
  2679. SX7 PCLR WRITE EOV1
  2680. EQ EXI4 QUEUE NEW REQUEST
  2681.  
  2682. CLO1 SA1 A0+UST4
  2683. BX3 X2
  2684. LX1 59-58
  2685. LX2 55-41
  2686. BX2 X1*X2
  2687. NG X2,CLO2 IF LABELED TAPE AND XL BIT SET
  2688. SX7 PCLO SET TO CLOSE FILE
  2689. PL X3,EXI4 IF NOT CLOSE REEL
  2690. SX7 PERP PROCESS END OF TAPE
  2691. EQ EXI4 QUEUE NEW REQUEST
  2692.  
  2693. CLO2 SX7 PCLL SET TO PROCESS CLOSE AND RETURN LABELS
  2694. PL X3,EXI4 IF NOT CLOSE REEL
  2695. SX7 PERT PROCESS END OF TAPE AND RETURN LABELS
  2696. EQ EXI4 QUEUE NEW REQUEST
  2697.  
  2698. * CHECK FOR REWIND AFTER CLOSE OPERATION.
  2699.  
  2700. CLO3 BSS 0 ENTRY
  2701. LX5 59-35
  2702. PL X5,EXIT IF NOT REWIND
  2703. BX5 X5-X5
  2704. SX7 PRWC REWIND CURRENT REEL AND SET REWIND FLAG
  2705. EQ EXI4 QUEUE NEW REQUEST
  2706. CNR SPACE 4,10
  2707. ** CNR - CHECK NEXT REEL.
  2708.  
  2709.  
  2710. CNR BSS 0 ENTRY
  2711. SA1 A0+UST1
  2712. LX1 59-49
  2713. PL X1,CNR6 IF NOT ACS UNIT
  2714.  
  2715. * LOCATE ACS VSN.
  2716.  
  2717. SA1 A0+UESN REQUIRED VSN
  2718. RJ FAV FIND ACS VSN
  2719. SA4 A0+UMST GET CURRENT UNIT MOUNT STATUS
  2720. MX6 -2
  2721. BX6 -X6*X4
  2722. SB5 X6-1 CURRENT UNIT MOUNT STATUS - 1
  2723. ZR B3,CNR3 IF VSN NOT FOUND
  2724. NG B3,CNR2 IF ERROR ON VSN
  2725. SX6 A0-B3
  2726. SB4 X7-1
  2727. EQ B4,B1,CNR1 IF VSN MOUNTED
  2728. GT B4,B1,CNR10 IF DISMOUNT IN PROGRESS
  2729. ZR X6,CNR10 IF MOUNT IN PROGRESS ON CURRENT UNIT
  2730. NZ X3,CNR5 IF MOUNT IN PROGRESS ON ASSIGNED UNIT
  2731. EQ CNR10 WAIT FOR MOUNT COMPLETE
  2732.  
  2733. * VSN MOUNTED.
  2734.  
  2735. CNR1 ZR X6,CNR7 IF MOUNTED ON CURRENT UNIT
  2736. NZ X3,CNR5 IF MOUNTED ON ASSIGNED UNIT
  2737. EQ B5,B1,CNR5 IF CURRENT UNIT MOUNTED
  2738. SA1 B3+UVSN
  2739. SA2 B3+UREQ
  2740. ZR X1,CNR10 IF INITIAL LABEL CHECK NOT PERFORMED
  2741. LX1 59-23
  2742. NZ X2,CNR10 IF PROCESSOR ACTIVE
  2743. NG X1,CNR10 IF LABEL CHECK IN PROGRESS
  2744. EQ CNR8 INITIATE UNIT SWAP
  2745.  
  2746. * VSN FOUND IN ERROR TABLE.
  2747.  
  2748. CNR2 ZR X3,CNR5 IF TRANSIENT ERROR
  2749. RJ SPR SET PREVIEW DISPLAY REQUEST
  2750. EQ CNR5 DELAY FOR RETRY OF MOUNT
  2751.  
  2752. * VSN NOT FOUND.
  2753.  
  2754. CNR3 ZR B6,CNR4 IF ALTERNATE UNIT NOT AVAILABLE
  2755. RJ MAV MOUNT ON ALTERNATE UNIT
  2756. EQ CNR10 WAIT FOR MOUNT COMPLETE
  2757.  
  2758. CNR4 PL B5,CNR5 IF CURRENT UNIT NOT DISMOUNTED
  2759. LX4 59-2
  2760. SB6 A0 SET CURRENT UNIT
  2761. NG X4,CNR10 IF CONTROL PATH ERROR ON CURRENT UNIT
  2762. RJ MAV MOUNT ON CURRENT UNIT
  2763. EQ CNR10 WAIT FOR MOUNT COMPLETE
  2764.  
  2765. * UNLOAD AND DISMOUNT CURRENT UNIT.
  2766.  
  2767. CNR5 NE B5,B1,CNR10 IF CURRENT UNIT NOT MOUNTED
  2768. SX7 PRUL UNLOAD UNIT
  2769. EQ EXI1 CLEAR CURRENT REQUEST AND ENTER NEW
  2770.  
  2771. * PROCESS NON-ACS UNIT.
  2772.  
  2773. CNR6 RJ FNR FIND NEXT REEL
  2774. NE B3,B4,CNR8 IF UNIT SWAP POSSIBLE
  2775.  
  2776. * CHECK LABELS ON CURRENT UNIT IF READY.
  2777.  
  2778. CNR7 SA1 A0+UST1
  2779. LX1 59-0
  2780. SX5 B0
  2781. PL X1,CNR10 IF UNIT NOT READY
  2782. SX7 PCHR SET TO CHECK NEXT REEL
  2783. EQ EXI1 CLEAR CURRENT AND MAKE NEW REQUEST
  2784.  
  2785. * PERFORM UNIT SWAP IF JOB IS AT A CONTROL POINT.
  2786.  
  2787. CNR8 SA1 ACCU GET UNIT ACCESSIBILITY
  2788. SA2 JBRO GET *1MU* JOB STATUS
  2789. SA3 A0+UST1 GET *1MT* JOB STATUS
  2790. LX1 B2
  2791. LX2 B2
  2792. PL X1,CNR9 IF CURRENT UNIT NOT ACCESSIBLE
  2793. LX3 59-48
  2794. BX2 X2*X3 COMBINE *1MT* AND *1MU* JOB STATUS
  2795. CNR9 NG X2,CNR10 IF JOB ROLLED OUT
  2796. SA1 B3+UVRI
  2797. SX6 B1
  2798. LX6 47-0
  2799. SX5 B3 NEW UDT ADDRESS
  2800. BX6 X1+X6 SET UNIT SWAP FLAG IN NEW UDT
  2801. SX7 PUSP INITIATE UNIT SWAP
  2802. SA6 A1+
  2803. EQ EXI1 CLEAR CURRENT AND ENTER NEW REQUEST
  2804.  
  2805. * CHECK ERROR FLAG AND RESTART PROCESSING IF NOT 8 SECONDS
  2806. * ELAPSED.
  2807.  
  2808. CNR10 SA2 ITIM
  2809. SX5 B0
  2810. LX2 59-3
  2811. PL X2,EXI5 IF NOT 8 SECONDS, REENTER
  2812. SX7 PCNR START OVER AND CHECK ERROR FLAG
  2813. EQ EXI1 CLEAR CURRENT REQUEST, QUEUE NEW REQUEST
  2814. CNV SPACE 4,10
  2815. ** CNV - CHECK NEXT VSN SPECIFIED.
  2816.  
  2817.  
  2818. CNV BSS 0 ENTRY
  2819. SA1 A0+UESN
  2820. MX6 36
  2821. BX6 X6*X1
  2822. NZ X6,EXIT IF NEXT VSN SPECIFIED
  2823. SX3 /RSX/NTV SET NEXT VSN PROMPT
  2824. RJ SPR SET PREVIEW DISPLAY REQUEST
  2825. SX7 PWNV REQUEST OPERATOR SPECIFICATION OF VSN
  2826. SX5 B0+
  2827. EQ EXI4 MAKE REQUEST
  2828. CPT SPACE 4,10
  2829. ** CPT - CHECK *POSMF* TYPE.
  2830.  
  2831.  
  2832. CPT BSS 0 ENTRY
  2833. SA1 A0+UST2
  2834. LX1 59-1
  2835. PL X1,EXIT IF NOT *POSMF 9999*
  2836. SX7 PPEI CONTINUE POSITIONING
  2837. EQ EXI3 CLEAR QUEUE AND ENTER NEW REQUEST
  2838. CRA SPACE 4,10
  2839. ** CRA - CHECK REEL ASSIGNED.
  2840.  
  2841.  
  2842. CRA BSS 0 ENTRY
  2843. SA1 A0+UVRI
  2844. SX6 B1
  2845. LX6 4-0
  2846. BX2 X6*X1
  2847. ZR X2,EXIT IF REEL NOT ASSIGNED
  2848. BX6 -X6*X1 CLEAR REEL ASSIGNED
  2849. SX7 AFN SET REQUEST CODE
  2850. SA6 A1+
  2851. SX5 AFRR SET FUNCTION CODE
  2852. EQ EXI2 CALL *1MU* TO ISSUE REEL RETURN MESSAGES
  2853. CRC SPACE 4,10
  2854. ** CRC - CHECK IF REEL CHECK COMPLETE.
  2855.  
  2856.  
  2857. CRC BSS 0 ENTRY
  2858. SA1 A0+UVSN
  2859. SX5 B0
  2860. LX1 59-23
  2861. PL X1,EXIT IF REEL CHECK COMPLETE
  2862. SX7 PCHR
  2863. EQ EXI1 RESTART REEL CHECK
  2864. CRF SPACE 4,10
  2865. ** CRF - CLEAR REWIND BEFORE OPERATION FLAG.
  2866.  
  2867.  
  2868. CRF BSS 0 ENTRY
  2869. SA1 A0+UST2
  2870. SX6 4000B
  2871. BX6 -X6*X1 CLEAR REWIND FLAG
  2872. SA6 A1
  2873. EQ EXIT PROCESS NEXT REQUEST
  2874. CRK SPACE 4,10
  2875. ** CRK - CHECK IF SKIP REQUIRED FOR *READSKP*.
  2876. *
  2877. * ENTRY (ULRQ, 12-0) = 0 IF TAPE MARK OR END OF TAPE.
  2878. * (ULRQ, 12-0) = 4 IF RECORD SKIP REQUIRED.
  2879. * (ULRQ, 12-0) = 10 IF FILE SKIP REQUIRED.
  2880.  
  2881.  
  2882. CRK BSS 0 ENTRY
  2883. SA1 A0+ULRQ CHECK RESPONSE TO LAST REQUEST
  2884. MX0 -12
  2885. BX2 -X0*X1
  2886. SX7 PEOT SET TO CHECK END OF TAPE
  2887. ZR X2,EXI4 IF CHECK END OF TAPE
  2888. BX5 X2 SET TO SKIP RECORD/FILE
  2889. SX7 PSKK PERFORM SKIP
  2890. LX5 24 POSITION RECORD/FILE FLAG
  2891. EQ EXI4 QUEUE NEW REQUEST
  2892. CRS SPACE 4,10
  2893. ** CRS - CHECK REQUEST STATUS.
  2894. *
  2895. * IF AN ERROR CONDITION IS ENCOUNTERED WHEN NO *CIO* REQUEST IS
  2896. * IN PROGRESS, THE MESSAGE WILL BE HELD AND ISSUED ON THE NEXT
  2897. * *CIO* CALL.
  2898.  
  2899.  
  2900. CRS BSS 0 ENTRY
  2901. SA1 A0+UFRQ CHECK IF CIO REQUEST IN PROGRESS
  2902. AX1 48
  2903. SX6 X1-CIO
  2904. NZ X6,CRS1 IF NO *CIO* REQUEST IN PROGRESS
  2905. SX7 MAB ISSUE MESSAGE
  2906. EQ EXI2 MAKE *1MU* REQUEST
  2907.  
  2908. CRS1 SX6 X1-RTF
  2909. NZ X6,EXI5 IF NO FILE RETURN REQUEST
  2910. EQ EXIT SKIP ISSUE OF MESSAGE
  2911. CRW SPACE 4,10
  2912. ** CRW - CHECK IF REWIND AFTER *POSMF*.
  2913. * PERFORMED IF AT FIRST LABEL GROUP OF CURRENT REEL.
  2914. * (PA) FROM LAST REQUEST = 4XXX IF REWIND REQUIRED.
  2915.  
  2916.  
  2917. CRW BSS 0 ENTRY
  2918. SA1 A0+ULRQ
  2919. BX5 X5-X5
  2920. ERRNZ FNRW
  2921. LX1 59-23
  2922. PL X1,EXIT IF NOT AT FIRST LABEL GROUP
  2923. SX7 FNH REWIND TO BOI
  2924. EQ EXI2 ENTER *1MT* REQUEST
  2925. CUR SPACE 4,10
  2926. ** CUR - CHECK UNLOAD REQUIRED ON UNIT RETURN.
  2927.  
  2928.  
  2929. CUR BSS 0 ENTRY
  2930. SA1 A0+UST1
  2931. SA2 A0+UST2
  2932. SA4 A0+UST4
  2933. LX1 59-49
  2934. LX2 59-5
  2935. LX4 59-41
  2936. BX1 X1+X2
  2937. SX5 B0+
  2938. SX7 PUNL SET UNLOAD
  2939. NG X1,EXI4 IF ACS UNIT OR FILE POSITION INDETERMINATE
  2940. PL X4,EXI4 IF NOT INHIBIT UNLOAD
  2941. SX7 PREW SET REWIND
  2942. EQ EXI4 ENTER REQUEST
  2943. CVS SPACE 4,10
  2944. ** CVS - CLEAR VSN.
  2945.  
  2946.  
  2947. CVS BSS 0 ENTRY
  2948. SX6 B0+
  2949. SA6 A0+UVSN
  2950. EQ EXIT PROCESS NEXT REQUEST
  2951. CWC SPACE 4,10
  2952. ** CWC - CHECK IF WRITE WAS COMPLETE.
  2953.  
  2954.  
  2955. CWC BSS 0 ENTRY
  2956. SA1 A0+ULRQ
  2957. SX2 14B
  2958. LX2 24
  2959. BX3 X2*X1
  2960. SX7 PWTI SET WRITE INCOMPLETE
  2961. ZR X3,EXI3 IF NOT EOR/EOF WRITE REQUEST
  2962. LX1 59-32 CHECK BIT 8 OF *MD*
  2963. PL X1,EXI3 IF NOT EOR/EOF WRITTEN THIS OPERATION
  2964. SX7 PWTC WRITE COMPLETE
  2965. EQ EXI3 CLEAR REQUEST QUEUE AND ENTER NEW REQUEST
  2966. CWL SPACE 4,10
  2967. ** CWL - CHECK WRITE FROM LOAD POINT.
  2968. *
  2969. * IF WRITE FROM LOAD POINT ON THE FIRST REEL, SET THE DENSITY
  2970. * AND CONVERSION MODE FROM THE TAPE REQUEST PARAMETERS.
  2971.  
  2972.  
  2973. CWL BSS 0 ENTRY
  2974. SA1 A0+UST1
  2975. SA2 A0+UVRI
  2976. MX0 -12
  2977. LX1 59-1
  2978. LX0 12
  2979. NG X1,EXI5 IF UNIT BUSY
  2980. BX2 -X0*X2
  2981. LX1 59-2-59+1
  2982. PL X1,EXIT IF NOT AT LOAD POINT
  2983. NZ X2,EXIT IF NOT FIRST REEL
  2984. SA1 A0+UST4
  2985. SA2 A0+UST5
  2986. MX0 -6
  2987. LX0 48
  2988. BX1 -X0*X1 REQUESTED DENSITY AND CONVERSION MODE
  2989. BX2 X0*X2
  2990. BX6 X2+X1 UPDATE DENSITY AND CONVERSION MODE
  2991. SA6 A2
  2992. SX7 PDEN SET DENSITY REQUEST
  2993. EQ EXI4 QUEUE REQUEST
  2994. CWR SPACE 4,10
  2995. ** CWR - CHECK WRITE.
  2996. * IF LAST OPERATION ON THE TAPE WAS A WRITE, A TRAILER LABEL
  2997. * SEQUENCE WILL BE PERFORMED.
  2998.  
  2999.  
  3000. CWR BSS 0 ENTRY
  3001. SA1 A0+UST2
  3002. LX1 59-4
  3003. PL X1,EXIT IF NOT WRITE
  3004. SX7 PWTL WRITE TRAILER LABEL
  3005. EQ EXI4 QUEUE NEW REQUEST
  3006. CUP SPACE 4,10
  3007. ** CUP - CHECK IF UP SELECTED ON END OF REEL.
  3008.  
  3009.  
  3010. CUP BSS 0 ENTRY
  3011. SA1 A0+UCIB
  3012. SX2 774B
  3013. LX1 59-45
  3014. PL X1,EXIT IF NOT USER PROCESSING
  3015. LX1 60+45-47
  3016. BX2 X2*X1
  3017. SX5 X2+2000B MERGE END OF REEL STATUS
  3018. SX7 PFET
  3019. EQ EXI3 CLEAR QUEUE AND MAKE NEW REQUEST
  3020. DRT SPACE 4,10
  3021. ** DRT - DETERMINE REQUEUE TYPE.
  3022.  
  3023.  
  3024. DRT BSS 0 ENTRY
  3025. SA1 A0+ULRQ
  3026. SA2 A0+UFLA
  3027. MX6 -48
  3028. BX3 -X6*X1
  3029. BX6 X6*X2
  3030. AX1 48
  3031. BX6 X3+X6
  3032. SX4 X1-RJB
  3033. SA6 A2 SAVE LAST PP REQUEST
  3034. SX5 B0+
  3035. SX7 PJOB
  3036. ZR X4,EXI4 IF WAIT FOR JOB ROLLIN
  3037. SX4 X1-RBS
  3038. SX7 PWNB
  3039. ZR X4,EXI4 IF WAIT FOR NOT BUSY
  3040. SX4 X1-RAC
  3041. SX7 PWAC
  3042. ZR X4,EXI4 IF WAIT FOR UNIT ACCESSIBLE
  3043. ERRNZ RDL-6
  3044. SX7 PWTD
  3045. EQ EXI4 WAIT FOR TIME DELAY
  3046. DMA SPACE 4,10
  3047. ** DMA - DISMOUNT ACS UNIT.
  3048.  
  3049.  
  3050. DMA BSS 0 ENTRY
  3051. SA1 A0+UST1
  3052. LX1 59-49
  3053. PL X1,EXIT IF NOT ACS UNIT
  3054. RJ DAU DISMOUNT ACS UNIT
  3055. EQ EXIT EXIT
  3056. DUC SPACE 4,10
  3057. ** DUC - DECREMENT ASSIGNED UNIT COUNT.
  3058.  
  3059.  
  3060. DUC BSS 0 ENTRY
  3061. SA1 NTAS DECREMENT UNITS ASSIGNED
  3062. SX6 X1-1
  3063. SA6 A1
  3064. EQ EXIT EXIT
  3065. EOI SPACE 4,10
  3066. ** EOI - CHECK IF EOF OR EOI RETURNED ON LABEL CHECK.
  3067. * THE TAPE FORMAT DETERMINES EOF OR EOI. WHENEVER AN EOI
  3068. * IS ENCOUNTERED, THE TAPE WILL BE REPOSITIONED PRIOR TO
  3069. * THE EOI SO THAT ADDITIONAL READS WILL CONTINUE TO RETURN EOI.
  3070.  
  3071.  
  3072. EOI BSS 0 ENTRY
  3073. SA1 A0+ULRQ
  3074. SX2 7000B
  3075. BX3 X2*X1
  3076. NZ X3,EXIT IF EOI OR END OF REEL RETURNED
  3077. SX7 PEOF
  3078. EQ EXI1 CLEAR CURRENT REQUEST, QUEUE NEW REQUEST
  3079. FET SPACE 4,10
  3080. ** FET - SET FET COMPLETE.
  3081.  
  3082.  
  3083. * SET FET COMPLETION STATUS FROM LAST REQUEST.
  3084.  
  3085. FET BSS 0 ENTRY
  3086. SA1 A0+ULRQ GET RETURNED STATUS
  3087. MX2 -24
  3088. BX5 -X2*X1
  3089. EQ FET2 CHECK ERROR FLAG
  3090.  
  3091. * COMPLETE USER-S FET.
  3092.  
  3093. FET1 BSS 0 ENTRY
  3094. SX5 1
  3095. * EQ FET2 CHECK ERROR FLAG
  3096.  
  3097. * SET FET COMPLETION STATUS FROM (X5).
  3098.  
  3099. FET2 BSS 0 ENTRY
  3100. SA1 A0+UFRQ
  3101. AX1 48
  3102. SX1 X1-CIO
  3103. SX7 CUF
  3104. NZ X1,EXIT IF NO *CIO* REQUEST
  3105. EQ EXI2 ENTER *1MU* REQUEST
  3106. FRE SPACE 4,10
  3107. ** FRE - FLAG ROLLIN EVENT IF UNIT NOT ASSIGNED.
  3108. *
  3109. * EXIT (ROLF) NONZERO IF ALTERNATE STORAGE ACTIVE.
  3110. * TO *EXIT*.
  3111.  
  3112.  
  3113. FRE BSS 0 ENTRY
  3114. SA1 TAJP
  3115. ZR X1,EXIT IF TAPE ALTERNATE STORAGE NOT ACTIVE
  3116. SX6 B1+
  3117. SA6 /STAGE/ROLF
  3118. EQ EXIT EXIT
  3119. HNG SPACE 4,10
  3120. ** HNG - HANG UNIT.
  3121.  
  3122.  
  3123. HNG BSS 0 ENTRY
  3124. EQ EXIX PROCESS NEXT UNIT
  3125. IOR SPACE 4,10
  3126. ** IOR - I/O REQUEST PROCESSOR.
  3127. * SETS MODE FROM CODED BIT IN REQUEST OR FROM THE INTERNAL
  3128. * MODE DEPENDING ON THE FORMAT.
  3129. *
  3130. * ENTRY (X7) = FUNCTION CODE.
  3131.  
  3132.  
  3133. IOR BSS 0 ENTRY
  3134. SA2 A0+UST4
  3135. SA1 A0+UST2
  3136. LX2 24
  3137. AX2 54
  3138. SB5 TFSI
  3139. SB7 X2+ FORMAT
  3140. SB6 B7-TFS
  3141. EQ B5,B7,IOR1 IF SI FORMAT
  3142. NG B6,IOR2 IF NOT S FORMAT
  3143. GT B6,B1,IOR2 IF NOT S OR L FORMAT
  3144. IOR1 SA2 A0+UCIB POSITION CODED BIT
  3145. LX2 59-49+1
  3146. BX1 -X2
  3147. IOR2 SX2 B1 EXTRACT CODED BIT
  3148. BX3 X2*X1
  3149. LX3 30
  3150. BX5 X5+X3 MERGE CODED BIT
  3151. EQ EXI2 ENTER *1MT* REQUEST
  3152. JOB SPACE 4,10
  3153. ** JOB - JOB ROLLED OUT PROCESSOR.
  3154.  
  3155.  
  3156. JOB BSS 0 ENTRY
  3157. SA1 ACCU GET UNIT ACCESSIBILITY
  3158. SA2 JBRO GET *1MU* JOB STATUS
  3159. SA3 A0+UST1 GET *1MT* JOB STATUS
  3160. LX1 B2
  3161. LX2 B2
  3162. PL X1,JOB1 IF UNIT NOT ACCESSIBLE
  3163. LX3 59-48
  3164. BX2 X2*X3 COMBINE *1MT* AND *1MU* JOB STATUS
  3165. JOB1 NG X2,EXI5 IF JOB ROLLED OUT
  3166. EQ EXIT PROCESS NEXT REQUEST
  3167. LAB SPACE 4,10
  3168. ** LAB - SKIP OVER LABEL.
  3169.  
  3170.  
  3171. LAB BSS 0 ENTRY
  3172. SX7 PSLA SET TO SKIP LABELS
  3173. EQ LAB3 CHECK LABELS TO BE UPDATED
  3174.  
  3175. LAB1 BSS 0 ENTRY
  3176. SX7 PWHD WRITE VOLUME LABEL
  3177. LAB2 SA1 A0+UST1
  3178. SA2 A0+UGNU
  3179. MX6 48
  3180. LX6 36
  3181. LX1 12
  3182. BX2 X6*X2
  3183. BX6 -X6*X1 EST ORDINAL
  3184. BX6 X2+X6 SET EST ORDINAL WRITTEN ON
  3185. SA6 A2+
  3186. LAB3 SA1 A0+UST2
  3187. MX2 24
  3188. LX2 -24
  3189. BX5 X2*X1
  3190. NZ X5,EXIT IF NONZERO BLOCK COUNT
  3191. SA2 A0+UST1
  3192. SA1 A0+UST4
  3193. LX2 59-1
  3194. LX1 59-58
  3195. NG X2,EXI5 IF BUSY
  3196. LX2 59-2-59+1+60
  3197. PL X2,EXIT IF NOT AT LOAD POINT
  3198. NG X1,EXI4 IF LABELED AND LOAD POINT
  3199. SX7 X7-PSLA
  3200. ZR X7,EXIT IF A READ OPERATION
  3201. SX7 PCWL CHECK UNLABELED WRITE FROM LOAD POINT
  3202. EQ EXI4 QUEUE REQUEST
  3203.  
  3204. LAB4 BSS 0 ENTRY
  3205. SX7 PWHR WRITE *VOL1* AND *HDR1* AFTER REEL SWAP
  3206. EQ LAB2 CHECK LABELS TO BE UPDATED
  3207. LPD SPACE 4,10
  3208. ** LPD - DELAY UNTIL JOB DROPPED OR *RETRY* COMMAND ENTERED.
  3209. *
  3210. * THIS ROUTINE IS EXECUTED IN RESPONSE TO A LOAD POINT ERROR.
  3211. * THE REQUEST THAT WAS ISSUED WHEN THE ERROR OCCURRED IS
  3212. * SAVED. THE OPERATOR MUST TRY TO FIX THE LOAD POINT PROBLEM
  3213. * AND ENTER THE *RETRY* COMMAND (MEANING THAT THE
  3214. * REQUEST SHOULD BE RETRIED) OR ENTER THE *TERMINATE*
  3215. * COMMAND (MEANING THAT THE PROBLEM CANNOT BE FIXED
  3216. * AT THIS TIME).
  3217.  
  3218.  
  3219. LPD BSS 0 ENTRY
  3220. SA1 A0+ULRQ SAVE LAST 1MT REQUEST
  3221. SA2 A0+UFLA
  3222. MX3 -48
  3223. BX4 -X3*X1
  3224. BX6 X3*X2
  3225. BX7 X4+X6
  3226. SA7 A2+
  3227. LPD1 SX7 PWOP WAIT FOR OPERATOR ACTION
  3228. EQ EXI1 CLEAR CURRENT REQUEST, QUEUE NEW REQUEST
  3229.  
  3230. * RETURN HERE TO CHECK STATUS OF OPERATOR ACTION.
  3231.  
  3232. LPD2 BSS 0 ENTRY
  3233. SA1 A0+ULRQ
  3234. SX2 X1
  3235. NZ X2,EXIX IF DROP CONTROL POINT
  3236. SA1 A0+UFLA
  3237. LX1 59-51
  3238. NG X1,LPD4 IF OPERATOR HAS TYPED THE *RETRY* COMMAND
  3239. LX1 59-52-59+51
  3240. NG X1,LPD5 IF OPERATOR HAS TYPED *TERMINATE*
  3241. SA4 ITIM
  3242. LX4 59-3
  3243. NG X4,LPD1 IF 8 SECONDS
  3244. EQ EXI5 REQUEUE REQUEST
  3245.  
  3246. LPD4 SA1 A0+UVRI CLEAR PREVIEW DISPLAY MESSAGE
  3247. MX6 59
  3248. BX6 X6*X1
  3249. SA6 A1
  3250. SA1 A0+UFLA
  3251. MX2 1
  3252. LX2 51-59
  3253. BX6 -X2*X1 CLEAR *RETRY* FLAG
  3254. SA6 A1
  3255. BX7 X7-X7
  3256. MX2 -48
  3257. SA7 A0+UREQ PREVENT THIS REQUEST FROM BEING STACKED
  3258. BX6 -X2*X1
  3259. SA6 A0+UXRQ
  3260. RJ GNR GET NEXT REQUEST
  3261. EQ EXIX PROCESS NEXT UNIT
  3262.  
  3263. LPD5 SA1 A0+UFLA
  3264. MX2 1
  3265. LX2 52-59
  3266. BX6 -X2*X1
  3267. SA6 A1 CLEAR *TERMINATE* FLAG
  3268. SA1 A0+UISN
  3269. MX6 -6
  3270. LX1 -12
  3271. BX1 -X6*X1 PREVIEW DISPLAY CODE
  3272. SX6 X1-/RSX/TCF
  3273. SX5 TCF
  3274. ZR X6,ABR IF *TCF* ERROR
  3275. SX6 X1-/RSX/BFR
  3276. SX5 BFR
  3277. ZR X6,ABR IF *BFR* ERROR
  3278. SX5 BFW SET *BFW* ERROR
  3279. EQ ABR CLEAR REQUEST QUEUE AND ABORT JOB
  3280. OPE SPACE 4,10
  3281. ** OPE - OPEN.
  3282. * REWINDS TAPE IF SELECTED.
  3283.  
  3284.  
  3285. OPE7 PL X5,EXIT IF NOT REWIND
  3286. SX7 PRWO REWIND CURRENT REEL
  3287. BX5 X5-X5
  3288. EQ EXI4 QUEUE NEW REQUEST
  3289.  
  3290. OPE BSS 0 ENTRY
  3291. SA1 A0+UCIB CHECK IF *POSMF*
  3292. LX5 59-35
  3293. AX1 50
  3294. MX3 -8
  3295. BX1 -X3*X1
  3296. SX1 X1-110B/4
  3297. NZ X1,OPE7 IF NOT *POSMF*
  3298. SA2 A0+UST4
  3299. LX2 59-58
  3300. PL X2,OPE1 IF NOT LABELED TAPE
  3301. LX2 59-57-59+58
  3302. NG X2,OPE1 IF NON-STANDARD LABEL
  3303. SX7 PDRW DETERMINE TYPE OF *POSMF*
  3304. EQ EXI4 QUEUE NEW REQUEST
  3305.  
  3306. OPE1 SX7 PNLB COMPLETE FET
  3307. EQ EXI3 CLEAR QUEUE AND ENTER NEW REQUEST
  3308.  
  3309. * RETURN HERE IF *POSMF 9999*.
  3310.  
  3311. OPE2 BSS 0 ENTRY
  3312. SA2 A0+UST2
  3313. MX0 36
  3314. LX2 59-4
  3315. NG X2,OPE3 IF LAST OPERATION WRITE
  3316. SA2 A0+USID CHECK IF SETID SPECIFIED
  3317. SA1 OPEA
  3318. BX3 X0*X2
  3319. BX1 X1-X3
  3320. NZ X1,OPE6 IF SETID SPECIFIED
  3321. MX0 -18 CHECK SEQUENCE NUMBER
  3322. SX3 B1
  3323. BX2 -X0*X2
  3324. BX1 X2-X3
  3325. NZ X1,OPE6 IF NOT POSITIONED AT FIRST FILE
  3326. SX7 PWBL WRITE MULTI-FILE LABELS
  3327. EQ EXI3 CLEAR REQUEST QUEUE AND ENTER NEW REQUEST
  3328.  
  3329. OPE3 SX7 PMFL WRITE MULTI-FILE LABEL
  3330. EQ EXI3 CLEAR REQUEST QUEUE AND ENTER NEW REQUEST
  3331.  
  3332. * PROCESS OPEN WRITE.
  3333.  
  3334. OPE4 BSS 0 ENTRY
  3335. SA2 A0+UCIB CHECK IF OPEN WRITE
  3336. LX2 59-50
  3337. PL X2,EXIT IF NOT WRITE
  3338. EQ LAB1 WRITE LABEL
  3339.  
  3340. * RETURN HERE IF NOT *POSMF 9999*.
  3341.  
  3342. OPE5 BSS 0 ENTRY
  3343. MX0 12
  3344. SA2 A0+ULRQ CHECK IF REWIND NEEDED
  3345. LX0 24
  3346. BX3 X0*X2
  3347. SX7 PRWP REWIND AND REPOSITION TO CORRECT FILE SET
  3348. ZR X3,EXI4 IF REWIND NEEDED
  3349. OPE6 SA2 A0+UTMS CHECK FOR LAST CATALOG ON ANOTHER VOLUME
  3350. SX7 PMFS PROCESS MULTI-FILE REEL SWAP ON POSMF
  3351. LX2 59-17
  3352. NG X2,EXI3 IF REWIND NEEDED
  3353. SX7 PPEI POSITION TO CORRECT FILE SET
  3354. EQ EXI3 CLEAR QUEUE AND ENTER NEW REQUEST
  3355.  
  3356. OPEA DATA 6L
  3357. PEO SPACE 4,10
  3358. ** PEO - CHECK IF EOI RETURNED ON SKIP OPERATION.
  3359. * IF EOI IS NOT RETURNED, DETERMINE IF SKIP IS COMPLETE
  3360. * AND CONTINUE SKIP IF NOT COMPLETE. THIS IS TO HANDLE
  3361. * S/L LABELED TAPES WITH TAPE MARKS EMBEDDED IN THE DATA.
  3362.  
  3363.  
  3364. PEO BSS 0 ENTRY
  3365. SA1 A0+ULRQ
  3366. SX2 7000B
  3367. BX3 X2*X1
  3368. MX0 -18
  3369. NZ X3,EXIT IF EOI OR END OF REEL RETURNED
  3370. SA1 A0+UCIA DETERMINE IF SKIP COMPLETE
  3371. MX2 -2
  3372. AX1 24
  3373. BX3 -X0*X1
  3374. AX1 26
  3375. BX4 -X2*X1
  3376. BX2 -X2-X4
  3377. SX7 PSKK SET TO CONTINUE SKIP
  3378. ZR X2,EXI1 IF SKIPEI
  3379. NZ X3,EXI1 IF SKIP COUNT NOT ZERO
  3380. SX7 PEOF PROCESS EOF
  3381. EQ EXI1 CLEAR CURRENT REQUEST, QUEUE NEW REQUEST
  3382. PTM SPACE 4,10
  3383. ** PTM - RESET BLOCK COUNT TO ZERO.
  3384.  
  3385.  
  3386. PTM BSS 0 ENTRY
  3387. SA1 A0+UST2 RESET BLOCK COUNTER
  3388. MX3 -24
  3389. LX3 12
  3390. BX6 X3*X1
  3391. SA6 A1
  3392. EQ EXIT PROCESS NEXT REQUEST
  3393. RDA SPACE 4,10
  3394. ** RDA - READ DATA.
  3395. * CHECKS FOR READ AFTER WRITE.
  3396.  
  3397.  
  3398. RDA BSS 0 ENTRY
  3399. SA1 A0+UST2
  3400. SX7 RDF SET READ FUNCTION
  3401. LX1 59-4
  3402. PL X1,IOR IF LAST OPERATION NOT WRITE
  3403. SX5 RAF READ AFTER WRITE
  3404. EQ ABR CLEAR REQUEST QUEUE AND ABORT
  3405. REW SPACE 4,10
  3406. ** REW - REWIND.
  3407. *
  3408. * DETERMINES IF NOT ON FIRST REEL OF THE FILE. IF NOT FIRST
  3409. * REEL, THEN REEL SWAP PROCEDURES ARE STARTED. THE CURRENT
  3410. * REEL WILL BE UNLOADED IF THE FIRST REEL IS NOT READY AND
  3411. * UNASSIGNED ON A DRIVE AND INHIBIT UNLOAD WAS SELECTED.
  3412.  
  3413.  
  3414. REW BSS 0 ENTRY
  3415. SA1 A0+UVRI
  3416. SA2 A0+USID
  3417. SA3 A0+UFSN
  3418. SA5 A0+UST2
  3419. MX0 -12
  3420. LX1 -12
  3421. BX4 -X0*X1 CURRENT REEL NUMBER
  3422. SB3 X2 FILE SEQUENCE NUMBER
  3423. BX0 X5
  3424. SX7 X4 PRESET NUMBER OF REELS TO BACK UP
  3425. LX5 59-5
  3426. LX0 59-11
  3427. NG X5,REW0 IF FILE POSITION INDETERMINATE
  3428. ZR X4,REW5 IF FIRST REEL
  3429. REW0 LE B3,B1,REW2 IF NOT MULTI-FILE
  3430. NG X0,REW1 IF REWIND BEFORE OPERATION
  3431. SA2 A0+UCIB CHECK IF *POSMF*
  3432. AX2 50
  3433. MX0 -8
  3434. BX2 -X0*X2
  3435. SX2 X2-22B
  3436. ZR X2,REW2 IF *POSMF* BACK UP MAXIMUM REELS
  3437. REW1 SX7 X3-1
  3438. NG X5,REW2 IF POSITION INDETERMINATE
  3439. ZR X7,REW5 IF CURRENT REEL REWIND
  3440. REW2 IX4 X4-X7
  3441. PL X4,REW3 IF POSSIBLE TO BACK UP MAXIMUM REELS
  3442. IX7 X4+X7
  3443. REW3 IX6 X1-X7 RESET REEL NUMBER
  3444. SB4 X7 SAVE REEL OFFSET
  3445. LX6 12
  3446. MX0 42 UPDATE FILE SECTION NUMBER
  3447. SA6 A1 UPDATE REEL NUMBER
  3448. BX3 X0*X3
  3449. SX1 B1
  3450. BX7 X3+X1
  3451. SA1 A0+UST4
  3452. SA7 A3+
  3453. LE B3,B1,REW4 IF NOT MULTI-FILE
  3454. LX1 59-58
  3455. SX7 PMFR REPOSITION MULTI-VOLUME, MULTI-FILE
  3456. PL X1,REW4 IF NOT LABELED TAPE
  3457. LX1 59-57-59+58
  3458. NG X1,REW4 IF NON-STANDARD LABEL
  3459. NG X5,EXI4 IF POSITION INDETERMINATE
  3460. SA2 A0+UTMS CHECK FOR SYMBOLIC ACCESS TAPE
  3461. LX2 59-8
  3462. PL X2,EXI4 IF NON-SYMBOLIC ACCESS
  3463. SA3 A0+UTCI CHECK FOR *POSMF*
  3464. AX3 24
  3465. MX0 -24
  3466. BX3 -X0*X3
  3467. LX2 59-17-59+8
  3468. ZR X3,EXI4 IF NOT *POSMF*
  3469. NG X2,EXI4 IF REEL SWAP NECESSARY
  3470. SX3 B4 RESET REEL NUMBER
  3471. IX6 X6+X3
  3472. SA6 A6+
  3473. EQ REW5 REWIND REEL
  3474.  
  3475. REW4 SX7 PERW
  3476. EQ EXI4 QUEUE NEW REQUEST
  3477.  
  3478. REW5 BSS 0 ENTRY
  3479. SA2 A0+USID CHECK IF MULTI-FILE
  3480. SA1 A0+UST4
  3481. SB3 X2
  3482. LE B3,B1,REW7 IF NOT MULTI-FILE SET TAPE
  3483. LX1 59-58
  3484. PL X1,EXIT IF NOT LABELED TAPE
  3485. LX1 59-57-59+58
  3486. NG X1,EXIT IF NON-STANDARD LABEL
  3487. SX7 PCFL REWIND SINGLE-VOLUME MULTI-FILE SET TAPE
  3488. MX0 1 CHECK FOR SYMBOLIC ACCESS TAPE FILE
  3489. SA2 A0+UTMS CHECK FOR *TFM* FORCED REEL SWAP
  3490. LX2 59-8
  3491. PL X2,EXI4 IF NON-SYMBOLIC ACCESS FILE
  3492. LX2 59-18-59+8
  3493. BX6 X0+X2 SET FIRST *HDR1* ON VOLUME FLAG
  3494. LX6 -59+18
  3495. SA6 A2+
  3496. EQ EXI4 QUEUE NEW REQUEST
  3497.  
  3498. * REENTER HERE TO DETERMINE IF UNLOAD NEEDED.
  3499.  
  3500. REW6 BSS 0 ENTRY
  3501. SA1 A0+UST2
  3502. LX1 59-5
  3503. NG X1,REW6.1 IF FILE POSITION INDETERMINATE
  3504. RJ CUL CHECK UNLOAD REQUIRED
  3505. NZ B3,EXIT IF UNIT NOT TO BE UNLOADED
  3506. REW6.1 SX7 PUNL UNLOAD LAST REEL
  3507. EQ EXI4 QUEUE NEW REQUEST
  3508.  
  3509. REW7 SA1 A0+UTCI CHECK FOR *POSMF* IN PROGRESS
  3510. MX2 24
  3511. LX1 59-47
  3512. BX1 X2*X1
  3513. ZR X1,EXIT IF NOT *POSMF* IN PROGRESS
  3514. SX7 PCFL
  3515. EQ EXI4 QUEUE NEW REQUEST
  3516. RPR SPACE 4,10
  3517. ** RPR - REISSUE PP REQUEST AFTER DELAY.
  3518.  
  3519.  
  3520. RPR BSS 0 ENTRY
  3521. SA1 A0+UFLA
  3522. SX7 B0+
  3523. MX2 -48
  3524. SA7 A0+UREQ PREVENT THIS REQUEST FROM BEING STACKED
  3525. BX6 -X2*X1
  3526. SA6 A0+UXRQ
  3527. RJ GNR GET NEXT REQUEST
  3528. EQ EXIX PROCESS NEXT UNIT
  3529. RRM SPACE 4,10
  3530. ** RRM - REQUEST REEL MOUNT.
  3531.  
  3532.  
  3533. RRM BSS 0 ENTRY
  3534. SA1 A0+UST1
  3535. SX3 B0 SET NO ERROR MESSAGE
  3536. LX1 59-49
  3537. NG X1,EXIT IF ACS UNIT
  3538. RJ SPR SET PREVIEW DISPLAY REQUEST
  3539. EQ EXIT PROCESS NEXT REQUEST
  3540. RRP SPACE 4,10
  3541. ** RRP - REEL REJECT EXIT PROCESSOR.
  3542.  
  3543.  
  3544. RRP BSS 0 ENTRY
  3545.  
  3546. * CHECK ERROR STATUS.
  3547.  
  3548. SA1 A0+UST1
  3549. SA2 A0+UTMS
  3550. SA3 A0+UST5
  3551. SA4 A0+UST2
  3552. SX5 B0
  3553. LX1 59-49
  3554. LX2 59-12
  3555. LX3 12
  3556. LX4 59-10
  3557. AX3 48 *RRJ* ERROR SUB-CODE
  3558. NG X1,RRP1 IF ACS UNIT
  3559. SX6 X3-WRD
  3560. ZR X6,RRP2 IF WRITE DISABLED ERROR
  3561. NG X2,RRP3 IF TO WRITE TMS SECURITY LABELS
  3562. SX6 X3-CAD
  3563. NZ X6,RRP2 IF NOT ACCESS ERROR
  3564. NG X4,RRP2 IF NOT INITIAL REEL ASSIGNMENT
  3565.  
  3566. * ABORT REQUEST.
  3567.  
  3568. RRP1 SX7 PRRA
  3569. EQ EXI3 CLEAR QUEUE AND ABORT REQUEST
  3570.  
  3571. * REQUEST REMOUNT OF REEL.
  3572.  
  3573. RRP2 SA3 RRPA+X3 GET PREVIEW DISPLAY MESSAGE CODE
  3574. SX7 PRUL
  3575. EQ RRP4 REQUEST PREVIEW DISPLAY
  3576.  
  3577. * WAIT FOR OPERATOR GO.
  3578.  
  3579. RRP3 SA3 RRPB+X3 GET PREVIEW DISPLAY MESSAGE CODE
  3580. SX6 B1
  3581. LX2 12-12-59+12
  3582. LX6 23-0
  3583. BX6 X2+X6 SET WAIT GO FLAG
  3584. SX7 PWUG WAIT FOR UNIT GO
  3585. SA6 A2+
  3586.  
  3587. * SET PREVIEW DISPLAY REQUEST.
  3588.  
  3589. RRP4 RJ SPR SET PREVIEW DISPLAY REQUEST
  3590. EQ EXI1 CLEAR CURRENT REQUEST AND ENTER NEW
  3591.  
  3592.  
  3593. RRPA IVFD
  3594. IVFD WRD,(54/0,6//RSX/NWE) WRITE DISABLED
  3595. IVFD NLB,(54/0,6//RSX/NLB) NEEDS LABEL
  3596. IVFD CAD,(54/0,6//RSX/CAD) CANNOT ACCESS DATA
  3597. IVFD WVS,(54/0,6//RSX/WVS) WRONG VSN
  3598. IVFD MRSC
  3599.  
  3600. RRPB IVFD
  3601. IVFD NLB,(54/0,6//RSX/NLG) NEEDS LABEL
  3602. IVFD CAD,(54/0,6//RSX/CAG) CANNOT ACCESS DATA
  3603. IVFD WVS,(54/0,6//RSX/WVG) WRONG VSN
  3604. IVFD MRSC
  3605. RSP SPACE 4,10
  3606. ** RSP - REWIND OR UNLOAD UNIT PRIOR TO REEL SWAP.
  3607. *
  3608. * FOR CTS UNITS, THE REWIND OR UNLOAD OPERATION ALSO UPDATES
  3609. * THE RECOVERED ERROR COUNTS IN *UERC* FOR LOGGING BY REEL
  3610. * RETURN PROCESSING.
  3611.  
  3612.  
  3613. RSP BSS 0 ENTRY
  3614. RJ CUL CHECK UNLOAD REQUIRED
  3615. SX7 PREW REWIND REEL
  3616. SX5 B0+
  3617. NZ B3,EXI4 IF NOT TO UNLOAD UNIT
  3618. SX7 PUNL UNLOAD UNIT
  3619. EQ EXI4 QUEUE NEW REQUEST
  3620. RXL SPACE 4,10
  3621. ** RXL - RETURN LABELS TO EXTENDED LABEL BUFFER.
  3622.  
  3623.  
  3624. RXL BSS 0 ENTRY
  3625. SA1 A0+UCIB CHECK XL BIT
  3626. LX1 59-41
  3627. PL X1,EXIT IF NO EXTENDED LABELS
  3628. SX7 PRXL RETURN HEADER LABELS TO XL BUFFER
  3629. EQ EXI4 QUEUE NEW REQUEST
  3630. SEF SPACE 4,10
  3631. ** SEF - CHECK ERROR FLAG DURING SKIP.
  3632. *
  3633. * ENTRY (ULRQ, 21) = 1 IF CHECK ERROR FLAG.
  3634.  
  3635.  
  3636. SEF BSS 0 ENTRY
  3637. SA1 A0+ULRQ OBTAIN LAST STATUS
  3638. LX1 59-21
  3639. PL X1,FET IF SKIP OPERATION COMPLETE
  3640. LX1 59-35-59+21
  3641. MX0 -18
  3642. PL X1,SEF2 IF SKIP FORWARD
  3643.  
  3644. * CHECK FOR END OF RECORD. IF NOT AT END OF RECORD, DO NOT
  3645. * DECREMENT THE SKIP COUNT SINCE THE TAPE IS STILL POSITIONED
  3646. * ON THE SAME RECORD.
  3647.  
  3648. LX1 59-24-59+35
  3649. PL X1,SEF1 IF END OF RECORD
  3650. MX0 -59 CLEAR THE NOT END OF RECORD FLAG
  3651. BX7 -X0*X1
  3652. LX7 24-59
  3653. SA7 A1
  3654. EQ SEF2 DO NOT DECREMENT SKIP COUNT
  3655.  
  3656. * DECREMENT THE SKIP COUNT BY ONE. THIS IS NEEDED TO MAKE
  3657. * THE TOTAL NUMBER OF RECORDS SKIPPED COME OUT RIGHT ON A
  3658. * SKIP REVERSE OPERATION.
  3659.  
  3660. SEF1 LX1 24-59
  3661. BX2 -X0*X1
  3662. SX2 X2-1 DECREMENT SKIP COUNT
  3663. ZR X2,FET IF SKIP REVERSE OPERATION COMPLETE
  3664. BX1 X0*X1
  3665. BX6 X1+X2
  3666. SA6 A1+
  3667. SEF2 SX7 PSEF CHECK ERROR FLAG
  3668. EQ EXI1 QUEUE NEW REQUEST
  3669. SKR SPACE 4,10
  3670. ** SKR - SKIP RECORDS/FILES.
  3671.  
  3672.  
  3673. SKR BSS 0 ENTRY
  3674. SA1 A0+UCIA SET SKIP COUNT
  3675. SX7 SKP
  3676. MX2 -18
  3677. LX1 -24
  3678. BX3 -X2*X1
  3679. BX5 X5+X3
  3680. EQ IOR BUILD I/O REQUEST
  3681. SRA SPACE 4,10
  3682. ** SRA - SET REEL ASSIGNED.
  3683.  
  3684.  
  3685. SRA BSS 0 ENTRY
  3686. SA1 A0+UST2
  3687. SA2 A0+UVRI
  3688. SX6 40B
  3689. SX7 1
  3690. BX1 -X6*X1 CLEAR FILE POSITION INDETERMINATE
  3691. BX2 -X7*X2 CLEAR MESSAGE FLAG
  3692. SX6 2000B
  3693. SX7 20B
  3694. BX6 X1+X6 SET INITIAL REEL ASSIGNED
  3695. BX7 X2+X7 SET REEL ASSIGNED
  3696. SA6 A1
  3697. SA7 A2
  3698. EQ EXIT PROCESS NEXT REQUEST
  3699. SRF SPACE 4,10
  3700. ** SRF - SET REWIND BEFORE OPERATION FLAG.
  3701.  
  3702.  
  3703. SRF BSS 0 ENTRY
  3704. SA1 A0+UST2
  3705. SX6 4000B
  3706. BX6 X1+X6 SET REWIND BEFORE OPERATION
  3707. SA6 A1
  3708. EQ EXIT PROCESS NEXT REQUEST
  3709. SSC SPACE 4,10
  3710. ** SSC - SAVE REMAINING SKIP COUNT
  3711.  
  3712.  
  3713. SSC BSS 0 ENTRY
  3714. SA1 A0+ULRQ
  3715. MX2 -18
  3716. BX6 -X2*X1 GET REMAINING SKIP COUNT (PA AND PB)
  3717. LX6 24
  3718. SA1 A0+UCIA
  3719. LX2 24
  3720. BX1 X2*X1 CLEAR OUT ORIGINAL SKIP COUNT
  3721. BX6 X1+X6 USE REMAINING SKIP COUNT
  3722. SA6 A1+
  3723. EQ EXIT PROCESS NEXT REQUEST
  3724. SVC SPACE 4,10
  3725. ** SVC - SET VSN FOR REEL CHECK.
  3726.  
  3727.  
  3728. SVC BSS 0 ENTRY
  3729. SA1 A0+UVSN
  3730. SA2 A0+UISN
  3731. MX0 -24
  3732. BX1 -X0*X1
  3733. BX2 X0*X2
  3734. BX6 X1+X2 SET VSN
  3735. SA6 A1 UPDATE *UVSN*
  3736. EQ EXIT PROCESS NEXT REQUEST
  3737. SVR SPACE 4,10
  3738. ** SVR - SET NEXT VSN RETURNED.
  3739.  
  3740.  
  3741. SVR BSS 0 ENTRY
  3742. SA1 A0+UVRI
  3743. SX6 2
  3744. BX6 X1+X6 SET NEXT VSN RETURNED
  3745. SA6 A1
  3746. EQ EXIT PROCESS NEXT REQUEST
  3747. URN SPACE 4,10
  3748. ** URN - UPDATE REEL NUMBER.
  3749.  
  3750.  
  3751. URN BSS 0 ENTRY
  3752. SA1 A0+UVRI
  3753. SX6 10000B
  3754. SX7 4
  3755. IX6 X1+X6 ADVANCE REEL NUMBER
  3756. BX6 X6+X7 SET REEL NUMBER ADVANCED FLAG
  3757. SA6 A1+
  3758. EQ EXIT PROCESS NEXT REQUEST
  3759. USC SPACE 4,10
  3760. ** USC - COMPLETE UNIT SWAP.
  3761. *
  3762. * ENTRY (X5) = NEW UDT ADDRESS.
  3763.  
  3764.  
  3765. USC BSS 0 ENTRY
  3766.  
  3767. * SET NEW UDT ADDRESS.
  3768.  
  3769. SA1 X5+UVRI
  3770. SA2 X5+UREQ
  3771. LX1 59-47
  3772. PL X1,HGU IF UNIT SWAP NOT SET
  3773. NZ X2,HGU IF PROCESSOR ACTIVE ON NEW UNIT
  3774.  
  3775. * MOVE PARAMETERS TO NEW UDT ENTRY.
  3776.  
  3777. MOVE UCIC+1-UFRQ,A0+UFRQ,X5+UFRQ MOVE FILE REQUEST
  3778. MOVE UST5+1-UST2,A0+UST2,X5+UST2 MOVE STATUS FLAGS
  3779. MOVE UDAT+1-UBLC,A0+UBLC,X5+UBLC MOVE FLAGS AND LABEL DATA
  3780. SX6 B0+
  3781. SA6 A0+UFRQ CLEAR FILE REQUEST
  3782. SA6 A0+UVRI CLEAR JOB ASSIGNMENT
  3783.  
  3784. * SET NEW UDT ORDINAL IN QUEUE ENTRIES.
  3785.  
  3786. TA1 -1,UQUE
  3787. MX0 6
  3788. SX2 B2 OLD UDT ORDINAL
  3789. LX2 -6
  3790. TX3 X5,-UBUF NEW UDT OFFSET
  3791. SX4 UNITL
  3792. IX3 X3/X4 NEW UDT ORDINAL
  3793. LX3 -6
  3794. USC1 SA1 A1+1 GET NEXT ENTRY
  3795. NG X1,USC2 IF END OF ENTRIES
  3796. ZR X1,USC1 IF NO ENTRY
  3797. BX1 X1-X2
  3798. BX7 X0*X1
  3799. NZ X7,USC1 IF NO MATCH ON UDT ORDINAL
  3800. BX6 X1+X3 SET NEW UDT ORDINAL
  3801. SA6 A1
  3802. EQ USC1 CHECK NEXT ENTRY
  3803.  
  3804. USC2 SX5 B0+
  3805. SX7 PCVS CLEAR VSN ON OLD UNIT
  3806. EQ EXI3 CLEAR QUEUE AND MAKE REQUEST
  3807. USF SPACE 4,10
  3808. ** USF - PROCESS UNIT SWAP FAILURE.
  3809. *
  3810. * ENTRY (X5) = NEW UDT ADDRESS.
  3811.  
  3812.  
  3813. USF BSS 0 ENTRY
  3814. SA1 X5+UVRI
  3815. SX6 B1
  3816. LX6 47-0
  3817. BX2 X6*X1
  3818. BX6 -X6*X1 CLEAR UNIT SWAP FLAG
  3819. ZR X2,HGU IF UNIT SWAP NOT SET
  3820. SA6 A1
  3821. SX5 B0
  3822. SX7 PCNR RESTART REEL CHECK PROCESSOR
  3823. EQ EXI1 CLEAR CURRENT AND ENTER NEW REQUEST
  3824. USN SPACE 4,10
  3825. ** USN - UPDATE SEQUENCE AND SECTION NUMBER.
  3826.  
  3827.  
  3828. USN BSS 0 ENTRY
  3829. SA1 A0+USID INCREMENT SEQUENCE NUMBER
  3830. SX2 B1
  3831. MX0 42
  3832. SA3 A0+UFSN SET SECTION NUMBER TO 1
  3833. IX6 X1+X2
  3834. BX4 X0*X3
  3835. SA6 A1
  3836. BX6 X4+X2
  3837. SA6 A3+
  3838. EQ EXIT PROCESS NEXT REQUEST
  3839. USP SPACE 4,10
  3840. ** USP - INITIATE UNIT SWAP.
  3841. *
  3842. * ENTRY (X5) = NEW UDT ADDRESS.
  3843.  
  3844.  
  3845. USP BSS 0 ENTRY
  3846. LX5 12
  3847. SX6 AFUS
  3848. BX5 X5+X6 SET UDT ADDRESS AND SUBFUNCTION
  3849. SX7 AFN
  3850. EQ EXI2 MAKE *1MU* REQUEST
  3851. VME SPACE 4,10
  3852. ** VME - ISSUE EVENT AFTER ACS VSN MOUNT ERROR.
  3853. *
  3854. * ENTRY (X5) = VSN ERROR TABLE ORDINAL.
  3855.  
  3856.  
  3857. VME BSS 0 ENTRY
  3858. LX5 12
  3859. SX6 AFME
  3860. BX5 X5+X6 SET TABLE ORDINAL AND SUBFUNCTION
  3861. SX7 AFN
  3862. EQ EXI2 MAKE *1MU* REQUEST
  3863. WAC SPACE 4,10
  3864. ** WAC - WAIT FOR UNIT ACCESSIBLE.
  3865.  
  3866.  
  3867. WAC BSS 0
  3868. SA1 ACCU
  3869. SA2 ITIM
  3870. LX1 B2
  3871. LX2 59-3
  3872. NG X1,EXIT IF UNIT ACCESSIBLE
  3873. PL X2,EXI5 IF NOT 8 SECOND INTERVAL
  3874. SX5 B0+
  3875. SX7 PWAC
  3876. EQ EXI1 CHECK ERROR FLAG AND REENTER
  3877. WDA SPACE 4,10
  3878. ** WDA - WRITE DATA.
  3879. * EOF WRITES ON TAPES WHERE THIS IS A TAPE MARK ARE HANDLED
  3880. * BY THE WRITE LABEL CODE IN *1MT*. THUS, THEY ARE HANDLED
  3881. * BY THE POST WRITE CHECKING.
  3882.  
  3883.  
  3884. WDA BSS 0 ENTRY
  3885. SX7 WTF SET WRITE FUNCTION
  3886. EQ IOR BUILD I/O REQUEST
  3887.  
  3888. * POST PROCESS WRITE.
  3889.  
  3890. WDA1 BSS 0 ENTRY
  3891. SA1 A0+ULRQ CHECK IF EOF NEEDED
  3892. SX2 14B
  3893. LX2 24
  3894. BX3 X2*X1
  3895. BX5 X3-X2
  3896. NZ X5,EXIT IF NO EOF
  3897. SX7 WLA WRITE EOF
  3898. ERRNZ WLTM
  3899. EQ EXI2 ENTER *1MT* REQUEST
  3900. WNB SPACE 4,10
  3901. ** WNB - WAIT FOR UNIT NOT BUSY.
  3902.  
  3903.  
  3904. WNB BSS 0
  3905. SA1 A0+UST1
  3906. SA2 ITIM
  3907. LX1 59-1
  3908. LX2 59-3
  3909. PL X1,EXIT IF UNIT NOT BUSY
  3910. PL X2,EXI5 IF NOT 8 SECOND INTERVAL
  3911. SX5 B0+
  3912. SX7 PWNB
  3913. EQ EXI1 CHECK ERROR FLAG AND REENTER
  3914. WNV SPACE 4,10
  3915. ** WNV - WAIT FOR OPERATOR TO SPECIFY NEXT VSN.
  3916.  
  3917.  
  3918. WNV BSS 0
  3919. SA1 A0+UESN
  3920. SA2 ITIM
  3921. MX6 36
  3922. SX5 B0
  3923. BX1 X6*X1
  3924. LX2 59-3
  3925. NZ X1,EXIT IF NEXT VSN SPECIFIED
  3926. PL X2,EXI5 IF NOT 8 SECONDS, REENTER
  3927. SX7 PWNV
  3928. EQ EXI1 CHECK ERROR FLAG AND REENTER
  3929. WTD SPACE 4,10
  3930. ** WTD - WAIT FOR TIME DELAY.
  3931.  
  3932.  
  3933. WTD BSS 0 ENTRY
  3934. SA1 ITIM
  3935. SX5 B0+
  3936. LX1 59-6
  3937. NG X1,EXIT IF 64 SECOND INTERVAL
  3938. LX1 59-3-59+6
  3939. PL X1,EXI5 IF NOT 8 SECOND INTERVAL
  3940. SX7 PWTD
  3941. EQ EXI1 CHECK ERROR FLAG AND REENTER
  3942. TITLE TAPE MANAGEMENT SYSTEM.
  3943. ATM SPACE 4,10
  3944. ** ATM - CHECK ASSIGNMENT OF TMS TAPE.
  3945. *
  3946. * IF A SCRATCH REEL HAS BEEN ASSIGNED, INITIALIZE UDT FIELDS
  3947. * FOR *VOL1* AND *HDR1* LABEL WRITE.
  3948.  
  3949.  
  3950. ATM BSS 0 ENTRY
  3951. SA1 A0+UTMS
  3952. SX0 /TFM/WUBL
  3953. MX2 1
  3954. LX0 23-11
  3955. BX5 X0*X1
  3956. LX2 6+12-59 SET FIRST LABEL ON VOLUME
  3957. BX6 X1+X2
  3958. SA6 A1
  3959. ZR X5,ATM1 IF NOT TMS SCRATCH TAPE ASSIGNMENT
  3960. BX6 -X0*X1 CLEAR SCRATCH TAPE FLAG
  3961. SA6 A1+
  3962. MX0 6*6 SET INTERNAL = EXTERNAL VSN
  3963. SA1 A0+UESN
  3964. SA2 A0+UVSN
  3965. SA3 A0+UISN
  3966. BX1 X0*X1
  3967. BX2 -X0*X2
  3968. BX3 -X0*X3
  3969. BX6 X1+X2
  3970. BX7 X1+X3
  3971. SX5 B0
  3972. SA6 A2
  3973. SA7 A3
  3974. SA1 A0+UST2
  3975. MX7 54
  3976. LX1 59-10
  3977. NG X1,EXIT IF NOT INITIAL REEL ASSIGNMENT
  3978. SA1 A0+UGNU
  3979. SX0 20000B
  3980. SX3 55B
  3981. LX7 30
  3982. LX3 30
  3983. BX6 X6+X0 SET LABEL EXPIRED
  3984. BX1 X7*X1
  3985. SA6 A6
  3986. BX7 X1+X3 SET BLANK VOLUME ACCESSIBILITY
  3987. SA7 A1
  3988. EQ EXIT PROCESS NEXT REQUEST
  3989.  
  3990. ATM1 SA1 A0+UCIA CHECK FOR *CIO* READ REQUEST
  3991. AX1 48
  3992. SX2 1702B
  3993. BX1 X2*X1
  3994. ZR X1,VTL IF READ REQUEST
  3995. EQ EXIT PROCESS NEXT REQUEST
  3996. AVS SPACE 4,10
  3997. ** AVS - ADVANCE VSN FILE.
  3998. *
  3999. * IF NOT A TMS CONTROLLED FILE, A REQUEST TO *1MU* IS MADE TO
  4000. * ADVANCE THE VSN FILE. IF A TMS CONTROLLED FILE, THE CURRENT
  4001. * STRING IS CLEARED AND A REQUEST TO *TFM* IS MADE TO ADVANCE
  4002. * THE VSN FILE.
  4003.  
  4004.  
  4005. AVS BSS 0 ENTRY
  4006. SA1 A0+UTMS ADVANCE VSN FILE
  4007. SX0 /TFM/RSTC
  4008. BX5 X0*X1
  4009. NZ X5,AVS1 IF TMS CONTROLLED FILE
  4010. SX7 AFN SET FUNCTION
  4011. SX5 AFNV SET SUBFUNCTION
  4012. EQ EXI2 MAKE *1MU* REQUEST
  4013.  
  4014. AVS1 SX2 /TFM/WURF
  4015. LX2 23-11
  4016. BX3 X2*X1
  4017. SX2 /TFM/AVSS
  4018. ZR X3,AVS2 IF NOT REWIND
  4019. SX2 /TFM/RFVS
  4020. AVS2 RJ STF SET TMS FUNCTION
  4021. SX5 B0+
  4022. SX7 PCTM CALL TAPE MANAGER
  4023. EQ EXI4 QUEUE NEW REQUEST
  4024. CTM SPACE 4,10
  4025. ** CTM - CALL TAPE MANAGER.
  4026. *
  4027. * SET THE REQUEST IN PROCESS FLAG IN *UXRQ*
  4028. * TO MAKE *MAGNET* SKIP PROCESSING OF THIS
  4029. * UNIT AND SET THE REQUEST PENDING FLAG FOR
  4030. * *TFM*. CALL *TFM*.
  4031.  
  4032.  
  4033. CTM BSS 0 ENTRY
  4034. SX7 RIP CALL TAPE MANAGER
  4035. SA1 A0+UTMS INSURE REQUEST PENDING SET
  4036. LX7 48
  4037. MX0 -6
  4038. SX5 /TFM/RSIL
  4039. SA7 A0+UXRQ SET REQUEST IN PROCESS
  4040. BX2 X0*X1
  4041. BX7 X5+X2
  4042. MX0 -18 BUILD TFM REQUEST
  4043. SA7 A1+
  4044. SA1 CTMA
  4045. SX2 A0
  4046. BX7 X0*X1
  4047. BX6 X2+X7
  4048. RJ SYS= PROCESS SYSTEM REQUEST
  4049. EQ EXIX PROCESS NEXT UNIT
  4050.  
  4051. CTMA VFD 18/0LTFM,6/0,18//TFM/MAGF*100B,18/0
  4052. RFV SPACE 4,10
  4053. ** RFV - REWIND FILE TO FIRST VOLUME.
  4054. *
  4055. * IF THIS IS A TMS CONTROLLED FILE, SET THE
  4056. * REWIND FILE FLAG IN UTMS.
  4057.  
  4058.  
  4059. RFV BSS 0 ENTRY
  4060. SA1 A0+UTMS REWIND FILE
  4061. SX0 /TFM/RSTC
  4062. BX5 X0*X1
  4063. ZR X5,EXIT IF NOT TMS FILE
  4064. SX2 /TFM/WURF SET REWIND FLAG
  4065. LX2 23-11
  4066. BX6 X1+X2
  4067. SA6 A1
  4068. EQ EXIT PROCESS NEXT REQUEST
  4069. RRF SPACE 4,10
  4070. ** RRF - RETURN/RESERVE TAPE FILE.
  4071. *
  4072. * IF THIS IS A TMS CONTROLLED FILE, REQUEST
  4073. * *TFM* TO RETURN/RESERVE THE FILE.
  4074.  
  4075.  
  4076. RRF BSS 0 ENTRY
  4077. SA1 A0+UTMS RETURN/RESERVE TAPE FILE
  4078. SX0 /TFM/RSTC
  4079. BX5 X0*X1
  4080. ZR X5,EXIT IF NOT TMS FILE
  4081. SX2 /TFM/RTFS
  4082. RJ STF SET TMS FUNCTION
  4083. SX5 B0+
  4084. SX7 PCTM CALL TAPE MANAGER
  4085. EQ EXI4 QUEUE NEW REQUEST
  4086. STF SPACE 4,10
  4087. ** STF - SET TMS FUNCTION CODE.
  4088. *
  4089. * SET THE *TFM* FUNCTION CODE IN *UTMS*
  4090. * BYTE 0.
  4091. *
  4092. * ENTRY (X2) = FUNCTION CODE.
  4093. *
  4094. * USES X - 0, 1, 6, 7.
  4095. * A - 1, 7.
  4096.  
  4097.  
  4098. STF SUBR ENTRY/EXIT
  4099. SA1 A0+UTMS
  4100. MX0 12
  4101. BX6 -X0*X1
  4102. LX2 59-11
  4103. BX7 X2+X6
  4104. SA7 A1+
  4105. EQ STFX RETURN
  4106. TCP SPACE 4,15
  4107. ** TCP - TMS COMPLETION PROCESSING.
  4108. *
  4109. * CHECK THE RETURN STATUS FLAGS AFTER *TFM*
  4110. * HAS COMPLETED.
  4111.  
  4112.  
  4113. TCP BSS 0 ENTRY
  4114. SA1 A0+UTMS TMS COMPLETION PROCESSING
  4115. LX1 59-0
  4116. NG X1,EXI5 IF REQUEST PENDING
  4117. LX1 59-2-59+0
  4118. NG X1,TCP1 IF ABORT USER JOB
  4119. LX1 59-1-59+2
  4120. MX0 1
  4121. PL X1,EXIT IF NOT RE-ISSUE REQUEST
  4122. BX6 X0-X1 CLEAR RE-ISSUE REQUEST
  4123. SX5 B0 NO PARAMETERS
  4124. LX6 -59+1
  4125. SX7 PCTM CALL TAPE MANAGER
  4126. SA6 A1
  4127. EQ EXI1 CLEAR CURRENT REQUEST AND REISSUE
  4128.  
  4129. TCP1 SX5 TPE SET *TAPE MANAGER ERROR*
  4130. EQ ABR CLEAR REQUEST QUEUE AND ABORT JOB
  4131. VMF SPACE 4,10
  4132. ** VMF - VALIDATE MULTI-FILE REQUEST.
  4133. *
  4134. * IF THE TAPE CONTAINS SYMBOLIC ACCESS FILES, CALL *TFM* TO
  4135. * VERIFY THAT THE USER MAY ACCESS THE TAPE.
  4136.  
  4137.  
  4138. VMF BSS 0 ENTRY
  4139. SA1 A0+UTMS CHECK FOR TMS TAPE, SYMBOLIC ACCESS FILES
  4140. SX0 /TFM/RSSA
  4141. BX0 X0*X1
  4142. ZR X0,EXIT IF NON-SYMBOLIC ACCESS FILE
  4143. SX2 /TFM/VMFS VALIDATE MULTI-FILE
  4144. RJ STF SET TMS FUNCTION
  4145. SX5 B0+
  4146. SX7 PCTM CALL TAPE MANAGER
  4147. EQ EXI4 QUEUE NEXT REQUEST
  4148. VTL SPACE 4,10
  4149. ** VTL - VERIFY TAPE LABELS.
  4150. *
  4151. * IF THIS IS A TMS CONTROLLED FILE WITH SYMBOLIC ACCESS SET,
  4152. * CALL *TFM* TO VERIFY THAT THE LABELS MATCH THE CATALOG
  4153. * ENTRIES. IF THE LABEL WAS JUST WRITTEN, *TFM* WILL UPDATE
  4154. * THE CATALOG ENTRY TO MATCH THE LABEL.
  4155.  
  4156.  
  4157. VTL BSS 0 ENTRY
  4158. SX2 /TFM/VTLS VERIFY TAPE LABELS
  4159. EQ VTL2 VERIFY SYMBOLIC ACCESS TAPE
  4160.  
  4161. VTL1 BSS 0 ENTRY
  4162. SX2 /TFM/UCES UPDATE CATALOG ENTRY
  4163. VTL2 SA1 A0+UTMS CHECK FOR TMS TAPE, SYMBOLIC ACCESS FILES
  4164. SX0 /TFM/RSSA
  4165. BX0 X0*X1
  4166. ZR X0,EXIT IF NON-SYMBOLIC ACCESS FILE
  4167. SA1 A0+UST4
  4168. LX1 59-58
  4169. PL X1,EXIT IF NOT LABELED TAPE
  4170. LX1 59-57-59+58
  4171. NG X1,EXIT IF NON-STANDARD LABELS
  4172. RJ STF SET TMS FUNCTION
  4173. SX5 B0+
  4174. SX7 PCTM CALL TAPE MANAGER
  4175. EQ EXI4 QUEUE NEXT REQUEST
  4176. WUG SPACE 4,15
  4177. ** WUG - WAIT UNIT GO.
  4178.  
  4179.  
  4180. WUG BSS 0 ENTRY
  4181. SA1 A0+UTMS WAIT UNIT GO
  4182. SA2 ITIM
  4183. SX5 B0
  4184. BX3 X1
  4185. LX1 59-23
  4186. LX2 59-3
  4187. PL X1,WUG1 IF GO OR STOP PROCESSED
  4188. PL X2,EXI5 IF NOT 8 SECOND INTERVAL
  4189. SX7 PWUG CHECK ERROR AND CONTINUE WAIT
  4190. EQ EXI1 ENTER REQUEST
  4191.  
  4192. WUG1 SX6 40000B
  4193. BX6 -X6*X3 CLEAR UNLOAD FLAG
  4194. LX1 59-14-59+23
  4195. SA6 A1+
  4196. SX7 PRUL SET TO REMOUNT REEL
  4197. NG X1,EXI1 IF TO UNLOAD UNIT
  4198. SA1 A0+UVRI
  4199. SX7 PASN SET TO ASSIGN REEL
  4200. MX6 59
  4201. BX6 X6*X1 CLEAR PREVIEW DISPLAY MESSAGE FLAG
  4202. SA6 A1
  4203. EQ EXI1 CLEAR CURRENT REQUEST AND ENTER NEW
  4204. TITLE REQUEST PROCESSOR SUBROUTINES.
  4205. SPACE 4,10
  4206. ** SUBROUTINE REGISTER CONVENTIONS.
  4207. *
  4208. * UNLESS OTHERWISE DOCUMENTED ALL ROUTINES EXPECT THE FOLLOWING
  4209. * ENTRY CONDITIONS AND WILL EXIT WITH THESE REGISTERS
  4210. * UNCHANGED.
  4211. *
  4212. * ENTRY (A0) = FWA OF UDT.
  4213. * (B2) = UNIT NUMBER (SOFTWARE).
  4214. ABR SPACE 4,10
  4215. ** ABR - ABORT REQUEST.
  4216. *
  4217. * ENTRY (X5) = PARAMETERS FOR *MAB* FUNCTION.
  4218. *
  4219. * EXIT TO *EXI3*.
  4220. *
  4221. * USES X - 7.
  4222.  
  4223.  
  4224. ABR BSS 0 ENTRY
  4225. SX7 PMAB SET ABORT REQUEST
  4226. EQ EXI3 CLEAR REQUEST QUEUE AND MAKE ABORT REQUEST
  4227. CUL SPACE 4,10
  4228. ** CUL - CHECK UNLOAD REQUIRED BEFORE REEL SWAP.
  4229. *
  4230. * EXIT (B3) = 0 IF TO UNLOAD UNIT.
  4231. * (B3) .NE. 0 IF NOT TO UNLOAD UNIT.
  4232. *
  4233. * USES X - 1, 2.
  4234. * A - 1, 2.
  4235. * B - 3.
  4236. *
  4237. * CALLS FNR.
  4238.  
  4239.  
  4240. CUL SUBR ENTRY/EXIT
  4241. SA1 A0+UST1
  4242. SA2 A0+UST4
  4243. SB3 1 SET NO UNLOAD
  4244. LX1 59-49
  4245. LX2 59-41
  4246. NG X1,CULX IF ACS UNIT
  4247. PL X2,CUL1 IF NOT INHIBIT UNLOAD
  4248. RJ FNR FIND NEXT REEL
  4249. NE B3,B4,CULX IF REEL FOUND
  4250. CUL1 SB3 B0 SET UNLOAD UNIT
  4251. EQ CULX RETURN
  4252. DAU SPACE 4,10
  4253. ** DAU - DISMOUNT ACS UNIT.
  4254. *
  4255. * ENTRY (A0) = UDT ADDRESS OF UNIT TO DISMOUNT.
  4256. *
  4257. * EXIT DISMOUNT INITIATED.
  4258. *
  4259. * USES X - 3, 6, 7.
  4260. * A - 3.
  4261. *
  4262. * CALLS IAR.
  4263.  
  4264.  
  4265. DAU SUBR ENTRY/EXIT
  4266. SA3 A0+UMST
  4267. MX7 -2
  4268. MX6 57
  4269. BX3 X6*X3 CLEAR STATUS FLAGS
  4270. BX3 -X7+X3 SET DISMOUNT IN PROGRESS
  4271. SX6 /ATF/DMT SET DISMOUNT REQUEST
  4272. RJ IAR INITIATE ATF REQUEST
  4273. EQ DAUX RETURN
  4274. FAV SPACE 4,20
  4275. ** FAV - FIND ACS VSN.
  4276. *
  4277. * ENTRY (X1) = EXTERNAL VSN LEFT JUSTIFIED.
  4278. *
  4279. * EXIT (B3) = 0 IF VSN NOT FOUND.
  4280. * (B3) = UDT ADDRESS IF VSN FOUND IN UDT.
  4281. * (B3) .LT. 0 IF VSN FOUND IN VET.
  4282. * (X3) = 0 IF VSN FOUND IN UDT ON UNASSIGNED UNIT.
  4283. * (X3) .NE. 0 IF VSN FOUND IN UDT ON ASSIGNED UNIT.
  4284. * (X7) = MOUNT STATUS IF VSN FOUND IN UDT.
  4285. * (X3) = *COMSRSX* MESSAGE CODE IF VSN FOUND IN VET AND
  4286. * NOT TRANSIENT ERROR.
  4287. * (X3) = 0 IF VSN FOUND IN VET AND TRANSIENT ERROR.
  4288. * (B6) = UDT ADDRESS OF AVAILABLE UNIT IF VSN NOT FOUND.
  4289. * (B6) = 0 IF VSN NOT FOUND AND NO AVAILABLE UNIT FOUND.
  4290. *
  4291. * USES X - 0, 2, 3, 4, 6, 7.
  4292. * A - 2, 3, 4.
  4293. * B - 3, 4, 5, 6.
  4294.  
  4295.  
  4296. FAV SUBR ENTRY/EXIT
  4297. SA2 NXAU
  4298. SA4 ASGU
  4299. TB3 -UNITL,UBUF
  4300. TB4 0,UBUF,LWA
  4301. MX0 36
  4302. MX6 -3
  4303. SB6 B0+ INITIALIZE AVAILABLE UNIT POINTER
  4304. SB5 X2+ SET NEXT ACS MOUNT POINTER
  4305. LX4 -1 INITIALIZE ACCESSIBILITY MASK
  4306.  
  4307. * CHECK VSN ON UNIT.
  4308.  
  4309. FAV1 SB3 B3+UNITL ADVANCE UDT ADDRESS
  4310. EQ B3,B4,FAV2 IF ALL UNITS CHECKED
  4311. SA2 B3+UST1
  4312. LX4 1 ADVANCE AVAILABLE UNIT MASK
  4313. LX2 59-49
  4314. PL X2,FAV1 IF NOT ACS UNIT
  4315. SA2 B3+UMST
  4316. SA3 B3+UVRI
  4317. BX7 -X6*X2 MOUNT STATUS AND CONTROL PATH ERROR
  4318. BX2 X2-X1
  4319. BX2 X0*X2
  4320. ZR X2,FAVX IF VSN FOUND
  4321.  
  4322. * CHECK UNIT AVAILABILITY.
  4323.  
  4324. GE B6,B5,FAV1 IF BEST UNIT ALREADY FOUND
  4325. NZ X3,FAV1 IF UNIT ASSIGNED OR SELECTED FOR UNIT SWAP
  4326. SA2 B3+UREQ
  4327. PL X4,FAV1 IF UNIT NOT AVAILABLE FOR ASSIGNMENT
  4328. NZ X7,FAV1 IF MOUNT OR DISMOUNT OR CONTROL PATH ERROR
  4329. NZ X2,FAV1 IF PROCESSOR ACTIVE
  4330. SB6 B3 UPDATE AVAILABLE UNIT POINTER
  4331. EQ FAV1 CHECK NEXT UNIT
  4332.  
  4333. * CHECK FOR PREVIOUS MOUNT ERROR ON VSN.
  4334.  
  4335. FAV2 SA2 VET-1
  4336. SB3 B0+ SET VSN NOT FOUND
  4337. FAV3 SA2 A2+1 GET VET ENTRY
  4338. BX3 X2-X1
  4339. BX3 X0*X3
  4340. ZR X3,FAV4 IF PREVIOUS MOUNT ERROR ON VSN
  4341. NZ X2,FAV3 IF MORE ENTRIES TO CHECK
  4342. SX3 A2-VET-VETL
  4343. NZ X3,FAVX IF ERROR TABLE NOT FULL
  4344. SB6 B0 INDICATE NO AVAILABLE UNIT
  4345. EQ FAVX RETURN
  4346.  
  4347. FAV4 MX7 -6
  4348. SB3 -1 SET ERROR ON VSN
  4349. BX3 -X7*X2 SET ERROR CODE
  4350. EQ FAVX RETURN
  4351. FNR SPACE 4,10
  4352. ** FNR - FIND NEXT REEL.
  4353. *
  4354. * EXIT (B3) .NE. (B4) IF VSN FOUND.
  4355. * (B3) = UDT ADDRESS IF VSN FOUND.
  4356. *
  4357. * USES A - 1, 2, 3, 4, 5.
  4358. * X - 1, 2, 3, 4, 5, 6, 7.
  4359. * B - 3, 4.
  4360.  
  4361.  
  4362. FNR SUBR ENTRY/EXIT
  4363.  
  4364. * INITIALIZE FOR REEL SEARCH.
  4365.  
  4366. SA1 A0+UISN
  4367. SA2 ASGU
  4368. TB3 -UNITL,UBUF SET UDT FWA
  4369. MX7 36
  4370. MX6 37
  4371. LX2 -1 INITIALIZE ASSIGNABLE UNIT MASK
  4372. BX7 X7*X1 REQUESTED VSN
  4373. SA1 A0+UESN
  4374. LX1 59-5 POSITION SCRATCH REQUEST FLAG
  4375. SB4 B3 SET EXIT CONDITION FOR NO VSN
  4376. ZR X7,FNRX IF VSN UNKNOWN
  4377. TB4 0,UBUF,LWA SET UDT LWA+1
  4378.  
  4379. * SEARCH FOR REQUESTED REEL.
  4380.  
  4381. FNR1 SB3 B3+UNITL ADVANCE UDT ADDRESS
  4382. EQ B3,B4,FNRX IF ALL UNITS CHECKED
  4383. SA3 B3+UVSN
  4384. SA4 B3+UVRI
  4385. LX2 1
  4386. PL X2,FNR1 IF UNIT NOT AVAILABLE FOR ASSIGNMENT
  4387. BX5 X6*X3 VSN AND LABEL CHECK FLAG
  4388. NZ X4,FNR1 IF UNIT ASSIGNED OR SELECTED FOR UNIT SWAP
  4389. BX5 X5-X7
  4390. LX3 59-22
  4391. ZR X5,FNR2 IF MATCHING VSN AND NO LABEL CHECK
  4392. PL X1,FNR1 IF NOT SCRATCH REQUEST
  4393. PL X3,FNR1 IF SCRATCH NOT MOUNTED
  4394. FNR2 SA3 A0+UST1
  4395. SA4 B3+UST1
  4396. SA5 =77020263000000000000B GET UNIT TYPE MASK
  4397. BX3 X3-X4 COMPARE UNIT TYPE
  4398. BX3 X5*X3
  4399. NZ X3,FNR1 IF NOT SAME UNIT TYPE
  4400. SA3 B3+UREQ
  4401. NZ X3,FNR1 IF PROCESSOR ACTIVE
  4402. EQ FNRX RETURN
  4403. GNS SPACE 4,15
  4404. ** GNS - GET NEXT STRING ITEM.
  4405. * ALL ITEMS WITH BIT 11 SET (PARAMETERS) ARE SKIPPED OVER.
  4406. *
  4407. * ENTRY (X4) = REQUEST POINTER.
  4408. * (A4) = A0+UREQ.
  4409. *
  4410. * EXIT (X4) = UPDATED.
  4411. * (X7) = PROCESSOR OR 0, IF NONE.
  4412. * (A0+UREQ) = (X6) = UPDATED REQUEST POINTER.
  4413. *
  4414. * USES X - 1, 2, 3, 4, 6, 7.
  4415. * A - 1, 6, 7.
  4416. * B - 5, 6.
  4417.  
  4418.  
  4419. GNS3 BX4 X4-X4
  4420. SA7 A4 CLEAR REQUEST WORD
  4421.  
  4422. GNS SUBR ENTRY/EXIT
  4423. GNS1 MX3 -12 EXTRACT ADDRESS
  4424. LX4 -36
  4425. BX7 -X3*X4
  4426. LX4 -12 EXTRACT BYTE POINTER
  4427. BX6 -X3*X4
  4428. SA1 X7 READ PROCESSOR TABLE
  4429. SB6 X6
  4430. LX2 X1,B6 EXTRACT NEXT OPERATION
  4431. BX7 -X3*X2
  4432. LX2 59-11
  4433. ZR X7,GNS3 IF END OF STRING
  4434. SB5 B6-60 ADVANCE STRING POINTER
  4435. NZ B5,GNS2 IF NOT AT END OF WORD
  4436. SX6 B1 ADVANCE WORD
  4437. BX4 X3*X4 CLEAR BYTE INDEX
  4438. LX6 48
  4439. IX4 X4+X6
  4440. GNS2 SX3 12
  4441. IX4 X4+X3
  4442. LX4 48
  4443. NG X2,GNS1 IF PARAMETER SKIP IT
  4444. BX6 X4
  4445. SA6 A4
  4446. EQ GNSX RETURN
  4447. GPI SPACE 4,15
  4448. ** GPI - GET PARAMETER ITEM IF NEXT IN STRING.
  4449. *
  4450. * ONLY AN ITEM WITH BIT 11 SET (PARAMETERS) IS RETURNED.
  4451. *
  4452. * ENTRY (X4) = REQUEST POINTER.
  4453. * (A4) = A0+UREQ.
  4454. *
  4455. * EXIT (X2) = 0, IF NO PARAMETER RETURNED.
  4456. * (X4) = UPDATED IF PARAMETER FOUND.
  4457. * (X7) = PROCESSOR OR 0, IF NONE.
  4458. * (A0+UREQ) = (X6) = UPDATED REQUEST POINTER.
  4459. *
  4460. * USES X - 1, 2, 3, 4, 6, 7.
  4461. * A - 1, 6.
  4462. * B - 5, 6.
  4463.  
  4464.  
  4465. GPI2 SX7 B0+
  4466. BX2 X2-X2
  4467. LX4 48
  4468.  
  4469. GPI SUBR ENTRY/EXIT
  4470. MX3 -12 EXTRACT ADDRESS
  4471. LX4 -36
  4472. BX7 -X3*X4
  4473. LX4 -12 EXTRACT BYTE POINTER
  4474. BX6 -X3*X4
  4475. SA1 X7 READ PROCESSOR TABLE
  4476. SB6 X6
  4477. LX2 X1,B6 EXTRACT NEXT OPERATION
  4478. BX7 -X3*X2
  4479. LX2 59-11
  4480. PL X2,GPI2 IF NOT PARAMETER
  4481. SB5 B6-60 ADVANCE STRING POINTER
  4482. NZ B5,GPI1 IF NOT AT END OF WORD
  4483. SX2 B1 ADVANCE WORD
  4484. BX4 X3*X4 CLEAR BYTE INDEX
  4485. LX2 48
  4486. IX4 X4+X2
  4487. GPI1 SX3 12 ADVANCE BYTE INDEX
  4488. IX6 X4+X3
  4489. SX2 B1
  4490. LX6 48
  4491. BX4 X6
  4492. SA6 A4
  4493. LX2 11
  4494. BX7 -X2*X7
  4495. EQ GPIX RETURN
  4496. GNR SPACE 4,10
  4497. ** GNR - GET NEXT REQUEST.
  4498. *
  4499. * EXIT (X4) = 0, OR REQUEST IF ONE FOUND.
  4500. * (A4) = A0+UREQ.
  4501. * STACKED REQUEST FLAG CLEARED IF NO STACKED REQUESTS.
  4502. * REQUEST STORED AT (A0+UREQ) IF EXTRACTED FROM UNIT
  4503. * REQUEST QUEUE.
  4504. *
  4505. * USES X - 1, 2, 3, 4, 6.
  4506. * A - 1, 3, 4, 6.
  4507.  
  4508.  
  4509. GNR2 MX2 -59 CLEAR STACKED REQUEST FLAG
  4510. BX6 -X2*X3
  4511. SX4 B0
  4512. SA6 A3
  4513.  
  4514. GNR SUBR ENTRY/EXIT
  4515. SA4 A0+UREQ
  4516. NZ X4,GNRX IF REQUEST FOUND
  4517. SA3 A0+UFLA
  4518. PL X3,GNRX IF NOT STACKED REQUESTS
  4519. TA1 -1,UQUE UNIT REQUEST BUFFER
  4520. SX2 B2
  4521. LX2 54
  4522. GNR1 SA1 A1+1 READ NEXT ENTRY
  4523. NG X1,GNR2 IF END OF TABLE
  4524. BX6 X1-X2
  4525. ZR X1,GNR1 IF EMPTY ENTRY
  4526. AX6 54
  4527. NZ X6,GNR1 IF NOT THIS UNIT
  4528. SA6 A1 CLEAR REQUEST
  4529. BX6 X1-X2
  4530. SA6 A4 STORE REQUEST
  4531. BX4 X1-X2
  4532. EQ GNRX RETURN
  4533. HGU SPACE 4,10
  4534. ** HGU - HANG UNIT ON SYSTEM ERROR.
  4535. *
  4536. * USES X - 7.
  4537.  
  4538.  
  4539. HGU BSS 0 ENTRY
  4540. SX7 PHNG HANG UNIT
  4541. EQ EXI4 MAKE REQUEST
  4542. IAR SPACE 4,15
  4543. ** IAR - INITIATE ATF REQUEST.
  4544. *
  4545. * ENTRY (A3) = *UMST* ADDRESS.
  4546. * (X3) = *UMST*.
  4547. * (X6) = ATF REQUEST CODE.
  4548. *
  4549. * EXIT *UARP* SET WITH REQUEST CODE AND SEQUENCE NUMBER.
  4550. * *UARP* TIME FIELD = 0.
  4551. * SEND REQUEST FLAG SET IN *UMST*.
  4552. * (ATFS) .NE. 0.
  4553. *
  4554. * USES X - 1, 2, 6, 7.
  4555. * A - 1, 6, 7.
  4556.  
  4557.  
  4558. IAR SUBR ENTRY/EXIT
  4559. SA1 IARA GET NEXT REQUEST SEQUENCE NUMBER
  4560. LX6 36
  4561. MX7 -16
  4562. SX2 X1+B1 ADVANCE SEQUENCE NUMBER
  4563. BX7 -X7*X2
  4564. SA7 A1 SET NEXT SEQUENCE NUMBER
  4565. LX1 42
  4566. SX7 B1
  4567. BX6 X6+X1 SET REQUEST ID AND REQUEST CODE
  4568. SA7 ATFS SET ATF REQUEST FLAG
  4569. SA6 A3+UARP-UMST SET REQUEST PARAMETERS
  4570. LX7 3-0
  4571. BX7 X3+X7 SET SEND REQUEST FLAG
  4572. SA7 A3 UPDATE MOUNT STATUS
  4573. EQ IARX RETURN
  4574.  
  4575.  
  4576. IARA CON 0 ATF REQUEST SEQUENCE NUMBER
  4577. IXR SPACE 4,15
  4578. ** IXR - ISSUE INCORRECT EXTERNAL REQUEST MESSAGE.
  4579. *
  4580. * ENTRY (X1) = REQUEST WORD IN ERROR.
  4581. * (X2) = MESSAGE TERMINATION TEXT.
  4582. *
  4583. * EXIT ERROR MESSAGE ISSUED.
  4584. *
  4585. * USES X - 6, 7.
  4586. * A - 6, 7.
  4587. *
  4588. * CALLS WOD.
  4589. *
  4590. * MACROS MESSAGE.
  4591.  
  4592.  
  4593. IXR SUBR ENTRY/EXIT
  4594. BX6 X2 TERMINATE MESSAGE
  4595. SA6 IXRA+5
  4596. RJ WOD CONVERT BAD REQUEST
  4597. SA6 IXRA+3
  4598. SA7 IXRA+4
  4599. MESSAGE IXRA ISSUE ERROR MESSAGE
  4600. EQ IXRX RETURN
  4601.  
  4602.  
  4603. IXRA DATA 30H INCORRECT EXTERNAL REQUEST -
  4604. BSSZ 3
  4605. MAV SPACE 4,15
  4606. ** MAV - MOUNT ACS VSN.
  4607. *
  4608. * ENTRY (X1) = VSN TO MOUNT LEFT JUSTIFIED.
  4609. * (B6) = UDT ADDRESS OF UNIT FOR MOUNT.
  4610. * UNIT DISMOUNTED.
  4611. *
  4612. * EXIT (B6) = UDT ADDRESS OF UNIT FOR MOUNT.
  4613. * MOUNT INITIATED ON ACS UNIT.
  4614. *
  4615. * USES X - 2, 3, 6, 7.
  4616. * A - 3, 6.
  4617. *
  4618. * CALLS IAR.
  4619.  
  4620.  
  4621. MAV SUBR ENTRY/EXIT
  4622. SA3 B6+UMST
  4623. MX6 36
  4624. BX6 X6*X1 VSN
  4625. SX7 1
  4626. BX6 X6+X7 VSN AND MOUNT IN PROGRESS STATUS
  4627. MX7 57
  4628. BX3 X7*X3 CLEAR ERROR AND STATUS FLAGS
  4629. BX3 X3+X6 SET VSN AND MOUNT IN PROGRESS
  4630. SX6 /ATF/MNT SET MOUNT REQUEST
  4631. RJ IAR INITIATE ATF REQUEST
  4632. SX6 B6+UNITL ADVANCE NEXT UNIT POINTER
  4633. TX2 X6,-UBUF,LWA
  4634. NG X2,MAV1 IF NOT END OF UDT
  4635. TX6 0,UBUF SET FIRST UNIT
  4636. MAV1 SA6 NXAU SET NEXT UNIT TO ASSIGN
  4637. EQ MAVX RETURN
  4638. MQE SPACE 4,15
  4639. ** MQE - MAKE QUEUED ENTRY.
  4640. *
  4641. * ENTRY (A0) = UDT ADDRESS.
  4642. * (B2) = UDT ORDINAL.
  4643. * (X5) = PROCESSOR STRING VALUE TO BE SAVED (BITS 0-29).
  4644. * (X7) = FWA PROCESSOR STRING.
  4645. *
  4646. * USES X - 1, 2, 3, 4, 5, 6, 7.
  4647. * A - 1, 2, 4, 6, 7.
  4648. * B - 2, 7.
  4649. *
  4650. * MACROS MEMORY.
  4651.  
  4652.  
  4653. MQE10 MX7 60 SET NEW END OF TABLE
  4654. SA7 A2+B7
  4655. EQ MQE3 CHECK FL REQUIREMENTS
  4656.  
  4657. MQE11 SA1 A0+UFLA SET STACKED REQUEST FLAG
  4658. SA6 A2+
  4659. BX7 X3+X1
  4660. SA7 A1
  4661. NG X2,MQE10 IF STORED AT END OF STACK
  4662.  
  4663. MQE SUBR ENTRY/EXIT
  4664. TA2 0,UQUE
  4665. MX3 24
  4666. LX7 36
  4667. SX1 12 BUILD PROCESSOR STRING QUEUED ENTRY
  4668. SA4 A0+UREQ
  4669. BX5 -X3*X5
  4670. LX1 48
  4671. BX3 X7+X5
  4672. IX6 X3+X1
  4673. MX7 6
  4674. SA6 A4
  4675. ZR X4,MQEX IF NO QUEUED REQUESTS
  4676. SX5 B2 SET UDT ORDINAL IN ENTRY
  4677. LX5 54
  4678. BX6 X4+X5
  4679. MX3 1
  4680. SB7 2
  4681. MQE1 BX4 X2-X5
  4682. ZR X2,MQE11 IF EMPTY SLOT OR END OF TABLE
  4683. SA2 A2+B1
  4684. BX4 X7*X4
  4685. NZ X4,MQE1 IF NOT ENTRY FOR THIS UNIT
  4686. SA1 A2-B1 REREAD ENTRY HIT MADE ON
  4687. SA6 A2-1 STORE NEW ENTRY
  4688.  
  4689. * MOVE TABLE DOWN.
  4690.  
  4691. MQE2 BX6 X1
  4692. LX7 X2
  4693. SA1 A1+B7
  4694. SA2 A2+B7
  4695. SA6 A1-B1
  4696. SA7 A2-B1
  4697. PL X7,MQE2 IF NOT END OF TABLE
  4698. BX6 X1
  4699. LX7 X2
  4700. SA6 A6+B7
  4701. SA7 A7+B7
  4702.  
  4703. * CHECK IF MORE STORAGE NEEDED.
  4704.  
  4705. MQE3 SA1 TSRP CHECK SPACE LEFT BETWEEN *UQUE* AND *TSRP*
  4706. SX7 A7+6
  4707. IX2 X7-X1
  4708. NG X2,MQEX IF ENOUGH INTERTABLE SPACE
  4709. SA4 A1-B1 LENGTH OF STAGE REQUEST TABLE
  4710. IX3 X4+X1 LWA+1 OF STAGE REQUEST TABLE
  4711. IX6 X2+X3 ADD IN NEEDED WORDS
  4712. SA2 FLST CHECK AVAILABLE FL
  4713. SX7 X6+PFTBL*2+6
  4714. AX2 30
  4715. IX6 X2-X7
  4716. PL X6,MQE3.1 IF ENOUGH MEMORY FOR MOVE
  4717. MEMORY CM,A2,R,X7+MEMI REQUEST MEMORY
  4718. EQ MQE3 RECHECK FIELD LENGTH
  4719.  
  4720. * MOVE FIRST ENTRY OF *PFM* REQUEST TABLE TO END OF TABLE
  4721. * TO ALLOW SPACE FOR ADDITIONS TO *UQUE* QUEUE.
  4722.  
  4723. MQE3.1 ZR X4,MQE3.2 IF NO WORDS IN TABLE
  4724. SA4 X1 MOVE WORDS 0 AND 1
  4725. SA2 A4+B1
  4726. BX6 X4
  4727. LX7 X2
  4728. SA4 A2+B1 MOVE WORDS 2 AND 3
  4729. SA2 A4+B1
  4730. SA6 X3
  4731. SA7 A6+B1
  4732. BX6 X4
  4733. LX7 X2
  4734. SA4 A2+B1 MOVE WORDS 4 AND 5
  4735. SA2 A4+B1
  4736. SA6 A7+B1
  4737. SA7 A6+B1
  4738. BX6 X4
  4739. LX7 X2
  4740. SA4 A2+B1 MOVE WORDS 6 AND 7
  4741. SA2 A4+B1
  4742. SA6 A7+B1
  4743. SA7 A6+B1
  4744. BX6 X4
  4745. LX7 X2
  4746. SA6 A7+B1
  4747. SA7 A6+B1
  4748. ERRNZ PFTBL-8 CODE ASSUMES 8 WORD ENTRY
  4749. MQE3.2 SA4 TSRM
  4750. SX7 X1+PFTBL SET NEW TABLE FWA
  4751. SX6 X4+B1 INCREMENT MODIFICATION COUNT
  4752. SA7 A4-B1
  4753. SA6 A4
  4754. EQ MQEX RETURN
  4755. PCR SPACE 4,20
  4756. ** PCR - PRE-PROCESS *CIO* REQUEST.
  4757. *
  4758. * ENTRY (A0) = UDT ADDRESS.
  4759. * (X3) = *UCIA*.
  4760. * (A3) = ADDRESS OF *UCIA*.
  4761. * (A4) = ADDRESS OF *UREQ*.
  4762. *
  4763. * EXIT (A0) = UDT ADDRESS.
  4764. * (A4) = ADDRESS OF *UREQ*.
  4765. * (X7) = REQUEST.
  4766. * (X5) = REQUEST PARAMETERS.
  4767. * TO *ABR* IF ERROR IN *CIO* REQUEST.
  4768. *
  4769. * USES X - ALL.
  4770. * A - 1, 2, 6.
  4771. * B - 3, 4, 5, 6, 7.
  4772. *
  4773. * CALLS SBS.
  4774.  
  4775.  
  4776. * PROCESS REQUEST ON *S* OR *L* FORMAT TAPE.
  4777.  
  4778. PCR4 AX1 1
  4779. MX0 4
  4780. ZR X1,PCR3 IF FET LENGTH .LE. 6
  4781. LX0 35-59
  4782. BX6 X0*X2 GET LEVEL NUMBER
  4783. ZR X6,PCR5 IF LEVEL 0
  4784. BX6 X0+X2 SET LEVEL 17B
  4785. SA6 A2
  4786. PCR5 SX0 1000B SET DEFAULT BLOCK SIZE
  4787. RJ SBS SET BLOCK SIZE FOR S/L FORMAT
  4788.  
  4789. * BUILD REQUEST AND CHECK END OF SET AND POSITION LOST.
  4790.  
  4791. PCR6 SA1 A0+UST2
  4792. SX7 4074B
  4793. LX3 12
  4794. SX6 B4-/CIO/SKP
  4795. LX1 59-6
  4796. ZR X6,PCR7 IF SKIP FUNCTION
  4797. SX7 4060B CLEAR TERMINATION CONDITION
  4798. PCR7 BX5 X7*X3 EXTRACT FUNCTION FLAGS
  4799. MX6 2
  4800. SX7 TPRO+B4 SET REQUEST
  4801. BX6 X6*X1
  4802. LX5 24 SET REQUEST PARAMETERS
  4803. ZR X6,PCRX IF NOT END OF SET OR POSITION LOST
  4804. ZR B6,PCR9 IF *POSMF* FUNCTION
  4805. PL X6,PCR8 IF NOT END OF SET
  4806. SX5 IOS * INCORRECT OPERATION AT END OF SET*
  4807. EQ ABR ABORT REQUEST
  4808.  
  4809. PCR8 SX2 B4-/CIO/REW
  4810. ZR X2,PCRX IF *REWIND* FUNCTION
  4811. SX5 FPI * FILE POSITION INDETERMINATE*
  4812. EQ ABR ABORT REQUEST
  4813.  
  4814. PCR9 MX6 -59
  4815. BX6 -X6*X1 CLEAR END OF SET FLAG
  4816. LX6 6-6-59+6
  4817. SA6 A1
  4818.  
  4819. PCR SUBR ENTRY/EXIT
  4820.  
  4821. * CHECK FOR REWIND OR REEL CHECK BEFORE *CIO* OPERATION.
  4822.  
  4823. SA2 A0+UST2
  4824. MX6 -2
  4825. LX3 6
  4826. MX7 -4
  4827. LX2 0-10
  4828. BX7 -X7*X3
  4829. BX2 -X6*X2
  4830. LX3 -6
  4831. SB3 X2
  4832. SB4 X7+ INTERNAL FUNCTION CODE
  4833. EQ B3,B1,PCR0 IF NO REWIND OR REEL CHECK REQUIRED
  4834. SX5 B0+
  4835. SX7 PRWF
  4836. GT B3,B1,PCRX IF REWIND BEFORE REQUEST
  4837. SX7 PCHR
  4838. EQ PCRX PERFORM INITIAL REEL CHECK
  4839.  
  4840. * CHECK FET PARAMETERS.
  4841.  
  4842. PCR0 SA1 A0+UST4 CHECK FORMAT
  4843. SA2 A0+UCIB GET EXTERNAL CODE
  4844. LX1 24
  4845. AX1 54
  4846. SB7 X1-TFF
  4847. NZ B7,PCR1 IF NOT F FORMAT
  4848. MX6 1
  4849. LX6 52-59
  4850. BX1 X6*X3 GET *READN*/*WRITEN* FLAG
  4851. NZ X1,PCR1 IF *READN*/*WRITEN*
  4852. LX6 53-59-52+59
  4853. BX6 X3+X6 SET *READCW*/*WRITECW* FLAG
  4854. SA6 A3+
  4855. BX3 X6
  4856. PCR1 LX2 58-48
  4857. MX1 -7
  4858. LX3 18
  4859. BX4 -X1*X2 GET EXTERNAL FUNCTION CODE
  4860. MX6 -6
  4861. SB6 X4-110B/4 CHECK FOR *POSMF*
  4862. BX1 -X6*X3 FET LENGTH - 5
  4863. LX2 59-41-58+48
  4864. SB5 X1-13+5
  4865. LX3 -18
  4866. SX6 1001B
  4867. NZ B6,PCR2 IF NOT *POSMF*
  4868. PL B5,PCR2 IF FET LENGTH .GE. 13D
  4869. PL X2,PCR3 IF NOT EXTENDED LABELS
  4870. PCR2 SB7 B7-TFS+TFF
  4871. MX5 -18
  4872. LX2 41-59
  4873. BX5 -X5*X2 *MLRS* VALUE
  4874. IX6 X5-X6
  4875. EQ B7,B1,PCR4 IF L FORMAT
  4876. NZ B7,PCR6 IF NOT S FORMAT
  4877. NG X6,PCR4 IF MLRS .LE. 1000B
  4878.  
  4879. * PROCESS BUFFER ARGUMENT ERROR.
  4880.  
  4881. PCR3 SX5 BAE * BUFFER ARGUMENT ERROR*
  4882. EQ ABR ABORT REQUEST
  4883. PUR SPACE 4,10
  4884. ** PUR - PRE-PROCESS UNIT RETURN.
  4885. *
  4886. * ENTRY (X6) = *UFRQ*
  4887. *
  4888. * EXIT (X7) = REQUEST.
  4889. * (X5) = 0.
  4890. * TO *HGU* IF INCORRECT PROCESSOR SEQUENCE NUMBER.
  4891. *
  4892. * USES X - 0, 1, 2, 5, 6, 7.
  4893. * A - 1, 6.
  4894.  
  4895.  
  4896. PUR SUBR ENTRY/EXIT
  4897.  
  4898. * THE RETURN UNIT PROCESSORS ARE DIVIDED INTO SEQUENCES SUCH
  4899. * THAT PROCESSING CAN BE RESUMED AFTER A *1MT* OR *1MU* ERROR.
  4900.  
  4901. MX0 -12
  4902. LX6 -36
  4903. BX1 -X0*X6 CURRENT SEQUENCE NUMBER
  4904. SX5 B0
  4905. SX2 X1-PURAL
  4906. PL X2,HGU IF INCORRECT SEQUENCE NUMBER, HANG UNIT
  4907. SA1 PURA+X1 GET PROCESSOR
  4908. SX2 B1
  4909. IX6 X6+X2 ADVANCE SEQUENCE NUMBER FOR REENTRY
  4910. LX6 36
  4911. SX7 X1 SET UNIT RETURN PROCESSOR
  4912. SA6 A0+UFRQ
  4913. EQ PURX RETURN
  4914.  
  4915.  
  4916. PURA BSS 0 TABLE OF RETURN UNIT PROCESSORS
  4917. CON PRTA FIRST SEQUENCE
  4918. CON PRTB SECOND SEQUENCE
  4919. CON PRTC THIRD SEQUENCE
  4920. PURAL EQU *-PURA MAXIMUM SEQUENCE + 1
  4921. PVD SPACE 4,15
  4922. ** PVD - PROCESS VOLUME IN DRIVE ERROR.
  4923. *
  4924. * ENTRY (A0) = UDT ADDRESS OF UNIT ENCOUNTERING ERROR.
  4925. * (B3) = MOUNT REQUEST ERROR CODE.
  4926. *
  4927. * EXIT DISMOUNT INITIATED IF DRIVE IN USE ERROR.
  4928. * DISMOUNT INITIATED ON UNIT INDICATED IN RESPONSE IF
  4929. * VOLUME IN DRIVE ERROR, UNIT IS ON THIS SYSTEM, AND
  4930. * NO MOUNT OR DISMOUNT ACTIVITY IS PRESENT.
  4931. *
  4932. * USES X - 1, 2, 3, 6, 7.
  4933. * A - 0, 1, 3.
  4934. * B - 2, 3, 4.
  4935. *
  4936. * CALLS DAU.
  4937.  
  4938.  
  4939. PVD SUBR ENTRY/EXIT
  4940.  
  4941. * CHECK FOR ERROR REQUIRING FORCED DISMOUNT.
  4942.  
  4943. SB4 B3-/ATF/DIU
  4944. ZR B4,PVD2 IF DRIVE IN USE ERROR
  4945. SB4 B3-/ATF/VID
  4946. NZ B4,PVDX IF NOT VOLUME IN DRIVE ERROR
  4947.  
  4948. * SEARCH FOR UNIT WITH VOLUME MOUNTED.
  4949.  
  4950. SA1 RCAL+1+/ATF/RQP1
  4951. SB2 -1
  4952. TB3 -UNITL,UBUF
  4953. TB4 0,UBUF,LWA
  4954. MX6 21
  4955. LX6 -36
  4956. TX2 0,UACI
  4957. BX6 X6*X1 DRIVE IDENTIFICATION FROM RESPONSE
  4958. LX2 3
  4959. MX7 12
  4960. LX7 -36
  4961. PVD1 SB3 B3+UNITL ADVANCE UDT ADDRESS
  4962. EQ B3,B4,PVDX IF END OF UDT ENTRIES
  4963. SA1 B3+UST1
  4964. SA3 B3+UMST
  4965. SB2 B2+B1 ADVANCE UDT ORDINAL
  4966. LX1 59-49
  4967. PL X1,PVD1 IF NOT ACS UNIT
  4968. SA0 B3 SET UDT ADDRESS
  4969. BX1 X7*X3
  4970. BX1 X1+X2 DRIVE IDENTIFICATION
  4971. BX1 X1-X6
  4972. NZ X1,PVD1 IF NOT INDICATED UNIT
  4973. SA1 ACCU
  4974. MX6 -3
  4975. BX6 -X6*X3
  4976. NZ X6,PVDX IF MOUNT OR DISMOUNT OR CONTROL PATH ERROR
  4977. LX1 B2
  4978. PL X1,PVDX IF UNIT NOT ACCESSIBLE
  4979.  
  4980. * DISMOUNT UNIT.
  4981.  
  4982. PVD2 RJ DAU DISMOUNT UNIT
  4983. EQ PVDX RETURN
  4984. PVE SPACE 4,15
  4985. ** PVE - PROCESS VSN ERROR ON ACS UNIT MOUNT.
  4986. *
  4987. * ENTRY (A0) = UDT ADDRESS.
  4988. * (B2) = UDT ORDINAL.
  4989. * (X1) = VSN LEFT JUSTIFIED.
  4990. * (B3) = *COMSATF* ERROR CODE.
  4991. *
  4992. * EXIT ENTRY MADE IN VSN ERROR TABLE.
  4993. * VSN EVENT ISSUED IF UNIT UNASSIGNED WITH NO ACTIVITY.
  4994. * (B3) = *COMSATF* ERROR CODE.
  4995. *
  4996. * USES X - 0, 1, 2, 3, 5, 6, 7.
  4997. * A - 2, 3, 6, 7.
  4998. *
  4999. * CALLS MQE.
  5000.  
  5001.  
  5002. PVE SUBR ENTRY/EXIT
  5003. SB4 B3-/ATF/MXVE
  5004. PL B4,PVEX IF NOT VSN ERROR
  5005. SA2 VET-1
  5006. MX0 36
  5007. BX1 X0*X1 VSN WITH ERROR
  5008. PVE1 SA2 A2+1 GET NEXT ENTRY
  5009. NZ X2,PVE1 IF NOT END OF ENTRIES
  5010. SX3 A2-VET-VETL
  5011. ZR X3,PVEX IF TABLE FULL
  5012. SX7 B0+
  5013. SX6 B3-/ATF/MXFE ERROR CODE
  5014. SX3 B0+
  5015. PL X6,PVE2 IF TRANSIENT VSN ERROR
  5016. SX6 B3-/ATF/URL
  5017. SX3 /RSX/UOL
  5018. ZR X6,PVE2 IF UNREADABLE OPTICAL LABEL
  5019. SX3 /RSX/NAC SET NOT IN ACS
  5020. PVE2 BX6 X1+X3
  5021. SA6 A2 SET VSN AND ERROR
  5022. SA7 A2+1 TERMINATE ENTRIES
  5023. SA2 A0+UVRI
  5024. SA3 A0+UREQ
  5025. NZ X2,PVEX IF UNIT ASSIGNED OR SELECTED FOR UNIT SWAP
  5026. NZ X3,PVEX IF PROCESSOR ACTIVE
  5027. SX5 A6-VET SET ORDINAL OF ERROR TABLE ENTRY
  5028. SX7 PVME ISSUE EVENT TO ROLL IN *RESEX*
  5029. RJ MQE MAKE QUEUE ENTRY
  5030. EQ PVEX RETURN
  5031. RFL SPACE 4,20
  5032. ** RFL - REDUCE FIELD LENGTH AND REPACK QUEUES.
  5033. *
  5034. * THE REDUCTION OF FIELD LENGTH IS PERFORMED BEFORE
  5035. * THE TABLES ARE COMPRESSED (WHICH MEANS THAT IT TAKES
  5036. * 32 SECONDS BEFORE THE SPACE IS RELEASED). THIS IS DONE
  5037. * SINCE VARIOUS TAPE ALTERNATE STORAGE RELATED PROGRAMS
  5038. * MAY BE READING THE STAGE REQUEST TABLE (*TSRP*), AND
  5039. * REDUCING THE MEMORY FROM UNDER THEM COULD CAUSE THEM TO
  5040. * ABORT. WHILE THIS STILL MAY HAPPEN IF THEY DO NOT GET
  5041. * THE CPU FOR 32 SECONDS, IT IS UNLIKELY.
  5042. *
  5043. * (TSRP) IS SET TO ZERO DURING THE TABLE PACK. BY
  5044. * DOING THIS, *COMCSRI* WILL WAIT UNTIL THE PACK IS
  5045. * COMPLETE.
  5046. *
  5047. * USES X - 1, 2, 3, 4, 6, 7.
  5048. * A - 1, 2, 3, 4, 6, 7.
  5049. * B - 2, 3, 4, 5, 6.
  5050. *
  5051. * MACROS MEMORY.
  5052.  
  5053.  
  5054. RFL SUBR ENTRY/EXIT
  5055. SA1 TSRP
  5056. SA2 TSRL
  5057. SA3 FLST
  5058. IX1 X1+X2 LWA+1 OF TABLE
  5059. AX3 30 GET CURRENT FIELD LENGTH
  5060. SX4 X1+2*PFTBL+77B+6 ADD GAP
  5061. AX4 6
  5062. LX4 6
  5063. IX6 X3-X4
  5064. ZR X6,RFL1 IF NO MEMORY CHANGE
  5065. MEMORY CM,A3,R,X4 REDUCE MEMORY
  5066.  
  5067. * REPACK *UQUE* TABLE.
  5068.  
  5069. RFL1 TA1 0,UQUE REPACK QUEUE
  5070. BX6 X1
  5071. SA6 A1
  5072. RFL2 SA1 A1+B1 SEARCH TABLE
  5073. BX6 X1
  5074. ZR X1,RFL3 IF NO ENTRY
  5075. SA6 A6+B1 STORE ENTRY
  5076. EQ RFL2 CONTINUE REPACKING QUEUE
  5077.  
  5078. RFL3 PL X1,RFL2 IF NOT END OF TABLE
  5079. SA6 A6+B1 INSURE TABLE TERMINATION
  5080. SA6 A6+B1
  5081.  
  5082. * REPACK *PFM* REQUEST TABLE.
  5083.  
  5084. SB4 A6+6+PFTBL SET DESIRED INTERTABLE GAP
  5085. SA2 TSRP
  5086. SA3 A2-B1
  5087. SB2 X2 FWA OF *PFM* REQUEST TABLE
  5088. SB3 X3 LENGTH OF TABLE
  5089. SB5 PFTBL
  5090. SB6 -B5
  5091. BX6 X6-X6
  5092. SA6 A2 FLAG TABLE-PACK-IN-PROGRESS TO STAGES
  5093. GE B4,B2,RFL5 IF CANNOT MOVE FRONT OF TABLE DOWN
  5094. RFL4 SB2 B2-B5 MOVE TABLE FWA BACKWARDS
  5095. SB3 B3+B5 INCREMENT LENGTH
  5096. SA6 B2+ SET ENTRY IDLE
  5097. LT B4,B2,RFL4 IF MORE SPACE TO MOVE TABLE
  5098. RFL5 ZR B3,RFL8 IF NO LENGTH TO TABLE
  5099. SB3 B3-B5
  5100. SA1 B3+B2 GET ENTRY
  5101. ZR X1,RFL5 IF LAST ENTRY IS IDLE
  5102. RFL6 LE B3,B6,RFL7 IF MOVED BEYOND FILL POINTER
  5103. SB6 B6+B5 ADVANCE FILL POINTER
  5104. SA1 B2+B6
  5105. NZ X1,RFL6 IF THIS ENTRY IS IN USE
  5106. SA4 B2+B3 MOVE WORDS 0 AND 1
  5107. SA2 A4+B1
  5108. SA7 A1
  5109. BX6 X4
  5110. LX7 X2
  5111. SA1 A2+B1 MOVE WORDS 2 AND 3
  5112. SA2 A1+B1
  5113. SA6 B2+B6
  5114. SA7 A6+B1
  5115. BX6 X1
  5116. LX7 X2
  5117. SA1 A2+B1 MOVE WORDS 4 AND 5
  5118. SA2 A1+B1
  5119. SA6 A7+B1
  5120. SA7 A6+B1
  5121. BX6 X1
  5122. LX7 X2
  5123. SA1 A2+B1 MOVE WORDS 6 AND 7
  5124. SA2 A1+B1
  5125. SA6 A7+B1
  5126. SA7 A6+B1
  5127. BX6 X1
  5128. LX7 X2
  5129. SA6 A7+B1
  5130. SA7 A6+B1
  5131. ERRNZ PFTBL-8 CODE ASSUMES 8 WORD ENTRY
  5132. EQ RFL5 CHECK NEXT ENTRY
  5133.  
  5134. RFL7 SB3 B3+PFTBL RESTORE TABLE LENGTH
  5135. RFL8 SX7 B3 UPDATE LENGTH AND FWA
  5136. SX6 B2
  5137. SA1 TSRM
  5138. SA7 TSRL UPDATE LENGTH
  5139. SX7 X1+B1 INCREMENT MODIFICATION COUNTER
  5140. SA7 A1
  5141. SA6 A7-B1 UPDATE FWA
  5142. EQ RFLX RETURN
  5143. SBS SPACE 4,30
  5144. ** SBS - SET BLOCK SIZE FOR S/L FORMAT TAPES.
  5145. *
  5146. * BLOCK SIZE IS CALCULATED AS FOLLOWS-
  5147. * 1) MLRS FIELD IS USED IF NON - ZERO.
  5148. * 2) 1000B IS USED IF S FORMAT AND MLRS = 0.
  5149. * 3) IF BUFFER SIZE IS .LT. MLRS, BUFFER SIZE IS USED
  5150. * UNLESS READ SKIP.
  5151. * 4) IF L FORMAT AND MLRS = 0, BLOCK SIZE IS
  5152. * COMPUTED AS FOLLOWS.
  5153. * A) LIMIT-FIRST-1 IF NOT CONTROL WORD OPERATION
  5154. * B) LIMIT-FIRST-2 IF 260/264 OPERATION
  5155. * C) LIMIT-FIRST-3 IF 200/204 OPERATION
  5156. * D) 377777B IF *READSKP*
  5157. *
  5158. * ENTRY (B7) = 0, IF S FORMAT.
  5159. * (X0) = 1000B.
  5160. * (X2) = (UDT UCIB WORD).
  5161. * (X3) = (UDT UCIA WORD).
  5162. * (X4) = EXTERNAL *CIO* FUNCTION CODE/4.
  5163. * (X5) = *MLRS* FIELD VALUE.
  5164. * (A0) = UDT ADDRESS.
  5165. * (A2) = UDT ADDRESS + UCIB.
  5166. *
  5167. * USES X - 1, 2, 4, 5, 6.
  5168. * A - 1, 6.
  5169.  
  5170.  
  5171. SBS4 IX4 X6-X5
  5172. PL X4,SBS5 IF *MLRS* .LT. BUFFER SIZE
  5173. ZR X1,SBS5 IF *READSKP*
  5174. SX5 X6+ SET *MLRS* TO BUFFER SIZE
  5175. SBS5 SX6 X5-1001B
  5176. SA1 A0+UST4
  5177. MX2 36
  5178. SX4 B0+
  5179. BX1 X2*X1
  5180. NG X6,SBS6 IF NO OVERFLOW COUNT
  5181. SX6 LBWD CALCULATE OVERFLOW
  5182. SX2 X6
  5183. SX4 X5
  5184. IX6 X5/X6
  5185. IX2 X6*X2 CALCULATE REMAINDER
  5186. IX5 X4-X2
  5187. SX4 X6
  5188. SBS6 PL X5,SBS7 IF WORD COUNT POSITIVE
  5189. SX5 B0+ SET WORD COUNT ZERO
  5190. SBS7 LX5 12
  5191. BX4 X5+X4
  5192. IX6 X1+X4
  5193. SA6 A1
  5194.  
  5195. SBS SUBR ENTRY/EXIT
  5196. SA1 A0+UCIC
  5197. SX6 X1 CALCULATE DEFAULT BLOCK SIZE
  5198. AX1 24
  5199. SX1 X1+B1
  5200. IX6 X6-X1
  5201. SX1 X4-20B/4
  5202. PL X6,SBS1 IF FET PARAMETERS PRESENT
  5203. SX6 377777B SET MAXIMUM DEFAULT BLOCK SIZE
  5204. SBS1 BX4 X3
  5205. LX4 0-52
  5206. NZ B7,SBS2 IF NOT S FORMAT
  5207. IX2 X6-X0
  5208. NG X2,SBS2 IF BUFFER SIZE .LT. 1000B WORDS
  5209. BX6 X0 SET FOR MAXIMUM OF 1000B WORDS
  5210. SBS2 NZ X5,SBS4 IF MLRS FIELD SPECIFIED
  5211. BX5 X0
  5212. MX2 -2
  5213. ZR B7,SBS4 IF S FORMAT
  5214. BX4 -X2*X4 CONTROL WORD FLAGS
  5215. IX6 X6-X4
  5216. NZ X1,SBS3 IF NOT *READSKP*
  5217. SX6 377777B SET MAXIMUM BLOCK SIZE
  5218. SBS3 SX5 X6
  5219. EQ SBS5 BUILD *UST4*
  5220. SPR SPACE 4,10
  5221. ** SPR - SET PREVIEW DISPLAY REQUEST.
  5222. *
  5223. * ENTRY (X3) = 0 IF NO ERROR MESSAGE.
  5224. * (X3) = *COMSRSX* MESSAGE CODE IF ERROR MESSAGE TO BE
  5225. * DISPLAYED.
  5226. *
  5227. * EXIT UDT SET WITH PREVIEW DISPLAY REQUEST.
  5228. *
  5229. * USES X - 1, 2, 3, 6.
  5230. * A - 1, 2, 6.
  5231.  
  5232.  
  5233. SPR SUBR ENTRY/EXIT
  5234. SA1 A0+UISN
  5235. SA2 A0+UVRI
  5236. MX6 42
  5237. LX3 12
  5238. BX1 X6*X1
  5239. BX6 X1+X3 SET ERROR CODE
  5240. LX2 59-0
  5241. SA6 A1
  5242. NG X2,SPRX IF MESSAGE ALREADY SET
  5243. MX6 1
  5244. SA6 OPRF SET NEW REQUEST FLAG
  5245. BX6 X2+X6 SET MESSAGE FLAG
  5246. LX6 0-0-59+0
  5247. SA6 A2
  5248. EQ SPRX RETURN
  5249. SUA SPACE 4,15
  5250. ** SUA - SET UDT ADDRESS.
  5251. *
  5252. * ENTRY (X5) = UDT ORDINAL (BITS 0 - 11).
  5253. *
  5254. * EXIT (X6) .GE. 0 IF INCORRECT UDT ADDRESS.
  5255. * (A0) = UDT ADDRESS IF NO ERROR.
  5256. * (B2) = UDT ORDINAL IF NO ERROR.
  5257. *
  5258. * USES X - 6, 7.
  5259. * A - 0.
  5260. * B - 2.
  5261.  
  5262.  
  5263. SUA SUBR ENTRY/EXIT
  5264. MX7 -12
  5265. SX6 UNITL
  5266. BX7 -X7*X5 UDT ORDINAL
  5267. IX6 X6*X7 UDT OFFSET
  5268. SB2 X7 SET UDT ORDINAL
  5269. TA0 X6,UBUF SET UDT ADDRESS
  5270. TX6 A0,-UBUF,LWA
  5271. EQ SUAX RETURN
  5272. SPACE 4,10
  5273. * COMMON DECKS.
  5274.  
  5275.  
  5276. *CALL COMCCPM
  5277. *CALL COMCMVE
  5278. *CALL COMCSYS
  5279. *CALL COMCWOD
  5280. TITLE *PFM*/TAPE ALTERNATE STORAGE ROUTINES.
  5281. ** *PFM*/TAPE ALTERNATE STORAGE ROUTINES.
  5282. *
  5283. * THESE ROUTINES WILL BE OVERWRITTEN BY UDT-S IF
  5284. * TAPE ALTERNATE STORAGE PROCESSING IS NOT SELECTED.
  5285.  
  5286. USE /STAGE/
  5287. NETAB BSS 0 UDT START IF NO TAPE ALTERNATE STORAGE
  5288. QUAL STAGE
  5289. SPACE 4,10
  5290. * LOCAL STORAGE.
  5291.  
  5292. MVSN DATA 0 MORE VSN-S WAITING FOR PROCESSING
  5293. ROLF DATA 0 ROLLIN EVENT TO BE ISSUED
  5294. SJIF DATA 0 VSN FOR STAGE JOB TO BE INITIATED
  5295. SPACE 4,10
  5296. * HANDLE RELOCATABLE INSTRUCTIONS.
  5297.  
  5298. TINST RMT
  5299. TINSTL. EQU *-TINST START OF TAPE ALTERNATE ONLY ENTRIES
  5300. TINST RMT
  5301. CRJ SPACE 4,60
  5302. ** CRJ - CHECK FOR REQUEST FROM STAGING JOB.
  5303. *
  5304. * PROCESS THE FOLLOWING REQUESTS FROM *RESEX*/*PFRES*.
  5305. *
  5306. * *SEV* (3) - SET STAGING VSN LIST.
  5307. *
  5308. *T RCAL 12/ FC,12/ MVSN,18/ STARTING OFFSET,18/ 1
  5309. *
  5310. * MVSN NONZERO, IF MORE VSN-S TO BE REQUESTED.
  5311. * STARTING OFFSET INDEX INTO TABLE TO ADD THESE VSN-S.
  5312. * A STARTING OFFSET OF ZERO CLEARS THE
  5313. * TABLE BEFORE COPYING THE VSN-S.
  5314. *
  5315. * THE REMAINING WORDS HAVE THE FOLLOWING FORMAT-
  5316. *
  5317. *T 20/ ,1/B,3/RTY,12/ TF,24/ PACKED VSN
  5318. *
  5319. * B SELECT BACKUP VSN.
  5320. * RTY RETRY COUNT.
  5321. * TF *FCTF* FLAGS FROM PFC.
  5322. * PACKED VSN PACKED VSN OF STAGING TAPE (12/VP,12/VS)
  5323. * VP = TWO-CHARACTER DISPLAY CODE VSN PREFIX
  5324. * VS = NUMERIC VSN SUFFIX (0000 TO 4095).
  5325. *
  5326. *
  5327. * *RER* (4) - REMOVE ENTRY FROM STAGE REQUEST TABLE.
  5328. *
  5329. *T RCAL 12/ FC,30/ UNIQUE ID,18/ 1
  5330. *
  5331. * UNIQUE ID UNIQUE IDENTIFIER OF ENTRY TO DELETE.
  5332. *
  5333. *
  5334. * *TJE* (5) - TERMINATE ENTRY IN ACTIVE STAGE JOB TABLE.
  5335. *
  5336. *T RCAL 12/ FC,24/ JSN,6/ ,18/ 1
  5337. *
  5338. * JSN JSN OF JOB ENTRY TO DELETE FROM TABLE.
  5339. *
  5340. *
  5341. * *QSR* (6) - REQUEUE STAGE REQUEST.
  5342. *
  5343. *T RCAL 12/ FC,20/ ,1/B,3/RTY,6/ ,18/ 8
  5344. *T, 6/ 1,3/ AL,19/ ,2/ P,6/ DN,12/ TRACK,12/ SECTOR
  5345. *T, 12/ TF,6/,18/ FSN,24/ PACKED VSN
  5346. *T, 42/ PFN,18/ UI
  5347. *T, 24/ JSN,15/ ,21/ EVENT
  5348. *T, 42/ FAMILY,18/
  5349. *T, 1/I,23/ LENGTH,36/ CREATION DATE-TIME
  5350. *
  5351. *
  5352. * B SELECT BACKUP VSN.
  5353. * RTY RETRY COUNT.
  5354. * AL ACCESS LEVEL OF THE FILE.
  5355. * P *PFC* ENTRY ORDINAL.
  5356. * DN DEVICE NUMBER.
  5357. * TRACK TRACK FOR THE *PFC* ENTRY.
  5358. * SECTOR SECTOR FOR THE *PFC* ENTRY.
  5359. * TF *FCTF* FLAGS FROM PFC.
  5360. * FSN FILE SEQUENCE NUMBER ON ARCHIVE TAPE.
  5361. * PACKED VSN PACKED VSN OF STAGING TAPE (12/VP,12/VS)
  5362. * VP = TWO-CHARACTER DISPLAY CODE VSN PREFIX
  5363. * VS = NUMERIC VSN SUFFIX (0000 TO 4095).
  5364. * PFN PERMANENT FILE NAME.
  5365. * UI USER INDEX.
  5366. * JSN JSN OF THE JOB REQUESTING THE FILE.
  5367. * EVENT EVENT THE JOB WILL ROLL OUT ON.
  5368. * FAMILY THE FAMILY/PACK CONTAINING THE PFC ENTRY.
  5369. * I SET IF INDIRECT ACCESS FILE.
  5370. * LENGTH LENGTH OF THE FILE IN SECTORS.
  5371. * CREATION DATE-TIME PACKED DATE AND TIME OF FILE CREATION.
  5372. *
  5373. *
  5374. * *AIB* (7) - ALTER STAGE JOB INITIALIZATION BIT.
  5375. *
  5376. *T RCAL 12/ FC,24/ JSN,5/ ,1/I,18/ 1
  5377. *
  5378. * JSN JSN OF JOB ENTRY TO CHANGE.
  5379. * I NEW VALUE FOR INITIALIZATION BIT.
  5380. *
  5381. * ENTRY (A5) = RCAL.
  5382. * (X5) = FIRST WORD OF REQUEST.
  5383. *
  5384. * EXIT (X5) = 0, IF REQUEST PROCESSED.
  5385. * (RCAL) CLEARED, IF REQUEST PROCESSED.
  5386. * (X5) PRESERVED IF NOT TAPE ALTERNATE STORAGE REQUEST.
  5387. * (A5) PRESERVED IF NOT TAPE ALTERNATE STORAGE REQUEST.
  5388. *
  5389. * USES X - 0, 1, 2, 3, 5, 6, 7.
  5390. * A - 1, 2, 3, 5, 6, 7.
  5391. * B - 2, 3, 4, 5, 6.
  5392. *
  5393. * CALLS FJE, QPR.
  5394.  
  5395.  
  5396. CRJ BSS 0 ENTRY
  5397. BX7 X5
  5398. AX7 48 POSITION FUNCTION CODE
  5399. SX0 X7-SEV
  5400.  
  5401. * *SEV* (3) - SET STAGING VSN LIST.
  5402.  
  5403. NZ X0,CRJ4 IF NOT *SEV* REQUEST
  5404. SA1 TVSP POINTER TO VSN TABLE
  5405. AX5 18
  5406. SB5 X5 GET STARTING OFFSET
  5407. MX7 -1
  5408. SB2 X1 FWA OF VSN TABLE
  5409. AX5 18 POSITION FLAGS
  5410. AX1 48
  5411. BX7 -X7*X5 EXTRACT *MORE* FLAG
  5412. SB3 X1 LENGTH OF VSN TABLE
  5413. SX6 B0+
  5414. SA7 MVSN SET *MORE* VSN FLAG
  5415. GE B5,B3,CPRX IF BEYOND END OF TABLE
  5416. SB6 B5+RCALL-1 OFFSET OF LAST NEW ENTRY
  5417. NZ B5,CRJ2 IF NOT FIRST BLOCK
  5418. SB4 B0 STARTING OFFSET TO CLEAR
  5419. CRJ1 SA6 B2+B4
  5420. SB4 B4+B1
  5421. LT B4,B3,CRJ1 IF MORE TO CLEAR
  5422. CRJ2 SA1 A5+B1 GET FIRST ENTRY
  5423. LE B6,B3,CRJ3 IF NOT GOING BEYOND MAXIMUM
  5424. SB6 B3
  5425. CRJ3 BX6 X1
  5426. SA1 A1+B1
  5427. SA6 B2+B5
  5428. SB5 B5+B1
  5429. ZR X6,CPRX IF ZERO WORD TRANSFERRED
  5430. LT B5,B6,CRJ3 IF MORE TO TRANSFER
  5431. EQ CPRX COMPLETE REQUEST
  5432.  
  5433. * *RER* (4) - REMOVE ENTRY FROM STAGE REQUEST TABLE.
  5434.  
  5435. CRJ4 SX0 X7-RER
  5436. NZ X0,CRJ6 IF NOT *RER* REQUEST
  5437. SA3 TSRL
  5438. SA2 A3+B1
  5439. AX5 18 POSITION UNIQUE ID
  5440. SB2 X2+6 OFFSET TO FIRST ENTRY
  5441. MX7 -30
  5442. CRJ5 ZR X3,CPRX IF NOT FOUND (IGNORE REQUEST)
  5443. SX3 X3-PFTBL
  5444. SA1 X3+B2
  5445. BX1 X1-X5
  5446. BX6 -X7*X1
  5447. NZ X6,CRJ5 IF NOT THIS ENTRY
  5448. SA6 A1 CLEAR UNIQUE ID WORD
  5449. SA6 A1-6 CLEAR FIRST WORD (FREE ENTRY)
  5450. EQ CPRX COMPLETE REQUEST
  5451.  
  5452. * *TJE* (5) - TERMINATE ENTRY IN ACTIVE STAGE JOB TABLE.
  5453.  
  5454. CRJ6 SX0 X7-TJE
  5455. NZ X0,CRJ8 IF NOT *TJE* REQUEST
  5456. LX5 12 POSITION JSN
  5457. RJ FJE FIND JOB ENTRY
  5458. NZ X7,CRJ7 IF JOB NOT FOUND
  5459. SA7 A1+ CLEAR JOB TABLE ENTRY
  5460. CRJ7 SA1 MVSN
  5461. ZR X1,CPRX IF NO PENDING REQUEST
  5462. SA1 SJIF CHECK IF STAGING JOB INITIATION IS PENDING
  5463. NZ X1,CPRX IF INITIATION FLAG ALREADY SET
  5464. MX6 59 FORCE INITIATION OF STAGING JOB
  5465. SA6 A1
  5466. EQ CPRX COMPLETE REQUEST
  5467.  
  5468. * *QSR* (6) - REQUEUE STAGE REQUEST.
  5469.  
  5470. CRJ8 SX0 X7-QSR
  5471. NZ X0,CRJ9 IF NOT *QSR* REQUEST
  5472. SA5 A5+B1 INCREMENT TO FWA OF *TDAM* BLOCK
  5473. RJ QPR QUEUE *PFM* REQUEST
  5474. EQ CPRX COMPLETE REQUEST
  5475.  
  5476. * *AIB* (7) - ALTER STAGE JOB INITIALIZATION BIT.
  5477.  
  5478. CRJ9 LX5 12 POSITION JSN
  5479. RJ FJE FIND JOB ENTRY IN ACTIVE JOB TABLE
  5480. NZ X7,CPRX IF JOB ENTRY NOT FOUND
  5481. LX5 24-18-12
  5482. MX6 59
  5483. LX6 24-0
  5484. BX1 X6*X1 CLEAR CURRENT SETTING
  5485. BX6 -X6*X5 ISOLATE DESIRED SETTING
  5486. BX7 X6+X1
  5487. SA7 A1 UPDATE ACTIVE JOB TABLE ENTRY
  5488. ZR X6,CRJ7 IF CLEARING BIT
  5489. EQ CPRX COMPLETE REQUEST
  5490. FJE SPACE 4,15
  5491. ** FJE - FIND JOB ENTRY IN ACTIVE STAGING JOB TABLE.
  5492. *
  5493. * ENTRY (X5) = 24/JSN ,36/
  5494. *
  5495. * EXIT (A1) = ADDRESS OF JOB ENTRY.
  5496. * (X1) = JOB ENTRY.
  5497. * (X7) = 0, IF JOB ENTRY FOUND.
  5498. *
  5499. * USES X - 1, 2, 6, 7.
  5500. * A - 1.
  5501. * B - 5, 6.
  5502.  
  5503.  
  5504. FJE SUBR ENTRY/EXIT
  5505. TB6 -1,TAJP,LWA
  5506. TB5 0,TAJP
  5507. MX6 24
  5508. FJE1 SA1 B6+
  5509. BX2 X1-X5
  5510. BX7 X6*X2
  5511. ZR X7,FJEX IF JSN MATCHES
  5512. SB6 B6-B1
  5513. GE B6,B5,FJE1 IF MORE ENTRIES TO EXAMINE
  5514. EQ FJEX RETURN (ENTRY NOT FOUND)
  5515. IRE SPACE 4,20
  5516. ** IRE - ISSUE ROLLIN EVENT AND/OR INITIATE STAGE JOB.
  5517. *
  5518. * CHECK FLAGS ONLY WHEN TWO SECOND INTERVAL HAS ELAPSED.
  5519. *
  5520. * ENTRY (ROLF) .NE. 0 IF ROLLIN EVENT TO BE ISSUED.
  5521. * (SJIF) .NE. 0 IF STAGING JOB TO BE INITIATED.
  5522. * (X5) = *ITIM* SET FOR 2 SECOND INTERVAL TEST.
  5523. *
  5524. * EXIT (ROLF) = 0 IF ROLLIN EVENT ISSUED.
  5525. * (SJIF) = 0 IF STAGING JOB INITIATED.
  5526. * (X5) = *ITIM* SET FOR 2 SECOND INTERVAL TEST.
  5527. *
  5528. * USES X - 1, 2, 4, 6.
  5529. * A - 1, 2, 4, 6.
  5530. *
  5531. * CALLS ISJ.
  5532. *
  5533. * MACROS EESET.
  5534.  
  5535.  
  5536. IRE SUBR ENTRY/EXIT
  5537.  
  5538. * ISSUE EVENT TO ROLL IN EXISTING STAGE JOB.
  5539.  
  5540. SA2 ROLF CHECK *ROLLIN REQUESTED* FLAG
  5541. ZR X2,IRE1 IF ROLLIN NOT REQUESTED
  5542. SX6 B0+ CLEAR FLAG
  5543. SA6 A2
  5544. EESET /EVENT/VSNE+7777B ISSUE ROLLIN EVENT
  5545.  
  5546. * INITIATE NEW STAGE JOB.
  5547.  
  5548. IRE1 SA4 SJIF
  5549. ZR X4,IREX IF STAGE JOB INITIATION NOT REQUESTED
  5550. RJ ISJ INITIATE NEW STAGE JOB
  5551. EQ IREX RETURN
  5552. ISJ SPACE 4,20
  5553. ** ISJ - INITIATE STAGING JOB.
  5554. *
  5555. * INITIATE A STAGE JOB UNLESS ANY OF THE FOLLOWING ARE TRUE.
  5556. * A STAGE JOB ALREADY HAS THIS VSN ASSIGNED.
  5557. * A STAGE JOB IS CURRENTLY IN INITIALIZATION.
  5558. * ALL POSSIBLE STAGE JOBS ARE ALREADY ACTIVE.
  5559. *
  5560. * ENTRY (X4) = 34/0,1/ MEDIUM,1/0,24/ PACKED VSN
  5561. * (X4) .LT. 0, IF SPECIAL STAGING JOB TO BE INITIATED,
  5562. * OR IF JOB TO BE INITIATED FOR ANY VSN.
  5563. *
  5564. * EXIT (SJIF) = 0, IF STAGE JOB INITIATED OR NOT NEEDED.
  5565. * (SJIF) = VSN, IF INITIATION SHOULD BE RETRIED LATER.
  5566. * (ROLF) .NE. 0, IF ANOTHER JOB IS IN INITIALIZATION.
  5567. *
  5568. * USES X - 1, 2, 3, 4, 6, 7.
  5569. * A - 1, 2, 3, 6.
  5570. * B - 3, 4, 5, 6, 7.
  5571. *
  5572. * MACROS ROUTE, WRITER.
  5573.  
  5574.  
  5575. ISJ8 SX6 B1+ SET ROLLIN FLAG
  5576. SA6 ROLF
  5577.  
  5578. ISJ SUBR ENTRY/EXIT
  5579. BX6 X4 SAVE VSN IN CASE UNABLE TO START JOB
  5580. SA6 SJIF
  5581. SB3 B0 SET TO TAPE FOR SPECIAL STAGING JOB
  5582. NG X4,ISJ0 IF SPECIAL STAGING JOB
  5583. MX3 -1
  5584. LX6 59-25+1 POSITION MEDIUM FLAG
  5585. BX6 -X3*X6
  5586. SB3 X6+ 0 = TAPE, 1 = OPTICAL DISK
  5587. ISJ0 TB5 0,TAJP FWA OF ACTIVE STAGE JOB TABLE
  5588. TB7 -1,TAJP,LWA LAST ENTRY IN TABLE
  5589. SB6 B5+
  5590. SA3 ISJH
  5591. SB4 B0+ SET AVAILABLE ENTRY NOT FOUND
  5592. BX4 X3*X4 ISOLATE VSN/MEDIUM FLAG
  5593.  
  5594. * LOOK FOR AVAILABLE STAGING JOB.
  5595.  
  5596. ISJ1 SA1 B6+ LOAD JOB TABLE ENTRY
  5597. NZ X1,ISJ2 IF ENTRY IN USE
  5598. NZ B4,ISJ2 IF AVAILABLE ENTRY ALREADY FOUND
  5599. SB4 B6+ SAVE ADDRESS OF AVAILABLE ENTRY
  5600. ISJ2 BX6 X3*X1 ISOLATE VSN/MEDIUM FLAG
  5601. BX7 X6-X4
  5602. ZR X7,ISJ7 IF MATCHING VSN FOUND
  5603. LX1 59-24
  5604. PL X1,ISJ3 IF JOB NOT IN INITIALIZATION
  5605. NE B3,ISJ3 IF OPTICAL DISK STAGING
  5606. SB4 -B6 INDICATE JOB IN INITIALIZATION FOUND
  5607. ISJ3 SB6 B6+1
  5608. LE B6,B7,ISJ1 IF MORE ENTRIES TO EXAMINE
  5609. NG B4,ISJ8 IF JOB IN INITIALIZATION FOUND
  5610. NZ B4,ISJ4 IF AVAILABLE ENTRY FOUND
  5611. EQ ISJX RETURN
  5612.  
  5613. * INITIATE NEW STAGING JOB.
  5614.  
  5615. ISJ4 SA1 ISJE *STAGE,S*
  5616. EQ B4,B5,ISJ5 IF SPECIAL STAGING JOB
  5617. SA1 A1+B1 *STAGE*
  5618. EQ B3,ISJ5 IF NORMAL STAGING JOB FROM TAPE
  5619. SA1 A1+B1 *STAGE,O*
  5620. ISJ5 BX6 X1
  5621. SA6 ISJC SET TYPE OF STAGING JOB
  5622. REWIND ISJA,R
  5623. SX6 ISJB+ISJBL FILL BUFFER BY SETTING *IN*
  5624. SA6 X2+2
  5625. WRITER X2,R FLUSH BUFFER
  5626. SA1 X2 SET FILE NAME INTO *DSP* BLOCK
  5627. SA2 ISJD
  5628. MX7 42
  5629. BX1 X7*X1
  5630. SX7 7776B CLEAR OLD ERROR CODE AND COMPLETE BIT
  5631. BX2 X7*X2
  5632. BX6 X1+X2
  5633. SA6 A2
  5634. ROUTE ISJD,R ROUTE JOB TO INPUT QUEUE
  5635.  
  5636. * SET JSN IN ACTIVE STAGING JOB TABLE ENTRY.
  5637.  
  5638. ISJ6 SA1 ISJD GET ACTUAL JSN FROM *DSP* BLOCK
  5639. MX6 24
  5640. BX6 X6*X1
  5641. NE B3,ISJ6.1 IF OPTICAL DISK STAGING
  5642. SX7 B1 SET *INITIALIZATION IN PROGRESS* FLAG
  5643. LX7 24-0
  5644. BX6 X6+X7
  5645. ISJ6.1 EQ B4,B5,ISJ6.2 IF SPECIAL STAGING JOB
  5646. EQ B3,ISJ6.2 IF TAPE STAGING
  5647. SA1 SJIF
  5648. BX6 X1+X6 SET ASSIGNED VSN IN JOB TABLE
  5649. ISJ6.2 SA6 B4
  5650. NE B4,B5,ISJ7 IF NOT SPECIAL STAGING JOB
  5651. MX2 -24
  5652. BX6 -X2+X6 SET VSN IN FORCE = 77777777B
  5653. SA6 B4
  5654. SA1 SJIF CHECK IF NORMAL STAGE REQUEST PENDING
  5655. PL X1,ISJX IF NORMAL REQUEST PENDING, RETRY LATER
  5656. ISJ7 BX6 X6-X6 CLEAR *SJIF*
  5657. SA6 SJIF
  5658. EQ ISJX RETURN
  5659.  
  5660.  
  5661. ISJA BSS 0
  5662. ZZZJOB FILEC ISJB,ISJBL+1
  5663.  
  5664. ISJB DATA C*STAGING.*
  5665. DATA C*NORERUN.*
  5666. DATA C*GET,STAGE/NA.*
  5667. ISJC DATA C*STAGE,X.*
  5668. ISJBL EQU *-ISJB
  5669.  
  5670. ISJD BSS 0 *DSP* BLOCK
  5671. VFD 42/0LZZZJOB,6/0,1/1,4/0,6/SYOT,1/0
  5672. VFD 24/0,12/2RNO,3/0,1/1,2/0,18/1S17+1S12+1S4
  5673. VFD 60/0
  5674. VFD 60/0
  5675. VFD 12/0,12/2RCT,36/0
  5676. VFD 60/0
  5677. VFD 60/0
  5678.  
  5679. ISJE DATA C*STAGE,S.* SPECIAL STAGING JOB
  5680. ISJF DATA C*STAGE.* NORMAL STAGING JOB (TAPE)
  5681. ISJG DATA C*STAGE,O.* NORMAL STAGING JOB (OPTICAL DISK)
  5682. ISJH CON 00000000000277777777B
  5683. ISM SPACE 4,15
  5684. ** ISM - ISSUE STATISTICAL MESSAGE.
  5685. *
  5686. * ENTRY (A5) = FWA OF *PFM* STAGE REQUEST.
  5687. *
  5688. * USES X - 0, 1, 6.
  5689. * A - 1.
  5690. * B - 2, 3, 5.
  5691. *
  5692. * CALLS CDD, COD, SNM.
  5693. *
  5694. * MACROS MESSAGE.
  5695.  
  5696.  
  5697. ISM SUBR ENTRY/EXIT
  5698. SB5 -ISMA SET UP FOR TAPE REQUEST
  5699. SB3 ISMB
  5700. SA1 A5 CHECK TYPE OF REQUEST
  5701. AX1 54
  5702. SX1 X1-2
  5703. NZ X1,ISM1 IF NOT OPTICAL DISK REQUEST
  5704. SA1 A5+1 GET ARCHIVE FILE VERSION NUMBER
  5705. MX0 -12
  5706. AX1 24
  5707. BX1 -X0*X1
  5708. RJ CDD CONVERT TO DECIMAL DISPLAY
  5709. SB2 B2-B1
  5710. MX1 1 GENERATE CHARACTER MASK
  5711. AX1 B2
  5712. BX1 X1*X4 REMOVE SPACES
  5713. SB5 -ISMC
  5714. SB3 ISMB
  5715. SB2 1R+
  5716. RJ SNM SET VERSION NUMBER INTO MESSAGE
  5717. SB5 ISMB
  5718. ISM1 SA1 A5+2 GET PERMANENT FILE NAME
  5719. MX0 42
  5720. BX1 X0*X1
  5721. SB2 1R#
  5722. RJ SNM SET PERMANENT FILE NAME INTO MESSAGE
  5723. SA1 A5+2 GET USER INDEX
  5724. BX1 -X0*X1
  5725. RJ COD CONVERT TO OCTAL DISPLAY
  5726. SB2 B2-B1
  5727. MX1 1 GENERATE CHARACTER MASK
  5728. AX1 B2
  5729. BX1 X1*X4 REMOVE SPACES
  5730. SB5 ISMB
  5731. SB2 1R$
  5732. RJ SNM SET USER INDEX INTO MESSAGE
  5733. SA1 A5+4 GET FAMILY/PACK NAME
  5734. BX1 X0*X1
  5735. SB2 1R&
  5736. RJ SNM SET FAMILY/PACK NAME INTO MESSAGE
  5737. SA1 A5+B1 GET VSN SUFFIX
  5738. MX0 -12
  5739. BX1 -X0*X1
  5740. SX1 X1+10000D FORCE LEADING ZEROES
  5741. RJ CDD CONVERT TO DECIMAL DISPLAY
  5742. MX0 -24
  5743. BX6 -X0*X6
  5744. LX6 24
  5745. SA1 A5+B1 GET VSN PREFIX
  5746. MX0 12
  5747. LX1 36
  5748. BX1 X0*X1
  5749. BX1 X1+X6 COMBINE VSN PREFIX AND SUFFIX
  5750. SB2 1R-
  5751. RJ SNM SET VSN INTO MESSAGE
  5752. SA1 A5+7 GET RETRY COUNT
  5753. AX1 36
  5754. RJ CDD CONVERT TO DECIMAL DISPLAY
  5755. MX0 -6 MASK TO ONE DIGIT
  5756. BX1 -X0*X6
  5757. LX1 -6 LEFT JUSTIFY
  5758. SB2 1R=
  5759. RJ SNM SET RETRY COUNT INTO MESSAGE
  5760. MESSAGE ISMB,5 ISSUE STATISTICAL MESSAGE TO ACCOUNT FILE
  5761. EQ ISMX RETURN
  5762.  
  5763.  
  5764. ISMA DATA C*STBS, #######, $$$$$$, &&&&&&&, ------, =.*
  5765. * DATA C*STBS, FILENAM, USERIN, FAMPACK, VSNVSN, R.*
  5766. ISMAL EQU *-ISMA LENGTH OF MESSAGE
  5767. ISMB BSS ISMAL MESSAGE ASSEMBLY BUFFER
  5768. ISMC DATA C*SOBS, #######, $$$$$$, &&&&&&&, ------, ++++, =.*
  5769. * DATA C*SOBS, FILENAM, USERIN, FAMPACK, VSNVSN, VERS, R.*
  5770. QPR SPACE 4,20
  5771. ** QPR - QUEUE *PFM* REQUEST.
  5772. *
  5773. * ENTRY (A5) = FWA OF REQUEST BLOCK (IF FROM *PFM*).
  5774. * (A5) = FWA+1 OF REQUEST BLOCK (IF FROM A CPU PROGRAM).
  5775. * (X5) = FIRST WORD OF REQUEST.
  5776. * IN BOTH ENTRIES, (A5) POINTS TO THE FIRST WORD OF THE
  5777. * *PFM* *TDAM* ENTRY. IF THE REQUEST COMES FROM A CPU
  5778. * PROGRAM, THE LAST WORD IS REFORMATTED AND MOVED TO THE
  5779. * FRONT OF THE *SIC* BLOCK. THIS IS TO ACCOMODATE *SIC*.
  5780. *
  5781. * EXIT REQUEST CLEARED (IF (A5) = PFTB).
  5782. *
  5783. * USES X - 0, 1, 2, 3, 4, 6, 7.
  5784. * A - 1, 2, 3, 4, 6, 7.
  5785. * B - 2, 3, 4.
  5786. *
  5787. * CALLS ISJ, ISM.
  5788. *
  5789. * MACROS PDATE.
  5790.  
  5791.  
  5792. QPR SUBR ENTRY/EXIT
  5793. ZR X5,QPRX IF NO REQUEST
  5794. PDATE A5+7 ADD CURRENT DATE AND TIME TO REQUEST
  5795. SX2 A5-PFTB CHECK IF *PFM* REQUEST
  5796. ZR X2,QPR1 IF *PFM* CALL
  5797.  
  5798. * PROCESS RE-REQUEST.
  5799.  
  5800. SA1 A5-B1 RETRIEVE RETRY INFORMATION
  5801. SA2 A5+7 MERGE WITH PACKED DATE AND TIME
  5802. MX6 24
  5803. LX1 12
  5804. BX6 X6*X1
  5805. BX6 X6+X2
  5806. SA6 A2 UPDATE RETRY INFORMATION
  5807.  
  5808. * MERGE UNIQUE ID INTO REQUEST.
  5809.  
  5810. QPR1 SA2 QPRA ADVANCE UNIQUE ID COUNTER
  5811. MX0 -30
  5812. SX7 X2+2 INCREMENT VALUE
  5813. BX6 -X0*X7 ASSURE NO OVERFLOW
  5814. SA7 A2
  5815. SA6 A5+6 SET UNIQUE ID INTO BLOCK
  5816. RJ ISM ISSUE STATISTICAL MESSAGE
  5817.  
  5818. * MOVE REQUEST INTO *PFRT* TABLE.
  5819.  
  5820. SA3 TSRL GET CURRENT LENGTH
  5821. SA2 A3+B1 GET FWA OF TABLE
  5822. IX4 X3+X2
  5823. SB2 X2 SET FWA
  5824. SB3 X3 SET LENGTH
  5825. SB4 -PFTBL SET CURRENT OFFSET
  5826. QPR2 SB4 B4+PFTBL
  5827. GE B4,B3,QPR3 IF END OF TABLE
  5828. SA1 B2+B4
  5829. NZ X1,QPR2 IF NOT FREE SLOT
  5830. SX4 A1 SET ADDRESS OF SLOT
  5831. QPR3 SA1 A5 TRANSFER REQUEST ENTRY
  5832. SA2 A1+B1 MOVE WORDS 0 AND 1
  5833. BX6 X1
  5834. LX7 X2
  5835. SA1 A2+B1 MOVE WORDS 2 AND 3
  5836. SA2 A1+B1
  5837. SA6 X4
  5838. SA7 A6+B1
  5839. BX6 X1
  5840. LX7 X2
  5841. SA1 A2+B1 MOVE WORDS 4 AND 5
  5842. SA2 A1+B1
  5843. SA6 A7+B1
  5844. SA7 A6+B1
  5845. BX6 X1
  5846. LX7 X2
  5847. SA1 A2+B1 MOVE WORDS 6 AND 7
  5848. SA2 A1+B1
  5849. SA6 A7+B1
  5850. SA7 A6+B1
  5851. BX6 X1
  5852. LX7 X2
  5853. SA6 A7+B1
  5854. SA7 A6+B1
  5855. LT B4,B3,QPR4 IF NOT EXTENDING TABLE
  5856.  
  5857. * CHECK IF ADDITIONAL MEMORY NEEDED.
  5858.  
  5859. SA2 FLST CHECK AVAILABLE MEMORY
  5860. SX6 B3+PFTBL
  5861. SX7 X6+B2 LWA+1 OF TABLE
  5862. AX2 30
  5863. SA6 TSRL UPDATE LENGTH
  5864. SX6 X7+PFTBL*2+77 ALLOW FOR TWO MORE REQUESTS / ROUND UP
  5865. AX6 6
  5866. LX6 6
  5867. IX2 X2-X6
  5868. PL X2,QPR4 IF NO NEED TO GET MORE MEMORY
  5869. SA6 ROLF SET ROLLIN EVENT FLAG
  5870. MEMORY CM,A2,R,X7+MEMI
  5871.  
  5872. * INITIATE STAGING JOB TO PROCESS REQUEST.
  5873.  
  5874. QPR4 SA4 A5+B1 SET VSN
  5875. SA1 A5
  5876. MX3 -24
  5877. AX1 54
  5878. SX1 X1-1 0 = TAPE, 1 = OPTICAL DISK
  5879. LX1 25
  5880. BX4 -X3*X4 ISOLATE VSN
  5881. BX4 X1+X4 SET MEDIUM FLAG
  5882. RJ ISJ INITIATE STAGING JOB
  5883. SX6 A5-PFTB
  5884. NZ X6,QPRX IF NOT *PFM* CALL
  5885. SA6 PFTB CLEAR REQUEST
  5886. EQ QPRX RETURN
  5887.  
  5888.  
  5889. QPRA CON 1 UNIQUE ID = 2*(REQUESTS RECEIVED) + 1
  5890. SPACE 4,10
  5891. * COMMON DECKS FOR TAPE ALTERNATE STORAGE PROCESSING.
  5892.  
  5893.  
  5894. *CALL COMCCDD
  5895. *CALL COMCCOD
  5896. *CALL COMCCIO
  5897. *CALL COMCSNM
  5898. BUFFERS SPACE 4,10
  5899. TITLE BUFFER AREA.
  5900. ** BUFFER ASSIGNMENTS.
  5901.  
  5902.  
  5903. USE BUFFERS
  5904. TDTAB SPACE 4,10
  5905. QUAL PRESET
  5906. TDTAB BSS 0
  5907. PRS SPACE 4,10
  5908. ** PRS - PRESET PROGRAM.
  5909.  
  5910.  
  5911. PRS SB1 1
  5912. R= A4,ARGR
  5913. SA2 ACTR
  5914. SB4 X2
  5915. ZR B4,PRS5 IF NO ARGUMENTS
  5916. SB5 PRSO
  5917. RJ ARG PROCESS ARGUMENTS
  5918. ZR X1,PRS2 IF NO ERRORS
  5919. PRS1 MESSAGE PRSP,,R * ERROR IN ARGUMENTS.*
  5920. ABORT
  5921.  
  5922. PRS2 SX6 SJDF SET DEFAULT NUMBER OF STAGING JOBS
  5923. SA5 PRSK GET SPECIFIED NUMBER OF STAGING JOBS
  5924. ZR X5,PRS3 IF NOT SPECIFIED
  5925. SB7 B1+
  5926. RJ DXB CONVERT TO BINARY (DECIMAL ASSUMED)
  5927. NZ X4,PRS1 IF ERROR IN CONVERSION
  5928. SX4 X6-SJMX MAXIMUM NUMBER OF STAGING JOBS
  5929. PL X4,PRS1 IF OVER MAXIMUM
  5930. PRS3 SA6 A5 SET NUMBER OF STAGING JOBS
  5931. SA5 A5+B1 GET NUMBER OF STAGING VSN-S TO DISPLAY
  5932. SX6 SVDF SET DEFAULT OF VSN-S
  5933. ZR X5,PRS4 IF NOT SPECIFIED
  5934. SB7 B1+
  5935. RJ DXB CONVERT TO BINARY (DECIMAL ASSUMED)
  5936. NZ X4,PRS1 IF ERROR IN CONVERSION
  5937. SX4 X6-SVMX
  5938. PL X4,PRS1 IF OVER MAXIMUM
  5939. PRS4 SA6 A5+ SET NUMBER OF STAGING VSN-S TO DISPLAY
  5940. PRS5 SA1 JOPR CHECK JOB ORIGIN
  5941. MX6 -12
  5942. LX1 -24
  5943. SB2 B1+B1
  5944. BX1 -X6*X1
  5945. SX6 X1-SYOT
  5946. SB3 TPRO
  5947. ZR X6,PRS6 IF SYSTEM ORIGIN
  5948. MESSAGE PRSE,0,R * INCORRECT COMMAND.*
  5949. ABORT
  5950.  
  5951. PRS6 SA6 B2 CLEAR INTERFACE AREA
  5952. SB2 B2+B1
  5953. LT B2,B3,PRS6 IF MORE WORDS TO CLEAR
  5954.  
  5955. * CALL *1MT* TO PROCESS *MAGNET* INITIALIZATION.
  5956.  
  5957. PRS7 SA1 PRSB GET *1MT* CALL
  5958. SA2 PRSA MAKE *SPC* RA+1 CALL
  5959. BX7 X1
  5960. LX6 X2
  5961. SA7 PRSC
  5962. RJ SYS=
  5963. SA1 PRSC CHECK REQUEST COMPLETE
  5964. NZ X1,PRS7 IF *SPC* REJECT
  5965. PRS8 RECALL WAIT FOR *1MT* TO FINISH PRESET
  5966. SA1 PRSD
  5967. NG X1,PRS8 IF *1MT* NOT DONE
  5968.  
  5969. * PURGE STAGE REQUEST FILE.
  5970.  
  5971. SA1 PRSK GET NUMBER OF STAGING JOBS
  5972. SB4 NETAB SET DEFAULT FWA OF UDT-S
  5973. ZR X1,PRS10 IF TAPE ALTERNATE STORAGE NOT ACTIVE
  5974. MACHID PRSQ SET MACHINE ID IN STAGE REQUEST FILE NAME
  5975. SA1 PRSQ
  5976. SA2 STRQ
  5977. LX1 24
  5978. BX6 X1+X2
  5979. SA6 A2+
  5980. PRS8.1 PURGE STRQ
  5981. SA1 X2+ CHECK ERROR CODE
  5982. SX1 X1
  5983. AX1 10
  5984. ZR X1,PRS8.3 IF NO ERROR
  5985. SX6 X1-/ERRMSG/INA
  5986. ZR X6,PRS8.2 IF *INTERLOCK NOT AVAILABLE*
  5987. SX6 X1-/ERRMSG/PFA
  5988. NZ X6,PRS8.3 IF NOT *PF UTILITY ACTIVE*, IGNORE ERROR
  5989. PRS8.2 MESSAGE PRSS,2 * PURGING STAGE REQUEST FILE.*
  5990. RECALL GIVE UP CPU
  5991. EQ PRS8.1 RETRY *PURGE*
  5992.  
  5993. * ALLOCATE TABLES FOR TAPE ALTERNATE STORAGE PROCESSING.
  5994.  
  5995. PRS8.3 MESSAGE (=C**),2 CLEAR DAYFILE MESSAGE, IF PRESENT
  5996. SA1 PRSK NUMBER OF STAGING JOBS
  5997. SX6 TDTAB ALLOCATE ACTIVE STAGING JOB TABLE
  5998. SX1 X1+B1 TABLE LENGTH (ALLOW FOR SPECIAL JOB)
  5999. IX2 X1+X6 LWA+1 OF ACTIVE STAGING JOB TABLE
  6000. LX1 48
  6001. BX7 X6+X1 12/LENGTH, 24/, 24/FWA
  6002. SX6 X2+B1 SET FWA OF VSN DISPLAY BUFFER
  6003. LX2 24
  6004. BX7 X7+X2 12/LENGTH, 24/LWA+1, 24/FWA
  6005. SA7 TAJP SET POINTER TO ACTIVE JOB TABLE
  6006. SA1 PRSL GET NUMBER OF VSN-S TO DISPLAY
  6007. SB4 X1 MINIMUM NUMBER OF VSNS TO DISPLAY+1
  6008. GT B4,B1,PRS9 IF AT LEAST 1 VSN TO DISPLAY
  6009. SX1 B1 SET MINIMUM LENGTH
  6010. PRS9 IX4 X1+X6 LWA+1 OF VSN DISPLAY BUFFER
  6011. LX1 48
  6012. SB4 X4+B1 SET FWA OF UDT-S
  6013. LX4 24
  6014. BX1 X1+X6 12/LENGTH, 24/, 24/FWA
  6015. BX6 X1+X4 12/LENGTH, 24/LWA+1, 24/FWA
  6016. SA6 TVSP SET POINTER TO STAGING VSN LIST
  6017. EQ PRS12 CHECK FOR *TMS* PROCESSING.
  6018.  
  6019. PRS10 SX6 B1+ SET *PFM* *TDAM* BUFFER BUSY
  6020. SA6 PFTB
  6021.  
  6022. * CALL *CLC* TO CLEAR MEMORY.
  6023.  
  6024. PRS12 SB6 LWA-CLC NUMBER OF WORDS OF CODE TO MOVE
  6025. SA1 CLCBUF+LWA-CLC LAST WORD OF CODE
  6026. BX6 X1
  6027. SA6 LWA LAST WORD TO MOVE CODE TO
  6028. PRS13 SA1 A1-B1
  6029. BX6 X1
  6030. SA6 A6-B1
  6031. SB6 B6-B1
  6032. NZ B6,PRS13 IF MORE CODE TO MOVE
  6033. + RJ CLC CLEAR UDT-S (RJ TO VOID INSTRUCTION STACK)
  6034.  
  6035.  
  6036. PRSA VFD 18/3LSPC,1/0,1/1,10/0,12/,18/PRSC
  6037. PRSB VFD 18/3L1MT,6/0,12/1,24/PRSD
  6038. PRSC CON 0 *SPC* REQUEST WORD
  6039. PRSD VFD 1/1,47/0,12/1 *1MT* STATUS WORD
  6040.  
  6041. PRSE DATA C* INCORRECT COMMAND.*
  6042.  
  6043. SJDF DECMIC SJDF DEFAULT NUMBER OF STAGING JOBS
  6044. SVDF DECMIC SVDF DEFAULT NUMBER OF STAGING VSN-S TO DISPLAY
  6045.  
  6046. PRSK CON 0 NUMBER OF STAGING JOBS ACTIVE CONCURRENTLY
  6047. PRSL CON 0 NUMBER OF STAGING TAPE VSN-S TO DISPLAY
  6048. PRSM DATA C*'SJDF'* DEFAULT NUMBER OF CONCURRENT STAGE JOBS
  6049. PRSN DATA C*'SVDF'* DEFAULT NUMBER OF VSNS TO DISPLAY
  6050.  
  6051. PRSO BSS 0 ARGUMENT TABLE
  6052. SJ ARG PRSM,PRSK NUMBER OF CONCURRENT STAGE JOBS
  6053. SV ARG PRSN,PRSL NUMBER OF STAGING TAPE VSN-S TO DISPLAY
  6054. DATA 0 END OF TABLE
  6055.  
  6056. PRSP DATA C* ERROR IN ARGUMENTS.*
  6057. PRSQ CON 0 MACHINE ID
  6058. PRSR BSSZ 6 ERROR MESSAGE BUFFER
  6059. PRSS DATA C* PURGING STAGE REQUEST FILE.*
  6060.  
  6061. STRQ FILEB 0,0,(FET=16D),EPR,UPR STAGE REQUEST FILE
  6062. ORG STRQ+CFPW
  6063. VFD 42/0,18/PRSR ERROR MESSAGE BUFFER
  6064. ORG STRQ+16D
  6065. SPACE 4,10
  6066. * PRESET COMMON DECKS - CAN BE OVERLAID.
  6067.  
  6068.  
  6069. *CALL COMCARG
  6070. *CALL COMCDXB
  6071. *CALL COMCPFM
  6072. TITLE PRESET SUBROUTINES.
  6073. CLCBUF BSS 0
  6074. PCLC MAX CLCBUF,TDTAB+SJMX+1+SVMX+1+MUNIT*UNITL+10
  6075. LOC PCLC
  6076. CLC SPACE 4,15
  6077. ** CLC - CLEAR MEMORY.
  6078. *
  6079. * ENTRY (B4) = STARTING ADDRESS OF UDT-S.
  6080. *
  6081. * EXIT TO *MAG*.
  6082. *
  6083. * USES X - 1, 2, 4, 6, 7.
  6084. * A - 1, 2, 6, 7.
  6085. * B - 5, 6, 7.
  6086. *
  6087. * CALLS ISJ, PEQ, REL.
  6088. *
  6089. * MACROS EESET, RTIME, SETICC, TIME.
  6090.  
  6091.  
  6092. CLC SUBR ENTRY
  6093. SB6 B4 FWA TO CLEAR
  6094. SB7 * LWA+1 TO CLEAR
  6095. BX7 X7-X7
  6096. CLC1 SA7 B6
  6097. SB6 B6+B1
  6098. LT B6,B7,CLC1 IF STILL MORE MEMORY TO CLEAR
  6099. RJ PEQ PROCESS EQUIPMENT ENTRIES
  6100. RJ REL RELOCATE TABLE ACCESS INSTRUCTIONS
  6101. SA1 UQUE GET STARTING ADDRESS
  6102. SX6 X1+100B GET START OF REQUEST BUFFER
  6103. SA6 TSRP
  6104. SX7 X6+77B
  6105. BX6 X6-X6
  6106. SA6 A6+B1 SET NO LENGTH
  6107. SA1 TAJP CLEAR TAPE ALTERNATE STORAGE JOB TABLE
  6108. SA2 TVSP CLEAR TAPE ALTERNATE STORAGE VSN LIST
  6109. ZR X1,CLC3 IF NOT TAPE ALTERNATE STORAGE PROCESSING
  6110. SB5 X1
  6111. AX2 24 MOVE LWA+1 DOWN
  6112. SB6 X2+
  6113. SX6 B0+
  6114. SA6 B6+
  6115. CLC2 SB6 B6-B1
  6116. SA6 B6
  6117. GT B6,B5,CLC2 IF MORE TO CLEAR
  6118. CLC3 SETICC CLCA SET INTER-CP COMMUNICATION POINTERS
  6119. SA1 CLCB SET SUBSYSTEM ACCESSIBILITY FLAG
  6120. BX6 X1
  6121. RJ SYS=
  6122. TIME CTIM SET STARTING CPU TIME
  6123. RTIME STAR SET REAL TIME AT START UP
  6124. SA1 TAJP
  6125. ZR X1,CLC4 IF NOT TAPE ALTERNATE STORAGE PROCESSING
  6126. MX4 1 SET DUMMY VSN
  6127. MX2 -24
  6128. BX4 -X2+X4
  6129. RJ /STAGE/ISJ INITIATE SPECIAL STAGING JOB
  6130. CLC4 EESET /EVENT/MTXE ISSUE MAGNET AVAILABLE EVENT
  6131. SX6 1
  6132. SA6 APRQ FORCE *1MU* CALL TO GET UNIT ACCESSIBILITY
  6133. EQ MAG PROCESS MAIN PROGRAM
  6134.  
  6135.  
  6136. CLCA VFD 1/1,11/0,6/RCALL-1,18/RCAL,6/0,18/0
  6137.  
  6138. CLCB VFD 18/3LSFM,6/20,12/SSTF,6/0,18/CLCB
  6139. REL SPACE 4,10
  6140. ** REL - RELOCATE INSTRUCTIONS.
  6141. *
  6142. * EXIT *T* INSTRUCTIONS RELOCATED.
  6143. *
  6144. * USES X - 1, 2, 3, 4, 6, 7.
  6145. * A - 1, 2, 6.
  6146. * B - 5, 6, 7.
  6147.  
  6148.  
  6149. REL SUBR ENTRY/EXIT
  6150. SB7 TINSTL-1
  6151. SA1 TAJP SEE IF TAPE ALTERNATE STORAGE ACTIVE
  6152. NZ X1,REL0 IF TAPE ALTERNATE STORAGE INACTIVE
  6153. SB7 TINSTL.-1 DO NOT RELOCATE /STAGE/ CODE
  6154. REL0 MX7 -18
  6155. NG B7,RELX IF NO INSTRUCTIONS TO RELOCATE
  6156. REL1 SA1 TINST+B7 SET NEXT RELOCATION WORD
  6157. SB7 B7-B1
  6158. UX4,B6 X1 SET POSITION IN WORD
  6159. SA2 X1 GET WORD
  6160. AX1 18
  6161. SX1 X1
  6162. SX3 X1
  6163. PL X1,REL2 IF POSITIVE VALUE WANTED
  6164. BX1 -X1
  6165. REL2 SA1 X1
  6166. PL X3,REL3 IF COMPLEMENT OF ADDRESS WANTED
  6167. BX1 -X1
  6168. REL3 LX4 59-47
  6169. PL X4,REL4 IF FWA WANTED
  6170. AX1 24 GET FWA
  6171. REL4 BX1 -X7*X1
  6172. SB5 B6-60
  6173. AX2 X2,B5 POSITION ADDRESS
  6174. BX3 -X7*X2 GET ADDRESS
  6175. BX2 X7*X2 MASK OUT ADDRESS
  6176. SX3 X3
  6177. IX3 X3+X1 GENERATE NEW ADDRESS
  6178. BX3 -X7*X3
  6179. BX2 X2+X3 MERGE ADDRESS
  6180. LX6 X2,B6 REPOSITION INSTRUCTION
  6181. SA6 A2
  6182. PL B7,REL1 IF STILL MORE INSTRUCTIONS TO MODIFY
  6183. EQ RELX RETURN
  6184.  
  6185. TINST BSS 0
  6186. TINST HERE
  6187. TINSTL EQU *-TINST
  6188. PEQ SPACE 4,10
  6189. ** PEQ - PROCESS EQUIPMENT ENTRIES.
  6190. *
  6191. * ENTRY (B4) = STARTING ADDRESS OF UDT-S.
  6192. *
  6193. * EXIT CONTROL TABLES INITIALIZED.
  6194. *
  6195. * USES X - 1, 3, 6, 7.
  6196. * A - 1, 6, 7.
  6197. *
  6198. * CALLS AUD.
  6199.  
  6200.  
  6201. PEQ SUBR ENTRY/EXIT
  6202. SX6 B0 ******** TEMPORARY ********
  6203. SA6 UACI ******** TEMPORARY ********
  6204. RJ AUD ASSIGN UDT ENTRIES
  6205. SX7 B5+B1 QUEUE TABLE FWA
  6206. SA7 UQUE SET QUEUE TABLE POINTER
  6207. SX6 B0 TERMINATE QUEUE TABLE
  6208. SA6 X7
  6209. MX6 60
  6210. SA6 A6+B1
  6211. SA6 A6+B1
  6212. SA1 CST+CPST
  6213. MX6 48
  6214. SX3 B4 UDT FWA
  6215. PEQ1 BX1 X6*X1 CLEAR ENTRY PRESENT STATUS
  6216. BX7 X1+X3 SET UDT FWA IN PROCESSOR STATUS
  6217. SA7 A1+
  6218. SA1 A1+CSTE
  6219. NZ X1,PEQ1 IF NOT END OF CST ENTRIES
  6220. SX6 A0 SET STARTING FL
  6221. LX6 30
  6222. SA6 FLST
  6223. EQ PEQX RETURN
  6224. AUD SPACE 4,15
  6225. ** AUD - ASSIGN UDT ENTRIES.
  6226. *
  6227. * ENTRY (B4) = FWA OF UDT.
  6228. *
  6229. * EXIT UDT ENTRIES ASSIGNED AND INITIALIZED.
  6230. * (B4) = FWA OF UDT.
  6231. * (B5) = LWA+1 OF UDT.
  6232. *
  6233. * USES X - 5, 6, 7.
  6234. * A - 5, 6, 7.
  6235. * B - 5.
  6236.  
  6237.  
  6238. AUD SUBR ENTRY/EXIT
  6239.  
  6240. * INITIALIZE FOR UINT SCAN.
  6241.  
  6242. SA5 UINT-1 INITIALIZE UINT POINTER
  6243. SB5 B4+ SET ADDRESS OF FIRST UNIT
  6244.  
  6245. * INITIALIZE UDT ENTRY.
  6246.  
  6247. AUD1 SA5 A5+B1 GET NEXT UINT ENTRY
  6248. ZR X5,AUD2 IF ALL UNITS PROCESSED
  6249. MX6 36
  6250. BX6 X6*X5 HARDWARE PARAMETERS
  6251. SA6 B5+UST1 SET DEFINITON OF EQUIPMENT
  6252. MX6 -3
  6253. BX6 -X6*X5 DEVICE TYPE
  6254. LX6 54
  6255. SA6 B5+UST4 SET DEVICE TYPE
  6256. MX6 -12
  6257. LX6 12
  6258. BX6 -X6*X5 ACS UNIT CONTROL PATH PARAMETERS
  6259. MX7 60
  6260. SA6 B5+UMST SET PATH PARAMETERS IF ACS UNIT
  6261. SA7 B5+UFRQ INHIBIT FILE REQUESTS
  6262. SB5 B5+UNITL ADVANCE UDT ADDRESS
  6263. EQ AUD1 PROCESS NEXT UNIT
  6264.  
  6265. * SET UDT POINTER WORDS.
  6266.  
  6267. AUD2 MX7 1 TERMINATE UDT
  6268. SA7 B5
  6269. SX6 B5
  6270. SX7 B4 SET FWA OF UDT
  6271. LX6 24
  6272. BX6 X6+X7 SET LWA+1 OF UDT
  6273. SA6 UBUF SET UDT POINTERS
  6274. SA7 NXAU INITIALIZE ACS UNIT ASSIGNMENT POINTER
  6275. EQ AUDX RETURN
  6276.  
  6277.  
  6278. LWA BSS 0 LAST WORD OF CODE TO MOVE
  6279. LOC *O
  6280.  
  6281.  
  6282. ERRMI UIBF-* OVERFLOW INTO FIRMWARE BUFFER
  6283. SPACE 4,10
  6284. ** INITIAL FL FOR MAGNET.
  6285.  
  6286.  
  6287. QUAL
  6288. MAGNET EQU /PRESET/PRS
  6289. RFL= EQU RQFL*100B-1 MAGNET INITIAL FL
  6290. TTL MAGNET/MAGNET1 - TERMINATION PROCESSOR.
  6291. TITLE
  6292. QUAL MAGNET1
  6293. IDENT MAGNET1,TER,MAGNET1,0,0
  6294. ENTRY MAGNET1
  6295. ENTRY MFL=
  6296. ENTRY SSJ=
  6297. *COMMENT MAGNET - TAPE EXECUTIVE TERMINATION.
  6298. BASE DECIMAL
  6299. SPACE 4,10
  6300. *** MAGNET TERMINATION PROCESSOR.
  6301. * R. E. TATE. 73/02/02.
  6302. * MODIFIED BY D. D. SADLER 74/05/29.
  6303. SPACE 4,10
  6304. *** MAGNET1 PERFORMS THE FOLLOWING FUNCTIONS.
  6305. *
  6306. * 1) IDLE DOWN.
  6307. * 2) RESTART OF MAGNET FOR LEVEL-3 RECOVERY.
  6308. * 3) CLEAN-UP OF RESOURCE DEMAND FILE ON MAGNET DROP
  6309. * OR ABORT WITH TAPES ASSIGNED.
  6310. SPACE 4,10
  6311. *** DAYFILE MESSAGES.
  6312. *
  6313. *
  6314. * * INCORRECT COMMAND.* - *MAGNET1* WAS CALLED FROM
  6315. * NON-SYSTEM ORIGIN JOB.
  6316. *
  6317. * * MAGNET DROPPED DURING RECOVERY.* - MAGNET1 WAS DROPPED
  6318. * WHEN ATTEMPTING MAGNET CLEAN-UP OR RECOVERY.
  6319. *
  6320. * * MAGNET TERMINATION/NO TAPE JOBS.* - MAGNET WAS DROPPED
  6321. * OR ABORTED WITH NO TAPE ASSIGNMENTS.
  6322. *
  6323. * * 000000.000 PERCENT CPU UTILIZATION.* - SUMMARY MESSAGE
  6324. * INDICATING MAGNET CPU UTILIZATION.
  6325. *
  6326. * * RECOVERY COMPLETE.* - LEVEL-3 RECOVERY AND MAGNET RESTART
  6327. * WAS SUCCESSFUL.
  6328. *
  6329. * * RECOVERY IMPOSSIBLE.* - MAGNET HAS BEEN DROPPED OR
  6330. * ABORTED OR LEVEL-3 RECOVERY WAS UNSUCCESSFUL.
  6331. *
  6332. * * RECOVERY IN PROGRESS.* - MAGNET1 IS PROCESSING IDLE
  6333. * DOWN AND CLEAN-UP/RESTART.
  6334. *
  6335. * * SCANNING RESOURCE DEMAND FILE.* - MAGNET1 IS ATTEMPTING
  6336. * CLEAN-UP OF RESOURCE DEMAND FILE.
  6337. *
  6338. * * NN TAPE FILES RECOVERED.* - INDICATES NUMBER OF TAPE
  6339. * ASSIGNMENTS RECOVERED BY LEVEL-3 DEADSTART.
  6340. *
  6341. * * TAPES ASSIGNED AT MAGNET TERMINATION.* - MAGNET WAS
  6342. * DROPPED OR ABORTED WITH TAPES ASSIGNED. MAGNET1 PERFORMED
  6343. * RESOURCE DEMAND FILE CLEAN-UP SO ONLY THOSE JOBS WITH
  6344. * THESE TAPES ASSIGNED WILL BE AFFECTED.
  6345. *
  6346. * * WAIT DEMAND FILE ATTACH.* - MAGNET1 IS WAITING FOR THE
  6347. * RESOURCE DEMAND FILE TO BECOME AVAILABLE.
  6348. *
  6349. * * WAIT 1MT COMPLETE.* - MAGNET1 IS WAITING FOR ALL 1MT,S
  6350. * TO IDLE DOWN.
  6351. *
  6352. * * 1MT PROBABLY LOST.* - MAGNET1 WAS DROPPED WHILE WAITING
  6353. * FOR 1MT,S TO IDLE DOWN.
  6354. SPACE 4,10
  6355. ** COMMON DECKS
  6356.  
  6357.  
  6358. *CALL COMSSSJ
  6359. TITLE
  6360. ORG RQFL*100B-1000B
  6361.  
  6362. * CODE OVERLAID BY RESOURCE DEMAND FILE BUFFER.
  6363.  
  6364. DBUF EQU * DEMAND FILE CIO BUFFER
  6365. DBUFL EQU /RSX/RDEL+2 DEMAND FILE CIO BUFFER LENGTH
  6366. SPACE 4,10
  6367. ** TER - TERMINATION PROCESSOR.
  6368.  
  6369.  
  6370. TER SB1 1
  6371. SA1 JOPR GET JOB ORIGIN
  6372. MX6 -12
  6373. LX1 -24
  6374. BX1 -X6*X1
  6375. SX1 X1-SYOT
  6376. NZ X1,TER6 IF NOT SYSTEM ORIGIN
  6377. EREXIT ERX SET ERROR EXIT ADDRESS
  6378. RJ CPU CALCULATE CPU UTILIZATION
  6379. GETJCR TERA READ JOB CONTROL WORD REGISTER
  6380. SA1 TERA CLEAR ERROR FLAG
  6381. MX2 -54
  6382. BX6 -X2*X1
  6383. SA6 A1+B1
  6384. BX5 X2*X1 SAVE ERROR FLAG
  6385. SETJCR A6
  6386. MESSAGE (=C* RECOVERY IN PROGRESS.*)
  6387.  
  6388. * CHECK POINTERS.
  6389.  
  6390. SA1 UBUF
  6391. SB4 X1
  6392. AX1 24
  6393. SB5 X1
  6394. SB6 A0-10
  6395. LE B4,B1,ABT IF FWA OF UDT,S BAD
  6396. GE B4,B5,ABT IF FWA OF UDT,S .GE. LWA OF UDT,S
  6397. GE B5,B6,ABT IF LWA OF UDT,S BAD
  6398. SA2 NTAS
  6399. NG X2,TER1 IF IDLEDOWN
  6400. ZR X5,REC IF LEVEL 3 RECOVERY
  6401. TER1 MESSAGE CPUC,,R *000000.000 PERCENT CPU UTILIZATION.*
  6402. SX6 B0+ CLEAR ERROR EXIT MESSAGE
  6403. SA1 NTAS
  6404. SA6 ERXA
  6405. PL X1,ABT1 IF NOT IDLEDOWN
  6406.  
  6407. * CHECK IF TAPES ASSIGNED.
  6408.  
  6409. TER5 SA1 B4
  6410. SA2 B4+UVRI
  6411. AX1 48
  6412. SB4 B4+UNITL
  6413. NG X1,ABT IF PREMATURE END OF UDT
  6414. NZ X2,ABT1 IF JOB ASSIGNED
  6415. LT B4,B5,TER5 IF NOT END OF UDT
  6416. SB2 ENDA * MAGNET TERMINATE/NO TAPE JOBS.*
  6417. EQ END ISSUE MESSAGE AND END
  6418.  
  6419. TER6 MESSAGE (=C* INCORRECT COMMAND.*),0,R
  6420. ABORT
  6421.  
  6422.  
  6423. TERA BSS 2 JOB CONTROL REGISTER TEMPORARIES
  6424. CPU SPACE 4,10
  6425. ** CPU - CPU UTILIZATION.
  6426. *
  6427. * CALLS CFD.
  6428. *
  6429. * MACROS RTIME, TIME.
  6430.  
  6431.  
  6432. CPU SUBR ENTRY/EXIT
  6433. TIME CPUA
  6434. RTIME CPUB
  6435. SA1 CTIM
  6436. MX6 -12
  6437. BX2 -X6*X1
  6438. AX1 12
  6439. SX5 1000
  6440. IX4 X1*X5
  6441. IX4 X4+X2 TOTAL CPU TIME PREVIOUSLY (MS)
  6442. SA1 CPUA
  6443. BX2 -X6*X1
  6444. AX1 12
  6445. IX3 X1*X5
  6446. IX3 X3+X2 TOTAL CPU TIME CURRENTLY (MS)
  6447. IX4 X3-X4 ELASPED CPU TIME (MS)
  6448. SA1 CPUB
  6449. SA2 STAR
  6450. MX3 -36
  6451. BX1 -X3*X1
  6452. BX2 -X3*X2
  6453. IX1 X1-X2 ELAPSED TIME
  6454. SX5 100*1000
  6455. IX4 X4*X5
  6456. IX1 X4/X1
  6457. RJ CFD CONVERT NUMBER
  6458. SA6 CPUC
  6459. EQ CPUX RETURN
  6460.  
  6461.  
  6462. CPUA CON 0
  6463. CPUB CON 0
  6464. CPUC DATA C*000000.000 PERCENT CPU UTILIZATION.*
  6465. SPACE 4,10
  6466. ** OVERLAID COMMON DECKS.
  6467.  
  6468.  
  6469. *CALL COMCCDD
  6470. *CALL COMCCFD
  6471. REC SPACE 4,10
  6472. ** REC - LEVEL 3 RECOVERY.
  6473.  
  6474.  
  6475. REC BSS 0 ENTRY
  6476.  
  6477. * VERIFY TABLE POINTERS.
  6478.  
  6479. SA1 UQUE CHECK QUEUE POINTERS
  6480. SA2 FLST
  6481. BX6 X6-X6 CLEAR ERROR EXIT MESSAGE
  6482. SB2 X1
  6483. SA6 ERXA
  6484. LX2 30
  6485. SB3 X2
  6486. LE B2,B1,ABT IF FWA OF QUEUE BAD
  6487. GE B3,B6,ABT IF FIELD LENGTH STATUS WORD BAD
  6488. GE B2,B3,ABT IF FWA OF QUEUE OUTSIDE OF FL
  6489. GE B5,B2,ABT IF LWA OF UDT,S .GE. FWA OF QUEUE
  6490. SX2 X2-TER
  6491. PL X2,ABT IF RECOVERY CODE OVERLAID QUEUE
  6492. SX6 B6 SET CURRENT FL
  6493. LX6 30
  6494. SA6 A2
  6495.  
  6496. * RESET PP CALL WORDS.
  6497.  
  6498. SA1 CST-CSTE
  6499. SB2 MCHAN
  6500. REC1 SA1 A1+CSTE
  6501. SB2 B2-B1
  6502. MX0 -59
  6503. BX7 -X0*X1 CLEAR *1MT* ACTIVE
  6504. SA7 A1
  6505. NZ B2,REC1 IF MORE CHANNELS TO PROCESS
  6506. SA1 APS
  6507. BX7 -X0*X1 CLEAR *1MU* ACTIVE
  6508. SA7 A1
  6509.  
  6510. * CLEAR EXTERNAL REQUESTS AND CLEAR INTERVAL TIMER.
  6511.  
  6512. SX6 B0+
  6513. SA6 RCAL
  6514. SA6 ITIM
  6515. SA6 INTC
  6516.  
  6517. * SET ERROR IN DRIVER REQUESTS IN PROGRESS.
  6518. * CLEAR FILE REQUEST IF JOB AT CONTROL POINT DURING RECOVERY.
  6519.  
  6520. SA1 UBUF
  6521. SA1 X1-UNITL INITIALIZE UDT ADDRESS
  6522. REC2 SA1 A1+UNITL+UXRQ GET REQUEST
  6523. ERRNZ UXRQ
  6524. NG X1,REC3 IF ALL UNITS CHECKED
  6525. MX0 -12
  6526. LX1 12
  6527. BX2 -X0*X1
  6528. SX2 X2-RIP
  6529. NZ X2,REC2.1 IF NOT REQUEST IN PROGRESS
  6530. SX2 ERR&RIP
  6531. BX6 X1-X2 SET ERROR STATUS
  6532. LX6 48
  6533. SA6 A1
  6534. SA2 A1+UST3-UXRQ
  6535. BX2 X0*X2
  6536. SX6 EFT SET ERROR FLAG TERMINATION CODE
  6537. BX6 X2+X6
  6538. SA6 A2
  6539. REC2.1 SA2 A1+UFRQ-UXRQ
  6540. SA3 A1+UST1-UXRQ
  6541. ZR X2,REC2 IF NO FILE REQUEST
  6542. LX3 59-48
  6543. SX6 B0
  6544. NG X3,REC2 IF JOB ROLLED OUT
  6545. SA6 A2+ CLEAR FILE REQUEST
  6546. EQ REC2 CHECK NEXT UNIT
  6547.  
  6548. * PROCESS TAPE ALTERNATE STORAGE.
  6549.  
  6550. REC3 RJ RES RESET TAPE ALTERNATE STORAGE
  6551.  
  6552. * RESTART MAGNET.
  6553.  
  6554. REC4 SA1 RECC GET *1MT* CALL
  6555. SA2 RECB
  6556. BX7 X1
  6557. BX6 X2
  6558. SA7 RECD
  6559. RJ SYS= MAKE *SPC* CALL
  6560. SA1 RECD
  6561. NZ X1,REC4 IF *SPC* REJECT
  6562. REC10 RECALL
  6563. SA1 RECA
  6564. NG X1,REC10 IF *1MT* NOT DONE
  6565. EREXIT CLEAR ERROR EXIT
  6566. SETICC RECF SET INTER-CP COMMUNICATION POINTERS
  6567. SA1 RECG GET *SFM* CALL
  6568. BX6 X1
  6569. RJ SYS= SET MAGNET AVAILABLE
  6570. TIME CTIM
  6571. RTIME STAR
  6572. EESET /EVENT/MTXE ISSUE MAGNET AVAILABLE EVENT
  6573. MESSAGE RECE * MAGNET RECOVERY COMPLETE.*
  6574. EQ MAG ENTER MAGNET
  6575.  
  6576.  
  6577. RECA VFD 1/1,47/0,12/3 *1MT* STATUS WORD
  6578. RECB VFD 18/3LSPC,1/0,1/1,10/0,12/,18/RECD
  6579. RECC VFD 18/3L1MT,6/0,12/1,24/RECA
  6580. RECD CON 0 *SPC* REQUEST WORD
  6581. RECE DATA C* MAGNET RECOVERY COMPLETE.*
  6582. RECF VFD 1/1,11/0,6/RCALL-1,18/RCAL,6/0,18/0
  6583. RECG VFD 18/3LSFM,6/20,12/SSTF,6/0,18/RECG
  6584. RES SPACE 4,15
  6585. ** RES - RESET TAPE ALTERNATE STORAGE.
  6586. *
  6587. * EXIT ACTIVE JOB TABLE CLEARED.
  6588. * STAGE REQUEST TABLE CLEARED.
  6589. * PENDING *PFM* REQUEST CLEARED.
  6590. *
  6591. * USES X - 1, 4, 6.
  6592. * A - 1, 6.
  6593. * B - 6, 7.
  6594. *
  6595. * CALLS ISJ.
  6596.  
  6597.  
  6598. RES SUBR ENTRY/EXIT
  6599. SA1 TAJP
  6600. ZR X1,RESX IF TAPE ALTERNATE STORAGE NOT ACTIVE
  6601. SB6 X1
  6602. AX1 24
  6603. SX6 B0+
  6604. SB7 X1-1
  6605. RES1 SA6 B7 CLEAR JOB TABLE
  6606. SB7 B7-B1
  6607. GE B7,B6,RES1 IF MORE TO CLEAR
  6608. SA6 TSRL ZERO LENGTH OF PENDING REQUESTS
  6609. SA6 PFTB+6 CLEAR UNIQUE ID WORD OF ENTRY
  6610. SA6 PFTB CLEAR PENDING *PFM* REQUEST
  6611. SA1 TSRM UPDATE MODIFICATION COUNT
  6612. SX6 B1
  6613. IX6 X6+X1
  6614. SA6 A1
  6615. MX4 1 SET DUMMY VSN
  6616. MX1 -24
  6617. BX4 -X1+X4
  6618. RJ /STAGE/ISJ RESTART SPECIAL STAGING JOB
  6619. EQ RESX RETURN
  6620. SPACE 4,10
  6621. ** THE FOLLOWING CODE CANNOT BE OVERLAID BY THE RESOURCE DEMAND
  6622. * FILE BUFFER.
  6623.  
  6624. ERRNG *-DBUF-DBUFL CHECK FOR BUFFER OVERFLOW
  6625. SDF SPACE 4,20
  6626. ** SDF - SCAN DEMAND FILE.
  6627. *
  6628. * EXIT *TAPE ASSIGNMENT LOST* FLAG SET IN EACH DEMAND
  6629. * FILE ENTRY THAT HAS NONZERO TAPE ASSIGNED COUNT.
  6630. * (SDFA) .LT. 0, IF DEMAND FILE ATTACH FAILED.
  6631. * = 0, IF NO TAPES ASSIGNED AT TERMINATION.
  6632. * .GT. 0, IF TAPES ASSIGNED AT TERMINATION.
  6633. *
  6634. * USES A - 1, 2, 3, 6, 7.
  6635. * B - 2, 3.
  6636. * X - 0, 1, 2, 3, 6, 7.
  6637. *
  6638. * MACROS ATTACH, MACHID, MESSAGE, RECALL, REWRITE,
  6639. * RPHR, SETUI.
  6640.  
  6641.  
  6642. SDF9 RETURN DF,R
  6643.  
  6644. SDF SUBR ENTRY/EXIT
  6645. SETUI 377777B SET USER INDEX
  6646. MACHID SDFC GET MACHINE ID
  6647. MX0 12
  6648. SA1 DF SET ID IN DEMAND FILE NAME
  6649. LX0 -24
  6650. SA2 SDFC
  6651. BX1 -X0*X1
  6652. SX7 A2 SET PF ERROR MESSAGE ADDRESS
  6653. LX2 24
  6654. SA7 DF+10
  6655. BX6 X1+X2
  6656. SA6 A1
  6657. BX0 X0-X0 INDICATE FIRST ATTEMPT TO ATTACH
  6658. MESSAGE (=C* SCANNING RESOURCE DEMAND FILE.*),3
  6659. SDF1 ATTACH DF,0,,,W,,,DF,FA ATTACH RESOURCE DEMAND FILE
  6660. SA1 X2 CHECK ERROR STATUS
  6661. MX2 -8
  6662. LX1 -10
  6663. BX1 -X2*X1
  6664. ZR X1,SDF3 IF NO ERROR
  6665. SX2 X1-1 CHECK FOR FILE BUSY
  6666. SX3 X1-16B CHECK FOR PF UTILITY ACTIVE
  6667. IX2 X2*X3
  6668. NZ X2,SDF8 IF FATAL PF ERROR
  6669. NZ X0,SDF2 IF WAIT MESSAGE ALREADY ISSUED
  6670. SX0 B1
  6671. MESSAGE (=C* WAIT DEMAND FILE ATTACH.*),3
  6672. SDF2 RECALL WAIT FOR DEMAND FILE TO BECOME AVAILABLE
  6673. EQ SDF1 RETRY DEMAND FILE ATTACH
  6674.  
  6675. SDF3 MX0 1 CLEAR EP BIT
  6676. SA1 DF+1
  6677. LX0 44-59
  6678. BX6 -X0*X1
  6679. SA6 A1
  6680.  
  6681. * READ DEMAND FILE ENTRY.
  6682.  
  6683. SDF4 SA1 SDFB SET RANDOM INDEX IN FET
  6684. SA2 DF+1 SET IN=OUT=FIRST
  6685. SX7 X1+2 INCREMENT RANDOM INDEX
  6686. SA7 DF+6
  6687. SX6 X2
  6688. SA6 A2+B1
  6689. SA7 A1
  6690. SA6 A6+B1
  6691. RPHR DF,R READ DEMAND FILE ENTRY
  6692. SA1 DF+2 CHECK FOR DATA TRANSFERRED
  6693. SA2 A1+B1
  6694. IX1 X1-X2
  6695. ZR X1,SDF9 IF EOR/EOF/EOI ENCOUNTERED
  6696. SA3 DBUF+/RSX/RJID CHECK JOB IDENTIFICATION
  6697. ZR X3,SDF4 IF UNUSED ENTRY
  6698. SB2 /RSX/RMTL-1
  6699. SDF5 LT B2,SDF4 IF NO TAPES ASSIGNED TO THIS JOB
  6700. SA1 DBUF+/RSX/RMTP+B2 GET TAPE ENTRY ASSIGNED COUNT
  6701. MX0 -6
  6702. LX1 18
  6703. SB2 B2-B1
  6704. BX6 -X0*X1
  6705. ZR X6,SDF5 IF NO TAPE ASSIGNED COUNT
  6706. SA6 SDFA SET TAPES ASSIGNED FLAG
  6707.  
  6708. * SET TAPE ASSIGNMENT LOST FLAG AND REWRITE DEMAND FILE ENTRY.
  6709.  
  6710. MX0 1 SET TAPE ASSIGNMENT LOST FLAG
  6711. SA1 DBUF+/RSX/RVAL
  6712. LX0 53-59
  6713. SA2 SDFB RESET RANDOM INDEX IN FET
  6714. BX6 X1+X0
  6715. LX0 29-59-53+59
  6716. SA6 A1
  6717. BX7 X0+X2 SET RANDOM REWRITE IN PLACE
  6718. SA7 DF+6
  6719. REWRITE DF,R REWRITE DEMAND FILE ENTRY
  6720. EQ SDF4 CONTINUE PROCESSING DEMAND FILE
  6721.  
  6722. SDF8 MESSAGE SDFC ISSUE PF ERROR MESSAGE
  6723. SX6 -1 INDICATE DEMAND FILE ATTACH FAILED
  6724. SA6 SDFA
  6725. EQ SDFX RETURN
  6726.  
  6727.  
  6728. SDFA CON 0 TAPE ASSIGNED INDICATOR
  6729. SDFB CON -1 DEMAND FILE RANDOM INDEX
  6730. SDFC BSS 3 PF ERROR MESSAGE BUFFER
  6731. ABT SPACE 4,15
  6732. ** ABT - ABORT ROUTINE.
  6733. *
  6734. * ENTRY (B2) = ENDING MESSAGE ADDRESS, 0 IF NO ENDING
  6735. * MESSAGE, FOR ENTRY AT *ABT2* ONLY.
  6736. *
  6737. * EXIT TO *END*.
  6738. *
  6739. * USES A - 1.
  6740. * B - 2.
  6741. * X - 1.
  6742. *
  6743. * CALLS SDF.
  6744. *
  6745. * MACROS MESSAGE, SYSTEM.
  6746.  
  6747.  
  6748. * ISSUE RECOVERY IMPOSSIBLE MESSAGE.
  6749.  
  6750. ABT MESSAGE (=C* RECOVERY IMPOSSIBLE.*)
  6751.  
  6752. * SCAN DEMAND FILE FOR TAPES ASSIGNED.
  6753.  
  6754. ABT1 RJ SDF
  6755. SA1 SDFA
  6756. SB2 B0+
  6757. NG X1,ABT2 IF DEMAND FILE ATTACH FAILED
  6758. SB2 ENDA * MAGNET TERMINATION/NO TAPE JOBS.*
  6759. ZR X1,ABT2 IF NO TAPES ASSIGNED
  6760. SB2 ENDB * TAPES ASSIGNED AT MAGNET TERMINATION.*
  6761.  
  6762. * DUMP MAGNET FIELD LENGTH.
  6763.  
  6764. ABT2 SYSTEM DMD,R,10000B,0
  6765. * EQ END ISSUE MESSAGE AND END
  6766. END SPACE 4,10
  6767. ** END - ENDING ROUTINE.
  6768. *
  6769. * ENTRY (B2) = ENDING MESSAGE ADDRESS, 0 IF NO MESSAGE.
  6770. *
  6771. * MACROS ENDRUN, MESSAGE.
  6772.  
  6773.  
  6774. END ZR B2,END1 IF NO ENDING MESSAGE
  6775. MESSAGE B2
  6776. END1 ENDRUN
  6777.  
  6778.  
  6779. ENDA DATA C* MAGNET TERMINATION/NO TAPE JOBS.*
  6780. ENDB DATA C* TAPES ASSIGNED AT MAGNET TERMINATION.*
  6781. ENDC DATA C* MAGNET DROPPED DURING RECOVERY.*
  6782. ERX SPACE 4,15
  6783. ** ERX - ERROR EXIT PROCESSOR.
  6784. *
  6785. * ENTRY (ERXA) = FWA ERROR EXIT MESSAGE, 0 IF NO MESSAGE.
  6786. *
  6787. * EXIT TO *ABT2*.
  6788. * (B2) = ENDING MESSAGE ADDRESS, 0 IF NO ENDING MESSAGE.
  6789. *
  6790. * USES A - 1.
  6791. * B - 2.
  6792. * X - 1, 2.
  6793. *
  6794. * MACROS GETJCR, MESSAGE.
  6795.  
  6796.  
  6797. ERX SA1 ERXA
  6798. ZR X1,ERX1 IF NO MESSAGE TO ISSUE
  6799. MESSAGE X1
  6800. ERX1 GETJCR ERXC GET ERROR FLAG
  6801. SA1 ERXC
  6802. AX1 54
  6803. SB2 B0
  6804. SX2 X1-ODET
  6805. NZ X2,ABT2 IF NOT OPERATOR DROP
  6806. SB2 ENDC * MAGNET DROPPED DURING RECOVERY.*
  6807. EQ ABT2 DUMP FIELD LENGTH BEFORE ENDING
  6808.  
  6809.  
  6810. ERXA CON ERXB ERROR EXIT MESSAGE ADDRESS
  6811. ERXB DATA C* 1MT PROBABLY LOST.*
  6812. ERXC CON 0 ERROR FLAG
  6813. SPACE 4,10
  6814. ** COMMON DECKS.
  6815.  
  6816.  
  6817. *CALL COMCSYS
  6818. *CALL COMCCPM
  6819. *CALL COMCCIO
  6820. *CALL COMCPFM
  6821. SPACE 4,10
  6822. ** FETS.
  6823.  
  6824.  
  6825. DF BSS 0 RESOURCE DEMAND FILE
  6826. RSXDXX RFILEB DBUF,DBUFL,(FET=14),EPR
  6827. SPACE 4,10
  6828. USE BUFFERS
  6829. QUAL
  6830. SPACE 4,10
  6831. ** ENTRY POINTS.
  6832.  
  6833.  
  6834. MAGNET1 EQU /MAGNET1/TER
  6835. SSJ= EQU /MAGNET1/SSJP SSJ= PRIVILEGES ONLY
  6836. MFL= EQU RQFL*100B-1
  6837. ERRMI UINT-1-* MAGNET1 TOO LARGE
  6838. TTL MAGNET - MAGNETIC TAPE EXECUTIVE.
  6839. SPACE 4,10
  6840. END