User Tools

Site Tools


ibm:vm370-lib:cp:dmknle.assemble_src

DMKNLE Source

References

Source Listing

DMKNLE.ASSEMBLE.txt
  1. NLE TITLE 'DMKNLE (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCEING OF INPUT 00002000
  3. *. 00003000
  4. * MODULE NAME - 00004000
  5. * 00005000
  6. * DMKNLE 00006000
  7. * 00007000
  8. * FUNCTION - 00008000
  9. * 00009000
  10. * TO PERFORM THE DUMP FUNCTION ON THE 3705 INDICATED. 00010000
  11. * 00011000
  12. * ATTRIBUTES - 00012000
  13. * 00013000
  14. * REENTRANT, PAGEABLE, CALLED VIA SVC 00014000
  15. * 00015000
  16. * ENTRY POINTS - 00016000
  17. * DMKNLEMP - ENTRY TO DUMP 3705 NETWORK CONTROL PROGRAM. 00018000
  18. * 00019000
  19. * NOTE: THIS ROUTINE MAY BE CALLED VIA CONSOLE COMMAND FROM DMKNET 00020000
  20. * OR INTERNALLY BY DMKRNH. 00021000
  21. * 00022000
  22. * ENTRY CONDITIONS - 00023000
  23. * 00024000
  24. * FROM DMKNET 00025000
  25. * 00026000
  26. * GPR2 - ZEROES 00027000
  27. * GPR9 - ADDRESS OF COMMAND LINE BUFFER 00028000
  28. * GPR11 - ADDRESS OF VMBLOK 00029000
  29. * GPR12 - ADDRESS OF ENTRY POINT 00030000
  30. * GPR13 - ADDRESS OF SAVEAREA 00031000
  31. * 00032000
  32. * FROM DMKRNH - 00033000
  33. * 00034000
  34. * GPR2 - NON-ZERO 00035000
  35. * GPR8 - ADDRESS OF REAL DEVICE BLOK FOR 3705 00036000
  36. * GPR11 - ADDRESS OF VMBLOK 00037000
  37. * GPR12 - ADDRESS OF ENTRY POINT 00038000
  38. * GPR13 - ADDRESS OF SAVEAREA 00039000
  39. * 00040000
  40. * EXIT CONDITIONS - 00041000
  41. * 00042000
  42. * NORMAL - 00043000
  43. * GPR2 = 0 00044000
  44. * 00045000
  45. * ERROR - 00046000
  46. * GPR2 = ERROR MESSAGE CODE NUMBER 00047000
  47. * 00048000
  48. * NOTE: RETURN IS DIRECTLY TO DMKCFM IF CALLED FROM DMKNET - TO CALLER 00049000
  49. * OTHERWISE. 00050000
  50. * 00051000
  51. * CALLS TO OTHER ROUTINES - 00052000
  52. * 00053000
  53. * DMKSCNFD - TO LOCATE NEXT ARGUMENT IN THE COMMAND LINE 00054000
  54. * DMKCVTHB - CONVERT HEXADECIMAL ADDRESSES TO BINARY 00055000
  55. * DMKSCNRU - TO LOCATE ADDRESSES OF THE REAL DEVICE BLOKS 00057000
  56. * DMKQCNWT - TO OUTPUT MESSAGES TO THE TERMINAL 00058000
  57. * DMKFREE - TO OBTAIN STORAGE FROM FREE STORAGE 00059000
  58. * DMKFRET - TO RETURN STORAGE TO FREE STORAGE 00060000
  59. * DMKPGTVG - TO GET A BUFFER OF PAGEABLE CP CORE. 00061000
  60. * DMKPGTVR - TO RELEASE A BUFFER OF PAGEABLE CP CORE. 00062000
  61. * DMKPTRUL - TO UNLOCK A PAGE IN VIRTUAL MACHINE 00063000
  62. * DMKERMSG - TO SEND ERROR MESSAGES TO THE TERMINAL. 00064000
  63. * DMKPTRAN - TO BRING A PAGE IN CORE 00065000
  64. * DMKCVTBH - CONVERT BINARY DATA TO HEXADECMAL 00066000
  65. * DMKSTKIO - TO STACK AN I/O BLOCK FOR PROCESSING 00067000
  66. * DMKRPAPT - TO WRITE A PAGE IN CORE TO DASD 00068000
  67. * DMKIOSQR - TO PERFORM I/O OPERATIONS ON 3705 00071000
  68. * DMKCKSPL - TO CHECKPOINT DUMP SPOOL FILE BLOCK 00073000
  69. * 00074000
  70. * EXTERNAL REFERENCES - 00075000
  71. * 00076000
  72. * CXZNPH1 - 370X CHANNEL ADAPTER TYPE1 DUMP BOOTSTRAP PHASE1 00081000
  73. * CXZNPH2 - 370X CHANNEL ADAPTER TYPE1 DUMP BOOTSTRAP PHASE2 00082000
  74. * CXZXPH1 - 370X CHANNEL ADAPTER TYPE2 DUMP BOOTSTRAP PHASE1 00083000
  75. * CXZXPH2 - 370X CHANNEL ADAPTER TYPE2 DUMP BOOTSTRAP PHASE2 00084000
  76. * DMKRSPID - LOCATION OF NEXT SPOOL FILE I.D. 00085000
  77. * DMKRNHIN - LOCATION OF 370X TERMINAL INTERRUPT HANDLER 00086000
  78. * 00088000
  79. * 00089000
  80. * TABLES/WORKAREAS - NONE 00090000
  81. * 00091000
  82. * REGISTER USAGE - 00092000
  83. * 00093000
  84. * GPR0 - ARGUMENT LENGTH (PASSED BACK FROM DMKSCNFD) 00094000
  85. * GPR1 - ARGUMENT ADDRESS (PASSED BACK FROM DMKSCNFD) 00095000
  86. * GPR2 - PASS PARAMETERS TO CALLED ROUTINES 00096000
  87. * GPR3 - WORK REG 00097000
  88. * GPR4 - WORK REG 00098000
  89. * GPR5 - WORK REG 00099000
  90. * GPR6 - WORK REG 00100000
  91. * GPR7 - INTERNAL LINKAGE REG 00101000
  92. * GPR8 - RDEVBLOK ADDRESS (FROM SYSTEM ROUTINES) 00102000
  93. * GPR9 - COMMAND LINE BUFFER (FROM DMKNET) AND LINKAGE REG 00103000
  94. * GPR10 - IOBLOK ADDRESS 00104000
  95. * GPR11 - VMBLOK ADDRESS 00105000
  96. * GPR12 - BASE REG 00106000
  97. * GPR13 - SAVEAREA ADDRESS 00107000
  98. * GPR14 - LINKAGE REG 00108000
  99. * GPR15 - LINKAGE REG 00109000
  100. *. 00110000
  101. EJECT 00111000
  102. COPY OPTIONS @V200899 00112000
  103. COPY LOCAL @V200899 00113000
  104. SPACE 2 00114000
  105. DMKNLE START , @V200899 00115000
  106. SPACE 00116000
  107. MODID DC CL8'DMKNLE' @V200899 00117000
  108. SPACE 00118000
  109. USING PSA,R0 @V200899 00119000
  110. USING RDEVBLOK,R8 @V200899 00120000
  111. USING IOBLOK,R10 @V200899 00121000
  112. USING VMBLOK,R11 @V200899 00122000
  113. USING SAVEAREA,R13 @V200899 00123000
  114. SPACE 00124000
  115. EXTRN DMKPGTVG,DMKPGTVR,DMKPGTCG,DMKPGTSD @V200899 00125000
  116. EXTRN DMKSCNFD,DMKSCNRU,DMKSCNRD @V200899 00126000
  117. EXTRN DMKCVTBH,DMKCVTHB,DMKCVTDT @V200899 00127000
  118. EXTRN DMKIOSQR,DMKQCNRD,DMKERMSG @V200899 00128000
  119. EXTRN DMKRPAPT,DMKSTKIO,DMKPTRUL @V200899 00129000
  120. EXTRN DMKQCNWT,DMKPTRAN @V407508 00129100
  121. SPACE 00132000
  122. EXTRN DMKRNHIN,DMKRSPID,DMKSYSDU @V200820 00133000
  123. EXTRN CXZXPH1,CXZXPH2,CXZNPH1,CXZNPH2 DUMP @V200899 00135000
  124. EXTRN DMKCKSPL @V304298 00136000
  125. EJECT 00137000
  126. *. 00138000
  127. * COMMAND LINE FORMAT - 00139000
  128. * 00140000
  129. * +---------+-----------------------------------+ 00146000
  130. * | | ** ** | 00147000
  131. * | NETWORK | DUMP RADDR * IMMED | OFF | AUTO * | 00148000
  132. * | NET | * ----- * | 00149000
  133. * | | ** ** | 00150000
  134. * +---------+-----------------------------------+ 00151000
  135. * 00152000
  136. * OPERATION - 00153000
  137. * 00154000
  138. * 1. DETERMINE WHETHER ENTRY WAS FROM SYSTEM OR VIA NETWORK 00155000
  139. * CONSOLE COMMAND. IF ENTERED FROM SYSTEM, GO TO STEP 11. 00156000
  140. * OTHERWISE SET NETWORK CALL FLAG AND CONTINUE. 00157000
  141. * 2. CALL DMKSCNFD TO GET 'RADDR' OPERAND FROM COMMAND LINE. 00159000
  142. * IF NO OPERAND, CALL DMKERMSG TO SEND MESSAGE DMKNLE021E. 00160000
  143. * 3. CALL DMKCVTHB TO CONVERT 'RADDR' TO BINARY. IF ERROR ON 00161000
  144. * CONVERSION, CALL DMKERMSG TO SEND MESSAGE DMKNLE021E. 00162000
  145. * 4. CALL DMKSCNRU TO GET REAL DEVICE (RDEVBLOK) FOR 'RADDR' 00163000
  146. * DEVICE. IF DEVICE DOES NOT EXIST, CALL DMKERMSG TO SEND 00164000
  147. * MESSAGE DMKNLE040E. 00165000
  148. * 5. DETERMINE WHETHER 'RADDR' DEVICE IS A 370X. IF NOT, CALL 00166000
  149. * DMKERMSG TO SEND DMKNLE006E MESSAGE. 00167000
  150. * 6. CHECK IF 370X IS CURRENTLY OFFLINE. IF SO, CALL DMKERMSG 00168000
  151. * TO SEND MESSAGE DMKNLE046E. 00169000
  152. * 7. DETERMINE IF 370X IS DEDICATED TO A USER. IF YES, CALL 00170000
  153. * DMKERMSG TO SEND MESSAGE DMKNLE140. 00171000
  154. * 8. CALL DMKSCNFD TO GET DUMP OPTIONS (IF ANY). 00229000
  155. * 9. IF NO OPTIONS, DEFAULT TO 'IMMED' AND GO TO STEP 11. 00230000
  156. * 10. IF OPTION IS 'OFF' OR 'AUTO' , REFLECT STATUS IN 00231000
  157. * APPROPRIATE BIT (RDEVAUTO) OF RDEVBLOK OF 370X AND EXIT. 00232000
  158. * IF OPTION IS 'IMMED' GO TO STEP 28. IF ANY OTHER OPTION 00233000
  159. * SPECIFIED, CALL DMKERMSG TO SEND MESSAGE DMKNLE003E. 00234000
  160. * 11. CALCULATE THE NUMBER OF SPOOL RECORDS ( IE. 1 RECORD 00235000
  161. * PER 4K OF 370X STORAGE + 1) NEEDED FOR DUMP. 00236000
  162. * 12. CALL DMKPGTCG TO GET NECESSARY SPOOL SPACE. IF SPACE 00237000
  163. * UNAVAILABLE, SEND MESSAGE; 00238000
  164. * 00239000
  165. * DMKNLE460E CTLR 'RADDR' DUMP FAILED: TEMP SPACE UNAVAILABLE 00240000
  166. * 00241000
  167. * AND EXIT TO CALLER. 00242000
  168. * 13. CALCULATE MAXIMUM NUMBER OF PAGES / CYL FOR THE 00243000
  169. * ALLOCATED SPOOL DEVICE. 00244000
  170. * 14. GO TO IOBINIT SUBROUTINE TO GET AND INITIALIZE AN 00245000
  171. * IOBLOK AND ADDITIONAL SAVE AREA FOR USE BY THE 370X 00246000
  172. * I/O ROUTINE. 00247000
  173. * 15. IF DUMP FUNCTION WAS REQUESTED VIA CONSOLE COMMAND, 00248000
  174. * ISSUE A TIO TO THE 370X TO DETERMINE ITS STATUS (THIS 00249000
  175. * IS UN-NECESSARY IF THE CALLER WAS A SYSTEM ROUTINE). 00250000
  176. * 16. GO TO SNDBOOTS SUB-ROUTINE TO TRANSMIT THE OS/360 DUMP 00251000
  177. * BOOTSTRAP PROGRAM TO THE 370X. ANY ERRORS THAT OCCUR 00252000
  178. * DURING THE BOOTSTRAP ROUTINE WILL RESULT IN MESSAGE: 00253000
  179. * 00254000
  180. * DMKNLE460E CTLR 'RADDR' DUMP FAILED; PROGRAM CHECK 00255000
  181. * 00256000
  182. * 17. CALL DMKPGTVG TO GET A PAGE OF CP PAGEABLE CORE FOR USE 00257000
  183. * AS A BUFFER. 00258000
  184. * 18. TRANS IN BUFFER PAGE TO GET REAL ADDRESS. 00259000
  185. * 19. BUILD CCWS TO READ IN RECORD CONTAING 370X LOCAL 00260000
  186. * STORE CONTENTS AND END OF CORE ADDRESS AND GO TO 370X 00261000
  187. * I/O ROUTINE. 00262000
  188. * 20. INSURE VALIDITY OF 370X END OF CORE ADDRESS AND CORRECT 00263000
  189. * DATA IN GROUP 0 REGISTERS IF 370X IS 48K OR LESS. 00264000
  190. * ( THIS CODE IS EXTRACTED FROM THE OS/360 NCP DUMP UTILITY) 00265000
  191. * 21. WRITE 370X REGISTER DATA AND END OF CORE ADDRESS TO SPOOL 00266000
  192. * FILE. 00267000
  193. * 22. READ SUCCESSIVE 512 BYTE RECORDS FROM 370X, BLOCK INTO 00268000
  194. * PAGE SIZE (4K) SPOOL RECORDS AND WRITE TO SPOOL FILE. 00269000
  195. * 23. WHEN END OF 370X CORE ADDRESS IS REACHED, CALL DMKFREE TO 00270000
  196. * GET CORE FOR A SPOOL FILE CONTROL BLOCK. 00271000
  197. * 24. FILL IN SFBLOK, AND QUEUE ON RDR SPOOL CHAIN FOR SYSTEM 00272000
  198. * DUMP ID. 00273000
  199. * 25. IF ANY SPOOL RECORDS REMAIN, CALL DMKPGTCR TO RELEASE THEM 00274000
  200. * 26. UNLOCK AND RELEASE BUFFER, FREE IOBLOK AND SAVE AREA, 00275000
  201. * AND EXIT TO CALLER. 00276000
  202. * 00277000
  203. * RESPONSES - 00278000
  204. * CTLR (RADDR) DUMP COMPLETE 00280000
  205. * 00281000
  206. * ERROR MESSAGES - 00282000
  207. * DMKNLE003E INVALID OPTION - (OPTION) 00284000
  208. * DMKNLE006E INVALID DEVICE TYPE (ADDR) 00285000
  209. * DMKNLE021E RADDR MISSING OR INVALID 00286000
  210. * DMKNLE040E DEV (ADDR) DOES NOT EXIST 00288000
  211. * DMKNLE046E CTLR 'RADDR' OFFLINE 00293000
  212. * DMKNLE140E CTLR 'RADDR' ATTACHED TO 'USERID' 00294000
  213. * DMKNLE143E CTLR 'RADDR' IN USE BY SYSTEM 00295000
  214. * DMKNLE460E CTRL 'RADDR' DUMP FAILED; PROGRAM CHECK 00296000
  215. * DMKNLE469E CTLR 'RADDR' DUMP FAILED; TEMP SPACE NOT AVAILABLE 00297000
  216. * DMKNLE470E CTRL 'RADDR' DUMP FAILED; PAGING I/O ERROR 00298000
  217. * DMKNLE471E CTRL 'RADDR' DUMP FAILED; UNRECOVERABLE I/O 00299000
  218. * ERROR 00300000
  219. * DMKNLE464E CTLR 'RADDR' CC = 3; DEPRESS 370X "LOAD" BUTTON 00301000
  220. * DMKNLE461R CTLR 'RADDR' IPL NOT REQUIRED; ENTER "YES" TO CONTINUE 00302000
  221. *. 00303000
  222. SPACE 2 00304000
  223. *--------------------------------------------------------------------* 00305000
  224. * EQUATES USED IN FLAG BYTE IN SAVEWRK1 * 00306000
  225. *--------------------------------------------------------------------* 00307000
  226. SPACE 00308000
  227. FROMNET EQU X'80' CALL WAS FROM NETWK CMD (DMKNET) @V200899 00309000
  228. BOOTSFLG EQU X'10' BOOTSTRAP REC PROC'NG INDICATOR @V200899 00312000
  229. UNLKBUF EQU X'08' UNLOCK REQUIRED FOR PAGE BUFFER @V200899 00313000
  230. PGTVREL EQU X'04' RELEASE REQD FOR VIRT BUFF ADDR @V200899 00314000
  231. QSPFLAG EQU X'02' QUEUE OF SFBLOK & REL OF REMAINS @V200899 00315000
  232. * SPOOL PAGES REQUIRED 00316000
  233. RNSAVREL EQU X'01' IOBLOK & RNIOSAV AREAS MUSTBE FREED@V200899 00317000
  234. SPACE 2 00318000
  235. DMKNLEMP RELOC ENTRY POINT FOR 370X DUMP PROCESS@V200899 00325000
  236. SWITCH CONTINUE ON THE I/O PROCESSOR @V407508 00325100
  237. MVI SAVEWRK1,NONE INITIALIZE FLAG BYTE @V407508 00326000
  238. BAL R10,CHKENTY CHECK ENTRY CONDITIONS @VM08949 00327000
  239. B DMPIMMED PROCESS SYSTEM DUMP REQUEST @VM08949 00328000
  240. SPACE 2 00329000
  241. CHKENTY EQU * CHECK FOR SYSTEM OR C.F. ENTRY @VM08949 00330000
  242. TM SAVER2+3,SYSTEM ENTRY VIA CONSOLE FUNCTION ?@V200899 00331000
  243. BZ NETCALL YES - SETUP FOR PARM SCAN @V200899 00332000
  244. ST R8,SAVEWRK9 SAVE RDEVBLOK POINTER @V200899 00333000
  245. CALL DMKSCNRD GET 'CCU' ADDRESS IN GR1 @V200899 00334000
  246. STH R1,SAVEWRK1+2 SAVE IT FOR LATER MESSAGES @V200899 00335000
  247. BR R10 RETURN FOR IMMEDIATE COMMAND @VM08949 00336000
  248. EJECT 00337000
  249. NETCALL EQU * CONSOLE FUNCTION 'NETWORK DUMP' @V200899 00338000
  250. IC R2,SAVEWRK1 PICK UP FLAG BYTE @V200899 00339000
  251. SVC 16 RETURN DIRECTLY TO DMKCFM ON EXIT@V200899 00340000
  252. STC R2,SAVEWRK1 RESET LOAD/DUMP FLAG BIT @V200899 00341000
  253. OI SAVEWRK1,FROMNET ENTERED FROM DMKNETWK @V200899 00342000
  254. CALL DMKSCNFD LOCATE REAL DEVICE ADDRESS @V200899 00343000
  255. BNZ NLE021 BRANCH IF NOTHING FOUND @V200899 00344000
  256. CALL DMKCVTHB TRY TO CONVERT TO BINARY @V200899 00345000
  257. BNZ NLE021 BRANCH IF CONVERT FAILED @V200899 00346000
  258. STH R1,SAVEWRK1+2 SAVE REAL ADDRESS @V200899 00347000
  259. CALL DMKSCNRU GET REAL DEVICE BLOKS @V200899 00348000
  260. BNZ NLE040 RADDR DOES NOT EXIST @V200899 00349000
  261. ST R8,SAVEWRK9 SAVE RDEVBLOK ADDRESS @V200899 00350000
  262. USING RDEVBLOK,R8 @V200899 00351000
  263. LA R0,CLASSPEC*256+TYP3705 DEVICE CLASS, TYPE @V200899 00352000
  264. CH R0,RDEVTYPC IS THIS DEVICE REALLY A 370X ? @V200899 00353000
  265. BNE NLE006 NO -- INVALID DEVICE TYPE @V200899 00354000
  266. TM RDEVSTAT,RDEVDISA IS DEVICE CURRENTLY OFFLINE @V200899 00355000
  267. BNZ NLE046 YEP, GIVE THE MSG AND QUIT @V200899 00356000
  268. TM RDEVSTAT,RDEVDED 3705 ATTACHED TO A USER NOW @V200899 00357000
  269. BNZ NLE140 YES, TELL CALLER AND QUIT @V200899 00358000
  270. B DMPOPTS ELSE SCAN FOR DUMP OPTIONS @V407508 00360000
  271. USING RNIOSAV,R4 GENERAL ADDRESSABILITY @V200899 00459000
  272. SPACE 00799000
  273. CMDCOMP EQU * SEND COMPLETE MESSAGE TO USER @V200820 00800000
  274. LH R1,SAVEWRK1+2 GET RADDR OF 370X FOR MESSAGE@V200820 00801000
  275. CALL DMKCVTBH GO CONVERT TO HEX @V200820 00802000
  276. STCM R1,B'0111',RNIOSAV+COMPRADD PUT RADDR IN MSG @V200820 00803000
  277. SLR R2,R2 PARMS BASE FOR DMKQCNWT @V200820 00804000
  278. TM SAVEWRK1,FROMNET CALL VIA CONSOLE FUNCTION ? @V200820 00805000
  279. BO *+8 YES - RESPONSE TO CALLER @V200820 00806000
  280. LA R2,OPERATOR SEND MESSAGE TO SYSTEM OPERATOR @V200820 00807000
  281. LA R1,RNIOSAV START OF MESSAGE DATA @V200820 00808000
  282. LA R0,DMPMSGLN LENGTH OF MSG TO R0 @V407508 00809000
  283. CALL DMKQCNWT,PARM=NORET(,R2),AFFINITY @V407508 00810100
  284. B NLEEXIT @V200820 00811000
  285. EJECT 00812000
  286. *--------------------------------------------------------------------* 00813000
  287. * CHECK FOR AUTO,OFF, OR IMMED OPERANDS OF DUMP COMMAND - ELSE ERROR * 00814000
  288. *--------------------------------------------------------------------* 00815000
  289. DMPOPTS EQU * @V200899 00816000
  290. CALL DMKSCNFD GET OPTION OPERAND @V200899 00817000
  291. BNZ DMPIMMED NO OPERAND - IMMED ASSUMED @V200899 00818000
  292. CL R0,F3 CORRECT LENGTH FOR 'OFF' ? @V200899 00819000
  293. BNE CHKAUTO NO -- CHECK FOR AUTOMATIC @V200899 00820000
  294. CLC 0(3,R1),=C'OFF' IS DUMP OPTION= 'OFF' ? @V200899 00821000
  295. BNE NLE003 NOPE - INVALID OPERAND @VM08570 00822000
  296. NI RDEVFLAG,X'FF'-RDEVAUTO TURN OFF AUTODUMP FL@V200899 00823000
  297. B NLEEXIT AND EXIT @V200899 00824000
  298. CHKAUTO EQU * @V200899 00825000
  299. CL R0,F4 CORRECT LENGTH FOR 'AUTO' ? @V200899 00826000
  300. BNE CHKIMM NO -- CHECK FOR IMMEDIATE @V200899 00827000
  301. CLC 0(4,R1),=C'AUTO' IS OPTION = AUTO @V200899 00828000
  302. BNE NLE003 NOPE - INVALID OPERAND @VM08570 00829000
  303. OI RDEVFLAG,RDEVAUTO TURN ON AUTODUMP FLAG @V200899 00830000
  304. B NLEEXIT AND EXIT @V200899 00831000
  305. CHKIMM EQU * @V200899 00832000
  306. CL R0,F5 CORRECT LENGTH @V200899 00833000
  307. BNE NLE003 NO -- ERROR @V200899 00834000
  308. CLC 0(5,R1),=C'IMMED' DID USER SAY IMMED ? @V200899 00835000
  309. BNE NLE003 UNRECOGNIZABLE OPTION @VM08570 00836000
  310. DMPIMMED EQU * @V200899 00837000
  311. TM RDEVFLAG,RDEVRCVY LOAD OR DUMP ACTIVE ? @V200820 00838000
  312. BO NLEEXIT YES - GET OUT OF HERE @V200820 00839000
  313. TM RDEVSTAT,RDEVRSVD IN USE BY THE SYSTEM ? @VM08809 00840000
  314. BO NLE143 YES - CAN'T DUMP ON THE FLY @VM08809 00841000
  315. SR R1,R1 CLEAR WORK REG. @V200820 00842000
  316. IC R1,RDEVMDL GET 370X MODEL NUMBER @V200899 00843000
  317. SLL R1,2(0) (MDL*16K)/4K = NUMBER OF PAGES @VM08625 00844000
  318. STC R1,SAVEWRK1+1 SAVE NUMBER OF SPOOL RECS REQUEST@V200899 00845000
  319. LR R0,R1 NUMBER INTO GR0 FOR DMKPGT @V200899 00846000
  320. CALL DMKPGTCG GO GET SPOOL SPACE @V200899 00847000
  321. LTR R1,R1 SEE IF WE FOUND THE SPACE NEEDED @V200899 00848000
  322. BZ NLE469 SPOOL SPACE UNAVAILABLE @V305435 00849000
  323. OI SAVEWRK1,QSPFLAG SET QUEUE SFBLOK FLAG @V200899 00850000
  324. ST R1,SAVEWRK8 SAVE STARTING CCPD @V200899 00851000
  325. ST R8,SAVEWRK2 SAVE RDEVBLOK OF SPOOL DEVICE @V200899 00852000
  326. SR R1,R1 ZERO FIELD FOR USE AS @V200899 00853000
  327. ST R1,SAVEWRK5 SPOOL FILE RECORD COUNTER @V200899 00854000
  328. EJECT 00855000
  329. *--------------------------------------------------------------------* 00856000
  330. * NOTE: R8 NOW CONTAINS RDEVBLOK ADDRESS OF SPOOL DISK ALLOCATED * 00857000
  331. * SO MAX PAGES / CYL FOR THIS DEVICE CAN NOW BE CALCULATED * 00858000
  332. *--------------------------------------------------------------------* 00859000
  333. SPACE 00860000
  334. LA R0,32 PGS/CYL FOR 2314 @V200899 00861000
  335. CLI RDEVTYPE,TYP2314 IS THIS DEVICE A 2314 ? @V200899 00862000
  336. BE GOTMAXPG YES . . . @V200899 00863000
  337. LA R0,57 PGS/CYL FOR 3330 @V200899 00864000
  338. CLI RDEVTYPE,TYP3330 IS IT A 3330 ? @V200899 00865000
  339. BE GOTMAXPG YEP . . . @V200899 00866000
  340. LA R0,120 PGS/CYL FOR 3350 @V304498 00867000
  341. CLI RDEVTYPE,TYP3350 IS IT A 3350 @V304498 00868000
  342. BE GOTMAXPG YES . . . @V304498 00869000
  343. LA R0,96 Pgs/Cyl for 3375 HRC106DK 00869100
  344. CLI RDEVTYPE,TYP3375 Is it a 3375 HRC106DK 00869200
  345. BE GOTMAXPG Yes . . . HRC106DK 00869300
  346. LA R0,150 Pgs/Cyl for 3380 HRC106DK 00869400
  347. CLI RDEVTYPE,TYP3380 Is it a 3380 HRC106DK 00869500
  348. BE GOTMAXPG Yes . . . HRC106DK 00869600
  349. LA R0,24 MUST BE 2305 OR 3340 @V2A2029 00870000
  350. GOTMAXPG EQU * @V200899 00871000
  351. L R8,SAVEWRK9 370X RDEVBLOK TO GR8 @VM08570 00872000
  352. STC R0,SAVEWRK9 AND PUT IT AWAY @V200899 00873000
  353. BAL R7,IOBINIT ALLOCATE AND SETUP WORK AREAS @V200899 00874000
  354. DMPTIO EQU * @V200899 00875000
  355. TM SAVEWRK1,FROMNET DID CONSOLE COMMAND CALL ME @V200899 00876000
  356. BZ NODMPTIO NO - TEST I/O NOT REQUIRED @V200899 00877000
  357. TM RDEVSTAT,RDEVNRDY IS THE 370X READY ? @V200899 00878000
  358. BO NODMPTIO NO -- SKIP THE TEST I/O @V200899 00879000
  359. OI IOBSPEC,IOBTIO SCHEDULE TIO @V200899 00880000
  360. BAL R9,DORNIO AND GO TO 370X I/O ROUTINE @V200899 00881000
  361. NI IOBSPEC,255-IOBTIO RESET TIO FLAG IN IOBLOK @V200899 00882000
  362. NODMPTIO EQU * SEND BOOTSTRAPS TO THE 370X @V200899 00883000
  363. OI RDEVFLAG,RDEVRCVY RECOVERY PROCESS INITIATED @V200899 00884000
  364. OI RDEVSTAT,RDEVNRDY NOT READY UNTIL LOADED @V200820 00885000
  365. L R1,=A(CXZNPH1) ENTRY OF CA1 PHASE1 @V200899 00886000
  366. L R3,=A(CXZNPH2) ENTRY OF CA1 PHASE2 @V200899 00887000
  367. TM RDEVFTR,FTRTYP1 DOES 370X HAVE A TYPE 1 CA ? @V200899 00888000
  368. BO XMITDMP YES, GO TO BOOTSTRAP SUBROUTINE @V200899 00889000
  369. L R1,=A(CXZXPH1) ENTRY OF CA2 PHASE1 @V200899 00890000
  370. L R3,=A(CXZXPH2) ENTRY OF CA2 PHASE2 @V200899 00891000
  371. XMITDMP EQU * @V200899 00892000
  372. BAL R7,SNDBOOTS GO TO BOOTSTRAP SUBROUTINE @V200899 00893000
  373. CALL DMKPGTVG GO GET PAGE BUFFER @V200899 00894000
  374. ST R1,SAVEWRK7 SAVE VADDR OF BUFFER FOR LATER @V200899 00895000
  375. OI SAVEWRK1,PGTVREL REMEMBER TO RELEASE BUFFER @V200899 00896000
  376. BAL R9,TRNLOCK BRING AND LOCK BUFFER PAGE @VM08692 00897000
  377. ST R2,SAVEWRK6 SAVE RADDR OF BUFFER @V200899 00898000
  378. OI SAVEWRK1,UNLKBUF WE HAVE TO UNLOCK BUFF @V200899 00899000
  379. EJECT 00900000
  380. *--------------------------------------------------------------------* 00901000
  381. * SET UP TO READ 370X LOCAL STORE CONTENTS AND END OF CORE ADDRESS * 00902000
  382. * INTO BUFFER AND WRITE TO SPOOL FILE RECORD 1 * 00903000
  383. *--------------------------------------------------------------------* 00904000
  384. SPACE 00905000
  385. READREG EQU * @V200899 00906000
  386. LA R1,RNCCWS POINT TO FIRST CCW SLOT @V200899 00907000
  387. ST R2,0(0,R1) RADDR OF BUFFER TO CCW @V200899 00908000
  388. MVI 0(R1),READOP SET CCW OP CODE TO READ @V200899 00909000
  389. REGDATCT EQU X'10C' @V200899 00910000
  390. LA R3,REGDATCT REGISTER DATA COUNT TO R3 @V200899 00911000
  391. ST R3,4(0,R1) AND PUT INTO CCW @V200899 00912000
  392. MVI 4(R1),CC+SILI SET COMM CHAIN AND SILI FLAGS @V200899 00913000
  393. MVC 8(8,R1),NOPCCW MOVE IN A NO-OP @V200899 00914000
  394. BAL R9,DORNIO GO READ RECORD @V200899 00915000
  395. SPACE 00916000
  396. *--------------------------------------------------------------------* 00917000
  397. * THE FOLLOWING CODE IS EXTRACTED FROM THE OS 370X DUMP PROGRAM - * 00918000
  398. * (IFLD1RRN) . ITS PURPOSE IS TO INSURE THE VALIDITY OF THE 370X * 00919000
  399. * END OF CORE ADDRESS AND TO CORRECTLY REFLECT THE CONTENTS OF * 00920000
  400. * THE GROUP 0 REGISTERS IN THE DUMP IF THE 370X IS 48K OR LESS. * 00921000
  401. *--------------------------------------------------------------------* 00922000
  402. SPACE 00923000
  403. SR R1,R1 CLEAR WORK REG @VA10383 00924200
  404. IC R1,RDEVMDL GET 370X MODEL NUMBER @VA10383 00924300
  405. SLL R1,14 MODEL # TIMES 16K = STORAGE @VA10383 00924400
  406. ST R1,0(,R2) STORE SIZE INTO BUFFER @VA11559 00924510
  407. ST R1,SAVEWRK3 SAVE ADDR FOR LOOP CTL @V200899 00926000
  408. C R1,=F'49152' IS 370X GREATER THAN 48K ? @V200899 00927000
  409. BH RNGT48K YES, NO PROBLEM @V200899 00928000
  410. LA R1,5(0,R2) IF 370X IS LESS THAN 48K THERE MAY @V200899 00929000
  411. LA R3,8 SOME BITS ON IN GROUP 0 REGS THAT @V200899 00930000
  412. FIXGR0LP EQU * @V200899 00931000
  413. MVI 0(R1),X'00' HAVE TO BE ZEROED OUT @V200899 00932000
  414. LA R1,4(0,R1) BUMP TO NEXT REG LOCATION @V200899 00933000
  415. BCT R3,FIXGR0LP AND LOOP TILL ALL ARE FIXED @V200899 00934000
  416. RNGT48K EQU * @V200899 00935000
  417. L R5,SAVEWRK8 STARTING CCPD TO R5 @V200899 00936000
  418. LA R1,512(0) LENGTH FOR READ FROM 370X @VM08584 00937000
  419. STH R1,NEXTLNTH . . .SET FOR CCW CONSTRUCTION @VM08584 00938000
  420. ST R1,NEXTADDR . . .AND FOR FIRST DATA ADDRESS @VM08584 00939000
  421. ALR R2,R1 START FOR FIRST DATA RECORD @VM08584 00940000
  422. LA R3,7 LOOP CONTROL, FIRST PAGE ONLY @VM08584 00941000
  423. B DMPRECNT GO FILL IN THE FIRST PAGE @V240820 00942000
  424. EJECT 00943000
  425. *--------------------------------------------------------------------* 00944000
  426. * THIS ROUTINE READS SUCCESSIVE 512 BYTE RECORDS FROM THE 370X, * 00945000
  427. * BLOCKS THEM INTO 4096-BYTE RECORDS, AND WRITES THE RECORDS * 00946000
  428. * TO THE SPOOL FILE. THIS SEQUENCE IS REPEATED UNTIL ALL DATA IS * 00947000
  429. * RETRIEVED FROM THE 370X (I.E. END OF CORE ADDRESS IS REACHED). * 00948000
  430. *--------------------------------------------------------------------* 00949000
  431. SPACE 00950000
  432. DMPWRTLP EQU * @V200899 00951000
  433. L R2,SAVEWRK6 RADDR OF BUFFER TO R2 @V200899 00952000
  434. LA R3,8 SET UP LOOP CONTROL @V200899 00953000
  435. DMPRECNT EQU * @V240820 00954000
  436. L R1,SAVEWRK5 COUNT OF SPOOL RECORDS @V240820 00955000
  437. LA R1,1(0,R1) WE'RE STARTING TO USE ONE NOW @V240820 00956000
  438. ST R1,SAVEWRK5 . . . @V240820 00957000
  439. DMPCCWLP EQU * @V200899 00958000
  440. LA R1,RNCCWS FIRST CCW SLOT TO GR1 @V200899 00959000
  441. LA R6,NEXTADDR 370X READ START ADDR TO R6 @V200899 00960000
  442. ST R6,0(0,R1) AND PUT IN WRITE CCW @V200899 00961000
  443. MVI 0(R1),WRITEOP SET WRITE OP CODE IN CCW @V200899 00962000
  444. MVC 4(4,R1),F8 SET COUNT FOR WRITE CCW @V200899 00963000
  445. MVI 4(R1),CC+SILI SET UP CHAINING @V200899 00964000
  446. ST R2,8(0,R1) STORE RECORD ADDRESS IN CCW@V200899 00965000
  447. MVI 8(R1),READOP SET UP READ IN CCW @V200899 00966000
  448. MVC 14(2,R1),NEXTLNTH SET UP CCW COUNT @V200899 00967000
  449. MVI 12(R1),CC+SILI SET UP CHAINING FLAGS @V200899 00968000
  450. MVC 16(8,R1),NOPCCW MOVE IN A NO-OP @V200899 00969000
  451. BAL R9,DORNIO @V200899 00970000
  452. L R6,NEXTADDR GET 370X READ START ADDR @V200899 00971000
  453. AH R6,NEXTLNTH BUMP BY READ DATA LENGTH @V200899 00972000
  454. ST R6,NEXTADDR AND PUT BACK @V200899 00973000
  455. LA R2,512(0,R2) POINT TO NEXT BUFFER SLOT @V200899 00974000
  456. BCT R3,DMPCCWLP LOOP TIL ALL REC SLOTS ARE FULL @V200899 00975000
  457. SPACE 00976000
  458. LR R0,R5 CCPD TO R0 FOR RPAPT @V200899 00977000
  459. L R1,SAVEWRK7 VADDR TO R1 FOR RPAPT @V200899 00978000
  460. CALL DMKRPAPT,PARM=SYSTEM+IOERETN,AFFINITY PUT PAGE @V407508 00979100
  461. BNZ NLE470 PAGING ERROR @V305435 00980000
  462. CLC NEXTADDR(4),SAVEWRK3 REACHED END OF CORE ? @VM08738 00981000
  463. BNL DMPCOMP YES - DUMP COMPLETE @VM08738 00982000
  464. L R1,SAVEWRK5 NO. OF SPOOL RECORDS WRITTEN @VA02292 00983000
  465. CLM R1,1,SAVEWRK1+1 HAVE WE RUN OUT OF DASD PAGE@VM08949 00984000
  466. BNL NLE1 YES -- TAKE A NOSEDIVE @VM08949 00985000
  467. A R5,F256 BUMP PAGE NUMBER BY ONE @VM08584 00986000
  468. CLM R5,2,SAVEWRK9 SHOULD WE SWITCH CYLINDERS ? @VM08584 00987000
  469. BNH DMPWRTLP NO -- FILL IN THE NEXT PAGE @VM08738 00988000
  470. A R5,=X'00010000' ADD ONE TO CYLINDER NUMBER @VM08584 00989000
  471. ICM R5,2,F1+3 RESET PAGE NUMBER TO ONE @VM08584 00990000
  472. B DMPWRTLP GO FILL UP THIS PAGE WITH DATA @VM08738 00991000
  473. EJECT 00992000
  474. DMPCOMP EQU * NETWORK DUMP FUNCTION COMPLETE @VM08738 00993000
  475. BAL R9,QSPFILE CLOSE AND QUEUE DUMP SPOOL FILE @VM08671 00994000
  476. L R4,IOBMISC SETUP TO SEND COMPLETE MESSAGE @V200899 00995000
  477. MVC RNIOSAV(DMPMSGLN),DUMPMSG MSG SKELETON @V200899 00996000
  478. MVC RNIOSAV+DMPMSGLN(8),BLANKS CLEAR REST OF BUFF@V200899 00997000
  479. B CMDCOMP GO FILL IN CONTROLLER ADDRESS @V200899 00998000
  480. SPACE 00999000
  481. BUFUNLK EQU * UNLOCK THE REAL PAGE BUFFER @VM08949 01015000
  482. L R2,SAVEWRK6 REAL PAGE ADDRESS FROM LOCK @VM08949 01016000
  483. CALL DMKPTRUL UNLOCK THE REAL PAGE @VM08949 01017000
  484. NI SAVEWRK1,255-UNLKBUF ERASE CLEANUP FLAG @VM08949 01018000
  485. BR R9 @VM08949 01019000
  486. EJECT 01020000
  487. *--------------------------------------------------------------------* 01021000
  488. * SURROUTINE TO GET AND FILL A SFBLOK FOR 370X DUMP SPOOL FILE * 01022000
  489. * AND CHAIN THE SFBLOK INTO THE READER SPOOL FILE FOR CP DUMP. * 01023000
  490. *--------------------------------------------------------------------* 01024000
  491. QSPFILE EQU * @V200899 01025000
  492. CLC SAVEWRK5(4),F0 HAVE ANY RECORDS BEEN WRITTEN TO @V200899 01026000
  493. * SPOOL FILE 01027000
  494. BE QSPFREL NO, FORGET ABOUT QUEUEING SPFBLOK@V200899 01028000
  495. LA R0,SFBSIZE SIZE OF SFBLOK TO R0 @V200899 01029000
  496. CALL DMKFREE GET CORE FOR SFBLOK @V200899 01030000
  497. XC 0((SFBSIZE*8),R1),0(R1) CLEAR SFBLOK @V200899 01031000
  498. LR R6,R1 ADDRESS OF SFBLOK TO R6 @V200899 01032000
  499. USING SFBLOK,R6 @V200899 01033000
  500. ST R5,SFBLAST STORE CCPD OF LAST SPOOL RECO@V200899 01034000
  501. MVC SFBRECSZ(2),F4096+2 LRECL = 4096 BYTES @VM08775 01035000
  502. MVI SFBFLAG,SFBDUMP INDICATE THAT FILE IS A DUMP @V200899 01036000
  503. MVI SFBCLAS,C'E' SET SPOOL CLASS TO 'E' @V200899 01037000
  504. MVC SFBRECNO(4),SAVEWRK5 MOVE NUMBER OF RECORDS @V200899 01038000
  505. MVC SFBFNAME(12),=CL12'NCPDUMP' FILENAME @V200820 01039000
  506. MVC SFBFTYPE(12),=CL12'FILE' FILETYPE @V200820 01040000
  507. MVC SFBORIG(8),=C'SYSTEM ' BUILT BY THE SYSTEM @V200820 01041000
  508. MVC SFBDIST(8),=C'SYSTEM ' ...FOR THE SYSTEM @VM08570 01042000
  509. L R1,=A(DMKSYSDU) USER RECEIVING DUMPS @V200820 01043000
  510. MVC SFBUSER(8),0(R1) . . .SO BE IT @V200820 01044000
  511. MVI SFBTYPE,TYPPRT CALL IT PRINT (WHY NOT ?) @V200820 01045000
  512. MVI SFBCOPY+1,1 ONLY ONE COPY @V200820 01046000
  513. LA R1,SFBDATE ADDRESS OF SFBDATE FIELD TO R1 @V200899 01047000
  514. LA R2,SFBTIME ADDRESS OF SFBTIME FIELD TO R2 @V200899 01048000
  515. CALL DMKCVTDT GO GET CURRENT DATE AND TIME @V200899 01049000
  516. MVC SFBSTART(4),SAVEWRK8 STARTING CCPD TO SFBLOK @V200899 01050000
  517. L R3,=A(DMKRSPID) POINT TO SPOOL FILE ID @V200899 01051000
  518. LH R1,0(0,R3) SPOOL FILE ID TO R1 @V200899 01052000
  519. STH R1,SFBFILID AND INTO SFBLOK @V200899 01053000
  520. LA R1,1(0,R1) INCREMENT FOR NEXT SPOOL FILE... @V200899 01054000
  521. CH R1,=H'9900' MAX SPOOL ID ? @VA07575 01054100
  522. BNH *+8 NO - OK @VA07575 01054200
  523. LA R1,1 RESET TO ONE @VA07575 01054300
  524. STH R1,0(0,R3) RESET... @V200899 01055000
  525. L R1,ARSPRD GET RDR SFBLOK CHAIN PTR @V200899 01056000
  526. L R3,0(0,R1) RDR SFBLOK CHAIN TO R3 @V200899 01057000
  527. ST R6,0(0,R1) INSERT DUMP FILE SFBLOK @V200899 01058000
  528. ST R3,SFBPNT IN RDR SFBLOK CHAIN @V200899 01059000
  529. LR R3,R7 SAVE R7 VALUE @V304298 01060000
  530. LR R7,R6 SFBLOK IN REG 7 @V304298 01061000
  531. CALL DMKCKSPL,PARM=ADDSFB+RDRCHN,AFFINITY @V407508 01062100
  532. LR R7,R3 RESTORE REG 7 @V304298 01063000
  533. DROP R6 @V200899 01064000
  534. EJECT 01065000
  535. QSPFREL EQU * @V200899 01066000
  536. SR R6,R6 CLEAR WORK REG @V200820 01067000
  537. IC R6,SAVEWRK1+1 GET NUMBER OF SPOOL RECS REQUESTD@V200820 01068000
  538. L R3,SAVEWRK5 GET NUMBER OF SPOOL RECS WRITTEN @V200820 01069000
  539. CR R3,R6 WERE ALL SPOOL RECORDS USED ? @V200820 01070000
  540. BNL QSPFXIT YES, NO NEED TO RELEASE ANY @V200820 01071000
  541. SR R6,R3 SUBTRACT NUMBER WRITTEN FROM TOTA@V200820 01072000
  542. LR R0,R5 GET 'CCPD' OF LAST SPOOL RECORD @V200820 01073000
  543. LTR R3,R3 HAVE WE WRITTEN ANY RECORDS ? @V200820 01074000
  544. BP QSPXREL YES - GR5 IS CORRECT @V200820 01075000
  545. L R0,SAVEWRK8 START WITH THE FIRST RECORD @V200820 01076000
  546. B QSPCCOK ...AND RELEASE IT FIRST @V200820 01077000
  547. SPACE 01078000
  548. QSPXREL EQU * RELEASE UNUSED SPOOL RECORDS @V200820 01079000
  549. A R0,F256 BUMP 'P' BY 1 @V200820 01080000
  550. CLM R0,2,SAVEWRK9 NEED TO BUMP 'CC' ? @V200820 01081000
  551. BNH QSPCCOK NO, . . . @V200820 01082000
  552. A R0,=X'00010000' BUMP 'CC' BY 1 @V200820 01083000
  553. ICM R0,2,F1+3 RESET 'P' TO 1 @V200820 01084000
  554. QSPCCOK EQU * RELEASE ONE RECORD @V200820 01085000
  555. ST R0,SAVEWRK5 PUT 'CCPD' INTO DUMMY SWAP-TABLE @V200820 01086000
  556. LA R5,SAVEWRK4 POINT TO START OF DUMMY SWPENT @V200820 01087000
  557. CALL DMKPGTSD RELEASE A SINGLE DASD SPOOL PAGE @V200820 01088000
  558. BCT R6,QSPXREL RELEASE ALL OF THEM @V200820 01089000
  559. QSPFXIT EQU * @V200820 01090000
  560. NI SAVEWRK1,X'FF'-QSPFLAG RESET SPOOL FILE QUEUE @V200820 01091000
  561. * RELEASE FLAG 01092000
  562. BR R9 RETURN @VM08671 01093000
  563. SPACE 3 01094000
  564. *>>>>>>>>> INSUFFICIENT SPOOL SPACE TO PERFORM 370X DUMP 01095000
  565. ABEND 1 I QUIT! -- SOMEONE LIED TO ME @VM08949 01096000
  566. *>>>>>>>>> 01097000
  567. EJECT 01098000
  568. *--------------------------------------------------------------------* 01099000
  569. * SUBROUTINE TO TRANSMIT 370X BOOTSTRAP RECORDS TO CCU * 01100000
  570. *--------------------------------------------------------------------* 01101000
  571. SNDBOOTS EQU * @V200899 01102000
  572. BAL R9,TRNLOCK BRING AND LOCK PHASE ONE @VM08692 01103000
  573. OI SAVEWRK1,BOOTSFLG REMEMBER TO UNLOCK IT @VM08692 01104000
  574. L R1,IOBMISC POINT R1 TO FIRST CCW SLOT @V200899 01105000
  575. ST R2,0(0,R1) PUT REAL ADDRESS IN WRITE IPL @V200899 01106000
  576. MVI 0(R1),WIPLOP SET WRITE IPL OP CODE @V200899 01107000
  577. MVI 4(R1),CC+SILI SET CMD CHAINING AND SILI ON @V200899 01108000
  578. MVC 6(2,R1),2(R2) MOVE LENGTH OF PHASE 1 TO CCW @V200899 01109000
  579. MVC 8(8,R1),NOPCCW MOVE IN A NO-OP @V200899 01110000
  580. BAL R9,DORNIO GO TO RN SIO ROUTINE @V200899 01111000
  581. CALL DMKPTRUL UNLOCK PHASE ONE PAGE (R2 OK) @VM08692 01112000
  582. NI SAVEWRK1,255-BOOTSFLG TURN OFF FLAG FOR NOW @VM08692 01113000
  583. SPACE 01114000
  584. LR R1,R3 GR1 = ADDRESS OF BOOTSTRAP TWO @VM08692 01115000
  585. BAL R9,TRNLOCK BRING AND LOCK PHASE TWO @VM08692 01116000
  586. OI SAVEWRK1,BOOTSFLG REMEMBER TO UNLOCK IT @VM08692 01117000
  587. L R1,IOBMISC POINT R1 TO FIRST CCW SLOT @V200899 01118000
  588. ST R2,0(0,R1) PUT REAL ADDRESS IN WRITE IPL @V200899 01119000
  589. MVI 0(R1),WRITEOP CHANGE CCW OP CODE TO WRITE @V200899 01123000
  590. CMDOK EQU * @V200899 01124000
  591. MVI 4(R1),CC+SILI SET CMD CHAINING AND SILI ON @V200899 01125000
  592. MVC 6(2,R1),2(R2) MOVE LENGTH OF PHASE 1 TO CCW C@V200899 01126000
  593. MVC 8(8,R1),NOPCCW MOVE IN A NO-OP @V200899 01127000
  594. BAL R9,DORNIO GO TO RN SIO ROUTINE @V200899 01128000
  595. CALL DMKPTRUL UNLOCK PHASE TWO PAGE (R2 OK) @VM08692 01129000
  596. NI SAVEWRK1,X'FF'-BOOTSFLG RESET BOOTSTRAP PROCESS @V200899 01130000
  597. BR R7 RETURN TO MAIN LINE CODE @V200899 01131000
  598. SPACE 01132000
  599. TRNLOCK EQU * BRING IN AND LOCK SYSTEM PAGE @VM08692 01133000
  600. * BRING IN AND LOCK SYSTEM PAGE @V407508 01134100
  601. TRANS 2,1,OPT=(BRING,DEFER,SYSTEM,LOCK),IOER=NLE470,AFFINITY 01134200
  602. BR R9 @VM08692 01135000
  603. EJECT 01136000
  604. *--------------------------------------------------------------------* 01137000
  605. * GET AND CLEAR STORAGE FOR USE AS AN IOBLOK * 01138000
  606. *--------------------------------------------------------------------* 01139000
  607. SPACE 01140000
  608. IOBLGET EQU * @V200820 01141000
  609. LA R0,IOBSIZE SIZE OF IOBLOK TO R0 @V200820 01142000
  610. CALL DMKFREE CALL DMKFREE TO GET STORAGE @V200820 01143000
  611. LR R10,R1 IOBLOK ADDRESS TO R10 @V200820 01144000
  612. XC IOBRADD(IOBSIZE*8),IOBRADD CLEAR IOBLOK @V200820 01145000
  613. ST R11,IOBUSER USER'S VMBLOK ADDRESS TO IOBLOK @V200820 01146000
  614. LA R1,RNIOINT PUT ADDRESS OF 3705 INT. HANDLER @V200820 01147000
  615. ST R1,IOBIRA INTO IOBLOK @V200820 01148000
  616. BR R9 RETURN @V200820 01149000
  617. SPACE 2 01150000
  618. *--------------------------------------------------------------------* 01151000
  619. * GET STORAGE FOR USE AS CCW AREA AND I/O REG SAVE AREA AND CLEAR IT * 01152000
  620. *--------------------------------------------------------------------* 01153000
  621. SPACE 01154000
  622. IOBINIT EQU * @V200820 01155000
  623. BAL R9,IOBLGET ALLOCATE AND INITIALIZE AN IOBLOK@V200820 01156000
  624. LA R0,RNWKSIZE SIZE OF AREA TO R0 @V200820 01157000
  625. CALL DMKFREE GO GET STORAGE @V200820 01158000
  626. LR R4,R1 ADDRESS OF RNIOSAV TO R4 @V200820 01159000
  627. ST R1,IOBMISC SAVE ADDRESS OF STORAGE IN IOBLOK @V200820 01160000
  628. XC 0(RNWKSIZE*8,R4),0(R4) CLEAR THE AREA @V200820 01161000
  629. OI SAVEWRK1,RNSAVREL RELEASE WORK AREAS @V200820 01162000
  630. BR R7 RETURN TO MAIN LINE CODE @V200820 01163000
  631. EJECT 01164000
  632. *--------------------------------------------------------------------* 01165000
  633. * THIS IS THE SIO INTERFACE CODE FOR 3705 I/O OF LOAD/DUMP PROGRAMS * 01166000
  634. *--------------------------------------------------------------------* 01167000
  635. SPACE 01168000
  636. DORNIO EQU * @V200820 01169000
  637. STM R0,R9,RNSVREGS SAVE CALLERS REGS @V200899 01170000
  638. LA R1,5(0,0) RETRY COUNT IN CASE OF ERROR @VM08672 01171000
  639. STH R1,IOBRCNT . . . @VM08672 01172000
  640. MVC IOBCAW(4),IOBMISC SAVE CCW BUFFER POINTER @V2D3931 01173000
  641. MVI IOBFLAG,IOBCP CP-GENERATED CHANNEL PROGRAM @VM08672 01174000
  642. RESTRNIO EQU * @V200899 01175000
  643. MVI IOBSTAT,X'00' CLEAR IOBLOK STATUS BYTE @VM08672 01176000
  644. NI IOBFLAG,IOBCP+IOBRSTRT LEAVE ONLY THESE FLAGS @VM08672 01177000
  645. ST R13,IOBMISC2 SAVE POINTER TO CALLERS SAVE AREA@V200899 01178000
  646. XC IOBCSW(8),IOBCSW CLEAR OUT THE CSW @VM08775 01179000
  647. CALL DMKIOSQR CALL IOS @V200899 01180000
  648. GOTO DMKDSPCH GO TO DISPACTH TO WAIT FOR I/O @V200899 01181000
  649. EJECT 01182000
  650. *--------------------------------------------------------------------* 01183000
  651. * THIS IS THE 3705 I/O INTERRUPT HANDLER FOR DMKNLE * 01184000
  652. *--------------------------------------------------------------------* 01185000
  653. SPACE 01186000
  654. RNIOINT EQU * @V200899 01187000
  655. USING *,R12 RE-ESTABLISH @V200899 01188000
  656. SL R12,=A(RNIOINT-DMKNLE) ADDRESSABILITY TO BASE @V200899 01189000
  657. USING DMKNLE,R12 @V200899 01190000
  658. L R13,IOBMISC2 RESTORE SAVEAREA POINTER @V200899 01191000
  659. L R4,IOBMISC RESTORE RNIOSAV POINTER @V200899 01192000
  660. L R8,SAVEWRK9 RESTORE RDEVBLOK @VA09160 01192500
  661. TM IOBSPEC,IOBTIO IS INTERRUPT FOR A TIO @V200899 01193000
  662. BO TIORETN YES,GO HANDLE SPECIAL @V200899 01194000
  663. TM IOBSTAT,IOBCC3 ANY CONDITION CODE FROM I/O @V200899 01195000
  664. BO VANISH CC=3 - SOMETHING IS VERY WRONG @VM08775 01196000
  665. BZ CHKSTAT CC=0 - EVERYTHING IS O.K. ---SO F@V200899 01197000
  666. * CC=1 OR 2 HAVE TO CHECK FURTHER 01198000
  667. TM IOBSTAT,IOBCC1 IS IT CC=1 ? @V200899 01199000
  668. BZ IORETRY NO, RETRY I/O @V200899 01200000
  669. CHKSTAT EQU * @V200899 01201000
  670. CLC IOBCSW+4(2),=X'0C00' IS STATUS NORMAL? (CE+DE)@V200899 01202000
  671. BE RNIOXIT YES, I/O WENT O.K. @V200899 01203000
  672. CLC IOBCSW+4(2),=AL1(ATTN+DE,0) ATTN + DEVICE END? @VM05005 01203080
  673. BNE RNIOERR NOPE, MUST BE SOMETING WRONG, BR.@VM05005 01203160
  674. LA R0,IOBSIZE USING NEW STUFF, GET AN IOB... @VM05005 01203240
  675. CALL DMKFREE ... AND DUMMY IT UP FOR DMKRNH...@VM05005 01203320
  676. ST R10,0(R1) (SWITCH IOBLOKS) @VM05005 01203400
  677. LR R10,R1 TO MAKE IT LOOK LIKE THE OLD @VM05005 01203480
  678. L R1,0(R1) SUPPORT WHERE ATTN CAME IN AFTER @VM05005 01203560
  679. XC IOBLOK(IOBSIZE*8),IOBLOK LOAD WAS COMPLETE @VM05005 01203640
  680. MVI IOBCSW+4,ATTN MAKE IT LOOK LIKE ATTN ALONE @VM05005 01203720
  681. OI IOBFLAG,IOBCP CP GENERATED @VM05005 01203800
  682. OI IOBSPEC,IOBUNSL UNSOLICITED I/O INT. @VM05005 01203880
  683. MVC IOBRADD(2),IOBRADD-IOBLOK(R1) SAME ADDRESS @VM05005 01203960
  684. ST R10,IOBLINK ENDING STATUS @VM05005 01204040
  685. L R0,ASYSVM SYSTEM OWNS THIS ONE @VM05005 01204120
  686. ST R0,IOBUSER ... @VM05005 01204200
  687. L R0,=A(DMKRNHIN) SEND THE INTERRUPT TO RNH @VM05005 01204280
  688. ST R0,IOBIRA ... @VM05005 01204360
  689. CALL DMKSTKIO SEND IT OFF... @VM05005 01204440
  690. LR R10,R1 AND RESTORE THE OLD IOB ADDR. @VM05005 01204520
  691. B RNIOXIT RETURN TO CALLER @VM05005 01204600
  692. SPACE 01204680
  693. RNIOERR TM IOBCSW+5,X'FF'-(CDC+IL) ANY HARD ERRORS? @VM05005 01204760
  694. BNZ RNIOER YES,DISASTER @V200899 01205000
  695. TM IOBCSW+4,CUE+SM HARD DEVICE ERRORS ? @V200899 01206000
  696. BNZ RNIOER YES, QUIT NOW @V200899 01207000
  697. TM IOBCSW+4,UC UNIT CHECK ??? @V200899 01208000
  698. BZ IORETRY NO, RETRY I/O @V200899 01209000
  699. L R1,IOBIOER GET ADDR OF IOERBLOK @V200899 01210000
  700. USING IOERBLOK,R1 @V200899 01211000
  701. TM IOERDATA,IPLREQ+INTREQ+ABORT RETRY O.K. ? @V200899 01212000
  702. DROP R1 @V200899 01213000
  703. BZ IORETRY YES -- JUST RETRY THE I/O @V200899 01214000
  704. BAL R7,FRERBLOK RELEASE THE IOERBLOK @VM08692 01215000
  705. LM R0,R9,RNSVREGS RESTORE REGISTERS @V200899 01216000
  706. B NLE460 PROGRAM CHECK IN BOOTSTRAP @V305435 01217000
  707. * ROUTINE 01218000
  708. SPACE 2 01219000
  709. VANISH EQU * CC = 3 DURING LOAD OR DUMP @VM08775 01220000
  710. BAL R7,FRERBLOK RELEASE IOERBLOK, IF ANY @VM08775 01221000
  711. LM R0,R9,RNSVREGS RESTORE REGISTERS @VM08775 01222000
  712. B NLE464E GIVE CC = 3 MESSAGE @VM08775 01223000
  713. EJECT 01224000
  714. TIORETN EQU * @V200899 01225000
  715. TM IOBSTAT,IOBCC3 CHECK CC FROM TIO @V200899 01226000
  716. BO NLE040 CC=3 DEVICE NOT THERE - ERROR@V200899 01227000
  717. BZ OPMSG IF CC=0 TREAT AS IF IPL REQ'D@V200899 01228000
  718. * WASN'T ON 01229000
  719. TM IOBSTAT,IOBCC1 IS IT CC=1 @V200899 01230000
  720. BZ IORETRY NO -- RETRY @V200899 01231000
  721. TM IOBCSW+4,UC WAS IT A UNIT CHECK ? @V200899 01232000
  722. BO CKTIOSNS YES - THAT'S WHAT WE EXPECT @V200899 01233000
  723. L R1,=A(DMKRNHIN) SET UP IOBIRA FOR DMKRNH @V200899 01234000
  724. ST R1,IOBIRA . . . @V200899 01235000
  725. MVC IOBUSER(4),ASYSVM SET UP SYSTEM VMBLOK POINTER @V2D3931 01236000
  726. CALL DMKSTKIO AND RESTACK I/O @V200899 01237000
  727. BAL R9,IOBLGET GET ANOTHER IOBLOK FOR US @V200899 01238000
  728. ST R13,IOBMISC2 RESET THESE VALUES ... @V200899 01239000
  729. ST R4,IOBMISC ... @V200899 01240000
  730. B OPMSG GO TALK TO THE OPERATOR @V200899 01241000
  731. SPACE 2 01242000
  732. CKTIOSNS EQU * TEST SENSE DATA RECEIVED @V200899 01243000
  733. L R1,IOBIOER GET ADDRESS OF IOERBLOK @V200899 01244000
  734. USING IOERBLOK,R1 @V200899 01245000
  735. TM IOERDATA,IPLREQ+INTREQ IS SENSE IPL REQUIRED OR@V200899 01246000
  736. * INTERVENTION REQUIRED ? 01247000
  737. BNZ RNIOXIT YES, NO NEED TO SEND MSG @V200899 01248000
  738. DROP R1 @V200899 01249000
  739. EJECT 01250000
  740. *---------------------------------------------------------------------* 01251000
  741. *HAVE TO SEND FOLLOWING MSG: * 01252000
  742. * * 01253000
  743. * DMKNLE461R CTLR (RADDR) IPL NOT REQUIRED; ENTER 'YES' TO CONTINUE: * 01254000
  744. * * 01255000
  745. *IN ORDER TO GET CONCURRENCE OF OPERATOR TO LOAD OR DUMP 370X * 01256000
  746. * THAT DOES NOT HAVE IPL REQUIRED BIT ON IN SENSE. * 01257000
  747. *---------------------------------------------------------------------* 01258000
  748. SPACE 01259000
  749. OPMSG EQU * @V200899 01260000
  750. MVC 0(M461RLN,R4),M461SKEL MOVE 461R SKELETON MSG @V200899 01261000
  751. LH R1,SAVEWRK1+2 PICK UP RADDR OF 370X @V200899 01262000
  752. CALL DMKCVTBH AND CONVERT TO HEX @V200899 01263000
  753. STCM R1,B'0111',M461RADD(R4) MOVE RADDR INTO MESSAGE@V200899 01264000
  754. LR R1,R4 ADDRESS OF MSG TO R1 @V200899 01265000
  755. LA R0,M461RLN MSG LENGHT TO R0 @V200899 01266000
  756. CALL DMKQCNWT,PARM=NORET+ERRMSG+NOAUTO GO SEND @V200899 01267000
  757. LA R0,16 LENGTH OF REPLY TO R0 @V200899 01268000
  758. LA R1,OPMREPLY REPLY BUFFER ADDRESS TO R1 @V200899 01269000
  759. CALL DMKQCNRD,PARM=UCASE+EDIT @V200899 01270000
  760. BNZ NOCHANG SOMETHING WENT WRONG DURING REPLY@V200899 01271000
  761. CL R0,F3 CORRECT REPLY LENGTH ? @VM08851 01272000
  762. BNE NOCHANG NO -- ABORT THE COMMAND @VM08851 01273000
  763. CLC OPMREPLY(3),=C'YES' IS REPLY 'YES' @V200899 01274000
  764. BE RNIOXIT UH HUH - GO DO THE FUNCTION @V200899 01275000
  765. NOCHANG EQU * @V200899 01276000
  766. LA R2,461 SET RETURN CODE FOR CALLER @V200899 01277000
  767. B NLEERXIT NO, EXIT WITHOUT DOING IT @V200899 01278000
  768. EJECT 01279000
  769. IORETRY EQU * @V200899 01280000
  770. BAL R7,FRERBLOK GO FREE IOERBLOK (IF ANY) @V200899 01281000
  771. MVI IOBFLAG,X'00' CLEAR IOBLOK FLAG BYTE @VM08672 01282000
  772. L R1,IOBCSW GET CSW FROM IOBLOK @V200899 01283000
  773. S R1,F8 BACK UP TO POINT AT CCW IN ERROR @V200899 01284000
  774. BNP IORSTRT RETRY FROM THE BEGINNING @VM08672 01285000
  775. ST R1,IOBRCAW RETRY FROM THE FAILING CCW @VM08672 01286000
  776. OI IOBFLAG,IOBRSTRT . . .VIA RESTART CAW @VM08672 01287000
  777. IORSTRT EQU * CHECK RETRY COUNT @VM08672 01288000
  778. LH R1,IOBRCNT GET RETRY COUNTER @V200899 01289000
  779. S R1,F1 SUBTRACT 1 @V200899 01290000
  780. STH R1,IOBRCNT AND PUT BACK @V200899 01291000
  781. BP RESTRNIO CONTINUE UNTIL COUNT IS ZERO @V200899 01292000
  782. TM IOBSPEC,IOBTIO WAS ERROR ON TIO ? @V200899 01293000
  783. BO NLE040 YES, TREAT AS IF DEVICE NON-EXIST@V200899 01294000
  784. RNIOER EQU * @V200899 01295000
  785. BAL R7,FRERBLOK GO FREE IOERBLOK (IF ANY) @V200899 01296000
  786. LM R0,R9,RNSVREGS RESTORE REGS AT TIME OF I/O CALL @V200899 01297000
  787. B NLE471 FATAL I/O ERROR @V305435 01298000
  788. RNIOXIT EQU * @V200899 01299000
  789. BAL R7,FRERBLOK GO FREE IOERBLOK (IF ANY) @V200899 01300000
  790. SWITCH CONTINUE ON THE I/O PROCESSOR @V407508 01300100
  791. LM R0,R9,RNSVREGS RESTORE REGS FOR CALLER @V200899 01301000
  792. BR R9 I/O WAS OK - RETURN TO CALLER @V200899 01302000
  793. SPACE 3 01303000
  794. *---------------------------------------------------------------------* 01304000
  795. * THIS SUBROUTINE WILL FREE THE IOERBLOK IF ANY EXISTS 01305000
  796. *---------------------------------------------------------------------* 01306000
  797. SPACE 01307000
  798. FRERBLOK EQU * @V200899 01308000
  799. L R1,IOBIOER GET IOERBLOK ADDR @V200899 01309000
  800. LTR R1,R1 DOES ONE EXIST @V200899 01310000
  801. BZ NOERBLOK NO, SKIP FREE CODE @V200899 01311000
  802. LA R0,IOERSIZE SIZE OF IOERBLOK TO R0 @V200899 01312000
  803. AH R0,IOEREXT-IOERBLOK(R1) ADD LENGTH OF EXT. @V200899 01313000
  804. CALL DMKFRET GO FREE IT @V200899 01314000
  805. XC IOBIOER(4),IOBIOER ZERO IOERBLOK PTR IN IOBLOK @V200899 01315000
  806. NOERBLOK EQU * @V200899 01316000
  807. BR R7 RETURN TO MAIN LINE CODE @V200899 01317000
  808. EJECT 01318000
  809. *---------------------------------------------------------------------* 01319000
  810. * THIS SUBROUTINE WILL DISPOSE OF ALL RESOURCES THAT STILL ARE HELD * 01320000
  811. * AT EXIT FROM DMKNLE. THIS IS TO AVOID THE POSSIBILITY OF * 01321000
  812. * ANYTHING REMAINING IN CORE OR IN A STATUS (IE. LOCKED) THAT DID * 01322000
  813. * NOT EXIST AT ENTRY TO DMKNLE. IT IS DRIVEN BY FLAG BITS SET IN * 01323000
  814. * THE HIGH ORDER BYTE OF SAVEWRK1 (SEE EQUATES AT START OF MODULE * 01324000
  815. * FOR APPROPRIATE MEANINGS OF BITS). * 01325000
  816. *---------------------------------------------------------------------* 01326000
  817. SPACE 01327000
  818. CLEANUP EQU * @V200899 01328000
  819. TM SAVEWRK1,BOOTSFLG NEED TO UNLOCK BOOTSTRAPS @VM08692 01329000
  820. BZ CHKRBUF NO -- SEE ABOUT PAGE BUFFER @VM08692 01330000
  821. CALL DMKPTRUL UNLOCK BOOTSTRAP (GR2 IS O.K.) @VM08692 01331000
  822. NI SAVEWRK1,255-BOOTSFLG TIDINESS PAYS OFF @VM08692 01332000
  823. CHKRBUF EQU * @VM08692 01333000
  824. TM SAVEWRK1,UNLKBUF BUFFER TO BE UNLOCKED ? @V200899 01334000
  825. BZ CHKRELSE NO, SEE IF BUFFER TO BE RELEASED @V200899 01335000
  826. BAL R9,BUFUNLK UNLOCK THE BUFFER PAGE @VM08949 01336000
  827. CHKRELSE EQU * @V200899 01337000
  828. TM SAVEWRK1,PGTVREL BUFFER TO BE RELEASED? @V200899 01338000
  829. BZ CHKQSPF NO, CHECK FOR SPOOL FILE QUEUE@V200899 01339000
  830. L R1,SAVEWRK7 GET VADDR OF BUFFER @V200899 01340000
  831. CALL DMKPGTVR GO RELEASE IT @V200899 01341000
  832. NI SAVEWRK1,255-PGTVREL ADDRESS RELEASED @VM08692 01342000
  833. CHKQSPF EQU * @V200899 01343000
  834. TM SAVEWRK1,QSPFLAG DO WE HAVE TO QUEUE SPOOL @V200899 01344000
  835. BZ CHKRNREL NO, CHECK FOR WORK AREAS @V200899 01345000
  836. BAL R9,QSPFILE CLOSE AND QUEUE DUMP SPOOL FILE @VM08671 01346000
  837. NI SAVEWRK1,255-QSPFLAG SFBLOK HAS BEEN QUEUED @VM08692 01347000
  838. CHKRNREL EQU * @V200899 01348000
  839. TM SAVEWRK1,RNSAVREL WORK AREAS TO BE FREED ? @VM08692 01349000
  840. BCR 8,R7 NO - ALL DONE @V200899 01350000
  841. L R1,IOBMISC GET ADDR OF RNIOSAV @V200899 01351000
  842. LA R0,RNWKSIZE LENGTH OF RNIOSAV TO R0 @V200899 01352000
  843. CALL DMKFRET GO FREE IT @V200899 01353000
  844. LR R1,R10 IOBLOK ADDR TO R1 @V200899 01354000
  845. LA R0,IOBSIZE SIZE OF IOBLOK FOR FREE @V200899 01355000
  846. CALL DMKFRET GO FREE IOBLOK @V200899 01356000
  847. L R8,SAVEWRK9 370X REAL DEVICE BLOCK @V200899 01357000
  848. NI RDEVFLAG,255-RDEVRCVY RECOVERY NOT ACTIVE @V200899 01358000
  849. NI SAVEWRK1,255-RNSAVREL ALL CLEANED UP @VM08692 01359000
  850. BR R7 RETURN TO MAIN LINE CODE @V200899 01360000
  851. EJECT 01361000
  852. NLE003 LA R2,3 LOAD ERROR CODE @V200899 01364000
  853. B CALLERM . . . @V200899 01365000
  854. NLE006 EQU * @V200899 01366000
  855. LA R2,6 SET ERROR CODE @V200899 01367000
  856. B NLERADD GO SETUP FOR DMKERMSG @V200899 01368000
  857. NLE021 EQU * @V200899 01369000
  858. LA R2,21 SET ERROR CODE @V200899 01370000
  859. B NOVAR @V200899 01371000
  860. NLE040 EQU * @V200899 01374000
  861. BAL R7,CLEANUP UNLOCK, FRET, ETC. @V200899 01375000
  862. LA R2,040(0) MSG= DMKNLE040E @V200899 01376000
  863. NLERADD EQU * SETUP RADDR PARM FOR DMKERMSG @V200899 01377000
  864. LH R1,SAVEWRK1+2 GET RADDR OF 370X @V200899 01378000
  865. CALL DMKCVTBH CONVERT TO PRINTABLE FORM @V200899 01379000
  866. N R1,X40FFS BLANK HIGH BYTE @V200899 01380000
  867. SLR R0,R0 ZERO LENGTH REGISTER @V200899 01381000
  868. B CALLERM . . . @V200899 01382000
  869. NLE046 EQU * @V200899 01390000
  870. BAL R7,TYPRADD SETUP TYPE, RADDR FOR DMKERM @V200899 01391000
  871. LA R2,046(0) MSG= DMKNLE046E @V200899 01392000
  872. B CALLERM GO PUT OUT ERROR MSG @V200899 01393000
  873. NLE140 EQU * CTLR XXX ATTACHED TO USERID @V200899 01394000
  874. BAL R7,TYPRADD SETUP TYPE, RADDR FOR DMKERM @V200899 01395000
  875. L R2,RDEVUSER ADDRESS OF USER'S VMBLOK @VA01880 01396000
  876. MVC SAVEWRK4+1(8),VMUSER-VMBLOK(R2) USERID @VA01880 01397000
  877. MVI SAVEWRK4,X'00' FIELD DELIMITER FOR DMKERM @VA01880 01398000
  878. LA R0,17 LENGTH OF PARMS TO R0 @V200899 01399000
  879. LA R2,140(0) MSG= DMKNLE140E @VA01880 01400000
  880. B CALLERM GO PUT OUT ERROR MSG @V200899 01401000
  881. NLE143 EQU * CTLR XXX IN USE BY SYSTEM @V200899 01402000
  882. BAL R7,TYPRADD SETUP TYPE, RADDR FOR DMKERM @V200899 01403000
  883. LA R2,143(0) MSG= DMKNLE143E @V200899 01404000
  884. B CALLERM . . . @V200899 01405000
  885. SPACE 01425000
  886. NLE469 LA R15,469 TEMP SPACE UNAVAILABLE @VM03030 01426000
  887. B NLEMSG ISSUE MESSAGE @V305435 01427000
  888. SPACE 1 01428000
  889. NLE470 LA R15,470 PAGING I/O ERROR @VM03030 01429000
  890. B NLEMSG ISSUE MESSAGE @V305435 01430000
  891. SPACE 1 01431000
  892. NLE471 LA R15,471 UNRECOVERABLE I/O ERROR @VM03030 01432000
  893. B NLEMSG ISSUE MESSAGE @V305435 01433000
  894. SPACE 1 01434000
  895. NLE460 LA R15,460 PROGRAM CHECK IN BOOTSTRAP @VM03030 01435000
  896. B NLEMSG ISSUE MESSAGE @V305435 01436000
  897. EJECT 01437000
  898. NLEMSG ST R15,SAVER2 SAVE ERROR RETURN CODE FOR CALLER@VM03030 01438000
  899. BAL R7,CLEANUP CLEAN UP AS REQUIRED @VM03030 01439000
  900. XC SAVEWRK2(L'SAVEWRK2*2),SAVEWRK2 AREA FOR MESSAGE@V305435 01440000
  901. L R2,SAVER2 ERROR CODE NEEDED FOR DMKERM @VM03030 01441000
  902. LH R1,SAVEWRK1+2 'RADDR' TO CONVERT @V305435 01442000
  903. CALL DMKCVTBH CONVERT IT TO HEX @V305435 01443000
  904. STCM R1,B'0111',SAVEWRK2 SAVE 'RADDR' IN MESSAGE @V305435 01444000
  905. MVC SAVEWRK3,=C'DUMP' CHANGE IT TO 'DUMPING' @V305435 01448000
  906. NLEMSGOK LA R1,SAVEWRK2 ADDRESS OF MESSAGE TEXT @V305435 01449000
  907. LA R0,L'SAVEWRK2*2 AND LENGTH OF THE TEXT @V305435 01450000
  908. B CALLERM CALL THE MESSAGE WRITTER @V305435 01451000
  909. EJECT 01452000
  910. NLE464E EQU * CC = 3 DURING LOAD OR DUMP I/O @VM08775 01453000
  911. BAL R7,CLEANUP CLEAN UP AS NECESSARY @VM08775 01454000
  912. LH R1,SAVEWRK1+2 370X DEVICE ADDRESS @VM08775 01455000
  913. CALL DMKCVTBH CONVERT FOR OUTPUT @VM08775 01456000
  914. ICM R1,8,BLANKS HIGH-ORDER BLANK FOR DMKERMSG @VM08775 01457000
  915. SLR R0,R0 DATA IS IN GR1 @VM08775 01458000
  916. LA R2,464(0) MSG= DMKNLE464E @VM08775 01459000
  917. B CALLERM @VM08775 01460000
  918. SPACE 01461000
  919. TYPRADD EQU * BUILD TYPE, RADDR PARMS FOR DMKERMSG @V200820 01462000
  920. MVC SAVEWRK2(4),=C'CTLR' MOVE IN DEVICE NAME @V200820 01463000
  921. LH R1,SAVEWRK1+2 REAL DEVICE ADDRESS @V200820 01464000
  922. CALL DMKCVTBH CONVERT DEVICE ADDR (R8 IS ALL SE@V200820 01465000
  923. ST R1,SAVEWRK3 PUT DEV ADDR IN ERMSG PARM LIST @V200820 01466000
  924. MVI SAVEWRK3,X'00' MOVE IN SEPARATER @V200820 01467000
  925. LA R0,8 LENGTH OF PARMS TO R0 @V200820 01468000
  926. LA R1,SAVEWRK2 ADDRESS OF PARMS TO R1 @V200820 01469000
  927. BR R7 RETURN @V200820 01470000
  928. SPACE 01471000
  929. NOVAR SR R1,R1 ZERO ARG REG @V200899 01472000
  930. CALLERM ICM R0,14,MODID+3 INSERT MODULE ID @V200899 01473000
  931. TM SAVEWRK1,FROMNET ENTER VIA CONSOLE FUNCTION ?@V200820 01474000
  932. BO *+8 YES - O.K. TO SEND AS IS @V200820 01475000
  933. O R2,=X'20000000' SEND MSG TO SYSTEM OPERATOR @V200820 01476000
  934. CALL DMKERMSG CALL MESSAGE MODULE @V200820 01477000
  935. *--------------------------------------------------------------------* 01478000
  936. * MESSAGE MODULE RETURNS DIRECTLY TO CALLER 01479000
  937. *--------------------------------------------------------------------* 01480000
  938. NLEEXIT EQU * @V200899 01481000
  939. SR R2,R2 ZERO RETURN CODE REG @V200899 01482000
  940. NLEERXIT EQU * @V200899 01483000
  941. ST R2,SAVER2 STORE RETURN CODE FOR USER @V200899 01484000
  942. BAL R7,CLEANUP GO RELEASE AND UNLOCK ANY AREAS @V200899 01485000
  943. * THAT WERE OBTAINED BY DMKNLE 01486000
  944. EXIT AND EXIT @V200899 01487000
  945. EJECT 01488000
  946. *---------------------------------------------------------------------* 01489000
  947. * INTERNAL MESSAGES AND RESPONSES GENERATED AND USED BY DMKNLE * 01490000
  948. *---------------------------------------------------------------------* 01491000
  949. SPACE 01492000
  950. DUMPMSG DC C'CTLR XXX DUMP COMPLETE ' @V200820 01493000
  951. DMPMSGLN EQU *-DUMPMSG @V200820 01494000
  952. COMPRADD EQU 5 RADDR LOCATION IN DUMPMSG @V407508 01497000
  953. * 01499000
  954. M461SKEL DC C'DMKNLE461R CTLR XXX IPL NOT REQUIRED; ' @V200899 01500000
  955. DC C'ENTER ''YES'' TO CONTINUE: ' @V200899 01501000
  956. M461RLN EQU (*-M461SKEL) LENGTH OF DMKNLE461R MESSAGE @V200899 01502000
  957. M461RADD EQU 16 LOC OF RADDR FIELD IN DMKNLE461R MS@V200899 01503000
  958. SPACE 01504000
  959. NOPCCW DC X'0300000020000001' UTILITY NO-OP CCW @V200899 01505000
  960. EJECT 01506000
  961. LTORG @V200899 01507000
  962. EJECT 01508000
  963. *--------------------------------------------------------------------* 01509000
  964. * THE FOLLOWING DSECT IS USED BY THE 3705 LOAD/DUMP PROGRAMS TO MAP * 01510000
  965. * THE 3705 I/O CCWS AND REGISTER SAVE AREA FOR I/O ROUTINES * 01511000
  966. *--------------------------------------------------------------------* 01512000
  967. SPACE 01513000
  968. RNIOSAV DSECT @V200899 01514000
  969. RNCCWS DS 9D CCW AREA ( 9 DOUBLEWORDS ) @V200899 01515000
  970. OPMREPLY EQU RNCCWS AREA FOR OPERATOR REPLY TO '461R'@V200899 01516000
  971. RNSVREGS DS 10F I/O REG SAVE AREA (REGS 0 - 9) @V200899 01517000
  972. OVFLOSIZ DS 1F SAVE AREA FOR SIZE OF LAST LOAD IMAGE@V200899 01518000
  973. NEXTADDR EQU OVFLOSIZ NEXT ADDR FOR 370X DUMP PROGRAM @V200899 01519000
  974. NEXTLNTH DS 1H SIZE OF NEXT RECORD FOR DUMP @V200899 01520000
  975. DS 1H UNUSED @V200899 01521000
  976. RNWKSIZE EQU (*-RNIOSAV)/8 SIZE IN DOUBLE WORDS @V200899 01522000
  977. SPACE 3 01523000
  978. *--------------------------------------------------------------------* 01524000
  979. * THE FOLLOWING EQUATES ARE USED BY THE 3705 LOAD/DUMP I/O ROUTINES * 01525000
  980. *--------------------------------------------------------------------* 01526000
  981. SPACE 01527000
  982. WIPLOP EQU X'05' WRITE IPL CCW OP CODE @V200899 01528000
  983. WRTBRKOP EQU X'09' WRITE BREAK CCW OP CODE @V200899 01529000
  984. WRITEOP EQU X'01' WRITE CCW OP CODE @V200899 01530000
  985. READOP EQU X'02' READ CCW OP CODE @V200899 01531000
  986. SPACE 01531100
  987. NONE EQU X'00' USED TO INITIALIZE FLAG BYTE @V407508 01531200
  988. EJECT 01532000
  989. COPY NETWORK @V200899 01535000
  990. COPY EQU @V200899 01536000
  991. COPY DEVTYPES @V200899 01537000
  992. PSA @V200899 01538000
  993. COPY SAVE @V200899 01539000
  994. COPY VMBLOK @V200899 01540000
  995. COPY RBLOKS @V200899 01541000
  996. EJECT 01542000
  997. COPY VBLOKS @V240820 01543000
  998. COPY IOBLOKS @V306638 01544000
  999. COPY IOER @V200899 01545000
  1000. COPY SPOOL @V200899 01546000
  1001. END DMKNLE 01547000
ibm/vm370-lib/cp/dmknle.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator