Table of Contents

DMKLOG Source

References

Source Listing

DMKLOG.ASSEMBLE.txt
  1. LOG TITLE 'DMKLOG (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF SOURCE 00002000
  3. *. 00003000
  4. * MODULE NAME - 00004000
  5. * 00005000
  6. * DMKLOG - LOGON A USER (OR THE OPERATOR) 00006000
  7. * 00007000
  8. * FUNCTION - 00008000
  9. * 00009000
  10. * TO PERFORM ALL FUNCTIONS NECESSARY TO 00010000
  11. * TO LOGON A USER (OR THE OPERATOR). 00011000
  12. * 00012000
  13. * COMMAND LINE FORMAT - 00013000
  14. * 00014000
  15. * +-------+-------------------------------------------+ 00015000
  16. * | | | 00016000
  17. * | LOGON | USERID <PASSWORD> <MASK> <NOIPL> | 00017000
  18. * | - | - - | 00018000
  19. * +-------+-------------------------------------------+ 00019000
  20. * 00020000
  21. * ATTRIBUTES - 00021000
  22. * 00022000
  23. * REENTRANT, PAGEABLE, CALLED VIA SVC 00023000
  24. * 00024000
  25. * ENTRY POINTS - 00025000
  26. * 00026000
  27. * DMKLOGON - LOGON A USER 00027000
  28. * DMKLOGOP - LOGON THE OPERATOR 00028000
  29. * 00029000
  30. * ENTRY CONDITIONS - 00030000
  31. * 00031000
  32. * GPR 9 = ADDRESS OF COMMAND BUFFER (FOR DMKLOGON ONLY) 00032000
  33. * GPR 11 = ADDRESS OF USER'S VMBLOK 00033000
  34. * GPR 12 = ADDRESS OF DMKLOGON OR DMKLOGOP 00034000
  35. * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00035000
  36. * 00036000
  37. * EXIT CONDITIONS - 00037000
  38. * 00038000
  39. * UPON A SUCCESSFUL LOGON OR RECONNECT, ALL APPROPRIATE 00039000
  40. * TABLES HAVE BEEN CREATED, FILLED IN, AND/OR REVISED; 00040000
  41. * AND ALL APPROPRIATE FLAGS HAVE BEEN SET AS NECESSARY. 00041000
  42. * 00042000
  43. * CC = 0 IF LOGON OR RECONNECT WAS SUCCESSFUL (AND GPR 2 = 0). 00043000
  44. * CC = 2 IF LOGON FAILED (AND GPR 2 HOLDS ERROR CODE). 00044000
  45. * 00045000
  46. * GPR 2 = 0 IF LOGON OR RECONNECT SUCCEEDED. 00046000
  47. * GPR 2 HOLDS ERROR-CODE (SEE ERROR MESSAGES) IF LOGON FAILED. 00047000
  48. EJECT 00048000
  49. * CALLS TO OTHER ROUTINES - 00049000
  50. * 00050000
  51. * DMKACON - ESTABLISH ACCOUNTING INFORMATION 00051000
  52. * DMKBLDRT - BUILD REAL SEGMENT, PAGE, AND SWAP TABLES 00052000
  53. * DMKBLDVM - BUILD A VMBLOK 00053000
  54. * DMKCFGII - INITIATE AUTOMATIC IPL OF USER-DESIGNATED SYSTEM 00054000
  55. * DMKCQRFI - SEND MESSAGE TO USER FOR SPOOL FILES IF ANY 00055000
  56. * DMKCVTBD - CONVERT FROM BINARY TO PRINTABLE DECIMAL 00056000
  57. * DMKCVTBH - CONVERT FROM BINARY TO PRINTABLE HEX 00057000
  58. * DMKCVTDT - OBTAIN DATE-TIME 00058000
  59. * DMKEPSWD - ENTER PASSWORD 00059000
  60. * DMKFREE - OBTAIN FREE STORAGE 00060000
  61. * DMKFRERC - ACQUIRE FREE STORAGE & IF STORAGE CANNOT 00061000
  62. * BE OBTAINED, RETURN WITH CC=1 00062000
  63. * DMKFRET - RETURN UNUSED VMBLOK TO FREE STORAGE 00063000
  64. * DMKJRLLO - JOURNAL DATA ON INVALID PASSWORDS 00064000
  65. * DMKQCNWT - SEND MESSAGE TO USER TERMINAL 00065000
  66. * DMKSCNAU - FIND VMBLOK OF ACTIVE USER 00066000
  67. * DMKSCNFD - GET NEXT FIELD FROM COMMAND LINE 00067000
  68. * DMKSCNRD - TO CONVERT TERMINAL DEVICE ADDRESS TO CCU FORM 00068000
  69. * DMKSCNRU - TO FIND REAL RDEVBLOK FOR A DEDICATED DEVICE 00069000
  70. * DMKSCNVD - TO FIND VIRTUAL ADDRESS FROM VDEVBLOK 00070000
  71. * DMKSCNVU - FIND VIRTUAL DEVICE BLOCKS 00071000
  72. * DMKSCNVN - GET NAME OF VIRTUAL DEVICE 00072000
  73. * DMKSTKCP STACK CPEXBLOK FOR AUTOLOGGED USER 00073000
  74. * DMKUDRFU - FIND USER IN CP DIRECTORY 00074000
  75. * DMKUDRRD - USER DIRECTORY READ 00075000
  76. * DMKUDRRV - RELEASE VIRTUAL PAGES USED BY DMKUDR ROUTINES 00076000
  77. * DMKSCHRT - TO RESET A CLOCK COMPARATOR TRQBLOK 00077000
  78. * DMKVDSAT - ATTACH A VIRTUAL DEVICE 00078000
  79. * DMKVDSDF - DEFINE A VIRTUAL DEVICE 00079000
  80. * DMKLNKSB - CHECK & ESTABLISH LINK TO GIVEN MINIDISK 00080000
  81. * DMKERMSG - TO CONSTRUCT & SEND ERROR MESSAGES TO USER 00081000
  82. * DMKQCNSY - SYNCHRONIZE CONSOLE ACTIVITY 00082000
  83. * DMKSCHDL - MAKE AN AUTOLOGGED USER RUNNABLE 00083000
  84. * DMKUSOFF - FORCE OFF AN ILL FATED AUTOLOGGED USER 00084000
  85. * DMKLOHRC - SPLIT FROM THIS ROUTINE. RECONNECT DISC USER 00085000
  86. * 00085500
  87. * EXTERNAL REFERENCES - 00086000
  88. * 00087000
  89. * DMKSYSNM - NUMBER OF ACTIVE USERS 00088000
  90. * DMKSYSMA - MAXIMUM NUMBER OF USERS ALLOWED ON SYSTEM 00089000
  91. * DMKSYSOP - OPERATOR'S VMBLOK 00090000
  92. * DMKSCHCP - INTERRUPT RETURN ADDRESS FOR CPU TIMER INTERRUPT 00091000
  93. * DMKTMRCK - INTERRUPT RETURN ADDRESS FOR CLOCK COMPARATOR 00092000
  94. * DMKSCH80 - INTERRUPT RETURN ADDRESS FOR REAL TIMER 00093000
  95. * DMKSYSTI - TIME ZONE IDENTIFIER 00094000
  96. * DMKSYSJR - JPSCBLOK (JOURNALING CONTROL BLOCK) 00095000
  97. * 00096000
  98. * TABLES / WORK AREAS - 00097000
  99. * 00098000
  100. * NONE 00099000
  101. EJECT 00100000
  102. * REGISTER USAGE - 00101000
  103. * 00102000
  104. * GPR 2 = ADDRESS OF "UDEV" BLOCKS AND OTHER USE 00103000
  105. * GPR 8 = ADDRESS OF TERMINAL RDEVBLOK, AND OTHER USE 00104000
  106. * GPR 9 = ADDRESS OF 'LOGON' COMMAND, THEN FREE STORAGE ADDRESS 00105000
  107. * GPR 11 = ADDRESS OF USER'S VMBLOK 00106000
  108. * GPR 12 = BASE REGISTER 00107000
  109. * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00108000
  110. * 00109000
  111. * GPRS 0-1, 3-7, 10, AND 14-15 ARE WORK REGISTERS 00110000
  112. * 00111000
  113. * NOTES - 00112000
  114. * 00113000
  115. * 'PASSWORD' DENOTES THE ACTUAL USER PASSWORD. 00114000
  116. * 00115000
  117. * (USE OF THIS OPTION IS NOT RECOMMENDED 00116000
  118. * UNLESS PASSWORD SECURITY IS IRRELEVANT) 00117000
  119. * 00118000
  120. * 'MASK' IN COMMAND LINE DENOTES THAT THE TERMINAL DOES NOT HAVE 00119000
  121. * A PRINT-INHIBIT FEATURE, AND THAT MASKING CHARACTERS 00120000
  122. * ARE TO BE TYPED WHENEVER A PASSWORD IS REQUESTED. 00121000
  123. * 00122000
  124. * 'NOIPL' SIGNALS THAT NO AUTOMATIC IPL OF A NAMED SYSTEM 00123000
  125. * IS DESIRED WHEN THE LOGON PROCESS IS COMPLETE. 00124000
  126. * 00125000
  127. * IF ANY OF THESE OPTIONS IS MORE THAN 8 BYTES IN LENGTH, OR 00126000
  128. * IS GIVEN TWICE, AN ERROR 3 IS RETURNED (WITH ERROR MESSAGE). 00127000
  129. * IF AN OPTION IS NEITHER 'M' TO 'MASK' NOR 'N' TO 'NOIPL', 00128000
  130. * IT IS ASSUMED TO BE A USER PASSWORD AND IS CHECKED - ERROR 50 00129000
  131. * BEING RETURNED (WITH ERROR MESSAGE) IF INCORRECT. 00130000
  132. * 00131000
  133. * SEE STEP 13 IN "OPERATION" REGARDING THE SYSTEM LOG MESSAGE. 00132000
  134. * 00133000
  135. * OPERATION - 00134000
  136. * 00135000
  137. * 1. FOR THE DMKLOGOP ENTRY (FOR AUTOMATICALLY LOGGING IN THE 00136000
  138. * AUTOLOG USERS, AND THE 00137000
  139. * OPERATOR), SEVERAL OF THE FOLLOWING STEPS, IN GENERAL THOSE 00138000
  140. * REQUIRING A COMMAND LINE OR HUMAN ACTION, ARE EITHER OMITTED 00139000
  141. * OR ARE REPLACED BY A TRIVIAL EQUIVALENT (FOR EXAMPLE OBTAINING 00140000
  142. * THE USERID FROM A FIXED LOCATION, FOR THE OPERATOR, INSTEAD OF 00141000
  143. * PICKING IT UP FROM THE COMMAND LINE). THESE OMITTED OR 00142000
  144. * REVISED STEPS ARE MARKED WITH AN ASTERISK PRECEDING THE STEP 00143000
  145. * NUMBER (FOR EXAMPLE STEPS 2, 3, 4, & 6). 00144000
  146. * 00145000
  147. * FOR THE DMKLOGON ENTRY, TO LOGON A USER, ALL OF THE LOGIC 00146000
  148. * STEPS, AS GIVEN BELOW, APPLY. 00147000
  149. * 00148000
  150. * * 2. CHECKS TO SEE IF THE MAXIMUM ALLOWABLE NUMBER OF USERS ON 00149000
  151. * THE SYSTEM HAS BEEN EXCEEDED; IF YES, EXITS IMMEDIATELY TO 00150000
  152. * CALLER WITH AN ERROR MESSAGE & ERROR CODE 51. 00151000
  153. * 00152000
  154. * * 3. CALLS DMKSCNFD TO OBTAIN USERID FROM COMMAND LINE. 00153000
  155. * (ERROR IF USERID IS MISSING OR MORE THAN 8 CHARACTERS.) 00154000
  156. EJECT 00155000
  157. * * 4. DMKSCNFD IS THEN CALLED UP TO THREE MORE TIMES TO SEE IF 00156000
  158. * 'MASK', 'NOIPL', AND/OR A PASSWORD IS PRESENT ON THE COMMAND 00157000
  159. * LINE. IF 'MASK' IS PRESENT, THE TERMINAL REAL DEVICE BLOCK 00158000
  160. * IS FLAGGED TO INDICATE NO PRINT INHIBIT FEATURE ON THE 00159000
  161. * TERMINAL. IF 'NOIPL' IS PRESENT, A FLAGBIT IS SET TO SUPPRESS 00160000
  162. * AN AUTOMATIC IPL OF A NAMED SYSTEM WHEN LOGON IS COMPLETED. 00161000
  163. * IF A PASSWORD IS PRESENT, IT IS USED FOR COMPARING WITH THE 00162000
  164. * USER DIRECTORY BLOCK PASSWORD, INSTEAD OF CALLING DMKEPSWD. 00163000
  165. * 00164000
  166. * 5. NOW DMKUDRFU IS CALLED TO FIND THE USERID IN THE CP 00165000
  167. * DIRECTORY. IF NOT FOUND, EXITS IMMEDIATELY WITH AN ERROR 00166000
  168. * MESSAGE AND ERROR CODE 53. IF SUCCESSFUL, REMEMBERS THE 00167000
  169. * USER DIRECTORY BLOCK INFORMATION FOR SUBSEQUENT CALLS TO 00168000
  170. * DMKUDRRD, AND FOR OTHER USE. 00169000
  171. * 00170000
  172. * * 6. IF THE PASSWORD WAS PROVIDED IN THE COMMAND LINE, CHECKS 00171000
  173. * IT AGAINST THAT IN THE USER DIRECTORY BLOCK (FROM STEP 5). IF 00172000
  174. * NOT, CALLS DMKEPSWD TO OBTAIN AND CHECK THE PASSWORD. IF THE 00173000
  175. * PASSWORD WAS INCORRECT, EXITS IMMEDIATELY WITH ERROR MESSAGE 00174000
  176. * AND ERROR CODE 50. IF A COND. CODE 3 FROM DMKEPSWD INDICATES 00175000
  177. * THE PASSWORD WAS NEVER ENTERED AT ALL (DUE TO A "TIMEOUT", 00176000
  178. * PERMANENT TERMINAL ERROR, OR THE USER SIMPLY TURNED OFF 00177000
  179. * HIS TERMINAL), THEN NO ERROR MESSAGE IS GIVEN. 00178000
  180. * 00179000
  181. * 7. NOW CALLS DMKSCNAU TO SEE IF THE USER TO BE LOGGED ON IS 00180000
  182. * ALREADY AN ACTIVE USER. IF NOT, PROCEED DIRECTLY TO STEP 10. 00181000
  183. * 00182000
  184. * 8. IF YES, CHECKS TO SEE IF THE USER IS RUNNING DISCONNECTED. 00183000
  185. * IF NOT, AN ERROR MESSAGE IS GIVEN INDICATING THAT THE USER IS 00184000
  186. * LOGGED ON AT ANOTHER DEVICE, AND AN EXIT IS MADE WITH 00185000
  187. * ERROR CODE 54. 00186000
  188. * 00187000
  189. * 9. IF THE USER WAS RUNNING DISCONNECTED, THE FOLLOWING STEPS 00188000
  190. * ARE TAKEN TO RECONNECT HIM: 00189000
  191. * 00190000
  192. * A. THE VMBLOK BELONGING TO THE DISCONNECTED USER IS 00191000
  193. * REVISED TO USE THE TERMINAL REAL DEVICE BLOCK POINTED 00192000
  194. * TO BY THE "CURRENT" GPR 11, AND OTHER REVISIONS MADE AS 00193000
  195. * AS NEEDED. THEN THE VMBLOK POINTED TO BY GPR 11 IS 00194000
  196. * RELEASED FROM THE SYSTEM, AND THE OTHER VMBLOK IS USED 00195000
  197. * HEREAFTER. 00196000
  198. * 00197000
  199. * B. NEXT, THE EQUIVALENT OF STEPS 12-14 (BELOW) ARE 00198000
  200. * PERFORMED FOR ACCOUNTING, THE LOG MESSAGE, AND THE 00199000
  201. * TYPEOUT OF THE NUMBER OF SPOOLED FILES (IF ANY). 00200000
  202. * 00201000
  203. * C. THEN A MESSAGE IS SENT TO THE USER (VIA A CALL TO 00202000
  204. * DMKLOH) THAT HE HAS BEEN RECONNECTED, AND TO THE 00203000
  205. * OPERATOR THAT THE GIVEN USER HAS BEEN RECONNECTED. 00204000
  206. * 00205000
  207. * D. ANY ADDITIONAL RESETTING OF FLAG BITS AS 00206000
  208. * NEEDED IS DONE (FOR EXAMPLE, RESETTING THE DISCONNECT 00207000
  209. * FLAG-BIT). 00208000
  210. * 00209000
  211. * E. FINALLY, IN MOST CASES, NORMAL RETURN IS MADE TO 00210000
  212. * THE CALLER. (THE CALLER WOULD THEN INVOKE 'BEGIN' IF HE 00211000
  213. * WISHED TO CONTINUE HIS PROGRAM WHERE IT LEFT OFF.) 00212000
  214. * 00213000
  215. * F. THE ONE CASE IN WHICH RETURN IS NOT NORMAL IS 00214000
  216. * IF A CONSOLE FUNCTION WAS BEING EXECUTED WHEN RECONNECT 00215000
  217. * STARTED. IN THIS CASE, RETURN IS TO *+12 IN DMKCFM SO 00216000
  218. * THAT STATUS BITS WILL NOT BE CHANGED. 00217000
  219. * 00218000
  220. * 10. IF THE USER WAS NOT ACTIVE (FROM STEP 8), THEN THE LOGON 00219000
  221. * PROCESS CAN CONTINUE. THE USERID IN THE VMBLOK IS NOW CHANGED 00220000
  222. * FROM ITS VALUE OF 'LOGONXXX' TO THE CORRECT USERID, AND A FLAG 00221000
  223. * IS SET INDICATING HE IS THE LOGON PROCESS. (THIS INHIBITS 00222000
  224. * OTHERS FROM LINKING TO HIS DISKS WHILE HE IS IN THE FOLLOWING 00223000
  225. * STEPS OF LINKING TO THEM.) DMKFREE IS NOW CALLED FOR SPACE 00224000
  226. * FOR THE USER MACHINE BLOCK AND USER DEVICE BLOCKS. DMKUDRRD 00225000
  227. * IS THEN CALLED TO OBTAIN THE USER MACHINE BLOCK. APPROPRIATE 00226000
  228. * INFORMATION (E.G. CORE SIZE) IS STORED IN THE VMBLOK, AND IN 00227000
  229. * THE TERMINAL REAL DEVICE BLOCK (FOR EXAMPLE, THE LINE 00228000
  230. * AND CHARACTER DELETE SYSMBOLS (AND LINE END CHARACTERS, EXCEPT 00229000
  231. * FOR AUTOLOG USERS WITH NO REAL DEVICE BLOCK)¬ 00230000
  232. * AFFINITY PROCESSING TRIES TO SET AFFINITY IF THE SYSTEM @V4075A0 00231000
  233. * IS IN AP MODE AND THE REQUESTED PROCESSOR IS AVAILABLE. @V4075A0 00232000
  234. * IF PROCESSOR ADDRESS IS NOT AVAILABLE, WE ISSUE MSG 188. @V4075A0 00233000
  235. * IT IS AVAILABLE BUT WE ARE IN UP MODE, WE ISSUE MSG 189. @V4075A0 00234000
  236. * NEITHER CASE PREVENTS THE USER FROM LOGON. @V4075A0 00235000
  237. * AT THIS TIME THE USER MACHINE BLOCK IS TESTED TO SEE IF THE 00236000
  238. * USER WISHES TO OCCUPY THE VIRTUAL = REAL REGION. IF HE DOES, 00237000
  239. * THE CPSTATUS SWITCH IN DMKPSA IS TESTED TO SEE IF THE REGION 00238000
  240. * IS AVAILABLE, AND THE USER'S VIRTUAL MEMORY SIZE IS COMPARED 00239000
  241. * TO THE REAL SPACE THAT IS AVAILABLE. IF BOTH TESTS SUCCEED, 00240000
  242. * THE LOGON PROCESS CONTINUES AND GPR2 IS SET TO INDICATE TO 00241000
  243. * DMKBLDRT THAT SPECIAL HANDLING FOR THE VIRTUAL MEMORY CONTROL 00242000
  244. * TABLES IS REQUIRED. IF EITHER TEST FAILS, THE LOGON PROCESS 00243000
  245. * IS TERMINATED. 00244000
  246. * DMKBLDRT IS CALLED TO BUILD THE SEGMENT TABLES 00245000
  247. * (WHICH ARE A FUNCTION OF CORE SIZE). IF THE USER'S VIRTUAL 00246000
  248. * MACHINE HAS THE CAPABILITY TO RUN IN EXTENDED MODE, 00247000
  249. * THEN A VMBLOK-EXTENSION (ECBLOK) IS OBTAINED FROM FREE 00248000
  250. * STORAGE, INITIALIZED, AND ITS ADDRESS STORED IN THE VMBLOK. 00249000
  251. * A TABLE OF VIRTUAL DEVICE BLOCKS IS THEN 00250000
  252. * OBTAINED FROM FREE STORAGE (DMKFRERC) AS A FUNC. OF THE 00251000
  253. * "DEVICE COUNT" IN THE USER MACHINE BLOCK (AND THE VIRTUAL 00252000
  254. * ADDRESSES ARE SET TO THEIR 'NULL' VALUE OF X'FFFF'). 00253000
  255. * IF THE STORAGE CANNOT BE OBTAINED, A CHECK WILL BE MADE 00254000
  256. * TO SEE IF MORE THAN 512 DOULBE WORDS HAD BEEN REQUESTED. 00255000
  257. * IF NOT, ERROR MSG DMKLOG131E WILL BE ISSUED. IF MORE 00256000
  258. * MORE THAN 512 DOUBLEWORDS HAD BEEN REQUESTED AND COULD NOT 00257000
  259. * BE SATISFIED, THE REQUEST WILL BE RE-ISSUED THIS TIME 00258000
  260. * ASKING FOR 512 DOUBLEWORDS SO THAT IF A SMALLER AMOUNT OF 00259000
  261. * STORAGE WAS AVAILABLE, THE USER WOULD BE ABLE TO LOGON WITH 00260000
  262. * SOME OF HIS VIRTUAL CONFIGURATION. IF THIS SECOND REQUEST 00261000
  263. * FAILS, DMKLOG131E WILL BE ISSUED. IF THE SECOND REQUEST 00262000
  264. * COMPLETES SUCCESSFULLY, LOGON PROCESSING WILL CONTINUE TO 00263000
  265. * ATTACH/LINK/DEFINE VIRTUAL DEVICES UNTIL STORAGE IS NO 00264000
  266. * LONGER AVAILABLE TO ACCOMMODATE THE VIRTUAL BLOCKS. 00265000
  267. * WHEN THIS HAPPENS, ONE OF THE FOLLOWING TWO MESSAGES WILL 00266000
  268. * APPEAR DEPENDING ON THE CONDITION ENCOUNTERED (DMKLOG095E 00267000
  269. * OR DMKLNK119E). 00268000
  270. * VIRTUAL CHANNEL AND CONTROL UNIT TABLES ARE NOW OBTAINED 00269000
  271. * FROM FREE STORAGE - A SMALL NUMBER OF BLOCKS FOR EACH 00270000
  272. * TABLE - NAMELY TWO CHANNEL BLOCKS AND THREE CONTROL UNIT 00271000
  273. * BLOCKS (CORRESPONDING TO A TYPICAL MINIMUM VIRTUAL MACHINE). 00272000
  274. * 00273000
  275. * 11. NOW DMKUDRRD IS CALLED REPEATEDLY TO OBTAIN THE 00274000
  276. * NECESSARY INFORMATION FOR INITIALIZING THE VIRTUAL BLOCKS 00275000
  277. * FOR ALL OF THE DEVICES PERTAINING TO THE USER. FOR EACH 00276000
  278. * DEVICE FOUND, IT IS PROCESSED AS FOLLOWS, UNTIL ALL 00277000
  279. * THE USER DEVICES ARE EXHAUSTED: 00278000
  280. * 00279000
  281. * A. IF THE DEVICE IS A NON-DEDICATED DASD DEVICE, 00280000
  282. * THEN DMKLNKSB IS CALLED TO ESTABLISH A LINK TO THE 00281000
  283. * SPECIFIED DEVICE. ANY RESPONSES OR ERROR MESSAGES 00282000
  284. * WHICH MAY OCCUR IN THIS PROCESS ARE INITIATED BY THE 00283000
  285. * DMKLNKSB ROUTINE. 00284000
  286. * 00285000
  287. * B. FOR SOME DEVICES, FOR EXAMPLE A T-DISK, DMKVDSDF IS 00286000
  288. * CALLED TO 'DEFINE' THE DEVICE; IF THE 'DEFINE' FAILED 00287000
  289. * (FOR EXAMPLE, NO TEMPORARY SPACE AVAILABLE), AN ERROR 00288000
  290. * MESSAGE IS GIVEN, AND PROCEEDS TO THE NEXT DEVICE. 00289000
  291. * 00290000
  292. * C. FOR OTHER DEVICES, FOR EXAMPLE TERMINAL, SPOOLED 00291000
  293. * READER, PRINTER, OR PUNCH, DMKVDSAT OR DMKVDSDF IS 00292000
  294. * CALLED TO SET UP THE APPROPRIATE BLOCKS FOR THAT DEVICE. 00293000
  295. * 11. (CONTINUED): 00294000
  296. * 00295000
  297. * D. FOR DEDICATED DEVICES, DMKVDSAT IS CALLED TO 00296000
  298. * ATTACH THE DEVICE TO THE USER (IF FEASIBLE). AN 00297000
  299. * ERROR MESSAGE IS GIVEN IF THE DEVICE IS UNAVAILABLE. 00298000
  300. * 00299000
  301. * E. WHEN ALL DEVICES HAVE BEEN PROCESSED, DMKUDRRV IS 00300000
  302. * CALLED TO RELEASE THE VIRTUAL CORE USED BY THE DMKUDR 00301000
  303. * ROUTINES. 00302000
  304. * 00303000
  305. * 12. NOW DMKACON IS CALLED TO DO THE ACCOUNTING LOGIC 00304000
  306. * APPROPRIATE TO THE LOGON PROCESS. 00305000
  307. * 00306000
  308. * 13. NOW, DMKLOH IS CALLED. THE DATE/TIME AT WHICH THE SYSTEM 00307000
  309. * LOG MESSAGE (LOGMSG) WAS GENERATED OR MOST RECENTLY REVISED IS 00308000
  310. * THEN TYPED AT THE USER'S TERMINAL, EXCEPT FOR AUTOLOG USERS 00309000
  311. * WITH NO REAL TERMINAL. 00310000
  312. * 00311000
  313. * IF ANY LINES OF THE SYSTEM LOG MESSAGE START WITH AN ASTERISK 00312000
  314. * (INDICATING THEY ARE OF A HIGH PRIORITY), THEY ARE TYPED 00313000
  315. * AT THE USER'S TERMINAL AT THIS POINT. (OTHERWISE, MERELY THE 00314000
  316. * DATE/TIME OF THE LOG MESSAGE IS GIVEN.) 00315000
  317. * 00316000
  318. * THEN, IF ANY FILES EXIST IN HIS READER, PRINTER, 00317000
  319. * OR PUNCH, THIS INFORMATION IS TYPED AT HIS TERMINAL. 00318000
  320. * 00319000
  321. * NEXT, THE 'READY AT ... TIME ... DATE' MESSAGE IS SENT 00320000
  322. * TO THE USER, AND A MESSAGE IS SENT TO THE SYSTEM OPERATOR 00321000
  323. * INDICATING THAT THE USER HAS BEEN LOGGED ON. 00322000
  324. * 00323000
  325. * 14. FINALLY, THE FREE STORAGE USED FOR THE USER MACHINE 00324000
  326. * AND DEVICE BLOCKS IS RETURNED VIA DMKFRET, APPROPRIATE 00325000
  327. * FLAG BITS ARE RESET IN VMBLOK AS NEEDED (E.G. THE BIT 00326000
  328. * INDICATING THE USER WAS IN THE LOGON PROCESS). THEN IF 00327000
  329. * THE USER IS NOT RECONNECTING, AND IF THE VM ASSIST FEATURE 00328000
  330. * IS AVAILABLE, SETUP IS DONE FOR VM ASSIST FOR THE USER (A 00329000
  331. * MICBLOK IS OBTAINED, AND THE MICBLOK AND THE VMMICRO FIELD 00330000
  332. * IN THE VMBLOK ARE INITIALIZED - ALSO, IF THE CP ASSIST FEATURE 00331000
  333. * IS AVAILABLE, FIELDS IN THE MICBLOK AND VMBLOK ARE SET UP). IF 00332000
  334. * NO ERROR OCCURRED, AND IF A NAMED SYSTEM WAS SPECIFIED IN THE 00333000
  335. * USER'S DIRECTORY, AND IF HE DID NOT SPECIFY 'NOIPL' IN THE 00334000
  336. * LOGON COMMAND LINE, THEN THE DMKCFGII ROUTINE IS CALLED 00335000
  337. * TO INITIATE THE DESIRED IPL PROCESS. THEN DMKJRLLO 00336000
  338. * IS CALLED (IF JOURNALING IS ON) TO ACCUMULATE DATA 00337000
  339. * ON THE USE OF INVALID PASSWORDS. FINALLY, RETURN IS 00338000
  340. * MADE TO THE CALLER, WITH THE APPROPRIATE ERROR CODE OF 00339000
  341. * 0, 20, OR 50-54 IN GPR 2. 00340000
  342. EJECT 00341000
  343. * MESSAGES - 00342000
  344. * 00343000
  345. * PROMPTING MESSAGE (FROM DMKEPSWD): 00344000
  346. * 00345000
  347. * 'ENTER PASSWORD:' 00346000
  348. * 00347000
  349. * NORMAL RESPONSES: 00348000
  350. * 00349000
  351. * 'LOGMSG - HH:MM:SS TID WEEKDAY MM/DD/YY' 00350000
  352. * 00351000
  353. * 'LOGON AT HH:MM:SS TID WEEKDAY MM/DD/YY' 00352000
  354. * OR 00353000
  355. * 'RECONNECTED AT HH:MM:SS TID WEEKDAY MM/DD/YY' 00354000
  356. * 00355000
  357. * INFORMATIVE MESSAGE GIVEN IF A DISK HAVING A "MULT" USER ACCESS 00356000
  358. * MODE IS SET TO WRITE AS DESIRED, BUT OTHER USER(S) ARE LINKED 00357000
  359. * TO THE DISK IN READ ONLY STATUS: 00358000
  360. * 00359000
  361. * 'DASD XXX LINKED R/W; R/O BY USERID' 00360000
  362. * OR 00361000
  363. * 'DASD XXX LINKED R/W; R/O BY NNN USERS' 00362000
  364. * @V4075A0 00363000
  365. * DMKLOG188E: SPECIFIED PROCESSOR UNAVAILABLE @V4075A0 00364000
  366. * @V4075A0 00365000
  367. * DMKLOG189I: AFFINITY NOT SET, SYSTEM IN UNI-PROCESSOR MOD@V4075A0 00366000
  368. * 00367000
  369. * ERROR MESSAGES (LOGON NOT ACCOMPLISHED): 00368000
  370. * 00369000
  371. * DMKLOG003E INVALID OPTION - OPTION 00370000
  372. * 00371000
  373. * DMKLOG020E USERID MISSING OR INVALID 00372000
  374. * 00373000
  375. * DMKLOG050E PASSWORD INCORRECT 00374000
  376. * 00375000
  377. * DMKLOG051E MAXIMUM USERS EXCEEDED 00376000
  378. * 00377000
  379. * DMKLOG052E ERROR IN CP DIRECTORY 00378000
  380. * 00379000
  381. * DMKLOG053E USERID NOT IN CP DIRECTORY 00380000
  382. * 00381000
  383. * DMKLOG054E ALREADY LOGGED ON TYPE RADDR 00382000
  384. * 00383000
  385. * DMKLOG059E AUTOLOG FAILED FOR USERID - IPL MISSING 00384000
  386. * - IPL FAILED 00385000
  387. * - ACCOUNTING ERROR 00386000
  388. EJECT 00387000
  389. * OTHER ERROR MESSAGES (LOGON HAS BEEN ACCOMPLISHED): 00388000
  390. * 00389000
  391. * DMKLOG090E DEV VADDR NOT DEFINED; DEV RADDR NOT AVAILABLE 00390000
  392. * VOLSER 00391000
  393. * 00392000
  394. * DMKLOG091E DASD VADDR NOT DEFINED; TEMP SPACE NOT AVAILABLE 00393000
  395. * 00394000
  396. * DMKLOG092E DEV VADDR NOT DEFINED; TYPE VADDR ALREADY DEFINED 00395000
  397. * 00396000
  398. * DMKLOG093E DEV VADDR NOT DEFINED; ERROR IN CP DIRECTORY 00397000
  399. * DMKLOG095E DEV VADDR NOT DEFINED; INSUFFICIENT FREE STORAGE 00398000
  400. * DMKLOG131E INSUFFICIENT FREE STORAGE AVAILABLE FOR LOGON REQUEST 00399000
  401. * 00400000
  402. * NOTE - THE FOLLOWING MESSAGES ARE ISSUED FROM THE DMKLNK MODULE, 00401000
  403. * CALLED VIA THE DMKLNKSB ENTRY POINT TO ESTABLISH A LINK TO 00402000
  404. * A DASD DEVICE IN THE USER'S DIRECTORY: 00403000
  405. * 00404000
  406. * IN THE RESPONSES AND ERROR MESSAGES WHERE "R/W BY NNN USERS" 00405000
  407. * IS NORMALLY SPECIFIED, IF THE "NNN" IS SPECIFICALLY 001, 00406000
  408. * THE USERID OF THE ONE USER IS GIVEN INSTEAD OF "NNN USERS". 00407000
  409. * 00408000
  410. * 00409000
  411. * DMKLNK101W DASD YYY FORCED R/O; R/O BY NNN USERS 00410000
  412. * 00411000
  413. * DMKLNK102W DASD YYY FORCED R/O; R/W BY NNN USERS 00412000
  414. * 00413000
  415. * DMKLNK103W DASD YYY FORCED R/O; R/W BY NNN USERS; R/O BY NNN USERS 00414000
  416. * 00415000
  417. * DMKLNK104E USERID XXX NOT LINKED; R/O BY NNN USERS 00416000
  418. * 00417000
  419. * DMKLNK105E USERID XXX NOT LINKED; R/W BY NNN USERS 00418000
  420. * 00419000
  421. * DMKLNK106E USERID XXX NOT LINKED; R/W BY NNN USERS; R/O BY NNN USERS 00420000
  422. * 00421000
  423. * DMKLNK107E USERID XXX NOT LINKED; NOT IN CP DIRECTORY 00422000
  424. * 00423000
  425. * DMKLNK108E USERID XXX NOT LINKED; VOLID DSKLAB NOT MOUNTED 00424000
  426. * 00425000
  427. * DMKLNK109E USERID XXX NOT LINKED; INVALID LINK DEVICE 00426000
  428. * 00427000
  429. * DMKLNK111E USERID XXX NOT LINKED; NO READ PASSWORD 00428000
  430. * 00429000
  431. * DMKLNK112E USERID XXX NOT LINKED; NO WRITE PASSWORD 00430000
  432. * 00431000
  433. * DMKLNK113E USERID XXX NOT LINKED; NO MULT PASSWORD 00432000
  434. * 00433000
  435. * DMKLNK116E USERID XXX NOT LINKED; CP DIRECTORY IN USE 00434000
  436. * 00435000
  437. * DMKLNK119E USERID XXX NOT LINKED; INSUFFICIENT FREE STORAGE 00436000
  438. * 00437000
  439. * MESSAGES SENT TO SYSTEM OPERATOR: 00438000
  440. * 00439000
  441. * 'TYPE RADDR LOGON AS USERID USERS = NNN' 00440000
  442. * OR 00441000
  443. * 'TYPE RADDR RECONNECT USERID USERS = NNN' 00442000
  444. *. 00443000
  445. EJECT 00444000
  446. COPY OPTIONS 00445000
  447. COPY LOCAL 00446000
  448. SPACE 3 00447000
  449. DMKLOG CSECT 00448000
  450. SPACE 00449000
  451. DC CL8'DMKLOG' PAGEABLE MODULE IDENTIFIER @V200820 00450000
  452. SPACE 00451000
  453. * ENTRY DMKLOGON LOGON A USER 00452000
  454. * ENTRY DMKLOGOP LOGON THE OPERATOR 00453000
  455. EXTRN DMKLOHON DMKLOG EXTENSION @VMD0130 00454000
  456. SPACE 00455000
  457. EXTRN DMKSCH80,DMKSYSTI,DMKBLDEC @V2B4320 00456000
  458. EXTRN DMKSCHDL @V305535 00457000
  459. EXTRN DMKBLDVM @V305535 00458000
  460. EXTRN DMKSTKCP @V408246 00459000
  461. EXTRN DMKSSSL1,DMKSSSL2,DMKSSSL3 @V60B6B8 00460000
  462. EXTRN DMKDSPCH @V60B6B8 00461000
  463. EXTRN DMKSCNVS @VMI2009 00462000
  464. SPACE 00463000
  465. EXTRN DMKSCNAU,DMKSCNFD,DMKSCNRD,DMKSCNVD,DMKSCNRU,DMKSCNVU 00464000
  466. EXTRN DMKSCNVN,DMKCVTBD,DMKCVTBH,DMKCVTDT @VM08870 00465000
  467. EXTRN DMKBLDRT,DMKCFGII,DMKCQRFI,DMKERMSG,DMKEPSWD @V304635 00466000
  468. EXTRN DMKUDRFU,DMKUDRRD,DMKUDRRV,DMKVDSAT,DMKVDSDF @V200820 00467000
  469. EXTRN DMKUDRMD @V407466 00468000
  470. EXTRN DMKLNKSB,DMKSCHRT,DMKACON @V200820 00469000
  471. EXTRN DMKQCNSY @VA01731 00470000
  472. EXTRN DMKCPINT @VA02064 00471000
  473. EXTRN DMKCVTAB @VA04301 00472000
  474. EXTRN DMKFRERC @V407466 00473000
  475. EXTRN DMKSLC @VA07315 00474000
  476. EXTRN DMKSYSJR,DMKJRLLO @V60BBBB 00475000
  477. EXTRN DMKLOHRC RECONNECT DISC USER @VA13723 00475500
  478. SPACE 00476000
  479. USING PSA,R0 FOR ALL ENTRIES 00477000
  480. USING VMBLOK,R11 " 00478000
  481. USING DMKLOG,R12 " 00479000
  482. USING SAVEAREA,R13 " 00480000
  483. EJECT 00481000
  484. DMKLOGON RELOC LOGON A USER 00482000
  485. SR R2,R2 CLEAR SAVEWRK1 FLAG 00483000
  486. ST R2,SAVEWRK1 ... 00484000
  487. LOG00 DS 0H @V305535 00485000
  488. CALL DMKSCNFD PICK UP USERID FROM THE COMMAND LINE 00492000
  489. BNZ ERROR20 ERROR IF USERID MISSING 00493000
  490. CL R0,F8 WAS USERID > 8 BYTES IN LENGTH ? 00494000
  491. BH ERROR20 TUT-TUT. 00495000
  492. LA R2,SAVEWRK2 POINT TO SCRATCH AREA (BIG ENOUGH@V200820 00496000
  493. CALL DMKUDRFU FIND USERID IN CP DIRECTORY 00497000
  494. BNZ ERROR53 ERROR IF NOBODY EVER HEARD OF THIS GUY. 00498000
  495. USING UDIRBLOK,R2 REFERENCE USER DIRECTORY BLOCK FOR NOW 00499000
  496. CLC UDIRPASS(8),=C'NOLOG ' USER ALLOWED TO LOGON@V200820 00500000
  497. BE ERROR53 MAKE BELIEVE NOT THERE @V305535 00501000
  498. TM SAVEWRK1,AUTOLOG+PSWRDCK AUTOLOG COMMAND? @V60BBBB 00502000
  499. BNO LOG02 BR IF NOT @V60BBBB 00503000
  500. L R3,=A(DMKSYSJR) GET ADDRESS OF JPSCBLOK @V60BBBB 00504000
  501. USING JPSCBLOK,R3 TELL ASSEMBLER @V60BBBB 00505000
  502. TM MASKLOG,L'MASKLOG LOGON/AUTOLOG PSWD SUPPRESS? @V60BBBB 00506000
  503. BZ LOG02 BR IF NOT @V60BBBB 00507000
  504. DROP R3 @V60BBBB 00508000
  505. * R10 STILL POINTS AT VMBLOK OF COMMAND ISSUER. @V60BBBB 00509000
  506. TM VMOSTAT-VMBLOK(R10),VMCF CONSOLE FUNCTION? @V60BBBB 00510000
  507. BZ LOG02 BR IF NOT @V60BBBB 00511000
  508. TM VMOSTAT-VMBLOK(R10),VMVIRCF VIRT. CONS. FUNCT? @V60BBBB 00512000
  509. BZ LOG06F ASSUME FURTHER PARMS ARE FOR @V60BBBB 00513000
  510. * FIRST VM READ. @V60BBBB 00514000
  511. TM VMFSTAT-VMBLOK(R10),VMNPWOCL DOES VM WANT PASS- @V60BBBB 00515000
  512. * WORD SUPPRESSION? @V60BBBB 00516000
  513. BO LOG06F BR IF YES - READ PASSWORD @V60BBBB 00517000
  514. EJECT 00518000
  515. LOG02 EQU * SCAN COMMAND LINE FOR OPTIONS @V200820 00519000
  516. CALL DMKSCNFD LOOK FOR ANOTHER FIELD @V200820 00520000
  517. BNZ LOG06 IF NOT, PROCEED WITH THE MAIN BUSINESS. 00521000
  518. LR R15,R0 BYTE-COUNT LESS 1 INTO R15 (FOR 'EX' USE) 00522000
  519. BCTR R15,0 ... 00523000
  520. CL R15,F7 SHOULDN'T BE MORE THAN 7 NOW 00524000
  521. BH ERROR3 INVALID OPTION 00525000
  522. TM SAVEWRK1,AUTOLOG+PSWRDCK ALOGON COMMAND? @V305535 00526000
  523. BO LOG02B YES, MUST BE PASSWORD. @VM03066 00527000
  524. EX R15,CLCMASK IS IT 'MASK' ? 00528000
  525. BE LOG03 TRF IF YES. 00529000
  526. EX R15,CLCNOIPL OR 'NOIPL' ? 00530000
  527. BE LOG04 YES. 00531000
  528. L R3,=A(DMKSYSJR) GET ADDRESS OF JPSCBLOK @V60BBBB 00532000
  529. USING JPSCBLOK,R3 TELL ASSEMBLER @V60BBBB 00533000
  530. TM MASKLOG,L'MASKLOG LOGON PASSWORD SUPPRESS? @V60BBBB 00534000
  531. BZ LOG02B BR IF NOT @V60BBBB 00535000
  532. DROP R3 @V60BBBB 00536000
  533. B ERROR67 GO GIVE ERROR MESSAGE @V60BBBB 00537000
  534. LOG02B DS 0H @V305535 00538000
  535. TM SAVEWRK1,PSWRDOK PASSWORD ENTERED BEFORE ?? 00539000
  536. BO ERROR3 YES, NOT VALID AGAIN 00540000
  537. MVC SAVEWRK8(8),BLANKS BLANK-FILL AND 00541000
  538. EX R15,SAVEPASS SAVE THE PASSWORD 00542000
  539. CLC UDIRPASS,SAVEWRK8 CHECK PASSWORD RIGHT NOW (WHY NOT?) 00543000
  540. BNE LOG05 IF WRONG, MAKE HIM ENTER IT @V60BBBB 00544000
  541. * AS USUAL. @V60BBBB 00545000
  542. ST R10,SAVEWRK8 RE-SAVE AUTOLOG CMD VMBLOK ADDR @VM03066 00546000
  543. OI SAVEWRK1,PSWRDOK SIGNAL CORRECT PASSWORD AVAILABLE 00547000
  544. TM SAVEWRK1,AUTOLOG+PSWRDCK IS THIS AUTOLOG CMD? @VM03066 00548000
  545. BO LOG07 YES, CONT. WITH AUTOLOG PROCESS @VM03066 00549000
  546. B LOG02 NO, GO BACK FOR MORE OPERANDS @VM03066 00550000
  547. * 00551000
  548. LOG03 DS 0H OPTION IS 'MASK' - 00552000
  549. TM SAVEWRK1+1,INHIBIT MASK OPTION ENTERED ALREADY @V200820 00553000
  550. BO ERROR3 YES - ALLOW IT ONLY ONCE @V200820 00554000
  551. OI SAVEWRK1+1,INHIBIT 'MASK' WAS ENTERED @V200820 00555000
  552. L R8,VMTERM IF YES, REFERENCE TERMINAL RDEVBLOK 00556000
  553. USING RDEVBLOK,R8 ... 00557000
  554. CLI RDEVTYPC,CLASSPEC LOGON VIA THE 3705 NCP ? @V200820 00558000
  555. BE LOG03A YES - GO FIND THE NICBLOK @V200820 00559000
  556. CLI RDEVTYPC,CLASTERM TERMINAL-CLASS DEVICE ? @V200820 00560000
  557. BNE LOG02 LET MASK BE ENJOYED BY ALL @V60BBBB 00561000
  558. TM RDEVTYPE,TYPBSC IS THIS A BISYNC LINE @V2D3931 00562000
  559. BO LOG03A YES, ... @V2D3931 00563000
  560. OI RDEVSTA3,RDEVATSW PREVENT ATTN DURING SWITCH @VA10462 00563500
  561. SWITCH MAKE SURE WE'RE ON THE IO PROC @V4075A0 00564000
  562. NI RDEVSTA3,X'FF'-RDEVATSW ALLOW ATTN AFTER SWITCH @VA10462 00564500
  563. NI RDEVFLAG,255-RDEVPSUP FLAG TERMINAL: NO PRINT-SUPPRESS 00565000
  564. B LOG02 GET NEXT FIELD IF ANY 00566000
  565. LOG03A EQU * CHECK PRINT SUPPRESS FOR 3705 DEV@V200820 00567000
  566. LH R7,VMTRMID 370X NCP RESOURCE REFERENCE @V200820 00568000
  567. N R7,F4095 EXTRACT THE ACTUAL RESOURCE I.D. @V200820 00569000
  568. MH R7,=AL2(NICSIZE*8) CONVERT TO NICLIST INDEX @V200820 00570000
  569. AL R7,RDEVNICL GR7 = ADDRESS OF TERMINAL NICBLOK@V200820 00571000
  570. USING NICBLOK,R7 ... @V200820 00572000
  571. NI NICFLAG,255-NICPSUP TURN OFF PRINT SUPPRESS@V200820 00573000
  572. B LOG02 GO SCAN FOR ANY FURTHER OPTIONS @V200820 00574000
  573. SPACE 2 00575000
  574. LOG04 DS 0H OPTION IS 'NOIPL' - 00576000
  575. TM SAVEWRK1,NOIPL NOIPL GIVEN BEFORE ?? 00577000
  576. BO ERROR3 YES, CANT DO IT AGAIN 00578000
  577. OI SAVEWRK1,NOIPL SET FLAGBIT: NO AUTOMATIC IPL TODAY 00579000
  578. B LOG02 GET NEXT FIELD IF ANY 00580000
  579. LOG05 MVC SAVEWRK6(L'UDIRPASS),SAVEWRK8 SAVE INVALID @V60BBBB 00581000
  580. * PASSWORD FOR USE IF JOURNALING @V60BBBB 00582000
  581. * IS ON. @V60BBBB 00583000
  582. ST R10,SAVEWRK8 RE-SAVE AUTOLOG COMMAND VMBLOK @V60BBBB 00584000
  583. * ADDRESS. @V60BBBB 00585000
  584. SR R1,R1 SET CC=0 FOR ERROR50 @V60BBBB 00586000
  585. B ERROR50 PASSWORD INCORRECT 00587000
  586. SPACE 2 00588000
  587. LOG06 TM SAVEWRK1,PSWRDOK DO WE NEED TO CHECK A PASSWORD ? 00589000
  588. BO LOG07 TRF IF NOT - ALREADY PROVIDED & CORRECT. 00590000
  589. TM SAVEWRK1,AUTOLOG+PSWRDCK ALOGON COMMAND? @V305535 00591000
  590. BZ LOG06A NO, CALL FOR PASSWORD @V305535 00592000
  591. SR R0,R0 SET CC=0 FOR ERROR50 @VM03066 00593000
  592. MVC SAVEWRK6(L'UDIRPASS),BLANKS CLEAR AREA WHERE @V60BBBB 00594000
  593. * INVALID PASSWORD IS SAVED. @V60BBBB 00595000
  594. B ERROR50 BAD PASSWORD ERROR @V305535 00596000
  595. LOG06A DS 0H @V305535 00597000
  596. L R15,=A(DMKSYSJR) GET ADDRESS OF JPSCBLOK @V60BBBB 00598000
  597. USING JPSCBLOK,R15 TELL ASSEMBLER @V60BBBB 00599000
  598. TM MASKLOG,L'MASKLOG LOGON PASSWORD SUPPRESSION ON?@V60BBBB 00600000
  599. BZ LOG06F BR IF NOT @V60BBBB 00601000
  600. DROP R15 @V60BBBB 00602000
  601. TM SAVEWRK1+1,INHIBIT WAS 'MASK' REQUESTED? @V60BBBB 00603000
  602. BZ LOG03 MAKE IT LOOK LIKE IT WAS @V60BBBB 00604000
  603. LOG06F DS 0H @V60BBBB 00605000
  604. LR R9,R11 PRIME R9 @V60BBBB 00606000
  605. TM SAVEWRK1,AUTOLOG+PSWRDCK AUTOLOG COMMAND? @V60BBBB 00607000
  606. BNO LOG06H BR IF NOT @V60BBBB 00608000
  607. L R1,SAVEWRK8 PASS COMMAND ISSUER'S VMBLOK @VMI0045 00609000
  608. BAL R5,SWVM GO SWITCH VMBLOKS @VMI0045 00610000
  609. LOG06H LA R0,4 R0=4 MEANS GIVE 'ENTER PASSWORD' @V60BBBB 00611000
  610. * MESSAGE AND RETURN ANY INVALID @V60BBBB 00612000
  611. * PASSWORD IN R0/R1. @V60BBBB 00613000
  612. LA R1,UDIRPASS R1 POINTS TO THE CORRECT PASSWORD 00614000
  613. CALL DMKEPSWD ASK FOR PASSWORD NOW 00615000
  614. BALR R15,0 GET THE CONDITION CODE @VMI0070 00616000
  615. ST R15,SAVEWRK9 SAVE IT FOR LATER RESTORATION @VMI0070 00617000
  616. BZ LOG06J GO REMEMBER RC 0 @VMI0045 00618000
  617. STM R0,R1,SAVEWRK6 SAVE POSSIBLE INCORRECT PASSWORD @VMI0045 00619000
  618. LA R5,LOG06L SET BRANCH TO ERROR RTN - PWD IS @VMI0070 00620000
  619. * INCORRECT, OR TERMINAL IS NO GOOD. 00621000
  620. B LOG06K GO SEE IF SWITCH IS NEEDED @VMI0045 00622000
  621. SPACE 00623000
  622. LOG06J EQU * @VMI0045 00624000
  623. LA R5,LOG07 SET BRANCH TO PWD OK PROCESSING @VMI0045 00625000
  624. SPACE 00626000
  625. LOG06K EQU * SET UP AND GO SWITCHVM IF NEEDED @VMI0045 00627000
  626. TM SAVEWRK1,AUTOLOG+PSWRDCK AUTOLOG COMMAND? VMI0045 00628000
  627. BNOR R5 NO - GO TO PROPER ROUTINE @VMI0045 00629000
  628. LR R1,R9 PASS VMBLOK ADDRESS FOR SWITCHVM @VMI0045 00630000
  629. B SWVM GO DO VMBLOK SWITCH @VMI0045 00631000
  630. * BR R5 EXIT EXECUTED BY SWVM SUBROUTINE 00632000
  631. SPACE 1 @VMI0070 00633000
  632. LOG06L DS 0H @VMI0070 00634000
  633. L R15,SAVEWRK9 GET THE CC FROM DMKEPSWD @VMI0070 00635000
  634. SPM R15 RESTORE IT @VMI0070 00636000
  635. B ERROR50 GO PROCESS THE ERROR @VMI0070 00637000
  636. SPACE 00638000
  637. * 00639000
  638. * CONTINUE - USERID WAS FOUND, AND PASSWORD IS CORRECT: 00640000
  639. * 00641000
  640. LOG07 EQU * START BUILDING VIRTUAL MACHINE @V200820 00642000
  641. LA R0,UDBFSIZE*2+2 GET FREE STORAGE FOR TWO UDBFBLOKS 00643000
  642. CALL DMKFREE PLUS 2 EXTRA WORDS FOR USE BY DMKLNKSB 00644000
  643. LR R9,R1 REMEMBER THE ADDRESS IN R9. 00645000
  644. OI SAVEWRK1,R9FRE SIGNAL: RETURN FREE STORAGE AT EXIT. 00646000
  645. TM SAVEWRK1,AUTOLOG+PSWRDCK AUTOLOG CMD? @VA09172 00646100
  646. BNZ LOG070AA YES, BYPASS FOLLOWING CHECKS @VA09172 00646200
  647. CALL DMKQCNSY FINISH UP ALL CONSOLE REQUESTS @VA09172 00646300
  648. L R8,VMTERM GET TERMINAL RDEVBLOK ADDRESS @VA09172 00646400
  649. LTR R8,R8 TERMINAL STILL THERE? @VA09172 00646500
  650. BZ LOGEXIT NO, ABORT LOGON @VA09172 00646600
  651. LOG070AA DS 0H @VA09172 00646700
  652. LA R0,8 POINT TO 8-BYTE USERID 00647000
  653. LA R1,UDIRUSER ... 00648000
  654. CALL DMKSCNAU SEE IF THIS USERID IS ACTIVE 00649000
  655. BC 4,LOG10 CC 1 = NOT LOGGED ON AT ALL (GOOD) 00650000
  656. BC 1,ERROR54 CC 3 = IN LOGOFF STATE (TREAT AS ACTIVE) 00651000
  657. TM SAVEWRK1,AUTOLOG AUTOLOG COMMAND? @V305535 00652000
  658. BO ERROR54 YES, RETURN ERROR MESSAGE @V305535 00653000
  659. TM VMOSTAT-VMBLOK(R1),VMDISC IF ACTIVE, IS HE DISCONNECTED? 00654000
  660. BZ ERROR54 ERROR IF NOT - REALLY LOGGED IN ELSEWHERE 00655000
  661. TM VMOSTAT-VMBLOK(R1),VMCF ALREADY IN CONSOLE FUNC?@VA02849 00656000
  662. BZ LOG070A NO, CONTINUE NORMALLY @VA02849 00657000
  663. TM VMQSTAT-VMBLOK(R1),VMCFREAD DID HE HAVE READ UP?@VA02849 00658000
  664. BO LOG070A YES, CONTINUE NORMALLY @VA02849 00659000
  665. OI SAVEWRK1,EXECF REMEMBER HE WAS IN C.F. AT ENTRY @VA02849 00660000
  666. LOG070A EQU * @VA02849 00661000
  667. LTR R8,R8 Logon user's term avail?HRC065DK 00661020
  668. BZ LOG070A1 No, skip LDEV checks HRC065DK 00661040
  669. TM RDEVADD,RDEVLDEV Is user trying to HRC065DK 00661060
  670. BZ LOG070A1 logon via LDEV? No... HRC065DK 00661080
  671. PUSH USING HRC065DK 00661100
  672. USING LDEVBLOK,R8 HRC065DK 00661120
  673. C R1,LDEVUSER Is LDEV user trying to HRC065DK 00661140
  674. * connect to LDEV creator?HRC065DK 00661160
  675. BE ERROR66 Yes, this is not allowedHRC065DK 00661180
  676. POP USING LDEVBLOK HRC065DK 00661200
  677. LOG070A1 EQU * HRC065DK 00661220
  678. SPACE 1 00662000
  679. * TAKE NECESSARY STEPS TO RECONNECT A DISCONNECTED USER: 00663000
  680. NI VMSVSTAT,X'FF'-VMLGHOLD RESET HOLD FLAG HRC029DK 00663500
  681. OI SAVEWRK1,RECON FLAG PERFORMING A RECONNECT. 00664000
  682. LR R10,R1 "OLD" VMBLOK ADDRESS INTO R10 00665000
  683. EJECT 00666000
  684. * GET RID OF R11 VMBLOK IN FAVOR OF R10 (DISCONNECTED/OPERATOR) VMBLOK: 00667000
  685. * NOTE - WE KNOW THERE ARE AT LEAST 2 VMBLOKS (R10 & R11) IN THE CHAIN 00668000
  686. LOG07A DS 0H @VA13723 00669000
  687. L R2,SAVEWRK1 LOAD STATUS BITS FOR DMKLOHRC @VA13723 00679000
  688. LR R1,R10 ADDR OF DISCONNECTED VMBLOK @VA13723 00689000
  689. CALL DMKLOHRC GO RECONNECT THE USER @VA13723 00699000
  690. ST R11,SAVER11 PASS RETURNED VMBLOK TO CALLER @VA13723 00709000
  691. B *+4(R1) BRANCH ON RETURN CODE @VA13723 00719000
  692. B LOG50 RC=0, CONTINUE RECONNECT @VA13723 00729000
  693. B LOGEXIT RC=4, TERMINAL GONE, ABORT @VA13723 00739000
  694. B 0(R6) RC=8, OPERATOR IS LOGGING ON @VA13723 00749000
  695. DROP R7,R8 @VA13723 00759000
  696. EJECT 00781000
  697. * USERID IN DIRECTORY, PASSWORD CORRECT, & NOT LOGGED ON ELSEWHERE: 00782000
  698. LOG10 DS 0H @V408246 00783000
  699. TM SAVEWRK1,AUTOLOG AUTO LOGON? @V408246 00784000
  700. BZ B1 NO @V408246 00785000
  701. TM SAVEWRK1,PSWRDCK ALOGON COMMAND? @V408246 00786000
  702. BZ LOG10A NO, MUST BE OPERATOR LOG @V408246 00787000
  703. B1 EQU * @V408246 00788000
  704. L R10,ASYSOP A(OPERATOR VMBLOK) HRC018DK 00788100
  705. CLR R10,R11 SAME AS THIS ONE? HRC018DK 00788200
  706. BE LOG10A YES,ALWAYS ALLOW HIM ON HRC018DK 00788300
  707. L R1,ASYSLC IF NOT, REFERENCE SYSLOCS INFORMATION 00789000
  708. USING SYSLOCS,R1 ... 00790000
  709. LM R14,R15,DMKSYSNM GET NO. USERS & NO. ALLOWED ON 00791000
  710. LTR R15,R15 0 MEANS NO LIMIT 00792000
  711. BZ LOG10A ... 00793000
  712. CLR R14,R15 OTHERWISE, CHECK AGAINST LIMIT 00794000
  713. BNL ERROR51 ERROR IF MAXIMUM USERS EXCEEDED 00795000
  714. DROP R1 00796000
  715. LOG10A MVC VMUSER,UDIRUSER CORRECT USERID TO VMBLOK NOW, COACH. 00797000
  716. MC 4,1 TELL MONITOR ABOUT NEW USER @V4075A0 00798000
  717. USING UDBFBLOK,R9 ACCESS THE UDBFBLOK NOW 00799000
  718. LOG11 MVC UDBFVADD(8),ZEROES CLEAR LAST DBL-WORD FOR UDR ROUTINES 00800000
  719. DROP R9 00801000
  720. LA R1,UDIRDISP POINT TO INFO. FROM PREVIOUS UDRFU CALL 00802000
  721. LR R2,R9 R2 POINTING TO FREE STORAGE BLOCK 00803000
  722. DROP R2 (UDIRBLOK ADDRESSABILITY GONE NOW) 00804000
  723. CALL DMKUDRMD READ IN UMACBLOK @V407466 00805000
  724. BNZ ERROR52 FATAL TROUBLE IF ERROR - CAN'T LOG ON 00806000
  725. USING UMACBLOK,R9 00807000
  726. TM UMACAFF,UMACFFON IS AFFINITY SPECIFIED? @V4075A0 00808000
  727. BZ NOAFF @V4075A0 00809000
  728. CLC UMACAFF,LPUADDR+1 FOR OUR PROCESSOR? @V4075A0 00810000
  729. BNE AFFOTH @V4075A0 00811000
  730. TM APSTAT1,APUOPER ARE WE IN AP MODE? @V4075A0 00812000
  731. BO SETAFF YES, SET AFFINITY @V4075A0 00813000
  732. B LOGMS189 WE HAVE IT, BUT WE'RE IN UP MODE @V4075A0 00814000
  733. AFFOTH TM APSTAT1,APUOPER ANY OTHER PROCESSORS? @V4075A0 00815000
  734. BZ LOGMS188 NOT AP + WE DON'T HAVE IT @V4075A0 00816000
  735. CLC UMACAFF,LPUADDRX+1 IS IT OTHER PROCESSOR ? @V4075A0 00817000
  736. BNE LOGMS188 NO, WE JUST DON'T HAVE IT @V4075A0 00818000
  737. SETAFF MVC VMAFF,UMACAFF AP + WE HAVE IT! @V4075A0 00819000
  738. NOAFF EQU * @V4075A0 00820000
  739. SPACE 1 @V4075A0 00821000
  740. ICM R15,B'0011',=XL2'320A' HRC101DK 00821300
  741. STH R15,VMMORETM SET DEFAULT TIMES FOR CRT HRC101DK 00821600
  742. L R15,UMACLEND THE FOUR TERMINAL CODES INTO R15 00822000
  743. CLI UMACLEND,X'FF' IS LINE-END DEFAULT ? 00823000
  744. BE *+8 IF YES, LEAVE IT. 00824000
  745. STCM R15,B'1000',VMTLEND SET LINE END CHARACTER @V200820 00825000
  746. CLI UMACLDEL,X'FF' IS LINE-DELETE DEFAULT ? 00826000
  747. BE *+8 IF YES, LEAVE IT. 00827000
  748. STCM R15,B'0100',VMTLDEL SET LINE DELETE CHARACT@V200820 00828000
  749. CLI UMACCDEL,X'FF' IS CHARACTER-DELETE DEFAULT ? 00829000
  750. BE *+8 IF YES, LEAVE IT. 00830000
  751. STCM R15,B'0010',VMTCDEL SET CHARACTER DELETE @V200820 00831000
  752. CLI UMACES,X'FF' IS ESCAPE-CHARACTER DEFAULT ? 00832000
  753. BE *+8 IF YES, LEAVE IT. 00833000
  754. STC R15,VMTESCP SET ESCAPE CHARACTER @V200820 00834000
  755. TM VMOSTAT,VMDISC VMBLOK DISCONNECTED? @V408246 00835000
  756. BO LOG11B YES, NO REAL TERMINAL DEVICE @V408246 00836000
  757. * BLOCK 00837000
  758. SPACE 2 00838000
  759. TM UMACCLEV,UMACCLA CLASS A = SYSTEM OPERATOR CLASS ? 00839000
  760. BZ LOG11B TRF IF NOT, PROCEED AS USUAL. 00840000
  761. L R10,ASYSOP IF YES, ACCESS OPERATOR'S VMBLOK, 00841000
  762. CLR R10,R11 SAME AS THE ONE WE ARE HANDLING ? 00842000
  763. BE LOG11A TRF IF YES, PROCEED AS USUAL. 00843000
  764. L R1,VMTERM-VMBLOK(,R10) NO, CHECK OPERATOR'S TERMINAL 00844000
  765. LTR R1,R1 IF IT'S THERE, HE'S ALREADY IN BUSINESS 00845000
  766. BNZ LOG11B TRF IF HE HAS ONE - PROCEED AS USUAL. 00846000
  767. TM VMOSTAT-VMBLOK(R10),VMDISC IS THE OPERATOR DISCONNECT 00847000
  768. BO LOG11B YES -- LEAVE WELL ENOUGH ALONE 00848000
  769. MVC VMUSER-VMBLOK(8,R10),VMUSER MAKE SURE USERID FILLED IN 00849000
  770. MVC VMTLEND-VMBLOK(4,R10),VMTLEND FILL IN TERM CODE @VA01886 00850000
  771. L R7,VMPNT GET PNTR TO NEXT VMBLOK FROM R11 VMBLOK 00851000
  772. ST R10,VMPNT PATCH CHAIN TO INCLUDE OPERATOR'S VMBLOK 00852000
  773. ST R7,VMPNT-VMBLOK(,R10) AND ... 00853000
  774. * USER FROM RECONNECTING 00854400
  775. CALL DMKQCNSY FINISH UP ALL CONSOLE REQUESTS @VA09172 00854500
  776. BAL R6,LOG07A CONTINUE CONNECT PROCESSING @VA13723 00854600
  777. TM SAVEWRK1,AUTOLOG+PSWRDCK AUTOLOG CMD? @VA05283 00855000
  778. BNO LOG11A NO--CONTINUE @VA05283 00856000
  779. OI VMOSTAT,VMDISC SHOULD BE DISCONNECTED @VA05283 00857000
  780. LOG11A DS 0H @V305535 00858000
  781. * CONTINUE HANDLING UMACBLOK: 00859000
  782. LOG11B MVC VMCLEVEL(1),UMACCLEV SAVE COMMAND LEVEL, 00860000
  783. MVC VMHRCPRV,UMACCLEV SAVE FOR SET PRIV FUNCTION HRC018DK 00860100
  784. MVC VMUPRIOR(1),UMACPRIR SET USER PRIORITY @V200820 00861000
  785. TM UMACOPT,UMACISAM ISAM CCW CHECKING OPTION ? 00862000
  786. BZ *+8 NOPE. 00863000
  787. OI VMPSTAT,VMISAM YES, SET FLAGBIT IN VMBLOK 00864000
  788. TM UMACOPT,UMACBMX VIRTUAL BLOCK MULTIPLEXER @VA01771 00865000
  789. * CHANNELS 00866000
  790. BZ *+8 NO - @VA01771 00867000
  791. OI VMFSTAT,VMFBMX YES - SET FLAG BIT IN VMBLOK @VA01771 00868000
  792. TM UMACOPT2,UMADLNKN LINK NO PASS OPTION ON ? HRC011DK 00868200
  793. BZ *+8 NO - HRC011DK 00868400
  794. OI VMFSTAT,VMFDLNKN YES,SET FLAG BIT IN VMBLOK HRC011DK 00868600
  795. TM UMACOPT,UMACVROP VIRT=REAL OPTION 00869000
  796. BZ LOG12 NOPE. 00870000
  797. OI VMPSTAT,VMREAL YES, SET FLAGBIT IN VMBLOK 00871000
  798. LOG12 EQU * 00872000
  799. XC VMPERCTL(4),VMPERCTL CLEAR PER BLOCK POINTER PER001 00872100
  800. MVI VMPERFLG,X'00' CLEAR PER FLAGS PER001 00872200
  801. TM UMACOPT,UMACACC IS THE ACCOUNTING OPTION ON ? 00873000
  802. BZ LOG12A NO, GO CHECK FOR EXTENDED MODE 00874000
  803. OI VMPSTAT,VMACCOUN SET THE ACCOUNTING FLAG IN THE VMBLOK 00875000
  804. XC VMACOUNT(4),VMACOUNT CLEAR THE ACCOUNTING BLOCK PTR. 00876000
  805. LOG12A EQU * 00877000
  806. TM UMACOPT,UMACECOP EXTENDED CONTROL MODE OPTION ? 00878000
  807. BZ LOG13 NO, DON'T ALLOCATE ECBLOK 00879000
  808. CALL DMKBLDEC BUILD AND INITIALIZE AN ECBLOK @V2B4320 00880000
  809. B LOG14 CONTINUE 00881000
  810. LOG13 EQU * NOT EC-MODE MACHINE 00882000
  811. LA R1,X'E0' RESET VALUE FOR C-REG 0 00883000
  812. ST R1,VMVCR0 SET IN VMBLOK 00884000
  813. LOG14 MVI VMTLEVEL,VMTON DEFAULT TO: VIRTUAL TIMER RUNNING 00885000
  814. TM UMACOPT,UMACNSVC SVCOFF OPTION? @VM08550 00886000
  815. BO LOG14C YES, BRANCH @VM08550 00887000
  816. OI VMESTAT,VMMICSVC INDICATE VM ASSIST DO SVCS @VM08550 00888000
  817. LOG14C EQU * @VM08550 00889000
  818. TM UMACOPT,UMACRT REAL TIMER OPTION? @VM08550 00890000
  819. BZ LOG15 NOPE. 00891000
  820. MVI VMTLEVEL,VMRON YES, FLAG VIRTUAL REAL TIMER RUNNING 00892000
  821. LA R0,TRQBSIZE GET SIZE OF TRQBLOK 00893000
  822. CALL DMKFREE AND GET ONE 00894000
  823. ST R1,VMTRQBLK FOR THE REAL TIMER 00895000
  824. USING TRQBLOK,R1 00896000
  825. XC TRQBLOK(TRQBSIZE*8),TRQBLOK CLEAR IT 00897000
  826. ST R11,TRQBUSER SET UP USER'S ADDRESS 00898000
  827. MVC TRQBIRA,=A(DMKSCH80) IRA FOR REAL TIMER 00899000
  828. DROP R1 00900000
  829. LOG15 MVC VMACNT,UMACACCT SAVE ACCOUNTING INFORMATION 00901000
  830. MVC VMDIST,UMACDIST SAVE DISTRIBUTION CODE 00902000
  831. LOG15B TM UMACOPT2,UMACCPU CPUID PRESENT IN UMACBLOK? @V407466 00903000
  832. BZ PSACPUID NO, GET CPU SERIAL FROM PSA @V407466 00904000
  833. MVC VMCPUID,UMACPUID MOVE CPUID TO VMBLOK @V407466 00905000
  834. NAMESYS MVC SAVEWRK2(8),UMACIPL SAVE NAME OF SYS TO BE IPL'D@V407466 00906000
  835. CLC SAVEWRK2(8),BLANKS IS IT ALL BLANK ? 00907000
  836. BNE LOG16 NOPE - SOMETHING THERE. 00908000
  837. OI SAVEWRK1,NOIPL FORCE 'NOIPL' IF IT WAS ALL BLANK. 00909000
  838. TM SAVEWRK1,AUTOLOG+PSWRDCK AUTOLOG COMMAND? @VM03066 00910000
  839. BNO LOG16 NOPE, VANILLA OR SYS OP FROM CPI @VM03066 00911000
  840. LA R0,8+12 LENGTH OF SUBSTITUTABLE DATA @VM03066 00912000
  841. LA R1,MSG059A POINT TO START OF ERRTEXT @VA05368 00913000
  842. MVC MSG059A(8),VMUSER INSERT USERID @VA05368 00914000
  843. LR R2,R9 POINT R2 AT VIRT PAGE FOR UDR @VA08817 00915000
  844. CALL DMKUDRRV GIVE IT BACK @VA08817 00916000
  845. B ERROR59 GO PROCESS THE MESSAGE @VM03066 00917000
  846. PSACPUID MVC VMCPUID,CPUID+1 MOVE CPUID SERIAL FROM PSA @V407466 00918000
  847. TM APSTAT1,PROCIO DID WE GET THE IOP'S CPUID? @V4075A0 00919000
  848. BO NAMESYS YES @V4075A0 00920000
  849. L R1,PREFIXB FIND THE IOP'S PSA @V4075A0 00921000
  850. MVC VMCPUID,CPUID+1-PSA(R1) TO PICK UP ITS CPUID @V4075A0 00922000
  851. B NAMESYS CK FOR 'NAMED SYSTEM' TO BE IPL'D@V407466 00923000
  852. LOG18 C R0,=F'512' MORE THAN 512 DW REQUESTED? @V407466 00924000
  853. BNH ERROR131 NO, ISSUE DMKLOG131E MESSAGE @V407466 00925000
  854. * TRY TO REACQUIRE STORAGE THIS TIME REQUESTING ONLY 1 PAGE 00926000
  855. * OF STORAGE (512 DW.) 00927000
  856. LA R0,CON512 512 DOUBLEWORDS @V407466 00928000
  857. B ACQUIREF GO CALL DMKFRERC @V60B6B8 00929000
  858. LOG16 L R1,UMACCORE PICK UP CORE SIZE 00930000
  859. ST R1,VMSIZE STORE IN VMBLOK 00931000
  860. ST R1,VMSTOR ALSO SAVE HERE @V304635 00932000
  861. SRL R1,12 BEGIN/ENDING STORAGE SIZE @V304635 00933000
  862. BCTR R1,R0 MINUS 1 PAGE @V304635 00934000
  863. LA R2,NEWSEGS+VRALOC BLD PARMS @V408246 00935000
  864. TM VMPSTAT,VMREAL V=R VMBLOK? @V408246 00936000
  865. BZ *+8 NO @V408246 00937000
  866. LA R2,NEWPAGES(,R2) YES, BUILD ALL TABLES @V408246 00938000
  867. CALL DMKBLDRT @V408246 00939000
  868. * MAKE UP A DEVICE TABLE OF DUMMY (UNUSED) DEVICE BLOCKS: 00940000
  869. LH R3,UMACDVCT DEVICE-COUNT INTO R3 (FROM UMACBLOK) 00941000
  870. STH R3,VMDVCNT STORE IN VMBLOK 00942000
  871. L R4,FFS FFFFFFFF INTO R4 00943000
  872. LA R1,VDEVSIZE SIZE OF ONE VDEVBLOK (DBL WORDS) INTO R1 00944000
  873. MR R0,R3 R1 (SIC) TIMES R3 INTO R0-R1 00945000
  874. LR R0,R1 NO. DBL WORDS FOR VDEVBLOK TABLE INTO R0 00946000
  875. ACQUIREF CALL DMKFRERC ACQUIRE STORAGE @V60B6B8 00947000
  876. BNZ LOG18 INSUFFICIENT FREE STORAGE @V407466 00948000
  877. ST R1,VMDVSTRT STORE TABLE ADDRESS IN VMBLOK 00949000
  878. USING VDEVBLOK,R1 00950000
  879. LA R0,VDEVSIZE*8 SIZE OF ONE VDEVBLOK IN BYTES INTO R0 00951000
  880. LOG17 STH R4,VDEVADD SET ADDRESS HALFWORD TO FFFF. 00952000
  881. ALR R1,R0 BUMP R1 TO NEXT BLOCK 00953000
  882. BCT R3,LOG17 ITERATE THRU VDEVBLOKS IN TABLE. 00954000
  883. DROP R1 00955000
  884. * MAKE UP A CONTROL UNIT TABLE OF DUMMY (UNUSED) VCUBLOKS: 00956000
  885. LA R3,3 DEFAULT TO THREE VCUBLOKS 00957000
  886. STH R3,VMCUCNT STORE IN VMBLOK 00958000
  887. LA R0,VCUSIZE*3 GET A TABLE OF THREE VCUBLOKS 00959000
  888. CALL DMKFRERC ACQUIRE FREE STORAGE @V407466 00960000
  889. BNZ ERROR131 NOT OBTAINED, ISSUE DMKLOG131E @V407466 00961000
  890. ST R1,VMCUSTRT STORE TABLE ADDRESS IN VMBLOK 00962000
  891. USING VCUBLOK,R1 00963000
  892. STH R4,VCUADD SET ADDRESS HALFWORDS TO FFFF 00964000
  893. STH R4,VCUADD+(VCUSIZE*8) ... 00965000
  894. STH R4,VCUADD+(VCUSIZE*16) ... 00966000
  895. DROP R1 00967000
  896. * MAKE UP A CHANNEL TABLE OF DUMMY (UNUSED) VCHBLOKS: 00968000
  897. LA R3,2 DEFAULT TO TWO VCHBLOKS 00969000
  898. STH R3,VMCHCNT STORE IN VMBLOK 00970000
  899. LA R0,VCHSIZE*2 GET A TABLE OF TWO VCHBLOKS 00971000
  900. CALL DMKFRERC ACQUIRE FREE STORAGE @V407466 00972000
  901. BNZ ERROR131 NOT OBTAINED, ISSUE DMKLOG131E @V407466 00973000
  902. ST R1,VMCHSTRT STORE TABLE ADDRESS IN VMBLOK 00974000
  903. USING VCHBLOK,R1 00975000
  904. STH R4,VCHADD SET ADDRESS HALFWORDS TO FFFF 00976000
  905. STH R4,VCHADD+(VCHSIZE*8) ... 00977000
  906. DROP R1 00978000
  907. DROP R9 THRU WITH UMACBLOK 00979000
  908. * CONTINUE ... 00980000
  909. EJECT 00981000
  910. USING UDEVBLOK,R9 USE UDEVBLOK FROM NOW ON: 00982000
  911. LA R10,UDBFSIZE*8(,R9) LET R10 POINT TO 'EXTRA' UDBFBLOK 00983000
  912. * (NOTE - R10 AREA ALSO USED FOR FILLED-IN MESSAGES) 00984000
  913. * 00985000
  914. * READ UDEVBLOKS, AND FILL IN ALL NECESSARY INFORMATION: 00986000
  915. * 00987000
  916. LOG20 LA R1,UDEVDISP R1 POINTS TO DISPLACEMENT OF NEXT BLOCK 00988000
  917. LR R2,R9 R2 POINTS TO UDEVBLOK TO BE READ 00989000
  918. CALL DMKUDRRD READ IN NEXT UDEVBLOK 00990000
  919. BNZ LOG49 STOP READING IF "EOF" (CC NOT ZERO) 00991000
  920. OI SAVEWRK1,NONFATAL OK - ANY ERRORS NONFATAL FROM NOW ON 00992000
  921. OI VMSPMFLG,VMLOGON2 INDICATE VDEV GOTTEN ON LOGON @VA13304 00992500
  922. LH R3,UDEVADD VIRTUAL DEVICE ADDRESS INTO R3 00993000
  923. LR R1,R3 VIRTUAL DEVICE INTO R1, 00994000
  924. CALL DMKSCNVU SEE IF WE ALREADY HAVE IT 00995000
  925. BZ ERROR92 SUCCESS FROM DMKSCNVU = REALLY FAILURE 00996000
  926. TM UDEVSTAT,UDEVLONG+UDEVLKDV FULL-SIZE OR LINKED-TO DASD ? 00997000
  927. BNZ LOG26 TRF IF YES (EITHER ONE). 00998000
  928. SPACE 00999000
  929. * INITIALIZE APPROPRIATELY FOR NON-DASD DEVICE: 01000000
  930. * 01001000
  931. TM UDEVSTAT,UDEVDED IS THIS A 'DEDICATED' DEVICE ? 01002000
  932. BO LOG24 YES. 01003000
  933. CLI UDEVTYPC,CLASTERM TERM TYPE ?? 01004000
  934. BNE LOG21 NO, CONT 01005000
  935. CLI UDEVTYPE,TYP1052 IS IT A CONSOLE ?? 01006000
  936. BNE LOG21 NO, CONT 01007000
  937. LH R8,VMVTERM VIRTUAL CONSOLE REFERENCE @V200820 01008000
  938. LTR R8,R8 IS THERE ALREADY A CONSOLE ? @V200820 01009000
  939. BM LOG21 NO -- O.K. TO DEFINE ONE @V200820 01010000
  940. AL R8,VMDVSTRT GET THE VDEVBLOK ADDRESS @V200820 01011000
  941. CALL DMKSCNVD GET VADDR CCU FORM FOR MESSAGE @VA04098 01012000
  942. LOG20A MVC 0(12,R10),ZEROES CLEAR OUT 12 BYTE ERR MSG AREA @VA04098 01013000
  943. CALL DMKCVTBH CONVERT VADDR FROM BINARY TO HEX @VA04098 01014000
  944. STCM R1,7,9(R10) STORE IN ERROR MSG AREA 01015000
  945. LR R1,R3 NOW GET THE "OTHER" VADDR 01016000
  946. CALL DMKCVTBH BINARY TO HEX, AND GO 01017000
  947. B ERROR92J FILL IN REMAINING FIELDS FOR ERROR 92. 01018000
  948. LOG21 DS 0H 01019000
  949. CALL DMKVDSDF DMKVDSDF 'DEFINES' ALL OTHER DEVICES 01020000
  950. BZ LOG20 IF SUCCESSFUL, GO HANDLE NEXT DEVICE. 01021000
  951. * ERROR FROM DMKVDSDF: 01022000
  952. CH R2,=H'32' INSUFFICIENT FREE STORAGE @V407466 01023000
  953. BE ERROR95 YES, MSG DMKLOG095E @V407466 01024000
  954. TM UDEVSTAT,UDEVTDSK WAS IT A T-DISK WE DIDN'T GET ? 01025000
  955. BO ERROR91 YES - ERROR 91. 01026000
  956. B ERROR93 NO - ERROR 93 (ALL OTHERS). 01027000
  957. SPACE 01028000
  958. LOG24 DS 0H ATTACH A DEDICATED DEVICE: 01029000
  959. LH R1,UDEVLINK GET REAL DEV ADDRESS 01030000
  960. XC SAVEWRK9,SAVEWRK9 CLEAR A FLAG FIELD @VA11344 01030500
  961. * 01031000
  962. * TEST THE VARIOUS COMBINATIONS THAT INDICATE THAT 01032000
  963. * MSS ACTIVITY MAY BE REQUIRED. IF SO, CALL THE 01033000
  964. * APPROPRIATE ENTRY POINT IN DMKSSS. 01034000
  965. * 01035000
  966. LTR R1,R1 WAS AN 'RADDR' SPECIFIED @V60B6B8 01039000
  967. BM NORADDR NO, CHECK FOR VOLSER @VA11411 01040010
  968. CLI UDEVVSER,BLANK IS THERE AN 'RADDR' AND 'VOLSER' @V60B6B8 01041000
  969. BE LOGDEV 'RADDR',NO VOLSER @VA10511 01042000
  970. TM UDEVFTR,VIRTUAL VIRTUAL MACHINE WANTS VUA @VA10511 01042500
  971. BO CALLMSSA CALL DMKSSSL1 @VA10511 01043000
  972. B CALLMSSB CALL DMKSSSL2 @VA10511 01043500
  973. NORADDR EQU * NO RADDR GIVEN @VA10511 01044000
  974. TM UDEVFTR,VIRTUAL VIRTUAL MACHINE WANTS VUA @VA10511 01044500
  975. BO ERROR93 DIRECTORY ERROR @VA10511 01045000
  976. CLI UDEVVSER,BLANK IS 'VOLSER' FIELD BLANK? @V60B6B8 01046000
  977. BNE FINDVOL NO, LOOK FOR MOUNTED VOLUME @V60B6B8 01047000
  978. B ERROR93 DIRECTORY ERROR, @V60B6B8 01048000
  979. FINDVOL EQU * TRY TO FIND MOUNTED VOLUME @V60B6B8 01049000
  980. L R5,ARIODV LOAD 1ST RDEVBLOK ADDRESS @VA04098 01050000
  981. L R14,ARIODC LOAD RDEVBLOK COUNT ADDRESS @VM08870 01051000
  982. LH R14,0(,R14) LOAD COUNT OF REAL DEVICE BLOCKS @VM08870 01052000
  983. USING RDEVBLOK,R5 ADDRESS THE RDEVBLOK @VA04098 01053000
  984. VOLSERLP TM RDEVSTAT,RDEVDISA+RDEVDED OFFLINE OR DEDICATED ?@VM08870 01054000
  985. BNZ NXTRBLOK YES - CHECK NEXT @VM08870 01055000
  986. TM RDEVFLAG,RDEVSYS+RDEVOWN SYSTEM OR SYSOWNED ? @VM08870 01056000
  987. BNZ NXTRBLOK YES - CHECK NEXT @VM08870 01057000
  988. CLC RDEVSER,UDEVVSER DO THE SERIAL NUMBERS MATCH ? @VM08870 01058000
  989. BE CHK3330V YES, TO CHECK FOR 3330V @V60B6B8 01059000
  990. NXTRBLOK LA R5,RDEVSIZE*8(,R5) POINT TO NEXT RDEVBLOK @VA04098 01060000
  991. BCT R14,VOLSERLP LOOP IF MORE BLOCKS @VM08870 01061000
  992. B CALLMSSC SEE IF WE CAN MOUNT A 3330V @V60B6B8 01062000
  993. LOGDEV CALL DMKSCNRU FIND REAL DEV BLOK 01063000
  994. BNZ ERROR90 GIVE ERROR MESSAGE IF NOT FOUND. 01064000
  995. LR R5,R8 GET RDEVBLOK ADDR INTO R5 @VA11344 01064100
  996. TM RDEVFTR,VIRTUAL THIS AN MSS VIRTUAL VUA? @VA11344 01064200
  997. BZ CHK3330V NO - THEN DON'T TURN OFF FLAG @VA11344 01064300
  998. L R5,F4 PUT 'TURN OFF MTD-BY-CP FLAG' @VA11344 01064400
  999. ST R5,SAVEWRK9 INDICATOR INTO FLAG FIELD @VA11344 01064500
  1000. LR R5,R8 RDEVBLOK ADDR TO R5 @VA04098 01065000
  1001. CHK3330V EQU * RDEVBLOK FOUND, IS IT 3330V @V60B6B8 01066000
  1002. CLC RDEVTYPC(2),=AL1(CLASDASD,TYP3330) IS IT 3330 @V60B6B8 01067000
  1003. BNE CHK05 NO, NO FURTHER TESTING @V60B6B8 01068000
  1004. CLI UDEVVSER,BLANK WAS A VOLSER SPECIFIED @V60B6B8 01069000
  1005. BNE TSTDED YES @V60B6B8 01070000
  1006. TM RDEVFTR,SYSVIRT IS IT SYSVIRT @V60B6B8 01071000
  1007. BO ERROR93 YES, ERROR, CAN NOT DEDICATE @V60B6B8 01072000
  1008. TM RDEVFTR,VIRTUAL USER VIRTUAL? @V60B6B8 01073000
  1009. BZ CHK05 NO, PLAIN 3330 @V60B6B8 01074000
  1010. TSTDED EQU * @V60B6B8 01075000
  1011. TM RDEVSTAT,RDEVDISA+RDEVDED OFFLINE, DEDICATED? @V60B6B8 01076000
  1012. BNZ ERROR90 YES, THIS USER CAN'T HAVE @V60B6B8 01077000
  1013. B SETVDS GO DO THE ATTACH @V60B6B8 01078000
  1014. CHK05 CLC RDEVTYPC(2),=AL1(CLASDASD,TYP2305) IS IT A 2305 @VA04098 01079000
  1015. BNE SETVDS NO, GO DIRECTLY TO DMKVDS @VA04098 01080000
  1016. TM UDEVADD+1,X'07' IS VIRT ADDR A BASE ADDR? @VA04098 01081000
  1017. BNZ ERROR93 NO, SOMEBODY GOOFED IN DIRECTORY @VA04098 01082000
  1018. TM RDEVADD+1,X'07' IS REAL ADDR A BASE ADDR? @VA04098 01083000
  1019. BNZ ERROR93 NOPE, ALSO DIRECTORY ERROR @VA04098 01084000
  1020. LH R1,UDEVADD GET BASE ADDRESS @VA04098 01085000
  1021. LA R4,8 LOOP COUNT FOR ALL 8 EXPOSURES @VA04098 01086000
  1022. PRESCAN CALL DMKSCNVU CHECK FOR EXISTANCE OF ALL 8 EXPS@VA04098 01087000
  1023. BZ LOG20A BAD NEWS, GO SET UP ERROR MSG @VA04098 01088000
  1024. NXTADD LA R1,1(R1) INCREMENT TO NEXT EXPOSURE @VA04098 01089000
  1025. BCT R4,PRESCAN KEEP LOOKING. @VA04098 01090000
  1026. SETVDS DS 0H @VA11344 01091000
  1027. CLC SAVEWRK9(4),F4 WE NEED TO TURN OFF 'MTD-BY-CP'? @VA11344 01091100
  1028. BNE SETVDS1 NO - THEN DON'T DO IT! @VA11344 01091200
  1029. NI RDEVFLAG,X'FF'-RDEVVMNT ELSE TURN IT OFF @VA11344 01091300
  1030. SETVDS1 DS 0H @VA11344 01091400
  1031. LR R1,R5 BASE RDEVBLOK TO R1 FOR VDS @VA11344 01091500
  1032. DROP R5 NO MORE RDEVBLOK @VA04098 01092000
  1033. SPACE 01093000
  1034. LOGATT CALL DMKVDSAT ATTACH DEVICE 01094000
  1035. BNZ NOCHEK NO NEED TO CHECK @VA11558 01095100
  1036. TM UDEVFTR,VIRTUAL IS 3330V PARM NEEDED @VA11558 01095175
  1037. BNO LOG20 NO @VA11558 01095250
  1038. LH R1,UDEVADD GET VIRTUAL DEVICE ADDRESS @VA11558 01095325
  1039. CALL DMKSCNVU @VA11558 01095400
  1040. OI VDEVFLG2-VDEVBLOK(R8),VDEVVIRT CYL FAULT TO USER@VA11558 01095475
  1041. OI RDEVFLAG-RDEVBLOK(R5),RDEV333V DED AS 3330V @VA11558 01095550
  1042. B LOG20 GET NEXT DEVICE @VA11558 01095625
  1043. NOCHEK EQU * @VA11558 01095700
  1044. CH R2,=H'32' INSUFFICIENT FREE STORAGE @V407466 01096000
  1045. BE ERROR95 YES, MSG DMKLOG095E @V407466 01097000
  1046. B ERROR90 ERROR IF ATTEMPTED ATTACH FAILED. 01098000
  1047. SPACE 01099000
  1048. * FULL-SIZE BLOCK OR LINKED-TO DEVICE MEANS IT'S A DASD DEVICE: 01100000
  1049. * 01101000
  1050. LOG26 DS 0H 01102000
  1051. LA R7,VMUSER LET R7 POINT TO MY USERID NAME 01103000
  1052. IC R5,UDEVMODE PICK UP BYTE CONTAINING THE LINK-MODE 01104000
  1053. LA R15,31 SET TO ISOLATE THE LOW-ORDER 5 BITS 01105000
  1054. NR R5,R15 GET THE LINK-MODE NO. (0, 4, 8, ETC.) 01106000
  1055. LR R2,R3 R2 = R3 = LINK-TO = LINK-AS DEVICE 01107000
  1056. TM UDEVSTAT,UDEVLKDV IS THIS AN 'INDIRECT LINK' 01108000
  1057. BZ LOG30 IF NOT, ALL INFO IS OK AS IS. 01109000
  1058. LH R2,UDEVLINK IF YES, LINK-TO DEVICE INTO R2, 01110000
  1059. LA R7,UDEVLKID AND LET R7 POINT TO OWNER'S USERID 01111000
  1060. LOG30 MVC 0(UDEVSIZE*8,R10),0(R9) MOVE UDEVBLOK TO ALTERNATE AREA 01112000
  1061. DROP R9 01113000
  1062. LM R0,R1,0(R7) USERID OF DISK-OWNER INTO R0-R1, 01114000
  1063. * LINK-TO DEVICE ALREADY IN R2 01115000
  1064. * LINK-AS DEVICE ALREADY IN R3, 01116000
  1065. LR R4,R10 UDEVBLOK ADDRESS INTO R4, 01117000
  1066. * DESIRED LINK-MODE INDEXER ALREADY IN R5, 01118000
  1067. CALL DMKLNKSB CALL "LINK SUBROUTINE" TO DO THE WORK 01119000
  1068. B LOG20 NOW GO GET THE NEXT DEVICE (IF ANY). 01120000
  1069. EJECT 01121000
  1070. * 01122000
  1071. * THE FOLLOWING ROUTINES ARE CALLED IF THERE IS A 01123000
  1072. * POSSIBILITY THAT MSS ACTIVITY IS REQUIRED. 01124000
  1073. * 01125000
  1074. * CALLMSSA: THE UDEVBLOK INDICATES THAT THE 'VADDR' 01126000
  1075. * IS TO BE A 3330V. CALL DMKSSS TO PROCESS THE 01127000
  1076. * OTHER PARAMETERS. IF AN ERROR ON RETURN, 01128000
  1077. * ISSUE MSG 090, ELSE GET NEXT DEVICE. 01129000
  1078. * 01130000
  1079. * CALLMSSB: THE 'RADDR' AND 'VOLSER' WERE BOTH 01131000
  1080. * SPECIFIED. THIS HAS TO BE AN MSS REQUEST. 01132000
  1081. * CALL DMKSSS. 01133000
  1082. * 01134000
  1083. * CALLMSSC: THE 'VOLSER' WAS SPECIFIED BUT NO 'RADDR'. 01135000
  1084. * THE VOLSER IS NOT MOUNTED. TEST TO SEE IF 01136000
  1085. * IT IS AN MSS VOLUME. 01137000
  1086. * 01138000
  1087. CALLMSSA EQU * DEDICATE A VUA TO USER @V60B6B8 01139000
  1088. BAL R4,SAVUDEV SAVE CURRENT UDEVBLOK @V60B6B8 01140000
  1089. TM PSAMSS,MSSPRES IS MSS PRESENT IN THIS SYSTEM? @VA09319 01140010
  1090. BZ ERROR90 NO,INDICATE DEVICE NOT AVAIL. @VA09319 01140020
  1091. CALL DMKSSSL1 PROCESS MSS REQUESTS @V60B6B8 01141000
  1092. CHKMSSRC EQU * TEST RETURN CODE FROM DMKSSS @V60B6B8 01142000
  1093. LTR R0,R0 WAS IT SUCCESSFUL @V60B6B8 01143000
  1094. BNZ MSSMOUNT NO, TEST FOR ERROR OR MOUNT IN @V60B6B8 01144000
  1095. * PROCESS 01145000
  1096. RDEVRDY EQU * RDEVICE HAS MOUNTED SYSTEM VOL @VMI2018 01146000
  1097. LH R1,UDEVLINK-UDEVBLOK(R5) REAL DEVICE ADDR @V60B6B8 01147000
  1098. LTR R1,R1 IS THERE AN RADDR @VMI2009 01148000
  1099. BNM GETRBLOK YES, GO GET IT @VA11411 01149010
  1100. LA R1,UDEVVSER-UDEVBLOK(R5) USER VOL SER @VMI2009 01150000
  1101. LA R0,6 VOL SER LENGTH @VMI2009 01151000
  1102. CALL DMKSCNVS FIND RBLOK WE ALLOCATED @VMI2009 01152000
  1103. LR R8,R1 @VMI2009 01153000
  1104. B RBLOKOK AND COMPLETE @VMI2009 01154000
  1105. GETRBLOK EQU * FIND RBLOK FOR USER DEVICE @VMI2009 01155000
  1106. CALL DMKSCNRU FIND THE RDEVBLOK ALLOCATED @V60B6B8 01156000
  1107. RBLOKOK EQU * @VMI2009 01157000
  1108. LA R0,UDEVSIZE UDEVBLOK SIZE @V60B6B8 01158000
  1109. LR R1,R5 DUMMY UDEVBLOK ADDR @V60B6B8 01159000
  1110. CALL DMKFRET FREE THE GOTTEN CORE @V60B6B8 01160000
  1111. LR R5,R8 RDEVBLOK ADDR FROM DMKSCNRU @V60B6B8 01161000
  1112. B SETVDS AND COMPLETE THE DEDICATE @V60B6B8 01162000
  1113. CALLMSSB EQU * TRY TO MOUNT VOLSER ON RUA @V60B6B8 01163000
  1114. BAL R4,SAVUDEV SAVE CURRENT UDEVBLOK @V60B6B8 01164000
  1115. TM PSAMSS,MSSPRES IS MSS PRESENT IN THIS SYSTEM? @VA09319 01164010
  1116. BZ ERROR90 NO,INDICATE DEVICE NOT AVAIL. @VA09319 01164020
  1117. CALL DMKSSSL2 PROCESS AN MSS REQUEST @V60B6B8 01165000
  1118. B CHKMSSRC AND TEST THE RETURN CODE @V60B6B8 01166000
  1119. CALLMSSC EQU * SEE IF VOLSER EXISTS IN MSS @V60B6B8 01167000
  1120. BAL R4,SAVUDEV SAVE CURRENT UDEVBLOK @V60B6B8 01168000
  1121. TM PSAMSS,MSSPRES IS MSS PRESENT IN THIS SYSTEM? @VA09319 01168010
  1122. BZ ERROR90 NO,INDICATE DEVICE NOT AVAIL? @VA09319 01168020
  1123. CALL DMKSSSL3 PROCESS MSS REQUESTS @V60B6B8 01169000
  1124. B CHKMSSRC AND TEST THE RETURN CODE @V60B6B8 01170000
  1125. SAVUDEV EQU * SAVE THE CURRENT UDEVBLOK @V60B6B8 01171000
  1126. LA R0,UDEVSIZE SIZE OF A UDEVBLOK @V60B6B8 01172000
  1127. CALL DMKFREE GET CORE @V60B6B8 01173000
  1128. LR R5,R1 SAVE ADDR IN GPR 5 @V60B6B8 01174000
  1129. MVC 0(UDEVSIZE*8,R5),0(R9) SAVE THIS UDEVBLOK @V60B6B8 01175000
  1130. BR R4 @V60B6B8 01176000
  1131. MSSMOUNT EQU * SEE IF AN MSS MOUNT IN PROCESS @V60B6B8 01177000
  1132. * 01178000
  1133. * AT THIS POINT, AN MSS OPERATION WAS ATTEMPTED BY 01179000
  1134. * DMKSSS. IF THE RETURN CODE FROM DMKSSS IS 4, 01180000
  1135. * THEN AN MSS VOLUME MOUNT HAS BEEN ACCEPTED 01181000
  1136. * BY THE MSC, BUT THE VOLUME IS NOT YET MOUNTED. 01182000
  1137. * SET THE RETURN CODE TO ZERO AND PROCESS THE 01183000
  1138. * NEXT DIRECTORY STATEMENT. IF THE RETURN CODE 01184000
  1139. * FROM DMKSSS IS NOT ZERO OR FOUR, AN ERROR WAS 01185000
  1140. * DETECTED. ISSUE ERROR MSG DMKLOG090E. 01186000
  1141. * 01187000
  1142. LA R15,RC4 TEST FOR CODE 4 @V60B6B8 01188000
  1143. CR R15,R0 DMKSSS RC IN GPR 15 @V60B6B8 01189000
  1144. BNE ERROR90 IT IS AN ERROR @V60B6B8 01190000
  1145. TM MSSFLAG2-OSVSCOM(R1),MSGPROC IS MOUNT NOW @VA09302 01191000
  1146. * COMPLETE 01192000
  1147. BZ PCINOW YES, DMKDSB HAS THE PCI @VMI2018 01193000
  1148. NI MSSFLAG2-OSVSCOM(R1),X'FF'-MSGPROC @VA09302 01194000
  1149. B LOG20 PROCESS NEXT STATEMENT @V60B6B8 01195000
  1150. PCINOW EQU * SYSTEM VOLUME NOW MOUNTED @VMI2018 01196000
  1151. L R14,=V(DMKSSSMQ) ADDR OF MSSCOM Q @VMI2018 01197000
  1152. L R15,0(R14) FIRST MSSCOM IN Q @VMI2018 01198000
  1153. CHKNEXT EQU * @VMI2018 01199000
  1154. CR R15,R1 IS THIS OUR MSSCOM IN Q @VMI2018 01200000
  1155. BE DEQIT YES, REMOVE IT @VMI2018 01201000
  1156. LA R14,MSSNEXT-OSVSCOM(R15) NEXT CHAIN PTR @VMI2018 01202000
  1157. L R15,MSSNEXT-OSVSCOM(R15) NEXT MSSCOM @VMI2018 01203000
  1158. B CHKNEXT AND LOOK FOR OURS @VMI2018 01204000
  1159. DEQIT EQU * REMOVE MSSCOM @VMI2018 01205000
  1160. MVC 0(4,R14),MSSNEXT-OSVSCOM(R15) RESET CHAIN @VMI2018 01206000
  1161. LA R0,MSSSIZE MSSCOM SIZE @VMI2018 01207000
  1162. CALL DMKFRET RETURN MSSCOM TO SYSTEM @VMI2018 01208000
  1163. B RDEVRDY CONTINUE THE DEDICATE @VMI2018 01209000
  1164. EJECT 01210000
  1165. LOG49 LR R2,R9 NOW LET R2 POINT TO THE REGULAR UDBFBLOK 01276000
  1166. CALL DMKUDRRV "CLOSE" IT. 01277000
  1167. SPACE 01278000
  1168. LOG50 DS 0H ALL DEVICES HANDLED, NOW FINISH UP: 01279000
  1169. TM SAVEWRK1,RECON RECONNECTING? HRC101DK 01279100
  1170. BNO RESCNT RESET COUNT HRC101DK 01279200
  1171. NI VMMLVL2,X'FF'-VMMHLITE TURN OFF HILIGHT HRC101DK 01279300
  1172. B SKIPCNT HRC101DK 01279400
  1173. RESCNT DS 0H HRC101DK 01279500
  1174. MVI VMPSWDCT,X'00' CLEAR PASSWORD COUNT FOR DMKLNK @V200820 01280000
  1175. SKIPCNT DS 0H HRC101DK 01280500
  1176. SR R2,R2 CLEAR RETURN REG 01281000
  1177. SPACE 01282000
  1178. * CALL ACCOUNTING ROUTINE: 01283000
  1179. CALL DMKACON CALL THE ACCOUNT ON ROUTINE 01284000
  1180. LTR R2,R2 USER ACNTING INDICATE BAD NEWS @VM03066 01285000
  1181. BZ LOG51 NOPE, GOOD NEWS, CONTINUE @VM03066 01286000
  1182. TM SAVEWRK1,AUTOLOG+PSWRDCK SYSTEM OPER FROM CPI? @VM03066 01287000
  1183. BM LOG51 YES, ALWAYS LET HIM ON @VM03066 01288000
  1184. BZ FORCEUSR NOPE, NOT AUTOLOG OF ANY FLAVOR @VM03198 01289000
  1185. LA R0,8+17 LENGTH OF THE MESSAGE @VM03066 01290000
  1186. LA R1,MSG059B POINT TO START OF ERRTEXT @VA05368 01291000
  1187. MVC MSG059B(8),VMUSER INSERT USERID @VA05368 01292000
  1188. B ERROR59B GO HANDLE THE MESSAGE @VM03198 01293000
  1189. SPACE 01294000
  1190. * HANDLE SYSTEM LOG MESSAGE: 01295000
  1191. * HANDLE MESSAGE RESPOOLED FILES. 01296000
  1192. * CONSTRUCT AND SEND READY OR RECONNECT MESSAGE TO USER. 01297000
  1193. * CONSTRUCT AND SEND READY OR RECONNECT MESSAGE TO SYSTEM OPERATOR. 01298000
  1194. LOG51 DS 0H @VMD0130 01299000
  1195. L R2,SAVEWRK1 GET SAVEWRK1 INFORMATION FOR @VMD0130 01300000
  1196. * CALL TO DMKLOH 01301000
  1197. L R3,SAVEWRK8 GET AUTOLOG CMD ISSUER'S VMBLOK @VMD0139 01302000
  1198. * ADDRESS 01303000
  1199. L R4,SAVER11 GET CALLER'S VMBLOK FOR DMKLOH @VMD0139 01304000
  1200. CALL DMKLOHON CONTINUE LOGON @VMD0130 01305000
  1201. LTR R2,R2 SHOULD WE EXIT? @VMD0139 01306000
  1202. BNZ LOGEXITR YES, LOG IS FINISHED @VMD0139 01307000
  1203. SPACE 01308000
  1204. LOG65 DS 0H NOW SET/RESET APPROPRIATE FLAG-BITS: 01309000
  1205. NI VMRSTAT,255-VMLOGON TURN OFF THE LOGON BIT 01310000
  1206. TM SAVEWRK1,RECON RECONNECTING? @VM08550 01311000
  1207. BO RECEXIT YES, EXIT NOW @VA02849 01312000
  1208. SPACE 1 01313000
  1209. * SET DEFAULT ON BITS IN VMMLEVEL AND VMMLVL2 01314000
  1210. OI VMMLVL2,VMMIMSG @VA03338 01315000
  1211. MVI VMMLEVEL,VMMSGON+VMWNGON+VMMTEXT+VMMACCON+VMMLINED 01316000
  1212. TM VMOSTAT,VMSYSOP IS THE USER SYSTEM OPERATOR? @VA03387 01317000
  1213. BZ NOTOPDF NO, DEFAULTS ARE CORRECT @VA03387 01318000
  1214. OI VMMLEVEL,VMMCPENV CP TERMINAL MODE @VA03387 01319000
  1215. NOTOPDF DS 0H @VA03387 01320000
  1216. TM CPSTAT2,CPMICAVL VM ASSIST AVAILABLE? @VM08550 01321000
  1217. BO SETUVMA IF YES ON THIS PROCESSOR @V4M0134 01322000
  1218. TM APSTAT1,APUOPER NO, IS THERE ANOTHER PROCESSOR@V4M0134 01323000
  1219. BZ NOMIC BRANCH IF NOT @VM08550 01324000
  1220. L R15,PREFIXB YES, POINT TO OTHER PROC PSA @V4M0134 01325000
  1221. TM CPSTAT2-PSA(R15),CPMICAVL DOES IT HAVE VM ASSIST@V4M0134 01326000
  1222. BNO NOMIC IF NO PROCESSOR HAS VM ASSIST@V4M0134 01327000
  1223. SPACE 1 @V4M0134 01328000
  1224. SETUVMA EQU * @V4M0134 01329000
  1225. * DO SET UP FOR VM ASSIST 01330000
  1226. LA R0,MICSIZE GET STORAGE FOR MICBLOK @VM08550 01331000
  1227. CALL DMKFREE @VM08550 01332000
  1228. USING MICBLOK,R1 @VM08550 01333000
  1229. ST R1,VMMICRO SET ADDRESS OF MICBLOK @VM08550 01334000
  1230. XC MICBLOK(MICSIZE*8),MICBLOK CLEAR MICBLOK @V386198 01335000
  1231. MVC MICRSEG,VMSEG PUT SEGMENT TABLE PTR IN MICBLOK @VM08550 01336000
  1232. LA R15,VMPSW PUT REAL ADDRESS OF VIRT PSW @VM08550 01337000
  1233. ST R15,MICVPSW IN MICBLOK @VM08550 01338000
  1234. LA R15,TEMPSAVE PUT ADDR OF WORKSPACE FOR ASSIST @VM08550 01339000
  1235. ST R15,MICWORK IN MICBLOK @VM08550 01340000
  1236. L R15,PREFIXA POINT TO ABSOLUTE PSA @VA14280 01341100
  1237. MVC MICEVMA,PSAEVMA-PSA(R15) COPY EVMA CONTROLS @VA14280 01341600
  1238. TM VMPSTAT,VMV370R EC MODE? @VM08550 01342000
  1239. BZ MIC01 NO, BRANCH @VM08550 01343000
  1240. L R15,VMECEXT PUT VIRT C-REG PTR OF EC MACH. @VM08550 01344000
  1241. ST R15,MICCREG IN MICBLOK @VM08550 01345000
  1242. B MIC02 @VM08550 01346000
  1243. MIC01 LA R15,VMVCR0 PUT VIRT C-REG PTR OF BC MACH. @VM08550 01347000
  1244. ST R15,MICCREG IN MICBLOK @VM08550 01348000
  1245. OI VMMCR6,VMM360 INDICATE V. MACH. MAY USE ONLY @VM08550 01349000
  1246. * 360 OPS & 370 NONDAT OPS 01350000
  1247. MIC02 TM VMESTAT,VMMICSVC USER WANT ASSIST DO SVCS? @VM08550 01351000
  1248. BO MIC03 YES, LEAVE VMMSVC BIT OFF @VM08550 01352000
  1249. OI VMMCR6,VMMSVC NO, INDICATE VM ASSIST NOT @VM08550 01353000
  1250. * HANDLE SVCS (I.E., SVCS OFF) 01354000
  1251. MIC03 OI VMMCR6,VMMFE TURN VM ASSIST ON FOR USER @VM08550 01355000
  1252. SPACE 01356000
  1253. TM CPSTAT2,CPASTAVL IS CP ASSIST AVAILABLE ? @V386198 01357000
  1254. BZ NOMIC NO, ALL SET. @V386198 01358000
  1255. OI VMFSTAT,VMFVTMR INDICATE TIMER ASSIST WANTED @V3M4026 01359000
  1256. L R15,AVMREAL GET V=R VMBLOK ADDRESS @VA07315 01360000
  1257. CR R11,R15 THIS GUY VIRT.=REAL ?? @VA07315 01361000
  1258. BNE MICNOVR NOT HIM @VA07315 01362000
  1259. L R15,=A(DMKSLC-4096) YES, GET PAGE ZERO ADDRESS @VA07315 01363000
  1260. LA R15,80(,R15) GET VIRTUAL TIMER ADDRESS @VA07315 01364000
  1261. ST R15,MICVTMR SAVE TIMER ADD. IN MICBLOK+10 @VA07315 01365000
  1262. B MICVR AND SKIP NORMAL TIMER INIT. @VA07315 01366000
  1263. MICNOVR EQU * HERE TO INIT. NON V=R TIMER @VA07315 01367000
  1264. ST R15,MICVTMR PUT IN MICBLOK @V386198 01368000
  1265. MICVR EQU * @VA12708 01369100
  1266. OI VMMCR6,VMMVTMR VIRT INTERVAL TMR FEAT EN @VA12708 01369200
  1267. TM CPSTAT2,CPASTON IS CP ASSIST IN USE ? @V386198 01371000
  1268. BZ NOMIC NO, DONE. @V386198 01372000
  1269. OI VMMCR6,VMMCPAST SET CP ASSIST ENABLED @V386198 01373000
  1270. DROP R1 @V386198 01374000
  1271. SPACE 01375000
  1272. NOMIC EQU * @VM08550 01376000
  1273. TM SAVEWRK1,NOIPL AUTO IPL NEEDED? @V305535 01377000
  1274. BO LOGEXIT NO, EXIT @VM03066 01378000
  1275. TM SAVEWRK1,AUTOLOG AUTO LOGON? @V408246 01379000
  1276. BZ B2 NO, ATTEMP AUTO IPL @V408246 01380000
  1277. TM SAVEWRK1,PSWRDCK ALOGON COMMAND? @V408246 01381000
  1278. BZ LOGEXIT NO, MUST BE OPERATOR LOG @V408246 01382000
  1279. B2 EQU * @V408246 01383000
  1280. LA R0,8 LENGTH @VM03066 01384000
  1281. LA R1,SAVEWRK2 POINT AT THE DESIRED IPL NO. OR NAME 01385000
  1282. LA R15,SAVEWRK2+7 SET TO DELETE TRAILING BLANKS FROM COUNT: 01386000
  1283. LOG66 CLI 0(R15),C' ' TRAILING BLANK FOUND ? 01387000
  1284. BNE LOG67 NOPE - OK TO CALL IPL-HANDLER NOW. 01388000
  1285. BCTR R0,0 YES - DECREMENT BYTE-COUNT 01389000
  1286. BCT R15,LOG66 AND KEEP CHECKING. 01390000
  1287. * R0 & R1 NOW SET UP AS THEY WOULD BE FROM DMKSCNFD: 01391000
  1288. LOG67 SLR R2,R2 CLEAR R2, AND ... 01392000
  1289. CALL DMKCFGII CALL INTERNAL ROUTINE TO HANDLE @V304635 01393000
  1290. * IT 01394000
  1291. LTR R2,R2 SUCCESS ON IPL INITIATION ? 01395000
  1292. BZ BUMPRET YES, UPDATE RETN ADDR TO RUN USER@VM03066 01396000
  1293. TM SAVEWRK1,AUTOLOG IS THIS AUTOLOG COMMAND? @VM03066 01397000
  1294. BZ LOGEXIT NOPE, EXIT FORTHWITH @VM03066 01398000
  1295. LA R0,8+11 LENGTH OF THE MESSAGE @VM03066 01399000
  1296. LA R1,MSG059C POINT TO START OF ERRTEXT @VA05368 01400000
  1297. MVC MSG059C(8),VMUSER INSERT USERID @VA05368 01401000
  1298. B ERROR59A GO PROCESS THE MESSAGE @VM03066 01402000
  1299. SPACE 01403000
  1300. BUMPRET L R1,SAVERETN BUMP RETURN ADDR TO RUN THE USER @VM03066 01404000
  1301. LA R1,4(,R1) ... 01405000
  1302. ST R1,SAVERETN AND STORE 01406000
  1303. SPACE 01407000
  1304. LOGEXIT TM SAVEWRK1,R9FRE IS THERE FREE STORAGE TO BE RETURNED ? 01408000
  1305. BZ LOGEXTA @V408246 01409000
  1306. LA R0,UDBFSIZE*2+2 THE SIZE WE'VE BEEN USING INTO R0, 01410000
  1307. LR R1,R9 ADDRESS INTO R1 FROM R9, 01411000
  1308. CALL DMKFRET AND GIVE IT BACK (WITH THANKS, OF COURSE) 01412000
  1309. LOGEXTA DS 0H @V408246 01413000
  1310. C R11,SAVER11 SAME VMBLOK? @V408246 01414000
  1311. BE LOGEXTF YES @V60BBBB 01415000
  1312. L R1,SAVER11 NO,--SWITCH TIMER AND LOCK @V407593 01416000
  1313. * TO CALLERS VMBLOK 01417000
  1314. BAL R5,SWVM GO TO SWITCH VMBLOKS @V4M0193 01418000
  1315. LOGEXTF L R3,=A(DMKSYSJR) GET ADDRESS OF JPSCBLOK @V60BBBB 01419000
  1316. USING JPSCBLOK,R3 TELL ASSEMBLER @V60BBBB 01420000
  1317. TM LOGONJRL,L'LOGONJRL LOGON JOURNALING ON? @V60BBBB 01421000
  1318. BZ LOGEXITR BR IF NOT @V60BBBB 01422000
  1319. LA R5,VMUSER PRIME R5 WITH A(VMUSER) @V60BBBB 01423000
  1320. LTR R2,R2 SUCCESSFUL LOGON? @V60BBBB 01424000
  1321. BZ CALLJRL1 BR IF YES @V60BBBB 01425000
  1322. C R2,=F'50' WAS IT INVALID PASSWORD? @V60BBBB 01426000
  1323. BNE LOGEXITR BR IF NOT @V60BBBB 01427000
  1324. LA R5,(UDIRUSER-UDIRBLOK)+SAVEWRK2 IF INVALID @V60BBBB 01428000
  1325. * PASSWORD, USERID IS HERE. @V60BBBB 01429000
  1326. LA R2,SAVEWRK6 POINT AT INVALID PASSWORD @V60BBBB 01430000
  1327. DROP R3 @V60BBBB 01431000
  1328. CALLJRL1 SLR R4,R4 ASSUME LOGON COMMAND @V60BBBB 01432000
  1329. TM SAVEWRK1,AUTOLOG+PSWRDCK LOGGING ON OPERATOR @VA10024 01433100
  1330. BNO CALLJRL2 FROM DMKCPI....YES @VA10024 01433200
  1331. L R4,SAVEWRK8 GET COMMAND ISSUERS VMBLOK @V60BBBB 01435000
  1332. CALLJRL2 CALL DMKJRLLO GO TO JOURNALING MODULE @V60BBBB 01436000
  1333. LOGEXITR EXIT REALLY EXIT. 01437000
  1334. SPACE 1 01438000
  1335. * HERE ON RECONNECT. IF A PREVIOUS CONSOLE FUNC. WAS RUNNING WHEN LOGON 01439000
  1336. * WAS ENTERED, RETRN TO *+12 IN CFM SO ANOTHER CONSOLE FUNC CAN'T START 01440000
  1337. RECEXIT EQU * @VA02849 01441000
  1338. TM VMOSTAT,VMCF IS VMCF FLAG STILL ON? @VA02849 01442000
  1339. BZ RECEXT1 NO, PREVIOUS C.F. MUST'VE @VA02849 01443000
  1340. * FINISHED 01444000
  1341. TM SAVEWRK1,EXECF YES, WAS VMCF ON AT ENTRY? @VA02849 01445000
  1342. BZ LOGEXIT NO, NORMAL EXIT @VA02849 01446000
  1343. RECEXT1 EQU * HERE IF RECONN IS OVERLAPPING A @VA02849 01447000
  1344. * PREVIOUS C.F. 01448000
  1345. L R1,SAVERETN GET RETURN ADDRESS @VA02849 01449000
  1346. LA R1,12(,R1) RETURN TO *+12 IN DMKCFM @VA02849 01450000
  1347. ST R1,SAVERETN SO WE WON'T CHANGE STATUS BITS @VA02849 01451000
  1348. B LOGEXIT @VA02849 01452000
  1349. SPACE 1 @V4M0148 01453000
  1350. SWVM DS 0H @V4M0148 01454000
  1351. SWTCHVM SWITCH VMBLOKS @V4M0193 01455000
  1352. BR R5 RETURN TO CALLER @V4M0193 01456000
  1353. EJECT 01457000
  1354. * ENTRY TO AUTOMATICALLY LOGON THE OPERATOR: 01458000
  1355. SPACE 01459000
  1356. DMKLOGOP RELOC LOGON THE OPERATOR 01460000
  1357. SR R9,R9 R9 = 0, 01461000
  1358. ST R9,SAVEWRK1 CLEAR SAVEWRK1 WORD 01462000
  1359. ST R9,SAVER2 SET TO RETURN R2=0 TO CALLER 01463000
  1360. MVI SAVEWRK1,AUTOLOG+PSWRDOK AUTO LOGON WITHOUT @V305535 01464000
  1361. * PASSWORD 01465000
  1362. LA R1,VMUSER POINT TO USERID IN VMBLOK, 01466000
  1363. LA R0,8 8 BYTES, PLEASE 01467000
  1364. LA R2,SAVEWRK2 POINT TO WORK AREA FOR DMKUDR @V200820 01468000
  1365. CALL DMKUDRFU FIND OPERATOR IN DIRECTORY @V200820 01469000
  1366. BNZ ERROR53 OOPS - HE'S NOT THERE @V200820 01470000
  1367. B LOG07 GO PROCESS OPERATOR LOGON @V200820 01471000
  1368. SPACE 2 01472000
  1369. TERMADD EQU * ROUTINE TO BUILD 'TYPE RADDR' INFO @V200820 01473000
  1370. LTR R8,R8 IS THERE A TERMINAL RDEVBLOK ? @V200820 01474000
  1371. BNP TERMNOD NO -- SETUP DEFAULT TYPE, RADDR @V200820 01475000
  1372. USING RDEVBLOK,R8 @V200820 01476000
  1373. CLI RDEVTYPC,CLASSPEC IS THIS A 370X NCP TERMINAL @V200820 01477000
  1374. BE TERMRID YES - GO FIND 'VMTRMID' @V200820 01478000
  1375. CLI RDEVTYPC,CLASTERM IS THIS A TERMINAL CLASS @V2D3931 01479000
  1376. BNE *+12 NO, BYPASS TEST FOR BISYNC LINE @V2D3931 01480000
  1377. TM RDEVTYPE,TYPBSC IS THIS A BISYNC LINE ? @V2D3931 01481000
  1378. BO TERMRID YES, ... @V2D3931 01482000
  1379. TM RDEVADD,RDEVLDEV Is this an LDEV? HRC065DK 01482100
  1380. BO TERMLDEV Yes, special handling HRC065DK 01482200
  1381. CALL DMKSCNRD GET 'CCU' ADDRESS FROM RDEVBLOK @V200820 01483000
  1382. CALL DMKCVTBH CONVERT TO PRINTABLE EBCDIC @V200820 01484000
  1383. ICM R1,B'1000',BLANKS GET A HIGH-ORDER BLANK IN R1@V200820 01485000
  1384. L R0,=C'LINE DSC' PUT 'LINE' IN GR0 @V200820 01486000
  1385. CLI RDEVTYPC,CLASTERM IS IT REALLY A LINE ? @V200820 01487000
  1386. BCR 8,R4 YES - RETURN AS IS @V200820 01488000
  1387. L R0,=C'GRAF' MUST BE A LOCAL GRAPHICS TERMINAL@V200820 01489000
  1388. BR R4 @V200820 01490000
  1389. TERMLDEV EQU * HRC065DK 01490100
  1390. LH R1,RDEVADD Get the LDEV address HRC065DK 01490200
  1391. N R1,F4095 Keep only the dev num HRC065DK 01490300
  1392. CALL DMKCVTBH Make it displayable HRC065DK 01490400
  1393. ICM R1,8,=C'L' Insert LDEV identifier HRC065DK 01490500
  1394. L R0,=C'GRF ' Use short GRAF name HRC065DK 01490600
  1395. BR R4 Return with R0/R1 filledHRC065DK 01490700
  1396. TERMRID EQU * SETUP 'DEV XXXX' FOR 370X TERMS @V200820 01491000
  1397. LH R1,VMTRMID-VMBLOK(,R1) RESOURCE FIELD @V200820 01492000
  1398. CALL DMKCVTBH CONVERT TO PRINTABLE EBCDIC @V200820 01493000
  1399. L R0,=C'DEV ' PUT CORRECT TYPE IN GR0 @VM03066 01494000
  1400. BR R4 RETURN @VM03066 01495000
  1401. TERMNOD LM R0,R1,=C'LINE DSC' DEFAULT FOR DISC MACHINE @VM03066 01496000
  1402. BR R4 RETURN @VM03066 01497000
  1403. DROP R8 NO MORE RDEVBLOK @VM03066 01498000
  1404. EJECT 01499000
  1405. DMKLOGB RELOC @V4075A0 01500000
  1406. SR R2,R2 CLEAR @V305535 01501000
  1407. ST R2,SAVER2 CLEAR RETURN CODE FIELD @V305535 01502000
  1408. ST R2,SAVEWRK1 CLEAR PARAMETER FIELD @V305535 01503000
  1409. ST R10,SAVEWRK8 SAVE CMD ISSUERS VMBLOK ADDR @VM03066 01504000
  1410. MVI SAVEWRK1,AUTOLOG+PSWRDCK SET-UP INITIAL @V305535 01505000
  1411. * PARAMETERS 01506000
  1412. B LOG00 JOIN LOGON CODE @V305535 01507000
  1413. EJECT 01508000
  1414. * ERROR RETURNS: 01509000
  1415. * 01510000
  1416. ERROR3 LA R2,3 INVALID OPTION - OPTN @VA04098 01511000
  1417. B ERRJOIN3 CONTINUE, R0 AND R1 ARE SET @VA08667 01512000
  1418. SPACE 01513000
  1419. ERROR20 LA R2,20 USERID MISSING OR INVALID @VA04098 01514000
  1420. B ERRJOIN1 ... @VA04098 01515000
  1421. SPACE 1 01516000
  1422. ERROR50 LA R2,50 PASSWORD INCORRECT 01517000
  1423. ST R2,SAVER2 PASS CODE BACK TO CALLER @V200820 01518000
  1424. BC 14,ERRJOIN1 CC ¬= 3 FROM DMKEPSWD - NORMAL @VMI0070 01519000
  1425. * ERROR PROCEDURE. @VMI0070 01520000
  1426. TM SAVEWRK1,AUTOLOG+PSWRDCK AUTOLOG? @VMI0070 01521000
  1427. BNO ERRJOIN1 CC = 3 FROM DMKEPSWD - TERM ERROR@VMI0070 01522000
  1428. LA R0,LEN59D SET LENGTH OF THE MESSAGE @VMI0070 01523000
  1429. LA R1,MSG059D SET START OF MESSAGE TEXT @VMI0070 01524000
  1430. MVC MSG059D,(UDIRUSER-UDIRBLOK)+SAVEWRK2 PUT USERID @VMI0070 01525000
  1431. * INTO MESSAGE. @VMI0070 01526000
  1432. B ERROR59B GO HANDLE THE MESSAGE @VMI0070 01527000
  1433. SPACE 01528000
  1434. ERROR51 LA R2,51 MAXIMUM USERS EXCEEDED 01529000
  1435. B ERRJOIN1 GO PROCESS THE ERROR @VM03066 01530000
  1436. SPACE 01531000
  1437. ERROR52 LA R2,52 ERROR IN CP DIRECTORY (BAD NEWS) 01532000
  1438. B ERRJOIN1 GO SEND THE ERROR MESSAGE @VM03066 01533000
  1439. SPACE 01534000
  1440. ERROR59A MVI SAVER2,OPMSG TELL CALLER TO GIVE MSG TO SYS OP@VM03198 01535000
  1441. ERROR59B NI SAVEWRK1,255-NONFATAL THIS IS A FATAL DISEASE @VM03198 01536000
  1442. ERROR59 LA R2,59 GET THE ERROR NUMBER @VM03066 01537000
  1443. STCM R2,B'0111',SAVER2+1 PASS BACK THE ERROR NUMBER @VM03066 01538000
  1444. B ERRJOIN4 CONTINUE PROCESSING THE MSG @VM03066 01539000
  1445. SPACE 1 01540000
  1446. ERROR67 LA R2,67 PASSWORD ON COMMAND LINE @V60BBBB 01541000
  1447. * NOT PERMITTED. @V60BBBB 01542000
  1448. B ERRJOIN1 CONTINUE @V60BBBB 01543000
  1449. ERRJOIN1 SLR R1,R1 R1 = 0 - NO DATA PASSED TO DMKERMSG 01544000
  1450. ERRJOIN3 ST R2,SAVER2 RETURN ERROR CODE TO OUR CALLER 01545000
  1451. ERRJOIN4 ICM R0,B'1110',DMKLOG+3 'LOG' IDENTIFIER INTO R0, 01546000
  1452. ICM R2,B'1000',=X'80' SIGNAL - RETURN TO LOGON PLEASE 01547000
  1453. TM SAVEWRK1,AUTOLOG+PSWRDCK AUTOLOG COMMAND? @VM03066 01548000
  1454. BNO ERRJN5 NO @V305535 01549000
  1455. LR R6,R0 SAVE REG ACROSS SWITCHVM @V60BB91 01550000
  1456. ST R1,SAVEWRK9 SAVE REGS AROUND SWITCHVM CALL @V60BB91 01551000
  1457. L R1,SAVEWRK8 SWITCH TO CMD ISSUERS VMBLOK @V407593 01552000
  1458. BAL R5,SWVM GO TO SWITCH VMBLOKS @V4M0193 01553000
  1459. L R1,SAVEWRK9 RESTORE MSG PARMS @V60BB91 01554000
  1460. LR R0,R6 RESTORE MODULE ID IN R0 @V60BB91 01555000
  1461. CALL DMKERMSG SEND ERROR MESSAGE @V305535 01556000
  1462. L R1,SAVER11 SWITCH TMRS & LOCK TO @V407593 01557000
  1463. * AUTOLOGGED VMBLOK 01558000
  1464. BAL R5,SWVM GO TO SWITCH VMBLOKS @V4M0193 01559000
  1465. TM SAVEWRK1,NONFATAL VIABLE USER YET? @VM03066 01560000
  1466. BO LOG20 YES, CONTINUE LOGON PROCESS @VM03066 01561000
  1467. B LOGEXIT NOPE, THEN EXIT TO CALLER @VM03198 01562000
  1468. SPACE 01563000
  1469. ERRJN5 DS 0H @V305535 01564000
  1470. CALL DMKERMSG LET ERROR MSG HANDLER DO THE HARD WORK 01565000
  1471. TM SAVEWRK1,NONFATAL NON-FATAL ERROR ? 01566000
  1472. BO LOG20 IF YES, GO READ IN NEXT DEVICE BLOCK 01567000
  1473. CH R2,=H'131' 131E MESSAGE @V407466 01568000
  1474. BE FORCEUSR FORCE USER OFF, NO MORE CHANCES @V407466 01569000
  1475. IC R14,VMPSWDCT GET CURRENT COUNT @VM03198 01570000
  1476. LA R14,1(R14) BUMP BAD LOGON ATTEMPTS BY ONE @VM03198 01571000
  1477. STC R14,VMPSWDCT AND SAVE @VM03198 01572000
  1478. L R3,=A(DMKSYSJR) GET ADDRESS OF JPSCBLOK @V60BBBB 01573000
  1479. USING JPSCBLOK,R3 TELL ASSEMBLER @V60BBBB 01574000
  1480. TM LOGONJRL,L'LOGONJRL LOGON JOURNALING ON? @V60BBBB 01575000
  1481. BZ NOTJRLNG BR IF NOT @V60BBBB 01576000
  1482. CLC VMPSWDCT,JPSLOGDS LIMIT EXCEEDED? @V60BBBB 01577000
  1483. BL LOGEXIT NO. LET HIM CONTINUE @V60BBBB 01578000
  1484. B FORCEUSR CONTINUE @V60BBBB 01579000
  1485. DROP R3 @V60BBBB 01580000
  1486. NOTJRLNG DS 0H @V60BBBB 01581000
  1487. CLI VMPSWDCT,LOGLIMIT CHECK HOW MANY TIMES HE GOOFED@VM03198 01582000
  1488. BNH LOGEXIT IF NOT > LIMIT GIVE HIM 'NOTHER'N@VM03198 01583000
  1489. FORCEUSR TM SAVEWRK1,AUTOLOG+PSWRDCK OP BEING LOGGED ON @V407466 01584000
  1490. BM USERGONE YES, DON'T TURN ON VMKILL BIT @V407466 01585000
  1491. OI VMOSTAT,VMKILL BYE BYE ..FOR NOW @V407466 01586000
  1492. OI VMSVSTAT,VMLGFORC INDICATE USER WAS FORCED OFF @VA13026 01586500
  1493. SPACE 01587000
  1494. USERGONE DS 0H @V305535 01588000
  1495. L R1,SAVERETN PICK UP RETURN ADDRESS @V305535 01589000
  1496. LA R1,8(,R1) +8 = DON'T POST READ & DON'T RUN 01590000
  1497. ST R1,SAVERETN AND STORE IT BACK 01591000
  1498. B LOGEXIT AND GO EXIT. 01592000
  1499. SPACE 01593000
  1500. ERROR53 LA R2,53 USERID NOT IN CP DIRECTORY 01594000
  1501. B ERRJOIN3 RETURN ERROR CODE & GIVE MSG @VA08667 01595000
  1502. SPACE 01596000
  1503. ERROR54 DS 0H ALREADY LOGGED ON LINE XXX 01597000
  1504. TM SAVEWRK1,AUTOLOG SPECIAL LOGON CALL? @V305535 01598000
  1505. BZ NOTAUTO3 NO @V305535 01599000
  1506. C R11,ASYSOP AUTOLOG OF SYSTEM OPERATOR? @V305535 01600000
  1507. BE LOG10A YES, PROCEED NORMALLY @V305535 01601000
  1508. NOTAUTO3 EQU * NOT AUTOLOG COMMAND @V305535 01602000
  1509. LA R2,54 REAL ERROR 54 01603000
  1510. L R8,VMTERM-VMBLOK(,R1) ACCESS THE OTHER TERMINAL RDEVBLOK 01604000
  1511. BAL R4,TERMADD GET 'TYPE RADDR' FOR OTHER VMBLOK@V200820 01605000
  1512. STM R0,R1,SAVEWRK2 SET IN SAVEAREA @V200820 01606000
  1513. LA R1,SAVEWRK2 POINT AT IT FOR DMKERMSG @V200820 01607000
  1514. LA R0,8 VARIABLE FIELD LENGTH @V200820 01608000
  1515. B ERRJOIN3 GO TYPE THE ERROR MESSAGE @VA08667 01609000
  1516. ERROR66 EQU * Cant connect to host VM HRC065DK 01609100
  1517. LA R2,66 -> message num DMKEMA HRC065DK 01609200
  1518. B ERRJOIN1 Go display msg HRC065DK 01609300
  1519. SPACE 01610000
  1520. ERROR90 EQU * @VA03350 01611000
  1521. USING UDEVBLOK,R9 ADDRESSABILITY FOR UDEVBLOK @VA03350 01612000
  1522. LA R2,90 MSG DMKLOGO9OE @VA03350 01613000
  1523. LR R1,R3 VADDR INTO R1 FOR CONVERT @VA03350 01614000
  1524. CALL DMKCVTBH BINARY TO HEX PLEASE 01615000
  1525. STCM R1,7,0(R10) STORE (3 BYTES) IN EXTRA SAVE AREA, 01616000
  1526. MVI 3(R10),00 BINARY ZERO NEXT (1 BYTE) 01617000
  1527. CLI UDEVVSER,X'40' VOLID PRESENT @VA03350 01618000
  1528. BE PUTRADDR NO PUT RADDR INTO MSG @VA03350 01619000
  1529. MVC 4(6,R10),UDEVVSER PUT VOLSER INTO MSG @VA03350 01620000
  1530. LA R0,10 THATS TEN BYTES TOTAL @VA03350 01621000
  1531. B GIVEMSG @VA03350 01622000
  1532. PUTRADDR LH R1,UDEVLINK RADDR INTO R1 FOR CONVERT @VA03350 01623000
  1533. CALL DMKCVTBH CONVERT TO HEX @VA03350 01624000
  1534. STCM R1,7,4(R10) AND STORE AGAIN (3 MORE BYTES) 01625000
  1535. LA R0,7 THAT'S 7 BYTES TOTAL 01626000
  1536. GIVEMSG LR R1,R10 POINT TO MSG INFO AREA @VA03350 01627000
  1537. B ERRJOIN4 GO GIVE ERROR MESSAGE & GET NEXT UDEVBLOK 01628000
  1538. DROP R9 @VA03350 01629000
  1539. ERROR95 LA R2,CON95 DMKLOG095E @V407466 01630000
  1540. B ERROR91J PUT VADDR IN MSG PER ERROR91 @V407466 01631000
  1541. SPACE 01632000
  1542. ERROR91 LA R2,91 DASD VADDR NOT DEFINED; TEMP SPACE NOT AVAILABLE 01633000
  1543. ERROR91J LR R1,R3 DEVICE-ADDRESS INTO R1 01634000
  1544. CALL DMKCVTBH BINARY TO HEX PLEASE 01635000
  1545. ICM R1,B'1000',BLANKS HI ORDER BLANK PLEASE @VA04098 01636000
  1546. SLR R0,R0 R0=0 MEANS THE DATA IS IN R1 01637000
  1547. B ERRJOIN4 GO GIVE ERROR MESSAGE & GET NEXT UDEVBLOK 01638000
  1548. SPACE 01639000
  1549. ERROR92 DS 0H DEV VADDR NOT DEFINED; TYPE VADDR ALREADY DEFINED: 01640000
  1550. MVC 0(12,R10),ZEROES CLEAR 12 BYTES WORTH OF SAVE AREA 01641000
  1551. CALL DMKCVTBH VADDR (STILL IN R1) INTO HEX PLEASE 01642000
  1552. STCM R1,7,9(R10) (PLAN AHEAD) 01643000
  1553. ERROR92J STCM R1,7,0(R10) STORE (3 BYTES) IN EXTRA SAVE AREA 01644000
  1554. * BINARY ZERO NEXT (1 BYTE) 01645000
  1555. CALL DMKSCNVN NOW GET DEVICE NAME (R8 IS ALL SET) 01646000
  1556. ST R1,4(,R10) AND STORE (4 BYTES) NEXT 01647000
  1557. * ANOTHER BINARY ZERO (1 BYTE) 01648000
  1558. * AND VADDR AGAIN (3 BYTES) 01649000
  1559. LA R0,12 IF I CAN COUNT THAT'S 12 BYTES TOTAL 01650000
  1560. LR R1,R10 AND IN OUR EXTRA SAVE AREA 01651000
  1561. LA R2,92 THAT WILL BE ERROR 92 PLEASE 01652000
  1562. B ERRJOIN4 GO GIVE ERROR MESSAGE & GET NEXT UDEVBLOK 01653000
  1563. SPACE 01654000
  1564. ERROR93 LA R2,93 DEV VADDR NOT DEFINED; ERROR IN CP DIRECTORY 01655000
  1565. B ERROR91J PUT VADDR IN MSG PER ERROR 91. 01656000
  1566. SPACE 01657000
  1567. ERROR131 LA R2,CON131 MSG NUMBER @V407466 01658000
  1568. LA R0,LENGTH5 SUBSTITUTABLE DATA LENGTH @V407466 01659000
  1569. LA R1,=CL5'LOGON' SUBSTITUTABLE DATA @V407466 01660000
  1570. B ERRJOIN3 COMMON ERRROR PROCESSING @V407466 01661000
  1571. EJECT 01662000
  1572. LOGMS189 LA R2,189 MSG NUMBER @V4075A0 01663000
  1573. ICM R2,B'0100',CHARI IT'S AN INFORMATIONAL MSG @V4075A0 01664000
  1574. B COMAFF @V4075A0 01665000
  1575. LOGMS188 LA R2,188 MSG NUMBER @V4075A0 01666000
  1576. COMAFF SR R1,R1 NO VARIABLE DATA FOR DMKERM @V4075A0 01667000
  1577. ICM R0,B'1110',DMKLOG+3 'LOG' ID @V4075A0 01668000
  1578. ICM R2,B'1000',HEX80 INDICATE ERM RETURNS TO US @V4075A0 01669000
  1579. CALL DMKERMSG @V4075A0 01670000
  1580. B NOAFF UNSATISFIED AFFINITY NOT FATAL @V4075A0 01671000
  1581. EJECT @V4075A0 01672000
  1582. * EXECUTED INSTRUCTIONS: 01673000
  1583. SAVEPASS MVC SAVEWRK8(*-*),0(R1) 01674000
  1584. CLCMASK CLC CMASK(*-*),0(R1) 01675000
  1585. CLCNOIPL CLC CNOIPL(*-*),0(R1) 01676000
  1586. * 01677000
  1587. CMASK DC C'MASK ' MEANS MASKING CHARACTERS WANTED 01679000
  1588. CNOIPL DC C'NOIPL ' MEANS NO AUTOMATIC IPL WANTED 01680000
  1589. * @V4075A0 01681000
  1590. CHARI DC C'I' @V4075A0 01682000
  1591. HEX80 DC X'80' @V4075A0 01683000
  1592. MSG059A DC CL8' ' @VA06350 01684000
  1593. TEXT59A DC X'00',C'IPL MISSING' @VA06350 01685000
  1594. MSG059B DC CL8' ' @VA06350 01686000
  1595. TEXT59B DC X'00',C'ACCOUNTING ERROR' @VA06350 01687000
  1596. MSG059C DC CL8' ' @VA06350 01688000
  1597. TEXT59C DC X'00',C'IPL FAILED' @VA06350 01689000
  1598. MSG059D DC CL8' ' @VMI0070 01690000
  1599. TEXT59D DC X'00',C'I/O ERROR ON TERMINAL' @VMI0070 01691000
  1600. LEN59D EQU *-MSG059D @VMI0070 01692000
  1601. SPACE 2 01693000
  1602. LTORG 01694000
  1603. SPACE 2 01695000
  1604. LOGLIMIT EQU 3 LIMIT OF HOW MANY "WRONG PASSWORDS" WE'LL TOLERATE 01696000
  1605. EJECT 01697000
  1606. EJECT 01698000
  1607. PSA 01699000
  1608. COPY SAVE 01700000
  1609. * FLAG-BITS USED IN SAVEWRK1: 01701000
  1610. * 01702000
  1611. AUTOLOG EQU X'80' AUTOLOG CMD OR CPI SYS OP LOGON @VM03066 01703000
  1612. PSWRDOK EQU X'40' PASSWORD OK - DON'T CALL DMKEPSWD 01704000
  1613. NOIPL EQU X'20' NO AUTOMATIC IPL WANTED 01705000
  1614. NONFATAL EQU X'10' ERROR(S) NONFATAL - GO READ NEXT UDEVBLOK 01706000
  1615. RECON EQU X'08' RECONNECT PERFORMED 01707000
  1616. R9FRE EQU X'04' R9 IN USE AS FREE-STORAGE BUFFER 01708000
  1617. EXECF EQU X'02' RECONNECTED W/ VMCF STILL ON @VM03066 01709000
  1618. PSWRDCK EQU X'01' AUTOLOG CMD - PASSWORD REQUIRED @VM03066 01710000
  1619. SPACE 01711000
  1620. OSVSCOM MSSCOM @V60B6B8 01712000
  1621. BLANK EQU X'40' @V60B6B8 01713000
  1622. L48 EQU 48 @V60B6B8 01714000
  1623. RC4 EQU 4 @V60B6B8 01715000
  1624. L5 EQU 5 @V60B6B8 01716000
  1625. * PARAMETER BITS PASSED TO DMKUSOFF 01718000
  1626. * 01719000
  1627. NOOPMSG EQU X'01' DONT SEND LOGOFF MSG TO SYS OP @VM03066 01720000
  1628. SPACE 01721000
  1629. * PARAMETER BITS PASSED FROM DMKLOG BACK TO DMKLOGA 01722000
  1630. * 01723000
  1631. OPMSG EQU X'80' LET USOFF SEND LOGOFF MSG TO OP @VM03066 01724000
  1632. * MISCELLANEOUS EQUATES 01725000
  1633. CON512 EQU 512 512 DOUBLEWORDS @V407466 01726000
  1634. CON131 EQU 131 DMKLOG131E MESSAGE NUMBER @V407466 01727000
  1635. CON95 EQU 95 DMKLOG095E @V407466 01728000
  1636. LENGTH5 EQU 5 DATA LENGTH MSG 131E @V407466 01729000
  1637. EJECT 01730000
  1638. COPY EQU 01731000
  1639. COPY VMBLOK 01732000
  1640. COPY TIMER 01733000
  1641. COPY IOBLOKS 01734000
  1642. COPY NETWORK @V200820 01735000
  1643. COPY UDIRECT 01736000
  1644. COPY DEVTYPES 01737000
  1645. COPY RBLOKS 01738000
  1646. COPY VBLOKS 01739000
  1647. SYSLOCS 01740000
  1648. COPY MICBLOK 01741000
  1649. COPY CONBUF @V305535 01742000
  1650. JPSCBLOK @V60BBBB 01743000
  1651. END DMKLOG 01744000