Table of Contents

DMTNPT Source

References

Source Listing

DMTNPT.ASSEMBLE.txt
  1. NPT TITLE 'DMTNPT (RSCS) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE INPUT FILE SEQUENCEING 00002000
  3. *. 00003000
  4. * MODULE NAME - 00004000
  5. * 00005000
  6. * DMTNPT 00006000
  7. * 00007000
  8. * FUNCTION - 00008000
  9. * 00009000
  10. * THIS RSCS LINE DRIVER PROVIDES SUPPORT FOR THE 2770, 00010000
  11. * 2780, 3770, AND 3780 TYPE NON-PROGRAMMABLE TERMINALS. 00011000
  12. * 00012000
  13. * ATTRIBUTES - 00013000
  14. * 00014000
  15. * NON-REUSABLE 00015000
  16. * 00016000
  17. * ENTRY POINTS - 00017000
  18. * 00018000
  19. * NPTINIT - AT LINE DRIVER INITIALIZATION TIME 00019000
  20. * 00020000
  21. * ENTRY CONDITIONS - 00021000
  22. * 00022000
  23. * R0 - CONTAINS THE LENGTH OF THE PARM FIELD 00023000
  24. * R1 - CONTAINS THE ADDR OF THE START OF THE PARM FIELD 00024000
  25. * R2 - CONTAINS THE ADDR OF THE LINK TABLE ENTRY FOR THIS TASK 00025000
  26. * 00026000
  27. * EXIT CONDITIONS - 00027000
  28. * 00028000
  29. * NORMAL - REQUEST TO DMTREX TO TERMINATE THE TASK 00029000
  30. * ERROR - REQUEST TO DMTREX TO TERMINATE THE TASK 00030000
  31. * 00031000
  32. EJECT 00032000
  33. * 00033000
  34. * CALLS TO OTHER ROUTINES - 00034000
  35. * 00035000
  36. * SEE BEGINNING OF EACH SECTION 00036000
  37. * 00037000
  38. * EXTERNAL REFERENCES - 00038000
  39. * 00039000
  40. * TLINKS - LINK TABLE CHAIN 00040000
  41. * TCOM - COMMON ROUTINE VECTOR TABLE 00041000
  42. * 00042000
  43. * TABLES / WORKAREAS - 00043000
  44. * 00044000
  45. * DEVTABLE - DEVICE TABLE 00045000
  46. * REQBLOCK - DEVICE REQUEST BLOCK 00046000
  47. * 00047000
  48. * 00048000
  49. * REGISTER USAGE - 00049000
  50. * 00050000
  51. * ALL SUBROUTINES IN THE MODULE CONFORM GENERALLY TO THIS USAGE; 00051000
  52. * ANY INDIVIDUAL DEVIATIONS OR EXTENSIONS ARE LISTED WITH THE 00052000
  53. * COMMAND DESCRIPTION 00053000
  54. * 00054000
  55. * GPR0 = WORK 00055000
  56. * GPR1 = WORK 00056000
  57. * GPR2 = REQBLOCK ADDRESSABILITY 00057000
  58. * GPR3 = WORK 00058000
  59. * GPR4 = WORK 00059000
  60. * GPR5 = WORK 00060000
  61. * GPR6 = WORK 00061000
  62. * GPR7 = LINKTABLE ADDRESSABILITY 00062000
  63. * GPR8 = WORK 00063000
  64. * GPR9 = BASE 00064000
  65. * GPR10 =BASE 00065000
  66. * GPR11 =BASE 00066000
  67. * GPR12 =BASE 00067000
  68. * GPR13 =DEVTABLE ADDRESSABILITY 00068000
  69. * GPR14 =RETURN ON INTERNAL CALL 00069000
  70. * GPR15 =COMMON ROUTINE ADDRESSABILITY 00070000
  71. * 00071000
  72. * NOTES - 00072000
  73. * 00073000
  74. * NONE 00074000
  75. * 00075000
  76. * 00076000
  77. *. 00077000
  78. EJECT 00078000
  79. DMTNPT CSECT 00079000
  80. SPACE 3 00080000
  81. NPTSAVE DC 0D'0' BEGINNING OF NPT LINE DRIVER SA 00081000
  82. SPACE 00082000
  83. NPTPSW DC X'FF04',AL2(0),A(NPTINIT) INITIAL PSW FOR DISPATCH 00083000
  84. SPACE 00084000
  85. NPTREG0 DC F'0' INITIAL REGISTER CONTENTS 00085000
  86. NPTREG1 DC F'0' 00086000
  87. NPTREG2 DC F'0' 00087000
  88. NPTREG3 DC F'0' 00088000
  89. NPTREG4 DC F'0' 00089000
  90. NPTREG5 DC F'0' 00090000
  91. NPTREG6 DC F'0' 00091000
  92. NPTREG7 DC F'0' 00092000
  93. NPTREG8 DC F'0' 00093000
  94. NPTREG9 DC A(DMTNPT+X'3000') BASE REGISTER FOR FOURTH PAGE 00094000
  95. NPTREG10 DC A(DMTNPT+X'2000') BASE REGISTER FOR THIRD PAGE 00095000
  96. NPTREG11 DC A(DMTNPT+X'1000') BASE REGISTER FOR SECOND PAGE 00096000
  97. NPTREG12 DC A(DMTNPT) BASE REGISTER FOR FIRST PAGE 00097000
  98. NPTREG13 DC A(0) ADR OF TASK TAB 00098000
  99. NPTREG14 DC F'0' 00099000
  100. NPTREG15 DC A(NPTINIT) ENTRY ADDRESS AT INITIATION 00100000
  101. SPACE 00101000
  102. REQLOCK DC F'0' SYNCH LOCK FOR REQUEST ARRIVAL 00102000
  103. SPACE 00103000
  104. USING DMTNPT,R12 DEFINE FIRST PAGE ADDRESSABILITY 00104000
  105. USING DMTNPT+X'1000',R11 DEFINE SECOND PAGE ADDRESSABILITY 00105000
  106. USING DMTNPT+X'2000',R10 DEFINE THIRD PAGE ADDRESSABILITY 00106000
  107. USING DMTNPT+X'3000',R9 DEFINE THIRD PAGE ADDRESSABILITY 00107000
  108. SPACE 00108000
  109. USING REQBLOCK,R2 ESTABLISH REQUEST BLOCK DSECT ADDRES 00109000
  110. USING DEVTABLE,R13 ESTABLISH DEVICE TABLE DSECT ADDRESS 00110000
  111. USING SVECTORS,0 ESTABLISH LOW CORE ADDRESSABILITY 00111000
  112. USING LINKTABL,R7 GET LINK TABLE ADDRESSABILITY 00112000
  113. USING COMDSECT,R15 GET COMMON ROUTINE LIST ADDR 00113000
  114. EJECT 00114000
  115. *. 00115000
  116. * 00116000
  117. * ENTRY NAME - 00117000
  118. * 00118000
  119. * NPTGET 00119000
  120. * 00120000
  121. * FUNCTION - 00121000
  122. * 00122000
  123. * TO MAINTAIN CYCLIC CONTROL ON THE DMTNPT TASK ON BOTH 00123000
  124. * SENDING AND RECEIVING OPERATIONS. 00124000
  125. * 00125000
  126. * CALLS TO OTHER ROUTINES - 00126000
  127. * 00127000
  128. * NONE 00128000
  129. * 00129000
  130. * OPERATION - 00130000
  131. * 00131000
  132. * 1. TEST FOR DRAIN, HOLD, OR QUEUED MESSAGES. 00132000
  133. * 00133000
  134. * 2. TRY TO GET A FILE TO SEND, IF ONE IS FOUND INITIALIZE 00134000
  135. * TRANSMITTING SECTION. 00135000
  136. * 00136000
  137. * 3. IF ENQ IS RECEIVED FROM A READ INITIAL INITIALIZE 00137000
  138. * TRANSMITTING SECTION. 00138000
  139. * 00139000
  140. * 4. PROCESS PROCESS BUFFERS AND TRANSMIT TO REMOTE STATION. 00140000
  141. * 00141000
  142. * 5. RECEIVED BUFFERS ARE PASSED TO CKBUFF. 00142000
  143. * 00143000
  144. * RESPONSES - 00144000
  145. * 00145000
  146. * NONE 00146000
  147. * 00147000
  148. * ERROR MESSAGES - 00148000
  149. * 00149000
  150. * NONE 00150000
  151. * 00151000
  152. *. 00152000
  153. SPACE 3 00153000
  154. NPTGET EQU * 00154000
  155. TM NPTFLAGS,RENBL ARE WE REENABLING @VA07213 00154300
  156. BO NPTSTART DONT WANT NEW BLOCK @VA07213 00154500
  157. L R7,NPTALINK GET LINK TABLE ADDR 00155000
  158. TM LFLAG,LHOLD IS A LINK HOLD REQUESTED? @VM01139 00156000
  159. BO NPTDINIT YES @VM01139 00157000
  160. TM NPTFLAGS,MSGSEND SENDING A FILE? 00158000
  161. BO NPTGET1 CANT DO ANY OF THIS 00159000
  162. TM LFLAG,LDRAIN IS A LINK DRAIN REQUESTED? 00160000
  163. BO LINEDIS1 YES...EXIT 00161000
  164. TM GETFLAGS,MSGQUED ARE THERE ANY MSGS QUEUED? 00162000
  165. BNO NPTGET1 NO CONTINUE 00163000
  166. BAL R14,MSGPROC GO PROCESS THEM 00164000
  167. EJECT 00165000
  168. NPTGET1 EQU * 00166000
  169. BAL R14,GETBLOCK TRY TO GET SOMETHING TO SEND 00167000
  170. SPACE 1 00168000
  171. * GETBLOCK RETURN HERE IF THERE IS SOMETHING 00169000
  172. B NPTSTART BUFFER IS FILLED - START TALKING 00170000
  173. SPACE 1 00171000
  174. * GETBLOCK RETURN HERE IF THERE IS NOTHING 00172000
  175. * 00172100
  176. * IF LAST READ INIT TIMED OUT TAKE A DELAY TO 00172200
  177. * PREVENT CONTINUOUS POLLING 00172300
  178. * 00172400
  179. TM DEVSENSE,TIMEOUT WAS LAST ERROR A TIMEOUT @VA04358 00172500
  180. BZ NPTDINIT NO, TRY TO MAKE CONNECTION @VA04358 00172600
  181. LA R0,10 TEN SECOND DELAY @VA04358 00172700
  182. BAL R14,TDELAY GO TAKE TEN @VA04358 00172800
  183. * 00172900
  184. NPTDINIT EQU * 00173000
  185. MVC DEVSTART(4),=A(READINIT) READ INITIAL PROGRAM @VA03349 00174000
  186. BAL R14,LINEIO START READING LINE 00175000
  187. TM DEVFLAGS,IOERR DID WE READ ANYTHING SUCCESSFULLY? 00176000
  188. BO NPTGET NO-TRY GETNG A BLK READ AGAIN 00177000
  189. CLI INIT,ENQ WAS IT AN ENQUIRY @VA03349 00178000
  190. BNE NPTDINIT NOPE - READ AGAIN 00179000
  191. EJECT 00180000
  192. * RECEIVING - INITIALIZATION 00181000
  193. SPACE 00182000
  194. NPTACK0 EQU * 00183000
  195. LA R15,RETRYNUM SET THE RETRY REGISTER 00184000
  196. MVC EXPRESP(2),INITACK0 SET UP INITIAL EXP RESP @VA03349 00185000
  197. MVC RESP(2),INITACK0 SET UP INITIAL RESP @VA03349 00186000
  198. MVC DEVSTART(4),=A(RECEIVE) SET UP RESPONSE PROG @VA03349 00187000
  199. BAL R14,LINEIO WRITE DLE,ACK0 AND LISTEN 00188000
  200. TM DEVFLAGS,IOERR EVERYTHING O.K.? 00189000
  201. BNO CKBUFF YES-BLOCK MUST BE IN BUFFER 00190000
  202. TM DEVCSW+4,UC WAS IT A UNIT CHECK? 00191000
  203. BNO NPTEOT NO-MUST BE CONTENTION-TRY AGAIN 00192000
  204. TM DEVSENSE,TIMEOUT IS IT TIMEOUT? 00193000
  205. BO NPTEOT YES-RES THE LNE AND TRY AGAIN 00194000
  206. B NPTNAK OTHERWISE MUST BE LINE ERRORS 00195000
  207. EJECT 00196000
  208. * TRANSMITTING - INITIALIZATION 00197000
  209. SPACE 00198000
  210. NPTSTART EQU * 00199000
  211. MVC EXPRESP(2),INITACK0 SET UP INITIAL EXPECTED RESP@VA03349 00200000
  212. MVC RESP(2),INITACK0 AND INITIAL RESPONSE @VA03349 00201000
  213. NPTSTAR2 EQU * @VA03349 00202000
  214. LA R15,RETRYNUM SET RETRY COUNT 00203000
  215. NPTSTAR1 EQU * 00204000
  216. MVC DEVSTART(4),=A(ENQPROG) ENQ SEQ PROG ADDR TO DEV TABLE 00205000
  217. BAL R14,LINEIO WRITE ENQ AND LISTEN FOR DLE,ACK0 00206000
  218. TM DEVFLAGS,IOERR ANY ERRORS? 00207000
  219. BNO NPTENQOK NOPE - FULL SPEED AHEAD 00208000
  220. TM DEVCSW+4,UC WAS PROBLEM A UNIT CHECK? 00209000
  221. BNO NPTDINIT NO-MUST BE CONTENTION-READ WHILE 00210000
  222. TM DEVSENSE,TIMEOUT IS IT TIMEOUT? 00211000
  223. BNO NPTSTAR2 NO, TRY AGAIN @VA03349 00212000
  224. BCTR R15,0 YES - UPDATE THE TIMEOUT COUNTER 00213000
  225. LTR R15,R15 END OF RETRY? 00214000
  226. BP NPTSTAR1 NO TRY AGAIN 00215000
  227. BAL R14,SENDEOT YES - RESET LINE SENDING EOT 00216000
  228. B NPTSTAR2 AND TRY ONCE MORE @VA03349 00217000
  229. SPACE 00218000
  230. NPTENQOK EQU * 00219000
  231. CLC RESP(2),EXPRESP WAS RESPONSE CORRECT @VA03349 00220000
  232. BE NPTCHAR RIGHT INTO THE BIG LOP IF IT WAS 00221000
  233. CLI RESP,ENQ DID WE GET AN ENQ BACK @VA03349 00222000
  234. BE NPTACK0 YES - SEND DLE,ACK0 @VA04171 00222500
  235. CLI RESP,NAK IS HE NOT READY @VA03349 00223000
  236. BNE CKFEOT NO, CONTINUE @VA03349 00224000
  237. LA R0,5 TAKE A FIVE SECOND REST @VA03349 00225000
  238. BAL R14,TDELAY @VA03349 00226000
  239. B NPTSTAR1 @VA03349 00227000
  240. CKFEOT CLI RESP,EOT WAS IT AN END OF XMISSION @VA03349 00228000
  241. BE NPTDINIT YES, START FROM THE TOP @VA03349 00229000
  242. CLC RESP(2),=AL1(DLE,RVI) IS HIS BUFFER FULL OF DATA@VA03349 00230000
  243. BE NPTACK0 GO LET HIM TALK @VA03349 00231000
  244. B NPTSTAR1 GARBAGE RESPONSE, ENQ AGAIN @VA03349 00232000
  245. SPACE 00233000
  246. NPTCHAR EQU * 00234000
  247. XI EXPRESP+1,X'11' SWITCH THE EXPECTED RESP @VA03349 00235000
  248. DORESEL EQU * @VA03349 00236000
  249. TM NPTFLAGS,MSGSEND IS THERE AN ACTIVE FILE @VA03349 00237000
  250. BZ MSGDOA NO, MUST BE TROUBLE IN MSG SEND @VA04171 00238500
  251. TM DEVFEAT,REM2780 IS THE REM.DEV. A 2780? 00239000
  252. BO NO2770 YES - SKIP NEXT CODE 00240000
  253. TM DEVFEAT,REM3770 IS IT A 3770 @VA03349 00241000
  254. BZ NOT3770 NO, USE DC1 SELECTION @VA03349 00242000
  255. TM GETFLAGS,PRNTSEND SENDING A PRINT FILE @VA03349 00243000
  256. BZ NOT3770A NO, USE PUNCH SELECTION @VA03349 00244000
  257. * 00245000
  258. * 3770 HAS TWO PRINTERS, CONSOLE PRINTER AND LINE PRINTER. 00246000
  259. * CODE SELECTS THE LINE PRINTER AS THE SUPPORTED PRINTER. 00247000
  260. * 00248000
  261. MVC DCX+1(1),PRTSEL SELECT THE SPECIFIED PRINTER @VA04171 00249500
  262. B REL2 @VA03349 00250000
  263. NOT3770 EQU * @VA03349 00251000
  264. TM DEVFEAT,REMPUNCH PUNCH UNIT INSTALLED @VA03742 00252000
  265. BNO NPTDSEL NO...DONT SELECT @VA03742 00253000
  266. MVI DCX+1,DC1 PRINTER SELECTION 00254000
  267. TM GETFLAGS,PRNTSEND PRINTER? 00255000
  268. BO REL2 YES - GO TO SEND IT 00256000
  269. NOT3770A EQU * @VA03349 00257000
  270. MVI DCX+1,DC2 NO - PUNCH SELECTION 00258000
  271. OI SELFLAGS,PCHSEL INDICATE SELECTING THE PUNCH @VA04359 00258500
  272. REL2 EQU * 00259000
  273. LA R15,SELBUF SET SELECT BUFFER ADDR @VA03349 00260000
  274. MVC 0(L'DCX,R15),DCX SET BUFFER FOR 2770 00261000
  275. LA R15,L'DCX AND THE LENGTH 00262000
  276. B REL1 AND CONTINUE 00263000
  277. EJECT 00264000
  278. NO2770 EQU * 00265000
  279. MVI INDEVSEL+2,X'61' PRINTER SELECTION 00266000
  280. TM GETFLAGS,PRNTSEND PRINTER? 00267000
  281. BO REL3 YES SEND IT 00268000
  282. MVI INDEVSEL+2,X'F4' PUNCH SELECTION 00269000
  283. OI SELFLAGS,PCHSEL INDICATE SELECTING THE PUNCH @VA03349 00270000
  284. REL3 EQU * 00271000
  285. LA R15,L'INDEVSEL GET THE LENGTH 00272000
  286. LA R14,SELBUF GET SELECT BUFFER ADDR @VA03349 00273000
  287. MVC 0(L'INDEVSEL,R14),INDEVSEL BUFFER FOR 2780 00274000
  288. REL1 EQU * 00275000
  289. STH R15,SELPROG+6 SET THE BYTE COUNT @VA03349 00276000
  290. MVI TRANSMIT+8,X'03' NOP THE TRANSPARENT XMIT @VA03349 00277000
  291. LA R15,SELBUF SET THE SELECTION ADDRESS @VA03349 00278000
  292. STCM R15,B'0111',SELPROG+1 @VA03349 00279000
  293. REL1A MVC DEVSTART,=A(SELPROG) SET UP TO SEND TO DEVICE @VA03349 00280000
  294. BAL R14,LINEIO GO SEND THE DEVICE SELECTION @VA03349 00281000
  295. BAL R8,SENDVRFY CHECK THE OPERATION @VA03349 00282000
  296. SPACE 1 @VM01140 00283000
  297. NPTDSEL EQU * @VM01140 00284000
  298. TM GETFLAGS,PRNTSEND SENDING PRINT? @VA03112 00285000
  299. BNZ NOTPCHS YES, SKIP @VA03349 00286000
  300. TM DEVFEAT,TRANSP DEVICE HAVE TRANSPARENCY @VA03349 00287000
  301. BZ NPTDSELA NO, NO TRANSPARENT ENDING @VA03349 00288000
  302. MVI TRANSMIT+8,X'01' MUST WRITE ENDING SEQ @VA03349 00289000
  303. NPTDSELA NI SELFLAGS,X'FF'-PCHSEL FINISHED SELECTING PUNCH @VA03349 00290000
  304. EJECT 00291000
  305. * TRANSMITTING - WORK SECTION 00292000
  306. NOTPCHS DS 0H @VA07213 00293200
  307. TM NPTFLAGS,RENBL ARE WE RE-ENABLING @VA07213 00293400
  308. BO NOTPCHSA YES RESEND THE BUFFER @VA07213 00293600
  309. TM SELFLAGS,RSELECT IS IT RESELECTION @VA07213 00293800
  310. BZ NPTCHARG NO, NORMAL SEQUENCE @VA03349 00294000
  311. NOTPCHSA NI SELFLAGS,X'FF'-RSELECT CLEAR THE RESELECTION @VA03349 00295000
  312. NI NPTFLAGS,X'FF'-RENBL TURN OFF REENABLE BIT @VA07213 00295500
  313. B NPTTALK CONTINUE FROM WHERE LEFT OFF @VA03349 00296000
  314. SPACE 00297000
  315. NPTCHARG EQU * 00298000
  316. L R7,NPTALINK GET LINK TABLE ENTRY 00299000
  317. TM LFLAG,LHOLD ARE WE HELD? 00300000
  318. BO NPTCHRG1 YEP - FORGET IT 00301000
  319. BAL R14,BUFFINIT GO TO INITIALIZE THE OUT BUFF 00302000
  320. BAL R14,GETBLOCK AND GET A NEW ONE 00303000
  321. * GETBLOCK 00304000
  322. B GETTALK RETURN HERE IN STANDARD OPERATION 00305000
  323. * 00306000
  324. * RETURN HERE IN CASE OF END OF FILE 00307000
  325. * 00308000
  326. LA R2,RDRBLK SET POINTER TO READ-PRINTER/PUNCH 00309000
  327. TM GETFLAGS,PRNTSEND SENDING A PRINT FILE @VA03349 00311000
  328. BNZ NPTCHRG1 YES, NO RESET OF PUNCH @VA03349 00312000
  329. MVI TRANSMIT+8,X'03' NOP THE TRANSPARENT WRITE @VA03349 00313000
  330. NI SELFLAGS,X'FF'-(PCHSEL+RSELECT) @VA03349 00314000
  331. NPTCHRG1 EQU * 00315000
  332. LA R13,LINE RESET POINTER TO SEND EOT 00316000
  333. B NPTEOT AND GO TO SEND IT 00317000
  334. SPACE 00318000
  335. GETTALK EQU * 00319000
  336. SPACE 00320000
  337. NPTTALK EQU * 00321000
  338. TM SELFLAGS,RSELECT RESELECTION AFTER INT. @VA03349 00322000
  339. BNO CKPCHL NO, GO CHECK IF SEL PUNCH @VA03349 00323000
  340. TM GETFLAGS,PRNTSEND SENDING A PRINT FILE @VA03349 00324000
  341. BNO DORESEL NO, RESELECT PUNCH @VA03349 00325000
  342. TM DEVFEAT,REM3770 IS IT A 3770 @VA03349 00326000
  343. BZ NOTPCHSA NO, NO RESELECT @VA03349 00327000
  344. B DORESEL GO DO A RESELECT @VA03349 00328000
  345. CKPCHL TM SELFLAGS,PCHSEL SELECTING THE PUNCH @VA03349 00329000
  346. BO REL1A YES, GO DO IT AGAIN @VA03349 00330000
  347. TM NPTFLAGS,MSGSEND IS THERE AN ACTIVE FILE @VA04171 00330300
  348. BZ MSGDOA NO, MUST BE TROUBLE IN MSG SEND @VA04171 00330600
  349. MVC DEVSTART,=A(TRANSMIT) PROG TO SEND TO DEVICE @VA03349 00331000
  350. BAL R14,LINEIO GO DO THE IO @VA03349 00332000
  351. BAL R8,SENDVRFY CHECK THE OPERATION @VA03349 00333000
  352. B NPTCHARG GO LOOK FOR MORE TO SEND @VA03349 00334000
  353. * 00335000
  354. NPTEOT EQU * 00336000
  355. MVI ETBTRA+1,ETB SET ETB 00337000
  356. BAL R14,SENDEOT GO TO SEND EOT 00338000
  357. L R7,NPTALINK GET LINK TABLE ADDR 00339000
  358. TM LFLAG,LHOLD REMOTE TERMINAL DRAINED 00340000
  359. BNO NPTDINIT NOPE - GO BACK TO READ INITIAL 00341000
  360. LINEDIS EQU * 00342000
  361. L R7,NPTALINK GET LINK TABLE ADDR 00343000
  362. TM LFLAG,LDRAIN IS TERMINATION REQUIRED? 00344000
  363. BNO NPTDINIT NO - GO TO WORK 00345000
  364. B LINEDIS1 YES - DISABLE THE LINE 00346000
  365. EJECT 00347000
  366. SPACE 00348000
  367. *. 00349000
  368. * 00350000
  369. * ENTRY NAME - 00351000
  370. * 00352000
  371. * SENDEOT 00353000
  372. * 00354000
  373. * FUNCTION - 00355000
  374. * 00356000
  375. * THIS ROUTINE SENDS THE BSC END OF TRANSMISSION CHARACTER 00357000
  376. * (EOT) ON THE LINE TO THE REMOTE TERMINAL. 00358000
  377. * 00359000
  378. * CALLS TO OTHER ROUTINES - 00360000
  379. * 00361000
  380. * NONE 00362000
  381. * 00363000
  382. * OPERATION - 00364000
  383. * 00365000
  384. * 1. INITIATE LINEIO TO SEND EOT PROGRAM 00366000
  385. * 00367000
  386. * 2. REPEAT OPERATION UNTIL I/O OPERATION SUCCESSFUL 00368000
  387. * 00369000
  388. * ENTRY CONDITIONS: 00370000
  389. * 00371000
  390. * IN REG. 14 THE RETURN ADDRESS. 00372000
  391. * 00373000
  392. * EXIT CONDITIONS: 00374000
  393. * 00375000
  394. * NONE 00376000
  395. * 00377000
  396. * NOTE: 00378000
  397. * 00379000
  398. * THE REG. 13 IS USED BUT NOT SAVED (POINTER TO THE LINE DEVICE 00380000
  399. * BLOCK). 00381000
  400. * 00382000
  401. * RESPONSES - 00383000
  402. * 00384000
  403. * NONE 00385000
  404. * 00386000
  405. * ERROR MESSAGES - 00387000
  406. * 00388000
  407. * NONE 00389000
  408. * 00390000
  409. *. 00391000
  410. EJECT 00392000
  411. SENDEOT DS 0H 00393000
  412. LA R13,LINE LINE POINTER 00394000
  413. ST R14,SAVEOT SAVE RETURN ADDRESS 00395000
  414. RESNDEOT EQU * 00396000
  415. MVC DEVSTART(4),=A(EOTPROG) MOVE EOT PROG ADDR TO TABLE 00397000
  416. BAL R14,LINEIO SEND THE EOT 00398000
  417. TM DEVFLAGS,IOERR WAS THERE ANY TROUBLE WITH THAT? 00399000
  418. BO RESNDEOT TRY IT AGAIN 00400000
  419. MVC EXPRESP(2),INITACK0 SET UP INITIAL EXPECTED RESP@VA03349 00401000
  420. MVC RESP(2),INITACK0 SET UP INITIAL RESP @VA03349 00402000
  421. L R14,SAVEOT RESTORE REG. 14 00403000
  422. BR R14 AND RETURN TO CALLER 00404000
  423. SPACE 00405000
  424. SAVEOT DC F'0' SAVE AREA 00406000
  425. EJECT 00407000
  426. *. 00408000
  427. * 00409000
  428. * ENTRY NAME - 00410000
  429. * 00411000
  430. * BUFFINIT 00412000
  431. * 00413000
  432. * FUNCTION - 00414000
  433. * 00415000
  434. * THIS ROUTINE INITIALIZES THE LINE OUTPUT BUFFER WITH THE 00416000
  435. * CORRECT BSC CHARACTER SET, DEPENDING ON THE TYPE OF THE 00417000
  436. * OUTPUT FILE AND ON THE FEATURES AVAILABLE AT THE TERMINAL. 00418000
  437. * 00419000
  438. * CALLS TO OTHER ROUTINES - 00420000
  439. * 00421000
  440. * NONE 00422000
  441. * 00423000
  442. * OPERATION - 00424000
  443. * 00425000
  444. * 1. INITIALIZE OUTPUT BUFFER WITH DLE,STX FOR TRANS OPERATION. 00426000
  445. * 00427000
  446. * 2. OR STX FOR NON-TRANS OPERATION. 00428000
  447. * 00429000
  448. * ENTRY CONDITION: 00430000
  449. * 00431000
  450. * IN REG. 14 THE RETURN ADDRESS. 00432000
  451. * THE FLAG BYTES DEVFEAT AND GETFLAGS PROPERLY SET. 00433000
  452. * 00434000
  453. * EXIT CONDITIONS: 00435000
  454. * 00436000
  455. * NONE 00437000
  456. * 00438000
  457. * NOTE: 00439000
  458. * 00440000
  459. * THE REG. 3 AND 4 ARE USED BUT NOT SAVED. 00441000
  460. * 00442000
  461. * RESPONSES - 00443000
  462. * 00444000
  463. * NONE 00445000
  464. * 00446000
  465. * ERROR MESSAGES - 00447000
  466. * 00448000
  467. * NONE 00449000
  468. * 00450000
  469. *. 00451000
  470. EJECT 00452000
  471. BUFFINIT DS 0H 00453000
  472. LA R5,1 BYTES COUNT 00454000
  473. L R6,LINEBUFF BUFFER POINTER 00455000
  474. TM DEVFEAT,TRANSP TRANSPARENCY FEATURE? 00456000
  475. BNO NOT NOPE 00457000
  476. TM GETFLAGS,PRNTSEND YES - PRINT FILE? 00458000
  477. BO NOT YES 00459000
  478. MVI 0(R6),DLE SET START TRANSP. INTO THE BUFFER 00460000
  479. LA R6,1(R6) UPDATE BUFFER POINTER 00461000
  480. LA R5,1(R5) AND BYTES COUNT 00462000
  481. NOT EQU * 00463000
  482. MVI 0(R6),STX PUT STX INTO THE BUFFER 00464000
  483. STH R5,BYTSCNT STORE THE BYTES COUNT 00465000
  484. LA R6,1(R6) UPDATE THE BUFFER POINTER 00466000
  485. ST R6,STARTLIN AND SAVE IT 00467000
  486. XC RECNT(2),RECNT CLEAR THE RECORD COUNT 00468000
  487. BR R14 AND RETURN TO CALLER 00469000
  488. EJECT 00470000
  489. *. 00471000
  490. * 00472000
  491. * ENTRY NAME - 00473000
  492. * 00474000
  493. * XECUTE 00475000
  494. * 00476000
  495. * FUNCTION - 00477000
  496. * 00478000
  497. * THIS ROUTINE REQUESTS THE SUPERVISOR TO EXECUTE I/O 00479000
  498. * OPERATIONS. AFTER INITIATING THE I/O OPERATION, THE 00480000
  499. * ROUTINE WAITS FOR EITHER A COMMAND TO BE ENTERED OR THE 00481000
  500. * COMPLETION OF THE REQUESTED I/O OPERATION. 00482000
  501. * 00483000
  502. * THIS ROUTINE ALSO REQUESTS THE SUPERVISOR TO ESTABLISH 00484000
  503. * A TIME DELAY. THE ROUTINE THEN WAITS FOR THE TIME DELAY 00485000
  504. * PERIOD TO EXPIRE. 00486000
  505. * 00487000
  506. * CALLS TO OTHER ROUTINES - 00488000
  507. * 00489000
  508. * DMTIOMRQ - TO INITIATE AN I/O OPERATION 00490000
  509. * DMTWAT - TO WAIT FOR THE COMPLETION OF THE I/O OPERATION 00491000
  510. * DMTASY - ESTABLISH A TIME DELAY 00492000
  511. * 00493000
  512. * OPERATION - 00494000
  513. * 00495000
  514. * 1. INITIATE I/O OPERATION ON DEVICE SPECIFIED BY THE DEVICE 00496000
  515. * BLOCK POINTED TO BY R13. 00497000
  516. * 00498000
  517. * 2. WAIT FOR COMPLETION OF I/O OR CMD SYNCH LOCK TO BE POSTED. 00499000
  518. * 00500000
  519. * 3. IF COMMAND HAS BEEN ENTERED, PROCESS IT. 00501000
  520. * 00502000
  521. * 4. IF NOT, RETURN CONTROL TO CALLER. 00503000
  522. * 00504000
  523. * 5. INITIATE A TIME DELAY. 00505000
  524. * 00506000
  525. * 6. WAIT FOR TIME EXPIRATION. 00507000
  526. * 00508000
  527. * ENTRY CONDITIONS: 00509000
  528. * 00510000
  529. * IN REG. 13 DEVICE BLOCK POINTER 00511000
  530. * IN REG. 14 RETURN ADDRESS. 00512000
  531. * 00513000
  532. * TIME DELAY 00514000
  533. * 00515000
  534. * REG 0 - DELAY TIME IN SECONDS (APPROX) 00516000
  535. * REG 14 - RETURN ADDRESS 00517000
  536. * 00518000
  537. * EXIT CONDITIONS: 00519000
  538. * 00520000
  539. * THE EXIT TO THE TASK ABORT ROUTINE IS TAKEN IN CASE 00521000
  540. * OF UNRECOVERABLE ERRORS. 00522000
  541. * 00523000
  542. * NOTE: 00524000
  543. * 00525000
  544. * NONE 00526000
  545. * 00527000
  546. * RESPONSES - 00528000
  547. * 00529000
  548. * NONE 00530000
  549. * 00531000
  550. * ERROR MESSAGES - 00532000
  551. * 00533000
  552. * NONE 00534000
  553. * 00535000
  554. *. 00536000
  555. SPACE 3 00537000
  556. XECUTE DC 0H'0' 00538000
  557. STM R14,R1,XECSAVE SAVE CALLER'S REGISTERS 00539000
  558. XC DEVLOCK(4),DEVLOCK CLEAR THE SYNCH LOCK 00540000
  559. LA R1,0(R13) R1=ADDRESS OF THE DEVICE I/O TAB 00541000
  560. L R15,IOREQ R15=ADDR OF SYS I/O REQ ENT 00542000
  561. BALR R14,R15 REQUEST THE I/O OPERATION 00543000
  562. ST R1,XECLIST STORE SYNCHLOCK ADDR IN WAIT LIST 00544000
  563. XECWAIT EQU * 00545000
  564. LA R1,XECLIST GET WAIT LIST ADDR 00546000
  565. L R15,WAITREQ R15=ADDRESS OF SYS WAIT ROUT 00547000
  566. BALR R14,R15 WAIT FOR COMPLETION OF THE I/O REQ 00548000
  567. TM CMDECB,X'80' WAS A COMMAND ENTERED? 00549000
  568. BNO XECIOD NO...CONTINUE 00550000
  569. XC CMDECB(4),CMDECB CLEAR SYNCH LOCK 00551000
  570. BAL R14,CMDPROC EXECUTE COMMAND 00552000
  571. XECIOD EQU * 00553000
  572. TM DEVLOCK,X'80' I/O DONE? 00554000
  573. BNO XECTIME NO, CHECK FOR A TIMER INTP @VA03349 00555000
  574. TM DEVSIOCC,X'02' DID WE GET A COND CODE 2 OR 3? 00556000
  575. BC 7,NPTERR1 EXIT WITH ERROR 00557000
  576. NI NPTFLAGS,X'FF'-TDLY SHUT OFF THE TIMER @VA03349 00558000
  577. LM R14,1,XECSAVE RESTORE CALLER'S REGISTERS 00559000
  578. BR R14 AND RETURN TO THE CALLER 00560000
  579. SPACE 00561000
  580. XECSAVE DC 4F'0' XECUTE REGISTER SAVE AREA 00562000
  581. SPACE 1 00563000
  582. XECLIST DC A(0) IO SYNCH LOCK 00564000
  583. DC X'00',AL3(CMDECB) CMD SYNCH LOCK ADDR @VA03349 00565000
  584. DC X'80',AL3(TIMERECB) TIMER SYNCH LOCK ADDR @VA03349 00566000
  585. SPACE 2 00567000
  586. * THIS ROUTINE GAINS CONTROL WHEN THE TIME DELAY EXPIRES. 00568000
  587. * IT CLEARS FLAGS AND RETURNS TO THE CALLER. 00569000
  588. SPACE 2 00570000
  589. XECTIME TM TIMERECB,X'80' TIMER WAIT ENDED @VA03349 00571000
  590. BNO XECWAIT NO, WAIT AGAIN @VA03349 00572000
  591. XC TIMERECB(4),TIMERECB CLEAR THE SYNCH LOCK @VA03349 00573000
  592. TM NPTFLAGS,TDLY EXPECTING A TIME INTERRUPT @VA03349 00574000
  593. BNO XECWAIT NO, WAIT AGAIN @VA03349 00575000
  594. NI NPTFLAGS,X'FF'-TDLY TURN THE TIME DELAY OFF @VA03349 00576000
  595. LM R14,R3,TDSAVE RESTORE REGISTERS @VA03349 00577000
  596. BR R14 RETURN @VA03349 00578000
  597. SPACE 2 00579000
  598. * THIS ROUTINE ESTABLISHES THE TIME DELAY BY A CALL TO DMTASY, 00580000
  599. * PASSING THE DELAY TIME IN REG 0. 00581000
  600. * IF A NEED ARISES THE ROUTINE CAN BE MODIFIED SO THAT EXECUTION 00582000
  601. * CONTINUES DURING THE TIME PERIOD INSTEAD OF WAITING FOR EXPIRATION. 00583000
  602. SPACE 2 00584000
  603. TDELAY STM R14,R3,TDSAVE SAVE CALLERS REGS @VA03349 00585000
  604. XC DEVLOCK(4),DEVLOCK MAKE SURE I/O NOT POSTED @VA03349 00586000
  605. STCK CURCLOCK GET THE CURRENT TIME @VA03349 00587000
  606. LM R2,R3,CURCLOCK SET UP THE REQUESTED DELAY @VA03349 00588000
  607. ALR R2,R0 @VA03349 00589000
  608. LA R1,AXSALERT SET INT RETURN ADDRESS @VA03349 00590000
  609. L R0,TDCODE INDICATE A TIMER REQUEST @VA03349 00591000
  610. OI NPTFLAGS,TDLY INDICATE TIME DELAY IS ACTIVE @VA03349 00592000
  611. L R15,ASYNREQ GO SET THE DELAY @VA03349 00593000
  612. BALR R14,R15 @VA03349 00594000
  613. B XECWAIT GO WAIT ON THE TIMER @VA03349 00595000
  614. SPACE 2 00596000
  615. DS 0D @VA03349 00597000
  616. CURCLOCK DC 2F'0' CURRENT CLOCK VALUE @VA03349 00598000
  617. TDSAVE DC 6F'0' TIME DELAY SAVE AREA @VA03349 00599000
  618. TIMERECB DC F'0' @VA03349 00600000
  619. TDCODE DC X'10040000' INDICATES A REQUEST FOR TIMER @VA03349 00601000
  620. EJECT 00602000
  621. *. 00603000
  622. * 00604000
  623. * ENTRY NAME - 00605000
  624. * 00606000
  625. * LINEIO 00607000
  626. * 00608000
  627. * FUNCTION - 00609000
  628. * 00610000
  629. * THIS ROUTINE EXECUTE (CALLING XECUTE) I/O OPERATIONS 00611000
  630. * ON THE BSC LINE AND CHECKS THE FINAL STATE, CONSEQUENTLY 00612000
  631. * SETTING THE IOERR FLAG IN THE DEVFLAG BYTE. 00613000
  632. * 00614000
  633. * CALLS TO OTHER ROUTINES - 00615000
  634. * 00616000
  635. * NONE 00617000
  636. * 00618000
  637. * OPERATION - 00619000
  638. * 00620000
  639. * 1. INITIATE LINEIO VIA A CALL TO XECUTE. 00621000
  640. * 00622000
  641. * 2. IF I/O OPERATION COMPLETED WITHOUT AN ERROR, RETURN 00623000
  642. * TO CALLER. 00624000
  643. * 00625000
  644. * 3. RECORD THE LINE ERROR AND TERMINATE THE TASK IF A SEVERE 00626000
  645. * ERROR. 00627000
  646. * 00628000
  647. * 4. IF A RECOVERABLE ERROR, SET THE IOERR FLAG AND RETURN 00629000
  648. * TO CALLER. 00630000
  649. * 00631000
  650. * ENTRY CONDITIONS: 00632000
  651. * 00633000
  652. * IN REG. 13 THE LINE DEVICE BLOCK POINTER. 00634000
  653. * IN REG. 14 THE RETURN ADDRESS. 00635000
  654. * 00636000
  655. * EXIT CONDITIONS: 00637000
  656. * 00638000
  657. * THE TASK ABORT ROUTINE IS ENTERED IN CASE OF UNRECOVERABLE 00639000
  658. * ERRORS. THE LINE IS RESTARTED (->LINEDROP) IN SOME CRITICAL 00640000
  659. * SITUATIONS. 00641000
  660. * 00642000
  661. * NOTE: 00643000
  662. * 00644000
  663. * NONE 00645000
  664. * 00646000
  665. * RESPONSES - 00647000
  666. * 00648000
  667. * NONE 00649000
  668. * 00650000
  669. * ERROR MESSAGES - 00651000
  670. * 00652000
  671. * NONE 00653000
  672. * 00654000
  673. *. 00655000
  674. SPACE 3 00656000
  675. LINEIO DC 0H'0' 00657000
  676. STM R14,R15,LINESAVE SAVE CALLER'S REGS 00658000
  677. LINERTRY EQU * 00659000
  678. NI DEVFLAGS,X'FF'-IOERR TURN OFF POSSIBLE LEFTOVER FLAG 00660000
  679. BAL R14,XECUTE EXECUTE THE DEV BLOCK AS IT STANDS 00661000
  680. L R15,AKLOGIT GET ADDRESS OF LOG ROUTINE @VA03349 00662000
  681. BALR R14,R15 GO LOGIT @VA03349 00663000
  682. CLI DEVSIOCC,X'00' CHECK THE COND CODE ON THE START 00664000
  683. BC 7,NPTERROR EXIT WITH ERROR 00665000
  684. TM DEVCSW+5,X'BF' LINE WAS STARTED-ANYTHING BAD? 00666000
  685. BC 7,NPTERROR EXIT WITH ERROR 00667000
  686. TM DEVCSW+4,X'F0' CHECK FIRST BYTE OF STATUS, TOO 00668000
  687. BC 7,NPTERROR EXIT WITH ERROR 00669000
  688. TM DEVCSW+4,UC+UE WERE THERE ANY ERRORS? 00670000
  689. BZ LINEXIT NO-RETURN IMMEDIATELY WITH GOOD NEWS 00671000
  690. L R15,DEVCSW REG.15 = ADDRESS OF LAST CCW + 8 00672000
  691. S R15,=F'8' BACK UP TO THE FAILING CCW 00673000
  692. TM DEVCSW+4,UC IS IT UNIT EXCEPTION ONLY? 00674000
  693. BZ LINEXCPT YEP - CHECK OUT CCW OPERATION CODE 00675000
  694. TM DEVSENSE,CMDREJ+BUSOUT+EQCHK IS IT SOMETHING GHASTL 00676000
  695. BC 7,NPTERROR EXIT WITH ERROR 00677000
  696. TM DEVSENSE,INTREQ IS IT INTERVENTION REQUIRED? 00678000
  697. BO LINEDROP IF SO, RE-INITIALIZE AND READ INIT 00679000
  698. TM DEVSENSE,TIMEOUT ON THE OTHER HAND, IS IT TIMEOUT? 00680000
  699. BNO LINERR1 IF IT ISN'T, THEN ERROR 00681000
  700. BAL R14,TRTIMOT COUNT TIMEOUT 00682000
  701. B LINERR NO DATA - MAYBE TRY IT AGAIN @VA03349 00685000
  702. SPACE 00686000
  703. LINERR1 EQU * 00687000
  704. BAL R14,TRERR COUNT THE ERROR 00688000
  705. B LINERR AND CONTINUE 00689000
  706. EJECT 00690000
  707. LINEXCPT EQU * 00691000
  708. CLI 0(R15),X'01' WAS UNIT EXCEPTION ON A WRITE? 00692000
  709. BNE LINEXIT NO-PROBABLY READ EOT-NORMAL RETURN 00693000
  710. MVI DEVSENSE,X'00' CLEAR OLD SENSE INFO @VA03349 00694000
  711. MVC DEVSAVE(24),DEVTABLE SAVE CONTENTS OF DEVICE BLOCK 00695000
  712. MVC DEVSTART(4),=A(DUMYREAD) SET CHAN PROG TO RESET CCW 00696000
  713. BAL R14,XECUTE STRAIGHTEN OUT THE BSC LOGIC 00697000
  714. L R15,AKLOGIT GET ADDRESS OF LOG ROUTINE @VA03349 00698000
  715. BALR R14,R15 GO LOGIT @VA03349 00699000
  716. CLI DEVSIOCC,X'00' DID IT GET STARTED O.K.? 00700000
  717. MVC DEVTABLE(24),DEVSAVE RESTORE DEVICE BLOCK 00701000
  718. BNE LINERTRY NO - TRY IT AGAIN FROM THE TOP 00702000
  719. LINERR EQU * 00703000
  720. OI DEVFLAGS,IOERR SIGNAL LINE I/O ERROR TO CALLER 00704000
  721. LINEXIT EQU * 00705000
  722. LM R14,R15,LINESAVE RESTORE CLOBBERED REGISTERS 00706000
  723. BR R14 AND RETURN TO THE CALLER 00707000
  724. SPACE 00708000
  725. LINESAVE DC 2F'0' LINEIO SAVE AREA 00709000
  726. DEVSAVE DC 6F'0' SAVE AREA FOR DEVICE BLOCK 00710000
  727. RCOUNT DC F'0' NUMBER OF BYTES TRANSFERRED @VA03349 00711000
  728. AKLOGIT DC A(KLOGIT) ADDRESS OF LOG ROUTINE @VA03349 00712000
  729. EJECT 00713000
  730. *. 00714000
  731. * 00715000
  732. * ENTRY NAME - 00716000
  733. * 00717000
  734. * GETBLOCK 00718000
  735. * 00719000
  736. * FUNCTION - 00720000
  737. * 00721000
  738. * THIS ROUTINE PREPARES THE LINE OUTPUT BUFFER TO BE TRANSMITTED 00722000
  739. * TO THE REMOTE TERMINAL. 00723000
  740. * 00724000
  741. * CALLS TO OTHER ROUTINES - 00725000
  742. * 00726000
  743. * NONE 00727000
  744. * 00728000
  745. * OPERATION - 00729000
  746. * 00730000
  747. * 1. IF NEEDED OPEN A NEW FILE TO TRANSMIT VIA A CALL TO 00731000
  748. * AXSGET. 00732000
  749. * 00733000
  750. * 2. TEST FOR A READER COMMAND PENDING BY CHECKING RDRCMD BYTE. 00734000
  751. * 00735000
  752. * 3. GET A RECORD TO TRANSMIT VIA CALL TO MAKEBLOC. 00736000
  753. * 00737000
  754. * 4. PACK THE RECORD INTO TRANSMISSION BUFFER. 00738000
  755. * 00739000
  756. * 5. IF EOF PURGE THE FILE AND RETURN WITH EOF CONDITION. 00740000
  757. * 00741000
  758. * ENTRY CONDITIONS: 00742000
  759. * 00743000
  760. * IN REG. 14 THE RETURN ADDRESS. 00744000
  761. * 00745000
  762. * EXIT CONDITIONS: 00746000
  763. * 00747000
  764. * NONE 00748000
  765. * 00749000
  766. * NOTE: 00750000
  767. * 00751000
  768. * THE RETURN IS AT THE ADDRESS SPECIFIED IN THE REG. 14 00752000
  769. * IF THE LINE OUTPUT BUFFER IS READY TO SEND. 00753000
  770. * THE RETURN IS AT THE ADDRESS SPECIFIED IN REG. 14 PLUS FOUR 00754000
  771. * IF NO OUTPUT FILES ARE READY FOR TRANSMISSION, OR IF 00755000
  772. * THE END OF FILE CONDITION IS REACHED FOR THE FILE 00756000
  773. * ACTUALLY PROCESSED. 00757000
  774. EJECT 00758000
  775. * 00759000
  776. * RESPONSES - 00760000
  777. * 00761000
  778. * DMTNPT146I SENDING: FILE 'SPOOLID' ON LINK 'LINKID', 00762000
  779. * REC NNNNNN 00763000
  780. * DMTNPT147I SENT: FILE 'SPOOLID' ON LINK 'LINKID' 00764000
  781. * DMTNPT580I FILE 'SPOOLID' PROCESSING TERMINATED 00765000
  782. * DMTNPT611I LINK 'LINKID' FILE TRANSMISSION SUSPENDED 00766000
  783. * DMTNPT510I FILE 'SPOOLID' BACKSPACED 00767000
  784. * DMTNPT600I FILE 'SPOOLID' FORWARD SPACED 00768000
  785. * 00769000
  786. * ERROR MESSAGES - 00770000
  787. * 00771000
  788. * DMTNPT581E FILE 'SPOOLID' NOT ACTIVE 00772000
  789. * DMTNPT936E NO REMOTE PUNCH AVAILABLE ON LINK 'LINKID' -- 00773000
  790. * FILE 'SPOOLID' PURGED 00774000
  791. * 00775000
  792. *. 00776000
  793. SPACE 3 00777000
  794. GETBLOCK EQU * 00778000
  795. USING TAG,R1 GET TAG ADDRESSABILTIY 00779000
  796. STM R13,R15,GETSAVE SAVE CALLER REGISTERS 00780000
  797. SPACE 00781000
  798. * STANDARD WORK SECTION 00782000
  799. SPACE 00783000
  800. GETNEW EQU * 00784000
  801. TM GETFLAGS,BUFEMPTY THE BUFFER IS EMPTY? 00785000
  802. BZ GETLINE NO - GO TO SEND IT 00786000
  803. SPACE 00787000
  804. LA R2,RDRBLK SET POINTER TO READER REQ. BLOCK 00788000
  805. TM NPTFLAGS,HEADFLAG SENDING HEADER? 00789000
  806. BZ GETEXEC NOPE 00790000
  807. LA R14,PACKBLK YES- SET REENTRY POINT 00791000
  808. B HEADPREP AND GO TO GET AN HEADER LINE 00792000
  809. SPACE 00793000
  810. GETEXEC EQU * 00794000
  811. TM RDEVFLAG,FILACTIV AN ACTIV FILE NOW? 00795000
  812. BNO GETFILE NO 00796000
  813. CLI RDRCMD,X'00' ANY COMMAND PENDING? 00797000
  814. BE GETEXEC1 NO CONTINUE 00798000
  815. TM RDRCMD,RBACKCNT BACKSPAC COUNT? 00799000
  816. BO GETBKUP YES PROCESS IT 00800000
  817. TM RDRCMD,RFWDCNT FORWARD SPACE COUNT? 00801000
  818. BO GETGOFWD YES PROCESS IT 00802000
  819. TM RDRCMD,RBACKFIL BACKSPAC FILE? 00803000
  820. BO GETBKFIL GO DO IT 00804000
  821. TM RDRCMD,RFLSHALL FLUSH ALL? 00805000
  822. BNO GETLOP3 NO CONTINUE 00806000
  823. OI RDEVSOPT,ALL INDICATE FLUSH ALL IN RDR 00807000
  824. B GETFLUSH AND CONTINUE @VM01139 00808000
  825. EJECT 00809000
  826. GETLOP3 EQU * 00810000
  827. TM RDRCMD,RFLSHOLD FLUSH AND HOLD? 00811000
  828. BNO GETFLCPY MIGHT BE FLUSH COPY @VM01139 00812000
  829. OI RDEVSOPT,HOLD INDICATE FLUSH AND HOLD 00813000
  830. B GETFLUSH AND GET RID OF FILE 00814000
  831. SPACE 1 @VM01139 00815000
  832. GETFLCPY EQU * @VM01139 00816000
  833. TM RDRCMD,RFLSHCPY FLUSH COPY? @VM01139 00817000
  834. BO GETFLUSH YES..DO IT @VM01139 00818000
  835. SPACE 1 00819000
  836. GETEXEC1 EQU * 00820000
  837. TM NPTFLAGS,ETXSEND ABOUT TO SEND ETX? @VA03640 00821000
  838. BO GETEXEC4 YES @VA03640 00822000
  839. TM GETFLAGS,EOF EOF ON LAST READ? 00823000
  840. BO GETPURGE YES - GO TO PURGE THE FILE 00824000
  841. SPACE 00825000
  842. GETEXEC2 EQU * 00826000
  843. LA R2,RDRBLK GET READER REQUEST BLOCK ADDR 00827000
  844. BAL R14,MAKEBLOC OTHERWISE GET A NEW BLOCK 00828000
  845. BNZ GETEXEC3 EOF 00829000
  846. CLI BUFUNPK,X'03' TAG RECORD? 00830000
  847. BE GETEXEC2 YES..IGNORE IT 00831000
  848. B PACKBLK PROCESS IT 00832000
  849. SPACE 00833000
  850. GETEXEC3 EQU * 00834000
  851. NI RDRCMD,255-RFLSHCPY-RFLSHOLD-RFLSHALL RESET CMD FLAGS 00835000
  852. TM GETFLAGS,PRNTSEND SENDING PRINT? @VA03640 00836000
  853. BZ GETEXEC4 NO @VA03640 00837000
  854. OI GETFLAGS,EJECT+IMCMD SET PAGE EJECT & IMMED CMD @VA03640 00838000
  855. MVC BUFUNPK(2),=X'8B40' SKIP TO CHANNEL 1 @VA03349 00839000
  856. LA R15,2 NUMBER OF BYTES @VA03640 00840000
  857. STH R15,BUFCNT @VA03640 00841000
  858. NI GETFLAGS,X'FF'-BUFEMPTY INDIC. BUFFER FULL @VA03640 00842000
  859. B PACKBLK PROCESS THE PAGE EJECT @VA03640 00843000
  860. SPACE 1 00844000
  861. GETEXEC4 EQU * @VA03640 00845000
  862. NI NPTFLAGS,X'FF'-ETXSEND RESET ETX FLAG @VA03640 00846000
  863. OI RDEVFLAG,MSGON SET UP TO CONFIRM TRANSMISSION LATER 00847000
  864. B GETEOF AND GO TO CLOSE PROPERLY 00848000
  865. EJECT 00849000
  866. GETFLUSH EQU * 00850000
  867. NI RDRCMD,255-RFLSHCPY-RFLSHOLD-RFLSHALL RESET CMD FLAGS 00851000
  868. MVC MSGLINK(8),RDRCMDLK MOVE IN THE RESPONSE LINKID 00852000
  869. CLC CMDFID(4),RDEVFID IS THIS THE CORRECT FILE? 00853000
  870. BNE GETFLSHE NO..ERROR 00854000
  871. MSG 580,RDEVFID WRITE THE FLUSH MSG 00855000
  872. B GETEXEC3 GO END THE FILE @VA03749 00856000
  873. SPACE 1 00857000
  874. GETFLSHE EQU * 00858000
  875. MSG 581,CMDFID WRITE ERROR MSG 00859000
  876. B GETEXEC1 AND CONTINUE 00860000
  877. EJECT 00861000
  878. * CLOSE AND PURGE SECTION 00862000
  879. GETPURGE EQU * 00863000
  880. NI NPTFLAGS,X'FF'-MSGSEND RESET SENDING FLAG 00864000
  881. BAL R14,AXSPURGE GET RIDE OF FILE 00865000
  882. NI GETFLAGS,X'FF'-PRNTSEND-EOF RESET FILE TYPE AND EOF 00866000
  883. TM RDEVFLAG,MSGON SHOULD WE CONFIRM FILE TRANSMISSION? 00867000
  884. BNO GETFILE NO - GO DIRECTLY TO READ 00868000
  885. NI RDEVFLAG,X'FF'-MSGON ISSUE ONLY ONE MESSAGE 00869000
  886. L R1,RDEVTAG GET RDR TAG ADDRESS 00870000
  887. MVC MSGVMID(8),TAGINVM SET USERID FOR MSG 00871000
  888. MSG 147,(RDEVFID,AXSLINK) WRITE MSG 00872000
  889. B GETOUT AND RETURN 00873000
  890. SPACE 00874000
  891. * OPEN SECTION 00875000
  892. SPACE 00876000
  893. GETFILE EQU * 00877000
  894. TM RDEVFLAG,FILREADY IS A FILE READY? 00878000
  895. BNO GETOUT NO 00879000
  896. TM RDRCMD,RHLDIPGS WAS A HOLD REQUESTED? 00880000
  897. BNO GETFILE1 NO CONTINUE 00881000
  898. L R7,NPTALINK GET LINK TABLE ADDR 00882000
  899. OI LFLAG,LHOLD INDICATE WE ARE HELD 00883000
  900. MVC MSGLINK(8),HLDCMDLK MOVE IN RESPONSE LINKID 00884000
  901. MSG 611,AXSLINK AND WRITE THE MSG 00885000
  902. NI RDRCMD,255-RHLDIPGS RESET CMD BYTE 00886000
  903. B GETOUT AND CONTINUE 00887000
  904. SPACE 1 00888000
  905. GETFILE1 EQU * 00889000
  906. OI NPTFLAGS,MSGSEND SET SENDING FLAG 00890000
  907. BAL R14,AXSGET GO OPEN THE FILE 00891000
  908. B GETGOT OPEN FILE READY - CHECK IT 00892000
  909. EJECT 00893000
  910. * AXSGET RETURN HERE IN CASE OF FAILING IN OPEN 00894000
  911. NI NPTFLAGS,X'FF'-MSGSEND RESET SEND FLAG - OPEN FAILED 00895000
  912. GETOUT EQU * 00896000
  913. LM R13,R15,GETSAVE RESTORE CALLER'S REGISTERS 00897000
  914. B 4(R14) AND RETURN (NON-STANDARD RETURN) 00898000
  915. SPACE 2 00899000
  916. GETGOT EQU * 00900000
  917. CLC RDEVSTYL(5),=C'PRINT' IS IT A PRINT FILE? 00901000
  918. BNE GETGOT1 NO CONTINUE 00902000
  919. OI GETFLAGS,PRNTSEND SET SENDING PRINT FILE 00903000
  920. MVI PREVOP,X'00' CLEAR LAST SAVED CCW OP CODE @VA04171 00903200
  921. MVI PREVOPS,X'00' @VA04171 00903400
  922. GETGOT1 EQU * 00904000
  923. OI NPTFLAGS,HEADFLAG SET SENDING HEADER 00905000
  924. L R1,RDEVTAG GET THE TAG ADDRESS 00906000
  925. L R14,TAGRECNM LOAD RECORD NUMBER INTO 14 00907000
  926. LH R1,TAGID AND THE BINARY SPOOL FILE ID IN R1 00908000
  927. CVD R1,AXSCVD CONVERT IT TO DECIMAL 00909000
  928. UNPK RDEVFID,AXSCVD AND SPREAD THE DIGITS 00910000
  929. OI RDEVFID+3,X'F0' MAKE SURE THE LAST IS PRINTABLE 00911000
  930. CVD R14,AXSCVD CONVERT RECORDS TO DECIMAL 00912000
  931. UNPK AXSRECS,AXSCVD SPREAD THE DIGITS 00913000
  932. OI AXSRECS+7,X'F0' MAKE SURE THE LAST IS PRINTABLE 00914000
  933. MVC HDRRECS(8),AXSRECS MOVE INTO HDR LINE 00915000
  934. MVC HDRFILE(4),RDEVFID AND THE FILE ID 00916000
  935. TM GETFLAGS,PRNTSEND IS IT A PRINT FILE? 00917000
  936. BO GETGOT2 YES - GO AHEAD 00918000
  937. TM DEVFEAT,REMPUNCH IS A PUNCH DEVICE THERE? 00919000
  938. BO GETGOT2 YES - CONTINUE 00920000
  939. L R1,RDEVTAG GET TAG ADDRESS @VA07770 00920500
  940. MVC MSGVMID(8),TAGINVM MOVE USERID TO MSG 00921000
  941. MSG 936,(AXSLINK,RDEVFID) WRITE THE MSG 00922000
  942. B GETPURGE PURGE THE FILE 00923000
  943. SPACE 00924000
  944. EJECT 00925000
  945. GETGOT2 EQU * 00926000
  946. MSG 146,(RDEVFID,AXSLINK,AXSRECS) WRITE MSG 00927000
  947. MVC MAXREC(2),MAXREC1 SET MAX REC 00928000
  948. TM GETFLAGS,PRNTSEND SENDING PRINT? @VA03112 00929000
  949. BNZ GETSETUP YES 00930000
  950. TM DEVFEAT,TRANSP TRANSPARENCY ? @VA05795 00930100
  951. BZ GETSETUP NO. @VA05795 00930200
  952. MVI MAXREC+1,X'01' SET MAX REC 00931000
  953. GETSETUP EQU * 00932000
  954. OI GETFLAGS,BUFEMPTY INDICATE BUFFER EMPTY 00933000
  955. LM R13,R15,GETSAVE RESTORE THE CALLER REGISTERS 00934000
  956. BR R14 AND RETURN (STANDARD RETURN) 00935000
  957. EJECT 00936000
  958. DROP R1 00937000
  959. GETBKFIL EQU * 00938000
  960. USING SPLINK,R1 GET SPLINK ADDRESSABILITY 00939000
  961. L R1,RDEVFIOA GET FILE I/O AREA ADDRESS 00940000
  962. L R2,RDEVTAG GET READER TAG ADDRESS 00941000
  963. LH R2,TAGDEV-TAG(R2) GET READER ADDRESS 00942000
  964. LA R3,X'14' INDICATE BACKSPACE FILE 00943000
  965. DIAG R1,R2,X'14' COMMAND SPOOL READER 00944000
  966. GETBKFL1 EQU * 00945000
  967. NI GETFLAGS,255-FILLED-EOF INDIC. EMPTY & NOT EOF @VA03749 00946000
  968. NI NPTFLAGS,255-ETXSEND TURN OFF ETX JUST IN CASE @VA03749 00947000
  969. GETBKFL2 EQU * 00948000
  970. LA R8,GETEXEC1 INDICATE RETURN 00949000
  971. GTBKMSG EQU * 00950000
  972. MVC MSGLINK(8),RDRCMDLK MOVE IN RESPONSE LINKID 00951000
  973. MSG 510,RDEVFID WRITE BACKSPAC MSG 00952000
  974. NI RDRCMD,255-RBACKFIL-RBACKCNT RESET CMD BYTE 00953000
  975. BR R8 AND CONTINUE 00954000
  976. EJECT 00955000
  977. GETBKUP EQU * 00956000
  978. L R5,RDEVTAG GET READER TAG ADDRESS 00957000
  979. L R1,RDEVFIOA GET FIOA ADDR 00958000
  980. L R3,SPRECNUM AND NUMBER OF RECORDS 00959000
  981. S R3,VMSPNUM SUBSTRACT WHATS LEFT 00960000
  982. BZ GDBKPAGA ALL DONE WITH THIS PAGE 00961000
  983. LA R4,SPRECNUM+4 GET DATA ADDR 00962000
  984. ST R4,VMSPANCH STORE ANCHOR FOR UNPACK 00963000
  985. ST R4,VMSPNEXT AND THE NEXT DATA STRING 00964000
  986. ST R3,VMSPNUM STORE THE NEW COUNT 00965000
  987. OI GETFLAGS,FILLED FILE ALREADY HERE @VA10237 00965100
  988. NI GETFLAGS,255-EOF TURN OF EOF FLAG AND @VA03749 00966000
  989. NI NPTFLAGS,255-ETXSEND ETX FLAG JUST IN CASE @VA03749 00967000
  990. TM TAGINDEV-TAGNEXT(R5),TYPPUN IS IT A PUNCH FILE? 00968000
  991. BNO GBACKCN2 NO..MUST BE PRINT 00969000
  992. L R3,VMSPNUM GET THE CURRENT COUNT 00970000
  993. B GBACKCN3 AND CONTINUE 00971000
  994. SPACE 1 00972000
  995. GBACKCN1 EQU * 00973000
  996. LPR R3,R3 MAKE POSITIVE 00974000
  997. ST R3,RDRCMDCT UPDATE NUMBER OF BACKS 00975000
  998. GDBKPAGA EQU * 00976000
  999. BAL R14,GDBKPAGE GO BACKPAGE 00977000
  1000. GBACKCN2 EQU * 00978000
  1001. TM TAGINDEV-TAGNEXT(R5),TYPPRT IS IT A PRINT FILE? 00979000
  1002. BO GCNTSKP YES..MUST SKIP PAGES NOT RECS 00980000
  1003. L R3,SPRECNUM GET THE NEW NUM OF RECORDS 00981000
  1004. GBACKCN3 EQU * 00982000
  1005. S R3,RDRCMDCT SUBSTRACT NEW NUM 00983000
  1006. LTR R3,R3 ARE WE DONE? 00984000
  1007. BNP GBACKCN1 NO CONTINUE 00985000
  1008. BAL R14,GDBKPCON RESET TO BEGINNING OF PAGE 00986000
  1009. GBACKSK EQU * 00987000
  1010. BAL R14,MAKEBLOC GET A RECORD 00988000
  1011. TM TAGINDEV-TAGNEXT(R5),TYPPUN IS IT A PUNCH FILE? 00989000
  1012. BO GBACKDWN YES COUNT ALL 00990000
  1013. CLI BUFUNPK,X'89' PRINT AND SKIP TO CHAN 1? 00991000
  1014. BE GBACKDWN YES COUNT IT 00992000
  1015. CLI BUFUNPK,X'8B' IMMED SKIP TO CHAN 1? 00993000
  1016. BNE GBACKSK NO TRY ANOTHER 00994000
  1017. GBACKDWN EQU * 00995000
  1018. BCT R3,GBACKSK DOWN BY ONE 00996000
  1019. LA R8,PACKBLK INDICATE RETURN 00997000
  1020. CLI BUFUNPK,X'8B' IS IT A SKIP IMMED? 00998000
  1021. BE GTBKMSG YES..CONTINUE @VM01138 00999000
  1022. MVI BUFUNPK,X'8B' BETTER MAKE IT 01000000
  1023. MVI BUFUNPK+1,C' ' AND ONE CHAR OF DATA 01001000
  1024. LA R1,2 COUNT OF TWO 01002000
  1025. STH R1,BUFCNT AND THIS AMOUNT OF DATA 01003000
  1026. OI GETFLAGS,IMCMD SHOW IMMED COMMAND 01004000
  1027. B GTBKMSG ALL DONE 01005000
  1028. EJECT 01006000
  1029. GCNTSKP EQU * 01007000
  1030. SR R3,R3 ZERO OUT ACCUMLATOR 01008000
  1031. GCNTSKP1 EQU * 01009000
  1032. BAL R14,MAKEBLOC GET A RECORD 01010000
  1033. CLI BUFUNPK,X'89' PRINT AND SKIP TO CHANNEL 1? 01011000
  1034. BE GCNTSKPC YES COUNT IT 01012000
  1035. CLI BUFUNPK,X'8B' IMMED SKIP TO CHANNEL 1? 01013000
  1036. BE GCNTSKPC YES COUNT IT 01014000
  1037. GCNTSKPX EQU * 01015000
  1038. ICM R0,B'1111',VMSPNUM ALL DONE WITH PAGE? 01016000
  1039. BNZ GCNTSKP1 NO CONTINUE 01017000
  1040. B GBACKCN3 BR BACK TO MAIN CODE 01018000
  1041. SPACE 1 01019000
  1042. GCNTSKPC EQU * 01020000
  1043. LA R3,1(,R3) UP SKIP COUNT BY 1 01021000
  1044. B GCNTSKPX AND JOIN COMMON CODE 01022000
  1045. SPACE 1 01023000
  1046. GDBKPAGE EQU * BACK UP A PAGE SUBROUTINE 01024000
  1047. STM R0,R15,MAKESAVE MIGHT AS WELL SAVE THEM ALL 01025000
  1048. LA R2,RDRBLK GET READER DEVICE BLK ADDR 01026000
  1049. L R1,RDEVFIOA GET FILE I/O AREA ADDRESS 01027000
  1050. L R2,RDEVTAG GET READER TAG ADDRESS 01028000
  1051. LH R2,TAGDEV-TAG(R2) GET READER ADDRESS 01029000
  1052. LA R3,X'18' INDICATE BACKSPACE PAGE 01030000
  1053. DIAG R1,R2,X'14' COMMAND SPOOL READER 01031000
  1054. BC 4,GDBKPAG2 ALL DONE BEGINNING OF FILE 01032000
  1055. GDBKPAG1 EQU * 01033000
  1056. L R8,SPRECNUM PICKUP SPRECNUM FROM NEW BLOCK 01034000
  1057. ST R8,VMSPNUM PICKUP COUNT OF REMAINING CCWS 01035000
  1058. LA R8,SPRECNUM+4 SETP OVER POINTERS IN SPOOL BLOCK 01036000
  1059. ST R8,VMSPANCH TO PICKUP CURRENT CCW ANCHOR 01037000
  1060. ST R8,VMSPNEXT CCW POINTER AND NEXT 01038000
  1061. OI GETFLAGS,FILLED TO INDICATE BLOCK PRESENT 01039000
  1062. LM R0,R15,MAKESAVE RESTORE REGS 01040000
  1063. BR R14 AND RETURN 01041000
  1064. SPACE 1 01042000
  1065. GDBKPAG2 EQU * 01043000
  1066. LA R14,GETBKFL2 INDICATE RETURN POINT 01044000
  1067. SPACE 1 01045000
  1068. GDBKPCON EQU * 01046000
  1069. STM R0,R15,MAKESAVE SAVE REGISTERS 01047000
  1070. B GDBKPAG1 AND SIMULATE A PAGE BACK 01048000
  1071. EJECT 01049000
  1072. GETGOFWD EQU * 01050000
  1073. L R1,RDRCMDCT GET FWD COUNT 01051000
  1074. LA R2,RDRBLK GET READER DEVICE BLK ADDR 01052000
  1075. L R8,RDEVTAG AND THE TAG ADDR 01053000
  1076. GGOFWDLP EQU * 01054000
  1077. NI GETFLAGS,255-IMCMD TURN OFF IMMED CMD FLAG 01055000
  1078. BAL R14,MAKEBLOC GO GET A RECORD 01056000
  1079. BNZ GDGODNE ALL DONE EOF 01057000
  1080. TM TAGINDEV-TAGNEXT(R8),TYPPUN IS IT A PUNCH FILE? 01058000
  1081. BO GGOCNT COUNT ALL RECORDS 01059000
  1082. CLI BUFUNPK,X'89' PRINT AND SKIP TO CHANNEL 1? 01060000
  1083. BE GGOCNT YES COUNT IT 01061000
  1084. CLI BUFUNPK,X'8B' IMMED SKIP TO CHANNEL 1? 01062000
  1085. BNE GGOFWDLP NO..CONTINUE 01063000
  1086. GGOCNT EQU * 01064000
  1087. BCT R1,GGOFWDLP REDUCE REC CNT BY 1 AND CONT 01065000
  1088. GDGODNE EQU * 01066000
  1089. MVC MSGLINK(8),RDRCMDLK MOVE IN RESPONSE LINKID 01067000
  1090. MSG 600,RDEVFID WRITE FWD SPAC MSG 01068000
  1091. NI RDRCMD,255-RFWDCNT RESET CMD BYTE 01069000
  1092. CLI BUFUNPK,X'8B' IS IT A SKIP IMMED? 01070000
  1093. BE PACKBLK YES..CONTINUE 01071000
  1094. MVI BUFUNPK,X'8B' BETTER MAKE IT 01072000
  1095. MVI BUFUNPK+1,C' ' AND ONE CHAR OF DATA 01073000
  1096. LA R1,2 COUNT OF TWO 01074000
  1097. STH R1,BUFCNT AND THIS AMOUNT OF DATA 01075000
  1098. OI GETFLAGS,IMCMD SHOW IMMED COMMAND 01076000
  1099. B PACKBLK AND CONTINUE 01077000
  1100. DROP R1 01078000
  1101. USING TAG,R1 GET TAG ADDRESSABILITY 01079000
  1102. EJECT 01080000
  1103. *---------------------------------------------------------------------* 01081000
  1104. * * 01082000
  1105. * BLOCK PACKING AND TRANSLATION SECTION * 01083000
  1106. * * 01084000
  1107. *---------------------------------------------------------------------* 01085000
  1108. SPACE 01086000
  1109. PACKBLK EQU * 01087000
  1110. MVC PREVOPS(1),BUFUNPK SAVE CURRENT FOR LATER USE @VA03488 01088000
  1111. LH R5,BUFCNT IN REG.5 BYTES COUNT 01089000
  1112. TM GETFLAGS,IMCMD IMMEDIATE CARRIAGE COMMAND? 01090000
  1113. BNO PACKBLKB NO @VA03488 01091000
  1114. NI GETFLAGS,X'FF'-IMCMD RESET IT 01092000
  1115. TM DEVFEAT,REM2780 IS IT A 2780 01093000
  1116. BNO NOPACK NO..CONTINUE 01094000
  1117. TM NPTFLAGS,HEADFLAG SENDING A HEADER? 01095000
  1118. BO NOPACK YES..SKIP CHECK 01096000
  1119. CLI PREVOP,X'01' WAS PREVIOUS CCW CC A @VA03488 01097000
  1120. * WRITE NO SPACE 01098000
  1121. BNE NOPACK NO - NO SPECIAL HANDLING @VA03488 01099000
  1122. TM BUFUNPK,X'80' IS THIS A SKIP OR SPACE @VA03488 01100000
  1123. BO NOPACK SKIP - NO SPECIAL HANDLING @VA03488 01101000
  1124. CLI BUFUNPK,X'0B' IS IT A SPACE ONE IMMEDIATE @VA03488 01102000
  1125. BNE PACKBLK1 BRANCH IF NOT @VA04946 01102400
  1126. MVC PREVOP(1),PREVOPS REMOVE WRITE NO SPACE @VA04946 01102800
  1127. B GETEXEC2 AND GET NEXT CCW @VA04946 01103200
  1128. PACKBLK1 EQU * @VA04946 01103600
  1129. CLI BUFUNPK,X'13' IS IT A SPACE TWO IMMEDIATE @VA03488 01104000
  1130. BNE PACKBLKA NO - CONTINUE CHECK @VA03488 01105000
  1131. MVI BUFUNPK,X'0B' ACCOUNT FOR PREV WRITE NO SPACE @VA03488 01106000
  1132. B NOPACK @VA03488 01107000
  1133. PACKBLKA CLI BUFUNPK,X'1B' IS IT A SPACE THREE IMMEDIATE @VA03488 01108000
  1134. BNE NOPACK NO - DO NOT KNOW WHAT IT IS @VA03488 01109000
  1135. MVI BUFUNPK,X'13' ACCOUNT FOR PREV WRITE NO SPACE @VA03488 01110000
  1136. B NOPACK @VA03488 01111000
  1137. PACKBLKB TM DEVFEAT,REM2780 IS IT A 2780 @VA03488 01112000
  1138. BNO PRINT0 NO - NO SPECIAL PROCESSING @VA03488 01113000
  1139. CLI PREVOP,X'01' WAS PREVIOUS CCW CC A @VA03488 01114000
  1140. * WRITE NO SPACE 01115000
  1141. BNE PRINT0 NO - NO SPECIAL PROCESSING @VA03488 01116000
  1142. CLI BUFUNPK,X'09' IS IT A WRITE SPACE ONE @VA03488 01117000
  1143. BNE PACKBLKD NO - KEEP CHECKING @VA03488 01118000
  1144. MVI PREVOPS,X'01' MAKE IT REMEMBER THE WRITE @VA03488 01119000
  1145. * NO SPACE UNTIL ACCOUNTED FOR 01120000
  1146. * OR A SKIP CCW OP CODE IS FOUND 01121000
  1147. B PRINT0 @VA03488 01122000
  1148. PACKBLKD CLI BUFUNPK,X'11' IS IT A WRITE SPACE TWO @VA03488 01123000
  1149. BNE PACKBLKC NO - CONTINUE CHECK @VA03488 01124000
  1150. MVI BUFUNPK,X'09' ACCOUNT FOR PREV WRITE NO SPACE @VA03488 01125000
  1151. B PRINT0 @VA03488 01126000
  1152. PACKBLKC CLI BUFUNPK,X'19' IS IT A WRITE SPACE THREE @VA03488 01127000
  1153. BNE PRINT0 DO NOT KNOW WHAT IT IS @VA03488 01128000
  1154. MVI BUFUNPK,X'11' ACCOUNT FOR PREV WRITE NO SPACE @VA03488 01129000
  1155. SPACE 01130000
  1156. PRINT0 EQU * 01131000
  1157. LA R4,BUFUNPK GET BUFFER ADDRESS 01132000
  1158. LR R2,R5 IN REG.2 BYTES COUNT 01133000
  1159. LA R5,0(R2,R4) LAST CHARACTER ADDRESS 01134000
  1160. TM GETFLAGS,PRNTSEND SENDING PRINT? @VA03112 01135000
  1161. BZ NOPRINT NOTHING TO DO 01136000
  1162. * OTHERWISE PACK THE TRAILING BLANKS 01137000
  1163. SRL 2,1 MULT BY 2 01138000
  1164. BLKLOOP EQU * 01139000
  1165. SH R5,=H'2' DOWN BY 2 01140000
  1166. CLC 0(2,R5),BLANK 2 FILLED BLANKS? 01141000
  1167. BNE BLKEND NOPE 01142000
  1168. BCT R2,BLKLOOP YES CONTINUE THE SCAN 01143000
  1169. BLKEND EQU * 01144000
  1170. LA R5,2(R5) UP BY 2 01145000
  1171. NOPRINT EQU * 01146000
  1172. SR R5,R4 BYTES IN THE PACKED RECORD 01147000
  1173. CH R5,MAXPRINT EXCEED MAX.PRINTABLE POSITIONS? 01148000
  1174. BNH NOPACK NOPE 01149000
  1175. LH R5,MAXPRINT FORCE MAX.PRINTER RECORD LENGTH 01150000
  1176. NOPACK EQU * 01151000
  1177. MVC PREVOP(1),PREVOPS SAVE CURRENT FOR NEXT PASS @VA03488 01152000
  1178. STH R5,BUFCNT STORG RECORD'S BYTE COUNT 01153000
  1179. LA R2,BUFUNPK GET BUFFER ADDR 01154000
  1180. * TRANSLATE CONTROL CARRIEGE CHARACTER 01155000
  1181. TM GETFLAGS,PRNTSEND PRINT FILE? 01156000
  1182. BO CC1 YES - GO TO TRANSLATE 01157000
  1183. LA R2,1(R2) NO - IGNORE THE CCW CODE 01158000
  1184. BCTR R5,0 UPDATE BYTES COUNT @VA03862 01158500
  1185. TM DEVFEAT,TRANSP TRANSPARENCY AVAILABLE? @VM01140 01159000
  1186. BNO NOPACK1 NO..ERROR @VM01140 01160000
  1187. LA R5,80 MUST TRANSMIT ALL 80 CHARS @VA03862 01161000
  1188. NOPACK1 EQU * @VM01140 01163000
  1189. STH R5,BUFCNT AND STORE IT 01164000
  1190. B CCOK2 AND GO TO SAVE THE POINTER 01165000
  1191. SPACE 01166000
  1192. TRPR TR 1(0,R2),TRPRTB TO BE EXECUTED FROM ABOVE 01167000
  1193. EJECT 01168000
  1194. CC1 EQU * 01169000
  1195. SR R15,R15 CLEAR FOR IC 01170000
  1196. IC R15,BUFUNPK PUT C.C. 01171000
  1197. SRL R15,3 CLEAR OUT 01172000
  1198. TM DEVFEAT,REM2780 IS IT THE 2780 @VA03488 01173000
  1199. BO CC2780 YES - SET UP FOR THE 2780 @VA03488 01174000
  1200. IC R15,CCTAB(R15) TRANSLATED CONTROL CARR. CHAR. 01175000
  1201. B STCC @VA03488 01176000
  1202. CC2780 IC R15,CCT2780(R15) USE THE 2780 TRANSLATE TABLE @VA03488 01177000
  1203. STCC EQU * @VA03488 01178000
  1204. STC R15,BUFUNPK STORE IT 01179000
  1205. CCOK2 EQU * 01180000
  1206. ST R2,BUFSTART STORE START POINTER 01181000
  1207. NI GETFLAGS,X'FF'-BUFEMPTY SIGNAL BUFFER FULL 01182000
  1208. TM GETFLAGS,PRNTSEND PRINTER FILE? @VA03112 01183000
  1209. BZ GETLINE NO - NO TRANSLATION 01184000
  1210. BCTR R5,0 -1 FOR EXEC 01185000
  1211. LTR R5,R5 ZERO BYTES COUNT? 01186000
  1212. BNP GETLINE YES - NO TRANSL. 01187000
  1213. EX R5,TRPR TRAN PRT LNE TO AVOID INV CHAR 01188000
  1214. TM DEVFEAT,BLKCOMP COMPRESSION FEATURE PRESENT? @VA03112 01189000
  1215. BNO GETLINE SKIP COMPRESSION. @VA03112 01190000
  1216. L R1,BUFSTART ADDRESS INTO R1 @VA03112 01191000
  1217. LH R0,BUFCNT COUNT INTO R0 @VA03112 01192000
  1218. BAL R14,CMPR GO COMPRESS IT. @VA03112 01193000
  1219. ST R1,BUFSTART RESTORE POINTER. @VA03112 01194000
  1220. STH R0,BUFCNT STORE NEW COUNT. @VA03112 01195000
  1221. SPACE 01196000
  1222. * LINE BUFFER PREPARE SECTION 01197000
  1223. SPACE 01198000
  1224. GETLINE EQU * 01199000
  1225. LH R5,BUFCNT SET BYTES COUNT 01200000
  1226. L R2,BUFSTART AND START POINTER 01201000
  1227. LA R5,1(R5) ADVANCE BYTES COUNT FOR ESC 01202000
  1228. TM DEVFEAT,REM2770 IS IT A 2770 ? @VA05668 01202100
  1229. BNO GETLINE1 NO @VA05668 01202200
  1230. LA R5,1(R5) UP BYTE COUNT FOR POSSIBLE ETB @VA05668 01202300
  1231. GETLINE1 EQU * 01203000
  1232. AH R5,BYTSCNT ADD ACTUAL LINE BUFFER BY.S COUNT 01204000
  1233. CH R5,MAXBYTS EXCEED MAX. TRASMITTIBLE BYTES ? 01205000
  1234. BNL RETURN YES - RETURN 01206000
  1235. TM DEVFEAT,REM2770 IS IT A 2770 ? @VA05668 01206100
  1236. BNO N2780 NO @VA05668 01206200
  1237. BCTR R5,0 RESET BYTE COUNT FOR 2770 @VA05668 01206300
  1238. N2780 EQU * @VA05668 01206400
  1239. BCTR R5,0 RESET BYTES COUNT @VM01141 01207000
  1240. LH R8,RECNT LOAD LINE RECORDS COUNT 01208000
  1241. LA R8,1(R8) UP BY 1 01209000
  1242. CH R8,MAXREC EXCEED MAX.TRASMITTIBLE RECORDS? 01210000
  1243. BH RETURN YES 01211000
  1244. L R6,STARTLIN GET THE START ADDR 01212000
  1245. TM GETFLAGS,PRNTSEND SENDING PRINT? 01213000
  1246. BNO GETPUN1 NO 01214000
  1247. MVI 0(R6),ESC INSERT ESC CHARACTER 01215000
  1248. LA R5,1(R5) UPDATE BYTES COUNT FOR ESC @VM01141 01216000
  1249. LA R6,1(R6) UPDATE LINE BUFFER POINTER 01217000
  1250. GETPUN1 EQU * 01218000
  1251. LH R7,BUFCNT GET THE BUFFER COUNT 01219000
  1252. BCTR R7,0 DOWN BY 1 FOR EX 01220000
  1253. L R2,BUFSTART GET THE START OF BUFFER 01221000
  1254. EX R7,MVCLIN MOVE RECORD IN LINE BUFFER 01222000
  1255. OI GETFLAGS,BUFEMPTY SET ON THE BUFFER EMPTY FLAG 01223000
  1256. AR R6,R7 ADD IN NEW COUNT 01224000
  1257. LA R6,1(R6) UP BY 1 01225000
  1258. TM GETFLAGS,PRNTSEND SENDING PRINT? @VA03640 01226000
  1259. BZ NOEJECT NO @VA03640 01227000
  1260. TM GETFLAGS,EJECT HAVE WE REC'D EOF? @VA03640 01228000
  1261. BZ NOEJECT NO @VA03640 01229000
  1262. OI NPTFLAGS,ETXSEND YES, INDIC. SEND ETX @VA03640 01230000
  1263. NOEJECT EQU * @VA03640 01231000
  1264. TM GETFLAGS,PRNTSEND PRINTER READER ? 01232000
  1265. BO GETPRINT YES 01233000
  1266. TM DEVFEAT,TRANSP NO - TRANSP.FEATURE ? 01234000
  1267. BO RETLIN YES 01235000
  1268. GETPRINT EQU * 01236000
  1269. MVI 0(R6),ITB MOVE IN CONTROL CHAR 01237000
  1270. TM DEVFEAT,REM2780 IS IT A 2780? 01238000
  1271. BO N27703 YES 01239000
  1272. MVI 0(R6),IRS MOVE IN CONTROL CHAR 01240000
  1273. N27703 EQU * 01241000
  1274. LA R5,1(R5) UPDATE BYTES COUNT 01242000
  1275. LA R6,1(R6) AND STARTING POINTER 01243000
  1276. RETLIN EQU * 01244000
  1277. ST R6,STARTLIN SET LINE BUFFER POINTER 01245000
  1278. STH R5,BYTSCNT BYTES COUNT 01246000
  1279. STH R8,RECNT RECORDS COUNT 01247000
  1280. XC BUFCNT(2),BUFCNT RESET COUNT OF INTERMEDIATE BUFFER 01248000
  1281. B GETNEW GO TO GET A NEW RECORD 01249000
  1282. SPACE 01250000
  1283. GETEOF EQU * 01251000
  1284. OI GETFLAGS,EOF SET ON THE EOF FLAG @VA03640 01252000
  1285. RETURN EQU * 01253000
  1286. OI CTFLG,ADFLG TURN ON ADD ONE FOR END CHAR @VA07005 01253500
  1287. TM GETFLAGS,PRNTSEND SENDING PRINT? 01254000
  1288. BO RET YES 01255000
  1289. TM DEVFEAT,TRANSP TRANSP. FEATURE ? 01256000
  1290. BZ RET @VA05796 01257000
  1291. NI CTFLG,X'FE' TURN OFF ADD ONE FOR END CHAR @VA07005 01257500
  1292. TM GETFLAGS,EOF EOF FLAG ON? @VA03640 01258000
  1293. BZ RET1 NO 01259000
  1294. MVI ETBTRA+1,ETX MOVE IN CONTROL CHAR 01260000
  1295. B RET1 AND CONTINUE 01261000
  1296. RET EQU * 01262000
  1297. TM DEVFEAT,REM2770 IS IT A 2770 01263000
  1298. BO S27703 YES 01264000
  1299. S2770A EQU * @VA03862 01264500
  1300. BCTR R6,0 DOWN BY 1 01265000
  1301. NI CTFLG,X'FE' TURN OFF ADD ONE FOR END CHAR @VA07005 01265500
  1302. S27703 EQU * 01266000
  1303. TM GETFLAGS,EOF SENDING EOT? @VA03640 01267000
  1304. BZ RET0 NO 01268000
  1305. MVI 0(R6),ETX MOVE IN ETX 01269000
  1306. B RET1 AND CONTINUE 01270000
  1307. SPACE 1 01271000
  1308. RET0 EQU * 01272000
  1309. MVI 0(R6),ETB CHANGE ITB CHARACTER TO ETB 01273000
  1310. RET1 EQU * 01274000
  1311. LH R15,BYTSCNT GET COUNT 01275000
  1312. TM CTFLG,ADFLG IS THE ADD BIT ON @VA07005 01275410
  1313. BZ N27705 NO, COUNT OK AS IS @VA03862 01275800
  1314. LA R15,1(R15) UP BY ONE 01278000
  1315. N27705 EQU * 01279000
  1316. STH R15,TRANSMIT+6 STORE COUNT IN CCW @VA03349 01280000
  1317. LM R13,R15,GETSAVE RESTORE REGS 01281000
  1318. BR R14 AND GO BACK TO CALLER (STAN RET) 01282000
  1319. DROP R1 DROP TAG ADDRESSABILTIY 01283000
  1320. * 01284000
  1321. MVCLIN MVC 0(0,R6),0(R2) MOVE INSTRUCTION 01285000
  1322. SPACE 1 01286000
  1323. RDEVFID DC CL4' ' EBCDIC SPOOL FILE ID 01287000
  1324. DC CL4' ' MSG FILLER 01288000
  1325. CTFLG DC X'00' FLAG FIELD @VA07005 01288300
  1326. ADFLG EQU X'01' FLAG BIT FOR ADD ENDING CHAR @VA07005 01288600
  1327. EJECT 01289000
  1328. *. 01290000
  1329. * 01291000
  1330. * ENTRY NAME - 01292000
  1331. * 01293000
  1332. * SENDVRFY 01294000
  1333. * 01295000
  1334. * FUNCTION - 01296000
  1335. * 01297000
  1336. * THIS ROUTINE ANALYZES THE RESPONSE OBTAINED FROM EACH 01298000
  1337. * BUFFER TRANSMITTED AND TAKES THE APPROPRIATE ERROR 01299000
  1338. * ACTION 01300000
  1339. * 01301000
  1340. * CALLS TO OTHER ROUTINES - 01302000
  1341. * 01303000
  1342. * NONE 01304000
  1343. * 01305000
  1344. * OPERATION - 01306000
  1345. * 01307000
  1346. * 1. CHECK REPLY FOR I/O ERROR, IF PRESENT RETRY OPERATION 01308000
  1347. * IF NECESSARY. 01309000
  1348. * 01310000
  1349. * 2. CHECK FOR CORRECT REPLY IN RESPONSE BUFFER, IF PRESENT EXIT 01311000
  1350. * 01312000
  1351. * 4. IF ENQ RECEIVED, INDICATE REQUEST TO TRANSMIT A FILE FROM 01313000
  1352. * THE REMOTE STATION. 01314000
  1353. * 01315000
  1354. * 5. IF INCORRECT REPLY RECEIVED, TAKE CORRECTIVE ACTION. 01316000
  1355. * 01317000
  1356. * ON ENTRY: 01318000
  1357. * 01319000
  1358. * REG. 8 RETURN ADDRESS 01320000
  1359. * REG. 14 AND 15 USED AND NOT SAVED 01321000
  1360. * 01322000
  1361. * RESPONSES - 01323000
  1362. * 01324000
  1363. * NONE 01325000
  1364. * 01326000
  1365. * ERROR MESSAGES - 01327000
  1366. * 01328000
  1367. * NONE 01329000
  1368. * 01330000
  1369. *. 01331000
  1370. SPACE 3 01332000
  1371. SENDVRFY DC 0H'0' @VA03349 01333000
  1372. LA R14,RETRYNUM SET THE RETRY NUM 01334000
  1373. ST R14,TMTCNTR IN THE TIMEOUT CONTROL 01335000
  1374. TM DEVFLAGS,IOERR ANY ERROR? 01336000
  1375. BO CKERR YES - GO CHECK IT OUT @VA03349 01337000
  1376. SENDVRFA CLC RESP(2),EXPRESP IS RESPONSE CORRECT @VA03349 01338000
  1377. BE OK YES - GO AHEAD 01339000
  1378. CLI RESP,NAK WAS A NAK RECEIVED @VA03349 01340000
  1379. BNE NONAK NO - CONTINUE 01341000
  1380. TM SELFLAGS,PCHSEL SELECTING THE PUNCH @VA03349 01342000
  1381. BNO CKCTL GO CHECK FOR CNTL MODE @VA03349 01343000
  1382. LA R0,5 SET UP FOR 5 SEC DELAY @VA03349 01344000
  1383. BAL R14,TDELAY TAKE FIVE @VA03349 01345000
  1384. B REL1A IGNORE PRT NOT READY @VA03349 01346000
  1385. CKCTL TM LINERROR,CTLMODE DEVICE PUT US IN CTL MODE @VA03349 01347000
  1386. BO PUTENQA YES - ENQ AND NOT DATA REXMIT @VA03349 01348000
  1387. OI LINERROR,NAKREC INDICATE A NAK RECEIVED @VA03349 01349000
  1388. LH R14,NAKCOUNT GET CONTINOUS NAK COUNT @VA03349 01350000
  1389. LA R14,1(0,R14) BUMP @VA03349 01351000
  1390. STH R14,NAKCOUNT SAVE IT @VA03349 01352000
  1391. CH R14,RETRYNAK RETRIED ENOUGH YET @VA03349 01353000
  1392. BL NPTTALK NO - RETRY TRANSMISSION @VA03349 01354000
  1393. SR R14,R14 @VA03349 01355000
  1394. STH R14,NAKCOUNT RESET THE ERROR COUNT @VA03349 01356000
  1395. OI LINERROR,NAKEOT SET SECOND PASS INDICATOR @VA03349 01357000
  1396. BAL R14,SENDEOT RESET THE DEVICE AND RETRY @VA03349 01358000
  1397. PUTENQA LA R0,15 SET UP FOR 15 SEC DELAY @VA03349 01359000
  1398. BAL R14,TDELAY TAKE FIVE @VA03349 01360000
  1399. B PUTENQ GO RETRY THE TRANSMISSION @VA03349 01361000
  1400. SPACE 1 01362000
  1401. CKERR TM SELFLAGS,PCHSEL SELECTING THE PUNCH @VA03349 01363000
  1402. BO RESLINE YES, RESET AND TRY AGAIN @VA03349 01364000
  1403. L R15,DEVCSW GET ADDR OF LAST CCW + 8 @VA03349 01365000
  1404. LA R15,0(0,R15) @VA03349 01366000
  1405. S R15,=F'8' BACK UP TO FAIL CCW @VA03349 01367000
  1406. CLI 0(R15),X'02' READ RESP FAILED @VA03349 01368000
  1407. BNE NPTTALK NO - DEVICE DID NOT GET IT @VA03349 01369000
  1408. * TRY RETRANSMISSION OF BUFFER 01370000
  1409. OI LINERROR,CKRESP INDICATE REQUEST FOR LAST ACK @VA03349 01371000
  1410. B PUTENQ GO ASK DEVICE @VA03349 01372000
  1411. SPACE 01373000
  1412. RESLINE EQU * 01374000
  1413. BAL R14,SENDEOT GO TO SEND EOT 01375000
  1414. NI LINERROR,X'FF'-NAKREC RESET THE NAK FLAG 01376000
  1415. LA R15,REPLYCNT GET RETRY COUNT 01377000
  1416. B PUTENQ AND TRY TO RESTART THE TRANSMISSION 01378000
  1417. EJECT 01379000
  1418. NONAK EQU * 01380000
  1419. XC NAKCOUNT(2),NAKCOUNT CLEAR THE NAK COUNTER @VA03349 01381000
  1420. CLI RESP,ENQ IS HE TRYING TO SEND? @VA03349 01382000
  1421. BE GETENQ START HIM UP 01383000
  1422. CLI RESP,EOT IS IT END OF TRANSMISSION @VA03349 01384000
  1423. BE EOTREC1 YES - OUTPUT DEVICE NOT READY 01385000
  1424. CLC RESP(2),WACK IS IT A DELAY @VA03349 01386000
  1425. BNE CKRVI YES - WHAT TO DO NOT @VA03349 01387000
  1426. OI LINERROR,WACKREC INDICATE A WACK RECEIVED @VA03349 01388000
  1427. LA R0,1 SET UP FOR 1 SEC DELAY @VA03349 01389000
  1428. BAL R14,TDELAY TAKE ONE @VA03349 01390000
  1429. B PUTENQ LOOP TILL HE IS READY @VA03349 01391000
  1430. CKRVI EQU * @VA04945 01392300
  1431. CLC RESP(2),=AL1(DLE,RVI) DOES HE WANT THE LINE? @VA04945 01392700
  1432. BE NSWITCH WHAT TO DO NOW @VA03349 01393000
  1433. TM LINERROR,CKRESP REREAD OF LAST RESP @VA03349 01394000
  1434. BZ CKPSEL NO - WHAT TO DO NOW @VA03349 01395000
  1435. CLC RESP(2),EXPRESP DID THE DEVICE GET LAST XMISSION@VA03349 01397000
  1436. BNE NPTTALK NO, RETRANSMIT @VA04945 01397700
  1437. B OK YES, DO NEXT TRANSMISSION @VA04945 01398300
  1438. NSWITCH BAL R14,SENDEOT NO - END OUR TRANSMISSION @VA03349 01399000
  1439. B NPTACK0 GOP LET HIM TALK @VA03349 01400000
  1440. CKPSEL TM SELFLAGS,PCHSEL SELECTING THE PUNCH @VA03349 01401000
  1441. BNO NSWITCH YES, OPPOSITE IS OK HERE @VA03349 01402000
  1442. XI EXPRESP+1,X'11' SWITCH THE EXPECTED RESPONSE @VA03349 01403000
  1443. CLC RESP(2),EXPRESP IS IT THE OTHER ACK @VA03349 01404000
  1444. BNE NSWITCH NO, DON'T KNOW WHAT IT IS @VA03349 01405000
  1445. XI EXPRESP+1,X'11' RESTORE THE EXPECTED RESPONSE @VA03349 01406000
  1446. B OK1 OTHER RESP CAN HAPPEN WHEN @VA03349 01407000
  1447. * SELECTING AND SWITCH FROM 01408000
  1448. * TRASNMIT TO RECEIVE NON-TRANSP 01409000
  1449. SPACE 2 01410000
  1450. OK EQU * 01411000
  1451. XC NAKCOUNT(2),NAKCOUNT CLEAR THE NAK COUNTER @VA03349 01412000
  1452. XI EXPRESP+1,X'11' SWITCH THE EXPECTED RESP @VA03349 01413000
  1453. CLC DEVSTART,=A(SELPROG) IS IT THE SELECT PROGRAM @VA03349 01414000
  1454. BE OKPCHS YES @VA03349 01415000
  1455. TM SELFLAGS,PCHSEL SELECTING THE PUNCH @VA03349 01416000
  1456. BO REL1A YES, TRY IT AGAIN @VA03349 01417000
  1457. OKPCHS EQU * CHECK OF WACKS RCVD @VA08288 01418000
  1458. TM LINERROR,WACKREC RCVD A WACK? @VA08288 01418040
  1459. BNO LNERRCK NO, CHECK OTHER ERRORS @VA08288 01418080
  1460. MVI LINERROR,X'00' RESET ERROR INDICATORS @VA08288 01418120
  1461. ***************************************************************@VA08288 01418160
  1462. * A WACK IS CONSIDERED POSITIVE RESPONSE TO A BUFFER AND IF IT @VA08288 01418200
  1463. * IS EVER RECEIVED, THEN THAT BUFFER WILL NOT BE RESENT. IF A @VA08288 01418240
  1464. * WACK (106B) IS RECEIVED, ALL OTHER LINE ERRORS ARE RESET, @VA08288 01418280
  1465. * THEIR PROIR RECEIPT TO ANY PREVIOUS BUFFER IS NOW INVALID @VA08288 01418320
  1466. * INFORMATION FOR THIS CURRENT BUFFER SEQUENCE... @VA08288 01418360
  1467. * A POSITIVE RESPONSE NEGATES ANY ERRORS BEFORE FOR THIS @VA08288 01418400
  1468. * BUFFER SINCE IT IS NOW ACCEPTED..... @VA08288 01418440
  1469. ***************************************************************@VA08288 01418480
  1470. B OK1 DONT RESEND BUFFER AGAIN@VA08288 01418520
  1471. LNERRCK EQU * CHECK OTHER ERRORS @VA08288 01418560
  1472. TM LINERROR,NAKEOT+CTLMODE CORRECT RESPONSE AFTER @VA08288 01418600
  1473. * SENT OR RECEIVED EOT 01419000
  1474. * BECAUSE OF NAK RESPONSES 01420000
  1475. * OR NOT READY CONDITION 01421000
  1476. MVI LINERROR,X'00' IN ANY CASE RESET LINE ERRORS @VA03349 01422000
  1477. BNZ NPTTALK YES-GO RETRANSMIT THE SAME BUFFER@VA03349 01423000
  1478. OK1 EQU * @VA03341 01424000
  1479. BAL R14,TRTRAN COUNT TRANSACTION 01425000
  1480. BR R8 RET TO THE ADDR SPECIFIED ON ENTRY 01426000
  1481. SPACE 01427000
  1482. EOTREC1 EQU * 01428000
  1483. NI LINERROR,WACKREC RESET ALL BUT WACK FLG @VA08288 01429100
  1484. MVC RESP(2),INITACK0 EOT STARTS SEQ ALL OVER @VA03349 01430000
  1485. MVC EXPRESP(2),INITACK0 @VA03349 01431000
  1486. TM SELFLAGS,PCHSEL SELECTING THE PUNCH @VA03349 01432000
  1487. BO NOCTLM YES, SKIP CTL MODE SWITCH @VA03349 01433000
  1488. OI LINERROR,CTLMODE INDICATE NOT READY @VA03349 01434000
  1489. OI SELFLAGS,RSELECT FORCE RESELECTION @VA08171 01434500
  1490. NOCTLM EQU * @VA03349 01435000
  1491. TM DEVFEAT,REM2780 2780? @VA03342 01436000
  1492. BO PUTENQ YES @VA03342 01437000
  1493. LA R14,5 GET TIMEOUT COUNT FOR EOT @VA03342 01438000
  1494. ST R14,EOTCNT @VA03342 01439000
  1495. EOTREC2 MVC DEVSTART,=A(READINIT) LISTEN FOR ENQ @VA03349 01440000
  1496. BAL R14,LINEIO START I/O @VA03342 01441000
  1497. TM DEVFLAGS,IOERR END IN ERROR? @VA03342 01442000
  1498. BO TIMETEST YES @VA03342 01443000
  1499. CLI INIT,ENQ IS HE TRYING TO SEND @VA03349 01444000
  1500. BE GETENQ YES, GO ACCEPT INPUT @VA03342 01445000
  1501. TIMETEST TM DEVSENSE,TIMEOUT TIMEOUT? @VA03342 01446000
  1502. BZ EOTREC2 NO, GO READ AGAIN @VA03342 01447000
  1503. * 01447100
  1504. * TAKE A DELAY TO PREVENT CONTINUOUS POLLING 01447200
  1505. * 01447300
  1506. LA R0,10 TEN SECOND DELAY @VA04358 01447400
  1507. BAL R14,TDELAY TAKE TEN @VA04358 01447500
  1508. * 01447600
  1509. L R14,EOTCNT YES, GET COUNTER @VA03342 01448000
  1510. BCTR R14,0 @VA03342 01449000
  1511. ST R14,EOTCNT DECREMENT EOT COUNTER @VA03342 01450000
  1512. LTR R14,R14 ZERO YET? @VA03342 01451000
  1513. BNZ EOTREC2 NO, GO READ AGAIN @VA03342 01452000
  1514. * YES, FALL THRU TO PUTENQ 01453000
  1515. SPACE 2 01454000
  1516. PUTENQ EQU * 01455000
  1517. MVC DEVSTART(4),=A(ENQPROG) SET ENQ PROGRAM 01456000
  1518. BAL R14,LINEIO START THE LINE I/O 01457000
  1519. TM DEVFLAGS,IOERR END IN ERROR? 01458000
  1520. BNO REPENQ NO CONTINUE 01459000
  1521. TM SELFLAGS,PCHSEL ARE WE SELECTING THE PUNCH @VA03349 01460000
  1522. BO PCHEOT YES @VA03349 01461000
  1523. TM DEVSENSE,TIMEOUT TIMEOUT? 01462000
  1524. BNO PUTENQ NO 01463000
  1525. L R14,TMTCNTR GET TIMEOUT COUNTER 01464000
  1526. BCTR R14,0 DOWN BY ONE 01465000
  1527. ST R14,TMTCNTR SAVE TIMEOUT COUNTER 01466000
  1528. LTR R14,R14 ZERO YET? 01467000
  1529. BP PUTENQ NO CONTINUE 01468000
  1530. PCHEOT EQU * @VA03349 01469000
  1531. BAL R14,SENDEOT TRY TO RESET THE LINE 01470000
  1532. LA R14,RETRYNUM RESET THE TIMEOUT COUNTER 01473000
  1533. ST R14,TMTCNTR SAVE COUNTER 01474000
  1534. B PUTENQ AND TRY AGAIN 01475000
  1535. EJECT 01476000
  1536. REPENQ EQU * 01477000
  1537. TM SELFLAGS,PCHSEL SELECTING THE PUNCH @VA03349 01478000
  1538. BO SENDVRFY YES, CHECK RESULTS @VA03349 01479000
  1539. CLI LINEINB,ENQ CONTENTION? 01480000
  1540. BE GETENQ YES ACCEPT IT 01481000
  1541. TM LINERROR,WACKREC+NAKREC+CTLMODE+CKRESP @VA03349 01482000
  1542. * IS IT A WACK, NAK, NOT READY, 01483000
  1543. * OR RESPONSE REREAD 01484000
  1544. BNZ SENDVRFA YES - GO CHECK AGAIN FROM TOP @VA03349 01485000
  1545. TM INTFLAG,INTOUT OUTPUT INTERRUPTED FOR CMD @VA03349 01486000
  1546. BNO REPENQA NO, CONTINUE NORMALLY @VA03349 01487000
  1547. NI INTFLAG,X'FF'-INTOUT CLEAR THE INT FLAG @VA03349 01488000
  1548. OI SELFLAGS,RSELECT FORCE RESELECTION @VA03349 01489000
  1549. OI LINERROR,CTLMODE REESTABLISH THE LOGIC @VA03349 01490000
  1550. B SENDVRFY GO CHECK THE RESPONSE @VA03349 01491000
  1551. REPENQA BCT R15,PUTENQ DOWN BY ONE AND TRY AGAIN @VA03349 01492000
  1552. B RESLINE ALL DONE..SEND EOT 01493000
  1553. SPACE 01494000
  1554. GETENQ EQU * 01495000
  1555. OI INTFLAG,INTOUT SET INT REQ 01496000
  1556. B NPTACK0 YES - ACCEPT INPUT 01497000
  1557. SPACE 1 01498000
  1558. SPACE 01499000
  1559. RESERR EQU * 01500000
  1560. NI LINERROR,X'FF'-NOEXACK RESET FLAG 01501000
  1561. B PUTENQ AND CONTINUE 01502000
  1562. SPACE 01503000
  1563. EJECT 01504000
  1564. *. 01505000
  1565. * 01506000
  1566. * ENTRY NAME - 01507000
  1567. * 01508000
  1568. * PUTBLOCK 01509000
  1569. * 01510000
  1570. * FUNCTION - 01511000
  1571. * 01512000
  1572. * THIS ROUTINE DEBLOCKS RECEIVED TP BUFFERS AND WRITES THE 01513000
  1573. * DEBLOCKED RECORD TO THE VM/370 SPOOL FILE SYSTEM. 01514000
  1574. * 01515000
  1575. * CALLS TO OTHER ROUTINES - 01516000
  1576. * 01517000
  1577. * DMTAXS - TO OPEN AND CLOSE OUTPUT DEVICES 01518000
  1578. * 01519000
  1579. * OPERATION - 01520000
  1580. * 01521000
  1581. * 1. CHECK STATUS OF FILE PROCESSING. 01522000
  1582. * 01523000
  1583. * 2. UNPACK THE RECEIVED BUFFER INTO UNPACKED UNIT RECORD OUTPUT 01524000
  1584. * BUFFER. 01525000
  1585. * 01526000
  1586. * 3. DETERMINE IF THE CURRENT RECORD IS A COMMAND, IF YES, BAL 01527000
  1587. * TO COMMANDS. 01528000
  1588. * 01529000
  1589. * 4. VALIDATE THE USERID OF AN IDCARD. 01530000
  1590. * 01531000
  1591. * 5. OPEN A OUTPUT SPOOL FILE VIA A REQUEST TO DMTAXS. 01532000
  1592. * 01533000
  1593. * 6. WRITE THE RECORD TO THE VM/370 SPOOL FILE SYSTEM. 01534000
  1594. * 01535000
  1595. * 7. CLOSE THE OUTPUT ON AND EOT RECEIVED VIA CALL TO DMTAXS. 01536000
  1596. * 01537000
  1597. * RESPONSES - 01538000
  1598. * 01539000
  1599. * DMTNPT144I RECEIVING: FILE FROM 'LOCID1' ('USERID1') FOR 01540000
  1600. * 'LOCID2' ('USERID2') 01541000
  1601. * DMTNPT145I RECEIVED: FILE FROM 'LOCID1' ('USERID1') FOR 01542000
  1602. * 'LOCID2' ('USERID2') 01543000
  1603. * 01544000
  1604. * 01545000
  1605. * ERROR MESSAGES - 01546000
  1606. * 01547000
  1607. * DMTNPT934I ID CARD MISSING ON LINK 'LINKID' -- 01548000
  1608. * INPUT FILE PURGED 01549000
  1609. * 01550000
  1610. *. 01551000
  1611. EJECT 01552000
  1612. PUTBLOCK EQU * 01553000
  1613. USING TAG,R4 GET TAG ADDRESSABILITY 01554000
  1614. BAL R14,TRTRAN COUNT TRANSACTION 01555000
  1615. LA R2,PUNBLK POINTER TO THE PUNCH DEVICE 01556000
  1616. L R13,RDEVFIOA POINTER TO THE OUTPUT DEVICE 01557000
  1617. TM NPTFLAGS,MSGREC RECEIVING A FILE? 01558000
  1618. BO NOMSG YES - SKIP NEXT CODE 01559000
  1619. TM PUTFLAGS,EOTREC EOT RECEIVED? 01560000
  1620. BO PUTCLS4 YES - CHECK IF COMMAND 01561000
  1621. OI NPTFLAGS,MSGREC SET RECEIVING FLAG 01562000
  1622. NOMSG EQU * 01563000
  1623. XI RESP+1,X'11' SWITCH THE RESP @VA03349 01564000
  1624. TM PUTFLAGS,EOTREC EOT RECEIVED? 01565000
  1625. BO PUTCLOSE YES - CLOSE THE FILE 01566000
  1626. TM INTFLAG,WSM MORE DATA IN BUFFERS @VA03349 01567000
  1627. BNO SETLB NO @VA03349 01568000
  1628. NI INTFLAG,X'FF'-WSM CLEAR THE SPECIAL SIGNON FLAG @VA03349 01569000
  1629. B TRT1 YES USE BUFFER POINTER AS SET @VA03349 01570000
  1630. SETLB EQU * @VA03349 01571000
  1631. LA R7,LINEINB+1 SET POINTER TO THE FIRST 01572000
  1632. TM PUTFLAGS,TRANSP CHARACTER RECEIVED 01573000
  1633. BNO TRT1 NO 01574000
  1634. LA R7,1(R7) UP BY ONE 01575000
  1635. TRT1 EQU * 01577000
  1636. LR R6,R7 RESET LENGTH 01578000
  1637. TM PUTFLAGS,TRANSP TRANSPARENCY? 01584000
  1638. BNO TRT2 NO 01585000
  1639. TRT1A EQU * 01586000
  1640. LA R8,80 LOAD IN 80 01587000
  1641. LA R7,80(R7) UP BY 80 01588000
  1642. LR R2,R7 SET NEW COUNT 01589000
  1643. MVI TRTFNCBT,0 RESET TRT FUNCTION BYTE @VA05956 01589500
  1644. B FOUND AND CONTINUE 01590000
  1645. SPACE 1 01591000
  1646. TRT2 EQU * 01592000
  1647. SLR R1,R1 CLEAR FOR TRT ADDRESS @VA03643 01593000
  1648. TRT 0(256,R7),TAB TRANSLATE 01596000
  1649. BC 9,NPTNAK1 NO ONE - SEND NAK @VA05664 01604100
  1650. LR R7,R1 LOAD IN START OF LINE 01605000
  1651. STC R2,TRTFNCBT STORE TRT FUNCTION BYTE @VA04942 01605500
  1652. LR R2,R1 AND HERE TOO 01606000
  1653. SR R1,R6 RESET LENGTH 01607000
  1654. LR R8,R1 AND LOAD INTO R8 01608000
  1655. EJECT 01609000
  1656. FOUND EQU * 01610000
  1657. CLC 0(9,R6),SIGNOFF SIGNOFF CARD? @VA08251 01610100
  1658. BE LINEDIS2 YES,DRAIN LINK @VA08251 01610200
  1659. TM PUTFLAGS,XFERFLG ALREADY XFERED ? 01611000
  1660. BO PUTWRITE GO TO WRITE THE RECORD 01612000
  1661. LR R1,R6 GET LINE ADDR 01613000
  1662. CLC 0(9,R6),=C'ID ' ID CARD 01614000
  1663. BE FOUND1 YES -- PROCESS IT 01615000
  1664. CLC 0(3,R6),=X'C9C41D' ID CARD W/ SPACE COMPRESSION @VA03112 01616000
  1665. BNE CMDCK CHECK FOR COMMANDS @VA03112 01617000
  1666. OI PUTFLAGS,SPACMP INDICATE SPACE COMPRESSION @VA03112 01618000
  1667. B FOUND1 PROCESS IT AS ID CARD @VA03112 01619000
  1668. CMDCK EQU * @VA03112 01620000
  1669. LR R2,R1 POINTER INTO R2 @VA03112 01621000
  1670. BAL R14,DECM DECOMPRESS - JUST IN CASE @VA03112 01622000
  1671. LR R1,R2 POINTER BACK INTO R1 @VA03112 01623000
  1672. BAL R14,COMMANDS MAY BE A COMMAND CHECK IT 01624000
  1673. B PUTSKIP SKIP 01625000
  1674. SPACE 1 01626000
  1675. FOUND1 EQU * 01627000
  1676. LR R0,R8 BUFFER LENGTH INTO R0 @VA03112 01628000
  1677. TM PUTFLAGS,SPACMP SPACE COMPRESSION ? @VA03112 01629000
  1678. BNO NOCOMP NOPE @VA03112 01630000
  1679. LR R2,R6 POINTER INTO R2 @VA03112 01631000
  1680. BAL R14,DECM GO DECOMPRESS @VA03112 01632000
  1681. LR R6,R2 PONTER BACK INTO R6 @VA03112 01633000
  1682. NOCOMP EQU * @VA03112 01634000
  1683. LR R15,R5 SAVE R5 01635000
  1684. LA R3,9(R6) FIRST USERID POSITION 01636000
  1685. LR R5,R0 GET BUFFER LENGTH @VA03112 01637000
  1686. LA R5,0(R5,R6) CALCULATE LAST POSITION @VA03112 01638000
  1687. BAL R14,PARMGET FRAME IT 01639000
  1688. CLR R3,R5 ANYTHING THERE? 01640000
  1689. LR R5,R15 RESTORE CHAR COUNT @VA03740 01641000
  1690. BNL PUTSKIP SKIP THE CARD 01642000
  1691. SLR R4,R3 CALCULATE THE LENGTH 01643000
  1692. CL R4,=F'8' TOO LONG? 01644000
  1693. BH PUTSKIP YES - SKIP IT 01645000
  1694. LA R3,1(R4,R3) POINT TO START OF TAG STRING 01646000
  1695. BCTR R4,0 DOWN BY ONE FOR CHAR OP 01647000
  1696. EX R4,USERMVC MOVE THE FIELD 01648000
  1697. LR R15,R5 SAVE R5 @VA04940 01648500
  1698. LR R5,R0 GET BUFFER LENGTH @VA04940 01649000
  1699. LA R5,0(R5,R6) CALCULATE END OF BUFFER @VA04940 01649500
  1700. BAL R14,PARMGET AND GO FRAME IT @VA04940 01650000
  1701. CLR R3,R5 WAS THERE A TAG FIELD? @VA04940 01650500
  1702. LR R5,R15 RESTORE CHAR COUNT @VA04940 01651000
  1703. BNL PUTOPEN BRANCH IF NO TAG FIELD @VA04940 01651500
  1704. SLR R4,R3 DETERMINE THE LENGTH OF TAG @VA04940 01652000
  1705. BCTR R4,0 GET CHAR OP @VA04940 01652500
  1706. EX R4,TAGMVC MOVE THE TAG @VA04940 01653000
  1707. MVC CMDBUF(10),TAGHEAD MOVE IN THE HEADER 01655000
  1708. EJECT 01656000
  1709. PUTOPEN EQU * 01657000
  1710. LA R2,PUNBLK GET THE DEVICE BLOCK ADDR 01658000
  1711. L R4,RDEVTAG GET THE READER TAG ADDRESS 01659000
  1712. MVC TAGTOVM(8),PUTTOVM MOVE INTO THE TAG 01660000
  1713. MSG 144,(AXSLINK,SYSTYPE,LOCATION,PUTTOVM) WRITE MSG@VM01105 01661000
  1714. XC RDEVSYNC(4),RDEVSYNC CLEAR SYNC 01662000
  1715. MVI RDEVFUN,X'11' OPEN REQUEST CODE 01663000
  1716. LA R1,PUNBLK GET THE PUNCH BLOCK ADDR 01664000
  1717. L R15,GIVEREQ SYSTEM GIVE ROUTINE 01665000
  1718. BALR R14,R15 AND GO EXECUTE IT 01666000
  1719. L R15,WAITREQ READY TO WAIT 01667000
  1720. BALR R14,R15 AND GO EXECUTE IT 01668000
  1721. CLI 0(R1),X'80' DID IT OPEN SUCCESSFULLY? 01669000
  1722. BNE PUTCLOSE NO 01670000
  1723. OI RDEVFLAG,FILEOPEN SET ON FILE OPEN FLAG 01671000
  1724. OI PUTFLAGS,XFERFLG SET ON XFER FLAG @VA03112 01672000
  1725. L R13,RDEVFIOA SET THE POINTER TO THE DEV BLK 01673000
  1726. TM DEVFEAT,REM2780 IS THIS A 2780? @VA04942 01673300
  1727. BZ PUTSKIP BRANCH IF NOT @VA04942 01673450
  1728. TM PUTFLAGS,TRANSP TRANSPARENCY? @VA04942 01673600
  1729. BO PUTSKIP BRANCH IF SO @VA04942 01673750
  1730. OI PUTFLAGS,SPACMP MUST DECOMPRESS FOR EM @VA04942 01673900
  1731. B PUTSKIP DO NOT WRITE THE ID RECORD 01674000
  1732. SPACE 01675000
  1733. PUTWRITE EQU * 01676000
  1734. TM PUTFLAGS,TRANSP TRANSPARENCY TRANSMISSION? 01677000
  1735. BO PUTNOEM YES - DO NOT CHECK 'EM' 01678000
  1736. BCTR R2,0 SET POINTER TO LAST-1 01679000
  1737. CLI 0(R2),EM 'EM' CHARACTER 01680000
  1738. BNE PUTNOEM CHECK 'EM' TO AVOID THE 01681000
  1739. MVI 0(R2),X'40' REMOVE EM CHARACTER 01682000
  1740. PUTNOEM EQU * 01683000
  1741. LTR R8,R8 EMPTY RECORD? @VA04035 01684000
  1742. BNZ PUTDATA NO, PUT IT @VA04035 01684100
  1743. CLI 0(R7),IRS IS IT INTER RECORD SEP @VA04035 01684400
  1744. BNE PUTSKIP NO, NO BLANK CARD OUTPUT @VA04035 01684500
  1745. LA R0,1 INDICATE ONE BYTE OF DATA @VA04035 01684600
  1746. MVI OUTCARD,C' ' ONE BYTE OF DATA @VA04035 01684700
  1747. LA R6,OUTCARD POINT TO THE DATA @VA04035 01684800
  1748. B POINT GO PUT THE BLANK CARD @VA04035 01684900
  1749. PUTDATA EQU * @VA04035 01685000
  1750. LR R0,R8 BUFFER LENGTH INTO R0 @VA03112 01686000
  1751. TM PUTFLAGS,SPACMP IS RECORD BLANK COMPRESSED @VA03112 01687000
  1752. BNO POINT NO, SKIP DECOMPRESSION @VA03112 01688000
  1753. LR R2,R6 POINTER INTO R2. @VA03112 01689000
  1754. BAL R14,DECM GO DECOMPRESS @VA03112 01690000
  1755. LR R6,R2 POINTER INTO R6 @VA03112 01691000
  1756. POINT EQU * @VA03112 01692000
  1757. ST R6,PUTPROG STORE IN CCW 01693000
  1758. STH R0,PUTPROG+6 STORE THE COUNT @VA03112 01694000
  1759. PUTSCRET EQU * 01695000
  1760. MVI PUTPROG,X'01' RESET WRITE OP CODE 01696000
  1761. MVC DEVSTART(4),=A(PUTPROG) SET THE CAW 01697000
  1762. BAL R14,XECUTE GO TO PUNCH IT 01698000
  1763. EJECT 01699000
  1764. PUTSKIP EQU * 01700000
  1765. TM DEVFEAT,REM2770 IS A 2770 TYPE? 01701000
  1766. BO PUTSKIP1 YES..NO ITB 01702000
  1767. * NOTE - THE BLOCK CHECK CHARACTER 01704000
  1768. * FOLLOWS AN ITB AND IS ZERO FOR A 01705000
  1769. * 2780 DEVICE 01706000
  1770. TM PUTFLAGS,TRANSP TRANSPARENT? 01707000
  1771. BNO PUTSKIP1 NO 01708000
  1772. LA R8,2(R8) ADJUST LINE BLOCK POINTER 01709000
  1773. LA R7,2(R7) HERE TOO 01710000
  1774. PUTSKIP1 EQU * 01711000
  1775. CLI TRTFNCBT,ETB WAS ENDING CHAR ETB? @VA04942 01711600
  1776. BE NPTTALK1 BRANCH IF SO @VA04942 01712200
  1777. CLI TRTFNCBT,ETX WAS ENDING CHAR ETX? @VA04942 01712800
  1778. BE NPTTALK1 BRANCH IF SO @VA04942 01713400
  1779. TM DEVFEAT,REM2770 IS IT A 2770 TYPE? 01715000
  1780. BO PUTSKIP2 YES..SKIP 01716000
  1781. LA R7,2(R7) NO - CHECK THE NEXT RECORD 01717000
  1782. TM PUTFLAGS,TRANSP TRANSPARENT? @VA03343 01718000
  1783. BZ PUTSKP1A BRANCH IF NOT @VA04942 01719150
  1784. CR R7,R5 END OF BUFFER? @VA04942 01719300
  1785. BNL NPTTALK1 BRANCH IF SO @VA04942 01719450
  1786. B TRT1 NO, GO GET NEXT RECORD @VA04942 01719600
  1787. PUTSKP1A EQU * @VA04942 01719750
  1788. CLI 0(R7),STX OPTIONAL STX? @VA03343 01720000
  1789. BNE TRT1 NO - ALL SET @VA03343 01721000
  1790. LA R7,1(,R7) YES - ADJUST FOR STX @VA03343 01722000
  1791. B TRT1 AND CONTINUE 01724000
  1792. SPACE 1 01725000
  1793. PUTSKIP2 EQU * 01726000
  1794. TM PUTFLAGS,TRANSP ARE WE TRANSMITTING TRANS 01727000
  1795. BZ PUTSKP2A BRANCH IF NOT @VA04942 01728150
  1796. CR R7,R5 AT END OF BUFFER? @VA04942 01728300
  1797. BNL NPTTALK1 BRANCH IF SO @VA04942 01728450
  1798. B TRT1 NO, GO GET NEXT RECORD @VA04942 01728600
  1799. PUTSKP2A EQU * @VA04942 01728750
  1800. LA R7,1(R7) OVER EM CHARACTER 01729000
  1801. B TRT1 AND CONTINUE 01730000
  1802. * 01731000
  1803. USERMVC MVC PUTTOVM(0),9(R6) MOVE ID NAME 01732000
  1804. TAGMVC MVC CMDBUF+10(0),0(R3) TO BE EXECUTED FROM ABOVE 01733000
  1805. TRT TRT 0(0,R7),TAB TO BE EXECUTED FROM ABOVE 01734000
  1806. * 01735000
  1807. PUTCLOSE DS 0H 01736000
  1808. LA R2,PUNBLK AND PUNCH DEV POINTER 01737000
  1809. L R13,RDEVFIOA SET OUT DEV POINTER 01738000
  1810. TM RDEVFLAG,FILEOPEN FILE OPEN? 01739000
  1811. BO PUTCLS1 YES 01740000
  1812. TM SELFLAGS,VCMD WAS A VALID COMMAND ENTERED @VA04171 01740300
  1813. BO PUTCLS4 YES, SKIP THE NO ID MSG @VA04171 01740600
  1814. MSG 934,AXSLINK WRITE ERROR MSG 01741000
  1815. B PUTCLS4 AND CONTINUE 01742000
  1816. EJECT 01743000
  1817. PUTCLS1 EQU * 01744000
  1818. UNPK CMDBUF+5(5),DEVADDR(3) UNPK THE DEVICE ADDR 01745000
  1819. MVI CMDBUF+5,C' ' RESTORE THE CLOBBERED BLANK 01746000
  1820. MVI CMDBUF+9,C' ' RESTORE THE CLOBBERED BLANK 01747000
  1821. TR CMDBUF+6(3),AXSTRTAB-240 TRANSLATE TO LEGAL EBCDIC 01748000
  1822. LA R1,CMDBUF GET THE COMMAND ADDR 01749000
  1823. LA R2,80 USE THIS LENGTH 01750000
  1824. DIAG R1,R2,X'08' AND WRITE TO CP 01751000
  1825. MSG 145,(AXSLINK,SYSTYPE,LOCATION,PUTTOVM) WRITE MSG@VM01105 01752000
  1826. LA R2,PUNBLK GET PUN REQ BLOCK ADDR 01753000
  1827. XC RDEVSYNC(4),RDEVSYNC CLEAR SYNC 01754000
  1828. MVI RDEVFUN,X'12' CLOSE REQUEST CODE 01755000
  1829. LA R1,PUNBLK GET THE DEVICE BLOCK ADDR 01756000
  1830. L R15,GIVEREQ SYSTEM GIVE ROUTINE 01757000
  1831. BALR R14,R15 AND EXECUTE IT 01758000
  1832. L R15,WAITREQ SYSTEM WAIT ROUTINE 01759000
  1833. BALR R14,R15 AND EXECUTE IT 01760000
  1834. SPACE 01761000
  1835. L R4,RDEVTAG GET TAG POINTER @VA03522 01762000
  1836. MVC TAGTOVM(8),FILL BLANK TAG AREA 01763000
  1837. MVC PUTTOVM(8),FILL BLANK TAG AREA 01764000
  1838. PUTCLS4 EQU * 01765000
  1839. NI NPTFLAGS,X'FF'-MSGREC RESET RECEIVING FLAG 01766000
  1840. NI RDEVFLAG,X'FF'-FILEOPEN RESET FILE OPEN FLAG 01767000
  1841. MVI PUTFLAGS,X'00' RESET FLAGS 01768000
  1842. NI LINERROR,WACKREC RESET ALL BUT WACK FLG @VA08288 01769100
  1843. NI SELFLAGS,X'FF'-VCMD RESET VALID CMD FLAG @VA04171 01769500
  1844. PUTCLS2 EQU * 01770000
  1845. LA R13,LINE GET LINE DEVICE TABLE 01771000
  1846. LA R8,NPTCHARG RESET RETURN ADDRESS 01772000
  1847. TM INTFLAG,INTOUT HERE AFTER INTERRUPTION 01773000
  1848. BO PUTENQ YES RESTART OUTPUT 01774000
  1849. LA R2,RDRBLK POINTER TO READER BLOCK 01775000
  1850. TM RDEVFLAG,FILACTIV INITIAL TRANSMISSION PENDING? 01776000
  1851. BO NPTSTART YES - GO TO START IT 01777000
  1852. B NPTDINIT NO - GO TO FIND SOMETHING TO DO 01778000
  1853. EJECT 01779000
  1854. ***************************************************************** 01780000
  1855. ** ** 01781000
  1856. ** SUBROUTINE TO DECOMPRESS A CARD IMAGE ** 01782000
  1857. ** INPUT: R2 = ADDR OF COMPRESSED DATA ** 01783000
  1858. ** OUTPUT: R2 = ADDR OF DECOMPRESSED DATA ** 01784000
  1859. ** R1 = ADDR OF SCAN TERMINATION ** 01785000
  1860. ** ** 01786000
  1861. ***************************************************************** 01787000
  1862. SPACE 01788000
  1863. DECM EQU * @VA03112 01789000
  1864. STM R3,R5,DECMSAVE SAVE REGISTERS @VA03112 01790000
  1865. LR R3,R2 R3 = FIRST SOURCE DATA CHARACTER @VA03112 01791000
  1866. LA R4,OUTCARD R4 = SINK ADDRESS @VA03112 01792000
  1867. MVI TAB+X'1D',X'1D' SET TABLE FOR IGS @VA03112 01793000
  1868. SLR R1,R1 CLEAR FOR TRT ADDRESS @VA03643 01794000
  1869. TRT 0(80,R3),TAB IF NO TERMINATION CHARACTER, @VA03112 01795000
  1870. BZ DECM20 (IN 80 BYTES) GO MOVE 80 BYTES @VA03112 01796000
  1871. MVI 0(R4),C' ' CLEAR THE @VA03112 01797000
  1872. MVC 1(79,R4),0(R4) SINK AREA @VA03112 01798000
  1873. LR R5,R4 R5 = START OF SINK AREA @VA03112 01799000
  1874. SPACE 01800000
  1875. DECM10 LA R2,1(,R3) COMPUTE FIELD LENGTH FOR MVC @VA03112 01801000
  1876. LCR R2,R2 A(TERMINATOR) MINUS @VA03112 01802000
  1877. AR R2,R1 A(START OF FIELD) MINUS ONE @VA03112 01803000
  1878. BM *+8 IF FIELD LENGTH NEGATIVE, SKIP. @VA03112 01804000
  1879. EX R2,DECMMVC MOVE THE FIELD. @VA03112 01805000
  1880. CLI 0(R1),IGS IF TERMINATOR SAYS END-OF- @VA03112 01806000
  1881. BNE DECM30 RECORD, BRANCH. @VA03112 01807000
  1882. LA R3,3(R2,R3) IGS - POINT R3 TO NEXT FIELD @VA03112 01808000
  1883. LA R5,1(R2,R5) AS WELL AS SINK AREA POINTER @VA04032 01809000
  1884. IC R2,1(,R1) GET BLANK COUNT. @VA03112 01810000
  1885. N R2,=F'63' CLEAN IT UP. @VA03112 01811000
  1886. AR R5,R2 ADD IT TO SINK AREA POINTER. @VA03112 01812000
  1887. LA R2,79(,R4) COMPUTE POTENTIAL MAXIMUM @VA03112 01813000
  1888. SR R2,R5 LENGTH OF REMAINING INPUT (-1). @VA03112 01814000
  1889. BM DECM30 BRANCH IF LENGTH IS ZERO. @VA03112 01815000
  1890. STC R2,*+L'*+1 SET SCAN LENGTH. @VA03112 01816000
  1891. TRT 0(*-*,R3),TAB SEARCH FOR TERMINATOR. @VA03112 01817000
  1892. BNZ DECM10 BRANCH IF FOUND. @VA03112 01818000
  1893. EX R2,DECMMVC MOVE LAST FIELD TO CALLER. @VA03112 01819000
  1894. B DECM30 GO CLEANUP AND RETURN @VA03112 01820000
  1895. SPACE 01821000
  1896. DECM20 MVC 0(80,R4),0(R3) MOVE 80 BYTES TO SINK. @VA03112 01822000
  1897. LA R1,80(0,R3) POINT TO TERMINATION CHAR @VA03349 01823000
  1898. SPACE 01824000
  1899. DECM30 LR R2,R4 RETURN POINTER IN R2. @VA03112 01825000
  1900. MVI TAB+X'1D',X'00' RESET IGS IN TABLE @VA03112 01826000
  1901. LA R0,80 SET LENGTH TO 80 BYTES @VA03112 01827000
  1902. LM R3,R5,DECMSAVE RESTORE REGS 3-5 @VA03112 01828000
  1903. BR R14 RETURN. @VA03112 01829000
  1904. SPACE 2 01830000
  1905. DECMSAVE DS 3F REGISTER SAVE @VA03112 01831000
  1906. DECMMVC MVC 0(*-*,R5),0(R3) EXECUTED MVC. @VA03112 01832000
  1907. EJECT 01833000
  1908. ***************************************************************** 01834000
  1909. ** ** 01835000
  1910. ** SUBROUTINE TO COMPRESS A PRINT LINE ** 01836000
  1911. ** INPUT: R1 = ADDRESS, R0 = LENGTH ** 01837000
  1912. ** OUTPUT: R1 = ADDRESS, R0 = LENGTH ** 01838000
  1913. ** ** 01839000
  1914. ***************************************************************** 01840000
  1915. SPACE 01841000
  1916. CMPR EQU * @VA03112 01842000
  1917. STM R2,R4,CMPRSAVE SAVE REGISTERS 2-4. @VA03112 01843000
  1918. OC 0(2,R1),=X'4040' INSURE NO BISYNC CHARACTERS. @VA03112 01844000
  1919. CL R0,=F'2' IS LINE LONGER THAN TWO... @VA03112 01845000
  1920. BNH CMPR60 BRANCH IF NOT. @VA03112 01846000
  1921. LR R2,R0 R2 = LINE LENGTH. @VA03112 01847000
  1922. EX R2,CMPRMVC1 MOVE LINE TO WORK AREA. @VA03112 01848000
  1923. EX R2,CMPROC INSURE NO BISYNCH CHARACTERS @VA03112 01849000
  1924. LA R1,CMPRWORK R1 = ADDR OF COMPRESSED LINE. @VA03112 01850000
  1925. LR R3,R1 R3 = ADDR OF UNCOMPRESSED LINE. @VA03112 01851000
  1926. SPACE 01852000
  1927. CMPR10 CLI 0(R3),C' ' LOOK FOR START OF BLANK FIELD. @VA03112 01853000
  1928. BNE CMPR40 BRANCH IF NOT BLANK START. @VA03112 01854000
  1929. LA R0,63 R0 = MAX BLANK FIELD LENGTH. @VA03112 01855000
  1930. LR R4,R3 R4 = ADDR OF FIRST BLANK. @VA03112 01856000
  1931. B *+12 GO SCAN FOR MORE BLANKS. @VA03112 01857000
  1932. SPACE 01858000
  1933. CMPR20 CLI 0(R3),C' ' DOES BLANK FIELD CONTINUE... @VA03112 01859000
  1934. BNE CMPR30 BRANCH IF NOT. @VA03112 01860000
  1935. LA R3,1(,R3) INCREMENT SCAN ADDRESS. @VA03112 01861000
  1936. BCT R2,CMPR25 BRANCH IF NOT END OF LINE. @VA03112 01862000
  1937. LR R0,R4 R0 = ADDR OF LINE END +1. @VA03112 01863000
  1938. B CMPR50 GO COMPUTE COMPRESSED LENGTH. @VA03112 01864000
  1939. SPACE 01865000
  1940. CMPR25 BCT R0,CMPR20 LOOP IF MAX FIELD NOT EXCEEDED. @VA03112 01866000
  1941. SPACE 01867000
  1942. CMPR30 LR R0,R3 R0 = ADDR OF FIELD END +1. @VA03112 01868000
  1943. SLR R0,R4 R0 = BLANK FIELD LENGTH. @VA03112 01869000
  1944. CL R0,=F'2' IS FIELD LONGER THAN TWO... @VA03112 01870000
  1945. BNH CMPR40 BRANCH IF NOT. @VA03112 01871000
  1946. MVI 0(R4),IGS SET GROUP SEPARATOR AT +0. @VA03112 01872000
  1947. STC R0,1(,R4) SET BLANK COUNT AT +1. @VA03112 01873000
  1948. OI 1(R4),X'40' TURN ON X'40' BIT AT +1. @VA03112 01874000
  1949. EX R2,CMPRMVC2 SHIFT REMAINDER OF LINE LEFT. @VA03112 01875000
  1950. LA R3,2(,R4) R3 = ADDR OF REMAINDER OF LINE. @VA03112 01876000
  1951. B CMPR10 GO LOOK AGAIN FOR BLANK FIELD. @VA03112 01877000
  1952. SPACE 01878000
  1953. CMPR40 LA R3,1(,R3) INCREMENT SCAN ADDRESS. @VA03112 01879000
  1954. BCT R2,CMPR10 LOOP IF LINE NOT EXHAUSTED. @VA03112 01880000
  1955. SPACE 01881000
  1956. LR R0,R3 R0 = ADDR OF LINE END +1. @VA03112 01882000
  1957. CMPR50 SLR R0,R1 R0 = COMPRESSED LINE LENGTH. @VA03112 01883000
  1958. SPACE 01884000
  1959. CMPR60 LM R2,R4,CMPRSAVE RESTORE REGISTERS. @VA03112 01885000
  1960. BR R14 RETURN. @VA03112 01886000
  1961. SPACE 2 01887000
  1962. CMPRMVC1 MVC CMPRWORK(*-*),0(R1) FIRST EXECUTED MVC @VA03112 01888000
  1963. CMPRMVC2 MVC 2(*-*,R4),0(R3) SECOND EXECUTED MVC @VA03112 01889000
  1964. CMPROC OC CMPRWORK(*-*),=CL168' ' EXECUTED OC @VA03112 01890000
  1965. CMPRWORK DS 21D WORK AREA @VA03112 01891000
  1966. CMPRSAVE DS 3F REGISTER SAVE AREA. @VA03112 01892000
  1967. SPACE 2 01893000
  1968. SPACE 1 01894000
  1969. DROP R4 DROP TAG ADDRESSABILTIY 01895000
  1970. SPACE 01896000
  1971. PUTTOVM DC CL8' ' SAVE AREA FOR TOVMID 01897000
  1972. TAGHEAD DC C'TA DE XXX ' TAG HEADER 01898000
  1973. EJECT 01899000
  1974. *. 01900000
  1975. * 01901000
  1976. * ENTRY NAME - 01902000
  1977. * 01903000
  1978. * RECVRFY 01904000
  1979. * 01905000
  1980. * FUNCTION - 01906000
  1981. * 01907000
  1982. * THIS ROUTINE VERIFYS THE CONTENT OF EACH RECEIVED T/P BUFFER 01908000
  1983. * AND CONSTRUCTS AN APPROPRIATE REPLY IF THE BUFFER IS FOUND 01909000
  1984. * IN ERROR. 01910000
  1985. * 01911000
  1986. * CALLS TO OTHER ROUTINES - 01912000
  1987. * 01913000
  1988. * NONE 01914000
  1989. * 01915000
  1990. * OPERATION - 01916000
  1991. * 01917000
  1992. * 1. CHECK FOR IOERR AND TAKE CORRECTIVE ACTION IF NECESSARY 01918000
  1993. * 01919000
  1994. * 2. CHECK RECEIVED BUFFER FOR CORRECT ENEVLOPE OF BSC 01920000
  1995. * CONTROL CHARACTERS, IF OKAY EXIT TO PUTBLOCK. 01921000
  1996. * 01922000
  1997. * 3. IF BLOCK NOT CORRECT SEND NAK AND WAIT FOR REPLY. 01923000
  1998. * 01924000
  1999. * RESPONSES - 01925000
  2000. * 01926000
  2001. * NONE 01927000
  2002. * 01928000
  2003. * ERROR MESSAGES - 01929000
  2004. * 01930000
  2005. * NONE 01931000
  2006. * 01932000
  2007. *. 01933000
  2008. SPACE 3 01934000
  2009. RECVRFY EQU * @VA03349 01935000
  2010. TM DEVFLAGS,IOERR ANY ERROR? 01936000
  2011. BNO CKBUFF NO-CHECK THE BUFFER 01937000
  2012. TM DEVSENSE,DATACK WAS IT A DATA CHECK? @VA05798 01937100
  2013. BNZ NPTNAKSD YES, ASK FOR RETRANSMISSION @VA05798 01937400
  2014. TM DEVSENSE,TIMEOUT WAS THE PROBLEM TIMEOUT? 01938000
  2015. BNO SENDPROG @VA05798 01939000
  2016. BCTR R15,0 YES - UPDATE THE TIMEOUT COUNT 01940000
  2017. LTR R15,R15 END OF TIMEOUT RETRY? 01941000
  2018. BZ PUTCLOSE YES - GO TO CLOSE THE FILE 01942000
  2019. * NO - TRY AGAIN 01943000
  2020. B LISTENQ READ, WAIT FOR ENQ @VA06238 01944500
  2021. SPACE 1 01947000
  2022. SENDPROG EQU * 01948000
  2023. BAL R14,LINEIO GO DO THE IO @VA03349 01949000
  2024. B RECVRFY GO CHECK THE OPERATION @VA03349 01950000
  2025. NPTNAK1 EQU * @VA05664 01950100
  2026. XI RESP+1,X'11' RESET ACK RESPONSE @VA05664 01950200
  2027. EJECT 01951000
  2028. NPTNAK EQU * 01952000
  2029. LA R13,LINE ASSURE THE DEVICE POINTER 01953000
  2030. BCTR R15,0 UPDATE THE NAK COUNT 01954000
  2031. LTR R15,R15 END OF NAK RETRY? 01955000
  2032. BZ REPLYEOT YES - TRY TO RESET THE LINE 01956000
  2033. NPTNAKSD EQU * 01957000
  2034. MVC DEVSTART(4),=A(NAKPROG) SEND THE NAK AND LISTEN 01958000
  2035. B SENDPROG AND CONTINUE 01959000
  2036. SPACE 2 01960000
  2037. CKBUFF EQU * 01961000
  2038. CLI LINEINB,STX FIRST CHARACTER STX OR 01962000
  2039. BE OK3 YES 01963000
  2040. CLC LINEINB(2),=X'1002' DLE STX? 01964000
  2041. BNE NOK NO - CHECK IT 01965000
  2042. OI PUTFLAGS,TRANSP SET ON TRANSP. FLAG 01966000
  2043. OK3 EQU * 01967000
  2044. LA R5,BUFFLEN GET BUFFER LENGTH 01968000
  2045. SH R5,DEVCSW+6 SUBSTACT OUT RESIDUAL COUNT 01969000
  2046. LA R14,LINEINB GET THE START OF THE INPUT BUFFER 01970000
  2047. BCTR R5,0 DOWN BY ONE 01971000
  2048. AR R14,R5 ENQ IS NOT FOLLOWED BY BCC @VA03349 01972000
  2049. CLI 0(R14),ENQ BAD INPUT RECORD @VA03349 01973000
  2050. BE NPTNAKSD YES, ASK FOR RETRANSMISSION @VA03349 01974000
  2051. BCTR R14,0 @VA03349 01976000
  2052. LR R5,R14 POINT TO END OF BUFFER @VA04942 01976500
  2053. CLI 0(R14),ETB IS IT ETB OR 01977000
  2054. BE PUTBLOCK END OK? 01978000
  2055. CLI 0(R14),ETX ETX? 01979000
  2056. BE SETETX YES,INDICATE ETX RECEIVED @VA03349 01980000
  2057. CLI 0(R14),EOT ABORT TRANSMISSION @VA03349 01981000
  2058. BE NPTDINIT YES, GO START OVER @VA03349 01982000
  2059. B TROUBLE @VA03349 01983000
  2060. SETETX EQU * @VA03349 01984000
  2061. OI PUTFLAGS,ETXREC YES, FLAG ETX REC'D @VA03119 01985000
  2062. B PUTBLOCK ...AND ACCEPT RECORD @VA03119 01986000
  2063. TROUBLE TM DEVFEAT,REM2770 NO, INPUT DEVICE TROUBLE @VA03119 01987000
  2064. BNO REPLYEOT 2780 GETS AN EOT @VA03119 01988000
  2065. OI PUTFLAGS,NTRDY TRANSMISSION INTERRUPTED @VA03119 01989000
  2066. B NPTNAKSD SEND NAK FOR 2770-LIKE TERMINALS @VA03119 01990000
  2067. SPACE 01991000
  2068. REPLYEOT EQU * 01992000
  2069. MVC RESP(2),INITACK0 SET INITIAL REPLY TO DEV @VA03349 01993000
  2070. LA R15,RETRYNUM RESET THE RETRY COUNTER 01994000
  2071. REPLY2 EQU * 01995000
  2072. MVC DEVSTART(4),=A(NRDYPROG) SEND EOT AND 01996000
  2073. BAL R14,LINEIO LISTEN FOR 2780 01997000
  2074. TM DEVFLAGS,IOERR ANY ERROR? 01998000
  2075. BO REPLY3 YES - CHECK IT 01999000
  2076. CLI LINEINB,ENQ ENQ RECEIVED? 02000000
  2077. BNE REPLY2 NO 02001000
  2078. B NPTTALK1 AND CONTINUE 02002000
  2079. SPACE 02003000
  2080. REPLY3 EQU * 02004000
  2081. TM DEVSENSE,TIMEOUT IS THE PROBLEM TIMEOUT? 02005000
  2082. BNO REPLY2 NO - RETRY THE RESET 02006000
  2083. BCTR R15,0 YES - UPDATE THE TIMEOUT COUNT 02007000
  2084. LTR R15,R15 END OF RETRY 02008000
  2085. BP REPLY2 NO - TRY AGAIN 02009000
  2086. B PUTCLOSE YES - GO TO CLOSE THE FILE 02010000
  2087. EJECT 02011000
  2088. NOK EQU * 02012000
  2089. CLI LINEINB,ENQ ENQ RECEIVED? 02013000
  2090. BE NPTTALK1 YES 02014000
  2091. CLI LINEINB,EOT EOT RECEIVED? 02015000
  2092. BE PUTBKEOT YES 02016000
  2093. CLI LINEINB,NAK NAK RECEIVED @VA03349 02017000
  2094. BE PUTBKEOT YES 02018000
  2095. CLC LINEINB(2),=AL1(STX,ENQ) IS IT A TEMP DELAY @VA03349 02019000
  2096. BE NPTNAKSD YES, RESPOND WITH A NAK @VA03349 02020000
  2097. SPACE 02021000
  2098. LISTENQ EQU * @VA03119 02022000
  2099. LA R13,LINE GET LINE DEVICE BLOCK ADDR 02023000
  2100. MVC DEVSTART(4),=A(RDONLYPG) READ ONLY - NO STX 02024000
  2101. BAL R14,LINEIO GO START THE IO @VA03349 02025000
  2102. B RECVRFY @VA03349 02026000
  2103. SPACE 02027000
  2104. NPTTALK1 EQU * 02028000
  2105. LA R15,RETRYNUM RESET RETRY COUNTER 02029000
  2106. LA R13,LINE GET LINE DEVICE BLOCK ADDR 02030000
  2107. MVC DEVSTART,=A(RECEIVE) SET UP TO RECEIVE FROM @VA03349 02031000
  2108. * DEVICE 02032000
  2109. BAL R14,LINEIO START UP THE CHANNEL PROGRAM @VA03349 02033000
  2110. B RECVRFY @VA03349 02034000
  2111. SPACE 1 02035000
  2112. PUTBKEOT EQU * 02036000
  2113. MVC EXPRESP(2),INITACK0 INIT EXPECTED RESPONSE @VA03349 02037000
  2114. MVC RESP(2),INITACK0 INITIALIZE RESPONSE TO DEVICE @VA03349 02038000
  2115. TM PUTFLAGS,ETXREC ETX REC'D ? @VA03119 02039000
  2116. BO RESET YES, ALL THROUGH @VA03119 02040000
  2117. TM PUTFLAGS,NTRDY TRANSMISSION INTERRUPTED ? @VA03119 02041000
  2118. BNO LISTENQ NO, SEE WHAT'S UP @VA03119 02042000
  2119. NI PUTFLAGS,255-NTRDY RESET FLAG @VA03119 02043000
  2120. SLR R15,R15 SET TO WAIT A LONG TIME @VA03649 02044000
  2121. B LISTENQ GO LISTEN FOR ENQ @VA03119 02045000
  2122. RESET NI PUTFLAGS,255-(ETXREC+SPACMP) RESET THESE FLAGS @VA03112 02046000
  2123. OI PUTFLAGS,EOTREC EOT RECEIVED 02047000
  2124. B PUTBLOCK AND GO PUT THE BLOCK 02048000
  2125. EJECT 02049000
  2126. *. 02050000
  2127. * 02051000
  2128. * ENTRY NAME - 02052000
  2129. * 02053000
  2130. * COMMANDS 02054000
  2131. * 02055000
  2132. * FUNCTION - 02056000
  2133. * 02057000
  2134. * THIS ROUTINE PASSES COMMANDS RECEIVED FROM THE REMOTE 02058000
  2135. * CARD READER TO THE RSCS COMMAND EXECUTATOR FOR PROPER 02059000
  2136. * ACTION. 02060000
  2137. * 02061000
  2138. * CALLS TO OTHER ROUTINES - 02062000
  2139. * 02063000
  2140. * DMTREX - FOR COMMAND EXECUTION 02064000
  2141. * 02065000
  2142. * OPERATION - 02066000
  2143. * 02067000
  2144. * 1. MOVE COMMAND TO GIVE REQUEST BUFFER. 02068000
  2145. * 02069000
  2146. * 2. INITIATE A CALL TO DMTREX TO PROCESS THE COMMAND. 02070000
  2147. * 02071000
  2148. * 3. WAIT FOR COMPLETION. 02072000
  2149. * 02073000
  2150. * 4. RETURN TO CALLER. 02074000
  2151. * 02075000
  2152. * RESPONSES - 02076000
  2153. * 02077000
  2154. * NONE 02078000
  2155. * 02079000
  2156. * ERROR MESSAGES - 02080000
  2157. * 02081000
  2158. * NONE 02082000
  2159. * 02083000
  2160. *. 02084000
  2161. SPACE 3 02085000
  2162. COMMANDS EQU * 02086000
  2163. STM R14,R1,RCMDSAVE SAVE CALLER REGISTERS 02087000
  2164. MVC CMDBUF(80),0(R1) MOVE INTO COMMAND BUF 02088000
  2165. XC CMDGIV(4),CMDGIV CLEAR SYNCH LOCK 02089000
  2166. LR R14,R8 GET THE LENGTH OF COMMAND 02090000
  2167. LA R14,3(R14) ADD IN THE HEADER 02091000
  2168. STC R14,CMDREQ AND STORE IN GIVE REQUEST BUFFER 02092000
  2169. LA R1,CMDGIV INITIATE GIVE 02093000
  2170. SR R0,R0 INDICATE GIVE 02094000
  2171. L R15,GIVEREQ SYSTEM GIVE REQUEST 02095000
  2172. BALR R14,R15 DO THE GIVE 02096000
  2173. L R15,WAITREQ SYSTEM WAIT PROCESSOR 02097000
  2174. BALR R14,R15 AND DO THE WAIT 02098000
  2175. MVI CMDBUF,C' ' BLANK THE FIRST BYTE 02099000
  2176. MVC CMDBUF+1(79),CMDBUF AND THE REST 02100000
  2177. LM R14,R1,RCMDSAVE RESTORE REGS 02101000
  2178. BR R14 AND RETURN 02102000
  2179. SPACE 02103000
  2180. CMDGIV DC F'0' SYNCH LOCK 02104000
  2181. DC CL4'REX ' GIVE TO REX 02105000
  2182. DC A(CMDREQ) REQUEST BUFFER 02106000
  2183. DC A(0) RESPONSE BUFFER 02107000
  2184. SPACE 02108000
  2185. CMDREQ DC AL1(83),X'00',AL2(0) 02109000
  2186. CMDBUF DC CL80' ' COMMAND BUFFER 02110000
  2187. SPACE 1 02111000
  2188. RCMDSAVE DS 10F REGISTER SAVE AREA @VA03745 02112000
  2189. EJECT 02113000
  2190. *. 02114000
  2191. * 02115000
  2192. * ENTRY NAME - 02116000
  2193. * 02117000
  2194. * CMDPROC 02118000
  2195. * 02119000
  2196. * FUNCTION - 02120000
  2197. * 02121000
  2198. * THIS ROUTINE EXECUTES COMMANDS PASSED TO IT IN THE 02122000
  2199. * CMDRESP BUFFER AFTER AN ALERT FROM DMTREX INDICATING A 02123000
  2200. * CMD HAS BEEN ENTERED. 02124000
  2201. * 02125000
  2202. * CALLS TO OTHER ROUTINES - 02126000
  2203. * 02127000
  2204. * NONE 02128000
  2205. * 02129000
  2206. * OPERATION - 02130000
  2207. * 02131000
  2208. * 1. SCAN COMMAND TABLE FOR MATCH. 02132000
  2209. * 02133000
  2210. * 2. IF FOUND BRANCH TO APPROPRIATE SUBROUTINE TO PROCESS 02134000
  2211. * COMMAND. 02135000
  2212. * 02136000
  2213. * 3. UPON RETURN RESET COMMAND IN PROGRESS SWTICH AND RETURN. 02137000
  2214. * 02138000
  2215. * RESPONSES - 02139000
  2216. * 02140000
  2217. * SEE EACH SUBROUTINE 02141000
  2218. * 02142000
  2219. * ERROR MESSAGES - 02143000
  2220. * 02144000
  2221. * SEE EACH SUBROUTINE 02145000
  2222. * 02146000
  2223. *. 02147000
  2224. SPACE 3 02148000
  2225. DS 0H 02149000
  2226. CMDPROC EQU * 02150000
  2227. STM R14,R7,RCMDSAVE SAVE CALLER REGISTERS @VA03745 02151000
  2228. LM R3,R5,CMDSETUP PREPARE FOR COMMAND SCAN 02152000
  2229. CMDSCAN EQU * 02153000
  2230. CLC 0(1,R3),CMDRESP+1 IS IT THIS ONE 02154000
  2231. BE CMDCALL YES 02155000
  2232. BXLE R3,R4,CMDSCAN PREPARE FOR NEXT COMPARE 02156000
  2233. B CMDRET COMMAND NOT FOUND IGNORE 02157000
  2234. SPACE 02158000
  2235. CMDCALL EQU * 02159000
  2236. OI SELFLAGS,VCMD INDICATE A VALID COMMAND ENTERED @VA04171 02159500
  2237. L R7,NPTALINK GET LINK TABLE ENTRY 02160000
  2238. MVC MSGLINK(8),CMDRESP+4 MOVE IN RESPONSE LINKID 02161000
  2239. LA R2,RDRBLK GET READER REQUEST BLOCK ADDR 02162000
  2240. L R15,0(R3) GET ROUTINE TO CALL 02163000
  2241. BALR R14,R15 GO EXECUTE THE COMMAND 02164000
  2242. EJECT 02165000
  2243. CMDRET EQU * 02166000
  2244. MVI CMDINPGS,X'00' RESET COMMAND IN PROGRESS SWITCH 02167000
  2245. MVI MSGLINK,X'00' RESET RESPONSE LINKID @VA03741 02168000
  2246. LM R14,R7,RCMDSAVE RESTORE CALLER REGISTERS @VA03745 02169000
  2247. BR R14 AND RETURN 02170000
  2248. EJECT 02171000
  2249. *---------------------------------------------------------------------* 02172000
  2250. * START COMMAND * 02173000
  2251. *---------------------------------------------------------------------* 02174000
  2252. *. 02175000
  2253. * RESPONSES - 02176000
  2254. * 02177000
  2255. * DMTNPT752I LINK 'LINKID' STILL ACTIVE -- DRAIN STATUS 02178000
  2256. * RESET 02179000
  2257. * 02180000
  2258. * ERROR MESSAGES - 02181000
  2259. * 02182000
  2260. * DMTNPT750E LINK 'LINKID' ALREADY ACTIVE -- NO ACTION TAKEN 02183000
  2261. * 02184000
  2262. *. 02185000
  2263. SPACE 1 02186000
  2264. SETSTART EQU * 02187000
  2265. ST R14,CMDCMDSV SAVE RETURN REG 02188000
  2266. TM LFLAG,LDRAIN ARE WE DRAINING? 02189000
  2267. BNO SETSTRT1 NO 02190000
  2268. NI LFLAG,255-LDRAIN RESET DRAIN FLAG 02191000
  2269. MSG 752,AXSLINK AND WRITE MSG 02192000
  2270. B SETSTRTE AND EXIT 02193000
  2271. SPACE 1 02194000
  2272. SETSTRT1 EQU * 02195000
  2273. CLI CMDRESP+3,STACLASS IS IT A CLASS RESET? 02196000
  2274. BE SETSTRTE YES..NO MSG 02197000
  2275. MSG 750,AXSLINK WRITE MSG 02198000
  2276. SETSTRTE EQU * 02199000
  2277. OI RDEVFLAG,FILREADY SET FILE READY FLAG 02200000
  2278. L R14,CMDCMDSV RESTORE RETURN REG 02201000
  2279. BR R14 AND RETURN 02202000
  2280. EJECT 02203000
  2281. *---------------------------------------------------------------------* 02204000
  2282. * DRAIN COMMAND * 02205000
  2283. *---------------------------------------------------------------------* 02206000
  2284. *. 02207000
  2285. * RESPONSES - 02208000
  2286. * 02209000
  2287. * DMTNPT570I LINK 'LINKID' NOW SET TO DEACTIVATE 02210000
  2288. * 02211000
  2289. * ERROR MESSAGES - 02212000
  2290. * 02213000
  2291. * DMTNPT571E LINK 'LINKID' ALREADY SET TO DEACTIVATE 02214000
  2292. * 02215000
  2293. *. 02216000
  2294. SPACE 1 02217000
  2295. SETDRAIN EQU * 02218000
  2296. ST R14,CMDCMDSV SAVE RETURN 02219000
  2297. TM LFLAG,LDRAIN ALREADY DRAINING? 02220000
  2298. BO SETDRER1 YES ..ERROR 02221000
  2299. OI LFLAG,LDRAIN SHOW WE ARE DRAINING 02222000
  2300. MSG 570,AXSLINK WRITE MSG 02223000
  2301. TM INTFLAG,SIGNONED HAVE WE SIGNON YET? 02224000
  2302. BNO LINEDIS2 EARLY TERMINATION 02225000
  2303. NI INTFLAG,X'FF'-SIGNONED TURN OFF FLAG @VA08251 02226000
  2304. B LINEDIS2 CLEAN UP LINK @VA08251 02226100
  2305. SPACE 02227000
  2306. SETDRER1 EQU * 02228000
  2307. MSG 571,AXSLINK WRITE ERROR MSG 02229000
  2308. SETDRXIT EQU * 02230000
  2309. L R14,CMDCMDSV RESTORE RETURN REG 02231000
  2310. BR R14 AND RETURN 02232000
  2311. EJECT 02233000
  2312. *---------------------------------------------------------------------* 02234000
  2313. * FREE COMMAND * 02235000
  2314. *---------------------------------------------------------------------* 02236000
  2315. *. 02237000
  2316. * RESPONSES - 02238000
  2317. * 02239000
  2318. * DMTNPT590I LINK 'LINKID' RESUMING FILE TRANSFER 02240000
  2319. * 02241000
  2320. * ERROR MESSAGES - 02242000
  2321. * 02243000
  2322. * DMTNPT591E LINK 'LINKID' NOT IN HOLD STATUS 02244000
  2323. * 02245000
  2324. *. 02246000
  2325. SPACE 1 02247000
  2326. SETFREE EQU * 02248000
  2327. ST R14,CMDCMDSV SAVE RETURN 02249000
  2328. TM LFLAG,LHOLD ARE WE HELD? 02250000
  2329. BNO SETFRER1 NO ERROR 02251000
  2330. MSG 590,AXSLINK WRITE FREE MSG 02252000
  2331. NI LFLAG,255-LHOLD TURN OFF HOLD FLAG 02253000
  2332. TM RDRCMD,RHLDIPGS WAS THE HOLD IMMED? 02254000
  2333. BO SETFRXIT YES..ALL DONE 02255000
  2334. OI RDEVFLAG,FILREADY SET FILE READY FLAG 02256000
  2335. B SETFRXIT AND ENTER COMMON EXIT 02257000
  2336. SPACE 1 02258000
  2337. SETFRER1 EQU * 02259000
  2338. MSG 591,AXSLINK NOT IN HOLD MSG 02260000
  2339. SETFRXIT EQU * 02261000
  2340. NI RDRCMD,255-RHLDIPGS TURN OFF FLAG 02262000
  2341. L R14,CMDCMDSV RESTORE RETURN 02263000
  2342. BR R14 AND RETURN 02264000
  2343. EJECT 02265000
  2344. *---------------------------------------------------------------------* 02266000
  2345. * HOLD COMMAND * 02267000
  2346. *---------------------------------------------------------------------* 02268000
  2347. *. 02269000
  2348. * RESPONSES - 02270000
  2349. * 02271000
  2350. * DMTNPT610I LINK 'LINKID' TO SUSPEND FILE TRANSMISSION 02272000
  2351. * DMTNPT611I LINK 'LINKID' FILE TRANSMISSION SUSPENDED 02273000
  2352. * 02274000
  2353. * ERROR MESSAGES - 02275000
  2354. * 02276000
  2355. * DMTNPT612E LINK 'LINKID' ALREADY IN HOLD STATUS 02277000
  2356. * 02278000
  2357. *. 02279000
  2358. SPACE 1 02280000
  2359. SETHOLD EQU * 02281000
  2360. ST R14,CMDCMDSV SAVE RETURN 02282000
  2361. TM LFLAG,LHOLD ALREADY IN HOLD? 02283000
  2362. BO SETHLDE1 YES ERROR 02284000
  2363. TM CMDRESP+3,HOLDIMM HOLD IMMEDIATE? 02285000
  2364. BO SETHLDIM YES PROCESS IT 02286000
  2365. TM RDEVFLAG,FILACTIV IS THERE A FILE ACTIVE? @VM01139 02287000
  2366. BNO SETHLDIM NO..CAN DO IT ALL NOW 02288000
  2367. OI RDRCMD,RHLDIPGS MARK HOLD IN PROGRESS 02289000
  2368. MSG 610,AXSLINK WRITE SET TO HOLD MSG 02290000
  2369. B SETHLDXT AND ENTER COMMON EXIT 02291000
  2370. SPACE 1 02292000
  2371. SETHLDIM EQU * 02293000
  2372. OI LFLAG,LHOLD HOLD IT REGARDLESS 02294000
  2373. MSG 611,AXSLINK WRITE HELD MSG 02295000
  2374. B SETHLDXT AND ENTER COMMON EXIT 02296000
  2375. EJECT 02297000
  2376. SETHLDE1 EQU * 02298000
  2377. MSG 612,AXSLINK WRITE ALREADY HELD MSG 02299000
  2378. SETHLDXT EQU * 02300000
  2379. MVC HLDCMDLK(8),CMDRESP+4 SAVE RESPONSE LINK @VA03277 02301000
  2380. L R14,CMDCMDSV RESTORE RETURN 02302000
  2381. BR R14 AND RETURN 02303000
  2382. EJECT 02304000
  2383. *---------------------------------------------------------------------* 02305000
  2384. * TRACE COMMAND * 02306000
  2385. *---------------------------------------------------------------------* 02307000
  2386. *. 02308000
  2387. * RESPONSES - 02309000
  2388. * 02310000
  2389. * DMTNPT801I LINK 'LINKID' ERROR TRACE STARTED 02311000
  2390. * DMTNPT802I LINK 'LINKID' TRACE STARTED 02312000
  2391. * DMTNPT803I LINK 'LINKID' TRACE ENDED 02313000
  2392. * 02314000
  2393. * ERROR MESSAGES - 02315000
  2394. * 02316000
  2395. * DMTNPT810E LINK 'LINKID' TRACE ALREADY ACTIVE 02317000
  2396. * DMTNPT811E LINK 'LINKID' TRACE NOT ACTIVE 02318000
  2397. * 02319000
  2398. *. 02320000
  2399. SPACE 1 02321000
  2400. SETTRACE EQU * 02322000
  2401. ST R14,CMDCMDSV SAVE RETURN REGISTER 02323000
  2402. CLI CMDRESP+3,TRACEOFF TRACE OFF? 02324000
  2403. BNE SETTR1 NO CONTINUE 02325000
  2404. TM LFLAG,LTRALL+LTRERR ARE WE TRACING AT ALL? 02326000
  2405. BZ SETTRE2 NO ERROR 02327000
  2406. NI LFLAG,255-LTRALL-LTRERR TURN OFF TR BITS 02328000
  2407. MSG 803,AXSLINK WRITE THE MSG 02329000
  2408. B SETTRXIT AND EXIT 02330000
  2409. SPACE 02331000
  2410. SETTR1 EQU * 02332000
  2411. TM LFLAG,LTRALL+LTRERR ARE WE TRACING ALREADY? 02333000
  2412. BM SETTRE1 YES ERROR 02334000
  2413. CLI CMDRESP+3,TRACERR ERROR TRACING? 02335000
  2414. BNE SETTR2 NO ERROR 02336000
  2415. OI LFLAG,LTRERR SET ERROR TRACE ON 02337000
  2416. MSG 801,AXSLINK WRITE MSG 02338000
  2417. B SETTRXIT AND EXIT 02339000
  2418. EJECT 02340000
  2419. SETTR2 EQU * 02341000
  2420. OI LFLAG,LTRALL SET TRACE ALL 02342000
  2421. MSG 802,AXSLINK AND WRITE MSG 02343000
  2422. B SETTRXIT AND EXIT 02344000
  2423. SPACE 02345000
  2424. SETTRE1 EQU * 02346000
  2425. MSG 810,AXSLINK AND WRITE THE MSG 02347000
  2426. B SETTRXIT AND EXIT 02348000
  2427. SPACE 02349000
  2428. SETTRE2 EQU * 02350000
  2429. MSG 811,AXSLINK AND WRITE MSG 02351000
  2430. SETTRXIT EQU * 02352000
  2431. L R14,CMDCMDSV RESTORE RETURN REG 02353000
  2432. BR R14 AND RETURN 02354000
  2433. EJECT 02355000
  2434. *---------------------------------------------------------------------* 02356000
  2435. * BACKSPAC AND FWDSPACE COMMANDS * 02357000
  2436. *---------------------------------------------------------------------* 02358000
  2437. *. 02359000
  2438. * RESPONSES - 02360000
  2439. * 02361000
  2440. * NONE 02362000
  2441. * 02363000
  2442. * ERROR MESSAGES - 02364000
  2443. * 02365000
  2444. * DMTNPT511E NO FILE ACTIVE ON LINK 'LINKID' 02366000
  2445. * 02367000
  2446. *. 02368000
  2447. SPACE 1 02369000
  2448. SETBACK EQU * 02370000
  2449. ST R14,CMDCMDSV SAVE RETURN REG 02371000
  2450. TM RDEVFLAG,FILACTIV IS THERE A FILE ACTIVE? 02372000
  2451. BNO SBKFWDN NO ERROR 02373000
  2452. CLI CMDRESP+3,BACKFILE BACKSPAC FILE? 02374000
  2453. BNE SETBACK1 NO CONTINUE 02375000
  2454. OI RDRCMD,RBACKFIL INDICATE CMD FOR RDR PROCESSING 02376000
  2455. B SBKFWDE AND EXIT 02377000
  2456. SPACE 02378000
  2457. SETBACK1 EQU * 02379000
  2458. OI RDRCMD,RBACKCNT MUST BE BACKSPAC COUNT 02380000
  2459. MVC RDRCMDCT(4),CMDRESP+12 SAVE COUNT FOR RDR 02381000
  2460. B SBKFWDE AND EXIT 02382000
  2461. SPACE 02383000
  2462. SETFWD EQU * 02384000
  2463. ST R14,CMDCMDSV SAVE RETURN REGISTER 02385000
  2464. TM RDEVFLAG,FILACTIV IS THERE A FILE ACTIVE? 02386000
  2465. BNO SBKFWDN NO ERROR 02387000
  2466. MVC RDRCMDCT(4),CMDRESP+12 SAVE COUNT FOR READER 02388000
  2467. OI RDRCMD,RFWDCNT INDICATE COMMAND FOR READER 02389000
  2468. B SBKFWDE AND EXIT 02390000
  2469. SPACE 02391000
  2470. SBKFWDN EQU * 02392000
  2471. MSG 511,AXSLINK WRITE NO FILE ACTIVE MSG 02393000
  2472. SBKFWDE EQU * 02394000
  2473. MVC RDRCMDLK(8),CMDRESP+4 MOVE IN RESPONSE LINKID 02395000
  2474. L R14,CMDCMDSV RESTORE RETURN REG 02396000
  2475. BR R14 AND RETURN 02397000
  2476. EJECT 02398000
  2477. *---------------------------------------------------------------------* 02399000
  2478. * FLUSH COMMAND * 02400000
  2479. *---------------------------------------------------------------------* 02401000
  2480. *. 02402000
  2481. * RESPONSES - 02403000
  2482. * 02404000
  2483. * NONE 02405000
  2484. * 02406000
  2485. * ERROR MESSAGES - 02407000
  2486. * 02408000
  2487. * DMTNPT581E FILE 'SPOOLID' NOT ACTIVE 02409000
  2488. * 02410000
  2489. *. 02411000
  2490. SPACE 1 02412000
  2491. SETFLUSH EQU * 02413000
  2492. ST R14,CMDCMDSV SAVE RETURN REG 02414000
  2493. MVC RDRCMDID(2),CMDRESP+12 SAVE FOR LATER COMPARE 02415000
  2494. LH R1,CMDRESP+12 GET SPOOLID 02416000
  2495. CVD R1,CMDCVD CONVERT TO DECIMAL 02417000
  2496. UNPK CMDFID,CMDCVD SPREAD THE DIGITS 02418000
  2497. OI CMDFID+3,X'F0' MAKE LAST PRINTABLE 02419000
  2498. TM RDEVFLAG,FILACTIV IS THERE A FILE ACTIVE? 02420000
  2499. BO SETFLSH1 YEP.. CONTINUE 02421000
  2500. MSG 581,CMDFID NO WRITE MSG 02422000
  2501. B SETFLSHE AND EXIT 02423000
  2502. SPACE 02424000
  2503. SETFLSH1 EQU * 02425000
  2504. CLI CMDRESP+3,FLUSHALL FLUSH ALL 02426000
  2505. BNE SETFLSH2 NO CONTINUE 02427000
  2506. OI RDRCMD,RFLSHALL SET RDRCMD BYTE 02428000
  2507. B SETFLSHE AND EXIT 02429000
  2508. SPACE 02430000
  2509. SETFLSH2 EQU * 02431000
  2510. CLI CMDRESP+3,FLUSHOLD FLUSH AND HOLD? 02432000
  2511. BNE SETFLSH3 NO MUST BE FLUSH COPY 02433000
  2512. OI RDRCMD,RFLSHOLD INDICATE CMD IN RDR CMD BYTE 02434000
  2513. B SETFLSHE AND EXIT 02435000
  2514. SPACE 02436000
  2515. SETFLSH3 EQU * 02437000
  2516. OI RDRCMD,RFLSHCPY INDICATE CMD IN RDR CMD BYTE 02438000
  2517. SETFLSHE EQU * 02439000
  2518. MVC RDRCMDLK(8),CMDRESP+4 MOVE IN RESPONSE LINKID 02440000
  2519. L R14,CMDCMDSV RESTORE RETURN REG 02441000
  2520. BR R14 AND RETURN 02442000
  2521. EJECT 02443000
  2522. *---------------------------------------------------------------------* 02444000
  2523. * CMD COMMANDS * 02445000
  2524. *---------------------------------------------------------------------* 02446000
  2525. *. 02447000
  2526. * RESPONSES - 02448000
  2527. * 02449000
  2528. * NONE 02450000
  2529. * 02451000
  2530. * ERROR MESSAGES - 02452000
  2531. * 02453000
  2532. * NONE 02454000
  2533. * 02455000
  2534. *. 02456000
  2535. SPACE 1 02457000
  2536. DS 0H 02458000
  2537. SETCMD EQU * 02459000
  2538. ST R14,CMDCMDSV SAVE RETURN 02460000
  2539. OC CMDRESP+12(8),FILL TO UPPR CASE 02461000
  2540. CLC CMDRESP+12(3),=C'LOG' LOGING REQUESTED? 02462000
  2541. BNE CMD2A NOPE 02463000
  2542. OI $LOGSW,LOGON SET LOGING REQUESTED 02464000
  2543. CMDNRET EQU * 02465000
  2544. L R14,CMDCMDSV RESTORE RETURN 02466000
  2545. BR R14 AND RETURN 02467000
  2546. SPACE 1 02468000
  2547. CMD2A EQU * 02469000
  2548. LA R14,CMDNRET SET RETURN ADDRESS @VA03520 02470000
  2549. CLC CMDRESP+12(5),=C'NOLOG' TURN OFF LOGING? 02471000
  2550. BE LOGCLOSE YES 02472000
  2551. BR R14 UNKNOWN REQUEST...IGNORE @VA03520 02473000
  2552. EJECT 02474000
  2553. *---------------------------------------------------------------------* 02475000
  2554. * * 02476000
  2555. * COMMAND DATA AREA * 02477000
  2556. * * 02478000
  2557. *---------------------------------------------------------------------* 02479000
  2558. SPACE 02480000
  2559. STRTCMD EQU X'80' START COMMAND 02481000
  2560. DRCMD EQU X'81' DRAIN COMMAND 02482000
  2561. FREECMD EQU X'82' FREE COMMAND 02483000
  2562. HOLDCMD EQU X'83' HOLD COMMAND 02484000
  2563. TRACECMD EQU X'84' TRACE COMMAND 02485000
  2564. BACKCMD EQU X'90' BACKSPAC COMMAND 02486000
  2565. FWDCMD EQU X'91' FORWARD SPACE COMMAND 02487000
  2566. FLUSHCMD EQU X'A0' FLUSH COMMAND 02488000
  2567. CMDCMD EQU X'B0' COMMAND COMMAND 02489000
  2568. MSGCMD EQU X'B1' MESSAGE COMMAND 02490000
  2569. SPACE 02491000
  2570. * COMMAND MODIFIERS 02492000
  2571. TRACEOFF EQU X'C0' TRACE OFF 02493000
  2572. TRACERR EQU X'80' ERROR TRACE ON 02494000
  2573. TRACEALL EQU X'00' TRACE ALL ON 02495000
  2574. BACKCNT EQU X'80' BACKSPAC COUNT 02496000
  2575. BACKFILE EQU X'00' BACKSPAC FILE 02497000
  2576. FLUSHCPY EQU X'00' FLUSH COPY 02498000
  2577. FLUSHALL EQU X'80' FLUSH ALL 02499000
  2578. FLUSHOLD EQU X'40' FLUSH HOLD 02500000
  2579. HOLDIMM EQU X'80' HOLD IMMEDIATE 02501000
  2580. STACLASS EQU X'80' START RESET CLASS 02502000
  2581. SPACE 02503000
  2582. CMDSETUP DC A(CMDTABLE) COMMAND TABLE ADDRESS 02504000
  2583. DC A(CMDINC) 02505000
  2584. DC A(CMDEND-CMDINC) LAST ENTRY 02506000
  2585. SPACE 1 02507000
  2586. CMDINC EQU 4 LENGTH OF COMMAND TABLE ENTRY 02508000
  2587. SPACE 02509000
  2588. CMDTABLE DC 0F'0' 02510000
  2589. DC AL1(STRTCMD),AL3(SETSTART) 02511000
  2590. DC AL1(DRCMD),AL3(SETDRAIN) 02512000
  2591. DC AL1(FREECMD),AL3(SETFREE) 02513000
  2592. DC AL1(HOLDCMD),AL3(SETHOLD) 02514000
  2593. DC AL1(TRACECMD),AL3(SETTRACE) 02515000
  2594. DC AL1(BACKCMD),AL3(SETBACK) 02516000
  2595. DC AL1(FWDCMD),AL3(SETFWD) 02517000
  2596. DC AL1(FLUSHCMD),AL3(SETFLUSH) 02518000
  2597. DC AL1(CMDCMD),AL3(SETCMD) 02519000
  2598. CMDEND EQU * 02520000
  2599. SPACE 02521000
  2600. CMDCVD DC D'0' CONVERT AREA 02522000
  2601. CMDFID DC CL4' ' COMMAND SPOOLID AREA 02523000
  2602. DC CL4' ' 02524000
  2603. CMDCMDSV DS F RETURN SAVE 02525000
  2604. EJECT 02526000
  2605. RDRCMD DC X'00' READER COMMAND BYTE 02527000
  2606. * BITS DEFINED IN RDRCMD 02528000
  2607. RBACKFIL EQU X'80' BACKSPACE FILE 02529000
  2608. RBACKCNT EQU X'40' BACKSPACE COUNT 02530000
  2609. RFWDCNT EQU X'20' FORWARD SPACE COUNT 02531000
  2610. RFLSHCPY EQU X'10' FLUSH COPY 02532000
  2611. RFLSHALL EQU X'08' FLUSH ALL COPIES 02533000
  2612. RFLSHOLD EQU X'04' FLUSH AND HOLD 02534000
  2613. RHLDIPGS EQU X'02' HOLD IN PROGRESS 02535000
  2614. SPACE 02536000
  2615. RDRCMDCT DC F'0' FILE SPACE COUNT 02537000
  2616. RDRCMDID DC H'0' CMD INDICATED SPOOLID 02538000
  2617. RDRCMDLK DC CL8' ' RESPONSE LINKID 02539000
  2618. HLDCMDLK DC CL8' ' RESPONSE LINKID 02540000
  2619. EJECT 02541000
  2620. *---------------------------------------------------------------------* 02542000
  2621. * * 02543000
  2622. * DEVICE TABLES * 02544000
  2623. * * 02545000
  2624. *---------------------------------------------------------------------* 02546000
  2625. SPACE 02547000
  2626. LINE DC F'0' SYNCH LOCK 02548000
  2627. DC XL2'0000' DEVICE ADDRESS TO BE FILLED IN 02549000
  2628. DC AL1(1),AL1(TYP2700) SENSE REQUEST, DEVICE TYPE CODE 02550000
  2629. DC A(0) CHANNEL PROGRAM START ADDRESS 02551000
  2630. DC 2F'0' RETURN SIO COND CODE AND ENDING CSW 02552000
  2631. DC X'00',AL1(0,0,0) RET SENSE INFO, DEVICE STATUS FLAGS 02553000
  2632. DC C'000',C'LINE ' EBCDIC ADDRESS AND TYPE 02554000
  2633. EJECT 02555000
  2634. *---------------------------------------------------------------------* 02556000
  2635. * * 02557000
  2636. * UNIT RECORD REQUEST BLOCKS * 02558000
  2637. * * 02559000
  2638. *---------------------------------------------------------------------* 02560000
  2639. SPACE 02561000
  2640. PUNBLK DC F'0' SYNCH LOCK 02562000
  2641. DC CL4'AXS ' TASKNAME TO FILE ACCESS 02563000
  2642. DC A(PUNREQ) REQUEST BUFFER 02564000
  2643. DC AL1(19),AL3(PUNREQ) RESPONSE BUFFER 02565000
  2644. PUNREQ DC AL1(19,0,0,0) LENGTH,FUNCTION,SPARE,SUBCODE 02566000
  2645. DC A(PUNTAG) TAG ADDRESS 02567000
  2646. DC A(0) I/O AREA ADDRESS 02568000
  2647. DC CL8' ' LINK ID 02569000
  2648. DC C'000',C'PUNCH' DEVICE STYLE 02570000
  2649. DC AL1(0,0,0,0) FLAG BYTES 02571000
  2650. SPACE 02572000
  2651. RDRBLK DC F'0' SYNCH LOCK 02573000
  2652. DC CL4'AXS ' TASKNAME TO FILE ACCESS 02574000
  2653. DC A(RDRREQ) REQUEST BUFFER 02575000
  2654. DC AL1(19),AL3(RDRREQ) RESPONSE BUFFER 02576000
  2655. RDRREQ DC AL1(0,0,0,0) LENGTH,FUNCTION,SPARE,SUBCODE 02577000
  2656. DC A(0) TAG ADDRESS 02578000
  2657. DC A(0) I/O AREA ADDRESS 02579000
  2658. DC CL8' ' LINK ID 02580000
  2659. DC C'000',C'SPRDR' DEVICE STYLE 02581000
  2660. DC AL1(FILREADY,0,0,0) FLAG BYTES 02582000
  2661. EJECT 02583000
  2662. *---------------------------------------------------------------------* 02584000
  2663. * * 02585000
  2664. * UNIT RECORD TAGS * 02586000
  2665. * * 02587000
  2666. *---------------------------------------------------------------------* 02588000
  2667. SPACE 02589000
  2668. PUNTAG DC 108CL1' ' PUNCH TAG 02590000
  2669. SPACE 02591000
  2670. EJECT 02592000
  2671. *---------------------------------------------------------------------* 02593000
  2672. * * 02594000
  2673. * CHANNEL PROGRAMS, PSW'S, CONSTANTS * 02595000
  2674. * * 02596000
  2675. *---------------------------------------------------------------------* 02597000
  2676. SPACE 02598000
  2677. READINIT CCW 2,INIT,SILI,4 INITIAL CONNECTION PROGRAM @VA03349 02599000
  2678. ENQPROG CCW 1,ENQBYTE,CC+SILI,ENQBYTEL @VA03349 02600000
  2679. CCW 2,RESP,SILI,2 @VA03349 02601000
  2680. TRANSMIT CCW 1,0,CC+SILI,0 WRITE DATA TO DEVICE @VA03349 02602000
  2681. CCW 3,ETBTRA,CC+SILI,2 02603000
  2682. CCW 2,RESP,SILI,2 @VA03349 02604000
  2683. RECEIVE CCW 1,SENDRESP+1,CC+SILI,SENDRESL-1 RECEIVE DATA @VA03349 02605000
  2684. * FROM DEVICE 02606000
  2685. RDONLYPG CCW 2,LINEINB,SILI,BUFFLEN 02607000
  2686. NAKPROG CCW 1,NAKBYTE,CC+SILI,NAKBYTEL @VA03349 02608000
  2687. CCW 2,LINEINB,SILI,BUFFLEN 02609000
  2688. EOTPROG CCW 1,EOTBYTE,SILI,EOTBYTEL @VA03349 02610000
  2689. DUMYREAD CCW 2,0,SILI+SKIP,1 TO RESET CHAR PHASE LATCH 02611000
  2690. NRDYPROG CCW 1,EOTBYTE,CC+SILI,EOTBYTEL @VA03349 02612000
  2691. CCW 2,LINEINB,SILI,BUFFLEN 02613000
  2692. SPACE 02614000
  2693. PUTPROG CCW 1,*-*,SILI,80 02615000
  2694. RVIPROG CCW 1,RVIBYTE,CC+SILI,6 REVERSE INTERRUPT @VA03349 02616000
  2695. CCW 2,LINEINB,SILI,2 @VA03349 02617000
  2696. SELPROG CCW 1,0,CC+SILI,0 @VA03349 02618000
  2697. CCW 2,RESP,SILI,2 @VA03349 02619000
  2698. SPACE 02620000
  2699. * 02621000
  2700. BUFFLEN EQU 520 MAXIMUM LINE BUFFER LENGTH @VA04617 02622000
  2701. XTRASYNS EQU 2 NUM EXTRA SYN CHARS @VA03349 02623000
  2702. TMTCNTR DC F'20' TIMEOUT COUNTER 02624000
  2703. EOTCNT DC F'5' EOT TIMEOUT COUNTER @VA03342 02625000
  2704. ENQBYTEL EQU 5 @VA03349 02626000
  2705. ENQBYTE DC AL1(SYN),(XTRASYNS)AL1(SYN),AL1(ENQ),AL1(EPAD) @VA04357 02627000
  2706. ETBTRA DC AL1(DLE,ETB) ENDING SEQUENCE 02628000
  2707. DCX DC XL3'021126' STX,DC1,ETB 02629000
  2708. INDEVSEL DC XL4'02276126' STX,ESC,/,ETB 02630000
  2709. PRTSEL DC AL1(DC1,IRS) DEFAULT IS 3770 CONSOLE PRINTER @VA04171 02630500
  2710. RVIBYTE DC AL1(SYN),(XTRASYNS)AL1(SYN),AL1(DLE,RVI) @VA03349 02631000
  2711. DC AL1(EPAD) @VA03349 02632000
  2712. NAKBYTEL EQU 5 @VA03349 02633000
  2713. NAKBYTE DC AL1(SYN),(XTRASYNS)AL1(SYN),AL1(NAK),AL1(EPAD) @VA04357 02634000
  2714. EOTBYTEL EQU 5 @VA03349 02635000
  2715. EOTBYTE DC AL1(SYN),(XTRASYNS)AL1(SYN),AL1(EOT),AL1(EPAD) @VA03349 02636000
  2716. SENDRESP DC XL6'000000000000' @VA03349 02637000
  2717. ORG SENDRESP @VA03349 02638000
  2718. SENDRESL EQU 6 @VA03349 02639000
  2719. DC AL1(SYN),(XTRASYNS)AL1(SYN) @VA04357 02640000
  2720. RESP DC XL2'0000' ACTUAL RESPONSE SENT OR @VA03349 02641000
  2721. * RECEIVED FOR TRANSMIT OR 02642000
  2722. * RECEIVE CHANNEL PROGRAMS 02643000
  2723. DC AL1(EPAD) @VA03349 02644000
  2724. EXPRESP DC XL2'0000' EXPECTED RESPONSE FROM DEVICE @VA03349 02645000
  2725. * FOR RECEIVE CHANNEL PROGRAM 02646000
  2726. INIT DC XL4'00000000' INITIAL CONNECTION RESPONSE @VA03349 02647000
  2727. * FROM DEVICE 02648000
  2728. INITACK0 DC XL2'1070' INITIAL ACK RESPONSE TO DEVICE @VA03349 02649000
  2729. NAKCOUNT DC F'0' SUCCESSIVE NAK RETRY COUNT @VA03349 02650000
  2730. RETRYNAK DC H'3' SUCCESSIVE NAK RETRY LIMIT @VA03349 02651000
  2731. WACK DC AL1(DLE,WABT) TEMPORARY DELAY @VA03349 02652000
  2732. SIGNOFF DC C'/*SIGNOFF' SIGNOFF CARD IMAGE @VA08251 02652100
  2733. EJECT 02653000
  2734. SPACE 02654000
  2735. * CARRIAGE CONTROL CHARACTERS TRANSLATION TABLE FOR NON-2780 02655000
  2736. CCTAB DC CL16'M/ST////////////' 02656000
  2737. DC CL16'/ABCDEFGHIJKL///' 02657000
  2738. SPACE 1 02658000
  2739. * CARRIAGE CONTROL CHARACTERS TRANSLATION TABLE FOR 2780 02659000
  2740. CCT2780 DC CL16'//ST////////////' @VA03488 02660000
  2741. DC CL16'/ABCDEFGH///////' @VA03488 02661000
  2742. SPACE 1 02662000
  2743. PREVOP DC X'00' PREVIOUS CCW CC CODE @VA03488 02663000
  2744. PREVOPS DC X'00' MODIFIED PREVIOUS CCW CC CODE @VA03488 02664000
  2745. SPACE 02665000
  2746. BLANK DC CL2' ' 02666000
  2747. MAXPRINT DC 1H'0' MAX. NUMBER OF PRINT POSITIONS @VA03426 02667000
  2748. MAXREC DC 1H'0' MAX NUMBER OF RECORD IN A BLOCK 02668000
  2749. MAXREC1 DC 1H'0' MAX NUMBER OF RECORD IN A BLOCK 02669000
  2750. MAXBYTS DC 1H'0' MAX NUMBER OF BYTES IN A BLOCK 02670000
  2751. SPACE 02671000
  2752. * RECORDS SEPARATOR CHARACTERS 02672000
  2753. SPACE 02673000
  2754. TAB DC 64F'0' 02674000
  2755. ORG TAB+X'03' 02675000
  2756. DC X'03' ETX 02676000
  2757. ORG TAB+X'1E' 02677000
  2758. DC X'1E' IRS 02678000
  2759. ORG TAB+X'1F' 02679000
  2760. DC X'1F' ITB 02680000
  2761. ORG TAB+X'26' 02681000
  2762. DC X'26' ETB 02682000
  2763. ORG TAB+256 02683000
  2764. SPACE 4 02684000
  2765. LTORG 02685000
  2766. SPACE 4 02686000
  2767. ********************0123456789ABCDEF**** 02687000
  2768. TRPRTB DC 64X'4B' 0-3 02688000
  2769. DC CL16' .........¢.<(+|' 4 02689000
  2770. DC CL16'&&.........!$*);¬' 5 02690000
  2771. DC CL16'-/.........,%_>?' 6 02691000
  2772. DC CL16'..........:#@''="' 7 02692000
  2773. DC CL16'.ABCDEFGHI......' 8 02693000
  2774. DC CL16'.JKLMNOPQR......' 9 02694000
  2775. DC CL16'..STUVWXYZ......' A 02695000
  2776. DC CL16'................' B 02696000
  2777. DC CL16'.ABCDEFGHI......' C 02697000
  2778. DC CL16'.JKLMNOPQR......' D 02698000
  2779. DC CL16'..STUVWXYZ......' E 02699000
  2780. DC CL16'0123456789......' F 02700000
  2781. ********************0123456789ABCDEF**** 02701000
  2782. * 02702000
  2783. EJECT 02703000
  2784. *---------------------------------------------------------------------* 02704000
  2785. * * 02705000
  2786. * SAVE AREAS & BUFFERS * 02706000
  2787. * * 02707000
  2788. *---------------------------------------------------------------------* 02708000
  2789. SPACE 02709000
  2790. GETSAVE DS 3F GETBLOCK SAVE AREA 02710000
  2791. CMDSAVE DS 6F COMMANDS SAVE AREA 02711000
  2792. SPACE 02712000
  2793. STARTLIN DC A(0) START OF LINE 02713000
  2794. BYTSCNT DC 1H'0' NUM OF BYTES IN BUFFER 02714000
  2795. RECNT DC 1H'0' NUM OF RECORDS IN BUFFER 02715000
  2796. LINEBUFF DS A LINE OUTPUT BUFFER 02716000
  2797. SPACE 02717000
  2798. LINEINB DS (BUFFLEN)C LINE INPUT BUFFER 02718000
  2799. SPACE 02719000
  2800. BUFSTART DC AL4(BUFUNPK) BUFUNPK POINTER 02720000
  2801. BUFCNT DC 1H'0' BYTES COUNT 02721000
  2802. BUFUNPK DS 134C UNPACK BUFFER 02722000
  2803. OUTCARD DS 80C OUTPUT BUFFER FOR BLKCOMP 02723000
  2804. DC AL1(ETX,EOT) END-OF-BUFFER DELIMITER @VA03112 02724000
  2805. SELBUF DC F'0' SELECTION BUFFER @VA03349 02725000
  2806. EJECT 02726000
  2807. *. 02727000
  2808. * 02728000
  2809. * ENTRY NAME - 02729000
  2810. * 02730000
  2811. * MSGPROC 02731000
  2812. * 02732000
  2813. * FUNCTION - 02733000
  2814. * 02734000
  2815. * THIS ROUTINE WILL UNSTACK MSGS FROM THE TASK MSG QUEUE 02735000
  2816. * AND TRANSMIT THEM TO THE REMOTE TERMINAL PRINTER. 02736000
  2817. * 02737000
  2818. * CALLS TO OTHER ROUTINES - 02738000
  2819. * 02739000
  2820. * GMSGREQ - TO UNSTACK MESSAGES 02740000
  2821. * 02741000
  2822. * OPERATION - 02742000
  2823. * 02743000
  2824. * 1. SEND ENQ AND WAIT FOR CORRECT RESPONSE 02744000
  2825. * 02745000
  2826. * 2. DEQUEUE MSG VIA CALL TO GMSGREQ 02746000
  2827. * 02747000
  2828. * 3. TRANSMIT THE MSG BUFFER AND WAIT FOR CORRECT 02748000
  2829. * RESPONSE. 02749000
  2830. * 02750000
  2831. * 4. RETURN TO 2. UNTIL NO MORE MESSAGES ARE QUEUED,THEN 02751000
  2832. * SEND EOT. 02752000
  2833. * 02753000
  2834. * 02754000
  2835. * RESPONSES - 02755000
  2836. * 02756000
  2837. * NONE 02757000
  2838. * 02758000
  2839. * ERROR MESSAGES - 02759000
  2840. * 02760000
  2841. * NONE 02761000
  2842. * 02762000
  2843. *. 02763000
  2844. SPACE 1 02764000
  2845. MSGPROC EQU * 02765000
  2846. ST R14,MSGPSAVE SAVE RETURN REGISTER 02766000
  2847. LA R15,RETRYNUM SET REPLY COUNT 02767000
  2848. MSGSRTRY EQU * 02768000
  2849. MVC DEVSTART(4),=A(ENQPROG) SET ENQUIRY PROGRAM 02769000
  2850. BAL R14,LINEIO SEND ENQ AND LISTEN 02770000
  2851. TM DEVFLAGS,IOERR ANY ERROR? 02771000
  2852. BNO MSGSCK NO - GO TO CHECK THE RESPONSE 02772000
  2853. TM DEVCSW+4,UC UNIT CHECK? 02773000
  2854. BNO MSGSEOT NO UNIT EXCEPTION SEND EOT AND RETRY 02774000
  2855. BCTR R15,0 UPDATE TIMEOUT COUNT 02775000
  2856. LTR R15,R15 END OF RETRY? 02776000
  2857. BP MSGSRTRY NO - TRY AGAIN 02777000
  2858. SPACE 02778000
  2859. MSGSEOT EQU * 02779000
  2860. BAL R14,SENDEOT GO TO SEND EOT 02780000
  2861. LA R15,RETRYNUM RESET ERROR COUNTER 02781000
  2862. B MSGSRTRY AND RETRY ONCE MORE 02783000
  2863. SPACE 02784000
  2864. MSGSCK EQU * 02785000
  2865. CLC RESP(2),EXPRESP CORRECT RESPONSE @VA03349 02786000
  2866. BE MSGSSLCT YES - GO TO SELECT THE UNIT 02787000
  2867. CLI RESP,EOT BACK TO CNTL MODE @VA03349 02788000
  2868. BE MSGSEOT YES - GO TO RESET AND RETRY 02789000
  2869. TM INTFLAG,SIGNONED SIGNONED YET? 02790000
  2870. BNO MSGSRTRY NO..NOT READY FOR ENQ 02791000
  2871. CLI RESP,ENQ IS HE TRYING TO TALK @VA03349 02792000
  2872. BE NPTACK0 YES..COME BACK LATER 02793000
  2873. CLI RESP,NAK IS IT DEVICE NOT READY @VA03862 02793200
  2874. BNE MSGSRTRY NO, JUST RETRY @VA03862 02793400
  2875. LA R0,2 TAKE A TWO SECOND DELAY @VA03862 02793600
  2876. BAL R14,TDELAY @VA03862 02793800
  2877. B MSGSRTRY NO - RETRY 02794000
  2878. SPACE 02795000
  2879. MSGSSLCT EQU * 02796000
  2880. XC MSGLAST(4),MSGLAST CLEAR LAST MESSAGE NUMBER @VA03743 02797000
  2881. XI EXPRESP+1,X'11' SWITCH THE EXPECTED RESPONSE @VA03349 02798000
  2882. L R3,LINEBUFF GET BUFFER ADDR 02799000
  2883. MVI 0(R3),STX PREPARE FIRST CHAR. 02800000
  2884. LA R3,1(R3) SET BUFFER POINTER 02801000
  2885. LA R5,1 AND BYTES COUNT 02802000
  2886. MSGCONT EQU * 02803000
  2887. TM INTFLAG,WSEM SERIOUS SIGNON ERROR @VA03349 02804000
  2888. BZ MSGCONTA NO, CONTINUE @VA04171 02805200
  2889. TM DEVFEAT,REM3770 IS A 3770 DEFINED @VA04171 02805400
  2890. BO MSGCONTB YES, MUST SELECT SOMETHING @VA04171 02805600
  2891. MSGCONTA EQU * @VA04171 02805800
  2892. TM DEVFEAT,REM2780 IS THE REMOTE STATION A 2780? 02806000
  2893. BO MSG2780 YES - SKIP NEXT CODE 02807000
  2894. TM DEVFEAT,REMPUNCH PUNCH UNIT INSTALLED @VA03742 02808000
  2895. BNO MSG2780 NO...DONT SELECT @VA03742 02809000
  2896. MSGCONTB EQU * @VA04171 02809500
  2897. TM DEVFEAT,REM3770 IS IT A 3770 @VA03349 02810000
  2898. BZ MSG2770 NO, SELECT NORMAL @VA03349 02811000
  2899. MVC 0(2,R3),PRTSEL SELECT THE SPECIFIED 3770 PRINTER@VA04171 02812500
  2900. B MSG2770A @VA03349 02813000
  2901. MSG2770 MVC 0(2,R3),=AL1(DC1,IRS) SELECT 2770 PRINTER @VA03349 02814000
  2902. MSG2770A EQU * @VA03349 02815000
  2903. LA R3,2(R3) UPDATE BUFFER POINTER 02816000
  2904. LA R5,2(R5) AND BYTES COUNT 02817000
  2905. MSG2780 EQU * 02818000
  2906. MVI MSGTEXT,C' ' SETUP TO CLEAR MSGTEXT @VA03743 02819000
  2907. MVC MSGTEXT+1(109),MSGTEXT CLEAR MSGTEXT @VA03743 02820000
  2908. LA R1,MSGPREFX GET THE MSG BUFFER ADDR @VA03279 02821000
  2909. L R2,NPTALINK GET MY LINKID ADDR 02822000
  2910. L R15,TCOM GET COMMON ROUTINE TABLE ADDR 02823000
  2911. L R15,GMSGREQ GET MSG UNSTACK ROUTINE ADDR 02824000
  2912. BALR R14,R15 AND TRY TO GET A MSG 02825000
  2913. LTR R15,R15 ANY LEFT? 02826000
  2914. BNZ MSGEOT NO ALL DONE 02827000
  2915. CLC MSGTEXT+8(3),MSGLAST IS THIS THE SAME MESSAGE @VA03743 02828000
  2916. BNE MSGDO NO SEND THE MESSAGE @VA03743 02829000
  2917. CLC MSGTEXT+8(3),=CL3'201' INVALID COMMAND? @VA03743 02830000
  2918. BE MSG2780 YES ALREADY SENT FLUSH IT @VA03743 02831000
  2919. MSGDO EQU * SENT THE MESSAGE TO TERMINAL @VA03743 02832000
  2920. MVC MSGLAST(3),MSGTEXT+8 SAVE FOR LATER COMPARE @VA03743 02833000
  2921. MVC MSGTEXT(2),MSGRESET RESET HEADER 02834000
  2922. LA R4,MSGBLEN GET MESSAGE BUFFER ADDR 02835000
  2923. AR R5,R4 IN REG.2 BUFFER BYTES COUNT 02836000
  2924. BCTR R4,0 -1 FOR EXEC 02837000
  2925. EX R4,MVCMSG MOVE MSG. 02838000
  2926. STH R5,TRANSMIT+6 SET BYTE COUNT @VA03349 02839000
  2927. MSGDOA EQU * @VA04171 02839500
  2928. MVC DEVSTART,=A(TRANSMIT) PROG TO SEND TO DEVICE @VA03349 02840000
  2929. BAL R14,LINEIO GO DO THE IO @VA03349 02841000
  2930. BAL R8,SENDVRFY CHECK THE OPERATION @VA03349 02842000
  2931. TM RESTRSEQ,X'80' RESTORE SEQUENCE? @VA11230 02842100
  2932. BO MSGEOTC YES,AVOID RESTR LOOP @VA11230 02842200
  2933. SPACE 02843000
  2934. MSGNEXT EQU * 02844000
  2935. L R3,LINEBUFF GET LINE BUFFER ADDR 02845000
  2936. MVI 0(R3),STX MOVE IN HEADER 02846000
  2937. LA R3,1(R3) UP BY ONE 02847000
  2938. LA R5,1 INDICATE ONE BYTE SO FAR 02848000
  2939. B MSGCONT AND CONTINUE 02849000
  2940. SPACE 02850000
  2941. MSGEOT EQU * 02851000
  2942. OI RESTRSEQ,X'80' INDICATE RESTORE SEQ @VA11230 02851010
  2943. TM DEVFEAT,REM2770 IS IT A 2770 TYPE @VA04171 02851100
  2944. BO MSGEOTA YES @VA04171 02851150
  2945. MVC 0(4,R3),MSGREST SET UP THE RESTORE @VA04171 02851200
  2946. LA R5,4(0,R5) @VA04171 02851250
  2947. B MSGEOTB @VA04171 02851300
  2948. MSGEOTA MVC 0(5,R3),MSGRESTA SET UP RESTORE FOR 2770 @VA04171 02851350
  2949. LA R5,5(0,R5) GET END OF RESTORE @VA04171 02851400
  2950. MSGEOTB STH R5,TRANSMIT+6 @VA04171 02851450
  2951. MVC DEVSTART,=A(TRANSMIT) @VA04171 02851500
  2952. BAL R14,LINEIO GO DO THE RESTORE @VA04171 02851550
  2953. BAL R8,SENDVRFY CHECK THE OPERATION @VA04171 02851600
  2954. MSGEOTC EQU * @VA11230 02851610
  2955. XC RESTRSEQ,RESTRSEQ RESET RSTR BEFORE EOT @VA11230 02851620
  2956. BAL R14,SENDEOT SEND EOT 02852000
  2957. NI GETFLAGS,255-MSGQUED TURN OFF MSGS QUEUED FLAG 02853000
  2958. L R14,MSGPSAVE RESTORE RETURN REGISTER 02854000
  2959. BR R14 AND RETURN 02855000
  2960. SPACE 1 02856000
  2961. MVCMSG MVC 0(*-*,R3),MSGTEXT TO BE EXECUTED FROM ABOVE @VA03349 02857000
  2962. SPACE 3 02858000
  2963. MSGPSAVE DS F SAVE FOR RETURN REGISTER 02859000
  2964. RESTRSEQ DC X'00' RESTORE INDIDCATOR @VA11230 02859100
  2965. SPACE 1 02860000
  2966. MSGRESET DC AL1(ESC),CL1'/' RESET NEARER @VA04949 02861000
  2967. SPACE 1 02862000
  2968. MSGPREFX DC CL8' ' LOCID @VA03279 02863000
  2969. MSGTEXT DC AL1(ESC),CL1'/' BSC ESCAPE SEQUENCE @VA04949 02864000
  2970. DC 110C' ' MSG TEXT 02865000
  2971. DC AL1(NL) FORCE EXECUTION OF ESC SEQUENCE @VA04949 02865100
  2972. DC AL1(ETX) END OF LINE BUFFER 02866000
  2973. MSGBLEN EQU *-MSGTEXT LENGTH OF MSG BUFFER 02867000
  2974. SPACE 02868000
  2975. MSGLAST DC F'0' HOLD AREA FOR MESSAGE NUMBER @VA03743 02869000
  2976. MSGREST DC AL1(ESC),CL1'A',CL1' ',AL1(ETX) @VA04171 02869300
  2977. MSGRESTA DC AL1(ESC),CL1'A',CL1' ',AL1(IRS,ETX) @VA04171 02869600
  2978. EJECT 02870000
  2979. *. 02871000
  2980. * 02872000
  2981. * ENTRY NAME - 02873000
  2982. * 02874000
  2983. * MSG 02875000
  2984. * 02876000
  2985. * FUNCTION - 02877000
  2986. * 02878000
  2987. * THIS ROUTINE PREPARES AND SENDS REQUESTS TO THE 02879000
  2988. * SPECIALIZED TASK REX, IN ORDER TO WRITE MESSAGES 02880000
  2989. * ON THE OPERATOR'S CONSOLE. 02881000
  2990. * 02882000
  2991. * CALLS TO OTHER ROUTINES - 02883000
  2992. * 02884000
  2993. * DMTREX - TO EXECUTE THE MSG WRITE 02885000
  2994. * 02886000
  2995. * OPERATION - 02887000
  2996. * 02888000
  2997. * 1. MOVE VARIABLE PART OF MSG TO GIVE REQUEST BUFFER. 02889000
  2998. * 02890000
  2999. * 2. INITIATE GIVE REQUEST TO DMTREX WITH THE MSG BUFFER. 02891000
  3000. * 02892000
  3001. * 3. WAIT FOR COMPLETION. 02893000
  3002. * 02894000
  3003. * 4. RETURN TO CALLER. 02895000
  3004. * 02896000
  3005. * ENTRY CONDITIONS: 02897000
  3006. * 02898000
  3007. * IN REG. 14 THE RETURN ADDRESS 02899000
  3008. * IN REG. 15 THE ROUTING CODE 02900000
  3009. * IN REG. 1 THE POINTER TO THE VARIABLE PORTION OF 02901000
  3010. * THE MESSAGE STRING 02902000
  3011. * IN REG. 0 THE LENGTH OF THE VARIABLE PORTION OF THE MSG 02903000
  3012. * 02904000
  3013. * EXIT CONDITIONS: 02905000
  3014. * 02906000
  3015. * NONE 02907000
  3016. * 02908000
  3017. * RESPONSES - 02909000
  3018. * 02910000
  3019. * NONE 02911000
  3020. * 02912000
  3021. * ERROR MESSAGES - 02913000
  3022. * 02914000
  3023. * NONE 02915000
  3024. * 02916000
  3025. *. 02917000
  3026. EJECT 02918000
  3027. MSG DC 0H'0' 02919000
  3028. STM R14,R2,MSGSAVE SAVE REGISTERS 02920000
  3029. LR R2,R0 MOVE R0 INTO WORK REG 02921000
  3030. BCTR R2,0 REDUCE BY ONE FOR MVC 02922000
  3031. EX R2,MSGMVC AND MOVE TO MSG REQ BUFFER 02923000
  3032. LA R2,24(R2) AND INCLUDE HEADER IN COUNT 02924000
  3033. STC R2,MSGBLK AND STORE IN MSG REQ BUFFER 02925000
  3034. CLI MSGLINK,X'00' SOMEONE SET THE LINKID? 02926000
  3035. BNE MSG1 YES CONTINUE 02927000
  3036. MVC MSGLINK(8),AXSLINK USE MY LINKID 02928000
  3037. MSG1 EQU * 02929000
  3038. LA R1,MSGREQ GET READY FOR GIVE 02930000
  3039. XC MSGREQ(4),MSGREQ CLEAR OUT SYNCH LOCK 02931000
  3040. L R15,GIVEREQ SYSTEM GIVE REQUEST EXECUTATOR 02932000
  3041. BALR R14,R15 GO GIVE THE BUFFER TO REX 02933000
  3042. L R15,WAITREQ WAIT FOR THE COMPLETION OF 02934000
  3043. BALR R14,R15 CONSOLE OPERATION 02935000
  3044. MVI MSGLINK,X'00' SET NO RESPONSE LINKID 02936000
  3045. MVI MSGBLK+2,X'00' ZERO ROUTING CODE 02937000
  3046. LM R14,R2,MSGSAVE RESTORE REGS 02938000
  3047. BR R14 AND RETURN 02939000
  3048. SPACE 02940000
  3049. MSGMVC MVC MSGBUF(0),0(R1) TO BE EXECUTED FROM ABOVE 02941000
  3050. SPACE 02942000
  3051. DS 0F 02943000
  3052. MSGREQ DC F'0' SYNCH LOCK 02944000
  3053. DC CL4'REX ' TASK NAME 02945000
  3054. DC A(MSGBLK) GIVE REQUEST BUFFER 02946000
  3055. DC A(0) NO RESPONSE BUFFER 02947000
  3056. SPACE 1 02948000
  3057. MSGBLK DC AL1(0),AL1(2),AL1(0),AL1(0) 02949000
  3058. MSGLINK DC 8X'00' LINKID 02950000
  3059. MSGVMID DC CL8' ' VIRTUAL MACHINE ID 02951000
  3060. DC CL3'NPT',CL1' ' MODULE ID PLUS ACTION CODE 02952000
  3061. MSGBUF DC CL120' ' MSG BUFFER 02953000
  3062. SPACE 02954000
  3063. MSGSAVE DC 5F'0' SAVE AREA 02955000
  3064. EJECT 02956000
  3065. *. 02957000
  3066. * 02958000
  3067. * ENTRY NAME - 02959000
  3068. * 02960000
  3069. * HEADPREP 02961000
  3070. * 02962000
  3071. * FUNCTION - 02963000
  3072. * 02964000
  3073. * THIS ROUTINE PROVIDES, ONE RECORD AFTER THE OTHER, 02965000
  3074. * THE SEPARATOR AND THE HEADER FOR THE PRINT TYPE FILES 02966000
  3075. * AND THE HEADER CARD FOR THE PUNCH TYPE FILES. 02967000
  3076. * 02968000
  3077. * CALLS TO OTHER ROUTINES - 02969000
  3078. * 02970000
  3079. * NONE 02971000
  3080. * 02972000
  3081. * OPERATION - 02973000
  3082. * 02974000
  3083. * 1. GET NEXT ENTRY FROM HEADER TABLE AND PLACE IN THE OUTPUT 02975000
  3084. * BUFFER. 02976000
  3085. * 02977000
  3086. * 2. UPDATE HEADER TABLE TO NEXT ENTRY. 02978000
  3087. * 02979000
  3088. * 3. IF AT END OF TABLE RESET TABLE AND HEADFLAG. 02980000
  3089. * 02981000
  3090. * ENTRY CONDITIONS: 02982000
  3091. * 02983000
  3092. * IN REG. 14 THE RETURN ADDRESS. 02984000
  3093. * 02985000
  3094. * EXIT CONDITIONS: 02986000
  3095. * 02987000
  3096. * THE INTERMEDIATE BUFFER BUFUNPK, CONTAINS THE ACTUAL 02988000
  3097. * SEPARATOR OR HEADER RECORD. 02989000
  3098. EJECT 02990000
  3099. * 02991000
  3100. * NOTE: 02992000
  3101. * 02993000
  3102. * THE SEPARATOR FOR THE PRINT TYPE FILES IS AS FOLLOWS: 02994000
  3103. * 02995000
  3104. * PAGE EJECT 02996000
  3105. * SKIP 61 LINES 02997000
  3106. * 5 LINES OF 130 ASTERISKS 02998000
  3107. * 1 LINE OF 130 UNDERLINES 02999000
  3108. * 5 LINES OF 130 ASTERISKS 03000000
  3109. * 2 BLANK LINES 03001000
  3110. * 03002000
  3111. * THE HEADER FOR BOTH THE PRINT AND PUNCH TYPE FILES, 03003000
  3112. * IS AS FOLLOWS: 03004000
  3113. * 03005000
  3114. * 1- 8 FILE ORIGIN LOCATION 03006000
  3115. * 13-20 FILE ORIGIN VIRTUAL MACHINE 03007000
  3116. * 25-32 FILE ORIGIN DATE 03008000
  3117. * 37-44 FILE ORIGIN TIME 03009000
  3118. * 55-68 WAS THE ORIGIN 03011000
  3119. * 03012000
  3120. * 03013000
  3121. * RESPONSES - 03014000
  3122. * 03015000
  3123. * NONE 03016000
  3124. * 03017000
  3125. * ERROR MESSAGES - 03018000
  3126. * 03019000
  3127. * NONE 03020000
  3128. * 03021000
  3129. *. 03022000
  3130. EJECT 03023000
  3131. HEADPREP EQU * 03024000
  3132. STM R13,R15,HDPRSAVE SAVE CALLER REGISTERS 03025000
  3133. TM GETFLAGS,PRNTSEND PRINT FILE? 03026000
  3134. BZ HEADLINE NO - ONLY HEADER CARD 03027000
  3135. * 03028000
  3136. L R13,HEADPNT LOAD THE HEADER POINTER 03029000
  3137. L R14,0(R13) GET THE ADDRESS 03030000
  3138. BR R14 AND GO TO EXEC IT 03031000
  3139. SPACE 2 03032000
  3140. SKIPCH1 EQU * 03033000
  3141. TM GETFLAGS,EJECT WAS LAST OP TO PRINTER A PRINT @VA03640 03034000
  3142. * FILE (I.E., NOT A MESSAGE) 03035000
  3143. BO NOSKIP1 YES, DON'T DO ANOTHER EJECT @VA03640 03036000
  3144. MVC BUFUNPK(2),=X'8840' SKIP TO CHA. 1 03037000
  3145. B HEADRET0 AND GO TO EXIT 03038000
  3146. SPACE 03039000
  3147. NOSKIP1 EQU * @VA03640 03040000
  3148. NI GETFLAGS,X'FF'-EJECT RESET LAST-OP-WAS-PRINT @VA03640 03041000
  3149. LA R13,4(,R13) POINT TO NEXT ENTRY IN TABLE @VA03640 03042000
  3150. ST R13,HEADPNT SAVE POINTER @VA03640 03043000
  3151. SPACE 1 03044000
  3152. SKIP3 EQU * 03045000
  3153. MVC BUFUNPK(2),=X'1940' SKIP 3 03046000
  3154. B HEADRET0 AND GO TO EXIT 03047000
  3155. SPACE 03048000
  3156. DOUBSP EQU * 03049000
  3157. MVC BUFUNPK(2),=X'1340' DOUBLE SPACE 03050000
  3158. HEADRET0 EQU * 03051000
  3159. OI GETFLAGS,IMCMD SHOW IMMED COMMAND 03052000
  3160. LA R15,2 BYTES COUNT 03053000
  3161. B HEADRET AND RETURN 03054000
  3162. SPACE 03055000
  3163. ASTER EQU * 03056000
  3164. MVI BUFUNPK+1,X'5C' * 03057000
  3165. B ASTUND AND CONTINUE 03058000
  3166. UNDERLIN EQU * 03059000
  3167. MVI BUFUNPK+1,X'6D' _ 03060000
  3168. SPACE 03061000
  3169. ASTUND EQU * 03062000
  3170. MVI BUFUNPK,X'09' PRINT AND SPACE 1 03063000
  3171. MVC BUFUNPK+2(129),BUFUNPK+1 ***** OR ______ 03064000
  3172. LA R15,131 SET LENGTH 03065000
  3173. B HEADRET AND RETURN 03066000
  3174. SPACE 03067000
  3175. HEAD2LIN EQU * 03068000
  3176. LA R14,HDRLINE2 GET ADDR OF SECOND LINE 03069000
  3177. LA R15,LHDRLIN2 AND THE LENGTH 03070000
  3178. B HEADCONT AND CONTINUE 03071000
  3179. SPACE 03072000
  3180. HEADLINE EQU * 03073000
  3181. LA R14,HDRLINE GET ADDR OF HEADER LINE 03074000
  3182. LA R15,HDRLEN HEADER LENGTH 03075000
  3183. HEADCONT EQU * 03076000
  3184. BCTR R15,0 MINUS 1 03077000
  3185. EX R15,MVCHEAD MOVE THE LINE 03078000
  3186. LA R15,1(R15) RESTORE THE BYTES COUNT 03079000
  3187. EJECT 03080000
  3188. HEADRET EQU * 03081000
  3189. TM GETFLAGS,PRNTSEND PRINT FILE? 03082000
  3190. BZ HEADRST NO - EXIT 03083000
  3191. CLC HEADCRNT(1),0(R13) DONE THIS TYPE? 03084000
  3192. BE HEADNEXT YES CONTINUE 03085000
  3193. SR R14,R14 PREPARE FOR IC 03086000
  3194. IC R14,HEADCRNT GET CURRENT CNT 03087000
  3195. LA R14,1(R14) UP BY ONE 03088000
  3196. STC R14,HEADCRNT AND SAVE FOR LATER 03089000
  3197. B HEADRET1 AND CONTINUE 03090000
  3198. SPACE 1 03091000
  3199. HEADNEXT EQU * 03092000
  3200. MVI HEADCRNT,X'01' INDICATE 0 COUNT 03093000
  3201. LA R13,4(,R13) UPDATE POINTER FOR TABLE 03094000
  3202. CLI 0(R13),X'FF' END OF TABLE? 03095000
  3203. BNE HEADRET1 NO CONTINUE 03096000
  3204. HEADRST EQU * 03097000
  3205. LA R13,HEADTABL RESET TABLE POINTER 03098000
  3206. NI NPTFLAGS,X'FF'-HEADFLAG RESET HEADER FLAG 03099000
  3207. SPACE 03100000
  3208. HEADRET1 EQU * 03101000
  3209. ST R13,HEADPNT SAVE POINTER 03102000
  3210. STH R15,BUFCNT SAVE BYTES COUNT 03103000
  3211. MVC BUFSTART(4),=A(BUFUNPK) INDICATE START 03104000
  3212. NI GETFLAGS,X'FF'-BUFEMPTY SIGNAL BUFFER FULL 03105000
  3213. LM R13,R15,HDPRSAVE RESTORE CALLER REGISTERS 03106000
  3214. BR R14 AND RETURN 03107000
  3215. SPACE 3 03108000
  3216. MVCHEAD MVC BUFUNPK(*-*),0(R14) TO BE EXECUTED FROM ABOVE 03109000
  3217. SPACE 03110000
  3218. HDPRSAVE DS 3F SAVE AREA 03111000
  3219. HEADPNT DC AL4(HEADTABL) CURRENT POSITION IN HDR TABLE 03112000
  3220. HEADCRNT DC X'01' CURRENT NUM OF THIS TYPE 03113000
  3221. SPACE 03114000
  3222. HEADTABL DS 0F 03115000
  3223. DC AL1(1),AL3(SKIPCH1) SKIP TO CH. 1 03116000
  3224. DC AL1(16),AL3(SKIP3) SKIP THREE LINES 03117000
  3225. DC AL1(5),AL3(DOUBSP) SKIP TWO LINES 03118000
  3226. DC AL1(5),AL3(ASTER) 130 * 03119000
  3227. DC AL1(1),AL3(UNDERLIN) 130 _ 03120000
  3228. DC AL1(5),AL3(ASTER) 130 * 03121000
  3229. DC AL1(1),AL3(DOUBSP) DOUBLE SPACE 03122000
  3230. DC AL1(1),AL3(HEADLINE) HEADER LINE 03123000
  3231. DC AL1(1),AL3(HEAD2LIN) HEADER LINE 03124000
  3232. DC XL4'FFFFFFFF' END OF TABLE 03125000
  3233. EJECT 03126000
  3234. *. 03127000
  3235. * 03128000
  3236. * ENTRY NAME - 03129000
  3237. * 03130000
  3238. * MAKEBLOC 03131000
  3239. * 03132000
  3240. * FUNCTION - 03133000
  3241. * 03134000
  3242. * TO SETUP FOR A CALL TO VMSB2CP 03135000
  3243. * 03136000
  3244. * CALLS TO OTHER ROUTINES - 03137000
  3245. * 03138000
  3246. * NONE 03139000
  3247. * 03140000
  3248. * OPERATION - 03141000
  3249. * 03142000
  3250. * 1. SAVE CALLERS REGISTERS FOR VMSB2CP. 03143000
  3251. * 03144000
  3252. * 2. UPON RETURN FROM VMSP2CP SET RETURN CODE AND RETURN 03145000
  3253. * TO ORIGINAL CALLER. 03146000
  3254. * 03147000
  3255. * 03148000
  3256. * RESPONSES - 03149000
  3257. * 03150000
  3258. * NONE 03151000
  3259. * 03152000
  3260. * ERROR MESSAGES - 03153000
  3261. * 03154000
  3262. * NONE 03155000
  3263. * 03156000
  3264. *. 03157000
  3265. SPACE 03158000
  3266. MAKEBLOC DS 0H 03159000
  3267. * 03160000
  3268. * SAVE CALLER'S REGS 03161000
  3269. STM R0,R15,MAKESAVE 03162000
  3270. * 03163000
  3271. B VMSB2CP AND CONVERT VM BLOCK TO CP BLOCK 03164000
  3272. SPACE 03165000
  3273. MAKERET EQU * 03166000
  3274. LA R15,4 SIGNAL END OF FILE 03167000
  3275. B MAKEXT3 AND CONTINUE 03168000
  3276. EJECT 03169000
  3277. MAKERETX EQU * 03170000
  3278. SR R15,R15 CLEAR CON. CODE 03171000
  3279. MAKERET1 EQU * 03172000
  3280. ST R4,BUFSTART STORE THE STARTING POINT 03173000
  3281. LA R3,1(R3) UPDATE TO INCLUDE CC 03174000
  3282. STH R3,BUFCNT AND THE BYTES COUNT 03175000
  3283. MAKEXT3 EQU * 03176000
  3284. LM R0,R14,MAKESAVE RESTORE REGISTERS 03177000
  3285. LTR R15,R15 SET RETURN CODE 03178000
  3286. BR R14 03179000
  3287. * 03180000
  3288. MAKEMVC MVC 1(0,R4),0(R1) FROM PACKED LINE TO SPOOL 03181000
  3289. MAKESAVE DS 16F SAVE AREA 03182000
  3290. VMSBR1 DS F SAVE AREA 03183000
  3291. EJECT 03184000
  3292. *. 03185000
  3293. * 03186000
  3294. * ENTRY NAME - 03187000
  3295. * 03188000
  3296. * VMSB2CP 03189000
  3297. * 03190000
  3298. * FUNCTION - 03191000
  3299. * 03192000
  3300. * THIS ROUTINE DEBLOCKS THE VM/370 SPOOL PAGE BUFFERS INTO 03193000
  3301. * AN UNPACKED BUFFER (PACKBLK). 03194000
  3302. * 03195000
  3303. * CALLS TO OTHER ROUTINES - 03196000
  3304. * 03197000
  3305. * DMKHVC - TO READ A VM/370 SPOOL PAGE BUFFER 03198000
  3306. * 03199000
  3307. * OPERATION - 03200000
  3308. * 03201000
  3309. * 03202000
  3310. * 1. IF NEEDED READ THE NEXT PAGE BUFFER FROM VM. 03203000
  3311. * 03204000
  3312. * 2. CONSTRUCT THE RECORD FROM THE CCW DATA IN THE SPOOL 03205000
  3313. * PAGE BUFFER. 03206000
  3314. * 03207000
  3315. * 3. MOVE IN THE CARRIAGE CONTROL BYTE FROM THE CCW 03208000
  3316. * 03209000
  3317. * 4. SET IMMED FLAG IF IMMEDIATE COMMAND. 03210000
  3318. * 03211000
  3319. * 5. EXIT TO CALLER. 03212000
  3320. * 03213000
  3321. * 03214000
  3322. * RESPONSES - 03215000
  3323. * 03216000
  3324. * NONE 03217000
  3325. * 03218000
  3326. * ERROR MESSAGES - 03219000
  3327. * 03220000
  3328. * NONE 03221000
  3329. * 03222000
  3330. *. 03223000
  3331. SPACE 3 03224000
  3332. * REGISTERS 03225000
  3333. * 03226000
  3334. * GPR.1 INPUT AREA FOR PACK 03227000
  3335. * GPR.2 OUTPUT AREA FOR PACK 03228000
  3336. * GPR.3 INPUT LENGTH FOR PACK 03229000
  3337. * GPR.4 FIRST FREE BYTE IN OUTPUT BUFFER 03230000
  3338. * GPR.6 ANCHOR CCW IN VM SPOOL BLOCK 03231000
  3339. * GPR.7 NEXT CCW IN VM SPOOL BLOCK 03232000
  3340. * GPR.8 COUNT OF NON-TIC CCWS LEFT IN VM SPOOL BUFFER 03233000
  3341. EJECT 03234000
  3342. VMSB2CP DS 0H 03235000
  3343. * 03236000
  3344. * SETUP SPOOL BLOCK POINTERS 03237000
  3345. * 03238000
  3346. USING SPLINK,R1 GET PAGE SPOOL BUFFER ADDR 03239000
  3347. LA R4,BUFUNPK IS ADDRESS OF FIRST FREE BYTE 03240000
  3348. MVI BUFUNPK,C' ' CLEAR FIRST BYTE OF BUFFER @VM01140 03241000
  3349. MVC BUFUNPK+1(133),BUFUNPK AND THE REST OF THE BUFFE@VM01140 03242000
  3350. L R1,RDEVFIOA GET FILE I/O AREA ADDRESS 03243000
  3351. ST R1,VMSBR1 SAVE R1 FOR LATER 03244000
  3352. * 03245000
  3353. * CHECK FOR VM SPOOL BLOCK PRESENT 03246000
  3354. * 03247000
  3355. TM GETFLAGS,FILLED IS THE BUFFER ALREADY FILLED 03248000
  3356. BO VMSPBIN IF THE VM SPOOL BLOCK IS IN. 03249000
  3357. * 03250000
  3358. * READ A VM SPOOL BLOCK. 03251000
  3359. * 03252000
  3360. VMSPGET EQU * 03253000
  3361. * 03254000
  3362. L R1,VMSBR1 RESTORE R1 03255000
  3363. LA R2,RDRBLK GET READER DEVICE BLK ADDR 03256000
  3364. L R2,RDEVTAG GET READER TAG ADDRESS 03257000
  3365. LH R2,TAGDEV-TAG(R2) GET READER ADDRESS 03258000
  3366. SR R3,R3 TO INDICATE READ OF NEXT SPOOL BLOCK RECORD AND 03259000
  3367. DIAG R1,R2,X'14' COMMAND TO SPOOL READER 03260000
  3368. * 03261000
  3369. BC 8,VMSPOK IF THE READ IS SUCCESSFUL. 03262000
  3370. * 03263000
  3371. BC 4,MAKERET IF END OF FILE. 03264000
  3372. BC 2,MAKERET IF NO MORE FILES. 03265000
  3373. * 03266000
  3374. * ERROR ON SPOOL READ, GPR3 WILL CONTAIN.. 03267000
  3375. * 4 INVALID SPOOL READER ADDRESS 03268000
  3376. * 8 INVALID DEVICE 03269000
  3377. * 12 DEVICE BUSY WITH SIO I/O 03270000
  3378. * 16 PAGING I/O ERROR IN SETTING UP BUFFER. 03271000
  3379. * 03272000
  3380. MSG 108,RDEVFID WRITE ERROR MSG @VM01142 03273000
  3381. SPACE 1 @VM01142 03274000
  3382. B MAKERET AND IGNORE FOR PRESENT. 03275000
  3383. EJECT 03276000
  3384. VMSPOK EQU * HERE ON SUCCESSFUL READ 03277000
  3385. L R8,SPRECNUM PICKUP SPRECNUM FROM NEW BLOCK. 03278000
  3386. LTR R8,R8 ALL DONE IF ZERO 03279000
  3387. BZ VMSPGET TO GET THE NEXT SPOOL BLOCK. 03280000
  3388. LA R6,SPRECNUM+4 STEP OVER POINTERS IN SPOOL BLOCK 03281000
  3389. LR R7,R6 AND INITIALIZE WORKING REGS. 03282000
  3390. OI GETFLAGS,FILLED TO INDICATE BLOCK PRESENT 03283000
  3391. B VMSPCCW TO PROCESS NEXT CCW CHAIN. 03284000
  3392. DROP R1 DROP SPOOL BUFFER ADDR 03285000
  3393. * 03286000
  3394. * BUFFER IS PRESENT ON ENTRY TO VMSB2CP. 03287000
  3395. * 03288000
  3396. VMSPBIN EQU * 03289000
  3397. L R6,VMSPANCH TO PICKUP CURRENT CCW ANCHOR. 03290000
  3398. L R7,VMSPNEXT AND NEXT CCW POINTER. 03291000
  3399. L R8,VMSPNUM PICKUP COUNT OF REMAINING CCWS. 03292000
  3400. LTR R8,R8 ALL DONE? 03293000
  3401. BNP VMSPEOB TRY NEXT BLOCK 03294000
  3402. EJECT 03295000
  3403. * 03296000
  3404. * HERE TO PROCESS NEXT CCW CHAIN. 03297000
  3405. * 03298000
  3406. VMSPCCW EQU * 03299000
  3407. * 03300000
  3408. * PRINTER 03301000
  3409. * DATA MOVING CCW'S ARE.. 03302000
  3410. * (0,1,8,9,A,B,C,D,E)(1,9) 03303000
  3411. * PLUS 63 BUT NOT 81 AND E9. 03304000
  3412. * PUNCH 03305000
  3413. * DATA MOVING CCW'S ARE.. 03306000
  3414. * (0,2,4,6,8,A)1 03307000
  3415. * 03308000
  3416. * READER 03309000
  3417. * DATA MOVING CCW'S ARE 02 AND 42 03310000
  3418. * THESE ARE PRESENT FOR REAL READER FILES. 03311000
  3419. * (AND REQUIRE DIFFERENT TREATMENT THAN VIRTUAL FILES 03312000
  3420. * FROM THE PRINTER OR PUNCH.) 03313000
  3421. * 03314000
  3422. * IMMEDIATE CCW OPS WITH NO DATA ARE.. 03315000
  3423. * (0,1,8,9,A,B,C,D,E)(B,3) 03316000
  3424. * EXCEPT 03,83, AND EB. 03317000
  3425. * 03318000
  3426. * 03 IS NOP (USED FOR PASSING SPOOL INFORMATION.) 03319000
  3427. * 08 IS TIC TO NEXT CCW CHAIN, IF ANY. 03320000
  3428. * 03321000
  3429. * AFTER PROCESSING A NON-TIC CCW CC SUCCESSFULLY, BCT TO VMSPCCW 03322000
  3430. * 03323000
  3431. VMSP4 EQU * 03324000
  3432. SPACE 2 03325000
  3433. * NOP (X'03') IS ASSUMED TO BE A DATA MOVER IF 03326000
  3434. * FOLLOWED BY A TIC, OTHERWISE IT IS IGNORED. 03327000
  3435. * 03328000
  3436. * 03329000
  3437. TM 0(R7),X'06' DECODE CCW 03330000
  3438. BZ VMSP1 IF DATA MOVER OR TIC 03331000
  3439. CLI 0(R7),X'63' AND 03332000
  3440. BE VMSPDATA IF THIS IS A LOAD OF FORMS BUFFER 03333000
  3441. CLI 0(R7),X'03' ALSO CHECK FOR A NOP AND 03334000
  3442. BE VMSPNOP IF IT IS. 03335000
  3443. * 03336000
  3444. ***** CHECK FOR REAL READER FILES (42,02) IGNORE FOR MOMENT ****** 03337000
  3445. * 03338000
  3446. CLI 0(R7),X'42' REAL READER FILE? 03339000
  3447. BE VMSPFINI YES 03340000
  3448. CLI 0(R7),X'02' REAL READER OP 03341000
  3449. BE VMSPFINI YES 03342000
  3450. EJECT 03343000
  3451. * NOT DATA MOVER, TIC, OR END. IMMEDIATE IS ASSUMED. 03344000
  3452. * 03345000
  3453. VMSPIMED EQU * 03346000
  3454. MVC 0(1,R4),0(R7) MOVE IN CCW CC AND 03347000
  3455. MVI 1(R4),X'40' ONE BYTE OF DATA @VA03349 03348000
  3456. LA R3,1 SET BYTES COUNT 03349000
  3457. OI GETFLAGS,IMCMD SET ON IMM. COMM. FLAG 03350000
  3458. * 03351000
  3459. * HERE IF NON-TIC 03352000
  3460. * 03353000
  3461. VMSP2 EQU * 03354000
  3462. LA R7,8(R7) STEP TO NEXT CCW AND 03355000
  3463. CLI 0(R7),X'08' CHECK IF TIC 03356000
  3464. BE VMSP3 IF IT IS, ELSE 03357000
  3465. LR R6,R7 MOVE ANCHOR ALSO. THEN 03358000
  3466. VMSP3 EQU * 03359000
  3467. BCTR R8,0 REDUCE NUM OF RECORES IN BUFFER BY 1 03360000
  3468. B VMSPRET AND CONTINUE 03361000
  3469. SPACE 03362000
  3470. * 03363000
  3471. * HERE IF CCW IS XXXXX00X (BASE 2) 03364000
  3472. * 03365000
  3473. VMSP1 EQU * 03366000
  3474. TM 0(R7),X'01' CONTINUE DECODE 03367000
  3475. BO VMSPDATA IF CCW IS XXXXX001 03368000
  3476. CLI 0(R7),X'08' CHECK DIRECTLY FOR TIC 03369000
  3477. BE VMSPTIC IF YES. 03370000
  3478. SPACE 2 03371000
  3479. MSG 190,RDEVFID WRITE THE MESSAGE 03372000
  3480. B VMSPFINI TO IGNORE FOR PRESENT. 03373000
  3481. SPACE 3 03374000
  3482. VMSPTIC EQU * PROCESS TIC. 03375000
  3483. LH R7,2(R7) GET DISPLACEMENT OF NEXT CCW AND 03376000
  3484. AR R6,R7 ADD IN LAST ANCHOR TO GET NEW ONE. 03377000
  3485. LR R7,R6 TO INDICATE NEXT CCW TO BE PROCESSED 03378000
  3486. B VMSPCCW TO PROCESS IT. 03379000
  3487. EJECT 03380000
  3488. VMSPNOP EQU * PROCESS NOP 03381000
  3489. CLI 8(R7),X'08' LOOK AHEAD FOR TIC AND 03382000
  3490. BE VMSPDATA TREAT A DATA MOVER IF PRESENT. 03383000
  3491. LA R7,8(R7) UPDATE THE POINTER 03384000
  3492. LA R6,8(R6) BUMP ANCHOR PAST FIRST NOP @VA05953 03384100
  3493. BCTR R8,0 MINUS ONE 03385000
  3494. LTR R8,R8 CHECK THE REGISTER 03386000
  3495. BNP VMSPEOB TRY NEXT BLOCK 03387000
  3496. B VMSPCCW PROCESS NEXT CCW 03388000
  3497. SPACE 2 03389000
  3498. VMSPDATA EQU * HERE FOR DATA MOVING CCW CC. 03390000
  3499. SPACE 2 03391000
  3500. SR R3,R3 CLEAR REGISTER AND 03392000
  3501. IC R3,7(R7) TO LOAD COUNT FOR PACK. 03393000
  3502. LH R1,2(R7) GET OFFSET FROM ANCHOR FOR DATA 03394000
  3503. AR R1,R6 AND MAKE IT ABSOLUTE 03395000
  3504. MVC 0(1,R4),0(R7) MOVE IN CCW CC, THEN 03396000
  3505. EX R3,MAKEMVC MOVE IN DATA. 03397000
  3506. B VMSP2 TO JOIN COMMON CODE. 03398000
  3507. SPACE 3 03399000
  3508. VMSPEOB EQU * END OF A SPOOL BLOCK 03400000
  3509. NI GETFLAGS,X'FF'-FILLED RESET THE FLAG 03401000
  3510. B VMSPGET AND TRY TO GET A NEW ONE 03402000
  3511. SPACE 3 03403000
  3512. VMSPFINI EQU * ERROR RETURN 03404000
  3513. NI GETFLAGS,X'FF'-FILLED TO TURN OFF BLOCK FLAG AND 03405000
  3514. B MAKERET TO TRY FOR NEXT BLOCK. 03406000
  3515. SPACE 3 03407000
  3516. VMSPRET EQU * STANDARD RETURN 03408000
  3517. ST R6,VMSPANCH SAVE CCW ANCHOR. 03409000
  3518. ST R7,VMSPNEXT AND NEXT CCW 03410000
  3519. ST R8,VMSPNUM AND COUNT OF REMAINING CCW'S. 03411000
  3520. B MAKERETX TO COMPLETE RETURN. 03412000
  3521. EJECT 03413000
  3522. * TEMPORARIES 03414000
  3523. * 03415000
  3524. VMSPANCH DS F START OF PAGE BUFFER 03416000
  3525. VMSPNEXT DS F NEXT CCW IN PAGE BUFFER 03417000
  3526. VMSPNUM DS F NUM OF RECORDS IN PAGE BUFFER 03418000
  3527. SPACE 03419000
  3528. AXSSAVE DC 9F'0' AXS ROUTINE SAVE AREA 03420000
  3529. SPACE 03421000
  3530. AXSTRTAB DC C'0123456789ABCDEF' TR TABLE FOR CONVERT TO EBCDIC 03422000
  3531. SPACE 03423000
  3532. AXSCVD DC D'0' TEMP AREA FOR CVD CONVERSIONS 03424000
  3533. AXSRECS DC CL8' ' NUMBER OF RECORDS IN FILE 03425000
  3534. FILL DC CL8' ' FILLER FOR MSG 03426000
  3535. LOCATION DC CL8' ' HOST LOCATION 03427000
  3536. SYSTYPE DC CL8' ' REMOTE SYSTEM TYPE @VM01105 03428000
  3537. SPACE 1 03429000
  3538. HOLD EQU X'80' SUB OPTION ON CLOSE INPUT REQ 03430000
  3539. ALL EQU X'40' SUB OPTION ON CLOSE INPUT REQ 03431000
  3540. MULTOPEN EQU X'80' SUB OPTION FOR OUTPUT OPEN 03432000
  3541. EJECT 03433000
  3542. *. 03434000
  3543. * 03435000
  3544. * ENTRY NAME - 03436000
  3545. * 03437000
  3546. * AXSGET 03438000
  3547. * 03439000
  3548. * FUNCTION - 03440000
  3549. * 03441000
  3550. * THIS ROUTINE REQUESTS THE SPECIALIZED TASK AXS, 03442000
  3551. * TO OPEN, CLOSE AND DELETE THE SPOOL FILES THAT THE NPT 03443000
  3552. * TASK IS PROCESSING. 03444000
  3553. * 03445000
  3554. * CALLS TO OTHER ROUTINES - 03446000
  3555. * 03447000
  3556. * DMTAXS - TO OPEN AND CLOSE A INPUT DEVICE 03448000
  3557. * 03449000
  3558. * OPERATION - 03450000
  3559. * 03451000
  3560. * 1. INITIATE AND WAIT FOR COMPLETION A CALL TO DMTAXS 03452000
  3561. * FOR AN INPUT SPOOL FILE TO TRANSMIT. 03453000
  3562. * 03454000
  3563. * 2. IF FILE OPENED CONSTRUCT HEADER LINE AND SETUP INITIAL 03455000
  3564. * PARAMETERS FOR VMSP2CP. 03456000
  3565. * 03457000
  3566. * 3. IF FILE NOT OPENED RETURN TO CALLER WITH CONDITION CODE SET 03458000
  3567. * 03459000
  3568. * FOR A INPUT FILE PURGE: 03460000
  3569. * 03461000
  3570. * 1. SETUP UP A CALL TO DMTAXS TO CLOSE INPUT FILE 03462000
  3571. * 03463000
  3572. * 2. WAIT FOR COMPLETION AND RETURN TO CALLER. 03464000
  3573. * 03465000
  3574. * FOR AN ALERT EXIT: 03466000
  3575. * 03467000
  3576. * 1. TEST FOR REX OR AXS CALL IF AXS, SET FILREADY FLAG. 03468000
  3577. * 03469000
  3578. * 2. IF MSG INITIATE CALL TO PMSGREQ TO STACK MSG AND 03470000
  3579. * POST MSGECB. 03471000
  3580. * 03472000
  3581. * 3. IF COMMAND POST CMDECB. 03473000
  3582. * 03474000
  3583. * ENTRY CONDITIONS: 03475000
  3584. * 03476000
  3585. * IN REG. 14 THE RETURN ADDRESS 03477000
  3586. * IN REG. 9 THE SPOOL READER BLOCK POINTER 03478000
  3587. * 03479000
  3588. * EXIT CONDITIONS: 03480000
  3589. * 03481000
  3590. * NONE 03482000
  3591. EJECT 03483000
  3592. * 03484000
  3593. * NOTE: 03485000
  3594. * 03486000
  3595. * THE RETURN IS AT THE ADDRESS SPECIFIED IN THE REG. 14, 03487000
  3596. * IF THE REQUESTED FUNCTION HAS BEEN SUCCESFULLY 03488000
  3597. * COMPLETED. IN THE CASE OF FAILURE THE RETURN IS MADE 03489000
  3598. * AT THE ADDRESS SPECIFIED IN REG. 14 PLUS FOUR. 03490000
  3599. * IN CASE OF UNRECOVERABLE ERROR THE TASK ABORT ROUTINE 03491000
  3600. * IS ENTERED. 03492000
  3601. * THE ENTRY POINT AXSALERT IS THE ASYNCHRONOUS ENTRY FOR 03493000
  3602. * THE TASK. THE SUPERVISOR DISPATCHER ENTERS HERE WHEN 03494000
  3603. * A COMMUNICATION IS COMING FROM SOME OTHER TASK. 03495000
  3604. * 03496000
  3605. * RESPONSES - 03497000
  3606. * 03498000
  3607. * NONE 03499000
  3608. * 03500000
  3609. * ERROR MESSAGES - 03501000
  3610. * 03502000
  3611. * NONE 03503000
  3612. * 03504000
  3613. *. 03505000
  3614. SPACE 3 03506000
  3615. AXSGET DC 0H'0' 03507000
  3616. USING SPLINK,R1 GET PAGE SPOOL ADDR 03508000
  3617. USING TAG,R3 GET TAG ADDRESSABILITY 03509000
  3618. STM R14,R6,AXSSAVE SAVE CALLER'S REGISTER CONTENTS 03510000
  3619. NI RDEVFLAG,X'FF'-FILREADY SET READY FLAG OFF TO BE SAFE 03511000
  3620. MVI RDEVRLEN,X'13' SET REQUEST LENGTH 03512000
  3621. MVI RDEVFUN,X'01' SET FUNCTION FOR INPUT OPEN 03513000
  3622. MVC RDEVLINK(8),AXSLINK SET LINK ID IN REQUEST 03514000
  3623. SR R0,R0 CLEAR R0 TO SIGNAL GIVE INIT REQ 03515000
  3624. ST R0,RDRBLK CLEAR THE AXS REQUEST SYNCH LOCK TOO 03516000
  3625. LA R1,RDRBLK R1=ADDR OF THE REQ ELEMENT FOR AXS 03517000
  3626. L R15,GIVEREQ R15=ENTRY ADDR FOR SUP GIVE ROUT 03518000
  3627. BALR R14,R15 MAKE THE REQUEST AVAILABLE TO AXS0 03519000
  3628. L R15,WAITREQ R1=ADDR OF ENTRY TO WAIT ROUT 03520000
  3629. BALR R14,R15 WAIT FOR AXS0 TO PROCESS THE REQ 03521000
  3630. CLI RDRBLK,X'80' WAS THE REQUEST SUCCESSFUL? 03522000
  3631. BE AXSGOPEN YEP - GO TRY TO OPEN THE FILE 03523000
  3632. CLI RDRBLK,X'88' WAS THERE A SERIOUS ERROR? 03524000
  3633. * ERROR 11,8 QUIT IF CODE IS HIGHER THAN X'87' 03525000
  3634. LM R14,R1,AXSSAVE RESTORE CLOBBERED REGISTERS 03526000
  3635. B 4(R14) RETURN WITH NO BLOCK INDICATION 03527000
  3636. EJECT 03528000
  3637. AXSGOPEN EQU * 03529000
  3638. L R1,RDEVFIOA GET FILE I/O AREA ADDRESS 03530000
  3639. L R8,SPRECNUM PICKUP SPRECNUM FROM NEW BLOCK 03531000
  3640. ST R8,VMSPNUM PICKUP COUNT OF REMAINING CCWS 03532000
  3641. LA R6,SPRECNUM+4 SETP OVER POINTERS IN SPOOL BLOCK 03533000
  3642. ST R6,VMSPANCH TO PICKUP CURRENT CCW ANCHOR 03534000
  3643. ST R6,VMSPNEXT CCW POINTER AND NEXT 03535000
  3644. OI GETFLAGS,FILLED TO INDICATE BLOCK PRESENT 03536000
  3645. OI RDEVFLAG,FILACTIV+FILREADY SET APPROPRIATE FLAGS 03537000
  3646. L R3,RDEVTAG REG.3 = ADDR OF NEW FILE TAG 03538000
  3647. CLI TAGINDEV,TYP3210 IS A SPOOL CONSOLE FILE? 03539000
  3648. BE AXSGLINE YES..TREAT LIKE PRINT 03540000
  3649. TM TAGINDEV,TYPPRT IS IT A PRINT FILE? 03541000
  3650. BO AXSGLINE YEP - GO GIN UP A REMOTE HEADER LINE 03542000
  3651. MVC RDEVSTYL(5),=C'PUNCH' SET STYLE IN READER TABLE 03543000
  3652. SPACE 03544000
  3653. MVI HDRCHAR,X'5C' INSERT * 03545000
  3654. MVC HDRCHAR+1(80-HDRSGLEN-1),HDRCHAR SET HEADER 03546000
  3655. B AXSGCOMM AND CONTINUE 03547000
  3656. SPACE 1 03548000
  3657. AXSGLINE EQU * 03549000
  3658. MVC HDRDIST(8),TAGDIST MOVE IN THE DIST CODE 03550000
  3659. MVC HDRNAME(24),TAGNAME AND THE FILE NAME 03551000
  3660. MVC RDEVSTYL(5),=C'PRINT' SET STYLE IN READER TABLE 03552000
  3661. MVI HDRCHAR,X'40' INSERT BLANK 03553000
  3662. MVC HDRCHAR+1(80-HDRSGLEN-1),HDRCHAR 03554000
  3663. AXSGCOMM EQU * 03555000
  3664. MVC HDRORGID(8),TAGINLOC MOVE IN THE ORIGIN LOCATION ID 03556000
  3665. MVC HDRVMID(8),TAGINVM MOVE IN THE ORIGIN VM ID 03557000
  3666. MVC HDRTOD(MASKLEN),TODMASK MOVE IN THE EDITING MASK 03558000
  3667. LM R0,R1,TAGINTOD R0 & 1 = S/370 TOD OF FILE ORIGIN 03559000
  3668. LA R2,HDRTOD R2 = ADDR OF FIELD TO BE EDITED 03560000
  3669. BAL R14,TODEBCD CONV THE S/370 TOD TO READABLE FORM 03561000
  3670. AXSGEXIT EQU * 03562000
  3671. LA R14,HEADTABL RESET THE HEADER TABLE POINTER 03563000
  3672. ST R14,HEADPNT AND SAVE IT 03564000
  3673. LM R14,R6,AXSSAVE RESTORE ALL REGISTERS 03565000
  3674. BR R14 AND RETURN TO THE MAIN ROUTINE 03566000
  3675. DROP R1,R3 DROP ADDRESSABILTIY 03567000
  3676. SPACE 03568000
  3677. EJECT 03569000
  3678. AXSPURGE EQU * 03570000
  3679. STM R14,R1,AXSSAVE SAVE CALLER'S REGISTER CONTENTS 03571000
  3680. MVI RDEVFUN,X'02' SET PURGE REQUEST CODE FOR AXS 03572000
  3681. SR R0,R0 CLEAR R0 TO SIGNAL GIVE INIT REQ 03573000
  3682. ST R0,RDRBLK CLEAR THE REQUEST SYNCH LOCK TOO 03574000
  3683. LA R1,RDRBLK R1=ADDR OF PURGE REQUEST FOR AXS 03575000
  3684. L R15,GIVEREQ R15=ADDR OF ENTRY TO SUP GIVE ROUT 03576000
  3685. BALR R14,R15 INITIATE THE REQUEST 03577000
  3686. L R15,WAITREQ R15=ADDR OF ENTRY TO SUP WAIT ROUT 03578000
  3687. BALR R14,R15 WAIT FOR THE REQUEST TO BE COMPLETED 03579000
  3688. NI RDEVFLAG,X'FF'-FILACTIV SET THE READER INACTIVE 03580000
  3689. MVI RDEVSOPT,X'00' RESET SUB OPTION BYTE 03581000
  3690. LM R14,R1,AXSSAVE RESTORE CLOBBERED REGISTERS 03582000
  3691. BR R14 AND RETURN TO THE CALLER 03583000
  3692. EJECT 03584000
  3693. AXSALERT EQU * ASYNCHRONOUS TASK ALERT ROUTINE 03585000
  3694. L R12,TASKSAVE-TASKE(R13) RESTORE BASE REGISTER 03586000
  3695. LM R9,R11,NPTREG9 RESTORE OTHER BASES 03587000
  3696. CL R0,AXSNAME IS THIS THE FILE ACCESS MANAGER CALL 03588000
  3697. BC 7,AXSALRT1 IGNORE IT IF IT ISN'T 03589000
  3698. OI RDRBLK+RDEVFLAG-REQBLOCK,FILREADY ELSE FLAG READY FILE 03590000
  3699. BR R14 AND RETURN TO THE DISPATCHER 03591000
  3700. SPACE 1 03592000
  3701. AXSALRT1 EQU * 03593000
  3702. CL R0,REXNAME IS IT THE COMMAND PROCESSOR CALLING? 03594000
  3703. BC 7,AXSTDLY GO CHECK FOR A TIMER INTP @VA03349 03595000
  3704. CLI 1(R1),MSGCMD IS IT A MSG COMMAND? 03596000
  3705. BE AXSMENQ HAVE TO STACK IT FOR LATER 03597000
  3706. CLI CMDINPGS,X'FF' ARE WE PROCESSING ONE ALREADY? 03598000
  3707. BE AXSCMD YEP - MUST IGNORE THIS ONE 03599000
  3708. MVI 2(R1),X'00' INDICATE WE ACCEPT THIS ONE 03600000
  3709. OI CMDINPGS,X'FF' SHOW WE ARE PROCESSING A COMMAND 03601000
  3710. SR R15,R15 CLEAR OUT FOR IC 03602000
  3711. IC R15,0(R1) GET COMMAND ELEMENT LENGTH 03603000
  3712. EX R15,CMDMVC MOVE TO OUT BUFFER 03604000
  3713. SR R0,R0 CLEAR FOR POST 03605000
  3714. LA R1,CMDECB GET THE COMMAND SYNCH LOCK ADDR 03606000
  3715. L R15,POSTREQ SYSTEM POST FUNCTION 03607000
  3716. BR R15 GO POST THE SYNCH LOCK 03608000
  3717. SPACE 1 03609000
  3718. AXSCMD EQU * 03610000
  3719. MVI 2(R1),X'80' INDICATE WE CANNOT ACCEPT NOW 03611000
  3720. BR R14 AND RETURN 03612000
  3721. SPACE 1 03613000
  3722. AXSMENQ EQU * 03614000
  3723. L R2,NPTALINK GET MY LINK TABLE ADDR 03615000
  3724. LA R13,COMSAVE USE THIS SAVE AREA 03616000
  3725. L R15,TCOM GET COMMON ROUTINE TABLE ADDR 03617000
  3726. L R15,PMSGREQ AND THE MSG STACK ROUTINE ADDR 03618000
  3727. LR R3,R14 SAVE RETURN REGISTER 03619000
  3728. BALR R14,R15 GO TRY TO STACK MSG 03620000
  3729. LR R14,R3 RESTORE RETURN REG 03621000
  3730. LTR R15,R15 STACKED OKAY? 03622000
  3731. BNZ AXSCMD NO EXIT 03623000
  3732. MVI 2(R1),X'00' ACCEPT MSG 03624000
  3733. OI GETFLAGS,MSGQUED INDICATE MSGS PRESENT 03625000
  3734. BR R14 AND RETURN 03626000
  3735. AXSTDLY CH R0,TDCODE IS IT THE TIMER @VA03349 03627000
  3736. BCR 7,R14 NO, IGNORE IT @VA03349 03628000
  3737. SR R0,R0 SET UP FOR POST @VA03349 03629000
  3738. LA R1,TIMERECB @VA03349 03630000
  3739. L R15,POSTREQ GET ADDRESS OF POST ROUTINE @VA03349 03631000
  3740. BR R15 GO POST THE TIMERECB @VA03349 03632000
  3741. SPACE 1 03633000
  3742. CMDMVC MVC CMDRESP(0),0(R1) TO BE EXECUTED BY ABOVE CODE 03634000
  3743. SPACE 1 03635000
  3744. DS 0F 03636000
  3745. CMDECB DC F'0' COMMAND SYNCH LOCK 03637000
  3746. CMDRESP DC CL132' ' COMMAND BUFFER 03638000
  3747. CMDINPGS DC X'00' COMMAND IN PROGRESS SWITCH 03639000
  3748. COMSAVE DC 18F'0' COMMON ROUTINE SAVE AREA 03640000
  3749. EJECT 03641000
  3750. HDRLINE DC X'19' PRINT LINE AND SPACE THREE COMMAND 03642000
  3751. HDRSGTOP EQU * START OF HEADER TEXT 03643000
  3752. HDRORGID DC 8C'Y' FILE ORIGIN LOCATION ID 03644000
  3753. DC 4C' ' FOUR BLANKS 03645000
  3754. HDRVMID DC 8C'X' FILE ORIGIN VIRTUAL MACHINE ID 03646000
  3755. DC 3C' ' THREE MORE BLANKS 03647000
  3756. HDRTOD DC C' ' BEGINNING OF FIELD TO BE EDITED 03648000
  3757. DC C'XX/XX/XX' FILE ORIGIN DATE FROM TOD ROUTINE 03649000
  3758. DC 4C' ' FOUR MORE BLANKS 03650000
  3759. DC C'YY:YY:YY' FILE ORIGIN TIME FROM TOD ROUTINE 03651000
  3760. DC 2C' ' TWO MORE BLANKS 03652000
  3761. DC 6C' ' SIX MORE BLANKS @VA03113 03653500
  3762. DC C' WAS THE ORIGIN' ENDING NOTE 03654000
  3763. HDRSGLEN EQU (*-HDRSGTOP) END OF THE SEGMENT DATA FIELD 03655000
  3764. HDRCHAR DC (80-HDRSGLEN)C' ' FILLER 03656000
  3765. HDRLEN EQU (*-HDRLINE) END OF HEADER LINE RECORD 03657000
  3766. SPACE 03658000
  3767. TODMASK DC AL1(MASKLEN-1) LENGTH OF REMAINING MASK FIELD 03659000
  3768. DC X'2120',C'/',X'2020',C'/',X'2020' DATE MASK 03660000
  3769. DC 3C' ' THREE BLANKS 03661000
  3770. DC X'22' RESET SIGNIFICANCE INDICATOR 03662000
  3771. DC X'2120',C':',X'2020',C':',X'2020' TIME MASK 03663000
  3772. DC 2C' ' 2 MORE BLANKS TO SEP ENDING NOTE @VA03113 03664500
  3773. MASKLEN EQU (*-TODMASK) END OF EDIT MASK 03665000
  3774. SPACE 2 03666000
  3775. HDRLINE2 EQU * START OF SECOND HEADER LINE 03667000
  3776. DC X'19' PRINT AND SPACE 3 03668000
  3777. DC C'DEST: ' 03669000
  3778. HDRLINK DC CL8' ' LINK ID 03670000
  3779. DC C' FILE: ' 03671000
  3780. HDRFILE DC CL4' ' SPOOL FILE ID 03672000
  3781. DC C' NAME: ' 03673000
  3782. HDRNAME DC CL24' ' FILE NAME AND TYPE 03674000
  3783. DC C' DIST: ' 03675000
  3784. HDRDIST DC CL8' ' DISTRIBUTION CODE 03676000
  3785. DC C' RECS: ' 03677000
  3786. HDRRECS DC CL8' ' NUMBER OF RECORDS 03678000
  3787. LHDRLIN2 EQU *-HDRLINE2 LENGTH OF SECOND HDR LINE 03679000
  3788. EJECT 03680000
  3789. *. 03681000
  3790. * 03682000
  3791. * ENTRY NAME - 03683000
  3792. * 03684000
  3793. * TODEBCD 03685000
  3794. * 03686000
  3795. * FUNCTION - 03687000
  3796. * 03688000
  3797. * CONVERT S/370 TOD TO EBCDIC DATE AND TIME 03689000
  3798. * 03690000
  3799. * CALLS TO OTHER ROUTINES - 03691000
  3800. * 03692000
  3801. * GTODEBCD - TO CONVERT THE TIME AND DATE 03693000
  3802. * 03694000
  3803. * OPERATION - 03695000
  3804. * 03696000
  3805. * 1. SAVE REGISTERS 03697000
  3806. * 03698000
  3807. * 2. ISSUE CALL TO SUPERVISOR ROUTINE FOR TIME CONVERSION 03699000
  3808. * 03700000
  3809. * 3. RESTORE REGISTERS AND RETURN. 03701000
  3810. * 03702000
  3811. * RESPONSES - 03703000
  3812. * 03704000
  3813. * NONE 03705000
  3814. * 03706000
  3815. * ERROR MESSAGES - 03707000
  3816. * 03708000
  3817. * NONE 03709000
  3818. * 03710000
  3819. *. 03711000
  3820. SPACE 3 03712000
  3821. TODEBCD DC 0H'0' 03713000
  3822. STM R13,R14,TODSAVE1 SAVE RETURN 03714000
  3823. LA R13,MMDDYYHH GET WORK ADDR ADDR FOR CALL 03715000
  3824. L R15,TCOM GET COMMON ROUTINE ADDR 03716000
  3825. L R15,GTODEBCD AND THE TIME CONVERT ADDR 03717000
  3826. BALR R14,R15 AND DO IT 03718000
  3827. LM R13,R14,TODSAVE1 RESTORE REGS 03719000
  3828. BR R14 AND RETURN 03720000
  3829. EJECT 03721000
  3830. MMDDYYHH DC D'0' TO HOLD NEW HOUR CALCULATION IN DEC 03722000
  3831. DC D'0' FOR APPENDING MMDDYYHH TO MMSSMMMM 03723000
  3832. MMSSMMMM DC D'0' TO RECEIVE DECIMAL MINUTE AND SECOND 03724000
  3833. DAYNUMBR DC A(0) TO RECEIVE COMPUTED DAY OF WEEK 0->6 03725000
  3834. TODEBCON DC F'-1',A(0+4,TIMEZON+4) SEE BELOW 03726000
  3835. * DC F'-1' TO HOLD LAST CALCULATION ELAPSED HOURS 03727000
  3836. * DC A(0+4) SWITCH, USED AS AN INDEX, FOR STD VS. DLT TIME 03728000
  3837. * DC A(TIMEZON+4) EXTERNAL ADDRESS OF TIMEZONE DISP TABLE 03729000
  3838. TODSAVE DC 11F'0' TODEBCD ROUTINE SAVE AREA 03730000
  3839. SPACE 03731000
  3840. TODSAVE1 DC 2F'0' SAVE AREA 03732000
  3841. SPACE 03733000
  3842. TIMEZON DC Y(0),CL6' ' DONT CONVERT TIME ZONE @VA03113 03734400
  3843. DC Y(0),CL6' ' ITS CORRECT AS IT IS @VA03113 03734800
  3844. EJECT 03736000
  3845. *. 03737000
  3846. * 03738000
  3847. * ENTRY NAME - 03739000
  3848. * 03740000
  3849. * PARMGET 03741000
  3850. * 03742000
  3851. * FUNCTION - 03743000
  3852. * 03744000
  3853. * LINE SCANNING SUBROUTINE 03745000
  3854. * 03746000
  3855. * CALLS TO OTHER ROUTINES - 03747000
  3856. * 03748000
  3857. * NONE 03749000
  3858. * 03750000
  3859. * OPERATION - 03751000
  3860. * 03752000
  3861. * 1. TEST FOR DELEMITER CHARACTER 03753000
  3862. * 03754000
  3863. * 2. WHEN FOUND OF END OF STRING FOUND UPDATE R4 03755000
  3864. * 03756000
  3865. * 3. AND RETURN 03757000
  3866. * 03758000
  3867. * ENTRY - 03759000
  3868. * 03760000
  3869. * REG.3 = ADDRESS OF START OF STRING 03761000
  3870. * REG.5 = ADDRESS OF END OF STRING 03762000
  3871. * 03763000
  3872. * EXIT - 03764000
  3873. * 03765000
  3874. * REG.3 = FIRST NONDELIMETER CHARACTER SCANNED; 03766000
  3875. * IF NONE FOUND, END OF STRING 03767000
  3876. * REG.4 = UNMODIFIED IF NO NONDELIMETER CHAR SCANNED; 03768000
  3877. * OTHERWISE, ADDRESS OF FIRST DELIMETER CHAR 03769000
  3878. * AFTER FIRST NONDELIMETER CHAR SCANNED; 03770000
  3879. * IF NONE, END OF STRING. 03771000
  3880. * REG.5 = UNMODIFIED 03772000
  3881. * 03773000
  3882. * A DELIMETER CHAR IS ANY CHARACTER OF THE FORM B'XX000000' 03774000
  3883. * 03775000
  3884. * RESPONSES - 03776000
  3885. * 03777000
  3886. * NONE 03778000
  3887. * 03779000
  3888. * ERROR MESSAGES - 03780000
  3889. * 03781000
  3890. * NONE 03782000
  3891. * 03783000
  3892. *. 03784000
  3893. EJECT 03785000
  3894. PARMGET DC 0H'0' 03786000
  3895. LA R5,0(R5) CLEAR HIGH ORDER BYTE JUST IN CASE 03787000
  3896. BCTR R3,0 BUMP STA OF STRING PTR BACK FOR CONV 03788000
  3897. PARMFIND EQU * 03789000
  3898. LA R3,1(R3) LOOK AT THE NEXT CHARACTER 03790000
  3899. CLR R3,R5 HAVE WE HIT THE END OF THE STRING? 03791000
  3900. BCR 11,R14 (BNL) YEP - LOOK NO MORE 03792000
  3901. TM 0(R3),X'BF' IS THIS CHARACTER A DELIMITER? @VA03345 03793000
  3902. BZ PARMFIND YEP-KEEP LOOKING FOR A NONDELIMETER 03794000
  3903. LR R4,R3 SET UP FOR NEXT PHASE OF SCAN 03795000
  3904. PARMSCAN EQU * 03796000
  3905. LA R4,1(R4) LOOK AT THE NEXT CHARACTER 03797000
  3906. CLR R4,R5 ARE WE AT THE END OF THE STRING YET? 03798000
  3907. BCR 11,R14 (BNL) RETURN IMMEDIATELY IF SO 03799000
  3908. CLI 0(R4),X'7E' IS IT EQUAL (=) SIGN @VA05955 03799250
  3909. BER R14 YES THIS IS END @VA05955 03799500
  3910. TM 0(R4),X'BF' IS THIS CHARACTER A DELIMITER? @VA03345 03800000
  3911. BNZ PARMSCAN KEEP SCANNING FOR A DELIMETER IF NOT 03801000
  3912. BR R14 OTHERWISE ALL DONE - RETURN 03802000
  3913. EJECT 03803000
  3914. *---------------------------------------------------------------------* 03804000
  3915. * * 03805000
  3916. * NPTINIT -- INITIALIZATION ROUTINE * 03806000
  3917. * * 03807000
  3918. *---------------------------------------------------------------------* 03808000
  3919. SPACE 03809000
  3920. NPTALINK DC A(0) LINK TABLE ADDRESS 03810000
  3921. AXSLINK DC CL8' ' LINKID TO BE FILLED IN BY INIT 03811000
  3922. AXSNAME DC CL4'AXS ' FILE ACCESS MANAGER TASK NAME 03812000
  3923. REXNAME DC CL4'REX ' CONTROL TASK NAME 03813000
  3924. NPTLINE DC CL8' ' NPT EBCDIC LINE ADDRESS 03814000
  3925. NPTPASS DC CL8' ' NPT PASSWORD 03815000
  3926. EJECT 03816000
  3927. *. 03817000
  3928. * 03818000
  3929. * ENTRY NAME - 03819000
  3930. * 03820000
  3931. * NPTINIT 03821000
  3932. * 03822000
  3933. * FUNCTION - 03823000
  3934. * 03824000
  3935. * NPT INITIALIZATION ROUTINE 03825000
  3936. * 03826000
  3937. * CALLS TO OTHER ROUTINES - 03827000
  3938. * 03828000
  3939. * GPAGEREQ - TO RESERVE A PAGE OF STORAGE FOR THE OUTPUT BUFFER 03829000
  3940. * DMTASY - TO SET AN ASYNCH EXIT 03830000
  3941. * 03831000
  3942. * OPERATION - 03832000
  3943. * 03833000
  3944. * 1. SETUP THE LINE ADDRESS FROM THE LINK TABLE 03834000
  3945. * 03835000
  3946. * 2. INITIALIZE PUNCH AND LOG TAGS. 03836000
  3947. * 03837000
  3948. * 3. INITIALIZE ASYNCH EXIT 03838000
  3949. * 03839000
  3950. * 4. INITIALIZE OUTPUT TP BUFFER BY GETTING A PAGE FROM 03840000
  3951. * THE GPAGEREQ ROUTINE. 03841000
  3952. * 03842000
  3953. * 5. ISSUE MSG 141 AND WAIT FOR LINE CONNECTION. 03843000
  3954. * 03844000
  3955. * 6. WHEN THE I/O COMPLETES WITHOUT ERROR, CONTINUE 03845000
  3956. * TO READ THE SIGNON CARD. 03846000
  3957. * 03847000
  3958. * RESPONSES - 03848000
  3959. * 03849000
  3960. * DMTNPT141I LINK 'VADDR' READY FOR CONNECTION TO LINK 'LINKID' 03850000
  3961. * DMTNPT142I LINK 'LINKID' LINE 'VADDR' CONNECTED 03851000
  3962. * 03852000
  3963. * ERROR MESSAGES - 03853000
  3964. * 03854000
  3965. * NONE 03855000
  3966. * 03856000
  3967. *. 03857000
  3968. SPACE 3 03858000
  3969. NPTINIT DC 0H'0' 03859000
  3970. USING TAG,R8 GET TAG ADDRESSABILITY 03860000
  3971. LTR R0,R0 WAS A PARAMETER SPECIFIED? 03861000
  3972. BZ NPTNOPAS NO PASSWORD SPECIFIED 03862000
  3973. LR R7,R0 GET PARM FIELD LENGTH 03863000
  3974. BCTR R7,0 SUBSTACT 1 03864000
  3975. EX R7,NPTPSMVC MOVE PASSWORD 03865000
  3976. EJECT 03866000
  3977. NPTNOPAS EQU * 03867000
  3978. SPACE 03868000
  3979. * SET UP THE LINE ADDRESS 03869000
  3980. ST R2,NPTALINK SAVE THE LINK TABLE ADDRESS 03870000
  3981. LR R7,R2 LOAD FOR DSECT REFERENCE 03871000
  3982. LA R13,LINE SET LINE ADDR DEVICE BLOCK 03872000
  3983. MVC DEVADDR(2),LACTLINE SAVE THE DEVICE ADDRESS FOR THE 03873000
  3984. MVC AXSLINK(8),LINKID AND THE LINK ID FOR AXS 03874000
  3985. MVC HDRLINK(8),LINKID AND THE LINK ID FOR AXS 03875000
  3986. L R15,TLINKS GET START OF LINK TABLE CHAIN 03876000
  3987. LA R7,8(R15) GET THE FIRST ENTRY (LOCAL) 03877000
  3988. MVC LOCATION(8),LINKID AND SAVE IT FOR MSGS 03878000
  3989. SPACE 03879000
  3990. * INITIALIZE PUNCH TAGS 03880000
  3991. SPACE 03881000
  3992. LA R8,PUNTAG GET PUNCH TAG ADDRESS 03882000
  3993. MVI TAGINDEV,TYPPUN SET PUNCH DEVICE TYPE 03883000
  3994. MVC TAGINLOC(8),AXSLINK SET LOCATION ID 03884000
  3995. MVC TAGDIST(8),AXSLINK SET LOCATION ID 03885000
  3996. MVC TAGLINK(8),AXSLINK SET DEFAULT LINK @VA03300 03886000
  3997. MVC TAGTOLOC(8),LOCATION SET DEFAULT TOLOC @VA03300 03887000
  3998. MVI PUNREQ+3,MULTOPEN INDICATE MULTIPLE OPEN ON OUTPUT 03888000
  3999. MVC PUNREQ+12(8),AXSLINK SET LOCATION ID 03889000
  4000. SPACE 03890000
  4001. LA R8,LOGTAG GET LOG TAG ADDRESS 03891000
  4002. MVI TAGINDEV,TYPPRT SET PRINTER DEVICE TYPE 03892000
  4003. MVC TAGINLOC(8),AXSLINK SET LOCATION ID 03893000
  4004. MVC TAGDIST(8),AXSLINK SET LOCATION ID 03894000
  4005. MVC TAGLINK(8),AXSLINK SET DEFAULT LINK @VA03300 03895000
  4006. MVC TAGTOLOC(8),LOCATION SET DEFAULT TOLOC @VA03300 03896000
  4007. MVC LOGGREQ+12(R8),AXSLINK SET LOCATION ID 03897000
  4008. MVI LOGGREQ+3,MULTOPEN SET MULTOPEN FOR PRT 03898000
  4009. SPACE 03899000
  4010. * INITIALIZE TASK ASYNCH SIGNAL EXIT 03900000
  4011. SR R0,R0 REG.R0 = R0 FOR ALERT EXIT REQUEST 03901000
  4012. LA R1,AXSALERT REG.1 = ADDR OF ASYNCH EXIT 03902000
  4013. L R15,ASYNREQ R15=ADDR OF ENTRY TO SUP ASYN ROUT 03903000
  4014. BALR R14,R15 INITIALIZE THE ALERT ASYNCH EXIT 03904000
  4015. SPACE 1 03905000
  4016. * INITIALIZE BUFFERS 03906000
  4017. L R15,TCOM GET COMMON ROUTINE LIST ADDR 03907000
  4018. L R15,GPAGEREQ GET THE GETPAGE ROUTINE ADDR 03908000
  4019. LA R13,COMSAVE USE THIS SAVE AREA 03909000
  4020. BALR R14,R15 GO GET A PAGE 03910000
  4021. ST R1,LINEBUFF STORE BUFFER ADDR 03911000
  4022. ST R1,STARTLIN STORE BUFFER ADDR 03912000
  4023. STCM R1,B'0111',TRANSMIT+1 SRTORE BUFFER ADDRESS @VA03349 03913000
  4024. EJECT 03914000
  4025. * INITIALIZE 03915000
  4026. SPACE 03916000
  4027. NPTENABL EQU * 03917000
  4028. LA R13,LINE R13 = BASE REG. FOR LINE DEV TABLE 03918000
  4029. MVC DEVSTART(4),=A(ENABPROG) SET CHAN ADDR TO ENABLING SEQ 03919000
  4030. NPTEINIT EQU * 03920000
  4031. L R7,NPTALINK GET LINK TABLE ADDRESS 03921000
  4032. UNPK NPTLINE(5),LACTLINE(3) GET THE ACTIVE LINE ADDR 03922000
  4033. MVC NPTLINE(3),NPTLINE+1 MOVE INTO FIRST THREE BYTES OF MSG 03923000
  4034. MVI NPTLINE+3,C' ' BLANK THE FIELD 03924000
  4035. MVC NPTLINE+4(4),NPTLINE+3 AND BLANK THE REST 03925000
  4036. TR NPTLINE(3),AXSTRTAB-240 CONVERT TO EBCDIC 03926000
  4037. MSG 141,(NPTLINE,AXSLINK) 03927000
  4038. BAL R14,LINEIO EXECUTE THE ENABLING SEQUENCE 03928000
  4039. TM DEVFLAGS,IOERR WAS THERE ANY TROUBLE? 03929000
  4040. BNZ NPTEINIT YES - TRY THE WHOLE THING AGAIN 03930000
  4041. MSG 142,(AXSLINK,NPTLINE) WRITE MSG 03931000
  4042. B NPTLINK AND CONTINUE 03932000
  4043. SPACE 03933000
  4044. NPTPSMVC MVC NPTPASS(0),0(R1) TO BE EXECUTED FROM ABOVE 03934000
  4045. DROP R8 DROP DSECT ADDRESSABILITY 03935000
  4046. EJECT 03936000
  4047. *. 03937000
  4048. * 03938000
  4049. * ENTRY NAME - 03939000
  4050. * 03940000
  4051. * NPTLINK 03941000
  4052. * 03942000
  4053. * FUNCTION - 03943000
  4054. * 03944000
  4055. * NPT SIGNON ROUTINE 03945000
  4056. * 03946000
  4057. * CALLS TO OTHER ROUTINES - 03947000
  4058. * 03948000
  4059. * NONE 03949000
  4060. * 03950000
  4061. * OPERATION - 03951000
  4062. * 03952000
  4063. * 1. ISSUE READ INITIALS UNTIL AN I/O IS SUCCESSFULLY COMPLETED. 03953000
  4064. * 03954000
  4065. * 2. ANALYZE SIGNON CARD. 03955000
  4066. * 03956000
  4067. * 3. SET NPT PARAMETERS FROM SIGNON CARD. 03957000
  4068. * 03958000
  4069. * 4. WHEN END OF SIGNON CARD IS REACHED, SET DEFAULTS FOR 03959000
  4070. * UNSPECIFIED PARAMETERS. 03960000
  4071. * 03961000
  4072. * 5. EXIT TO NPTGET 03962000
  4073. * 03963000
  4074. * RESPONSES - 03964000
  4075. * 03965000
  4076. * DMTNPT905I SIGNON OF LINK 'LINKID' COMPLETE 03966000
  4077. * 03967000
  4078. * ERROR MESSAGES - 03968000
  4079. * 03969000
  4080. * DMTNPT902E NON-SIGNON CARD READ ON LINK 'LINKID' 03970000
  4081. * DMTNPT903E PASSWORD SUPPLIED ON LINK 'LINKID' IS INVALID 03971000
  4082. * DMTNPT904E SIGNON PARAMETER='PARM' ON LINK 'LINKID' 03972000
  4083. * INVALID 03973000
  4084. * DMTNPT907E SIGNON TYPE PARAMETER MISSING @VA03420 03974000
  4085. * 03975000
  4086. *. 03976000
  4087. SPACE 3 03977000
  4088. * 03977100
  4089. * IF LAST OPERATION ENDED WITH A TIMEOUT 03977200
  4090. * TAKE A TEN SECOND DELAY TO PREVENT CONTINUOUS POLLING 03977300
  4091. * 03977400
  4092. NPTLINKD TM DEVSENSE,TIMEOUT WAS LAST ERROR A TIMEOUT @VA04358 03977500
  4093. BZ NPTLINK NO, RETRY THE OPERATION @VA04358 03977600
  4094. LA R0,10 TEN SECOND DELAY @VA04358 03977700
  4095. BAL R14,TDELAY TAKE TEN @VA04358 03977800
  4096. * 03977900
  4097. NPTLINK EQU * 03978000
  4098. MVC DEVSTART,=A(READINIT) CCW TO SEE IF DEVICE IS @VA03349 03979000
  4099. * READY 03980000
  4100. BAL R14,LINEIO START READING LINE 03981000
  4101. TM DEVFLAGS,IOERR DID WE READ ANYTHING SUCCESFULLY? 03982000
  4102. BO NPTLINKD NOPE - READ AGAIN @VA04358 03983100
  4103. CLI INIT,ENQ WAS IT READY @VA03349 03984000
  4104. BE NPTLINK1 YES - CONTINUE 03985000
  4105. CLI INIT+2,ENQ MIGHT HAVE TERMINAL ID FEATURE @VA03349 03986000
  4106. BNE NPTLINK NO - TRY AGAIN @VA03529 03987000
  4107. EJECT 03988000
  4108. NPTLINK1 EQU * 03989000
  4109. MVC EXPRESP(2),INITACK0 SET UP INITIAL EXP RESP @VA03349 03990000
  4110. MVC RESP(2),INITACK0 SET UP INITIAL RESPONSE @VA03349 03991000
  4111. NPTLWAIT EQU * 03992000
  4112. MVC DEVSTART,=A(RECEIVE) SET UP TO RECEIVE FROM @VA03349 03993000
  4113. * DEVICE 03994000
  4114. BAL R14,LINEIO WRITE DLE,ACK0 AND LISTEN 03995000
  4115. TM DEVFLAGS,IOERR EVERYTHING O.K. ? 03996000
  4116. BNO CONFCK YES - GO TO CHECK IT 03997000
  4117. TM DEVCSW+4,UC WAS PROBLEM A UNIT CHECK? 03998000
  4118. BNO NPTLEOT NO - MUST BE CONTENTION TRY AGAIN 03999000
  4119. TM DEVSENSE,TIMEOUT DID WE TIMEOUT? 04000000
  4120. BO NPTLEOT YES..MUST SEND EOT 04001000
  4121. NPTLNAK EQU * 04002000
  4122. MVC DEVSTART(4),=A(NAKPROG) OTHERWISE MUST BE LINE ERROR 04003000
  4123. BAL R14,LINEIO WRITE NAK AND LISTEN 04004000
  4124. TM DEVFLAGS,IOERR EVERYTHING O.K.? 04005000
  4125. BO NPTLNAK NO - GO TO REPEAT 04006000
  4126. CONFCK EQU * 04007000
  4127. LA R1,LINEINB SET POINTER REGISTER 04008000
  4128. CLI LINEINB,STX IS THE FIRST CHARACTER STX? 04009000
  4129. BE CONFCK1 YES - CONTINUE 04010000
  4130. CLI LINEINB,ENQ IS IT ENQ? 04011000
  4131. BE NPTLWAIT YES - REINIT RESPONSE 04012000
  4132. CLI LINEINB,EOT DID WE RECEIVE AN EOT? 04013000
  4133. BNE NPTLNAK1 NO - CHECK TRANSPARENCY FEATURE 04014000
  4134. MVC RESP(2),INITACK0 @VA03349 04015000
  4135. MVC EXPRESP(2),INITACK0 EOT ALWAYS STARTS SEQ OVER @VA03349 04016000
  4136. TM DEVFEAT,X'00'+REM2780+REM2770 ANYTHING SPECIFIED? 04017000
  4137. BM LINKEXIT YES GO TO SEND MESSAGE 04018000
  4138. B NPTLINK START OVER @VA04171 04019500
  4139. SPACE 1 04021000
  4140. NPTLNAK1 EQU * 04022000
  4141. CLC LINEINB(2),=AL1(DLE,STX) START OF TEXT? 04023000
  4142. BNE NPTLNAK NO -SEND NAK 04024000
  4143. OI PUTFLAGS,TRANSP @VA03349 04025000
  4144. LA R1,1(0,R1) ADJUST POINTER 04026000
  4145. B CONFCK1 AND GO TO CHECK CARD 04027000
  4146. SPACE 04028000
  4147. NPTLEOT EQU * 04029000
  4148. MVC DEVSTART(4),=A(EOTPROG) SET EOT PROGRAM 04030000
  4149. MVC RESP(2),INITACK0 @VA03349 04031000
  4150. MVC EXPRESP(2),INITACK0 EOT ALWAYS STARTS SEQ OVER @VA03349 04032000
  4151. BAL R14,LINEIO ISSUE THE LINEIO 04033000
  4152. TM DEVFLAGS,IOERR END IN ERROR? 04034000
  4153. BO NPTLEOT SEND EOT 04035000
  4154. B NPTLINK AND CONTINUE @VA03529 04036000
  4155. SPACE 04037000
  4156. EJECT 04038000
  4157. CONFCK1 EQU * @VA03821 04039000
  4158. CLI 1(R1),ENQ ENQ FOLLOWING STX? (IE., TTD) @VA03821 04040000
  4159. BNE CONFCK1A NO @VA03349 04041000
  4160. LA R0,2 TAKE A TWO SECOND DELAY @VA03349 04042000
  4161. BAL R14,TDELAY @VA03349 04043000
  4162. B NPTLNAK GO RESPOND WITH A NACK @VA03349 04044000
  4163. CONFCK1A LA R1,1(0,R1) OVER THE STX @VA03349 04045000
  4164. LR R2,R1 POINTER INTO R2 @VA03112 04046000
  4165. BAL R14,DECM DECOMPRESS - JUST IN CASE @VA03112 04047000
  4166. LA R1,0(R1) CLEAR THE HI BYTE @VA03349 04048000
  4167. CLI 0(R1),IGS IS IT AN IGS ? @VA04618 04048300
  4168. BNE CONFCK1B NO, CONTINUE. @VA04618 04048550
  4169. LA R1,2(0,R1) YES, BUMP PAST IGS AND COUNT @VA04618 04048800
  4170. CONFCK1B ST R1,SCANTERM SAVE ADDRESS FOR LATER @VA04618 04049000
  4171. * ADDR IS END OF CURRENT SCAN 04050000
  4172. L R15,DEVCSW GET ENDING ADDRESS @VA03349 04051000
  4173. S R15,=F'8' BACK UP TO LAST EXECUTED CCW @VA03349 04052000
  4174. LH R14,6(R15) GET ORIGINAL CCW COUNT @VA03349 04053000
  4175. SH R14,DEVCSW+6 MINUS RESIDUAL COUNT @VA03349 04054000
  4176. ST R14,RCOUNT SAVE ACTUAL COUNT OF XMITTED BYTE@VA03349 04055000
  4177. LA R15,LINEINB POINT TO FIRST BYTE @VA04944 04055150
  4178. AR R15,R14 POINT TO LAST BYTE PLUS ONE @VA04944 04055300
  4179. BCTR R15,0 BACK TO LAST BYTE @VA04944 04055450
  4180. CLI 0(R15),ENQ ENQ AT END OF BLOCK? @VA04944 04055600
  4181. BE NPTLNAK BRANCH IF YES, DISCARD @VA04944 04055750
  4182. OC 0(80,R2),BLANKS UPPER CASE THE SIGNON CARD ONLY @VA03349 04056000
  4183. LR R1,R2 POINTER BACK INTO R1 @VA03112 04057000
  4184. CLC 0(7,R1),=C'SIGNON ' FIRST CARD SIGNON CARD @VA03349 04058000
  4185. BE CONFCK2 YES, CONTINUE @VA03529 04059000
  4186. OI INTFLAG,WSEM+NOSIGN INDICATE SIGNON ERROR MSG @VA03349 04060000
  4187. MSG 902,AXSLINK NO, WRITE ERROR MSG @VA03529 04061000
  4188. B SGNM GO WRITE ERROR TO DEVICE @VA03349 04062000
  4189. SPACE 1 04063000
  4190. CONFCK2 EQU * 04064000
  4191. LA R3,7(,R1) GET FIRST POSSIBLE LINK POSITION @VA04357 04065000
  4192. LA R5,20(R1) SET MAX AT +20 FROM THERE 04066000
  4193. BAL R14,PARMGET FRAME THE LINKID 04067000
  4194. LR R6,R4 GET THE LAST CHAR ADDR 04068000
  4195. SR R6,R3 CALCULATE THE LENGTH 04069000
  4196. CL R6,LNKMAX TOO LONG? 04070000
  4197. BNH CONTINUE NO--CONTINUE @VA03423 04071000
  4198. L R6,LNKMAX USE MAX OF 8 AS LENGTH @VA03423 04072000
  4199. OI INTFLAG,WSEM+NOLINK INDICATE SIGON ERROR MSG @VA03349 04073000
  4200. BCTR R6,0 @VA04171 04073200
  4201. EX R6,LNKMVC MOVE IN PASSWORD @VA04171 04073400
  4202. BAL R8,SGNERR GO SEND ERROR MSG @VA04171 04073600
  4203. B CONTINU1 @VA04171 04073800
  4204. CONTINUE EQU * @VA03423 04074000
  4205. BCTR R6,0 REDUCE BY ONE FOR MVC 04075000
  4206. EX R6,LNKMVC AND MOVE TO STAGING AREA 04076000
  4207. CLC SGNEPARM(8),AXSLINK RIGHT LINK? 04077000
  4208. BE CONTINU1 YES, KEEP GOING @VA03349 04078000
  4209. OI INTFLAG,WSEM+NOLINK INDICATE ERROR @VA03349 04079000
  4210. BAL R8,SGNERR GO QUEUE THE MESSAGE @VA03349 04080000
  4211. CONTINU1 SLR R4,R3 CALCULATE LENGTH OF PARM @VA03349 04081000
  4212. LA R3,1(R4,R3) CALCULATE NEXT PARM START 04082000
  4213. MVI SGNEPARM,X'40' BLANK FIRST CHARACTER 04084000
  4214. MVC SGNEPARM+1(7),SGNEPARM AND BLANK THE REST 04085000
  4215. TM NPTFLAGS,RENBL ARE WE RE-ENABLING? @VA03529 04086000
  4216. BO SGNERR2 YES GO CHECK FOR ERRORS @VA05792 04087510
  4217. B SCANCD AND CONTINUE 04088000
  4218. SPACE 1 04089000
  4219. LNKMVC MVC SGNEPARM(0),0(R3) TO BE EXECUTED FROM ABOVE 04090000
  4220. SCANTERM DC F'0' DECOMPRESS TERMINATION ADDR @VA03349 04091000
  4221. BLANKS DC CL80' ' UPPER CASE CONSTANT @VA03349 04092000
  4222. EJECT 04093000
  4223. SCANCD EQU * 04094000
  4224. LA R5,80(0,R1) POINT TO END OF OUTCARD @VA03349 04095000
  4225. FNDEND EQU * 04096000
  4226. BAL R14,PARMGET FRAME THE NEXT PARAMETER 04097000
  4227. CR R3,R5 IS THIS THE END? 04098000
  4228. BNL ENDSCAN YES..EXIT LOOP 04099000
  4229. LR R6,R4 GET START OF FIELD 04100000
  4230. SR R6,R3 AND THE LENGTH 04101000
  4231. CL R6,SGNMAX TOO LONG 04102000
  4232. BNH SGNSET NO - CONTINUE @VA03349 04103000
  4233. OI INTFLAG,NOPARM+WSEM INDICATE A PARM FIELD ERROR @VA03349 04104000
  4234. CL R6,LNKMAX GREATER THAN 8 CHAR? @VA03422 04105000
  4235. BNH FNDEND2 NO, USE THE FIELD LENGTH @VA03349 04106000
  4236. LA R6,8 USE THIS AS MAX LENGTH 04107000
  4237. FNDEND2 BAL R8,SGNERR GO QUEUE THE MESSAGE @VA03349 04108000
  4238. B SGNCALLA @VA04171 04109500
  4239. SPACE 1 04110000
  4240. SGNSET EQU * 04111000
  4241. LM R13,R15,SGNSETUP SETUP FOR SCAN 04112000
  4242. LA R8,SGNCALLA SET RETURN REGISTER @VA04171 04112500
  4243. SGNSCAN EQU * 04113000
  4244. CLC 0(4,R13),0(R3) IS THIS THE ONE? 04114000
  4245. BE SGNCALL YES 04115000
  4246. BXLE R13,R14,SGNSCAN AND CONTINUE THE SCAN 04116000
  4247. BAL R8,SGNERR GO QUEUE MESSAGE @VA03349 04117000
  4248. B SGNCALLA CONTINUE SCAN @VA04171 04118500
  4249. SPACE 04119000
  4250. SGNERR EQU * 04120000
  4251. ST R1,SGNERRS SAVE REGISTER @VA04171 04120200
  4252. OI INTFLAG,NOPARM+WSEM INDICATE A PARM ERROR @VA04171 04120400
  4253. LA R13,LINE GET LINE DEVICE BLOCK ADDRESS 04121000
  4254. BCTR R6,0 REDUCE BY ONE FOR MVC 04122000
  4255. EX R6,LNKMVC AND MOVE IN TO MSG 04123000
  4256. MSG 904,(SGNEPARM,AXSLINK) WRITE MSG 04124000
  4257. L R1,SGNERRS RESTORE REGISTER @VA04171 04125160
  4258. BR R8 RETURN TO CALLER @VA04171 04125320
  4259. SPACE 2 04125480
  4260. SGNERRS DC F'0' REGISTER ONE SAVE AREA @VA04171 04125640
  4261. SPACE 2 04125800
  4262. SGNERR2 EQU * @VA03420 04126000
  4263. TM INTFLAG,NOLINK LINKID VALID @VA05792 04126200
  4264. BNO LINKEXIT VALID - TEST OTHER ERRORS @VA05792 04126500
  4265. TM NPTFLAGS,MSGSEND SENDING A FILE? @VA03529 04132000
  4266. BZ NPTTERM NO, TERMINATE THE TASK @VA03529 04133000
  4267. LA R2,RDRBLK SET REQUEST BLOCK POINTER @VA03529 04134000
  4268. TM RDEVFLAG,FILACTIV ACTIVE FILE? @VA03529 04135000
  4269. BZ NPTTERM NO, GO TERMINATE TASK @VA03529 04136000
  4270. MVI RDEVSOPT,X'80' DO NOT PURGE COPY OR FILE @VA03529 04137000
  4271. BAL R14,AXSPURGE DELETE SPOOL FILE BEING PROCESSD @VA03529 04138000
  4272. B NPTTERM TERMINATE THE TASK @VA03529 04139000
  4273. EJECT 04140000
  4274. SGNCALL EQU * 04141000
  4275. L R15,4(R13) GET THE CORRECT ROUTINE ADDR 04142000
  4276. LA R0,10 SET DEFAULT RECS FOR BUFFER SCAN 04143000
  4277. BALR R14,R15 AND EXAMINE THE PARM 04144000
  4278. SGNCALLA EQU * @VA04171 04144500
  4279. SLR R4,R3 CALCULATE LENGTH OF PARM 04145000
  4280. LA R3,1(R4,R3) GET THE NEXT PARM START 04146000
  4281. B FNDEND AND GO GET IT 04147000
  4282. SPACE 1 04148000
  4283. SGNTRY CLC 0(0,R13),0(R3) TO BE EXECUTED FROM ABOVE 04149000
  4284. SPACE 1 04150000
  4285. SGNM L R5,SCANTERM GET END OF SCAN @VA03349 04151000
  4286. SGNMBB CLI 0(R5),ETX END OF TEXT @VA03349 04152000
  4287. BE SGNMAA YES, MARK IT @VA03349 04153000
  4288. CLI 0(R5),ETB END OF BLOCK @VA03349 04154000
  4289. BE SGNMAB YES, READER EMPTY - GET EOT @VA03349 04155000
  4290. CLI 0(R5),IRS 2770 ENDING @VA03349 04156000
  4291. BNE SGNM1 NO, LOOK NO FURTHER @VA03349 04157000
  4292. LA R5,1(0,R5) OVER THE IRS @VA03349 04158000
  4293. B SGNMBB KEEP LOOKING @VA03349 04159000
  4294. SGNMAA OI PUTFLAGS,ETXREC INDICATE ETX RECEIVED @VA03349 04160000
  4295. SGNMAB XI RESP+1,X'11' SWITCH THE RESP @VA03349 04161000
  4296. MVC DEVSTART,=A(RECEIVE) @VA03349 04162000
  4297. SGNMA BAL R14,LINEIO DO IT @VA03349 04163000
  4298. TM DEVFLAGS,IOERR WAS IT SUCCESSFUL @VA03349 04164000
  4299. BO SGNMA NO, ERROR @VA03349 04165000
  4300. CLI LINEINB,NAK IS THE DEVICE READY @VA03349 04166000
  4301. BNE NAKNO YES, LOOK FOR EOT @VA03349 04167000
  4302. LA R0,2 TAKE TWO SECOND DELAY @VA03349 04168000
  4303. BAL R14,TDELAY @VA03349 04169000
  4304. NAKNO EQU * @VA03349 04170000
  4305. CLI LINEINB,EOT IT BETTER BE AN EOT @VA03349 04171000
  4306. BNE SGNMA NOT EOT, GO GET IT @VA03349 04172000
  4307. MVC EXPRESP(2),INITACK0 EOT ALWAYS STARTS SEQ OVER @VA03349 04173000
  4308. MVC RESP(2),INITACK0 @VA03349 04174000
  4309. SGNMB TM INTFLAG,WSEM SERIOUS SIGNON ERROR @VA03349 04175000
  4310. BO SGNM3 YES, GO HANDLE IT @VA03349 04176000
  4311. TM INTFLAG,WSM ANY MORE DATA IN BUFFER @VA03349 04177000
  4312. BZ NPTGET NO, GO LOOK FOR MORE WORK @VA03349 04178000
  4313. LA R5,LINEINB POINT AT BUFFER @VA03349 04179000
  4314. A R5,RCOUNT PLUS BYTES OF FIRST READ @VA03349 04180000
  4315. BCTR R5,0 GET ADDR OF LAST XMITTED BYTE@VA04942 04181500
  4316. L R7,SCANTERM GET END OF SIGNON SCAN @VA03349 04182000
  4317. CLC LINEINB(2),=AL1(DLE,STX) IS THIS TRANSPARENT? @VA04944 04182150
  4318. BNE SGNNT BRANCH IF NOT @VA04944 04182300
  4319. OI PUTFLAGS,TRANSP INDICATE TRANSPARENT @VA04944 04182450
  4320. TM DEVFEAT,REM2770 IS THIS 2770 TYPE? @VA04944 04182600
  4321. BO PUTBLOCK BRANCH IF YES, NO IRS @VA04944 04182750
  4322. SGNNT EQU * @VA04944 04182900
  4323. LA R7,1(0,R7) JUMP OVER THE TERMINATOR @VA03349 04183000
  4324. TM DEVFEAT,REM2770 2770 TYPE @VA03349 04184000
  4325. BO NODEC5 YES, NO BCC @VA03349 04185000
  4326. BCTR R5,0 ADJUST COUNT FOR BCC @VA03349 04186000
  4327. LA R7,1(0,R7) ADJUST POINTER FOR BCC @VA03349 04187000
  4328. NODEC5 CLI 0(R7),STX START OF TEXT @VA03349 04188000
  4329. BE DEC5 @VA03349 04189000
  4330. CLC 0(2,R7),=X'1002' TRANSPARENT @VA03349 04190000
  4331. BNE NOTSTX NO, WHAT IS IT @VA03349 04191000
  4332. LA R7,1(0,R7) @VA03349 04193000
  4333. DEC5 EQU * @VA04942 04195500
  4334. LA R7,1(0,R7) @VA03349 04196000
  4335. B PUTBLOCK GO PROCESS THE BUFFER @VA03349 04197000
  4336. NOTSTX TM PUTFLAGS,TRANSP @VA03349 04198000
  4337. BO NPTLNAK @VA03349 04199000
  4338. B PUTBLOCK @VA03349 04200000
  4339. SPACE 1 04201000
  4340. SGNM1 OI INTFLAG,WSM INDICATE MORE DATA IN BUFFER @VA03349 04202000
  4341. LA R14,LINEINB POINT AT BUFFER START @VA03349 04203000
  4342. A R14,RCOUNT PLUS BYTES READ @VA03349 04204000
  4343. BCTR R14,0 ADJUST TO LAST BYTE @VA03349 04205000
  4344. BCTR R14,0 PASS OVER BCC @VA04944 04205500
  4345. CLI 0(R14),ETX END OF TEXT RECEIVED @VA03349 04206000
  4346. BNE SGNMB REVERSE INT NECESSARY @VA03349 04207000
  4347. OI PUTFLAGS,ETXREC INDICATE ETX RECEIVED @VA03349 04208000
  4348. B SGNMB @VA03349 04209000
  4349. DORVI XI RESP+1,X'11' RVI IS A POSITIVE RESPONSE @VA03349 04210000
  4350. MVC DEVSTART,=A(RVIPROG) SET UP TO REVERSE INT @VA03349 04211000
  4351. BAL R14,LINEIO GO DO IT @VA03349 04212000
  4352. TM DEVFLAGS,IOERR ANY ERRORS @VA03349 04213000
  4353. BO DORVI YES, TRY A REPEAT @VA03349 04214000
  4354. CLI LINEINB,EOT IS IT END OF XMISSION @VA03349 04215000
  4355. BNE DORVI NO, GO GET THE EOT @VA03349 04216000
  4356. B SGNM3A @VA03349 04217000
  4357. SPACE 1 04218000
  4358. SGNM3 TM PUTFLAGS,ETXREC ETX RECEIVED @VA03349 04219000
  4359. BO SGNM3A YES, NO NEED TO STOP XMISSION @VA03349 04220000
  4360. B DORVI FORCE A STOP @VA03349 04221000
  4361. SGNM3A BAL R14,MSGPROC GO WRITE IT OURSELF @VA03349 04222000
  4362. NI INTFLAG,X'FF'-(WSEM+NOSIGN+NOLINK+NOPARM+NOPAS) @VA03349 04223000
  4363. TM NPTFLAGS,RENBL ARE WE RE-ENABLING @VA05792 04223075
  4364. BO NPTLINK YES, DO NOT RESET @VA05792 04223150
  4365. MVI PRTSEL,DC1 RESET THE 3770 PRT SELECTION @VA04171 04223200
  4366. MVI DEVFEAT,X'00' CLEAR AND FEATURES SET @VA04171 04223400
  4367. B NPTLINK START OVER @VA03349 04224000
  4368. EJECT 04225000
  4369. ENDSCAN EQU * 04226000
  4370. MVC SGNEPARM(8),FILL BLANK THE ERROR BUFFER 04227000
  4371. CLI NPTPASS,C' ' OKAY 04228000
  4372. BNE SPASSE ERROR..EXIT 04229000
  4373. ENDSCANA EQU * @VA04171 04229500
  4374. LA R13,LINE GET LINE DEVICE BLOCK ADDRESS 04230000
  4375. TM DEVFEAT,REM2780+REM2770+REM3780+REM3770 ANYTHING? 04231000
  4376. BM ENDSCAN1 YES - CONTINUE 04232000
  4377. MSG 907 PUT OUT MISSING TYPE PARM MSG @VA03420 04233000
  4378. OI INTFLAG,NOPARM+WSEM INDICATE PARM ERROR @VA04171 04234330
  4379. B SGNM @VA04171 04234660
  4380. SPACE 1 04235000
  4381. ENDSCAN1 EQU * 04236000
  4382. TM DEVFEAT,REM2780 IS THE REMOTE STATION A 2780? 04237000
  4383. BZ CK2770 NO - GO CONTINUE CHECK 04238000
  4384. CON27801 EQU * 04239000
  4385. LH R1,MAXPRINT SEE IF ANYTHING SPECIFIED @VA03426 04240000
  4386. LTR R1,R1 ANYTHING? @VA03426 04241000
  4387. BNZ CKBYTS SEE IF BUFFER SPECIFIED @VA03426 04242000
  4388. LA R1,121 SET DEFAULT @VA03426 04243000
  4389. STH R1,MAXPRINT LINESIZE FOR 2780 @VA03426 04244000
  4390. CKBYTS EQU * @VA03426 04245000
  4391. LH R2,MAXBYTS PUT IN REG.R2 THE BUFFER EXTENSION 04246000
  4392. LTR R2,R2 ANYTHING SPECIFIED? 04247000
  4393. BNZ LINKEXIT YES - EXIT 04248000
  4394. LA R1,170 OTHERWISE SET THE DEFAUL VALUE 04249000
  4395. STH R1,MAXBYTS AND GET IT 04250000
  4396. LA R1,2 ALSO FOR @VA05794 04251000
  4397. STH R1,MAXREC THE MAX NUM OF TRANSMITTIBLE RECORDS 04252000
  4398. STH R1,MAXREC1 AND ALSO HERE 04253000
  4399. B LINKEXIT AND EXIT 04254000
  4400. SPACE 04255000
  4401. CK2770 EQU * 04256000
  4402. LH R2,MAXPRINT GET THE SPECIFIED VALUE 04257000
  4403. LTR R2,R2 ANYTHING SPECIFIED? 04258000
  4404. BNZ CON27701 YES - CONTINUE 04259000
  4405. LA R1,121 OTHERWISE SET THE DEFAULT VALUE + CC 04260000
  4406. TM DEVFEAT,REM3770 IS IT A 3770? 04261000
  4407. BNO CK27700 NO 04262000
  4408. LA R1,133 SET MAX LINE LENGTH 04263000
  4409. CK27700 EQU * 04264000
  4410. STH R1,MAXPRINT AND GET IT 04265000
  4411. EJECT 04266000
  4412. CON27701 EQU * 04267000
  4413. LH R2,MAXBYTS BUFFER EXTENSION IN REG 2 04268000
  4414. LTR R2,R2 ANYTHING SPECIFIED? 04269000
  4415. BNZ LINKEXIT YES - EXIT 04270000
  4416. LA R1,128 OTHERWISE SET DEFAULT VALUE 04271000
  4417. TM DEVFEAT,REM3780 3780? 04272000
  4418. BZ CON27702 NO CONTINUE 04273000
  4419. LA R1,512 CHANGE THE DEF VALUE FOR THE 3780 04274000
  4420. B CON27703 AND CONTINUE 04275000
  4421. CON27702 EQU * 04276000
  4422. TM DEVFEAT,REM3770 IS IT A 3770? 04277000
  4423. BNO CON27703 NO CONTINUE 04278000
  4424. LA R1,256 SET DEFAULT FOR 3770 04279000
  4425. CON27703 EQU * 04280000
  4426. STH R1,MAXBYTS AND GET IT 04281000
  4427. LA R1,10 ALSO FOR THE MAX NUMBER 04282000
  4428. STH R1,MAXREC OF TRASMITTIBLE RECORD 04283000
  4429. STH R1,MAXREC1 IN A BLOCK 04284000
  4430. B LINKEXIT AND EXIT 04285000
  4431. EJECT 04286000
  4432. *---------------------------------------------------------------------* 04287000
  4433. * VALIDATE TERMINAL TYPE * 04288000
  4434. *---------------------------------------------------------------------* 04289000
  4435. SPACE 04290000
  4436. S2770 EQU * 04291000
  4437. NI DEVFEAT,255-REM2780-REM3770-REM3780 TURN OFF OTHERS 04292000
  4438. OI DEVFEAT,REM2770 SET 2770 DEVICE TYPE 04293000
  4439. MVC SYSTYPE(4),=C'2770' SET REMOTE SYSTEM TYPE @VM01105 04294000
  4440. BR R14 AND CONTINUE 04295000
  4441. SPACE 1 04296000
  4442. S2780 EQU * 04297000
  4443. NI DEVFEAT,255-REM2770-REM3770-REM3780 TURN OFF REST 04298000
  4444. OI DEVFEAT,REM2780 INDICATE 2780 DEVICE 04299000
  4445. MVC SYSTYPE(4),=C'2780' SET REMOTE SYSTEM TYPE @VM01105 04300000
  4446. BR R14 AND CONTINUE 04301000
  4447. SPACE 1 04302000
  4448. S3770 EQU * 04303000
  4449. NI DEVFEAT,255-REM2770-REM2780-REM3780 TURN OFF OTHERS 04304000
  4450. OI DEVFEAT,REM3770+REM2770 INDICATE 3770 & TREAT @VA03115 04305000
  4451. * LIKE 2770 04306000
  4452. MVC SYSTYPE(4),=C'3770' SET REMOTE SYSTEM TYPE @VM01105 04307000
  4453. BR R14 AND CONTINUE 04308000
  4454. SPACE 1 04309000
  4455. S3780 EQU * 04310000
  4456. NI DEVFEAT,255-REM2770-REM2780-REM3770 TURN OFF OTHERS 04311000
  4457. OI DEVFEAT,REM3780+REM2770 INDICATE 3780 & TREAT @VA03115 04312000
  4458. * LIKE 2770 04313000
  4459. MVC SYSTYPE(4),=C'3780' SET REMOTE SYSTEM TYPE @VM01105 04314000
  4460. BR R14 AND CONTINUE 04315000
  4461. SPACE 1 04316000
  4462. *---------------------------------------------------------------------* 04317000
  4463. * VALIDATE BUFFER SIZE * 04318000
  4464. *---------------------------------------------------------------------* 04319000
  4465. SPACE 04320000
  4466. SB128 EQU * 04321000
  4467. TM DEVFEAT,REM2770 IS IT A 2770 DEVICE 04322000
  4468. BNO SGNERR NO ..ILLEGAL BUFFER IF SO 04323000
  4469. LA R1,128 SET DEFAULT BUFFER SIZE @VA03426 04324000
  4470. B SBCOMM ENTER COMMON BUFFER CODE 04325000
  4471. SPACE 1 04326000
  4472. SB170 EQU * 04327000
  4473. TM DEVFEAT,REM2780 IS IT A 2780 DEVICE? 04328000
  4474. BNO SGNERR NO..ILLEGAL BUFFER IF SO 04329000
  4475. LA R0,2 SET MAX RECORDS 04330000
  4476. LA R1,170 SET DEFAULT BUFFER SIZE @VA03426 04331000
  4477. B SBCOMM AND ENTER COMMON BUFFER CODE 04332000
  4478. SPACE 04333000
  4479. SB256 EQU * 04334000
  4480. TM DEVFEAT,REM2770+REM3770 IS IT A LEGAL BUFFER SIZE? 04335000
  4481. BZ SGNERR NO 04336000
  4482. LA R1,256 SET DEFAULT BUFFER SIZE @VA03426 04337000
  4483. B SBCOMM AND ENTER COMMON BUFFER CODE 04338000
  4484. EJECT 04339000
  4485. SB400 EQU * 04340000
  4486. TM DEVFEAT,REM2780 IS IT A 2780 DEVICE? 04341000
  4487. BNO SGNERR NO..ILLEGAL BUFFER SIZE 04342000
  4488. LA R1,400 SET DEFAULT BUFFER SIZE @VA03426 04343000
  4489. LA R0,3 AND THE MAX RECS 04344000
  4490. B SBCOMM ENTER COMMON BUFFER CODE 04345000
  4491. SPACE 1 04346000
  4492. SB512 EQU * 04347000
  4493. TM DEVFEAT,REM2770+REM3780 LEGAL BUFFER SIZE @VA03424 04348000
  4494. BZ SGNERR NO...ERROR EXIT 04349000
  4495. LA R1,512 SET DEFAULT BUFFER SIZE @VA03426 04350000
  4496. SBCOMM EQU * 04351000
  4497. STH R1,MAXBYTS STORE FOR LATER 04352000
  4498. STH R0,MAXREC SAVE MAX RECS 04353000
  4499. STH R0,MAXREC1 HERE TOO 04354000
  4500. BR R14 AND CONTINUE 04355000
  4501. SPACE 1 04356000
  4502. *---------------------------------------------------------------------* 04357000
  4503. * VALIDATE OTHER PARMS * 04358000
  4504. *---------------------------------------------------------------------* 04359000
  4505. SPACE 04360000
  4506. SCMPR EQU * 04361000
  4507. TM DEVFEAT,REM2770+REM3770+REM3780 CAN USE HERE? 04362000
  4508. BZ SGNERR NO 04363000
  4509. OI DEVFEAT,BLKCOMP SET BLANK COMPRESSION 04364000
  4510. BR R14 AND CONTINUE 04365000
  4511. SPACE 1 04366000
  4512. STRSY EQU * 04367000
  4513. OI DEVFEAT,TRANSP INDICATE TRANSPARENCY 04368000
  4514. BR R14 AND CONTINUE 04369000
  4515. SPACE 1 04370000
  4516. STRSN EQU * 04371000
  4517. NI DEVFEAT,255-TRANSP TURN OFF TRANSPARENCY 04372000
  4518. BR R14 AND CONTINUE 04373000
  4519. SPACE 1 04374000
  4520. SPCHY EQU * 04375000
  4521. OI DEVFEAT,REMPUNCH INDICATE REMOTE PUNCH PRESENT 04376000
  4522. BR R14 AND CONTINUE 04377000
  4523. SPACE 1 04378000
  4524. SPCHN EQU * 04379000
  4525. NI DEVFEAT,255-REMPUNCH INDICATE NO REMOTE PUNCH 04380000
  4526. BR R14 AND CONTINUE 04381000
  4527. SPACE 1 04381100
  4528. SLPRT EQU * @VA04171 04381200
  4529. TM DEVFEAT,REM3770 IS IT A 3770 @VA04171 04381300
  4530. BZ SGNERR NO, LINE PRINTER INVALID @VA04171 04381400
  4531. MVI PRTSEL,DC3 SET SELECTION TO LINE PRINTER @VA04171 04381500
  4532. BR R14 @VA04171 04381600
  4533. EJECT 04382000
  4534. *---------------------------------------------------------------------* 04383000
  4535. * VALIDATE MAXIMUM PRINT LINE SIZE * 04384000
  4536. *---------------------------------------------------------------------* 04385000
  4537. SPACE 04386000
  4538. SP120 EQU * 04387000
  4539. TM DEVFEAT,REM3770 THIS SIZE INVALID FOR 3770 @VA03426 04388000
  4540. BO SGNERR @VA03426 04389000
  4541. LA R1,121 INDICATE LENGTH OF PRINT LINE + CC 04390000
  4542. B SPCOMM ENTER COMMON CODE 04391000
  4543. SPACE 1 04392000
  4544. SP132 EQU * 04393000
  4545. TM DEVFEAT,REM2780+REM3780 INVAL FOR 2780 AND 3780 @VA03426 04394000
  4546. BNZ SGNERR @VA03426 04395000
  4547. LA R1,133 INDICATE LENGTH OF PRINT LINE + CC 04396000
  4548. B SPCOMM ENTER COMMON CODE 04397000
  4549. SPACE 1 04398000
  4550. SP144 EQU * 04399000
  4551. TM DEVFEAT,REM3770 THIS SIZE INVALID FOR 3770 @VA03426 04400000
  4552. BO SGNERR @VA03426 04401000
  4553. LA R1,145 INDICATE LENGTH OF PRINT LINE + CC 04402000
  4554. SPCOMM EQU * 04403000
  4555. STH R1,MAXPRINT STORE MAXIMUM PRINT LINE LENGTH 04404000
  4556. BR R14 AND CONTINUE 04405000
  4557. SPACE 1 04406000
  4558. *---------------------------------------------------------------------* 04407000
  4559. * VALIDATE PASSWORD * 04408000
  4560. *---------------------------------------------------------------------* 04409000
  4561. SPACE 04410000
  4562. SPASS EQU * 04411000
  4563. CLI NPTPASS,X'40' WAS A PASSWORD SPECIFIED 04412000
  4564. BER R14 NO RETURN 04413000
  4565. LA R3,1(R4) START OF NEXT PARM 04414000
  4566. BAL R14,PARMGET FRAME IT 04415000
  4567. CLR R3,R5 WAS IT THERE? 04416000
  4568. BNL SPASSE NO ERROR 04417000
  4569. SLR R4,R3 COMPUTE LENGTH 04418000
  4570. CL R4,LNKMAX IS THE PASSWORD TOO LONG? @VA03421 04419000
  4571. BNH SPASS1 NO...CONTINUE @VA03421 04420000
  4572. B SPASSE YES... WRITE THE ERROR MSG @VA03421 04421000
  4573. SPACE 04422000
  4574. SPASS1 EQU * @VA03421 04423000
  4575. BCTR R4,0 DOWN BY ONE FOR CHAR OP 04424000
  4576. EX R4,PASSMVC MOVE TO STAGING AREA 04425000
  4577. CLC NPTPASS(8),SGNEPARM VALIDATE PASSWORD 04426000
  4578. BNE SPASSE EVERY THING FINE 04427000
  4579. MVC NPTPASS(8),FILL BLANK THE PASSWORD FIELD 04428000
  4580. B ENDSCANA ALL DONE @VA04171 04429500
  4581. SPACE 1 04430000
  4582. SPASSE EQU * 04431000
  4583. OI INTFLAG,WSEM+NOPAS INDICATE A SIGNON ERROR MSG @VA03349 04432000
  4584. MSG 903,AXSLINK WRITE MSG @VA03421 04433000
  4585. B ENDSCANA GO WRITE ANY NECESSARY MSGS @VA04171 04434500
  4586. SPACE 04435000
  4587. PASSMVC MVC SGNEPARM(0),0(R3) TO BE EXECUTED FROM ABOVE 04436000
  4588. EJECT 04437000
  4589. LINKEXIT EQU * 04438000
  4590. TM INTFLAG,NOLINK+NOPARM+NOPAS ANY ERRORS @VA04171 04439100
  4591. BNZ SGNM YES, NO SIGNON COMPLETE @VA04171 04440100
  4592. MSG 905,AXSLINK WRITE THE MSG 04449000
  4593. TM NPTFLAGS,MSGSEND SENDING A FILE? @VA10178 04449110
  4594. BO NRESET YES, DO NOT RESET @VA10178 04449210
  4595. NI NPTFLAGS,X'FF'-RENBL RESET RE-ENABLE BIT @VA10178 04449310
  4596. NRESET EQU * @VA10178 04449410
  4597. OI INTFLAG,SIGNONED INDICATED WE HAVE SIGNONED 04451000
  4598. B SGNM GO DO THE SIGNON MESSAGES @VA03349 04452000
  4599. EJECT 04453000
  4600. *---------------------------------------------------------------------* 04454000
  4601. * * 04455000
  4602. * SIGNON CARD SCAN ROUTINE DATA AREA * 04456000
  4603. * * 04457000
  4604. *---------------------------------------------------------------------* 04458000
  4605. SPACE 1 04459000
  4606. SGNSETUP DC A(SGNTABLE) TABLE ADDR 04460000
  4607. DC A(SGNINC) TABLE INCREMENT 04461000
  4608. DC A(SGNEND-SGNINC) BEGINNING OF LAST ENTRY 04462000
  4609. SPACE 1 04463000
  4610. SGNINC EQU 8 LENGTH OF TABLE ENTRY 04464000
  4611. SPACE 1 04465000
  4612. SGNMAX DC F'4' MAXIMUM KEYWORD LENGTH 04466000
  4613. LNKMAX DC F'8' MAXIMUM LINKID LENGTH 04467000
  4614. SPACE 1 04468000
  4615. SGNEPARM DC CL8' ' ERROR PARAMETER 04469000
  4616. SPACE 1 04470000
  4617. SGNTABLE DC 0F'0' 04471000
  4618. DC CL4'2770',A(S2770) 2770 TERMINAL 04472000
  4619. DC CL4'2780',A(S2780) 2780 TERMINAL 04473000
  4620. DC CL4'3780',A(S3780) 3780 TERMINAL 04474000
  4621. DC CL4'3770',A(S3770) 3770 TERMINAL 04475000
  4622. DC CL4'B128',A(SB128) 128 BYTE BUFFER 04476000
  4623. DC CL4'B170',A(SB170) 170 BYTE BUFFER 04477000
  4624. DC CL4'B256',A(SB256) 256 BYTE BUFFER 04478000
  4625. DC CL4'B400',A(SB400) 400 BYTE BUFFER 04479000
  4626. DC CL4'B512',A(SB512) 512 BYTE BUFFER 04480000
  4627. DC CL4'CMPR',A(SCMPR) BLANK COMPRESSION 04481000
  4628. DC CL4'P120',A(SP120) 120 BYTE PRINT LENGTH 04482000
  4629. DC CL4'P132',A(SP132) 132 BYTE PRINT LENGTH 04483000
  4630. DC CL4'P144',A(SP144) 144 BYTE PRINT LENGTH 04484000
  4631. DC CL4'TRSY',A(STRSY) TRANSPARENCY 04485000
  4632. DC CL4'TRSN',A(STRSN) NO TRANSPARENCY 04486000
  4633. DC CL4'PCHY',A(SPCHY) REMOTE PUNCH PRESENT 04487000
  4634. DC CL4'PCHN',A(SPCHN) NO REMOTE PUNCH PRESENT 04488000
  4635. DC CL4'PWD=',A(SPASS) PASSWORD 04489000
  4636. DC CL4'LPRT',A(SLPRT) 3770 LINE PRINTER @VA04171 04489500
  4637. SGNEND EQU * 04490000
  4638. EJECT 04491000
  4639. LINEDROP EQU * 04492000
  4640. OI NPTFLAGS,RENBL SET RE ENABLE ON LINE DROP @VA05792 04492500
  4641. MSG 143,(AXSLINK,NPTLINE) 04493000
  4642. TM NPTFLAGS,MSGREC RECEIVING FILE? 04494000
  4643. BNO NPTENABL NO - GO TO ENABLE LINE 04495000
  4644. SPACE 2 04496000
  4645. LA R2,PUNBLK SET REQUEST BLOCK POINTER 04497000
  4646. L R13,RDEVFIOA SE DEV POINTER @VA05662 04498100
  4647. TM RDEVFLAG,FILEOPEN FILE OPEN? 04499000
  4648. BZ NPTENABL NO CONTINUE 04500000
  4649. UNPK CMDBUF+5(5),DEVADDR(3) UNPACK DEV ADDRESS @VA05662 04500100
  4650. MVI CMDBUF+5,C' ' CLEAR CLOBBERED BYTES @VA05662 04500200
  4651. MVI CMDBUF+9,C' ' @VA05662 04500300
  4652. TR CMDBUF+6(3),AXSTRTAB-240 TRANSLATE TO EBCDIC @VA05662 04500400
  4653. LA R0,CMDBUF ADDRESS OF TAG COMMAND @VA05662 04500500
  4654. LA R1,80 LENGHT @VA05662 04500600
  4655. DIAG R0,R1,8 ISSUE TAG COMMAND @VA05662 04500700
  4656. XC RDEVSYNC(4),RDEVSYNC CLEAR SYNCH LOCK 04501000
  4657. MVI RDEVFUN,X'12' CLOSE REQUEST CODE 04502000
  4658. LA R1,PUNBLK GET THE PUNCH BLOCK ADDR 04503000
  4659. L R15,GIVEREQ SYSTEM GIVE INITIATE 04504000
  4660. BALR R14,R15 GO GIVE IT 04505000
  4661. L R15,WAITREQ SYSTEM WAIT REQUEST 04506000
  4662. BALR R14,R15 GO WAIT 04507000
  4663. MVI PUTFLAGS,X'00' RESET PUTFLAGS 04508000
  4664. MVI LINERROR,X'00' RESET LINERROR 04509000
  4665. NI RDEVFLAG,X'FF'-FILEON-FILEOPEN RESET FILE MSG 04510000
  4666. NI NPTFLAGS,X'FF'-MSGREC RESET RECEIVING FLAG 04511000
  4667. B NPTENABL AND RE-INITIALIZE FROM THE TOP 04512000
  4668. SPACE 2 04513000
  4669. EJECT 04514000
  4670. *. 04515000
  4671. * 04516000
  4672. * ENTRY NAME - 04517000
  4673. * 04518000
  4674. * NPTERROR 04519000
  4675. * 04520000
  4676. * FUNCTION - 04521000
  4677. * 04522000
  4678. * TO WRITE THE TERMINAL I/O ERROR MSG AND TERMINATE THE TASK 04523000
  4679. * 04524000
  4680. * CALLS TO OTHER ROUTINES - 04525000
  4681. * 04526000
  4682. * NONE 04527000
  4683. * 04528000
  4684. * OPERATION - 04529000
  4685. * 04530000
  4686. * 1. SET UP THE CCW ADDR TO CALL TO IOERRPRT. 04531000
  4687. * 04532000
  4688. * 2. ISSUE THE I/O ERROR MESSAGE 04533000
  4689. * 04534000
  4690. * 3. BRANCH TO NPTTERM TO TERMINATE THE TASK. 04535000
  4691. * 04536000
  4692. * RESPONSES - 04537000
  4693. * 04538000
  4694. * NONE 04539000
  4695. * 04540000
  4696. * ERROR MESSAGES - 04541000
  4697. * 04542000
  4698. * NONE 04543000
  4699. * 04544000
  4700. *. 04545000
  4701. SPACE 3 04546000
  4702. DS 0H 04547000
  4703. USING DEVTABLE,R13 GET DEVICE TABLE ADDRESSABILITY 04548000
  4704. NPTERROR EQU * 04549000
  4705. LA R13,LINE GET LINE DEVICE TABLE 04550000
  4706. L R1,DEVCSW LAST CCW ADDR 04551000
  4707. LA R1,0(0,R1) MAKE SURE NO SIO CODE @VA04355 04551500
  4708. S R1,=F'8' BACK UP EIGHT 04552000
  4709. BAL R14,IOERRPRT PRT THE I/O ERROR MESSAGE 04553000
  4710. B NPTTERM AND EXIT THE TASK 04554000
  4711. SPACE 1 04555000
  4712. NPTERR1 EQU * 04556000
  4713. LA R13,LINE GET LINE DEVICE TABLE 04557000
  4714. L R1,DEVCSW LAST CCW ADDR 04558000
  4715. LA R1,0(0,R1) MAKE SURE NO SIO CODE @VA04355 04558500
  4716. S R1,=F'8' BACK UP EIGHT 04559000
  4717. BAL R14,IOERRPRT PRT THE I/O ERROR MESSAGE 04560000
  4718. B LINEDIS2 AND EXIT THE TASK 04561000
  4719. EJECT 04562000
  4720. *---------------------------------------------------------------------* 04563000
  4721. * * 04564000
  4722. * IOERROR MESSAGE PRINT ROUTINE * 04565000
  4723. * * 04566000
  4724. * AT ENTRY: R1 --> TO FAILING CCW * 04567000
  4725. * * 04568000
  4726. * * 04569000
  4727. *---------------------------------------------------------------------* 04570000
  4728. SPACE 04571000
  4729. DS 0H 04572000
  4730. IOERRPRT EQU * 04573000
  4731. STM R13,R1,IOERRSV STORE REGS IN SAVE AREA 04574000
  4732. MVC IOERRLNE(8),NPTLINE STORE LINE ADDRESS IN MSG 04575000
  4733. UNPK IERRCSW1(9),DEVCSW(5) SPREAD THE CSW 04576000
  4734. UNPK IERRCSW2(9),DEVCSW+4(5) SPREAD THE CSW 04577000
  4735. TR IERRCSW1(16),AXSTRTAB-240 AND TRANSLATE TO HEX 04578000
  4736. MVC IERRSIO(1),DEVSIOCC MOVE IN STARTIO CONDITION CODE 04579000
  4737. OI IERRSIO,X'F0' AND MAKE PRINTABLE 04580000
  4738. UNPK IERRSENS(3),DEVSENSE(2) SPREAD THE DIGIT 04581000
  4739. MVI IERRSENS+2,C' ' RESTORE THE BLANK 04582000
  4740. TR IERRSENS(2),AXSTRTAB-240 AND TRANSLATE TO HEX 04583000
  4741. TM DEVSIOCC,X'02' ANYTHING BAD? 04584000
  4742. BO IOERRPR1 YES BYPASS CCW 04585000
  4743. C R1,DEVSTART TEST ADDR IN CSW @VA04355 04585200
  4744. BNL *+8 OK IF NOT LESS @VA04355 04585400
  4745. L R1,DEVSTART INVALID, DISPLAY 1ST CCW @VA04355 04585600
  4746. UNPK IERRCCW1(9),0(5,R1) UNPACK THE CCW INTO MSG 04586000
  4747. UNPK IERRCCW2(9),4(5,R1) UNPACK THE CCW INTO MSG 04587000
  4748. TR IERRCCW1(16),AXSTRTAB-240 AND TRANSLATE TO HEX 04588000
  4749. IOERRPR1 EQU * 04589000
  4750. LA R0,IOERMSGL GET THE MSG LENGTH 04590000
  4751. LA R1,IOERRMSG GET THE MSG ADDR 04591000
  4752. BAL R14,MSG AND WRITE IT 04592000
  4753. MVI IERRCCW1,C'0' MOVE IN ONE ZERO 04593000
  4754. MVC IERRCCW1+1(15),IERRCCW1 AND MOVE TO REST 04594000
  4755. LM R13,R1,IOERRSV RESTORE REGISTERS 04595000
  4756. BR R14 AND RETURN 04596000
  4757. SPACE 04597000
  4758. IOERRSV DS 5F SAVE AREA 04598000
  4759. IOERRMSG DC AL2(70),AL2(0) MSG NUMBER AND SPARE 04599000
  4760. IOERRLNE DC CL8' ' LINE ADDR 04600000
  4761. IERRSIO DC CL8' ' ADAPTER SIO COND CODE 04601000
  4762. IERRCSW1 DC CL8' ' ADAPTER CSW 04602000
  4763. IERRCSW2 DC CL8' ' PART 2 OF CSW 04603000
  4764. IERRSENS DC CL8' ' ADAPTER SENSE BYTE 04604000
  4765. IERRCCW1 DC CL8'00000000' ADAPTER FAILING CCW 04605000
  4766. IERRCCW2 DC CL8'00000000' PART 2 OF CCW 04606000
  4767. IOERMSGL EQU *-IOERRMSG LENGTH OF ERROR MSG 04607000
  4768. DC CL1' ' GARBAGE BYTE 04608000
  4769. EJECT 04609000
  4770. *---------------------------------------------------------------------* 04610000
  4771. * * 04611000
  4772. * * 04612000
  4773. * EVENT TRACING ROUTINE * 04613000
  4774. * * 04614000
  4775. * ENTRY: * 04615000
  4776. * * 04616000
  4777. * TRTRAN -- TO RECORD A LINE TRANSACTION * 04617000
  4778. * TRERR -- TO RECORD A LINE ERROR * 04618000
  4779. * TRTIMOT -- TO RECORD A TIMEOUT * 04619000
  4780. * * 04620000
  4781. * * 04621000
  4782. *---------------------------------------------------------------------* 04622000
  4783. SPACE 1 04623000
  4784. DROP R7 04624000
  4785. USING LINKTABL,R1 GET LINK TABLE ADDRESSABILITY 04625000
  4786. SPACE 1 04626000
  4787. DS 0H 04627000
  4788. TRTRAN EQU * 04628000
  4789. STM R14,R1,TRSAVE SAVE REGISTERS 04629000
  4790. L R1,NPTALINK GET LINK TABLE ADDR 04630000
  4791. TM LFLAG,LTRALL SHOULD WE BE DOING THIS? 04631000
  4792. BNO TREXIT NO -- TIME TO EXIT 04632000
  4793. LH R15,LTRNSCNT GET THE CURRENT COUNT 04633000
  4794. LA R15,1(,R15) UP BY ONE 04634000
  4795. STH R15,LTRNSCNT AND REPLACE IN COUNT FIELD 04635000
  4796. C R15,THRESHLD IS IT TIME TO PRINT? 04636000
  4797. BL TREXIT NO RETURN 04637000
  4798. B TRPRT GO PRINT THE MSG 04638000
  4799. SPACE 04639000
  4800. TRERR EQU * 04640000
  4801. STM R14,R1,TRSAVE SAVE REGISTERS 04641000
  4802. L R1,NPTALINK GET LINK TABLE ADDR 04642000
  4803. TM LFLAG,LTRALL+LTRERR SHOULD WE BE DOING THIS? 04643000
  4804. BZ TREXIT NO -- TIME TO EXIT 04644000
  4805. LH R15,LERRCNT GET THE CURRENT COUNT 04645000
  4806. LA R15,1(,R15) UP BY ONE 04646000
  4807. STH R15,LERRCNT AND REPLACE IN COUNT FIELD 04647000
  4808. C R15,THRESHLD IS IT TIME TO PRINT? 04648000
  4809. BL TREXIT NO RETURN 04649000
  4810. B TRPRT GO PRINT THE MSG 04650000
  4811. SPACE 04651000
  4812. TRTIMOT EQU * 04652000
  4813. STM R14,R1,TRSAVE SAVE REGISTERS 04653000
  4814. L R1,NPTALINK GET LINK TABLE ADDR 04654000
  4815. TM LFLAG,LTRALL+LTRERR SHOULD WE BE DOING THIS? 04655000
  4816. BZ TREXIT NO -- TIME TO EXIT 04656000
  4817. LH R15,LTOCNT GET THE CURRENT COUNT 04657000
  4818. LA R15,1(,R15) UP BY ONE 04658000
  4819. STH R15,LTOCNT AND REPLACE IN COUNT FIELD 04659000
  4820. C R15,THRESHLD IS IT TIME TO PRINT? 04660000
  4821. BL TREXIT NO RETURN 04661000
  4822. EJECT 04662000
  4823. TRPRT EQU * 04663000
  4824. MVC TRLINK(8),AXSLINK MOVE LINKID INTO MSG 04664000
  4825. LH R15,LTRNSCNT GET THE CURRENT COUNT 04665000
  4826. CVD R15,TRCVD CONVERT TO DECIMAL 04666000
  4827. UNPK TRMTRN,TRCVD SPREAD THE DIGITS 04667000
  4828. OI TRMTRN+7,X'F0' MAKE THE LAST ONE PRINTABLE 04668000
  4829. LH R15,LERRCNT GET THE CURRENT COUNT 04669000
  4830. CVD R15,TRCVD CONVERT TO DECIMAL 04670000
  4831. UNPK TRMERR,TRCVD SPREAD THE DIGITS 04671000
  4832. OI TRMERR+7,X'F0' MAKE THE LAST ONE PRINTABLE 04672000
  4833. LH R15,LTOCNT GET THE CURRENT COUNT 04673000
  4834. CVD R15,TRCVD CONVERT TO DECIMAL 04674000
  4835. UNPK TRMTO,TRCVD SPREAD THE DIGITS 04675000
  4836. OI TRMTO+7,X'F0' MAKE THE LAST ONE PRINTABLE 04676000
  4837. SR R15,R15 CLEAR OUT R15 04677000
  4838. STH R15,LTRNSCNT CLEAR THE COUNTER 04678000
  4839. STH R15,LERRCNT CLEAR THE COUNTER 04679000
  4840. STH R15,LTOCNT CLEAR THE COUNTER 04680000
  4841. LA R0,TRMSGL GET THE MSG LENGTH 04681000
  4842. LA R15,X'80' ROUTE TO RSCS 04682000
  4843. LA R1,TRMSG GET THE MSG ADDR 04683000
  4844. BAL R14,MSG AND WRITE OUT THE MSG 04684000
  4845. SPACE 04685000
  4846. TREXIT EQU * 04686000
  4847. LM R14,R1,TRSAVE RESTORE THE REGS 04687000
  4848. BR R14 AND RETURN 04688000
  4849. SPACE 04689000
  4850. TRCVD DS D CVD AREA 04690000
  4851. TRSAVE DS 4F SAVE AREA 04691000
  4852. SPACE 04692000
  4853. TRMSG DC AL2(149),AL2(0) NUMBER PLUS SPARE 04693000
  4854. TRLINK DC CL8' ' LINKID 04694000
  4855. TRMTRN DC CL8' ' TRANSACTION COUNT 04695000
  4856. TRMERR DC CL8' ' ERROR COUNT 04696000
  4857. TRMTO DC CL8' ' TIMEOUT COUNT 04697000
  4858. TRMSGL EQU *-TRMSG LENGTH OF MSG 04698000
  4859. SPACE 04699000
  4860. THRESHLD DC F'20' THRESHOLD LEVEL FOR MSG 04700000
  4861. EJECT 04701000
  4862. *---------------------------------------------------------------------* 04702000
  4863. * * 04703000
  4864. * LOG ROUTINE * 04704000
  4865. * * 04705000
  4866. *---------------------------------------------------------------------* 04706000
  4867. SPACE 3 04707000
  4868. DMTNPTA EQU * @VA03349 04708000
  4869. ORG DMTNPT+X'4000' @VA03349 04709000
  4870. USING KLOGIT,R15 @VA03349 04710000
  4871. KLOGIT STM R13,R5,KSAV SAVE REGISTERS @VA03349 04711000
  4872. LR R5,R15 SET BASE @VA03349 04712000
  4873. DROP R15 @VA03349 04713000
  4874. USING KLOGIT,R5 @VA03349 04714000
  4875. TM $LOGSW,LOGON IS LOGING SET ON? 04715000
  4876. BCR 14,R14 (BNO) NO LOGGING - EXIT @VA03489 04716000
  4877. TM $LOGSW,LOGOPEN IS THE LOG DEVICE OPEN? 04717000
  4878. BO LOGCONT YES CONTINUE 04718000
  4879. XC LOGBLK(4),LOGBLK CLEAR SYNCH LOCK 04719000
  4880. LA R1,LOGBLK GET LOG REQUEST BLOCK 04720000
  4881. MVI LOGGREQ+1,X'11' INDICATE OUTPUT OPEN 04721000
  4882. L R15,GIVEREQ GET SYSTEM GIVE EXECUTOR 04722000
  4883. BALR R14,R15 GO EXECUTE THE REQUEST 04723000
  4884. L R15,WAITREQ SYSTEM WAIT EXECUTOR 04724000
  4885. BALR R14,R15 AND WAIT 04725000
  4886. OI $LOGSW,LOGOPEN SET LOG OPEN 04726000
  4887. MVC LOGLINK(8),AXSLINK SET LINKID IN MSG 04727000
  4888. LA R1,LOGTIME GET BUFFER FOR DIAG 04728000
  4889. DIAG R1,R2,X'0C' GET TIME AND DATA FROM VM 04729000
  4890. MVC LOGDTIME(8),LOGTIME MOVE TO MSG 04730000
  4891. MVC LOGDTIME+9(8),LOGTIME+8 MOVE TO MSG 04731000
  4892. L R1,LOGFIOA GET FIOA ADDR 04732000
  4893. MVC DEVSTART-DEVTABLE(4,R1),=A(LOGHDCCW) MOVE CCW ADDR 04733000
  4894. BAL R14,LOGPRINT OUTPUT THE HEADER LINE @VA03273 04734000
  4895. MVC DEVSTART-DEVTABLE(4,R1),=A(LOGCCW) SET LOG WRITE@VA03273 04735000
  4896. SPACE 1 04736000
  4897. LOGCONT EQU * @VA03273 04737000
  4898. UNPK IOLINE+43(15),DEVCSW+1(8) UNPACK THE CSW @VA03273 04738000
  4899. TR IOLINE+43(14),KTAB-240 SET LEGAL EBCDIC @VA03273 04739000
  4900. MVI IOLINE+57,C' ' CLEAR GARBAGE CHAR @VA03273 04740000
  4901. TM DEVCSW+4,UC DID WE GET UNIT CHECK? @VA03489 04741000
  4902. BZ LOGNOSEN NO, SENSE DATA MEANINGLESS @VA03489 04742000
  4903. UNPK IOLINE+58(3),DEVSENSE(2) UNPACK SENSE BYTE @VA03273 04743000
  4904. TR IOLINE+58(2),KTAB-240 SET LEGAL EBCDIC @VA03273 04744000
  4905. MVI IOLINE+60,C' ' CLEAR GARBAGE CHAR @VA03273 04745000
  4906. SPACE 1 04746000
  4907. LOGNOSEN L R2,DEVSTART START OF CHANNEL PROGRAM @VA03489 04747000
  4908. LA R2,0(,R2) INSURE HI-ORDER BYTE IS CLEARED @VA03489 04748000
  4909. EJECT 04749000
  4910. LOGOP EQU * @VA03273 04750000
  4911. CLI 0(R2),X'03' IS IT A NOP @VA03349 04751000
  4912. BE LOGCHAIN YES, SKIP IT @VA03349 04752000
  4913. BAL R14,LOGENTER LOG THE WRITE @VA03273 04753000
  4914. SPACE 1 04754000
  4915. LOGCHAIN EQU * @VA03273 04755000
  4916. TM 4(R2),CC MORE TO GO? @VA03273 04756000
  4917. BNO LOGDONE NO - RETURN @VA03273 04757000
  4918. LA R2,8(R2) TO THE NEXT CCW @VA03273 04758000
  4919. MVI IOLINE+43,C' ' CLEAR THE FIRST BYTE ... @VA03273 04759000
  4920. MVC IOLINE+44(16),IOLINE+43 CLEAR CSW AND SENSE @VA03273 04760000
  4921. B LOGOP AND DO THE NEXT CCW @VA03273 04761000
  4922. SPACE 1 04762000
  4923. SPACE 1 04763000
  4924. LOGDONE EQU * @VA03273 04764000
  4925. LM R13,R5,KSAV RESTORE REGISTERS @VA03349 04765000
  4926. BR R14 AND RETURN TO CALLER @VA03489 04766000
  4927. SPACE 1 04767000
  4928. LOGENTER EQU * @VA03273 04768000
  4929. UNPK IOLINE+62(9),0(5,R2) CCW FIRST HALF @VA03273 04769000
  4930. UNPK IOLINE+70(9),4(5,R2) CCW SECOND HALF @VA03273 04770000
  4931. TR IOLINE+62(16),KTAB-240 TRANS ABCDEF @VA03273 04771000
  4932. MVI IOLINE+78,C' ' CLEAR GARBAGE BYTE @VA03273 04772000
  4933. SPACE 1 04773000
  4934. MVC IOLINE(2),DASH MOVE NO DATA INDICATOR @VA03489 04774000
  4935. SR R4,R4 CLEAR WORK REGISTER @VA03489 04775000
  4936. LH R1,6(,R2) GET BUFFER LENGTH @VA03489 04776000
  4937. ICM R4,B'0111',DEVCSW+1 GET ENDING CCW ADDRESS @VA03489 04777000
  4938. S R4,=F'8' BACK UP CSW FOR CURRENT @VA03489 04778000
  4939. BALR R15,0 INITIALIZE CALC SWITCH @VA03489 04779000
  4940. BM LOGBUFAD IF INVALID, USE CCW LENGTH @VA03489 04780000
  4941. CR R4,R2 IS THIS THE ENDING CCW? @VA03489 04781000
  4942. BALR R15,0 REMEMBER CALC OPERATION @VA03489 04782000
  4943. BNE LOGBUFAD IF NO, USE CCW LENGTH @VA03489 04783000
  4944. LH R0,DEVCSW+6 GET RESIDUAL BYTE COUNT @VA03489 04784000
  4945. SR R1,R0 CALCULATE BYTES TRANSFERRED @VA03489 04785000
  4946. BNP LOGNOSIG ZIP ... SORRY ABOUT THAT @VA03489 04786000
  4947. SPACE 1 04787000
  4948. LOGBUFAD EQU * @VA03489 04788000
  4949. ICM R3,B'0111',1(R2) GET BUFFER ADDRESS @VA03489 04789000
  4950. UNPK PACKWORK(15),0(8,R3) GET FIRST PORTION @VA03489 04790000
  4951. UNPK PACKWORK+14(15),7(8,R3) GET NEXT PORTION @VA03489 04791000
  4952. TR PACKWORK(28),KTAB-240 CLEAN UP HEX ZONES @VA03489 04792000
  4953. LR R4,R1 SAVE BUFFER LENGTH @VA03489 04793000
  4954. S R4,=F'14' MORE THAN 14 BYTES IN BUFFER? @VA03489 04794000
  4955. BP LOGGT14 IF YES, ALSO DO LAST PORTION @VA03489 04795000
  4956. LR R4,R1 GET ORIGINAL BUFFER LENGTH @VA03489 04796000
  4957. SLL R4,1 DOUBLE FOR MOVE @VA03489 04797000
  4958. BCTR R4,0 DECREMENT FOR EXECUTE @VA03489 04798000
  4959. EX R4,LOGPKMV MOVE DATA TO BUFFER @VA03489 04799000
  4960. B LOGNOSIG NO LAST PORTION @VA03489 04800000
  4961. LOGGT14 MVC IOLINE(28),PACKWORK MOVE 14 BYTES TO BUFFER @VA03489 04801000
  4962. S R1,=F'8' LESS 8 FOR END OF BUFFER @VA03489 04802000
  4963. SPM R15 DID WE CALC FOR LENGTH? @VA03489 04803000
  4964. BE LOGLASTB NO, DETERMINE END OF BUFFER @VA03489 04804000
  4965. LA R1,1(,R1) BUMP BYTE COUNT @VA03489 04805000
  4966. LOGLASTB LA R3,0(R1,R3) POINT TO SEGMENT OF BUFFER @VA03489 04806000
  4967. UNPK IOLINE+28(15),0(8,R3) GET LAST PORTION OF DATA @VA03489 04807000
  4968. TR IOLINE+30(12),KTAB-240 TRANSLATE HEX ZONES @VA03489 04808000
  4969. MVI IOLINE+42,C' ' SET BLANK AFTER BUFFER @VA03273 04809000
  4970. MVC IOLINE+28(2),DASH SEPARATE TWO PARTS OF BUFFER @VA03489 04810000
  4971. SPACE 1 04811000
  4972. LOGNOSIG LH R0,6(,R2) CCW COUNT @VA03489 04812000
  4973. SPACE 1 04813000
  4974. LOGPRINT EQU * @VA03273 04814000
  4975. LR R3,R14 SAVE RETURN ADDRESS @VA03273 04815000
  4976. L R1,LOGFIOA LOG OUTPUT TABLE ADDRESS @VA03273 04816000
  4977. XC 0(4,R1),0(R1) CLEAR SYNCH LOCK @VA03273 04817000
  4978. L R15,IOREQ I/O REQUEST ENTRY ADDRESS @VA03273 04818000
  4979. BALR R14,R15 OUTPUT THE LOG LINE @VA03273 04819000
  4980. L R15,WAITREQ WAIT REQUEST ENTRY ADDRESS @VA03273 04820000
  4981. BALR R14,R15 WAIT FOR COMPLETION @VA03273 04821000
  4982. MVC IOLINE,C' ' CLEAR THE ... @VA03489 04822000
  4983. MVC IOLINE+1(119),IOLINE ... PRINT BUFFER @VA03489 04823000
  4984. BR R3 RETURN TO LOG ROUTINE @VA03273 04824000
  4985. SPACE 1 04825000
  4986. LOGCLEAR MVC 1(0,R3),0(R3) EXECUTED TO CLEAR LOG BUFFER @VA03273 04826000
  4987. LOGPKMV MVC IOLINE(0),PACKWORK EXECUTED TO MOVE BUFFER DATA @VA03489 04827000
  4988. SPACE 1 04828000
  4989. DROP R1 @VA03273 04829000
  4990. KTAB DC C'0123456789ABCDEF' TRANSLATE TAB @VA03349 04830000
  4991. KSAV DC 9F'0' SAVE AREA @VA03349 04831000
  4992. DROP R5 @VA03349 04832000
  4993. ORG DMTNPTA @VA03349 04833000
  4994. EJECT 04834000
  4995. DASH DC CL2'--' SEPARATOR FOR DATA IN BUFFER @VA03489 04835000
  4996. PACKWORK DS CL30 WORK AREA FOR UNPACKING @VA03489 04836000
  4997. IOLINE DC CL120' ' LOG PRINT LINE 04837000
  4998. SPACE 1 04838000
  4999. $LOGSW DC X'00' LOG SWITCH 04839000
  5000. * BITS DEFINED IN $LOGSW 04840000
  5001. LOGON EQU X'80' LOGING SET ON 04841000
  5002. LOGOPEN EQU X'40' LOG DEVICE OPEN 04842000
  5003. SPACE 1 04843000
  5004. DS 0F 04844000
  5005. LOGBLK DC F'0' SYNCH LOCK 04845000
  5006. DC CL4'AXS ' FILE ACCESS TASK NAME 04846000
  5007. DC A(LOGGREQ) REQUEST BUFFER ADDR 04847000
  5008. DC AL1(19),AL3(LOGGREQ) RESPONSE BUFFER ADDR 04848000
  5009. LOGGREQ DC AL1(19,0,0,0) LENGTH,FUNCTION,SPARE,SUBCODE 04849000
  5010. DC A(LOGTAG) LOG TAG ADDRESS 04850000
  5011. LOGFIOA DC A(0) FILE I/O AREA ADDRESS 04851000
  5012. DC CL8' ' LINK ID 04852000
  5013. SPACE 1 04853000
  5014. LOGTAG DC 108CL1' ' LOG TAG 04854000
  5015. SPACE 1 04855000
  5016. DS 0D 04856000
  5017. LOGCCW CCW X'09',IOLINE,SILI,120 WRITE AND SPACE 1 04857000
  5018. LOGHDCCW CCW X'19',LOGHDLNE,SILI,LOGHDRLN WRITE AND SPACE 3 04858000
  5019. SPACE 1 04859000
  5020. LOGHDLNE DC CL3' ' HEADER LINE 04860000
  5021. DC C'D M T N P T LINE TRANSACTION LOG FOR LINK ' 04861000
  5022. LOGLINK DC CL8' ' 04862000
  5023. DC C' ON ' 04863000
  5024. LOGDTIME DC CL17' ' 04864000
  5025. LOGHDRLN EQU *-LOGHDLNE LENGTH OF HDR LINE 04865000
  5026. DS 0D 04866000
  5027. LOGTIME DC CL32' ' DIAG BUFFER 04867000
  5028. EJECT - LOG 04868000
  5029. *---------------------------------------------------------------------* 04869000
  5030. * * 04870000
  5031. * CLOSE LOG ROUTINE * 04871000
  5032. * * 04872000
  5033. *---------------------------------------------------------------------* 04873000
  5034. SPACE 1 04874000
  5035. DC 0H'0' 04875000
  5036. LOGCLOSE EQU * 04876000
  5037. STM R14,R1,LOGCLSAV SAVE REGISTERS 04877000
  5038. NI $LOGSW,255-LOGON-LOGOPEN RESET FLAGS 04878000
  5039. XC LOGBLK(4),LOGBLK CLEAR SYNCH LOCK 04879000
  5040. LA R1,LOGBLK GET LOG REQUEST BLOCK 04880000
  5041. MVI LOGGREQ+1,X'12' INDICATE OUTPUT OPEN 04881000
  5042. L R15,GIVEREQ GET SYSTEM GIVE EXECUTOR 04882000
  5043. BALR R14,R15 GO EXECUTE THE REQUEST 04883000
  5044. L R15,WAITREQ SYSTEM WAIT EXECUTOR 04884000
  5045. BALR R14,R15 AND WAIT 04885000
  5046. LM R14,R1,LOGCLSAV RESTORE REGISTERS 04886000
  5047. BR R14 AND RETURN @VA03520 04887000
  5048. SPACE 1 04888000
  5049. LOGCLSAV DS 4F SAVE AREA 04889000
  5050. EJECT 04890000
  5051. *---------------------------------------------------------------------* 04891000
  5052. * * 04892000
  5053. * CCW'S, PSW'S, ETC. FOR INITIALIZATION * 04893000
  5054. * * 04894000
  5055. *---------------------------------------------------------------------* 04895000
  5056. SPACE 04896000
  5057. DS 0D 04897000
  5058. ENABPROG CCW X'2F',0,CC+SILI,1 DISABLE IN CASE NOT HUNG UP 04898000
  5059. CCW X'23',NPTMODE,CC+SILI,1 SET 'ITB ' MODE 04899000
  5060. CCW X'27',0,SILI,1 ENABLE THE ADAPTER 04900000
  5061. QUITPROG CCW X'2F',0,SILI,1 DISABLE 04901000
  5062. SPACE 04902000
  5063. NPTMODE DC X'40' SET 2701 (OR 2703) IN 'ITB ' MODE 04903000
  5064. EJECT 04904000
  5065. *. 04905000
  5066. * 04906000
  5067. * ENTRY NAME - 04907000
  5068. * 04908000
  5069. * NPTTERM 04909000
  5070. * 04910000
  5071. * FUNCTION - 04911000
  5072. * 04912000
  5073. * TERMINATE NPT TASK 04913000
  5074. * 04914000
  5075. * CALLS TO OTHER ROUTINES - 04915000
  5076. * 04916000
  5077. * DMTREX - TO TERMINATE THE DMTNPT TASK 04917000
  5078. * 04918000
  5079. * OPERATION - 04919000
  5080. * 04920000
  5081. * 1. ISSUE MSG 143 04921000
  5082. * 04922000
  5083. * 2. ISSUE TERMINATE REQUEST TO DMTREX. 04923000
  5084. * 04924000
  5085. * 3. WAIT ON A NEVER TO BE POSTED SYNCH LOCK. 04925000
  5086. * 04926000
  5087. * RESPONSES - 04927000
  5088. * 04928000
  5089. * DMTNPT143I LINK 'LINKID' LINE 'VADDR' DISCONNECTED 04929000
  5090. * 04930000
  5091. * ERROR MESSAGES - 04931000
  5092. * 04932000
  5093. * NONE 04933000
  5094. * 04934000
  5095. *. 04935000
  5096. SPACE 3 04936000
  5097. DS 0H 04937000
  5098. NPTTERM EQU * 04938000
  5099. LINEDIS1 EQU * 04939000
  5100. L R7,NPTALINK GET LINK TABLE ADDRESS 04940000
  5101. LA R13,LINE SET THE PTR TO THE LINE DEVICE BLOCK 04941000
  5102. MVC DEVSTART(4),=A(QUITPROG) ISSUE DISABLE 04942000
  5103. BAL R14,LINEIO GO DISABLE THE LINE 04943000
  5104. TM DEVFLAGS,IOERR END IN ERROR? 04944000
  5105. BO LINEDIS1 YES --TRY AGAIN 04945000
  5106. LINEDIS2 EQU * 04946000
  5107. LA R2,RDRBLK READER DEVICE BLOCK @VA05662 04946020
  5108. TM RDEVFLAG,FILACTIV FILE OPEN ? @VA05662 04946040
  5109. BZ NOSEND NO, NOT SENDING FILE @VA05662 04946060
  5110. MVI RDEVSOPT,X'81' INDICATE KEEP, NOHOLD OPTION @VA05662 04946080
  5111. BAL R14,AXSPURGE CLOSE AND SAVE THE FILE @VA05662 04946100
  5112. NOSEND LA R2,PUNBLK PUNCH DEVICE BLOCK @VA05662 04946120
  5113. TM RDEVFLAG,FILEOPEN FILE OPEN ? @VA05662 04946140
  5114. BZ NORECV NO, NOT RECEIVING FILE @VA05662 04946160
  5115. L R13,RDEVFIOA IOBLOCK ADDRESS @VA05662 04946180
  5116. UNPK CMDBUF+5(5),DEVADDR(3) UNPACK DEV ADDRESS @VA05662 04946200
  5117. MVI CMDBUF+5,C' ' CLEAR CLOBBERED BYTES @VA05662 04946220
  5118. MVI CMDBUF+9,C' ' @VA05662 04946240
  5119. TR CMDBUF+6(3),AXSTRTAB-240 TRANSLATE TO EBCDIC @VA05662 04946260
  5120. LA R0,CMDBUF ADDRESS OF TAG COMMAND @VA05662 04946280
  5121. LA R1,80 LENGTH @VA05662 04946300
  5122. DIAG R0,R1,8 ISSUE TAG COMMAND @VA05662 04946320
  5123. SR R0,R0 CLEAR R0 TO INDICATE GIVE @VA05662 04946340
  5124. ST R0,RDEVSYNC CLEAR SYNCH LOCK ALSO @VA05662 04946360
  5125. MVI RDEVFUN,X'12' INDICATE CLOSE REQUEST @VA05662 04946380
  5126. LR R1,R2 DEVICE BLOCK IN R1 @VA05662 04946400
  5127. L R15,GIVEREQ SYSTEM GIVE RTN @VA05662 04946420
  5128. BALR R14,R15 GIVE CLOSE TO AXS @VA05662 04946440
  5129. L R15,WAITREQ SYSTEM WAIT RTN @VA05662 04946460
  5130. BALR R14,R15 WAIT FOR ACCEPTANCE @VA05662 04946480
  5131. NORECV EQU * @VA05662 04946500
  5132. BAL R14,LOGCLOSE INSURE LOG IS CLOSED @VA03520 04947000
  5133. MSG 143,(AXSLINK,NPTLINE) WRITE MSG 04948000
  5134. SPACE 04949000
  5135. TASKILL EQU * 04950000
  5136. LA R1,REQREX GET TERMINATE REQUEST BLOCK 04951000
  5137. SR R0,R0 INDICATE GIVE INITIATE 04952000
  5138. L R15,GIVEREQ SYSTEM GIVE PROCESSOR 04953000
  5139. BALR R14,R15 GO TERMINATE THE TASK 04954000
  5140. L R15,WAITREQ GET SYSTEM WAIT ROUTINE ADDR 04955000
  5141. LA R1,LONGWAIT GET EMPTY SYNCH LOCK 04956000
  5142. BALR R14,R15 WAIT A LONG TIME 04957000
  5143. SPACE 3 04958000
  5144. * 04959000
  5145. REQDEL DS 0F 04960000
  5146. DC AL1(1) REQ. LENGHT 04961000
  5147. DC X'03' REQ. CODE 04962000
  5148. SPACE 04963000
  5149. REQREX DC F'0' SYNCH LOCK 04964000
  5150. DC CL4'REX ' GOES TO REX 04965000
  5151. DC A(REQDEL) REQUEST BUFFER ADDR 04966000
  5152. DC A(0) NO RESPONSE 04967000
  5153. SPACE 04968000
  5154. LONGWAIT DC F'0' A VERY LONG WAIT 04969000
  5155. EJECT 04970000
  5156. SPACE 04971000
  5157. RETRYNUM EQU 20 NUMBER OF RETRY TO RECOVERY ERRORS 04972000
  5158. REPLYCNT EQU 3 NUM OF ENQ RETRY FOR INCORRECT ACK 04973000
  5159. WAITNUM EQU 40 NUM OF T.O. FOR IN DEV. NOT READY 04974000
  5160. TIMEOUT EQU X'01' TIMEOUT BIT IN SENSE BYTE 04975000
  5161. DATACK EQU X'0E' DATA CHECK, OVERRUN, LOST DATA @VA03349 04976000
  5162. SPACE 04977000
  5163. NPTFLAGS DC AL1(0) MAIN ROUTINE FLAGS 04978000
  5164. * BITS DEFINED IN NPTFLAGS 04979000
  5165. MSGSEND EQU X'80' SENDING FILE 04980000
  5166. MSGREC EQU X'40' RECEIVING FILE 04981000
  5167. NOTIMEO EQU X'20' SUPPRESS ORDINARY TIMEOUTS IN LINEIO 04982000
  5168. TDLY EQU X'10' INDICATES TIMER DELAY ACTIVE @VA03349 04983000
  5169. NOETX EQU X'08' NO ETX IN THE RECORD 04984000
  5170. HEADFLAG EQU X'04' SENDING HEADER 04985000
  5171. ETXSEND EQU X'02' SEND ETX FLAG @VA03640 04986000
  5172. RENBL EQU X'01' REENABLING 04987000
  5173. SPACE 04988000
  5174. * DEVFLAGS EQUATES 04989000
  5175. IOERR EQU X'80' I/O ERROR OCCURRED ON LAST CALL 04990000
  5176. EMPTY EQU X'40' OUTPUT READER IS EMPTY 04991000
  5177. NOSCAN EQU X'20' DO NOT SCAN FOR ID RECORD 04992000
  5178. FILEON EQU X'10' RECV FILE MSG ISSUED FOR THIS FILE 04993000
  5179. MSGON EQU X'08' ISSUE FILE SENT MSG ON NEXT REQ 04994000
  5180. FILACTIV EQU X'04' FILE ACTIVE 04995000
  5181. FILREADY EQU X'02' FILE READY 04996000
  5182. FILEOPEN EQU X'01' OUTPUT FILE OPEN FLAG 04997000
  5183. SPACE 04998000
  5184. GETFLAGS DC AL1(BUFEMPTY) SPOOL BLOCK GET ROUTINE FLAGS 04999000
  5185. * BITS DEFINED IN GETFLAGS 05000000
  5186. BUFEMPTY EQU X'80' SPOOL BUFFER HAS NO DATA TO BE SENT 05001000
  5187. PRNTSEND EQU X'40' SENDING PRINT FILE 05002000
  5188. EJECT EQU X'20' DO PAGE EJECT AT EOF @VA03640 05003000
  5189. MSGQUED EQU X'10' MSGS QUEUED 05004000
  5190. EOF EQU X'08' END OF FILE IN THE INPUT SPOOL FILE 05005000
  5191. FILLED EQU X'04' INPUT BUFFER FILLED 05006000
  5192. IMFLG EQU X'02' PROCESSING SKIP IMMED FLAG 05007000
  5193. IMCMD EQU X'01' IMMEDIATE CARRIAGE COMMAND 05008000
  5194. SPACE 05009000
  5195. PUTFLAGS DC AL1(0) RECEIVING FLAG 05010000
  5196. * BITS DEFINED IN PUTFLAGS 05011000
  5197. XFERFLG EQU X'80' XFER IN PROGRESS 05012000
  5198. NOXFER EQU X'40' XFER FAILED 05013000
  5199. *TRANSP EQU X'20' TRANSPARENCY ON 05014000
  5200. EOTREC EQU X'10' EOT RECEIVED 05015000
  5201. ETXREC EQU X'08' ETX RECEIVED @VA03119 05016000
  5202. NTRDY EQU X'04' TRANSMISSION INTERRUPTED @VA03119 05017000
  5203. SPACMP EQU X'02' SPACE COMPRESSION ON @VA03112 05018000
  5204. SPACE 1 05019000
  5205. DEVFEAT DC AL1(0) TERMINAL DEVICE FEATURES 05020000
  5206. * BITS DEFINED IN DEVFEAT 05021000
  5207. ERROR EQU X'80' ERROR IN THE SPECIFIED FEATURE 05022000
  5208. BLKCOMP EQU X'40' BLANK COMPRESSION FEATURE 05023000
  5209. *TRANSP EQU X'20' TRANSPARENCY FEATURE 05024000
  5210. REMPUNCH EQU X'10' PUNCH UNIT AVAILABLE 05025000
  5211. REM2780 EQU X'08' 2780 REMOTE STATION 05026000
  5212. REM2770 EQU X'04' 2770 REMOTE STATION 05027000
  5213. REM3780 EQU X'02' 3780 REMOTE STATION 05028000
  5214. REM3770 EQU X'01' 3770 REMOTE STATION 05029000
  5215. * NOTE: 3780 AND 3770 TERMINALS ALSO HAVE THE REM2770 BIT SET SINCE 05030000
  5216. * THESE THREE TERMINAL TYPES ARE TREATED IDENTICALLY. 05031000
  5217. EJECT 05032000
  5218. INTFLAG DC AL1(0) COMMAND ACTION FLAG 05033000
  5219. * BITS DEFINED IN INTFLAG 05034000
  5220. INTOUT EQU X'80' OUTPUT INTERRUPTED 05035000
  5221. SIGNONED EQU X'40' SIGNON CARD ACCEPTED 05036000
  5222. WSM EQU X'20' SIGNON HAS DATA FOLLOWING @VA03349 05037000
  5223. WSEM EQU X'10' WRITE SIGNON ERROR MSG PENDING @VA03349 05038000
  5224. NOSIGN EQU X'08' NOT A SIGNON CARD @VA03349 05039000
  5225. NOLINK EQU X'04' LINKID INVALID @VA03349 05040000
  5226. NOPARM EQU X'02' PARM FIELD IS INVALID @VA03349 05041000
  5227. NOPAS EQU X'01' PASSWORD IS INVALID @VA03349 05042000
  5228. SPACE 05043000
  5229. LINERROR DC AL1(0) ERRORS FLAGS 05044000
  5230. * BITS DEFINED IN LINERROR 05045000
  5231. OUTNRDY EQU X'80' OUTPUT DEVICE NOT READY 05046000
  5232. NOEXACK EQU X'40' INCORRECT REPLY RECEIVED 05047000
  5233. NAKEOT EQU X'20' EOT SENT AFTER A SERIES OF NAKS @VA03349 05048000
  5234. NAKREC EQU X'10' NAK RECEIVED 05049000
  5235. WACKREC EQU X'08' WACK RECEIVED @VA03341 05050000
  5236. CKRESP EQU X'02' REREAD OF LAST RESPONSE @VA03349 05051000
  5237. CTLMODE EQU X'01' DEVICE WENT TO CONTROL EARLY @VA03349 05052000
  5238. SPACE 2 05053000
  5239. SELFLAGS DC AL1(0) DEVICE SELECTION FLAGS @VA03349 05054000
  5240. PCHSEL EQU X'01' SELECTING THE PUNCH @VA03349 05055000
  5241. RSELECT EQU X'02' RESELECT AFTER OUTPUT INTERRUPT @VA03349 05056000
  5242. VCMD EQU X'80' VALID COMMAND ENTERED @VA04171 05056500
  5243. SPACE 05057000
  5244. * MULTI EQUATE 05058000
  5245. TRANSP EQU X'20' TRANSPARENCY ON 05059000
  5246. TRTFNCBT DC AL1(0) TRANSLATE FUNCTION BYTE @VA04942 05059100
  5247. SPACE 2 05060000
  5248. * LINE CONTROL CHARACTER EQUATES 05061000
  5249. SOH EQU X'01' START OF HEADER 05062000
  5250. STX EQU X'02' START OF TEXT 05063000
  5251. ETX EQU X'03' END OF TEXT 05064000
  5252. DLE EQU X'10' DATA-LINE ESCAPE 05065000
  5253. DC1 EQU X'11' DATA CONTROL ONE 05066000
  5254. DC2 EQU X'12' DATA CONTROL TWO 05067000
  5255. NL EQU X'15' NEW LINE @VA04949 05067100
  5256. EM EQU X'19' END OF MEDIA 05068000
  5257. IGS EQU X'1D' INTER GROUP SEPARATOR 05069000
  5258. IRS EQU X'1E' INTER RECORD SEPARATOR 05070000
  5259. ITB EQU X'1F' INTERMEDIATE TEXT BLOCK 05071000
  5260. ETB EQU X'26' END OF TRANSMISSION BLOCK 05072000
  5261. ESC EQU X'27' ESCAPE 05073000
  5262. ENQ EQU X'2D' ENQUIRY 05074000
  5263. SYN EQU X'32' SYNCHRONIZATION 05075000
  5264. EOT EQU X'37' END OF TRANSMISSION 05076000
  5265. NAK EQU X'3D' NEGATIVE ACKNOWLEDGEMENT 05077000
  5266. DC3 EQU X'5D' SELECT 3770 LINE PRINTER @VA04171 05077500
  5267. ACK1 EQU X'61' POSITIVE ACKNOWLEDGEMENT (ODD) 05078000
  5268. WABT EQU X'6B' WAIT BEFORE TRANSMIT 05079000
  5269. ACK0 EQU X'70' POSITIVE ACKNOWLEDGEMENT (EVEN) 05080000
  5270. EPAD EQU X'FF' ENDING PAD CHARACTER @VA03349 05081000
  5271. SPAD EQU X'AA' STARTING PAD CHARACTER @VA03349 05082000
  5272. RVI EQU X'7C' REVERSE INTERRUPT CHARACTER @VA03349 05083000
  5273. EJECT 05084000
  5274. LTORG 05085000
  5275. EJECT 05086000
  5276. COPY SVECTORS 05087000
  5277. EJECT 05088000
  5278. COPY TASKE 05089000
  5279. EJECT 05090000
  5280. COPY LINKTABL 05091000
  5281. EJECT 05092000
  5282. COPY TAG 05093000
  5283. EJECT 05094000
  5284. DEVTABLE DSECT 05095000
  5285. SPACE 1 05096000
  5286. *** DEVTABLE - DEVICE BLOCK 05097000
  5287. * 05098000
  5288. * 0 +-----------------------------------------------+ 05099000
  5289. * | DEVLOCK | 05100000
  5290. * 4 +-----------------------+-----------------------+ 05101000
  5291. * | DEVADDR | DEVSNREQ | DEVTYPE | 05102000
  5292. * 8 +-----------------------+-----------------------+ 05103000
  5293. * | DEVSTART | 05104000
  5294. * C +-----+-----------------------------------------+ 05105000
  5295. * | D*1 | | 05106000
  5296. * +-----+ | 05107000
  5297. * | DEVCSW | 05108000
  5298. * | | 05109000
  5299. * 14 +-----------+-----------------------------------+ 05110000
  5300. * | DEVSENSE | DEVFLAGS | 05111000
  5301. * 18 +-----------+-----------------------------------+ 05112000
  5302. * | | 05113000
  5303. * | DEVNAME | 05114000
  5304. * | | 05115000
  5305. * 20 +-----------------------------------------------+ 05116000
  5306. * 05117000
  5307. *** DEVTABLE - DEVICE BLOCK 05118000
  5308. SPACE 1 05119000
  5309. DEVLOCK DC F'0' I/O REQUEST SYNCH LOCK 05120000
  5310. DEVADDR DC AL2(0) CUU ADDRESS OF I/O DEVICE 05121000
  5311. DEVSNREQ DC AL1(0) REQUESTED SENSE BYTES 05122000
  5312. DEVTYPE DC X'00' VM/370 DEVICE TYPE CODE 05123000
  5313. DEVSTART DC F'0' ADDR START CHAN PROG FOR I/O HAND 05124000
  5314. DEVSIOCC DC 0X'00' D*1 RIGHT JUSTIFIED SIO CONDITION CODE 05125000
  5315. DEVCSW DC 2F'0' ENDING CSW FROM LAST I/O OPERATION 05126000
  5316. DEVSENSE DC X'00' SENSE INFORMATION ON UNIT CHECK 05127000
  5317. DEVFLAGS DC 3X'00' DEVICE STATUS FLAGS 05128000
  5318. DEVNAME DC CL8' ' EBCDIC DEV ADDRESS AND NAME 05129000
  5319. EJECT 05130000
  5320. REQBLOCK DSECT 05131000
  5321. SPACE 1 05132000
  5322. *** REQBLOCK - REQUEST BLOCK 05133000
  5323. * 05134000
  5324. * 0 +-----------------------------------------------+ 05135000
  5325. * | RDEVSYNC | 05136000
  5326. * 4 +-----------------------------------------------+ 05137000
  5327. * | RDEVREQN | 05138000
  5328. * 8 +-----------------------------------------------+ 05139000
  5329. * | RDEVREQ | 05140000
  5330. * C +-----------------------------------------------+ 05141000
  5331. * | RDEVRESP | 05142000
  5332. * 10 +-----------+-----------+-----------+-----------+ 05143000
  5333. * | RDEVRLEN | RDEVFUN | RDEVRESV | RDEVSOPT | 05144000
  5334. * 14 +-----------+-----------+-----------+-----------+ 05145000
  5335. * | RDEVTAG | 05146000
  5336. * 18 +-----------------------------------------------+ 05147000
  5337. * | RDEVFIOA | 05148000
  5338. * 1C +-----------------------------------------------+ 05149000
  5339. * | | 05150000
  5340. * | RDEVLINK | 05151000
  5341. * | | 05152000
  5342. * 24 +-----------------------------------------------+ 05153000
  5343. * | RDEVNAME | | 05154000
  5344. * +-----------------------------------+ | 05155000
  5345. * | RDEVSTYL | 05156000
  5346. * 2C +-----------------------------------------------+ 05157000
  5347. * | RDEVFLAGS | 05158000
  5348. * 30 +-----------------------------------------------+ 05159000
  5349. * 05160000
  5350. *** REQBLOCK - REQUEST BLOCK 05161000
  5351. SPACE 1 05162000
  5352. RDEVSYNC DC F'0' SYNCH LOCK 05163000
  5353. RDEVREQN DC CL4'AXS ' FILE ACCESS TASK 05164000
  5354. RDEVREQ DC A(0) REQUEST BUFFER ADDR 05165000
  5355. RDEVRESP DC AL1(0),AL3(0) RESPONSE BUFFER 05166000
  5356. RDEVRLEN DC AL1(0) REQUEST LENGTH 05167000
  5357. RDEVFUN DC AL1(0) REQUEST FUNCTION 05168000
  5358. RDEVRESV DC AL1(0) RESERVED BYTE 05169000
  5359. RDEVSOPT DC AL1(0) SUB OPTION BYTE 05170000
  5360. RDEVTAG DC A(0) TAG ADDRESS 05171000
  5361. RDEVFIOA DC A(0) FILE I/O AREA 05172000
  5362. RDEVLINK DC CL8' ' LINK NAME 05173000
  5363. RDEVNAME DC C' ' DEVICE STYLE 05174000
  5364. RDEVSTYL DC C' ' 05175000
  5365. RDEVFLAG DC AL1(0,0,0,0) DEVICE FLAGS 05176000
  5366. EJECT 05177000
  5367. COPY RSSEQU 05178000
  5368. EJECT 05179000
  5369. COPY DEVTYPES 05180000
  5370. EJECT 05181000
  5371. COPY SPOOL 05182000
  5372. END 05183000