Table of Contents

DMTSML Source

References

Source Listing

DMTSML.ASSEMBLE.txt
  1. SML TITLE 'DMTSML (RSCS) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE INPUT FILE SEQUENCEING 00002000
  3. *. 00003000
  4. * MODULE NAME - 00004000
  5. * 00005000
  6. * DMTSML 00006000
  7. * 00007000
  8. * FUNCTION - 00008000
  9. * 00009000
  10. * THIS RSCS LINE DRIVER FUNCTIONS AS AN RJE WORK STATION 00010000
  11. * INTO A REMOTE SYSTEM USING THE MULTI-LEAVING TRANSMISSION 00011000
  12. * PROTOCOL, OR FUNCTIONS AS A HOST TO A REMOTE PROGRAMMABLE 00012000
  13. * WORK STATION SUPPORTING A S/360, S/3, 1130, MODEL 20 OR A 00013000
  14. * 2922. 00014000
  15. * 00015000
  16. * ATTRIBUTES - 00016000
  17. * 00017000
  18. * NON-REUSABLE 00018000
  19. * 00019000
  20. * ENTRY POINTS - 00020000
  21. * 00021000
  22. * SMLINIT 00022000
  23. * 00023000
  24. * 00024000
  25. * ENTRY CONDITIONS - 00025000
  26. * 00026000
  27. * GPR 0 CONTAINS THE LENGTH OF THE PARM FIELD IN BYTES 00027000
  28. * GPR 1 CONTAINS THE ADDRESS OF THE PARM FIELD ON THE START CMD 00028000
  29. * GPR 2 CONTAINS THE ADDRESS OF THE LINK TABLE ENTRY FOR THIS 00029000
  30. * TASK 00030000
  31. * 00031000
  32. * EXIT CONDITIONS - 00032000
  33. * 00033000
  34. * NORMAL/ERROR - 00034000
  35. * 00035000
  36. * RETURN TO SUPVISOR VIA GIVE TERMINATE REQUEST TO DMTREX 00036000
  37. EJECT 00037000
  38. * 00038000
  39. * CALLS TO OTHER ROUTINES - 00039000
  40. * 00040000
  41. * SEE BEGINNING OF EACH SECTION 00041000
  42. * 00042000
  43. * EXTERNAL REFERENCES - 00043000
  44. * 00044000
  45. * LINK TABLE ENTRY FOR THIS LINKID 00045000
  46. * MAIN STORAGE MAP 00046000
  47. * 00047000
  48. * TABLES / WORKAREAS - 00048000
  49. * 00049000
  50. * TASK CONTROL TABLE FOR EACH PROCESSOR 00050000
  51. * 00051000
  52. * 00052000
  53. * REGISTER USAGE - 00053000
  54. * 00054000
  55. * ALL SUBROUTINES IN THE MODULE CONFORM GENERALLY TO THIS USAGE; 00055000
  56. * ANY INDIVIDUAL DEVIATIONS OR EXTENSIONS ARE LISTED WITH THE 00056000
  57. * COMMAND DESCRIPTION 00057000
  58. * 00058000
  59. * GPR0 = ALTERNATE PARAMETER REGISTER 00059000
  60. * GPR1 = PARAMETER REGISTER 00060000
  61. * GPR2 = WORK 00061000
  62. * GPR3 = WORK 00062000
  63. * GPR4 = WORK 00063000
  64. * GPR5 = WORK 00064000
  65. * GPR6 = WORK 00065000
  66. * GPR7 = TCT ADDRESSABILITY 00066000
  67. * GPR8 = WORK 00067000
  68. * GPR9 = BASE REGISTER 00068000
  69. * GPR10 = BASE REGISTER 00069000
  70. * GPR11 = BASE REGISTER 00070000
  71. * GPR12 = BASE REGISTER 00071000
  72. * GPR13 = BUFFER POINTER 00072000
  73. * GPR14 = LINK REGISTER 00073000
  74. * GPR15 = LINK REGISTER 00074000
  75. * 00075000
  76. * NOTES - 00076000
  77. * 00077000
  78. * NONE 00078000
  79. * 00079000
  80. * OPERATION - 00080000
  81. * 00081000
  82. * 00082000
  83. * SEE OPERATION IN EACH SECTION OF PROGRAM 00083000
  84. * 00084000
  85. *. 00085000
  86. EJECT 00086000
  87. DMTSML CSECT 00087000
  88. SPACE 3 00088000
  89. SMLSAVE DC 0D'0' BEGINNING OF MULTI-LEAVING SAVE AREA 00089000
  90. SPACE 1 00090000
  91. SMLPSW DC X'FF04',AL2(0),A(SMLINIT) INITIAL PSW FOR DISPATCH 00091000
  92. SPACE 1 00092000
  93. SMLREG0 DC F'0' INITIAL REGISTER CONTENTS 00093000
  94. SMLREG1 DC F'0' 00094000
  95. SMLREG2 DC F'0' 00095000
  96. SMLREG3 DC A(0) 00096000
  97. SMLREG4 DC A(0) 00097000
  98. SMLREG5 DC A(0) 00098000
  99. SMLREG6 DC A(0) 00099000
  100. SMLREG7 DC F'0' 00100000
  101. SMLREG8 DC F'0' 00101000
  102. SMLREG9 DC A(DMTSML+X'3000') 00102000
  103. SMLREG10 DC A(DMTSML+X'2000') 00103000
  104. SMLREG11 DC A(DMTSML+X'1000') 00104000
  105. SMLREG12 DC A(DMTSML) 00105000
  106. SMLREG13 DC A(0) ADDRESS OF TASK TABLE IS SET BY SUP AT INITIATION 00106000
  107. SMLREG14 DC F'0' 00107000
  108. SMLREG15 DC A(SMLINIT) ENTRY ADDRESS AT INITIATION 00108000
  109. SPACE 1 00109000
  110. REQLOCK DC F'0' SYNCH LOCK FOR REGUEST ARRIVAL 00110000
  111. EJECT 00111000
  112. *. 00112000
  113. * 00113000
  114. * ENTRY NAME - 00114000
  115. * 00115000
  116. * SMLINIT 00116000
  117. * 00117000
  118. * FUNCTION - 00118000
  119. * 00119000
  120. * THIS ROUTINE INITIALIZES THE VARIOUS PARAMETERS 00120000
  121. * NEEDED BY DMTSML. SAVES THE LINKTABLE ADDRESS, 00121000
  122. * INITIALIZED OUTPUT TAGS, AND CONSTRUCTS THE SIGNON 00122000
  123. * CARD FROM INFORMATION ON THE PARM FIELD OF THE 00123000
  124. * START COMMAND. 00124000
  125. * 00125000
  126. * 00126000
  127. * CALLS TO OTHER ROUTINES - 00127000
  128. * 00128000
  129. * DMTASY - TO SET ASYNCHRONOUS EXIT FOR THIS TASK 00129000
  130. * 00130000
  131. * OPERATION - 00131000
  132. * 00132000
  133. * 1. INITIALIZE LINE ADDR FROM LINK TABLE ENTRY 00133000
  134. * 00134000
  135. * 2. SCAN AND VALIDATE PARAMETER LIST 00135000
  136. * 00136000
  137. * 3. MODIFY SYSTEM PARAMETERS FROM INFORMATION OBTAINED 00137000
  138. * FROM THE PARM FIELDS. 00138000
  139. * 00139000
  140. * 4. INITIALIZE PUNCH, PRINT, JOB, AND LOG TAGS 00140000
  141. * 00141000
  142. * 5. SPECIFY ASYNCH EXIT. 00142000
  143. * 00143000
  144. * ERROR MESSAGES - 00144000
  145. * 00145000
  146. * DMTSML901E INVALID SML MODE SPECIFIED -- LINK (LINKID) 00146000
  147. * NOT ACTIVATED 00147000
  148. * 00148000
  149. *. 00149000
  150. SPACE 3 00150000
  151. SMLINIT EQU * 00151000
  152. TCTR EQU 7 TCT BASE REGISTER 00152000
  153. USING DMTSML,R12,R11,R10,R9 00153000
  154. USING SVECTORS,0 GET SVECTORS ADDRESSABILITY 00154000
  155. USING LINKTABL,R6 GET LINKTABL ADDRESSABILTIY 00155000
  156. USING COMDSECT,R15 GET COMMON ROUTINE LIST ADDR 00156000
  157. SPACE 1 00157000
  158. * SAVE LINK TABLE ADDRESS 00158000
  159. ST R2,SMLLINK SAVE THE LINK TABLE ADDRESS FOR LATER 00159000
  160. LR R6,R2 GET LINKTABL ADDR FOR DSECT 00160000
  161. MVC ADACUU(2),LACTLINE MOVE THE LINE ADDRESS TO IOBLOCK 00161000
  162. MVC AXSLINK(8),LINKID AND THE LINK ID FOR AXS 00162000
  163. MVC HDRLINK(8),LINKID AND THE LINK ID FOR AXS 00163000
  164. UNPK SMLLINE(5),ADACUU(3) UNPK THE DEVICE ADDRESS 00164000
  165. MVC SMLLINE(3),SMLLINE+1 MOVE TO FIRST 3 BYTES OF FIELD 00165000
  166. MVI SMLLINE+3,C' ' BLANK THE NEXT BYTE 00166000
  167. MVC SMLLINE+4(4),SMLLINE+3 AND THE REST OF THE FIELD 00167000
  168. TR SMLLINE(3),AXSTRTAB-240 TRANSLATE TO EBCDIC 00168000
  169. LH R4,LACTLINE GET ACTIVE LINE ADDRESS 00169000
  170. DIAG R4,R5,X'24' FIND DEVICE TYPE 00170000
  171. STCM R5,B'0100',ADACUU+3 AND SAVE IN DEVICE BLOCK 00171000
  172. L R15,TLINKS GET START OF LINK CHAIN 00172000
  173. LA R6,8(R15) THE FIRST ENTRY ADDR (LOCAL) 00173000
  174. MVC LOCATION(8),LINKID AND SAVE FOR MSGS 00174000
  175. SPACE 1 00175000
  176. LTR R0,R0 WAS A PARAMETER SPECIFIED? 00176000
  177. BZ SMLIERR1 NOPE - EARLY BOMB OUT 00177000
  178. SPACE 2 00178000
  179. * SET UP REMOTE SYSTEM TYPE 00179000
  180. LA R3,0(,R1) GET START OF PARM FIELD IN R1 00180000
  181. LR R5,R3 AND ALSO IN R4 00181000
  182. ALR R5,R0 ADD IN CNT TO PNT R4 AT END 00182000
  183. BAL R14,PARMGET GET NEXT PARAMETER 00183000
  184. STM R3,R5,INITSAV SAVE START OF THIS PARM 00184000
  185. SLR R4,R3 GET LENGTH OF THIS PARM 00185000
  186. LA R3,1(R4,R3) START OF NEXT PARM 00186000
  187. BAL R14,PARMGET GO GET IT 00187000
  188. CLR R3,R5 WAS IT SPECIFIED? 00188000
  189. BNL SETNOPAS NO CONTINUE 00189000
  190. SLR R4,R3 R4 CONTAINS PARM LENGTH 00190000
  191. CL R4,BUFMAXCT TOO LONG? 00191000
  192. BH SMLIERR2 YES - ERROR EXIT 00192000
  193. STH R4,BUFFCNT SAVE FOR LATER 00193000
  194. BCTR R4,0 REDUCE BY ONE 00194000
  195. EX R4,ICTMOV2 AND MOVE FOR LATER 00195000
  196. LA R3,2(R4,R3) POINT TO START OF NEXT PARM 00196000
  197. BAL R14,PARMGET FRAME IT 00197000
  198. CLR R3,R5 WAS IT SPECIFIED? 00198000
  199. BNL SETNOPAS NO - EXIT 00199000
  200. SLR R4,R3 CALCULATE LENGTH 00200000
  201. CL R4,PASSMAX WAS THE PASSWORD TOO LONG? @VM01162 00201000
  202. BH SMLIERR1 YES..ERROR EXIT @VM01162 00202000
  203. BCTR R4,0 DOWN BY ONE FOR CHAR OP 00203000
  204. EX R4,ICTMOV3 AND MOVE IN THE PASSWORD 00204000
  205. EJECT 00205000
  206. SETNOPAS EQU * 00206000
  207. LM R3,R5,INITSAV RESTORE SYSTEM PARM ADDRS 00207000
  208. SLR R4,R3 R4 = LENGTH OF PARAMETER SPECIFIED 00208000
  209. CL R4,SMLMAXRM IS THE PARM WRONG LENGTH? 00209000
  210. BH SMLIERR1 YES ERROR EXIT 00210000
  211. CLI 0(R3),C'H' IS HASP THE REMOTE SYSTEM? 00211000
  212. BNE SETRM0 NOPE - TRY ANOTHER 00212000
  213. MVC ICTXTSY(6),=C'REMOTE' CHANGE SIGNON CARD 00213000
  214. SH R4,=H'2' REDUCE COUNT TO EX 00214000
  215. BM SMLIERR1 ERROR 00215000
  216. EX R4,ICTMOV MOVE INTO SIGNON CARD 00216000
  217. MVC ICTXT+24(8),PASSWORD MOVE PASSWORD TO SIGNON CARD 00217000
  218. MVI SMLSYS,HASP SET HASP REMOTE SYSTEM TYPE 00218000
  219. MVC SYSTYPE(4),=C'HASP' SET REMOTE SYSTEM TYPE @VM01105 00219000
  220. B SETTAG AND CONTINUE 00220000
  221. SPACE 1 00221000
  222. SETRM0 EQU * 00222000
  223. CLI 0(R3),C'R' IS RES THE REMOTE SYSTEM? 00223000
  224. BNE SETRM1 NOPE - TRY ANOTHER 00224000
  225. MVC RESID(17),PASSWORD MOVE IN PASSWORD @VM01162 00225000
  226. MVC SYSTYPE(3),=C'RES' SET REMOTE SYSTEM TYPE @VM01105 00226000
  227. LA R8,RESTERM GET PARM FIELD ADDR @VM01162 00227000
  228. LA R8,0(R4,R8) FIRST POS PAST PARM TERMID @VM01162 00228000
  229. BCTR R8,0 DOWN BY ONE TO SKIP R @VM01162 00229000
  230. SH R4,=H'2' REDUCE COUNT TO EX 00230000
  231. BM SMLIERR1 ERROR 00231000
  232. EX R4,ICTMOV1 MOVE INTO SIGNON CARD 00232000
  233. MVI 0(R8),C')' MOVE IN LAST CHAR @VM01162 00233000
  234. MVC ICTXT(34),RESCARD MOVE INTO SIGNON CARD @VM01162 00234000
  235. MVI SMLSYS,RES SET RES REMOTE SYSTEM TYPE 00235000
  236. B SETTAG AND CONTINUE 00236000
  237. SPACE 1 00237000
  238. SETRM1 EQU * 00238000
  239. CLI 0(R3),C'A' IS ASP THE REMOTE TYPE? 00239000
  240. BNE SETRM2 NOPE WRONG ALL TOGETHER 00240000
  241. MVC ICTXTSY(5),1(R3) MOVE IN REMOTE TERMINAL NAME@VM01106 00241000
  242. MVC ICTXT+24(8),PASSWORD MOVE PASSWORD TO SIGNON CARD 00242000
  243. MVC SYSTYPE(3),=C'ASP' SET REMOTE SYSTEM TYPE @VM01105 00243000
  244. MVI ICTNUM,C'A' INDICATE HOT READER @VM01106 00244000
  245. MVI SMLSYS,ASP SET ASP REMOTE SYSTEM TYPE 00245000
  246. B SETTAG AND CONTINUE 00246000
  247. SPACE 00247000
  248. SETRM2 EQU * 00248000
  249. CLI 0(R3),C'M' IS HOST THE SYSTEM TYPE? 00249000
  250. MVC SYSTYPE(6),=C'HASPWS' SET REMOTE SYSTEM TYPE @VM01105 00250000
  251. BNE SMLIERR1 TRY NEXT SYSTEM TYPE 00251000
  252. MVI SMLSYS,MASTER SET MASTER SYSTEM TYPE 00252000
  253. MVI WCTRCBR,ORCB1 ACT LIKE HOST END 00253000
  254. MVI WCTTRCB1,WRCB1 ACT LIKE HOST END 00254000
  255. SH R4,=H'2' DOWN BY TWO 00256000
  256. BM SMLIERR1 ERROR @VM01106 00257000
  257. EX R4,ICTMOV4 SAVE FOR LATER CHECK 00258000
  258. MVI $RCOMM1+1,CLOSE NO READER UNTIL SIGNON 00259000
  259. EJECT 00260000
  260. * INITIALIZE THE TASK NAME 00261000
  261. SPACE 1 00262000
  262. SETTAG EQU * 00263000
  263. USING TAG,R8 GET TAG ADDRESSABILITY 00264000
  264. * INITIALIZE PRINT, JOB AND PUNCH TAGS 00265000
  265. LA R8,PTAG GET PRINT TAG ADDRESS 00266000
  266. MVI TAGINDEV,TYPPRT SET PRINTER DEVICE TYPE 00267000
  267. MVC TAGINLOC(8),AXSLINK SET LOCATION ID 00268000
  268. MVC TAGDIST(8),AXSLINK SET LOCATION ID 00269000
  269. MVC TAGLINK(8),AXSLINK SET DEFAULT LINK @VA03300 00270000
  270. MVC TAGTOLOC(8),LOCATION SET DEFAULT TOLOC @VA03300 00271000
  271. MVI PDEVSOPT,MULTOPEN INDICATE MULTOPEN FOR PRT 00272000
  272. MVC PDEVLINK(8),AXSLINK SET LOCATION ID 00273000
  273. SPACE 1 00274000
  274. LA R8,UTAG GET PUNCH TAG ADDRESS 00275000
  275. MVI TAGINDEV,TYPPUN SET PUNCH DEVICE TYPE 00276000
  276. MVC TAGINLOC(8),AXSLINK SET LOCATION ID 00277000
  277. MVC TAGDIST(8),AXSLINK SET LOCATION ID 00278000
  278. MVC TAGLINK(8),AXSLINK SET DEFAULT LINK @VA03300 00279000
  279. MVC TAGTOLOC(8),LOCATION SET DEFAULT TOLOC @VA03300 00280000
  280. MVI UDEVSOPT,MULTOPEN INDICATE MULTOPEN FOR PRT 00281000
  281. MVC UDEVLINK(8),AXSLINK SET LOCATION ID 00282000
  282. SPACE 1 00283000
  283. LA R8,JTAG GET JOB TAG ADDRESS 00284000
  284. MVI TAGINDEV,TYPPUN SET JOB DEVICE TYPE 00285000
  285. MVC TAGINLOC(8),AXSLINK SET LOCATION ID 00286000
  286. MVC TAGDIST(8),AXSLINK SET LOCATION ID 00287000
  287. MVC TAGLINK(8),AXSLINK SET DEFAULT LINK @VA03300 00288000
  288. MVC TAGTOLOC(8),LOCATION SET DEFAULT TOLOC @VA03300 00289000
  289. MVI JDEVSOPT,MULTOPEN INDICATE MULTOPEN FOR PRT 00290000
  290. MVC JDEVLINK(8),AXSLINK SET LOCATION ID 00291000
  291. SPACE 1 00292000
  292. LA R8,LOGTAG GET LOG TAG ADDRESS 00293000
  293. MVI TAGINDEV,TYPPRT SET PRINTER DEVICE TYPE 00294000
  294. MVC TAGINLOC(8),AXSLINK SET LOCATION ID 00295000
  295. MVC TAGDIST(8),AXSLINK SET LOCATION ID 00296000
  296. MVC TAGLINK(8),AXSLINK SET DEFAULT LINK @VA03300 00297000
  297. MVC TAGTOLOC(8),LOCATION SET DEFAULT TOLOC @VA03300 00298000
  298. MVC LOGGREQ+12(R8),AXSLINK SET LOCATION ID 00299000
  299. MVI LOGGREQ+3,MULTOPEN SET MULTOPEN FOR PRT 00300000
  300. DROP R8 DROP ADDRESSABILITY 00301000
  301. EJECT 00302000
  302. * 00303000
  303. * SPECIFY TP BUFFER SIZE 00304000
  304. * 00305000
  305. CLI BUFFER,C' ' WAS THE BUFFER PARAMETER SPECIFIED? 00306000
  306. BE SETNOBUF NO - USE DEFAULT 00307000
  307. CLI BUFFER,C'B' DOES IT START RIGHT? 00308000
  308. BNE SMLIERR2 NO - ERROR 00309000
  309. LA R1,BUFFER GET START OF FIELD 00310000
  310. AH R1,BUFFCNT AND POINT TO THE END OF IT 00311000
  311. OI 0(R1),X'C0' SET ZONE 00312000
  312. LH R1,BUFFCNT GET THE COUNT 00313000
  313. BCTR R1,0 DOWN BY ONE TO SHIP B 00314000
  314. BCTR R1,0 AND AGAIN FOR CHAR OP 00315000
  315. EX R1,PACKBUF AND PACK THE FIELD 00316000
  316. CVB R1,AXSCVD CONVERT IT TO BINARY 00317000
  317. SRL R1,1 SHIFT TO EVEN @VM01162 00318000
  318. SLL R1,1 TPBUFSIZ @VM01162 00319000
  319. CL R1,MAXBUF TOO BIG? 00320000
  320. BH SMLIERR2 YES - ERROR EXIT 00321000
  321. ST R1,TPBUFSIZ AND SAVE 00322000
  322. SETNOBUF EQU * 00323000
  323. L R1,TPBUFSIZ GET SIZE OF BUFFER OR DEFAULT 00324000
  324. STH R1,CCWC+6 AND STORE IN READ CCW 00325000
  325. STH R1,RDCOUNT SET READ COUNT FIELD @VA07451 00326000
  326. LA R1,10(R1) SIZE OF TP BUFFER DSECT 00327000
  327. SRL R1,2 AND UP TO WORD BOUND @VM01162 00328000
  328. SLL R1,2 MOVE BACK @VM01162 00329000
  329. ST R1,BUFLN1 SAVE TO BUFFER CONSTRUCT ROUTINE 00330000
  330. SLL R1,1 ALSO NEED 2*BUFFER SIZE 00331000
  331. ST R1,BUFLN2 THAT GOES HERE FOR LATER 00332000
  332. SPACE 2 00333000
  333. * 00334000
  334. * SPECIFY ALERT ASYN EXIT 00335000
  335. * 00336000
  336. LA R1,ASYNEXIT GET ASYN EXIT ROUTINE ADDR 00337000
  337. SR R0,R0 INDICATE INITIATING REQUEST 00338000
  338. L R15,ASYNREQ GET THE ROUTINE ADDR 00339000
  339. BALR R14,R15 AND SET THE EXIT 00340000
  340. B ISIO AND CONTINUE 00341000
  341. SPACE 1 00342000
  342. ICTMOV MVC ICTNUM(0),1(R3) TO BE EXECUTED BY ABOVE CODE 00343000
  343. ICTMOV1 MVC RESTERM(0),1(R3) TO BE EXECUTED BY ABOVE CODE 00344000
  344. ICTMOV2 MVC BUFFER(0),0(R3) TO BE EXECUTED BY ABOVE CODE 00345000
  345. ICTMOV3 MVC PASSWORD(0),0(R3) TO BE EXECUTED BY ABOVE CODE 00346000
  346. ICTMOV4 MVC MRN(0),1(R3) TO BE EXECUTED BY ABOVE CODE 00347000
  347. PACKBUF PACK AXSCVD(8),BUFFER+1(0) TO BE EXECUTED FROM ABOVE 00348000
  348. EJECT 00349000
  349. *. 00350000
  350. * 00351000
  351. * ENTRY NAME - 00352000
  352. * 00353000
  353. * ISIO 00354000
  354. * 00355000
  355. * FUNCTION - 00356000
  356. * 00357000
  357. * THIS ROUTINE PERFORMS THE ENABLE SEQUENCE ON THE 00358000
  358. * COMMUNICATIONS LINE, ANALYZES THE RESPONSE RECEIVED, AND 00359000
  359. * WHEN CORRECT WRITES THE LINE CONNECTED MSG. 00360000
  360. * 00361000
  361. * CALLS TO OTHER ROUTINES - 00362000
  362. * 00363000
  363. * DMTIOMRQ - TO INITIATE AN I/O OPERATION 00364000
  364. * DMTWAT - TO WAIT FOR AN EVENT COMPLETION 00365000
  365. * 00366000
  366. * OPERATION - 00367000
  367. * 00368000
  368. * 1. ISSUE INITIAL MESSAGE 141. 00369000
  369. * 00370000
  370. * 2. ENABLE TP LINE AND WAIT FOR ENABLE TO COMPLETE. 00371000
  371. * 00372000
  372. * 3. EXAMINE RESPONSE FROM INITIAL READ AND VALIDATE 00373000
  373. * DEPENDENT ON SML MODE. 00374000
  374. * 00375000
  375. * 4. WHEN CORRECT REPLY HAS BEEN RECEIVED ISSUE MSG 142 00376000
  376. * AND EXIT TO IBLDBUFS. 00377000
  377. * 00378000
  378. * RESPONSES - 00379000
  379. * 00380000
  380. * DMTSML141I LINK 'VADDR' READY FOR CONNECTION TO LINK 'LINKID' 00381000
  381. * DMTSML142I LINK 'LINKID' LINE 'VADDR' CONNECTED 00382000
  382. * 00383000
  383. * ERROR MESSAGES - 00384000
  384. * 00385000
  385. * NONE 00386000
  386. * 00387000
  387. *. 00388000
  388. SPACE 3 00389000
  389. ISIO DS 0H 00390000
  390. MSG 141,(SMLLINE,AXSLINK) WRITE MSG 00391000
  391. EJECT 00392000
  392. TM SMLSYS,MASTER ARE WE IN MASTER MODE? 00393000
  393. BNO ISIO1 NOPE CONTINUE 00394000
  394. MVI INITCCWR,NOP IN HOST NOP WRITE ENQUE @VA09842 00396500
  395. MVC EXPRESP(2),=AL1(XSOH,XENQ) WE EXPRECT THIS IN RETURN 00397000
  396. ISIO1 EQU * 00398000
  397. LA R7,15 SET RETRY COUNTER 00399000
  398. RISIO EQU * ESTABLISH COMMUNICATIONS WITH HASP 00400000
  399. LA R6,INITCCW INITIALIZATION CCW STRING 00401000
  400. I27XXIO EQU * ENTRY 00402000
  401. ST R6,ADCCWA STORE IN CAW 00403000
  402. XC ADAECB(4),ADAECB CLEAR OUT SYNCH LOCK 00404000
  403. MVI ADASENSE,X'00' ZERO SENSE BYTE 00405000
  404. LA R1,ADAECB GET ADAPTER IO BLOCK 00406000
  405. L R15,IOREQ SYSTEM I/O PROCESSOR 00407000
  406. BALR R14,R15 GO EXECUTE THE I/O 00408000
  407. CLI ADASIOCC,X'03' DOES THE ADAPTER EXIST? 00409000
  408. BNE RISIO1 OKAY CONTINUE 00410000
  409. LA R1,INITCCW GET FAILING CCW ADDR 00411000
  410. BAL R14,IOERRPRT GO WRITE ERR MSG 00412000
  411. B SMLCRASH EXIT W/O DISABLE @VA08191 00413000
  412. EJECT 00414000
  413. RISIO1 EQU * 00415000
  414. LA R1,INITWAIT GET WAIT LIST 00416000
  415. L R15,WAITREQ SYSTEM WAIT PROCESSOR 00417000
  416. BALR R14,R15 WAIT FOR I/O TO COMPLETE 00418000
  417. TM CMDECB,X'80' WAS IT A COMMAND? 00419000
  418. BO INITCMD YES 00420000
  419. RISIO2 EQU * 00421000
  420. MVI INITCCW,SENSE CHANGE DISABLE TO SENSE 00422000
  421. MVI INITCCWS,NOP NOP SET MODE 00423000
  422. CLC ADACSW+4(2),=X'0C00' DID IT END OKAY 00424000
  423. BNZ SLOOP RETRY IF PREVIOUS I/O BAD 00425000
  424. CLC EXPRESP(2),IREADRES WHAT DID WE GET BACK? 00426000
  425. BE SIGNOK SIGNON ACCEPTED 00427000
  426. SPACE 1 00428000
  427. SLOOP EQU * 00429000
  428. TM ADASENSE,B'00000001' TIMEOUT? 00430000
  429. BO RISIO YES..DONT COUNT 00431000
  430. BCT R7,RISIO RETRY 15 TIMES 00432000
  431. L R1,ADACSW GET LAST CCW 00433000
  432. S R1,=F'8' BACK UP 8 00434000
  433. BAL R14,IOERRPRT WRITE THE ERR MSG 00435000
  434. B EOJ TERMINATE THE TASK 00436000
  435. SPACE 1 00437000
  436. INITCMD EQU * 00438000
  437. XC CMDECB(4),CMDECB CLEAR SYNCH LOCK 00439000
  438. LM R3,R5,CMDSETUP PREPARE FOR COMMAND SCAN 00440000
  439. INITCDSN EQU * 00441000
  440. CLC 0(1,R3),CMDRESP+1 IS IT THIS ONE 00442000
  441. BE INTCALL YES 00443000
  442. BXLE R3,R4,INITCDSN PREPARE FOR NEXT COMPARE 00444000
  443. INTCALL EQU * 00445000
  444. L R6,SMLLINK GET LINK TABLE ADDR 00446000
  445. MVC MSGLINK(8),CMDRESP+4 MOVE IN RESPONSE LINKID 00447000
  446. L R15,0(R3) GET ROUTINE TO CALL 00448000
  447. BALR R14,R15 GO EXECUTE THE COMMAND 00449000
  448. MVI CMDINPGS,X'00' RESET COMMAND IN PROGRESS SWITCH 00450000
  449. TM ADAECB,X'80' WAS THE ADAPTER ALSO POSTED? 00451000
  450. BO RISIO2 YES 00452000
  451. B RISIO1 NO..WAIT AGAIN 00453000
  452. EJECT 00454000
  453. SIGNOK EQU * 00455000
  454. MVC $COMEXIT(4),INTFAKE SET FAKE INTERRUPT 00456000
  455. MSG 142,(AXSLINK,SMLLINE) WRITE MSG 00457000
  456. XC ADCCWA(4),ADCCWA CLEAR OUT ADAPTER SYNCH LOCK 00458000
  457. LA R8,CCTCCW GET RIGHT CCW ADDR 00459000
  458. ST R8,ADCCWA AND SET CAW 00460000
  459. B IBLDBUFS GO CONSTRUCT BUFFER POOL 00461000
  460. SPACE 3 00462000
  461. INTFAKE DC AL4($START) FAKE ENTRY POINT 00463000
  462. INITWAIT DC A(ADAECB) 00464000
  463. DC X'80',AL3(CMDECB) WAIT LIST FOR INIT 00465000
  464. SPACE 1 00466000
  465. DS 0D * 00467000
  466. INITCCW CCW X'2F',INITCCW+5,CC+SILI,1 DISABLE (CHANGED TO SENSE) 00468000
  467. INITCCWS CCW X'23',ISETMODE,CC+SILI,1 SET MODE (CHANGED TO A NOP) 00469000
  468. CCW X'27',0,CC+SILI,1 ENABLE 00470000
  469. INITCCWR CCW 1,INITSEQ,CC+SILI,2 WRITE RESPONSE SEQUENCE 00471000
  470. CCW 2,IREADRES,SILI,2 READ ANSWER FROM HASP 00472000
  471. INITSEQ DC AL1(XSOH,XENQ) PRE SIGN ON RESPONSE 00473000
  472. IREADRES DC AL2(0) RESPONSE CHARACTERS FROM HASP 00474000
  473. EXPRESP DC AL1(XDLE,XACK0) EXPRECTED RESPONSE IF RJE MODE 00475000
  474. ISETMODE DC X'00' SET MODE BYTE 00476000
  475. EJECT 00477000
  476. *---------------------------------------------------------------------* 00478000
  477. * * 00479000
  478. * TP BUFFER POOL CONTRUCTION * 00480000
  479. * * 00481000
  480. *---------------------------------------------------------------------* 00482000
  481. SPACE 1 00483000
  482. BUFLN1 DC A(0) BUFFER LENGTH 00484000
  483. BUFLN2 DC A(0) DOUBLE BUFFER LENGTH 00485000
  484. TNKLN1 DC A(TANKEND-TANKCHN) TANK LENGTH 00486000
  485. TNKLN2 DC A(2*(TANKEND-TANKCHN)) DOUBLE LENGTH 00487000
  486. BUFZEROS DC F'0' FW OF ZERO FOR CHAINING 00488000
  487. BONE DC F'1' FW OF ONE 00489000
  488. BNUMBUFS DC F'4' NUMBER OF TP BUFFERS 00490000
  489. TPBUFSIZ DC F'400' TP BUFFER SIZE 00491000
  490. TNUMBUFS DC F'15' NUMBER OF TANKS 00492000
  491. SPACE 1 00493000
  492. IBLDBUFS DS 0H 00494000
  493. L R15,TCOM GET COMMON ROUTINE LIST ADDR 00495000
  494. L R15,GPAGEREQ GET THE RIGHT ROUTINE 00496000
  495. LA R13,COMSAVE USE THIS SAVE AREA 00497000
  496. BALR R14,R15 AND GET A PAGE 00498000
  497. LR R4,R1 LOAD ADDR OF 1ST BUFFER 00499000
  498. LR R5,R1 LOAD ADDR OF 1ST BUFFER 00500000
  499. ST R1,$BUFPOOL STORE START OF FREE BUFFER POOL 00501000
  500. L R6,BNUMBUFS NUMBER OF BUFFERS TO BE BUILT 00502000
  501. BULDMORE DS 0H 00503000
  502. A R5,BUFLN2 CALCULATE IFLAST BUFFER ADDR 00504000
  503. S R6,BONE DOWN BY ONE 00505000
  504. BZ BUFSDONE BR IF LAST BUFFER 00506000
  505. S R5,BUFLN1 AND THE NEXT ONE 00507000
  506. ST R5,0(0,R4) STORE POINTER IN PREV BUF 00508000
  507. MVC L'BUFCHAIN((BUFSTART-BUFCOUNT),R4),BUFZEROS MOVE IN 00509000
  508. * INITIAL VALUES 00510000
  509. L R4,0(0,R4) CHAIN 00511000
  510. B BULDMORE BR TO BUILD ANOTHER BUFF 00512000
  511. SPACE 1 00513000
  512. BUFSDONE DS 0H 00514000
  513. L R5,BUFZEROS LOAD CHAIN TERMINATOR 00515000
  514. ST R5,0(0,R4) STORE IT IN THE LAST BUFFER 00516000
  515. MVC L'BUFCHAIN((BUFSTART-BUFCOUNT),R4),BUFZEROS MOVE IN 00517000
  516. * INITIAL VALUES 00518000
  517. EJECT 00519000
  518. * NOW BUILD THE TANK QUEUE 00520000
  519. L R15,TCOM GET COMMON ROUTINE LIST ADDR 00521000
  520. L R15,GPAGEREQ GET THE RIGHT ROUTINE 00522000
  521. LA R13,COMSAVE USE THIS SAVE AREA 00523000
  522. BALR R14,R15 AND GET A PAGE 00524000
  523. LR R4,R1 LOAD ADDR OF 1ST TANK 00525000
  524. LR R5,R1 LOAD ADDR OF 1ST TANK 00526000
  525. ST R1,$TANKPOL STORE START OF FREE TANK POOL 00527000
  526. L R6,TNUMBUFS NUMBER OF TANKS TO BE BUILT 00528000
  527. TBLDMORE DS 0H 00529000
  528. A R5,TNKLN2 GET THE LAST ONE 00530000
  529. S R6,BONE DOWN BY ONE 00531000
  530. BZ TNKSDONE BR IF LAST TANK 00532000
  531. S R5,TNKLN1 AND THE NEXT ONE 00533000
  532. ST R5,0(0,R4) STORE POINTER IN PREV BUF 00534000
  533. MVC L'TANKCHN((TANKDATA-TANKRCB),R4),BUFZEROS MOVE IN 00535000
  534. * INITIAL VALUES 00536000
  535. L R4,0(0,R4) CHAIN 00537000
  536. B TBLDMORE BR TO BUILD ANOTHER TANK 00538000
  537. SPACE 1 00539000
  538. TNKSDONE DS 0H 00540000
  539. L R5,BUFZEROS LOAD CHAIN TERMINATOR 00541000
  540. ST R5,0(0,R4) STORE IT IN THE LAST BUFFER 00542000
  541. MVC L'TANKCHN((TANKDATA-TANKRCB),R4),BUFZEROS MOVE IN 00543000
  542. * INITIAL VALUES 00544000
  543. EJECT 00545000
  544. USING BUFDSECT,R13 * 00546000
  545. TM SMLSYS,MASTER ARE WE THE HOST? 00547000
  546. BO NSGNCRD YES DO NOT NEED SIGNON CARD 00548000
  547. CLC $BUFPOOL,=F'0' ARE WE EMPTY 00549000
  548. BE IBUF1 YES 00550000
  549. OI SMLSYS,SGNONREC INDICATE WE HAVE SENT SIGNON 00551000
  550. L R13,$BUFPOOL GET FIRST BUFFER ADDR 00552000
  551. MVC $BUFPOOL(4),0(R13) REMOVE THIS ONE FROM CHAIN 00553000
  552. IBUF1 EQU * 00554000
  553. MVC BUFCOUNT(ICTLE-ICTLS),ICTLS SETUP CONTROL REPLY 00555000
  554. ST R8,$CHNTEMP SAVE WR 00556000
  555. L R8,=A($OUTBUF) GET NEXT PTR 00557000
  556. IBUF2 EQU * 00558000
  557. CLC 0(4,R8),=F'0' IS IT THE LAST 00559000
  558. BE IBUF3 YES 00560000
  559. L R8,0(0,R8) GET THE NEXT ONE 00561000
  560. B IBUF2 AND COMPARE 00562000
  561. SPACE 1 00563000
  562. IBUF3 EQU * 00564000
  563. ST R13,0(0,R8) CHAIN THIS ONE TO IT 00565000
  564. MVC 0(4,R13),=F'0' SET NEW FORWARD ZERO 00566000
  565. L R8,$CHNTEMP RESTORE WR 00567000
  566. NSGNCRD EQU * 00568000
  567. CLC $BUFPOOL,=F'0' ARE WE EMPTY 00569000
  568. BE IBUF4 YES 00570000
  569. L R13,$BUFPOOL GET FIRST BUFFER ADDR 00571000
  570. MVC $BUFPOOL(4),0(R13) REMOVE THIS ONE FROM CHAIN 00572000
  571. IBUF4 EQU * 00573000
  572. ST R13,CBUFFER SET FOR I/O ROUTINES 00574000
  573. MVC BUFSTART,XACKSEQ FAKE AN ACK 00575000
  574. B $ENDREAD FAKE AN INTERRUPT 00576000
  575. EJECT 00577000
  576. *---------------------------------------------------------------------* 00578000
  577. * * 00579000
  578. * SMLINIT -- INITIALIZATION ROUTINE * 00580000
  579. * FOR D M T S M L UNDER RSCS * 00581000
  580. * * 00582000
  581. *---------------------------------------------------------------------* 00583000
  582. SPACE 1 00584000
  583. SMLMAXRM DC F'6' MAX LEN OF REMOTE SYS PARM @VM01151 00585000
  584. PASSMAX DC F'17' MAX PASSWORD LENGTH @VM01162 00586000
  585. REXNAME DC CL4'REX ' MAIN TASK NAME 00587000
  586. AXSNAME DC CL4'AXS ' FILE ACCESS MANAGER TASK NAME 00588000
  587. SMLLINK DC A(0) SML LINK TABLE ENTRY 00589000
  588. SMLLINE DC CL8' ' EBCDIC LINE ADDRESS 00590000
  589. AXSTRTAB DC C'0123456789ABCDEF' EBCDIC TRANSLATE TABLE 00591000
  590. SPACE 1 00592000
  591. MRN DC CL2' ' TERMINAL SIGNON REMOTE NUMBER 00593000
  592. PASSWORD DC CL17' ' USERID/PASSWORD @VM01162 00594000
  593. BUFFER DC CL8' ' BUFFER SIZE 00595000
  594. BUFFCNT DC H'0' COUNT OF BUFFER FIELD 00596000
  595. BUFMAXCT DC F'5' MAX LENGTH OF BUFFER FIELD 00597000
  596. MAXBUF DC F'1017' MAX LENGTH OF TP BUFFER @VA03527 00598000
  597. SPACE 1 00599000
  598. SMLSYS DC X'00' SML TYPE 00600000
  599. * BITS DEFINED IN SMLSYS 00601000
  600. HASP EQU X'80' HASP REMOTE SYSTEM TYPE 00602000
  601. ASP EQU X'40' ASP REMOTE SYSTEM TYPE 00603000
  602. RES EQU X'20' RES REMOTE SYSTEM TYPE 00604000
  603. MASTER EQU X'10' MASTER REMOTE SYSTEM TYPE 00605000
  604. SGNONREC EQU X'08' SIGNON HAS BEEN RECEIVED OR SENT 00606000
  605. SPACE 1 00607000
  606. MASTERSW DC X'00' PROCESSOR ACTIVE SWITCH 00608000
  607. * BITS DEFINED IN MASTERSW 00609000
  608. READER EQU X'80' READER ACTIVE 00610000
  609. PRINTER EQU X'40' PRINTER ACTIVE 00611000
  610. PUNCH EQU X'20' PUNCH ACTIVE 00612000
  611. JOB EQU X'10' JOB PUNCH ACTIVE 00613000
  612. SPACE 00614000
  613. INITSAV DS 3F TEMP SAVE AREA 00615000
  614. EJECT 00616000
  615. *---------------------------------------------------------------------* 00617000
  616. * * 00618000
  617. * INITIALIZATION ERROR PROCESSOR * 00619000
  618. * * 00620000
  619. *---------------------------------------------------------------------* 00621000
  620. SPACE 1 00622000
  621. DS 0H 00623000
  622. SMLIERR1 EQU * 00624000
  623. MSG 901,AXSLINK WRITE THE MESSAGE 00625000
  624. B EOJ AND EXIT 00626000
  625. SPACE 2 00627000
  626. SMLIERR2 EQU * 00628000
  627. MSG 906,AXSLINK WRITE THE MSG 00629000
  628. B EOJ AND EXIT 00630000
  629. EJECT 00631000
  630. *. 00632000
  631. * 00633000
  632. * ENTRY NAME - 00634000
  633. * 00635000
  634. * ASYNEXIT 00636000
  635. * 00637000
  636. * FUNCTION - 00638000
  637. * 00639000
  638. * THIS IS THE ALERT EXIT ENTERED BY DMTSIG. TWO TASKS MAY 00640000
  639. * ALERT THIS LINE DRIVER: DMTREX WHEN A COMMAND HAS BEEN 00641000
  640. * ENTERED FOR THE DMTSML LINE DRIVER TO PROCESS OR DMTAXS 00642000
  641. * TO ASYNCHRONOUSLY NOTIFY DMTSML A FILE HAS ARRIVED FOR 00643000
  642. * TRANSMISSION. 00644000
  643. * 00645000
  644. * CALLS TO OTHER ROUTINES - 00646000
  645. * 00647000
  646. * DMTPST - TO POST AN EVENT COMPLETION 00648000
  647. * 00649000
  648. * OPERATION - 00650000
  649. * 00651000
  650. * 1. TEST IF THE ALERTING TASK IS DMTAXS OR DMTREX. 00652000
  651. * 00653000
  652. * 2. IF DMTAXS POST READER SYNCH LOCK COMPLETE. 00654000
  653. * 00655000
  654. * 3. IF DMTREX AND MSG, QUEUE THE MSG FOR LATER 00656000
  655. * PROCESSING BY A CALL TO PMSGREQ. 00657000
  656. * 00658000
  657. * 4. IF A COMMAND MOVE THE COMMAND TO SML STORAGE AND POST 00659000
  658. * THE COMMAND SYNCH LOCK COMPLETE. 00660000
  659. * 00661000
  660. * RESPONSES - 00662000
  661. * 00663000
  662. * NONE 00664000
  663. * 00665000
  664. * ERROR MESSAGES - 00666000
  665. * 00667000
  666. * NONE 00668000
  667. * 00669000
  668. *. 00670000
  669. SPACE 2 00671000
  670. DS 0D 00672000
  671. ASYNEXIT EQU * 00673000
  672. L R12,TASKSAVE-TASKE(R13) GET THE FIRST BASE REGISTER 00674000
  673. LM R9,R11,SMLREG9 AND THE REST OF THE BASE REGISTERS 00675000
  674. CL R0,REXNAME IS IT THE CONTROLLING TASK CALLING 00676000
  675. BNE ASYN1 NO 00677000
  676. CLI 1(R1),MSGCMD IS IT A MSG ELEMENT? 00678000
  677. BNE ASYNCONT NO CONTINUE 00679000
  678. TM SMLSYS,MASTER ARE WE IN HOST MODE? 00680000
  679. BO ASYNENQ YES MUST STACK MSG 00681000
  680. MVI 2(R1),X'00' INDICATE WE ACCEPT MSG 00682000
  681. BR R14 AND RETURN 00683000
  682. EJECT 00684000
  683. ASYNCONT EQU * 00685000
  684. CLI CMDINPGS,X'FF' IS A COMMAND ALREADY IN PROCESS 00686000
  685. BE ASYNCMD YES TIME TO EXIT 00687000
  686. MVI 2(R1),X'00' INDICATE ACCEPTING COMMAND 00688000
  687. OI CMDINPGS,X'FF' SHOW COMMAND ACTIVE 00689000
  688. SR R15,R15 ZERO FO IC 00690000
  689. IC R15,0(R1) GET COMMAND ELEMENT LENGTH 00691000
  690. EX R15,CMDMVC AND MOVE TO MY BUFFER 00692000
  691. LA R1,CMDECB MUST NEED CMD 00693000
  692. B ASYNRET GO TO COMMON EXIT 00694000
  693. SPACE 1 00695000
  694. ASYN1 EQU * 00696000
  695. CL R0,AXSNAME IS IT FILE ACCESS 00697000
  696. BNER R14 NOPE..RETURN 00698000
  697. TM RCTECB,TCTBUSY IS READER BUSY??? @VA10416 00698100
  698. BOR R14 BR, IF YES @VA10416 00698200
  699. LA R1,RDEVSYNC READER TO BE POSTED 00699000
  700. ASYNRET EQU * 00700000
  701. LA R0,0 POST CODE 00701000
  702. L R15,POSTREQ SYSTEM POST PROCESSOR 00702000
  703. BR R15 AND CONTINUE 00703000
  704. SPACE 1 00704000
  705. ASYNCMD EQU * 00705000
  706. MVI 2(R1),X'10' SHOW COMMAND REFUSAL 00706000
  707. BR R14 AND RETURN TO REX 00707000
  708. SPACE 1 00708000
  709. ASYNENQ EQU * 00709000
  710. L R2,SMLLINK GET LINK TABLE ADDRESS 00710000
  711. LA R13,COMSAVE GET SAVE AREA ADDRESS 00711000
  712. L R15,TCOM GET COMMON ROUTINES LIST 00712000
  713. L R15,PMSGREQ AND THE MSG STACK ROUTINE ADDR 00713000
  714. LR R3,R14 SAVE RETURN REGISTER 00714000
  715. BALR R14,R15 AND STACK THE MSG 00715000
  716. LR R14,R3 RESTORE RETURN REGISTER 00716000
  717. LTR R15,R15 DID MSG STACK? 00717000
  718. BNZ ASYNCMD NO 00718000
  719. MVI 2(R1),X'00' INDICATE ACCEPTANCE 00719000
  720. LA R1,MSGECB INDICATE THE CORRECT ECB FOR POST 00720000
  721. B ASYNRET AND CONTINUE 00721000
  722. SPACE 1 00722000
  723. CMDMVC MVC CMDRESP(0),0(R1) TO BE EXECUTED BY ABOVE CODE 00723000
  724. SPACE 2 00724000
  725. DS 0F 00725000
  726. MSGECB DC F'0' MSG SYNCH LOCK 00726000
  727. CMDECB DC F'0' CMD SYNCH LOCK 00727000
  728. CMDRESP DC CL132' ' CMD RESPOSE BUFFER 00728000
  729. CMDINPGS DC X'00' COMMAND IN PROGRESS SWITCH 00729000
  730. COMSAVE DC 18F'0' COMMON ROUTINE SAVE AREA 00730000
  731. EJECT 00731000
  732. *. 00732000
  733. * 00733000
  734. * ENTRY NAME - 00734000
  735. * 00735000
  736. * $START 00736000
  737. * 00737000
  738. * FUNCTION - 00738000
  739. * 00739000
  740. * THIS IS THE SUPERVISOR ROUTINE FOR DMTSML. THE 00740000
  741. * COMMUTATOR WILL CYCLE LOOKING FOR A ROUTINE TO ENTER 00741000
  742. * UNTIL ALL COMMUTATOR ENTRIES ARE CLOSED, THEN IT WILL 00742000
  743. * WAIT ON A SYNCH LOCK LIST TO BE POSTED. 00743000
  744. * 00744000
  745. * CALLS TO OTHER ROUTINES - 00745000
  746. * 00746000
  747. * DMTWAT - TO WAIT FOR AN EVENT COMPLETION 00747000
  748. * 00748000
  749. * OPERATION - 00749000
  750. * 00750000
  751. * 1. EXIT TO ANY ROUTINE WHOSE COMMUTATOR GATE IS OPEN. 00751000
  752. * 00752000
  753. * 2. CHECK THE STATUS OF THE SYNCH LOCK FOR EACH PROCESSOR, IF 00753000
  754. * THE SYNCH LOCK IS POSTED, OPEN THE PROCESSORS COMMUTATOR 00754000
  755. * GATE. 00755000
  756. * 00756000
  757. * 3. CHECK THE PROGRESS OF A DRAIN OR HOLD. IF COMPLETE ISSUE 00757000
  758. * APPROPRIATE MESSAGE. 00758000
  759. * 00759000
  760. * 4. CHECK TO SEE IF ANY COMMUTATOR GATES ARE OPEN, IF NONE 00760000
  761. * ARE OPEN WAIT ON THE LIST OF PROCESSOR SYNCH LOCKS. 00761000
  762. * 00762000
  763. * RESPONSES - 00763000
  764. * 00764000
  765. * DMTSML611I LINK 'LINKID' FILE TRANSMISSION SUSPENDED 00765000
  766. * 00766000
  767. * ERROR MESSAGES - 00767000
  768. * 00768000
  769. * NONE 00769000
  770. * 00770000
  771. *. 00771000
  772. SPACE 1 00772000
  773. USING IOTABLE,R8 GET IOTABLE ADDRESSABILITY 00773000
  774. $START DS 0H 00774000
  775. $CCOMM1 NOP $CONTROL CONTROL RECORD PROCESSOR 00775000
  776. $TPGETCM NOP $TPGET INPUT BUFFER MANAGER 00776000
  777. $PCOMM1 NOP $PCOM1 ENTRY POINT TO PRINT 00777000
  778. $RCOMM1 B $RCOM1 ENTRY POINT TO READ CARD 00778000
  779. $UCOMM1 NOP $UCOM1 ENTRY TO PUNCH CARD 00779000
  780. $JCOMM1 NOP $JCOM1 ENTRY TO PUNCH JOB 00780000
  781. $WCOMM1 NOP $WCOM1 TYPE ON CONSOLE 00781000
  782. $CMDCOM NOP CMDPROC COMMAND INPUT 00782000
  783. $MSGCOM NOP MSGPROC MESSAGE READY 00783000
  784. $COMCOM NOP $COMSUP COMMUNICATIONS SUPERVISOR 00784000
  785. NOP $INTRUPT INTERRUPT ADDR 00785000
  786. $COMEND EQU * 00786000
  787. CMDECK EQU * 00787000
  788. TM CMDECB,X'80' IS CMD NEEDED 00788000
  789. BZ MSGECK NO 00789000
  790. XC CMDECB(4),CMDECB CLEAR OUT SYNCH LOCK 00790000
  791. MVI $CMDCOM+1,OPEN OPEN CMD GATE 00791000
  792. MSGECK EQU * 00792000
  793. TM MSGECB,X'80' IS MSG NEEDED 00793000
  794. BZ RDRECBCK NO 00794000
  795. XC MSGECB(4),MSGECB CLEAR OUT SYNCH LOCK 00795000
  796. MVI $MSGCOM+1,OPEN OPEN MSG GATE 00796000
  797. SPACE 00797000
  798. RDRECBCK EQU * 00798000
  799. TM RDEVSYNC,X'80' IS THE READER POSTED? 00799000
  800. BZ PCHECBCK NO 00800000
  801. XC RDEVSYNC(4),RDEVSYNC CLEAR OUT SYNCH LOCK 00801000
  802. MVI $RCOMM1+1,OPEN OPEN READER GATE 00802000
  803. SPACE 1 00803000
  804. PCHECBCK EQU * 00804000
  805. TM MASTERSW,PUNCH IS THE DEVICE OPEN 00805000
  806. BNO JOBECBCK NO 00806000
  807. L R8,UDEVFIOA GET IOTABLE ADDRESS 00807000
  808. TM IOSYNCH,X'80' SEE IF DONE 00808000
  809. BNO JOBECBCK NOT DONE YET 00809000
  810. OI $UCOMM1+1,OPEN OPEN GATE 00810000
  811. OC UCTECB,ENDCSW+4 OR IN CSW STATUS 00811000
  812. NI UCTECB,X'EF' TURN OFF BUSY 00812000
  813. XC IOSYNCH(4),IOSYNCH CLEAR ECB 00813000
  814. SPACE 1 00814000
  815. JOBECBCK EQU * 00815000
  816. TM MASTERSW,JOB IS THE DEVICE OPEN 00816000
  817. BNO PRTECBCK NO 00817000
  818. L R8,JDEVFIOA GET IOTABLE ADDRESS 00818000
  819. TM IOSYNCH,X'80' SEE IF DONE 00819000
  820. BNO PRTECBCK NOT DONE YET 00820000
  821. OI $JCOMM1+1,OPEN OPEN GATE 00821000
  822. OC JCTECB,ENDCSW+4 OR IN CSW STATUS 00822000
  823. NI JCTECB,X'EF' TURN OFF BUSY 00823000
  824. XC IOSYNCH(4),IOSYNCH CLEAR ECB 00824000
  825. SPACE 1 00825000
  826. PRTECBCK EQU * 00826000
  827. TM MASTERSW,PRINTER IS THE DEVICE OPEN 00827000
  828. BNO ADAECBCK NOPE 00828000
  829. L R8,PDEVFIOA GET IOBABLE ADDRESS 00829000
  830. TM IOSYNCH,X'80' SEE IF COMPLETE 00830000
  831. BNO ADAECBCK NOT DONE YET 00831000
  832. OI $PCOMM1+1,OPEN OPEN GATE 00832000
  833. OC PCTECB(1),ENDCSW+4 SET ECB WITH CSW STATUS 00833000
  834. NI PCTECB,X'EF' TURN OFF INUSE 00834000
  835. XC IOSYNCH(4),IOSYNCH CLEAR OUT SYNCH LOCK 00835000
  836. SPACE 1 00836000
  837. ADAECBCK EQU * 00837000
  838. TM ADAECB,X'80' IS THE ADAPTER POSTED 00838000
  839. BNO ALLCHK NO 00839000
  840. OI $COMCOM+5,OPEN OPEN GATE 00840000
  841. B GOLOGIT GO LOG THE RECEIVED BUFFER 00841000
  842. SPACE 00842000
  843. LOGITBK EQU * 00843000
  844. XC ADAECB(4),ADAECB CLEAR ECB 00844000
  845. L R6,SMLLINK GET LINK TABLE ENTRY ADDRESS 00845000
  846. TM LFLAG,LDRAIN IS A DRAIN IN PROGRESS? 00846000
  847. BNO ALLHLD NO CONTINUE 00847000
  848. CLI MASTERSW,X'00' ALL FUNCTIONS COMPLETED? 00848000
  849. BNE ALLHLD NO..CONTINUE @VA03276 00849000
  850. CLC $OUTBUF(4),=F'0' ALL BUFFERS SENT @VA03276 00850000
  851. BE EOJ YES..GO END THE THING @VA03276 00851000
  852. ALLHLD EQU * 00852000
  853. TM RDRCMD,RHLDIPGS IS A HOLD PENDING? 00853000
  854. BNO ALLCHK NO CONTINUE 00854000
  855. CLI MASTERSW,X'00' NOTHING ACTIVE? 00855000
  856. BNE ALLCHK YES..ACTIVE PROCESSOR 00856000
  857. CLC $OUTBUF(4),=F'0' ALL BUFFERS SENT? @VA03276 00857000
  858. BNE ALLCHK NO..CONTINUE ON @VA03276 00858000
  859. OI LFLAG,LHOLD INDICATE WE ARE HELD 00859000
  860. MVC MSGLINK(8),HLDCMDLK SET RESPONSE LINKID 00860000
  861. MSG 611,AXSLINK WRITE HELD MSG 00861000
  862. NI RDRCMD,255-RHLDIPGS TURN OFF COMMAND 00862000
  863. ALLCHK EQU * 00863000
  864. CLC $START($COMEND-$START),$ALLOFF ARE ALL BRANCHES NO-OPD 00864000
  865. BNE $START IF NO GO AROUND AGAIN 00865000
  866. L R15,WAITREQ SYSTEM WAIT PROCESSOR 00866000
  867. LA R1,ECBLIST GET ECBLIST ADDR 00867000
  868. BALR R14,R15 GO WAIT FOR POSTING 00868000
  869. B CMDECK GO FIND WHO WOKE US UP 00869000
  870. DROP R8 00870000
  871. EJECT 00871000
  872. DS 0F 00872000
  873. ECBLIST DC A(RDEVSYNC) SYNCH LOCK LIST 00873000
  874. UACON DC X'40',AL3(0) PUNCH SYNCH LOCK 00874000
  875. JACON DC X'40',AL3(0) JOB PUNCH SYNCH LOCK 00875000
  876. DC A(CMDECB) COMMAND SYNCH LOCK 00876000
  877. DC A(MSGECB) MSGS QUEUED SYNCH LOCK 00877000
  878. PACON DC X'40',AL3(0) PRINT SYNCH LOCK 00878000
  879. DC X'80' INDICATE LAST IN LIST 00879000
  880. DC AL3(ADAECB) ADAPTER SYNCH LOCK 00880000
  881. SPACE 1 00881000
  882. $ALLOFF NOP $CONTROL DUMMY COMMUTATOR 00882000
  883. NOP $TPGET TO COMPARE FOR ALL NO-OPS 00883000
  884. NOP $PCOM1 - 00884000
  885. NOP $RCOM1 - 00885000
  886. NOP $UCOM1 - 00886000
  887. NOP $JCOM1 - 00887000
  888. NOP $WCOM1 - 00888000
  889. NOP CMDPROC - 00889000
  890. NOP MSGPROC - 00890000
  891. NOP $COMSUP - 00891000
  892. NOP $INTRUPT - 00892000
  893. SPACE 1 - 00893000
  894. GOLOGIT EQU * 00894000
  895. STM R14,R1,KRSAV SAVE REGISTERS 00895000
  896. L R14,CBUFFER GET LAST TP BUFFER ADDR 00896000
  897. LA R14,7(R14) START OF DATA 00897000
  898. LA R1,R INDICATE READ 00898000
  899. BAL R15,KLOGIT GO LOG IT 00899000
  900. LM R14,R1,KRSAV RESTORE REGISTERS 00900000
  901. B LOGITBK AND CONTINUE 00901000
  902. SPACE 00902000
  903. KRSAV DC 4F'0' SAVE AREA 00903000
  904. SPACE 3 00904000
  905. OPEN EQU X'F0' GATE OPEN 00905000
  906. CLOSE EQU X'00' GATE CLOSED 00906000
  907. EJECT 00907000
  908. CNOP 6,8 00908000
  909. $CCOM1 BALR R7,0 ENTRY FROM COMMUTATOR TO PROCESSOR 00909000
  910. $TCT1 DS 0H ORIGIN OF TASK CONTROL TABLE 00910000
  911. CTCT DS 0H 00911000
  912. $CTLTCT EQU * 00912000
  913. CCTSTRT B $CRTN1 B TO PROPER PROCESSOR ENTRY 00913000
  914. CCTENTY EQU *-2 ADR PORTION ***MODIFIED BY PROCE 00914000
  915. CCTRTN B $CCOMM1+4 B TO NEXT PROCESSOR VIA COMMUTA 00915000
  916. CCTCCW DC X'0' CCW FOR DEVICE OP-CODE 00916000
  917. CCTDATA DC AL3(0) ADDRESS OF DATA TRANSFERRED 00917000
  918. CCTFLAG DC X'20' FLAGS ON CCW 00918000
  919. CCTOPCOD DC X'00' SAVE AREA FOR CCW OP-CODE 00919000
  920. CCTCCWCT DC AL2(80) CCW COUNT OF DATA TRANSFERRED 00920000
  921. CCTECB DC X'00' EVENT CONTROL 00921000
  922. CCTSTAT DC X'00' STATUS FLAGS 00922000
  923. CCTWFB DC AL1(0) WAITING FOR BUFFERS 00923000
  924. CCTSAV1 DC F'0' SAVE AREA FOR PROCESSOR ROUTINE 00924000
  925. CCTNEXT DC A($TCT2) NEXT TCT IN CHAIN 00925000
  926. CCTFCS DC X'0000' FUNCTION CONTROL SEQUENCE MASK 00926000
  927. CCTRCBR DC X'80' RECV RECORD CONTROL BLOCK 00927000
  928. CCTRCBT DC X'00' TRANS RECORD CONTROL BLOCK 00928000
  929. CCTCOM DC A($CCOMM1) POINTER BACK TO COMMUTATOR 00929000
  930. CDEVSYNC DC F'0' SYNCH LOCK 00930000
  931. CDEVREQN DC CL4'AXS ' FILE ACCESS NAME 00931000
  932. CDEVREQ DC A(*+8) REQUEST BUFFER ADDRESS 00932000
  933. CDEVRESP DC AL1(19),AL3(*+3) RESPONSE BUFFER 00933000
  934. CDEVRLEN DC AL1(0) REQUEST LENGTH 00934000
  935. CDEVFUN DC AL1(0) REQUEST FUNCTION 00935000
  936. CDEVRESV DC AL1(0) RESERVED BYTE 00936000
  937. CDEVSOPT DC AL1(0) SUB OPTION BYTE 00937000
  938. CDEVTAG DC A(0) TAG ADDRESS 00938000
  939. CDEVFIOA DC A(0) FILE I/O AREA 00939000
  940. CDEVLINK DC CL8' ' LINK NAME 00940000
  941. CSW1 DC AL1(0) DEVICE SWITCH 1 00941000
  942. CSW2 DC AL1(0) DEVICE SWITCH 2 00942000
  943. CSW3 DC AL1(0) DEVICE SWITCH 3 00943000
  944. CSW4 DC AL1(0) DEVICE SWITCH 4 00944000
  945. CCTTOVM DC CL8' ' VM OUTPUT DESTINATION 00945000
  946. * 00946000
  947. * NORMAL DEVICE ECTENTION 00947000
  948. * 00948000
  949. CCTTANK DC A(0) NEXT TANK TO OUTPUT 00949000
  950. CCTBUFER DC A(0) ADDR OF CURRENT BUFFER 00950000
  951. * 00951000
  952. * TNKLM,TNKCT AND BUFLM,BUFCT MUST APPEAR IN SEQ AND STRT 00952000
  953. * ON HALF WORD BOUNDARIES 00953000
  954. CCTTNKLM DC AL1(15) MAX NUM OF TANKS ASSIGNABLE TO 00954000
  955. CCTTNKCT DC AL1(0) CURRENT NUM ASSIGNED 00955000
  956. CCTBUFLM DC AL1(5) MAX NUM OF BUFFERS ASSIGNABLE 00956000
  957. CCTBUFCT DC AL1(0) CURRENT NUM ASSIGNED 00957000
  958. EJECT 00958000
  959. CNOP 6,8 00959000
  960. $WCOM1 BALR R7,0 ENTRY FROM COMMUTATOR TO PROCESSOR 00960000
  961. $TCT2 DS 0H ORIGIN OF TASK CONTROL TABLE 00961000
  962. WTCT DS 0H 00962000
  963. $CONTCT EQU * 00963000
  964. WCTSTRT B $WRTN1 B TO PROPER PROCESSOR ENTRY 00964000
  965. WCTENTY EQU *-2 ADR PORTION ***MODIFIED BY PROCE 00965000
  966. WCTRTN B $WCOMM1+4 B TO NEXT PROCESSOR VIA COMMUTA 00966000
  967. WCTCCW DC X'0' CCW FOR DEVICE OP-CODE 00967000
  968. WCTDATA DC AL3(0) ADDRESS OF DATA TRANSFERRED 00968000
  969. WCTFLAG DC X'20' FLAGS ON CCW 00969000
  970. WCTOPCOD DC X'00' SAVE AREA FOR CCW OP-CODE 00970000
  971. WCTCCWCT DC AL2(80) CCW COUNT OF DATA TRANSFERRED 00971000
  972. WCTECB DC X'00' EVENT CONTROL 00972000
  973. WCTSTAT DC X'10' STATUS FLAGS 00973000
  974. WCTWFB DC AL1(0) WAITING FOR BUFFERS 00974000
  975. WCTSAV1 DC F'0' SAVE AREA FOR PROCESSOR ROUTINE 00975000
  976. WCTNEXT DC A($TCT3) NEXT TCT IN CHAIN 00976000
  977. WCTFCS DC X'0040' FUNCTION CONTROL SEQUENCE MASK 00977000
  978. WCTRCBR DC X'91' RECV RECORD CONTROL BLOCK 00978000
  979. WCTRCBT DC X'00' TRANS RECORD CONTROL BLOCK 00979000
  980. WCTCOM DC A($WCOMM1) POINTER BACK TO COMMUTATOR 00980000
  981. WDEVSYNC DC F'0' SYNCH LOCK 00981000
  982. WDEVREQN DC CL4'AXS ' FILE ACCESS NAME 00982000
  983. WDEVREQ DC A(*+8) REQUEST BUFFER ADDRESS 00983000
  984. WDEVRESP DC AL1(19),AL3(*+3) RESPONSE BUFFER 00984000
  985. WDEVRLEN DC AL1(0) REQUEST LENGTH 00985000
  986. WDEVFUN DC AL1(0) REQUEST FUNCTION 00986000
  987. WDEVRESV DC AL1(0) RESERVED BYTE 00987000
  988. WDEVSOPT DC AL1(0) SUB OPTION BYTE 00988000
  989. WDEVTAG DC A(0) TAG ADDRESS 00989000
  990. WDEVFIOA DC A(0) FILE I/O AREA 00990000
  991. WDEVLINK DC CL8' ' LINK NAME 00991000
  992. WSW1 DC AL1(0) DEVICE SWITCH 1 00992000
  993. WSW2 DC AL1(0) DEVICE SWITCH 2 00993000
  994. WSW3 DC AL1(0) DEVICE SWITCH 3 00994000
  995. WSW4 DC AL1(0) DEVICE SWITCH 4 00995000
  996. WCTTOVM DC CL8' ' VM OUTPUT DESTINATION 00996000
  997. * 00997000
  998. * NORMAL DEVICE EWTENTION 00998000
  999. * 00999000
  1000. WCTTANK DC A(0) NEXT TANK TO OUTPUT 01000000
  1001. WCTBUFER DC A(0) ADDR OF CURRENT BUFFER 01001000
  1002. * 01002000
  1003. * TNKLM,TNKCT AND BUFLM,BUFCT MUST APPEAR IN SEQ AND STRT 01003000
  1004. * ON HALF WORD BOUNDARIES 01004000
  1005. WCTTNKLM DC AL1(13) MAX NUM OF TANKS ASSIGNABLE TO 01005000
  1006. WCTTNKCT DC AL1(0) CURRENT NUM ASSIGNED 01006000
  1007. WCTBUFLM DC AL1(3) MAX NUM OF BUFFERS ASSIGNABLE 01007000
  1008. WCTBUFCT DC AL1(0) CURRENT NUM ASSIGNED 01008000
  1009. EJECT 01009000
  1010. * 01010000
  1011. * TANK EXTENTIONS FOR READER AND CONSOLE PROCESSORS 01011000
  1012. * 01012000
  1013. WCTTANK1 DC A(0) TANKCHN AND WORK AREA ONE 01013000
  1014. WCTTRCB1 DC X'92' RCB IDENTIFICATION 01014000
  1015. WCTTSRC1 DC X'80' SRCB IDENTIFICATION 01015000
  1016. WCTTCT1 DC H'80' NUMBER OF DATA CHARACTERS 01016000
  1017. WCTTDTA1 DC CL124' ' 01017000
  1018. DC CL4' ' ALLOW ROOM FOR MSG OF 120+LOCID @VA03279 01018000
  1019. EJECT 01019000
  1020. CNOP 6,8 01020000
  1021. $PCOM1 BALR R7,0 ENTRY FROM COMMUTATOR TO PROCESSOR 01021000
  1022. $TCT3 DS 0H ORIGIN OF TASK CONTROL TABLE 01022000
  1023. PTCT DS 0H 01023000
  1024. PCTSTRT B $PRTN1 B TO PROPER PROCESSOR ENTRY 01024000
  1025. PCTENTY EQU *-2 ADR PORTION ***MODIFIED BY PROCE 01025000
  1026. PCTRTN B $PCOMM1+4 B TO NEXT PROCESSOR VIA COMMUTA 01026000
  1027. PCTCCW DC X'0' CCW FOR DEVICE OP-CODE 01027000
  1028. PCTDATA DC AL3(0) ADDRESS OF DATA TRANSFERRED 01028000
  1029. PCTFLAG DC X'20' FLAGS ON CCW 01029000
  1030. PCTOPCOD DC X'01' SAVE AREA FOR CCW OP-CODE 01030000
  1031. PCTCCWCT DC AL2(80) CCW COUNT OF DATA TRANSFERRED 01031000
  1032. PCTECB DC X'00' EVENT CONTROL 01032000
  1033. PCTSTAT DC X'08' STATUS FLAGS 01033000
  1034. PCTWFB DC AL1(0) WAITING FOR BUFFERS 01034000
  1035. PCTSAV1 DC F'0' SAVE AREA FOR PROCESSOR ROUTINE 01035000
  1036. PCTNEXT DC A($TCT4) NEXT TCT IN CHAIN 01036000
  1037. PCTFCS DC X'0800' FUNCTION CONTROL SEQUENCE MASK 01037000
  1038. PCTRCBR DC X'94' RECV RECORD CONTROL BLOCK 01038000
  1039. PCTRCBT DC X'00' TRANS RECORD CONTROL BLOCK 01039000
  1040. PCTCOM DC A($PCOMM1) POINTER BACK TO COMMUTATOR 01040000
  1041. PDEVSYNC DC F'0' SYNCH LOCK 01041000
  1042. PDEVREQN DC CL4'AXS ' FILE ACCESS NAME 01042000
  1043. PDEVREQ DC A(*+8) REQUEST BUFFER ADDRESS 01043000
  1044. PDEVRESP DC AL1(19),AL3(*+3) RESPONSE BUFFER 01044000
  1045. PDEVRLEN DC AL1(19) REQUEST LENGTH 01045000
  1046. PDEVFUN DC AL1(0) REQUEST FUNCTION 01046000
  1047. PDEVRESV DC AL1(0) RESERVED BYTE 01047000
  1048. PDEVSOPT DC AL1(0) SUB OPTION BYTE 01048000
  1049. PDEVTAG DC A(PTAG) TAG ADDRESS 01049000
  1050. PDEVFIOA DC A(0) FILE I/O AREA 01050000
  1051. PDEVLINK DC CL8' ' LINK NAME 01051000
  1052. PSW1 DC AL1(0) DEVICE SWITCH 1 01052000
  1053. PSW2 DC AL1(0) DEVICE SWITCH 2 01053000
  1054. PSW3 DC AL1(0) DEVICE SWITCH 3 01054000
  1055. PSW4 DC AL1(0) DEVICE SWITCH 4 01055000
  1056. PCTTOVM DC CL8' ' VM OUTPUT DESTINATION 01056000
  1057. * 01057000
  1058. * NORMAL DEVICE EPTENTION 01058000
  1059. * 01059000
  1060. PCTTANK DC A(0) NEXT TANK TO OUTPUT 01060000
  1061. PCTBUFER DC A(0) ADDR OF CURRENT BUFFER 01061000
  1062. * 01062000
  1063. * TNKLM,TNKCT AND BUFLM,BUFCT MUST APPEAR IN SEQ AND STRT 01063000
  1064. * ON HALF WORD BOUNDARIES 01064000
  1065. PCTTNKLM DC AL1(1) MAX NUM OF TANKS ASSIGNABLE TO 01065000
  1066. PCTTNKCT DC AL1(0) CURRENT NUM ASSIGNED 01066000
  1067. PCTBUFLM DC AL1(2) MAX NUM OF BUFFERS ASSIGNABLE 01067000
  1068. PCTBUFCT DC AL1(0) CURRENT NUM ASSIGNED 01068000
  1069. PTAG DC 108CL1' ' DEVICE TAG 01069000
  1070. EJECT 01070000
  1071. CNOP 6,8 01071000
  1072. $RCOM1 BALR R7,0 ENTRY FROM COMMUTATOR TO PROCESSOR 01072000
  1073. $TCT4 DS 0H ORIGIN OF TASK CONTROL TABLE 01073000
  1074. RTCT DS 0H 01074000
  1075. RCTSTRT B $RRTN1 B TO PROPER PROCESSOR ENTRY 01075000
  1076. RCTENTY EQU *-2 ADR PORTION ***MODIFIED BY PROCE 01076000
  1077. RCTRTN B $RCOMM1+4 B TO NEXT PROCESSOR VIA COMMUTA 01077000
  1078. RCTCCW DC X'0' CCW FOR DEVICE OP-CODE 01078000
  1079. RCTDATA DC AL3(0) ADDRESS OF DATA TRANSFERRED 01079000
  1080. RCTFLAG DC X'20' FLAGS ON CCW 01080000
  1081. RCTOPCOD DC X'00' SAVE AREA FOR CCW OP-CODE 01081000
  1082. RCTCCWCT DC AL2(80) CCW COUNT OF DATA TRANSFERRED 01082000
  1083. RCTECB DC X'00' EVENT CONTROL 01083000
  1084. RCTSTAT DC X'00' STATUS FLAGS 01084000
  1085. RCTWFB DC AL1(0) WAITING FOR BUFFERS 01085000
  1086. RCTSAV1 DC F'0' SAVE AREA FOR PROCESSOR ROUTINE 01086000
  1087. RCTNEXT DC A($TCT5) NEXT TCT IN CHAIN 01087000
  1088. RCTFCS DC X'0800' FUNCTION CONTROL SEQUENCE MASK 01088000
  1089. RCTRCBR DC X'FF' RECV RECORD CONTROL BLOCK 01089000
  1090. RCTRCBT DC X'93' TRANS RECORD CONTROL BLOCK 01090000
  1091. RCTCOM DC A($RCOMM1) POINTER BACK TO COMMUTATOR 01091000
  1092. RDEVSYNC DC F'0' SYNCH LOCK 01092000
  1093. RDEVREQN DC CL4'AXS ' FILE ACCESS NAME 01093000
  1094. RDEVREQ DC A(*+8) REQUEST BUFFER ADDRESS 01094000
  1095. RDEVRESP DC AL1(19),AL3(*+3) RESPONSE BUFFER 01095000
  1096. RDEVRLEN DC AL1(0) REQUEST LENGTH 01096000
  1097. RDEVFUN DC AL1(0) REQUEST FUNCTION 01097000
  1098. RDEVRESV DC AL1(0) RESERVED BYTE 01098000
  1099. RDEVSOPT DC AL1(0) SUB OPTION BYTE 01099000
  1100. RDEVTAG DC A(0) TAG ADDRESS 01100000
  1101. RDEVFIOA DC A(0) FILE I/O AREA 01101000
  1102. RDEVLINK DC CL8' ' LINK NAME 01102000
  1103. RSW1 DC AL1(0) DEVICE SWITCH 1 01103000
  1104. RSW2 DC AL1(0) DEVICE SWITCH 2 01104000
  1105. RSW3 DC AL1(0) DEVICE SWITCH 3 01105000
  1106. RSW4 DC AL1(0) DEVICE SWITCH 4 01106000
  1107. RCTTOVM DC CL8' ' VM OUTPUT DESTINATION 01107000
  1108. * 01108000
  1109. * TANK ERTENTIONS FOR READER AND CONSOLE PROCESSORS 01109000
  1110. * 01110000
  1111. RCTTANK1 DC A(0) TANKCHN AND WORK AREA ONE 01111000
  1112. RCTTRCB1 DC X'93' RCB IDENTIFICATION 01112000
  1113. RCTTSRC1 DC X'80' SRCB IDENTIFICATION 01113000
  1114. RCTTCT1 DC H'80' NUMBER OF DATA CHARACTERS 01114000
  1115. RCTTDTA1 DC CL136' ' 01115000
  1116. EJECT 01116000
  1117. CNOP 6,8 01117000
  1118. $UCOM1 BALR R7,0 ENTRY FROM COMMUTATOR TO PROCESSOR 01118000
  1119. $TCT5 DS 0H ORIGIN OF TASK CONTROL TABLE 01119000
  1120. UTCT DS 0H 01120000
  1121. UCTSTRT B $URTN1 B TO PROPER PROCESSOR ENTRY 01121000
  1122. UCTENTY EQU *-2 ADR PORTION ***MODIFIED BY PROCE 01122000
  1123. UCTRTN B $UCOMM1+4 B TO NEXT PROCESSOR VIA COMMUTA 01123000
  1124. UCTCCW DC X'0' CCW FOR DEVICE OP-CODE 01124000
  1125. UCTDATA DC AL3(0) ADDRESS OF DATA TRANSFERRED 01125000
  1126. UCTFLAG DC X'20' FLAGS ON CCW 01126000
  1127. UCTOPCOD DC X'41' SAVE AREA FOR CCW OP-CODE 01127000
  1128. UCTCCWCT DC AL2(80) CCW COUNT OF DATA TRANSFERRED 01128000
  1129. UCTECB DC X'00' EVENT CONTROL 01129000
  1130. UCTSTAT DC X'00' STATUS FLAGS 01130000
  1131. UCTWFB DC AL1(0) WAITING FOR BUFFERS 01131000
  1132. UCTSAV1 DC F'0' SAVE AREA FOR PROCESSOR ROUTINE 01132000
  1133. UCTNEXT DC A($TCT6) NEXT TCT IN CHAIN 01133000
  1134. UCTFCS DC X'0001' FUNCTION CONTROL SEQUENCE MASK 01134000
  1135. UCTRCBR DC X'95' RECV RECORD CONTROL BLOCK 01135000
  1136. UCTRCBT DC X'00' TRANS RECORD CONTROL BLOCK 01136000
  1137. UCTCOM DC A($UCOMM1) POINTER BACK TO COMMUTATOR 01137000
  1138. UDEVSYNC DC F'0' SYNCH LOCK 01138000
  1139. UDEVREQN DC CL4'AXS ' FILE ACCESS NAME 01139000
  1140. UDEVREQ DC A(*+8) REQUEST BUFFER ADDRESS 01140000
  1141. UDEVRESP DC AL1(19),AL3(*+3) RESPONSE BUFFER 01141000
  1142. UDEVRLEN DC AL1(19) REQUEST LENGTH 01142000
  1143. UDEVFUN DC AL1(0) REQUEST FUNCTION 01143000
  1144. UDEVRESV DC AL1(0) RESERVED BYTE 01144000
  1145. UDEVSOPT DC AL1(0) SUB OPTION BYTE 01145000
  1146. UDEVTAG DC A(UTAG) TAG ADDRESS 01146000
  1147. UDEVFIOA DC A(0) FILE I/O AREA 01147000
  1148. UDEVLINK DC CL8' ' LINK NAME 01148000
  1149. USW1 DC AL1(0) DEVICE SWITCH 1 01149000
  1150. USW2 DC AL1(0) DEVICE SWITCH 2 01150000
  1151. USW3 DC AL1(0) DEVICE SWITCH 3 01151000
  1152. USW4 DC AL1(0) DEVICE SWITCH 4 01152000
  1153. UCTTOVM DC CL8' ' VM OUTPUT DESTINATION 01153000
  1154. * 01154000
  1155. * NORMAL DEVICE EUTENTION 01155000
  1156. * 01156000
  1157. UCTTANK DC A(0) NEXT TANK TO OUTPUT 01157000
  1158. UCTBUFER DC A(0) ADDR OF CURRENT BUFFER 01158000
  1159. * 01159000
  1160. * TNKLM,TNKCT AND BUFLM,BUFCT MUST APPEAR IN SEQ AND STRT 01160000
  1161. * ON HALF WORD BOUNDARIES 01161000
  1162. UCTTNKLM DC AL1(1) MAX NUM OF TANKS ASSIGNABLE TO 01162000
  1163. UCTTNKCT DC AL1(0) CURRENT NUM ASSIGNED 01163000
  1164. UCTBUFLM DC AL1(2) MAU NUM OF BUFFERS ASSIGNABLE 01164000
  1165. UCTBUFCT DC AL1(0) CURRENT NUM ASSIGNED 01165000
  1166. UTAG DC 108CL1' ' DEVICE TAG 01166000
  1167. EJECT 01167000
  1168. CNOP 6,8 01168000
  1169. $JCOM1 BALR R7,0 ENTRY FROM COMMUTATOR TO PROCESSOR 01169000
  1170. $TCT6 DS 0H ORIGIN OF TASK CONTROL TABLE 01170000
  1171. JTCT DS 0H 01171000
  1172. JCTSTRT B $JRTN1 B TO PROPER PROCESSOR ENTRY 01172000
  1173. JCTENTY EQU *-2 ADR PORTION ***MODIFIED BY PROCE 01173000
  1174. JCTRTN B $JCOMM1+4 B TO NEXT PROCESSOR VIA COMMUTA 01174000
  1175. JCTCCW DC X'0' CCW FOR DEVICE OP-CODE 01175000
  1176. JCTDATA DC AL3(0) ADDRESS OF DATA TRANSFERRED 01176000
  1177. JCTFLAG DC X'20' FLAGS ON CCW 01177000
  1178. JCTOPCOD DC X'41' SAVE AREA FOR CCW OP-CODE 01178000
  1179. JCTCCWCT DC AL2(80) CCW COUNT OF DATA TRANSFERRED 01179000
  1180. JCTECB DC X'00' EVENT CONTROL 01180000
  1181. JCTSTAT DC X'00' STATUS FLAGS 01181000
  1182. JCTWFB DC AL1(0) WAITING FOR BUFFERS 01182000
  1183. JCTSAV1 DC F'0' SAVE AREA FOR PROCESSOR ROUTINE 01183000
  1184. JCTNEXT DC A(0) NEXT TCT IN CHAIN 01184000
  1185. JCTFCS DC X'0800' FUNCTION CONTROL SEQUENCE MASK 01185000
  1186. JCTRCBR DC X'93' RECV RECORD CONTROL BLOCK 01186000
  1187. JCTRCBT DC X'00' TRANS RECORD CONTROL BLOCK 01187000
  1188. JCTCOM DC A($JCOMM1) POINTER BACK TO COMMUTATOR 01188000
  1189. JDEVSYNC DC F'0' SYNCH LOCK 01189000
  1190. JDEVREQN DC CL4'AXS ' FILE ACCESS NAME 01190000
  1191. JDEVREQ DC A(*+8) REQUEST BUFFER ADDRESS 01191000
  1192. JDEVRESP DC AL1(19),AL3(*+3) RESPONSE BUFFER 01192000
  1193. JDEVRLEN DC AL1(19) REQUEST LENGTH 01193000
  1194. JDEVFUN DC AL1(0) REQUEST FUNCTION 01194000
  1195. JDEVRESV DC AL1(0) RESERVED BYTE 01195000
  1196. JDEVSOPT DC AL1(0) SUB OPTION BYTE 01196000
  1197. JDEVTAG DC A(JTAG) TAG ADDRESS 01197000
  1198. JDEVFIOA DC A(0) FILE I/O AREA 01198000
  1199. JDEVLINK DC CL8' ' LINK NAME 01199000
  1200. JSW1 DC AL1(0) DEVICE SWITCH 1 01200000
  1201. JSW2 DC AL1(0) DEVICE SWITCH 2 01201000
  1202. JSW3 DC AL1(0) DEVICE SWITCH 3 01202000
  1203. JSW4 DC AL1(0) DEVICE SWITCH 4 01203000
  1204. JCTTOVM DC CL8' ' VM OUTPUT DESTINATION 01204000
  1205. * 01205000
  1206. * NORMAL DEVICE EXTENTION 01206000
  1207. * 01207000
  1208. JCTTANK DC A(0) NEXT TANK TO OUTPUT 01208000
  1209. JCTBUFER DC A(0) ADDR OF CURRENT BUFFER 01209000
  1210. * 01210000
  1211. * TNKLM,TNKCT AND BUFLM,BUFCT MUST APPEAR IN SEQ AND STRT 01211000
  1212. * ON HALF WORD BOUNDARIES 01212000
  1213. JCTTNKLM DC AL1(2) MAX NUM OF TANKS ASSIGNABLE TO @VA04612 01213000
  1214. JCTTNKCT DC AL1(0) CURRENT NUM ASSIGNED 01214000
  1215. JCTBUFLM DC AL1(2) MAX NUM OF BUFFERS ASSIGNABLE 01215000
  1216. JCTBUFCT DC AL1(0) CURRENT NUM ASSIGNED 01216000
  1217. JTAG DC 108CL1' ' DEVICE TAG 01217000
  1218. EJECT 01218000
  1219. * 01219000
  1220. * BEGINNING OF QUEUE CHAINS 01220000
  1221. * 01221000
  1222. $TEMP DC H'0' GLOBAL TEMPORARY WORK 01222000
  1223. $CHNTEMP DC A(0) DISABLED TEMPORARY WORK 01223000
  1224. $BUFPOOL DC A(0) BUFFER POOL CHAIN CONTROL WORD 01224000
  1225. $TANKPOL DC A(0) TANK QUEUE CONTROL WORD 01225000
  1226. $INBUF DC A(0) RECEIVED BUFFER CHAIN CTL WORD 01226000
  1227. $OUTBUF DC A(0) XMISSION BUFFER CHAIN CTL WORD 01227000
  1228. $FCSOUT DS 0H OUTGOING FUNCTION CONTROL SEQUENCE 01228000
  1229. DC X'8FCF' ALL FUNCTIONS PERMITTED 01229000
  1230. $FCSIN DC X'8FCF' INCOMING FCS 01230000
  1231. EJECT 01231000
  1232. *. 01232000
  1233. * 01233000
  1234. * ENTRY NAME - 01234000
  1235. * 01235000
  1236. * $CRTN1 01236000
  1237. * 01237000
  1238. * FUNCTION - 01238000
  1239. * 01239000
  1240. * THIS ROUTINE DEQUEUES TANKS FROM ITS TANK QUEUE AND 01240000
  1241. * PERFORMS THE ACTION REQUESTED IN BY THE CONTROL RECORD 01241000
  1242. * IN THE DEQUEUED TANK. 01242000
  1243. * 01243000
  1244. * CALLS TO OTHER ROUTINES - 01244000
  1245. * 01245000
  1246. * NONE 01246000
  1247. * 01247000
  1248. * OPERATION - 01248000
  1249. * 01249000
  1250. * 1. TRY TO GET ANOTHER CONTROL TANK. 01250000
  1251. * 01251000
  1252. * 2. IF ONE IS OBTAINED, EXAMINE THE SRCB TO DETERMINE ITS TYPE. 01252000
  1253. * 01253000
  1254. * 3. BRANCH TO THE APPROPRIATE ROUTINE TO PROCESS 01254000
  1255. * EACH TYPE OF CONTROL RECORD. 01255000
  1256. * 01256000
  1257. * 4. FREE THE TANK AND EXIT THROUGH THE COMMUTATOR. 01257000
  1258. * 01258000
  1259. * RESPONSES - 01259000
  1260. * 01260000
  1261. * NONE 01261000
  1262. * 01262000
  1263. * ERROR MESSAGES - 01263000
  1264. * 01264000
  1265. * DMTSML902E NON-SOGNON CARD READ ON LINK (LINKID) 01265000
  1266. * DMTSML903E PASSWORD=(PASSWORD) ON LINK (LINKID) IS INVALID 01266000
  1267. * 01267000
  1268. *. 01268000
  1269. EJECT 01269000
  1270. * 01270000
  1271. * 01271000
  1272. $CRTN1 DS 0H 01272000
  1273. * 01273000
  1274. $CONTROL DS 0H ENTRY POINT 01274000
  1275. LA R13,$CTLTCT GET CONTROL TCT 01275000
  1276. USING TCTDSECT,R13 * 01276000
  1277. SPACE 1 01277000
  1278. CLC TCTTANK,=F'0' ARE WE EMPTY 01278000
  1279. BE MNONE YES 01279000
  1280. L R8,TCTTANK GET FIRST BUFFER ADDRESS 01280000
  1281. MVC TCTTANK(4),0(R8) REMOVE THIS ONE FROM CHAIN 01281000
  1282. B MPROCESS BR IF GOTTEN 01282000
  1283. SPACE 1 01283000
  1284. MNONE EQU * 01284000
  1285. MVI $CCOMM1+1,CLOSE NONE... CLOSE ENTRY 01285000
  1286. B CCTRTN AND EXIT 01286000
  1287. EJECT 01287000
  1288. *---------------------------------------------------------------------* 01288000
  1289. * * 01289000
  1290. * PROCESS A CONTROL RECORD * 01290000
  1291. * * 01291000
  1292. *---------------------------------------------------------------------* 01292000
  1293. SPACE 3 01293000
  1294. MPROCESS DS 0H * 01294000
  1295. LH R5,TCTTNKLM REDUCES COUNT IN TNKCT 01295000
  1296. BCTR R5,0 DOWN BY ONE 01296000
  1297. STH R5,TCTTNKLM AND REPLACE COUNT 01297000
  1298. OI TCTSTAT,TCTACT SIGNAL WE HAVE RECEIVED TANK 01298000
  1299. MVI $TPGETCM+1,OPEN OPEN THE GATE TO TPGET ROUTINE 01299000
  1300. DROP R13 DONE FOR NOW 01300000
  1301. USING TANKDSEC,R8 * 01301000
  1302. UNPK MTEMP+1(1),TANKRCB(1) SWAP DIGITS 01302000
  1303. NI MTEMP+1,7 TURN OFF CTL BIT 01303000
  1304. LH R5,MTEMP GET CTL FUNCTION TYPE 01304000
  1305. SLL R5,2 MULT BY 4 01305000
  1306. LA R6,MCONTTAB-4 START OF CTL TYPE TABLE 01306000
  1307. AR R6,R5 R6 = CORRECT TABLE ENTRY 01307000
  1308. L R6,0(0,R6) R6 = CONTROL ADDRESS 01308000
  1309. BR R6 ENTER ROUTINE 01309000
  1310. EJECT 01310000
  1311. *---------------------------------------------------------------------* 01311000
  1312. * * 01312000
  1313. * SUBROUTINE TO FIND TCT CORRESPONDING TO SRCB FUNCTION * 01313000
  1314. * R14=RETURN , CC NE 0 -R13 CONTAINS TCT,CC=0-NOT FOUND* 01314000
  1315. *---------------------------------------------------------------------* 01315000
  1316. SPACE 3 01316000
  1317. MTCTFIND DS 0H ENTRY POINT 01317000
  1318. LA R13,$TCT1 FIRST TCT 01318000
  1319. USING TCTDSECT,R13 ADDRESSABILITY 01319000
  1320. MNEXTTCT DS 0H * 01320000
  1321. CLC TCTRCBR,TANKSRCB IS THIS CORRECT TCT 01321000
  1322. BE MTCTOK BR IF YES 01322000
  1323. ICM R13,B'1111',TCTNEXT NO..TO NEXT AND CHECK FOR LAST 01323000
  1324. BNZ MNEXTTCT BR IF MORE 01324000
  1325. BR R14 RETURN WITH COND. CODE = 0 01325000
  1326. SPACE 1 01326000
  1327. MTCTFNDT DS 0H ENTRY POINT 01327000
  1328. LA R13,$TCT1 FIRST TCT 01328000
  1329. USING TCTDSECT,R13 ADDRESSABILITY 01329000
  1330. MNXTTCTT DS 0H * 01330000
  1331. CLC TCTRCBT,TANKSRCB IS THIS CORRECT TCT 01331000
  1332. BE MTCTOK BR IF YES 01332000
  1333. ICM R13,B'1111',TCTNEXT NO..TO NEXT AND CHECK FOR LAST 01333000
  1334. BNZ MNXTTCTT BR IF MORE 01334000
  1335. BR R14 RETURN WITH COND. CODE = 0 01335000
  1336. SPACE 1 01336000
  1337. MTCTOK EQU * 01337000
  1338. LTR R14,R14 SET COND. CODE NON-ZERO 01338000
  1339. BR R14 AND RETURN 01339000
  1340. EJECT 01340000
  1341. SPACE 5 01341000
  1342. *---------------------------------------------------------------------* 01342000
  1343. * * 01343000
  1344. * SUBROUTINE TO $TPPUT AN ANSWERING CTL RECORD * 01344000
  1345. * R8 = TANKADDR * 01345000
  1346. * * 01346000
  1347. *---------------------------------------------------------------------* 01347000
  1348. SPACE 3 01348000
  1349. MPUT DS 0H ENTRY POINT 01349000
  1350. BAL R14,$TPPUT GO PUT RECORD 01350000
  1351. BNZ MEXIT EXIT IF ACCEPTED 01351000
  1352. MVC $CCOMM1+2(2),MREPUTA SET COMUTATOR RE-ENTRY 01352000
  1353. ST R8,MTANK SAVE TANK ADDR 01353000
  1354. B CCTRTN EXIT TO COMUTATOR 01354000
  1355. SPACE 1 01355000
  1356. MREPUT DS 0H RETRY PUTTING RECORD 01356000
  1357. L R8,MTANK RESTORE TANK ADDR 01357000
  1358. BAL R14,$TPREPUT TRY IT 01358000
  1359. BZ $CCOMM1+4 CYCLE IF STILL NOT ACCEPTED 01359000
  1360. SPACE 1 01360000
  1361. MEXIT DS 0H ENTRY AT END OF PROCESSING 01361000
  1362. MVC 0(4,R8),$TANKPOL GET FIRST FREE OFF QUEUE 01362000
  1363. ST R8,$TANKPOL MAKE THIS ONE THE FIRST 01363000
  1364. MVI $TPGETCM+1,OPEN OPEN TPGET GATE 01364000
  1365. MVC $CCOMM1+2(2),MCONTROL RESET COMUTATOR 01365000
  1366. B $CONTROL AND TRY NEXT TANK 01366000
  1367. SPACE 2 01367000
  1368. MTANK DC A(0) TANK REG STORAGE 01368000
  1369. MTEMP DC H'0' TEMP STORAGE (HI-BYTE ALWAYS ZERO) 01369000
  1370. MREPUTA DC S(MREPUT) COMMUTATOR ADJUSTMENT ADDR 01370000
  1371. MCONTROL DC S($CONTROL) COMMUTATOR ADJUSTMENT ADDR 01371000
  1372. MCONTTAB DS 0F CONTROL TYPE BRANCH TABLE 01372000
  1373. * DC A(MC0) 000 RESERVED 01373000
  1374. DC A(MC1) 001 START FUNCTION REQUEST 01374000
  1375. DC A(MC2) 010 START FUNCTION PERMISSION 01375000
  1376. DC A(MC3) 011 RESERVED 01376000
  1377. DC A(MC4) 100 RESERVED 01377000
  1378. DC A(MC5) 101 RESERVED 01378000
  1379. DC A(MC6) 110 RESERVED 01379000
  1380. DC A(MC7) 111 GENERAL CONTROL TYPE 01380000
  1381. EJECT 01381000
  1382. SPACE 3 01382000
  1383. * 01383000
  1384. * MC0 CONTROL RECORD , TYPE = 000 (RESERVED) 01384000
  1385. * 01385000
  1386. SPACE 3 01386000
  1387. * 01387000
  1388. * RESERVED FOR FUTURE USE 01388000
  1389. * 01389000
  1390. MC0 EQU MEXIT TO DEFINE SYMBOL 01390000
  1391. SPACE 3 01391000
  1392. * 01392000
  1393. * MC1 CONTROL RECORD , TYPE = 001(REQUEST TO START FUNCTION) 01393000
  1394. * 01394000
  1395. SPACE 3 01395000
  1396. MC1 DS 0H * 01396000
  1397. * 01397000
  1398. BAL R14,MTCTFIND GO FIND TCT 01398000
  1399. BZ MEXIT IGNORE REQUEST IF NOT FOUND 01399000
  1400. TM SMLSYS,MASTER MASTER MODE? 01400000
  1401. BNO MTCTSET NO CONTINUE 01401000
  1402. TM SMLSYS,SGNONREC HAVE WE RECEIVED SIGNON CARD? 01402000
  1403. BNO MEXIT NO...NOTHING TILL THEN 01403000
  1404. SPACE 1 01404000
  1405. MTCTSET DS 0H CORRECT TCT FOUND 01405000
  1406. TM TCTSTAT,TCTOPEN CAN DEVICE BE STARTED 01406000
  1407. NI TCTSTAT,255-TCTOPEN SHOW USE 01407000
  1408. OC $FCSOUT,TCTFCS ALLOW BUFFERS 01408000
  1409. MVZ TANKRCB,=X'A0' CHANGE REQUEST TO PERMISSION 01409000
  1410. B MPUT AND SEND IT 01410000
  1411. SPACE 3 01411000
  1412. * 01412000
  1413. * MC2 CONTROL RECORD , TYPE = 010(PERMISSION TO START FCN) 01413000
  1414. * 01414000
  1415. SPACE 3 01415000
  1416. MC2 DS 0H ENTRY POINT 01416000
  1417. BAL R14,MTCTFNDT GO LOOK-UP TCT 01417000
  1418. BZ MEXIT IGNORE IF NOT FOUND 01418000
  1419. L R14,TCTCOM GET COMUTATOR ENTRY 01419000
  1420. MVI 1(R14),OPEN OPEN IT 01420000
  1421. NI TCTSTAT,255-TCTOPEN SHOW OPEN 01421000
  1422. B MEXIT AND EXIT 01422000
  1423. EJECT 01423000
  1424. * 01424000
  1425. * MC3 CONTROL RECORD , TYPE = 011 (RESERVED) 01425000
  1426. SPACE 3 01426000
  1427. MC3 EQU MEXIT NOT YET DEFINED 01427000
  1428. SPACE 3 01428000
  1429. * 01429000
  1430. * MC4 CONTROL RECORD , TYP = 100 (RESERVED) 01430000
  1431. * 01431000
  1432. SPACE 3 01432000
  1433. MC4 EQU MEXIT NOT YET DEFINED 01433000
  1434. SPACE 3 01434000
  1435. * 01435000
  1436. * MC5 CONTROL RECORD , TYPE = 101 (RESERVED) 01436000
  1437. * 01437000
  1438. SPACE 3 01438000
  1439. MC5 EQU MEXIT TO DEFINE SYMBOL 01439000
  1440. * FUNCTION IS NOT YET SUPPORTED 01440000
  1441. SPACE 3 01441000
  1442. * 01442000
  1443. * MC6 CONTROL RECORD , TYPE = 110(RESERVED) 01443000
  1444. * 01444000
  1445. SPACE 3 01445000
  1446. * 01446000
  1447. * THIS CONTROL TYPE IS CURRENTLY UNDEFINED BUT IS 01447000
  1448. * RESERVED FOR FUTURE USE. 01448000
  1449. * 01449000
  1450. MC6 EQU MEXIT TO DEFINE SYMBOL 01450000
  1451. EJECT 01451000
  1452. * 01452000
  1453. * MC7 CONTROL RECORD , TYPE = 111 (GENERALIZED CONTROL) 01453000
  1454. * (TYPE INDICATED IN SRCB) 01454000
  1455. * 01455000
  1456. SPACE 3 01456000
  1457. MC7 EQU * ENTRY POINT 01457000
  1458. CLI TANKSRCB,C'A' IS IT A SIGNON RECORD? 01458000
  1459. BNE MEXIT NO IGNORE IT 01459000
  1460. CLC TANKDATA(9),ICTXT IS IT A SIGNON CARD? @VA03347 01460000
  1461. BE MC7A YES CONTINUE 01461000
  1462. MC7ERR EQU * 01462000
  1463. MSG 902,AXSLINK WRITE INVALID SIGNON MSG 01463000
  1464. B EOJ ALL DONE 01464000
  1465. SPACE 01465000
  1466. MC7A EQU * 01466000
  1467. CLC TANKDATA+21(2),MRN CORRECT REMOTE NUMBER? @VA03347 01467000
  1468. BNE MC7ERR NO WRITE MSG AND QUIT 01468000
  1469. CLI PASSWORD,C' ' WAS A PASSWD SPECIFIED? 01469000
  1470. BE MC7B NO..NO CHECK NECESSARY 01470000
  1471. CLC TANKDATA+24(8),PASSWORD DOES HE HAVE THE CORRECT PASSWD? 01471000
  1472. BE MC7B YES ALL OKAY 01472000
  1473. MSG 903,AXSLINK WRITE MSG AND QUIT @VA03421 01473000
  1474. B EOJ AND GO TO END 01474000
  1475. EJECT 01475000
  1476. MC7B EQU * 01476000
  1477. MSG 905,AXSLINK INDICATE SIGNON COMPLETE 01477000
  1478. OI SMLSYS,SGNONREC INDICATE SIGNON ACCEPTED 01478000
  1479. B MEXIT AND RETURN 01479000
  1480. * 01480000
  1481. * CURRENTLY NO OTHER FUNCTIONS ARE IMPLEMENTED FOR THIS 01481000
  1482. * CONTROL FUNCTION. THE TYPE OF CONTROL RECORD, SUCH 01482000
  1483. * AS ACCOUNTING,SIGN-ON,INITIALIZATION,ETC, IS 01483000
  1484. * INDICATED IN THE SRCB. 01484000
  1485. * THE SRCB IDENTIFICATION CHARACTERS 'A' THRU 'R' 01485000
  1486. * AND '0' THRU '9' ARE RESERVED FOR FUTURE RSCS 01486000
  1487. * DEVELOPMENT. ALL OTHER EBCDIC CHARACTERS , WHICH 01487000
  1488. * ARE TRANSMISSION COMPATIBLE ARE AVAILABLE TO THE 01488000
  1489. * USER TO ADD ADDITIONAL CONTROL FUNCTIONS. 01489000
  1490. * 01490000
  1491. SPACE 3 01491000
  1492. DROP R8,R13 01492000
  1493. EJECT 01493000
  1494. *. 01494000
  1495. * 01495000
  1496. * ENTRY NAME - 01496000
  1497. * 01497000
  1498. * $PRTN1 01498000
  1499. * 01499000
  1500. * FUNCTION - 01500000
  1501. * 01501000
  1502. * THIS ROUTINE DEQUEUES TANKS FROM ITS TANK QUEUE, OBTAINS 01502000
  1503. * A NEW OUTPUT SPOOL DEVICE IF NEEDED FROM DMTAXS, AND 01503000
  1504. * OUTPUTS THE TANK TO A VIRTUAL PRINTER. 01504000
  1505. * 01505000
  1506. * CALLS TO OTHER ROUTINES - 01506000
  1507. * 01507000
  1508. * DMTIOMRQ - TO INITIATE AN I/O OPERATION 01508000
  1509. * 01509000
  1510. * OPERATION - 01510000
  1511. * 01511000
  1512. * 1. OBTAIN A TANK FROM $GETTNK 01512000
  1513. * 01513000
  1514. * 2. IF OBTAINED CHECK TO SEE IF OUTPUT FILE IS OPENED, 01514000
  1515. * IF NOT OBTAIN A OUTPUT DEVICE BY A CALL TO AXS. 01515000
  1516. * 01516000
  1517. * 3. CONTRUCT THE CARRIAGE CONTROL FROM THE INFORMATION 01517000
  1518. * CONTAINED IN THE SRCB. 01518000
  1519. * 01519000
  1520. * 4. WRITE THE RECORD TO THE VM/370 SPOOL FILE SYSTEM. 01520000
  1521. * 01521000
  1522. * 5. WHEN EOF IS OBTAINED CLOSE THE FILE VIA ANOTHER CALL 01522000
  1523. * TO AXS. 01523000
  1524. * 01524000
  1525. * 6. EXIT TO COMMUTATOR 01525000
  1526. * 01526000
  1527. * RESPONSES - 01527000
  1528. * 01528000
  1529. * DMTSML144I RECEIVING: FILE FROM 'LOCID1' ('USERID1') FOR 01529000
  1530. * 'LOCID2' ('USERID2') 01530000
  1531. * DMTSML145I RECEIVED: FILE FROM 'LOCID1' ('USERID1') FOR 01531000
  1532. * 'LOCID2' ('USERID2') 01532000
  1533. * 01533000
  1534. * ERROR MESSAGES - 01534000
  1535. * 01535000
  1536. * NONE 01536000
  1537. * 01537000
  1538. *. 01538000
  1539. SPACE 1 01539000
  1540. USING TANKDSEC,R8 GET TANK ADDRESSABILITY 01540000
  1541. USING IOTABLE,R1 GET IOTABLE ADDRESSABILITY 01541000
  1542. $PRTN1 DS 0H 01542000
  1543. PNEXT EQU * BASIC LOOP 01543000
  1544. BAL R14,$GETTNK WAIT FOR THE NEXT TANK 01544000
  1545. CLI TANKCNT+1,0 TEST FOR END OF JOB 01545000
  1546. BNE PCONT NO CONTINUE 01546000
  1547. PCLOSE EQU * 01547000
  1548. LA R1,PDEVSYNC GET PRINTER DEVICE BLOCK 01548000
  1549. LA R0,X'12' INDICATE CLOSE FUNCTION 01549000
  1550. BAL R14,AXS GO CLOSE THE FILE 01550000
  1551. NI MASTERSW,255-PRINTER RESET OPEN FLAG 01551000
  1552. OI PACON,ECBSKIP INDICATE SKIP ECB 01552000
  1553. MSG 145,(AXSLINK,SYSTYPE,LOCATION,BLANK) WRITE CLOSE@VM01105 01553000
  1554. B PFREE FREE THE TANK IF END OF JOB 01554000
  1555. SPACE 1 01555000
  1556. PCONT EQU * 01556000
  1557. TM MASTERSW,PRINTER SEE IF FILE IS ACTIVE 01557000
  1558. BO PCONT2 OPEN..OKAY CONTINUE 01558000
  1559. LA R1,PDEVSYNC GET PRINTER DEVICE BLOCK 01559000
  1560. LA R0,X'11' INDICATE GET SPOOL DEVICE 01560000
  1561. BAL R14,AXS GO INTERFACE TO FILE ACCESS 01561000
  1562. L R1,PDEVFIOA GET FILE I/O AREA ADDRESS 01562000
  1563. ST R1,PACON AND STORE IN ECB LIST 01563000
  1564. XC 0(4,R1),0(R1) INITIALLY CLEAR SYNCH LOCK 01564000
  1565. OI MASTERSW,PRINTER INDICATE FILE ACTIVE 01565000
  1566. MSG 144,(AXSLINK,SYSTYPE,LOCATION,BLANK) WRITE RECV @VM01105 01566000
  1567. PCONT2 EQU * 01567000
  1568. CLI TANKSRCB,X'8E' LOOK FOR CHANGE IN FORMS 01568000
  1569. BE PFREE IGNORE THIS LINE IF FORMS MSG 01569000
  1570. MVC PCTCCWCT+1(1),TANKCNT+1 MOVE COUNT TO CCW 01570000
  1571. EJECT 01571000
  1572. * 01572000
  1573. * SET UP CARRIAGE CONTROL 01573000
  1574. * 01574000
  1575. LA R6,TANKDATA GET TANK ADDRESS 01575000
  1576. ST R6,PCTCCW STORE IN CCW 01576000
  1577. IC R6,TANKSRCB PICK UP CARRIAGE CONTROL INFO 01577000
  1578. SLL R6,3 ALIGN CC BITS FOR OPCODE 01578000
  1579. STC R6,PCTOPCOD STORE IN CCW 01579000
  1580. TM TANKSRCB,PSKIMM TEST FOR SKIP IMMEDIATE 01580000
  1581. BZ KNOTIMM IF NOT AN IMMEDIATE SPACE, GO 01581000
  1582. OI PCTOPCOD,PCCOP MOVE IMMEDIATE PRINT CODE IN 01582000
  1583. MVI PCTECB,X'10' SHOW PRINT BUSY 01583000
  1584. L R1,PDEVFIOA GET FILE I/O AREA ADDRESS 01584000
  1585. LA R6,PCTCCW GET CCW ADDRESS 01585000
  1586. ST R6,PROGADDR SET CAW IN DEVICE BLOCK 01586000
  1587. OC PCTCCW(1),PCTOPCOD SET OPCODE IN CCW 01587000
  1588. L R15,IOREQ SYSTEM I/O PROCESSOR 01588000
  1589. BALR R14,R15 GO EXECUTE THE I/O 01589000
  1590. BAL R14,$IOCK WAIT FOR ECB TO BE POSTED 01590000
  1591. L R8,PCTCCW GET CCW COUNT 01591000
  1592. IC R6,=AL1(POPCODEI) WRITE SPACE OPCODE 01592000
  1593. KNOTIMM EQU * 01593000
  1594. STC R6,PCTOPCOD STORE CONTROL CHARACTER 01594000
  1595. OI PCTOPCOD,POPCODE OR IN 1 TO MAKE CTL CHAR CO 01595000
  1596. CLI PCTOPCOD,X'61' Q. IF FCB LOAD REQUEST 01596000
  1597. BNE PLINE BR IF NO 01597000
  1598. OI PCTOPCOD,X'02' CONVERT COMMAND TO X'63' 01598000
  1599. PLINE EQU * 01599000
  1600. MVI PCTECB,X'10' SHOW PRINT BUSY 01600000
  1601. L R1,PDEVFIOA GET DEVICE BLOCK ADDRESS 01601000
  1602. LA R6,PCTCCW GET CCW ADDRESS 01602000
  1603. ST R6,PROGADDR SET CAW WITH THIS ADDR 01603000
  1604. OC PCTCCW(1),PCTOPCOD RESET OPCODE 01604000
  1605. L R15,IOREQ SYSTEM I/O REQUEST 01605000
  1606. BALR R14,R15 GO EXECUTE THE I/O 01606000
  1607. BAL R14,$IOCK WAIT FOR ECB TO BE POSTED 01607000
  1608. L R8,PCTCCW GET CCW DATA ADDR 01608000
  1609. S R8,=A(TANKDATA-TANKDSEC) MOVE BACK TO BEGINNING OF TANK 01609000
  1610. PFREE EQU * 01610000
  1611. MVC 0(4,R8),$TANKPOL GET FIRST FREE OFF QUEUE 01611000
  1612. ST R8,$TANKPOL MAKE THIS ONE THE FIRST 01612000
  1613. MVI $TPGETCM+1,OPEN OPEN TPGET GATE 01613000
  1614. B PNEXT PRINT NEXT LINE 01614000
  1615. DROP R1 01615000
  1616. SPACE 1 01616000
  1617. * 01617000
  1618. * EQUATES FOR PRINT PROCESSOR 01618000
  1619. * 01619000
  1620. PSKIMM EQU X'20' SRCB FLAG TO SKIP IMMEDIATE 01620000
  1621. POPCODEI EQU X'09' PRINT OP-CODE SPACE 1 AFTER 01621000
  1622. PFLAGS EQU X'20' NO CHAINING,SUPPRESS WRONG LENGTH CK 01622000
  1623. POPCODE EQU X'01' CCW PRINT LINE OPCODE NO SPACE 1 01623000
  1624. PCCOP EQU X'03' CARRIAGE CONTROL OP-CODE 01624000
  1625. SPACE 1 01625000
  1626. PSPOVM EQU X'80' VM SPO FLAG 01626000
  1627. EJECT 01627000
  1628. *. 01628000
  1629. * 01629000
  1630. * ENTRY NAME - 01630000
  1631. * 01631000
  1632. * $URTN1 01632000
  1633. * 01633000
  1634. * FUNCTION - 01634000
  1635. * 01635000
  1636. * THIS ROUTINE DEQUEUES TANKS FROM ITS TANK QUEUE, OBTAINS 01636000
  1637. * A NEW OUTPUT SPOOL DEVICEIF NEEDED FROM DMTAXS, AND 01637000
  1638. * OUTPUTS THE TANK TO A VIRTUAL PUNCH. 01638000
  1639. * 01639000
  1640. * CALLS TO OTHER ROUTINES - 01640000
  1641. * 01641000
  1642. * DMTIOMRQ - TO INITIATE AN I/O OPERATION 01642000
  1643. * 01643000
  1644. * OPERATION - 01644000
  1645. * 01645000
  1646. * 1. OBTAIN A TANK FROM $GETTNK 01646000
  1647. * 01647000
  1648. * 2. IF OBTAINED CHECK TO SEE IF OUTPUT FILE IS OPENED, 01648000
  1649. * IF NOT OBTAIN A OUTPUT DEVICE BY A CALL TO AXS. 01649000
  1650. * 01650000
  1651. * 3. WRITE THE RECORD TO THE VM/370 SPOOL FILE SYSTEM. 01651000
  1652. * 01652000
  1653. * 4. WHEN EOF IS OBTAINED CLOSE THE FILE VIA ANOTHER CALL 01653000
  1654. * TO AXS. 01654000
  1655. * 01655000
  1656. * 5. EXIT TO COMMUTATOR 01656000
  1657. * 01657000
  1658. * RESPONSES - 01658000
  1659. * 01659000
  1660. * DMTSML144I RECEIVING: FILE FROM 'LOCID1' ('USERID1') FOR 01660000
  1661. * 'LOCID2' ('USERID2') 01661000
  1662. * DMTSML145I RECEIVED: FILE FROM 'LOCID1' ('USERID1') FOR 01662000
  1663. * 'LOCID2' ('USERID2') 01663000
  1664. * 01664000
  1665. * ERROR MESSAGES - 01665000
  1666. * 01666000
  1667. * NONE 01667000
  1668. * 01668000
  1669. *. 01669000
  1670. SPACE 3 01670000
  1671. USING TANKDSEC,R8 GET TANK ADDRESSABILITY 01671000
  1672. USING TCTDSECT,TCTR GET TCT ADDRESSABILITY 01672000
  1673. USING IOTABLE,R1 GET IOTABLE ADDRESSABILITY 01673000
  1674. SPACE 1 01674000
  1675. $URTN1 DS 0H INITIAL ENTRY AT IPL TIME,DUAL PUNCH 01675000
  1676. USTART DS 0H LOOP ENTRY TO CONTINUE PUNCHING 01676000
  1677. BAL R14,$GETTNK WAIT FOR THE NEXT TANK 01677000
  1678. CLI TANKCNT+1,0 TEST FOR END OF JOB 01678000
  1679. BNE UOUTPUT NO CONTINUE 01679000
  1680. UCLOSE EQU * 01680000
  1681. LA R1,UDEVSYNC GET DEVICE BLOCK ADDRESS 01681000
  1682. LA R0,X'12' INDICATE CLOSE 01682000
  1683. BAL R14,AXS GO CLOSE THE FILE 01683000
  1684. NI MASTERSW,255-PUNCH TURN OFF OPEN FLAG 01684000
  1685. OI UACON,ECBSKIP INDICATE ECB SKIP 01685000
  1686. MSG 145,(AXSLINK,SYSTYPE,LOCATION,BLANK) WRITE CLOSE@VM01105 01686000
  1687. B UFREE IF SO FREE TANK 01687000
  1688. SPACE 1 01688000
  1689. UOUTPUT DS 0H PUNCH THE CARD 01689000
  1690. TM MASTERSW,PUNCH SEE IF FILE ACTIVE 01690000
  1691. BO UOUT2 YES CONTINUE 01691000
  1692. LA R1,UDEVSYNC GET DEVICE BLOCK 01692000
  1693. LA R0,X'11' INDICATE OPEN 01693000
  1694. BAL R14,AXS GO GET A DEVICE 01694000
  1695. L R1,UDEVFIOA GET FIOA ADDRESS 01695000
  1696. ST R1,UACON STORE IN ECB LIST 01696000
  1697. XC 0(4,R1),0(R1) INITIALLY CLEAR SYNCH LOCK 01697000
  1698. OI MASTERSW,PUNCH INDICATE FILE OPEN 01698000
  1699. MSG 144,(AXSLINK,SYSTYPE,LOCATION,BLANK) WRITE RECV @VM01105 01699000
  1700. EJECT 01700000
  1701. UOUT2 EQU * 01701000
  1702. MVC UCTCCWCT+1(1),TANKCNT+1 SET COUNT IN CCW 01702000
  1703. LA R8,TANKDATA GET DATA ADDR 01703000
  1704. ST R8,UCTCCW STORE IN CCW 01704000
  1705. MVI UCTECB,X'10' SHOW PUNCH BUSY 01705000
  1706. OC UCTCCW(1),UCTOPCOD SET OPCODE 01706000
  1707. L R1,UDEVFIOA GET DEVICE BLOCK 01707000
  1708. LA R6,UCTCCW GET CCW ADDR 01708000
  1709. ST R6,PROGADDR SET IN CAW 01709000
  1710. L R15,IOREQ SYSTEM I/O REQUEST PROCESSOR 01710000
  1711. BALR R14,R15 GO EXECUTE THE I/O 01711000
  1712. BAL R14,$IOCK CHECK FOR I/O COMPLETE 01712000
  1713. L R8,UCTCCW PICK UP TANK ADDRESS 01713000
  1714. S R8,=A(TANKDATA-TANKDSEC) RESET TO BEGINNING OF TANK 01714000
  1715. UFREE EQU * 01715000
  1716. MVC 0(4,R8),$TANKPOL GET FIRST FREE OFF QUEUE 01716000
  1717. ST R8,$TANKPOL MAKE THIS ONE THE FIRST 01717000
  1718. MVI $TPGETCM+1,OPEN OPEN TPGET GATE 01718000
  1719. B USTART GO BACK TO START OF PROCESSOR 01719000
  1720. DROP R1 ALL DONE WITH THIS 01720000
  1721. SPACE 1 01721000
  1722. USPOVM EQU X'80' VM SPOOL 01722000
  1723. EJECT 01723000
  1724. *. 01724000
  1725. * 01725000
  1726. * ENTRY NAME - 01726000
  1727. * 01727000
  1728. * $JRTN1 01728000
  1729. * 01729000
  1730. * FUNCTION - 01730000
  1731. * 01731000
  1732. * THIS ROUTINE DEQUEUES TANKS FROM ITS TANK QUEUE, OBTAINS 01732000
  1733. * A NEW OUTPUT SPOOL DEVICE IF NEEDED FROM DMTAXS, AND 01733000
  1734. * OUTPUTS THE TANK TO A VIRTUAL PUNCH. 01734000
  1735. * 01735000
  1736. * CALLS TO OTHER ROUTINES - 01736000
  1737. * 01737000
  1738. * DMTIOMRQ - TO INITIATE AN I/O OPERATION 01738000
  1739. * 01739000
  1740. * OPERATION - 01740000
  1741. * 01741000
  1742. * 1. OBTAIN A TANK FROM $GETTNK 01742000
  1743. * 01743000
  1744. * 2. IF OBTAINED CHECK TO SEE IF OUTPUT FILE IS OPENED, 01744000
  1745. * IF NOT OBTAIN A OUTPUT DEVICE BY A CALL TO AXS. 01745000
  1746. * 01746000
  1747. * 3. VIA A CALL TO $USREXIT VALIDATE THE INFORMATION ON 01747000
  1748. * THE ID CARD. 01748000
  1749. * 01749000
  1750. * 4. WRITE THE RECORD TO THE VM/370 SPOOL FILE SYSTEM. 01750000
  1751. * 01751000
  1752. * 5. WHEH EOF IS OBTAINED CLOSE THE FILE VIA ANOTHER CALL 01752000
  1753. * TO AXS. 01753000
  1754. * 01754000
  1755. * 6. EXIT TO COMMUTATOR 01755000
  1756. * 01756000
  1757. * RESPONSES - 01757000
  1758. * 01758000
  1759. * DMTSML144I RECEIVING: FILE FROM 'LOCID1' ('USERID1') FOR 01759000
  1760. * 'LOCID2' ('USERID2') 01760000
  1761. * DMTSML145I RECEIVED: FILE FROM 'LOCID1' ('USERID1') FOR 01761000
  1762. * 'LOCID2' ('USERID2') 01762000
  1763. * 01763000
  1764. * ERROR MESSAGES - 01764000
  1765. * 01765000
  1766. * NONE 01766000
  1767. * 01767000
  1768. *. 01768000
  1769. SPACE 1 01769000
  1770. USING TANKDSEC,R8 01770000
  1771. USING TCTDSECT,TCTR 01771000
  1772. USING TAG,R1 GET TAG ADDRESSABILITY 01772000
  1773. $JRTN1 DS 0H INITIAL ENTRY AT IPL TIME 01773000
  1774. JSTART DS 0H LOOP ENTRY TO CONTINUE PUNCHING 01774000
  1775. BAL R14,$GETTNK WAIT FOR THE NEXT TANK 01775000
  1776. CLI TANKCNT+1,0 TEST FOR END OF JOB 01776000
  1777. BNE JOUTPUT NO CONTINUE 01777000
  1778. JCLOSE EQU * 01778000
  1779. XC $USRCMDC(2),$USRCMDC CLEAR INPUT CMD COUNT @VA04612 01779000
  1780. TM MASTERSW,JOB WAS A FILE EVER OPENED? 01780000
  1781. BO JCLOSE1 YES CONTINUE 01781000
  1782. NI JSW2,255-JNOID RESET ID CARD MISSING FLAG @VA04612 01782000
  1783. B JFREE AND EXIT 01783000
  1784. SPACE 1 01784000
  1785. JCLOSE1 EQU * 01785000
  1786. L R15,JDEVFIOA GET IOTABLE ADDRESS 01786000
  1787. UNPK TAGCMD+7(5),DEVCUU-IOTABLE(3,R15) UNPK THE DEV ADDR 01787000
  1788. MVI TAGCMD+7,C' ' RESTORE THE CLOBBERED BLANK 01788000
  1789. MVI TAGCMD+11,C' ' RESTORE THE CLOBBERED BLANK 01789000
  1790. TR TAGCMD+8(3),AXSTRTAB-240 TRANSLATE TO LEGAL EBCDIC 01790000
  1791. LA R1,TAGCMD GET TAG COMMAND ADDR 01791000
  1792. LA R2,TAGCMDL AND THE LENGTH 01792000
  1793. DIAG R1,R2,X'08' AND ISSUE THE COMMAND 01793000
  1794. MVI TAGDATA,C' ' CLEAR FIRST BYTE OF FIELD 01794000
  1795. MVC TAGDATA+1(69),TAGDATA AND THE REST OF FIELD 01795000
  1796. LA R1,JDEVSYNC GET DEVICE BLOCK ADDRESS 01796000
  1797. LA R0,X'12' INDICATE CLOSE 01797000
  1798. BAL R14,AXS GO CLOSE THE FILE 01798000
  1799. MSG 145,(AXSLINK,SYSTYPE,LOCATION,JCTTOVM) WRITE CLO@VM01105 01799000
  1800. NI MASTERSW,255-JOB TURN OFF OPEN FLAG 01800000
  1801. NI JSW1,255-JSPOVM RESET FLAG 01801000
  1802. OI JACON,ECBSKIP INDICATE ECB SKIP 01802000
  1803. LA R1,JTAG GET TAG ADDRESS 01803000
  1804. MVC TAGTOVM(8),BLANK BLANK OUT TAG 01804000
  1805. MVC JCTTOVM(8),BLANK BLANK OUT DESTINATION 01805000
  1806. B JFREE IF SO FREE TANK 01806000
  1807. EJECT 01807000
  1808. JOUTPUT DS 0H JOB THE CARD 01808000
  1809. TM MASTERSW,JOB SEE IF FILE ACTIVE 01809000
  1810. BO JOUT1 YES CONTINUE 01810000
  1811. BAL R14,$USREXIT SEE CARD MUST BE MODIFIED 01811000
  1812. BP JFREE NON 0 DONT PROCESS RECORD 01812000
  1813. TM JSW1,JSPOVM ARE WE SPOOLING YET 01813000
  1814. BNO JFREE NO..SKIP IT 01814000
  1815. LA R1,JTAG GET THE TAG ADDRESS 01815000
  1816. MVC TAGTOVM(8),JCTTOVM MOVE IN DESTINATION 01816000
  1817. LA R1,JDEVSYNC GET DEVICE BLOCK 01817000
  1818. LA R0,X'11' INDICATE OPEN 01818000
  1819. BAL R14,AXS GO GET A DEVICE 01819000
  1820. L R1,JDEVFIOA GET FIOA ADDRESS 01820000
  1821. XC 0(4,R1),0(R1) INITIALIALLY CLEAR SYNCH LOCK 01821000
  1822. ST R1,JACON STORE IN ECB LIST 01822000
  1823. OI MASTERSW,JOB INDICATE FILE OPEN 01823000
  1824. MSG 144,(AXSLINK,SYSTYPE,LOCATION,JCTTOVM) WRITE REC@VM01105 01824000
  1825. B JFREE FREE THE TANK 01825000
  1826. SPACE 1 01826000
  1827. JOUT1 EQU * 01827000
  1828. MVC JCTCCWCT+1(1),TANKCNT+1 SET COUNT IN CCW 01828000
  1829. LA R8,TANKDATA GET DATA ADDR 01829000
  1830. ST R8,JCTCCW STORE IN CCW 01830000
  1831. MVI JCTECB,X'10' SHOW PUNCH BUSY 01831000
  1832. OC JCTCCW(1),JCTOPCOD SET OPCODE 01832000
  1833. L R1,JDEVFIOA GET DEVICE BLOCK 01833000
  1834. LA R6,JCTCCW GET CCW ADDR 01834000
  1835. ST R6,PROGADDR-IOTABLE(R1) SET IN CAW 01835000
  1836. L R15,IOREQ SYSTEM I/O REWUEST PROCESSOR 01836000
  1837. BALR R14,R15 GO EXECUTE THE I/O 01837000
  1838. BAL R14,$IOCK CHECK FOR I/O COMPLETE 01838000
  1839. L R8,JCTCCW PICK UP TANK ADDRESS 01839000
  1840. S R8,=A(TANKDATA-TANKDSEC) RESET TO BEGINNING OF TANK 01840000
  1841. JFREE EQU * 01841000
  1842. MVC 0(4,R8),$TANKPOL GET FIRST FREE OFF QUEUE 01842000
  1843. ST R8,$TANKPOL MAKE THIS ONE THE FIRST 01843000
  1844. MVI $TPGETCM+1,OPEN OPEN TPGET GATE 01844000
  1845. B JSTART GO BACK TO START OF PROCESSOR 01845000
  1846. DROP R1 DROP ADDRESSABILITY 01846000
  1847. SPACE 1 01847000
  1848. JSPOVM EQU X'40' SPO TO VM FLAG 01848000
  1849. EJECT 01849000
  1850. *. 01850000
  1851. * 01851000
  1852. * ENTRY NAME - 01852000
  1853. * 01853000
  1854. * $USREXIT 01854000
  1855. * 01855000
  1856. * FUNCTION - 01856000
  1857. * 01857000
  1858. * TO VALIDATE THE 'ID' CARD ON THE FRONT OF DECKS INPUTTED 01858000
  1859. * FROM A REMOTE CARD READER. 01859000
  1860. * 01860000
  1861. * CALLS TO OTHER ROUTINES - 01861000
  1862. * 01862000
  1863. * NONE 01863000
  1864. * 01864000
  1865. * OPERATION - 01865000
  1866. * 01866000
  1867. * 1. SEE IF THE TANK CONTAINS AN ID CARD. 01867000
  1868. * IT NOT EXIT. 01868000
  1869. * 01869000
  1870. * 2. IF ID CARD IS FOUND VALIDATE LENGTH OF USERID AND 01870000
  1871. * MOVE TO THE JCTTOVM FIELD IN THE TCT. 01871000
  1872. * 01872000
  1873. * 3. ANY OTHER TEXT ON THE ID CARD IS SAVED FOR USE AS THE 01873000
  1874. * TAG COMMAND TEXT. 01874000
  1875. * 01875000
  1876. * 4. SET RETURN CODE AND RETURN TO CALLER. 01876000
  1877. * 01877000
  1878. * 01878000
  1879. * RESPONSES - 01879000
  1880. * 01880000
  1881. * DMTSML570I LINK 'LINKID' NOW SET TO DEACTIVATE 01881000
  1882. * 01882000
  1883. * ERROR MESSAGES - 01883000
  1884. * 01884000
  1885. * DMTSML934E ID CARD MISSING ON LINK 'LINKID' 01885000
  1886. * INPUT FILE PURGED 01886000
  1887. * 01887000
  1888. *. 01888000
  1889. SPACE 3 01889000
  1890. USING TANKDSEC,R8 01890000
  1891. SPACE 1 01891000
  1892. $USREXIT DS 0H 01892000
  1893. ST R14,USERSAVE SAVE RETURN 01893000
  1894. TM JSW2,JNOID ALREADY RECEIVING FILE WITHOUT @VA04612 01894000
  1895. * IT? 01895000
  1896. BO $USRNPN1 YES - SKIP THE CARD @VA04612 01896000
  1897. CLC TANKDATA(9),=C'ID ' IS IT AN ID CARD 01897000
  1898. BNE $USRNPUN NOPE CONTINUE 01898000
  1899. LA R3,TANKDATA+9 GET THE FIRST VMID POSITION 01899000
  1900. LA R5,TANKDATA+20 AND THE LAST POSITION 01900000
  1901. BAL R14,PARMGET FRAME THE USERID 01901000
  1902. CLR R3,R5 ANYTHING THERE 01902000
  1903. BNL $USRNPN1 SKIP THE ID CARD @VA03275 01903000
  1904. SLR R4,R3 COMPUTE THE LENGTH OF USERID 01904000
  1905. CL R4,USERMAX TOO LONG? 01905000
  1906. BH $USRNPN1 YES...IGNORE IT @VA03275 01906000
  1907. LR R14,R3 SAVE R3 FOR MVC @VM01152 01907000
  1908. LA R3,1(R4,R3) COMPUTE THE START OF TAG STRING 01908000
  1909. BCTR R4,0 REDUCE BY ONE FOR CHAR OP 01909000
  1910. EX R4,USERMVC MOVE THE USERID 01910000
  1911. LA R5,TANKDATA+79 LAST TAG POSITION 01911000
  1912. SLR R5,R3 LENGTH OF TAG DATA 01912000
  1913. BCTR R5,0 DOWN BY ONE FOR MVC 01913000
  1914. EX R5,TAGMVC MOVE INTO TAG CMD 01914000
  1915. OI JSW1,JSPOVM WE ARE NOW SPOOLING 01915000
  1916. B $USRPUN AND CONTINUE 01916000
  1917. SPACE 1 01917000
  1918. $USRNPUN EQU * 01918000
  1919. CLC TANKDATA(9),=C'/*SIGNOFF' IS IT A SIGNOFF CARD? 01919000
  1920. BNE $USRCMD MIGHT BE A COMMAND @VA03275 01920000
  1921. L R6,SMLLINK GET LINK TABLE ENTRY 01921000
  1922. OI LFLAG,LDRAIN INDICATE WE ARE DRAINING 01922000
  1923. MVC MSGLINK(8),AXSLINK INDICATE RESPONSE 01923000
  1924. MSG 570,AXSLINK WRITE MSG 01924000
  1925. B $USRNPN1 AND CONTINUE @VA03275 01925000
  1926. SPACE 1 01926000
  1927. $USRCMD EQU * @VA03275 01927000
  1928. CLC TANKDATA(5),=C'/*EOF' LAST COMMAND CARD? @VA03275 01928000
  1929. BE $USRNPN1 YES..ALL DONE @VA03275 01929000
  1930. L R15,JCTTANK GET NEXT TANK ADDR @VA04612 01930000
  1931. CLI 7(R15),X'00' NULL LINE ? @VA04612 01931000
  1932. BNE $USRNOID NO => ID CARD MISSING @VA04612 01932000
  1933. * YES => IT IS A COMMAND 01933000
  1934. LH R14,$USRCMDC RETRIEVE COMMAND COUNT @VA04612 01934000
  1935. CH R14,=H'10' NUM OF COMMANDS 7 10 ? @VA04612 01935000
  1936. BH $USRNPN1 YES..SKIP PROCESSING THIS RECORD @VA04612 01936000
  1937. LA R14,1(R14) UP THE COMMAND COUNT @VA04612 01937000
  1938. STH R14,$USRCMDC AND SAVE IT @VA04612 01938000
  1939. LA R5,WCTTANK GET CONSOLE TANK Q POINTER @VA04612 01939000
  1940. $USRNEXT CLC 0(4,R5),=F'0' GET @VA04612 01940000
  1941. BE $USRLAST THE LAST @VA04612 01941000
  1942. L R5,0(0,R5) IN THE @VA04612 01942000
  1943. B $USRNEXT QUEUE @VA04612 01943000
  1944. $USRLAST ST R8,0(0,R5) CHAIN THE COMMAND TO IT @VA04612 01944000
  1945. MVC 0(4,R8),=F'0' MAKE THIS THE FIRST @VA04612 01945000
  1946. LH R5,WCTTNKLM ADJUST @VA04612 01946000
  1947. LA R5,1(R5) CONSOLE TANK @VA04612 01947000
  1948. STH R5,WCTTNKLM COUNT @VA04612 01948000
  1949. MVI $WCOMM1+1,OPEN OPEN CONSOLE GATE @VA04612 01949000
  1950. B $USRNPN1 RETURN FOR NEXT RECORD @VA04612 01950000
  1951. $USRNOID OI JSW2,JNOID SET ID CARD MISSING FLAG @VA04612 01951000
  1952. MSG 934,AXSLINK SEND ERROR MSG @VA04612 01952000
  1953. SPACE 1 01953000
  1954. $USRNPN1 EQU * 01954000
  1955. LA R15,4 SET NON-ZERO RETURN CODE 01955000
  1956. B $USREXT1 ENTER COMMON EXIT POINT 01956000
  1957. SPACE 1 01957000
  1958. $USRPUN EQU * 01958000
  1959. SR R15,R15 SET ZERO RETURN CODE 01959000
  1960. SPACE 1 01960000
  1961. $USREXT1 EQU * 01961000
  1962. L R14,USERSAVE RESTORE RETURN REG 01962000
  1963. LTR R15,R15 SET CONDITION CODE 01963000
  1964. BR R14 RETURN 01964000
  1965. SPACE 01965000
  1966. JNOID EQU X'80' ID CARD MISSING FLAG @VA04612 01966000
  1967. SPACE 01967000
  1968. $USRCMDC DC H'0' NUM OF USER COMMANDS @VA04612 01968000
  1969. EJECT 01969000
  1970. USERMVC MVC JCTTOVM(0),0(R14) TO BE EXECUTED FROM ABOVE @VM01152 01970000
  1971. TAGMVC MVC TAGDATA(0),0(R3) TO BE EXECUTED FROM ABOVE 01971000
  1972. SPACE 01972000
  1973. USERMAX DC F'8' MAXIMUM LENGTH OF USERID FIELD 01973000
  1974. USERSAVE DC F'0' SAVE AREA 01974000
  1975. SPACE 01975000
  1976. TAGCMD DC C'TAG DEV XXX ' TAG COMMAND 01976000
  1977. TAGDATA DC CL70' ' DATA FIELD 01977000
  1978. TAGCMDL EQU *-TAGCMD LENGTH OF TAG COMMAND 01978000
  1979. SPACE 1 01979000
  1980. USERGIV DC F'0' SYNCH LOCK @VA03275 01980000
  1981. DC CL4'REX' TASK TO RECEIVE IT @VA03275 01981000
  1982. DC 2A(0) TO BE FILLED IN @VA03275 01982000
  1983. EJECT 01983000
  1984. *---------------------------------------------------------------------* 01984000
  1985. * * 01985000
  1986. * UNIT RECORD WAIT ROUTINE * 01986000
  1987. * * 01987000
  1988. *---------------------------------------------------------------------* 01988000
  1989. SPACE 1 01989000
  1990. USING TANKDSEC,R8 GET TANK ADDRESSABILITY 01990000
  1991. USING TCTDSECT,TCTR GET TCT ADDRESSABILITY 01991000
  1992. SPACE 3 01992000
  1993. DS 0H 01993000
  1994. YOCLOSE EQU * 01994000
  1995. L R14,TCTCOM CLOSE COMMUTATOR 01995000
  1996. MVI 1(R14),CLOSE CHANGE BR TO NOP 01996000
  1997. * IF DEVICE BUSY DEVICE END INTERRUPT WILL CLEAR 01997000
  1998. * IF DEVICE NOT READY DEVICE END WILL CLEAR 01998000
  1999. BR R14 RETURN TO CALLER 01999000
  2000. SPACE 1 02000000
  2001. * $IOCK ENTRY POINT TO PASS TO USER CODES 02001000
  2002. * 02002000
  2003. $IOCK EQU * 02003000
  2004. ST R14,TCTSAV1 SAVE USER RETURN ADDRESS 02004000
  2005. MVC TCTENTY(2),YACN1 GET READY FOR DELAY 02005000
  2006. B YOCLOSE AND CONTINUE 02006000
  2007. SPACE 1 02007000
  2008. YOCKRET EQU * 02008000
  2009. TM TCTECB,X'10' IS THE DEVICE FREE??? 02009000
  2010. BO YOCLOSE ALL DONE 02010000
  2011. L R14,TCTSAV1 RESTORE REG 02011000
  2012. BR R14 RETURN TO CALLER 02012000
  2013. SPACE 1 02013000
  2014. YACN1 DC S(YOCKRET) RETURN ENTRY POINT 02014000
  2015. EJECT 02015000
  2016. *. 02016000
  2017. * 02017000
  2018. * ENTRY NAME - 02018000
  2019. * 02019000
  2020. * $RRTN1 02020000
  2021. * 02021000
  2022. * FUNCTION - 02022000
  2023. * 02023000
  2024. * THIS ROUTINE INPUTS FILES FROM THE VM/370 SPOOL FILE 02024000
  2025. * SYSTEM, DEBLOKS THEM INTO 132 BYTE RECORDS AND ISSUES A 02025000
  2026. * CALL TO $PUT TO BLOCK THE RECORD INTO A TRANSMISSION 02026000
  2027. * BUFFER. 02027000
  2028. * 02028000
  2029. * CALLS TO OTHER ROUTINES - 02029000
  2030. * 02030000
  2031. * NONE 02031000
  2032. * 02032000
  2033. * OPERATION - 02033000
  2034. * 02034000
  2035. * 1. IF NEEDED OPEN A NEW FILE TO TRANSMIT VIA CALL TO AXSGET. 02035000
  2036. * 02036000
  2037. * 2. TEST FOR READER TYPE AND MODIFY READER RCB TO REFLECT 02037000
  2038. * MODE AND FILE TYPE. 02038000
  2039. * 02039000
  2040. * 3. SEND AND WAIT FOR A REPLY FOR A PERMISSION TO TRANSMIT 02040000
  2041. * RECORD. 02041000
  2042. * 02042000
  2043. * 4. GET A RECORD TO TRANSMIT VIA CALL TO VMDEBLOK 02043000
  2044. * 02044000
  2045. * 5. TEST FOR A READER COMMAND PENDING BY CHECKING RDRCMD 02045000
  2046. * BYTE. 02046000
  2047. * 02047000
  2048. * 6. IF EOF PURGE THE FILE, TRANSMIT EOF RECORD AND TRY 02048000
  2049. * TO OBTAIN ANOTHER FILE. 02049000
  2050. * 02050000
  2051. * RESPONSES - 02051000
  2052. * 02052000
  2053. * DMTSML146I SENDING: FILE 'SPOOLID' ON LINK 'LINKID', 02053000
  2054. * REC NNNNNN 02054000
  2055. * DMTSML147I SENT: FILE'SPOOLID' ON LINK 'LINKID' 02055000
  2056. * DMTSML580I FILE 'SPOOLID' PROCESSING TERMINATED 02056000
  2057. * DMTSML611I LINK 'LINKID' FILE TRANSMISSION SUSPENDED 02057000
  2058. * DMTSML510I FILE 'SPOOLID' BACKSPACED 02058000
  2059. * DMTSML600I FILE 'SPOOLID' FORWARD SPACED 02059000
  2060. * 02060000
  2061. * ERROR MESSAGES - 02061000
  2062. * 02062000
  2063. * DMTSML581E FILE 'SPOOLID' NOT ACTIVE 02063000
  2064. * DMTSML935E LINK 'LINKID' IN RJE MODE -- PRINT FILE 'SPOOLID' 02064000
  2065. * PURGED 02065000
  2066. * 02066000
  2067. *. 02067000
  2068. EJECT 02068000
  2069. * 02069000
  2070. * INPUT SERVICE PROCESSOR 02070000
  2071. * 02071000
  2072. SPACE 1 02072000
  2073. $RRTN1 DS 0H INITIAL ENTRY AT IPL TIME 02073000
  2074. USING TCTDSECT,TCTR GET TCT ADDRESSABILTIY 02074000
  2075. USING TAG,R8 GET TAG ADDRESSABILTIY 02075000
  2076. READ1 EQU * 02076000
  2077. L R6,SMLLINK GET LINK TABLE ADDRESS @VA03110 02077000
  2078. TM LFLAG,LHOLD IS THE LINK HELD @VA03110 02078000
  2079. BO READHLD YES..EXIT @VA03110 02079000
  2080. TM RDRCMD,RHLDIPGS IS A HOLD IN PROGRESS? 02080000
  2081. BNO RDNOHLD NO CONTINUE 02081000
  2082. READHLD EQU * @VA03110 02082000
  2083. MVC RCTENTY(2),RACN4 REENTER AT READ1 02083000
  2084. L R8,RCTCOM GET THIS COMMUTATOR ADDR 02084000
  2085. MVI 1(R8),CLOSE CLOSE THE GATE 02085000
  2086. B RCTRTN AND EXIT 02086000
  2087. SPACE 1 02087000
  2088. RDNOHLD EQU * 02088000
  2089. MVI RCTTSRC1,X'80' RESET SRCB 02089000
  2090. MVI RCTRCBT,RRCB1 RESET JOB RCB 02090000
  2091. MVI RCTTRCB1,RRCB1 RESET JOB RCB 02091000
  2092. MVI RCTECB,X'10' SHOW READER BUSY 02092000
  2093. BAL R14,AXSGET TRY TO OPEN READER FILE 02093000
  2094. BNZ RDERR1 NO FILES FOR NOW 02094000
  2095. SPACE 1 02095000
  2096. L R8,RDEVTAG GET TAG ADDRESS 02096000
  2097. LH R1,TAGID GET SPOOL FILE ID 02097000
  2098. CVD R1,AXSCVD CONVERT TO DECIMAL 02098000
  2099. UNPK AXSFILE,AXSCVD SPREAD THE DIGITS 02099000
  2100. OI AXSFILE+3,X'F0' AND MAKE SURE LAST IS PRINTABLE 02100000
  2101. L R1,TAGRECNM GET NUMBER OF RECS IN FILE 02101000
  2102. CVD R1,AXSCVD CONVERT TO DECIMAL 02102000
  2103. UNPK AXSRECS,AXSCVD SPREAD THE DIGITS 02103000
  2104. OI AXSRECS+7,X'F0' MAKE SURE LAST IS PRINTABLE 02104000
  2105. MVC HDRFILE(4),AXSFILE MOVE FILE ID INTO MSG 02105000
  2106. MVC HDRRECS(8),AXSRECS AND THE NUMBER OF RECS 02106000
  2107. MVC MSGVMID(8),TAGINVM MOVE VMID INTO MSG 02107000
  2108. CLI TAGINDEV,TYP3210 IS IT SPOOLED CONSOLE OUTPUT 02108000
  2109. BE READCON YES..TREAT LIKE PRINT FILE 02109000
  2110. TM TAGINDEV,TYPPRT IS IT A PRINT FILE 02110000
  2111. BNO READ2 NO CONTINUE 02111000
  2112. READCON EQU * 02112000
  2113. TM SMLSYS,MASTER ARE PRT TYPE FILES ALLOWED 02113000
  2114. BO READ1A YES CONTINUE CHECK 02114000
  2115. BAL R14,AXSPURGE GET RID OF THIS FILE 02115000
  2116. MSG 935,(AXSLINK,AXSFILE) WRITE ERROR MSG 02116000
  2117. B READ1 AND GET THE NEXT ONE 02117000
  2118. SPACE 1 02118000
  2119. READ1A EQU * 02119000
  2120. MVI RCTRCBT,PRCB1 SET THE RCB TYPE FOR PRT 02120000
  2121. MVI RCTTRCB1,PRCB1 SET THE RCB TYPE FOR PRT 02121000
  2122. OI RSW1,PTRANS INDICATE TRANSMITTING PRT FILE 02122000
  2123. B ROPEN GO INITIATE THE TRANSMISSION 02123000
  2124. SPACE 1 02124000
  2125. READ2 EQU * 02125000
  2126. TM SMLSYS,HASP+RES+ASP JOBS ONLY? 02126000
  2127. BM ROPEN MUST BE JOBS SO SKIP THE REST 02127000
  2128. SPACE 1 02128000
  2129. READ3 EQU * 02129000
  2130. OI RSW1,UTRANS INDICATE TRANSMITTING PUNCH OUTPUT 02130000
  2131. MVI RCTRCBT,URCB1 SET THE RCB TYPE 02131000
  2132. MVI RCTTRCB1,URCB1 SET THE RCB TYPE 02132000
  2133. EJECT 02133000
  2134. ROPEN EQU * 02134000
  2135. TM MASTERSW,READER IS THERE A READER OPEN 02135000
  2136. BO ROPEN1 READER IS ACTIVE 02136000
  2137. LA R8,RCTTANK1 LOCATE TANK IN PARAMETER REG 02137000
  2138. BAL R14,$TPOPEN REQUEST OTHER END TO RECEIVE STREAM 02138000
  2139. BZ RREOPEN IF NOT SENT WAIT 02139000
  2140. MVC RCTTCT1,=H'80' RESET LENGTH 02140000
  2141. MVC RCTENTY(2),RACN1 WAIT FOR RESPONSE 02141000
  2142. L R8,RCTCOM CLOSE GATE REENTER ELSEWERE 02142000
  2143. MVI 1(R8),CLOSE CLOSE THE GATE 02143000
  2144. B RCTRTN AND RETURN 02144000
  2145. SPACE 1 02145000
  2146. RLOC1 EQU * 02146000
  2147. OI MASTERSW,READER INDICATE THAT THE READER IS OPEN 02147000
  2148. MSG 146,(AXSFILE,AXSLINK,AXSRECS) WRITE MSG 02148000
  2149. EJECT 02149000
  2150. ROPEN1 EQU * 02150000
  2151. RDLOOP DS 0H BASIC READ LOOP 02151000
  2152. TM SMLSYS,MASTER IN HOST MODE? 02152000
  2153. BNO RDLOPA NO CONTINUE 02153000
  2154. TM RSW1,HEADFLAG SENDING HEADER? 02154000
  2155. BNO RDLOPA NO CONTINUE 02155000
  2156. BAL R14,HEADPREP GET A HEADER LINE 02156000
  2157. B RDLOPB AND PUT THE RECORD 02157000
  2158. SPACE 1 02158000
  2159. RDLOPA EQU * 02159000
  2160. BAL R14,VMDEBLOK GO GET A LINE TO SEND 02160000
  2161. BNZ RDEOF E-O-F 02161000
  2162. RDLOPB EQU * 02162000
  2163. CLI RCTOPCOD,X'03' IS IT A TAG RECORD 02163000
  2164. BE RDLOOP YES TRY AGAIN 02164000
  2165. TM RSW1,UTRANS ARE WE SENDING PUNCH OUTPUT? 02165000
  2166. BNO RDLOP0 NO CONTINUE 02166000
  2167. MVI RCTTSRC1,X'81' SET PUNCH SRCB 02167000
  2168. RDLOP0 EQU * 02168000
  2169. TM RSW1,PTRANS ARE WE SENDING PRINT? 02169000
  2170. BNO RDLOP1 NO OKAY TO PUT 02170000
  2171. MVC RCTTCT1(2),RCTCCWCT SET THE LENGTH OF PRT DATA 02171000
  2172. SR R8,R8 CLEAR FOR IC 02172000
  2173. IC R8,RCTOPCOD GET THE OP CODE FOR PRINTER FILE 02173000
  2174. SRL R8,3 SET THE SRCB 02174000
  2175. STC R8,RCTTSRC1 AND STORE IN TANK 02175000
  2176. OI RCTTSRC1,X'80' INSURE TOP BIT IS ON 02176000
  2177. B RDLOP2 AND CONTINUE 02177000
  2178. SPACE 1 02178000
  2179. RDLOP1 EQU * 02179000
  2180. MVC RCTTCT1,=H'80' RESET LENGTH 02180000
  2181. RDLOP2 EQU * 02181000
  2182. LA R8,RCTTANK1 GET THE TANK ADDRESS 02182000
  2183. BAL R14,$PUT AND WRITE THE TANK 02183000
  2184. CLI RDRCMD,X'00' ANY COMMAND PENDING? 02184000
  2185. BE RDLOOP NO CONTINUE 02185000
  2186. TM RDRCMD,RBACKCNT BACKSPAC COUNT? 02186000
  2187. BO RBACKUP YES PROCESS IT 02187000
  2188. TM RDRCMD,RFWDCNT FORWARD SPACE COUNT? 02188000
  2189. BO RGOFWD YES PROCESS IT 02189000
  2190. TM RDRCMD,RBACKFIL BACKSPAC FILE? 02190000
  2191. BO RDBACKFL GO DO IT 02191000
  2192. TM RDRCMD,RFLSHALL FLUSH ALL? 02192000
  2193. BNO RDLOP3 NO CONTINUE 02193000
  2194. OI RDEVSOPT,ALL INDICATE FLUSH ALL IN RDR 02194000
  2195. B RDFLUSH GO DO IT @VA04039 02195000
  2196. RDLOP3 EQU * 02196000
  2197. TM RDRCMD,RFLSHOLD FLUSH AND HOLD? 02197000
  2198. BNO RDCKFLSH MIGHT BE FLUSH COPY @VA03276 02198000
  2199. OI RDEVSOPT,HOLD INDICATE FLUSH AND HOLD 02199000
  2200. B RDFLUSH GO DO IT @VA04039 02200000
  2201. RDCKFLSH EQU * @VA03276 02201000
  2202. TM RDRCMD,RFLSHCPY FLUSH COPY? @VA03276 02202000
  2203. BO RDFLUSH YES..GO DO IT @VA03276 02203000
  2204. B RDLOOP CONTINUE @VA03276 02204000
  2205. EJECT 02205000
  2206. RDFLUSH EQU * 02206000
  2207. NI RDRCMD,255-RFLSHALL-RFLSHOLD-RFLSHCPY RESET CMD BYTE 02207000
  2208. MVC MSGLINK(8),RDRCMDLK MOVE RESPONSE ID INTO MSG 02208000
  2209. CLC CMDFID(4),AXSFILE RIGHT FILE? 02209000
  2210. BNE RDFLSHER NO..ERROR 02210000
  2211. MSG 580,AXSFILE WRITE THE FLUSH MSG 02211000
  2212. B RDEOF0 AND CONTINUE 02212000
  2213. SPACE 02213000
  2214. RDFLSHER EQU * 02214000
  2215. MSG 581,CMDFID WRITE ERROR MSG 02215000
  2216. B RDLOOP AND CONTINUE 02216000
  2217. EJECT 02217000
  2218. RDEOF EQU * 02218000
  2219. MSG 147,(AXSFILE,AXSLINK) WRITE CLOSE MSG 02219000
  2220. RDEOF0 EQU * 02220000
  2221. NI RSW1,255-CLINE NO BUFFER PRESENT 02221000
  2222. OI RCTECB,TCTBUSY SET READER BUSY FOR WAITING 02222000
  2223. MVI RCTWFB,X'00' RESET WAITING FOR BUFFER SW 02223000
  2224. OI RSW1,RINIT INITIAL CALL HAS OCCURED 02224000
  2225. RDEOF1 EQU * 02225000
  2226. BAL R14,AXSPURGE GET RID OF FILE 02226000
  2227. NI RSW1,255-RINIT-PTRANS-UTRANS TURN OFF FLAGS 02227000
  2228. NI MASTERSW,255-READER TURN OFF READER ACTIVE 02228000
  2229. MVC RCTTCT1,=F'0' SET END OF FILE INDICATOR 02229000
  2230. MVC RCTENTY(2),RACN2 02230000
  2231. RLOC2 EQU * 02231000
  2232. MVI RCTWFB,X'00' RESET WAITING FOR BUFFERS SW @VA03306 02232000
  2233. LA R8,RCTTANK1 GET TANK ADDRESS 02233000
  2234. BAL R14,$TPPUT PUT THE TANK 02234000
  2235. BNZ READ1 GO GET ANOTHER FILE 02235000
  2236. L R8,RCTCOM GET COMMUTATOR ENTRY 02236000
  2237. MVI 1(R8),CLOSE AND CLOSE THE GATE 02237000
  2238. MVI RCTWFB,X'FF' SHOW WAITING FOR A BUFFER 02238000
  2239. B RCTRTN GO WAIT FOR A BUFFER 02239000
  2240. EJECT 02240000
  2241. RDBACKFL EQU * 02241000
  2242. USING SPLINK,R1 GET SPLINK ADDRESSABILITY 02242000
  2243. L R1,RDEVFIOA GET FILE I/O AREA ADDRESS 02243000
  2244. L R8,RDEVTAG GET TAG ADDRESS 02244000
  2245. LH R2,TAGDEV GET READER ADDRESS 02245000
  2246. LA R3,X'14' INDICATE BACKSPACE FILE 02246000
  2247. DIAG R1,R2,X'14' COMMAND SPOOL READER 02247000
  2248. RDBKFIL1 EQU * 02248000
  2249. NI RSW1,255-CLINE INDICATE BLOCK NOT PRESENT 02249000
  2250. RDBKFIL2 EQU * 02250000
  2251. LA R8,RDLOOP INDICATE RETURN POINT 02251000
  2252. RDBKMSG EQU * 02252000
  2253. MVC MSGLINK(8),RDRCMDLK MOVE IN RESPONSE LINKID 02253000
  2254. MSG 510,AXSFILE WRITE BACKSPAC MSG 02254000
  2255. NI RDRCMD,255-RBACKFIL-RBACKCNT RESET CMD FLAGS 02255000
  2256. BR R8 AND CONTINUE 02256000
  2257. EJECT 02257000
  2258. RBACKUP EQU * 02258000
  2259. L R1,RDEVFIOA GET FIOA ADDR 02259000
  2260. L R8,RDEVTAG GET READER TAG ADDRESS 02260000
  2261. L R3,SPRECNUM AND NUMBER OF RECORDS 02261000
  2262. S R3,VMSPNUM SUBSTRACT WHATS LEFT 02262000
  2263. BZ RDBKPAGA ALL DONE WITH THIS PAGE 02263000
  2264. LA R4,SPRECNUM+4 GET DATA ADDR 02264000
  2265. ST R4,VMSPANCH STORE ANCHOR FOR UNPACK 02265000
  2266. ST R4,VMSPNEXT AND THE NEXT DATA STRING 02266000
  2267. ST R3,VMSPNUM STORE THE NEW COUNT 02267000
  2268. OI RSW1,CLINE FILE ALREADY HERE @VA10237 02267100
  2269. TM TAGINDEV,TYPPUN IS IT A PUNCH FILE? 02268000
  2270. BNO RBACKCN2 NO..MUST BE PRINT 02269000
  2271. L R3,VMSPNUM GET THE CURRENT COUNT 02270000
  2272. B RBACKCN3 AND CONTINUE 02271000
  2273. SPACE 1 02272000
  2274. RBACKCN1 EQU * 02273000
  2275. LPR R3,R3 MAKE POSITIVE 02274000
  2276. ST R3,RDRCMDCT UPDATE NUMBER OF BACKS 02275000
  2277. RDBKPAGA EQU * 02276000
  2278. BAL R14,RDBKPAGE GO BACKPAGE 02277000
  2279. RBACKCN2 EQU * 02278000
  2280. TM TAGINDEV,TYPPRT IS IT A PRINT FILE? 02279000
  2281. BO RCNTSKP YES..MUST SKIP PAGES NOT RECS 02280000
  2282. L R3,SPRECNUM GET THE NEW NUM OF RECORDS 02281000
  2283. RBACKCN3 EQU * 02282000
  2284. S R3,RDRCMDCT SUBSTRACT NEW NUM 02283000
  2285. LTR R3,R3 ARE WE DONE? 02284000
  2286. BNP RBACKCN1 NO CONTINUE 02285000
  2287. BAL R14,RDBKPCON RESET TO BEGINNING OF PAGE 02286000
  2288. RBACKSK EQU * 02287000
  2289. BAL R14,VMDEBLOK GET A RECORD 02288000
  2290. TM TAGINDEV,TYPPUN IS IT A PUNCH FILE? 02289000
  2291. BO RBACKDWN YES COUNT ALL 02290000
  2292. CLI RCTOPCOD,X'89' PRINT AND SKIP TO CHAN 1? 02291000
  2293. BE RBACKDWN YES COUNT IT 02292000
  2294. CLI RCTOPCOD,X'8B' IMMED SKIP TO CHAN 1? 02293000
  2295. BNE RBACKSK NO TRY ANOTHER 02294000
  2296. RBACKDWN EQU * 02295000
  2297. BCT R3,RBACKSK DOWN BY ONE 02296000
  2298. LA R8,RDLOPB INDICATE RETURN POINT 02297000
  2299. CLI RCTOPCOD,X'8B' IS IT A SKIP IMMED? 02298000
  2300. BE RDBKMSG YES..CONTINUE 02299000
  2301. MVI RCTOPCOD,X'8B' MAKE IT A SKIP IMMED.. 02300000
  2302. MVI RCTTDTA1,C' ' AND ONE CHAR OF DATA 02301000
  2303. LA R1,1 ONE BYTE OF DATA 02302000
  2304. STH R1,RCTCCWCT AND STORE IN CCW 02303000
  2305. B RDBKMSG ALL DONE 02304000
  2306. EJECT 02305000
  2307. RCNTSKP EQU * 02306000
  2308. SR R3,R3 ZERO OUT ACCUMLATOR 02307000
  2309. RCNTSKP1 EQU * 02308000
  2310. BAL R14,VMDEBLOK GET A RECORD 02309000
  2311. CLI RCTOPCOD,X'89' PRINT AND SKIP TO CHANNEL 1? 02310000
  2312. BE RCNTSKPC YES COUNT IT 02311000
  2313. CLI RCTOPCOD,X'8B' IMMED SKIP TO CHANNEL 1? 02312000
  2314. BE RCNTSKPC YES COUNT IT 02313000
  2315. RCNTSKPX EQU * 02314000
  2316. ICM R0,B'1111',VMSPNUM ALL DONE WITH PAGE? 02315000
  2317. BNZ RCNTSKP1 NO CONTINUE 02316000
  2318. B RBACKCN3 BR BACK TO MAIN CODE 02317000
  2319. SPACE 1 02318000
  2320. RCNTSKPC EQU * 02319000
  2321. LA R3,1(,R3) UP SKIP COUNT BY 1 02320000
  2322. B RCNTSKPX AND JOIN COMMON CODE 02321000
  2323. SPACE 1 02322000
  2324. RDBKPAGE EQU * BACK UP A PAGE SUBROUTINE 02323000
  2325. STM R0,R15,VMDESAVE MIGHT AS WELL SAVE THEM ALL 02324000
  2326. L R1,RDEVFIOA GET FILE I/O AREA ADDRESS 02325000
  2327. L R8,RDEVTAG GET TAG ADDRESS 02326000
  2328. LH R2,TAGDEV GET READER ADDRESS 02327000
  2329. LA R3,X'18' INDICATE BACKSPACE PAGE 02328000
  2330. DIAG R1,R2,X'14' COMMAND SPOOL READER 02329000
  2331. BC 4,RDBKPAG2 ALL DONE BEGINNING OF FILE 02330000
  2332. RDBKPAG1 EQU * 02331000
  2333. L R8,SPRECNUM PICKUP SPRECNUM FROM NEW BLOCK 02332000
  2334. ST R8,VMSPNUM PICKUP COUNT OF REMAINING CCWS 02333000
  2335. LA R8,SPRECNUM+4 SETP OVER POINTERS IN SPOOL BLOCK 02334000
  2336. ST R8,VMSPANCH TO PICKUP CURRENT CCW ANCHOR 02335000
  2337. ST R8,VMSPNEXT CCW POINTER AND NEXT 02336000
  2338. OI RSW1,CLINE TO INDICATE BLOCK PRESENT 02337000
  2339. LM R0,R15,VMDESAVE RESTORE REGS 02338000
  2340. BR R14 AND RETURN 02339000
  2341. SPACE 1 02340000
  2342. RDBKPAG2 EQU * 02341000
  2343. LA R14,RDBKFIL2 SET RETURN POINT 02342000
  2344. SPACE 1 02343000
  2345. RDBKPCON EQU * 02344000
  2346. STM R0,R15,VMDESAVE SAVE REGISTERS 02345000
  2347. B RDBKPAG1 AND SIMULATE A PAGE BACK 02346000
  2348. EJECT 02347000
  2349. RGOFWD EQU * 02348000
  2350. L R1,RDRCMDCT GET FWD COUNT 02349000
  2351. L R8,RDEVTAG AND THE TAG ADDR 02350000
  2352. RGOFWDLP EQU * 02351000
  2353. BAL R14,VMDEBLOK GO GET A RECORD 02352000
  2354. BNZ RDGODNE ALL DONE EOF 02353000
  2355. TM TAGINDEV,TYPPUN IS IT A PUNCH FILE? 02354000
  2356. BO RGOCNT COUNT ALL RECORDS 02355000
  2357. CLI RCTOPCOD,X'89' PRINT AND SKIP TO CHANNEL 1? 02356000
  2358. BE RGOCNT YES COUNT IT 02357000
  2359. CLI RCTOPCOD,X'8B' IMMED SKIP TO CHANNEL 1? 02358000
  2360. BNE RGOFWDLP NO..CONTINUE 02359000
  2361. RGOCNT EQU * 02360000
  2362. BCT R1,RGOFWDLP REDUCE REC CNT BY 1 AND CONT 02361000
  2363. RDGODNE EQU * 02362000
  2364. CLI RCTOPCOD,X'8B' IS IT A SKIP IMMED? 02363000
  2365. BE RDFWMSG YES..CONTINUE 02364000
  2366. MVI RCTOPCOD,X'8B' MAKE IT A SKIP IMMED.. 02365000
  2367. MVI RCTTDTA1,C' ' AND ONE CHAR OF DATA 02366000
  2368. LA R1,1 ONE BYTE OF DATA 02367000
  2369. STH R1,RCTCCWCT AND STORE IN CCW 02368000
  2370. RDFWMSG EQU * 02369000
  2371. MVC MSGLINK(8),RDRCMDLK MOVE IN RESPONSE LINKID 02370000
  2372. MSG 600,AXSFILE WRITE FWD SPAC MSG 02371000
  2373. NI RDRCMD,255-RFWDCNT RESET CMD BYTE 02372000
  2374. CLI RCTOPCOD,X'8B' IS IT A SKIP IMMED? 02373000
  2375. BE RDLOPB YES..CONTINUE 02374000
  2376. MVI RCTOPCOD,X'8B' MAKE IT A SKIP IMMED.. 02375000
  2377. MVI RCTTDTA1,C' ' AND ONE CHAR OF DATA 02376000
  2378. LA R1,1 ONE BYTE OF DATA 02377000
  2379. STH R1,RCTCCWCT AND STORE IN CCW 02378000
  2380. B RDLOPB AND CONTINUE 02379000
  2381. DROP R1 02380000
  2382. EJECT 02381000
  2383. RDERR1 EQU * 02382000
  2384. NI RCTECB,X'FF'-TCTBUSY TURN OFF RDR ECB BUSY @VA10416 02382100
  2385. TM RSW1,RACTIV WAS A FILE EVER OPENED? 02383000
  2386. BNO RDERR2 NO..EXIT AGAIN 02384000
  2387. TM RSW1,RINIT HAS READER BEEN CALLED ONCE? 02385000
  2388. BNO RDERR2 NOPE 02386000
  2389. MVC RCTTCT1,=F'0' SET END OF FILE INDICATOR 02387000
  2390. MVC RCTENTY(2),RACN3 PREPARE FOR REJECT ON SENDING 02388000
  2391. RLOC3 EQU * 02389000
  2392. LA R8,RCTTANK1 PUT TANK ADDR IN PARAMETER REG 02390000
  2393. BAL R14,$TPPUT SEND EOF SIGNAL 02391000
  2394. BNZ RDERR2 OPEN WENT OK...CONTINUE 02392000
  2395. L R8,RCTCOM GET COMMUTATOR ENTRY 02393000
  2396. MVI 1(R8),CLOSE AND CLOSE THE GATE 02394000
  2397. MVI RCTWFB,X'FF' SHOW WAITING FOR BUFFER 02395000
  2398. B RCTRTN GO WAIT FOR A BUFFER 02396000
  2399. SPACE 1 02397000
  2400. RDERR2 EQU * 02398000
  2401. MVI RCTWFB,X'00' RESET WAITING FOR BUFFERS SW @VA03306 02399000
  2402. OI RSW1,RINIT INITIAL CALL OVER 02400000
  2403. MVC RCTENTY(2),RACN4 SETUP FOR DELAY 02401000
  2404. NI MASTERSW,255-READER INDICATE READER CLOSED 02402000
  2405. NI RSW1,255-RACTIV INDICATE NO READER ACTIVE 02403000
  2406. L R8,RCTCOM GET COMMUNATOR ENTRY 02404000
  2407. MVI 1(R8),CLOSE AND CLOSE THE GATE 02405000
  2408. B RCTRTN AND RETURN 02406000
  2409. EJECT 02407000
  2410. RREOPEN EQU * 02408000
  2411. MVI RCTWFB,X'FF' SHOW WAITING FOR BUFFER 02409000
  2412. MVC RCTENTY(2),RACN5 SETUP FOR DELAY 02410000
  2413. L R8,RCTCOM GET COMMUNTATOR ENTRY 02411000
  2414. MVI 1(R8),CLOSE TURN OFF GATE 02412000
  2415. B RCTRTN AND EXIT 02413000
  2416. SPACE 1 02414000
  2417. RLOC5 EQU * 02415000
  2418. MVI RCTWFB,X'00' RESET WAITING FOR BUFFER 02416000
  2419. B ROPEN GO TRY REOPEN 02417000
  2420. SPACE 1 02418000
  2421. CLINE EQU X'80' BLOCK PRESENT IN DEBLOCK BUFFER 02419000
  2422. RINIT EQU X'40' INITIAL CALL HAS BEEN MADE 02420000
  2423. RACTIV EQU X'20' READER ACTIVE 02421000
  2424. PTRANS EQU X'10' TRANSMITTING PRINT FILE 02422000
  2425. UTRANS EQU X'08' TRANSMITTING PUNCH FILE 02423000
  2426. HEADFLAG EQU X'04' TRANSMITTING HEADER 02424000
  2427. SPACE 1 02425000
  2428. RACN1 DC S(RLOC1) RETURN ENTRY POINT 02426000
  2429. RACN2 DC S(RLOC2) RETURN ENTRY POINT 02427000
  2430. RACN3 DC S(RLOC3) RETURN ENTRY POINT 02428000
  2431. RACN4 DC S(READ1) RETURN ENTRY POINT 02429000
  2432. RACN5 DC S(RLOC5) RETURN ENTRY POINT 02430000
  2433. EJECT 02431000
  2434. *. 02432000
  2435. * 02433000
  2436. * ENTRY NAME - 02434000
  2437. * 02435000
  2438. * AXSGET 02436000
  2439. * 02437000
  2440. * FUNCTION - 02438000
  2441. * 02439000
  2442. * THIS ROUTINE FUNCTIONS AS THE INTERFACE TO DMTAXS, FOR 02440000
  2443. * GETTING FILES TO TRANSMIT, AND PURGE THOSE FILES WHEN 02441000
  2444. * TRANSMISSION IS COMPLETE. 02442000
  2445. * 02443000
  2446. * CALLS TO OTHER ROUTINES - 02444000
  2447. * 02445000
  2448. * DMTWAT - TO WAIT FOR AN EVENT COMPLETION 02446000
  2449. * DMTGIV - TO INITIATE A GIVE REQUEST 02447000
  2450. * 02448000
  2451. * OPERATION - 02449000
  2452. * 02450000
  2453. * 1. INITIATE AND WAIT FOR COMPLETION A CALL TO DMTAXS 02451000
  2454. * FOR AN INPUT SPOOL FILE TO TRANSMIT. 02452000
  2455. * 02453000
  2456. * 2. IF FILE OPENED CONSTRUCT HEADER LINE AND SETUP INITIAL 02454000
  2457. * PARAMETERS FOR VMDEBLOK 02455000
  2458. * 02456000
  2459. * 3. IF FILE NOT OPENED RETURN TO CALLER WITH CONDITION CODE SET 02457000
  2460. * 02458000
  2461. * FOR AN INPUT FILE PURGE: 02459000
  2462. * 02460000
  2463. * 1. SETUP UP A CALL TO DMTAXS TO CLOSE INPUT FILE. 02461000
  2464. * 02462000
  2465. * 2. WAIT FOR COMPLETION AND RETURN TO CALLER. 02463000
  2466. * 02464000
  2467. * RESPONSES - 02465000
  2468. * 02466000
  2469. * NONE 02467000
  2470. * 02468000
  2471. * ERROR MESSAGES - 02469000
  2472. * 02470000
  2473. * NONE 02471000
  2474. * 02472000
  2475. *. 02473000
  2476. SPACE 1 02474000
  2477. AXSSAVE DC 16F'0' AXS ROUTINE SAVE AREA 02475000
  2478. SPACE 1 02476000
  2479. AXSLINK DC CL8' ' REM LOC LINKID TO BE FILLED IN BY IN 02477000
  2480. AXSCVD DC D'0' TEMP AREA FOR CVD OPERATIONS 02478000
  2481. AXSFILE DC CL4' ' FILE ID 02479000
  2482. DC CL4' ' 02480000
  2483. AXSRECS DC CL8' ' NUM OF RECORDS 02481000
  2484. BLANK DC CL8' ' MSG FILLER 02482000
  2485. LOCATION DC CL8' ' LOCAL LOCATION 02483000
  2486. SYSTYPE DC CL8' ' REMOTE SYSTEM TYPE @VM01105 02484000
  2487. EJECT 02485000
  2488. AXSGET DC 0H'0' 02486000
  2489. STM R14,R13,AXSSAVE SAVE CALLER'S REGISTER CONTENTS 02487000
  2490. MVI RDEVRLEN,X'13' SET REQUEST LENGTH 02488000
  2491. MVI RDEVFUN,X'01' SET FUNCTION FOR INPUT OPEN 02489000
  2492. MVC RDEVLINK(8),AXSLINK SET LINK ID IN REQUEST 02490000
  2493. SR R0,R0 CLEAR R0 TO SIGNAL GIVE INIT REQ 02491000
  2494. ST R0,RDEVSYNC CLEAR THE AXS REQUEST SYNCH LOCK TOO 02492000
  2495. LA R1,RDEVSYNC R1=ADDR OF THE REQ ELEMENT FOR AXS 02493000
  2496. L R15,GIVEREQ R15=ENTRY ADDR FOR SUP GIVE ROUTINE 02494000
  2497. BALR R14,R15 MAKE THE REQUEST AVAILABLE TO AXS0 02495000
  2498. L R15,WAITREQ R1= ADDR OF ENTRY TO WAIT ROUTINE 02496000
  2499. BALR R14,R15 WAIT FOR AXS0 TO PROCESS THE REQUEST 02497000
  2500. CLI RDEVSYNC,X'80' WAS THE REQUEST SUCCESSFUL? 02498000
  2501. BE AXSGOPEN YEP - GO TRY TO OPEN THE FILE 02499000
  2502. TM RDEVSYNC,X'81' FILE ALREADY THERE 02500000
  2503. BO AXSGOPEN THATS OKAY TOO 02501000
  2504. XC RDEVSYNC(4),RDEVSYNC CLEAR OUT SYNC LOCK 02502000
  2505. LM R14,R13,AXSSAVE RESTORE CLOBBERED REGISTERS 02503000
  2506. LA R15,4 SET NON ZERO RETURN CODE 02504000
  2507. LTR R15,R15 SET CONDITION CODE 02505000
  2508. BR R14 RETURN WITH NO BLOCK INDICATION 02506000
  2509. SPACE 1 02507000
  2510. AXSGOPEN EQU * 02508000
  2511. USING SPLINK,R1 GET SPLINK ADDRESSABILITY 02509000
  2512. OI RSW1,RACTIV INDICATE FILE OPENED 02510000
  2513. L R1,RDEVFIOA GET FILE I/O AREA ADDRESS 02511000
  2514. L R8,SPRECNUM PICKUP SPRECNUM FROM NEW BLOCK 02512000
  2515. ST R8,VMSPNUM PICKUP COUNT OF REMAINING CCWS 02513000
  2516. LA R8,SPRECNUM+4 SETP OVER POINTERS IN SPOOL BLOCK 02514000
  2517. ST R8,VMSPANCH TO PICKUP CURRENT CCW ANCHOR 02515000
  2518. ST R8,VMSPNEXT CCW POINTER AND NEXT 02516000
  2519. OI RSW1,CLINE TO INDICATE BLOCK PRESENT 02517000
  2520. TM SMLSYS,MASTER ARE WE IN HOST MODE 02518000
  2521. BNO AXSGEXIT NO EXIT 02519000
  2522. OI RSW1,HEADFLAG INDICATE TIME TO PRT HEADER 02520000
  2523. L R8,RDEVTAG GET TAG ADDR 02521000
  2524. CLI TAGINDEV,TYP3210 IS IT SPOOLED CONSOLE OUTPUT? 02522000
  2525. BE AXSGLINE YES..TREAT LIKE PRINT 02523000
  2526. TM TAGINDEV,TYPPRT IS IT A PRINT FILE? 02524000
  2527. BO AXSGLINE YEP - GO GIN UP A REM HEAD LINE 02525000
  2528. MVI HDRCHAR,X'5C' INSERT * 02526000
  2529. MVC HDRCHAR+1(80-HDRSGLEN-1),HDRCHAR AND PROPAGATE 02527000
  2530. B AXSGCOMM AND ENTER COMMON HEAD CODE 02528000
  2531. EJECT 02529000
  2532. AXSGLINE EQU * 02530000
  2533. MVC HDRDIST(8),TAGDIST MOVE IN THE DIST CODE 02531000
  2534. MVC HDRNAME(24),TAGNAME AND THE NAME 02532000
  2535. MVI HDRCHAR,C' ' INSERT BLANK 02533000
  2536. MVC HDRCHAR+1(80-HDRSGLEN-1),HDRCHAR AND PROPAGATE 02534000
  2537. AXSGCOMM EQU * 02535000
  2538. MVC HDRORGID(8),TAGINLOC MOVE IN THE ORIGIN LOCATION 02536000
  2539. MVC HDRVMID(8),TAGINVM AND THE ORIGIN VIRTUAL MACHINE 02537000
  2540. MVC HDRTOD(MASKLEN),TODMASK MOVE IN THE EDITING MASK 02538000
  2541. LM R0,R1,TAGINTOD R0 AND R1 CONTAIN THE INPUT TOD 02539000
  2542. LA R2,HDRTOD R2 CONTAINS THE EBCDIC TOD ADDR 02540000
  2543. BAL R14,TODEBCD AND CONVERT 02541000
  2544. DROP R1 02542000
  2545. SPACE 1 02543000
  2546. AXSGEXIT EQU * 02544000
  2547. XC RDEVSYNC(4),RDEVSYNC CLEAR OUT SYNC LOCK 02545000
  2548. LM R14,R13,AXSSAVE RESTORE ALL REGISTERS 02546000
  2549. SR R15,R15 SET ZERO RETURN CODE 02547000
  2550. LTR R15,R15 SET CONDITION CODE 02548000
  2551. BR R14 AND RETURN TO THE MAIN ROUTINE 02549000
  2552. EJECT 02550000
  2553. AXSPURGE EQU * 02551000
  2554. STM R14,R1,AXSSAVE SAVE CALLER'S REGISTER CONTENTS 02552000
  2555. MVI RDEVFUN,X'02' SET PURGE REQUEST CODE FOR AXS1 02553000
  2556. SR R0,R0 CLEAR R0 TO SIG GIVE INIT REQ 02554000
  2557. ST R0,RDEVSYNC CLEAR THE REQUEST SYNCH LOCK TOO 02555000
  2558. LA R1,RDEVSYNC R1=ADDR OF PURGE REQ FOR AXS 02556000
  2559. L R15,GIVEREQ R15=ADDR OF ENTRY TO SUP GIVE ROUT 02557000
  2560. BALR R14,R15 INITIATE THE REQUEST 02558000
  2561. L R15,WAITREQ R15=ADDR OF ENTRY TO SUP WAIT ROUT 02559000
  2562. BALR R14,R15 WAIT FOR THE REQUEST TO BE COMPLETED 02560000
  2563. XC RDEVSYNC(4),RDEVSYNC CLEAR OUT SYNC LOCK 02561000
  2564. XC RDEVSOPT(1),RDEVSOPT CLEAR OUT SUBOPTION FIELD 02562000
  2565. LM R14,R1,AXSSAVE RESTORE CLOBBERED REGISTERS 02563000
  2566. BR R14 AND RETURN TO THE CALLER 02564000
  2567. EJECT 02565000
  2568. *. 02566000
  2569. * 02567000
  2570. * ENTRY NAME - 02568000
  2571. * 02569000
  2572. * VMDEBLOK 02570000
  2573. * 02571000
  2574. * FUNCTION - 02572000
  2575. * 02573000
  2576. * THIS ROUTINE FUNCTIONS AS A DEBLOCK ROUTINE FOR THE 02574000
  2577. * VM/370 PAGE SPOOL BUFFERS. IT RETURNS THE DEBLOCKED 02575000
  2578. * RECORD IN THE RCTTDTA1 BUFFER. 02576000
  2579. * 02577000
  2580. * CALLS TO OTHER ROUTINES - 02578000
  2581. * 02579000
  2582. * DMKDRD - VIA DIAGNONE CODE X'0014' 02580000
  2583. * 02581000
  2584. * OPERATION - 02582000
  2585. * 02583000
  2586. * 1. IF NEEDED READ THE NEXT SPOOL PAGE BUFFER FROM VM. 02584000
  2587. * 02585000
  2588. * 2. CONSTRUCT THE RECORD FROM THE CCW DATA IN THE SPOOL 02586000
  2589. * PAGE BUFFER. 02587000
  2590. * 02588000
  2591. * 3. MOVE IN THE CARRIAGE CONTROL BYTE FROM THE CCW. 02589000
  2592. * 02590000
  2593. * 4. RETURN TO CALLER. 02591000
  2594. * 02592000
  2595. * RESPONSES - 02593000
  2596. * 02594000
  2597. * NONE 02595000
  2598. * 02596000
  2599. * ERROR MESSAGES - 02597000
  2600. * 02598000
  2601. * NONE 02599000
  2602. * 02600000
  2603. *. 02601000
  2604. SPACE 1 02602000
  2605. * 02603000
  2606. * REGISTERS 02604000
  2607. * 02605000
  2608. * GPR.1 INPUT AREA FOR PACK 02606000
  2609. * GPR.2 OUTPUT AREA FOR PACK 02607000
  2610. * GPR.3 ANCHOR CCW IN VM SPOOL BLOCK 02608000
  2611. * GPR.5 INPUT LENGTH FOR PACK 02609000
  2612. * GPR.6 COUNT OF NON-TIC CCWS LEFT IN VM SPOOL BUFFER 02610000
  2613. * GPR.7 NEXT CCW IN VM SPOOL BLOCK 02611000
  2614. * GPR.9 BASE REGISTER 02612000
  2615. * GPR.10 BASE REGISTER 02613000
  2616. * GPR.11 BASE REGISTER 02614000
  2617. * GPR.12 BASE REGISTER 02615000
  2618. * GPR.14 LINK REGISTER 02616000
  2619. EJECT 02617000
  2620. VMDEBLOK DS 0H 02618000
  2621. * 02619000
  2622. * SETUP SPOOL BLOCK POINTERS 02620000
  2623. * 02621000
  2624. STM R0,R15,VMDESAVE SAVE REGISTERS 02622000
  2625. * 02623000
  2626. * CHECK FOR VM SPOOL BLOCK PRESENT 02624000
  2627. * 02625000
  2628. TM RSW1,CLINE ANYTHING IN BUFFER? 02626000
  2629. BO VMSPBIN IF THE VM SPOOL BLOCK IS IN. 02627000
  2630. * 02628000
  2631. * READ A VM SPOOL BLOCK. 02629000
  2632. * 02630000
  2633. VMSPGET EQU * 02631000
  2634. * 02632000
  2635. USING SPLINK,R5 GET SPLINK ADDRESSABILITY 02633000
  2636. L R5,RDEVFIOA GET FILE I/O AREA ADDRESS 02634000
  2637. L R8,RDEVTAG GET READER TAG ADDRESS 02635000
  2638. LH R6,TAGDEV GET READER ADDRESS 02636000
  2639. SR R7,R7 IND READ OF NEXT SP BLK REC 02637000
  2640. DIAG R5,R6,X'14' COMMAND SPOOL READER 02638000
  2641. * 02639000
  2642. BC 8,VMSPOK IF THE READ IS SUCCESSFUL. 02640000
  2643. * 02641000
  2644. BC 4,VMDERET1 IF END OF FILE. 02642000
  2645. BC 2,VMDERET1 IF NO MORE FILES. 02643000
  2646. * 02644000
  2647. * ERROR ON SPOOL READ, GPR12 WILL CONTAIN.. 02645000
  2648. * 4 INVALID SPOOL READER ADDRESS 02646000
  2649. * 8 INVALID DEVICE 02647000
  2650. * 12 DEVICE BUSY WITH SIO I/O 02648000
  2651. * 16 PAGING I/O ERROR IN SETTING UP BUFFER. 02649000
  2652. * 02650000
  2653. MSG 108,AXSFILE WRITE ERROR MSG 02651000
  2654. B VMDERET1 AND IGNORE FOR PRESENT. 02652000
  2655. EJECT 02653000
  2656. VMSPOK EQU * HERE ON SUCCESSFUL READ 02654000
  2657. L R6,SPRECNUM PICKUP SPRECNUM FROM NEW BLOCK. 02655000
  2658. LTR R6,R6 ALL DONE IF ZERO 02656000
  2659. BZ VMSPGET TO GET THE NEXT SPOOL BLOCK. 02657000
  2660. LA R3,SPRECNUM+4 STEP OVER POINTERS IN SPOOL BLOCK 02658000
  2661. LR R7,R3 AND INITIALIZE WORKING REGS. 02659000
  2662. OI RSW1,CLINE TO INDICATE BLOCK PRESENT 02660000
  2663. B VMSPCCW TO PROCESS NEXT CCW CHAIN. 02661000
  2664. DROP R5 02662000
  2665. SPACE 02663000
  2666. * 02664000
  2667. * BUFFER IS PRESENT ON ENTRY TO VMSB2CP. 02665000
  2668. * 02666000
  2669. VMSPBIN EQU * 02667000
  2670. L R3,VMSPANCH TO PICKUP CURRENT CCW ANCHOR. 02668000
  2671. L R7,VMSPNEXT AND NEXT CCW POINTER. 02669000
  2672. L R6,VMSPNUM PICKUP COUNT OF REMAINING CCWS. 02670000
  2673. EJECT 02671000
  2674. * 02672000
  2675. * HERE TO PROCESS NEXT CCW CHAIN. 02673000
  2676. * 02674000
  2677. VMSPCCW EQU * 02675000
  2678. * 02676000
  2679. * PRINTER 02677000
  2680. * DATA MOVING CCW'S ARE.. 02678000
  2681. * (0,1,8,9,A,B,C,D,E)(1,9) 02679000
  2682. * PLUS 63 BUT NOT 81 AND E9. 02680000
  2683. * PUNCH 02681000
  2684. * DATA MOVING CCW'S ARE.. 02682000
  2685. * (0,2,4,6,8,A)1 02683000
  2686. * 02684000
  2687. * READER 02685000
  2688. * DATA MOVING CCW'S ARE 02 AND 42 02686000
  2689. * THESE ARE PRESENT FOR REAL READER FILES. 02687000
  2690. * (AND REQUIRE DIFFERENT TREATMENT THAN VIRTUAL FILES 02688000
  2691. * FROM THE PRINTER OR PUNCH.) 02689000
  2692. * 02690000
  2693. * IMMEDIATE CCW OPS WITH NO DATA ARE.. 02691000
  2694. * (0,1,8,9,A,B,C,D,E)(B,3) 02692000
  2695. * EXCEPT 03,83, AND EB. 02693000
  2696. * 02694000
  2697. * 03 IS NOP (USED FOR PASSING SPOOL INFORMATION.) 02695000
  2698. * 08 IS TIC TO NEXT CCW CHAIN, IF ANY. 02696000
  2699. * 02697000
  2700. * AFTER PROCESSING A NON-TIC CCW CC SUCCESSFULLY, BCT TO VMSPRET 02698000
  2701. * 02699000
  2702. VMSP4 EQU * 02700000
  2703. SPACE 2 02701000
  2704. * NOP (X'03') IS ASSUMED TO BE A DATA MOVER IF 02702000
  2705. * FOLLOWED BY A TIC, OTHERWISE IT IS PROCESSED 02703000
  2706. * AS AN IMMEDIATE. 02704000
  2707. * 02705000
  2708. * 02706000
  2709. TM 0(R7),X'06' DECODE CCW 02707000
  2710. BZ VMSP1 IF DATA MOVER OR TIC 02708000
  2711. CLI 0(R7),X'63' AND 02709000
  2712. BE VMSPDATA IF THIS IS A LOAD OF FORMS BUFFER 02710000
  2713. CLI 0(R7),X'03' ALSO CHECK FOR A NOP AND 02711000
  2714. BE VMSPNOP IF IT IS. 02712000
  2715. * 02713000
  2716. ***** CHECK FOR REAL READER FILES (42,02) IGNORE FOR MOMENT ****** 02714000
  2717. * 02715000
  2718. CLI 0(R7),X'42' REAL READER CCW? 02716000
  2719. BE VMSPFINI YES 02717000
  2720. CLI 0(R7),X'02' REAL READER CCW? 02718000
  2721. BE VMSPFINI YES 02719000
  2722. EJECT 02720000
  2723. * NOT DATA MOVER, TIC, OR END. IMMEDIATE IS ASSUMED. 02721000
  2724. * 02722000
  2725. VMSPIMED EQU * 02723000
  2726. MVC RCTOPCOD(1),0(R7) SET OP CODE 02724000
  2727. LA R4,1 SET DATA LENGTH TO 1 02725000
  2728. STH R4,RCTCCWCT AND STORE IN TCT 02726000
  2729. MVI RCTTDTA1,X'40' ONE BYTE OF DATA 02727000
  2730. * 02728000
  2731. * HERE IF NON-TIC 02729000
  2732. * 02730000
  2733. VMSP2 EQU * 02731000
  2734. LA R7,8(,R7) STEP TO NEXT CCW AND 02732000
  2735. CLI 0(R7),X'08' CHECK IF TIC 02733000
  2736. BE VMSP3 IF IT IS, ELSE 02734000
  2737. LR R3,R7 MOVE ANCHOR ALSO. THEN 02735000
  2738. VMSP3 EQU * 02736000
  2739. BCT R6,VMSPRET TO PROCESS NEXT, IF ANY 02737000
  2740. B VMSPFINI THAT'S ALL FOLKS. 02738000
  2741. * 02739000
  2742. * HERE IF CCW IS XXXXX00X (BASE 2) 02740000
  2743. * 02741000
  2744. VMSP1 EQU * 02742000
  2745. TM 0(R7),X'01' CONTINUE DECODE 02743000
  2746. BO VMSPDATA IF CCW IS XXXXX001 02744000
  2747. CLI 0(R7),X'08' CHECK DIRECTLY FOR TIC 02745000
  2748. BE VMSPTIC IF YES. 02746000
  2749. SPACE 2 02747000
  2750. MSG 190,AXSFILE WRITE THE MSG 02748000
  2751. B VMSPFINI TO IGNORE FOR PRESENT. 02749000
  2752. SPACE 3 02750000
  2753. VMSPTIC EQU * PROCESS TIC. 02751000
  2754. LH R7,2(R7) GET DISPLACEMENT OF NEXT CCW AND 02752000
  2755. AR R3,R7 ADD IN LAST ANCHOR TO GET NEW ONE. 02753000
  2756. LR R7,R3 TO INDICATE NEXT CCW TO BE PROCESSED 02754000
  2757. B VMSPCCW TO PROCESS IT. 02755000
  2758. SPACE 3 02756000
  2759. VMSPNOP EQU * PROCESS NOP 02757000
  2760. CLI 8(R7),X'08' LOOK AHEAD FOR TIC AND 02758000
  2761. BE VMSPDATA TREAT A DATA MOVER IF PRESENT. 02759000
  2762. B VMSPIMED ELSE TREAT AS IMMEDIATE. 02760000
  2763. EJECT 02761000
  2764. VMSPDATA EQU * HERE FOR DATA MOVING CCW CC. 02762000
  2765. MVI RCTTDTA1,X'40' BLANK FIRST BYTE OF OUTPUT 02763000
  2766. MVC RCTTDTA1+1(131),RCTTDTA1 AND BLANK THE REST OF BUFFER 02764000
  2767. LH R1,2(R7) GET OFFSET FROM ANCHOR FOR DATA 02765000
  2768. AR R1,R3 AND MAKE IT ABSOLUTE 02766000
  2769. SR R5,R5 CLEAR OUT REGISTER 02767000
  2770. IC R5,7(R7) PICKUP COUNT OF DATA 02768000
  2771. MVC RCTOPCOD(1),0(R7) MOVE IN CCW CC, THEN 02769000
  2772. STH R5,RCTCCWCT SET DATA LENGTH IN TCT 02770000
  2773. BCTR R5,0 REDUCE BY ONE FOR CHARACTER @VA05472 02771000
  2774. * OPERATION 02772000
  2775. EX R5,VMDEMVC MOVE IN PACKED DATA. 02773000
  2776. B VMSP2 AND RETURN 02774000
  2777. SPACE 3 02775000
  2778. VMSPFINI EQU * DONE WITH A VM SPOOL BLOCK 02776000
  2779. NI RSW1,X'FF'-CLINE TO TURN OFF BLOCK FLAG AND 02777000
  2780. SPACE 3 02778000
  2781. VMSPRET EQU * 02779000
  2782. ST R3,VMSPANCH SAVE CCW ANCHOR. 02780000
  2783. ST R7,VMSPNEXT AND NEXT CCW 02781000
  2784. ST R6,VMSPNUM AND COUNT OF REMAINING CCW'S. 02782000
  2785. SR R15,R15 SET 0 RET CODE 02783000
  2786. B VMDERET2 TO COMPLETE RETURN. 02784000
  2787. SPACE 1 02785000
  2788. VMDERET1 EQU * 02786000
  2789. LA R15,4 SET NON ZERO RETURN CODE 02787000
  2790. SPACE 1 02788000
  2791. VMDERET2 EQU * 02789000
  2792. LM R0,R14,VMDESAVE RESTORE CALLERS REGS 02790000
  2793. LTR R15,R15 SET CONDITION CODE ON RETURN 02791000
  2794. BR R14 AND RETURN 02792000
  2795. SPACE 3 02793000
  2796. VMDEMVC MVC RCTTDTA1(0),0(R1) TO BE EXECUTED BY ABOVE CODE 02794000
  2797. SPACE 1 02795000
  2798. * TEMPORARIES 02796000
  2799. * 02797000
  2800. VMSPANCH DS F CCW ANCHOR 02798000
  2801. VMSPNEXT DS F NEXT CCW 02799000
  2802. VMSPNUM DS F NUMBER OF DATA RECORDS IN 4K BUFFER 02800000
  2803. VMDESAVE DS 16F REGISTER SAVE AREA 02801000
  2804. EJECT 02802000
  2805. *. 02803000
  2806. * 02804000
  2807. * ENTRY NAME - 02805000
  2808. * 02806000
  2809. * HEADPREP 02807000
  2810. * 02808000
  2811. * FUNCTION - 02809000
  2812. * 02810000
  2813. * THIS ROUTINE PROVIDES, ONE RECORD AFTER THE OTHER, 02811000
  2814. * THE SEPARATOR AND THE HEADER FOR THE PRINT TYPE FILES 02812000
  2815. * AND THE HEADER CARD FOR THE PUNCH TYPE FILES. 02813000
  2816. * 02814000
  2817. * CALLS TO OTHER ROUTINES - 02815000
  2818. * 02816000
  2819. * 02817000
  2820. * 02818000
  2821. * OPERATION - 02819000
  2822. * 02820000
  2823. * 1. GET NEXT ENTRY FROM HEADER TABLE AND PLACE IN THE OUTPUT 02821000
  2824. * BUFFER. 02822000
  2825. * 02823000
  2826. * 2. UPDATE HEADER TABLE TO NEXT ENTRY. 02824000
  2827. * 02825000
  2828. * 3. IF AT END OF TABLE RESET TABLE AND HEADFLAG. 02826000
  2829. * 02827000
  2830. * ENTRY CONDITIONS: 02828000
  2831. * 02829000
  2832. * IN REG. 14 THE RETURN ADDRESS. 02830000
  2833. * 02831000
  2834. * EXIT CONDITIONS: 02832000
  2835. * 02833000
  2836. * THE INTERMEDIATE BUFFER BUFUNPK, CONTAINS THE ACTUAL 02834000
  2837. * SEPARATOR OR HEADER RECORD. 02835000
  2838. EJECT 02836000
  2839. * 02837000
  2840. * NOTE: 02838000
  2841. * 02839000
  2842. * THE SEPARATOR FOR THE PRINT TYPE FILES IS AS FOLLOWS: 02840000
  2843. * 02841000
  2844. * PAGE EJECT 02842000
  2845. * SKIP 61 LINES 02843000
  2846. * 5 LINES OF 130 ASTERISKS 02844000
  2847. * 1 LINE OF 130 UNDERLINES 02845000
  2848. * 5 LINES OF 130 ASTERISKS 02846000
  2849. * 2 BLANK LINES 02847000
  2850. * 02848000
  2851. * THE HEADER FOR BOTH THE PRINT AND PUNCH TYPE FILES, 02849000
  2852. * IS AS FOLLOWS: 02850000
  2853. * 02851000
  2854. * 1- 8 FILE ORIGIN LOCATION 02852000
  2855. * 13-20 FILE ORIGIN VIRTUAL MACHINE 02853000
  2856. * 25-32 FILE ORIGIN DATE 02854000
  2857. * 37-44 FILE ORIGIN TIME 02855000
  2858. * 55-68 WAS THE ORIGIN 02856000
  2859. * 02857000
  2860. * 02858000
  2861. * RESPONSES - 02859000
  2862. * 02860000
  2863. * NONE 02861000
  2864. * 02862000
  2865. * ERROR MESSAGES - 02863000
  2866. * 02864000
  2867. * NONE 02865000
  2868. * 02866000
  2869. *. 02867000
  2870. SPACE 3 02868000
  2871. HEADPREP EQU * 02869000
  2872. STM R13,R15,HDPRSAVE SAVE CALLER REGISTERS 02870000
  2873. TM RSW1,PTRANS PRINT FILE? 02871000
  2874. BZ HEADLINE NO - ONLY HEADER CARD 02872000
  2875. L R13,HEADPNT LOAD THE HEADER POINTER 02873000
  2876. L R14,0(R13) GET THE ADDRESS 02874000
  2877. BR R14 AND GO TO EXEC IT 02875000
  2878. SPACE 2 02876000
  2879. SKIPCH1 EQU * 02877000
  2880. MVI RCTOPCOD,X'88' SKIP TO CHA. 1 02878000
  2881. MVI RCTTDTA1,X'40' ONE BYTE OF DATA 02879000
  2882. B HEADRET0 AND GO TO EXIT 02880000
  2883. SPACE 02881000
  2884. SKIP3 EQU * 02882000
  2885. MVI RCTOPCOD,X'19' SKIP THREE LINES 02883000
  2886. MVI RCTTDTA1,X'40' ONE BYTE OF DATA 02884000
  2887. B HEADRET0 AND CONTINUE 02885000
  2888. EJECT 02886000
  2889. DOUBSP EQU * 02887000
  2890. MVI RCTOPCOD,X'13' DOUBLE SPACE 02888000
  2891. MVI RCTTDTA1,X'40' ONE BYTE OF DATA 02889000
  2892. HEADRET0 EQU * 02890000
  2893. LA R15,1 GET DATA COUNT 02891000
  2894. STH R15,RCTCCWCT AND STORE IN CCW 02892000
  2895. B HEADRET 02893000
  2896. SPACE 02894000
  2897. ASTER EQU * 02895000
  2898. MVI RCTTDTA1,X'5C' * 02896000
  2899. B ASTUND AND CONTINUE 02897000
  2900. SPACE 1 02898000
  2901. UNDERLIN EQU * 02899000
  2902. MVI RCTTDTA1,X'6D' _ 02900000
  2903. SPACE 02901000
  2904. ASTUND EQU * 02902000
  2905. MVI RCTOPCOD,X'09' PRINT AND SPACE 1 02903000
  2906. MVC RCTTDTA1+1(130),RCTTDTA1 **** OR ---- @VA09561 02904010
  2907. LA R15,131 SET LENGTH 02905000
  2908. STH R15,RCTCCWCT AND STORE IN CCW 02906000
  2909. B HEADRET AND RETURN 02907000
  2910. SPACE 02908000
  2911. HEAD2LIN EQU * 02909000
  2912. LA R14,HDRLINE2 GET SECOND HEAD LINE ADDR 02910000
  2913. LA R15,LHDRLIN2 AND THE LENGTH 02911000
  2914. B HEADCONT AND CONTINUE 02912000
  2915. SPACE 02913000
  2916. HEADLINE EQU * 02914000
  2917. LA R14,HDRLINE GET THE FIRST HEADER LINE ADDR 02915000
  2918. LA R15,HDRLEN HEADER LENGTH 02916000
  2919. HEADCONT EQU * 02917000
  2920. MVI RCTOPCOD,X'19' MOVE IN OPCODE 02918000
  2921. BCTR R15,0 MINUS 1 02919000
  2922. EX R15,MVCHEAD MOVE THE LINE 02920000
  2923. LA R15,1(,R15) RESTORE THE BYTES COUNT 02921000
  2924. STH R15,RCTCCWCT STORE COUND IN CCW 02922000
  2925. EJECT 02923000
  2926. HEADRET EQU * 02924000
  2927. TM RSW1,PTRANS PRINT FILE? 02925000
  2928. BNO HEADRST NO - EXIT 02926000
  2929. CLC HEADCRNT(1),0(R13) ENOUGH OF THIS TYPE? 02927000
  2930. BE HEADNEXT YES 02928000
  2931. SR R14,R14 CLEAR FOR IC 02929000
  2932. IC R14,HEADCRNT GET CURRENT NUM OF THIS TYPE 02930000
  2933. LA R14,1(,R14) AND UP BY 1 02931000
  2934. STC R14,HEADCRNT AND UPDATE THE NUM 02932000
  2935. B HEADRET1 AND CONTINUE 02933000
  2936. SPACE 1 02934000
  2937. HEADNEXT EQU * 02935000
  2938. MVI HEADCRNT,X'01' START OVER 02936000
  2939. LA R13,4(,R13) UPDATE POINTER FOR TABLE 02937000
  2940. CLI 0(R13),X'FF' END OF TABLE? 02938000
  2941. BNE HEADRET1 NO CONTINUE 02939000
  2942. HEADRST EQU * 02940000
  2943. LA R13,HEADTABL RESET TABLE POINTER 02941000
  2944. NI RSW1,X'FF'-HEADFLAG RESET HEADER FLAG 02942000
  2945. SPACE 02943000
  2946. HEADRET1 EQU * 02944000
  2947. ST R13,HEADPNT SAVE POINTER 02945000
  2948. LM R13,R15,HDPRSAVE RESTORE CALLER REGISTERS 02946000
  2949. BR R14 AND RETURN 02947000
  2950. SPACE 3 02948000
  2951. MVCHEAD MVC RCTTDTA1(*-*),0(R14) TO BE EXECUTED FROM ABOVE 02949000
  2952. SPACE 02950000
  2953. HDPRSAVE DS 3F SAVE AREA 02951000
  2954. HEADPNT DC AL4(HEADTABL) CURRENT POSITION OF HEAD TABLE 02952000
  2955. HEADCRNT DC X'01' CURRENT NUM OF THIS LINE 02953000
  2956. SPACE 02954000
  2957. HEADTABL DS 0F 02955000
  2958. DC AL1(1),AL3(SKIPCH1) SKIP TO CH. 1 02956000
  2959. DC AL1(16),AL3(SKIP3) SKIP THREE LINES 02957000
  2960. DC AL1(5),AL3(DOUBSP) SKIP TWO LINES 02958000
  2961. DC AL1(5),AL3(ASTER) 130 * 02959000
  2962. DC AL1(1),AL3(UNDERLIN) 130 _ 02960000
  2963. DC AL1(5),AL3(ASTER) 130 * 02961000
  2964. DC AL1(1),AL3(DOUBSP) DOUBLE SPACE 02962000
  2965. DC AL1(1),AL3(HEADLINE) HEADER LINE 02963000
  2966. DC AL1(1),AL3(HEAD2LIN) HEADER LINE 02964000
  2967. DC XL4'FFFFFFFF' END OF TABLE 02965000
  2968. EJECT 02966000
  2969. HDRLINE EQU * PRINT LINE AND SPACE THREE COMMAND 02967000
  2970. HDRSGTOP EQU * 02968000
  2971. HDRORGID DC 8C'Y' FILE ORIGIN LOC ID TO BE FILLED IN 02969000
  2972. DC 4C' ' FOUR BLANKS 02970000
  2973. HDRVMID DC 8C'X' FILE ORIGIN VM ID TO BE FILLED IN 02971000
  2974. DC 3C' ' THREE MORE BLANKS 02972000
  2975. HDRTOD DC C' ' BEGINNING OF FIELD TO BE EDITED 02973000
  2976. DC C'XX/XX/XX' FILE ORIGIN DATE FROM TOD ROUTINE 02974000
  2977. DC 4C' ' FOUR MORE BLANKS 02975000
  2978. DC C'YY:YY:YY' FILE ORIGIN TIME FROM TOD ROUTINE 02976000
  2979. DC 2C' ' TWO MORE BLANKS 02977000
  2980. DC 6C' ' SIX MORE BLANKS @VA03113 02978000
  2981. DC C' WAS THE ORIGIN' ENDING NOTE 02979000
  2982. HDRSGLEN EQU (*-HDRSGTOP) END OF THE SEGMENT DATA FIELD 02980000
  2983. HDRCHAR DC (80-HDRSGLEN)C' ' 02981000
  2984. HDRLEN EQU (*-HDRLINE) END OF HEADER LINE RECORD 02982000
  2985. SPACE 02983000
  2986. TODMASK DC AL1(MASKLEN-1) LENGTH OF REMAINING MASK FIELD 02984000
  2987. DC X'2120',C'/',X'2020',C'/',X'2020' DATE MASK 02985000
  2988. DC 3C' ' THREE BLANKS 02986000
  2989. DC X'22' RESET SIGNIFICANCE INDICATOR 02987000
  2990. DC X'2120',C':',X'2020',C':',X'2020' TIME MASK 02988000
  2991. DC 2C' ' 2 BLANKS TO SEP ENDING NOTE @VA03113 02989000
  2992. MASKLEN EQU (*-TODMASK) END OF EDIT MASK 02990000
  2993. SPACE 2 02991000
  2994. HDRLINE2 EQU * START OF SECOND HEADER LINE 02992000
  2995. DC C'DEST: ' 02993000
  2996. HDRLINK DC CL8' ' LINK ID 02994000
  2997. DC C' FILE: ' 02995000
  2998. HDRFILE DC CL4' ' SPOOL FILE ID 02996000
  2999. DC C' NAME: ' 02997000
  3000. HDRNAME DC CL24' ' FILE NAME AND TYPE 02998000
  3001. DC C' DIST: ' 02999000
  3002. HDRDIST DC CL8' ' DISTRIBUTION CODE 03000000
  3003. DC C' RECS: ' 03001000
  3004. HDRRECS DC CL8' ' NUMBER OF RECORDS 03002000
  3005. LHDRLIN2 EQU *-HDRLINE2 LENGTH OF SECOND HDR LINE 03003000
  3006. EJECT 03004000
  3007. *. 03005000
  3008. * 03006000
  3009. * ENTRY NAME - 03007000
  3010. * 03008000
  3011. * TODEBCD 03009000
  3012. * 03010000
  3013. * FUNCTION - 03011000
  3014. * 03012000
  3015. * CONVERT S/370 TOD TO EBCDIC DATE AND TIME 03013000
  3016. * 03014000
  3017. * CALLS TO OTHER ROUTINES - 03015000
  3018. * 03016000
  3019. * GTODEBC - TO CONVERT THE TIME AND DATE 03017000
  3020. * 03018000
  3021. * OPERATION - 03019000
  3022. * 03020000
  3023. * 1. ISSUE A CALL TO COMMON GTODEBCD ROUTINE TO 03021000
  3024. * RETRIEVE TIME AND DATE. 03022000
  3025. * 03023000
  3026. * RESPONSES - 03024000
  3027. * 03025000
  3028. * NONE 03026000
  3029. * 03027000
  3030. * ERROR MESSAGES - 03028000
  3031. * 03029000
  3032. * NONE 03030000
  3033. * 03031000
  3034. *. 03032000
  3035. SPACE 3 03033000
  3036. TODEBCD DC 0H'0' 03034000
  3037. STM R13,R14,TODSAVE1 SAVE RETURN 03035000
  3038. LA R13,MMDDYYHH GET WORK ADDR ADDR FOR CALL 03036000
  3039. L R15,TCOM GET COMMON ROUTINE ADDR 03037000
  3040. L R15,GTODEBCD AND THE TIME CONVERT ADDR 03038000
  3041. BALR R14,R15 AND DO IT 03039000
  3042. LM R13,R14,TODSAVE1 RESTORE REGS 03040000
  3043. BR R14 AND RETURN 03041000
  3044. SPACE 03042000
  3045. MMDDYYHH DC D'0' TO HOLD NEW HOUR CALCULATION IN DEC 03043000
  3046. DC D'0' FOR APPENDING MMDDYYHH TO MMSSMMMM 03044000
  3047. MMSSMMMM DC D'0' TO RECEIVE DECIMAL MINUTE AND SECOND 03045000
  3048. DAYNUMBR DC A(0) TO RECEIVE COMPUTED DAY OF WEEK 0->6 03046000
  3049. TODEBCON DC F'-1',A(0+4,TIMEZON+4) SEE BELOW 03047000
  3050. * DC F'-1' TO HOLD LAST CALCULATION ELAPSED HOURS 03048000
  3051. * DC A(0+4) SWITCH, USED AS AN INDEX, FOR STD VS. DLT TIME 03049000
  3052. * DC A(TIMEZON+4) EXTERNAL ADDRESS OF TIMEZONE DISP TABLE 03050000
  3053. TODSAVE DC 11F'0' TODEBCD ROUTINE SAVE AREA 03051000
  3054. SPACE 03052000
  3055. TODSAVE1 DC 2F'0' SAVE AREA 03053000
  3056. SPACE 03054000
  3057. TIMEZON DC Y(0),CL6' ' DONT CONVERT TIME ZONE @VA03113 03055000
  3058. DC Y(0),CL6' ' ITS CORRECT AS IT IS @VA03113 03056000
  3059. EJECT 03057000
  3060. *. 03058000
  3061. * 03059000
  3062. * ENTRY NAME - 03060000
  3063. * 03061000
  3064. * $WRTN1 03062000
  3065. * 03063000
  3066. * FUNCTION - 03064000
  3067. * 03065000
  3068. * THIS ROUTINE WILL WRITE RECEIVED MSGS TO THE RSCS 03066000
  3069. * OPERATOR IF RJE MODE OR PASS COMMANDS TO DMTREX FOR 03067000
  3070. * EXECUTION IF OPERATING IN HOST MODE. THESE COMMANDS OR 03068000
  3071. * MESSAGES ARE DEQUEUED FROM THE CONSOLE TCT. 03069000
  3072. * 03070000
  3073. * CALLS TO OTHER ROUTINES - 03071000
  3074. * 03072000
  3075. * DMTWAT - TO WAIT FOR AN EVENT COMPLETION 03073000
  3076. * DMTGIV - TO INITIATE A GIVE REQUEST 03074000
  3077. * 03075000
  3078. * OPERATION - 03076000
  3079. * 03077000
  3080. * 1. GET A RECEIVED TANK VIA CALL TO $GETTNK 03078000
  3081. * 03079000
  3082. * 2. IF HOST MODE TREAT LIKE COMMAND AND PASS TO DMTREX 03080000
  3083. * FOR EXECUTION. 03081000
  3084. * 03082000
  3085. * 3. IF RJE MODE TREAT LIKE MSG AND WRITE MSG 170. 03083000
  3086. * 03084000
  3087. * 4. FREE THE TANK AND EXIT TO COMMUTATOR. 03085000
  3088. * 03086000
  3089. * RESPONSES - 03087000
  3090. * 03088000
  3091. * DMTSML170I FROM 'LINKID': (MSG TEXT) 03089000
  3092. * 03090000
  3093. * ERROR MESSAGES - 03091000
  3094. * 03092000
  3095. * NONE 03093000
  3096. * 03094000
  3097. *. 03095000
  3098. SPACE 3 03096000
  3099. USING TANKDSEC,R8 GET TANK ADDRESSABILITY 03097000
  3100. $WRTN1 DS 0H 03098000
  3101. WINIT DS 0H CONSOLE LOOP ENTRY POINT 03099000
  3102. MVI $WCOMM1+1,CLOSE CLOSE THE GATE 03100000
  3103. WTANKTST EQU * 03101000
  3104. CLI WCTTNKCT,0 TEST FOR TANK 03102000
  3105. BNE WGETTANK IF WE HAVE ONE GET IT 03103000
  3106. MVC WCTENTY(2),WACN1 SET UP FOR WAIT 03104000
  3107. B WCTRTN AND EXIT 03105000
  3108. EJECT 03106000
  3109. WGETTANK EQU * 03107000
  3110. BAL R14,$GETTNK WAIT FOR THE NEXT TANK 03108000
  3111. LH R6,TANKCNT GET DATA COUNT 03109000
  3112. TM SMLSYS,MASTER IS IT HOST MODE 03110000
  3113. BNO WGET2 NO TREAT LIKE MSG 03111000
  3114. WGET1 EQU * 03112000
  3115. LTR R1,R6 SAVE FOR MSG PROCESSOR 03113000
  3116. BZ WGET1A NULL CMD 03114000
  3117. BCTR R6,0 REDUCE BY 1 FOR EXECUTE 03115000
  3118. EX R6,WTOMOV MOVE INTO OUTPUT BUFFER 03116000
  3119. WGET1A EQU * 03117000
  3120. AH R1,=H'3' INCLUDE THE HEADER 03118000
  3121. STC R1,WTOMBUF AND STORE IN GIVE REQUEST BUF 03119000
  3122. XC WTOMCMD(4),WTOMCMD CLEAR OUT SYNCH LOCK 03120000
  3123. OC WTOBUF(120),WTORJBUF TRANSLATE TO UPPER CASE 03121000
  3124. LA R1,WTOMCMD GET BUFFER ADDR 03122000
  3125. L R15,GIVEREQ GET GIVE REQUEST PROCESSOR 03123000
  3126. BALR R14,R15 AND EXECUTE IT 03124000
  3127. L R15,WAITREQ SYSTEM WAIT PROCESSOR 03125000
  3128. BALR R14,R15 GO WAIT 03126000
  3129. B WGETRET AND RETURN 03127000
  3130. SPACE 1 03128000
  3131. WGET2 EQU * 03129000
  3132. CH R6,=H'104' MSG LONGER THAN 104? @VA03305 03130000
  3133. BNH *+8 NO, OK @VA03305 03131000
  3134. LA R6,104 MAKE LENGTH A MAX OF 104 @VA03305 03132000
  3135. MVC WTORJMSG+4(8),AXSLINK MOVE IN THE LINKID TO MSG 03133000
  3136. LR R1,R6 SAVE FOR LATER 03134000
  3137. BCTR R6,0 REDUCE BY ONE FOR MVC 03135000
  3138. EX R6,WTOMOV1 EXECUTE THE MOVE 03136000
  3139. LA R1,7(R1) ROUND UP TO EVEN 03137000
  3140. SRL R1,3 8 BYTE 03138000
  3141. SLL R1,3 BOUNDARY 03139000
  3142. AH R1,=H'12' UP FOR HEADER 03140000
  3143. LR R0,R1 MOVE INTO R1 03141000
  3144. LA R1,WTORJMSG GET MSG ADDR 03142000
  3145. MVI MSGBLK+2,X'80' INDICATE TO RSCS CONSOLE ONLY 03143000
  3146. BAL R14,MSG AND WRITE THE MSG 03144000
  3147. MVI WTORJBUF,C' ' BLANK FIRST BYTE 03145000
  3148. MVC WTORJBUF+1(119),WTORJBUF AND THE REST 03146000
  3149. WGETRET EQU * 03147000
  3150. MVC 0(4,R8),$TANKPOL GET FIRST FREE OFF QUEUE 03148000
  3151. ST R8,$TANKPOL MAKE THIS ONE THE FIRST 03149000
  3152. MVI $TPGETCM+1,OPEN OPEN TPGET GATE 03150000
  3153. B WINIT GET THE NEXT LINE FOR OUTPUT 03151000
  3154. EJECT 03152000
  3155. WTOMOV MVC WTOBUF(0),TANKDATA TO BE EXECUTED BY ABOVE CODE 03153000
  3156. WTOMOV1 MVC WTORJBUF(0),TANKDATA TO BE EXECUTED BY ABOVE CODE 03154000
  3157. SPACE 1 03155000
  3158. WTOMCMD DC F'0' SYNCH LOCK 03156000
  3159. DC CL4'REX ' COMMAND EXECUTATOR 03157000
  3160. DC A(WTOMBUF) REQUEST BUFFER 03158000
  3161. DC A(0) NO RESPONSE REQUESTED 03159000
  3162. SPACE 1 03160000
  3163. WTOMBUF DC AL1(0),X'00',AL2(0) LENGTH,FUNCTION,ZERO 03161000
  3164. WTOBUF DC CL120' ' CONSOLE OUTPUT BUFFER 03162000
  3165. SPACE 1 03163000
  3166. WTORJMSG DC AL2(170),AL2(0) NUMBER PLUS SPARE 03164000
  3167. DC CL8' ' LINKID 03165000
  3168. WTORJBUF DC CL120' ' MSG BUFFER 03166000
  3169. WACN1 DC S(WINIT) RETURN ENTRY POINT 03167000
  3170. EJECT 03168000
  3171. *. 03169000
  3172. * 03170000
  3173. * ENTRY NAME - 03171000
  3174. * 03172000
  3175. * CMDPROC 03173000
  3176. * 03174000
  3177. * FUNCTION - 03175000
  3178. * 03176000
  3179. * THIS ROUTINE EXECUTES COMMANDS PASSED TO IT IN THE 03177000
  3180. * CMDRESP BUFFER AFTER AN ALERT FROM DMTREX INDICATING A 03178000
  3181. * CMD HAS BEEN ENTERED. 03179000
  3182. * 03180000
  3183. * CALLS TO OTHER ROUTINES - 03181000
  3184. * 03182000
  3185. * NONE 03183000
  3186. * 03184000
  3187. * OPERATION - 03185000
  3188. * 03186000
  3189. * 1. SCAN COMMAND TABLE FOR MATCH. 03187000
  3190. * 03188000
  3191. * 2. IF FOUND BRANCH TO APPROPRIATE SUBROUTINE TO PROCESS 03189000
  3192. * COMMAND. 03190000
  3193. * 03191000
  3194. * 3. UPON RETURN RESET COMMAND IN PROGRESS SWITCH AND RETURN. 03192000
  3195. * 03193000
  3196. * RESPONSES - 03194000
  3197. * 03195000
  3198. * SEE EACH SUBROUTINE 03196000
  3199. * 03197000
  3200. * ERROR MESSAGES - 03198000
  3201. * 03199000
  3202. * SEE EACH SUBROUTINE 03200000
  3203. * 03201000
  3204. *. 03202000
  3205. SPACE 3 03203000
  3206. DS 0H 03204000
  3207. CMDPROC EQU * 03205000
  3208. MVI $CMDCOM+1,CLOSE CLOSE GATE 03206000
  3209. LM R3,R5,CMDSETUP PREPARE FOR COMMAND SCAN 03207000
  3210. CMDSCAN EQU * 03208000
  3211. CLC 0(1,R3),CMDRESP+1 IS IT THIS ONE 03209000
  3212. BE CMDCALL YES 03210000
  3213. BXLE R3,R4,CMDSCAN PREPARE FOR NEXT COMPARE 03211000
  3214. B CMDRET IGNORE IF NOT FOUND 03212000
  3215. SPACE 03213000
  3216. CMDCALL EQU * 03214000
  3217. L R6,SMLLINK GET LINK TABLE ADDR 03215000
  3218. MVC MSGLINK(8),CMDRESP+4 MOVE IN RESPONSE LINKID 03216000
  3219. L R15,0(R3) GET ROUTINE TO CALL 03217000
  3220. BALR R14,R15 GO EXECUTE THE COMMAND 03218000
  3221. CMDRET EQU * 03219000
  3222. MVI CMDINPGS,X'00' RESET COMMAND IN PROGRESS SWITCH 03220000
  3223. B $CMDCOM+4 AND EXIT 03221000
  3224. EJECT 03222000
  3225. *---------------------------------------------------------------------* 03223000
  3226. * START COMMAND * 03224000
  3227. *---------------------------------------------------------------------* 03225000
  3228. *. 03226000
  3229. * RESPONSES - 03227000
  3230. * 03228000
  3231. * DMTSML752I LINK 'LINKID' STILL ACTIVE -- DRAIN STATUS 03229000
  3232. * RESET 03230000
  3233. * 03231000
  3234. * ERROR MESSAGES - 03232000
  3235. * 03233000
  3236. * DMTSML750E LINK 'LINKID' ALREADY ACTIVE -- NO ACTION TAKEN 03234000
  3237. * 03235000
  3238. *. 03236000
  3239. SPACE 1 03237000
  3240. SETSTART EQU * 03238000
  3241. ST R14,CMDCMDSV SAVE RETURN REG 03239000
  3242. TM LFLAG,LDRAIN ARE WE DRAINING? 03240000
  3243. BNO SETSTRT1 NO 03241000
  3244. NI LFLAG,255-LDRAIN RESET DRAIN FLAG 03242000
  3245. MSG 752,AXSLINK AND WRITE MSG 03243000
  3246. B SETSTRTE AND EXIT 03244000
  3247. SPACE 1 03245000
  3248. SETSTRT1 EQU * 03246000
  3249. CLI CMDRESP+3,STACLASS CLASS RESET? 03247000
  3250. BE SETSTRTE YES..NO MSG 03248000
  3251. MSG 750,AXSLINK WRITE MSG 03249000
  3252. SETSTRTE EQU * 03250000
  3253. TM SMLSYS,SGNONREC READY TO GO? @VA09761 03251100
  3254. BM SETSTAE2 NO ..EXIT 03252000
  3255. TM MASTERSW,READER READER ALREADY ACTIVE? 03253000
  3256. BO SETSTAE2 YES..CONTINUE 03254000
  3257. OI $RCOMM1+1,OPEN OPEN READER GATE 03255000
  3258. SETSTAE2 EQU * 03256000
  3259. L R14,CMDCMDSV RESTORE RETURN REG 03257000
  3260. BR R14 AND RETURN 03258000
  3261. EJECT 03259000
  3262. *---------------------------------------------------------------------* 03260000
  3263. * DRAIN COMMAND * 03261000
  3264. *---------------------------------------------------------------------* 03262000
  3265. *. 03263000
  3266. * RESPONSES - 03264000
  3267. * 03265000
  3268. * DMTSML570I LINK 'LINKID' NOW SET TO DEACTIVATE 03266000
  3269. * 03267000
  3270. * ERROR MESSAGES - 03268000
  3271. * 03269000
  3272. * DMTSML571E LINK 'LINKID' ALREADY SET TO DEACTIVATE 03270000
  3273. * 03271000
  3274. *. 03272000
  3275. SPACE 1 03273000
  3276. SETDRAIN EQU * 03274000
  3277. ST R14,CMDCMDSV SAVE RETURN 03275000
  3278. TM LFLAG,LDRAIN ALREADY DRAINING? 03276000
  3279. BO SETDRER1 YES ..ERROR 03277000
  3280. OI LFLAG,LDRAIN SHOW WE ARE DRAINING 03278000
  3281. MSG 570,AXSLINK WRITE MSG 03279000
  3282. CLI MASTERSW,X'00' COULD WE ALREADY BE DRAINED? 03280000
  3283. BE EOJ IF SO..ALL DONE..WITH EASE 03281000
  3284. B SETDRXIT IF NOT EXIT 03282000
  3285. SPACE 03283000
  3286. SETDRER1 EQU * 03284000
  3287. MSG 571,AXSLINK WRITE ERROR MSG 03285000
  3288. SETDRXIT EQU * 03286000
  3289. L R14,CMDCMDSV RESTORE RETURN REG 03287000
  3290. BR R14 AND RETURN 03288000
  3291. EJECT 03289000
  3292. *---------------------------------------------------------------------* 03290000
  3293. * FREE COMMAND * 03291000
  3294. *---------------------------------------------------------------------* 03292000
  3295. *. 03293000
  3296. * RESPONSES - 03294000
  3297. * 03295000
  3298. * DMTSML590I LINK 'LINKID' RESUMING FILE TRANSFER 03296000
  3299. * 03297000
  3300. * ERROR MESSAGES - 03298000
  3301. * 03299000
  3302. * DMTSML591E LINK 'LINKID' NOT IN HOLD STATUS 03300000
  3303. * 03301000
  3304. *. 03302000
  3305. SPACE 1 03303000
  3306. SETFREE EQU * 03304000
  3307. ST R14,CMDCMDSV SAVE RETURN 03305000
  3308. TM LFLAG,LHOLD ARE WE HELD? 03306000
  3309. BNO SETFRER1 NO ERROR 03307000
  3310. MSG 590,AXSLINK WRITE FREE MSG 03308000
  3311. NI LFLAG,255-LHOLD TURN OFF HOLD FLAG 03309000
  3312. TM RDRCMD,RHLDIPGS WAS THE HOLD IMMED? 03310000
  3313. BO SETFRXIT YES..ALL DONE 03311000
  3314. TM SMLSYS,MASTER+SGNONREC DID WE SIGNON 03312000
  3315. BZ SETFRXIT NO - EXIT @VA03110 03313000
  3316. OI $RCOMM1+1,OPEN MUST TRY TO GET FILE 03314000
  3317. B SETFRXIT AND ENTER COMMON EXIT 03315000
  3318. SPACE 1 03316000
  3319. SETFRER1 EQU * 03317000
  3320. MSG 591,AXSLINK NOT IN HOLD MSG 03318000
  3321. SETFRXIT EQU * 03319000
  3322. NI RDRCMD,255-RHLDIPGS TURN OFF FLAG 03320000
  3323. L R14,CMDCMDSV RESTORE RETURN 03321000
  3324. BR R14 AND RETURN 03322000
  3325. EJECT 03323000
  3326. *---------------------------------------------------------------------* 03324000
  3327. * HOLD COMMAND * 03325000
  3328. *---------------------------------------------------------------------* 03326000
  3329. *. 03327000
  3330. * RESPONSES - 03328000
  3331. * 03329000
  3332. * DMTSML610I LINK 'LINKID' TO SUSPEND FILE TRANSMISSION 03330000
  3333. * DMTSML611I LINK 'LINKID' FILE TRANSMISSION SUSPENDED 03331000
  3334. * 03332000
  3335. * ERROR MESSAGES - 03333000
  3336. * 03334000
  3337. * DMTSML612E LINK 'LINKID' ALREADY IN HOLD STATUS 03335000
  3338. * 03336000
  3339. *. 03337000
  3340. SPACE 1 03338000
  3341. SETHOLD EQU * 03339000
  3342. ST R14,CMDCMDSV SAVE RETURN 03340000
  3343. TM LFLAG,LHOLD ALREADY IN HOLD? 03341000
  3344. BO SETHLDE1 YES ERROR 03342000
  3345. TM CMDRESP+3,HOLDIMM HOLD IMMEDIATE? 03343000
  3346. BO SETHLDIM YES PROCESS IT 03344000
  3347. OI RDRCMD,RHLDIPGS MARK HOLD IN PROGRESS 03345000
  3348. MSG 610,AXSLINK WRITE SET TO HOLD MSG 03346000
  3349. B SETHLDXT AND ENTER COMMON EXIT 03347000
  3350. SPACE 1 03348000
  3351. SETHLDIM EQU * 03349000
  3352. OI LFLAG,LHOLD HOLD IT REGARDLESS 03350000
  3353. MSG 611,AXSLINK WRITE HELD MSG 03351000
  3354. B SETHLDXT AND ENTER COMMON EXIT 03352000
  3355. EJECT 03353000
  3356. SETHLDE1 EQU * 03354000
  3357. MSG 612,AXSLINK WRITE ALREADY HELD MSG 03355000
  3358. SETHLDXT EQU * 03356000
  3359. MVC HLDCMDLK(8),CMDRESP+4 SAVE RESPONSE LINK FOR LATER 03357000
  3360. L R14,CMDCMDSV RESTORE RETURN 03358000
  3361. BR R14 AND RETURN 03359000
  3362. EJECT 03360000
  3363. *---------------------------------------------------------------------* 03361000
  3364. * TRACE COMMAND * 03362000
  3365. *---------------------------------------------------------------------* 03363000
  3366. *. 03364000
  3367. * RESPONSES - 03365000
  3368. * 03366000
  3369. * DMTSML801I LINK 'LINKID' ERROR TRACE STARTED 03367000
  3370. * DMTSML802I LINK 'LINKID' TRACE STARTED 03368000
  3371. * DMTSML803I LINK 'LINKID' TRACE ENDED 03369000
  3372. * 03370000
  3373. * ERROR MESSAGES - 03371000
  3374. * 03372000
  3375. * DMTSML810E LINK 'LINKID' TRACE ALREADY ACTIVE 03373000
  3376. * DMTSML811E LINK 'LINKID' TRACE NOT ACTIVE 03374000
  3377. * 03375000
  3378. *. 03376000
  3379. SPACE 1 03377000
  3380. SETTRACE EQU * 03378000
  3381. ST R14,CMDCMDSV SAVE RETURN REGISTER 03379000
  3382. CLI CMDRESP+3,TRACEOFF TRACE OFF? 03380000
  3383. BNE SETTR1 NO CONTINUE 03381000
  3384. TM LFLAG,LTRALL+LTRERR ARE WE TRACING AT ALL? 03382000
  3385. BZ SETTRE2 NO ERROR 03383000
  3386. NI LFLAG,255-LTRALL-LTRERR TURN OFF TR BITS 03384000
  3387. MSG 803,AXSLINK WRITE THE MSG 03385000
  3388. B SETTRXIT AND EXIT 03386000
  3389. SPACE 03387000
  3390. SETTR1 EQU * 03388000
  3391. TM LFLAG,LTRALL+LTRERR ARE WE TRACING ALREADY? 03389000
  3392. BM SETTRE1 YES ERROR 03390000
  3393. CLI CMDRESP+3,TRACERR ERROR TRACING? 03391000
  3394. BNE SETTR2 NO ERROR 03392000
  3395. OI LFLAG,LTRERR SET ERROR TRACE ON 03393000
  3396. MSG 801,AXSLINK WRITE MSG 03394000
  3397. B SETTRXIT AND EXIT 03395000
  3398. EJECT 03396000
  3399. SETTR2 EQU * 03397000
  3400. OI LFLAG,LTRALL SET TRACE ALL 03398000
  3401. MSG 802,AXSLINK AND WRITE MSG 03399000
  3402. B SETTRXIT AND EXIT 03400000
  3403. SPACE 03401000
  3404. SETTRE1 EQU * 03402000
  3405. MSG 810,AXSLINK AND WRITE THE MSG 03403000
  3406. B SETTRXIT AND EXIT 03404000
  3407. SPACE 03405000
  3408. SETTRE2 EQU * 03406000
  3409. MSG 811,AXSLINK AND WRITE MSG 03407000
  3410. SETTRXIT EQU * 03408000
  3411. L R14,CMDCMDSV RESTORE RETURN REG 03409000
  3412. BR R14 AND RETURN 03410000
  3413. EJECT 03411000
  3414. *---------------------------------------------------------------------* 03412000
  3415. * BACKSPAC AND FWDSPACE COMMANDS * 03413000
  3416. *---------------------------------------------------------------------* 03414000
  3417. *. 03415000
  3418. * RESPONSES - 03416000
  3419. * 03417000
  3420. * NONE 03418000
  3421. * 03419000
  3422. * ERROR MESSAGES - 03420000
  3423. * 03421000
  3424. * DMTSML511E NO FILE ACTIVE ON LINK 'LINKID' 03422000
  3425. * 03423000
  3426. *. 03424000
  3427. SPACE 1 03425000
  3428. SETBACK EQU * 03426000
  3429. ST R14,CMDCMDSV SAVE RETURN REG 03427000
  3430. TM MASTERSW,READER IS THERE A READER ACTIVE? 03428000
  3431. BNO SBKFWDN NO ERROR 03429000
  3432. CLI CMDRESP+3,BACKFILE BACKSPAC FILE? 03430000
  3433. BNE SETBACK1 NO CONTINUE 03431000
  3434. OI RDRCMD,RBACKFIL INDICATE CMD FOR RDR PROCESSING 03432000
  3435. B SBKFWDE AND EXIT 03433000
  3436. SPACE 03434000
  3437. SETBACK1 EQU * 03435000
  3438. OI RDRCMD,RBACKCNT MUST BE BACKSPAC COUNT 03436000
  3439. MVC RDRCMDCT(4),CMDRESP+12 SAVE COUNT FOR RDR 03437000
  3440. B SBKFWDE AND EXIT 03438000
  3441. SPACE 03439000
  3442. SETFWD EQU * 03440000
  3443. ST R14,CMDCMDSV SAVE RETURN REGISTER 03441000
  3444. TM MASTERSW,READER IS THERE A READER ACTIVE 03442000
  3445. BNO SBKFWDN NO ERROR 03443000
  3446. MVC RDRCMDCT(4),CMDRESP+12 SAVE COUNT FOR READER 03444000
  3447. OI RDRCMD,RFWDCNT INDICATE COMMAND FOR READER 03445000
  3448. B SBKFWDE AND EXIT 03446000
  3449. SPACE 03447000
  3450. SBKFWDN EQU * 03448000
  3451. MSG 511,AXSLINK WRITE NO FILE ACTIVE MSG 03449000
  3452. SBKFWDE EQU * 03450000
  3453. MVC RDRCMDLK(8),CMDRESP+4 MOVE IN RESPONSE LINKID 03451000
  3454. L R14,CMDCMDSV RESTORE RETURN REG 03452000
  3455. BR R14 AND RETURN 03453000
  3456. EJECT 03454000
  3457. *---------------------------------------------------------------------* 03455000
  3458. * FLUSH COMMAND * 03456000
  3459. *---------------------------------------------------------------------* 03457000
  3460. *. 03458000
  3461. * RESPONSES - 03459000
  3462. * 03460000
  3463. * NONE 03461000
  3464. * 03462000
  3465. * ERROR MESSAGES - 03463000
  3466. * 03464000
  3467. * DMTSML511E NO FILE ACTIVE ON LINK 'LINKID' 03465000
  3468. * 03466000
  3469. *. 03467000
  3470. SPACE 1 03468000
  3471. SETFLUSH EQU * 03469000
  3472. ST R14,CMDCMDSV SAVE RETURN REG 03470000
  3473. MVC RDRCMDID(2),CMDRESP+12 SAVE FOR LATER COMPARE 03471000
  3474. LH R1,CMDRESP+12 GET SPOOLID 03472000
  3475. CVD R1,CMDCVD CONVERT TO DECIMAL 03473000
  3476. UNPK CMDFID,CMDCVD SPREAD THE DIGITS 03474000
  3477. OI CMDFID+3,X'F0' MAKE LAST PRINTABLE 03475000
  3478. TM MASTERSW,READER ARE WE SENDING A FILE? 03476000
  3479. BO SETFLSH1 YEP.. CONTINUE 03477000
  3480. MSG 581,CMDFID NO WRITE MSG 03478000
  3481. B SETFLSHE AND EXIT 03479000
  3482. SPACE 03480000
  3483. SETFLSH1 EQU * 03481000
  3484. CLI CMDRESP+3,FLUSHALL FLUSH ALL 03482000
  3485. BNE SETFLSH2 NO CONTINUE 03483000
  3486. OI RDRCMD,RFLSHALL SET RDRCMD BYTE 03484000
  3487. B SETFLSHE AND EXIT 03485000
  3488. SPACE 03486000
  3489. SETFLSH2 EQU * 03487000
  3490. CLI CMDRESP+3,FLUSHOLD FLUSH AND HOLD? 03488000
  3491. BNE SETFLSH3 NO MUST BE FLUSH COPY 03489000
  3492. OI RDRCMD,RFLSHOLD INDICATE CMD IN RDR CMD BYTE 03490000
  3493. B SETFLSHE AND EXIT 03491000
  3494. SPACE 03492000
  3495. SETFLSH3 EQU * 03493000
  3496. OI RDRCMD,RFLSHCPY INDICATE CMD IN RDR CMD BYTE 03494000
  3497. SETFLSHE EQU * 03495000
  3498. MVC RDRCMDLK(8),CMDRESP+4 MOVE IN RESPONSE LINKID 03496000
  3499. L R14,CMDCMDSV RESTORE RETURN REG 03497000
  3500. BR R14 AND RETURN 03498000
  3501. EJECT 03499000
  3502. *---------------------------------------------------------------------* 03500000
  3503. * CMD COMMAND * 03501000
  3504. *---------------------------------------------------------------------* 03502000
  3505. *. 03503000
  3506. * RESPONSES - 03504000
  3507. * 03505000
  3508. * DMTSML530I COMMAND FORWARDED ON LINK 'LINKID' 03506000
  3509. * 03507000
  3510. * ERROR MESSAGES - 03508000
  3511. * 03509000
  3512. * NONE 03510000
  3513. * 03511000
  3514. *. 03512000
  3515. SPACE 1 03513000
  3516. DS 0H 03514000
  3517. SETCMD EQU * 03515000
  3518. ST R14,CMDCMDSV SAVE RETURN 03516000
  3519. LA R7,WTCT SET TCTR 03517000
  3520. SPACE 1 03518000
  3521. MVC WCTTCT1(2),=X'0050' SET TANK COUNT 03519000
  3522. OC CMDRESP+12(8),BLANK TO UPPR CASE 03520000
  3523. CLC CMDRESP+12(3),=C'LOG' LOGING REQUESTED? 03521000
  3524. BNE CMD2A NOPE 03522000
  3525. OI $LOGSW,LOGON SET LOGING REQUESTED 03523000
  3526. L R14,CMDCMDSV RESTORE RETURN 03524000
  3527. BR R14 AND RETURN 03525000
  3528. SPACE 1 03526000
  3529. CMD2A EQU * 03527000
  3530. CLC CMDRESP+12(5),=C'NOLOG' TURN OFF LOGING? 03528000
  3531. BE LOGCLOSE YES 03529000
  3532. CMD12 EQU * 03530000
  3533. TM SMLSYS,MASTER IN HOST MODE? 03531000
  3534. BO CMDNRET COMMANDS NOT ALLOWED 03532000
  3535. MSG 530,AXSLINK WRITE COMMAND FORD MSG 03533000
  3536. EJECT 03534000
  3537. SR R1,R1 CLEAR OUT R1 OF IC 03535000
  3538. IC R1,CMDRESP GET LENGTH OF RESPONSE 03536000
  3539. SH R1,=H'12' CORRECT FOR HEADER 03537000
  3540. LTR R1,R1 IS THE RESULT NEGATIVE? 03538000
  3541. BM CMD2 YES, ZERO LENGTH REPLY @VA03860 03539000
  3542. EX R1,MSGMVC AND MOVE INTO MSG BUFFER 03540000
  3543. CMD12A EQU * 03541000
  3544. LA R8,WCTTANK1 GET THE TANK ADDRESS 03542000
  3545. BAL R14,$PUT AND WRITE THE TANK 03543000
  3546. CMD2 EQU * 03544000
  3547. MVI WCTTDTA1,C' ' PREPARE FOR BUFFER CLEAR 03545000
  3548. MVC WCTTDTA1+1(119),WCTTDTA1 CLEAR OUT THE WTOR BUFFER 03546000
  3549. CMDNRET EQU * 03547000
  3550. L R14,CMDCMDSV RESTORE RETURN 03548000
  3551. BR R14 AND RETURN 03549000
  3552. SPACE 1 03550000
  3553. MSGMVC MVC WCTTDTA1(0),CMDRESP+12 TO BE EXECUTED BY ABOVE CODE 03551000
  3554. CMDCMDSV DS F RETURN SAVE 03552000
  3555. EJECT 03553000
  3556. *---------------------------------------------------------------------* 03554000
  3557. * * 03555000
  3558. * COMMAND DATA AREA * 03556000
  3559. * * 03557000
  3560. *---------------------------------------------------------------------* 03558000
  3561. SPACE 03559000
  3562. STRTCMD EQU X'80' START COMMAND 03560000
  3563. DRCMD EQU X'81' DRAIN COMMAND 03561000
  3564. FREECMD EQU X'82' FREE COMMAND 03562000
  3565. HOLDCMD EQU X'83' HOLD COMMAND 03563000
  3566. TRACECMD EQU X'84' TRACE COMMAND 03564000
  3567. BACKCMD EQU X'90' BACKSPAC COMMAND 03565000
  3568. FWDCMD EQU X'91' FORWARD SPACE COMMAND 03566000
  3569. FLUSHCMD EQU X'A0' FLUSH COMMAND 03567000
  3570. CMDCMD EQU X'B0' COMMAND COMMAND 03568000
  3571. MSGCMD EQU X'B1' MESSAGE COMMAND 03569000
  3572. SPACE 03570000
  3573. * COMMAND MODIFIERS 03571000
  3574. TRACEOFF EQU X'C0' TRACE OFF 03572000
  3575. TRACERR EQU X'80' ERROR TRACE ON 03573000
  3576. TRACEALL EQU X'00' TRACE ALL ON 03574000
  3577. BACKCNT EQU X'80' BACKSPAC COUNT 03575000
  3578. BACKFILE EQU X'00' BACKSPAC FILE 03576000
  3579. FLUSHCPY EQU X'00' FLUSH COPY 03577000
  3580. FLUSHALL EQU X'80' FLUSH ALL 03578000
  3581. FLUSHOLD EQU X'40' FLUSH HOLD 03579000
  3582. HOLDIMM EQU X'80' HOLD IMMEDIATE 03580000
  3583. STACLASS EQU X'80' START RESET CLASS 03581000
  3584. SPACE 03582000
  3585. CMDSETUP DC A(CMDTABLE) COMMAND TABLE ADDRESS 03583000
  3586. DC A(CMDINC) 03584000
  3587. DC A(CMDEND-CMDINC) LAST ENTRY 03585000
  3588. SPACE 1 03586000
  3589. CMDINC EQU 4 LENGTH OF COMMAND TABLE ENTRY 03587000
  3590. SPACE 03588000
  3591. CMDTABLE DC 0F'0' 03589000
  3592. DC AL1(STRTCMD),AL3(SETSTART) 03590000
  3593. DC AL1(DRCMD),AL3(SETDRAIN) 03591000
  3594. DC AL1(FREECMD),AL3(SETFREE) 03592000
  3595. DC AL1(HOLDCMD),AL3(SETHOLD) 03593000
  3596. DC AL1(TRACECMD),AL3(SETTRACE) 03594000
  3597. DC AL1(BACKCMD),AL3(SETBACK) 03595000
  3598. DC AL1(FWDCMD),AL3(SETFWD) 03596000
  3599. DC AL1(FLUSHCMD),AL3(SETFLUSH) 03597000
  3600. DC AL1(CMDCMD),AL3(SETCMD) 03598000
  3601. CMDEND EQU * 03599000
  3602. SPACE 03600000
  3603. CMDCVD DC D'0' CONVERT AREA 03601000
  3604. CMDFID DC CL4' ' COMMAND SPOOLID AREA 03602000
  3605. DC CL4' ' 03603000
  3606. EJECT 03604000
  3607. RDRCMD DC X'00' READER COMMAND BYTE 03605000
  3608. * BITS DEFINED IN RDRCMD 03606000
  3609. RBACKFIL EQU X'80' BACKSPACE FILE 03607000
  3610. RBACKCNT EQU X'40' BACKSPACE COUNT 03608000
  3611. RFWDCNT EQU X'20' FORWARD SPACE COUNT 03609000
  3612. RFLSHCPY EQU X'10' FLUSH COPY 03610000
  3613. RFLSHALL EQU X'08' FLUSH ALL COPIES 03611000
  3614. RFLSHOLD EQU X'04' FLUSH AND HOLD 03612000
  3615. RHLDIPGS EQU X'02' HOLD IN PROGRESS 03613000
  3616. SPACE 03614000
  3617. HOLD EQU X'80' SUB OPTION ON CLOSE INPUT REQ 03615000
  3618. ALL EQU X'40' SUB OPTION ON CLOSE INPUT REQ 03616000
  3619. MULTOPEN EQU X'80' SUB OPTION ON OPEN OUTPUT REQ 03617000
  3620. SPACE 03618000
  3621. RDRCMDCT DC F'0' FILE SPACE COUNT 03619000
  3622. RDRCMDID DC H'0' CMD INDICATED SPOOLID 03620000
  3623. RDRCMDLK DC CL8' ' CMD RESPONSE LINKID 03621000
  3624. HLDCMDLK DC CL8' ' CMD RESPONSE LINKID 03622000
  3625. EJECT 03623000
  3626. *. 03624000
  3627. * 03625000
  3628. * ENTRY NAME - 03626000
  3629. * 03627000
  3630. * MSGPROC 03628000
  3631. * 03629000
  3632. * FUNCTION - 03630000
  3633. * 03631000
  3634. * THIS ROUTINE IS ENTERED WHEN THE MSGECB IS POSTED BY 03632000
  3635. * THIS TASK'S ASYNCHRONOUS EXIT, INDICATING MSGS ARE IN 03633000
  3636. * THE MSG QUEUE FOR THIS TASK. THIS MESSAGES ARE 03634000
  3637. * UNSTACKED FROM THE MSG QUEUE BY REPEATED CALLS TO 03635000
  3638. * GMSGREQ AND QUEUED FOR TRANSMISSION. 03636000
  3639. * 03637000
  3640. * CALLS TO OTHER ROUTINES - 03638000
  3641. * 03639000
  3642. * DMTCOM - TO UNSTACK THE MESSAGE 03640000
  3643. * 03641000
  3644. * OPERATION - 03642000
  3645. * 03643000
  3646. * 1. DEQUEUE MESSAGES FROM MESSAGE STACK VIA CALL TO GMSGREQ. 03644000
  3647. * 03645000
  3648. * 2. IF MESSAGE DEQUEUED SEND THE RECORD VIA CALL TO $PUT 03646000
  3649. * 03647000
  3650. * 3. EXIT TO COMMUTATOR. 03648000
  3651. * 03649000
  3652. * RESPONSES - 03650000
  3653. * 03651000
  3654. * NONE 03652000
  3655. * 03653000
  3656. * ERROR MESSAGES - 03654000
  3657. * 03655000
  3658. * NONE 03656000
  3659. * 03657000
  3660. *. 03658000
  3661. SPACE 3 03659000
  3662. MSGPROC EQU * 03660000
  3663. LA R7,WTCT ANOTHER CONSOLE USER 03661000
  3664. MVI $MSGCOM+1,CLOSE CLOSE THE GATE 03662000
  3665. TM WCTSTAT,TCTREL IS THE INTERLOCK ON? 03663000
  3666. BO MSGPROC2 YES..ALREADY PACKED..CONTINUE 03664000
  3667. MSGPROC1 EQU * 03665000
  3668. LA R1,WCTTCT1 USE THIS FOR A BUFFER 03666000
  3669. L R2,SMLLINK GET LINK TABLE ADDR 03667000
  3670. L R15,TCOM GET COMMON ROUTINES LIST 03668000
  3671. L R15,GMSGREQ INDICATE WE WANT A MSG 03669000
  3672. BALR R14,R15 GO GET ONE 03670000
  3673. LTR R15,R15 ANY AVAILABLE? 03671000
  3674. BNZ MSGPREOF SEND PSUEDO EOF @VA03480 03672000
  3675. IC R15,WCTTCT1 GET THE LENGTH OF MSG 03673000
  3676. SH R15,=H'8' SUBTRACT OUT LOCID @VA03279 03674000
  3677. MVC WCTTDTA1(120),WCTTDTA1+8 AND ADJUST MESSAGE @VA03279 03675000
  3678. CLC WCTTDTA1+6(3),SGNMSG IS THIS SIGN ON @VA06383 03676000
  3679. BNE MSGPROC3 SKIP OPENING READER @VA07621 03677000
  3680. OI $RCOMM1+1,OPEN OPEN READER @VA06383 03678000
  3681. MSGPROC3 EQU * NO OPEN READER YET @VA07621 03679000
  3682. STCM R15,B'0011',WCTTCT1 AND REPLACE IN THE TANKCNT 03680000
  3683. EJECT 03681000
  3684. MSGPROC2 EQU * 03682000
  3685. LA R8,WCTTANK1 LOAD THIS TANK ADDRESS 03683000
  3686. BAL R14,$PUT AND WRITE THE BUFFER 03684000
  3687. MVI WCTTDTA1,X'40' GET READY FOR CLEAR 03685000
  3688. MVC WCTTDTA1+1(119),WCTTDTA1 AND CLEAR 03686000
  3689. B MSGPROC1 AND GO GET ANOTHER 03687000
  3690. SPACE 1 03688000
  3691. MSGPREOF EQU * @VA03480 03689000
  3692. TM SMLSYS,MASTER HOST MODE? @VA03480 03690000
  3693. BNO $MSGCOM+4 NO CONTINUE @VA03480 03691000
  3694. L R8,OBUFPTR GET ADDR OF ACTIVE BUFFER @VA03863 03692000
  3695. C R8,=F'0' IS THERE ONE? @VA03863 03693000
  3696. BE $MSGCOM+4 NO, JUST RETURN @VA03863 03694000
  3697. MVC WCTTCT1(2),=H'0' SET EOF RECORD @VA03480 03695000
  3698. LA R8,WCTTANK1 GET TANK ADDRESS @VA03480 03696000
  3699. BAL R14,$PUT SEND THE RECORD @VA03480 03697000
  3700. B $MSGCOM+4 AND RETURN @VA03480 03698000
  3701. SGNMSG DC C'905' SIGNON MSG NUMBER @VA06383 03699000
  3702. EJECT 03700000
  3703. *. 03701000
  3704. * 03702000
  3705. * ENTRY NAME - 03703000
  3706. * 03704000
  3707. * MSG 03705000
  3708. * 03706000
  3709. * FUNCTION - 03707000
  3710. * 03708000
  3711. * THIS ROUTINE PREPARES AND SENDS REQUESTS TO THE 03709000
  3712. * SPECIALIZED TASK REX, IN ORDER TO WRITE MESSAGES 03710000
  3713. * ON THE OPERATOR'S CONSOLE. 03711000
  3714. * 03712000
  3715. * CALLS TO OTHER ROUTINES - 03713000
  3716. * 03714000
  3717. * DMTREX - TO EXECUTE THE MSG WRITE 03715000
  3718. * 03716000
  3719. * OPERATION - 03717000
  3720. * 03718000
  3721. * 1. MOVE VARIABLE PART OF MSG TO GIVE REQUEST BUFFER 03719000
  3722. * 03720000
  3723. * 2. INITIATE GIVE REQUEST TO DMTREX WITH MSG BUFFER. 03721000
  3724. * 03722000
  3725. * 3. WAIT FOR COMPLETION 03723000
  3726. * 03724000
  3727. * 4. RETURN TO CALLER 03725000
  3728. * 03726000
  3729. * ENTRY CONDITIONS: 03727000
  3730. * 03728000
  3731. * IN REG. 14 THE RETURN ADDRESS 03729000
  3732. * IN REG. 15 THE ROUTING CODE 03730000
  3733. * IN REG. 1 THE POINTER TO THE VARIABLE PORTION OF 03731000
  3734. * THE MESSAGE STRING 03732000
  3735. * IN REG. 0 THE LENGTH OF THE VARIABLE PORTION OF THE MSG 03733000
  3736. * 03734000
  3737. * EXIT CONDITIONS: 03735000
  3738. * 03736000
  3739. * NONE 03737000
  3740. * 03738000
  3741. * NOTE: 03739000
  3742. * NONE 03740000
  3743. * 03741000
  3744. * RESPONSES - 03742000
  3745. * 03743000
  3746. * NONE 03744000
  3747. * 03745000
  3748. * ERROR MESSAGES - 03746000
  3749. * 03747000
  3750. * NONE 03748000
  3751. * 03749000
  3752. *. 03750000
  3753. EJECT 03751000
  3754. MSG DC 0H'0' 03752000
  3755. STM R14,R2,MSGSAVE SAVE REGISTERS 03753000
  3756. LR R2,R0 MOVE R0 INTO WORK REG 03754000
  3757. BCTR R2,0 REDUCE BY ONE FOR MVC 03755000
  3758. EX R2,MSGMVC1 AND MOVE TO MSG REQ BUFFER 03756000
  3759. AH R2,=H'24' UP FOR HEADER 03757000
  3760. STC R2,MSGBLK AND STORE IN MSG REQ BUFFER 03758000
  3761. CLI MSGLINK,X'00' NEED ROUTING? 03759000
  3762. BNE MSG1 NO CONTINUE 03760000
  3763. MVC MSGLINK(8),AXSLINK MOVE IN OUR LINKID 03761000
  3764. MSG1 EQU * 03762000
  3765. LA R1,MSGREQ GET READY FOR GIVE 03763000
  3766. XC MSGREQ(4),MSGREQ CLEAR OUT SYNCH LOCK 03764000
  3767. L R15,GIVEREQ SYSTEM GIVE REQUEST EXECUTATOR 03765000
  3768. BALR R14,R15 GO GIVE THE BUFFER TO REX 03766000
  3769. L R15,WAITREQ WAIT FOR THE COMPLETION OF 03767000
  3770. BALR R14,R15 CONSOLE OPERATION 03768000
  3771. MVI MSGLINK,X'00' SHOW NO RESPONSE 03769000
  3772. MVI MSGBLK+2,X'00' INDICATE NO ROUTING 03770000
  3773. LM R14,R2,MSGSAVE RESTORE REGS 03771000
  3774. BR R14 AND RETURN 03772000
  3775. SPACE 03773000
  3776. MSGMVC1 MVC MSGBUF(0),0(R1) TO BE EXECUTED FROM ABOVE 03774000
  3777. SPACE 03775000
  3778. DS 0F 03776000
  3779. MSGREQ DC F'0' SYNCH LOCK 03777000
  3780. DC CL4'REX ' TASK NAME 03778000
  3781. DC A(MSGBLK) REQUEST BUFFER 03779000
  3782. DC A(0) NO RESPONSE 03780000
  3783. SPACE 1 03781000
  3784. MSGBLK DC AL1(0),AL1(2),AL1(0),AL1(0) LENGTH,FUNCTION,ROUTE,SEV 03782000
  3785. MSGLINK DC 8X'00' LINKID 03783000
  3786. MSGVMID DC CL8' ' VIRTUAL MACHINE ID 03784000
  3787. DC CL3'SML',CL1' ' MODULE ID PLUS ACTION CODE 03785000
  3788. MSGBUF DC CL120' ' MSG BUFFER 03786000
  3789. SPACE 03787000
  3790. MSGSAVE DC 5F'0' SAVE AREA 03788000
  3791. EJECT 03789000
  3792. *. 03790000
  3793. * 03791000
  3794. * ENTRY NAME - 03792000
  3795. * 03793000
  3796. * PARMGET 03794000
  3797. * 03795000
  3798. * FUNCTION - 03796000
  3799. * 03797000
  3800. * LINE SCANNING SUBROUTINE 03798000
  3801. * 03799000
  3802. * CALLS TO OTHER ROUTINES - 03800000
  3803. * 03801000
  3804. * NONE 03802000
  3805. * 03803000
  3806. * OPERATION - 03804000
  3807. * 03805000
  3808. * 1. TEST FOR DELIMETER CHARACTER 03806000
  3809. * 03807000
  3810. * 2. WHEN FOUND OR END OF STRING FOUND UPDATE R4 03808000
  3811. * 03809000
  3812. * 3. AND RETURN 03810000
  3813. * 03811000
  3814. * ENTRY - 03812000
  3815. * REG.3 = ADDRESS OF START OF STRING 03813000
  3816. * REG.5 = ADDRESS OF END OF STRING 03814000
  3817. * 03815000
  3818. * EXIT - 03816000
  3819. * REG.3 = FIRST NONDELIMETER CHARACTER SCANNED; 03817000
  3820. * IF NONE FOUND, END OF STRING 03818000
  3821. * REG.4 = UNMODIFIED IF NO NONDELIMETER CHAR SCANNED; 03819000
  3822. * OTHERWISE, ADDRESS OF FIRST DELIMETER CHAR 03820000
  3823. * AFTER FIRST NONDELIMETER CHAR SCANNED; 03821000
  3824. * IF NONE, END OF STRING. 03822000
  3825. * REG.5 = UNMODIFIED 03823000
  3826. * 03824000
  3827. * A DELIMETER CHAR IS ANY CHARACTER OF THE FORM B'XX000000' 03825000
  3828. * 03826000
  3829. * RESPONSES - 03827000
  3830. * 03828000
  3831. * NONE 03829000
  3832. * 03830000
  3833. * ERROR MESSAGES - 03831000
  3834. * 03832000
  3835. * NONE 03833000
  3836. * 03834000
  3837. *. 03835000
  3838. EJECT 03836000
  3839. PARMGET DC 0H'0' 03837000
  3840. LA R5,0(R5) CLEAR HIGH ORDER BYTE JUST IN CASE 03838000
  3841. BCTR R3,0 BUMP START OF STRING PTR BACK FOR C 03839000
  3842. PARMFIND EQU * 03840000
  3843. LA R3,1(R3) LOOK AT THE NEXT CHARACTER 03841000
  3844. CLR R3,R5 HAVE WE HIT THE END OF THE STRING? 03842000
  3845. BCR 11,R14 (BNL) YEP - LOOK NO MORE 03843000
  3846. TM 0(R3),X'3F' IS THIS CHARACTER A DELIMETER? 03844000
  3847. BZ PARMFIND YEP- KEEP LOOKING FOR A NONDELIMETER 03845000
  3848. LR R4,R3 SET UP FOR NEXT PHASE OF SCAN 03846000
  3849. PARMSCAN EQU * 03847000
  3850. LA R4,1(R4) LOOK AT THE NEXT CHARACTER 03848000
  3851. CLR R4,R5 ARE WE AT THE END OF THE STRING YET? 03849000
  3852. BCR 11,R14 (BNL) RETURN IMMEDIATELY IF SO 03850000
  3853. TM 0(R4),X'3F' IS THIS CHARACTER A DELIMETER? 03851000
  3854. BNZ PARMSCAN KEEP SCANNING FOR A DELIMETER IF NOT 03852000
  3855. BR R14 OTHERWISE ALL DONE - RETURN 03853000
  3856. EJECT 03854000
  3857. *---------------------------------------------------------------------* 03855000
  3858. * * 03856000
  3859. * FILE ACCESS INTERFACE * 03857000
  3860. * * 03858000
  3861. *---------------------------------------------------------------------* 03859000
  3862. SPACE 1 03860000
  3863. * 03861000
  3864. * ON ENTRY: R1 --> DEVICE REQUEST BLOCK 03862000
  3865. * R0 = AXS REQUEST CODE 03863000
  3866. * 03864000
  3867. * ON EXIT: 03865000
  3868. * R15 = AXS RETURN CODE 03866000
  3869. * 03867000
  3870. AXS DS 0H 03868000
  3871. ST R14,AXSAVE SAVE RETURN REGISTER 03869000
  3872. STC R0,17(R1) SET REQUESTED FUNCTION 03870000
  3873. XC 0(4,R1),0(R1) CLEAR REQUEST SYNCH LOCK 03871000
  3874. L R15,GIVEREQ GIVE REQUEST ADDRESS 03872000
  3875. BALR R14,R15 GIVE THE REQUEST TO SUPERVISOR 03873000
  3876. L R15,WAITREQ WAIT REQUEST 03874000
  3877. BALR R14,R15 WAIT FOR OPERATION TO COMPLETE 03875000
  3878. XC 0(4,R1),0(R1) CLEAR OUT SYNC LOCK 03876000
  3879. L R14,AXSAVE RESTORE RETURN ADDRESS 03877000
  3880. BR R14 RETURN TO CALLER 03878000
  3881. SPACE 1 03879000
  3882. AXSAVE DS F AXS SAVE AREA 03880000
  3883. EJECT 03881000
  3884. *. 03882000
  3885. * 03883000
  3886. * ENTRY NAME - 03884000
  3887. * 03885000
  3888. * $TPPUT 03886000
  3889. * 03887000
  3890. * FUNCTION - 03888000
  3891. * 03889000
  3892. * THIS ROUTINE TAKES A LINE AND PACKS IT INTO A TELE- 03890000
  3893. * PROCESSING BUFFER. WHEN A BUFFER IS FILLED IT IS QUEUED 03891000
  3894. * ONTO $OUTBUF FOR PROCESSING BY COMSUP. 03892000
  3895. * 03893000
  3896. * CALLS TO OTHER ROUTINES - 03894000
  3897. * 03895000
  3898. * NONE 03896000
  3899. * 03897000
  3900. * OPERATION - 03898000
  3901. * 03899000
  3902. * 1. FIND THE CURRENT TP BUFFER FOR THE CALLING 03900000
  3903. * PROCESSOR. 03901000
  3904. * 03902000
  3905. * 2. COMPRESS THE RECORD IN THE SUPPLIED TANK. 03903000
  3906. * 03904000
  3907. * 3. TRY TO FIT IN THE EXISTING TP BUFFER. 03905000
  3908. * 03906000
  3909. * 4. IF RECORD WILL NOT FIT, QUEUE CURRENT 03907000
  3910. * RECORD FOR TRANSMISSION, OBTAIN A NEW BUFFER 03908000
  3911. * AND ADD RECORD TO IT. 03909000
  3912. * 03910000
  3913. * 5. FOR OPERATOR MESSAGES, PROCESS ONLY ONE RECORD 03911000
  3914. * PER BUFFER. 03912000
  3915. * 03913000
  3916. * 6. RETURN TO CALLER 03914000
  3917. * 03915000
  3918. * RESPONSES - 03916000
  3919. * 03917000
  3920. * NONE 03918000
  3921. * 03919000
  3922. * ERROR MESSAGES - 03920000
  3923. * 03921000
  3924. * NONE 03922000
  3925. * 03923000
  3926. *. 03924000
  3927. EJECT 03925000
  3928. * 03926000
  3929. * $PUT ROUTINE INTERFACE WITH $TPPUT 03927000
  3930. * 03928000
  3931. * R8 POINTS TO TANK, R14 POINTS TO RETURN, TCTR POINTS TO TCT 03929000
  3932. * 03930000
  3933. USING TANKDSEC,R8 03931000
  3934. USING TCTDSECT,TCTR 03932000
  3935. SPACE 1 03933000
  3936. $PUT DS 0H 03934000
  3937. ST R14,TCTSAV1 SAVE RETURN ADDRESS 03935000
  3938. ST R8,TCTCCW SAVE TANK ADDRESS 03936000
  3939. OXLOOP EQU * 03937000
  3940. TM TCTSTAT,TCTREL IS INTERLOCK RELEASE ON 03938000
  3941. BZ OXPUT IF NOT DO NORMAL $TPPUT 03939000
  3942. LA R8,WCTTANK1 PICK UP CONSOLE TANK ADDRESS 03940000
  3943. BAL R14,$TPREPUT ATTEMPT TO SEND 03941000
  3944. L R14,TCTSAV1 PICK UP RETURN ADDR 03942000
  3945. BNE OXFINTST IF TANK OK TEST FOR MORE WORK 03943000
  3946. MVI CMDINPGS,X'00' RESET FLAG @VM01164 03944000
  3947. MVI $MSGCOM+1,CLOSE CLOSE THIS PROCESSOR @VA03480 03945000
  3948. B $START RETURN TO TOP OF COMMUTATOR @VA03480 03946000
  3949. SPACE 1 03947000
  3950. OXFINTST EQU * 03948000
  3951. NI WCTSTAT,255-TCTREL RESET INTERLOCK RELEASE 03949000
  3952. BR R14 AND RETURN 03950000
  3953. SPACE 1 03951000
  3954. OXPUT EQU * 03952000
  3955. BAL R14,$TPPUT SUBMIT TANK FOR TRANSMISSION 03953000
  3956. L R14,TCTSAV1 RESTORE RETURN POINTER 03954000
  3957. BNER R14 IF TANK WENT OK THEN RETURN 03955000
  3958. TM TCTSTAT,TCT1052 IF NOT TEST FOR CONSOLE 03956000
  3959. BZ OXWAIT IF NOT CONSOLE WAIT 03957000
  3960. OI WCTSTAT,TCTREL SET INTERLOCK RELEASE INDICATOR 03958000
  3961. MVI CMDINPGS,X'00' RESET FLAG @VM01164 03959000
  3962. MVI $MSGCOM+1,CLOSE CLOSE THIS PROCESSOR @VA03480 03960000
  3963. B $START RETURN TO TOP OF COMMUTATOR @VA03480 03961000
  3964. SPACE 1 03962000
  3965. OXWAIT EQU * 03963000
  3966. DS 0H WAIT TO RESUBMIT TANK 03964000
  3967. MVC TCTENTY(2),OBUFNOW SET UP FOR REENTRY 03965000
  3968. L R6,TCTCOM GET COMMUTATOR ENTRY 03966000
  3969. MVI 1(R6),CLOSE AND CLOSE GATE 03967000
  3970. MVI TCTWFB,X'FF' SET READER-WAITING-FOR-BUFFER 03968000
  3971. B TCTRTN AND RETURN 03969000
  3972. EJECT 03970000
  3973. BUFNOW EQU * 03971000
  3974. MVI TCTWFB,X'00' RESET WAIT SWITCH 03972000
  3975. L R6,TCTCOM GET COMMUTATOR ENTRY 03973000
  3976. MVI 1(R6),CLOSE AND CLOSE GATE 03974000
  3977. L R8,TCTCCW PICK UP TANK ADDRESS 03975000
  3978. BAL R14,$TPREPUT RESUBMIT TANK FOR TRANSMISSION 03976000
  3979. L R14,TCTSAV1 PICK UP USER RETURN POINT 03977000
  3980. BE OXWAIT WAIT 03978000
  3981. BR R14 RETURN 03979000
  3982. DROP R8 03980000
  3983. SPACE 1 03981000
  3984. OBUFNOW DC S(BUFNOW) RENTRY POINT 03982000
  3985. EJECT 03983000
  3986. *---------------------------------------------------------------------* 03984000
  3987. * * 03985000
  3988. * ENTRY - $TPPUT * 03986000
  3989. * REGISTERS - R8=RECORD TANK 2(R8)=RCB,3(R8)=SRCB * 03987000
  3990. * R14=RETURN ADDR ,CC=0 - RECORD NOT TAKEN * 03988000
  3991. * CC.NE.0-RECORD ACCEPTED * 03989000
  3992. * R15 IS CONSIDERED VOLITILE * 03990000
  3993. * * 03991000
  3994. * * 03992000
  3995. *---------------------------------------------------------------------* 03993000
  3996. SPACE 1 03994000
  3997. $TPPUT DS 0H 03995000
  3998. ST R14,OSAVR14 SAVE RETURN 03996000
  3999. ST R5,OSAVR5 SAVE REGISTERS 03997000
  4000. ST R6,OSAVR6 SAVE REGISTERS 03998000
  4001. ST R8,OINADD SAVE INPUT TANK ADDR 03999000
  4002. L R15,=F'1' GET COUNTER 04000000
  4003. L R5,OINADD COMPRESSION WORK AREA 04001000
  4004. A R5,=A(TANKRCB-TANKDSEC) GET RCB ADDR 04002000
  4005. USING TANKDSEC,R8 * 04003000
  4006. LH R6,TANKCNT TANK DATA COUNT 04004000
  4007. CH R6,=H'0' IS THIS A NULL RECORD 04005000
  4008. BE OEOINCHK BR IF YES TO CHECK EOF @VA03480 04006000
  4009. AR R6,R8 INCLUDE TANK ADDR 04007000
  4010. ST R6,OINEND TO SAFE STORAGE 04008000
  4011. CLI OTS(R8),2 IS THIS A TEXT CARD 04009000
  4012. BNE OGOA BR IF NO 04010000
  4013. SPACE 1 04011000
  4014. * SKIP ATTEMPTING TO COMPRESS A TEXT CARD 04012000
  4015. LH R6,TANKCNT INPUT COUNT 04013000
  4016. LTR R4,R8 INPUT ADDR 04014000
  4017. AR R8,R6 END OF RECORD 04015000
  4018. B OSQUEEZE GO PROCESS RECORD 04016000
  4019. SPACE 1 04017000
  4020. OGOA DS 0H 04018000
  4021. MVI OTS(R6),0 SETUP ENDING CHARACTER 04019000
  4022. CLI OTS-1(R6),0 DOES ENDING MATCH LAST DATA CHAR 04020000
  4023. BNE OGOB BR IF NOT 04021000
  4024. MVI OTS(R6),255 YES...USE ANOTHER 04022000
  4025. OGOB EQU * 04023000
  4026. MVC OTS+1(3,R6),OTS(R6) PROPAGATE FOR DUPLICATION 04024000
  4027. OGO DS 0H 04025000
  4028. LA R14,OGO1 LOAD FOR SPEED 04026000
  4029. LA R13,OSQUEEZE LOAD FOR SPEED 04027000
  4030. SR R6,R6 INITIAL COUNTER FOR MVC 04028000
  4031. LTR R4,R8 INPUT AREA TO R4 04029000
  4032. OGO1 DS 0H 04030000
  4033. CLC OTS(3,R8),OTS+1(R8) CHECK FOR COMPRESSABILITY 04031000
  4034. BCR 8,R13 BR IF COMPRESSABLE (TO OSQUEEZE) 04032000
  4035. AR R8,R15 UP DATA PTR 04033000
  4036. AR R6,R15 AND CHAR COUNT 04034000
  4037. BR R14 CONTINUE (TO OGO1) 04035000
  4038. EJECT 04036000
  4039. *---------------------------------------------------------------------* 04037000
  4040. * * 04038000
  4041. * OSQUEEZE - IDENTICAL CHARACTERS FOUND * 04039000
  4042. * * 04040000
  4043. *---------------------------------------------------------------------* 04041000
  4044. SPACE 2 04042000
  4045. OSQUEEZE DS 0H * 04043000
  4046. CH R6,=H'0' IS A CHARACTER STRING ACTIVE 04044000
  4047. BE OCOMPTST BR IF NO TO COMPRESS 04045000
  4048. CH R6,=H'63' DOES STRING EXCEED SCB 04046000
  4049. BH OBIGMOVE BR IF YES 04047000
  4050. EX R6,OMVC1A MOVE TO TEMP BUFF THEN TO TANK @VA04175 04048000
  4051. EX R6,OMVC1B -TO AVOID CHARACTER PROPAGATION @VA04175 04049000
  4052. STC R6,2(R5) SET SCB COUNT 04050000
  4053. OI 2(R5),X'C0' SET SCB ID BITS 04051000
  4054. AR R5,R6 FIX OUTPUT POINTER 04052000
  4055. AR R5,R15 COUNT SCB 04053000
  4056. OCOMPTST DS 0H 04054000
  4057. C R8,OINEND TEST FOR EOI 04055000
  4058. BNL OEOINPUT BR IF YES 04056000
  4059. OCOMP DS 0H 04057000
  4060. LA R14,OCOMP1 FOR LOOP SPEED 04058000
  4061. LA R13,OCMPSTOP FOR LOOP SPEED 04059000
  4062. LH R6,=Y(4) START COMPRESSION COUNTER 04060000
  4063. OCOMP1 DS 0H CONTINUE COMPRESSION TESTING 04061000
  4064. CLC OTS+3(1,R8),OTS+4(R8) DOES MATCH CONTINUE 04062000
  4065. BCR 7,R13 BR IF NO (TO CMPSTOP) 04063000
  4066. AR R6,R15 ANOTHER MATCH... COUNT IT 04064000
  4067. AR R8,R15 UP TO NEXT CHAR 04065000
  4068. BR R14 CONTINUE (TO OCOMP1) 04066000
  4069. SPACE 1 04067000
  4070. OMVC1A MVC OTEMP(*-*),OTS(R4) EXECUTED BY ABOVE CODE @VA04175 04068000
  4071. OMVC1B MVC 3(*-*,R5),OTEMP EXECUTED BY ABOVE CODE @VA04175 04069000
  4072. SPACE 1 04070000
  4073. OCMPSTOP DS 0H IDENTICAL STRING ENDED 04071000
  4074. CH R6,=H'31' DOES IT EXCEED SCB... 04072000
  4075. BH OBIGPROP BR IF YES 04073000
  4076. STH R6,$TEMP TO TEMPORARY STORAGE 04074000
  4077. OI $TEMP+1,X'80' SET SCB ALWAYS BIT 04075000
  4078. MVC 2(1,R5),$TEMP+1 SET SCB 04076000
  4079. CLI OTS+3(R8),C' ' ARE WE SQUEEZING BLANKS 04077000
  4080. BE OBLANK BR IF YES 04078000
  4081. MVC 3(1,R5),OTS+3(R8) SET DUPLICATION CHAR 04079000
  4082. OI 2(R5),X'20' SHOW NON-BLANK DUPLICATION 04080000
  4083. AR R5,R15 SKIP SAMPLE CHAR 04081000
  4084. OBLANK DS 0H 04082000
  4085. AR R5,R15 COUNT SCB 04083000
  4086. A R8,=A(4) UP TO NEXT 04084000
  4087. B OGO AND CONTINUE RECORD 04085000
  4088. EJECT 04086000
  4089. OBIGPROP DS 0H DUPLICATION COUNT EXCEEDS SCB 04087000
  4090. MVI 2(R5),X'9F' SHOW MAX SCB 04088000
  4091. CLI OTS+3(R8),C' ' IS THIS BLANKS 04089000
  4092. BE OBIGBLNK BR IF YES 04090000
  4093. MVC 3(1,R5),OTS+3(R8) SET SAMPLE CHAR 04091000
  4094. OI 2(R5),X'20' SHOW NON-BLANK 04092000
  4095. AR R5,R15 COUNT SAMPLE 04093000
  4096. OBIGBLNK DS 0H EXCESSIVE COUNT BLANKS 04094000
  4097. AR R5,R15 COUNT SCB 04095000
  4098. SH R6,=H'31' ADJUST COUNT 04096000
  4099. B OCMPSTOP AND TRY AGAIN 04097000
  4100. SPACE 1 04098000
  4101. OBIGMOVE DS 0H STRING COUNT EXCEEDS SCB MAXIMUM 04099000
  4102. MVC 3(63,R5),OTS(R4) MOVE MAX 04100000
  4103. MVI 2(R5),X'FF' SET MAX SCB 04101000
  4104. A R5,=F'64' ADD IN COUNT 04102000
  4105. A R4,=F'63' ADD IN COUNT 04103000
  4106. SH R6,=H'63' REDUCE COUNT 04104000
  4107. B OSQUEEZE AND TRY AGAIN 04105000
  4108. SPACE 1 04106000
  4109. OEOINCHK EQU * @VA03480 04107000
  4110. TM SMLSYS,MASTER HOST MODE? @VA03480 04108000
  4111. BNO OEOINPUT NO..CONTINUE @VA03480 04109000
  4112. CLC TANKRCB(1),WCTTRCB1 MESSAGES? @VA03480 04110000
  4113. BE OFLUSH JUST FLUSH THE BUFFER AS IS @VA03480 04111000
  4114. EJECT 04112000
  4115. *---------------------------------------------------------------------* 04113000
  4116. * * 04114000
  4117. * END OF INPUT RECORD - TERMINATE AND ADD TO BUFFER * 04115000
  4118. * * 04116000
  4119. *---------------------------------------------------------------------* 04117000
  4120. SPACE 1 04118000
  4121. OEOINPUT EQU * 04119000
  4122. MVI 2(R5),0 END-OF-RECORD SCB 04120000
  4123. AR R5,R15 COUNT IT 04121000
  4124. L R8,OINADD STARTING ADDR OF COMPRESSED REC 04122000
  4125. SR R5,R8 REDUCE TO ACTUAL COUNT 04123000
  4126. SH R5,=AL2(L'TANKCHN-2) COMPENSATE FOR FULL CHAIN WORD 04124000
  4127. STH R5,TANKCHN SAVE COUNT IN TANK FOR $TPREPUT 04125000
  4128. OREENT DS 0H RE-ENTRY POINT FROM $TPREPUT 04126000
  4129. L R6,OBUFPTR GET ADDR OF ACTIVE BUFFER 04127000
  4130. C R6,=F'0' END? 04128000
  4131. BE OGETBUF BR IF NO 04129000
  4132. OBUFOK DS 0H VALID BUFFER 04130000
  4133. CH R5,OBUFCNT WILL THIS RECORD FIT... 04131000
  4134. BH OBUFFULL BR IF NO 04132000
  4135. EX R5,OMVC2 MOVE RECORD 04133000
  4136. AR R6,R5 UPDATE CURRENT PTR 04134000
  4137. ST R6,OBUFPTR AND RESET 04135000
  4138. LH R6,OBUFCNT REMAINING COUNT 04136000
  4139. SR R6,R5 REDUCE BY THIS RECORD 04137000
  4140. STH R6,OBUFCNT AND RESET 04138000
  4141. CH R5,=H'3' WAS THIS A NULL RECORD 04139000
  4142. BE OFLUSH BR IF YES TO WRITE BUFFER 04140000
  4143. TM SMLSYS,MASTER HOST MODE? @VA03480 04141000
  4144. BO ORETOK YES..SKIP CHECK @VA03480 04142000
  4145. CLC TANKRCB(1),WCTTRCB1 IS THIS OPER CMD 04143000
  4146. BE OFLUSH BR IF YES TO SEND BUFFER 04144000
  4147. ORETOK DS 0H POSITIVE RETURN ENTRY 04145000
  4148. OI BUFSYNSW,OFLSW OPEN NORMAL GATE AND SET COND CODE 04146000
  4149. ORETURN DS 0H RETURN--COND. CODE ALREADY SET 04147000
  4150. L R8,OINADD RESTORE TANK ADDR 04148000
  4151. L R6,OSAVR6 RESTORE REG 04149000
  4152. L R5,OSAVR5 RESTORE REG 04150000
  4153. L R14,OSAVR14 GET RETURN 04151000
  4154. BR R14 AND DO IT 04152000
  4155. SPACE 1 04153000
  4156. OMVC2 MVC 0(0,R6),L'TANKCHN(R8) TO BE EXECUTED FROM ABOVE 04154000
  4157. EJECT 04155000
  4158. OGETBUF DS 0H 04156000
  4159. TM BUFSYNSW,$TPPNONE SHOULD WE STOP BUFFERING? 04157000
  4160. BO OGETBUF1 BUFFERING STOP @VA03306 04158000
  4161. CLC $BUFPOOL,=F'0' ARE WE EMPTY? 04159000
  4162. BE ORETURN BR IF NONE (NOTE COND. CODE SET) 04160000
  4163. L R6,$BUFPOOL GET FIRST BUFFER ADDR 04161000
  4164. CLC 0(4,R6),=F'0' ONLY ONE LEFT???? @VA03301 04162000
  4165. BE ORETURN YEP...BETTER NOT USE IT @VA03301 04163000
  4166. MVC $BUFPOOL(4),0(R6) REMOVE THIS ONE FROM CHAIN 04164000
  4167. ST R6,OACTBUF SET BUFFER ADDR 04165000
  4168. A R6,=A(BUFDATA-BUFDSECT) 04166000
  4169. ST R6,OBUFPTR SET CURRENT POINTER 04167000
  4170. L R14,TPBUFSIZ GET TP BUFFER SIZE 04168000
  4171. SH R14,=Y(BUFDATA+2-BUFSTART+2) ALLOW FOR HDR,ETB @VA03348 04169000
  4172. STH R14,OBUFCNT AND SAVE 04170000
  4173. B OBUFOK AND GO FIT RECORD 04171000
  4174. SPACE 1 04172000
  4175. OGETBUF1 EQU * @VA03306 04173000
  4176. SR R6,R6 SET CONDITION CODE FIRST @VA03306 04174000
  4177. B ORETURN AND RETURN @VA03306 04175000
  4178. EJECT 04176000
  4179. *---------------------------------------------------------------------* 04177000
  4180. * * 04178000
  4181. * BUFFER IS FULL--SEND IT * 04179000
  4182. * * 04180000
  4183. *---------------------------------------------------------------------* 04181000
  4184. SPACE 1 04182000
  4185. OFLUSH DS 0H ENTRY TO WRITE A PARTIAL BUFFER 04183000
  4186. NI BUFSYNSW,255-OFLSW SET FLUSH SWITCH 04184000
  4187. OBUFFULL DS 0H 04185000
  4188. L R6,OBUFPTR GET CURRENT BUFFER POINTER 04186000
  4189. L R13,OACTBUF FOR $EXTP 04187000
  4190. USING BUFDSECT,R13 GET TP BUFFER ADDRESSABILITY 04188000
  4191. MVI 0(R6),0 SET EOB 04189000
  4192. SR R6,R13 SUBTRACT SOB 04190000
  4193. SH R6,=Y(BUFSTART-BUFDSECT-1) MAKE COUNT ACTUAL 04191000
  4194. STH R6,BUFCOUNT SET COUNT 04192000
  4195. SR R6,R6 ZERO 04193000
  4196. ST R6,OBUFPTR AND SHOW NO BUFFER 04194000
  4197. SPACE 1 04195000
  4198. USING BUFDSECT,R13 BUFFER ADDR IS IN R13 04196000
  4199. LA R6,$OUTBUF QUEUE CONTROL WORD 04197000
  4200. OBUFLOP EQU * 04198000
  4201. CLC 0(4,R6),=F'0' IS IT THE LAST.QUEUE FOR TRANS 04199000
  4202. BE OBUFLOP1 YES 04200000
  4203. L R6,0(0,R6) GET THE NEXT ONE 04201000
  4204. B OBUFLOP AND COMPARE 04202000
  4205. SPACE 1 04203000
  4206. OBUFLOP1 EQU * 04204000
  4207. ST R13,0(0,R6) CHAIN THIS ONE TO IT 04205000
  4208. MVC 0(4,R13),=F'0' SET NEW FORWARD ZERO 04206000
  4209. SPACE 1 04207000
  4210. TM BUFSYNSW,OFLSW SHOULD WE FLUSH THE BUFFER? 04208000
  4211. BO OGETBUF NO 04209000
  4212. B ORETOK JUST RETURN IF FLUSH 04210000
  4213. DROP R13 04211000
  4214. EJECT 04212000
  4215. *---------------------------------------------------------------------* 04213000
  4216. * * 04214000
  4217. * RE-ENTRY POINT IF ORIGINAL $TPPUT NOT ACCEPTED * 04215000
  4218. * R8=ORIGINAL TANK , R14= RETURN * 04216000
  4219. * * 04217000
  4220. *---------------------------------------------------------------------* 04218000
  4221. SPACE 1 04219000
  4222. $TPREPUT DS 0H 04220000
  4223. ST R8,OINADD SET FOR RESTORE 04221000
  4224. ST R14,OSAVR14 RESET RETURN 04222000
  4225. ST R5,OSAVR5 SAVE REG 04223000
  4226. ST R6,OSAVR6 SAVE REG 04224000
  4227. LH R15,=H'1' CONSTANT 04225000
  4228. LH R5,TANKCHN COMPRESSED COUNT 04226000
  4229. B OREENT ENTER FLOW 04227000
  4230. DROP R8 04228000
  4231. EJECT 04229000
  4232. *---------------------------------------------------------------------* 04230000
  4233. * * 04231000
  4234. * $TPPUT STORAGE * 04232000
  4235. * * 04233000
  4236. *---------------------------------------------------------------------* 04234000
  4237. SPACE 1 04235000
  4238. OSAVR6 DC A(0) REG SAVE 04236000
  4239. OSAVR5 DC A(0) REG SAVE 04237000
  4240. OSAVR14 DC A(0) RETURN ADDR SAVE 04238000
  4241. OINADD DC A(0) INPUT TANK ADDR 04239000
  4242. OINEND DC A(0) LAST VALID DATA BYTE IN TANK 04240000
  4243. OACTBUF DC A(0) ACTIVE BUFFER ADDR 04241000
  4244. OBUFPTR DC A(0) CURRENT POINTER IN BUFFER 04242000
  4245. OBUFCNT DC H'0' REMAING SPACE COUNT IN BUFFER 04243000
  4246. OTEMP DS CL64 COMPRESSION WORK AREA @VA04175 04244000
  4247. OTS EQU 8 04245000
  4248. EJECT 04246000
  4249. *. 04247000
  4250. * 04248000
  4251. * ENTRY NAME - 04249000
  4252. * 04250000
  4253. * $TPGET 04251000
  4254. * 04252000
  4255. * FUNCTION - 04253000
  4256. * 04254000
  4257. * THIS ROUTINE DEBLOCKS RECEIVED TELECOMMUNICATIONS 04255000
  4258. * BUFFERS INTO TANKS AND QUEUES THE TANK ONTO THE 04256000
  4259. * APPROPRIATE PROCESSORS TCTTANK QUEUE. 04257000
  4260. * 04258000
  4261. * CALLS TO OTHER ROUTINES - 04259000
  4262. * 04260000
  4263. * NONE 04261000
  4264. * 04262000
  4265. * OPERATION - 04263000
  4266. * 04264000
  4267. * 1. GET A BUFFER FROM $INPUF QUEUE AND LOOK FOR 04265000
  4268. * A MATCHING TCT TO ATTACH THE BUFFER TO BY COMPARING 04266000
  4269. * RCBS. 04267000
  4270. * 04268000
  4271. * 2. GET A TANK TO DECOMPRESS A BUFFER INTO. 04269000
  4272. * 04270000
  4273. * 3. DECOMPRESS THE BUFFER INTO THE TANK 04271000
  4274. * 04272000
  4275. * 4. CHAIN THE TANK TO THE TCT TANK QUEUE FOR THE 04273000
  4276. * PROCESSOR BEING SERVICED AND OPEN THE COMMUTATOR 04274000
  4277. * GATE FOR THAT PROCESSOR. 04275000
  4278. * 04276000
  4279. * RESPONSES - 04277000
  4280. * 04278000
  4281. * NONE 04279000
  4282. * 04280000
  4283. * ERROR MESSAGES - 04281000
  4284. * 04282000
  4285. * NONE 04283000
  4286. * 04284000
  4287. *. 04285000
  4288. SPACE 3 04286000
  4289. * 04287000
  4290. * 04288000
  4291. $TPGET DS 0H ENTERED FROM COMUTATOR 04289000
  4292. MVI $TPGETCM+1,CLOSE CLOSE COMMUTATOR 04290000
  4293. GDQ EQU * 04291000
  4294. TM BUFSYNSW,GDQBUFS STOP ALL BUFFERING? 04292000
  4295. BO GWAIT YES 04293000
  4296. GDQBUFS1 DS 0H BEGIN DEQUEUING CYCLE 04294000
  4297. CLC $INBUF,=F'0' ARE WE EMPTY? 04295000
  4298. BE GCONTTCT YES 04296000
  4299. L R6,$INBUF GET FIRST BUFFER ADDR 04297000
  4300. MVC $INBUF(4),0(R6) REMOVE THIS ONE FROM CHAIN 04298000
  4301. SPACE 1 04299000
  4302. GDQBUFS2 EQU * 04300000
  4303. LA R8,BUFDATA-BUFDSECT DATA DISPLACEMENT 04301000
  4304. AR R8,R6 R8=ACTUAL DATA ADDRESS 04302000
  4305. BAL R14,GASSIGN GO ATTACH BUFFER TO TCT 04303000
  4306. B GDQBUFS1 AND CHECK AGAIN 04304000
  4307. SPACE 1 04305000
  4308. GCONTTCT DS 0H SERVICE TCT'S 04306000
  4309. OI BUFSYNSW,GDQBUFS CLOSE DEQUE SW 04307000
  4310. SPACE 1 04308000
  4311. LA R13,$TCT1 BEGINNING OF TCT'S 04309000
  4312. USING TCTDSECT,R13 ** 04310000
  4313. GTEST DS 0H * 04311000
  4314. TM TCTSTAT,TCTACT IS ACTION REQUESTED 04312000
  4315. BO GSERVICE BR IF YES 04313000
  4316. GNEXTTCT DS 0H 04314000
  4317. ICM R13,B'1111',TCTNEXT TO NEXT TCT AND CHECK FOR END 04315000
  4318. BNZ GTEST BR IF NO 04316000
  4319. * 04317000
  4320. * ALL TCT'S HAVE BEEN SERVICED... 04318000
  4321. * 04319000
  4322. B GDQ GO TEST FOR MORE BUFFERS 04320000
  4323. EJECT 04321000
  4324. * 04322000
  4325. * SERVICE TCT WITH ACTION BIT ON 04323000
  4326. * 04324000
  4327. GSERVICE DS 0H 04325000
  4328. CLI TCTBUFCT,0 ARE ANY BUFFERS AVAILABLE 04326000
  4329. BNE GTTANK BR IF YES 04327000
  4330. GNOACT EQU * 04328000
  4331. NI TCTSTAT,255-TCTACT NO... TURN OFF ACTION 04329000
  4332. B GNEXTTCT AND CONTINUE 04330000
  4333. SPACE 1 04331000
  4334. GTTANK DS 0H A BUFFER IS PRESENT 04332000
  4335. CLC TCTTNKCT,TCTTNKLM ARE SUFFICIENT TANKS QUEUED 04333000
  4336. BNL GNOACT BR IF YES 04334000
  4337. SPACE 1 04335000
  4338. * A DECOMPRESSION IS REQUIRED 04336000
  4339. CLC $TANKPOL,=F'0' ARE WE EMPTY 04337000
  4340. BE GWAIT 04338000
  4341. L R5,$TANKPOL GET FIRST BUFFER ADDR 04339000
  4342. MVC $TANKPOL(4),0(R5) REMOVE THIS ONE FROM CHAIN 04340000
  4343. USING TANKDSEC,R5 * 04341000
  4344. MVI TANKDATA,C' ' SET TO CLEAR TANK @VA06381 04342000
  4345. MVC TANKDATA+1(199),TANKDATA CLEAR TANK @VA06381 04343000
  4346. L R8,TCTBUFER CURRENT BUFFER 04344000
  4347. LH R15,(BUFCOUNT-BUFDSECT)(0,R8) GET COUNT 04345000
  4348. AR R8,R15 ADD TO CURRENT COUNT 04346000
  4349. ST R5,GTANK SAVE TANK ADDR. 04347000
  4350. MVC TANKRCB(2),0(R8) MOVE RCB AND SRCB 04348000
  4351. LH R15,=H'1' CONSTANT FOR SPEED 04349000
  4352. CLI 0(R8),X'F0' IS IT A GENERAL CONTROL RCB? @VA03347 04350000
  4353. BNE GDECOMP NO, GO & DECOMPRESS THE BUFFER @VA03347 04351000
  4354. MVC TANKDATA(78),2(R8) YES, MOVE 78 BYTES INTO TANK @VA03347 04352000
  4355. LA R8,78(R8) UPDATE POINTER IN BUFFER @VA03347 04353000
  4356. LA R5,78(R5) UPDATE POINTER IN TANK @VA03347 04354000
  4357. MVI 2(R8),X'00' PUT ENDING SCB INTO BUFFER @VA03347 04355000
  4358. MVI 3(R8),X'00' PUT ENDING RCB INTO BUFFER @VA03347 04356000
  4359. MVI 4(R8),XETB PUT ETB INTO BUFFER @VA03347 04357000
  4360. B GENDREC GO TO PROCESS END OF RECORD @VA03347 04358000
  4361. EJECT 04359000
  4362. *---------------------------------------------------------------------* 04360000
  4363. * * 04361000
  4364. * DECOMPRESS A TP BUFFER * 04362000
  4365. * * 04363000
  4366. *---------------------------------------------------------------------* 04364000
  4367. SPACE 1 04365000
  4368. GDECOMP DS 0H PROCESS AN SCB 04366000
  4369. MVC GSCB(1),2(R8) SET SCB 04367000
  4370. NI GSCB,X'7F' TURN OFF HIGH-BIT 04368000
  4371. BZ GENDREC END-OF-RECORD 04369000
  4372. MVC GSCBCK(1),GSCB GET SCB TO TEST @VA06382 04370000
  4373. TM GSCBCK,X'40' IS IT CHAR STRING @VA06382 04371000
  4374. BO SCBCK YES CHANGE STRIP COUNT @VA06382 04372000
  4375. NI GSCBCK,X'1F' STRIP THE INDICATOR BITS @VA06382 04373000
  4376. SCCK2 SR R6,R6 CLEAR R6 @VA06382 04374000
  4377. IC R6,GSCBCK GET STRING CONTROL BYTE @VA06382 04375000
  4378. AR R6,R5 ADD TANK COUNT @VA06382 04376000
  4379. S R6,GTANK SUBTRACT START ADDRESS @VA06382 04377000
  4380. CH R6,TNKEND WILL IT GO OVER TANK END @VA06382 04378000
  4381. BH COMPERR YES ERROR DONT DO IT @VA06382 04379000
  4382. TM GSCB,X'40' IS THIS A CHAR STRING... 04380000
  4383. BZ GPROP BR IF NOT 04381000
  4384. NI GSCB,X'3F' TURN OFF STRING BIT 04382000
  4385. SR R6,R6 CLEAR OUT R6 FOR IC 04383000
  4386. IC R6,GSCB GET STRING CONTROL BYTE 04384000
  4387. EX R6,GMVC1 MOVE BUFFER 04385000
  4388. AR R8,R6 COUNT INPUT STRING 04386000
  4389. GCONT EQU * 04387000
  4390. AR R5,R6 COUNT OUTPUT STRING 04388000
  4391. AR R8,R15 COUNT SCB 04389000
  4392. B GDECOMP CONTINUE WITH RECORD 04390000
  4393. SPACE 1 04391000
  4394. GPROP DS 0H PROPGATION REQUIRED 04392000
  4395. TM GSCB,X'20' IS THIS BLANKS... 04393000
  4396. BZ GBLANKS BR IF YES 04394000
  4397. NI GSCB,X'1F' NO .. REMOVE INDICATOR 04395000
  4398. MVC TANKDATA(1),3(R8) SET SAMPLE CHARACTER 04396000
  4399. SR R6,R6 CLEAR OUT R6 FOR IC 04397000
  4400. IC R6,GSCB GET STRING CONTROL BYTE 04398000
  4401. BCTR R6,0 REDUCE BY ONE FOR TANKDATA @VA06381 04399000
  4402. LTR R6,R6 IS MOVE FOR 1 BYTE ONLY @VA07697 04400000
  4403. BZ GDECONE YES,DONT DECREMENT MORE @VA07697 04401000
  4404. BCTR R6,0 REDUCE BY ONE FOR MOVE @VA06381 04402000
  4405. EX R6,GMVC2 PROPAGATE COUNT (+2) 04403000
  4406. AR R8,R15 COUNT SAMPLE CHAR 04404000
  4407. LA R6,2(0,R6) CORRECT CHAR COUNT @VA06381 04405000
  4408. B GCONT AND ENTER FLOW 04406000
  4409. GDECONE EQU * EXPAND ONE BYTE ONLY @VA07697 04407000
  4410. AR R8,R15 COUNT SAMPLE CHAR @VA07697 04408000
  4411. LA R6,1(0,R6) CORRECT CHAR COUNT @VA07697 04409000
  4412. B GCONT CONTINUE PROCESSING @VA07697 04410000
  4413. SPACE 1 04411000
  4414. GBLANKS DS 0H BLANK PROPAGATION REQUIRED 04412000
  4415. MVI TANKDATA,C' ' SET BLANK SAMPLE 04413000
  4416. SR R6,R6 CLEAR OUT R6 FOR IC 04414000
  4417. IC R6,GSCB GET STRING CONTROL BYTE 04415000
  4418. BCTR R6,0 REDUCE BY ONE FOR MOVE @VA06381 04416000
  4419. EX R6,GMVC2 PROPAGATE BLANKS 04417000
  4420. AR R6,R15 CORRECT CHAR COUNT @VA06381 04418000
  4421. B GCONT ENTER FLOW 04419000
  4422. SPACE 1 04420000
  4423. GMVC1 MVC TANKDATA(0),3(R8) TO BE EXECUTED BY ABOVE CODE 04421000
  4424. GMVC2 MVC TANKDATA+1(0),TANKDATA TO BE EXECUTED BY ABOVE CODE 04422000
  4425. COMPERR DS 0H HERE ON COMPRESSION ERROR @VA06382 04423000
  4426. MSG 937,AXSLINK WRITE ERROR MSG @VA06382 04424000
  4427. B EOJ GO TO END THIS @VA06382 04425000
  4428. SCBCK NI GSCBCK,X'3F' USE THIS STRIP COUNT @VA06382 04426000
  4429. B SCCK2 GO BACK TO TEST LENGTH @VA06382 04427000
  4430. GSCBCK DC H'0' SCB CHECK CHAR @VA06382 04428000
  4431. TNKEND DC X'00D0' TOTAL TANK LENGTH @VA06382 04429000
  4432. EJECT 04430000
  4433. GENDREC DS 0H END OF LOGICAL RECORD 04431000
  4434. L R6,GTANK TANK ADDR 04432000
  4435. SR R5,R6 FROM END PTR 04433000
  4436. DROP R5 04434000
  4437. USING TANKDSEC,R6 GET TANKDSEC ADDRESSABILTIY 04435000
  4438. STH R5,TANKCNT SET COUNT IN TANK 04436000
  4439. LA R5,TCTTANK-TCTDSECT TANK CHAIN DISPLACEMENT 04437000
  4440. AR R5,R13 R5 = ABSOLUTE TANK CHAIN PTR 04438000
  4441. GENDREC1 EQU * 04439000
  4442. CLC 0(4,R5),=F'0' IS IT THE LAST? 04440000
  4443. BE GENDREC2 YES 04441000
  4444. L R5,0(0,R5) GET THE NEXT ONE 04442000
  4445. B GENDREC1 AND COMPARE 04443000
  4446. SPACE 1 04444000
  4447. GENDREC2 EQU * 04445000
  4448. ST R6,0(0,R5) CHAIN THIS ONE TO IT 04446000
  4449. MVC 0(4,R6),=F'0' SET NEW FORWARD ZERO 04447000
  4450. A R8,=F'3' ADD IN THREE 04448000
  4451. LH R5,TCTTNKLM LIMIT AND COUNT 04449000
  4452. AR R5,R15 INCREMENT COUNT 04450000
  4453. STH R5,TCTTNKLM AND RESET 04451000
  4454. L R5,TCTCOM GET COMMUTATOR ENTRY 04452000
  4455. MVI 1(R5),OPEN OPEN PROCESSOR GATE 04453000
  4456. L R6,TCTBUFER CURRENT BUFFER ADDR 04454000
  4457. CLC TCTRCBR,0(R8) IS NEXT RECORD SAME 04455000
  4458. BNE GSWITCH BR IF NO 04456000
  4459. SR R8,R6 REDUCE TO DATA DISPLACEMENT 04457000
  4460. STH R8,BUFCOUNT-BUFDSECT(0,R6) 04458000
  4461. B GTTANK AND CONTINUE 04459000
  4462. SPACE 1 04460000
  4463. GSWITCH DS 0H DIFFERENT RCB ENCOUNTERED 04461000
  4464. NI BUFSYNSW,255-GDQBUFS ALLOW DEQUEUING TRY 04462000
  4465. MVC TCTBUFER,0(R6) UPDATE CHAIN 04463000
  4466. BAL R14,GASSIGN GO RE-ASSIGN BUFFER 04464000
  4467. LH R8,TCTBUFLM BUFFER LIMIT AND COUNT 04465000
  4468. BCTR R8,0 REDUCE COUNT 04466000
  4469. STH R8,TCTBUFLM AND RESET 04467000
  4470. CLC TCTBUFCT,TCTBUFLM IS ANOTHER BUFFER REQUIRED 04468000
  4471. BNL GSERVICE BR IF NO TO CONTINUE 04469000
  4472. OC $FCSOUT,TCTFCS SHOW NEXT BUFFER PERMITTED 04470000
  4473. B GSERVICE AND CONTINUE 04471000
  4474. EJECT 04472000
  4475. *---------------------------------------------------------------------* 04473000
  4476. * * 04474000
  4477. * ASSIGN A TP BUFFER TO A TCT * 04475000
  4478. * * 04476000
  4479. * R6=BUFFER ADDRESS , R8=PTR TO CURRENT RCB IN BUFFER * 04477000
  4480. * * 04478000
  4481. *---------------------------------------------------------------------* 04479000
  4482. SPACE 1 04480000
  4483. GASSIGN DS 0H ASSIGN BUFFER TO CORRECT TCT 04481000
  4484. ST R13,GAST PRESERVE TCT REG 04482000
  4485. LA R13,$TCT1 START OF TCT'S 04483000
  4486. GASNEXT DS 0H * 04484000
  4487. CLC TCTRCBR,0(R8) COMPARE RCB'S 04485000
  4488. BE GASIT BR IF FOUND 04486000
  4489. ICM R13,B'1111',TCTNEXT TO NEXT AND CHECK FOR END 04487000
  4490. BNZ GASNEXT BR IF NO TO CONTINUE 04488000
  4491. CLI 0(R8),0 IS THIS A NULL BUFFER 04489000
  4492. BNE GCTLCHK BR IF NO 04490000
  4493. SPACE 1 04491000
  4494. GIGNORIT DS 0H * 04492000
  4495. MVC 0(4,R6),$BUFPOOL GET FIRST FREE OFF QUEUE 04493000
  4496. ST R6,$BUFPOOL MAKE THIS ONE THE FIRST 04494000
  4497. TM WCTSTAT,TCTREL ARE MESSAGES QUEUED? 04495000
  4498. BNO GIGNORT1 NO CONTINUE 04496000
  4499. OI $MSGCOM+1,OPEN OPEN THE MSG GATE 04497000
  4500. B GASRET DONT CHECK ANYTHING ELSE TILL LATER 04498000
  4501. SPACE 1 04499000
  4502. GIGNORT1 EQU * 04500000
  4503. CLI RCTWFB,X'FF' READER WAITING? 04501000
  4504. BNE GASRET NO - RETURN 04502000
  4505. OI $RCOMM1+1,OPEN OPEN THE READER GATE 04503000
  4506. B GASRET AND RETURN 04504000
  4507. SPACE 1 04505000
  4508. GCTLCHK DS 0H TEST FOR CONTROL RECORD 04506000
  4509. CLI 0(R8),X'F0' GENERAL CONTROL RECORD? 04507000
  4510. BE GCTLCHK1 YES GO PROCESS IT 04508000
  4511. TM 0(R8),15 IS RECORD TYPE = 0000 04509000
  4512. BNZ GIGNORIT NO...SKIP RECORD(AND BUFFER) 04510000
  4513. GCTLCHK1 EQU * 04511000
  4514. LA R13,$CTLTCT TYPE IS CTL...LOAD TCT 04512000
  4515. EJECT 04513000
  4516. GASIT DS 0H TCT FOUND 04514000
  4517. SR R8,R6 R8 = DATA DISPLACEMENT 04515000
  4518. STH R8,BUFCOUNT-BUFDSECT(0,R6) SAVE 04516000
  4519. LA R8,TCTBUFER-TCTDSECT ACTUAL DISP 04517000
  4520. AR R8,R13 ACTUAL ADDRESS 04518000
  4521. GASIT1 EQU * 04519000
  4522. CLC 0(4,R8),=F'0' IS IT THE LAST 04520000
  4523. BE GASIT2 YES 04521000
  4524. L R8,0(0,R8) GET THE NEXT ONE 04522000
  4525. B GASIT1 AND COMPARE 04523000
  4526. SPACE 1 04524000
  4527. GASIT2 EQU * 04525000
  4528. ST R6,0(0,R8) CHAIN THIS ONE TO IT 04526000
  4529. MVC 0(4,R6),=F'0' SET NEW FORWARD ZERO 04527000
  4530. LH R8,TCTBUFLM LIMIT AND COUNT 04528000
  4531. AH R8,=H'1' COUNT THIS 04529000
  4532. STH R8,TCTBUFLM AND RESET 04530000
  4533. OI TCTSTAT,TCTACT START ACTION 04531000
  4534. CLC TCTBUFCT,TCTBUFLM ARE ENOUGH BUFFERS HERE 04532000
  4535. BL GASRET BR IF MORE BUFFERS NEEDED 04533000
  4536. OC $FCSOUT,TCTFCS MODIFY FCS 04534000
  4537. XC $FCSOUT,TCTFCS TO STOP THIS STREAM 04535000
  4538. GASRET DS 0H RETURN ENTRY 04536000
  4539. L R13,GAST AND RETURN 04537000
  4540. BR R14 TO CALLER 04538000
  4541. SPACE 1 04539000
  4542. GWAIT DS 0H PREPARE FOR EXIT 04540000
  4543. NI BUFSYNSW,255-GDQBUFS OPEN DEQUEUE GATE 04541000
  4544. B $TPGETCM+4 EXIT 04542000
  4545. SPACE 1 04543000
  4546. GINBUF DC A(0) INPUT BUFFER ADDR 04544000
  4547. GBUFPTR DC A(0) INPUT BUFFER POINTER 04545000
  4548. GTANK DC A(0) TANK ADDR 04546000
  4549. GAST DC A(0) TEMP STORAGE 04547000
  4550. GCTL DC H'0' WORK SPACE 1 04548000
  4551. GSCB DC X'00' WORKING STRING CONTROL BYTE 04549000
  4552. DROP R6,R13 DISCONTINUE TANK REG 04550000
  4553. EJECT 04551000
  4554. *---------------------------------------------------------------------* 04552000
  4555. * * 04553000
  4556. * $GETTNK ROUTINE TO GET A TANK FOR PROCESSOR * 04554000
  4557. * * 04555000
  4558. *---------------------------------------------------------------------* 04556000
  4559. SPACE 1 04557000
  4560. USING TCTDSECT,TCTR GET TCT ADDRESSABILITY 04558000
  4561. $GETTNK DS 0H 04559000
  4562. ST R14,TCTSAV1 SAVE USER REG FOR POSSIBLE WAIT 04560000
  4563. MVC TCTENTY(2),OACN2 SET REENTRY FOR POSSIBLE WAIT 04561000
  4564. OLOC2 EQU * 04562000
  4565. CLC TCTTANK,=F'0' ARE WE EMPTY? 04563000
  4566. BE $CLOSTCT YES 04564000
  4567. L R8,TCTTANK GET FIRST BUFFER ADDR 04565000
  4568. MVC TCTTANK(4),0(R8) REMOVE THIS ONE FROM CHAIN 04566000
  4569. LH R6,TCTTNKLM REDUCES COUNT IN TNKCT 04567000
  4570. BCTR R6,0 DOWN BY ONE 04568000
  4571. STH R6,TCTTNKLM AND REPLACE COUNT 04569000
  4572. OI TCTSTAT,TCTACT SIGNAL WE HAVE RECEIVED TANK 04570000
  4573. MVI $TPGETCM+1,OPEN OPEN THE GATE TO TPGET ROUTINE 04571000
  4574. L R14,TCTSAV1 PICK UP USER 04572000
  4575. BR R14 RETURN TO HIM 04573000
  4576. SPACE 1 04574000
  4577. * 04575000
  4578. * $CLOSTCT ROUTINE TO CLOSE GATE AND RETURN 04576000
  4579. * 04577000
  4580. $CLOSTCT DS 0H 04578000
  4581. L R6,TCTCOM PICK UP COMMUTATOR 04579000
  4582. MVI 1(R6),CLOSE CLOSE GATE 04580000
  4583. B 4(R6) RETURN TO COMMUTATOR 04581000
  4584. SPACE 1 04582000
  4585. OACN2 DC S(OLOC2) RENTRY POINT 04583000
  4586. EJECT 04584000
  4587. *---------------------------------------------------------------------* 04585000
  4588. * * 04586000
  4589. * $TPOPEN -- OPEN A STREAM * 04587000
  4590. * * 04588000
  4591. *---------------------------------------------------------------------* 04589000
  4592. SPACE 1 04590000
  4593. $TPOPEN DS 0H 04591000
  4594. ST R14,TSAVA SAVE CALLER'S 04592000
  4595. ST R8,TSAVB REGS 04593000
  4596. MVC TTANK+TANKSRCB-TANKDSEC(1),TANKRCB-TANKDSEC(R8) SET FCN 04594000
  4597. L R8,TANKCON FOR $TPPUT 04595000
  4598. BAL R14,$TPPUT GO PUT RECORD 04596000
  4599. L R8,TSAVB CALLER'S 04597000
  4600. L R14,TSAVA REGS 04598000
  4601. BR R14 RETURN TO CALLER 04599000
  4602. SPACE 1 04600000
  4603. * DUMMY TANK 04601000
  4604. TTANK DC A(0) CHAIN 04602000
  4605. DC X'90' RCB FOR FUNCTION CTL RECORD 04603000
  4606. DC X'00' USER'S SRCB (FUNCTION TYPE) 04604000
  4607. DC H'0' TANK COUNT 04605000
  4608. TSAVA DC A(0) SAVE AREA 04606000
  4609. TSAVB DC A(0) SAVE AREA 04607000
  4610. TANKCON DC A(TTANK) CONSTANT 04608000
  4611. EJECT 04609000
  4612. *. 04610000
  4613. * 04611000
  4614. * ENTRY NAME - 04612000
  4615. * 04613000
  4616. * COMSUP 04614000
  4617. * 04615000
  4618. * FUNCTION - 04616000
  4619. * 04617000
  4620. * THIS ROUTINE IS RESPONSIBLE FOR ALL I/O ON THE 04618000
  4621. * COMMUNICATIONS LINE. IT DEQUEUES TP BUFFERS FROM 04619000
  4622. * $OUTBUF FOR TRANSMISSION AND QUEUES RECEIVED TP BUFFERS 04620000
  4623. * ONTO THE $INBUF QUEUE FOR DEBLOCKING BY $TPGET. 04621000
  4624. * 04622000
  4625. * CALLS TO OTHER ROUTINES - 04623000
  4626. * 04624000
  4627. * DMTIOMRQ - TO INITIATE AN I/O OPERATION 04625000
  4628. * 04626000
  4629. * OPERATION - 04627000
  4630. * 04628000
  4631. * 1. CLOSE THE LINE INTERRUPT ENTRY IN THE COMMUTATOR 04629000
  4632. * TABLE AND CHECK CSW FOR ERRORS. 04630000
  4633. * 04631000
  4634. * 2. CHECK BSC CONTROL CHARACTERS ON THE BUFFER RECEIVED 04632000
  4635. * TO DETERMINE THE KIND OF RESPONSE FROM THE LINE 04633000
  4636. * 04634000
  4637. * 3. PROCESS AN ACK RESPONSE BY TRYING TO OBTAIN AN OUTPUT 04635000
  4638. * BUFFER AND WRITING IT TO THE LINE. 04636000
  4639. * 04637000
  4640. * 4. PROCESS STX RESPONSE BY VERIFYING THE BSC CONTROL 04638000
  4641. * CHARACTERS AND QUEUEING THE INPUT BUFFER FOR DEBLOCKING 04639000
  4642. * BY $TPGET. 04640000
  4643. * 04641000
  4644. * 5. PROCESS NAK RESPONSE REST THE BSC LEADER CHARACTER AND RE- 04642000
  4645. * WRITE THE BUFFER. 04643000
  4646. * 04644000
  4647. * RESPONSES - 04645000
  4648. * 04646000
  4649. * NONE 04647000
  4650. * 04648000
  4651. * ERROR MESSAGES - 04649000
  4652. * 04650000
  4653. * NONE 04651000
  4654. * 04652000
  4655. *. 04653000
  4656. EJECT 04654000
  4657. USING LINKTABL,R6 GET LINKTABLE ADDRESSABILITY 04655000
  4658. COMSUP EQU * 04656000
  4659. $INTRUPT MVI $COMCOM+5,CLOSE 04657000
  4660. TM BUFSYNSW,$COMBUSY IS THERE COMMUNICATIONS ACTIVE? 04658000
  4661. BO CEXIT NO 04659000
  4662. STM R13,R15,CREGS SAVE INTERRUPTED REGS 04660000
  4663. L R13,CBUFFER GET CURRENT BUFFER ADDR 04661000
  4664. TM BUFSYNSW,CUWFAKE DUMMY I/O 04662000
  4665. BO CWRTSIO YES 04663000
  4666. TM ADACSW+5,X'BF' TEST FOR UNEXPECTED ERRORS 04664000
  4667. BNZ CBADERR BR IF ANY 04665000
  4668. TM ADACSW+4,X'F3' TEST OTHER UNUSUAL ENDINGS 04666000
  4669. BNZ CERROR BR IF ANY 04667000
  4670. * CHANNEL-END , DEVICE-END ASSUMED 04668000
  4671. EJECT 04669000
  4672. SPACE 3 04670000
  4673. $ENDREAD DS 0H EXTERNAL ENTRY POINT 04671000
  4674. SPACE 1 04672000
  4675. USING BUFDSECT,R13 * 04673000
  4676. CNOLOGAL DS 0H ENTRY TO SKIP LOGGING EVERYTHING 04674000
  4677. MVC CCWC+6(2),RDCOUNT RESET BUFFER SIZE @VA08725 04675000
  4678. TM SMLSYS,MASTER ARE WE IN HOST MODE? 04676000
  4679. BNO CNOLOG0 NO CONTINUE 04677000
  4680. CLC BUFSTART(2),=AL1(XSOH,XENQ) DID WE GET THE START 04678000
  4681. BE CACKED YES TREAT LIKE ACK 04679000
  4682. CNOLOG0 EQU * 04680000
  4683. BAL R14,TRTRAN LOG THE TRANSACTION 04681000
  4684. MVC CRESP,BUFSTART GET FIRST RESPONSE BYTE 04682000
  4685. XC TOCNT(2),TOCNT CLEAR TIMEOUT COUNTER @VA05950 04683000
  4686. CLI CRESP,XDLE IS IT DLE LEADER... 04684000
  4687. BNE CNOLOG1 BR IF NO 04685000
  4688. MVC CRESP,BUFSTART+1 YES... GET REAL RESPONSE 04686000
  4689. CNOLOG1 EQU * 04687000
  4690. CLI CRESP,XSOH IS THIS NON-XPARENT LEADER... 04688000
  4691. BE CINBUF BR IF YES TO PROCESS TEXT 04689000
  4692. CLI CRESP,XSTX IS THIS DATA 04690000
  4693. BE CINBUF BR IF YES TO PROCESS 04691000
  4694. CLI CRESP,XACK0 IS THIS WRITE ACKNOWLEDGEMENT 04692000
  4695. BE CACKED BR IF YES 04693000
  4696. CLI CRESP,XNAK WERE WE NAK'ED 04694000
  4697. BE CNAKED BR IF YES 04695000
  4698. B CRESPBAD UNKNOWN RESPONSE RECEIVED 04696000
  4699. EJECT 04697000
  4700. * 04698000
  4701. * POSITIVE ACKNOWLEDGEMENT OF LAST WRITE RECEIVED 04699000
  4702. * 04700000
  4703. SPACE 3 04701000
  4704. CACKED DS 0H ACKNOWLEDGEMENT WAS ACK 04702000
  4705. TM BUFSTAT,BUFTONAK+BUFNAK NAK SENT AFTER T/O @VA08636 04703000
  4706. BO CNAKNAK NAK AFTER T/O ON DATA @VA08636 04704000
  4707. NI BUFSTAT,X'FF'-BUFTONAK RESET T/O INDICATOR @VA08636 04705000
  4708. NI $FCSIN,255-X'40' TURN OFF WAIT-A-BIT 04706000
  4709. OI BUFSYNSW,CACKSW SET ACK RECEIVED 04707000
  4710. CWRTOK DS 0H 04708000
  4711. TM BUFSTAT,BUFFAKE IS THIS A DUMMY BUFFER 04709000
  4712. BO CWRTNEXT BR IF YES 04710000
  4713. MVI BUFSTAT,0 RESET STATUS BYTE 04711000
  4714. MVC 0(4,R13),$BUFPOOL GET FIRST FREE OFF QUEUE 04712000
  4715. ST R13,$BUFPOOL MAKE THIS ONE THE FIRST 04713000
  4716. TM WCTSTAT,TCTREL IS THE MSG PROC WAITING? 04714000
  4717. BNO CWRTOK1 NO CONTINUE 04715000
  4718. OI $MSGCOM+1,OPEN OPEN THE MSG GATE 04716000
  4719. B CWRTNEXT AND CONTINUE 04717000
  4720. SPACE 04718000
  4721. CWRTOK1 EQU * 04719000
  4722. CLI RCTWFB,X'FF' IS THE READER WAITING? 04720000
  4723. BNE CWRTNEXT NO - CONTINUE 04721000
  4724. OI $RCOMM1+1,OPEN OPEN THE READER GATE 04722000
  4725. CWRTNEXT EQU * ENTRY TO START NEXT WRITE 04723000
  4726. TM BUFSYNSW,CACKSW WAS AN ACK RECEIVED? 04724000
  4727. BO CNOD YES 04725000
  4728. BAL R15,CSETCOM MAKE A COMMUTATOR PASS 04726000
  4729. BAL R15,CSETCOM AND ANOTHER 04727000
  4730. CNOD EQU * ACK BYPASS 04728000
  4731. NI BUFSYNSW,255-CACKSW RESET SWITCH 04729000
  4732. CYCLE EQU * COMMUTATOR CYCLE POINT 04730000
  4733. TM $FCSIN,X'40' IS WAIT-A-BIT SET 04731000
  4734. BO CWAITBIT BR IF YES 04732000
  4735. TM SMLSYS,MASTER HOST MODE? @VA03301 04733000
  4736. BNO CYCLE1 NO...CONTINUE CHECK @VA03301 04734000
  4737. MVC CFCSTEMP(2),$FCSIN MOVE RECEIVED TO TEMP AREA @VA03301 04735000
  4738. NC CFCSTEMP(2),CFCSSTD SETUP FOR TEST @VA03301 04736000
  4739. XC CFCSTEMP(2),CFCSSTD TEST AGAINST STANDARD @VA03301 04737000
  4740. BC 4,CWAITBIT STREAM IS NEGATED @VA03301 04738000
  4741. CYCLE1 EQU * @VA03301 04739000
  4742. NI BUFSYNSW,255-$TPPNONE RESET BUFFERING STOP 04740000
  4743. L R6,SMLLINK GET LINK TABLE ENTRY ADDR 04741000
  4744. TM LFLAG,LHOLD ARE ARE HELD? 04742000
  4745. BO CRESPOND SEND RESPONSE @VA05952 04743000
  4746. CLC $OUTBUF,=F'0' ARE WE EMPTY 04744000
  4747. BE CRESPOND YES 04745000
  4748. L R13,$OUTBUF GET FIRST BUFFER ADDR 04746000
  4749. MVC $OUTBUF(4),0(R13) REMOVE THIS ONE FROM CHAIN 04747000
  4750. EJECT 04748000
  4751. SPACE 4 04749000
  4752. CSTNDWRT DS 0H ENTRY FOR BUFFER WRITE WITH BCB 04750000
  4753. MVC BUFSTART,XSTXSEQ SET START OF TEXT HEADER 04751000
  4754. OI BUFSTAT,BUFTEXT SHOW TEXT BUFFER 04752000
  4755. MVC CSETBCB(1),CBCBCNTO BCB FOR CURRENT BUFFER 04753000
  4756. LH R15,CBCBCNTO-1 GET CURRENT COUNT 04754000
  4757. AH R15,=H'1' INCREMENT TO NEXT 04755000
  4758. STH R15,CBCBCNTO-1 AND SAVE 04756000
  4759. NI CBCBCNTO,X'80'+15 MODULO 16 04757000
  4760. B CNWRITE GO WRITE BUFFER 04758000
  4761. SPACE 3 04759000
  4762. * 04760000
  4763. * WAIT-A-BIT SEQUENCE RECEIVED 04761000
  4764. * 04762000
  4765. SPACE 1 04763000
  4766. CWAITBIT DS 0H * 04764000
  4767. OI BUFSYNSW,$TPPNONE STOP ALL BUFFERING 04765000
  4768. B CRESPOND GO RESPOND 04766000
  4769. EJECT 04767000
  4770. SPACE 3 04768000
  4771. CINBUF DS 0H * 04769000
  4772. TM BUFSTAT,BUFFAKE IS THIS A DUMMY BUFFER? @VA08779 04770000
  4773. BO WAITON YES, NO CALC REQUIRED @VA08779 04771000
  4774. CLI BUFDATA,X'E0' SEE IF HE IS RESETING 04772000
  4775. BE CBCBRSET AND GO TRY TO RESET THINGS 04773000
  4776. LA R15,BUFSTART-1 GET START OF ACTUAL BUFFER 04774000
  4777. A R15,TPBUFSIZ POSITION TO END OF BUFFER 04775000
  4778. SH R15,ADACSW+6 SUBSTACT OUT RESIDUAL COUNT 04776000
  4779. CLI 0(R15),XETB WAS ENDING SEQUENCE CORRECT 04777000
  4780. BNE CRESPBAD BR IF YES TO LOG AND NAK 04778000
  4781. WAITON EQU * NO CALC FOR BUFFER REQ @VA08779 04779000
  4782. MVC $FCSIN,BUFFCS SET NEW FUNCTION CONTROL 04780000
  4783. SPACE 1 04781000
  4784. * VERIFY BLOCK CONTROL BYTE COUNT 04782000
  4785. MVC CBCB(1),BUFBCB GET BCB COUNT 04783000
  4786. CLC CBCBCNTI(1),CBCB DOES RECEIVED MATCH EXPECTED 04784000
  4787. BNE CBCBCHEK BR IF NO 04785000
  4788. LH R15,CBCBCNTI-1 GET CURRENT COUNT 04786000
  4789. AH R15,=H'1' TO NEXT EXPECTED 04787000
  4790. STH R15,CBCBCNTI-1 AND RESET 04788000
  4791. NI CBCBCNTI,X'80'+15 MOLULO 16 04789000
  4792. SPACE 1 04790000
  4793. CBCBOK DS 0H ENTRY FROM IGNORE 04791000
  4794. TM BUFSTAT,BUFFAKE IS THIS DUMMY BUFFER 04792000
  4795. BO CWRTOK BR IF YES TO IGNORE 04793000
  4796. CLI BUFDATA,X'00' IS IT A NULL BUFFER? 04794000
  4797. BE CWRTOK YES..ALL DONE 04795000
  4798. CLC BUFDATA+2(9),SIGNOFF SIGNOFF CARD? @VA08191 04796000
  4799. BE DSBLOFF YES, KILL THE LINK @VA08191 04797000
  4800. CLI BUFDATA+1,C'B' Q. IF SIGN-OFF RECORD FROM C 04798000
  4801. BNE CNOTOFF IF NO CONTINUE 04799000
  4802. DSBLOFF EQU * ISSUE DISABLE CCW @VA08191 04800000
  4803. MVI BUFDATA,X'91' MAKE LOOK LIKE WTO FROM CENTRAL 04801000
  4804. B EOJ GO TERMINATE IMMEDIATELY @VA04173 04802000
  4805. SPACE 1 04803000
  4806. CNOTOFF EQU * 04804000
  4807. MVI $TPGETCM+1,OPEN OPEN TPGETS GATE 04805000
  4808. MVI BUFSTAT,0 RESET BUFFER STATUS BITS 04806000
  4809. LA R15,$INBUF QUEUE CONTROL WORD 04807000
  4810. CINBUF1 EQU * 04808000
  4811. CLC 0(4,R15),=F'0' IS IT THE LAST 04809000
  4812. BE CINBUF2 YES 04810000
  4813. L R15,0(0,R15) GET THE NEXT ONE 04811000
  4814. B CINBUF1 AND COMPARE 04812000
  4815. SPACE 1 04813000
  4816. CINBUF2 EQU * 04814000
  4817. ST R13,0(0,R15) CHAIN THIS ONE TO IT 04815000
  4818. MVC 0(4,R13),=F'0' SET NEW FORWARD ZERO 04816000
  4819. B CWRTNEXT AND CONTINUE XMISSION 04817000
  4820. EJECT 04818000
  4821. * 04819000
  4822. * RECEIVED BCB CHECK COUNT NOT CORRECT 04820000
  4823. * 04821000
  4824. CBCBCHEK DS 0H DETERMINE DAMAGE 04822000
  4825. TM CBCB,BCBIGNRE IS THE IGNORE BIT ON 04823000
  4826. BO CBCBOK BR IF YES 04824000
  4827. TM CBCB,BCBRESET IS THIS A RESET REQUEST 04825000
  4828. BZ CBCBBAD BR IF NO 04826000
  4829. MVN CBCBCNTI(1),CBCB YES... DO IT 04827000
  4830. B CBCBOK AND PROCESS RECORD 04828000
  4831. SPACE 1 04829000
  4832. CBCBBAD DS 0H BLOCK COUNTS DO NOT AGREE 04830000
  4833. MVC CTEMP+1(1),CBCB ISOLATE RECEIVED CNT 04831000
  4834. LH R15,CBCBCNTI-1 GET EXPECTED CNT 04832000
  4835. SH R15,CTEMP LESS RECEIVED 04833000
  4836. BP CBCBBAD1 BR IF TOO LOW 04834000
  4837. AH R15,=H'16' MAKE DIFFERENCE POSITIVE 04835000
  4838. CBCBBAD1 EQU * 04836000
  4839. CH R15,CMAXDUP IS DIFFERENCE REASONABLE 04837000
  4840. BH CBLKLOST BR IF NO 04838000
  4841. B CWRTOK IGNORE BLOCK 04839000
  4842. SPACE 2 04840000
  4843. CBLKLOST DS 0H ONE OR MORE BLOCKS ARE LOST 04841000
  4844. MVN CLOSTBCB,CBCB SET RECEIVED BLOCK COUNT 04842000
  4845. MVN CLSTSRCB,CBCBCNTI SET EXPECTED BLOCK COUNT 04843000
  4846. MVC BUFCOUNT(CLOSTEND-CLOSTBLK),CLOSTBLK SET BAD BLOCK 04844000
  4847. MVC CSETBCB(1),CLOSTBCB SET RESTORE BCB INSTRUCTION V03.1 04845000
  4848. B CNWRITE GO TELL OTHER SIDE ABOUT BAD BCB 04846000
  4849. EJECT 04847000
  4850. SPACE 3 04848000
  4851. CRESPOND DS 0H ENTRY TO RESPOND 04849000
  4852. L R6,SMLLINK GET LINK TABLE ENTRY ADDR 04850000
  4853. CLC $BUFPOOL,=F'0' ARE WE EMPTY? 04851000
  4854. BE CSTOPIN YES 04852000
  4855. L R13,$BUFPOOL GET FIRST BUFFER ADDR 04853000
  4856. MVC $BUFPOOL(4),0(R13) REMOVE THIS ONE FROM CHAIN 04854000
  4857. B CBUFGOTN BR IF GOTTEN 04855000
  4858. SPACE 1 04856000
  4859. CSTOPIN DS 0H ENTRY TO STOP ALL INPUT 04857000
  4860. LA R13,CDUMMY USE DUMMY BUFFER 04858000
  4861. MVI BUFDATA,0 SET NULL BUFFER RCB 04859000
  4862. MVI BUFSTAT,BUFFAKE FORCE STATUS TO DUMMY 04860000
  4863. B CSTNDWRT GO DO NORMAL WRITE 04861000
  4864. SPACE 1 04862000
  4865. CBUFGOTN DS 0H 04863000
  4866. MVI BUFDATA,0 SET NULL BUFFER RCB 04864000
  4867. MVC BUFCOUNT,=AL2(CDUMEND-CDUMSTRT) SET WRITE COUNT 04865000
  4868. CLC CFCSOUT,$FCSOUT HAS FCS BEEN CHANGED 04866000
  4869. BNE CSTNDWRT BR IF YES TO DO NORMAL WRITE 04867000
  4870. MVC BUFSTART,XACKSEQ SETUP STANDARD SEQUENCE 04868000
  4871. CSENDRES DS 0H * 04869000
  4872. OI BUFSTAT,BUFRESP SHOW RESPONSE BUFFER 04870000
  4873. B CNWRITE AND GO WRITE 04871000
  4874. EJECT 04872000
  4875. * 04873000
  4876. * A NEGATIVE RESPONSE RECEIVED 04874000
  4877. * 04875000
  4878. SPACE 3 04876000
  4879. CNAKED DS 0H PREPARE TO RETRANSMIT 04877000
  4880. TM BUFSTAT,BUFNAK WERE WE SENDING A NAK 04878000
  4881. BO CNAKNAK BR IF YES 04879000
  4882. MVC BUFSTART(10),CBUFLAST RESET START OF BUFFER @VA05474 04880000
  4883. TM BUFSTAT,BUFTEXT WAS THIS A TEXT BUFFER 04881000
  4884. BO CREWRITE BR IF YES TO RETRY 04882000
  4885. MVC BUFSTART(2),XACKSEQ SETUP STANDARD SEQUENCE @VA05470 04883000
  4886. B CWRTSIO AND GO WRITE IT 04884000
  4887. SPACE 1 04885000
  4888. CNAKNAK DS 0H OUR NAK WAS NAK'ED 04886000
  4889. TM BUFSTAT,BUFTEXT WAS ORIGINAL BUFFER TEXT... 04887000
  4890. BZ CWRTOK NO...FORGET IT 04888000
  4891. * YES...PREPARE TO RESEND 04889000
  4892. MVC BUFSTART,XSTXSEQ RESET TEXT LEADERS 04890000
  4893. NI BUFSTAT,X'FF'-BUFTONAK-BUFNAK-BUFRESP RESET BITS@VA08636 04891000
  4894. B CNWRITE WRITE BUFFER AGAIN 04892000
  4895. SPACE 5 04893000
  4896. * 04894000
  4897. * UNKNOWN RESPONSE ... RESEND LAST DATA 04895000
  4898. * 04896000
  4899. CRESPBAD DS 0H 04897000
  4900. SPACE 3 04898000
  4901. * 04899000
  4902. * SEND A NEGATIVE RESPONSE 04900000
  4903. * 04901000
  4904. CSENDNAK DS 0H ENTRY 04902000
  4905. MVC BUFSTART,XNAKSEQ SET NAK SEQUENCE 04903000
  4906. OI BUFSTAT,BUFRESP+BUFNAK SHOW NAK RESPONSE 04904000
  4907. B CNWRITE AND GO WRITE IT 04905000
  4908. EJECT 04906000
  4909. * 04907000
  4910. * A RESET BCB RECEIVED FROM OTHER END 04908000
  4911. * THE PROCEDURE USED HERE IS TO TREAT A RESET 04909000
  4912. * AS A NAK REPLACE THE FIRST 9 BYTES OF BUFFER 04910000
  4913. * AND RETRANSMIT WITH CORRECTED BCB COUNT 04911000
  4914. * 04912000
  4915. SPACE 2 04913000
  4916. CBCBRSET DS 0H 04914000
  4917. *********************************************************************** 04915000
  4918. * A BCB SEQUENCE CHECK WILL MEAN THAT A BLOCK OF DATA HAS BEEN LOST 04916000
  4919. * AND INTEGRITY OF THE DATA IS NOW QUESTIONABLE. THE ONLY RECOURSE 04917000
  4920. * TO ENSURE THE ENTIRE DATA SET IS COMPLETE IS TO TERMINATE THE 04918000
  4921. * LINK AND HAVE IT STARTED AGAIN WITH THE REMOTE OPERATOR FORWARD 04919000
  4922. * SPACE TO THE POINT OF BLOCK CHECK AND RESUMMING THE DATA SET AGAIN 04920000
  4923. *********************************************************************** 04921000
  4924. B EOJ TERMINATE LINK NOW @VA08633 04922000
  4925. EJECT 04923000
  4926. * 04924000
  4927. * COMSUP IS EXITING WITHOUT I/O ACTIVE 04925000
  4928. * PREPARE FOR RE-ENTRY THROUGH COMUTATOR 04926000
  4929. * 04927000
  4930. SPACE 3 04928000
  4931. CSETCOM DS 0H * 04929000
  4932. MVI $COMCOM+1,OPEN OPEN GATE 04930000
  4933. OI BUFSYNSW,$COMBUSY SHOW NO ACTIVITY 04931000
  4934. STM R13,R15,CRETREGS SAVE SOME REGISTERS 04932000
  4935. B CREXIT AND RETURN TO INTERRUPTED LOC 04933000
  4936. SPACE 1 04934000
  4937. $COMSUP DS 0H 04935000
  4938. MVI $COMCOM+1,CLOSE CLOSE COMUTATOR ENTRY 04936000
  4939. LM R13,R15,CRETREGS RESTORE 04937000
  4940. MVC $COMEXIT+1(3),=AL3($COMCOM+4) SET EXIT TO COMUTATOR 04938000
  4941. NI BUFSYNSW,255-$COMBUSY ALLOW COMMUNICATIONS INTERRUPTS 04939000
  4942. BR R15 RE-ENTER COMSUP 04940000
  4943. EJECT 04941000
  4944. SPACE 3 04942000
  4945. CNWRITE DS 0H 04943000
  4946. LA R15,BUFSTART TO XMISSION POINT 04944000
  4947. ST R15,CCWA INTO CCW 04945000
  4948. MVI CCWA,WRITE RESET OP 04946000
  4949. ST R15,CCWC SET RETURN DATA ADDR 04947000
  4950. MVI CCWC,READ RESET OP 04948000
  4951. MVC CCWA+6(2),BUFCOUNT SET WRITE COUNT 04949000
  4952. MVI CCWA+4,XCHN SET PROPER CCW CHAINING 04950000
  4953. ST R13,CBUFFER SAVE BUFFER ADDR 04951000
  4954. MVI CCWB,WRITE RESET OP FOR ENDING SEQ 04952000
  4955. TM BUFSTAT,BUFRESP IS THIS JUST A RESPONSE 04953000
  4956. BZ CREWRITE BR IF NO 04954000
  4957. MVI CCWA+4,CC+SILI SET COMMAND CHAINING 04955000
  4958. MVC CCWA+6(3),=X'000203' SET COUNT AND 2ND CCW OP 04956000
  4959. B CWRTSIO GO START WRITE 04957000
  4960. SPACE 1 04958000
  4961. CREWRITE DS 0H ENTRY TO RETRY WRITE 04959000
  4962. MVC CFCSOUT,$FCSOUT SAVE LAST FCS SENT 04960000
  4963. MVC BUFFCS,$FCSOUT SET CURRENT FCS 04961000
  4964. MVC BUFBCB(1),CSETBCB SET BCB INTO BUFFER 04962000
  4965. MVC COLDRCB(1),BUFDATA SAVE RCB THAT IS SENT 04963000
  4966. TM BUFSTAT,BUFFAKE IS THIS A DUMMY BUFFER 04964000
  4967. BZ CWRTSIO BR IF NO 04965000
  4968. OI BUFFCS,X'40' YES...SET WAIT-A-BIT 04966000
  4969. MVC CCWC+6(2),DUMCOUNT SET READ CNT FOR W/BIT @VA07451 04967000
  4970. SPACE 1 04968000
  4971. CWRTSIO DS 0H START THE WRITE 04969000
  4972. MVC CBUFLAST(10),BUFSTART SAVE INCASE OF RESET 04970000
  4973. NI BUFSYNSW,255-CUWFAKE MAKE SURE DUMMY READ NOT ON 04971000
  4974. BAL R15,$SIO ISSUE THE I/O 04972000
  4975. DC AL4(CCWS) FOR THIS CCW STRING @VA03340 04973000
  4976. SPACE 3 04974000
  4977. * 04975000
  4978. * INTERRUPT EXIT ROUTINE 04976000
  4979. * 04977000
  4980. SPACE 3 04978000
  4981. CREXIT DS 0H 04979000
  4982. LM R13,R15,CREGS RESTORE INTERRUPTED REGS 04980000
  4983. CEXIT DS 0H 04981000
  4984. L R4,$COMEXIT GET RETURN POINT 04982000
  4985. BR R4 AND RETURN 04983000
  4986. EJECT 04984000
  4987. *. 04985000
  4988. * 04986000
  4989. * ENTRY NAME - 04987000
  4990. * 04988000
  4991. * CERROR 04989000
  4992. * 04990000
  4993. * FUNCTION - 04991000
  4994. * 04992000
  4995. * THIS ROUTINE IS RESPONSIBLE FOR ANALYZING ALL ERRORS ON 04993000
  4996. * THE COMMUNICATIONS LINE. THE APPROPRIATE CORRECTIVE 04994000
  4997. * ACTIVE IS TAKEN DEPENDING ON THE TYPE OF ERROR. 04995000
  4998. * 04996000
  4999. * CALLS TO OTHER ROUTINES - 04997000
  5000. * 04998000
  5001. * NONE 04999000
  5002. * 05000000
  5003. * OPERATION - 05001000
  5004. * 05002000
  5005. * 1. DETERMINE THE TYPE OF ERROR. 05003000
  5006. * 05004000
  5007. * 2. TRY TO REWRITE THE LINE OR SEND A NEGATIVE 05005000
  5008. * RESPONSE. 05006000
  5009. * 05007000
  5010. * 3. RECORD A LINE TRANSACTION, A LINE ERROR, OR 05008000
  5011. * TIMEOUT. 05009000
  5012. * 05010000
  5013. * 4. WRITE AN ERROR MESSAGE. 05011000
  5014. * 05012000
  5015. * RESPONSES - 05013000
  5016. * 05014000
  5017. * NONE 05015000
  5018. * 05016000
  5019. * ERROR MESSAGES - 05017000
  5020. * 05018000
  5021. * NONE 05019000
  5022. * 05020000
  5023. *. 05021000
  5024. SPACE 3 05022000
  5025. CERROR DS 0H 05023000
  5026. MVC CCSW,ADACSW PRESERVE CSW AROUND SENSE AND LOG 05024000
  5027. TM ADACSW+4,UC TEST UNIT CHECK 05025000
  5028. BO CUNITCHK BR IF YES 05026000
  5029. TM ADACSW+4,UE TEST UNIT EXCEPTION 05027000
  5030. BO CUNITEXC BR IF YES 05028000
  5031. SPACE 1 05029000
  5032. CBADERR DS 0H ENTRY FOR UNUSUAL ERROR 05030000
  5033. BAL R14,TRERR LOG THE ERROR 05031000
  5034. B CHECKCCW GO DETERMINE I/O TYPE 05032000
  5035. EJECT 05033000
  5036. CUNITCHK DS 0H ENTRY FOR UNIT CHECK 05034000
  5037. TM ADASENSE,B'00000001' IS IT A TIMEOUT? 05035000
  5038. BO CHECKTO YES CONTINUE 05036000
  5039. BAL R14,TRERR RECORD THE ERROR 05037000
  5040. B CHECKCCW AND CONTINUE 05038000
  5041. SPACE 1 05039000
  5042. CHECKTO EQU * 05040000
  5043. OI BUFSTAT,BUFTONAK T/O ON RD,SET FOR A NAK @VA08636 05041000
  5044. BAL R14,TRTIMOT COUNT THE TIMEOUT 05042000
  5045. LH R14,TOCNT GET TIMEOUT COUNT @VA05950 05043000
  5046. LA R14,1(R14) UP BY ONE @VA05950 05044000
  5047. STH R14,TOCNT SAVE FOR LATER @VA05950 05045000
  5048. CH R14,=H'17' THRESHOLD REACHED (ABOUT 1 MIN) @VA05950 05046000
  5049. BNL EOJ @VA05950 05047000
  5050. SPACE 1 05048000
  5051. CHECKCCW EQU * 05049000
  5052. LA R14,CREWRITE PREPARE TO REWRITE 05050000
  5053. ICM R15,B'1111',CCSW GET COMMAND ADDR AND CHECK FOR ZERO 05051000
  5054. BCR 8,R14 BR IF YES TO TRY REWRITE 05052000
  5055. TM CCSW+5,CCC TEST CHANNEL CONTROL CHECK 05053000
  5056. BCR 1,R14 YES... GUESS AT REWRITE 05054000
  5057. S R15,=F'8' OTHERWISE BACK UP TO FAILED CC 05055000
  5058. CLI 0(R15),WRITE WAS IT A WRITE 05056000
  5059. BCR 8,R14 BR IF YES TO RETRY IT 05057000
  5060. CLC BUFDATA(1),COLDRCB COMPARE AGAINST LAST RCB SENT 05058000
  5061. BE CSENDNAK @VA05950 05059000
  5062. NI BUFSTAT,255-BUFTEXT OTHERWISE FORGET TEXT 05060000
  5063. B CSENDNAK @VA05950 05061000
  5064. TOCNT DC H'0' CONSECUTIVE TIMEOUT COUNTER @VA05950 05062000
  5065. SPACE 1 05063000
  5066. EJECT 05064000
  5067. * 05065000
  5068. * UNIT EXCEPTION SET 05066000
  5069. * 05067000
  5070. SPACE 3 05068000
  5071. CUNITEXC DS 0H 05069000
  5072. L R15,ADACSW GET CSW ADDR 05070000
  5073. S R15,=F'8' BACK UP TO CMD IN ERROR 05071000
  5074. MVC CUNITCMD(1),0(R15) SAVE COMMAND CODE 05072000
  5075. SPACE 1 05073000
  5076. CLI CUNITCMD,WRITE WAS THIS A WRITE... 05074000
  5077. BNE CSENDNAK BR IF NO TO FORCE RESEND (EOT REC) 05075000
  5078. SPACE 1 05076000
  5079. CDMYREAD EQU * 05077000
  5080. OI BUFSYNSW,CUWFAKE SET SWITCH TO IGNORE ERROR 05078000
  5081. BAL R15,$SIO ISSUE THE I/O 05079000
  5082. DC AL4(CCWD) WITH THIS CCW 05080000
  5083. B CREXIT AND EXIT TO AWAIT INT 05081000
  5084. EJECT 05082000
  5085. *---------------------------------------------------------------------* 05083000
  5086. * * 05084000
  5087. * IOERROR MESSAGE PRINT ROUTINE * 05085000
  5088. * * 05086000
  5089. * AT ENTRY: R1 --> TO FAILING CCW * 05087000
  5090. * * 05088000
  5091. * * 05089000
  5092. *---------------------------------------------------------------------* 05090000
  5093. SPACE 05091000
  5094. DS 0H 05092000
  5095. IOERRPRT EQU * 05093000
  5096. STM R14,R1,IOERRSV STORE REGS IN SAVE AREA 05094000
  5097. MVC IOERRLNE(8),SMLLINE STORE LINE ADDRESS IN MSG 05095000
  5098. UNPK IERRCSW1(9),ADACSW(5) SPREAD THE CSW 05096000
  5099. UNPK IERRCSW2(9),ADACSW+4(5) SPREAD THE CSW 05097000
  5100. TR IERRCSW1(16),AXSTRTAB-240 AND TRANSLATE TO HEX 05098000
  5101. MVC IERRSIO(1),ADASIOCC MOVE IN STARTIO CONDITION CODE 05099000
  5102. OI IERRSIO,X'F0' AND MAKE PRINTABLE 05100000
  5103. UNPK IERRSENS(3),ADASENSE(2) SPREAD THE DIGITS 05101000
  5104. MVI IERRSENS+2,C' ' RESTORE THE CLOBBERED BLANK 05102000
  5105. TR IERRSENS(2),AXSTRTAB-240 AND TRANSLATE TO HEX 05103000
  5106. TM ADASIOCC,X'02' BAD CONDITION? 05104000
  5107. BO IOERRPR1 YES SKIP CCW 05105000
  5108. UNPK IERRCCW1(9),0(5,R1) UNPACK THE CCW INTO MSG 05106000
  5109. UNPK IERRCCW2(9),4(5,R1) UNPACK THE CCW INTO MSG 05107000
  5110. TR IERRCCW1(16),AXSTRTAB-240 AND TRANSLATE TO HEX 05108000
  5111. IOERRPR1 EQU * 05109000
  5112. LA R0,IOERMSGL GET THE MSG LENGTH 05110000
  5113. LA R1,IOERRMSG GET THE MSG ADDR 05111000
  5114. BAL R14,MSG AND WRITE IT 05112000
  5115. MVI IERRCCW1,C'0' CLEAR FIRST BYTE 05113000
  5116. MVC IERRCCW1+1(15),IERRCCW1 AND THE REST 05114000
  5117. LM R14,R1,IOERRSV RESTORE REGISTERS 05115000
  5118. BR R14 AND RETURN 05116000
  5119. SPACE 05117000
  5120. IOERRSV DS 4F SAVE AREA 05118000
  5121. IOERRMSG DC AL2(70),AL2(0) MSG NUMBER AND SPARE 05119000
  5122. IOERRLNE DC CL8' ' LINE ADDR 05120000
  5123. IERRSIO DC CL8' ' ADAPTER SIO COND CODE 05121000
  5124. IERRCSW1 DC CL8' ' ADAPTER CSW 05122000
  5125. IERRCSW2 DC CL8' ' PART 2 OF CSW 05123000
  5126. IERRSENS DC CL8' ' ADAPTER SENSE BYTE 05124000
  5127. IERRCCW1 DC CL8'00000000' ADAPTER FAILING CCW 05125000
  5128. IERRCCW2 DC CL8'00000000' PART 2 OF CCW 05126000
  5129. IOERMSGL EQU *-IOERRMSG LENGTH OF ERROR MSG 05127000
  5130. DC CL1' ' GARBAGE BYTE 05128000
  5131. EJECT 05129000
  5132. *---------------------------------------------------------------------* 05130000
  5133. * * 05131000
  5134. * * 05132000
  5135. * EVENT TRACING ROUTINE * 05133000
  5136. * * 05134000
  5137. * ENTRY: * 05135000
  5138. * * 05136000
  5139. * TRTRAN -- TO RECORD A LINE TRANSACTION * 05137000
  5140. * TRERR -- TO RECORD A LINE ERROR * 05138000
  5141. * TRTIMOT -- TO RECORD A TIMEOUT * 05139000
  5142. * * 05140000
  5143. * * 05141000
  5144. *---------------------------------------------------------------------* 05142000
  5145. SPACE 1 05143000
  5146. DROP R6 @VA03278 05144000
  5147. USING LINKTABL,R1 GET LINK TABLE ADDRESSABILITY 05145000
  5148. SPACE 1 05146000
  5149. DS 0H 05147000
  5150. TRTRAN EQU * 05148000
  5151. STM R14,R1,TRSAVE SAVE REGISTERS 05149000
  5152. L R1,SMLLINK GET LINK TABLE ADDR 05150000
  5153. TM LFLAG,LTRALL SHOULD WE BE DOING THIS? 05151000
  5154. BNO TREXIT NO -- TIME TO EXIT 05152000
  5155. LH R15,LTRNSCNT GET THE CURRENT COUNT 05153000
  5156. LA R15,1(,R15) UP BY ONE 05154000
  5157. STH R15,LTRNSCNT AND REPLACE IN COUNT FIELD 05155000
  5158. CL R15,TRASHLD IS IT TIME TO PRINT? 05156000
  5159. BL TREXIT NO RETURN 05157000
  5160. B TRPRT GO PRINT THE MSG 05158000
  5161. SPACE 05159000
  5162. TRERR EQU * 05160000
  5163. STM R14,R1,TRSAVE SAVE REGISTERS 05161000
  5164. L R1,SMLLINK GET LINK TABLE ADDR 05162000
  5165. TM LFLAG,LTRALL+LTRERR SHOULD WE BE DOING THIS? 05163000
  5166. BZ TREXIT NO -- TIME TO EXIT 05164000
  5167. LH R15,LERRCNT GET THE CURRENT COUNT 05165000
  5168. LA R15,1(,R15) UP BY ONE 05166000
  5169. STH R15,LERRCNT AND REPLACE IN COUNT FIELD 05167000
  5170. CL R15,ERRSHLD IS IT TIME TO PRINT? 05168000
  5171. BL TREXIT NO RETURN 05169000
  5172. B TRPRT GO PRINT THE MSG 05170000
  5173. SPACE 05171000
  5174. TRTIMOT EQU * 05172000
  5175. STM R14,R1,TRSAVE SAVE REGISTERS 05173000
  5176. L R1,SMLLINK GET LINK TABLE ADDR 05174000
  5177. TM LFLAG,LTRALL+LTRERR SHOULD WE BE DOING THIS? 05175000
  5178. BZ TREXIT NO -- TIME TO EXIT 05176000
  5179. LH R15,LTOCNT GET THE CURRENT COUNT 05177000
  5180. LA R15,1(,R15) UP BY ONE 05178000
  5181. STH R15,LTOCNT AND REPLACE IN COUNT FIELD 05179000
  5182. CL R15,ERRSHLD IS IT TIME TO PRINT? 05180000
  5183. BL TREXIT NO RETURN 05181000
  5184. EJECT 05182000
  5185. TRPRT EQU * 05183000
  5186. MVC TRLINK(8),AXSLINK MOVE LINKID INTO MSG 05184000
  5187. LH R15,LTRNSCNT GET THE CURRENT COUNT 05185000
  5188. CVD R15,TRCVD CONVERT TO DECIMAL 05186000
  5189. UNPK TRMTRN,TRCVD SPREAD THE DIGITS 05187000
  5190. OI TRMTRN+7,X'F0' MAKE THE LAST ONE PRINTABLE 05188000
  5191. LH R15,LERRCNT GET THE CURRENT COUNT 05189000
  5192. CVD R15,TRCVD CONVERT TO DECIMAL 05190000
  5193. UNPK TRMERR,TRCVD SPREAD THE DIGITS 05191000
  5194. OI TRMERR+7,X'F0' MAKE THE LAST ONE PRINTABLE 05192000
  5195. LH R15,LTOCNT GET THE CURRENT COUNT 05193000
  5196. CVD R15,TRCVD CONVERT TO DECIMAL 05194000
  5197. UNPK TRMTO,TRCVD SPREAD THE DIGITS 05195000
  5198. OI TRMTO+7,X'F0' MAKE THE LAST ONE PRINTABLE 05196000
  5199. SR R15,R15 CLEAR OUT R15 05197000
  5200. STH R15,LTRNSCNT CLEAR THE COUNTER 05198000
  5201. STH R15,LERRCNT CLEAR THE COUNTER 05199000
  5202. STH R15,LTOCNT CLEAR THE COUNTER 05200000
  5203. LA R0,TRMSGL GET THE MSG LENGTH 05201000
  5204. LA R1,TRMSG GET THE MSG ADDR 05202000
  5205. BAL R14,MSG AND WRITE OUT THE MSG 05203000
  5206. SPACE 05204000
  5207. TREXIT EQU * 05205000
  5208. LM R14,R1,TRSAVE RESTORE THE REGS 05206000
  5209. BR R14 AND RETURN 05207000
  5210. SPACE 05208000
  5211. TRCVD DS D CVD AREA 05209000
  5212. TRSAVE DS 4F SAVE AREA 05210000
  5213. SPACE 05211000
  5214. TRMSG DC AL2(149),AL2(0) NUMBER PLUS SPARE 05212000
  5215. TRLINK DC CL8' ' LINKID 05213000
  5216. TRMTRN DC CL8' ' TRANSACTION COUNT 05214000
  5217. TRMERR DC CL8' ' ERROR COUNT 05215000
  5218. TRMTO DC CL8' ' TIMEOUT COUNT 05216000
  5219. TRMSGL EQU *-TRMSG LENGTH OF MSG 05217000
  5220. SPACE 05218000
  5221. TRASHLD DC F'60' THRESHOLD LEVEL FOR MSG 05219000
  5222. ERRSHLD DC F'20' THRESHOLD LEVEL FOR MSG 05220000
  5223. EJECT 05221000
  5224. *---------------------------------------------------------------------* 05222000
  5225. * * 05223000
  5226. * ADAPTER SIO ROUTINE * 05224000
  5227. * * 05225000
  5228. *---------------------------------------------------------------------* 05226000
  5229. SPACE 1 05227000
  5230. $SIO DS 0H 05228000
  5231. MVC ADCCWA+1(3),1(R15) MOVE CCW ADDRESS TO IOB 05229000
  5232. MVC CLASTCAW,0(R15) SAVE 05230000
  5233. STM R11,R2,ADSAV SAVE REGS 05231000
  5234. MVI ADASENSE,X'00' CLEAR SENSE BYTE 05232000
  5235. L R14,CLASTCAW RETRIEVE LAST CAW 05233000
  5236. CLI 0(R14),DISABLE IS IT A DISABLE? @VA04353 05234000
  5237. BE RSIO YES...DON'T LOG IT @VA04353 05235000
  5238. CLI 0(R14),READ IS IT A READ? @VA04353 05236000
  5239. BE NOTWRITE YES...DON'T BUMP POINTER @VA04353 05237000
  5240. LA R14,8(R14) POINT TO WRITE DATA CCW @VA04353 05238000
  5241. NOTWRITE MVC KCCW,0(R14) SAVE CCW @VA04353 05239000
  5242. L R14,0(R14) GET CCW ADDR 05240000
  5243. LA R1,W INDICATE WRITE TO LOG 05241000
  5244. BAL R15,KLOGIT GO LOG THE WRITE 05242000
  5245. RSIO EQU * 05243000
  5246. XC ADAECB(4),ADAECB CLEAR OUT ADAPTER SYNCH LOCK 05244000
  5247. LA R1,ADAECB GET ADAPTER IO BLOCK ADDR 05245000
  5248. L R15,IOREQ SYSTEM I/O REQUEST PROCESSOR 05246000
  5249. BALR R14,R15 GO EXECUTE THE I/O 05247000
  5250. CLI ADASIOCC,X'00' DID IT START OKAY 05248000
  5251. BE RSIO1 OKAY CONTINUE 05249000
  5252. L R1,CLASTCAW GET LAST CCW ADDR 05250000
  5253. BAL R14,IOERRPRT WRITE THE ERROR MSG 05251000
  5254. CLI ADASIOCC,NOP LINE NOT THERE? @VA08191 05252000
  5255. BE SMLCRASH YES, EXIT W/O DISABLE @VA08191 05253000
  5256. B RSIO AND RETRY 05254000
  5257. SPACE 1 05255000
  5258. RSIO1 EQU * 05256000
  5259. LM R11,R2,ADSAV RESTORE REGS 05257000
  5260. B 4(R15) BACK TO USER 05258000
  5261. EJECT 05259000
  5262. *---------------------------------------------------------------------* 05260000
  5263. * * 05261000
  5264. * LOG ROUTINE * 05262000
  5265. * * 05263000
  5266. *---------------------------------------------------------------------* 05264000
  5267. SPACE 3 05265000
  5268. USING IOTABLE,R1 GET IOTABLE ADDRSSABILITY 05266000
  5269. KTAB DC C'0123456789ABCDEF' TRANSLATE TAB 05267000
  5270. KSAV DC 6F'0' SAVE AREA 05268000
  5271. KLOGIT STM R13,R2,KSAV SAVE REGISTERS 05269000
  5272. TM $LOGSW,LOGON IS LOGING SET ON? 05270000
  5273. BNOR R15 (BN0 RSIO) NO...RETURN @VA04353 05271000
  5274. TM $LOGSW,LOGOPEN IS THE LOG DEVICE OPEN? 05272000
  5275. BO LOGCONT YES CONTINUE 05273000
  5276. LA R1,LOGBLK GET LOG REQUEST BLOCK 05274000
  5277. LA R0,X'11' INDICATE OPEN 05275000
  5278. BAL R14,AXS GO GET A DEVICE 05276000
  5279. MVC LOGLINK(8),AXSLINK SET LINKID IN MSG 05277000
  5280. LA R1,LOGTIME GET BUFFER FOR DIAG 05278000
  5281. DIAG R1,R2,X'0C' GET TIME AND DATA FROM VM 05279000
  5282. MVC LOGDTIME(8),LOGTIME MOVE TO MSG 05280000
  5283. MVC LOGDTIME+9(8),LOGTIME+8 MOVE TO MSG 05281000
  5284. L R1,LOGFIOA GET FIOA ADDR 05282000
  5285. MVC PROGADDR(4),=A(LOGHDCCW) MOVE CCW ADDR TO CAW 05283000
  5286. B WRLOG1 AND CONTINUE 05284000
  5287. SPACE 1 05285000
  5288. LOGCONT EQU * 05286000
  5289. UNPK IOLINE(15),0(8,R14) CONVERT THE FIRST PART OF BUFFER 05287000
  5290. TR IOLINE(14),KTAB-240 TO EBCDIC 05288000
  5291. UNPK IOLINE+14(15),7(8,R14) CONVERT THE SECOND PART OF BUFFER 05289000
  5292. TR IOLINE+14(14),KTAB-240 TO EBCDIC 05290000
  5293. UNPK IOLINE+28(15),14(8,R14) AND THE LAST PART 05291000
  5294. TR IOLINE+28(14),KTAB-240 TO EBCDIC 05292000
  5295. MVI IOLINE+42,C' ' RESTORE CLOBBERED BLANK 05293000
  5296. UNPK IOLINE+43(15),ADACSW+1(8) CONVERT THE CSW 05294000
  5297. TR IOLINE+43(14),KTAB-240 TO EBCDIC 05295000
  5298. MVI IOLINE+57,C' ' RESTORE CLOBBERED BLANK 05296000
  5299. UNPK IOLINE+58(7),ADAECB(4) CONVERT THE SYNCH LOCK 05297000
  5300. TR IOLINE+58(6),KTAB-240 TO EBCDIC 05298000
  5301. MVI IOLINE+64,C' ' RESTORE CLOBBERED BLANK 05299000
  5302. UNPK IOLINE+66(3),ADASENSE(2) CONVERT THE SENSE INFO @VA04353 05300000
  5303. TR IOLINE+66(2),KTAB-240 ...TO EBCDIC @VA04353 05301000
  5304. MVI IOLINE+68,C' ' RESTORE CLOBBERED BLANK @VA04353 05302000
  5305. CLI 0(R1),C'W' CHECK FOR WRITE 05303000
  5306. BE WRLOG2 CSW NOT USEFUL @VA04353 05304000
  5307. ICM R1,B'0111',ADACSW+1 LAST CCW ADDRESS @VA04353 05305000
  5308. BZ KFULL INVALID ADDRESS @VA04353 05306000
  5309. S R1,=F'8' BACK UP TO LAST CCW @VA04353 05307000
  5310. MVC KCCW,0(R1) SAVE CCW @VA04353 05308000
  5311. WRLOG2 UNPK IOLINE+70(9),KCCW(5) CCW1 @VA04353 05309000
  5312. TR IOLINE+70(8),KTAB-240 TRANSLATE @VA04353 05310000
  5313. UNPK IOLINE+78(9),KCCW+4(5) CCW2 @VA04353 05311000
  5314. TR IOLINE+78(8),KTAB-240 MAKE IT EBCDIC @VA04353 05312000
  5315. MVI IOLINE+86,C' ' RESTORE CLOBBERED BLANK @VA04353 05313000
  5316. CLI IOLINE+70,WRITE IS IT A WRITE? @VA04353 05314000
  5317. BNE WRLOG NO..MUST BE READ 05315000
  5318. L R13,KSAV RESTORE R13 05316000
  5319. UNPK IOLINE+43(15),0(8,R13) LETS SEE THE FIRST PART OF THE BU 05317000
  5320. TR IOLINE+43(14),KTAB-240 TO EBCDIC 05318000
  5321. MVI IOLINE+57,C' ' RESTORE CLOBBERED BLANK 05319000
  5322. EJECT 05320000
  5323. WRLOG EQU * 05321000
  5324. TM KCCW+4,SKIP TRANSFER SUPPRESSED? @VA04353 05322000
  5325. BO KWRITE NO BUFFER TO DISPLAY @VA04353 05323000
  5326. LH R14,KCCW+6 LOAD CCW BYTE COUNT @VA04353 05324000
  5327. CLI KCCW,WRITE IS IT A WRITE? @VA04353 05325000
  5328. BE KWRITE NOT LAST CCW @VA04353 05326000
  5329. SH R14,ADACSW+6 RESIDUAL BYTE COUNT @VA04353 05327000
  5330. KWRITE SLA R14,1 *2 FOR UNPACK @VA04353 05328000
  5331. CL R14,=F'40' MORE THAN 40 BYTES? @VA04353 05329000
  5332. BH KFULL YES...IOLINE IS FULL @VA04353 05330000
  5333. LA R1,IOLINE(R14) ADDRESS OF BLANKING AREA @VA04353 05331000
  5334. LA R14,IOLINE+41 END OF BLANKING AREA-1 @VA04353 05332000
  5335. SR R14,R1 SIZE OF BLANKING AREA-1 @VA04353 05333000
  5336. MVI 0(R1),C' ' BLANK OUT THE AREA @VA04353 05334000
  5337. EX R14,MVCBLANK @VA04353 05335000
  5338. KFULL EQU * @VA04353 05336000
  5339. L R1,LOGFIOA GET LOG DEVICE BLOCK ADDR 05337000
  5340. MVC PROGADDR(4),=A(LOGCCW) SET LOG CAW 05338000
  5341. WRLOG1 EQU * 05339000
  5342. XC IOSYNCH(4),IOSYNCH CLEAR SYNCH LOCK 05340000
  5343. L R15,IOREQ SYSTEM IO ROUTINE ADDR 05341000
  5344. BALR R14,R15 EXECUTE THE IO 05342000
  5345. L R15,WAITREQ PREPARE FOR WAIT 05343000
  5346. BALR R14,R15 AND WAIT FOR COMPLETION 05344000
  5347. MVI IOLINE,C' ' MAKE THE.... @VA04353 05345000
  5348. MVC IOLINE+1(119),IOLINE ....IOLINE BLANK @VA04353 05346000
  5349. LOGRET EQU * 05347000
  5350. LM R13,R2,KSAV RESTORE REGISTERS 05348000
  5351. TM $LOGSW,LOGOPEN IS THE LOG OPEN? @VA04353 05349000
  5352. BOR R15 YES...ALL DONE,RETURN. @VA04353 05350000
  5353. OI $LOGSW,LOGOPEN SET LOG OPEN @VA04353 05351000
  5354. B LOGCONT MAKE THE FIRST ENTRY @VA04353 05352000
  5355. DROP R1 @VA04353 05353000
  5356. DS 0H @VA04353 05354000
  5357. KCCW DC XL8'0' SAVED CCW @VA04353 05355000
  5358. MVCBLANK MVC 1(0,R1),0(R1) EXECUTED MVC @VA04353 05356000
  5359. IOLINE DC CL120' ' LOG PRINT LINE 05357000
  5360. R DC C'R' READ 05358000
  5361. W DC C'W' WRITE 05359000
  5362. SPACE 1 05360000
  5363. $LOGSW DC X'00' LOG SWITCH 05361000
  5364. * BITS DEFINED IN $LOGSW 05362000
  5365. LOGON EQU X'80' LOGING SET ON 05363000
  5366. LOGOPEN EQU X'40' LOG DEVICE OPEN 05364000
  5367. SPACE 1 05365000
  5368. DS 0F 05366000
  5369. LOGBLK DC F'0' SYNCH LOCK 05367000
  5370. DC CL4'AXS ' FILE ACCESS TASK NAME 05368000
  5371. DC A(LOGGREQ) REQUEST BUFFER ADDRESS 05369000
  5372. DC AL1(19),AL3(LOGGREQ) RESPONSE BUFFER ADDRESS 05370000
  5373. LOGGREQ DC AL1(19,0,0,0) LENGTH,FUNCTION,SPARE,SUBCODE 05371000
  5374. DC A(LOGTAG) LOG TAG ADDRESS 05372000
  5375. LOGFIOA DC A(0) FILE I/O AREA ADDRESS 05373000
  5376. DC CL8' ' LINK ID 05374000
  5377. SPACE 1 05375000
  5378. LOGTAG DC 108CL1' ' LOG TAG 05376000
  5379. SPACE 1 05377000
  5380. DS 0D 05378000
  5381. LOGCCW CCW X'09',IOLINE,SILI,120 WRITE AND SPACE 1 05379000
  5382. LOGHDCCW CCW X'19',LOGHDLNE,SILI,LOGHDRLN WRITE AND SPACE 3 05380000
  5383. SPACE 1 05381000
  5384. LOGHDLNE DC CL3' ' 05382000
  5385. DC C'D M T S M L LINE TRANSACTION LOG FOR LINK ' 05383000
  5386. LOGLINK DC CL8' ' 05384000
  5387. DC C' ON ' 05385000
  5388. LOGDTIME DC CL17' ' 05386000
  5389. LOGHDRLN EQU *-LOGHDLNE LENGTH OF HDR LINE 05387000
  5390. DS 0D 05388000
  5391. LOGTIME DC CL32' ' DIAG BUFFER 05389000
  5392. EJECT 05390000
  5393. *---------------------------------------------------------------------* 05391000
  5394. * * 05392000
  5395. * CLOSE LOG ROUTINE * 05393000
  5396. * * 05394000
  5397. *---------------------------------------------------------------------* 05395000
  5398. SPACE 1 05396000
  5399. DC 0H'0' 05397000
  5400. LOGCLOSE EQU * 05398000
  5401. TM $LOGSW,LOGOPEN IS LOG RUNNING @VA08193 05399000
  5402. BZR R14 QUICK RETURN IF NO @VA08193 05400000
  5403. STM R14,R1,LOGCLSAV SAVE REGISTERS 05401000
  5404. NI $LOGSW,255-LOGON-LOGOPEN RESET FLAGS 05402000
  5405. LA R1,LOGBLK GET LOG REQUEST BLOCK 05403000
  5406. LA R0,X'12' INDICATE CLOSE 05404000
  5407. BAL R14,AXS GET RID OF LOG DEVICE 05405000
  5408. LM R14,R1,LOGCLSAV RESTORE REGISTERS 05406000
  5409. BR R14 AND RETURN @VA08193 05407000
  5410. SPACE 1 05408000
  5411. LOGCLSAV DS 4F SAVE AREA 05409000
  5412. EJECT 05410000
  5413. SPACE 7 05411000
  5414. DS 0H 05412000
  5415. EOJ EQU * @VA05662 05413000
  5416. BAL R15,$SIO DISABLE LINE @VA08191 05414000
  5417. DC AL4(CCWOFF) USE THIS CHAN PROGRM @VA08191 05415000
  5418. LA R1,ADAECB BSC ADAPTER SYNC LOCK @VA08191 05416000
  5419. L R15,WAITREQ GO TO WAIT @VA08191 05417000
  5420. BALR R14,R15 FOR DISABLE COMPLETE @VA08191 05418000
  5421. SMLCRASH EQU * NO DISABLE ISSUED HERE @VA08191 05419000
  5422. TM MASTERSW,PRINTER PRINTER DEVICE OPEN ? @VA05662 05420000
  5423. BZ NOPRTF NO, NO PRINT FILE TO CLOSE @VA05662 05421000
  5424. LA R1,PDEVSYNC PRINTER DEVICE BLOCK @VA05662 05422000
  5425. LA R0,X'12' CLOSE FUNCTION BYTE @VA05662 05423000
  5426. BAL R14,AXS CALL AXS TO CLOSE @VA05662 05424000
  5427. NOPRTF TM MASTERSW,PUNCH PUNCH DEVICE OPEN ? @VA05662 05425000
  5428. BZ NOPUNF NO, NO PUNCH FILE TO CLOSE @VA05662 05426000
  5429. LA R1,UDEVSYNC PUNCH DEVICE BLOCK @VA05662 05427000
  5430. LA R0,X'12' CLOSE FUNCTION BYTE @VA05662 05428000
  5431. BAL R14,AXS CALL AXS TO CLOSE @VA05662 05429000
  5432. NOPUNF TM MASTERSW,JOB JOB PUNCH OPEN ? @VA05662 05430000
  5433. BZ NOJOBF NO, NO JOB PUNCH FILE TO CLOSE @VA05662 05431000
  5434. L R15,JDEVFIOA JOB PUNCH FILE BLOCK @VA05662 05432000
  5435. UNPK TAGCMD+7(5),DEVCUU-IOTABLE(3,R15) UNPACK DEV @VA05662 05433000
  5436. * ADDR 05434000
  5437. MVI TAGCMD+7,C' ' CLEAR CLOBBERED BYTE @VA05662 05435000
  5438. MVI TAGCMD+11,C' ' @VA05662 05436000
  5439. TR TAGCMD+8(3),AXSTRTAB-240 TRANSLATE TO EBCDIC @VA05662 05437000
  5440. LA R1,TAGCMD ADDRESS OF TAG COMMAND @VA05662 05438000
  5441. LA R2,TAGCMDL LENGHT @VA05662 05439000
  5442. DIAG R1,R2,8 ISSUE TAG COMMAND @VA05662 05440000
  5443. LA R1,JDEVSYNC PUNCH DEVICE BLOCK @VA05662 05441000
  5444. LA R0,X'12' CLOSE FUNCTION BYTE @VA05662 05442000
  5445. BAL R14,AXS CALL AXS TO CLOSE @VA05662 05443000
  5446. NOJOBF TM MASTERSW,READER READER OPEN ? @VA05662 05444000
  5447. BZ NORDRF NO, NO READER FILE TO CLOSE @VA05662 05445000
  5448. LA R1,RDEVSYNC READER DEVICE BLOCK @VA05662 05446000
  5449. LA R0,X'02' CLOSE FUNCTION CODE @VA05662 05447000
  5450. MVI 19(R1),X'81' CLOSE KEEP, NOHOLD OPTION @VA05662 05448000
  5451. BAL R14,AXS CALL AXS TO CLOSE @VA05662 05449000
  5452. NORDRF EQU * @VA05662 05450000
  5453. BAL R14,LOGCLOSE ENSURE LOG CLOSE @VA08193 05451000
  5454. MSG 143,(AXSLINK,SMLLINE) WRITE THE MSG 05452000
  5455. LA R1,TERMBLK GET TERMINATE GIVE BUFFER 05453000
  5456. L R15,GIVEREQ GET GIVE PROCESSOR ADDRESS 05454000
  5457. BALR R14,R15 GO EXECUTE THE REQUEST 05455000
  5458. L R15,WAITREQ GET SYSTEM WAIT ROUTINE 05456000
  5459. LA R1,LONGWAIT A VERY LONG WAIT 05457000
  5460. BALR R14,R15 WAIT A LONG TIME 05458000
  5461. SIGNOFF DC C'/*SIGNOFF' SIGNOFF CARD @VA08191 05459000
  5462. SPACE 2 05460000
  5463. DS 0F 05461000
  5464. TERMBLK DC F'0',CL4'REX ',A(TERMREQ),A(0) GIVE REQUEST BLOCK 05462000
  5465. SPACE 1 05463000
  5466. TERMREQ DC AL1(1),X'03' LENGTH,FUNCTION 05464000
  5467. LONGWAIT DC F'0' LONG WAIT SYNCH LOCK 05465000
  5468. EJECT 05466000
  5469. CBUFFER DC A(0) ACTIVE COMUNICATIONS BUFFER 05467000
  5470. CFCSOUT DC X'8FCF' LAST FCS TRANSMITTED @VA04174 05468000
  5471. CFCSSTD DC X'88C1' STANDARD FCS @VA03425 05469000
  5472. CFCSTEMP DC AL2(0) FCS COMPARE AREA @VA03301 05470000
  5473. CTEMP DC H'0' TEMPORARY STORAGE 05471000
  5474. CMAXDUP DC H'3' MAX REPEATED BLOCKS 05472000
  5475. DC AL1(0) FIRST BYTE OF HALF-WORD 05473000
  5476. CBCBCNTO DC AL1(X'80') BLOCK CHECK COUNT OUT 05474000
  5477. DC AL1(0) SPACER 05475000
  5478. CBCBCNTI DC AL1(X'80') BLOCK COUNT CHARACTER EXPECTED 05476000
  5479. DC H'0' * 05477000
  5480. CBUFLAST DC 10X'00' SAVE OF START OF LAST BUFFER 05478000
  5481. CRESP DC AL1(0) RESPONSE CHARACTER RECEIVED 05479000
  5482. CREGS DS 3F REGISTER SAVE AREA 05480000
  5483. SPACE 1 05481000
  5484. CRETREGS DS 3F SAVE AREA 05482000
  5485. $COMEXIT DC A($START) COMSUP INITIAL ENTRY POINT 05483000
  5486. SPACE 1 05484000
  5487. CBCB DC X'00' LAST BCB SENT 05485000
  5488. CSETBCB DC X'00' HERE TOO..FOR RESET 05486000
  5489. SPACE 1 05487000
  5490. DS 0F FORCE FULL-WORD ALIGNMENT 05488000
  5491. CCSW DC XL8'00' TEMP STORAGE FOR CSW 05489000
  5492. COLDRCB DC X'00' LAST RCB SENT 05490000
  5493. CUNITCMD DC X'00' COMMAND CODE STORAGE 05491000
  5494. SPACE 1 05492000
  5495. CLASTCAW DC F'0' CCW ADDR SAVE 05493000
  5496. SPACE 2 05494000
  5497. BUFSYNSW DC X'00' BUFFER SYNCHRONIZATION SWITCH 05495000
  5498. * BITS DEFINED IN BUFSYNSW 05496000
  5499. $TPPNONE EQU X'80' STOP ALL BUFFERING 05497000
  5500. OFLSW EQU X'40' FLUSH BUFFER 05498000
  5501. GDQBUFS EQU X'20' STOP DEQUEUING BUFFERS 05499000
  5502. $COMBUSY EQU X'10' COMMUNICATIONS INACTIVE 05500000
  5503. CUWFAKE EQU X'08' DUMMY READ ON FOR UE RECOVERY 05501000
  5504. CACKSW EQU X'04' ACK RECEIVED 05502000
  5505. EJECT 05503000
  5506. ADAECB DC F'0' SYNCH LOCK 05504000
  5507. ADACUU DC X'0000',AL1(1),AL1(TYP2700) 05505000
  5508. ADCCWA DC A(CCTCCW) ADAPTER CCW ADDR 05506000
  5509. ADASIOCC EQU * SIO CONDITION CODE 05507000
  5510. ADACSW DC 2F'0' ADAPTER ENDING CSW 05508000
  5511. ADASENSE DC F'0' ADAPTER SENSE BYTE 05509000
  5512. SPACE 3 05510000
  5513. ADSAV DC 8F'0' $SIO REGISTER SAVE AREA 05511000
  5514. RDCOUNT DC H'0' READ BUFFER SIZE @VA07451 05512000
  5515. DUMCOUNT DC H'0010' MAX BUFFER FOR RD COUNT @VA08578 05513000
  5516. EJECT 05514000
  5517. * CONTROL SEQUENCES 05515000
  5518. XSTXSEQ DC AL1(XLDR,XSTX) START-OF-TEXT SEQUENCE 05516000
  5519. XETBSEQ DC AL1(XTRL,XETB) END-OF-TEXT-BLOCK SEQUENCE 05517000
  5520. XACKSEQ DC AL1(XDLE,XACK0) POSITIVE ACKNOWLEDGEMENT SEQUENCE 05518000
  5521. XNAKSEQ DC AL1(XSYN,XNAK) NEGATIVE ACKNOWLEDGEMENT SEQUENCE 05519000
  5522. XSYNSEQ DC AL1(XSYN,XSYN,XSYN,XSYN) SYNCHRONIZATION SEQUENC@VA03340 05520000
  5523. SPACE 2 05521000
  5524. * CHANNEL COMMAND WORDS 05522000
  5525. SPACE 1 05523000
  5526. * NORMAL DATA WRITE WITH RETURN DATA READ 05524000
  5527. SPACE 1 05525000
  5528. CCWS CCW 1,XSYNSEQ,CD+SILI,4 SYNCHRONIZATION SEQUENCE @VA03340 05526000
  5529. CCWA CCW 1,0,CC+SILI,0 WRITE BUFFER 05527000
  5530. CCWB CCW 1,XETBSEQ,CC+SILI,2 WRITE ENDING SEQUENCE 05528000
  5531. CCWC CCW 2,0,SILI,0 READ RETURN DATA 05529000
  5532. SPACE 1 05530000
  5533. * DUMMY READ TO TURN OFF LOST DATA SENSE 05531000
  5534. SPACE 1 05532000
  5535. CCWD CCW 2,0,SILI+SKIP,65000 NON-READ A BUNCH 05533000
  5536. SPACE 1 05534000
  5537. * DISABLE COMMAND 05535000
  5538. CCWOFF CCW X'2F',0,SILI,1 DISABLE 05536000
  5539. SPACE 1 05537000
  5540. WRITE EQU X'01' ADAPTER WRITE COMMAND CODE 05538000
  5541. READ EQU X'02' ADAPTER READ COMMAND CODE 05539000
  5542. NOP EQU X'03' ADAPTER NOP COMMAND CODE 05540000
  5543. SENSE EQU X'04' ADAPTER SENSE COMMAND CODE 05541000
  5544. DISABLE EQU X'2F' ADAPTER DISABLE COMMAND @VA04353 05542000
  5545. EJECT 05543000
  5546. SPACE 2 05544000
  5547. * PROTOTYPE CTL RECORD TO TELL THAT BLOCKS ARE LOST 05545000
  5548. SPACE 1 05546000
  5549. CLOSTBLK DS 0H START 05547000
  5550. DC AL2(CLOSTEND-CLOSTBS) BUFCOUNT 05548000
  5551. DC AL1(BUFTEXT) BUFSTAT 05549000
  5552. CLOSTBS DC AL1(XLDR,XSTX) BUFSTART 05550000
  5553. CLOSTBCB DC AL1(X'80'+BCBIGNRE) BUFBCB(RECEIVED BLOCK CT ADDED 05551000
  5554. CLOSTFCS DC AL2(0) FCS 05552000
  5555. DC AL1(X'E0') RCB (CTL REC,TYPE=LOST DATA) 05553000
  5556. CLSTSRCB DC AL1(X'80') SRCB(EXPECTED BLK CT ADDED) 05554000
  5557. DC AL1(0) SCB (NULL RECORD) 05555000
  5558. DC AL1(0) RCB (END OF BLOCK) 05556000
  5559. CLOSTEND EQU * END OF PROTOTYPE 05557000
  5560. SPACE 1 05558000
  5561. CDUMMY DC A(0) NO CHAIN 05559000
  5562. DC AL2(CDUMEND-CDUMSTRT) COUNT 05560000
  5563. DC AL1(BUFFAKE) BUFSTAT 05561000
  5564. CDUMSTRT DC AL1(XLDR,XSTX) BUFSTART 05562000
  5565. DC AL1(X'80'+BCBIGNRE) BUFBCB 05563000
  5566. DC AL2(0) FCS 05564000
  5567. DC AL1(0) RCB (EOB) 05565000
  5568. CDUMEND EQU * END OF DUMMY BUFFER 05566000
  5569. SPACE 1 05567000
  5570. CUEFAKE DC A(0) BUFCHAIN 05568000
  5571. DC AL2(0) BUFCOUNT 05569000
  5572. DC AL1(BUFFAKE+BUFUCHEK) BUFFER STATUS 05570000
  5573. DC CL10' ' DUMMY AREA JUST IN CASE 05571000
  5574. SPACE 1 05572000
  5575. ICTLS DS 0H CONTROL INFO FOR BUFFER 05573000
  5576. DC AL2(ICTLE-*-3) BUFCOUNT 05574000
  5577. DC X'00' BUFSTAT 05575000
  5578. DC AL1(XLDR,XSTX) BUFSTART 05576000
  5579. DC AL1(X'80'+BCBRESET) BUFBCB (RESETS EXPECTED BLOCK CT) 05577000
  5580. DC AL2(0) FCS 05578000
  5581. DC X'F0' GENERAL CONTROL TYPE RCB 05579000
  5582. DC C'A' SIGN-ON ID 05580000
  5583. ICTXT DS 0CL80 05581000
  5584. DC CL15'/*SIGNON' 05582000
  5585. ICTXTSY DC CL6'RM000' 05583000
  5586. ICTNUM DC CL59' ' 05584000
  5587. DC AL1(0) EOR 05585000
  5588. ICTLE EQU * 05586000
  5589. SPACE 05587000
  5590. RESCARD DC C'LOGON ' LOGON CARD 05588000
  5591. RESID DC CL19' ' LOGON ID/PASSWORD @VM01162 05589000
  5592. DC C'TERM(' @VM01162 05590000
  5593. RESTERM DC C' ' TERMINAL ID @VM01162 05591000
  5594. EJECT 05592000
  5595. LTORG 05593000
  5596. EJECT 05594000
  5597. * 05595000
  5598. * FUNCTION CONTROL MASKS FOR TCTS 05596000
  5599. * 05597000
  5600. CFCS EQU X'0000' CONTROL RECORD PROCESSOR 05598000
  5601. SPACE 1 05599000
  5602. PFCS1 EQU X'0800' PRINTER 1 05600000
  5603. PFCS2 EQU X'0400' PRINTER 2 05601000
  5604. PFCS3 EQU X'0200' PRINTER 3 05602000
  5605. PFCS4 EQU X'0100' PRINTER 4 05603000
  5606. PFCS5 EQU X'0008' PRINTER 5 05604000
  5607. PFCS6 EQU X'0004' PRINTER 6 05605000
  5608. PFCS7 EQU X'0002' PRINTER 7 05606000
  5609. SPACE 1 05607000
  5610. UFCS1 EQU X'0001' PUNCH 1 05608000
  5611. UFCS2 EQU X'0002' PUNCH 2 05609000
  5612. UFCS3 EQU X'0004' PUNCH 3 05610000
  5613. UFCS4 EQU X'0008' PUNCH 4 05611000
  5614. UFCS5 EQU X'0100' PUNCH 5 05612000
  5615. UFCS6 EQU X'0200' PUNCH 6 05613000
  5616. UFCS7 EQU X'0400' PUNCH 7 05614000
  5617. SPACE 1 05615000
  5618. WFCS1 EQU X'0040' CONSOLE 05616000
  5619. OFCS1 EQU X'0000' OPERATOR COMMAND FCS 05617000
  5620. SPACE 1 05618000
  5621. RFCS1 EQU X'0800' READER FUNCTION 1 05619000
  5622. RFCS2 EQU X'0400' READER FUNCTION 2 05620000
  5623. RFCS3 EQU X'0200' READER FUNCTION 3 05621000
  5624. RFCS4 EQU X'0100' READER FUNCTION 4 05622000
  5625. RFCS5 EQU X'0008' READER FUNCTION 5 05623000
  5626. RFCS6 EQU X'0004' READER FUNCTION 6 05624000
  5627. RFCS7 EQU X'0002' READER FUNCTION 7 05625000
  5628. SPACE 1 05626000
  5629. WAITABIT EQU X'4000' WAIT-A-BIT 05627000
  5630. EJECT 05628000
  5631. * 05629000
  5632. * RECORD CONTROL BYTES 05630000
  5633. * 05631000
  5634. CRCB EQU X'80' CONTROL RECORD CONTROL BYTE 05632000
  5635. SPACE 1 05633000
  5636. PRCB1 EQU X'94' STREAM 1 PRINT RECORDS 05634000
  5637. PRCB2 EQU X'A4' STREAM 2 PRINT RECORDS 05635000
  5638. PRCB3 EQU X'B4' STREAM 3 PRINT RECORDS 05636000
  5639. PRCB4 EQU X'C4' STREAM 4 PRINT RECORDS 05637000
  5640. PRCB5 EQU X'D4' STREAM 5 PRINT RECORDS 05638000
  5641. PRCB6 EQU X'E4' STREAM 6 PRINT RECORDS 05639000
  5642. PRCB7 EQU X'F4' STREAM 7 PRINT RECORDS 05640000
  5643. SPACE 1 05641000
  5644. URCB1 EQU X'95' STREAM 1 PUNCH RECORDS 05642000
  5645. URCB2 EQU X'A5' STREAM 2 PUNCH RECORDS 05643000
  5646. URCB3 EQU X'B5' STREAM 3 PUNCH RECORDS 05644000
  5647. URCB4 EQU X'C5' STREAM 4 PUNCH RECORDS 05645000
  5648. URCB5 EQU X'D5' STREAM 5 PUNCH RECORDS 05646000
  5649. URCB6 EQU X'E5' STREAM 6 PUNCH RECORDS 05647000
  5650. URCB7 EQU X'F5' STREAM 7 PUNCH RECORDS 05648000
  5651. SPACE 1 05649000
  5652. WRCB1 EQU X'91' MESSAGE TO TERM OPERATOR 05650000
  5653. ORCB1 EQU X'92' OPERATOR COMMAND RCB 05651000
  5654. SPACE 1 05652000
  5655. RRCB1 EQU X'93' STREAM 1 05653000
  5656. RRCB2 EQU X'A3' STREAM 2 05654000
  5657. RRCB3 EQU X'B3' STREAM 3 05655000
  5658. RRCB4 EQU X'C3' STREAM 4 05656000
  5659. RRCB5 EQU X'D3' STREAM 5 05657000
  5660. RRCB6 EQU X'E3' STREAM 6 05658000
  5661. RRCB7 EQU X'F3' STREAM 7 05659000
  5662. EJECT 05660000
  5663. SPACE 3 05661000
  5664. * CONTROL CHARACTERS 05662000
  5665. SPACE 2 05663000
  5666. XSOH EQU X'01' START OF HEADING 05664000
  5667. XSTX EQU X'02' START OF TEXT 05665000
  5668. XETX EQU X'03' END OF TEXT 05666000
  5669. XDLE EQU X'10' DATA LINK ESCAPE 05667000
  5670. XETB EQU X'26' END OF TEXT BLOCK 05668000
  5671. XENQ EQU X'2D' ENQUIRY 05669000
  5672. XSYN EQU X'32' SYNCHRONIZATION 05670000
  5673. XEOT EQU X'37' LOST BLOCK ALARM 05671000
  5674. XNAK EQU X'3D' NEGATIVE ACKNOWLEDGEMENT 05672000
  5675. XACK1 EQU X'61' POSITIVE ACKNOWLEDGEMENT-CONDITIONAL 05673000
  5676. XACK0 EQU X'70' POSITIVE ACKNOWLEDGEMENT 05674000
  5677. XLDR EQU XDLE TRANSPARENT HEADER 05675000
  5678. XTRL EQU XDLE TRANSPARENT TRAILER 05676000
  5679. XCHN EQU X'60' TRANSPARENT CCW CHAINING BITS 05677000
  5680. SPACE 2 05678000
  5681. * BLOCK CONTROL BYTE INDICATORS 05679000
  5682. SPACE 2 05680000
  5683. BCBIGNRE EQU X'10' IGNORE BLOCK COUNT INDICATOR 05681000
  5684. BCBRESET EQU X'20' RESET BLOCK COUNT INDICATOR 05682000
  5685. EJECT 05683000
  5686. TCTDSECT DSECT 05684000
  5687. SPACE 1 05685000
  5688. *** TCT - TASK CONTROL TABLE 05686000
  5689. * 05687000
  5690. * 0 +-----------------------+-----------------------+ 05688000
  5691. * | TCTSTRT | TCTENTY | 05689000
  5692. * 4 +-----------------------+-----------------------+ 05690000
  5693. * | TCTRTN | 05691000
  5694. * 8 +-----------+-----------------------------------+ 05692000
  5695. * | TCTCCW | TCTDATA | 05693000
  5696. * C +-----------+-----------+-----------------------+ 05694000
  5697. * | TCTFLAG | TCTOPCOD | TCTCCWCT | 05695000
  5698. * 10 +-----------+-----------+-----------+-----------+ 05696000
  5699. * | TCTECB | TCTSTAT | TCTWFB | | 05697000
  5700. * 14 +-----------+-----------+-----------+-----------+ 05698000
  5701. * | TCTFCS | TCTRCBR | TCTRCBT | 05699000
  5702. * 18 +-----------------------+-----------+-----------+ 05700000
  5703. * | TCTCOM | 05701000
  5704. * 1C +-----------------------------------------------+ 05702000
  5705. * | TDEVSYNC | 05703000
  5706. * 20 +-----------------------------------------------+ 05704000
  5707. * | TDEVREQN | 05705000
  5708. * 24 +-----------------------------------------------+ 05706000
  5709. * | TDEVREQ | 05707000
  5710. * 28 +-----------------------------------------------+ 05708000
  5711. * | TDEVRESP | 05709000
  5712. * 2C +-----------+-----------+-----------+-----------+ 05710000
  5713. * | TDEVRLEN | TDEVFUN | TDEVRESV | TDEVSOPT | 05711000
  5714. * 30 +-----------+-----------+-----------+-----------+ 05712000
  5715. * | TDEVTAG | 05713000
  5716. * 34 +-----------------------------------------------+ 05714000
  5717. * | TDEVFIOA | 05715000
  5718. * 38 +-----------------------------------------------+ 05716000
  5719. * | TDEVLINK | 05717000
  5720. * 3C +-----------+-----------+-----------+-----------+ 05718000
  5721. * | TSW1 | TSW2 | TSW3 | TSW4 | 05719000
  5722. * 40 +-----------+-----------+-----------+-----------+ 05720000
  5723. * | | 05721000
  5724. * | TCTTOVM | 05722000
  5725. * | | 05723000
  5726. * 48 +-----------------------------------------------+ 05724000
  5727. * | TCTTANK | 05725000
  5728. * 4C +-----------------------------------------------+ 05726000
  5729. * | TCTBUFER | 05727000
  5730. * 50 +-----------+-----------+-----------+-----------+ 05728000
  5731. * | TCTTNKLM | TCTTNKCT | TCTBUFLM | TCTBUFCT | 05729000
  5732. * 54 +-----------+-----------+-----------+-----------+ 05730000
  5733. * 05731000
  5734. *** TCT - TASK CONTROL TABLE 05732000
  5735. SPACE 1 05733000
  5736. TTCT DS 0H 05734000
  5737. TCTSTRT DS CL2 B TO PROPER PROCESSOR ENTRY 05735000
  5738. TCTENTY DS CL2 ADR PORTION ***MODIFIED BY PROCE 05736000
  5739. TCTRTN DS CL4 B TO NEXT PROCESSOR VIA COMMUTAT 05737000
  5740. TCTCCW DS CL1 CCW FOR DEVICE OP-CODE 05738000
  5741. TCTDATA DS AL3 ADDRESS OF DATA TRANSFERRED 05739000
  5742. TCTFLAG DS CL1 FLAGS ON CCW 05740000
  5743. TCTOPCOD DS CL1 SAVE AREA FOR CCW OP-CODE 05741000
  5744. TCTCCWCT DS AL2 CCW COUNT OF DATA TRANSFERRED 05742000
  5745. TCTECB DS CL1 EVENT CONTROL 05743000
  5746. TCTSTAT DS CL1 STATUS FLAGS 05744000
  5747. TCTWFB DS AL1 WAITING FOR BUFFERS 05745000
  5748. TCTSAV1 DS 1F SAVE AREA FOR PROCESSOR ROUTINE 05746000
  5749. TCTNEXT DS 1F NEXT TCT IN CHAIN 05747000
  5750. TCTFCS DS AL2 FUNCTION CONTROL SEQUENCE MASK 05748000
  5751. TCTRCBR DS CL1 RECV RECORD CONTROL BLOCK 05749000
  5752. TCTRCBT DS CL1 TRANS RECORD CONTROL BLOCK 05750000
  5753. TCTCOM DS 1F POINTER BACK TO COMMUTATOR 05751000
  5754. TDEVSYNC DS 1F SYNCH LOCK 05752000
  5755. TDEVREQN DS CL4 FILE ACCESS NAME 05753000
  5756. TDEVREQ DS 1A REQUEST BUFFER ADDRESS 05754000
  5757. TDEVRESP DS 1A RESPONSE BUFFER 05755000
  5758. TDEVRLEN DS AL1 REQUEST LENGTH 05756000
  5759. TDEVFUN DS AL1 REQUEST FUNCTION 05757000
  5760. TDEVRESV DS AL1 RESERVED BYTE 05758000
  5761. TDEVSOPT DS AL1 SUB OPTION BYTE 05759000
  5762. TDEVTAG DS 1A TAG ADDRESS 05760000
  5763. TDEVFIOA DS 1A FILE I/O AREA 05761000
  5764. TDEVLINK DS CL8 LINK NAME 05762000
  5765. TSW1 DS AL1 DEVICE SWITCH 1 05763000
  5766. TSW2 DS AL1 DEVICE SWITCH 2 05764000
  5767. TSW3 DS AL1 DEVICE SWITCH 3 05765000
  5768. TSW4 DS AL1 DEVICE SWITCH 4 05766000
  5769. TCTTOVM DS CL8 VM OUTPUT DESTINATION 05767000
  5770. * 05768000
  5771. * NORMAL DEVICE EXTENTION 05769000
  5772. * 05770000
  5773. TCTTANK DS 1F NEXT TANK TO OUTPUT 05771000
  5774. TCTBUFER DS 1F ADDR OF CURRENT BUFFER 05772000
  5775. * 05773000
  5776. * TNKLM,TNKCT AND BUFLM,BUFCT MUST APPEAR IN SEQ AND STRT 05774000
  5777. * ON HALF WORD BOUNDARIES 05775000
  5778. TCTTNKLM DS CL1 MAX NUM OF TANKS ASSIGNABLE TO 05776000
  5779. TCTTNKCT DS CL1 CURRENT NUM ASSIGNED 05777000
  5780. TCTBUFLM DS CL1 MAX NUM OF BUFFERS ASSIGNABLE 05778000
  5781. TCTBUFCT DS CL1 CURRENT NUM ASSIGNED 05779000
  5782. EJECT 05780000
  5783. * 05781000
  5784. * TCTSTAT BIT DEFINITIONS 05782000
  5785. * 05783000
  5786. TCT1052 EQU X'10' TCT STATUS FLAGS FOR 1052 05784000
  5787. TCTREL EQU X'04' INTERLOCK RELEASE REQ FOR CONSOLE 05785000
  5788. TCTOPEN EQU X'80' TCT OPEN BIT 05786000
  5789. TCTACT EQU X'40' ACTION REQUIRED ON THIS TCT 05787000
  5790. SPACE 2 05788000
  5791. *** TCTECB BIT DEFINITIONS 05789000
  5792. SPACE 2 05790000
  5793. TCTBUSY EQU X'10' DEVICE BUSY BIT 05791000
  5794. EJECT 05792000
  5795. BUFDSECT DSECT 05793000
  5796. SPACE 1 05794000
  5797. *** BUFFER - TELECOMMUNICATIONS BUFFER 05795000
  5798. * 05796000
  5799. * 0 +-----------------------------------------------+ 05797000
  5800. * | BUFCHAIN | 05798000
  5801. * 4 +-----------------------+-----------------------+ 05799000
  5802. * | BUFCOUNT | BUFSTAT | BUFSTART | 05800000
  5803. * 8 +-----------+-----------+-----------------------+ 05801000
  5804. * | BUFSTART | BUFBCB | BUFFCS | 05802000
  5805. * C +-----------+-----------+-----------------------+ 05803000
  5806. * | | 05804000
  5807. * | BUFDATA | 05805000
  5808. * | | 05806000
  5809. * +-----------------------------------------------+ 05807000
  5810. * 05808000
  5811. *** BUFFER - TELECOMMUNICATIONS BUFFER 05809000
  5812. SPACE 1 05810000
  5813. BUFBEGIN DS 0F BEGINNING OF THE BUFFER 05811000
  5814. BUFCHAIN DC A(0) BUFFER CHAIN FIELD 05812000
  5815. BUFCOUNT DS 1H COUNT OF BYTES TO TRANSMIT 05813000
  5816. BUFSTAT DS 1C BUFFER STATUS BYTE 05814000
  5817. BUFSTART DS CL2 TRANSMISSION CONTROL BYTES 05815000
  5818. BUFBCB DS 1C BLOCK CONTROL BYTE 05816000
  5819. BUFFCS DS CL2 FUNCTION CONTROL SEQUENCE 05817000
  5820. BUFDATA DS 0F DATA PORTION OF TP BUFFER 05818000
  5821. SPACE 1 05819000
  5822. * BUFFER STATUS BIT DEFINITIONS 05820000
  5823. BUFFAKE EQU X'01' DUMMY BUFFER INDICATOR 05821000
  5824. BUFRESP EQU X'02' RESPONSE ONLY IN BUFFER 05822000
  5825. BUFNAK EQU X'04' NAK RESPONSE BEING SENT 05823000
  5826. BUFTEXT EQU X'08' BUFFER CONTAINS TEXT INFORMATION 05824000
  5827. BUFUCHEK EQU X'10' UNIT CHECK EXPECTED 05825000
  5828. BUFTONAK EQU X'20' T/O ON RD CCW INDICATOR @VA08636 05826000
  5829. EJECT 05827000
  5830. TANKDSEC DSECT 05828000
  5831. SPACE 1 05829000
  5832. *** TANKDSECT - UNIT RECORD TANK 05830000
  5833. * 05831000
  5834. * 0 +-----------------------------------------------+ 05832000
  5835. * | TANKCHN | 05833000
  5836. * 4 +-----------+-----------+-----------------------+ 05834000
  5837. * | TANKRCB | TANKSRCB | TANKCNT | 05835000
  5838. * 8 +-----------+-----------+-----------------------+ 05836000
  5839. * | | 05837000
  5840. * | TANKDATA | 05838000
  5841. * | | 05839000
  5842. * +-----------------------------------------------+ 05840000
  5843. * 05841000
  5844. *** TANKDSECT - UNIT RECORD TANK 05842000
  5845. SPACE 1 05843000
  5846. TANKCHN DC A(0) TANK CHAIN FIELD 05844000
  5847. TANKRCB DS 1C TANK RECORD CONTROL BYTE 05845000
  5848. TANKSRCB DS 1C TANK SUB-RECORD CONTROL BYTE 05846000
  5849. TANKCNT DS 1H COUNT OF DATA BYTES IN TANK 05847000
  5850. TANKDATA DS CL200 DATA AREA IN THE TANK @VM01163 05848000
  5851. TANKEND DS 0F FORCE NEXT TO WORD BOUNDARY 05849000
  5852. EJECT 05850000
  5853. COPY SVECTORS 05851000
  5854. EJECT 05852000
  5855. COPY TASKE 05853000
  5856. EJECT 05854000
  5857. COPY LINKTABL 05855000
  5858. EJECT 05856000
  5859. COPY IOTABLE 05857000
  5860. SPACE 1 05858000
  5861. ECBSKIP EQU X'40' SKIP THIS SYNCH LOCK IN LIST 05859000
  5862. EJECT 05860000
  5863. COPY TAG 05861000
  5864. EJECT 05862000
  5865. COPY RSSEQU 05863000
  5866. EJECT 05864000
  5867. COPY DEVTYPES 05865000
  5868. EJECT 05866000
  5869. COPY SPOOL 05867000
  5870. END DMTSML 05868000