ibm:vm370-lib:cp:dmklog.assemble_src
Table of Contents
DMKLOG Source
References
- Fixes Applied : 28
- This Source Date : Thursday, December 14, 1978
- Last Fix ID : [HRC065DK]
Source Listing
- DMKLOG.ASSEMBLE.txt
- LOG TITLE 'DMKLOG (CP) VM/370 - RELEASE 6' 00001000
- ISEQ 73,80 VALIDATE SEQUENCING OF SOURCE 00002000
- *. 00003000
- * MODULE NAME - 00004000
- * 00005000
- * DMKLOG - LOGON A USER (OR THE OPERATOR) 00006000
- * 00007000
- * FUNCTION - 00008000
- * 00009000
- * TO PERFORM ALL FUNCTIONS NECESSARY TO 00010000
- * TO LOGON A USER (OR THE OPERATOR). 00011000
- * 00012000
- * COMMAND LINE FORMAT - 00013000
- * 00014000
- * +-------+-------------------------------------------+ 00015000
- * | | | 00016000
- * | LOGON | USERID <PASSWORD> <MASK> <NOIPL> | 00017000
- * | - | - - | 00018000
- * +-------+-------------------------------------------+ 00019000
- * 00020000
- * ATTRIBUTES - 00021000
- * 00022000
- * REENTRANT, PAGEABLE, CALLED VIA SVC 00023000
- * 00024000
- * ENTRY POINTS - 00025000
- * 00026000
- * DMKLOGON - LOGON A USER 00027000
- * DMKLOGOP - LOGON THE OPERATOR 00028000
- * 00029000
- * ENTRY CONDITIONS - 00030000
- * 00031000
- * GPR 9 = ADDRESS OF COMMAND BUFFER (FOR DMKLOGON ONLY) 00032000
- * GPR 11 = ADDRESS OF USER'S VMBLOK 00033000
- * GPR 12 = ADDRESS OF DMKLOGON OR DMKLOGOP 00034000
- * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00035000
- * 00036000
- * EXIT CONDITIONS - 00037000
- * 00038000
- * UPON A SUCCESSFUL LOGON OR RECONNECT, ALL APPROPRIATE 00039000
- * TABLES HAVE BEEN CREATED, FILLED IN, AND/OR REVISED; 00040000
- * AND ALL APPROPRIATE FLAGS HAVE BEEN SET AS NECESSARY. 00041000
- * 00042000
- * CC = 0 IF LOGON OR RECONNECT WAS SUCCESSFUL (AND GPR 2 = 0). 00043000
- * CC = 2 IF LOGON FAILED (AND GPR 2 HOLDS ERROR CODE). 00044000
- * 00045000
- * GPR 2 = 0 IF LOGON OR RECONNECT SUCCEEDED. 00046000
- * GPR 2 HOLDS ERROR-CODE (SEE ERROR MESSAGES) IF LOGON FAILED. 00047000
- EJECT 00048000
- * CALLS TO OTHER ROUTINES - 00049000
- * 00050000
- * DMKACON - ESTABLISH ACCOUNTING INFORMATION 00051000
- * DMKBLDRT - BUILD REAL SEGMENT, PAGE, AND SWAP TABLES 00052000
- * DMKBLDVM - BUILD A VMBLOK 00053000
- * DMKCFGII - INITIATE AUTOMATIC IPL OF USER-DESIGNATED SYSTEM 00054000
- * DMKCQRFI - SEND MESSAGE TO USER FOR SPOOL FILES IF ANY 00055000
- * DMKCVTBD - CONVERT FROM BINARY TO PRINTABLE DECIMAL 00056000
- * DMKCVTBH - CONVERT FROM BINARY TO PRINTABLE HEX 00057000
- * DMKCVTDT - OBTAIN DATE-TIME 00058000
- * DMKEPSWD - ENTER PASSWORD 00059000
- * DMKFREE - OBTAIN FREE STORAGE 00060000
- * DMKFRERC - ACQUIRE FREE STORAGE & IF STORAGE CANNOT 00061000
- * BE OBTAINED, RETURN WITH CC=1 00062000
- * DMKFRET - RETURN UNUSED VMBLOK TO FREE STORAGE 00063000
- * DMKJRLLO - JOURNAL DATA ON INVALID PASSWORDS 00064000
- * DMKQCNWT - SEND MESSAGE TO USER TERMINAL 00065000
- * DMKSCNAU - FIND VMBLOK OF ACTIVE USER 00066000
- * DMKSCNFD - GET NEXT FIELD FROM COMMAND LINE 00067000
- * DMKSCNRD - TO CONVERT TERMINAL DEVICE ADDRESS TO CCU FORM 00068000
- * DMKSCNRU - TO FIND REAL RDEVBLOK FOR A DEDICATED DEVICE 00069000
- * DMKSCNVD - TO FIND VIRTUAL ADDRESS FROM VDEVBLOK 00070000
- * DMKSCNVU - FIND VIRTUAL DEVICE BLOCKS 00071000
- * DMKSCNVN - GET NAME OF VIRTUAL DEVICE 00072000
- * DMKSTKCP STACK CPEXBLOK FOR AUTOLOGGED USER 00073000
- * DMKUDRFU - FIND USER IN CP DIRECTORY 00074000
- * DMKUDRRD - USER DIRECTORY READ 00075000
- * DMKUDRRV - RELEASE VIRTUAL PAGES USED BY DMKUDR ROUTINES 00076000
- * DMKSCHRT - TO RESET A CLOCK COMPARATOR TRQBLOK 00077000
- * DMKVDSAT - ATTACH A VIRTUAL DEVICE 00078000
- * DMKVDSDF - DEFINE A VIRTUAL DEVICE 00079000
- * DMKLNKSB - CHECK & ESTABLISH LINK TO GIVEN MINIDISK 00080000
- * DMKERMSG - TO CONSTRUCT & SEND ERROR MESSAGES TO USER 00081000
- * DMKQCNSY - SYNCHRONIZE CONSOLE ACTIVITY 00082000
- * DMKSCHDL - MAKE AN AUTOLOGGED USER RUNNABLE 00083000
- * DMKUSOFF - FORCE OFF AN ILL FATED AUTOLOGGED USER 00084000
- * DMKLOHRC - SPLIT FROM THIS ROUTINE. RECONNECT DISC USER 00085000
- * 00085500
- * EXTERNAL REFERENCES - 00086000
- * 00087000
- * DMKSYSNM - NUMBER OF ACTIVE USERS 00088000
- * DMKSYSMA - MAXIMUM NUMBER OF USERS ALLOWED ON SYSTEM 00089000
- * DMKSYSOP - OPERATOR'S VMBLOK 00090000
- * DMKSCHCP - INTERRUPT RETURN ADDRESS FOR CPU TIMER INTERRUPT 00091000
- * DMKTMRCK - INTERRUPT RETURN ADDRESS FOR CLOCK COMPARATOR 00092000
- * DMKSCH80 - INTERRUPT RETURN ADDRESS FOR REAL TIMER 00093000
- * DMKSYSTI - TIME ZONE IDENTIFIER 00094000
- * DMKSYSJR - JPSCBLOK (JOURNALING CONTROL BLOCK) 00095000
- * 00096000
- * TABLES / WORK AREAS - 00097000
- * 00098000
- * NONE 00099000
- EJECT 00100000
- * REGISTER USAGE - 00101000
- * 00102000
- * GPR 2 = ADDRESS OF "UDEV" BLOCKS AND OTHER USE 00103000
- * GPR 8 = ADDRESS OF TERMINAL RDEVBLOK, AND OTHER USE 00104000
- * GPR 9 = ADDRESS OF 'LOGON' COMMAND, THEN FREE STORAGE ADDRESS 00105000
- * GPR 11 = ADDRESS OF USER'S VMBLOK 00106000
- * GPR 12 = BASE REGISTER 00107000
- * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00108000
- * 00109000
- * GPRS 0-1, 3-7, 10, AND 14-15 ARE WORK REGISTERS 00110000
- * 00111000
- * NOTES - 00112000
- * 00113000
- * 'PASSWORD' DENOTES THE ACTUAL USER PASSWORD. 00114000
- * 00115000
- * (USE OF THIS OPTION IS NOT RECOMMENDED 00116000
- * UNLESS PASSWORD SECURITY IS IRRELEVANT) 00117000
- * 00118000
- * 'MASK' IN COMMAND LINE DENOTES THAT THE TERMINAL DOES NOT HAVE 00119000
- * A PRINT-INHIBIT FEATURE, AND THAT MASKING CHARACTERS 00120000
- * ARE TO BE TYPED WHENEVER A PASSWORD IS REQUESTED. 00121000
- * 00122000
- * 'NOIPL' SIGNALS THAT NO AUTOMATIC IPL OF A NAMED SYSTEM 00123000
- * IS DESIRED WHEN THE LOGON PROCESS IS COMPLETE. 00124000
- * 00125000
- * IF ANY OF THESE OPTIONS IS MORE THAN 8 BYTES IN LENGTH, OR 00126000
- * IS GIVEN TWICE, AN ERROR 3 IS RETURNED (WITH ERROR MESSAGE). 00127000
- * IF AN OPTION IS NEITHER 'M' TO 'MASK' NOR 'N' TO 'NOIPL', 00128000
- * IT IS ASSUMED TO BE A USER PASSWORD AND IS CHECKED - ERROR 50 00129000
- * BEING RETURNED (WITH ERROR MESSAGE) IF INCORRECT. 00130000
- * 00131000
- * SEE STEP 13 IN "OPERATION" REGARDING THE SYSTEM LOG MESSAGE. 00132000
- * 00133000
- * OPERATION - 00134000
- * 00135000
- * 1. FOR THE DMKLOGOP ENTRY (FOR AUTOMATICALLY LOGGING IN THE 00136000
- * AUTOLOG USERS, AND THE 00137000
- * OPERATOR), SEVERAL OF THE FOLLOWING STEPS, IN GENERAL THOSE 00138000
- * REQUIRING A COMMAND LINE OR HUMAN ACTION, ARE EITHER OMITTED 00139000
- * OR ARE REPLACED BY A TRIVIAL EQUIVALENT (FOR EXAMPLE OBTAINING 00140000
- * THE USERID FROM A FIXED LOCATION, FOR THE OPERATOR, INSTEAD OF 00141000
- * PICKING IT UP FROM THE COMMAND LINE). THESE OMITTED OR 00142000
- * REVISED STEPS ARE MARKED WITH AN ASTERISK PRECEDING THE STEP 00143000
- * NUMBER (FOR EXAMPLE STEPS 2, 3, 4, & 6). 00144000
- * 00145000
- * FOR THE DMKLOGON ENTRY, TO LOGON A USER, ALL OF THE LOGIC 00146000
- * STEPS, AS GIVEN BELOW, APPLY. 00147000
- * 00148000
- * * 2. CHECKS TO SEE IF THE MAXIMUM ALLOWABLE NUMBER OF USERS ON 00149000
- * THE SYSTEM HAS BEEN EXCEEDED; IF YES, EXITS IMMEDIATELY TO 00150000
- * CALLER WITH AN ERROR MESSAGE & ERROR CODE 51. 00151000
- * 00152000
- * * 3. CALLS DMKSCNFD TO OBTAIN USERID FROM COMMAND LINE. 00153000
- * (ERROR IF USERID IS MISSING OR MORE THAN 8 CHARACTERS.) 00154000
- EJECT 00155000
- * * 4. DMKSCNFD IS THEN CALLED UP TO THREE MORE TIMES TO SEE IF 00156000
- * 'MASK', 'NOIPL', AND/OR A PASSWORD IS PRESENT ON THE COMMAND 00157000
- * LINE. IF 'MASK' IS PRESENT, THE TERMINAL REAL DEVICE BLOCK 00158000
- * IS FLAGGED TO INDICATE NO PRINT INHIBIT FEATURE ON THE 00159000
- * TERMINAL. IF 'NOIPL' IS PRESENT, A FLAGBIT IS SET TO SUPPRESS 00160000
- * AN AUTOMATIC IPL OF A NAMED SYSTEM WHEN LOGON IS COMPLETED. 00161000
- * IF A PASSWORD IS PRESENT, IT IS USED FOR COMPARING WITH THE 00162000
- * USER DIRECTORY BLOCK PASSWORD, INSTEAD OF CALLING DMKEPSWD. 00163000
- * 00164000
- * 5. NOW DMKUDRFU IS CALLED TO FIND THE USERID IN THE CP 00165000
- * DIRECTORY. IF NOT FOUND, EXITS IMMEDIATELY WITH AN ERROR 00166000
- * MESSAGE AND ERROR CODE 53. IF SUCCESSFUL, REMEMBERS THE 00167000
- * USER DIRECTORY BLOCK INFORMATION FOR SUBSEQUENT CALLS TO 00168000
- * DMKUDRRD, AND FOR OTHER USE. 00169000
- * 00170000
- * * 6. IF THE PASSWORD WAS PROVIDED IN THE COMMAND LINE, CHECKS 00171000
- * IT AGAINST THAT IN THE USER DIRECTORY BLOCK (FROM STEP 5). IF 00172000
- * NOT, CALLS DMKEPSWD TO OBTAIN AND CHECK THE PASSWORD. IF THE 00173000
- * PASSWORD WAS INCORRECT, EXITS IMMEDIATELY WITH ERROR MESSAGE 00174000
- * AND ERROR CODE 50. IF A COND. CODE 3 FROM DMKEPSWD INDICATES 00175000
- * THE PASSWORD WAS NEVER ENTERED AT ALL (DUE TO A "TIMEOUT", 00176000
- * PERMANENT TERMINAL ERROR, OR THE USER SIMPLY TURNED OFF 00177000
- * HIS TERMINAL), THEN NO ERROR MESSAGE IS GIVEN. 00178000
- * 00179000
- * 7. NOW CALLS DMKSCNAU TO SEE IF THE USER TO BE LOGGED ON IS 00180000
- * ALREADY AN ACTIVE USER. IF NOT, PROCEED DIRECTLY TO STEP 10. 00181000
- * 00182000
- * 8. IF YES, CHECKS TO SEE IF THE USER IS RUNNING DISCONNECTED. 00183000
- * IF NOT, AN ERROR MESSAGE IS GIVEN INDICATING THAT THE USER IS 00184000
- * LOGGED ON AT ANOTHER DEVICE, AND AN EXIT IS MADE WITH 00185000
- * ERROR CODE 54. 00186000
- * 00187000
- * 9. IF THE USER WAS RUNNING DISCONNECTED, THE FOLLOWING STEPS 00188000
- * ARE TAKEN TO RECONNECT HIM: 00189000
- * 00190000
- * A. THE VMBLOK BELONGING TO THE DISCONNECTED USER IS 00191000
- * REVISED TO USE THE TERMINAL REAL DEVICE BLOCK POINTED 00192000
- * TO BY THE "CURRENT" GPR 11, AND OTHER REVISIONS MADE AS 00193000
- * AS NEEDED. THEN THE VMBLOK POINTED TO BY GPR 11 IS 00194000
- * RELEASED FROM THE SYSTEM, AND THE OTHER VMBLOK IS USED 00195000
- * HEREAFTER. 00196000
- * 00197000
- * B. NEXT, THE EQUIVALENT OF STEPS 12-14 (BELOW) ARE 00198000
- * PERFORMED FOR ACCOUNTING, THE LOG MESSAGE, AND THE 00199000
- * TYPEOUT OF THE NUMBER OF SPOOLED FILES (IF ANY). 00200000
- * 00201000
- * C. THEN A MESSAGE IS SENT TO THE USER (VIA A CALL TO 00202000
- * DMKLOH) THAT HE HAS BEEN RECONNECTED, AND TO THE 00203000
- * OPERATOR THAT THE GIVEN USER HAS BEEN RECONNECTED. 00204000
- * 00205000
- * D. ANY ADDITIONAL RESETTING OF FLAG BITS AS 00206000
- * NEEDED IS DONE (FOR EXAMPLE, RESETTING THE DISCONNECT 00207000
- * FLAG-BIT). 00208000
- * 00209000
- * E. FINALLY, IN MOST CASES, NORMAL RETURN IS MADE TO 00210000
- * THE CALLER. (THE CALLER WOULD THEN INVOKE 'BEGIN' IF HE 00211000
- * WISHED TO CONTINUE HIS PROGRAM WHERE IT LEFT OFF.) 00212000
- * 00213000
- * F. THE ONE CASE IN WHICH RETURN IS NOT NORMAL IS 00214000
- * IF A CONSOLE FUNCTION WAS BEING EXECUTED WHEN RECONNECT 00215000
- * STARTED. IN THIS CASE, RETURN IS TO *+12 IN DMKCFM SO 00216000
- * THAT STATUS BITS WILL NOT BE CHANGED. 00217000
- * 00218000
- * 10. IF THE USER WAS NOT ACTIVE (FROM STEP 8), THEN THE LOGON 00219000
- * PROCESS CAN CONTINUE. THE USERID IN THE VMBLOK IS NOW CHANGED 00220000
- * FROM ITS VALUE OF 'LOGONXXX' TO THE CORRECT USERID, AND A FLAG 00221000
- * IS SET INDICATING HE IS THE LOGON PROCESS. (THIS INHIBITS 00222000
- * OTHERS FROM LINKING TO HIS DISKS WHILE HE IS IN THE FOLLOWING 00223000
- * STEPS OF LINKING TO THEM.) DMKFREE IS NOW CALLED FOR SPACE 00224000
- * FOR THE USER MACHINE BLOCK AND USER DEVICE BLOCKS. DMKUDRRD 00225000
- * IS THEN CALLED TO OBTAIN THE USER MACHINE BLOCK. APPROPRIATE 00226000
- * INFORMATION (E.G. CORE SIZE) IS STORED IN THE VMBLOK, AND IN 00227000
- * THE TERMINAL REAL DEVICE BLOCK (FOR EXAMPLE, THE LINE 00228000
- * AND CHARACTER DELETE SYSMBOLS (AND LINE END CHARACTERS, EXCEPT 00229000
- * FOR AUTOLOG USERS WITH NO REAL DEVICE BLOCK)ยฌ 00230000
- * AFFINITY PROCESSING TRIES TO SET AFFINITY IF THE SYSTEM @V4075A0 00231000
- * IS IN AP MODE AND THE REQUESTED PROCESSOR IS AVAILABLE. @V4075A0 00232000
- * IF PROCESSOR ADDRESS IS NOT AVAILABLE, WE ISSUE MSG 188. @V4075A0 00233000
- * IT IS AVAILABLE BUT WE ARE IN UP MODE, WE ISSUE MSG 189. @V4075A0 00234000
- * NEITHER CASE PREVENTS THE USER FROM LOGON. @V4075A0 00235000
- * AT THIS TIME THE USER MACHINE BLOCK IS TESTED TO SEE IF THE 00236000
- * USER WISHES TO OCCUPY THE VIRTUAL = REAL REGION. IF HE DOES, 00237000
- * THE CPSTATUS SWITCH IN DMKPSA IS TESTED TO SEE IF THE REGION 00238000
- * IS AVAILABLE, AND THE USER'S VIRTUAL MEMORY SIZE IS COMPARED 00239000
- * TO THE REAL SPACE THAT IS AVAILABLE. IF BOTH TESTS SUCCEED, 00240000
- * THE LOGON PROCESS CONTINUES AND GPR2 IS SET TO INDICATE TO 00241000
- * DMKBLDRT THAT SPECIAL HANDLING FOR THE VIRTUAL MEMORY CONTROL 00242000
- * TABLES IS REQUIRED. IF EITHER TEST FAILS, THE LOGON PROCESS 00243000
- * IS TERMINATED. 00244000
- * DMKBLDRT IS CALLED TO BUILD THE SEGMENT TABLES 00245000
- * (WHICH ARE A FUNCTION OF CORE SIZE). IF THE USER'S VIRTUAL 00246000
- * MACHINE HAS THE CAPABILITY TO RUN IN EXTENDED MODE, 00247000
- * THEN A VMBLOK-EXTENSION (ECBLOK) IS OBTAINED FROM FREE 00248000
- * STORAGE, INITIALIZED, AND ITS ADDRESS STORED IN THE VMBLOK. 00249000
- * A TABLE OF VIRTUAL DEVICE BLOCKS IS THEN 00250000
- * OBTAINED FROM FREE STORAGE (DMKFRERC) AS A FUNC. OF THE 00251000
- * "DEVICE COUNT" IN THE USER MACHINE BLOCK (AND THE VIRTUAL 00252000
- * ADDRESSES ARE SET TO THEIR 'NULL' VALUE OF X'FFFF'). 00253000
- * IF THE STORAGE CANNOT BE OBTAINED, A CHECK WILL BE MADE 00254000
- * TO SEE IF MORE THAN 512 DOULBE WORDS HAD BEEN REQUESTED. 00255000
- * IF NOT, ERROR MSG DMKLOG131E WILL BE ISSUED. IF MORE 00256000
- * MORE THAN 512 DOUBLEWORDS HAD BEEN REQUESTED AND COULD NOT 00257000
- * BE SATISFIED, THE REQUEST WILL BE RE-ISSUED THIS TIME 00258000
- * ASKING FOR 512 DOUBLEWORDS SO THAT IF A SMALLER AMOUNT OF 00259000
- * STORAGE WAS AVAILABLE, THE USER WOULD BE ABLE TO LOGON WITH 00260000
- * SOME OF HIS VIRTUAL CONFIGURATION. IF THIS SECOND REQUEST 00261000
- * FAILS, DMKLOG131E WILL BE ISSUED. IF THE SECOND REQUEST 00262000
- * COMPLETES SUCCESSFULLY, LOGON PROCESSING WILL CONTINUE TO 00263000
- * ATTACH/LINK/DEFINE VIRTUAL DEVICES UNTIL STORAGE IS NO 00264000
- * LONGER AVAILABLE TO ACCOMMODATE THE VIRTUAL BLOCKS. 00265000
- * WHEN THIS HAPPENS, ONE OF THE FOLLOWING TWO MESSAGES WILL 00266000
- * APPEAR DEPENDING ON THE CONDITION ENCOUNTERED (DMKLOG095E 00267000
- * OR DMKLNK119E). 00268000
- * VIRTUAL CHANNEL AND CONTROL UNIT TABLES ARE NOW OBTAINED 00269000
- * FROM FREE STORAGE - A SMALL NUMBER OF BLOCKS FOR EACH 00270000
- * TABLE - NAMELY TWO CHANNEL BLOCKS AND THREE CONTROL UNIT 00271000
- * BLOCKS (CORRESPONDING TO A TYPICAL MINIMUM VIRTUAL MACHINE). 00272000
- * 00273000
- * 11. NOW DMKUDRRD IS CALLED REPEATEDLY TO OBTAIN THE 00274000
- * NECESSARY INFORMATION FOR INITIALIZING THE VIRTUAL BLOCKS 00275000
- * FOR ALL OF THE DEVICES PERTAINING TO THE USER. FOR EACH 00276000
- * DEVICE FOUND, IT IS PROCESSED AS FOLLOWS, UNTIL ALL 00277000
- * THE USER DEVICES ARE EXHAUSTED: 00278000
- * 00279000
- * A. IF THE DEVICE IS A NON-DEDICATED DASD DEVICE, 00280000
- * THEN DMKLNKSB IS CALLED TO ESTABLISH A LINK TO THE 00281000
- * SPECIFIED DEVICE. ANY RESPONSES OR ERROR MESSAGES 00282000
- * WHICH MAY OCCUR IN THIS PROCESS ARE INITIATED BY THE 00283000
- * DMKLNKSB ROUTINE. 00284000
- * 00285000
- * B. FOR SOME DEVICES, FOR EXAMPLE A T-DISK, DMKVDSDF IS 00286000
- * CALLED TO 'DEFINE' THE DEVICE; IF THE 'DEFINE' FAILED 00287000
- * (FOR EXAMPLE, NO TEMPORARY SPACE AVAILABLE), AN ERROR 00288000
- * MESSAGE IS GIVEN, AND PROCEEDS TO THE NEXT DEVICE. 00289000
- * 00290000
- * C. FOR OTHER DEVICES, FOR EXAMPLE TERMINAL, SPOOLED 00291000
- * READER, PRINTER, OR PUNCH, DMKVDSAT OR DMKVDSDF IS 00292000
- * CALLED TO SET UP THE APPROPRIATE BLOCKS FOR THAT DEVICE. 00293000
- * 11. (CONTINUED): 00294000
- * 00295000
- * D. FOR DEDICATED DEVICES, DMKVDSAT IS CALLED TO 00296000
- * ATTACH THE DEVICE TO THE USER (IF FEASIBLE). AN 00297000
- * ERROR MESSAGE IS GIVEN IF THE DEVICE IS UNAVAILABLE. 00298000
- * 00299000
- * E. WHEN ALL DEVICES HAVE BEEN PROCESSED, DMKUDRRV IS 00300000
- * CALLED TO RELEASE THE VIRTUAL CORE USED BY THE DMKUDR 00301000
- * ROUTINES. 00302000
- * 00303000
- * 12. NOW DMKACON IS CALLED TO DO THE ACCOUNTING LOGIC 00304000
- * APPROPRIATE TO THE LOGON PROCESS. 00305000
- * 00306000
- * 13. NOW, DMKLOH IS CALLED. THE DATE/TIME AT WHICH THE SYSTEM 00307000
- * LOG MESSAGE (LOGMSG) WAS GENERATED OR MOST RECENTLY REVISED IS 00308000
- * THEN TYPED AT THE USER'S TERMINAL, EXCEPT FOR AUTOLOG USERS 00309000
- * WITH NO REAL TERMINAL. 00310000
- * 00311000
- * IF ANY LINES OF THE SYSTEM LOG MESSAGE START WITH AN ASTERISK 00312000
- * (INDICATING THEY ARE OF A HIGH PRIORITY), THEY ARE TYPED 00313000
- * AT THE USER'S TERMINAL AT THIS POINT. (OTHERWISE, MERELY THE 00314000
- * DATE/TIME OF THE LOG MESSAGE IS GIVEN.) 00315000
- * 00316000
- * THEN, IF ANY FILES EXIST IN HIS READER, PRINTER, 00317000
- * OR PUNCH, THIS INFORMATION IS TYPED AT HIS TERMINAL. 00318000
- * 00319000
- * NEXT, THE 'READY AT ... TIME ... DATE' MESSAGE IS SENT 00320000
- * TO THE USER, AND A MESSAGE IS SENT TO THE SYSTEM OPERATOR 00321000
- * INDICATING THAT THE USER HAS BEEN LOGGED ON. 00322000
- * 00323000
- * 14. FINALLY, THE FREE STORAGE USED FOR THE USER MACHINE 00324000
- * AND DEVICE BLOCKS IS RETURNED VIA DMKFRET, APPROPRIATE 00325000
- * FLAG BITS ARE RESET IN VMBLOK AS NEEDED (E.G. THE BIT 00326000
- * INDICATING THE USER WAS IN THE LOGON PROCESS). THEN IF 00327000
- * THE USER IS NOT RECONNECTING, AND IF THE VM ASSIST FEATURE 00328000
- * IS AVAILABLE, SETUP IS DONE FOR VM ASSIST FOR THE USER (A 00329000
- * MICBLOK IS OBTAINED, AND THE MICBLOK AND THE VMMICRO FIELD 00330000
- * IN THE VMBLOK ARE INITIALIZED - ALSO, IF THE CP ASSIST FEATURE 00331000
- * IS AVAILABLE, FIELDS IN THE MICBLOK AND VMBLOK ARE SET UP). IF 00332000
- * NO ERROR OCCURRED, AND IF A NAMED SYSTEM WAS SPECIFIED IN THE 00333000
- * USER'S DIRECTORY, AND IF HE DID NOT SPECIFY 'NOIPL' IN THE 00334000
- * LOGON COMMAND LINE, THEN THE DMKCFGII ROUTINE IS CALLED 00335000
- * TO INITIATE THE DESIRED IPL PROCESS. THEN DMKJRLLO 00336000
- * IS CALLED (IF JOURNALING IS ON) TO ACCUMULATE DATA 00337000
- * ON THE USE OF INVALID PASSWORDS. FINALLY, RETURN IS 00338000
- * MADE TO THE CALLER, WITH THE APPROPRIATE ERROR CODE OF 00339000
- * 0, 20, OR 50-54 IN GPR 2. 00340000
- EJECT 00341000
- * MESSAGES - 00342000
- * 00343000
- * PROMPTING MESSAGE (FROM DMKEPSWD): 00344000
- * 00345000
- * 'ENTER PASSWORD:' 00346000
- * 00347000
- * NORMAL RESPONSES: 00348000
- * 00349000
- * 'LOGMSG - HH:MM:SS TID WEEKDAY MM/DD/YY' 00350000
- * 00351000
- * 'LOGON AT HH:MM:SS TID WEEKDAY MM/DD/YY' 00352000
- * OR 00353000
- * 'RECONNECTED AT HH:MM:SS TID WEEKDAY MM/DD/YY' 00354000
- * 00355000
- * INFORMATIVE MESSAGE GIVEN IF A DISK HAVING A "MULT" USER ACCESS 00356000
- * MODE IS SET TO WRITE AS DESIRED, BUT OTHER USER(S) ARE LINKED 00357000
- * TO THE DISK IN READ ONLY STATUS: 00358000
- * 00359000
- * 'DASD XXX LINKED R/W; R/O BY USERID' 00360000
- * OR 00361000
- * 'DASD XXX LINKED R/W; R/O BY NNN USERS' 00362000
- * @V4075A0 00363000
- * DMKLOG188E: SPECIFIED PROCESSOR UNAVAILABLE @V4075A0 00364000
- * @V4075A0 00365000
- * DMKLOG189I: AFFINITY NOT SET, SYSTEM IN UNI-PROCESSOR MOD@V4075A0 00366000
- * 00367000
- * ERROR MESSAGES (LOGON NOT ACCOMPLISHED): 00368000
- * 00369000
- * DMKLOG003E INVALID OPTION - OPTION 00370000
- * 00371000
- * DMKLOG020E USERID MISSING OR INVALID 00372000
- * 00373000
- * DMKLOG050E PASSWORD INCORRECT 00374000
- * 00375000
- * DMKLOG051E MAXIMUM USERS EXCEEDED 00376000
- * 00377000
- * DMKLOG052E ERROR IN CP DIRECTORY 00378000
- * 00379000
- * DMKLOG053E USERID NOT IN CP DIRECTORY 00380000
- * 00381000
- * DMKLOG054E ALREADY LOGGED ON TYPE RADDR 00382000
- * 00383000
- * DMKLOG059E AUTOLOG FAILED FOR USERID - IPL MISSING 00384000
- * - IPL FAILED 00385000
- * - ACCOUNTING ERROR 00386000
- EJECT 00387000
- * OTHER ERROR MESSAGES (LOGON HAS BEEN ACCOMPLISHED): 00388000
- * 00389000
- * DMKLOG090E DEV VADDR NOT DEFINED; DEV RADDR NOT AVAILABLE 00390000
- * VOLSER 00391000
- * 00392000
- * DMKLOG091E DASD VADDR NOT DEFINED; TEMP SPACE NOT AVAILABLE 00393000
- * 00394000
- * DMKLOG092E DEV VADDR NOT DEFINED; TYPE VADDR ALREADY DEFINED 00395000
- * 00396000
- * DMKLOG093E DEV VADDR NOT DEFINED; ERROR IN CP DIRECTORY 00397000
- * DMKLOG095E DEV VADDR NOT DEFINED; INSUFFICIENT FREE STORAGE 00398000
- * DMKLOG131E INSUFFICIENT FREE STORAGE AVAILABLE FOR LOGON REQUEST 00399000
- * 00400000
- * NOTE - THE FOLLOWING MESSAGES ARE ISSUED FROM THE DMKLNK MODULE, 00401000
- * CALLED VIA THE DMKLNKSB ENTRY POINT TO ESTABLISH A LINK TO 00402000
- * A DASD DEVICE IN THE USER'S DIRECTORY: 00403000
- * 00404000
- * IN THE RESPONSES AND ERROR MESSAGES WHERE "R/W BY NNN USERS" 00405000
- * IS NORMALLY SPECIFIED, IF THE "NNN" IS SPECIFICALLY 001, 00406000
- * THE USERID OF THE ONE USER IS GIVEN INSTEAD OF "NNN USERS". 00407000
- * 00408000
- * 00409000
- * DMKLNK101W DASD YYY FORCED R/O; R/O BY NNN USERS 00410000
- * 00411000
- * DMKLNK102W DASD YYY FORCED R/O; R/W BY NNN USERS 00412000
- * 00413000
- * DMKLNK103W DASD YYY FORCED R/O; R/W BY NNN USERS; R/O BY NNN USERS 00414000
- * 00415000
- * DMKLNK104E USERID XXX NOT LINKED; R/O BY NNN USERS 00416000
- * 00417000
- * DMKLNK105E USERID XXX NOT LINKED; R/W BY NNN USERS 00418000
- * 00419000
- * DMKLNK106E USERID XXX NOT LINKED; R/W BY NNN USERS; R/O BY NNN USERS 00420000
- * 00421000
- * DMKLNK107E USERID XXX NOT LINKED; NOT IN CP DIRECTORY 00422000
- * 00423000
- * DMKLNK108E USERID XXX NOT LINKED; VOLID DSKLAB NOT MOUNTED 00424000
- * 00425000
- * DMKLNK109E USERID XXX NOT LINKED; INVALID LINK DEVICE 00426000
- * 00427000
- * DMKLNK111E USERID XXX NOT LINKED; NO READ PASSWORD 00428000
- * 00429000
- * DMKLNK112E USERID XXX NOT LINKED; NO WRITE PASSWORD 00430000
- * 00431000
- * DMKLNK113E USERID XXX NOT LINKED; NO MULT PASSWORD 00432000
- * 00433000
- * DMKLNK116E USERID XXX NOT LINKED; CP DIRECTORY IN USE 00434000
- * 00435000
- * DMKLNK119E USERID XXX NOT LINKED; INSUFFICIENT FREE STORAGE 00436000
- * 00437000
- * MESSAGES SENT TO SYSTEM OPERATOR: 00438000
- * 00439000
- * 'TYPE RADDR LOGON AS USERID USERS = NNN' 00440000
- * OR 00441000
- * 'TYPE RADDR RECONNECT USERID USERS = NNN' 00442000
- *. 00443000
- EJECT 00444000
- COPY OPTIONS 00445000
- COPY LOCAL 00446000
- SPACE 3 00447000
- DMKLOG CSECT 00448000
- SPACE 00449000
- DC CL8'DMKLOG' PAGEABLE MODULE IDENTIFIER @V200820 00450000
- SPACE 00451000
- * ENTRY DMKLOGON LOGON A USER 00452000
- * ENTRY DMKLOGOP LOGON THE OPERATOR 00453000
- EXTRN DMKLOHON DMKLOG EXTENSION @VMD0130 00454000
- SPACE 00455000
- EXTRN DMKSCH80,DMKSYSTI,DMKBLDEC @V2B4320 00456000
- EXTRN DMKSCHDL @V305535 00457000
- EXTRN DMKBLDVM @V305535 00458000
- EXTRN DMKSTKCP @V408246 00459000
- EXTRN DMKSSSL1,DMKSSSL2,DMKSSSL3 @V60B6B8 00460000
- EXTRN DMKDSPCH @V60B6B8 00461000
- EXTRN DMKSCNVS @VMI2009 00462000
- SPACE 00463000
- EXTRN DMKSCNAU,DMKSCNFD,DMKSCNRD,DMKSCNVD,DMKSCNRU,DMKSCNVU 00464000
- EXTRN DMKSCNVN,DMKCVTBD,DMKCVTBH,DMKCVTDT @VM08870 00465000
- EXTRN DMKBLDRT,DMKCFGII,DMKCQRFI,DMKERMSG,DMKEPSWD @V304635 00466000
- EXTRN DMKUDRFU,DMKUDRRD,DMKUDRRV,DMKVDSAT,DMKVDSDF @V200820 00467000
- EXTRN DMKUDRMD @V407466 00468000
- EXTRN DMKLNKSB,DMKSCHRT,DMKACON @V200820 00469000
- EXTRN DMKQCNSY @VA01731 00470000
- EXTRN DMKCPINT @VA02064 00471000
- EXTRN DMKCVTAB @VA04301 00472000
- EXTRN DMKFRERC @V407466 00473000
- EXTRN DMKSLC @VA07315 00474000
- EXTRN DMKSYSJR,DMKJRLLO @V60BBBB 00475000
- EXTRN DMKLOHRC RECONNECT DISC USER @VA13723 00475500
- SPACE 00476000
- USING PSA,R0 FOR ALL ENTRIES 00477000
- USING VMBLOK,R11 " 00478000
- USING DMKLOG,R12 " 00479000
- USING SAVEAREA,R13 " 00480000
- EJECT 00481000
- DMKLOGON RELOC LOGON A USER 00482000
- SR R2,R2 CLEAR SAVEWRK1 FLAG 00483000
- ST R2,SAVEWRK1 ... 00484000
- LOG00 DS 0H @V305535 00485000
- CALL DMKSCNFD PICK UP USERID FROM THE COMMAND LINE 00492000
- BNZ ERROR20 ERROR IF USERID MISSING 00493000
- CL R0,F8 WAS USERID > 8 BYTES IN LENGTH ? 00494000
- BH ERROR20 TUT-TUT. 00495000
- LA R2,SAVEWRK2 POINT TO SCRATCH AREA (BIG ENOUGH@V200820 00496000
- CALL DMKUDRFU FIND USERID IN CP DIRECTORY 00497000
- BNZ ERROR53 ERROR IF NOBODY EVER HEARD OF THIS GUY. 00498000
- USING UDIRBLOK,R2 REFERENCE USER DIRECTORY BLOCK FOR NOW 00499000
- CLC UDIRPASS(8),=C'NOLOG ' USER ALLOWED TO LOGON@V200820 00500000
- BE ERROR53 MAKE BELIEVE NOT THERE @V305535 00501000
- TM SAVEWRK1,AUTOLOG+PSWRDCK AUTOLOG COMMAND? @V60BBBB 00502000
- BNO LOG02 BR IF NOT @V60BBBB 00503000
- L R3,=A(DMKSYSJR) GET ADDRESS OF JPSCBLOK @V60BBBB 00504000
- USING JPSCBLOK,R3 TELL ASSEMBLER @V60BBBB 00505000
- TM MASKLOG,L'MASKLOG LOGON/AUTOLOG PSWD SUPPRESS? @V60BBBB 00506000
- BZ LOG02 BR IF NOT @V60BBBB 00507000
- DROP R3 @V60BBBB 00508000
- * R10 STILL POINTS AT VMBLOK OF COMMAND ISSUER. @V60BBBB 00509000
- TM VMOSTAT-VMBLOK(R10),VMCF CONSOLE FUNCTION? @V60BBBB 00510000
- BZ LOG02 BR IF NOT @V60BBBB 00511000
- TM VMOSTAT-VMBLOK(R10),VMVIRCF VIRT. CONS. FUNCT? @V60BBBB 00512000
- BZ LOG06F ASSUME FURTHER PARMS ARE FOR @V60BBBB 00513000
- * FIRST VM READ. @V60BBBB 00514000
- TM VMFSTAT-VMBLOK(R10),VMNPWOCL DOES VM WANT PASS- @V60BBBB 00515000
- * WORD SUPPRESSION? @V60BBBB 00516000
- BO LOG06F BR IF YES - READ PASSWORD @V60BBBB 00517000
- EJECT 00518000
- LOG02 EQU * SCAN COMMAND LINE FOR OPTIONS @V200820 00519000
- CALL DMKSCNFD LOOK FOR ANOTHER FIELD @V200820 00520000
- BNZ LOG06 IF NOT, PROCEED WITH THE MAIN BUSINESS. 00521000
- LR R15,R0 BYTE-COUNT LESS 1 INTO R15 (FOR 'EX' USE) 00522000
- BCTR R15,0 ... 00523000
- CL R15,F7 SHOULDN'T BE MORE THAN 7 NOW 00524000
- BH ERROR3 INVALID OPTION 00525000
- TM SAVEWRK1,AUTOLOG+PSWRDCK ALOGON COMMAND? @V305535 00526000
- BO LOG02B YES, MUST BE PASSWORD. @VM03066 00527000
- EX R15,CLCMASK IS IT 'MASK' ? 00528000
- BE LOG03 TRF IF YES. 00529000
- EX R15,CLCNOIPL OR 'NOIPL' ? 00530000
- BE LOG04 YES. 00531000
- L R3,=A(DMKSYSJR) GET ADDRESS OF JPSCBLOK @V60BBBB 00532000
- USING JPSCBLOK,R3 TELL ASSEMBLER @V60BBBB 00533000
- TM MASKLOG,L'MASKLOG LOGON PASSWORD SUPPRESS? @V60BBBB 00534000
- BZ LOG02B BR IF NOT @V60BBBB 00535000
- DROP R3 @V60BBBB 00536000
- B ERROR67 GO GIVE ERROR MESSAGE @V60BBBB 00537000
- LOG02B DS 0H @V305535 00538000
- TM SAVEWRK1,PSWRDOK PASSWORD ENTERED BEFORE ?? 00539000
- BO ERROR3 YES, NOT VALID AGAIN 00540000
- MVC SAVEWRK8(8),BLANKS BLANK-FILL AND 00541000
- EX R15,SAVEPASS SAVE THE PASSWORD 00542000
- CLC UDIRPASS,SAVEWRK8 CHECK PASSWORD RIGHT NOW (WHY NOT?) 00543000
- BNE LOG05 IF WRONG, MAKE HIM ENTER IT @V60BBBB 00544000
- * AS USUAL. @V60BBBB 00545000
- ST R10,SAVEWRK8 RE-SAVE AUTOLOG CMD VMBLOK ADDR @VM03066 00546000
- OI SAVEWRK1,PSWRDOK SIGNAL CORRECT PASSWORD AVAILABLE 00547000
- TM SAVEWRK1,AUTOLOG+PSWRDCK IS THIS AUTOLOG CMD? @VM03066 00548000
- BO LOG07 YES, CONT. WITH AUTOLOG PROCESS @VM03066 00549000
- B LOG02 NO, GO BACK FOR MORE OPERANDS @VM03066 00550000
- * 00551000
- LOG03 DS 0H OPTION IS 'MASK' - 00552000
- TM SAVEWRK1+1,INHIBIT MASK OPTION ENTERED ALREADY @V200820 00553000
- BO ERROR3 YES - ALLOW IT ONLY ONCE @V200820 00554000
- OI SAVEWRK1+1,INHIBIT 'MASK' WAS ENTERED @V200820 00555000
- L R8,VMTERM IF YES, REFERENCE TERMINAL RDEVBLOK 00556000
- USING RDEVBLOK,R8 ... 00557000
- CLI RDEVTYPC,CLASSPEC LOGON VIA THE 3705 NCP ? @V200820 00558000
- BE LOG03A YES - GO FIND THE NICBLOK @V200820 00559000
- CLI RDEVTYPC,CLASTERM TERMINAL-CLASS DEVICE ? @V200820 00560000
- BNE LOG02 LET MASK BE ENJOYED BY ALL @V60BBBB 00561000
- TM RDEVTYPE,TYPBSC IS THIS A BISYNC LINE @V2D3931 00562000
- BO LOG03A YES, ... @V2D3931 00563000
- OI RDEVSTA3,RDEVATSW PREVENT ATTN DURING SWITCH @VA10462 00563500
- SWITCH MAKE SURE WE'RE ON THE IO PROC @V4075A0 00564000
- NI RDEVSTA3,X'FF'-RDEVATSW ALLOW ATTN AFTER SWITCH @VA10462 00564500
- NI RDEVFLAG,255-RDEVPSUP FLAG TERMINAL: NO PRINT-SUPPRESS 00565000
- B LOG02 GET NEXT FIELD IF ANY 00566000
- LOG03A EQU * CHECK PRINT SUPPRESS FOR 3705 DEV@V200820 00567000
- LH R7,VMTRMID 370X NCP RESOURCE REFERENCE @V200820 00568000
- N R7,F4095 EXTRACT THE ACTUAL RESOURCE I.D. @V200820 00569000
- MH R7,=AL2(NICSIZE*8) CONVERT TO NICLIST INDEX @V200820 00570000
- AL R7,RDEVNICL GR7 = ADDRESS OF TERMINAL NICBLOK@V200820 00571000
- USING NICBLOK,R7 ... @V200820 00572000
- NI NICFLAG,255-NICPSUP TURN OFF PRINT SUPPRESS@V200820 00573000
- B LOG02 GO SCAN FOR ANY FURTHER OPTIONS @V200820 00574000
- SPACE 2 00575000
- LOG04 DS 0H OPTION IS 'NOIPL' - 00576000
- TM SAVEWRK1,NOIPL NOIPL GIVEN BEFORE ?? 00577000
- BO ERROR3 YES, CANT DO IT AGAIN 00578000
- OI SAVEWRK1,NOIPL SET FLAGBIT: NO AUTOMATIC IPL TODAY 00579000
- B LOG02 GET NEXT FIELD IF ANY 00580000
- LOG05 MVC SAVEWRK6(L'UDIRPASS),SAVEWRK8 SAVE INVALID @V60BBBB 00581000
- * PASSWORD FOR USE IF JOURNALING @V60BBBB 00582000
- * IS ON. @V60BBBB 00583000
- ST R10,SAVEWRK8 RE-SAVE AUTOLOG COMMAND VMBLOK @V60BBBB 00584000
- * ADDRESS. @V60BBBB 00585000
- SR R1,R1 SET CC=0 FOR ERROR50 @V60BBBB 00586000
- B ERROR50 PASSWORD INCORRECT 00587000
- SPACE 2 00588000
- LOG06 TM SAVEWRK1,PSWRDOK DO WE NEED TO CHECK A PASSWORD ? 00589000
- BO LOG07 TRF IF NOT - ALREADY PROVIDED & CORRECT. 00590000
- TM SAVEWRK1,AUTOLOG+PSWRDCK ALOGON COMMAND? @V305535 00591000
- BZ LOG06A NO, CALL FOR PASSWORD @V305535 00592000
- SR R0,R0 SET CC=0 FOR ERROR50 @VM03066 00593000
- MVC SAVEWRK6(L'UDIRPASS),BLANKS CLEAR AREA WHERE @V60BBBB 00594000
- * INVALID PASSWORD IS SAVED. @V60BBBB 00595000
- B ERROR50 BAD PASSWORD ERROR @V305535 00596000
- LOG06A DS 0H @V305535 00597000
- L R15,=A(DMKSYSJR) GET ADDRESS OF JPSCBLOK @V60BBBB 00598000
- USING JPSCBLOK,R15 TELL ASSEMBLER @V60BBBB 00599000
- TM MASKLOG,L'MASKLOG LOGON PASSWORD SUPPRESSION ON?@V60BBBB 00600000
- BZ LOG06F BR IF NOT @V60BBBB 00601000
- DROP R15 @V60BBBB 00602000
- TM SAVEWRK1+1,INHIBIT WAS 'MASK' REQUESTED? @V60BBBB 00603000
- BZ LOG03 MAKE IT LOOK LIKE IT WAS @V60BBBB 00604000
- LOG06F DS 0H @V60BBBB 00605000
- LR R9,R11 PRIME R9 @V60BBBB 00606000
- TM SAVEWRK1,AUTOLOG+PSWRDCK AUTOLOG COMMAND? @V60BBBB 00607000
- BNO LOG06H BR IF NOT @V60BBBB 00608000
- L R1,SAVEWRK8 PASS COMMAND ISSUER'S VMBLOK @VMI0045 00609000
- BAL R5,SWVM GO SWITCH VMBLOKS @VMI0045 00610000
- LOG06H LA R0,4 R0=4 MEANS GIVE 'ENTER PASSWORD' @V60BBBB 00611000
- * MESSAGE AND RETURN ANY INVALID @V60BBBB 00612000
- * PASSWORD IN R0/R1. @V60BBBB 00613000
- LA R1,UDIRPASS R1 POINTS TO THE CORRECT PASSWORD 00614000
- CALL DMKEPSWD ASK FOR PASSWORD NOW 00615000
- BALR R15,0 GET THE CONDITION CODE @VMI0070 00616000
- ST R15,SAVEWRK9 SAVE IT FOR LATER RESTORATION @VMI0070 00617000
- BZ LOG06J GO REMEMBER RC 0 @VMI0045 00618000
- STM R0,R1,SAVEWRK6 SAVE POSSIBLE INCORRECT PASSWORD @VMI0045 00619000
- LA R5,LOG06L SET BRANCH TO ERROR RTN - PWD IS @VMI0070 00620000
- * INCORRECT, OR TERMINAL IS NO GOOD. 00621000
- B LOG06K GO SEE IF SWITCH IS NEEDED @VMI0045 00622000
- SPACE 00623000
- LOG06J EQU * @VMI0045 00624000
- LA R5,LOG07 SET BRANCH TO PWD OK PROCESSING @VMI0045 00625000
- SPACE 00626000
- LOG06K EQU * SET UP AND GO SWITCHVM IF NEEDED @VMI0045 00627000
- TM SAVEWRK1,AUTOLOG+PSWRDCK AUTOLOG COMMAND? VMI0045 00628000
- BNOR R5 NO - GO TO PROPER ROUTINE @VMI0045 00629000
- LR R1,R9 PASS VMBLOK ADDRESS FOR SWITCHVM @VMI0045 00630000
- B SWVM GO DO VMBLOK SWITCH @VMI0045 00631000
- * BR R5 EXIT EXECUTED BY SWVM SUBROUTINE 00632000
- SPACE 1 @VMI0070 00633000
- LOG06L DS 0H @VMI0070 00634000
- L R15,SAVEWRK9 GET THE CC FROM DMKEPSWD @VMI0070 00635000
- SPM R15 RESTORE IT @VMI0070 00636000
- B ERROR50 GO PROCESS THE ERROR @VMI0070 00637000
- SPACE 00638000
- * 00639000
- * CONTINUE - USERID WAS FOUND, AND PASSWORD IS CORRECT: 00640000
- * 00641000
- LOG07 EQU * START BUILDING VIRTUAL MACHINE @V200820 00642000
- LA R0,UDBFSIZE*2+2 GET FREE STORAGE FOR TWO UDBFBLOKS 00643000
- CALL DMKFREE PLUS 2 EXTRA WORDS FOR USE BY DMKLNKSB 00644000
- LR R9,R1 REMEMBER THE ADDRESS IN R9. 00645000
- OI SAVEWRK1,R9FRE SIGNAL: RETURN FREE STORAGE AT EXIT. 00646000
- TM SAVEWRK1,AUTOLOG+PSWRDCK AUTOLOG CMD? @VA09172 00646100
- BNZ LOG070AA YES, BYPASS FOLLOWING CHECKS @VA09172 00646200
- CALL DMKQCNSY FINISH UP ALL CONSOLE REQUESTS @VA09172 00646300
- L R8,VMTERM GET TERMINAL RDEVBLOK ADDRESS @VA09172 00646400
- LTR R8,R8 TERMINAL STILL THERE? @VA09172 00646500
- BZ LOGEXIT NO, ABORT LOGON @VA09172 00646600
- LOG070AA DS 0H @VA09172 00646700
- LA R0,8 POINT TO 8-BYTE USERID 00647000
- LA R1,UDIRUSER ... 00648000
- CALL DMKSCNAU SEE IF THIS USERID IS ACTIVE 00649000
- BC 4,LOG10 CC 1 = NOT LOGGED ON AT ALL (GOOD) 00650000
- BC 1,ERROR54 CC 3 = IN LOGOFF STATE (TREAT AS ACTIVE) 00651000
- TM SAVEWRK1,AUTOLOG AUTOLOG COMMAND? @V305535 00652000
- BO ERROR54 YES, RETURN ERROR MESSAGE @V305535 00653000
- TM VMOSTAT-VMBLOK(R1),VMDISC IF ACTIVE, IS HE DISCONNECTED? 00654000
- BZ ERROR54 ERROR IF NOT - REALLY LOGGED IN ELSEWHERE 00655000
- TM VMOSTAT-VMBLOK(R1),VMCF ALREADY IN CONSOLE FUNC?@VA02849 00656000
- BZ LOG070A NO, CONTINUE NORMALLY @VA02849 00657000
- TM VMQSTAT-VMBLOK(R1),VMCFREAD DID HE HAVE READ UP?@VA02849 00658000
- BO LOG070A YES, CONTINUE NORMALLY @VA02849 00659000
- OI SAVEWRK1,EXECF REMEMBER HE WAS IN C.F. AT ENTRY @VA02849 00660000
- LOG070A EQU * @VA02849 00661000
- LTR R8,R8 Logon user's term avail?HRC065DK 00661020
- BZ LOG070A1 No, skip LDEV checks HRC065DK 00661040
- TM RDEVADD,RDEVLDEV Is user trying to HRC065DK 00661060
- BZ LOG070A1 logon via LDEV? No... HRC065DK 00661080
- PUSH USING HRC065DK 00661100
- USING LDEVBLOK,R8 HRC065DK 00661120
- C R1,LDEVUSER Is LDEV user trying to HRC065DK 00661140
- * connect to LDEV creator?HRC065DK 00661160
- BE ERROR66 Yes, this is not allowedHRC065DK 00661180
- POP USING LDEVBLOK HRC065DK 00661200
- LOG070A1 EQU * HRC065DK 00661220
- SPACE 1 00662000
- * TAKE NECESSARY STEPS TO RECONNECT A DISCONNECTED USER: 00663000
- NI VMSVSTAT,X'FF'-VMLGHOLD RESET HOLD FLAG HRC029DK 00663500
- OI SAVEWRK1,RECON FLAG PERFORMING A RECONNECT. 00664000
- LR R10,R1 "OLD" VMBLOK ADDRESS INTO R10 00665000
- EJECT 00666000
- * GET RID OF R11 VMBLOK IN FAVOR OF R10 (DISCONNECTED/OPERATOR) VMBLOK: 00667000
- * NOTE - WE KNOW THERE ARE AT LEAST 2 VMBLOKS (R10 & R11) IN THE CHAIN 00668000
- LOG07A DS 0H @VA13723 00669000
- L R2,SAVEWRK1 LOAD STATUS BITS FOR DMKLOHRC @VA13723 00679000
- LR R1,R10 ADDR OF DISCONNECTED VMBLOK @VA13723 00689000
- CALL DMKLOHRC GO RECONNECT THE USER @VA13723 00699000
- ST R11,SAVER11 PASS RETURNED VMBLOK TO CALLER @VA13723 00709000
- B *+4(R1) BRANCH ON RETURN CODE @VA13723 00719000
- B LOG50 RC=0, CONTINUE RECONNECT @VA13723 00729000
- B LOGEXIT RC=4, TERMINAL GONE, ABORT @VA13723 00739000
- B 0(R6) RC=8, OPERATOR IS LOGGING ON @VA13723 00749000
- DROP R7,R8 @VA13723 00759000
- EJECT 00781000
- * USERID IN DIRECTORY, PASSWORD CORRECT, & NOT LOGGED ON ELSEWHERE: 00782000
- LOG10 DS 0H @V408246 00783000
- TM SAVEWRK1,AUTOLOG AUTO LOGON? @V408246 00784000
- BZ B1 NO @V408246 00785000
- TM SAVEWRK1,PSWRDCK ALOGON COMMAND? @V408246 00786000
- BZ LOG10A NO, MUST BE OPERATOR LOG @V408246 00787000
- B1 EQU * @V408246 00788000
- L R10,ASYSOP A(OPERATOR VMBLOK) HRC018DK 00788100
- CLR R10,R11 SAME AS THIS ONE? HRC018DK 00788200
- BE LOG10A YES,ALWAYS ALLOW HIM ON HRC018DK 00788300
- L R1,ASYSLC IF NOT, REFERENCE SYSLOCS INFORMATION 00789000
- USING SYSLOCS,R1 ... 00790000
- LM R14,R15,DMKSYSNM GET NO. USERS & NO. ALLOWED ON 00791000
- LTR R15,R15 0 MEANS NO LIMIT 00792000
- BZ LOG10A ... 00793000
- CLR R14,R15 OTHERWISE, CHECK AGAINST LIMIT 00794000
- BNL ERROR51 ERROR IF MAXIMUM USERS EXCEEDED 00795000
- DROP R1 00796000
- LOG10A MVC VMUSER,UDIRUSER CORRECT USERID TO VMBLOK NOW, COACH. 00797000
- MC 4,1 TELL MONITOR ABOUT NEW USER @V4075A0 00798000
- USING UDBFBLOK,R9 ACCESS THE UDBFBLOK NOW 00799000
- LOG11 MVC UDBFVADD(8),ZEROES CLEAR LAST DBL-WORD FOR UDR ROUTINES 00800000
- DROP R9 00801000
- LA R1,UDIRDISP POINT TO INFO. FROM PREVIOUS UDRFU CALL 00802000
- LR R2,R9 R2 POINTING TO FREE STORAGE BLOCK 00803000
- DROP R2 (UDIRBLOK ADDRESSABILITY GONE NOW) 00804000
- CALL DMKUDRMD READ IN UMACBLOK @V407466 00805000
- BNZ ERROR52 FATAL TROUBLE IF ERROR - CAN'T LOG ON 00806000
- USING UMACBLOK,R9 00807000
- TM UMACAFF,UMACFFON IS AFFINITY SPECIFIED? @V4075A0 00808000
- BZ NOAFF @V4075A0 00809000
- CLC UMACAFF,LPUADDR+1 FOR OUR PROCESSOR? @V4075A0 00810000
- BNE AFFOTH @V4075A0 00811000
- TM APSTAT1,APUOPER ARE WE IN AP MODE? @V4075A0 00812000
- BO SETAFF YES, SET AFFINITY @V4075A0 00813000
- B LOGMS189 WE HAVE IT, BUT WE'RE IN UP MODE @V4075A0 00814000
- AFFOTH TM APSTAT1,APUOPER ANY OTHER PROCESSORS? @V4075A0 00815000
- BZ LOGMS188 NOT AP + WE DON'T HAVE IT @V4075A0 00816000
- CLC UMACAFF,LPUADDRX+1 IS IT OTHER PROCESSOR ? @V4075A0 00817000
- BNE LOGMS188 NO, WE JUST DON'T HAVE IT @V4075A0 00818000
- SETAFF MVC VMAFF,UMACAFF AP + WE HAVE IT! @V4075A0 00819000
- NOAFF EQU * @V4075A0 00820000
- SPACE 1 @V4075A0 00821000
- ICM R15,B'0011',=XL2'320A' HRC101DK 00821300
- STH R15,VMMORETM SET DEFAULT TIMES FOR CRT HRC101DK 00821600
- L R15,UMACLEND THE FOUR TERMINAL CODES INTO R15 00822000
- CLI UMACLEND,X'FF' IS LINE-END DEFAULT ? 00823000
- BE *+8 IF YES, LEAVE IT. 00824000
- STCM R15,B'1000',VMTLEND SET LINE END CHARACTER @V200820 00825000
- CLI UMACLDEL,X'FF' IS LINE-DELETE DEFAULT ? 00826000
- BE *+8 IF YES, LEAVE IT. 00827000
- STCM R15,B'0100',VMTLDEL SET LINE DELETE CHARACT@V200820 00828000
- CLI UMACCDEL,X'FF' IS CHARACTER-DELETE DEFAULT ? 00829000
- BE *+8 IF YES, LEAVE IT. 00830000
- STCM R15,B'0010',VMTCDEL SET CHARACTER DELETE @V200820 00831000
- CLI UMACES,X'FF' IS ESCAPE-CHARACTER DEFAULT ? 00832000
- BE *+8 IF YES, LEAVE IT. 00833000
- STC R15,VMTESCP SET ESCAPE CHARACTER @V200820 00834000
- TM VMOSTAT,VMDISC VMBLOK DISCONNECTED? @V408246 00835000
- BO LOG11B YES, NO REAL TERMINAL DEVICE @V408246 00836000
- * BLOCK 00837000
- SPACE 2 00838000
- TM UMACCLEV,UMACCLA CLASS A = SYSTEM OPERATOR CLASS ? 00839000
- BZ LOG11B TRF IF NOT, PROCEED AS USUAL. 00840000
- L R10,ASYSOP IF YES, ACCESS OPERATOR'S VMBLOK, 00841000
- CLR R10,R11 SAME AS THE ONE WE ARE HANDLING ? 00842000
- BE LOG11A TRF IF YES, PROCEED AS USUAL. 00843000
- L R1,VMTERM-VMBLOK(,R10) NO, CHECK OPERATOR'S TERMINAL 00844000
- LTR R1,R1 IF IT'S THERE, HE'S ALREADY IN BUSINESS 00845000
- BNZ LOG11B TRF IF HE HAS ONE - PROCEED AS USUAL. 00846000
- TM VMOSTAT-VMBLOK(R10),VMDISC IS THE OPERATOR DISCONNECT 00847000
- BO LOG11B YES -- LEAVE WELL ENOUGH ALONE 00848000
- MVC VMUSER-VMBLOK(8,R10),VMUSER MAKE SURE USERID FILLED IN 00849000
- MVC VMTLEND-VMBLOK(4,R10),VMTLEND FILL IN TERM CODE @VA01886 00850000
- L R7,VMPNT GET PNTR TO NEXT VMBLOK FROM R11 VMBLOK 00851000
- ST R10,VMPNT PATCH CHAIN TO INCLUDE OPERATOR'S VMBLOK 00852000
- ST R7,VMPNT-VMBLOK(,R10) AND ... 00853000
- * USER FROM RECONNECTING 00854400
- CALL DMKQCNSY FINISH UP ALL CONSOLE REQUESTS @VA09172 00854500
- BAL R6,LOG07A CONTINUE CONNECT PROCESSING @VA13723 00854600
- TM SAVEWRK1,AUTOLOG+PSWRDCK AUTOLOG CMD? @VA05283 00855000
- BNO LOG11A NO--CONTINUE @VA05283 00856000
- OI VMOSTAT,VMDISC SHOULD BE DISCONNECTED @VA05283 00857000
- LOG11A DS 0H @V305535 00858000
- * CONTINUE HANDLING UMACBLOK: 00859000
- LOG11B MVC VMCLEVEL(1),UMACCLEV SAVE COMMAND LEVEL, 00860000
- MVC VMHRCPRV,UMACCLEV SAVE FOR SET PRIV FUNCTION HRC018DK 00860100
- MVC VMUPRIOR(1),UMACPRIR SET USER PRIORITY @V200820 00861000
- TM UMACOPT,UMACISAM ISAM CCW CHECKING OPTION ? 00862000
- BZ *+8 NOPE. 00863000
- OI VMPSTAT,VMISAM YES, SET FLAGBIT IN VMBLOK 00864000
- TM UMACOPT,UMACBMX VIRTUAL BLOCK MULTIPLEXER @VA01771 00865000
- * CHANNELS 00866000
- BZ *+8 NO - @VA01771 00867000
- OI VMFSTAT,VMFBMX YES - SET FLAG BIT IN VMBLOK @VA01771 00868000
- TM UMACOPT2,UMADLNKN LINK NO PASS OPTION ON ? HRC011DK 00868200
- BZ *+8 NO - HRC011DK 00868400
- OI VMFSTAT,VMFDLNKN YES,SET FLAG BIT IN VMBLOK HRC011DK 00868600
- TM UMACOPT,UMACVROP VIRT=REAL OPTION 00869000
- BZ LOG12 NOPE. 00870000
- OI VMPSTAT,VMREAL YES, SET FLAGBIT IN VMBLOK 00871000
- LOG12 EQU * 00872000
- XC VMPERCTL(4),VMPERCTL CLEAR PER BLOCK POINTER PER001 00872100
- MVI VMPERFLG,X'00' CLEAR PER FLAGS PER001 00872200
- TM UMACOPT,UMACACC IS THE ACCOUNTING OPTION ON ? 00873000
- BZ LOG12A NO, GO CHECK FOR EXTENDED MODE 00874000
- OI VMPSTAT,VMACCOUN SET THE ACCOUNTING FLAG IN THE VMBLOK 00875000
- XC VMACOUNT(4),VMACOUNT CLEAR THE ACCOUNTING BLOCK PTR. 00876000
- LOG12A EQU * 00877000
- TM UMACOPT,UMACECOP EXTENDED CONTROL MODE OPTION ? 00878000
- BZ LOG13 NO, DON'T ALLOCATE ECBLOK 00879000
- CALL DMKBLDEC BUILD AND INITIALIZE AN ECBLOK @V2B4320 00880000
- B LOG14 CONTINUE 00881000
- LOG13 EQU * NOT EC-MODE MACHINE 00882000
- LA R1,X'E0' RESET VALUE FOR C-REG 0 00883000
- ST R1,VMVCR0 SET IN VMBLOK 00884000
- LOG14 MVI VMTLEVEL,VMTON DEFAULT TO: VIRTUAL TIMER RUNNING 00885000
- TM UMACOPT,UMACNSVC SVCOFF OPTION? @VM08550 00886000
- BO LOG14C YES, BRANCH @VM08550 00887000
- OI VMESTAT,VMMICSVC INDICATE VM ASSIST DO SVCS @VM08550 00888000
- LOG14C EQU * @VM08550 00889000
- TM UMACOPT,UMACRT REAL TIMER OPTION? @VM08550 00890000
- BZ LOG15 NOPE. 00891000
- MVI VMTLEVEL,VMRON YES, FLAG VIRTUAL REAL TIMER RUNNING 00892000
- LA R0,TRQBSIZE GET SIZE OF TRQBLOK 00893000
- CALL DMKFREE AND GET ONE 00894000
- ST R1,VMTRQBLK FOR THE REAL TIMER 00895000
- USING TRQBLOK,R1 00896000
- XC TRQBLOK(TRQBSIZE*8),TRQBLOK CLEAR IT 00897000
- ST R11,TRQBUSER SET UP USER'S ADDRESS 00898000
- MVC TRQBIRA,=A(DMKSCH80) IRA FOR REAL TIMER 00899000
- DROP R1 00900000
- LOG15 MVC VMACNT,UMACACCT SAVE ACCOUNTING INFORMATION 00901000
- MVC VMDIST,UMACDIST SAVE DISTRIBUTION CODE 00902000
- LOG15B TM UMACOPT2,UMACCPU CPUID PRESENT IN UMACBLOK? @V407466 00903000
- BZ PSACPUID NO, GET CPU SERIAL FROM PSA @V407466 00904000
- MVC VMCPUID,UMACPUID MOVE CPUID TO VMBLOK @V407466 00905000
- NAMESYS MVC SAVEWRK2(8),UMACIPL SAVE NAME OF SYS TO BE IPL'D@V407466 00906000
- CLC SAVEWRK2(8),BLANKS IS IT ALL BLANK ? 00907000
- BNE LOG16 NOPE - SOMETHING THERE. 00908000
- OI SAVEWRK1,NOIPL FORCE 'NOIPL' IF IT WAS ALL BLANK. 00909000
- TM SAVEWRK1,AUTOLOG+PSWRDCK AUTOLOG COMMAND? @VM03066 00910000
- BNO LOG16 NOPE, VANILLA OR SYS OP FROM CPI @VM03066 00911000
- LA R0,8+12 LENGTH OF SUBSTITUTABLE DATA @VM03066 00912000
- LA R1,MSG059A POINT TO START OF ERRTEXT @VA05368 00913000
- MVC MSG059A(8),VMUSER INSERT USERID @VA05368 00914000
- LR R2,R9 POINT R2 AT VIRT PAGE FOR UDR @VA08817 00915000
- CALL DMKUDRRV GIVE IT BACK @VA08817 00916000
- B ERROR59 GO PROCESS THE MESSAGE @VM03066 00917000
- PSACPUID MVC VMCPUID,CPUID+1 MOVE CPUID SERIAL FROM PSA @V407466 00918000
- TM APSTAT1,PROCIO DID WE GET THE IOP'S CPUID? @V4075A0 00919000
- BO NAMESYS YES @V4075A0 00920000
- L R1,PREFIXB FIND THE IOP'S PSA @V4075A0 00921000
- MVC VMCPUID,CPUID+1-PSA(R1) TO PICK UP ITS CPUID @V4075A0 00922000
- B NAMESYS CK FOR 'NAMED SYSTEM' TO BE IPL'D@V407466 00923000
- LOG18 C R0,=F'512' MORE THAN 512 DW REQUESTED? @V407466 00924000
- BNH ERROR131 NO, ISSUE DMKLOG131E MESSAGE @V407466 00925000
- * TRY TO REACQUIRE STORAGE THIS TIME REQUESTING ONLY 1 PAGE 00926000
- * OF STORAGE (512 DW.) 00927000
- LA R0,CON512 512 DOUBLEWORDS @V407466 00928000
- B ACQUIREF GO CALL DMKFRERC @V60B6B8 00929000
- LOG16 L R1,UMACCORE PICK UP CORE SIZE 00930000
- ST R1,VMSIZE STORE IN VMBLOK 00931000
- ST R1,VMSTOR ALSO SAVE HERE @V304635 00932000
- SRL R1,12 BEGIN/ENDING STORAGE SIZE @V304635 00933000
- BCTR R1,R0 MINUS 1 PAGE @V304635 00934000
- LA R2,NEWSEGS+VRALOC BLD PARMS @V408246 00935000
- TM VMPSTAT,VMREAL V=R VMBLOK? @V408246 00936000
- BZ *+8 NO @V408246 00937000
- LA R2,NEWPAGES(,R2) YES, BUILD ALL TABLES @V408246 00938000
- CALL DMKBLDRT @V408246 00939000
- * MAKE UP A DEVICE TABLE OF DUMMY (UNUSED) DEVICE BLOCKS: 00940000
- LH R3,UMACDVCT DEVICE-COUNT INTO R3 (FROM UMACBLOK) 00941000
- STH R3,VMDVCNT STORE IN VMBLOK 00942000
- L R4,FFS FFFFFFFF INTO R4 00943000
- LA R1,VDEVSIZE SIZE OF ONE VDEVBLOK (DBL WORDS) INTO R1 00944000
- MR R0,R3 R1 (SIC) TIMES R3 INTO R0-R1 00945000
- LR R0,R1 NO. DBL WORDS FOR VDEVBLOK TABLE INTO R0 00946000
- ACQUIREF CALL DMKFRERC ACQUIRE STORAGE @V60B6B8 00947000
- BNZ LOG18 INSUFFICIENT FREE STORAGE @V407466 00948000
- ST R1,VMDVSTRT STORE TABLE ADDRESS IN VMBLOK 00949000
- USING VDEVBLOK,R1 00950000
- LA R0,VDEVSIZE*8 SIZE OF ONE VDEVBLOK IN BYTES INTO R0 00951000
- LOG17 STH R4,VDEVADD SET ADDRESS HALFWORD TO FFFF. 00952000
- ALR R1,R0 BUMP R1 TO NEXT BLOCK 00953000
- BCT R3,LOG17 ITERATE THRU VDEVBLOKS IN TABLE. 00954000
- DROP R1 00955000
- * MAKE UP A CONTROL UNIT TABLE OF DUMMY (UNUSED) VCUBLOKS: 00956000
- LA R3,3 DEFAULT TO THREE VCUBLOKS 00957000
- STH R3,VMCUCNT STORE IN VMBLOK 00958000
- LA R0,VCUSIZE*3 GET A TABLE OF THREE VCUBLOKS 00959000
- CALL DMKFRERC ACQUIRE FREE STORAGE @V407466 00960000
- BNZ ERROR131 NOT OBTAINED, ISSUE DMKLOG131E @V407466 00961000
- ST R1,VMCUSTRT STORE TABLE ADDRESS IN VMBLOK 00962000
- USING VCUBLOK,R1 00963000
- STH R4,VCUADD SET ADDRESS HALFWORDS TO FFFF 00964000
- STH R4,VCUADD+(VCUSIZE*8) ... 00965000
- STH R4,VCUADD+(VCUSIZE*16) ... 00966000
- DROP R1 00967000
- * MAKE UP A CHANNEL TABLE OF DUMMY (UNUSED) VCHBLOKS: 00968000
- LA R3,2 DEFAULT TO TWO VCHBLOKS 00969000
- STH R3,VMCHCNT STORE IN VMBLOK 00970000
- LA R0,VCHSIZE*2 GET A TABLE OF TWO VCHBLOKS 00971000
- CALL DMKFRERC ACQUIRE FREE STORAGE @V407466 00972000
- BNZ ERROR131 NOT OBTAINED, ISSUE DMKLOG131E @V407466 00973000
- ST R1,VMCHSTRT STORE TABLE ADDRESS IN VMBLOK 00974000
- USING VCHBLOK,R1 00975000
- STH R4,VCHADD SET ADDRESS HALFWORDS TO FFFF 00976000
- STH R4,VCHADD+(VCHSIZE*8) ... 00977000
- DROP R1 00978000
- DROP R9 THRU WITH UMACBLOK 00979000
- * CONTINUE ... 00980000
- EJECT 00981000
- USING UDEVBLOK,R9 USE UDEVBLOK FROM NOW ON: 00982000
- LA R10,UDBFSIZE*8(,R9) LET R10 POINT TO 'EXTRA' UDBFBLOK 00983000
- * (NOTE - R10 AREA ALSO USED FOR FILLED-IN MESSAGES) 00984000
- * 00985000
- * READ UDEVBLOKS, AND FILL IN ALL NECESSARY INFORMATION: 00986000
- * 00987000
- LOG20 LA R1,UDEVDISP R1 POINTS TO DISPLACEMENT OF NEXT BLOCK 00988000
- LR R2,R9 R2 POINTS TO UDEVBLOK TO BE READ 00989000
- CALL DMKUDRRD READ IN NEXT UDEVBLOK 00990000
- BNZ LOG49 STOP READING IF "EOF" (CC NOT ZERO) 00991000
- OI SAVEWRK1,NONFATAL OK - ANY ERRORS NONFATAL FROM NOW ON 00992000
- OI VMSPMFLG,VMLOGON2 INDICATE VDEV GOTTEN ON LOGON @VA13304 00992500
- LH R3,UDEVADD VIRTUAL DEVICE ADDRESS INTO R3 00993000
- LR R1,R3 VIRTUAL DEVICE INTO R1, 00994000
- CALL DMKSCNVU SEE IF WE ALREADY HAVE IT 00995000
- BZ ERROR92 SUCCESS FROM DMKSCNVU = REALLY FAILURE 00996000
- TM UDEVSTAT,UDEVLONG+UDEVLKDV FULL-SIZE OR LINKED-TO DASD ? 00997000
- BNZ LOG26 TRF IF YES (EITHER ONE). 00998000
- SPACE 00999000
- * INITIALIZE APPROPRIATELY FOR NON-DASD DEVICE: 01000000
- * 01001000
- TM UDEVSTAT,UDEVDED IS THIS A 'DEDICATED' DEVICE ? 01002000
- BO LOG24 YES. 01003000
- CLI UDEVTYPC,CLASTERM TERM TYPE ?? 01004000
- BNE LOG21 NO, CONT 01005000
- CLI UDEVTYPE,TYP1052 IS IT A CONSOLE ?? 01006000
- BNE LOG21 NO, CONT 01007000
- LH R8,VMVTERM VIRTUAL CONSOLE REFERENCE @V200820 01008000
- LTR R8,R8 IS THERE ALREADY A CONSOLE ? @V200820 01009000
- BM LOG21 NO -- O.K. TO DEFINE ONE @V200820 01010000
- AL R8,VMDVSTRT GET THE VDEVBLOK ADDRESS @V200820 01011000
- CALL DMKSCNVD GET VADDR CCU FORM FOR MESSAGE @VA04098 01012000
- LOG20A MVC 0(12,R10),ZEROES CLEAR OUT 12 BYTE ERR MSG AREA @VA04098 01013000
- CALL DMKCVTBH CONVERT VADDR FROM BINARY TO HEX @VA04098 01014000
- STCM R1,7,9(R10) STORE IN ERROR MSG AREA 01015000
- LR R1,R3 NOW GET THE "OTHER" VADDR 01016000
- CALL DMKCVTBH BINARY TO HEX, AND GO 01017000
- B ERROR92J FILL IN REMAINING FIELDS FOR ERROR 92. 01018000
- LOG21 DS 0H 01019000
- CALL DMKVDSDF DMKVDSDF 'DEFINES' ALL OTHER DEVICES 01020000
- BZ LOG20 IF SUCCESSFUL, GO HANDLE NEXT DEVICE. 01021000
- * ERROR FROM DMKVDSDF: 01022000
- CH R2,=H'32' INSUFFICIENT FREE STORAGE @V407466 01023000
- BE ERROR95 YES, MSG DMKLOG095E @V407466 01024000
- TM UDEVSTAT,UDEVTDSK WAS IT A T-DISK WE DIDN'T GET ? 01025000
- BO ERROR91 YES - ERROR 91. 01026000
- B ERROR93 NO - ERROR 93 (ALL OTHERS). 01027000
- SPACE 01028000
- LOG24 DS 0H ATTACH A DEDICATED DEVICE: 01029000
- LH R1,UDEVLINK GET REAL DEV ADDRESS 01030000
- XC SAVEWRK9,SAVEWRK9 CLEAR A FLAG FIELD @VA11344 01030500
- * 01031000
- * TEST THE VARIOUS COMBINATIONS THAT INDICATE THAT 01032000
- * MSS ACTIVITY MAY BE REQUIRED. IF SO, CALL THE 01033000
- * APPROPRIATE ENTRY POINT IN DMKSSS. 01034000
- * 01035000
- LTR R1,R1 WAS AN 'RADDR' SPECIFIED @V60B6B8 01039000
- BM NORADDR NO, CHECK FOR VOLSER @VA11411 01040010
- CLI UDEVVSER,BLANK IS THERE AN 'RADDR' AND 'VOLSER' @V60B6B8 01041000
- BE LOGDEV 'RADDR',NO VOLSER @VA10511 01042000
- TM UDEVFTR,VIRTUAL VIRTUAL MACHINE WANTS VUA @VA10511 01042500
- BO CALLMSSA CALL DMKSSSL1 @VA10511 01043000
- B CALLMSSB CALL DMKSSSL2 @VA10511 01043500
- NORADDR EQU * NO RADDR GIVEN @VA10511 01044000
- TM UDEVFTR,VIRTUAL VIRTUAL MACHINE WANTS VUA @VA10511 01044500
- BO ERROR93 DIRECTORY ERROR @VA10511 01045000
- CLI UDEVVSER,BLANK IS 'VOLSER' FIELD BLANK? @V60B6B8 01046000
- BNE FINDVOL NO, LOOK FOR MOUNTED VOLUME @V60B6B8 01047000
- B ERROR93 DIRECTORY ERROR, @V60B6B8 01048000
- FINDVOL EQU * TRY TO FIND MOUNTED VOLUME @V60B6B8 01049000
- L R5,ARIODV LOAD 1ST RDEVBLOK ADDRESS @VA04098 01050000
- L R14,ARIODC LOAD RDEVBLOK COUNT ADDRESS @VM08870 01051000
- LH R14,0(,R14) LOAD COUNT OF REAL DEVICE BLOCKS @VM08870 01052000
- USING RDEVBLOK,R5 ADDRESS THE RDEVBLOK @VA04098 01053000
- VOLSERLP TM RDEVSTAT,RDEVDISA+RDEVDED OFFLINE OR DEDICATED ?@VM08870 01054000
- BNZ NXTRBLOK YES - CHECK NEXT @VM08870 01055000
- TM RDEVFLAG,RDEVSYS+RDEVOWN SYSTEM OR SYSOWNED ? @VM08870 01056000
- BNZ NXTRBLOK YES - CHECK NEXT @VM08870 01057000
- CLC RDEVSER,UDEVVSER DO THE SERIAL NUMBERS MATCH ? @VM08870 01058000
- BE CHK3330V YES, TO CHECK FOR 3330V @V60B6B8 01059000
- NXTRBLOK LA R5,RDEVSIZE*8(,R5) POINT TO NEXT RDEVBLOK @VA04098 01060000
- BCT R14,VOLSERLP LOOP IF MORE BLOCKS @VM08870 01061000
- B CALLMSSC SEE IF WE CAN MOUNT A 3330V @V60B6B8 01062000
- LOGDEV CALL DMKSCNRU FIND REAL DEV BLOK 01063000
- BNZ ERROR90 GIVE ERROR MESSAGE IF NOT FOUND. 01064000
- LR R5,R8 GET RDEVBLOK ADDR INTO R5 @VA11344 01064100
- TM RDEVFTR,VIRTUAL THIS AN MSS VIRTUAL VUA? @VA11344 01064200
- BZ CHK3330V NO - THEN DON'T TURN OFF FLAG @VA11344 01064300
- L R5,F4 PUT 'TURN OFF MTD-BY-CP FLAG' @VA11344 01064400
- ST R5,SAVEWRK9 INDICATOR INTO FLAG FIELD @VA11344 01064500
- LR R5,R8 RDEVBLOK ADDR TO R5 @VA04098 01065000
- CHK3330V EQU * RDEVBLOK FOUND, IS IT 3330V @V60B6B8 01066000
- CLC RDEVTYPC(2),=AL1(CLASDASD,TYP3330) IS IT 3330 @V60B6B8 01067000
- BNE CHK05 NO, NO FURTHER TESTING @V60B6B8 01068000
- CLI UDEVVSER,BLANK WAS A VOLSER SPECIFIED @V60B6B8 01069000
- BNE TSTDED YES @V60B6B8 01070000
- TM RDEVFTR,SYSVIRT IS IT SYSVIRT @V60B6B8 01071000
- BO ERROR93 YES, ERROR, CAN NOT DEDICATE @V60B6B8 01072000
- TM RDEVFTR,VIRTUAL USER VIRTUAL? @V60B6B8 01073000
- BZ CHK05 NO, PLAIN 3330 @V60B6B8 01074000
- TSTDED EQU * @V60B6B8 01075000
- TM RDEVSTAT,RDEVDISA+RDEVDED OFFLINE, DEDICATED? @V60B6B8 01076000
- BNZ ERROR90 YES, THIS USER CAN'T HAVE @V60B6B8 01077000
- B SETVDS GO DO THE ATTACH @V60B6B8 01078000
- CHK05 CLC RDEVTYPC(2),=AL1(CLASDASD,TYP2305) IS IT A 2305 @VA04098 01079000
- BNE SETVDS NO, GO DIRECTLY TO DMKVDS @VA04098 01080000
- TM UDEVADD+1,X'07' IS VIRT ADDR A BASE ADDR? @VA04098 01081000
- BNZ ERROR93 NO, SOMEBODY GOOFED IN DIRECTORY @VA04098 01082000
- TM RDEVADD+1,X'07' IS REAL ADDR A BASE ADDR? @VA04098 01083000
- BNZ ERROR93 NOPE, ALSO DIRECTORY ERROR @VA04098 01084000
- LH R1,UDEVADD GET BASE ADDRESS @VA04098 01085000
- LA R4,8 LOOP COUNT FOR ALL 8 EXPOSURES @VA04098 01086000
- PRESCAN CALL DMKSCNVU CHECK FOR EXISTANCE OF ALL 8 EXPS@VA04098 01087000
- BZ LOG20A BAD NEWS, GO SET UP ERROR MSG @VA04098 01088000
- NXTADD LA R1,1(R1) INCREMENT TO NEXT EXPOSURE @VA04098 01089000
- BCT R4,PRESCAN KEEP LOOKING. @VA04098 01090000
- SETVDS DS 0H @VA11344 01091000
- CLC SAVEWRK9(4),F4 WE NEED TO TURN OFF 'MTD-BY-CP'? @VA11344 01091100
- BNE SETVDS1 NO - THEN DON'T DO IT! @VA11344 01091200
- NI RDEVFLAG,X'FF'-RDEVVMNT ELSE TURN IT OFF @VA11344 01091300
- SETVDS1 DS 0H @VA11344 01091400
- LR R1,R5 BASE RDEVBLOK TO R1 FOR VDS @VA11344 01091500
- DROP R5 NO MORE RDEVBLOK @VA04098 01092000
- SPACE 01093000
- LOGATT CALL DMKVDSAT ATTACH DEVICE 01094000
- BNZ NOCHEK NO NEED TO CHECK @VA11558 01095100
- TM UDEVFTR,VIRTUAL IS 3330V PARM NEEDED @VA11558 01095175
- BNO LOG20 NO @VA11558 01095250
- LH R1,UDEVADD GET VIRTUAL DEVICE ADDRESS @VA11558 01095325
- CALL DMKSCNVU @VA11558 01095400
- OI VDEVFLG2-VDEVBLOK(R8),VDEVVIRT CYL FAULT TO USER@VA11558 01095475
- OI RDEVFLAG-RDEVBLOK(R5),RDEV333V DED AS 3330V @VA11558 01095550
- B LOG20 GET NEXT DEVICE @VA11558 01095625
- NOCHEK EQU * @VA11558 01095700
- CH R2,=H'32' INSUFFICIENT FREE STORAGE @V407466 01096000
- BE ERROR95 YES, MSG DMKLOG095E @V407466 01097000
- B ERROR90 ERROR IF ATTEMPTED ATTACH FAILED. 01098000
- SPACE 01099000
- * FULL-SIZE BLOCK OR LINKED-TO DEVICE MEANS IT'S A DASD DEVICE: 01100000
- * 01101000
- LOG26 DS 0H 01102000
- LA R7,VMUSER LET R7 POINT TO MY USERID NAME 01103000
- IC R5,UDEVMODE PICK UP BYTE CONTAINING THE LINK-MODE 01104000
- LA R15,31 SET TO ISOLATE THE LOW-ORDER 5 BITS 01105000
- NR R5,R15 GET THE LINK-MODE NO. (0, 4, 8, ETC.) 01106000
- LR R2,R3 R2 = R3 = LINK-TO = LINK-AS DEVICE 01107000
- TM UDEVSTAT,UDEVLKDV IS THIS AN 'INDIRECT LINK' 01108000
- BZ LOG30 IF NOT, ALL INFO IS OK AS IS. 01109000
- LH R2,UDEVLINK IF YES, LINK-TO DEVICE INTO R2, 01110000
- LA R7,UDEVLKID AND LET R7 POINT TO OWNER'S USERID 01111000
- LOG30 MVC 0(UDEVSIZE*8,R10),0(R9) MOVE UDEVBLOK TO ALTERNATE AREA 01112000
- DROP R9 01113000
- LM R0,R1,0(R7) USERID OF DISK-OWNER INTO R0-R1, 01114000
- * LINK-TO DEVICE ALREADY IN R2 01115000
- * LINK-AS DEVICE ALREADY IN R3, 01116000
- LR R4,R10 UDEVBLOK ADDRESS INTO R4, 01117000
- * DESIRED LINK-MODE INDEXER ALREADY IN R5, 01118000
- CALL DMKLNKSB CALL "LINK SUBROUTINE" TO DO THE WORK 01119000
- B LOG20 NOW GO GET THE NEXT DEVICE (IF ANY). 01120000
- EJECT 01121000
- * 01122000
- * THE FOLLOWING ROUTINES ARE CALLED IF THERE IS A 01123000
- * POSSIBILITY THAT MSS ACTIVITY IS REQUIRED. 01124000
- * 01125000
- * CALLMSSA: THE UDEVBLOK INDICATES THAT THE 'VADDR' 01126000
- * IS TO BE A 3330V. CALL DMKSSS TO PROCESS THE 01127000
- * OTHER PARAMETERS. IF AN ERROR ON RETURN, 01128000
- * ISSUE MSG 090, ELSE GET NEXT DEVICE. 01129000
- * 01130000
- * CALLMSSB: THE 'RADDR' AND 'VOLSER' WERE BOTH 01131000
- * SPECIFIED. THIS HAS TO BE AN MSS REQUEST. 01132000
- * CALL DMKSSS. 01133000
- * 01134000
- * CALLMSSC: THE 'VOLSER' WAS SPECIFIED BUT NO 'RADDR'. 01135000
- * THE VOLSER IS NOT MOUNTED. TEST TO SEE IF 01136000
- * IT IS AN MSS VOLUME. 01137000
- * 01138000
- CALLMSSA EQU * DEDICATE A VUA TO USER @V60B6B8 01139000
- BAL R4,SAVUDEV SAVE CURRENT UDEVBLOK @V60B6B8 01140000
- TM PSAMSS,MSSPRES IS MSS PRESENT IN THIS SYSTEM? @VA09319 01140010
- BZ ERROR90 NO,INDICATE DEVICE NOT AVAIL. @VA09319 01140020
- CALL DMKSSSL1 PROCESS MSS REQUESTS @V60B6B8 01141000
- CHKMSSRC EQU * TEST RETURN CODE FROM DMKSSS @V60B6B8 01142000
- LTR R0,R0 WAS IT SUCCESSFUL @V60B6B8 01143000
- BNZ MSSMOUNT NO, TEST FOR ERROR OR MOUNT IN @V60B6B8 01144000
- * PROCESS 01145000
- RDEVRDY EQU * RDEVICE HAS MOUNTED SYSTEM VOL @VMI2018 01146000
- LH R1,UDEVLINK-UDEVBLOK(R5) REAL DEVICE ADDR @V60B6B8 01147000
- LTR R1,R1 IS THERE AN RADDR @VMI2009 01148000
- BNM GETRBLOK YES, GO GET IT @VA11411 01149010
- LA R1,UDEVVSER-UDEVBLOK(R5) USER VOL SER @VMI2009 01150000
- LA R0,6 VOL SER LENGTH @VMI2009 01151000
- CALL DMKSCNVS FIND RBLOK WE ALLOCATED @VMI2009 01152000
- LR R8,R1 @VMI2009 01153000
- B RBLOKOK AND COMPLETE @VMI2009 01154000
- GETRBLOK EQU * FIND RBLOK FOR USER DEVICE @VMI2009 01155000
- CALL DMKSCNRU FIND THE RDEVBLOK ALLOCATED @V60B6B8 01156000
- RBLOKOK EQU * @VMI2009 01157000
- LA R0,UDEVSIZE UDEVBLOK SIZE @V60B6B8 01158000
- LR R1,R5 DUMMY UDEVBLOK ADDR @V60B6B8 01159000
- CALL DMKFRET FREE THE GOTTEN CORE @V60B6B8 01160000
- LR R5,R8 RDEVBLOK ADDR FROM DMKSCNRU @V60B6B8 01161000
- B SETVDS AND COMPLETE THE DEDICATE @V60B6B8 01162000
- CALLMSSB EQU * TRY TO MOUNT VOLSER ON RUA @V60B6B8 01163000
- BAL R4,SAVUDEV SAVE CURRENT UDEVBLOK @V60B6B8 01164000
- TM PSAMSS,MSSPRES IS MSS PRESENT IN THIS SYSTEM? @VA09319 01164010
- BZ ERROR90 NO,INDICATE DEVICE NOT AVAIL. @VA09319 01164020
- CALL DMKSSSL2 PROCESS AN MSS REQUEST @V60B6B8 01165000
- B CHKMSSRC AND TEST THE RETURN CODE @V60B6B8 01166000
- CALLMSSC EQU * SEE IF VOLSER EXISTS IN MSS @V60B6B8 01167000
- BAL R4,SAVUDEV SAVE CURRENT UDEVBLOK @V60B6B8 01168000
- TM PSAMSS,MSSPRES IS MSS PRESENT IN THIS SYSTEM? @VA09319 01168010
- BZ ERROR90 NO,INDICATE DEVICE NOT AVAIL? @VA09319 01168020
- CALL DMKSSSL3 PROCESS MSS REQUESTS @V60B6B8 01169000
- B CHKMSSRC AND TEST THE RETURN CODE @V60B6B8 01170000
- SAVUDEV EQU * SAVE THE CURRENT UDEVBLOK @V60B6B8 01171000
- LA R0,UDEVSIZE SIZE OF A UDEVBLOK @V60B6B8 01172000
- CALL DMKFREE GET CORE @V60B6B8 01173000
- LR R5,R1 SAVE ADDR IN GPR 5 @V60B6B8 01174000
- MVC 0(UDEVSIZE*8,R5),0(R9) SAVE THIS UDEVBLOK @V60B6B8 01175000
- BR R4 @V60B6B8 01176000
- MSSMOUNT EQU * SEE IF AN MSS MOUNT IN PROCESS @V60B6B8 01177000
- * 01178000
- * AT THIS POINT, AN MSS OPERATION WAS ATTEMPTED BY 01179000
- * DMKSSS. IF THE RETURN CODE FROM DMKSSS IS 4, 01180000
- * THEN AN MSS VOLUME MOUNT HAS BEEN ACCEPTED 01181000
- * BY THE MSC, BUT THE VOLUME IS NOT YET MOUNTED. 01182000
- * SET THE RETURN CODE TO ZERO AND PROCESS THE 01183000
- * NEXT DIRECTORY STATEMENT. IF THE RETURN CODE 01184000
- * FROM DMKSSS IS NOT ZERO OR FOUR, AN ERROR WAS 01185000
- * DETECTED. ISSUE ERROR MSG DMKLOG090E. 01186000
- * 01187000
- LA R15,RC4 TEST FOR CODE 4 @V60B6B8 01188000
- CR R15,R0 DMKSSS RC IN GPR 15 @V60B6B8 01189000
- BNE ERROR90 IT IS AN ERROR @V60B6B8 01190000
- TM MSSFLAG2-OSVSCOM(R1),MSGPROC IS MOUNT NOW @VA09302 01191000
- * COMPLETE 01192000
- BZ PCINOW YES, DMKDSB HAS THE PCI @VMI2018 01193000
- NI MSSFLAG2-OSVSCOM(R1),X'FF'-MSGPROC @VA09302 01194000
- B LOG20 PROCESS NEXT STATEMENT @V60B6B8 01195000
- PCINOW EQU * SYSTEM VOLUME NOW MOUNTED @VMI2018 01196000
- L R14,=V(DMKSSSMQ) ADDR OF MSSCOM Q @VMI2018 01197000
- L R15,0(R14) FIRST MSSCOM IN Q @VMI2018 01198000
- CHKNEXT EQU * @VMI2018 01199000
- CR R15,R1 IS THIS OUR MSSCOM IN Q @VMI2018 01200000
- BE DEQIT YES, REMOVE IT @VMI2018 01201000
- LA R14,MSSNEXT-OSVSCOM(R15) NEXT CHAIN PTR @VMI2018 01202000
- L R15,MSSNEXT-OSVSCOM(R15) NEXT MSSCOM @VMI2018 01203000
- B CHKNEXT AND LOOK FOR OURS @VMI2018 01204000
- DEQIT EQU * REMOVE MSSCOM @VMI2018 01205000
- MVC 0(4,R14),MSSNEXT-OSVSCOM(R15) RESET CHAIN @VMI2018 01206000
- LA R0,MSSSIZE MSSCOM SIZE @VMI2018 01207000
- CALL DMKFRET RETURN MSSCOM TO SYSTEM @VMI2018 01208000
- B RDEVRDY CONTINUE THE DEDICATE @VMI2018 01209000
- EJECT 01210000
- LOG49 LR R2,R9 NOW LET R2 POINT TO THE REGULAR UDBFBLOK 01276000
- CALL DMKUDRRV "CLOSE" IT. 01277000
- SPACE 01278000
- LOG50 DS 0H ALL DEVICES HANDLED, NOW FINISH UP: 01279000
- TM SAVEWRK1,RECON RECONNECTING? HRC101DK 01279100
- BNO RESCNT RESET COUNT HRC101DK 01279200
- NI VMMLVL2,X'FF'-VMMHLITE TURN OFF HILIGHT HRC101DK 01279300
- B SKIPCNT HRC101DK 01279400
- RESCNT DS 0H HRC101DK 01279500
- MVI VMPSWDCT,X'00' CLEAR PASSWORD COUNT FOR DMKLNK @V200820 01280000
- SKIPCNT DS 0H HRC101DK 01280500
- SR R2,R2 CLEAR RETURN REG 01281000
- SPACE 01282000
- * CALL ACCOUNTING ROUTINE: 01283000
- CALL DMKACON CALL THE ACCOUNT ON ROUTINE 01284000
- LTR R2,R2 USER ACNTING INDICATE BAD NEWS @VM03066 01285000
- BZ LOG51 NOPE, GOOD NEWS, CONTINUE @VM03066 01286000
- TM SAVEWRK1,AUTOLOG+PSWRDCK SYSTEM OPER FROM CPI? @VM03066 01287000
- BM LOG51 YES, ALWAYS LET HIM ON @VM03066 01288000
- BZ FORCEUSR NOPE, NOT AUTOLOG OF ANY FLAVOR @VM03198 01289000
- LA R0,8+17 LENGTH OF THE MESSAGE @VM03066 01290000
- LA R1,MSG059B POINT TO START OF ERRTEXT @VA05368 01291000
- MVC MSG059B(8),VMUSER INSERT USERID @VA05368 01292000
- B ERROR59B GO HANDLE THE MESSAGE @VM03198 01293000
- SPACE 01294000
- * HANDLE SYSTEM LOG MESSAGE: 01295000
- * HANDLE MESSAGE RESPOOLED FILES. 01296000
- * CONSTRUCT AND SEND READY OR RECONNECT MESSAGE TO USER. 01297000
- * CONSTRUCT AND SEND READY OR RECONNECT MESSAGE TO SYSTEM OPERATOR. 01298000
- LOG51 DS 0H @VMD0130 01299000
- L R2,SAVEWRK1 GET SAVEWRK1 INFORMATION FOR @VMD0130 01300000
- * CALL TO DMKLOH 01301000
- L R3,SAVEWRK8 GET AUTOLOG CMD ISSUER'S VMBLOK @VMD0139 01302000
- * ADDRESS 01303000
- L R4,SAVER11 GET CALLER'S VMBLOK FOR DMKLOH @VMD0139 01304000
- CALL DMKLOHON CONTINUE LOGON @VMD0130 01305000
- LTR R2,R2 SHOULD WE EXIT? @VMD0139 01306000
- BNZ LOGEXITR YES, LOG IS FINISHED @VMD0139 01307000
- SPACE 01308000
- LOG65 DS 0H NOW SET/RESET APPROPRIATE FLAG-BITS: 01309000
- NI VMRSTAT,255-VMLOGON TURN OFF THE LOGON BIT 01310000
- TM SAVEWRK1,RECON RECONNECTING? @VM08550 01311000
- BO RECEXIT YES, EXIT NOW @VA02849 01312000
- SPACE 1 01313000
- * SET DEFAULT ON BITS IN VMMLEVEL AND VMMLVL2 01314000
- OI VMMLVL2,VMMIMSG @VA03338 01315000
- MVI VMMLEVEL,VMMSGON+VMWNGON+VMMTEXT+VMMACCON+VMMLINED 01316000
- TM VMOSTAT,VMSYSOP IS THE USER SYSTEM OPERATOR? @VA03387 01317000
- BZ NOTOPDF NO, DEFAULTS ARE CORRECT @VA03387 01318000
- OI VMMLEVEL,VMMCPENV CP TERMINAL MODE @VA03387 01319000
- NOTOPDF DS 0H @VA03387 01320000
- TM CPSTAT2,CPMICAVL VM ASSIST AVAILABLE? @VM08550 01321000
- BO SETUVMA IF YES ON THIS PROCESSOR @V4M0134 01322000
- TM APSTAT1,APUOPER NO, IS THERE ANOTHER PROCESSOR@V4M0134 01323000
- BZ NOMIC BRANCH IF NOT @VM08550 01324000
- L R15,PREFIXB YES, POINT TO OTHER PROC PSA @V4M0134 01325000
- TM CPSTAT2-PSA(R15),CPMICAVL DOES IT HAVE VM ASSIST@V4M0134 01326000
- BNO NOMIC IF NO PROCESSOR HAS VM ASSIST@V4M0134 01327000
- SPACE 1 @V4M0134 01328000
- SETUVMA EQU * @V4M0134 01329000
- * DO SET UP FOR VM ASSIST 01330000
- LA R0,MICSIZE GET STORAGE FOR MICBLOK @VM08550 01331000
- CALL DMKFREE @VM08550 01332000
- USING MICBLOK,R1 @VM08550 01333000
- ST R1,VMMICRO SET ADDRESS OF MICBLOK @VM08550 01334000
- XC MICBLOK(MICSIZE*8),MICBLOK CLEAR MICBLOK @V386198 01335000
- MVC MICRSEG,VMSEG PUT SEGMENT TABLE PTR IN MICBLOK @VM08550 01336000
- LA R15,VMPSW PUT REAL ADDRESS OF VIRT PSW @VM08550 01337000
- ST R15,MICVPSW IN MICBLOK @VM08550 01338000
- LA R15,TEMPSAVE PUT ADDR OF WORKSPACE FOR ASSIST @VM08550 01339000
- ST R15,MICWORK IN MICBLOK @VM08550 01340000
- L R15,PREFIXA POINT TO ABSOLUTE PSA @VA14280 01341100
- MVC MICEVMA,PSAEVMA-PSA(R15) COPY EVMA CONTROLS @VA14280 01341600
- TM VMPSTAT,VMV370R EC MODE? @VM08550 01342000
- BZ MIC01 NO, BRANCH @VM08550 01343000
- L R15,VMECEXT PUT VIRT C-REG PTR OF EC MACH. @VM08550 01344000
- ST R15,MICCREG IN MICBLOK @VM08550 01345000
- B MIC02 @VM08550 01346000
- MIC01 LA R15,VMVCR0 PUT VIRT C-REG PTR OF BC MACH. @VM08550 01347000
- ST R15,MICCREG IN MICBLOK @VM08550 01348000
- OI VMMCR6,VMM360 INDICATE V. MACH. MAY USE ONLY @VM08550 01349000
- * 360 OPS & 370 NONDAT OPS 01350000
- MIC02 TM VMESTAT,VMMICSVC USER WANT ASSIST DO SVCS? @VM08550 01351000
- BO MIC03 YES, LEAVE VMMSVC BIT OFF @VM08550 01352000
- OI VMMCR6,VMMSVC NO, INDICATE VM ASSIST NOT @VM08550 01353000
- * HANDLE SVCS (I.E., SVCS OFF) 01354000
- MIC03 OI VMMCR6,VMMFE TURN VM ASSIST ON FOR USER @VM08550 01355000
- SPACE 01356000
- TM CPSTAT2,CPASTAVL IS CP ASSIST AVAILABLE ? @V386198 01357000
- BZ NOMIC NO, ALL SET. @V386198 01358000
- OI VMFSTAT,VMFVTMR INDICATE TIMER ASSIST WANTED @V3M4026 01359000
- L R15,AVMREAL GET V=R VMBLOK ADDRESS @VA07315 01360000
- CR R11,R15 THIS GUY VIRT.=REAL ?? @VA07315 01361000
- BNE MICNOVR NOT HIM @VA07315 01362000
- L R15,=A(DMKSLC-4096) YES, GET PAGE ZERO ADDRESS @VA07315 01363000
- LA R15,80(,R15) GET VIRTUAL TIMER ADDRESS @VA07315 01364000
- ST R15,MICVTMR SAVE TIMER ADD. IN MICBLOK+10 @VA07315 01365000
- B MICVR AND SKIP NORMAL TIMER INIT. @VA07315 01366000
- MICNOVR EQU * HERE TO INIT. NON V=R TIMER @VA07315 01367000
- ST R15,MICVTMR PUT IN MICBLOK @V386198 01368000
- MICVR EQU * @VA12708 01369100
- OI VMMCR6,VMMVTMR VIRT INTERVAL TMR FEAT EN @VA12708 01369200
- TM CPSTAT2,CPASTON IS CP ASSIST IN USE ? @V386198 01371000
- BZ NOMIC NO, DONE. @V386198 01372000
- OI VMMCR6,VMMCPAST SET CP ASSIST ENABLED @V386198 01373000
- DROP R1 @V386198 01374000
- SPACE 01375000
- NOMIC EQU * @VM08550 01376000
- TM SAVEWRK1,NOIPL AUTO IPL NEEDED? @V305535 01377000
- BO LOGEXIT NO, EXIT @VM03066 01378000
- TM SAVEWRK1,AUTOLOG AUTO LOGON? @V408246 01379000
- BZ B2 NO, ATTEMP AUTO IPL @V408246 01380000
- TM SAVEWRK1,PSWRDCK ALOGON COMMAND? @V408246 01381000
- BZ LOGEXIT NO, MUST BE OPERATOR LOG @V408246 01382000
- B2 EQU * @V408246 01383000
- LA R0,8 LENGTH @VM03066 01384000
- LA R1,SAVEWRK2 POINT AT THE DESIRED IPL NO. OR NAME 01385000
- LA R15,SAVEWRK2+7 SET TO DELETE TRAILING BLANKS FROM COUNT: 01386000
- LOG66 CLI 0(R15),C' ' TRAILING BLANK FOUND ? 01387000
- BNE LOG67 NOPE - OK TO CALL IPL-HANDLER NOW. 01388000
- BCTR R0,0 YES - DECREMENT BYTE-COUNT 01389000
- BCT R15,LOG66 AND KEEP CHECKING. 01390000
- * R0 & R1 NOW SET UP AS THEY WOULD BE FROM DMKSCNFD: 01391000
- LOG67 SLR R2,R2 CLEAR R2, AND ... 01392000
- CALL DMKCFGII CALL INTERNAL ROUTINE TO HANDLE @V304635 01393000
- * IT 01394000
- LTR R2,R2 SUCCESS ON IPL INITIATION ? 01395000
- BZ BUMPRET YES, UPDATE RETN ADDR TO RUN USER@VM03066 01396000
- TM SAVEWRK1,AUTOLOG IS THIS AUTOLOG COMMAND? @VM03066 01397000
- BZ LOGEXIT NOPE, EXIT FORTHWITH @VM03066 01398000
- LA R0,8+11 LENGTH OF THE MESSAGE @VM03066 01399000
- LA R1,MSG059C POINT TO START OF ERRTEXT @VA05368 01400000
- MVC MSG059C(8),VMUSER INSERT USERID @VA05368 01401000
- B ERROR59A GO PROCESS THE MESSAGE @VM03066 01402000
- SPACE 01403000
- BUMPRET L R1,SAVERETN BUMP RETURN ADDR TO RUN THE USER @VM03066 01404000
- LA R1,4(,R1) ... 01405000
- ST R1,SAVERETN AND STORE 01406000
- SPACE 01407000
- LOGEXIT TM SAVEWRK1,R9FRE IS THERE FREE STORAGE TO BE RETURNED ? 01408000
- BZ LOGEXTA @V408246 01409000
- LA R0,UDBFSIZE*2+2 THE SIZE WE'VE BEEN USING INTO R0, 01410000
- LR R1,R9 ADDRESS INTO R1 FROM R9, 01411000
- CALL DMKFRET AND GIVE IT BACK (WITH THANKS, OF COURSE) 01412000
- LOGEXTA DS 0H @V408246 01413000
- C R11,SAVER11 SAME VMBLOK? @V408246 01414000
- BE LOGEXTF YES @V60BBBB 01415000
- L R1,SAVER11 NO,--SWITCH TIMER AND LOCK @V407593 01416000
- * TO CALLERS VMBLOK 01417000
- BAL R5,SWVM GO TO SWITCH VMBLOKS @V4M0193 01418000
- LOGEXTF L R3,=A(DMKSYSJR) GET ADDRESS OF JPSCBLOK @V60BBBB 01419000
- USING JPSCBLOK,R3 TELL ASSEMBLER @V60BBBB 01420000
- TM LOGONJRL,L'LOGONJRL LOGON JOURNALING ON? @V60BBBB 01421000
- BZ LOGEXITR BR IF NOT @V60BBBB 01422000
- LA R5,VMUSER PRIME R5 WITH A(VMUSER) @V60BBBB 01423000
- LTR R2,R2 SUCCESSFUL LOGON? @V60BBBB 01424000
- BZ CALLJRL1 BR IF YES @V60BBBB 01425000
- C R2,=F'50' WAS IT INVALID PASSWORD? @V60BBBB 01426000
- BNE LOGEXITR BR IF NOT @V60BBBB 01427000
- LA R5,(UDIRUSER-UDIRBLOK)+SAVEWRK2 IF INVALID @V60BBBB 01428000
- * PASSWORD, USERID IS HERE. @V60BBBB 01429000
- LA R2,SAVEWRK6 POINT AT INVALID PASSWORD @V60BBBB 01430000
- DROP R3 @V60BBBB 01431000
- CALLJRL1 SLR R4,R4 ASSUME LOGON COMMAND @V60BBBB 01432000
- TM SAVEWRK1,AUTOLOG+PSWRDCK LOGGING ON OPERATOR @VA10024 01433100
- BNO CALLJRL2 FROM DMKCPI....YES @VA10024 01433200
- L R4,SAVEWRK8 GET COMMAND ISSUERS VMBLOK @V60BBBB 01435000
- CALLJRL2 CALL DMKJRLLO GO TO JOURNALING MODULE @V60BBBB 01436000
- LOGEXITR EXIT REALLY EXIT. 01437000
- SPACE 1 01438000
- * HERE ON RECONNECT. IF A PREVIOUS CONSOLE FUNC. WAS RUNNING WHEN LOGON 01439000
- * WAS ENTERED, RETRN TO *+12 IN CFM SO ANOTHER CONSOLE FUNC CAN'T START 01440000
- RECEXIT EQU * @VA02849 01441000
- TM VMOSTAT,VMCF IS VMCF FLAG STILL ON? @VA02849 01442000
- BZ RECEXT1 NO, PREVIOUS C.F. MUST'VE @VA02849 01443000
- * FINISHED 01444000
- TM SAVEWRK1,EXECF YES, WAS VMCF ON AT ENTRY? @VA02849 01445000
- BZ LOGEXIT NO, NORMAL EXIT @VA02849 01446000
- RECEXT1 EQU * HERE IF RECONN IS OVERLAPPING A @VA02849 01447000
- * PREVIOUS C.F. 01448000
- L R1,SAVERETN GET RETURN ADDRESS @VA02849 01449000
- LA R1,12(,R1) RETURN TO *+12 IN DMKCFM @VA02849 01450000
- ST R1,SAVERETN SO WE WON'T CHANGE STATUS BITS @VA02849 01451000
- B LOGEXIT @VA02849 01452000
- SPACE 1 @V4M0148 01453000
- SWVM DS 0H @V4M0148 01454000
- SWTCHVM SWITCH VMBLOKS @V4M0193 01455000
- BR R5 RETURN TO CALLER @V4M0193 01456000
- EJECT 01457000
- * ENTRY TO AUTOMATICALLY LOGON THE OPERATOR: 01458000
- SPACE 01459000
- DMKLOGOP RELOC LOGON THE OPERATOR 01460000
- SR R9,R9 R9 = 0, 01461000
- ST R9,SAVEWRK1 CLEAR SAVEWRK1 WORD 01462000
- ST R9,SAVER2 SET TO RETURN R2=0 TO CALLER 01463000
- MVI SAVEWRK1,AUTOLOG+PSWRDOK AUTO LOGON WITHOUT @V305535 01464000
- * PASSWORD 01465000
- LA R1,VMUSER POINT TO USERID IN VMBLOK, 01466000
- LA R0,8 8 BYTES, PLEASE 01467000
- LA R2,SAVEWRK2 POINT TO WORK AREA FOR DMKUDR @V200820 01468000
- CALL DMKUDRFU FIND OPERATOR IN DIRECTORY @V200820 01469000
- BNZ ERROR53 OOPS - HE'S NOT THERE @V200820 01470000
- B LOG07 GO PROCESS OPERATOR LOGON @V200820 01471000
- SPACE 2 01472000
- TERMADD EQU * ROUTINE TO BUILD 'TYPE RADDR' INFO @V200820 01473000
- LTR R8,R8 IS THERE A TERMINAL RDEVBLOK ? @V200820 01474000
- BNP TERMNOD NO -- SETUP DEFAULT TYPE, RADDR @V200820 01475000
- USING RDEVBLOK,R8 @V200820 01476000
- CLI RDEVTYPC,CLASSPEC IS THIS A 370X NCP TERMINAL @V200820 01477000
- BE TERMRID YES - GO FIND 'VMTRMID' @V200820 01478000
- CLI RDEVTYPC,CLASTERM IS THIS A TERMINAL CLASS @V2D3931 01479000
- BNE *+12 NO, BYPASS TEST FOR BISYNC LINE @V2D3931 01480000
- TM RDEVTYPE,TYPBSC IS THIS A BISYNC LINE ? @V2D3931 01481000
- BO TERMRID YES, ... @V2D3931 01482000
- TM RDEVADD,RDEVLDEV Is this an LDEV? HRC065DK 01482100
- BO TERMLDEV Yes, special handling HRC065DK 01482200
- CALL DMKSCNRD GET 'CCU' ADDRESS FROM RDEVBLOK @V200820 01483000
- CALL DMKCVTBH CONVERT TO PRINTABLE EBCDIC @V200820 01484000
- ICM R1,B'1000',BLANKS GET A HIGH-ORDER BLANK IN R1@V200820 01485000
- L R0,=C'LINE DSC' PUT 'LINE' IN GR0 @V200820 01486000
- CLI RDEVTYPC,CLASTERM IS IT REALLY A LINE ? @V200820 01487000
- BCR 8,R4 YES - RETURN AS IS @V200820 01488000
- L R0,=C'GRAF' MUST BE A LOCAL GRAPHICS TERMINAL@V200820 01489000
- BR R4 @V200820 01490000
- TERMLDEV EQU * HRC065DK 01490100
- LH R1,RDEVADD Get the LDEV address HRC065DK 01490200
- N R1,F4095 Keep only the dev num HRC065DK 01490300
- CALL DMKCVTBH Make it displayable HRC065DK 01490400
- ICM R1,8,=C'L' Insert LDEV identifier HRC065DK 01490500
- L R0,=C'GRF ' Use short GRAF name HRC065DK 01490600
- BR R4 Return with R0/R1 filledHRC065DK 01490700
- TERMRID EQU * SETUP 'DEV XXXX' FOR 370X TERMS @V200820 01491000
- LH R1,VMTRMID-VMBLOK(,R1) RESOURCE FIELD @V200820 01492000
- CALL DMKCVTBH CONVERT TO PRINTABLE EBCDIC @V200820 01493000
- L R0,=C'DEV ' PUT CORRECT TYPE IN GR0 @VM03066 01494000
- BR R4 RETURN @VM03066 01495000
- TERMNOD LM R0,R1,=C'LINE DSC' DEFAULT FOR DISC MACHINE @VM03066 01496000
- BR R4 RETURN @VM03066 01497000
- DROP R8 NO MORE RDEVBLOK @VM03066 01498000
- EJECT 01499000
- DMKLOGB RELOC @V4075A0 01500000
- SR R2,R2 CLEAR @V305535 01501000
- ST R2,SAVER2 CLEAR RETURN CODE FIELD @V305535 01502000
- ST R2,SAVEWRK1 CLEAR PARAMETER FIELD @V305535 01503000
- ST R10,SAVEWRK8 SAVE CMD ISSUERS VMBLOK ADDR @VM03066 01504000
- MVI SAVEWRK1,AUTOLOG+PSWRDCK SET-UP INITIAL @V305535 01505000
- * PARAMETERS 01506000
- B LOG00 JOIN LOGON CODE @V305535 01507000
- EJECT 01508000
- * ERROR RETURNS: 01509000
- * 01510000
- ERROR3 LA R2,3 INVALID OPTION - OPTN @VA04098 01511000
- B ERRJOIN3 CONTINUE, R0 AND R1 ARE SET @VA08667 01512000
- SPACE 01513000
- ERROR20 LA R2,20 USERID MISSING OR INVALID @VA04098 01514000
- B ERRJOIN1 ... @VA04098 01515000
- SPACE 1 01516000
- ERROR50 LA R2,50 PASSWORD INCORRECT 01517000
- ST R2,SAVER2 PASS CODE BACK TO CALLER @V200820 01518000
- BC 14,ERRJOIN1 CC ยฌ= 3 FROM DMKEPSWD - NORMAL @VMI0070 01519000
- * ERROR PROCEDURE. @VMI0070 01520000
- TM SAVEWRK1,AUTOLOG+PSWRDCK AUTOLOG? @VMI0070 01521000
- BNO ERRJOIN1 CC = 3 FROM DMKEPSWD - TERM ERROR@VMI0070 01522000
- LA R0,LEN59D SET LENGTH OF THE MESSAGE @VMI0070 01523000
- LA R1,MSG059D SET START OF MESSAGE TEXT @VMI0070 01524000
- MVC MSG059D,(UDIRUSER-UDIRBLOK)+SAVEWRK2 PUT USERID @VMI0070 01525000
- * INTO MESSAGE. @VMI0070 01526000
- B ERROR59B GO HANDLE THE MESSAGE @VMI0070 01527000
- SPACE 01528000
- ERROR51 LA R2,51 MAXIMUM USERS EXCEEDED 01529000
- B ERRJOIN1 GO PROCESS THE ERROR @VM03066 01530000
- SPACE 01531000
- ERROR52 LA R2,52 ERROR IN CP DIRECTORY (BAD NEWS) 01532000
- B ERRJOIN1 GO SEND THE ERROR MESSAGE @VM03066 01533000
- SPACE 01534000
- ERROR59A MVI SAVER2,OPMSG TELL CALLER TO GIVE MSG TO SYS OP@VM03198 01535000
- ERROR59B NI SAVEWRK1,255-NONFATAL THIS IS A FATAL DISEASE @VM03198 01536000
- ERROR59 LA R2,59 GET THE ERROR NUMBER @VM03066 01537000
- STCM R2,B'0111',SAVER2+1 PASS BACK THE ERROR NUMBER @VM03066 01538000
- B ERRJOIN4 CONTINUE PROCESSING THE MSG @VM03066 01539000
- SPACE 1 01540000
- ERROR67 LA R2,67 PASSWORD ON COMMAND LINE @V60BBBB 01541000
- * NOT PERMITTED. @V60BBBB 01542000
- B ERRJOIN1 CONTINUE @V60BBBB 01543000
- ERRJOIN1 SLR R1,R1 R1 = 0 - NO DATA PASSED TO DMKERMSG 01544000
- ERRJOIN3 ST R2,SAVER2 RETURN ERROR CODE TO OUR CALLER 01545000
- ERRJOIN4 ICM R0,B'1110',DMKLOG+3 'LOG' IDENTIFIER INTO R0, 01546000
- ICM R2,B'1000',=X'80' SIGNAL - RETURN TO LOGON PLEASE 01547000
- TM SAVEWRK1,AUTOLOG+PSWRDCK AUTOLOG COMMAND? @VM03066 01548000
- BNO ERRJN5 NO @V305535 01549000
- LR R6,R0 SAVE REG ACROSS SWITCHVM @V60BB91 01550000
- ST R1,SAVEWRK9 SAVE REGS AROUND SWITCHVM CALL @V60BB91 01551000
- L R1,SAVEWRK8 SWITCH TO CMD ISSUERS VMBLOK @V407593 01552000
- BAL R5,SWVM GO TO SWITCH VMBLOKS @V4M0193 01553000
- L R1,SAVEWRK9 RESTORE MSG PARMS @V60BB91 01554000
- LR R0,R6 RESTORE MODULE ID IN R0 @V60BB91 01555000
- CALL DMKERMSG SEND ERROR MESSAGE @V305535 01556000
- L R1,SAVER11 SWITCH TMRS & LOCK TO @V407593 01557000
- * AUTOLOGGED VMBLOK 01558000
- BAL R5,SWVM GO TO SWITCH VMBLOKS @V4M0193 01559000
- TM SAVEWRK1,NONFATAL VIABLE USER YET? @VM03066 01560000
- BO LOG20 YES, CONTINUE LOGON PROCESS @VM03066 01561000
- B LOGEXIT NOPE, THEN EXIT TO CALLER @VM03198 01562000
- SPACE 01563000
- ERRJN5 DS 0H @V305535 01564000
- CALL DMKERMSG LET ERROR MSG HANDLER DO THE HARD WORK 01565000
- TM SAVEWRK1,NONFATAL NON-FATAL ERROR ? 01566000
- BO LOG20 IF YES, GO READ IN NEXT DEVICE BLOCK 01567000
- CH R2,=H'131' 131E MESSAGE @V407466 01568000
- BE FORCEUSR FORCE USER OFF, NO MORE CHANCES @V407466 01569000
- IC R14,VMPSWDCT GET CURRENT COUNT @VM03198 01570000
- LA R14,1(R14) BUMP BAD LOGON ATTEMPTS BY ONE @VM03198 01571000
- STC R14,VMPSWDCT AND SAVE @VM03198 01572000
- L R3,=A(DMKSYSJR) GET ADDRESS OF JPSCBLOK @V60BBBB 01573000
- USING JPSCBLOK,R3 TELL ASSEMBLER @V60BBBB 01574000
- TM LOGONJRL,L'LOGONJRL LOGON JOURNALING ON? @V60BBBB 01575000
- BZ NOTJRLNG BR IF NOT @V60BBBB 01576000
- CLC VMPSWDCT,JPSLOGDS LIMIT EXCEEDED? @V60BBBB 01577000
- BL LOGEXIT NO. LET HIM CONTINUE @V60BBBB 01578000
- B FORCEUSR CONTINUE @V60BBBB 01579000
- DROP R3 @V60BBBB 01580000
- NOTJRLNG DS 0H @V60BBBB 01581000
- CLI VMPSWDCT,LOGLIMIT CHECK HOW MANY TIMES HE GOOFED@VM03198 01582000
- BNH LOGEXIT IF NOT > LIMIT GIVE HIM 'NOTHER'N@VM03198 01583000
- FORCEUSR TM SAVEWRK1,AUTOLOG+PSWRDCK OP BEING LOGGED ON @V407466 01584000
- BM USERGONE YES, DON'T TURN ON VMKILL BIT @V407466 01585000
- OI VMOSTAT,VMKILL BYE BYE ..FOR NOW @V407466 01586000
- OI VMSVSTAT,VMLGFORC INDICATE USER WAS FORCED OFF @VA13026 01586500
- SPACE 01587000
- USERGONE DS 0H @V305535 01588000
- L R1,SAVERETN PICK UP RETURN ADDRESS @V305535 01589000
- LA R1,8(,R1) +8 = DON'T POST READ & DON'T RUN 01590000
- ST R1,SAVERETN AND STORE IT BACK 01591000
- B LOGEXIT AND GO EXIT. 01592000
- SPACE 01593000
- ERROR53 LA R2,53 USERID NOT IN CP DIRECTORY 01594000
- B ERRJOIN3 RETURN ERROR CODE & GIVE MSG @VA08667 01595000
- SPACE 01596000
- ERROR54 DS 0H ALREADY LOGGED ON LINE XXX 01597000
- TM SAVEWRK1,AUTOLOG SPECIAL LOGON CALL? @V305535 01598000
- BZ NOTAUTO3 NO @V305535 01599000
- C R11,ASYSOP AUTOLOG OF SYSTEM OPERATOR? @V305535 01600000
- BE LOG10A YES, PROCEED NORMALLY @V305535 01601000
- NOTAUTO3 EQU * NOT AUTOLOG COMMAND @V305535 01602000
- LA R2,54 REAL ERROR 54 01603000
- L R8,VMTERM-VMBLOK(,R1) ACCESS THE OTHER TERMINAL RDEVBLOK 01604000
- BAL R4,TERMADD GET 'TYPE RADDR' FOR OTHER VMBLOK@V200820 01605000
- STM R0,R1,SAVEWRK2 SET IN SAVEAREA @V200820 01606000
- LA R1,SAVEWRK2 POINT AT IT FOR DMKERMSG @V200820 01607000
- LA R0,8 VARIABLE FIELD LENGTH @V200820 01608000
- B ERRJOIN3 GO TYPE THE ERROR MESSAGE @VA08667 01609000
- ERROR66 EQU * Cant connect to host VM HRC065DK 01609100
- LA R2,66 -> message num DMKEMA HRC065DK 01609200
- B ERRJOIN1 Go display msg HRC065DK 01609300
- SPACE 01610000
- ERROR90 EQU * @VA03350 01611000
- USING UDEVBLOK,R9 ADDRESSABILITY FOR UDEVBLOK @VA03350 01612000
- LA R2,90 MSG DMKLOGO9OE @VA03350 01613000
- LR R1,R3 VADDR INTO R1 FOR CONVERT @VA03350 01614000
- CALL DMKCVTBH BINARY TO HEX PLEASE 01615000
- STCM R1,7,0(R10) STORE (3 BYTES) IN EXTRA SAVE AREA, 01616000
- MVI 3(R10),00 BINARY ZERO NEXT (1 BYTE) 01617000
- CLI UDEVVSER,X'40' VOLID PRESENT @VA03350 01618000
- BE PUTRADDR NO PUT RADDR INTO MSG @VA03350 01619000
- MVC 4(6,R10),UDEVVSER PUT VOLSER INTO MSG @VA03350 01620000
- LA R0,10 THATS TEN BYTES TOTAL @VA03350 01621000
- B GIVEMSG @VA03350 01622000
- PUTRADDR LH R1,UDEVLINK RADDR INTO R1 FOR CONVERT @VA03350 01623000
- CALL DMKCVTBH CONVERT TO HEX @VA03350 01624000
- STCM R1,7,4(R10) AND STORE AGAIN (3 MORE BYTES) 01625000
- LA R0,7 THAT'S 7 BYTES TOTAL 01626000
- GIVEMSG LR R1,R10 POINT TO MSG INFO AREA @VA03350 01627000
- B ERRJOIN4 GO GIVE ERROR MESSAGE & GET NEXT UDEVBLOK 01628000
- DROP R9 @VA03350 01629000
- ERROR95 LA R2,CON95 DMKLOG095E @V407466 01630000
- B ERROR91J PUT VADDR IN MSG PER ERROR91 @V407466 01631000
- SPACE 01632000
- ERROR91 LA R2,91 DASD VADDR NOT DEFINED; TEMP SPACE NOT AVAILABLE 01633000
- ERROR91J LR R1,R3 DEVICE-ADDRESS INTO R1 01634000
- CALL DMKCVTBH BINARY TO HEX PLEASE 01635000
- ICM R1,B'1000',BLANKS HI ORDER BLANK PLEASE @VA04098 01636000
- SLR R0,R0 R0=0 MEANS THE DATA IS IN R1 01637000
- B ERRJOIN4 GO GIVE ERROR MESSAGE & GET NEXT UDEVBLOK 01638000
- SPACE 01639000
- ERROR92 DS 0H DEV VADDR NOT DEFINED; TYPE VADDR ALREADY DEFINED: 01640000
- MVC 0(12,R10),ZEROES CLEAR 12 BYTES WORTH OF SAVE AREA 01641000
- CALL DMKCVTBH VADDR (STILL IN R1) INTO HEX PLEASE 01642000
- STCM R1,7,9(R10) (PLAN AHEAD) 01643000
- ERROR92J STCM R1,7,0(R10) STORE (3 BYTES) IN EXTRA SAVE AREA 01644000
- * BINARY ZERO NEXT (1 BYTE) 01645000
- CALL DMKSCNVN NOW GET DEVICE NAME (R8 IS ALL SET) 01646000
- ST R1,4(,R10) AND STORE (4 BYTES) NEXT 01647000
- * ANOTHER BINARY ZERO (1 BYTE) 01648000
- * AND VADDR AGAIN (3 BYTES) 01649000
- LA R0,12 IF I CAN COUNT THAT'S 12 BYTES TOTAL 01650000
- LR R1,R10 AND IN OUR EXTRA SAVE AREA 01651000
- LA R2,92 THAT WILL BE ERROR 92 PLEASE 01652000
- B ERRJOIN4 GO GIVE ERROR MESSAGE & GET NEXT UDEVBLOK 01653000
- SPACE 01654000
- ERROR93 LA R2,93 DEV VADDR NOT DEFINED; ERROR IN CP DIRECTORY 01655000
- B ERROR91J PUT VADDR IN MSG PER ERROR 91. 01656000
- SPACE 01657000
- ERROR131 LA R2,CON131 MSG NUMBER @V407466 01658000
- LA R0,LENGTH5 SUBSTITUTABLE DATA LENGTH @V407466 01659000
- LA R1,=CL5'LOGON' SUBSTITUTABLE DATA @V407466 01660000
- B ERRJOIN3 COMMON ERRROR PROCESSING @V407466 01661000
- EJECT 01662000
- LOGMS189 LA R2,189 MSG NUMBER @V4075A0 01663000
- ICM R2,B'0100',CHARI IT'S AN INFORMATIONAL MSG @V4075A0 01664000
- B COMAFF @V4075A0 01665000
- LOGMS188 LA R2,188 MSG NUMBER @V4075A0 01666000
- COMAFF SR R1,R1 NO VARIABLE DATA FOR DMKERM @V4075A0 01667000
- ICM R0,B'1110',DMKLOG+3 'LOG' ID @V4075A0 01668000
- ICM R2,B'1000',HEX80 INDICATE ERM RETURNS TO US @V4075A0 01669000
- CALL DMKERMSG @V4075A0 01670000
- B NOAFF UNSATISFIED AFFINITY NOT FATAL @V4075A0 01671000
- EJECT @V4075A0 01672000
- * EXECUTED INSTRUCTIONS: 01673000
- SAVEPASS MVC SAVEWRK8(*-*),0(R1) 01674000
- CLCMASK CLC CMASK(*-*),0(R1) 01675000
- CLCNOIPL CLC CNOIPL(*-*),0(R1) 01676000
- * 01677000
- CMASK DC C'MASK ' MEANS MASKING CHARACTERS WANTED 01679000
- CNOIPL DC C'NOIPL ' MEANS NO AUTOMATIC IPL WANTED 01680000
- * @V4075A0 01681000
- CHARI DC C'I' @V4075A0 01682000
- HEX80 DC X'80' @V4075A0 01683000
- MSG059A DC CL8' ' @VA06350 01684000
- TEXT59A DC X'00',C'IPL MISSING' @VA06350 01685000
- MSG059B DC CL8' ' @VA06350 01686000
- TEXT59B DC X'00',C'ACCOUNTING ERROR' @VA06350 01687000
- MSG059C DC CL8' ' @VA06350 01688000
- TEXT59C DC X'00',C'IPL FAILED' @VA06350 01689000
- MSG059D DC CL8' ' @VMI0070 01690000
- TEXT59D DC X'00',C'I/O ERROR ON TERMINAL' @VMI0070 01691000
- LEN59D EQU *-MSG059D @VMI0070 01692000
- SPACE 2 01693000
- LTORG 01694000
- SPACE 2 01695000
- LOGLIMIT EQU 3 LIMIT OF HOW MANY "WRONG PASSWORDS" WE'LL TOLERATE 01696000
- EJECT 01697000
- EJECT 01698000
- PSA 01699000
- COPY SAVE 01700000
- * FLAG-BITS USED IN SAVEWRK1: 01701000
- * 01702000
- AUTOLOG EQU X'80' AUTOLOG CMD OR CPI SYS OP LOGON @VM03066 01703000
- PSWRDOK EQU X'40' PASSWORD OK - DON'T CALL DMKEPSWD 01704000
- NOIPL EQU X'20' NO AUTOMATIC IPL WANTED 01705000
- NONFATAL EQU X'10' ERROR(S) NONFATAL - GO READ NEXT UDEVBLOK 01706000
- RECON EQU X'08' RECONNECT PERFORMED 01707000
- R9FRE EQU X'04' R9 IN USE AS FREE-STORAGE BUFFER 01708000
- EXECF EQU X'02' RECONNECTED W/ VMCF STILL ON @VM03066 01709000
- PSWRDCK EQU X'01' AUTOLOG CMD - PASSWORD REQUIRED @VM03066 01710000
- SPACE 01711000
- OSVSCOM MSSCOM @V60B6B8 01712000
- BLANK EQU X'40' @V60B6B8 01713000
- L48 EQU 48 @V60B6B8 01714000
- RC4 EQU 4 @V60B6B8 01715000
- L5 EQU 5 @V60B6B8 01716000
- * PARAMETER BITS PASSED TO DMKUSOFF 01718000
- * 01719000
- NOOPMSG EQU X'01' DONT SEND LOGOFF MSG TO SYS OP @VM03066 01720000
- SPACE 01721000
- * PARAMETER BITS PASSED FROM DMKLOG BACK TO DMKLOGA 01722000
- * 01723000
- OPMSG EQU X'80' LET USOFF SEND LOGOFF MSG TO OP @VM03066 01724000
- * MISCELLANEOUS EQUATES 01725000
- CON512 EQU 512 512 DOUBLEWORDS @V407466 01726000
- CON131 EQU 131 DMKLOG131E MESSAGE NUMBER @V407466 01727000
- CON95 EQU 95 DMKLOG095E @V407466 01728000
- LENGTH5 EQU 5 DATA LENGTH MSG 131E @V407466 01729000
- EJECT 01730000
- COPY EQU 01731000
- COPY VMBLOK 01732000
- COPY TIMER 01733000
- COPY IOBLOKS 01734000
- COPY NETWORK @V200820 01735000
- COPY UDIRECT 01736000
- COPY DEVTYPES 01737000
- COPY RBLOKS 01738000
- COPY VBLOKS 01739000
- SYSLOCS 01740000
- COPY MICBLOK 01741000
- COPY CONBUF @V305535 01742000
- JPSCBLOK @V60BBBB 01743000
- END DMKLOG 01744000
ibm/vm370-lib/cp/dmklog.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator