Table of Contents

DMKNLD Source

References

Source Listing

DMKNLD.ASSEMBLE.txt
  1. NLD TITLE 'DMKNLD (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCEING OF INPUT 00002000
  3. *. 00003000
  4. * MODULE NAME - 00004000
  5. * 00005000
  6. * DMKNLD 00006000
  7. * 00007000
  8. * FUNCTION - 00008000
  9. * 00009000
  10. * TO PERFORM THE LOAD FUNCTION ON THE 3705 INDICATED. 00010100
  11. * 00011000
  12. * ATTRIBUTES - 00012000
  13. * 00013000
  14. * REENTRANT, PAGEABLE, CALLED VIA SVC 00014000
  15. * 00015000
  16. * ENTRY POINTS - 00016000
  17. * DMKNLDR - ENTRY TO LOAD 3705 NETWORK CONTROL PROGRAM 00017000
  18. * 00019000
  19. * NOTE: THIS ROUTINE MAY BE CALLED VIA CONSOLE COMMAND FROM DMKNET 00020100
  20. * OR INTERNALLY BY DMKCPI. 00021100
  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 DMKCPI - 00033100
  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. * DMKSCNVU - TO LOCATE ADDRESSES OF THE VIRTUAL DEVICE BLOKS 00056000
  56. * DMKSCNRU - TO LOCATE ADDRESSES OF THE REAL DEVICE BLOKS 00057000
  57. * DMKQCNWT - TO OUTPUT MESSAGES TO THE TERMINAL 00058000
  58. * DMKFREE - TO OBTAIN STORAGE FROM FREE STORAGE 00059000
  59. * DMKFRET - TO RETURN STORAGE TO FREE STORAGE 00060000
  60. * DMKPGTVG - TO GET A BUFFER OF PAGEABLE CP CORE. 00061000
  61. * DMKPGTVR - TO RELEASE A BUFFER OF PAGEABLE CP CORE. 00062000
  62. * DMKPTRUL - TO UNLOCK A PAGE IN VIRTUAL MACHINE 00063000
  63. * DMKERMSG - TO SEND ERROR MESSAGES TO THE TERMINAL. 00064000
  64. * DMKPTRAN - TO BRING A PAGE IN CORE 00065000
  65. * DMKCVTBH - CONVERT BINARY DATA TO HEXADECMAL 00066000
  66. * DMKSTKIO - TO STACK AN I/O BLOCK FOR PROCESSING 00067000
  67. * DMKRPAGT - TO READ A PAGE IN CORE 00069000
  68. * DMKSCNVS - TO SEARCH FOR A VOLUME 00070000
  69. * DMKIOSQR - TO PERFORM I/O OPERATIONS ON 3705 00071000
  70. * 00074000
  71. * EXTERNAL REFERENCES - 00075000
  72. * 00076000
  73. * CXWMINI1 - 370X CHANNEL ADAPTER TYPE1 LOADER BOOTSTRAP PHASE1 00077000
  74. * CXWMINI2 - 370X CHANNEL ADAPTER TYPE1 LOADER BOOTSTRAP PHASE2 00078000
  75. * CXWMAXI1 - 370X CHANNEL ADAPTER TYPE2 LOADER BOOTSTRAP PHASE1 00079000
  76. * CXWMAXI2 - 370X CHANNEL ADAPTER TYPE2 LOADER BOOTSTRAP PHASE2 00080000
  77. * DMKRNHIN - LOCATION OF 370X TERMINAL INTERRUPT HANDLER 00086000
  78. * DMKRNTBL - LOCATION OF NCPNAME TABLE 00087000
  79. * 00088000
  80. * 00089000
  81. * TABLES/WORKAREAS - NONE 00090000
  82. * 00091000
  83. * REGISTER USAGE - 00092000
  84. * 00093000
  85. * GPR0 - ARGUMENT LENGTH (PASSED BACK FROM DMKSCNFD) 00094000
  86. * GPR1 - ARGUMENT ADDRESS (PASSED BACK FROM DMKSCNFD) 00095000
  87. * GPR2 - PASS PARAMETERS TO CALLED ROUTINES 00096000
  88. * GPR3 - WORK REG 00097000
  89. * GPR4 - WORK REG 00098000
  90. * GPR5 - WORK REG 00099000
  91. * GPR6 - WORK REG 00100000
  92. * GPR7 - INTERNAL LINKAGE REG 00101000
  93. * GPR8 - RDEVBLOK ADDRESS (FROM SYSTEM ROUTINES) 00102000
  94. * GPR9 - COMMAND LINE BUFFER (FROM DMKNET) AND LINKAGE REG 00103000
  95. * GPR10 - IOBLOK ADDRESS 00104000
  96. * GPR11 - VMBLOK ADDRESS 00105000
  97. * GPR12 - BASE REG 00106000
  98. * GPR13 - SAVEAREA ADDRESS 00107000
  99. * GPR14 - LINKAGE REG 00108000
  100. * GPR15 - LINKAGE REG 00109000
  101. *. 00110000
  102. EJECT 00111000
  103. COPY OPTIONS @V200899 00112000
  104. COPY LOCAL @V200899 00113000
  105. SPACE 2 00114000
  106. DMKNLD START , @V200899 00115000
  107. SPACE 00116000
  108. MODID DC CL8'DMKNLD' @V200899 00117000
  109. SPACE 00118000
  110. USING PSA,R0 @V200899 00119000
  111. USING RDEVBLOK,R8 @V200899 00120000
  112. USING IOBLOK,R10 @V200899 00121000
  113. USING VMBLOK,R11 @V200899 00122000
  114. USING SAVEAREA,R13 @V200899 00123000
  115. SPACE 00124000
  116. EXTRN DMKPGTVG,DMKPGTVR,DMKPGTCG,DMKPGTSD @V200899 00125000
  117. EXTRN DMKSCNFD,DMKSCNRU,DMKSCNVS,DMKSCNRD @V200899 00126000
  118. EXTRN DMKCVTBH,DMKCVTHB,DMKCVTDT,DMKSCNVU @V240820 00127000
  119. EXTRN DMKIOSQR,DMKQCNRD,DMKERMSG @V200899 00128000
  120. EXTRN DMKRPAGT,DMKSTKIO,DMKPTRUL @V407508 00129100
  121. EXTRN DMKQCNCL,DMKQCNTO,DMKVDREL @V240820 00130000
  122. EXTRN DMKPTRAN,DMKQCNWT @V407508 00130100
  123. SPACE 00132000
  124. EXTRN DMKRNHIN,DMKRNTBL,DMKSYSDU @V407508 00133100
  125. EXTRN CXWMAXI1,CXWMAXI2,CXWMINI1,CXWMINI2 LOADER @V200899 00134000
  126. EJECT 00137000
  127. *. 00138000
  128. * COMMAND LINE FORMAT - 00139000
  129. * 00140000
  130. * +---------+-----------------------------------+ 00141000
  131. * | NETWORK | LOAD RADDR NCPNAME | 00142000
  132. * | NET | | 00143000
  133. * +---------+-----------------------------------+ 00144000
  134. * 00145000
  135. * OPERATION - 00153000
  136. * 00154000
  137. * 1. DETERMINE WHETHER ENTRY WAS FROM SYSTEM OR VIA NETWORK 00155000
  138. * CONSOLE COMMAND. IF ENTERED FROM SYSTEM, GO TO STEP 10. 00156100
  139. * OTHERWISE SET NETWORK CALL FLAG AND CONTINUE. 00157100
  140. * 2. CALL DMKSCNFD TO GET 'RADDR' OPERAND FROM COMMAND LINE. 00159000
  141. * IF NO OPERAND, CALL DMKERMSG TO SEND MESSAGE DMKNLD021E. 00160000
  142. * 3. CALL DMKCVTHB TO CONVERT 'RADDR' TO BINARY. IF ERROR ON 00161000
  143. * CONVERSION, CALL DMKERMSG TO SEND MESSAGE DMKNLD021E. 00162000
  144. * 4. CALL DMKSCNRU TO GET REAL DEVICE (RDEVBLOK) FOR 'RADDR' 00163000
  145. * DEVICE. IF DEVICE DOES NOT EXIST, CALL DMKERMSG TO SEND 00164000
  146. * MESSAGE DMKNLD040E. 00165000
  147. * 5. DETERMINE WHETHER 'RADDR' DEVICE IS A 370X. IF NOT, CALL 00166000
  148. * DMKERMSG TO SEND DMKNLD006E MESSAGE. 00167000
  149. * 6. CHECK IF 370X IS CURRENTLY OFFLINE. IF SO, CALL DMKERMSG 00168000
  150. * TO SEND MESSAGE DMKNLD046E. 00169000
  151. * 7. DETERMINE IF 370X IS DEDICATED TO A USER. IF YES, CALL 00170000
  152. * DMKERMSG TO SEND MESSAGE DMKNLD140. 00171000
  153. * 8. IF REQUEST IS FOR THE DUMP FUNCTION, GO TO STEP 25: 00172000
  154. * OTHERWISE CALL DMKSCNFD TO GET 'NCPNAME' OPERAND 00173000
  155. * FOR LOAD PROCESSING. IF NO OPERAND IS FOUND, CALL 00174000
  156. * DMKERMSG TO SEND MESSAGE DMKNLD026E. 00175000
  157. * 9. IF 'NCPNAME' OPERAND IS GREATER THAN EIGHT (8) CHARACTERS, 00176000
  158. * CALL DMKERMSG TO SEND MESSAGE DMKNLD002E: OTHERWISE PLACE 00177000
  159. * 'NCPNAME' IN RDEVBLOK FOR 370X. 00178000
  160. * 10. TRANS IN DMKRNTBL 00179000
  161. * 11. SEARCH DMKRNTBL FOR THE ENTRY CORRESPONDING TO 'NCPNAME' 00180000
  162. * IF NO ENTRY IS FOUND, CALL DMKERMSG TO SEND MESSAGE 00181000
  163. * DMKNLD044E. 00182000
  164. * 12. CALL DMKSCNVS TO FIND TARGET DASD VOLUME ( AS INDICATED BY 00183000
  165. * DMKRNTBL ENTRY ). IF NOT FOUND, CALL DMKERMSG TO 00184000
  166. * SEND MESSAGE DMKNLD171E. 00185000
  167. * 13. DETERMINE WHETHER VOLUME IS CP-OWNED. IF NOT, CALL 00186000
  168. * DMKERMSG TO SEND MESSAGE DMKNLD171E. 00187000
  169. * 14. CALCULATE MAXIMUM NUMBER OF PAGES / CYL FOR THE DEVICE 00188000
  170. * CONTAINING THE TARGET VOLUME. 00189000
  171. * 15. CALL DMKPGTVG TO GET A PAGE OF CP PAGEABLE CORE FOR USE 00190000
  172. * AS A BUFFER. 00191000
  173. * 16. TRANS IN DASD PAGE CONTAINING CCPARM (IE. FIRST RECORD 00192000
  174. * OF NCP SAVED IMAGE) AND DETERMINE WHETHER THE NCP IMAGE 00193000
  175. * WILL FIT IN THE SPECIFIED 370X. IF NOT, CALL DMKERMSG TO 00194000
  176. * SEND MESSAGE DMKNLD170E. IF NCP WILL FIT, SAVE THE SIZE OF 00195000
  177. * THE NCP AND THE ENTRY POINT ADDRESS (OBTAINED FROM CCPARM) 00196000
  178. * ALSO FIND THE DASD ADDRESS OF THE FIRST NCP CORE IMAGE 00197000
  179. * RECORD BY CALCULATING THE NUMBER OF RESOURCE DATA 00198000
  180. * RECORDS FROM THE SIZE VALUE CONTAINED IN CCPARM. 00199000
  181. * 17. IF A NICLIST ALREADY EXISTS FOR THE 370X, CALCULATE ITS 00200000
  182. * SIZE FROM VALUES IN 370X RDEVBLOK AND CALL DMKFRET TO 00201000
  183. * FREE IT. ALSO MARK RDEVBLOK AS INACTIVE. 00202000
  184. * 18. GO TO IOBINIT SUBROUTINE TO GET AND INITIALIZE AN 00203000
  185. * IOBLOK AND ADDITIONAL SAVE AREA FOR USE BY THE 370X 00204000
  186. * I/O ROUTINE. 00205000
  187. * 19. IF LOAD FUNCTION WAS REQUESTED VIA CONSOLE COMMAND, 00206000
  188. * ISSUE A TIO TO THE 370X TO DETERMINE ITS STATUS (THIS 00207000
  189. * IS UN-NECESSARY IF THE CALLER WAS A SYSTEM ROUTINE). 00208000
  190. * 20. MARK 370X AS NOT READY AND GO TO SNDBOOTS SUB-ROUTINE 00209000
  191. * TO TRANSMIT THE OS/360 LOADER BOOTSTRAP PROGRAM TO THE 00210000
  192. * 370X. ANY ERRORS THAT OCCUR DURING THE BOOTSTRAP 00211000
  193. * ROUTINE WILL RESULT IN MESSAGE: 00212000
  194. * 00213000
  195. * DMKNLD460E CTLR 'RADDR' LOAD FAILED; PROGRAM CHECK 00214000
  196. * 00215000
  197. * 21. USING DMKRPAPT, READ IN THE CORE IMAGE RECORDS FROM THE 00216000
  198. * TARGET DASD, BUILD CCWS TO DEBLOCK FROM 4K TO 512 BYTES, 00217000
  199. * AND TRANSMIT CORE IMAGE TO 370X. 00218000
  200. * 22. TRANSMIT THE ENTRY POINT ADDRESS SAVED IN STEP 16 TO THE 00219000
  201. * 370X. 00220000
  202. * 23. READ IN THE FIRST RESOURCE DATA RECORD (IE. CCPARM), AND 00221000
  203. * CALCULATE THE SIZE OF THE NICLIST NEED FOR THIS NCP, 00222000
  204. * CALL DMKFREE TO OBTAIN STORAGE FOR THE NICLIST,AND 00223000
  205. * FILL IN THE NEW NICLIST FROM DATA CONTAINED IN THE 00224000
  206. * RESOURCE RECORDS (IF NECESSARY, ADDITIONAL RESOURCE 00225000
  207. * RECORDS WILL BE READ IN). 00226000
  208. * 24. SEND COMPLETION RESPONSE, CALL DMKFRET TO FREE 00227000
  209. * IOBLOK AND SAVE AREA, RELEASE BUFFER BACK TO CP, AND EXIT. 00228000
  210. * 00277000
  211. * RESPONSES - 00278000
  212. * CTLR (RADDR) (NCPNAME) LOAD COMPLETE 00279000
  213. * 00281000
  214. * ERROR MESSAGES - 00282000
  215. * DMKNLD002E INVALID OPERAND - (OPERAND) 00283000
  216. * DMKNLD006E INVALID DEVICE TYPE (ADDR) 00285000
  217. * DMKNLD021E RADDR MISSING OR INVALID 00286000
  218. * DMKNLD026E OPERAND MISSING OR INVALID 00287000
  219. * DMKNLD040E DEV (ADDR) DOES NOT EXIST 00288000
  220. * DMKNLD044E SYSTEM (NAME) DOES NOT EXIST 00289000
  221. * DMKNLD170E SYSTEM (NAME) EXCEEDS STORAGE 00290000
  222. * DMKNLD171E SYSTEM (NAME) VOLID (VOLID) NOT MOUNTED 00291000
  223. * DMKNLD179E SYSTEM (NAME) VOLID (VOLID) NOT CP OWNED 00292000
  224. * DMKNLD046E CTLR 'RADDR' OFFLINE 00293000
  225. * DMKNLD140E CTLR 'RADDR' ATTACHED TO 'USERID' 00294000
  226. * DMKNLD143E CTLR 'RADDR' IN USE BY SYSTEM 00295000
  227. * DMKNLD460E CTLR 'RADDR' LOAD FAILED; PROGRAM CHECK 00296100
  228. * DMKNLD470E CTLR 'RADDR' LOAD FAILED; PAGING I/O ERROR 00298100
  229. * DMKNLD471E CTLR 'RADDR' LOAD FAILED; UNRECOVERABLE I/O ERROR 00299100
  230. * DMKNLD464E CTLR 'RADDR' CC = 3; DEPRESS 370X "LOAD" BUTTON 00301000
  231. * DMKNLD461R CTLR 'RADDR' IPL NOT REQUIRED; ENTER "YES" TO CONTINUE 00302000
  232. *. 00303000
  233. SPACE 2 00304000
  234. *--------------------------------------------------------------------* 00305000
  235. * EQUATES USED IN FLAG BYTE IN SAVEWRK1 * 00306000
  236. *--------------------------------------------------------------------* 00307000
  237. SPACE 00308000
  238. FROMNET EQU X'80' CALL WAS FROM NETWK CMD (DMKNET) @V200899 00309000
  239. BOOTSFLG EQU X'10' BOOTSTRAP REC PROC'NG INDICATOR @V200899 00312000
  240. UNLKBUF EQU X'08' UNLOCK REQUIRED FOR PAGE BUFFER @V200899 00313000
  241. PGTVREL EQU X'04' RELEASE REQD FOR VIRT BUFF ADDR @V200899 00314000
  242. RNSAVREL EQU X'01' IOBLOK & RNIOSAV AREAS MUSTBE FREED@V200899 00317000
  243. SPACE 2 00318000
  244. DMKNLDR RELOC ENTRY POINT FOR 370X LOAD PROCESS@V200899 00319000
  245. SWITCH CONTINUE ON THE I/O PROCESSOR @V407508 00320100
  246. MVI SAVEWRK1,NONE INITIALIZE FLAG BYTE @V407508 00320200
  247. BAL R10,CHKENTY CHECK ENTRY CONDITIONS @VM08949 00321000
  248. MVC SAVEWRK2(8),RDEVNCP PUT NCPNAME IN SAVE AREA @VA01667 00322000
  249. B LOADNCP PROCESS SYSTEM LOAD REQUEST @V200899 00323000
  250. SPACE 2 00324000
  251. CHKENTY EQU * CHECK FOR SYSTEM OR C.F. ENTRY @VM08949 00330000
  252. TM SAVER2+3,SYSTEM ENTRY VIA CONSOLE FUNCTION ?@V200899 00331000
  253. BZ NETCALL YES - SETUP FOR PARM SCAN @V200899 00332000
  254. ST R8,SAVEWRK9 SAVE RDEVBLOK POINTER @V200899 00333000
  255. CALL DMKSCNRD GET 'CCU' ADDRESS IN GR1 @V200899 00334000
  256. STH R1,SAVEWRK1+2 SAVE IT FOR LATER MESSAGES @V200899 00335000
  257. BR R10 RETURN FOR IMMEDIATE COMMAND @VM08949 00336000
  258. EJECT 00337000
  259. NETCALL EQU * CONSOLE FUNCTION 'NETWORK LOAD/DUMP' @V200899 00338000
  260. IC R2,SAVEWRK1 PICK UP FLAG BYTE @V200899 00339000
  261. SVC 16 RETURN DIRECTLY TO DMKCFM ON EXIT@V200899 00340000
  262. STC R2,SAVEWRK1 RESET LOAD/DUMP FLAG BIT @V200899 00341000
  263. OI SAVEWRK1,FROMNET ENTERED FROM DMKNETWK @V200899 00342000
  264. CALL DMKSCNFD LOCATE REAL DEVICE ADDRESS @V200899 00343000
  265. BNZ NLD021 BRANCH IF NOTHING FOUND @V200899 00344000
  266. CALL DMKCVTHB TRY TO CONVERT TO BINARY @V200899 00345000
  267. BNZ NLD021 BRANCH IF CONVERT FAILED @V200899 00346000
  268. STH R1,SAVEWRK1+2 SAVE REAL ADDRESS @V200899 00347000
  269. CALL DMKSCNRU GET REAL DEVICE BLOKS @V200899 00348000
  270. BNZ NLD040 RADDR DOES NOT EXIST @V200899 00349000
  271. ST R8,SAVEWRK9 SAVE RDEVBLOK ADDRESS @V200899 00350000
  272. USING RDEVBLOK,R8 @V200899 00351000
  273. LA R0,CLASSPEC*256+TYP3705 DEVICE CLASS, TYPE @V200899 00352000
  274. CH R0,RDEVTYPC IS THIS DEVICE REALLY A 370X ? @V200899 00353000
  275. BNE NLD006 NO -- INVALID DEVICE TYPE @V200899 00354000
  276. TM RDEVSTAT,RDEVDISA IS DEVICE CURRENTLY OFFLINE @V200899 00355000
  277. BNZ NLD046 YEP, GIVE THE MSG AND QUIT @V200899 00356000
  278. TM RDEVSTAT,RDEVDED 3705 ATTACHED TO A USER NOW @V200899 00357000
  279. BNZ NLD140 YES, TELL CALLER AND QUIT @V200899 00358000
  280. CALL DMKSCNFD LOCATE 'NCPNAME' OPERAND @V200899 00361000
  281. BNZ NLD026 OPERAND MISSING @V200899 00362000
  282. CL R0,F8 THIS IS THE MAXIMUM LENGTH @V200899 00363000
  283. BH NLD002 OPERAND INVALID @V200899 00364000
  284. LR R2,R0 OPERAND LENGTH @V200899 00365000
  285. BCTR R2,0 @V200899 00366000
  286. MVC SAVEWRK2(8),BLANKS MOVE BLANKS TO NCPNAME FIELD@V200899 00367000
  287. EX R2,MOVENAME MOVE NCPNAME INTO SAVEAREA @V200899 00368000
  288. * B LOADNCP LOAD UP THE 370X 00369000
  289. EJECT 00370000
  290. LOADNCP EQU * GET TABLE OF NAMED CONTROL PROGRAMS @V200899 00371000
  291. L R1,=A(DMKRNTBL) ADDRESS OF NCPTBLS @V200899 00372000
  292. LTR R1,R1 IS DMKRNTBL DEFINED ? @VM08838 00373000
  293. BNP NLD044 NO -- SYSTEM CANNOT EXIST @VM08838 00374000
  294. TRANS 2,1,OPT=(SYSTEM,BRING,DEFER,IOERETN),AFFINITY @V407508 00375100
  295. BNZ NLD470 PAGING ERROR @V305435 00376000
  296. SPACE 00377000
  297. USING NCPTBL,R4 @V200899 00378000
  298. LR R4,R2 ADDRESS OF FIRST NCPTBL ENTRY @V200899 00379000
  299. NAMELOOP EQU * FIND THE NCPTBL FOR THIS NCP @V200899 00380000
  300. CLC NCPNAME(8),SAVEWRK2 COMPARE FOR THE NAME @V200899 00381000
  301. BE NAMEHIT BRANCH IF HAVE A MATCH @V200899 00382000
  302. L R3,NCPPNT LOAD DISP TO NEXT NCPTABLE ENTRY @V200899 00383000
  303. AR R4,R3 GET ADDRESS OF NEXT ENTRY @V200899 00384000
  304. LTR R3,R3 LAST ENTRY ??? @V200899 00385000
  305. BNZ NAMELOOP NO - GO TRY AGAIN @V200899 00386000
  306. B NLD044 NCP NAMED DOES NOT EXIST @V200899 00387000
  307. SPACE 00388000
  308. MOVENAME MVC SAVEWRK2(*-*),0(R1) EXECUTED MOVE @V200899 00389000
  309. SPACE 00390000
  310. NAMEHIT EQU * @V200899 00391000
  311. MVC SAVEWRK8(4),NCPSTART SAVE CCPD ... @V2D3931 00392000
  312. L R3,NCPPAGCT NUMBER OF PAGES IN NCP TO R3 @V200899 00393000
  313. STC R3,SAVEWRK1+1 SAVE IN SAVEWRK1 @V200899 00394000
  314. LA R1,NCPVOL ADDRESS OF VOL. SERIAL FOR SYSVOL@V200899 00395000
  315. LA R0,6 SERIAL LENGTH @V200899 00396000
  316. CALL DMKSCNVS SEARCH FOR THIS VOLUME @V200899 00397000
  317. BNZ NLD171 SYSTEM VOLUME IS NOT MOUNTED @V200899 00398000
  318. DROP R4,R8 @V200899 00399000
  319. USING RDEVBLOK,R1 USE RDEVBLOK FOR SYSTEM DASD @V200899 00400000
  320. TM RDEVFLAG,RDEVOWN IS VOLUME CP-OWNED ??? @V200899 00401000
  321. BZ NLD179 NOPE -- ERROR @V200899 00402000
  322. L R5,SAVEWRK8 PICK UP NCPSTARTING CCPD @V200899 00403000
  323. IC R5,RDEVCODE+1 INSERT DEV INDEX INTO SYSOW TABLE@V200899 00404000
  324. ST R5,SAVEWRK8 AND PUT BACK @V200899 00405000
  325. LA R9,32 MAXIMUM PAGES/CYL ON 2314 @V200899 00406000
  326. TM RDEVTYPE,TYP2314 IS THIS 2314 ???? @V200899 00407000
  327. BO SAVMAXPG YES ----- @V200899 00408000
  328. LA R9,57 TRY 3330 @V200899 00409000
  329. TM RDEVTYPE,TYP3330 IS IT ???? @V200899 00410000
  330. BO SAVMAXPG YES ----- @V200899 00411000
  331. LA R9,120 MAXIMUM PAGES/CYL ON 3350 @V304498 00412000
  332. TM RDEVTYPE,TYP3350 IS THIS 3350 ? @V304498 00413000
  333. BO SAVMAXPG YES ----- @V304498 00414000
  334. LA R9,96 Maximum pages/cyl on 3375 HRC106DK 00414100
  335. TM RDEVTYPE,TYP3375 Is this 3375 ? HRC106DK 00414200
  336. BO SAVMAXPG Yes ----- HRC106DK 00414300
  337. LA R9,150 Maximum pages/cyl on 3380 HRC106DK 00414400
  338. TM RDEVTYPE,TYP3380 Is this 3380 ? HRC106DK 00414500
  339. BO SAVMAXPG Yes ----- HRC106DK 00414600
  340. LA R9,24 MUST BE 2305 OR 3340 @V2A2029 00415000
  341. DROP R1 ABANDON RDEVBLOK FOR SYSTEM DASD @V200899 00416000
  342. EJECT 00417000
  343. USING RDEVBLOK,R8 GO BACK AND USE 370X RDEVBLOK @V200899 00418000
  344. SAVMAXPG EQU * @V200899 00419000
  345. STC R9,SAVEWRK9 PUT MAXPG AWAY FOR LATER @V200899 00420000
  346. CALL DMKPGTVG GET PAGE BUFFER FROM CP CORE @V200899 00421000
  347. ST R1,SAVEWRK7 SAVE VIRTUAL BUFFER ADDRESS @V200899 00422000
  348. OI SAVEWRK1,PGTVREL WE MUST RELEASE IT @V200899 00423000
  349. SPACE 00424000
  350. LR R0,R5 DASD ADDRESS OF CONTROL INFO PAGE@V200899 00425000
  351. * VIRTUAL BUFFER ADDRESS IS STILL IN GR1 00426000
  352. CALL DMKRPAGT,PARM=BRING+SYSTEM,AFFINITY @V407508 00427100
  353. BNZ NLD470 PAGING ERROR @V305435 00428000
  354. LR R7,R2 ADDRESS OF CCPARM TO R7 @V200899 00429000
  355. USING CCPARM,R7 PARM BLOCK CREATED BY 'SAVENCP' @V200899 00430000
  356. CLC SAVEWRK2(8),CCPNAME HAS THE IMAGE BEEN SAVED ?@VM08697 00431000
  357. BNE NLD044E NO -- SYSTEM DOES NOT EXIST @VM08697 00432000
  358. SR R1,R1 CLEAR WORK REG @V200899 00433000
  359. IC R1,RDEVMDL GET STORAGE SIZE MODEL NUMBER @V200899 00434000
  360. SLL R1,14(0) MULTIPLY BY 16384 . . . @VM08625 00435000
  361. CL R1,CCPSIZE STORAGE LARGE ENOUGH ? @V200899 00436000
  362. BL NLD170 NO -- SYSTEM EXCEEDS STORAGE @V200899 00437000
  363. L R0,CCPSIZE NCP CORE SIZE TO R0 @V200899 00438000
  364. L R1,CCPENTRY NCP ENTRY POINT TO R1 @V200899 00439000
  365. STM R0,R1,SAVEWRK4 SAVE IN WORKAREA FOR LATER @V200899 00440000
  366. L R1,CCPPSIZE SIZE OF PARMS TO R1 @V200899 00441000
  367. LA R1,4095(0,R1) ADD PAGE SIZE -1 FOR OVERFLOW @V200899 00442000
  368. SRL R1,12 DIVIDE BY 4096 TO GET NUM. OF PAGES @V200899 00443000
  369. DROP R7 @VM08949 00444000
  370. SPACE 00445000
  371. L R3,SAVEWRK8 'CCPD' OF CCPARM START ON DISK @VM08949 00446000
  372. SLR R5,R5 CLEAR A WORK REGISTER @VM08949 00447000
  373. IC R5,SAVEWRK8+2 GET STARTING PAGE NUMBER IN GR5 @VM08949 00448000
  374. AR R1,R5 GR1 = START PAGE NUMBER OF IMAGE @VM08949 00449000
  375. CR R1,R9 IMAGE ON THE NEXT CYLINDER ? @VM08949 00450000
  376. BNH NEXTCYL NO -- JUST RESET THE PAGE NUMBER @VM08949 00451000
  377. SR R1,R9 GR1 = PAGE NUMBER ON NEXT CYL @VM08949 00452000
  378. A R3,=X'00010000' ADD ONE TO CYLINDER NUMBER @VM08949 00453000
  379. NEXTCYL EQU * FIX UP 'CCPD' FOR IMAGE START @VM08949 00454000
  380. STC R1,TEMPSAVE PUT DOWN THE NEW PAGE NUMBER @VM08949 00455000
  381. ICM R3,2,TEMPSAVE GR3 = 'CCPD' OF PROGRAM IMAGE @VM08949 00456000
  382. ST R3,SAVEWRK6 SAVE IT TEMPORARILY @VM08949 00457000
  383. EJECT 00458000
  384. USING RNIOSAV,R4 GENERAL ADDRESSABILITY @V200899 00459000
  385. TM RDEVFLAG,RDEVRCVY RECOVERY ALREADY ACTIVE ? @V200820 00460000
  386. BO NLDEXIT YES - GET OUT OF HERE @V200820 00461000
  387. BAL R7,IOBINIT ALLOCATE AND SETUP WORK AREAS @V200820 00462000
  388. TM SAVEWRK1,FROMNET ENTERED VIA CONSOLE FUNCTION@V200820 00463000
  389. BZ NOLDTIO NO - NO TEST I/O REQUIRED @V200820 00464000
  390. TM RDEVSTAT,RDEVRSVD IN USE BY THE SYSTEM ? @V200820 00465000
  391. BO NLD143 YES - CANNOT LOAD ON THE FLY@V200820 00466000
  392. TM RDEVSTAT,RDEVNRDY IS THE 370X READY NOW ? @V200820 00467000
  393. BO NOLDTIO NO -- O.K. TO JUST LOAD IT @V200820 00468000
  394. OI IOBSPEC,IOBTIO SCHEDULE TEST I/O FOR 3705 @V200899 00469000
  395. BAL R9,DORNIO DETERMINE IF LOAD IS REQUIRED@V200899 00470000
  396. NI IOBSPEC,X'FF'-IOBTIO RESET TIO BIT IN IOBLOK@V200899 00471000
  397. NOLDTIO EQU * 370X TO BE LOADED - CLEAN UP NICLIST @V200899 00472000
  398. TM RDEVFLAG,RDEVLNCP IS THERE A NICBLOK LIST ? @V200899 00473000
  399. BZ NONICL NO, DO NOT HAVE TO FREE @V200899 00474000
  400. LH R1,RDEVMAX MAXIMUM RESOURCE ID. @V200899 00475000
  401. LA R1,1(0,R1) GR1 = NUMBER OF NICBLOKS @V200899 00476000
  402. MH R1,=AL2(NICSIZE) SIZE OF NICLIST IN DBLWRDS @V200899 00477000
  403. LR R0,R1 @V200899 00478000
  404. L R1,RDEVNICL @V200899 00479000
  405. CALL DMKFRET RETURN NICLIST TO FREE STORAGE @V200899 00480000
  406. SLR R1,R1 @V200899 00481000
  407. ST R1,RDEVNICL @V200899 00482000
  408. NONICL EQU * @V200899 00483000
  409. NI RDEVFLAG,255-(RDEVLNCP+RDEVLCEP) NOT LOADED @V200820 00484000
  410. MVC RDEVNCP(8),SAVEWRK2 MOVE NCPNAME TO RDEVBLO@V200899 00485000
  411. OI RDEVSTAT,RDEVNRDY NOT READY UNTIL LOAD IS COMP@V200820 00486000
  412. OI RDEVFLAG,RDEVRCVY RECOVERY PROCESS INITIATED @V200820 00487000
  413. SPACE 00488000
  414. L R1,=A(CXWMINI1) GET ENTRY OF CA1 PHASE1 @V200899 00489000
  415. L R3,=A(CXWMINI2) GET ENTRY OF CA1 PHASE2 @V200899 00490000
  416. TM RDEVFTR,FTRTYP1 DOES 3705 HAVE A TYPE1 CA ? @V200899 00491000
  417. BO TRANSLDR YES, GO TRANSMIT BOOTSTRAPS @V200899 00492000
  418. L R1,=A(CXWMAXI1) GET ENTRY OF CA2 PHASE1 @V200899 00493000
  419. L R3,=A(CXWMAXI2) GET ENTRY OF CA2 PHASE2 @V200899 00494000
  420. TRANSLDR EQU * @V200899 00495000
  421. BAL R7,SNDBOOTS GO TO BOOTSTRAP XMIT ROUTINE @V200899 00496000
  422. * B LD3705 00497000
  423. EJECT 00498000
  424. *--------------------------------------------------------------------* 00499000
  425. * THE FOLLOWING ROUTINE HANDLES SENDING ALL CORE IMAGE PAGES BUT THE * 00500000
  426. * LAST PAGE ( FULL OR PARTIAL ) TO THE 3705. * 00501000
  427. *--------------------------------------------------------------------* 00502000
  428. LD3705 EQU * @V200899 00503000
  429. L R6,SAVEWRK4 NCPSIZE TO R6 @V200899 00504000
  430. SR R7,R7 CLEAR R7 FOR SHIFT INST @V200899 00505000
  431. SRDL R6,12 DIVIDE BY PAGE SIZE (4096) @V200899 00506000
  432. SRL R7,20 OVERFLOW TO LOW ORDER BYTES OF R7@V200899 00507000
  433. LTR R7,R7 IS THERE ANY OVERFLOW ? @V200899 00508000
  434. BNZ LSTRECOK YES, - PAGE COUNT IS OK @V200899 00509000
  435. BCTR R6,0 NO, DECREMENT PAGE COUNT BY ONE @V200899 00510000
  436. L R7,F4096 AND MAKE OVERFLOW = TO PAGE SIZE@V200899 00511000
  437. * TO ALLOW FOR LAST RECORD PROCESSING 00512000
  438. LSTRECOK EQU * @V200899 00513000
  439. ST R7,OVFLOSIZ SAVE OVERFLOW FOR LAST RECORD @V200899 00514000
  440. L R3,SAVEWRK6 'CCPD' OF FIRST IMAGE PAGE @VM08949 00515000
  441. SPACE 00516000
  442. PAGELOOP EQU * SEND IMAGE PAGES TO THE 370X @VM08949 00517000
  443. BAL R9,LOCKBUF BRING AND LOCK IMAGE PAGE @VM08949 00518000
  444. LA R1,RNCCWS START OF CCW LIST AREA @VM08949 00519000
  445. LA R5,8(0,0) NUMBER OF WRITE CCW'S @VM08949 00520000
  446. LA R9,512(0,0) LENGTH FOR EACH WRITE @VM08949 00521000
  447. LDCCWLP EQU * @V200899 00522000
  448. ST R2,0(0,R1) REAL ADDRESS TO CCW @V200899 00523000
  449. MVI 0(R1),WRITEOP SET WRITE OP IN CCW @V200899 00524000
  450. ST R9,4(0,R1) SET COUNT AND CLEAR FLAG BYTES @VM08949 00525000
  451. MVI 4(R1),CC+SILI SET CMD CHAIN AND SILI @V200899 00526000
  452. ALR R2,R9 BUMP TO NEXT WRITE RECORD @VM08949 00527000
  453. LA R1,8(0,R1) BUMP TO NEXT CCW @V200899 00528000
  454. BCT R5,LDCCWLP LOOP FOR EIGHT CCW'S (4K BYTES) @VM08949 00529000
  455. MVC 0(8,R1),NOPCCW MOVE IN A NO-OP @V200899 00530000
  456. BAL R9,DORNIO GO TO RN SIO ROUTINE @V200899 00531000
  457. BAL R9,BUFINCR INCREMENT 'CCPD', UNLOCK BUFFER @VM08949 00532000
  458. BCT R6,PAGELOOP PROCESS NEXT CORE IMAGE RECORD (@V200899 00533000
  459. EJECT 00534000
  460. *--------------------------------------------------------------------* 00535000
  461. * THIS CODE PROCESSES THE LAST CORE IMAGE RECORD SENT TO 3705 * 00536000
  462. *--------------------------------------------------------------------* 00537000
  463. LSTRECPR EQU * @V200899 00538000
  464. BAL R9,LOCKBUF BRING AND LOCK IMAGE PAGE @VM08949 00539000
  465. L R5,OVFLOSIZ SIZE OF LAST IMAGE PIECE @VM08949 00540000
  466. LA R1,RNCCWS START OF CCW LIST AREA @VM08949 00541000
  467. LA R9,512(0,0) LENGTH FOR EACH FULL WRITE CCW @VM08949 00542000
  468. LSTRECLP EQU * @V200899 00543000
  469. ST R2,0(0,R1) RECORD ADDR TO CCW @V200899 00544000
  470. MVI 0(R1),WRITEOP MOVE IN WRITE CC @V200899 00545000
  471. CR R5,R9 IS LENGTH GREATER THAN 512 ? @VM08949 00546000
  472. BNH LRECEND NO, USE REC LENGTH IN CCW @V200899 00547000
  473. ST R9,4(0,R1) SET LENGTH AND CLEAR FLAG BYTES @VM08949 00548000
  474. MVI 4(R1),CC+SILI AND TURN ON CC AND SILI @V200899 00549000
  475. LA R1,8(0,R1) BUMP TO NEXT CCW SLOT @V200899 00550000
  476. ALR R2,R9 BUMP TO NEXT WRITE RECORD @VM08949 00551000
  477. SR R5,R9 DECREMENT REMAINING LENGTH @VM08949 00552000
  478. B LSTRECLP DO IT AGIAN TILL REC LGTH IS LESS@V200899 00553000
  479. LRECEND EQU * @V200899 00554000
  480. ST R5,4(0,R1) SET LENGTH FOR LAST WRITE @VM08949 00555000
  481. MVI 4(R1),CC+SILI TURN ON CC AND SILI TO NOP @V200899 00556000
  482. MVI 0(R1),WRTBRKOP MAKE CCW OP A WRITE BREAK @V200899 00557000
  483. MVC 8(8,R1),NOPCCW MOVE IN A NO-OP @V200899 00558000
  484. BAL R9,DORNIO AND GO TO RN SIO CODE @V200899 00559000
  485. BAL R9,BUFUNLK UNLOCK THE IMAGE PAGE BUFFER @VM08949 00560000
  486. MVC NEXTADDR(4),SAVEWRK5 SAVE CONTROL PROGRAM ENTRY @V2D3931 00561000
  487. * B NICSET ...WHILE WE SETUP THE NICLIST 00562000
  488. DROP R4 @V200820 00563000
  489. EJECT 00564000
  490. *---------------------------------------------------------------------* 00565000
  491. * 370X LOAD HAS COMPLETED WITHOUT ERROR - TIME TO GET AND FILL * 00566000
  492. * NICLIST FOR THE IMAGE JUST LOADED BY RETRIEVING THE RESOURCE DATA * 00567000
  493. * STORED ON SYSTEM DISK WITH NCP CORE IMAGE. * 00568000
  494. *---------------------------------------------------------------------* 00569000
  495. SPACE 00570000
  496. NICSET EQU * @V200820 00571000
  497. L R3,SAVEWRK8 'CCPD' OF CCPARM START PAGE @VM08949 00572000
  498. BAL R9,LOCKBUF BRING AND LOCK THE INFORMATION @VM08949 00573000
  499. LR R7,R2 SET UP ADDRESSABILITY FOR @V200820 00574000
  500. USING CCPARM,R7 DSECT FOR PARMS @V200820 00575000
  501. MVC SAVEWRK5,CCPPSIZE SAVE SIZE OF PARMS FOR LATER@V200820 00576000
  502. TM CCPTYPE,CCPTNCP IS THIS AN NCP ( OR A PEP ) @VA08872 00577100
  503. BO NICSNCP YES, GO SET UP NICLIST @VA08872 00578100
  504. NICSET1A EQU * @VA06109 00578400
  505. LA R6,TEMPSAVE POINT TO A DUMMY 'NICLIST' @V200820 00579000
  506. LA R0,(NICSIZE*8)*2 MAKE IT TWO NICBLOK'S LONG @V200820 00580000
  507. OI RDEVFLAG,RDEVLCEP EMULATOR IS ACTIVE @V200820 00581000
  508. B NICSCEP GO SCAN CCPARM INFORMATION @V200820 00582000
  509. NICSNCP EQU * ALLOCATE NICBLOK LIST @V200820 00583000
  510. LH R1,CCPMAXID MAXIMUM RESOURCE ID TO R1 @V200820 00584000
  511. STH R1,RDEVMAX PUT IN RDEVBLOK @V200820 00585000
  512. LA R1,1(0,R1) BUMP BY ONE TO ALLOW FOR ZERO @V200820 00586000
  513. MH R1,=AL2(NICSIZE) COMPUTE SIZE NEEDED @V200820 00587000
  514. LR R0,R1 NUMBER OF DBLWDS TO R0 @V200820 00588000
  515. CALL DMKFREE GET CORE FOR NEW NICLIST @V200820 00589000
  516. * GR1= ADDRESS OF NICLIST 00590000
  517. ST R1,RDEVNICL PUT ADDR OF NICLIST IN RDEVBLOK @V200820 00591000
  518. OI RDEVFLAG,RDEVLNCP INDICATE NCP ACTIVE @V200820 00592000
  519. TM CCPTYPE,CCPTPEP IS THIS A PEP ? @VA08872 00593100
  520. BNO *+8 NO, NCP ONLY @VA08872 00594100
  521. OI RDEVFLAG,RDEVLCEP EMULATOR IS ALSO ACTIVE @V200820 00595000
  522. SLL R0,3 NUM. DBLWDS * 8 = SIZE OF NICLIST @V200820 00596000
  523. LR R6,R1 NICLIST ADDRESS TO GR6 @V200820 00597000
  524. NICSCEP EQU * START PROCESSING FOR AN EMULATOR @V200820 00598000
  525. LA R1,CCPRESID-CCPARM START OF RESOURCES @V200820 00599000
  526. LA R2,4 PUT INCREMENT INTO R2 @V200820 00600000
  527. LA R3,4095 CONSTANT OF 4095 TO R3 @V200820 00601000
  528. CL R3,CCPPSIZE ARE PARMS 1 FULL PAGE OR LESS ? @V200820 00602000
  529. BL NICSETB NO, . . . @V200820 00603000
  530. L R3,CCPPSIZE YES, USE PARMS SIZE @V200820 00604000
  531. BCTR R3,0 DECREMENT R3 FOR BXH INST. @V200820 00605000
  532. * B NICSETB 00606000
  533. EJECT 00607000
  534. *---------------------------------------------------------------------* 00608000
  535. * REGISTER USAGE DURING THE FOLLOWING CODE TO FILL NICLIST IS: * 00609000
  536. * * 00610000
  537. * GPR1 - OFFSET TO CURRENT RESOURCE ENTRY * 00611000
  538. * GPR2 - SIZE OF RESOURCE ENTRY (USED AS INCREMENT) * 00612000
  539. * GPR3 - OFFSET TO END OF RESOURCE RECORD-1 OR * 00613000
  540. * OFFSET TO END OF RESOURCE ENTRIES-1 * 00614000
  541. * GPR4 - SIZE OF NICBLOK (USED AS INCREMENT) * 00615000
  542. * GPR5 - END OF NICLIST-1 * 00616000
  543. * GPR6 - CURRENT NICLIST ENTRY (IE. CURRENT NICBLOK) * 00617000
  544. * GPR7 - START OF 4K RESOURCE RECORD * 00618000
  545. *---------------------------------------------------------------------* 00619000
  546. SPACE 00620000
  547. NICSETB EQU * @V200820 00621000
  548. USING NICBLOK,R6 @V200820 00622000
  549. LA R4,NICSIZE*8 INCRENENT FOR BUMPING THRU NI@V200820 00623000
  550. LR R5,R0 SIZE (IN BYTES) OF NICLIST @V200820 00624000
  551. LA R5,0(R5,R6) POINT TO END OF NICLIST @V200820 00625000
  552. BCTR R5,0 DECREMENT FOR BXLE INST. @V200820 00626000
  553. SR R9,R9 NICNAME REGISTER @V200820 00627000
  554. L R14,ASYSVM @V200820 00628000
  555. NICSETL EQU * @V200820 00629000
  556. XC NICBLOK(NICSIZE*8),NICBLOK CLEAR NEXT ENTRY @V200820 00630000
  557. USING CCPRESID,R1 DSECT OF CCPARM RESOURCE ENTRY @V200820 00631000
  558. IC R0,CCPRSTYP(R7) GET RESOURCE TYPE FROM CCPARM@V200820 00632000
  559. STC R0,NICTYPE AND PUT IN NICBLOK @V200820 00633000
  560. STH R9,NICNAME STORE RESOURCE ID. IN NICBLOK@V200820 00634000
  561. ST R14,NICUSER VMBLOK ADDRESS TO NICBLOK @V200820 00635000
  562. LH R0,CCPRSTEP(R7) GET EMULATOR ADDRESS (IF ANY)@V200820 00636000
  563. TM RDEVFTR,FTRTYP1 IS THIS A TYPE 1 CA ? @V240820 00637000
  564. BZ *+8 NO -- DON'T SET CHANNEL ADDR@V240820 00638000
  565. ICM R0,2,SAVEWRK1+2 ADD CHANNEL TO SUB-CHANNEL @V240820 00639000
  566. STH R0,NICEPAD AND STORE IT IN NICBLOK @V200820 00640000
  567. IC R0,CCPRSTAT(R7) INITIAL STATUS FOR RESOURCE @V200820 00641000
  568. STC R0,NICSTAT ...SET IN THE NICBLOK @V200820 00642000
  569. CLI NICTYPE,NICTERM+NICCIBM SELECTRIC TERMINAL ? @V200820 00643000
  570. BNE *+8 NO --- @V200820 00644000
  571. OI NICFLAG,NICPSUP ASSUME PRINT SUPPRESS FEATUR@V200820 00645000
  572. TM NICSTAT,NICEPMD+NICSWEP POTENTIAL E.P. LINE ? @V240820 00646000
  573. BZ NICSETN NO -- ALL SET ALREADY @V200820 00647000
  574. L R15,IOBMISC POINTER TO THE WORK AREA @V240820 00648000
  575. STM R0,R14,0(R15) SAVE THE CURRENT REGISTERS @V240820 00649000
  576. LR R9,R10 SAVE THE IOBLOK ADDRESS IN GR9 @V240820 00650000
  577. LH R1,NICEPAD EMULATOR-MODE ADDRESS @V200820 00651000
  578. CALL DMKSCNRU TRY TO FIND THE RDEVBLOK @V200820 00652000
  579. BNZ NICSETE NOPE - IGNORE IT @V200820 00653000
  580. L R1,RDEVUSER GET ADDR OF RDEVBLOK VMBLOK @V407508 00654100
  581. SWTCHVM OPT=STAY SWITCH TO THIS VMBLOK @V407508 00655100
  582. LH R1,SAVEWRK1+2 NATIVE ADDRESS FOR THE 370X @V200820 00657000
  583. STH R1,RDEVBASE MAKE SURE THIS IS SET @V200820 00658000
  584. NI RCUSTAT-RCUBLOK(R7),255-(RCUDISA+RCUCHAOF) @V4M0244 00659000
  585. * VARY ON CONTROL UNIT AND CHANNEL PATH TO DEVICE @V4M0244 00659100
  586. TM RDEVSTAT,RDEVDED+RDEVDISA ATTACHED / OFFLINE@V240820 00660000
  587. BNZ NICSET1 YES - SKIP NEXT PART @V240820 00661000
  588. TM RDEVFLAG,RDEVENAB WAS THE DEVICE ENABLED ? @V240820 00662000
  589. BZ NICSET4 NO -- JUST RESET TO ZERO @V240820 00663000
  590. CALL DMKQCNCL FLUSH ANY CONTASK CHAIN @VM08809 00664000
  591. CL R11,ASYSVM WAS THERE AN ACTIVE USER ? @V240820 00665000
  592. BE NICSET1 NO -- O.K. @VM08809 00666000
  593. CALL DMKQCNTO,AFFINITY FORCE DISCONNECT THIS USER @V407508 00667100
  594. MVC RDEVUSER(4),ASYSVM RESET TO THE SYSTEM VMBLOK @VA01892 00668000
  595. NICSET1 EQU * CLEAN UP OUTSTANDING I/O @VM08809 00669000
  596. L R4,RDEVFIOB INIT IOBLOK FORWARD POINTER @VA04587 00669500
  597. ICM R10,15,RDEVAIOB TEST FOR ACTIVE I/O @V240820 00670000
  598. BZ NICSET3 NO -- CONTINUE @V240820 00671000
  599. TM IOBFLAG,IOBCP CP GENERATED I/O ? @VA04587 00671300
  600. BZ NICSET3 NO, LEAVE FOR DMKVDREL @VA04587 00671600
  601. SLR R0,R0 @VM08809 00672000
  602. ST R0,RDEVAIOB NO MORE ACTIVE IOBLOK @VM08809 00673000
  603. NICSET2 EQU * TRY TO CLEAN UP QUEUED IOBLOKS @VM08809 00674000
  604. LA R0,IOBSIZE SIZE OF IOBLOK @VA04587 00675100
  605. LR R1,R10 ADDRESS OF IOBLOK @VA04587 00676100
  606. CALL DMKFRET UNLOAD IT .... POST HASTE @VA04587 00677100
  607. NICSET3 EQU * @VM08809 00678000
  608. CR R4,R8 ANY IOBLOKS QUEUED ? @VA04587 00678700
  609. BE NICSET4 NO, ...... @VA04587 00679400
  610. LR R10,R4 ADDRESSABILITY FOR IOBLOK @VA04587 00680100
  611. L R4,IOBFPNT POINT TO NEXT BLOCK ON QUEUE @VA04587 00680800
  612. TM IOBFLAG,IOBCP CP GENERATED I/O ? @VA04587 00681500
  613. BZ NICSET3 TRY NEXT IOBLOK ............ @VA04587 00682200
  614. LM R1,R2,IOBFPNT PICK UP CHAIN LINKS .. @VA04587 00682900
  615. ST R1,IOBFPNT-IOBLOK(,R2) DE-CHAIN IT ..... @VA04587 00683600
  616. ST R2,IOBBPNT-IOBLOK(,R1) ...... @VA04587 00684300
  617. B NICSET2 GO RESET ANOTHER IOBLOK @VM08809 00685000
  618. SPACE 00686000
  619. NICSET4 EQU * CLEAN UP RDEVBLOK FLAGS @VM08809 00687000
  620. NI RDEVFLAG,RDEVEPMD+RDEVENAB LEAVE THESE @VM08809 00688000
  621. NI RDEVSTAT,RDEVDED+RDEVIRM AND THESE @VM08809 00689000
  622. CLI RDEVTYPE,TYPBSC IS THIS A BISYNC LINE ? @V2D3931 00690000
  623. BE *+8 YES, BYPASS CLEARING FLAG BYTE @V2D3931 00691000
  624. MVI RDEVTFLG,X'00' RESET TERMINAL FLAGS @VM08809 00692000
  625. MVI RDEVSTA2,X'00' . . . @VM08809 00693000
  626. TM SAVEWRK1,FROMNET CALLED FROM DMKNETWK ? @VM08809 00694000
  627. BZ *+8 NO -- O.K. AS IS @VM08809 00695000
  628. NI RDEVFLAG,255-RDEVENAB LET THE LINE RE-ENABLE @VM08809 00696000
  629. TM RDEVTYPE,TYPIBM1 2741 / 1050 LINE ? @VM08809 00697000
  630. BZ NICSET5 NO -- @VM08809 00698000
  631. MVI RDEVTYPE,TYPUNDEF NOW UNDEFINED TYPE @VM08809 00699000
  632. MVI RDEVTMCD,RDEVPTTC RESET TERMINAL CODE @VM08809 00700000
  633. EJECT 00701000
  634. NICSET5 EQU * RESET AND CONTINUE @VM08809 00702000
  635. LR R10,R9 RESTORE OUR OWN IOBLOK ADDRESS @V240820 00703000
  636. TM RDEVSTAT,RDEVDED WAS THE DEVICE DEDICATED ? @V240820 00704000
  637. BZ NICSET7 NO -- CHECK FOR EP-MODE @V240820 00705000
  638. LR R9,R8 RDEVBLOK ADDRESS TO GR9 @V240820 00706000
  639. LH R1,RDEVATT VIRTUAL DEVICE ADDRESS @V240820 00707000
  640. CALL DMKSCNVU GET THE VIRTUAL DEVICE BLOCKS @V240820 00708000
  641. LTR R8,R8 IS THERE A VIRTUAL DEVICE BLOCK ?@VA08229 00708100
  642. BNP NODETACH NO, CANNOT DETACH OR RELEASE IT @VA08229 00708200
  643. USING VDEVBLOK,R8 @V240820 00709000
  644. TM VDEVFLAG,VDEVDIAL DIALED CONNECTION ? @V240820 00710000
  645. BO NICSET6 YES - JUST RELEASE IT @V240820 00711000
  646. LH R1,VDEVADD VIRTUAL DEVICE ADDRESS ALONE @V240820 00712000
  647. SLL R1,1(0) SHIFT FOR VCUDVTBL INDEX @V240820 00713000
  648. L R2,FFS X'FFFFFFFF' @V240820 00714000
  649. STH R2,VCUDVTBL-VCUBLOK(R1,R7) DETACH DEVICE @V240820 00715000
  650. STH R2,VDEVADD . . . @V240820 00716000
  651. DROP R8 @V240820 00717000
  652. NICSET6 EQU * RELEASE DEDICATED DEVICE @V240820 00718000
  653. CALL DMKVDREL,AFFINITY . . . @V407508 00719100
  654. NODETACH EQU * BYPASS DETACH AND RELEASE @VA08229 00719600
  655. LR R8,R9 RDEVBLOK BACK TO GR8 AGAIN @V240820 00720000
  656. USING RDEVBLOK,R8 @V240820 00721000
  657. NICSET7 EQU * CHECK FOR EP-MODE SWITCHED LINE @V240820 00722000
  658. TM RDEVFLAG,RDEVEPMD SWITCHED FROM NCP TO EP ? @V240820 00723000
  659. BZ NICSET8 NO -- ALL DONE HERE @V240820 00724000
  660. L R1,SAVEWRK9 370X BASE RDEVBLOK @V240820 00725000
  661. LA R1,0(R1) ZERO HIGH ORDER BYTE @VA12808 00725500
  662. MVC RDEVEPDV(4),RDEVEPDV-RDEVBLOK(R1) RE-CHAIN @V240820 00726000
  663. ST R8,RDEVEPDV-RDEVBLOK(,R1) . . . @V240820 00727000
  664. L R7,RDEVCUA CONTROL UNIT FOR DYNAMIC BLOCK @V240820 00728000
  665. LH R1,RDEVADD REAL DEVICE ADDRESS ALONE @V240820 00729000
  666. SLL R1,1(0) SHIFT FOR RCUDVTBL INDEX @V240820 00730000
  667. L R2,FFS X'FFFFFFFF' @V240820 00731000
  668. STH R2,RCUDVTBL-RCUBLOK(R1,R7) DISCONNECT @V240820 00732000
  669. STH R2,RDEVADD RESET DYNAMIC RDEVBLOK ADDRESS @V240820 00733000
  670. NICSET8 EQU * RESTORE VALUES @V240820 00734000
  671. L R8,SAVEWRK9 BACK TO THE 370X RDEVBLOK @V240820 00735000
  672. LA R8,0(R8) ZERO HIGH ORDER BYTE @VA12808 00735500
  673. L R1,SAVER11 GET ADDR OF CALLER'S VMBLOK @V407508 00736100
  674. SWTCHVM OPT=STAY SWITCH TO THIS VMBLOK @V407508 00737100
  675. EJECT 00739000
  676. NICSETE EQU * @V240820 00740000
  677. L R15,IOBMISC POINTER TO THE WORK AREA @V240820 00741000
  678. LM R0,R14,0(R15) RESTORE REGISTERS @V240820 00742000
  679. TM NICSTAT,NICSWEP SWITCHABLE TO NCP-MODE ? @V200820 00743000
  680. BO NICSETN YES - NOW WE'RE ALL SET @V200820 00744000
  681. BCTR R9,0 BACK OFF THE RESOURCE I.D. @V200820 00745000
  682. SLR R6,R4 BACK OFF THE NICBLOK ADDRESS @V200820 00746000
  683. OI RDEVFLAG,RDEVEPLN EMULATOR LINE IN USE ON 370X@V240820 00747000
  684. NICSETN EQU * NEXT CCPARM ENTRY, NEXT NICBLOK @V200820 00748000
  685. LA R9,1(0,R9) BUMP NICNAME REG @V200820 00749000
  686. BXH R1,R2,NICSETP BRANCH IF NO MORE CCPARM @V200820 00750000
  687. BXLE R6,R4,NICSETL BRANCH IF MORE NICLIST @V200820 00751000
  688. B LOADCMP @V200820 00752000
  689. NICSETP EQU * @V200820 00753000
  690. BXH R6,R4,LOADCMP BRANCH IF ALL DONE @V200820 00754000
  691. CL R1,SAVEWRK5 END OF RESOURCE DATA ? @V200820 00755000
  692. BE LOADCMP YES - COMMAND COMPLETE @V200820 00756000
  693. L R3,SAVEWRK8 CURRENT 'CCPD' FOR CCPARM PAGE @VM08949 00757000
  694. BAL R9,BUFINCR INCREMENT CCPD, UNLOCK BUFFER @VM08949 00758000
  695. ST R3,SAVEWRK8 SAVE NEW CCPD VALUE @VM08949 00759000
  696. BAL R9,LOCKBUF BRING AND LOCK THE NEW PAGE @VM08949 00760000
  697. LR R7,R2 RADDR OF CCPARM TO R7 @V200899 00761000
  698. SR R1,R1 ZERO CCPARM OFFSET REG @V200899 00762000
  699. LA R2,4 PUT CCPARM INCREMENT BACK INT@V200899 00763000
  700. L R3,SAVEWRK5 GET NUMBER OF BYTES OF CCPARMS @V200899 00764000
  701. S R3,F4096 MINUS 4K @V200899 00765000
  702. ST R3,SAVEWRK5 PUT IT BACK IN CASE IT IS NEEDED@V200899 00766000
  703. LA R3,4095 BUFFER SIZE - 1 TO R3 @V200899 00767000
  704. C R3,SAVEWRK5 REMAINING PARMS LT 4K ? @V200899 00768000
  705. BL NICSETL NO, . . . . . @V200899 00769000
  706. L R3,SAVEWRK5 YES, USE BYTES REMAINING @V200899 00770000
  707. BCTR R3,0 DECREMENT FOR BXH INST. @V200899 00771000
  708. B NICSETL AND LOOP @V200899 00772000
  709. EJECT 00773000
  710. LOADCMP EQU * @V200899 00774000
  711. BAL R9,BUFUNLK UNLOCK THE BUFFER PAGE @VM08949 00775000
  712. *--------------------------------------------------------------------* 00776000
  713. * NOW WRITE NCP ENTRY POINT ADDRESS TO 3705 * 00777000
  714. * (THIS MUST COME AFTER SETTING UP NICBLOK LIST, SINCE * 00778000
  715. * THE 370X NCP WILL PRESENT 'IPL COMPLETE' BTU TO DMKRNH) * 00779000
  716. *--------------------------------------------------------------------* 00780000
  717. L R4,IOBMISC POINT TO RNIOSAV WORK AREA @V200899 00781000
  718. USING RNIOSAV,R4 @V200899 00782000
  719. LA R6,NEXTADDR POINT TO THE ENTRY POINT ADDRESS @V240820 00783000
  720. ST R6,RNCCWS AND PUT IT IN CCW @V200899 00784000
  721. MVI RNCCWS,WRITEOP SET CCW OP TO WRITE @V200899 00785000
  722. LA R6,4(0,0) LENGTH OF DATA TO R6 @V200899 00786000
  723. ST R6,RNCCWS+4 AND INTO CCW @V200899 00787000
  724. MVI RNCCWS+4,CC+SILI CHAIN FLAGS TO NOP @V200899 00788000
  725. MVC RNCCWS+8(8),NOPCCW MOVE IN A NO-OP @V200820 00789000
  726. BAL R9,DORNIO GO TO SIO CODE @V200820 00790000
  727. SPACE 00791000
  728. OI RDEVSTAT,RDEVRSVD LOADED BY THE SYSTEM @V200820 00792000
  729. TM RDEVFLAG,RDEVLNCP IS THERE AN NCP OUT THERE ? @VM08827 00793000
  730. BO LOADMSG YES - ALL SET AS IS @VM08827 00794000
  731. NI RDEVSTAT,255-(RDEVRSVD+RDEVNRDY) FOR THE E.P. @VM08827 00795000
  732. LOADMSG EQU * SEND MSG 'CTLR XXX LOAD COMPLETE'@VM08827 00796000
  733. MVC RNIOSAV(CMPMSGLN),COMPMSG MOVE MSG SKELETON @V200820 00797000
  734. MVC RNIOSAV+COMPNCPN(8),RDEVNCP NCPNAME TO MSG @V240820 00798000
  735. SPACE 00799000
  736. CMDCOMP EQU * SEND COMPLETE MESSAGE TO USER @V200820 00800000
  737. LH R1,SAVEWRK1+2 GET RADDR OF 370X FOR MESSAGE@V200820 00801000
  738. CALL DMKCVTBH GO CONVERT TO HEX @V200820 00802000
  739. STCM R1,B'0111',RNIOSAV+COMPRADD PUT RADDR IN MSG @V200820 00803000
  740. SLR R2,R2 PARMS BASE FOR DMKQCNWT @V200820 00804000
  741. TM SAVEWRK1,FROMNET CALL VIA CONSOLE FUNCTION ? @V200820 00805000
  742. BO *+8 YES - RESPONSE TO CALLER @V200820 00806000
  743. LA R2,OPERATOR SEND MESSAGE TO SYSTEM OPERATOR @V200820 00807000
  744. LA R1,RNIOSAV START OF MESSAGE DATA @V200820 00808000
  745. LA R0,CMPMSGLN LENGTH OF MSG TO R0 @V200820 00809000
  746. CALL DMKQCNWT,PARM=NORET(,R2),AFFINITY @V407508 00810100
  747. B NLDEXIT @V200820 00811000
  748. EJECT 00812000
  749. LOCKBUF EQU * BRING AND LOCK PAGE BY 'CCPD' @VM08949 01000000
  750. LR R0,R3 'CCPD' TO GR0 FOR DMKRPAGT @VM08949 01001000
  751. L R1,SAVEWRK7 VIRTUAL BUFFER ADDRESS TO GR1 @VM08949 01002000
  752. CALL DMKRPAGT,PARM=BRING+LOCK+SYSTEM,AFFINITY GET PAGE@V407508 01003100
  753. BNZ NLD470 PAGING ERROR @V305435 01004000
  754. ST R2,SAVEWRK6 SAVE REAL ADDRESS FOR UNLOCK @VM08949 01005000
  755. OI SAVEWRK1,UNLKBUF REMEMBER TO UNLOCK BUFFER @VM08949 01006000
  756. BR R9 @VM08949 01007000
  757. SPACE 2 01008000
  758. BUFINCR EQU * INCREMENT 'CCPD', UNLOCK BUFFER @VM08949 01009000
  759. A R3,F256 INCREMENT THE PAGE NUMBER @VM08949 01010000
  760. CLM R3,2,SAVEWRK9 REACHED THE END OF A CYLINDER ? @VM08949 01011000
  761. BNH BUFUNLK NO -- CONTINUE @VM08949 01012000
  762. A R3,=X'00010000' INCREMENT CYLINDER NUMBER @VM08949 01013000
  763. ICM R3,2,F1+3 RESET TO PAGE NUMBER ONE @VM08949 01014000
  764. BUFUNLK EQU * UNLOCK THE REAL PAGE BUFFER @VM08949 01015000
  765. L R2,SAVEWRK6 REAL PAGE ADDRESS FROM LOCK @VM08949 01016000
  766. CALL DMKPTRUL UNLOCK THE REAL PAGE @VM08949 01017000
  767. NI SAVEWRK1,255-UNLKBUF ERASE CLEANUP FLAG @VM08949 01018000
  768. BR R9 @VM08949 01019000
  769. EJECT 01020000
  770. *--------------------------------------------------------------------* 01099000
  771. * SUBROUTINE TO TRANSMIT 370X BOOTSTRAP RECORDS TO CCU * 01100000
  772. *--------------------------------------------------------------------* 01101000
  773. SNDBOOTS EQU * @V200899 01102000
  774. BAL R9,TRNLOCK BRING AND LOCK PHASE ONE @VM08692 01103000
  775. OI SAVEWRK1,BOOTSFLG REMEMBER TO UNLOCK IT @VM08692 01104000
  776. L R1,IOBMISC POINT R1 TO FIRST CCW SLOT @V200899 01105000
  777. ST R2,0(0,R1) PUT REAL ADDRESS IN WRITE IPL @V200899 01106000
  778. MVI 0(R1),WIPLOP SET WRITE IPL OP CODE @V200899 01107000
  779. MVI 4(R1),CC+SILI SET CMD CHAINING AND SILI ON @V200899 01108000
  780. MVC 6(2,R1),2(R2) MOVE LENGTH OF PHASE 1 TO CCW @V200899 01109000
  781. MVC 8(8,R1),NOPCCW MOVE IN A NO-OP @V200899 01110000
  782. BAL R9,DORNIO GO TO RN SIO ROUTINE @V200899 01111000
  783. CALL DMKPTRUL UNLOCK PHASE ONE PAGE (R2 OK) @VM08692 01112000
  784. NI SAVEWRK1,255-BOOTSFLG TURN OFF FLAG FOR NOW @VM08692 01113000
  785. SPACE 01114000
  786. LR R1,R3 GR1 = ADDRESS OF BOOTSTRAP TWO @VM08692 01115000
  787. BAL R9,TRNLOCK BRING AND LOCK PHASE TWO @VM08692 01116000
  788. OI SAVEWRK1,BOOTSFLG REMEMBER TO UNLOCK IT @VM08692 01117000
  789. L R1,IOBMISC POINT R1 TO FIRST CCW SLOT @V200899 01118000
  790. ST R2,0(0,R1) PUT REAL ADDRESS IN WRITE IPL @V200899 01119000
  791. MVI 0(R1),WRTBRKOP SET WRITE BREAK OP CODE @V200899 01120000
  792. CMDOK EQU * @V200899 01124000
  793. MVI 4(R1),CC+SILI SET CMD CHAINING AND SILI ON @V200899 01125000
  794. MVC 6(2,R1),2(R2) MOVE LENGTH OF PHASE 1 TO CCW C@V200899 01126000
  795. MVC 8(8,R1),NOPCCW MOVE IN A NO-OP @V200899 01127000
  796. BAL R9,DORNIO GO TO RN SIO ROUTINE @V200899 01128000
  797. CALL DMKPTRUL UNLOCK PHASE TWO PAGE (R2 OK) @VM08692 01129000
  798. NI SAVEWRK1,X'FF'-BOOTSFLG RESET BOOTSTRAP PROCESS @V200899 01130000
  799. BR R7 RETURN TO MAIN LINE CODE @V200899 01131000
  800. SPACE 01132000
  801. TRNLOCK EQU * BRING IN AND LOCK SYSTEM PAGE @VM08692 01133000
  802. * BRING IN AND LOCK SYSTEM PAGE @V407508 01134100
  803. TRANS 2,1,OPT=(BRING,DEFER,SYSTEM,LOCK),IOER=NLD470,AFFINITY 01134200
  804. BR R9 @VM08692 01135000
  805. EJECT 01136000
  806. *--------------------------------------------------------------------* 01137000
  807. * GET AND CLEAR STORAGE FOR USE AS AN IOBLOK * 01138000
  808. *--------------------------------------------------------------------* 01139000
  809. SPACE 01140000
  810. IOBLGET EQU * @V200820 01141000
  811. LA R0,IOBSIZE SIZE OF IOBLOK TO R0 @V200820 01142000
  812. CALL DMKFREE CALL DMKFREE TO GET STORAGE @V200820 01143000
  813. LR R10,R1 IOBLOK ADDRESS TO R10 @V200820 01144000
  814. XC IOBRADD(IOBSIZE*8),IOBRADD CLEAR IOBLOK @V200820 01145000
  815. ST R11,IOBUSER USER'S VMBLOK ADDRESS TO IOBLOK @V200820 01146000
  816. LA R1,RNIOINT PUT ADDRESS OF 3705 INT. HANDLER @V200820 01147000
  817. ST R1,IOBIRA INTO IOBLOK @V200820 01148000
  818. BR R9 RETURN @V200820 01149000
  819. SPACE 2 01150000
  820. *--------------------------------------------------------------------* 01151000
  821. * GET STORAGE FOR USE AS CCW AREA AND I/O REG SAVE AREA AND CLEAR IT * 01152000
  822. *--------------------------------------------------------------------* 01153000
  823. SPACE 01154000
  824. IOBINIT EQU * @V200820 01155000
  825. BAL R9,IOBLGET ALLOCATE AND INITIALIZE AN IOBLOK@V200820 01156000
  826. LA R0,RNWKSIZE SIZE OF AREA TO R0 @V200820 01157000
  827. CALL DMKFREE GO GET STORAGE @V200820 01158000
  828. LR R4,R1 ADDRESS OF RNIOSAV TO R4 @V200820 01159000
  829. ST R1,IOBMISC SAVE ADDRESS OF STORAGE IN IOBLOK @V200820 01160000
  830. XC 0(RNWKSIZE*8,R4),0(R4) CLEAR THE AREA @V200820 01161000
  831. OI SAVEWRK1,RNSAVREL RELEASE WORK AREAS @V200820 01162000
  832. BR R7 RETURN TO MAIN LINE CODE @V200820 01163000
  833. EJECT 01164000
  834. *--------------------------------------------------------------------* 01165000
  835. * THIS IS THE SIO INTERFACE CODE FOR 3705 I/O OF LOAD/DUMP PROGRAMS * 01166000
  836. *--------------------------------------------------------------------* 01167000
  837. SPACE 01168000
  838. DORNIO EQU * @V200820 01169000
  839. STM R0,R9,RNSVREGS SAVE CALLERS REGS @V200899 01170000
  840. LA R1,5(0,0) RETRY COUNT IN CASE OF ERROR @VM08672 01171000
  841. STH R1,IOBRCNT . . . @VM08672 01172000
  842. MVC IOBCAW(4),IOBMISC SAVE CCW BUFFER POINTER @V2D3931 01173000
  843. MVI IOBFLAG,IOBCP CP-GENERATED CHANNEL PROGRAM @VM08672 01174000
  844. RESTRNIO EQU * @V200899 01175000
  845. MVI IOBSTAT,X'00' CLEAR IOBLOK STATUS BYTE @VM08672 01176000
  846. NI IOBFLAG,IOBCP+IOBRSTRT LEAVE ONLY THESE FLAGS @VM08672 01177000
  847. ST R13,IOBMISC2 SAVE POINTER TO CALLERS SAVE AREA@V200899 01178000
  848. XC IOBCSW(8),IOBCSW CLEAR OUT THE CSW @VM08775 01179000
  849. CALL DMKIOSQR CALL IOS @V200899 01180000
  850. GOTO DMKDSPCH GO TO DISPACTH TO WAIT FOR I/O @V200899 01181000
  851. EJECT 01182000
  852. *--------------------------------------------------------------------* 01183000
  853. * THIS IS THE 3705 I/O INTERRUPT HANDLER FOR DMKNLD * 01184000
  854. *--------------------------------------------------------------------* 01185000
  855. SPACE 01186000
  856. RNIOINT EQU * @V200899 01187000
  857. USING *,R12 RE-ESTABLISH @V200899 01188000
  858. SL R12,=A(RNIOINT-DMKNLD) ADDRESSABILITY TO BASE @V200899 01189000
  859. USING DMKNLD,R12 @V200899 01190000
  860. L R13,IOBMISC2 RESTORE SAVEAREA POINTER @V200899 01191000
  861. L R4,IOBMISC RESTORE RNIOSAV POINTER @V200899 01192000
  862. TM IOBSPEC,IOBTIO IS INTERRUPT FOR A TIO @V200899 01193000
  863. BO TIORETN YES,GO HANDLE SPECIAL @V200899 01194000
  864. TM IOBSTAT,IOBCC3 ANY CONDITION CODE FROM I/O @V200899 01195000
  865. BO VANISH CC=3 - SOMETHING IS VERY WRONG @VM08775 01196000
  866. BZ CHKSTAT CC=0 - EVERYTHING IS O.K. ---SO F@V200899 01197000
  867. * CC=1 OR 2 HAVE TO CHECK FURTHER 01198000
  868. TM IOBSTAT,IOBCC1 IS IT CC=1 ? @V200899 01199000
  869. BZ IORETRY NO, RETRY I/O @V200899 01200000
  870. CHKSTAT EQU * @V200899 01201000
  871. CLC IOBCSW+4(2),=X'0C00' IS STATUS NORMAL? (CE+DE)@V200899 01202000
  872. BE RNIOXIT YES, I/O WENT O.K. @V200899 01203000
  873. CLC IOBCSW+4(2),=AL1(ATTN+DE+CE,0) ATTN+CE+DE? @VA08855 01203040
  874. BE LOADOK YES, LOAD FINISHED OK @VA08855 01203080
  875. CLC IOBCSW+4(2),=AL1(ATTN+DE,0) ATTN AND DE?? @VA11588 01203130
  876. BNE RNIOERR NO, MUST BE AN ERROR @VA08855 01203160
  877. LOADOK EQU * @VA08855 01203200
  878. LA R0,IOBSIZE USING NEW STUFF, GET AN IOB... @VM05005 01203240
  879. CALL DMKFREE ... AND DUMMY IT UP FOR DMKRNH...@VM05005 01203320
  880. ST R10,0(R1) (SWITCH IOBLOKS) @VM05005 01203400
  881. LR R10,R1 TO MAKE IT LOOK LIKE THE OLD @VM05005 01203480
  882. L R1,0(R1) SUPPORT WHERE ATTN CAME IN AFTER @VM05005 01203560
  883. XC IOBLOK(IOBSIZE*8),IOBLOK LOAD WAS COMPLETE @VM05005 01203640
  884. MVI IOBCSW+4,ATTN MAKE IT LOOK LIKE ATTN ALONE @VM05005 01203720
  885. OI IOBFLAG,IOBCP CP GENERATED @VM05005 01203800
  886. OI IOBSPEC,IOBUNSL UNSOLICITED I/O INT. @VM05005 01203880
  887. MVC IOBRADD(2),IOBRADD-IOBLOK(R1) SAME ADDRESS @VM05005 01203960
  888. ST R10,IOBLINK ENDING STATUS @VM05005 01204040
  889. L R0,ASYSVM SYSTEM OWNS THIS ONE @VM05005 01204120
  890. ST R0,IOBUSER ... @VM05005 01204200
  891. L R0,=A(DMKRNHIN) SEND THE INTERRUPT TO RNH @VM05005 01204280
  892. ST R0,IOBIRA ... @VM05005 01204360
  893. CALL DMKSTKIO SEND IT OFF... @VM05005 01204440
  894. LR R10,R1 AND RESTORE THE OLD IOB ADDR. @VM05005 01204520
  895. B RNIOXIT RETURN TO CALLER @VM05005 01204600
  896. SPACE 01204680
  897. RNIOERR TM IOBCSW+5,X'FF'-(CDC+IL) ANY HARD ERRORS? @VM05005 01204760
  898. BNZ RNIOER YES,DISASTER @V200899 01205000
  899. TM IOBCSW+4,CUE+SM HARD DEVICE ERRORS ? @V200899 01206000
  900. BNZ RNIOER YES, QUIT NOW @V200899 01207000
  901. TM IOBCSW+4,UC UNIT CHECK ??? @V200899 01208000
  902. BZ IORETRY NO, RETRY I/O @V200899 01209000
  903. L R1,IOBIOER GET ADDR OF IOERBLOK @V200899 01210000
  904. USING IOERBLOK,R1 @V200899 01211000
  905. TM IOERDATA,IPLREQ+INTREQ+ABORT RETRY O.K. ? @V200899 01212000
  906. DROP R1 @V200899 01213000
  907. BZ IORETRY YES -- JUST RETRY THE I/O @V200899 01214000
  908. BAL R7,FRERBLOK RELEASE THE IOERBLOK @VM08692 01215000
  909. LM R0,R9,RNSVREGS RESTORE REGISTERS @V200899 01216000
  910. B NLD460 PROGRAM CHECK IN BOOTSTRAP @V305435 01217000
  911. * ROUTINE 01218000
  912. SPACE 2 01219000
  913. VANISH EQU * CC = 3 DURING LOAD OR DUMP @VM08775 01220000
  914. BAL R7,FRERBLOK RELEASE IOERBLOK, IF ANY @VM08775 01221000
  915. LM R0,R9,RNSVREGS RESTORE REGISTERS @VM08775 01222000
  916. B NLD464E GIVE CC = 3 MESSAGE @VM08775 01223000
  917. EJECT 01224000
  918. TIORETN EQU * @V200899 01225000
  919. TM IOBSTAT,IOBCC3 CHECK CC FROM TIO @V200899 01226000
  920. BO NLD040 CC=3 DEVICE NOT THERE - ERROR@V200899 01227000
  921. BZ OPMSG IF CC=0 TREAT AS IF IPL REQ'D@V200899 01228000
  922. * WASN'T ON 01229000
  923. TM IOBSTAT,IOBCC1 IS IT CC=1 @V200899 01230000
  924. BZ IORETRY NO -- RETRY @V200899 01231000
  925. TM IOBCSW+4,UC WAS IT A UNIT CHECK ? @V200899 01232000
  926. BO CKTIOSNS YES - THAT'S WHAT WE EXPECT @V200899 01233000
  927. L R1,=A(DMKRNHIN) SET UP IOBIRA FOR DMKRNH @V200899 01234000
  928. ST R1,IOBIRA . . . @V200899 01235000
  929. MVC IOBUSER(4),ASYSVM SET UP SYSTEM VMBLOK POINTER @V2D3931 01236000
  930. CALL DMKSTKIO AND RESTACK I/O @V200899 01237000
  931. BAL R9,IOBLGET GET ANOTHER IOBLOK FOR US @V200899 01238000
  932. ST R13,IOBMISC2 RESET THESE VALUES ... @V200899 01239000
  933. ST R4,IOBMISC ... @V200899 01240000
  934. B OPMSG GO TALK TO THE OPERATOR @V200899 01241000
  935. SPACE 2 01242000
  936. CKTIOSNS EQU * TEST SENSE DATA RECEIVED @V200899 01243000
  937. L R1,IOBIOER GET ADDRESS OF IOERBLOK @V200899 01244000
  938. USING IOERBLOK,R1 @V200899 01245000
  939. TM IOERDATA,IPLREQ+INTREQ IS SENSE IPL REQUIRED OR@V200899 01246000
  940. * INTERVENTION REQUIRED ? 01247000
  941. BNZ RNIOXIT YES, NO NEED TO SEND MSG @V200899 01248000
  942. DROP R1 @V200899 01249000
  943. EJECT 01250000
  944. *---------------------------------------------------------------------* 01251000
  945. *HAVE TO SEND FOLLOWING MSG: * 01252000
  946. * * 01253000
  947. * DMKNLD461R CTLR (RADDR) IPL NOT REQUIRED; ENTER 'YES' TO CONTINUE: * 01254000
  948. * * 01255000
  949. *IN ORDER TO GET CONCURRENCE OF OPERATOR TO LOAD OR DUMP 370X * 01256000
  950. * THAT DOES NOT HAVE IPL REQUIRED BIT ON IN SENSE. * 01257000
  951. *---------------------------------------------------------------------* 01258000
  952. SPACE 01259000
  953. OPMSG EQU * @V200899 01260000
  954. MVC 0(M461RLN,R4),M461SKEL MOVE 461R SKELETON MSG @V200899 01261000
  955. LH R1,SAVEWRK1+2 PICK UP RADDR OF 370X @V200899 01262000
  956. CALL DMKCVTBH AND CONVERT TO HEX @V200899 01263000
  957. STCM R1,B'0111',M461RADD(R4) MOVE RADDR INTO MESSAGE@V200899 01264000
  958. LR R1,R4 ADDRESS OF MSG TO R1 @V200899 01265000
  959. LA R0,M461RLN MSG LENGHT TO R0 @V200899 01266000
  960. L R2,=A(NOTRESP) SIGNAL NOT A COMMAND RESPONSE @V60C2B8 01267100
  961. CALL DMKQCNWT,PARM=NORET+ERRMSG+NOAUTO(,R2) PROMPT @V60C2B8 01267120
  962. LA R0,16 LENGTH OF REPLY TO R0 @V200899 01268000
  963. LA R1,OPMREPLY REPLY BUFFER ADDRESS TO R1 @V200899 01269000
  964. CALL DMKQCNRD,PARM=UCASE+EDIT @V200899 01270000
  965. BNZ NOCHANG SOMETHING WENT WRONG DURING REPLY@V200899 01271000
  966. CL R0,F3 CORRECT REPLY LENGTH ? @VM08851 01272000
  967. BNE NOCHANG NO -- ABORT THE COMMAND @VM08851 01273000
  968. CLC OPMREPLY(3),=C'YES' IS REPLY 'YES' @V200899 01274000
  969. BE RNIOXIT UH HUH - GO DO THE FUNCTION @V200899 01275000
  970. NOCHANG EQU * @V200899 01276000
  971. LA R2,461 SET RETURN CODE FOR CALLER @V200899 01277000
  972. B NLDERXIT NO, EXIT WITHOUT DOING IT @V200899 01278000
  973. EJECT 01279000
  974. IORETRY EQU * @V200899 01280000
  975. BAL R7,FRERBLOK GO FREE IOERBLOK (IF ANY) @V200899 01281000
  976. MVI IOBFLAG,X'00' CLEAR IOBLOK FLAG BYTE @VM08672 01282000
  977. L R1,IOBCSW GET CSW FROM IOBLOK @V200899 01283000
  978. S R1,F8 BACK UP TO POINT AT CCW IN ERROR @V200899 01284000
  979. BNP IORSTRT RETRY FROM THE BEGINNING @VM08672 01285000
  980. ST R1,IOBRCAW RETRY FROM THE FAILING CCW @VM08672 01286000
  981. OI IOBFLAG,IOBRSTRT . . .VIA RESTART CAW @VM08672 01287000
  982. IORSTRT EQU * CHECK RETRY COUNT @VM08672 01288000
  983. LH R1,IOBRCNT GET RETRY COUNTER @V200899 01289000
  984. S R1,F1 SUBTRACT 1 @V200899 01290000
  985. STH R1,IOBRCNT AND PUT BACK @V200899 01291000
  986. BNP NORETRY RETRY COUNT USED UP @VA08639 01292200
  987. L R8,SAVEWRK9 RESTORE RDEVBLOK @VA08639 01292400
  988. LA R8,0(R8) ZERO HIGH ORDER BYTE @VA12808 01292500
  989. B RESTRNIO RESTART I/O @VA08639 01292600
  990. NORETRY EQU * @VA08639 01292800
  991. TM IOBSPEC,IOBTIO WAS ERROR ON TIO ? @V200899 01293000
  992. BO NLD040 YES, TREAT AS IF DEVICE NON-EXIST@V200899 01294000
  993. RNIOER EQU * @V200899 01295000
  994. BAL R7,FRERBLOK GO FREE IOERBLOK (IF ANY) @V200899 01296000
  995. LM R0,R9,RNSVREGS RESTORE REGS AT TIME OF I/O CALL @V200899 01297000
  996. B NLD471 FATAL I/O ERROR @V305435 01298000
  997. RNIOXIT EQU * @V200899 01299000
  998. BAL R7,FRERBLOK GO FREE IOERBLOK (IF ANY) @V200899 01300000
  999. SWITCH CONTINUE ON THE I/O PROCESSOR @V407508 01300100
  1000. LM R0,R9,RNSVREGS RESTORE REGS FOR CALLER @V200899 01301000
  1001. BR R9 I/O WAS OK - RETURN TO CALLER @V200899 01302000
  1002. SPACE 3 01303000
  1003. *---------------------------------------------------------------------* 01304000
  1004. * THIS SUBROUTINE WILL FREE THE IOERBLOK IF ANY EXISTS 01305000
  1005. *---------------------------------------------------------------------* 01306000
  1006. SPACE 01307000
  1007. FRERBLOK EQU * @V200899 01308000
  1008. L R1,IOBIOER GET IOERBLOK ADDR @V200899 01309000
  1009. LTR R1,R1 DOES ONE EXIST @V200899 01310000
  1010. BZ NOERBLOK NO, SKIP FREE CODE @V200899 01311000
  1011. LA R0,IOERSIZE SIZE OF IOERBLOK TO R0 @V200899 01312000
  1012. AH R0,IOEREXT-IOERBLOK(R1) ADD LENGTH OF EXT. @V200899 01313000
  1013. CALL DMKFRET GO FREE IT @V200899 01314000
  1014. XC IOBIOER(4),IOBIOER ZERO IOERBLOK PTR IN IOBLOK @V200899 01315000
  1015. NOERBLOK EQU * @V200899 01316000
  1016. BR R7 RETURN TO MAIN LINE CODE @V200899 01317000
  1017. EJECT 01318000
  1018. *---------------------------------------------------------------------* 01319000
  1019. * THIS SUBROUTINE WILL DISPOSE OF ALL RESOURCES THAT STILL ARE HELD * 01320000
  1020. * AT EXIT FROM DMKNLD. THIS IS TO AVOID THE POSSIBILITY OF * 01321000
  1021. * ANYTHING REMAINING IN CORE OR IN A STATUS (IE. LOCKED) THAT DID * 01322000
  1022. * NOT EXIST AT ENTRY TO DMKNLD. IT IS DRIVEN BY FLAG BITS SET IN * 01323000
  1023. * THE HIGH ORDER BYTE OF SAVEWRK1 (SEE EQUATES AT START OF MODULE * 01324000
  1024. * FOR APPROPRIATE MEANINGS OF BITS). * 01325000
  1025. *---------------------------------------------------------------------* 01326000
  1026. SPACE 01327000
  1027. CLEANUP EQU * @V200899 01328000
  1028. TM SAVEWRK1,BOOTSFLG NEED TO UNLOCK BOOTSTRAPS @VM08692 01329000
  1029. BZ CHKRBUF NO -- SEE ABOUT PAGE BUFFER @VM08692 01330000
  1030. CALL DMKPTRUL UNLOCK BOOTSTRAP (GR2 IS O.K.) @VM08692 01331000
  1031. NI SAVEWRK1,255-BOOTSFLG TIDINESS PAYS OFF @VM08692 01332000
  1032. CHKRBUF EQU * @VM08692 01333000
  1033. TM SAVEWRK1,UNLKBUF BUFFER TO BE UNLOCKED ? @V200899 01334000
  1034. BZ CHKRELSE NO, SEE IF BUFFER TO BE RELEASED @V200899 01335000
  1035. BAL R9,BUFUNLK UNLOCK THE BUFFER PAGE @VM08949 01336000
  1036. CHKRELSE EQU * @V200899 01337000
  1037. TM SAVEWRK1,PGTVREL BUFFER TO BE RELEASED? @V200899 01338000
  1038. BZ CHKRNREL NO, CHECK FOR WORK AREAS @V407508 01339100
  1039. L R1,SAVEWRK7 GET VADDR OF BUFFER @V200899 01340000
  1040. CALL DMKPGTVR GO RELEASE IT @V200899 01341000
  1041. NI SAVEWRK1,255-PGTVREL ADDRESS RELEASED @VM08692 01342000
  1042. CHKRNREL EQU * @V200899 01348000
  1043. TM SAVEWRK1,RNSAVREL WORK AREAS TO BE FREED ? @VM08692 01349000
  1044. BCR 8,R7 NO - ALL DONE @V200899 01350000
  1045. L R1,IOBMISC GET ADDR OF RNIOSAV @V200899 01351000
  1046. LA R0,RNWKSIZE LENGTH OF RNIOSAV TO R0 @V200899 01352000
  1047. CALL DMKFRET GO FREE IT @V200899 01353000
  1048. LR R1,R10 IOBLOK ADDR TO R1 @V200899 01354000
  1049. LA R0,IOBSIZE SIZE OF IOBLOK FOR FREE @V200899 01355000
  1050. CALL DMKFRET GO FREE IOBLOK @V200899 01356000
  1051. L R8,SAVEWRK9 370X REAL DEVICE BLOCK @V200899 01357000
  1052. LA R8,0(R8) ZERO HIGH ORDER BYTE @VA12808 01357500
  1053. NI RDEVFLAG,255-RDEVRCVY RECOVERY NOT ACTIVE @V200899 01358000
  1054. NI SAVEWRK1,255-RNSAVREL ALL CLEANED UP @VM08692 01359000
  1055. BR R7 RETURN TO MAIN LINE CODE @V200899 01360000
  1056. EJECT 01361000
  1057. NLD002 LA R2,2 LOAD ERROR CODE @V200899 01362000
  1058. B CALLERM . . . @V200899 01363000
  1059. NLD006 EQU * @V200899 01366000
  1060. LA R2,6 SET ERROR CODE @V200899 01367000
  1061. B NLDRADD GO SETUP FOR DMKERMSG @V200899 01368000
  1062. NLD021 EQU * @V200899 01369000
  1063. LA R2,21 SET ERROR CODE @V200899 01370000
  1064. B NOVAR @V200899 01371000
  1065. NLD026 LA R2,26 ERROR CODE @V200899 01372000
  1066. B NOVAR @V200899 01373000
  1067. NLD040 EQU * @V200899 01374000
  1068. BAL R7,CLEANUP UNLOCK, FRET, ETC. @V200899 01375000
  1069. LA R2,040(0) MSG= DMKNLD040E @V200899 01376000
  1070. NLDRADD EQU * SETUP RADDR PARM FOR DMKERMSG @V200899 01377000
  1071. LH R1,SAVEWRK1+2 GET RADDR OF 370X @V200899 01378000
  1072. CALL DMKCVTBH CONVERT TO PRINTABLE FORM @V200899 01379000
  1073. N R1,X40FFS BLANK HIGH BYTE @V200899 01380000
  1074. SLR R0,R0 ZERO LENGTH REGISTER @V200899 01381000
  1075. B CALLERM . . . @V200899 01382000
  1076. NLD044E EQU * SYSTEM HAS NOT YET BEEN SAVED @VM08697 01383000
  1077. BAL R7,CLEANUP RELEASE BUFFER ADDRESS, ETC. @VM08697 01384000
  1078. NLD044 EQU * @V200899 01385000
  1079. LA R0,8 NAME LENGTH @V200899 01386000
  1080. LA R1,SAVEWRK2 ADDRESS OF BAD NAME @V200899 01387000
  1081. LA R2,44 ERROR CODE @V200899 01388000
  1082. B CALLERM . . . @V200899 01389000
  1083. NLD046 EQU * @V200899 01390000
  1084. BAL R7,TYPRADD SETUP TYPE, RADDR FOR DMKERM @V200899 01391000
  1085. LA R2,046(0) MSG= DMKNLD046E @V200899 01392000
  1086. B CALLERM GO PUT OUT ERROR MSG @V200899 01393000
  1087. NLD140 EQU * CTLR XXX ATTACHED TO USERID @V200899 01394000
  1088. BAL R7,TYPRADD SETUP TYPE, RADDR FOR DMKERM @V200899 01395000
  1089. L R2,RDEVUSER ADDRESS OF USER'S VMBLOK @VA01880 01396000
  1090. MVC SAVEWRK4+1(8),VMUSER-VMBLOK(R2) USERID @VA01880 01397000
  1091. MVI SAVEWRK4,X'00' FIELD DELIMITER FOR DMKERM @VA01880 01398000
  1092. LA R0,17 LENGTH OF PARMS TO R0 @V200899 01399000
  1093. LA R2,140(0) MSG= DMKNLD140E @VA01880 01400000
  1094. B CALLERM GO PUT OUT ERROR MSG @V200899 01401000
  1095. NLD143 EQU * CTLR XXX IN USE BY SYSTEM @V200899 01402000
  1096. BAL R7,TYPRADD SETUP TYPE, RADDR FOR DMKERM @V200899 01403000
  1097. LA R2,143(0) MSG= DMKNLD143E @V200899 01404000
  1098. B CALLERM . . . @V200899 01405000
  1099. NLD170 EQU * @V200899 01406000
  1100. BAL R7,CLEANUP GO RELEASE AND UNLOCK ANY AREAS @V200899 01407000
  1101. * THAT WERE GOTTEN BY DMKNLD 01408000
  1102. LA R0,8 NAMELENGTH @V200899 01409000
  1103. LA R1,SAVEWRK2 NAME ADDRESS @V200899 01410000
  1104. LA R2,170 ERROR CODE @V200899 01411000
  1105. B CALLERM . . . @V200899 01412000
  1106. SPACE 2 01413000
  1107. NLD171 EQU * DMKNLD171E VOLID VOLID NOT MOUNTE@V200899 01414000
  1108. LA R2,171(0) MSG= DMKNLD171E @V200899 01415000
  1109. B NLDSYSV SETUP PARMS FOR DMKERMSG @V200899 01416000
  1110. NLD179 EQU * DMKNLD179E VOLID VOLID NOT CP OWN@V200899 01417000
  1111. LA R2,179(0) MSG= DMKNLD179E @V200899 01418000
  1112. NLDSYSV EQU * BUILD PARMS 'NCPNAME', 'VOLID' @V200899 01419000
  1113. MVI SAVEWRK4,X'00' FIELD DELIMITER AFTER 'NCPNAME' @V200899 01420000
  1114. MVC SAVEWRK4+1(6),NCPVOL-NCPTBL(R4) MOVE IN VOLID@V200899 01421000
  1115. LA R0,15 VARIABLE DATA LENGTH @V200899 01422000
  1116. LA R1,SAVEWRK2 ADDRESS OF DATA STRING @V200899 01423000
  1117. B CALLERM . . . @V200899 01424000
  1118. SPACE 01425000
  1119. NLD470 LA R15,470 PAGING I/O ERROR @VM03030 01429000
  1120. B NLDMSG ISSUE MESSAGE @V305435 01430000
  1121. SPACE 1 01431000
  1122. NLD471 LA R15,471 UNRECOVERABLE I/O ERROR @VM03030 01432000
  1123. B NLDMSG ISSUE MESSAGE @V305435 01433000
  1124. SPACE 1 01434000
  1125. NLD460 LA R15,460 PROGRAM CHECK IN BOOTSTRAP @VM03030 01435000
  1126. B NLDMSG ISSUE MESSAGE @V305435 01436000
  1127. EJECT 01437000
  1128. NLDMSG ST R15,SAVER2 SAVE ERROR RETURN CODE FOR CALLER@VM03030 01438000
  1129. BAL R7,CLEANUP CLEAN UP AS REQUIRED @VM03030 01439000
  1130. XC SAVEWRK2(L'SAVEWRK2*2),SAVEWRK2 AREA FOR MESSAGE@V305435 01440000
  1131. L R2,SAVER2 ERROR CODE NEEDED FOR DMKERM @VM03030 01441000
  1132. LH R1,SAVEWRK1+2 'RADDR' TO CONVERT @V305435 01442000
  1133. CALL DMKCVTBH CONVERT IT TO HEX @V305435 01443000
  1134. STCM R1,B'0111',SAVEWRK2 SAVE 'RADDR' IN MESSAGE @V305435 01444000
  1135. MVC SAVEWRK3,=C'LOAD' ASSUME LOADING @V305435 01445000
  1136. NLDMSGOK LA R1,SAVEWRK2 ADDRESS OF MESSAGE TEXT @V305435 01449000
  1137. LA R0,L'SAVEWRK2*2 AND LENGTH OF THE TEXT @V305435 01450000
  1138. B CALLERM CALL THE MESSAGE WRITTER @V305435 01451000
  1139. EJECT 01452000
  1140. NLD464E EQU * CC = 3 DURING LOAD OR DUMP I/O @VM08775 01453000
  1141. BAL R7,CLEANUP CLEAN UP AS NECESSARY @VM08775 01454000
  1142. LH R1,SAVEWRK1+2 370X DEVICE ADDRESS @VM08775 01455000
  1143. CALL DMKCVTBH CONVERT FOR OUTPUT @VM08775 01456000
  1144. ICM R1,8,BLANKS HIGH-ORDER BLANK FOR DMKERMSG @VM08775 01457000
  1145. SLR R0,R0 DATA IS IN GR1 @VM08775 01458000
  1146. LA R2,464(0) MSG= DMKNLD464E @VM08775 01459000
  1147. B CALLERM @VM08775 01460000
  1148. SPACE 01461000
  1149. TYPRADD EQU * BUILD TYPE, RADDR PARMS FOR DMKERMSG @V200820 01462000
  1150. MVC SAVEWRK2(4),=C'CTLR' MOVE IN DEVICE NAME @V200820 01463000
  1151. LH R1,SAVEWRK1+2 REAL DEVICE ADDRESS @V200820 01464000
  1152. CALL DMKCVTBH CONVERT DEVICE ADDR (R8 IS ALL SE@V200820 01465000
  1153. ST R1,SAVEWRK3 PUT DEV ADDR IN ERMSG PARM LIST @V200820 01466000
  1154. MVI SAVEWRK3,X'00' MOVE IN SEPARATER @V200820 01467000
  1155. LA R0,8 LENGTH OF PARMS TO R0 @V200820 01468000
  1156. LA R1,SAVEWRK2 ADDRESS OF PARMS TO R1 @V200820 01469000
  1157. BR R7 RETURN @V200820 01470000
  1158. SPACE 01471000
  1159. NOVAR SR R1,R1 ZERO ARG REG @V200899 01472000
  1160. CALLERM ICM R0,14,MODID+3 INSERT MODULE ID @V200899 01473000
  1161. TM SAVEWRK1,FROMNET ENTER VIA CONSOLE FUNCTION ?@V200820 01474000
  1162. BO *+8 YES - O.K. TO SEND AS IS @V200820 01475000
  1163. O R2,=X'20000000' SEND MSG TO SYSTEM OPERATOR @V200820 01476000
  1164. CALL DMKERMSG CALL MESSAGE MODULE @V200820 01477000
  1165. *--------------------------------------------------------------------* 01478000
  1166. * MESSAGE MODULE RETURNS DIRECTLY TO CALLER 01479000
  1167. *--------------------------------------------------------------------* 01480000
  1168. NLDEXIT EQU * @V200899 01481000
  1169. SR R2,R2 ZERO RETURN CODE REG @V200899 01482000
  1170. NLDERXIT EQU * @V200899 01483000
  1171. ST R2,SAVER2 STORE RETURN CODE FOR USER @V200899 01484000
  1172. BAL R7,CLEANUP GO RELEASE AND UNLOCK ANY AREAS @V200899 01485000
  1173. * THAT WERE OBTAINED BY DMKNLD 01486000
  1174. EXIT AND EXIT @V200899 01487000
  1175. EJECT 01488000
  1176. *---------------------------------------------------------------------* 01489000
  1177. * INTERNAL MESSAGES AND RESPONSES GENERATED AND USED BY DMKNLD * 01490000
  1178. *---------------------------------------------------------------------* 01491000
  1179. SPACE 01492000
  1180. COMPMSG DC C'CTLR XXX XXXXXXXX LOAD COMPLETE' @V200820 01495000
  1181. CMPMSGLN EQU (*-COMPMSG) @V200820 01496000
  1182. COMPRADD EQU 5 RADDR LOCATION IN COMPMSG @V200820 01497000
  1183. COMPNCPN EQU 9 NCPNAME LOCATION IN COMPMSG @V200820 01498000
  1184. * 01499000
  1185. M461SKEL DC C'DMKNLD461R CTLR XXX IPL NOT REQUIRED; ' @V200899 01500000
  1186. DC C'ENTER ''YES'' TO CONTINUE: ' @V200899 01501000
  1187. M461RLN EQU (*-M461SKEL) LENGTH OF DMKNLD461R MESSAGE @V200899 01502000
  1188. M461RADD EQU 16 LOC OF RADDR FIELD IN DMKNLD461R MS@V200899 01503000
  1189. SPACE 01504000
  1190. NOPCCW DC X'0300000020000001' UTILITY NO-OP CCW @V200899 01505000
  1191. EJECT 01506000
  1192. LTORG @V200899 01507000
  1193. EJECT 01508000
  1194. *--------------------------------------------------------------------* 01509000
  1195. * THE FOLLOWING DSECT IS USED BY THE 3705 LOAD/DUMP PROGRAMS TO MAP * 01510000
  1196. * THE 3705 I/O CCWS AND REGISTER SAVE AREA FOR I/O ROUTINES * 01511000
  1197. *--------------------------------------------------------------------* 01512000
  1198. SPACE 01513000
  1199. RNIOSAV DSECT @V200899 01514000
  1200. RNCCWS DS 9D CCW AREA ( 9 DOUBLEWORDS ) @V200899 01515000
  1201. OPMREPLY EQU RNCCWS AREA FOR OPERATOR REPLY TO '461R'@V200899 01516000
  1202. RNSVREGS DS 10F I/O REG SAVE AREA (REGS 0 - 9) @V200899 01517000
  1203. OVFLOSIZ DS 1F SAVE AREA FOR SIZE OF LAST LOAD IMAGE@V200899 01518000
  1204. NEXTADDR EQU OVFLOSIZ NEXT ADDR FOR 370X DUMP PROGRAM @V200899 01519000
  1205. NEXTLNTH DS 1H SIZE OF NEXT RECORD FOR DUMP @V200899 01520000
  1206. DS 1H UNUSED @V200899 01521000
  1207. RNWKSIZE EQU (*-RNIOSAV)/8 SIZE IN DOUBLE WORDS @V200899 01522000
  1208. SPACE 3 01523000
  1209. *--------------------------------------------------------------------* 01524000
  1210. * THE FOLLOWING EQUATES ARE USED BY THE 3705 LOAD/DUMP I/O ROUTINES * 01525000
  1211. *--------------------------------------------------------------------* 01526000
  1212. SPACE 01527000
  1213. WIPLOP EQU X'05' WRITE IPL CCW OP CODE @V200899 01528000
  1214. WRTBRKOP EQU X'09' WRITE BREAK CCW OP CODE @V200899 01529000
  1215. WRITEOP EQU X'01' WRITE CCW OP CODE @V200899 01530000
  1216. READOP EQU X'02' READ CCW OP CODE @V200899 01531000
  1217. SPACE 01531100
  1218. NONE EQU X'00' EQUATE TO INITIALIZE FLAG BYTE @V407508 01531200
  1219. EJECT 01532000
  1220. COPY CCPARM @V200899 01533000
  1221. COPY NCPTBL @V200899 01534000
  1222. COPY NETWORK @V200899 01535000
  1223. COPY EQU @V200899 01536000
  1224. COPY DEVTYPES @V200899 01537000
  1225. PSA @V200899 01538000
  1226. COPY SAVE @V200899 01539000
  1227. COPY VMBLOK @V200899 01540000
  1228. COPY RBLOKS @V200899 01541000
  1229. EJECT 01542000
  1230. COPY VBLOKS @V240820 01543000
  1231. COPY IOBLOKS @V306638 01544000
  1232. COPY IOER @V200899 01545000
  1233. END DMKNLD 01547000