Table of Contents

DMKSPL Source

References

Source Listing

DMKSPL.ASSEMBLE.txt
  1. SPL TITLE 'DMKSPL (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
  3. *. 00003000
  4. * 00004000
  5. * MODULE NAME - 00005000
  6. * 00006000
  7. * DMKSPL 00007000
  8. * 00008000
  9. * CONTENTS - 00009000
  10. * 00010000
  11. * DMKSPLOV - OPEN A VIRTUAL SPOOLED PRINTER OR PUNCH FILE 00011000
  12. * DMKSPLOR - OPEN A REAL INPUT READER FILE 00012000
  13. * DMKSPLCV - CLOSE A VIRTUAL PRINTER OR PUNCH FILE 00013000
  14. * DMKSPLCR - CLOSE A REAL INPUT READER FILE 00014000
  15. * DMKSPLDL - TO STACK A SPOOL FILE TO BE DELETED 00015000
  16. * DMKSPLDR - TO DELETE SPOOL FILE BUFFERS 00016000
  17. * 00017000
  18. *. 00018000
  19. EJECT 00019000
  20. COPY OPTIONS 00020000
  21. COPY LOCAL OPTIONS 00021000
  22. SPACE 3 00022000
  23. DMKSPL CSECT 00023000
  24. SPACE 3 00024000
  25. EXTRN DMKPGTSR,DMKPGTSD 00025000
  26. EXTRN DMKSYSOW,DMKSTKCP,DMKVIOIN 00026000
  27. EXTRN DMKSTKIO,DMKPGTVG 00027000
  28. EXTRN DMKPGTSG,DMKCVTDT,DMKSCNAU 00028000
  29. EXTRN DMKIOSQR,DMKRSPHQ 00029000
  30. EXTRN DMKRSPID,DMKCVTBD 00030000
  31. EXTRN DMKUDRFU,DMKUDRRD,DMKUDRRV @V200930 00031000
  32. EXTRN DMKDRDDD,DMKRSPDL,DMKPTRUL 00032000
  33. EXTRN DMKSYSOC @VM08815 00033000
  34. EXTRN DMKCKSPL @V304298 00034000
  35. EXTRN DMKRPAGT,DMKRPAPT @V293598 00035000
  36. EXTRN DMKUDRMD @V407466 00035100
  37. EXTRN DMKPGTVR @VA11232 00035200
  38. SPACE 3 00036000
  39. USING PSA,R0 00037000
  40. USING SPLINK,R2 00038000
  41. USING SFBLOK,R7 00039000
  42. USING IOBLOK,R10 00040000
  43. USING VMBLOK,R11 00041000
  44. USING SAVEAREA,R13 00042000
  45. EJECT 00043000
  46. *. 00044000
  47. * 00045000
  48. * SUBROUTINE NAME - 00046000
  49. * 00047000
  50. * DMKSPLOV 00048000
  51. * 00049000
  52. * FUNCTION - 00050000
  53. * 00051000
  54. * INITIALIZE CONTROL BLOKS AND BUFFERS FOR VIRTUAL PRINTER AND 00052000
  55. * PUNCH OUTPUT SPOOL FILES 00053000
  56. * 00054000
  57. * ATTRIBUTES - 00055000
  58. * 00056000
  59. * REENTRANT, PAGEABLE, CALLED VIA SVC 00057000
  60. * 00058000
  61. * ENTRY POINTS - 00059000
  62. * 00060000
  63. * DMKSPLOV 00061000
  64. * 00062000
  65. * ENTRY CONDITIONS - 00063000
  66. * 00064000
  67. * GPR8 = DISP ADDRESS OF VDEVBLOK FOR VIRTUAL DEVICE 00065000
  68. * GPR12 = BASE ADDRESS OF DMKSPLOV 00066000
  69. * GPR13 = ADDRESS OF STANDARD SAVEAREA 00067000
  70. * 00068000
  71. * EXIT CONDITIONS - 00069000
  72. * 00070000
  73. * SFBLOK AND VSPLCTL WORKAREA ARE CONSTRUCTED, AND CALLER'S 00071000
  74. * REGISTERS MODIFIED AS FOLLOWS - 00072000
  75. * 00073000
  76. * GPR7 = ADDRESS OF NEW SFBLOK 00074000
  77. * GPR9 = ADDRESS OF VSPLCTL WORKAREA 00075000
  78. * 00076000
  79. * CALLS TO OTHER ROUTINES - 00077000
  80. * 00078000
  81. * DMKFREE - TO OBTAIN STORAGE FOR CONTROL BLOKS 00079000
  82. * DMKPTRAN - TO RESERVE A REAL STORAGE PAGE BUFFER 00080000
  83. * DMKPGTVG - TO OBTAIN A VIRTUAL STORAGE BUFFER 00081000
  84. * DMKPGTSG - TO OBTAIN THE ADDRESS OF A DASD PAGE 00082000
  85. * DMKCVTDT - TO OBTAIN THE DATE AND TIME OF THE FILES CREATION 00083000
  86. * 00084000
  87. * EXTERNAL REFERENCES - 00085000
  88. * 00086000
  89. * NONE 00087000
  90. * 00088000
  91. * TABLE / WORKAREAS - 00089000
  92. * 00090000
  93. * NONE 00091000
  94. * 00092000
  95. * REGISTER USAGE - 00093000
  96. * 00094000
  97. * GPR1 = VIRTUAL ADDRESS OF PAGE BUFFER 00095000
  98. * GPR2 = REAL ADDRESS OF PAGE BUFFER 00096000
  99. EJECT 00097000
  100. * GPR6 = SUBROUTINE LINKAGE RETURN 00098000
  101. * GPR7 = ADDRESS OF SFBLOK 00099000
  102. * GPR8 = ADDRESS OF VDEVBLOK 00100000
  103. * GPR9 = ADDRESS OF VSPLCTL WORKAREA 00101000
  104. * GPR12 = DMKSPL MODULE BASE 00102000
  105. * GPR13 = ADDRESS OF SAVEAREA 00103000
  106. * GPR14,15 BALR ROUTINE LINKAGE 00104000
  107. * GPR0 = SCRATCH 00105000
  108. * GPR3,4,5,10,11 NOT USED 00106000
  109. * 00107000
  110. * 00108000
  111. * OPERATION - 00109000
  112. * 00110000
  113. * 1. CALL BUILDCTL SUBROUTINE TO CONSTRUCT SFBLOK AND VSPCTL 00111000
  114. * WORKAREA; IF NO DASD SPACE IS AVAILABLE, EXIT; OTHERWISE, 00112000
  115. * CONTINUE 00113000
  116. * 00114000
  117. * 2, MOVE ORIGINATING USERID INTO SFBLOK; CALL DMKPTRAN VIA 00115000
  118. * TRANS MACRO TO LOCATE AND RESERVE A REAL PAGE BUFFER 00116000
  119. * 00117000
  120. * 3. CLEAR BUFFER LINK FIELD; SET UP LOGICAL RECORD SIZE; 00118000
  121. * CLEAR END OF FIRST DASD BUFFER; 00118100
  122. * MODIFY CALLER'S REGS 7 AND 9 TO POINT TO NEW BLOKS, AND 00119000
  123. * EXIT TO CALLER 00120000
  124. * 00121000
  125. *. 00122000
  126. EJECT 00123000
  127. ID DC CL8'DMKSPL' MODULE NAME 00124000
  128. SPACE 3 00125000
  129. DMKSPLOV RELOC 00126000
  130. SPACE 00127000
  131. USING VDEVBLOK,R8 00128000
  132. USING VSPLCTL,R9 00129000
  133. SPACE 00130000
  134. LA R0,VSPSIZE GET SIZE OF CONTROL BLOK 00131000
  135. BAL R6,BUILDCTL GO BUILD VSPLCTL AND SFBLOK 00132000
  136. AL R8,VMDVSTRT VDEVBLOK ADDRESS @VA01460 00133000
  137. ST R9,VDEVSPL SAVE ADDRESS OF VSPLCTL 00134000
  138. BAL R6,GETID GET SPOOL ID NUMBER 00135000
  139. MVC SFBTYPE,VDEVTYPE MOVE DEVICE TYPE TO SFBBLOK 00136000
  140. CLI VDEVTYPE,TYP3210 CONSOLE DEVICE ? 00137000
  141. BNE SPNOCON NOT CONSOLE CONTINUE @VA11560 00138100
  142. MVI SFBTYPE,TYPPRT FLAG AS CONSOLE PRINTER TYPE @V200930 00139000
  143. TM VDEVSFLG,VDEVHOLD HOLD ON DEVICE @VA11560 00139100
  144. BZ SPNOCON NO-HOLD CONTINUE @VA11560 00139150
  145. OI SFBFLAG,SFBUHOLD SET USER HOLD @VA11560 00139200
  146. SPNOCON EQU * @VA11560 00139250
  147. SPACE 00140000
  148. MVC SFBORIG,VMUSER SET UP ORIGINATING USER 00141000
  149. MVC SFBUSER,VMUSER AND OWNING USER 00142000
  150. ICM R1,15,VMACOUNT GET ACCOUNT BLOK IF ANY @V200930 00143000
  151. BZ SPLCLASS NONE, GET CLASS @V200930 00144000
  152. USING ACCTBLOK,R1 @V200930 00145000
  153. MVC SFBUSER,ACCTUSER SET OWNER USERID @V200930 00146000
  154. DROP R1 @V200930 00147000
  155. SPLCLASS MVC SFBCLAS,VDEVCLAS SET CLASS FROM DEVICE @V200930 00148000
  156. L R1,VSPVPAGE GET LOGICAL BUFFER ADDRESS 00149000
  157. TRANS 2,1,OPT=(DEFER,BRING,SYSTEM) RESERVE A CORE BUFFER 00150000
  158. L R8,SAVER8 VDEVBLOK DISP @VA01460 00151000
  159. AL R8,VMDVSTRT VDEVBLOK ADDRESS @VA01460 00152000
  160. XC SPLINK(SPSIZE),SPLINK CLEAR OUT LINKAGE AREA 00153000
  161. XC SPCHAR(SPENDSIZ),SPCHAR CLEAR OUT END, TOO @V60B9BA 00153100
  162. LA R1,80 GET RECORD SIZE FOR PUNCH 00154000
  163. TM VDEVTYPE,TYPPUN IS IT A PUNCH ?? 00155000
  164. BO STORSIZE YES -- 00156000
  165. LA R1,150 RECORD SIZE FOR 3211 PRINTER 00157000
  166. CLI VDEVTYPE,TYP3211 3211 PRINTER ?? 00158000
  167. BE STORSIZE YES 00159000
  168. LA R1,132 GET RECORD SIZE FOR ALL @V386298 00160000
  169. * OTHER PRINTERS INCLUDING 00160100
  170. * 3203 PRINTER 00160200
  171. STORSIZE STH R1,SFBRECSZ AND SAVE IN SFBLOK 00161000
  172. B OPENXIT EXIT TO CALLER 00162000
  173. SPACE 00163000
  174. DROP R8,R9 00164000
  175. EJECT 00165000
  176. *. 00166000
  177. * 00167000
  178. * SUBROUTINE NAME - 00168000
  179. * 00169000
  180. * DMKSPLOR 00170000
  181. * 00171000
  182. * FUNCTION - 00172000
  183. * 00173000
  184. * INITIALIZE CONTROL BLOKS AND BUFFERS FOR REAL INPUT READER 00174000
  185. * FILES 00175000
  186. * 00176000
  187. * ATTRIBUTES - 00177000
  188. * 00178000
  189. * REENTRANT, PAGEABLE, CALLED VIA SVC 00179000
  190. * 00180000
  191. * ENTRY POINTS - 00181000
  192. * 00182000
  193. * DMKSPLOR 00183000
  194. * 00184000
  195. * ENTRY CONDITIONS - 00185000
  196. * 00186000
  197. * GPR8 = ADDRESS OF RDEVBLOK FOR DEVICE 00187000
  198. * GPR12 = DMKSPLOR BASE ADDRESS 00188000
  199. * GPR13 = ADDRESS OF STANDARD SAVEAREA 00189000
  200. * 00190000
  201. * EXIT CONDITIONS - 00191000
  202. * 00192000
  203. * SFBLOK AND RSPLCTL WORKAREA ARE CONSTRUCTED, AND CALLER'S 00193000
  204. * REGISTERS ARE MODIFIED AS FOLLOWS - 00194000
  205. * 00195000
  206. * GPR7 = ADDRESS OF NEW SFBLOK 00196000
  207. * GPR9 = ADDRESS OF RSPLCTL WORKAREA 00197000
  208. * 00198000
  209. * CALLS TO OTHER ROUTINES - 00199000
  210. * 00200000
  211. * SAME AS DMKSPLOV, ABOVE 00201000
  212. * 00202000
  213. * EXTERNAL REFERENCES - 00203000
  214. * 00204000
  215. * NONE 00205000
  216. * 00206000
  217. * TABLES / WORKAREAS - 00207000
  218. * 00208000
  219. * NONE 00209000
  220. * 00210000
  221. * REGISTER USAGE - 00211000
  222. * 00212000
  223. * SAME AS DMKSPLOV, ABOVE, EXCEPT THAT 00213000
  224. * GPR9 = ADDRESS OF RSPLCTL WORKAREA 00214000
  225. * 00215000
  226. * OPERATION - 00216000
  227. * 00217000
  228. * 1. CALL BUILDCTL SUBROUTINE TO CONSTRUCT SFBLOK AND RSPLCTL 00218000
  229. * WORKAREA; IF NO DASD SPACE IS AVAILABLE, EXIT; OTHERWISE, 00219000
  230. * CONTINUE 00220000
  231. * 00221000
  232. * 00222000
  233. * 2. CALL DMKPTRAN VIA TRANS MACRO TO RESERVE AND LOCK A REAL 00223000
  234. * CORE PAGE BUFFER; CLEAR THE BUFFER LINKAGE FIELD 00224000
  235. * AND CLEAR END OF FIRST DASD BUFFER. 00224100
  236. * 00225000
  237. * 3. SET RECORD SIZE FOR READER FILE, MODIFY CALLER'S REGISTERS 00226000
  238. * TO POINT TO NEW SFBLOK AND VSPCTL, AND EXIT 00227000
  239. * 00228000
  240. *. 00229000
  241. SPACE 3 00230000
  242. DMKSPLOR RELOC 00231000
  243. USING RDEVBLOK,R8 00232000
  244. USING RSPLCTL,R9 00233000
  245. LA R0,RSPSIZE GET SIZE OF RSPLCTL CONTROL BLOK 00234000
  246. BAL R6,BUILDCTL GO CONSTRUCT THE BLOKS 00235000
  247. ST R9,RDEVSPL SAVE ADDRESS OF CONTROL BLOK 00236000
  248. ST R7,RSPSFBLK SAVE ADDRESS OF SFBLOK 00237000
  249. BAL R6,GETID GET SPOOL ID NUMBER 00238000
  250. SPACE 00239000
  251. L R1,RSPVPAGE GET LOGICAL BUFFER ADDRESS 00240000
  252. TRANS 2,1,OPT=(BRING,LOCK,DEFER,SYSTEM) 00241000
  253. ST R2,RSPRPAGE SAVE REAL ADDRESS OF BUFFER 00242000
  254. XC SPLINK(SPSIZE),SPLINK CLEAR OUT THE LINKAGE DATA 00243000
  255. XC SPCHAR(SPENDSIZ),SPCHAR CLEAR END, TOO @V60B9BA 00243100
  256. MVC SPCHAR,BLANKS CLEAR CHAR ARR TBL @V60B9BA 00243200
  257. MVC SPFCB,BLANKS CLEAR FCB @V60B9BA 00243300
  258. MVC SPCMOD,BLANKS CLEAR COPY MODIFICATION @V60B9BA 00243400
  259. MVI SFBRECSZ+1,80 SET RECORD SIZE FOR READER 00244000
  260. SPACE 3 00245000
  261. OPENXIT ICM R1,B'1111',SFBSTART SET CONDIION CODE 00246000
  262. * CC = 0 NO DASD SPACE - CC = NONZERO DASD ADDRESS PRESENT 00247000
  263. ST R7,SAVER7 RETURN ADDRESS OF SFBLOK @VA01460 00248000
  264. ST R9,SAVER9 RETURN ADDRESS OF CONTROL BLOK @VA01460 00249000
  265. EXIT -- AND RETURN TO CALLER 00250000
  266. SPACE 2 00251000
  267. DROP R8,R9 00252000
  268. EJECT 00253000
  269. *. 00254000
  270. * 00255000
  271. * SUBROUTINE NAME - 00256000
  272. * 00257000
  273. * DMKSPLCV 00258000
  274. * 00259000
  275. * FUNCTION - 00260000
  276. * 00261000
  277. * TO CLOSE AND QUEUE FOR PROCESSING A VIRTUAL PRINTER OR PUNCH 00262000
  278. * SPOOL FILE 00263000
  279. * 00264000
  280. * ATTRIBUTES - 00265000
  281. * 00266000
  282. * REENTRANT, PAGEABLE, CALLED VIA SVC 00267000
  283. * 00268000
  284. * ENTRY POINTS - 00269000
  285. * 00270000
  286. * DMKSPLCV 00271000
  287. * 00272000
  288. * ENTRY CONDITIONS - 00273000
  289. * 00274000
  290. * GPR7 = SFBLOK FOR FILE TO BE CLOSED 00275000
  291. * GPR8 = DISP ADDRESS OF VDEVBLOK FOR OUTPUT DEVICE 00276000
  292. * GPR9 = ADDRESS OF VIRTUAL SPOOL CONTROL BLOCK 00277000
  293. * GPR11 = ADDRESS OF VMBLOK FOR USER OUTPUTTING FILE 00278000
  294. * GPR12 = DMKSPLCV BASE ADDRESS 00279000
  295. * GPR13 = ADDRESS OF STANDARD SAVEAREA 00280000
  296. * 00281000
  297. * EXIT CONDITIONS - 00282000
  298. * 00283000
  299. * FILE IS QUEUED FROM PROPER CHAIN FOR EITHER REAL OUTPUT, OR, 00284000
  300. * IF IT IS XFERED, FOR INPUT TO THE XFERED-TO USER 00285000
  301. * 00286000
  302. * CALLS TO OTHER ROUTINES - 00287000
  303. * 00288000
  304. * DMKFREE - TO BUILD DUMMY IOBLOKS IN WHICH TO DELIVER DEVICE 00289000
  305. * END INTERRUPTS TO DMKRSPEX 00290000
  306. * DMKQCNWT - TO SEND MESSAGE TO USERS INFOMING THEM OF FILES 00291000
  307. * THAT HAVE BEEN XFERED 00292000
  308. * DMKSTKIO - TO STACK THE IOBLOK FOR DELIVERY TO DMKRSPEX 00293000
  309. * DMKSCNAU - LOCATE RECEIVER VMBLOK 00294000
  310. * DMKUDRFU - TO SEARCH FOR A USERID 00295000
  311. * DMKUDRRD - TO READ THE USERS ACCOUNT RECORD 00296000
  312. * DMKUDRRV - TO RESET THE DIRECTORY AFTER READING 00297000
  313. * DMKCKSPL - CHECKPOINT THE SFBLOK 00298000
  314. * 00299000
  315. * EXTERNAL REFERENCES - 00300000
  316. * 00301000
  317. * DMKRIODV - START OF REAL DEVICE TABLE - REFERENCED VIA ADCON 00302000
  318. * ARIODV IN PSA 00303000
  319. * DMKVIOMK - TABLE OF HALF-WORD PENDING FLAGS IN VIOEXEC USED 00304000
  320. * TO POST PENDING INTERRUPTS FOR RECEIVERS OF 00305000
  321. * XFERED FILES 00306000
  322. * 00307000
  323. * TABLES / WORKAREAS - 00308000
  324. * 00309000
  325. * DMKRSPID - SYSTEM SPOOLID COUNTER 00310000
  326. * DMKRSPHQ - ANCHOR FOR SYSTEM HOLD QUEUE 00311000
  327. * 00312000
  328. EJECT 00313000
  329. * 00314000
  330. * REGISTER USAGE - 00315000
  331. * 00316000
  332. * GPR0-5 ARE WORK REGISTERS 00317000
  333. * GPR6 = INTERNAL SUBROUTINE LINKAGE AND VCHBLOK ADDRESS 00318000
  334. * GPR7 = ADDRESS OF SFBLOK 00319000
  335. * GPR8 = ADDRESS OF VDEVBLOK 00320000
  336. * GPR9 = ADDRESS OF VSPLCTL 00321000
  337. * GPR10 = ADDRESS OF IOBLOK 00322000
  338. * GPR11 = ADDRESS OF VMBLOK 00323000
  339. * GPR12 = DMKSPL BASE REGISTER 00324000
  340. * GPR13 = ADDRESS OF SAVEAREA 00325000
  341. * GPR14,15 ARE FOR BALR LINKAGE AND SCRATCH 00326000
  342. * 00327000
  343. * OPERATION - 00328000
  344. * 00329000
  345. * 0. MOVE INTO THE FIRST DASD BUFFER, THE TAG, AND ALL FIELDS 00330000
  346. * THAT OCCUR AT THE END OF THE FIRST DASD BUFFER. 00331000
  347. * 00332000
  348. * 1. IF FILE IS XFERED (SPOOLED), CONTINUE; OTHERWISE, 00333000
  349. * GO TO STEP 6. 00334000
  350. * 00335000
  351. * 2. PLACE USERID OF XFERED 'TO USER' IN SFBLOK, 00336000
  352. * AND SEND MESSAGE TO SENDER VERIFYING XFER 00337000
  353. * 00338000
  354. * 3. LOCATE THE VMBLOK FOR THE XFERED-TO USER; IF HE IS NOT 00339000
  355. * LOGGED IN, EXIT; OTHERWISE CONTINUE 00340000
  356. * 00341000
  357. * 4. IF THE XFERED-TO USER IS THE SAME AS THE SENDER, GO TO STEP 00342000
  358. * 5; OTHERWISE, SEND HIM A MESSAGE 00343000
  359. * 00344000
  360. * 5. LOCATE AN AVAILABLE READER DEVICE TO RECIEVE THE XFERED 00345000
  361. * FILE AND POST IT WITH A DEVICE END INTERRUPT; THEN EXIT 00346000
  362. * 00347000
  363. * 6. IF FILE IS TO BE QUEUED FOR REAL OUTPUT, CHAIN THE SFBLOK 00348000
  364. * TO THE PROPER CHAIN, IF FILE IS HELD BY USER OR 00349000
  365. * SYSTEM: EXIT, OTHERWISE TRY TO FIND AN AVAILABLE PRINTER 00350000
  366. * OR PUNCH WITH THE SAME CLASS SPECIFICATIONS AS THE FILE 00351000
  367. * 00352000
  368. * 7. IF NO PRINTER IS FOUND, EXIT; OTHERWISE, CONSTRUCT AN 00353000
  369. * IOBLOK CONTAINING A DEVICE END INTERRUPT AND STACK IT FOR 00354000
  370. * THE APPROPRIATE REAL DEVICE VIA A CALL TO DMKSTKIO; 00355000
  371. * THEN EXIT 00356000
  372. * 00357000
  373. * 00358000
  374. * RESPONSE - 00359000
  375. * 00360000
  376. * CON FOR 00361000
  377. * PUN FILE (SPOOLID) TO (USERID) COPY NN NOHOLD 00362000
  378. * PRT FROM HOLD 00363000
  379. * 00364000
  380. * 00365000
  381. * 00366000
  382. *. 00367000
  383. SPACE 3 00368000
  384. DMKSPLCV RELOC 00369000
  385. USING VDEVBLOK,R8 00370000
  386. AL R8,VMDVSTRT VDEVBLOK ADDRESS @VA01460 00371000
  387. L R6,VDEVEXTN XBLOK ADDRESS @V293598 00372000
  388. SR R5,R5 CLEAR COUNT REG @V293598 00375000
  389. IC R5,VSPXTGLN-VSPXBLOK(R6) SET TAG CHAR COUNT @V293598 00376000
  390. L R0,SFBSTART DASD ADDR OF FIRST PAGE BUFFER @V293598 00379000
  391. L R1,VDEVSPL SPOOL CONTROL BLOK @V293598 00380000
  392. L R1,VSPVPAGE-VSPLCTL(R1) SYS VIRT PAGE ADDR @V293598 00381000
  393. CALL DMKRPAGT,PARM=BRING+SYSTEM READ IN PAGE BUFFER @V293598 00382000
  394. BNZ SKIPALL FORGET SETTING SPLINK FIELDS @V60B9BA 00383000
  395. CLI 16(R2),X'03' HAS A TAG RECORD BEEN INITIALIZED ?@V293598 00384000
  396. BNE SKIPTAG FORGET IT IF NOT @V293598 00385000
  397. TM 20(R2),SKIP IS THERE A DATA FIELD HERE ?? @V293598 00386000
  398. BO SKIPTAG DON'T TRY TO SET TAG IF NOT @V293598 00387000
  399. LTR R5,R5 IS THE TAG LENGTH ZERO @V60B9BA 00387100
  400. BZ SKIPTAG XFER IF SO @V60B9BA 00387200
  401. BCTR R5,0 TAG DATA COUNT -1 @V293598 00388000
  402. EX R5,TAGMOVE MOVE IN THE CURRENT TAG DATA@V293598 00389000
  403. SPACE 00389010
  404. USING VSPXBLOK,R6 ADDRESSIBILITY @V60B9BA 00389020
  405. SKIPTAG MVC SPCHAR,VSPXCHAR CHAR ARR TABLE @V60B9BA 00389030
  406. MVC SPFCB,VSPXFCB FCB VALUE @V60B9BA 00389040
  407. MVC SPCMOD,VSPXCMOD COPY MODIFICATION VALUE @V60B9BA 00389050
  408. MVC SPFLSHC,VSPXFLSH FLASH COUNT @V60B9BA 00389060
  409. TM VSPXFLG1,VSPXCPYF COPY FLAG SET ? @V60B9BA 00389070
  410. BZ *+8 XFER IF NOT @V60B9BA 00389080
  411. OI SPFLAG1,SPCOPYFG SET IT ON DASD BUFFER @V60B9BA 00389090
  412. MVC SFBFLASH,VSPXOVLY SET FLASH NAME IN SFBLOK @V60B9BA 00389100
  413. DROP R6 NO LONGER NEEDED @V60B9BA 00389110
  414. CALL DMKRPAPT,PARM=SYSTEM AND REWRITE THE BUFFER @V293598 00390000
  415. SKIPALL EQU * @V60B9BA 00391000
  416. L R8,SAVER8 GET VDEVBLOK ADDR @V293598 00392000
  417. AL R8,VMDVSTRT . . . @V293598 00393000
  418. MVC SFBCOPY,VDEVCOPY SET COPIES @V200930 00394000
  419. CLI SFBDIST,C' ' IS DIST IN FILE ?? @V200930 00395000
  420. BH SPLTEST YES, SKIP PUTTING IT IN @V200930 00396000
  421. MVC SFBDIST,VMDIST SET USERS DIST CODE @V200930 00397000
  422. ICM R1,15,VMACOUNT GET ACCOUNT BLOK IF ANY @V200930 00398000
  423. BZ SPLTEST NONE, CONT @V200930 00399000
  424. USING ACCTBLOK,R1 @V200930 00400000
  425. MVC SFBDIST,ACCTDIST SET OWNERS DISTCODE @V200930 00401000
  426. DROP R1 @V200930 00402000
  427. SPLTEST TM VDEVSFLG,VDEVFOR+VDEVXFER 'FOR' OR 'TO' USERID @V200930 00403000
  428. BZ SETHOLD NO, CONT @V200930 00404000
  429. TM VDEVSFLG,VDEVXFER SPOOL TO ? @VA09714 00404100
  430. BO SETHOLD IF SO, DON'T CHANGE DISTCODE AND @VA09714 00404200
  431. * NO NEED TO SEARCH DIRECTORY 00404300
  432. LA R0,UDBFSIZE GET DIRECT BUFFER SIZE @V200930 00405000
  433. CALL DMKFREE @V200930 00406000
  434. LR R2,R1 BUFFER ADDRESS @V200930 00407000
  435. USING UDBFBLOK,R2 @V200930 00408000
  436. XC UDBFVADD(8),UDBFVADD CLEAR FOR CALL @V200930 00409000
  437. LA R0,8 USERID SIZE @V200930 00410000
  438. L R6,VDEVEXTN XBLOK ADDRESS @V293598 00411000
  439. * USERID TO SEARCH 00412000
  440. MVC SAVEWRK8(8),VSPXXUSR-VSPXBLOK(R6) @V293598 00413000
  441. LA R1,SAVEWRK8 .. @VA01460 00414000
  442. CALL DMKUDRFU FIND THE USER @V200930 00415000
  443. BZ UDRDIST OK, CHECK THE DIST CODE @V200930 00416000
  444. B NODIST1 DIDNT FIND HIM @V200930 00417000
  445. SPACE 00418000
  446. TAGMOVE MVC 28(0,R2),VSPXTAG-VSPXBLOK(R6) EXECUTED ABOVE @V293598 00419000
  447. SPACE 2 00420000
  448. UNDIST CALL DMKUDRRV RELEASE DIRECTORY @V200930 00421000
  449. NODIST1 LA R0,UDBFSIZE SIZE @V200930 00422000
  450. LR R1,R2 BUFFER @V200930 00423000
  451. CALL DMKFRET RETURN @V200930 00424000
  452. B SETHOLD CONT @V200930 00425000
  453. SPACE 00426000
  454. USING UDIRBLOK,R2 @V200930 00427000
  455. UDRDIST LA R1,UDIRDISP GET DASD DISP @V200930 00428000
  456. CALL DMKUDRMD READ ACCOUNT BLOCK @V407466 00429000
  457. BNZ UNDIST NO GO, GET OUT @V200930 00430000
  458. USING UMACBLOK,R2 @V200930 00431000
  459. MVC SFBDIST,UMACDIST SET FOR USERID DIST @V200930 00432000
  460. B UNDIST RETRUN BUFFER AND CONT @V200930 00433000
  461. DROP R2 @V200930 00434000
  462. SPACE 00435000
  463. SETHOLD NI SFBFLAG,X'FF'-SFBUHOLD NO USER HOLD @V200930 00436000
  464. L R8,SAVER8 VDEVBLOK DISP @VA01460 00437000
  465. AL R8,VMDVSTRT VDEVBLOK ADDRESS @VA01460 00438000
  466. TM SFBFLAG2,SFBHOLD HOLD WITH CLOSE ?? @V200930 00439000
  467. BO UHOLD YES, HOLD FILE @V200930 00440000
  468. TM SFBFLAG2,SFBNOHLD NOHOLD WITH CLOSE ?? @V200930 00441000
  469. BO NOHOLD YES, NOHOLD FILE @V200930 00442000
  470. TM VDEVSFLG,VDEVHOLD HOLD ON DEVICE ?? @V200930 00443000
  471. BZ NOHOLD NO, CONT @V200930 00444000
  472. UHOLD OI SFBFLAG,SFBUHOLD SET USER HOLD @V200930 00445000
  473. NOHOLD NI SFBFLAG2,X'FF'-SFBHOLD-SFBNOHLD-SFBREQUE @V200930 00446000
  474. NI SFBFLAG2,X'FF'-SFBRSTRT @V200930 00447000
  475. LA R0,6 GET STORAGE FOR MSG BUFFER @VA03327 00448000
  476. CALL DMKFREE @VA03327 00449000
  477. LR R2,R1 MSG BUFFER ADDR. IN R2 @VA03327 00450000
  478. ST R2,SAVEWRK2 SAVE ADDR. @VA03327 00451000
  479. USING XFRMSGCT,R2 @VA03327 00452000
  480. MVI XFRMSG1,C' ' BLANK OUT MSG BUFFER @VA03327 00453000
  481. MVC XFRMSG1+1(41),XFRMSG1 @VA03327 00454000
  482. MVC XFRMSGFI,=C'FILE' INITIALIZE MESSAGE @VA03327 00455000
  483. MVC XFRMSGID,=C'0000' @VA03327 00456000
  484. MVC XFRMSGCP,=C'COPY' @VA03327 00457000
  485. L R15,ARSPPR GET PRINTER CHAIN @VA03327 00458000
  486. L R5,ARIOPR GET PRINTER SPOOL LIST @VA03327 00459000
  487. MVC XFRMSG1,=C'PRT' ASSUME PRINTER @V200930 00460000
  488. TM VDEVTYPE,TYPPRT IS IT A PRINTER ?? @V200930 00461000
  489. BO TSTXFR YES, TEST FOR XFER @V200930 00462000
  490. MVC XFRMSG1,=C'CON' ASSUME CONSOLE @V200930 00463000
  491. CLI VDEVTYPE,TYP1052 IS IT A CONSOLE ?? @V200930 00464000
  492. BE TSTXFR YES, TSET FOR XFER @V200930 00465000
  493. L R15,ARSPPU GET PUNCH CHAIN @V200930 00466000
  494. L R5,ARIOPU GET PUNCH SPOOL LIST @V200930 00467000
  495. MVC XFRMSG1,=C'PUN' PUNCH DEVICE @V200930 00468000
  496. TSTXFR TM VDEVSFLG,VDEVXFER+VDEVFOR TO OR FOR USERID ?? @V200930 00469000
  497. BZ CHAINIT NO, SCHEDULE FOR REAL OUTPUT @V200930 00470000
  498. L R6,VDEVEXTN XBLOK ADDRESS @V293598 00471000
  499. MVC SFBUSER,VSPXXUSR-VSPXBLOK(R6) SET NEW OWNER ID @V293598 00472000
  500. TM VDEVSFLG,VDEVXFER TO USERID ?? @V200930 00473000
  501. BZ CHAINIT NO, CHAIN TO CORRECT LIST @V200930 00474000
  502. L R15,ARSPRD GET READER CHAIN @V200930 00475000
  503. B CHAINIT GO CHAIN THIS SPOOL FILE @V200930 00476000
  504. SPACE 00477000
  505. MSGRECVR BAL R6,GETUSER GO LOCATE VMBLOK OF RECEIVING USER 00478000
  506. BNZ FRETMSG2 USER NOT CURRENTLY LOGGED IN @VA03327 00479000
  507. CR R1,R11 XFERED TO SELF ?? 00480000
  508. BE FRETMSG1 YES -- NO MESSAGE @VA03327 00481000
  509. SWTCHVM OPT=STAY SWITCH VMBLOK LOCKING & CHARGING @V407511 00482100
  510. TM VMMLEVEL,VMMSGON RECEIVING MESSAGES ?? 00485000
  511. BZ FRETMSG1 NO -- GO FRET MSG BUFFER @VA03327 00486000
  512. L R2,SAVEWRK2 MAKE SURE R2 POINTS TO MSG. @VA03327 00487000
  513. MVC XFRMSG3,SFBORIG MOVE IN ID OF FILE SENDER 00488000
  514. MVC XFRMSG2(5),=C'FROM ' 00489000
  515. LA R0,XFRMSG1L LENGTH 00490000
  516. LR R1,R2 MSG BUFFER ADDR. IN R1 @VA03327 00491000
  517. L R2,=A(NOTRESP) INDICATE A NON-COMMAND MSG @V60C2B8 00492100
  518. CALL DMKQCNWT,PARM=NORET(,R2) WRITE MSG @V60C2B8 00492200
  519. FRETMSG1 LA R6,SETPEND RETURN TO MAINLINE ADDR. @VA03327 00493000
  520. B FRETMSG DO FRET @VA03327 00494000
  521. FRETMSG2 LA R6,CLEXIT RETURN TO MAINLINE ADDR. @VA03327 00495000
  522. FRETMSG L R1,SAVEWRK2 MAKE SURE WE HAVE MSG ADDR. @VA03327 00496000
  523. LA R0,6 MSG BUFFER SIZE (DBLWRDS) @VA03327 00497000
  524. CALL DMKFRET @VA03327 00498000
  525. BR R6 RETURN TO PROPER MAINLINE CODE @VA03327 00499000
  526. EJECT 00500000
  527. CHAINIT ST R15,SAVEWRK1 SAVE THE ANCHOR FOR LATER @V304298 00501000
  528. LA R2,RDRCHN ASSUME IT GOES ON RDR CHAIN @V304298 00502000
  529. C R15,ARSPRD DOES IT ? @V304298 00503000
  530. BE CHAINIT2 XFER IF SO @V304298 00504000
  531. LA R2,PCHCHN ASSUME IT GOES ON PUNCH CHAIN @V304298 00505000
  532. C R15,ARSPPU DOES IT ? @V304298 00506000
  533. BE CHAINIT2 XFER IF SO @V304298 00507000
  534. LA R2,PRTCHN THEN IT GOES ON PRINT CHAIN @V304298 00508000
  535. CHAINIT2 CLI VDEVTYPE,TYP1052 CLOSING A CONSOLE FILE ? @VM02132 00509000
  536. BNE CHAINIT3 NO, THEN THIS IS AN ADD @VM02132 00510000
  537. LA R2,CHGSFB(,R2) YES, THEN THIS IS A CHANGE @VM02132 00511000
  538. B CHAINIT4 CHECKPOINT IT ........ @VM02132 00512000
  539. CHAINIT3 LA R2,ADDSFB(,R2) SET FLAG TO ADD SFBLOK @VM02132 00513000
  540. CHAINIT4 SL R8,VMDVSTRT VDEVBLOK DISPLACEMENT @VM02132 00514000
  541. CALL DMKCKSPL PERFORM CHECKPOINT @VM02132 00515000
  542. AL R8,VMDVSTRT VDEVBLOK DISPLACEMENT @V304298 00516000
  543. L R15,SAVEWRK1 RESTORE THE ANCHOR @V304298 00517000
  544. BAL R6,SFBCHAIN GO CHAIN THE BLOCK @V304298 00518000
  545. USING VSPLCTL,R9 @VA01375 00519000
  546. XC VSPSFBLK(4),VSPSFBLK CLEAR SFBLOK POINTER @VA01375 00520000
  547. DROP R9 @VA01375 00521000
  548. SPACE 00522000
  549. LH R1,SFBCOPY GET NUMBER OF COPIES 00523000
  550. CALL DMKCVTBD CONVERT COPY NUMBER 00524000
  551. L R2,SAVEWRK2 RESTORE R2 WITH MSG BUFFER ADDR.@VA03327 00525000
  552. STCM R1,3,XFRCOPY SAVE COPIES @V200930 00526000
  553. LH R1,SFBFILID GET AND CONVERT SPOOLID 00527000
  554. CALL DMKCVTBD .. 00528000
  555. STCM R1,15,XFRMSGID MOVE SPOOLID INTO MSG 00529000
  556. MVC XFRHOLD,=C'NOHOLD' ASSUME NOHOLD @V200930 00530000
  557. TM SFBFLAG,SFBUHOLD ANY USER HOLD ?? @V200930 00531000
  558. BZ *+10 NO, CONT @V200930 00532000
  559. MVC XFRHOLD(2),BLANKS FLAG HOLD @V200930 00533000
  560. MVC XFRMSG3,VMUSER ASSUME NO TO OR FOR USERID @V200930 00534000
  561. LA R6,SPLCONT SET CONT ADDRESS @V200930 00535000
  562. MVC XFRMSG2,=C' FOR ' ASSUME FOR USERID @V200930 00536000
  563. TM VDEVSFLG,VDEVXFER+VDEVFOR TO OR FOR USERID ?? @V200930 00537000
  564. BZ TSTCPY NO, TEST FOR MORE THAN 1 COPY @V200930 00538000
  565. MVC XFRMSG3,SFBUSER SET TO USERID @V200930 00539000
  566. TM VDEVSFLG,VDEVXFER IS IT TO USERID ?? @V200930 00540000
  567. BZ TSTMSG NO, TEST FOR MESSAGE @V200930 00541000
  568. MVC XFRMSG2,=C' TO ' SET TO @V200930 00542000
  569. LA R6,MSGRECVR SET CONT ADDRESS @V200930 00543000
  570. TSTMSG TM VMMLEVEL,VMMSGON RECIEVING MESSAGES ?? @V200930 00544000
  571. BCR 8,R6 NO, CONTINUE @V200930 00545000
  572. TM VDEVFLAG,VDEVCSPL CONSOLE SPOOLED ? @VA04213 00545250
  573. BNO *+8 NO...NO DELAY @VA04213 00545500
  574. OI VDEVFLAG,VDEVDLY DELAY MSG INTO SPOOL FILE @VA04213 00545750
  575. LA R0,XFRMSG1L GET SIZE @V200930 00546000
  576. LR R1,R2 MSG BUFFER ADDR. IN R1 @VA03327 00547000
  577. DROP R2 @VA03327 00548000
  578. CALL DMKQCNWT,PARM=NORET OUTPUT MESSAGE @V200930 00549000
  579. L R8,SAVER8 VDEVBLOK DISP @VA01460 00550000
  580. AL R8,VMDVSTRT VDEVBLOK ADDRESS @VA01460 00551000
  581. BR R6 CONTINUE @V200930 00552000
  582. TSTCPY LH R1,SFBCOPY GET COPIES @V200930 00553000
  583. C R1,F1 MORE THAN 1 ?? @V200930 00554000
  584. BE TSTHLD NO, TEST FOR HOLD @V200930 00555000
  585. B TSTMSG TES AND SEND MESSAGE @V200930 00556000
  586. TSTHLD TM SFBFLAG,SFBUHOLD USER HOLD ON FILE ?? @V200930 00557000
  587. BO TSTMSG YES, TEST AND SEND MESSAGE @V200930 00558000
  588. SPLCONT DS 0H @V200930 00559000
  589. BAL R6,FRETMSG GO FRET MSG BUFFER @VA03327 00560000
  590. SPACE 00561000
  591. USING SHQBLOK,R2 00562000
  592. SPACE 00563000
  593. SR R1,R1 GET DEVICE 00564000
  594. IC R1,SFBTYPE TYPE 00565000
  595. L R14,=A(DMKRSPHQ) ADDRESS OF SPOOL HOLD QUEUE 00566000
  596. * POINTER 00567000
  597. NEXTSHQ L R2,0(R14) LOAD ADDRESS OF THE FIRST BLOK 00568000
  598. LTR R2,R2 POINTER ZERO ?? 00569000
  599. BZ TSTHOLD YES -THE LIST IS EMPTY OR NO HOLD 00570000
  600. * BLOK FOR THIS USER. GO CHECK SYSTEM 00571000
  601. SPACE 00572000
  602. CLC SHQUSER(8),SFBUSER IS THIS HOLD Q BLOK FOR THIS USER ?? 00573000
  603. BE SHQEQUAL YES 00574000
  604. LR R14,R2 SAVE CURRENT BLOK ADDRESS 00575000
  605. B NEXTSHQ GO CHECK NEXT BLOK 00576000
  606. SPACE 00577000
  607. SHQEQUAL EX R1,USERSYS IS USER 'SYS HOLD' FLAG ON ?? 00578000
  608. BZ *+8 NO-- CHECK ANY HOLD 00579000
  609. OI SFBFLAG,SFBSHOLD SET SYS HOLD IN SFBLOK 00580000
  610. * FILE BEING HELD BY USER REQUEST 00581000
  611. TSTHOLD TM SFBFLAG,SFBUHOLD+SFBSHOLD IS FILE BEING HELD BY 00582000
  612. * USER AND/OR CLASS D USER ?? 00583000
  613. BNZ CLOSEXIT YES - NO DEVICE END TO DEVICE 00584000
  614. SPACE 00585000
  615. * TRY TO FIND AN AVAILABLE OUTPUT DEVICE 00586000
  616. ICM R0,B'1111',0(R5) GET DEVICE COUNT (PRINTERS OR 00587000
  617. * PUNCHES) 00588000
  618. BZ CLOSEXIT NO AVAILABLE DEVICE -- 00589000
  619. NEXTRDEV SWITCH ENSURE WE ARE ON THE MAIN PROC @V407511 00590100
  620. LA R5,4(,R5) POINT TO NEXT LIST ENTRY @V407511 00590600
  621. LH R6,0(,R5) GET RDEVTABLE INDEX 00591000
  622. SLL R6,3(0) CONVERT TO BYTE INDEX @V200820 00592000
  623. A R6,ARIODV POINT TO REAL DEVICE BLOK 00593000
  624. USING RDEVBLOK,R6 TEMPORARY ADDRESSABILITY 00594000
  625. L R1,RDEVSPL IS THE DEVICE BUSY WITH A FILE 00595000
  626. LTR R1,R1 ??? 00596000
  627. BNZ RDEVCNT YES -- 00597000
  628. TM RDEVSTAT,RDEVDISA+RDEVDED IS THE DEVICE AVAILABLE ?? 00598000
  629. BNZ RDEVCNT NO -- 00599000
  630. TM RDEVFLAG,RDEVDRAN+RDEVACNT IS THE DEVCIE AVAILABLE ?? 00600000
  631. BNZ RDEVCNT NO -- 00601000
  632. SPACE 00602000
  633. GETCLASS L R3,RDEVCLAS GET THE DEVICES CLASSES 00603000
  634. SPACE 00604000
  635. CLASTEST SLDL R2,8 ISOLATE THE NEXT CLASS 00605000
  636. EX R2,CLICLASS DO THE CLASSES MATCH ?? 00606000
  637. BE RDVFOUND YES -- 00607000
  638. EX R2,CLIANY TEST FOR ANY CLASS @V200930 00608000
  639. BE RDVFOUND YES, FOUND A DEVICE @V200930 00609000
  640. LTR R3,R3 ANY MORE CLASSES TO TEST ?? 00610000
  641. BNZ CLASTEST YES -- 00611000
  642. SPACE 00612000
  643. RDEVCNT BCT R0,NEXTRDEV GO LOOK AT NEXT DEVICE ON LIST 00613000
  644. B CLOSEXIT NO AVAILABLE DEVICE -- 00614000
  645. SPACE 00615000
  646. CLICLASS CLI SFBCLAS,0 COMPARE CLASS 00616000
  647. CLIANY CLI =C'*',0 EXECUTED FOR ANY CLASS @V200930 00617000
  648. SPACE 00618000
  649. RDVFOUND LA R0,IOBSIZE GET CORE FOR 00619000
  650. CALL DMKFREE AN IOBLOK 00620000
  651. LR R10,R1 ADDRESSABILITY IN GPR10 00621000
  652. XC IOBLOK(IOBSIZE*8),IOBLOK CLEAR IT OUT 00622000
  653. ST R10,IOBLINK IOBLOK POINTS TO ITSELF (= ORIGINAL COPY) 00623000
  654. MVI IOBCSW+4,DE FAKE A DEVIC END 00624000
  655. L R1,ASYSVM LOAD ADDR NEW VMBLOK @V407511 00625100
  656. SWTCHVM OPT=UNLOCK SWITCH VMBLOK LOCKING & CHARGING @V407511 00625600
  657. ST R11,IOBUSER STORE ADDRESS OF SYSTEM 00628000
  658. MVC IOBRADD,2(R5) FOR THE RIGHT DEVICE 00629000
  659. MVC IOBIRA,=V(DMKRSPEX) SEND THE 00630000
  660. CALL DMKSTKIO IOBLOK TO DMKRSPEX 00631000
  661. SPACE 00632000
  662. B CLOSEXIT AND LEAVE 00633000
  663. SPACE 00634000
  664. * 00635000
  665. * TYPPUN EQU TO PUNCH 00636000
  666. * TYPPRT EQU TO PRINTER 00637000
  667. * 00638000
  668. USERSYS TM SHQSHOLD,X'00' TEST FOR SYSTEM HOLD 00639000
  669. * SHQBLOK 00640000
  670. SPACE 00641000
  671. DROP R2 00642000
  672. DROP R8 00643000
  673. DROP R6 @VM01016 00644000
  674. EJECT 00645000
  675. *. 00646000
  676. * 00647000
  677. * SUBROUTINE NAME - 00648000
  678. * 00649000
  679. * DMKSPLCR 00650000
  680. * 00651000
  681. * FUNCTION - 00652000
  682. * 00653000
  683. * TO CLOSE AND QUEUE FOR VIRTUAL INPUT A REAL READER SPOOL 00654000
  684. * FILE 00655000
  685. * 00656000
  686. * ATTRIBUTES - 00657000
  687. * 00658000
  688. * REENTRANT, PAGEABLE, CALLED VIA SVC 00659000
  689. * 00660000
  690. * ENTRY POINTS - 00661000
  691. * 00662000
  692. * DMKSPLCR 00663000
  693. * 00664000
  694. * ENTRY CONDITIONS - 00665000
  695. * 00666000
  696. * GPR7 = ADDRESS OF SFBLOK FOR FILE THAT IS TO BE CLOSED 00667000
  697. * GPR8 = ADDRESS OF RDEVBLOK FOR REAL READER FILE 00668000
  698. * GPR9 = ADDRESS OF REAL SPOOL CONTROL BLOCK 00669000
  699. * GPR12 = BASE REGISTER FOR DMKSPLCR 00670000
  700. * GPR13 = ADDRESS OF STANDARD SAVEAREA 00671000
  701. * 00672000
  702. * EXIT CONDITIONS - 00673000
  703. * 00674000
  704. * THE SFBLOK IS QUEUED FROM THE READERS CHAIN, AND IF THE 00675000
  705. * FILES OWNER IS CURRENTLY LOGGED ON TO THE SYSTEM HIS CARD 00676000
  706. * READER IS POSTED WITH A DEVICE END 00677000
  707. * 00678000
  708. * CALLS TO OTHER ROUTINES - 00679000
  709. * 00680000
  710. * SAME AS DMKSPLCV ABOVE. 00681000
  711. * 00682000
  712. * EXTERNAL REFERENCES - 00683000
  713. * 00684000
  714. * DMKVIOMK 00685000
  715. * 00686000
  716. * TABLES /WORKAREAS - 00687000
  717. * 00688000
  718. * NONE 00689000
  719. * 00690000
  720. * REGISTER USAGE - 00691000
  721. * 00692000
  722. * GPR8 = ADDRESS OF RDEVBLOK FOR REAL READER, AND ADDRESS OF 00693000
  723. * VDEVBLOK FOR VIRTUAL READER IF THE FILE'S OWNER IS 00694000
  724. * LOGGED ON TO THE SYSTEM 00695000
  725. * FOR THE REMAINDER OF THE REGISTERS, USAGE IS THE SAME AS IN 00696000
  726. * DMKSPLCV DESCRIBED ABOVE 00697000
  727. EJECT 00698000
  728. * 00699000
  729. * OPERATION - 00700000
  730. * 00701000
  731. * 1. CHAIN THE SFBLOK TO THE READERS CHAIN, ESTABLISHING THE 00702000
  732. * PROPER FILE ID 00703000
  733. * 00704000
  734. * 2. LOCATE THE VMBLOK FOR THE FILES OWNER; IF HE IS NOT LOGGED 00705000
  735. * ON AT THIS TIME, EXIT; OTHERWISE, CONTINUE 00706000
  736. * 00707000
  737. * 3. LOCATE AND AVAILABLE READER, CONSTRUCT AN 00708000
  738. * IOBLOK CONTAINING A DEVICE END INTERRUPT AND 00709000
  739. * STACK IT FOR THE APPROPRIATE VIRTUAL DEVICE VIA CALL 00710000
  740. * TO DMKSTKIO. 00711000
  741. * 00712000
  742. * RESPONSE - 00713000
  743. * 00714000
  744. * RDR FILE (SPOOLID) HAS BEEN READ 00715000
  745. * 00716000
  746. *. 00717000
  747. SPACE 3 00718000
  748. DMKSPLCR RELOC 00719000
  749. L R15,ARSPRD POINT TO READER FILE CHAIN 00720000
  750. BAL R6,SFBCHAIN AND CHAIN THE BLOK 00721000
  751. MVI SFBTYPE,TYPRDR SET DEVICE TYPE @VA07699 00721500
  752. CALL DMKCKSPL,PARM=ADDSFB+RDRCHN CHECKPOINT @V304298 00722000
  753. USING RSPLCTL,R9 @VA01375 00723000
  754. XC RSPSFBLK(4),RSPSFBLK CLEAR SFBLOK POINTER @VA01375 00724000
  755. DROP R9 @VA01375 00725000
  756. BAL R6,GETUSER SEE IF DESTINATION USER IS ON THE 00727000
  757. * SYSTEM 00728000
  758. BNZ CLEXIT NOT LOGGED ON NOW - 00729000
  759. SWTCHVM OPT=STAY SWITCH VMBLOK LOCKING & CHARGING @V407511 00730100
  760. TM VMMLEVEL,VMMSGON IS THE USER RECEIVING ?? 00733000
  761. BZ SETPEND NO - 00734000
  762. LA R0,4 SIZE OF MSG BUFFER @VA03327 00735000
  763. CALL DMKFREE @VA03327 00736000
  764. LR R2,R1 MSG BUFFER ADDR. IN R2 @VA03327 00737000
  765. ST R2,SAVEWRK2 SAVE IT @VA03327 00738000
  766. LH R1,SFBFILID GET AND CONVERT SPOOLID 00739000
  767. CALL DMKCVTBD 00740000
  768. L R2,SAVEWRK2 MAKE SURE R2 IS CORRECT @VA03327 00741000
  769. USING RDRMSGCT,R2 @VA03327 00742000
  770. MVI RDRMSG,C' ' BLANK OUT MSG BUFFER @VA03327 00743000
  771. MVC RDRMSG+1(26),RDRMSG @VA03327 00744000
  772. MVC RDRMSG,=C'RDR FILE' INITIALIZE MESSAGE @VA03327 00745000
  773. MVC RDRMSGE,=C'HAS BEEN READ' @VA03327 00746000
  774. STCM R1,15,RDRMSGF SET SPOOLID @V200930 00747000
  775. LA R0,RDRMSGL SET SIZE @V200930 00748000
  776. LR R1,R2 MSG BUFFER ADDR. IN R2 @VA03327 00749000
  777. DROP R2 @VA03327 00750000
  778. L R2,=A(NOTRESP) INDICATE A NON-COMMAND MSG @V60C2B8 00751100
  779. CALL DMKQCNWT,PARM=NORET(,R2) WRITE MSG @V60C2B8 00751200
  780. L R1,SAVEWRK2 ADDR. TO BE FRETTED @VA03327 00752000
  781. LA R0,4 SIZE IN R0 @VA03327 00753000
  782. CALL DMKFRET @VA03327 00754000
  783. SPACE 3 00755000
  784. SETPEND EQU * HERE TO POST PENDIN INTERRUPT @VM01016 00756000
  785. SPACE 00757000
  786. USING VCHBLOK,R6 @VM01016 00758000
  787. USING VCUBLOK,R9 @VM01016 00759000
  788. USING VDEVBLOK,R8 @VM01016 00760000
  789. SPACE 00761000
  790. SR R1,R1 CLEAR CHANNEL TABLE INDEX @VM01016 00762000
  791. LA R4,2 GET GENERAL INDEX INCREMENT @VM01016 00763000
  792. LA R5,30 GET GENERAL COMPARAND FOR BXLE @VM01016 00764000
  793. SPACE 00765000
  794. NEXTCH LH R6,VMCHTBL(R1) GET INDEX TO NEXT VIRTUAL CHANNEL@VM01016 00766000
  795. LTR R6,R6 IS THERE ONE AT THIS ADDRESS @VM01016 00767000
  796. BM CHINDEX NO -- @VM01016 00768000
  797. A R6,VMCHSTRT POINT TO VCHBLOK @VM01016 00769000
  798. SR R2,R2 CLEAR CU TABLE INDEX @VM01016 00770000
  799. NEXTCU LH R9,VCHCUTBL(R2) GET INDEX TO VIRTUAL CU BLOK @VM01016 00771000
  800. LTR R9,R9 IS THERE ONE AT THIS ADDRESS ? @VM01016 00772000
  801. BM CUINDEX NO -- @VM01016 00773000
  802. A R9,VMCUSTRT POINT TO VCUBLOK @VM01016 00774000
  803. SR R3,R3 CLEAR DEVICE BLOK TABLE INDEX @VM01016 00775000
  804. NEXTDEV LH R8,VCUDVTBL(R3) GET INDEX TO DEVICE BLOK @VM01016 00776000
  805. LTR R8,R8 IS THERE ONE AT THIS ADDRESS @VM01016 00777000
  806. BM DEVINDEX NO -- @VM01016 00778000
  807. A R8,VMDVSTRT POINT TO DEVICE BLOK @VM01016 00779000
  808. SPACE 00780000
  809. CLI VDEVTYPC,CLASURI INPUT DEVICE @VM01016 00781000
  810. BNE DEVINDEX NO - @VM01016 00782000
  811. TM VDEVTYPE,TYPRDR IS IT THE RIGHT TYPE ?? @VM01016 00783000
  812. BZ DEVINDEX NO -- @VM01016 00784000
  813. TM VDEVSTAT,X'FF' ANY STATUS PENDING ?? @VM01016 00785000
  814. BNZ DEVINDEX YES, CHECK NEXT DEVICE @VM01016 00786000
  815. CLI VDEVCLAS,C'*' ALL CLASS READER ? @VM01016 00787000
  816. BE TSTBUSY YES, TEST FOR ACTIVE DEVICE @VM01016 00788000
  817. CLC VDEVCLAS(1),SFBCLAS FILE CLASS SAME AS DEVICE ? @VM01016 00789000
  818. BNE DEVINDEX NO - @VM01016 00790000
  819. TSTBUSY ICM R14,B'1111',VDEVSPL IS THE DEVICE BUSY ?? @VM01016 00791000
  820. BZ RDRPEND NO -- FINALLY FOUND A DEVICE @VM01016 00792000
  821. SPACE 00793000
  822. DEVINDEX BXLE R3,R4,NEXTDEV INDEX TO NEXT DEVICE ON CONTROL @VM01016 00794000
  823. * UNIT 00795000
  824. CUINDEX BXLE R2,R4,NEXTCU INDEX TO NEXT CONTROL UNIT ON @VM01016 00796000
  825. * CHANNEL 00797000
  826. CHINDEX BXLE R1,R4,NEXTCH INDEX TO NEXT CHANNEL ON MACHINE @VM01016 00798000
  827. B CLOSEXIT NO DEVICE FOUND @VM01016 00799000
  828. SPACE 00800000
  829. RDRPEND EQU * HERE TO QUEUE DEVICE END @VM01016 00801000
  830. LA R0,IOBSIZE @VM01016 00802000
  831. CALL DMKFREE @VM01016 00803000
  832. LR R10,R1 ADDRESS OF IOBLOK @VM01016 00804000
  833. XC IOBLOK(IOBSIZE*8),IOBLOK CLEAR BLOK @VM01016 00805000
  834. ST R10,IOBLINK INDICATE ORIGINAL COPY @VM01016 00806000
  835. MVI IOBCSW+4,DE FAKE DEVICE END CSW @VM01016 00807000
  836. ST R11,IOBUSER MOVE USER ADDRESS OF VMBLOK @VM01016 00808000
  837. MVC IOBIRA,=A(DMKVIOIN) RETURN ADDRESS @VM01016 00809000
  838. LH R5,VDEVADD GET FULL ADDRESS OF DEVICE @VM01016 00810000
  839. LH R4,VCUADD .. @VM01016 00811000
  840. OR R5,R4 .. @VM01016 00812000
  841. AH R5,VCHADD .. @VM01016 00813000
  842. STH R5,IOBVADD PUT ADDRESS IN IOBLOK @VM01016 00814000
  843. OI VDEVSTAT,VDEVPEND SET PENDING FLAG @VM01016 00815000
  844. OI IOBSPEC,IOBUNSL INDICATE UNSOLICITED INTERRUPT 00815050
  845. MVC VDEVCSW(8),IOBCSW MOVE IN DEVICE END CSW @VM01016 00816000
  846. CALL DMKSTKIO GO STACK IO @VM01016 00817000
  847. SPACE 3 00818000
  848. DROP R6 @VM01016 00819000
  849. DROP R8 @VM01016 00820000
  850. DROP R9 @VM01016 00821000
  851. DROP R10 @VM01016 00822000
  852. CLOSEXIT EQU * @VM01016 00823000
  853. L R1,SAVER11 LOAD ADDR NEW VMBLOK @V407511 00824100
  854. SWTCHVM OPT=STAY SWITCH VMBLOK LOCKING & CHARGING @V407511 00824600
  855. CLEXIT EXIT 00827000
  856. EJECT 00828000
  857. BUILDCTL EQU * HERE TO BUILD SPOOLING CONTROL BLOKS 00829000
  858. CALL DMKFREE GET CORE FOR SPOOLING CONTROL 00830000
  859. LR R9,R1 SAVE IT 00831000
  860. LR R1,R0 GET LENGTH OF BLOK IN DOUBLE WORDS 00832000
  861. SLL R1,3 GET LENGTH IN BYTES 00833000
  862. BCTR R1,0 LESS ONE FOR EXECUTE 00834000
  863. EX R1,CLEAR CLEAR THE BLOK TO ZERO 00835000
  864. LA R0,SFBSIZE GET CORE FOR A SPOOL FILE BLOK 00836000
  865. CALL DMKFREE 00837000
  866. LR R7,R1 SAVE IT 00838000
  867. XC SFBLOK(SFBSIZE*8),SFBLOK CLEAR IT OUT 00839000
  868. CALL DMKPGTVG OBTAIN A LOGICAL BUFFER 00840000
  869. ST R1,RSPVPAGE-RSPLCTL(,R9) SAVE ITS ADDRESS 00841000
  870. CALL DMKPGTSG GET A DASD BUFFER 00842000
  871. ST R1,SFBSTART SAVE DASD PAGE ADDRESS 00843000
  872. ST R1,SFBLAST IN SFBLOK 00844000
  873. ST R1,RSPDPAGE-RSPLCTL(,R9) AND IN CONTROL BLOK 00845000
  874. LA R1,1(R0) SET R1 = 1 @VA06262 00845250
  875. STH R1,SFBCOPY INIT. COPY CNT TO 1 @VA06262 00845500
  876. STC R1,SFBSTCPY STARTING COPY NUMBER IS ALSO 1 @V60B9BA 00845600
  877. LA R1,SFBDATE SET UP DATE 00846000
  878. LA R2,SFBTIME AND TIME 00847000
  879. MVI SFBFNAME,C' ' CLEAR NAME AND TYPE 00848000
  880. MVC SFBFNAME+1(23),SFBFNAME 00849000
  881. CALL DMKCVTDT FILL THEM IN 00850000
  882. LTR R6,R6 SET CONDITION CODE (NON-ZERO) 00851000
  883. BR R6 AND RETURN TO CALLER 00852000
  884. SPACE 3 00853000
  885. CLEAR XC 0(*-*,R9),0(R9) EXECUTED TO CLEAR OUT THE BLOK 00854000
  886. EJECT 00855000
  887. SFBCHAIN EQU * HERE TO CHAIN COMPLETED SFBLOK 00856000
  888. SR R2,R2 CLEAR FORWARD POINTER @VA01375 00857000
  889. ST R2,SFBPNT .. @VA01375 00858000
  890. SFBLOOP L R14,0(,R15) POINT TO NEXT SFBLOK IN CHAIN 00859000
  891. LTR R14,R14 AT END OF CHAIN YET ?? 00860000
  892. BZ SFBDONE YES -- 00861000
  893. LR R15,R14 SAVE POINTER 00862000
  894. B SFBLOOP AND KEEP LOOKING FOR END OF CHAIN 00863000
  895. SFBDONE ST R7,SFBPNT-SFBLOK(,R15) CHAIN NEW BLOK TO END OF CHAIN 00864000
  896. BR R6 RETURN TO CALLER 00865000
  897. SPACE 00866000
  898. GETID L R14,=A(DMKRSPID) ADDRESS OF UNIQUE SPOOLID 00867000
  899. LH R1,0(R14) NEXT AVAILABLE SPOOLID 00868000
  900. STH R1,SFBFILID SAVE IN SFBLOK 00869000
  901. LA R1,1(R1) UPDATE BY ONE 00870000
  902. CH R1,=H'9900' HAS THE ID REACHED MAX 9900 00871000
  903. BNH *+8 NO- @VA06444 00872000
  904. LA R1,1 YES - START AT ONE 00873000
  905. STH R1,0(R14) STORE NEXT SPOOLID BACK IN RSPID 00874000
  906. BR R6 00875000
  907. SPACE 3 00876000
  908. GETUSER EQU * HERE TO LOCATE 'SFBUSER' 00877000
  909. LA R1,SFBUSER POINT TO USERID FIELD 00878000
  910. LA R0,8 GET LENGTH 00879000
  911. CALL DMKSCNAU AND GO FIND VMBLOK 00880000
  912. BR R6 RETURN TO CALLER 00881000
  913. SPACE 3 00882000
  914. EJECT 00882100
  915. *. 00882110
  916. * 00882120
  917. * SUBROUTINE NAME - 00882130
  918. * 00882140
  919. * DMKSPLSP 00882150
  920. * 00882160
  921. * FUNCTION - 00882170
  922. * 00882180
  923. * LOCATE THE USERS VMBLOK, LOCATE A VIRTUAL READER 00882190
  924. * AND SET DEVICE END PENDING AND EXIT VIA CLOSEXIT 00882200
  925. * 00882210
  926. * ATTRIBUTES - 00882220
  927. * 00882230
  928. * REENTRANT, PAGEABLE, CALLED VIA SVC 00882240
  929. * 00882250
  930. * ENTRY POINTS - 00882260
  931. * 00882270
  932. * DMKSPLSP 00882280
  933. * 00882290
  934. * ENTRY CONDITIONS - 00882300
  935. * 00882310
  936. * GPR7 = ADDRESS OF SFBLOK 00882320
  937. * 00882330
  938. * EXIT CONDITIONS - 00882340
  939. * 00882350
  940. * NONE 00882360
  941. * 00882370
  942. * CALLS TO OTHER ROUTINES - 00882380
  943. * 00882390
  944. * DMKSCNAU - TO LOCATE THE USERS VMBLOK 00882400
  945. * 00882410
  946. * EXTERNAL REFERENCES - 00882420
  947. * 00882430
  948. * NONE 00882440
  949. * 00882450
  950. * TABLES/WORKAREAS 00882460
  951. * 00882470
  952. * NONE 00882480
  953. * 00882490
  954. * REGISTER USAGE - 00882500
  955. * 00882510
  956. * GPR0 = PARAMETER FOR DMKSCNAU 00882520
  957. * GPR1 = USER ID FOR DMKSCNAU 00882530
  958. * GPR7 = ADDRESS OF SFBLOK 00882540
  959. * 00882550
  960. * OPERATION - 00882560
  961. * 00882570
  962. * CALL DMKSCNAU TO LOCATE USERS VMBLOK AND GO TO 00882580
  963. * SETPEND TO LOCATE A VIRTUAL READER AND SET VIRTUAL 00882590
  964. * DEVICE END PENDING. EXIT IS FROM CLOSEXIT. 00882600
  965. * 00882610
  966. *. 00882620
  967. EJECT 00882630
  968. DMKSPLSP RELOC @VA07887 00882640
  969. * R7 = ADDRESS OF SFBLOK 00882650
  970. LA R1,SFBUSER USER ID @VA07887 00882660
  971. LA R0,8 LENGTH @VA07887 00882670
  972. CALL DMKSCNAU LOCATE VMBLOK @VA07887 00882680
  973. BNZ CLEXIT EXIT..NOT LOGGED ON @VA07887 00882690
  974. SWTCHVM OPT=STAY @VA07887 00882700
  975. B SETPEND LOCATE READER AND SET PENDING @VA07887 00882710
  976. * AND EXIT VIA CLOSEXIT 00882720
  977. EJECT 00883000
  978. *. 00884000
  979. * 00885000
  980. * SUBROUTINE NAME - 00886000
  981. * 00887000
  982. * DMKSPLDL 00888000
  983. * 00889000
  984. * FUNCTION - 00890000
  985. * 00891000
  986. * TO DELETE USED FILES FROM THE SYSTEM AND TO 00892000
  987. * DE-ALLOCATE THE DASD PAGE SPACE. 00893000
  988. * 00894000
  989. * ATTRIBUTES - 00895000
  990. * 00896000
  991. * REENTRANT, PAGEABLE, CALLED VIA SVC 00897000
  992. * 00898000
  993. * ENTRY POINTS - 00899000
  994. SPACE 00900000
  995. * DMKSPLDL - ENTRY POINT TO STACK A SFBLOK 00901000
  996. * DMKSPLDR - ENTRY POINT TO DELETE SPOOL FILE BUFFERS 00902000
  997. * (FROM CPEXBLOK SET UP BY DMKSPLDL) 00903000
  998. * 00904000
  999. * ENTRY CONDITIONS - 00905000
  1000. * 00906000
  1001. * GPR7 = ADDRESS OF SFBLOK FOR FILE TO BE DELETED 00907000
  1002. * GPR11 = ADDRESS OF USER VMBLOK BASE ADDRESS 00908000
  1003. * GPR12 = ENTRY POINT ADDRESS 00909000
  1004. * GPR13 = ADDRESS OF STANDARD SAVEAREA 00910000
  1005. * 00911000
  1006. * EXIT CONDITIONS - 00912000
  1007. * 00913000
  1008. * NONE 00914000
  1009. * 00915000
  1010. * CALLS TO OTHER ROUTINE - 00916000
  1011. * 00917000
  1012. * DMKFREE - TO ABTAIN STORAGE FOR WORKAREA 00918000
  1013. * DMKFRET - TO RETURN STORAGE FOR WORKAREA AND BLOKS 00919000
  1014. * DMKIOSQR - TO READ LINKAGE INFORMATION 00920000
  1015. * DMKPGTSR - TO RELEASE SPOOL DASD BUFFER 00921000
  1016. * DMKSTKCP - TO STACK CPEXBLOK 00922000
  1017. * DMKPTRLK - TO LOCK PROGRAM MODULE IN STORAGE 00923000
  1018. * DMKPGTSD - TO DE-ALLOCATE BUFFER PAGE 00924000
  1019. * DMKDRDDD - TO DELETE ACTUAL FILE 00925000
  1020. * DMKPTRUL - TO UNLOCK PROGRAM MODULE FROM STORAGE 00926000
  1021. * DMKCKSPL - CHECKPOINT THE SFBLOK 00927000
  1022. * 00928000
  1023. * DMKDSPCH - GO TO DISPATCHER 00929000
  1024. * EXTERNAL REFERENCES - 00930000
  1025. * 00931000
  1026. * DMKRSPDL - ANCHOR FOR SPOOL DELETE CHAIN 00932000
  1027. * DMKCPEND - HIGH ADDRESS OF RESIDENT NUCLEUS 00933000
  1028. * DMKSYSOW - ADDRESS OF SYSTEM OWNED LIST 00934000
  1029. * 00935000
  1030. * TABLES / WORKAREAS - 00936000
  1031. * 00937000
  1032. * 00938000
  1033. EJECT 00939000
  1034. * 00940000
  1035. * REGISTER USAGE - 00941000
  1036. * 00942000
  1037. * GPR7 = SFBLOK BASE 00943000
  1038. * GPR8 = ADDRESS OF OWNDLIST 00944000
  1039. * GPR10 = ADDRESS OF IOBLOK 00945000
  1040. * GPR11 = ADDRESS OF VMBLOK 00946000
  1041. * GPR12 = BASE ADDRESS 00947000
  1042. * GPR13 = ADDRESS OF STANDARD SAVEAREA 00948000
  1043. * 00949000
  1044. * OPERATION - 00950000
  1045. * 00951000
  1046. * 1. CHAIN THE SFBLOK TO THE DELETE CHAIN (DMKRSPDL). 00952000
  1047. * IF DELETE ROUTINE (DMKSPLDR) IS RUNNING: EXIT. 00953000
  1048. * 2. GET STORAGE AND BUILD AN CPEXBLOK WITH AN ENTRY 00954000
  1049. * POINT ADDRESS OF DMKSPLDR. CALL DMKSTKCP TO STACK 00955000
  1050. * THE BLOK TO BE DISPATCHED. 00956000
  1051. * 3. CALL DMKPTRLK TO LOCK THE MODULE IN STORAGE AND EXIT. 00957000
  1052. * 4. DMKSPLDR - LOCATE THE SFBLOK ON DELETE FILE CHAIN 00958000
  1053. * (DMKRSPDL), IF NONE: RESET DELETE RUNNING SWITCH, 00959000
  1054. * UNLOCK PAGE AND EXIT. 00960000
  1055. * 5. IF SFBLOK IS A DUMPFILE: CALL DMKDRDDD TO DELETE THE 00961000
  1056. * DASD PAGES AND ON RETURN GO TO STEP9. 00962000
  1057. * 6. IF SFBLOK ALLOCATION CHAIN IS COMPETE (SFBRECER=0) 00963000
  1058. * AND VALID DUMMY ALLOCATION CHAIN, CALL DMKPGTSR TO 00964000
  1059. * DE-ALLOCATE THE FILE, ON RETURN GO TO STEP9. 00965000
  1060. * 7. IF ALLOCATION CHAIN INCOMPLETE (SFBRECER=1) OR 00966000
  1061. * ALLOCATION CHAIN ADDRESS = ZERO, BUILD AN IOBLOK 00967000
  1062. * TO READ AND PASS DMKPGTSD THE FIRST 00968000
  1063. * 8 BYTES OF EACH BUFFER. WHEN THE LAST BUFFER IS 00969000
  1064. * FINISHED GO TO STEP 9. 00970000
  1065. * 8. IF AN IO ERROR ACCURS WHILE READING BUFFER INFORMATION, 00971000
  1066. * RESET THE POINTER TO READ THE LAST BUFFER FIRST AND 00972000
  1067. * FOLLOW THE CHAIN BACKWARD TO THE ERROR. WHEN THE 00973000
  1068. * ERROR IS REACHED GOING BACKWARD, GO TO STEP 9. 00974000
  1069. * 9. CALL DMKFRET TO FRET THE SFBLOK AND GO TO STEP3. 00975000
  1070. * 00976000
  1071. *. 00977000
  1072. EJECT 00978000
  1073. USING RECBLOK,R1 00979000
  1074. USING SFBLOK,R7 00980000
  1075. USING OWNDLIST,R8 00981000
  1076. USING IOBLOK,R10 00982000
  1077. SPACE 3 00983000
  1078. DMKSPLDL RELOC 00984000
  1079. CHARGE SWITCH,ASYSVM START CHARGING SYSTEM @V407511 00985100
  1080. SPACE 00988000
  1081. L R3,=A(DMKRSPDL) ADDRESS OF DELETE CHAIN ANCHOR 00989000
  1082. LTR R7,R7 SPFBLOK ADDRESS PRESENT ??? 00990000
  1083. BZ TSTCHAIN NO -- CHECK FOR FILES IN CHAIN @V304298 00991000
  1084. L R4,0(R3) ADDRESS OF FIRST SFBLOK @V304298 00992000
  1085. ST R7,0(R3) CHAIN NEW BLOK FIRST AND 00993000
  1086. ST R4,0(R7) CHAIN OLD BLOKS LAST 00994000
  1087. TSTCHAIN ICM R1,B'1111',0(R3) ANY FILES IN DELETE CHAIN ?? @V304298 00995000
  1088. BZ DLEXIT NO -- LEAVE 00996000
  1089. TM DELSW,X'80' DELETE ROUTINE RUNNING ?? 00997000
  1090. BO DLEXIT YES -- 00998000
  1091. SPACE 00999000
  1092. USING CPEXBLOK,R1 01000000
  1093. LA R0,CPEXSIZE LENGTH OF BLOK 01001000
  1094. CALL DMKFREE 01002000
  1095. XC CPEXBLOK(CPEXSIZE*8),CPEXBLOK CLEAR BLOK 01003000
  1096. SPACE 01004000
  1097. LA R15,DMKSPLDR ADDRESS OF DELETE ROUTINE 01005000
  1098. ST R15,CPEXADD SET ENTRY POINT IN CPEXBLOK 01006000
  1099. STM R0,R15,CPEXREGS SAVE ALL REGS 01007000
  1100. OI DELSW,X'80' INDICATE DELETE ROUTINE RUNNING 01008000
  1101. SPACE 01009000
  1102. CALL DMKSTKCP HAVE CP STACK BLOK 01010000
  1103. L R15,APAGCP GET END OF RESIDENT NUCLEUS @VA11259 01011100
  1104. CR R12,R15 IS THIS MODULE PAGEABLE ? @VA11259 01011200
  1105. BL DLEXIT YES...DON'T ISSUE CALL TO LOCK @VA11259 01011300
  1106. * PAGE 01011400
  1107. SPACE 01018000
  1108. LR R2,R12 LOCK PAGE 01019000
  1109. CALL DMKPTRLK FOR DMKSPLDR ROUTINE 01020000
  1110. DLEXIT DS 0H @V407511 01021100
  1111. CHARGE SWITCH,SAVER11 START CHARGING USER @V407511 01021600
  1112. EXIT 01024000
  1113. EJECT 01025000
  1114. SPACE 3 01026000
  1115. ****************************************** 01027000
  1116. * 01028000
  1117. * THIS ROUTINE WHEN STARTED BY THE CPEXBLOK WILL DELETE 01029000
  1118. * ALL SFBLOKS ON THE DMKRSPDL CHAIN AND EXIT TO DISPATCH 01030000
  1119. * 01031000
  1120. ****************************************** 01032000
  1121. SPACE 01033000
  1122. ENTRY DMKSPLDR 01034000
  1123. DMKSPLDR EQU * 01035000
  1124. SPACE 01036000
  1125. LA R0,DELSIZE SIZE OF IOBLOK 01037000
  1126. CALL DMKFREE GET STORAGE FOR IOBLOK 01038000
  1127. LR R10,R1 BASE FOR IOBLOK 01039000
  1128. NEXTSFB XC IOBLOK(DELSIZE*8),IOBLOK CLEAR BLOK 01040000
  1129. SPACE 01041000
  1130. * LOCATE THE FIRST SFBLOK IN CHAIN AND START PROCESSING 01042000
  1131. * 01043000
  1132. L R4,=A(DMKRSPDL) ADDRESS OF DELETE CHAIN ANCHOR 01044000
  1133. L R7,0(R4) 01045000
  1134. LTR R7,R7 CHAIN ENPTY ?? 01046000
  1135. BZ DREXIT YES - LEAVE 01047000
  1136. MVC 0(4,R4),0(R7) REMOVE THIS SFBLOK FROM THE CHAIN 01048000
  1137. ST R7,IOBMISC2 SAVE ADDRESS OF SFBLOK IN IOBLOK 01049000
  1138. TM SFBFLAG2,SFBPURGE IS THIS A PURGE OF AN OPEN @VA11439 01049200
  1139. * SPOOL FILE? 01049400
  1140. BO NOCKPT YES THEN IT HASNT BEEN CHECK @VA11439 01049600
  1141. * POINTED 01049800
  1142. CALL DMKCKSPL,PARM=DELSFB CHECKPOINT @V304298 01050000
  1143. NOCKPT DS 0H @VA11439 01050500
  1144. L R1,SFBRECS GET ADDRESS OF ALLOCATION CHAIN 01051000
  1145. TM SFBFLAG,SFBDUMP SYSTEM DUMP OR VMDUMP? @V67CAH7 01052000
  1146. BNO NOTDUMP NO...CONTINUE PROCESSING @V67CAH7 01052200
  1147. * NOW TEST IF IT IS VMDUMP...IF SO CONTINUE NORMAL PROCESSING 01052400
  1148. CLI SFBMISC1+1,C'V' IS THIS DUMP FILE A VMDUMP? @V67CAH7 01052600
  1149. BNE DUMPFILE NO...IT'S A CP DUMP, BRANCH @V67CAH7 01052800
  1150. * YES...DELETE AS NORMAL FILE 01053000
  1151. NOTDUMP DS 0H @V67CAH7 01053200
  1152. TM SFBFLAG2,SFBPURGE PROCESSING OPEN SPOOL FILE ? 01054000
  1153. BO DELOPEN YES -- DELETE OPEN FILE 01055000
  1154. TM SFBFLAG,SFBRECER ALLOCATION CHAIN IN-COMPLETE ?? 01056000
  1155. BO BADCHAIN YES -- 01057000
  1156. SPACE 01058000
  1157. LTR R1,R1 IS SFBRECS PRESENT ?? 01059000
  1158. BZ DELSTART NO -- GO DO IT THE HARD WAY 01060000
  1159. SPACE 01061000
  1160. CALL DMKPGTSR GPR1 HAS ADDRESS OF RECBLOK CHAIN 01062000
  1161. B FRETSFB GO FRET SFBLOK 01063000
  1162. SPACE 3 01064000
  1163. BADCHAIN EQU * HERE TO DELETE THE CURRENT SFBRECS CHAIN 01065000
  1164. USING RECBLOK,R1 01066000
  1165. LTR R1,R1 IS RECBLOK ADDRESS PRESENT ?? 01067000
  1166. BZ DELRESET NO - GO GET LINKABE INFORMATION 01068000
  1167. L R2,RECPNT GET ADDRESS OF NEXT RECBLOK 01069000
  1168. LA R0,RECSIZE SIZE OF RECBLOK 01070000
  1169. CALL DMKFRET RETURN STORAGE 01071000
  1170. LR R1,R2 SET UP FOR NEXT RECBLOK 01072000
  1171. ST R1,SFBRECS UPDATE ADDRESS IN SFBLOK 01073000
  1172. B BADCHAIN CONT WITH CHAIN TILL END 01074000
  1173. SPACE 3 01075000
  1174. SPACE 01076000
  1175. DELOPEN EQU * HERE FOR OPEN SPOOL FILE 01077000
  1176. TM SFBFLAG2,SFBMON IS IT A MONITOR FILE @V50A2B5 01077050
  1177. BNO LABXX NO @V50A2B5 01077100
  1178. LA R5,DELSWAP PREPARE TO RELEASE PAGES @V50A2B5 01077150
  1179. CLC SFBSTART(4),SFBLAST ONE OR TWO BUFFERS? @V50A2B5 01077200
  1180. BE MONONE ONLY ONE @V50A2B5 01077250
  1181. MVC DELSWAP+4(4),SFBSTART DELETE FIRST @V50A2B5 01077300
  1182. CALL DMKPGTSD DELETE ROUTINE @V50A2B5 01077350
  1183. MONONE MVC DELSWAP+4(4),SFBLAST DELETE THE OTHER @V50A2B5 01077400
  1184. CALL DMKPGTSD DELETE ROUTINE @V50A2B5 01077450
  1185. B FRETSFB NOW GIVE UP THE SDB @V50A2B5 01077500
  1186. LABXX EQU * @V50A2B5 01077550
  1187. CLC SFBSTART(4),SFBLAST ONE PAGE FILE ? 01078000
  1188. BNE LASTBUFF NO, BRANCH @VA03437 01079000
  1189. TM SFBFLAG2,SFBFIRST IS IT FIRST? @VA03437 01080000
  1190. BZ DELSTART NO, THEN BRANCH @VA03437 01081000
  1191. LASTBUFF OI DELSW,X'10' INDICATE 1 BUFFER BEYOND LAST @VA03437 01082000
  1192. MVC SFBRECNO,SFBSTART SAVE START FOR LATER @VA08481 01082500
  1193. B DELSTART .. 01083000
  1194. SPACE 2 01084000
  1195. DELRESET EQU * HERE TO FIND FIRST BUFFER OF FILE 01085000
  1196. TM SFBFLAG2,SFBMON IS THIS A MONITOR SPOOL FILE @VA08245 01085500
  1197. BO DELSTART @VA08245 01085600
  1198. CLI SFBTYPE,TYPRDR REAL RDR FILE @VA11232 01085700
  1199. BE TRYLAST YES, SPRMISC MAY NOT = START CCPD@VA11232 01085725
  1200. L R0,SFBSTART IS STARTING CCPD = ZERO ? @VA11232 01085750
  1201. LTR R0,R0 ZERO @VA11232 01085775
  1202. BZ TRYLAST INVALID SFBSTART - TRY SFBLAST @VA11232 01085800
  1203. USING SPLINK,R2 ADDRESSABILITY @VA11232 01085825
  1204. CALL DMKPGTVG GET A VIRTUAL BUFFER @VA11232 01085850
  1205. LTR R1,R1 DID WE GET A BUFFER ? @VA11232 01085875
  1206. BZ TRYLAST NO, MUST START BY READING SFBLAST@VA11232 01085900
  1207. TRANS 2,1,OPT=(BRING,DEFER,LOCK,SYSTEM),IOER=RELVIRT @VA11232 01085925
  1208. CALL DMKRPAGT,PARM=(BRING+SYSTEM) BRING IN START CCPD@VA11232 01085950
  1209. BNZ RELBUFF BUFFER READ ERROR @VA11232 01085975
  1210. L R3,SPRMISC START CCPD SAVED IN SPRMISC? @VA11232 01086000
  1211. SLR R0,R0 ... @VA11232 01086025
  1212. CALL DMKRPAGT,PARM=SYSTEM RELEASE STORAGE PAGE @VA11232 01086050
  1213. CALL DMKPGTVR RELEASE VIRTUAL BUFFER @VA11232 01086075
  1214. LTR R3,R3 SPRMISC CONTAIN START CCPD ? @VA11232 01086100
  1215. BZ TRYLAST NO, MUST USE SFBLAST @VA11232 01086125
  1216. ST R3,SFBSTART BE SAFE AND USE SPRMISC @VA11232 01086150
  1217. B DELSTART CONTINUE TO DEALLOCATE CCPDS @VA11232 01086175
  1218. DROP R2 @VA11232 01086200
  1219. SPACE 01086225
  1220. RELBUFF SLR R0,R0 ... @VA11232 01086250
  1221. CALL DMKRPAGT,PARM=SYSTEM RELEASE STORAGE PAGE @VA11232 01086275
  1222. RELVIRT CALL DMKPGTVR RELEASE VIRTUAL BUFFER @VA11232 01086300
  1223. SPACE 01086325
  1224. TRYLAST MVC SFBSTART,SFBLAST POINT TO LAST BUFFER OF FILE @VA11232 01086350
  1225. OI DELSW,X'20' INDICATE READING LAST BUFFER 01087000
  1226. SPACE 2 01088000
  1227. DELSTART EQU * HERE TO BEGIN DELETING THE FILE 01089000
  1228. CLC SFBLAST(4),ZEROES CCPD PRESENT ?? @VA01460 01090000
  1229. BE FRETSFB NO - JUST FRET SFBLOK @VA01460 01091000
  1230. LA R1,DELIRA GET ADDRESS OF IRA 01092000
  1231. ST R1,IOBIRA AND SAVE IN IOBLOK 01093000
  1232. LA R1,DELSEEK ADDRESS OF START OF CHANNEL PROGRAM 01094000
  1233. ST R1,IOBCAW SAVE IN IOBLOK 01095000
  1234. ST R11,IOBUSER SYSTEM AS OWNER OF TASK 01096000
  1235. XC DELADDR,DELADDR AND THE RECORD ADDRESS 01097000
  1236. LM R2,R7,SEEK GET MODEL CCWS (SEEK,SEARCH AND TIC) 01098000
  1237. AR R2,R10 POINT DATA ADDRESS IN SEEK TO DATA 01099000
  1238. AR R4,R10 ADJUST DATA ADDRESS IN SEARCH 01100000
  1239. AR R6,R10 ADJUST DATA ADDRESS IN TIC 01101000
  1240. STM R2,R7,DELSEEK STORE CHANNEL PROGRAM IN IOBLOK 01102000
  1241. * EXTENSION 01103000
  1242. L R7,IOBMISC2 RESTORE ADDRESS OF SFBLOK 01104000
  1243. SPACE 01105000
  1244. LA R1,SFBSTART SET DATA ADDRESS FOR READ 01106000
  1245. LM R2,R3,READ AND MODEL CCW 01107000
  1246. AR R2,R1 ADJUST DATA ADDRESS IN CCW 01108000
  1247. STM R2,R3,DELREAD AND STORE IN CHANNEL PROGRAM 01109000
  1248. DELPAGET L R1,SFBSTART GET DASD ADDRESS OF NEXT BUFFER 01110000
  1249. DELPAGE ST R1,DELSWAP+4 AND SAVE IN DUMMY SWAPTABLE ENTRY 01111000
  1250. C R1,F0 CCPD ZEROES ?? @VA01460 01112000
  1251. BE FRETSFB YES - JUST FRET SFBLOK @VA01460 01113000
  1252. ST R1,SFBDIST SAVE CURRENT CCPD ADDRESS 01114000
  1253. LTR R1,R1 VALID DASD CCPD ADDRESS ? 01115000
  1254. BZ FRETSFB NO -- FRET SFBLOK 01116000
  1255. STCM R1,2,DELREC STORE RECORD NUMBER 01117000
  1256. STCM R1,12,DELCYL STORE CYLINDER NUMBER 01118000
  1257. STCM R1,B'1100',IOBCYL STORE CYLINDER FOR ORDER SEEKING 01119000
  1258. LA R8,X'FF' MASK TO GET DEVICE CODE NUMBER 01120000
  1259. NR R8,R1 GET DEVICE CODE IN GPR8 01121000
  1260. L R3,=A(DMKSYSOC) DEVICE INDEX GREATER @VM08815 01122000
  1261. CL R8,0(R3) THAN SYSOWN COUNT ? @VM08815 01123000
  1262. BNL FRETSFB YES -- BUFFER ERROR @VM08815 01124000
  1263. SLL R8,3 TIMES 8 01125000
  1264. A R8,=A(DMKSYSOW) POINT TO CORRECT OWNED LIST ENTRY 01126000
  1265. LH R8,OWNDRDEV-OWNDLIST(,R8) 01127000
  1266. SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 01128000
  1267. A R8,ARIODV POINT TO RDEVBLOK 01129000
  1268. USING RDEVBLOK,R8 01130000
  1269. LA R3,X'FF' MASK TO GET PAGE NUMBER 01131000
  1270. SRL R1,8 PUT PAGE IN LOW ORDER BYTE 01132000
  1271. NR R3,R1 PUT PAGE NUMBER IN GPR3 01133000
  1272. SR R2,R2 CLEAR FOR DIVIDE 01134000
  1273. LTR R3,R3 PAGE NUMBER EQUAL ZERO ?? 01135000
  1274. BZ FRETSFB YES -- FRET SFBLOK AND GET NEXT 01136000
  1275. BCTR R3,0 PAGE NUMBER -1 01137000
  1276. CLI RDEVTYPE,TYP2314 PAGING 2314 ?? 01138000
  1277. BE SP2314 YES - 01139000
  1278. CLI RDEVTYPE,TYP3340 3340 TYPE ? @V2A2029 01140000
  1279. BE SP3340 YES - GO @V2A2029 01141000
  1280. CLI RDEVTYPE,TYP3350 PAGING 3350 ? @V304498 01142000
  1281. BE SP3350 YES - @V304498 01143000
  1282. CLI RDEVTYPE,TYP3375 Paging 3375 ? HRC106DK 01143100
  1283. BE SP3375 Yes - HRC106DK 01143200
  1284. CLI RDEVTYPE,TYP3380 Paging 3380 ? HRC106DK 01143300
  1285. BE SP3380 Yes - HRC106DK 01143400
  1286. * CONVERT PAGE NUMBER TO HEAD NUMBER FOR 3330 AND 2305 01144000
  1287. D R2,F3 DIVIDE BY 3 01145000
  1288. B STOREHD GO STORE HEAD 01146000
  1289. SP3375 EQU * Convert page to head(3375) HRC106DK 01146100
  1290. D R2,F8 Divide by 8 pages/track HRC106DK 01146200
  1291. B STOREHD Go store head HRC106DK 01146300
  1292. SP3380 EQU * Convert page to head(3380) HRC106DK 01146400
  1293. D R2,F10 Divide by 10 pages/track HRC106DK 01146500
  1294. B STOREHD Go store head HRC106DK 01146600
  1295. SP3350 EQU * CONVERT PAGE TO HEAD(3350) @V304498 01147000
  1296. D R2,F4 DIVIDE BY 4 PAGES/TRACK @V304498 01148000
  1297. B STOREHD GO STORE HEAD @V304498 01149000
  1298. SP3340 TM RDEVFTR,FTR70MB 70MB DATA MODULE MOUNTED ? @V2A2029 01150000
  1299. BZ *+8 NO -- MUST BE 35MB @V2A2029 01151000
  1300. NI IOBCYL+1,X'FE' QUEUE ON LOWEST LOGICAL CYL @V2A2029 01152000
  1301. D R2,F2 DIVIDE BY 2 PAGE PER TRACK @V2A2029 01153000
  1302. B STOREHD GO STORE HEAD @V2A2029 01154000
  1303. SP2314 EQU * HERE TO CONVERT PAGE TO HEAD (2314) 01155000
  1304. IC R3,HDTABLE(R3) GET HEAD NUMBER FROM TABLE 01156000
  1305. STOREHD STC R3,DELHEAD+1 STORE HEAD NUMBER 01157000
  1306. MVI IOBFLAG,IOBCP CLEAR AND SET IOBFLAG 01158000
  1307. MVI IOBSTAT,0 CLEAR IOB STATUS 01159000
  1308. CALL DMKIOSQR READ LINKAGE INFO FOR NEXT PAGE 01160000
  1309. GOTO DMKDSPCH WAIT FOR IO TO COMPLETE 01161000
  1310. SPACE 2 01162000
  1311. DELIRA EQU * HERE WHEN LINKAGE DATA FROM BUFFER HAS BEEN READ IN 01163000
  1312. USING *,R12 TEMPORARY ADDRESSABILITY 01164000
  1313. S R12,=A(DELIRA-DMKSPL) RESTORE BASE ADDRESS 01165000
  1314. USING DMKSPL,R12 01166000
  1315. L R7,IOBMISC2 RESTORE BASE ADDRESS OF SFBLOK 01167000
  1316. TM IOBSTAT,IOBFATAL IO ERROR READING DATA IN ?? 01168000
  1317. BO DELBACK YES -- START DELETING FROM THE BACK 01169000
  1318. TM DELSW,X'20' FIRST PAGE BUFFER FOUND ?? 01170000
  1319. BZ DELCONT YES -- 01171000
  1320. NI DELSW,X'FF'-X'20' RESET FIRST BUFFER SEARCH FLAG 01172000
  1321. B DELPAGET START DELETING BUFFERS 01173000
  1322. DELCONT LA R5,DELSWAP PAGERELS 01174000
  1323. * CALL DMKPGTSD RELEASE THE BUFFER 01175000
  1324. L R15,=A(DMKPGTSD) 01176000
  1325. BALR R14,R15 01177000
  1326. CLC SFBLAST,SFBDIST WAS THAT THE LAST BUFFER ?? 01178000
  1327. BNE DELPAGET NO -- GO GET NEXT BUFFER 01179000
  1328. TM SFBFLAG2,SFBPURGE PROCESSING OPEN SPOOL FILE ? 01180000
  1329. BZ FRETSFB NO -- 01181000
  1330. TM DELSW,X'10' ONE BUFFER FILE ??? 01182000
  1331. BZ FRETSFB YES -- 01183000
  1332. NI DELSW,X'FF'-X'10' RESET FLAG 01184000
  1333. L R5,SFBSTART GET CCPD @VA05909 01185100
  1334. C R5,F0 IS IT ZERO ?? @VA05909 01185200
  1335. BE FRETSFB YES, DONE WITH THIS SFBLOK CHAIN @VA05909 01185300
  1336. C R5,SFBRECNO CHECK START IF PSEUDO CLOSE @VA08481 01185320
  1337. BE FRETSFB IF YES,ALL DONE,NO EXTRA PAGE @VA08481 01185370
  1338. ST R5,DELSWAP+4 NO, ONE MORE TIME AROUND @VA05909 01185400
  1339. B DELCONT GO DELETE BUFFER 01186000
  1340. SPACE 2 01187000
  1341. DELBACK EQU * HERE IF AN IOERROR OCCURS WHILE READING A BUFFER 01188000
  1342. TM SFBFLAG2,SFBPURGE PROCESSING OPEN SPOOL FILE ? 01189000
  1343. BO FRETSFB YES -- CAN'T BACK UP 01190000
  1344. TM DELSW,X'40' ALREADY BACKING UP THE FILE ?? 01191000
  1345. BO FRETSFB YES - 01192000
  1346. OI DELSW,X'40' INDICATE BACKING UP 01193000
  1347. SPACE 01194000
  1348. L R1,DELREAD GET DATA ADDRESS OF READ 01195000
  1349. S R1,=F'4' AND POINT TO START OF SFBLOK 01196000
  1350. ST R1,DELREAD THE READ WILL NOW CAUSE THE BACK 01197000
  1351. * CHAIN LINK TO BE READ INTO SFBSTART 01198000
  1352. L R1,SFBLAST MAKE THE LAST BUFFER ADDRESS 01199000
  1353. ST R1,SFBSTART NOW THE FIRST BUFFER ADDRESS 01200000
  1354. MVC SFBLAST(4),SFBDIST AND MAKE CURRENT ERROR BUFFER LAST 01201000
  1355. B DELPAGE CONTINUE FROM THE REAR 01202000
  1356. SPACE 3 01203000
  1357. SPACE 3 01204000
  1358. DUMPFILE EQU * HERE TO DELETE A DUMP FILE - 01205000
  1359. * A CALL IS MADE TO DMKDRD TO DELETE THE ACTUAL FILE 01206000
  1360. CALL DMKDRDDD 01207000
  1361. SPACE 2 01208000
  1362. FRETSFB EQU * HERE TO DELETE SFBLOK 01209000
  1363. LR R1,R7 ADDRESS OF SFBLOK 01210000
  1364. LA R0,SFBSIZE GET SIZE OF SFBLOK 01211000
  1365. CALL DMKFRET FRET BLOK 01212000
  1366. NI DELSW,X'9F' RESET BACKING AND FIRST BUFFER FLAGS 01213000
  1367. B NEXTSFB GO GET AND PROCESS THE NEXT SFBLOK 01214000
  1368. * ON THE DELETE CHAIN 01215000
  1369. SPACE 2 01216000
  1370. DREXIT EQU * HERE TO FRET IOBLOK AND EXIT TO DISPATCHER 01217000
  1371. LA R0,DELSIZE LENGTH AND 01218000
  1372. LR R1,R10 ADDRESS OF IOBLOK 01219000
  1373. CALL DMKFRET 01220000
  1374. SPACE 01221000
  1375. MVI DELSW,X'00' INDICATE DELETE ROUTINE FINISHED 01222000
  1376. L R15,APAGCP GET END OF RESIDENT NUCLEUS @VA11259 01223100
  1377. CR R12,R15 IS MODULE RESIDENT ? @VA11259 01223200
  1378. BL DRDSP YES...DON'T UNLOCK IT @VA11259 01223300
  1379. LR R2,R12 UNLOCK PAGE 01230000
  1380. CALL DMKPTRUL .. 01231000
  1381. DRDSP EQU * HERE TO EXIT TO DISPATCHER 01232000
  1382. GOTO DMKDSPCH EXIT 01233000
  1383. SPACE 3 01234000
  1384. PRINT DATA 01235000
  1385. HDTABLE DS 0H TABLE OF HEAD NUMBER FOR 2314 PAGES 01236000
  1386. DC AL1(00,00,01,01,02,03,03,04) 01237000
  1387. DC AL1(05,05,06,06,07,08,08,09) 01238000
  1388. DC AL1(10,10,11,11,12,13,13,14) 01239000
  1389. DC AL1(15,15,16,16,17,18,18,19) 01240000
  1390. PRINT NODATA 01241000
  1391. SPACE 3 01242000
  1392. SEEK CCW 7,DELADDR-IOBLOK,CC,6 MODEL SEEK CCW 01243000
  1393. SEARCH CCW 49,DELCYL-IOBLOK,CC,5 MODEL SEARCH CCW 01244000
  1394. TIC CCW 8,DELSERCH-IOBLOK,0,0 MODEL TIC CCW 01245000
  1395. READ CCW 6,*-*,SILI,12 MODEL READ CCW @VA11232 01246000
  1396. SPACE 2 01247000
  1397. DELSW DC X'00' SWITCH FOR DELETE ROUTINE 01248000
  1398. LTORG 01249000
  1399. EJECT 01250000
  1400. XFRMSGCT DSECT @VA03327 01251000
  1401. XFRMSG1 DS CL3 @VA03327 01252000
  1402. DS C @VA03327 01253000
  1403. XFRMSGFI DS CL4 @VA03327 01254000
  1404. DS C @VA03327 01255000
  1405. XFRMSGID DS CL4 @VA03327 01256000
  1406. DS C @VA03327 01257000
  1407. XFRMSG2 DS CL5 @VA03327 01258000
  1408. XFRMSG3 DS CL8 @VA03327 01259000
  1409. DS C @VA03327 01260000
  1410. XFRMSGCP DS CL4 @VA03327 01261000
  1411. DS C @VA03327 01262000
  1412. XFRCOPY DS CL3 @VA03327 01263000
  1413. XFRHOLD DS CL6 @VA03327 01264000
  1414. XFRMSG1L EQU *-XFRMSG1 @VA03327 01265000
  1415. SPACE 2 01266000
  1416. RDRMSGCT DSECT @VA03327 01267000
  1417. RDRMSG DS CL8 @VA03327 01268000
  1418. DS C @VA03327 01269000
  1419. RDRMSGF DS CL4 @VA03327 01270000
  1420. DS C @VA03327 01271000
  1421. RDRMSGE DS CL13 @VA03327 01272000
  1422. RDRMSGL EQU *-RDRMSG @VA03327 01273000
  1423. EJECT 01274000
  1424. COPY UDIRECT @V200930 01275000
  1425. COPY ALLOC 01276000
  1426. COPY RBLOKS 01277000
  1427. COPY VBLOKS 01278000
  1428. PSA 01279000
  1429. COPY ACCOUNT 01280000
  1430. COPY VMBLOK 01281000
  1431. COPY SAVE 01282000
  1432. COPY EQU 01283000
  1433. COPY DEVTYPES 01284000
  1434. COPY IOBLOKS 01285000
  1435. IOBLOK DSECT CONTINUE THE IOBLOK 01286000
  1436. ORG , MAKE SURE WE'RE AT THE END @V200820 01287000
  1437. DELSEEK DS D SPACE FOR SEEK CCW 01288000
  1438. DELSERCH DS D SPACE FOR SEARCH CCW 01289000
  1439. DELTIC DS D SPACE FOR TIC CCW 01290000
  1440. DELREAD DS D SPACE FOR READ CCW 01291000
  1441. DELSWAP DS D DUMMY SWAPTABLE ENTRY 01292000
  1442. DELADDR DS D SEEK/SEARCH DATA 01293000
  1443. ORG DELADDR 01294000
  1444. DS 2X BB 01295000
  1445. DELCYL DS 2X CC 01296000
  1446. DELHEAD DS 2X HH 01297000
  1447. DELREC DS X R 01298000
  1448. DS X UNUSED 01299000
  1449. ORG 01300000
  1450. DELSIZE EQU (*-IOBLOK)/8 SIZE OF EXTENDED IOBLOK 01301000
  1451. EJECT 01302000
  1452. COPY IOER 01303000
  1453. COPY SPOOL 01304000
  1454. END 01305000