ibm:vm370-lib:cp:dmkcfg.assemble_src
Table of Contents
DMKCFG Source
References
- Fixes Applied : 13
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [HRC106DK]
Source Listing
- DMKCFG.ASSEMBLE.txt
- CFG TITLE 'DMKCFG (CP) VM/370 - RELEASE 6' 00001000
- ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
- *. 00003000
- * MODULE NAME - 00004000
- * 00005000
- * DMKCFG 00006000
- * 00007000
- * FUNCTION - 00008000
- * 00009000
- * TO HANDLE GENERAL COMMANDS 00010000
- * 00011000
- * ATTRIBUTES - 00012000
- * 00013000
- * REENTRANT, PAGEABLE, CALLED VIA SVC 00014000
- * 00015000
- * CONTENTS - 00016000
- * 00017000
- * DMKCFGCL - TO HANDLE DIAGNOSE CODE X'64' 00018000
- * DMKCFGII - ENTRY TO IPL FROM LOGON (DMKLOG) 00019000
- * DMKCFGIP - ENTRY TO IPL FROM COMMAND LINE (DMKCFM) 00020000
- * 00021000
- * ENTRY CONDITIONS FOR DMKCFGIP 00022000
- * 00023000
- * GPR9 = ADDRESS OF COMMAND LINE BUFFER 00024000
- * GPR11 = ADDRESS OF CALLER'S VMBLOK 00025000
- * GPR12 = ADDRESS OF ENTRY POINT 00026000
- * GPR13 = ADDRESS OF SAVEAREA 00027000
- * 00028000
- * ENTRY CONDITIONS FOR DMKCFGII 00029000
- * 00030000
- * GPR0 = LENGTH OF INPUT ARGUMENT 00031000
- * GPR1 = ADDRESS OF INPUT ARGUMENT 00032000
- * GPR11 = ADDRESS OF CALLER'S VMBLOK 00033000
- * GPR12 = ADDRESS OF ENTRY POINT 00034000
- * GPR13 = ADDRESS OF SAVEAREA 00035000
- * 00036000
- * ENTRY CONDITIONS FOR DMKCFGCL - 00037000
- * GPR 1-2 = NAME OF THE NAMED SYSTEM ISSUED FOR DIAG, X'64' 00038000
- * GPR3 = CODE FUNCTION BYTE 00039000
- * 00040000
- * EXIT CONDITIONS FOR DMKCFGII & DMKCFGIP 00041000
- * 00042000
- * NORMAL - 00043000
- * THE USERS VMBLOK HAS BEEN UPDATED TO RESUME EXECUTION 00044000
- * AT THE SAVE POINT IN THE NEWLY IPL'D SYSTEM 00045000
- * 00046000
- * ERROR - 00047000
- * DMKERMSG HAS BEEN CALLED TO SEND AN ERROR MESSAGE 00048000
- * 00049000
- * EXIT CONDITIONS FOR DMKCFGCL - 00050000
- * 00051000
- * NORMAL - 00052000
- * THE USERS CONDITION CODE IN THE PSW IS SET TO ZERO 00053000
- * THE USERS VIRTUAL REG'S 1-2 IS SET ACCORDING TO THE 00054000
- * DIAGNOSE FUNCTION SELECTED. 00055000
- * 00056000
- * ERROR - 00057000
- * THE USER'S CONDITION CODE IS NON-ZERO, AND INDICATES THE TYPE 00058000
- * OF ERROR CONDITION. 00059000
- * THE USER'S REG'S. REMAIN UNCHANGED. 00060000
- * 00061000
- * CALLS TO OTHER ROUTINES - 00062000
- * 00063000
- * DMKCVTBH - CONVERT HEX TO BINARY 00064000
- * DMKCVTDB - CONVERT DECIMAL TO BINARY 00065000
- * DMKFREE - TO OBTAIN STORAGE 00066000
- * DMKPTRUL - TO UNLOCK A PAGE 00067000
- * DMKPTRLK - TO LOCK A PAGE 00068000
- * DMKSCNVS - TO FIND A VOLUME 00069000
- * DMKSCNVU - TO FIND A VIRTUAL UNIT 00070000
- * DMKVATMD - ALLOCATE & INITIALIZE SHADOW TABLES 00071000
- * DMKFRET - TO RETURN A BLOCK OF STORAGE 00072000
- * DMKRPAGT - TO GET A PAGE FROM BACKING STORAGE 00073000
- * DMKCVTBH - TO CONVERT BINARY TO HEX 00074000
- * DMKSCNFD - LOCATE THE NEXT ARGUMENT ON THE COMMAND LINE 00075000
- * DMKPTRAN - LOCATE AND FETCH A PAGE OF VIRTUAL STORAGE 00076000
- * DMKERMSG - TO SEND ERROR MESSAGES TO TERMINAL 00077000
- * DMKBLDRT - TO BUILD PAGE/SWAP AND SEGMENT TABLES 00078000
- * DMKPGSPR - TO RELEASE AND UNLOCK A RANGE OF VIRTUAL STORAGE 00079000
- * DMKPGSPO - TO RELEASE ALL OF VIRTUAL STORAGE 00080000
- * DMKPGSFS - TO LOCATE A NAMED SYSTEM IN THE USER'S VIRT. STOR. 00081000
- * DMKPGSPS - TO RELEASE A NAMED SYSTEM FROM THE USER 00082000
- * DMKPGSPP - TO RELEASE A VIRTUAL PAGE 00083000
- * DMKCFPRR - TO PERFORM A VIRTUAL SYSTEM RESET 00084000
- * DMKVMAS1 - ANCHOR FOR SHARED SYSTEMS (SHRTABLE POINTER) 00085000
- * DMKVMAS2 - ANCHOR FOR NAMED SYSTEMS (SHRTABLE POINTER) 00086000
- * 00087000
- * EXTERNAL REFERENCES - 00088000
- * 00089000
- * 00090000
- * TABLES / WORKAREAS - 00091000
- * 00092000
- * DMKSNTBL - SYSTEM NAME TABLE 00093000
- * 00094000
- * 00095000
- * REGISTER USAGE - 00096000
- * 00097000
- * GPR0 = LENGTH OF ARGUMENT (RETURNED BY DMKSCNFD) 00098000
- * GPR1 = ADDRESS OF ARGUMENT (RETURNED BY DMKSCNFD) 00099000
- * GPR2 = PARMS PASSED TO CALLED ROUTINES 00100000
- * GPR3 = LENGTH FOR EXECUTED MOVES AND COMPARES 00101000
- * GPR4 = INTERNAL LINKAGE (2ND LEVEL) 00102000
- * GPR5 = INTERNAL LINKAGE (2ND LEVEL) 00103000
- * GPR6-8 NOT USED 00104000
- * GPR9 = ADDRESS OF COMMAND LINE BUFFER 00105000
- * GPR10 = IOBLOK BASE 00106000
- * GPR11 = VMBLOK BASE 00107000
- * GPR12 = MODULE BASE 00108000
- * GPR13 = SAVEAREA BASE 00109000
- * GPR14 = EXTERNAL LINKAGE 00110000
- * GPR15 = EXTERNAL LINKAGE 00111000
- * 00112000
- * OPERATION - 00113000
- * 00114000
- * THE COMMAND HANDLING ROUTINES IN DMKCFG ARE CALLED FROM DMKCFM 00115000
- * AFTER THEIR PRIVILEGE CLASS HAS BEEN VERIFIED 00116000
- * THE FORMAT AND OPERATION OF EACH COMMAND IS DESCRIBED IN S 00117000
- * SEPARATE COMMAND PROLOGUES BELOW 00118000
- * 00119000
- *. 00120000
- EJECT 00121000
- COPY OPTIONS 00122000
- COPY LOCAL 00123000
- DMKCFG CSECT 00124000
- MODID DC CL8'DMKCFG' MODULE NAME @VM03098 00125000
- USING DMKCFG,R12 00126000
- SPACE 3 00127000
- USING PSA,R0 00128000
- USING VMBLOK,R11 00129000
- USING SAVEAREA,R13 00130000
- SPACE 2 00131000
- EXTRN DMKSCNFD 00132000
- EXTRN DMKSYSAP 00132002
- EXTRN DMKPTRUL 00133000
- EXTRN DMKCVTBH 00134000
- EXTRN DMKSNTBL 00135000
- EXTRN DMKSCNVS 00136000
- EXTRN DMKSCNVU 00137000
- EXTRN DMKRPAGT 00138000
- EXTRN DMKERMSG 00139000
- EXTRN DMKCVTHB,DMKPGSPO,DMKPGSPR,DMKVMI 00140000
- EXTRN DMKBLDRT,DMKVATMD,DMKCVTDB,DMKCFPRR @VM03171 00141000
- EXTRN DMKPGSPS @VA11919 00142100
- EXTRN DMKVMAS1,DMKVMAS2 @VM03171 00143000
- EXTRN DMKPGSPP @VA05638 00144000
- EJECT 00145000
- *. 00146000
- * 00147000
- * SUBROUTINE NAME - 00148000
- * 00149000
- * DMKCFGIP 00150000
- * FUNCTION - 00151000
- * 00152000
- * TO INITIATE AN INITIAL PROGRAM LOAD FUNCTION FOR THE 00153000
- * VIRTUAL MACHINE. 00154000
- * 00155000
- * ENTRY POINTS - 00156000
- * DMKCFGII - ENTRY TO IPL FROM LOGON (DMKLOG). 00157000
- * DMKCFGIP - ENTRY TO IPL FROM COMMAND PROCESSING (DMKCFM). 00158000
- * 00159000
- * COMMAND LINE FORMAT - 00160000
- * 00161000
- * +-----+---------------------------------------------------+ 00162000
- * | IPL | VADDR <CYL-NO> <STOP> <CLEAR> | 00163000
- * | I | <NOCLEAR> | 00164000
- * | | <PARM P1 P2 ...> | 00165000
- * | | SYSTEM NAME | 00166000
- * +-----+---------------------------------------------------+ 00167000
- * 00168000
- * OPERATION - 00169000
- * 00170000
- * 1. DMKCFGII - ENTRY FROM LOGON. SET FLAG TO INDICATE 00171000
- * THIS AND GO TO STEP 3. 00172000
- * 2. DMKCFGIP - ENTRY FROM DMKCFM. SET DEFAULT FLAG (NOCLEAR). 00173000
- * CALL DMKSCNFD TO LOCATE THE FIRST ARGUMENT. IF NONE FOUND, 00174000
- * CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFG026E. 00175000
- * 3. IF THE LENGTH OF THE FIRST ARGUMENT IS OVER THREE 00176000
- * CHARACTERS, IT MUST BE A NAME(NOT A DEVICE ADDRESS) SO GO 00177000
- * TO STEP 10. IF THREE CHARACTERS OR LESS, IT COULD BE 00178000
- * EITHER. CALL DMKCVTHB TO CONVERT THE ARGUMENT TO BINARY. 00179000
- * 4. IF THE CONVERT FAILS, IT IS ASSUMED TO BE AN IPL BY NAME 00180000
- * SO GO TO STEP 10. 00181000
- * 5. IF THE CONVERT IS SUCCESSFUL, IT IS ASSUMED TO BE AN IPL 00182000
- * BY DEVICE ADDRESS. IF ENTERED FROM LOGON, GO STEP 15. 00183000
- * 6. CALL DMKSCNFD TO LOCATE THE NEXT ARGUMENT. IF NONE ARE 00184000
- * FOUND, GO TO STEP 12. 00185000
- * 6A. IF ARGUMENT IS 'STOP' SET UP FLAG ACCORDINGLY AND GO 00186000
- * BACK TO STEP 6. 00187000
- * 7. IF THE ARGUMENT IS 'CLEAR', GO TO STEP 8. IF IT IS NOT 00188000
- * 'NOCLEAR', GO TO STEP 9. IF 'NOCLEAR', CHECK FOR THE PROPER 00189000
- * ABREVIATION AND IF IN ERROR CALL DMKERMSG TO SEND ERROR 00190000
- * MESSAGE DMKCFG002E. IF 'CLEAR' HAD PREVIOSLY BEEN ENTERED, 00191000
- * CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFG013E. IF NOCLEAR 00192000
- * HAS BEEN ENTERED TWICE, CALL DMKERMSG TO SEND ERROR 00193000
- * MESSAGE DMKCFG003E. IF OK, SET THE NOCLEAR FLAG AND GO 00194000
- * BACK TO STEP 6. 00195000
- * 8. IF 'NOCLEAR' HAS PREVIOSLY BEEN ENTERED, CALL DMKERMSG 00196000
- * TO SEND ERROR MESSAGE DMKCFG013E. IF 'CLEAR' HAS BEEN 00197000
- * ENTERED TWICE, CALL DMKERMSG TO SEND ERROR MESSAGE 00198000
- * DMKCFG003E. IF OK, SET CLEAR FLAG AND GO BACK TO STEP 6. 00199000
- * 9. BAL TO STEP 44 TO CHECK FOR 'PARM'. IF A PARM WAS PROCESSED 00200000
- * GO TO STEP 12. IF NOT, CALL DMKCVTDB TO CONVERT THE CYL-NO 00201000
- * TO BINARY. IF THE CONVERT FAILS, CALL DMKERMSG TO SEND 00202000
- * ERROR MESSAGE DMKCFG002E. IF A CYL-NO HAD BEEN ENTERED 00203000
- * PREVIOUSLY, CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFG002E. 00204000
- * IF OK, SAVE THE CYL-NO IN SAVEWRK4 AND GO BACK TO STEP 6. 00205000
- * 10.SET THE FLAG TO INDICATE A NAMED IPL. IF ENTERED FROM 00206000
- * LOGON, GO TO STEP 19. IF NOT, CALL DMKSCNFD TO CHECK FOR 00207000
- * 11.IF ONE IS FOUND, BAL TO STEP 44 TO CHECK FOR 'PARM'. IF NO 00208000
- * ARGUMENT IS FOUND, GO TO STEP 13. WHEN RETURN FROM 00209000
- * STEP 44, TEST IF 'PARM' WAS PROCESSED. IF NOT WE HAVE AN 00210000
- * ERROR. CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFG003E -ELSE 00211000
- * GO TO STEP 13. 00212000
- * 12. SET UP THE PARAMETER REG 2 FOR DMKPGS - EITHER CLEAR OR 00213000
- * NOCLEAR. 00214000
- * 13 CALL DMKPSGPO TO CLEANUP FROM ANY PREVIOUS IPL. 00215000
- * 14. CALL DMKCFPRR TO RESET THE VIRTUAL MACHINE. IF IPL BY 00216000
- * NAME GO TO STEP 20 - ELSE CONTINUE. 00217000
- * 15. IF THE VIRTUAL MACHINE SIZE IS 64 PAGES OR LARGER, USE 00218000
- * ADDRESS 40000 HEX FOR THE ADDRESS FOR THE IPL SIMULATOR. 00219000
- * GO STEP 17. 00220000
- * 16. IF THE VIRTUAL MACHINE SIZE IS LESS THAN 64 PAGES, 00221000
- * CALCULATE THE ADDRESS OF THE MIDDLE PAGE OF THE VIRTUAL 00222000
- * MACHINE TO BE USED FOR THE IPL SIMULATOR. 00223000
- * 17. CALL DMKRPAGT TO BRING THE IPL SIMULATOR (DMKVMI) INTO 00224000
- * THE ALLOCATED PAGE. 00225000
- * 18. CALL DMKSCNVU TO INSURE THE VIRTUAL ADDRESS WAS VALID. IF 00226000
- * NOT VALID, CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFG040E. 00227000
- * IF OK, SET UP USER PAGE ZERO WITH THE IPL DEVICE ADDRESS 00228000
- * CONSOLE ADDRESS, AND THE CYLINDER NUMBER. 00229000
- * 18A. IF 'STOP' WAS REQUESTED, SET THE IPL STOP FLAG TO 00230000
- * ONE AT LOCATION 'E'. 00231000
- * 19. IF IPL-ING A SHARED SYSTEM, TURN OFF VM ASSIST. IF IPL-ING 00232000
- * A NONSHARED SYSTEM AND IF USER WANTS VM ASSIST ON, AND IF 00233000
- * TRACING IS NOT IN EFFECT, AND IF USER HAS NO DEDICATED 00234000
- * CHANNELS, THEN TURN ON VM ASSIST. 00235000
- * 19A. IF ENTERED FROM LOGON, EXIT. IF ENTERED FROM DMKCFM, 00236000
- * SET UP TO RETURN PLUS 4 AND EXIT. 00237000
- * 20. TRANS AND LOCK DMKSNT. IF THE NAME ENTERED IS IN 00238000
- * EXCESS OF 8 CHARACTERS, BAL TO STEP 43 TO UNLOCK 00239000
- * DMKSNT AND CALL DMKERMSG TO SEND ERROR MESSAGE 00240000
- * DMKCFG044E. 00241000
- * 21. COMPARE THE ARGUMENT TO THE SYSNAME IN THE SYSTBL. 00242000
- * IF THEY COMPARE SKIP TO STEP 23A 00243000
- * 22. IF LAST ENTRY IN SYSTBL, BAL TO STEP 43 TO UNLOCK THE 00244000
- * SYSTBL. THEN CALL DMKERMSG TO SEND ERROR MESSAGE 00245000
- * DMKCFG044. IF NOT THE LAST ENTRY - CONTINUE. 00246000
- * 23. GET NEXT ENTRY FROM SYSTBL AND GO TO STEP 21. 00247000
- * 23A IF ENTRY FOR IPL, GO TO STEP 24 00248000
- * ELSE CALL DMKPGSPR AND SKIP TO STEP 24A. 00249000
- * 24. IF THE MINIMUM SYSTEM SIZE IS GREATER THAN THE SIZE OF 00250000
- * THE VIRTUAL MACHINE, BAL TO STEP 42 TO UNLOCK THE SYSTBL 00251000
- * AND THEN CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFG170E. 00252000
- * 24A CALL DMKBLDRT TO BUILD PAGE AND SWAP TABLES 00253000
- * FROM THE 1ST SAVED PAGE TO THE SYSSIZE 00254000
- * 25. CALL DMKSCNVS TO FIND IF VIRTUAL SYSRES VOLUME IS 00255000
- * MOUNTED. IF NOT MOUNTED, GO TO STEP 42. 00256000
- * 26.CALL DMKSCNVU TO FIND VIRTUAL DEVICE BLOKS FOR THE VADDR 00257000
- * OF VSYSRES. IF NOT FOUND, DMKERMSG TO SEND ERROR 00258000
- * MESSAGE DMKCFG173E. 00259000
- * 27. CALL DMKSCNVS TO FIND IF SYSVOL IS MOUNTED. IF NOT 00260000
- * MOUNTED, GO TO STEP 42. 00261000
- * 28. CALL DMKRPAGT TO BRING IN THE SAVTABLE. 00262000
- * 29. INITIALIZE THE VIRTUAL REGISTERS AND VIRTUAL PSW. 00263000
- * 30. INITIALIZE THE NEXT RANGE OF PAGES TO PROCESS. 00264000
- * 31. COMPUTE THE ADDRESS OF THE NEXT SWPTABLE ENTRY. 00265000
- * 32. STORE THE 'CCPD' FOR THE SAVED PAGE AND THE SAVED KEYS 00266000
- * INTO THE SWPTABLE ENTRY. IF THERE ARE MORE PAGES TO THIS 00267000
- * GROUP, GO BACK TO STEP 31 - ELSE CONTINUE. 00268000
- * 33. IF THERE ARE MORE RANGES TO PROCESS, GO TO STEP 30. 00269000
- * 34. IF THERE ARE NO SHARE SEGMENTS TO PROCESS, GO TO STEP 41. 00270000
- * IF SHARED SYSTEM DOES NOT ALREADY EXIST, GO TO STEP 37. 00271000
- * 35. GET THE NEXT SHARED SEGTABLE ENTRY. 00272000
- * 36. POINT THE SEGTABLE TO THE SHARED PAGTABLE AND CALL 00273000
- * DMKFRET TO FRET THE ORIGINAL PAG AND SWPTABLES. IF THERE 00274000
- * ARE MORE SHARED SEGMENTS TO PROCESS, GO BACK TO STEP 35. 00275000
- * IF NO MORE, GO TO STEP 40. 00276000
- * 37. COME HERE IF HAVE TO BUILD NEW SHRTABLE. CALL DMKFREE TO 00277000
- * GET STORAGE FOR SHRTABLE. 00278000
- * 38. GET NEXT SHARED SEGTABLE ENTRY. 00279000
- * 39. FLAG THE SWPTABLE FOR THIS SEGMENT AS SHARED. IF MORE 00280000
- * SEGMENTS ARE TO BE PROCESSED, GO BACK TO STEP 38. IF NOT, 00281000
- * INSERT THE SHRTABLE INTO THE CHAIN OF SHRTABLES. 00282000
- * 40. STORE THE SHRTABLE ADDRESS IN THE VMBLOK. 00283000
- * 41. BAL TO STEP 43 TO UNLOCK DMKSNT. IF VIRTUAL SYSTEM IS IN 00284000
- * ECMODE WITH TRANSLATE ON, CALL DMKVATMD TO SET UP SHADOW 00285000
- * TABLES. THEN GO TO STEP 19. 00286000
- * 42. BAL TO STEP 43 TO UNLOCK DMKSNT AND THEN CALL DMKERMSG 00287000
- * TO SEND ERROR MESSAGE DMKCFG171E. 00288000
- * 43. SUBROUTINE TO UNLOCK DMKSNT. CALL DMKPTRUL TO 00289000
- * DO THE UNLOCK. THEN RETURN ON REG 9. 00290000
- * 44. SUBROUTINE TO PROCESS 'PARM' FIELDS. FIRST CHECK IF THE 00291000
- * ARGUMENT PASSED IS 'PARM'. IF NOT, RETURN ON REG 8. IF IT 00292000
- * IS, CALL DMKSCNFD TO LOCATE THE FIRST CHARACTER OF THE 00293000
- * PARM FIELD. CALCULATE THE NUMBER OF CHARACTERS IN THE PARM 00294000
- * FIELD. IF THERE ARE MORE THAN 64 CHARACTERS, CALL DMKERMSG 00295000
- * TO SEND ERROR MESSAGE DMKCFG177E - ELSE SET THE PARM FLAG, 00296000
- * MOVE THE PARM INTO THE VIRTUAL GENEREAL PURPOSE REGISTERS, 00297000
- * AND STORE THE BYTE COUNT INTO SAVEWRK1 -- THEN RETURN ON 00298000
- * REG 8. 00299000
- * 00300000
- * RESPONSES - 00301000
- * 'TRACE ENDED' MESSAGE IS GIVEN IF V.M. TRACING PREVIOUSLY IN 00302000
- * EFFECT WAS TERMINATED UPON THE IPL OF A SHARED NAME SYSTEM. 00303000
- * 00304000
- * IN ALL OTHER CASES FOR A SUCCESSFUL IPL, ANY RESPONSE WILL 00305000
- * COME ONLY FROM THE IPL'ED SYSTEM. 00306000
- * 00307000
- * ERROR MESSAGES - 00308000
- * DMKCFG002E INVALID OPERAND - (OPERAND) 00309000
- * DMKCFG003E INVALID OPTION - (OPTION) 00310000
- * DMKCFG006E INVALID DEVICE TYPE - (VADDR) 00311000
- * DMKCFG013E CONFLICTING OPTION - (OPTION) 00312000
- * DMKCFG022E VADDR MISSING OR INVALID 00313000
- * DMKCFG026E OPERAND MISSING OR INVALID 00314000
- * DMKCFG040E DEV (ADDR) DOES NOT EXIST 00315000
- * DMKCFG044E SYSTEM (NAME) DOES NOT EXIST 00316000
- * DMKCFG170E SYSTEM (NAME) EXCEEDS STORAGE 00317000
- * DMKCFG171E SYSTEM (NAME) VOLID (VOLID) NOT MOUNTED 00318000
- * DMKCFG172E SYSTEM (NAME) DASD (VADDR) INCOMPATIBLE SYSRES 00319000
- * DMKCFG173E SYSTEM (NAME) REQUIRES DASD (VADDR) 00320000
- * DMKCFG174E PAGING I/O ERROR; IPL FAILED 00321000
- * DMKCFG177E PARM EXCEEDS 64 CHARACTERS 00322000
- *. 00323000
- * DMKCFG203E V=R AREA REQUIRES IPL BY DEVICE ADDRESS 00323100
- EJECT 00324000
- * EQUATES USE IN FLAG BYTE IN SAVEWRK1 00325000
- SPACE 00326000
- FRMLOGON EQU X'80' INDICATES IPL CALLED FROM LOGON @V304635 00327000
- * PROCESS 00328000
- NOCLEAR EQU X'40' DO NOT CLEAR STORAGE @V304635 00329000
- NAMEDIPL EQU X'20' PROCESSING IPL BY NAME @V304635 00330000
- IPLST EQU X'10' SET ADSTOP AFTER IPL @V304635 00331000
- CLEARFND EQU X'08' FLAG FOR CLEAR FOUND IN COMMAND @V304635 00332000
- NOCLFND EQU X'04' FLAG NOCLEAR FOUND IN COMMAND @V304635 00333000
- CYLFND EQU X'02' FLAG CYL NO FOUND IN COMMAND @V304635 00334000
- PARMFND EQU X'01' FLAGS EXISTENCE OF A PARM FIELD @V304635 00335000
- SPACE 2 00336000
- * EQUATES USE IN FLAG BYTE SAVEWRK1+2 00337000
- SPACE 1 00338000
- NONSHARE EQU X'08' REQUEST FOR NONSHARED MODE @V304635 00339000
- PURFLG EQU X'04' PURGESYS FUNCTION @V304635 00340000
- FINDFLG EQU X'02' FINDSYS FUNCTION @V304635 00341000
- LOADFLG EQU X'01' LOADSYS FUNCTION @V304635 00342000
- SPACE 2 00343000
- * THIS IS THE ENTRY POINT FROM LOGON 00344000
- SPACE 00345000
- DMKCFGII RELOC @V304635 00346000
- XC SAVEWRK1,SAVEWRK1 CLEAR FLAGS @V304635 00347000
- MVI SAVEWRK1,FRMLOGON+NOCLEAR SET UP FLAG BYTE @V304635 00348000
- B IPLSAVE . . . @V304635 00349000
- SPACE 4 00350000
- * ENTER HERE FROM CFM 00351000
- SPACE 00352000
- DMKCFGIP RELOC @V304635 00353000
- XC SAVEWRK1,SAVEWRK1 CLEAR FLAGS @V304635 00354000
- XC SAVEWRK2(SAVEWRK9-SAVEWRK2+4),SAVEWRK2 CLEAR @VM03100 00355000
- * WORKSAVE AREA 00356000
- NI VMSPMFLG,X'FF'-VMCPVIRT RESET CP VIRT @VA09952 00356100
- MVI SAVEWRK1,NOCLEAR SET DEFAULT @V304635 00357000
- CALL DMKSCNFD LOCATE DEVICE ADDRESS OR NAME @V304635 00358000
- BNZ CFG026 BRANCH IF NOTHING FOUND @V304635 00359000
- MVC VMCOMND+4(LEN4),0(R1) SAVE DEV NAME IPL'ED @VM03100 00360000
- NI VMQSTAT,X'FF'-VMPA2APL CLEAR PA2 FLAG @VM03116 00361000
- SPACE 2 00362000
- IPLSAVE XC SAVEWRK2(SAVEWRK9-SAVEWRK2+4),SAVEWRK2 CLEAR @VM03100 00363000
- * THEM ALL 00364000
- STM R0,R1,SAVEWRK2 SAVE LENGTH AND ADDRESS OF @V304635 00365000
- * ARGUMENT 00366000
- CL R0,F3 IF THE ARGUMENT OVER 3 CHAR.= @V304635 00367000
- * NAME 00368000
- BH IPLNAME SO GO PROCESS AS SUCH @V304635 00369000
- CALL DMKCVTHB TRY TO CONVERT TO BINARY @V304635 00370000
- BNZ IPLNAME BRANCH IF CONVERT FAILED-MUST @V304635 00371000
- * BE NAME 00372000
- ST R1,SAVEWRK2 SAVE VIRTUAL ADDRESS FOR LATER @V304635 00373000
- TM SAVEWRK1,FRMLOGON ENTERED FROM LOGON ???? @V304635 00374000
- BZ IPLSCNLP BRANCH IF NOT-SCAN FOR REST OF @V304635 00375000
- * ARGS. 00376000
- B IPLBYDEV GO STRAIGHT TO DEVICE IPL @V304635 00377000
- SPACE 2 00378000
- IPLSCNLP CALL DMKSCNFD LOCATE NEXT ARGUMENT @V304635 00379000
- BNZ IPLSETR2 BRANCH IF NO MORE ARGUEMNTS @V304635 00380000
- STM R0,R1,SAVEWRK7 SAVE LENGTH AND ADDRESS OF @V304635 00381000
- * ARGUEMNT 00382000
- CLC =C'STOP',0(R1) DOES HE WANT IPL STOP ? @VM03100 00383000
- BNE NOCLRCHK NO - TEST FOR NOCLEAR @V304635 00384000
- CL R0,F4 WAS IT FOUR BYTES LONG? @V304635 00385000
- BNE NOCLRCHK NO - TEST FOR NOCLEAR @V304635 00386000
- TM SAVEWRK1,IPLST DID HE SPECIFY STOP ALREADY? @V304635 00387000
- BO CFG003 YES - NOT ALLOWED @V304635 00388000
- OI SAVEWRK1,IPLST SET FLAG FOR IPL STOP @V304635 00389000
- B IPLSCNLP LOOP BACK FOR MORE OPTIONS @V304635 00390000
- NOCLRCHK EQU * @V304635 00391000
- LR R2,R0 LENGTH TO R2 FOR EX @V304635 00392000
- CL R2,F2 TWO OR MORE CHARACTERS ???? @V304635 00393000
- BL IPLCYLCV IF ONLY ONE, MUST BE CYLINDER @V304635 00394000
- * NUMBER 00395000
- BCTR R2,0 MINUS ONE FOR EX @V304635 00396000
- EX R2,CLEARCMP IS IT 'CLEAR' @V304635 00397000
- BE IPLSETCL BRANCH IF IT IS @V304635 00398000
- EX R2,NOCLRCMP NOCLEAR ???? @V304635 00399000
- BNE IPLPARM NO -- GO CHECK FOR A PARM @V304635 00400000
- CLC =C'NOCL',0(R1) ABREV. CORRECT ???? @VM03100 00401000
- BNE CFG002 NO GOOD - GO SEND ERROR MESSAGE @V304635 00402000
- TM SAVEWRK1,CLEARFND HAS CLEAR BEEN FOUND ????? @V304635 00403000
- BO CFG013 CAN'T HAVE BOTH @V304635 00404000
- TM SAVEWRK1,NOCLFND HAS NOCLEAR ALREADY BEEN @V304635 00405000
- * FOUND ONCE 00406000
- BO CFG003 BRANCH IF IT HAS --- @V304635 00407000
- OI SAVEWRK1,NOCLFND FLAG NOCLEAR AS BEING SPEC. @V304635 00408000
- * ONCE 00409000
- B IPLSCNLP LOOP BACK-NOCLEAR ALREADY SET @V304635 00410000
- SPACE 2 00411000
- IPLSETCL NI SAVEWRK1,X'FF'-NOCLEAR RESET NOCLEAR FLAG @VM03100 00412000
- TM SAVEWRK1,NOCLFND HAS NOCLEAR BEEN SPECIFIED ????@V304635 00413000
- BO CFG013 ERROR IF IT HAS @V304635 00414000
- TM SAVEWRK1,CLEARFND HAS CLEAR BEEN FOUND BEFORE @V304635 00415000
- BO CFG003 CAN'T LET THEM DO THAT @V304635 00416000
- OI SAVEWRK1,CLEARFND FLAG IT AS BEING FOUND ONCE @V304635 00417000
- B IPLSCNLP LOOP BACK @V304635 00418000
- SPACE 2 00419000
- IPLPARM EQU * @V304635 00420000
- BAL R8,CHKPARM GO CHECK FOR PARM @V304635 00421000
- TM SAVEWRK1,PARMFND IS THERE ONE ???? @V304635 00422000
- BO IPLSETR2 YES - NO MORE SCANNING TO DO @V304635 00423000
- LM R0,R1,SAVEWRK7 RESTORE THE ORIGINAL STUFF @V304635 00424000
- IPLCYLCV CALL DMKCVTDB CONVERT CYL NO. TO BINARY @V304635 00425000
- BNZ IPLINVCY BRANCH IF CONVERT FAILS @V304635 00426000
- CL R1,=XL4'FFFF' NUMBER EXCEED MAX. HALF WORD @V304635 00427000
- * VALUE ? 00428000
- BH IPLINVCY BRANCH IF IT DOES @V304635 00429000
- ST R1,SAVEWRK4 SAVE CYLINDER NUMBER FOR LATER @V304635 00430000
- TM SAVEWRK1,CYLFND HAVE WE BEEN HERE BEFORE ??? @V304635 00431000
- BO IPLINVCY YES -- AND THATS A NO NO @V304635 00432000
- OI SAVEWRK1,CYLFND FLAG AS BEING HERE ONCE @V304635 00433000
- B IPLSCNLP LOOP BACK @V304635 00434000
- SPACE 2 00435000
- IPLINVCY LM R0,R1,SAVEWRK7 RESTORE ARGUMENT LENGTH AND @V304635 00436000
- * ADDRESS 00437000
- B CFG002 GO SEND ERROR MESSAGE @V304635 00438000
- SPACE 2 00439000
- CLEARCMP CLC 0(*-*,R1),=C'CLEAR ' EXECUTED COMPARE @VM03100 00440000
- NOCLRCMP CLC 0(*-*,R1),=C'NOCLEAR ' EXECUTED COMPARE @VM03100 00441000
- SPACE 2 00442000
- IPLNAME CL R11,AVMREAL IS USER THE V=R USER ? @V304735 00443000
- BE CFG203 YES - CAN'T IPL BY NAME @V304735 00444000
- OI SAVEWRK1,NAMEDIPL SET NAME BIT IN FLAGS @V304735 00445000
- TM SAVEWRK1,FRMLOGON DID WE IPL FROM LOGON ????? @V304635 00446000
- BO IPLBYNAM BR. IF YES-NO NEED TO CLEANUP @V304635 00447000
- CALL DMKSCNFD ANY MORE ARGUMENTS @V304635 00448000
- BNZ IPLSETR2 NO --- @VA11699 00449100
- BAL R8,CHKPARM GO CHECK FOR A PARM @V304635 00450000
- TM SAVEWRK1,PARMFND WAS A PARM FOUND @V304635 00451000
- BZ CFG003 IF ANYTHING ELSE - HAVE AN ERROR @V304635 00452000
- SPACE 2 00455000
- IPLSETR2 SR R2,R2 ASSUME CLEAR @V304635 00456000
- TM SAVEWRK1,NOCLEAR NOCLEAR SET ???? @V304635 00457000
- BZ CALLPGS BRANCH IF NOT @V304635 00458000
- LA R2,NOCLEAR TELL PGS NOT TO CLEAR @V304635 00459000
- SPACE 2 00460000
- CALLPGS CALL DMKCFPRR RESET THE VM. @V304635 00461000
- TM SAVEWRK1,NAMEDIPL IPL BY NAME????? @VA11699 00462100
- BO IPLBYNAM BRANCH IF YES -- @VA11699 00463100
- CALL DMKPGSPO CLEAR STORAGE (MAYBE) @VA11699 00464100
- SPACE 2 00465000
- IPLBYDEV L R1,VMSIZE LOAD SIZE OF STORAGE @V304635 00466000
- CL R1,=X'00040000' IS IT LESS THAN 64 PAGES ? @V304635 00467000
- BL IPLHALF NO, TAKE BRANCH @V304635 00468000
- L R1,=X'00040000' YES, SET TO PAGE 64 @V304635 00469000
- IPLHALF SRL R1,1 USE MIDDLE PAGE OF VIRT. @V304635 00470000
- * STORAGE FOR IPL 00471000
- N R1,=X'0007F000' REMOVE HALF PAGE @V304635 00472000
- ST R1,VMPSW+4 SET ADDRESS OF IPL SIMULATOR IN @V304635 00473000
- * PSW 00474000
- * 00475000
- * FOLLOWING ROUTINE FINDS THE ENTRY IN CP'S SWPTABLE FOR THE 00476000
- * IPL SIMULATOR - DMKVMI. AFTER IT FINDS THIS, A CALL 00477000
- * TO RPAGEGET - DMKRPAGT- IS MADE TO RELEASE USER PAGE, 00478000
- * IF IT IS IN STORAGE, AND BRING IN THE IPL SIMULATOR IN 00479000
- * ITS PLACE. THE USERS SWAPTABLE IS ALSO UPDATED TO POINT 00480000
- * TO THE IPL SIMULATORS PAGE ON DASD BY RPAGEGET. 00481000
- * 00482000
- * FOR 65K SEGMENTS - VIRT. ADDR. = | SEG | PG | DISP | 00483000
- * | 8 | 4 | 12 | 00484000
- * 00485000
- * 00486000
- GETVMI L R4,ASYSVM ADDRESS OF SYSTEM VMBLOK @VA13054 00487000
- L R4,VMSEG-VMBLOK(,R4) ADDRESS OF CP SEGTABLE @V304635 00488000
- L R2,=A(DMKVMI) ADDRESS OF THE IPL SIMULATOR @V304635 00489000
- SRDL R2,16 SEGMENT TO LOW ORDER OF GPR2, @V304635 00490000
- * PAGE TO GPR3 00491000
- SLL R2,2 SET UP R2 TO INDEX INTO SEGTABLE @V304635 00492000
- AR R4,R2 GPR4 NOW POINTS TO THE ADDRESS @V304635 00493000
- * OF PAGETBL 00494000
- L R4,0(,R4) GPR4 NOW CONTAINS ADDRESS OF @V304635 00495000
- * PAGE TABLE 00496000
- N R4,=A(X'FFFFFE') CLEAR UNWANTED BITS @V408246 00497000
- SRL R3,25 SET PAGE NUMBER *8 @V304635 00498000
- S R4,F4 POINT TO SWPTABLE POINTER @V304635 00499000
- L R4,0(,R4) GPR4 NOW ADDRESSES THE CP @V304635 00500000
- * SWPTABLE 00501000
- L R0,PAGCORE-PAGSWP(R3,R4) PICK DASD ADDRESS OF @VM03100 00502000
- * IPL SIMULATOR 00503000
- * IF MSS DEVICE, IT IS POSSIBLE R1-IPL PAGE ADDR WAS ZEROED 00503500
- L R1,VMPSW+4 GET ADDR OF IPL PAGE @VA13054 00503900
- CALL DMKRPAGT,PARM=BRING @V304635 00504000
- BNZ CFG174 IF GET I/O ERROR, GET OUT @V304635 00505000
- SR R1,R1 PAGE ZERO @V304635 00506000
- TRANS 2,1,OPT=(BRING,DEFER) BRING IN USER PAGE ZERO @V304635 00507000
- L R1,SAVEWRK2 LOAD VADDR @V304635 00508000
- CALL DMKSCNVU FIND VBLOKS @V304635 00509000
- BNZ CHKMOUNT COULD BE A MSS DEVICE WITH AN @VA13054 00510500
- * OUTSTANDING MOUNT PENDING 00510700
- USING USERSTOR,R2 @VM03100 00511000
- MVC DEVAREA,SAVEWRK2+2 IPL DEVICE ADDRESS TO PAGE @VM03100 00512000
- * ZERO 00513000
- MVC MSGBYTE,VMMLEVEL SAVE EMSGOR MSG STATE BYTE @VM03100 00514000
- MVC CYLAREA,SAVEWRK4+2 MOVE CYL-NO TO PAGE ZERO @VM03100 00515000
- MVI STOPBYTE,NOSTOP SPECIFY NO STOP FOR DEFAULT @VM03100 00516000
- TM SAVEWRK1,IPLST DID HE SPECIFY STOP ? @VM03100 00517000
- BZ IPLEXIT NO - CONTINUE AS USUAL @VM03100 00518000
- OI STOPBYTE,IPLSTOP INDICATE IPL STOP @VM03100 00519000
- IPLEXIT MVI VMPSW+1,X'00' TAKE OUT OF WAIT @VM03100 00520000
- IPLEXIT1 NI VMRSTAT,X'FF'-VMIOWAIT TAKE OFF WAIT @VM03100 00521000
- TM SAVEWRK1,FRMLOGON COME HERE FROM LOGON ??? @VM03100 00522000
- BO RETURN BRANCH IF SO @VM03100 00523000
- TM SAVEWRK1+2,LOADFLG+PURFLG+FINDFLG @VM03100 00524000
- BNZ RETURN YES, RETURN NORMALLY (PSW WAS @VM03100 00525000
- * NOT CHANGED) 00526000
- L R5,SAVERETN LOAD CFM'S RETURN ADDRESS @VM03100 00527000
- LA R5,RETPLUS4(,R5) BUMP BY 4 TO ALLOW VM TO RUN @VM03100 00528000
- ST R5,SAVERETN STORE BACK @V304635 00529000
- B RETURN EXIT TO CALLER @V304635 00530000
- CHKMOUNT EQU * @VA13054 00531020
- * 00531040
- * AT THIS POINT WE ARE ABOUT TO RETURN TO THE CALLER 00531060
- * WITH A CONDITION CODE 3 (DEVICE NOT AVAILABLE). 00531080
- * IF THE MSS IS IN THE SYSTEM, THE DEVICE MAY 00531100
- * BE "NOT AVAILABLE" BECAUSE AN MSS MOUNT IS IN 00531120
- * PROCESS. IF THAT IS THE CASE, STACK THIS VIRTUAL 00531140
- * REQUEST UNTIL THE MOUNT COMPLETES. 00531160
- * 00531180
- TM PSAMSS,MSSPRES IS THE MSS IN THIS SYSTEM @VA13054 00531200
- BZ CFG040 NO, THEN THE DEVICE DOES EXIST @VA13054 00531220
- L R2,SAVEWRK2 GET IPL VADRR @VA13054 00531240
- L R3,=V(DMKSSSMQ) WAIT Q FOR MSS MOUNTS @VA13054 00531260
- L R3,0(R3) PICK UP ACTUAL QUEUE @VA13054 00531280
- USING OSVSCOM,R3 ASSEMBLER ADDRESSABILITY @VA13054 00531300
- TESTCOM EQU * IS THERE A MSSCOM BLOCK @VA13054 00531320
- LTR R3,R3 IS THE CHAIN PTR 0 @VA13054 00531340
- BZ CFG040 YES, WERE NOT WAITING ON MSS @VA13054 00531360
- CLC VMUSER(VMUSERL),MSSUSER ARE WE WAITING @VA13054 00531380
- BNE NXTCOM NOT ON THIS BLOCK @VA13054 00531400
- L R4,MSSTASK1 TASK THAT IS WAITING @VA13054 00531420
- CH R2,CPEXMISC-CPEXBLOK(R4) VIRT DEV WAITING @VA13054 00531440
- BNE NXTCOM THIS VIRT DEV NOT WAITING @VA13054 00531460
- LA R0,CPEXSIZE SIZE OF A CPEXBLOK @VA13054 00531480
- CALL DMKFREE GET DYNAMIC STORAGE @VA13054 00531500
- USING CPEXBLOK,R1 @VA13054 00531520
- ST R1,MSSTASK3 @VA13054 00531540
- STM R0,R15,CPEXREGS SAVE REGS FOR LATER DISPATCH @VA13054 00531560
- LA R0,MSSRETRN RE-DISPATCH ADDRESS @VA13054 00531580
- ST R0,CPEXADD FIELD FOR DISPATCHER LATER @VA13054 00531600
- ST R2,CPEXMISC SAVE VADDR WHICH IS WAITING @VA13054 00531620
- LR R2,R12 GET MODULE ADDRESS FOR LOCK @VA13054 00531640
- CALL DMKPTRLK PAGEABLE MODULE - BETTER LOCK IT @VA13054 00531660
- GOTO DMKDSPCH WAIT FOR THE MSS @VA13054 00531680
- DROP R1 @VA13054 00531700
- NXTCOM EQU * GET NEXT MSSCOM BLOCK @VA13054 00531720
- L R3,MSSNEXT CHAIN PTR @VA13054 00531740
- B TESTCOM SEE IF THERE IS ONE @VA13054 00531760
- DROP R3 @VA13054 00531780
- MSSRETRN LR R2,R12 ALSO NEED BASE ADDR TO UNLOCK @VA13054 00531800
- CALL DMKPTRUL GO UNLOCK PAGE @VA13054 00531820
- B GETVMI MAKE IT LOOK LIKE WE NEVER LEFT @VA13054 00531840
- EJECT 00531860
- IPLBYNAM LM R1,R2,SAVEWRK2 LENGTH AND ADDRESS OF REQUESTED @V304635 00532000
- * NAME 00533000
- BCTR R1,0 MINUS ONE ON LENGTH FOR EX @V304635 00534000
- CL R1,F7 NAME OVER EIGHT CHARACTERS ???? @V304635 00535000
- BH CFG044A SEND ERROR MESSAGE IF IT IS @V304635 00536000
- MVC SAVEWRK2(L'SAVEWRK2+L'SAVEWRK3),BLANKS BLANK @VM03100 00537000
- * WORK AREA 00538000
- EX R1,MOVENAME MOVE NAME INTO WORK AREA @V304635 00539000
- SPACE 00540000
- LOADSYS DS 0H @V408246 00541000
- TM VMRSTAT,VMLOGOFF OTHER ACTIVITY STARTED? @V408246 00542000
- BO CFG001 YES, GET OUT AS FAST AS POSSIBLE @V408246 00543000
- BAL R5,GETSNTBL GET THE SYSTEM NAME TABLE @V408246 00544000
- USING SYSTBL,R4 ADDRESSABIILTY @V304635 00545000
- * GPR4 - WILL HOLD THE ADDRESS OF THE SYSTABLE THROUGH OUT 00546000
- * THE NAMED SYSTEM PROCESSING. 00547000
- SPACE 1 00548000
- NAMELOOP CLC SYSNAME,SAVEWRK2 COMPARE THE NAMES @VM03100 00549000
- BE NAMEHIT BRANCH IF HAVE A MATCH @V304635 00550000
- L R3,SYSPNT LOAD DISPLACEMENT TO NEXT @V304635 00551000
- * SYSTABLE ENTRY 00552000
- AR R4,R3 GET ACTUAL LOCATION ADDRESS OF @V304635 00553000
- * NEXT ENTRY 00554000
- LTR R3,R3 LAST ENTRY ??? @V304635 00555000
- BZ CFG044 CAN'T FIND NAME IN TABLE @V304635 00556000
- B NAMELOOP NO - GO TRY AGAIN @V304635 00557000
- SPACE 00557500
- NAMEHIT DS 0H @VA11699 00558000
- TM SAVEWRK1+2,LOADFLG ARE WE HERE ON A LOADSYS? @VA11699 00558500
- BO CKVOL YES, NO NEED TO CLEAN UP @VA11699 00559000
- TM SAVEWRK1,FRMLOGON ENTERED FROM LOGON??? @VA11699 00559500
- BO NOPGS YES, NO NEED TO CLEAN UP @VA11699 00560000
- SR R2,R2 PARM FOR DMKPGS @VA11699 00560500
- CALL DMKPGSPO @VA11699 00561000
- NOPGS DS 0H @VA11699 00561500
- L R5,VMSTOR FOR IPL, CHECK STORAGE SIZE @V304635 00562000
- CL R5,SYSSIZE COMPARE TO MIN. SIZE FROM @V304635 00563000
- * SYSTABLE 00564000
- BL CFG170 CORE NOT BIG ENOUGH @V304635 00565000
- CKVOL LH R1,SYSVADDR LOAD VIRTUAL ADDRESS OF SYSRES @V304635 00566000
- LTR R1,R1 REQUESTED 'IGNORE' VOLUME CHECK ?@V304635 00567000
- BM SKIPVOL IF 'FFFF' - DON'T CHECK FOR @V304635 00568000
- * MOUNTED 00569000
- LA R1,VSYSRES ADDR. FOR VOL. SER. OF VIRT. @V304635 00570000
- * SYSRES 00571000
- LA R0,L'VSYSRES SERIAL LENGTH @VM03100 00572000
- CALL DMKSCNVS SEARCH FOR VOLUME @V304635 00573000
- BNZ NOSYSRES 'VSYSRES' NOT MOUNTED @VM03201 00574000
- SPACE 00575000
- LR R5,R1 R5 NOW CONTAINS RDEVBLOK FOR @V304635 00576000
- * SYSRES 00577000
- LH R1,SYSVADDR LOAD VIRTUAL ADDRESS OF SYSRES @V304635 00578000
- CALL DMKSCNVU SEE IF THERE @V304635 00579000
- BNZ BLD173 ERROR IF NOT FOUND @VM03201 00580000
- SPACE 00581000
- USING VDEVBLOK,R8 @V304635 00582000
- SPACE 00583000
- LH R1,SYSCYL LOAD CYLINDER DISPLACEMENT @V304635 00584000
- CH R1,VDEVRELN DOES IT MATCH THIS DEVICE ??? @V304635 00585000
- BNE BLD172 NO - INCOMPATIBLE 'VSYSRES' @VM03201 00586000
- L R8,VDEVREAL LOAD ADDRESS OF RDEVBLOK @V304635 00587000
- USING RDEVBLOK,R8 @V304635 00588000
- CLC VSYSRES,RDEVSER IS VADDR ON THE RIGHT @VM03100 00589000
- * VOLUME ???? 00590000
- BNE BLD172 NOPE - @VM03201 00591000
- DROP R8 @V304635 00592000
- SPACE 00593000
- SKIPVOL LA R1,SYSVOL ADDRESS OF VOL. SERIAL FOR SYSVOL@V304635 00594000
- LA R0,L'SYSVOL SERIAL LENGTH @VM03100 00595000
- CALL DMKSCNVS SEARCH FOR THIS VOLUME @V304635 00596000
- BNZ NOSYSVOL SYSVOL NOT MOUNTED @V304635 00597000
- SPACE 00598000
- USING RDEVBLOK,R1 @V304635 00599000
- SPACE 00600000
- TM RDEVFLAG,RDEVOWN MAKE SURE DISK IS CPOWNED @V304635 00601000
- BZ NOSYSOWN IF NOT, CAN'T DO IT @V407511 00602000
- L R5,SYSSTART LOAD CCPD FOR START OF SYSTEM @V304635 00603000
- * ON SYSVOL 00604000
- IC R5,RDEVCODE+1 INSERT INDEX INTO OWNED LIST @V304635 00605000
- * FOR SYSVOL 00606000
- LA R0,PAGE2314 MAXIMUM PAGES/CYL ON 2314 @VM03100 00607000
- TM RDEVTYPE,TYP2314 IS THIS 2314 ???? @V304635 00608000
- BO SAVMAXPG YES ----- @V304635 00609000
- LA R0,PAGE3330 MAXIMUM PAGES/CYL ON 3330 @VM03100 00610000
- TM RDEVTYPE,TYP3330 IS IT ???? @V304635 00611000
- BO SAVMAXPG YES ----- @V304635 00612000
- LA R0,PAGE3350 MAXIMUM PAGES/CYL ON 3350 @VM03100 00613000
- CLI RDEVTYPE,TYP3350 IS IT ???? @V304498 00614000
- BE SAVMAXPG YES ----- @V304498 00615000
- LA R0,PAGE3375 Maximum pages/cyl on 3375 HRC106DK 00615100
- TM RDEVTYPE,TYP3375 Is this a 3375 HRC106DK 00615200
- BO SAVMAXPG Yes ----- HRC106DK 00615300
- LA R0,PAGE3380 Maximum pages/cyl on 3380 HRC106DK 00615400
- TM RDEVTYPE,TYP3380 Is this a 3380 HRC106DK 00615500
- BO SAVMAXPG Yes ----- HRC106DK 00615600
- LA R0,PAGE2305 PAGES/CYL FOR 2305 AND 3340 @VM03100 00616000
- SPACE 00617000
- SAVMAXPG SLL R0,8 SET UP FOR LATER COMPARE @V304635 00618000
- ST R0,SAVEWRK5 STORE IT AWAY FOR LATER USE @V304635 00619000
- SPACE 00620000
- DROP R1 @V304635 00621000
- SPACE 00622000
- * THE FOLLOWING CODE WILL TRANS IN THE FIRST SAVED DASD PAGE 00623000
- * FROM SYSVOL. THIS PAGE CONTAINS THE SAVED PSW,REGISTERS, 00624000
- * AND KEYS. THE VMBLOK IS THEN UPDATED WITH THIS SAVED DATA. 00625000
- * THEN THE SWPTABLES ARE UPDATED WITH THE SAVED KEYS 00626000
- * AND THE CCPD'S FOR SYSVOL. 00627000
- * REGISTER USAGE IN THIS ROUTINE ARE AS FOLLOWS: 00628000
- * GPR3 - INDEX COUNT TO STEP THRU SYSPAGNM ENTRIES 00629000
- * GPR4 - ADDRESS OF PROPER SYSTABLE ENTRY 00630000
- * GPR5 - CCPD OF CURRENT PAGE ON SYSVOL 00631000
- * GPR6 - CONSTANT USED TO INCREMENT CCPD IN R5 00632000
- * GPR7 - COUNT OF SYSPAGNM ENTRIES LEFT TO PROCESS 00633000
- * GPR8 - CURRENT PAGE ADDRESS 00634000
- * GPR9 - ENDING PAGE ADDRESS(OF SYSPAGNM ENTRY BEING PROCESSED) 00635000
- * GPR 10 -ADDRESS OF 1ST SAVED PAGE 00636000
- SPACE 3 00637000
- TM SAVEWRK1+2,LOADFLG LOADSYS COMMAND @V304635 00638000
- BO PAGRELCK YES - RELEASE THE ORIGINAL PAGES @V304735 00639000
- LH R1,SYSPAGLN CALC. ADDR. OF SYSHRSEG @V304735 00640000
- SLL R1,2 TIMES FOUR @V407511 00641000
- LA R1,SYSPAGNM(R1) R1 = POINTER TO SYSSEGLN @V304735 00642000
- USING SYSSEGLN,R1 @V304735 00643000
- LH R1,SYSSEGLN TEST FOR SHARED NAMED SYSTEM @V304735 00644000
- LTR R1,R1 IPL'ING A SHARED SYSTEM? @V304735 00645000
- BZ SKIPREL IF NOT - BYPASS PAGE RELEASE @V304735 00646000
- DROP R1 @V304735 00647000
- PAGRELCK LH R7,SYSPAGLN NUMBER OF ENTRIES IN SYSPAGNM @V304735 00648000
- SLR R3,R3 CLEAR @V304635 00649000
- PAGRELNM LH R1,SYSPAGNM(R3) GET BEGINNING PAGE ADDRESS @V304635 00650000
- SRL R1,4 FORCE LOGICAL PAGE ZERO @VA07252 00651200
- SLL R1,16 FORM FULL PAGE ADDRESS @VA07252 00651400
- LH R2,SYSPAGNM+2(R3) GET ENDING PAGE ADDRESS @V304635 00652000
- O R2,F15 MAKE IT A COMPLETE SEGMENT @VA07252 00652500
- SLL R2,12 FORM ENDING PAGE ADDRESS @V304635 00653000
- CALL DMKPGSPR RELEASE PAGES FROM RANGE IN R1-R2@VA04764 00654000
- LA R3,L'SYSPAGNM(,R3) INDEX TO NEXT SYSPAGNM @VM03100 00655000
- BCT R7,PAGRELNM RELEASE ALL PAGES REFERENCED IN @V304635 00656000
- * SYSTABLE 00657000
- SPACE 1 00658000
- LM R1,R2,SYSNAME IDENT. OF NAMED SYSTEM @V304635 00659000
- CALL DMKPGSPS PURGE THE NAMED SYSTEM @V304635 00660000
- LH R7,SYSPAGLN RESTORE NUMBER ENTRIES IN @V304635 00661000
- * SYSTABLE 00662000
- SLR R3,R3 CLEAR INDEX REGISTER @V304635 00663000
- PAGBLDTB L R1,SYSPAGNM(R3) BUILD NECESSARY PAGE TABLES @V304635 00664000
- N R1,=X'FFF0FFFF' RESET FIRST PAGE NUMBER @V304635 00665000
- LR R2,R1 SAVE BLD PARM @V408246 00666000
- N R2,XRIGHT16 ISOLATE ENDING PAGE NO. @V408246 00667000
- LA R2,1(,R2) ENDING PAGE NO. (BASE 1) @V408246 00668000
- SLL R2,12 ENDING ADDRESS @V408246 00669000
- CL R2,VMSTOR ENDING ADDRESS > STORE SIZE? @V408246 00670000
- BNH NXTSYS NO, DONE @V408246 00671000
- CALL DMKBLDRT,PARM=OLDVMSEG+KEEPSEGS+NEWPAGES @V304635 00672000
- N R1,XRIGHT16 CLEAR OUT FIRST ADDRESS @V304635 00673000
- SLL R1,12 GET A FULL ADDRESS @V304635 00674000
- AL R1,F4096 PLUS 1 MORE PAGE @V304635 00675000
- CL R1,VMSIZE IS NEW ADDRESS > OLD ? @V304635 00676000
- BNH NXTSYS NO - LEAVE AS IS @VM03097 00677000
- ST R1,VMSIZE SAVE NEW STORAGE SIZE @V304635 00678000
- NXTSYS LA R3,L'SYSPAGNM(,R3) INDEX TO NEXT SYSPAGNM @VM03100 00679000
- BCT R7,PAGBLDTB PROCESS ALL ENTRIES @V304635 00680000
- SPACE 1 00681000
- SKIPREL LH R1,SYSPAGNM USERS 1ST SAVED PAGE @V304635 00682000
- SLL R1,12 FORM PAGE ADDRESS @V304635 00683000
- LR R10,R1 SAVE COPY IN R10 @V304635 00684000
- LR R0,R5 CCPD @V304635 00685000
- CALL DMKRPAGT,PARM=BRING ... @V304635 00686000
- BNZ NAMPERR1 CLEAR UP TABLES AND EXIT @VA05638 00687000
- SPACE 00688000
- USING SAVTABLE,R2 @V304635 00689000
- TM SAVEWRK1+2,LOADFLG ENTRY FOR LOADSYS ? @V304635 00690000
- BO KEYMOVE YES, THEN JUST MOVE KEYS @V304635 00691000
- SPACE 00692000
- MVC VMPSW,SAVPSW UPDATE PSW IN VMBLOK @VM03100 00693000
- MVC VMFPRS(L'VMFPRS*4),SAVFPRES FLOATING POINT @VM03100 00694000
- * REGISTERS 00695000
- TM SAVEWRK1,PARMFND CAN WE RESTORE ALL THE REGS @V304635 00696000
- BZ MOVEGPRS YES - GO TO IT @V304635 00697000
- SLR R1,R1 ZERO REG @V304635 00698000
- LA R0,L'SAVGREGS*16 LOAD MAX NUM OF BYTES CAN MOVE @VM03100 00699000
- IC R1,SAVEWRK1+3 LOAD THE PARM CHARACTER COUNT @V304635 00700000
- LA R14,VMGPRS(R1) BUMP PAST PARM FIELD IN VMBLOK @V304635 00701000
- LA R15,SAVGREGS(R1) BUMP TO START OF RESTORABLE @V304635 00702000
- * REGS 00703000
- SR R0,R1 GET BYTE COUNT @V304635 00704000
- LTR R1,R0 INTO R1 @V304735 00705000
- BZ TESTEC IF MAX. ON PARM (64) - SKIP MOVE @V304735 00706000
- BCTR R1,0 FOR EXECUTED MOVE @V304635 00707000
- EX R1,MOVGPRS RESTORE GPRS @V304635 00708000
- B TESTEC AND CONTINUE @V304635 00709000
- MOVEGPRS EQU * @V304635 00710000
- MVC VMGPRS(L'VMGPRS*16),SAVGREGS RESTORE ALL REGS @VM03100 00711000
- TESTEC EQU * @V304635 00712000
- TM VMPSTAT,VMV370R DO WE HAVE CONTROL REGS ??? @V304635 00713000
- BZ KEYMOVE NO - GO DO THE KEYS @V304635 00714000
- L R14,VMECEXT ADR OF VM ECBLOK @V304635 00715000
- USING ECBLOK,R14 @V304635 00716000
- SPACE 00717000
- MVC EXTCR0(L'EXTCR0*16),SAVCREGS RESTORE @VM03100 00718000
- * CONTROL REGISTERS 00719000
- DROP R14 @V304635 00720000
- SPACE 00721000
- KEYMOVE L R0,SYSPAGCT LOAD NUMBER OF SAVED PAGES @V304635 00722000
- SRL R0,2 DIVIDE BY 4 @V304635 00723000
- AH R0,F1+2 ADJUST FOR POSSIBLE LOST BITS @V304635 00724000
- ST R0,SAVEWRK9 SAVE THIS NUMBER FOR FRET @V304635 00725000
- CALL DMKFREE GET CORE @V304635 00726000
- SR R0,R0 ZIP THIS REGISTER @V304635 00727000
- STM R0,R1,SAVEWRK2 SAVE FOR LATER USE @V304635 00728000
- LR R14,R1 BUFFER ADDRESS TO R14 @V304635 00729000
- L R7,SYSPAGCT LOAD NUMBER OF PAGES @V304635 00730000
- AR R7,R7 TIMES TWO (2 KEYS PER PAGE ) @V304635 00731000
- LR R15,R7 BYTES COUNTS ARE NOW SET UP FOR @V304635 00732000
- * MVCL 00733000
- LA R6,SAVKEYS ADDRESS OF THE SAVED KEYS @V304635 00734000
- MVCL R14,R6 NOW MOVE THE KEYS TO THE BUFFER @V304635 00735000
- SPACE 00736000
- DROP R2 @V304635 00737000
- TM VMPSW+1,EXTMODE IS VM IN EXTENDED MODE @V60BC11 00737100
- BZ ZEROR3 NO, OK TO IPL SHARED @V60BC11 00737200
- TM VMPSW,TRANMODE IS VM IN TRANSLATE MODE @V60BC11 00737300
- BZ ZEROR3 NO, OK TO IPL SHARED @V60BC11 00737400
- OI SAVEWRK1+2,NONSHARE YES, FORCE NONSHARED IPL @V60BC11 00737500
- SPACE 00738000
- * NOW SET UP THE SWPTABLES WITH THE SAVED DATA... 00739000
- SPACE 00740000
- ZEROR3 SR R3,R3 WILL BE USED TO INDEX THRU @V304635 00741000
- * SYSPAGNM ENTRIE 00742000
- L R6,F256 INCREMENT CONSTANT FOR CCPD'S @V304635 00743000
- LH R7,SYSPAGLN NUMBER OF ENTRIES IN SYSPAGNM @V304635 00744000
- SPACE 00745000
- PAGLOOP L R8,SYSPAGNM(R3) LOAD RANGE OF PAGES @V304635 00746000
- SRDL R8,16 START PAGE TO LOW ORDER OF R8 @V304635 00747000
- SRL R9,16 END PAGE TO LOW ORDER OF R9 @V304635 00748000
- SLL R8,12 FORM PAGE ADDRESS @V304635 00749000
- SLL R9,12 END PAGE ADDRESS @V304635 00750000
- SWAPLOOP AR R5,R6 BUMP TO NEXT CCPD @V304635 00751000
- LR R1,R5 CCPD TO R1 @V304635 00752000
- N R1,=X'0000FF00' SAVE ONLY PAGE NUMBER @V304635 00753000
- CL R1,SAVEWRK5 NEED WE BUMP TO NEXT CYLINDER @V304635 00754000
- * ???? 00755000
- BNH CKPAG NOT YET ----- @V304635 00756000
- A R5,=X'00010000' ADD ONE TO CYLINDER NUMBER @V304635 00757000
- ICM R5,B'0010',F1+3 RESET PAGE NUMBER TO ONE @VM03100 00758000
- SPACE 00759000
- CKPAG CR R8,R10 PROCESSING 1ST SAVED PAGE @V304635 00760000
- BNE SWAPCONT NO- CONTINUE @V304635 00761000
- LR R1,R10 BRING IN 1ST PAGE TO OVERLAY @V304635 00762000
- * THE SAVED DATA(PSW,REGS,ANDKEYS) 00763000
- LR R0,R5 PROPER CCPD FOR PAGE ZERO(SAVED) @V304635 00764000
- CALL DMKRPAGT,PARM=0 @V304635 00765000
- BNZ NAMPERR2 CLEAR UP TABLES AND EXIT @VA05638 00766000
- SPACE 00767000
- SWAPCONT DS 0H @V408246 00768000
- LR R2,R8 PAGE ADDRESS @V408246 00769000
- SRL R2,16 SEGMENT NO. ONLY @V408246 00770000
- ALR R2,R2 SEGMENT NO. * 4 FOR INDEX @V408246 00771000
- ALR R2,R2 . . @V408246 00772000
- AL R2,VMSEG STE POINTER @V408246 00773000
- TM 3(R2),SEGINV SEGMENT OK? @V408246 00774000
- BZ SWAPCNTA YES @V408246 00775000
- TRANS 2,8,OPT=DEFER NO, LET PTR RESOLVE @V408246 00776000
- B SWAPCONT AND THEN RETRY @V408246 00777000
- SWAPCNTA DS 0H @V408246 00778000
- L R2,0(,R2) POINT TO PAGTABLE @V304635 00779000
- N R2,=A(X'FFFFFE') CLEAR UNWANTED BITS @V408246 00780000
- LR R1,R8 VIRTUAL ADDRESS @V408246 00781000
- SRL R1,12 PAGE NO. @V408246 00782000
- N R1,F15 PAGE NO. WITHIN SEGMENT @V408246 00783000
- SLL R1,3 PAGE NO. *8 FOR SWAPTABLE ENTRY @V408246 00784000
- * INDEX 00785000
- LA R2,16*2+8(R1,R2) POINT TO SWAPTABLE ENTRY @V408246 00786000
- LM R0,R1,SAVEWRK2 INDEX AND ADDRESS OF KEYS @V304635 00787000
- AR R1,R0 POINT TO PROPER SET OF KEYS @V304635 00788000
- A R0,F2 ADD TO INDEX FOR NEXT GO AROUND @V304635 00789000
- ST R0,SAVEWRK2 SAVE IT @V304635 00790000
- SPACE 00791000
- USING SWPFLAG,R2 @V304635 00792000
- SPACE 00793000
- MVC SWPKEY1(L'SWPKEY1+L'SWPKEY2),0(R1) MOVE KEYS @VM03100 00794000
- * TO SWPTABLE 00795000
- ST R5,SWPCYL STORE CCPD @V304635 00796000
- OI SWPFLAG,SWPCHG1 TURN ON CHANGE BIT @V408246 00797000
- A R8,F4096 BUMP PAGE ADDRESS @V304635 00798000
- CR R8,R9 THIS PAGNM ENTRY COMPLETE????? @V304635 00799000
- BH TSTPAGLN BRANCH IF YES @V304635 00800000
- B SWAPLOOP NO - KEEP GOING @V304635 00801000
- SPACE 2 00802000
- TSTPAGLN A R3,F4 BUMP INDEX TO NEXT SYSPAGNM ENTRY@V304635 00803000
- BCT R7,PAGLOOP PROCESS NEXT ENTRY (IF ANY) @V304635 00804000
- L R0,SAVEWRK9 LOAD SIZE OF BUFFER @V304635 00805000
- L R1,SAVEWRK3 ADDRESS OF BUFFER @V304635 00806000
- CALL DMKFRET ..... @V304635 00807000
- EJECT 00808000
- * NOW DO THE SHARED SEGMENT BIT 00809000
- * 00810000
- * THERE CAN BE THREE CONDITIONS ON SEGMENTS ON A SAVED SYSTEM. 00811000
- * ONE - THERE ARE NO SHARED SEGMENTS, THEREFORE WE ARE FINISHED 00812000
- * WITH THE NAMED IPL. 00813000
- * SECOND - THE NAMED SYSTEM IPL'ED MAY HAVE BEEN PREVIOUSLY 00814000
- * IPL'ED, THUS, A SHRTABLE HAS ALREADY BEEN BUILT FOR THE 00815000
- * SHARED SEGMENTS. THIS SHRTABLE WILL HAVE TO BE UPDATED AND 00816000
- * SEGTABLES ALTERED TO POINT TO THE EXISTING SHARED PAGTABLES. 00817000
- * ALSO THE PAG AND SWPTABLES THAT ARE NOT GOING TO BE 00818000
- * USED MUST BE FRET'ED. 00819000
- * THIRD - THE NAMED SYSTEM ISN'T IN USE. THE SWPTABLES FOR THE 00820000
- * SHARED SEGMENTS MUST BE FLAGGED AS SHARED AND A SHRTABLE MUST 00821000
- * BE BUILT AND PLACED ON THE CHAIN OF SHRTABLES. 00822000
- * NOTE - IN THE SECOND AND THIRD CASES, IF THE USER HAD V.M. 00823000
- * INSTRUCTION AND|OR BRANCH TRACING IN EFFECT, IT IS RESET, AS 00824000
- * THIS OPTION IS INVALID FOR A SHARED SYSTEM. IF ANY TRACING 00825000
- * FLAGS ARE STILL ON, THE MODIFIED TRACING IS LEFT IN EFFECT; 00826000
- * BUT IF ALL FLAGBITS ARE NOW CLEAR, ALL TRACING IS TERMINATED 00827000
- * AND A 'TRACE ENDED' MESSAGE IS SENT TO THE USER TO NOTIFY HIM 00828000
- * THAT HIS PREVIOUS TRACING IS NO LONGER IN EFFECT. 00829000
- SPACE 3 00830000
- LH R6,SYSPAGLN CALCULATE ADDRESS OF SYSHRSEG @V304635 00831000
- * ENTRIES 00832000
- SLL R6,2 TIMES FOUR @V4M0179 00833000
- LA R6,SYSPAGNM(R6) R6 NOW POINTS TO SYSSEGLN @V304635 00834000
- SPACE 00835000
- USING SYSSEGLN,R6 @V304635 00836000
- SPACE 00837000
- LH R3,SYSSEGLN NUMBER OF SYSHRSEG ENTRIES @V304635 00838000
- LTR R3,R3 ANY ENTRIES ??? @V304635 00839000
- BZ BLDNSHR BRANCH IF NO SHARED SEGMENTS @V304635 00840000
- TM SAVEWRK1+2,NONSHARE REQUEST FOR NON-SHARE MODE @V304635 00841000
- BO BLDNSHR YES - SKIP SHARED PROCESSING. @V304635 00842000
- SPACE 2 00843000
- SR R8,R8 ZERO INDEX REGS @V304635 00844000
- SR R9,R9 .............. @V304635 00845000
- SPACE 00846000
- * SCAN TO SEE IF SHRTABLE ALREADY EXISTS 00847000
- L R2,=A(DMKVMAS1) ADDRESS OF SHRTABLE ANCHOR @VM03171 00848000
- L R5,0(,R2) ADDRESS OF SHRTABLE @V304635 00849000
- SPACE 00850000
- USING SHRTABLE,R5 @V304635 00851000
- SPACE 00852000
- SHRTSCAN CR R5,R2 END OF CHAIN ??? @V304635 00853000
- BE SHRTBLD BRANCH IF IT IS @V304635 00854000
- CLC SYSNAME,SHRNAME DO WE HAVE A MATCH ???? @VM03100 00855000
- BE SHRTFND BRANCH IF FOUND ONE @V304635 00856000
- L R5,SHRFPNT ADDRESS OF NEXT SHRTABLE @V304635 00857000
- LA R5,0(,R5) CLEAR FLAG BYTE @V60BC11 00857100
- B SHRTSCAN KEEP TRYING !!! @V304635 00858000
- EJECT 00859000
- * THIS ROUTINE TO HANDLE THE CONDITION WHERE A SHRTABLE ALREADY 00860000
- * EXISTS. 00861000
- SPACE 00862000
- SHRTFND EQU * @V304635 00863000
- SPACE 00864000
- * NOW STEP THRU SHRPAGE AND SYSHRSEG ADJUSTING SEGTABLES 00865000
- SPACE 00866000
- LR R14,R3 NUMBER OF SEGMENTS TO R14 @V304635 00867000
- LA R8,SHRSEGNM SET UP TO FIND ADDRESS OF FIRST @V304635 00868000
- * SHRPAGE 00869000
- SPACE 00870000
- FNDSHRPG LA R8,L'SHRPAGE(,R8) GET NEXT POSSIBLE SHRPAGE @VM03100 00871000
- * ADDRESS 00872000
- S R14,F4 MINUS FOUR(UP TO FOUR SEG. @V304635 00873000
- * NUMS. TO WORD) 00874000
- BP FNDSHRPG BRANCH BACK IF MORE SEGMENT @V304635 00875000
- * NUMBERS 00876000
- SPACE 00877000
- USING SHRPAGE,R8 @V304635 00878000
- SPACE 00879000
- SHRSLOOP L R2,SHRPAGE LOAD ENTRY FROM SHRTABLE @V304635 00880000
- LR R7,R2 SAVE PTO @V408246 00881000
- SL R7,F16 BACK-UP TO HEADER @V408246 00882000
- LH R1,PAGTOT-PAGTABLE(,R7) INCREMENT @V408211 00883000
- LA R1,1(,R1) TOTAL SEGMENT USE COUNT @V408246 00884000
- STH R1,PAGTOT-PAGTABLE(,R7) @V408211 00885000
- TM APSTAT1,APUOPER RUNNING IN ATTACHED MODE @V407511 00886000
- BZ SLOOP1 NO, DON'T HAVE TO UPDATE ATTACHED@V407511 00887000
- TM SYSFLAG,SYSPROT IS THIS AN UNPROTECTED SYSTEM @V60BC11 00887100
- BO SLOOP1 YES, SKIP AROUND @V60BC11 00887200
- STH R1,PAGBMP+PAGTOT-PAGTABLE(,R7) UPDATE ATTACHED @V407511 00888000
- * PAGTABLE TOTAL COUNT @V407511 00889000
- SLOOP1 DS 0H @V407511 00890000
- SR R7,R7 . . . @V304635 00891000
- IC R7,SYSHRSEG(R9) LOAD SEGMENT NUMBER FROM SYSTBL @V304635 00892000
- SLL R7,2 GET INDEX INTO SEGTABLE @V304635 00893000
- L R1,VMSEG LOAD ADDRESS OF SEGTABLE @V304635 00894000
- L R10,0(R7,R1) LOAD OLD SEGTABLE ENTRY @V304635 00895000
- O R2,F1 ASSURE SEGINV FLAG @V408246 00896000
- ST R2,0(R7,R1) STORE ENTRY FROM SHRTABLE @V304635 00897000
- LA R8,L'SHRPAGE(,R8) LOAD ADDRESS OF NEXT SHRPAGE @VM03100 00898000
- * ENTRY 00899000
- LA R9,SEGINDEX(,R9) BUMP SHRSEG INDEX @VM03100 00900000
- SPACE 00901000
- DROP R8 @V304635 00902000
- SPACE 00903000
- * NOW MUST FRET ORIGINAL PAGTABLE AND SWPTABLE 00905000
- SPACE 00906000
- LA R1,0(,R10) PTO @V408246 00907000
- SL R1,F16 BACK-UP TO SEGMENT HEADER @V408246 00908000
- LA R0,PAGBMP/8 NO. DBLWDS IN ORIGIN TABLES @VA07235 00909100
- L R15,=A(DMKSYSAP) -> DMKSYS AP setting HRC066DK 00909200
- CLI 0(R15),YES Is AP enabled? HRC066DK 00909300
- BNE *+6 No HRC066DK 00909400
- AR R0,R0 Double table size for APHRC066DK 00909500
- CALL DMKFRET RETURN TABLES TO AVAILABLE @V408246 00913000
- * STORAGE 00914000
- L R15,PREFIXA PREFIX VALUE TO ADDRESS PSA @VA13356 00914100
- * AT ABSOLUTE 0 00914200
- L R0,TTSEGCNT-PSA(,R15) NUM OF PG/SWP TBLS IN SYS @VA13356 00914300
- BCTR R0,R0 DECREMENT PAG/SWP TABLE COUNT @VA13356 00914400
- ST R0,TTSEGCNT-PSA(,R15) STORE IT BACK IN PSA @VA13356 00914500
- BCT R3,SHRSLOOP DO NEXT ENTRY IF ANY @V304635 00915000
- B SETVMSHR GO CLEAN UP AND GET OUT @V304635 00916000
- EJECT 00917000
- * 00918000
- * THIS ROUTINE USED IF NO EXISTING SHRTABLE. WILL BUILD AND 00919000
- * PLACE IN CHAIN. 00920000
- * 00921000
- SPACE 00922000
- SHRTBLD EQU * @V304635 00923000
- LR R2,R3 NUMBER OF SHARED SEGMENTS TO R2 @V304635 00924000
- SR R7,R7 ZERO REG @V304635 00925000
- SPACE 00926000
- * NOW FIND SIZE OF SHRTABLE 00927000
- LA R0,SHRSEGNM-SHRFPNT LOAD SIZE OF FIXED PART OF @V304635 00928000
- * AHRTABE 00929000
- SPACE 00930000
- FINDSIZE A R0,F4 ADD ONE WORD FOR EACH FOUR @V304635 00931000
- * SEGMENTS 00932000
- LA R7,INDEX4(,R7) INDEX CONTANT FOR LATER USE @VM03100 00933000
- S R2,F4 SUBTRACT 4 FROM NUMBER OF @V304635 00934000
- * SEGMENTS LEFT 00935000
- BP FINDSIZE BRANCH BACK IF MORE SEGMENTS @V304635 00936000
- LR R2,R3 RELOAD R2 WITH NUMBER OF SEGMENTS@V304635 00937000
- SLL R2,2 TIMES FOUR FOR EACH SHRPAGE ENTRY@V304635 00938000
- AR R0,R2 NOW HAVE SIZE OF SHRTABLE IN @V304635 00939000
- * BYTES 00940000
- A R0,F7 ROUND UP TO NEXT EIGHT BYTES @V304635 00941000
- SRL R0,3 CONVERT TO DOUBLE WORDS @V304635 00942000
- LR R2,R0 SAVE SIZE @V304635 00943000
- CALL DMKFREE GET STORAGE FOR SHRTABLE @V304635 00944000
- LR R5,R1 POINT R5 TO SHRTABLE @V304635 00945000
- LR R0,R2 SAVE SIZE OF SHRTABLE @V4M0179 00946000
- SLL R2,3 TIMES 8 FOR ZEROING @V4M0179 00947000
- BCTR R2,0 MINUS ONE FOR EXECUTE @VA07233 00947100
- EX R2,ZEROSHR ZERO OUT THE SHRTABLE @V4M0179 00948000
- STH R0,SHRTSIZE STORE SIZE OF THIS BLOCK @V4M0179 00949000
- LA R8,4(,R8) INCREMENT SHRPAGE INDEX @V4M0179 00950000
- MVC SHRNAME,SYSNAME MOVE NAME TO SHRTABLE @VM03100 00951000
- ST R3,SHRSEGCT STORE COUNT OF SHARED SEGMENTS @V304635 00952000
- TM SYSFLAG,SYSPROT IS THIS AN UNPROTECTED SYSTEM @V60BC11 00952100
- BZ CONTCK NO @V60BC11 00952200
- OI SHRFLAG,SHRNOPRT YES, SET SHRTABLE INDICATOR @V60BC11 00952300
- CONTCK DS 0H @V60BC11 00952400
- SPACE 00953000
- * NOW STORE SEGMENT NUMBERS IN SHRTABLE 00954000
- LR R2,R3 COUNT TO R2 @V304635 00955000
- BCTR R2,0 MINUS ONE FOR EX @V304635 00956000
- EX R2,MOVESEGS @V304635 00957000
- LA R14,SHRSEGNM(R7) LOAD ADDRESS OF FIRST SHRPAGE @V304635 00958000
- * ENTRY 00959000
- SPACE 00960000
- USING SHRPAGE,R14 @V304635 00961000
- SPACE 00962000
- SPACE 00963000
- SLR R8,R8 ZERO SHRPAGE INDEX @V4M0183 00964000
- SEGLOOP DS 0H 00965000
- TM SYSFLAG,SYSPROT IS THIS AN UNPROTECTED SYSTEM @V60BC11 00965100
- BO UPSEGLP YES, SKIP AROUND @V60BC11 00965200
- * DETERMINE IF IT IS NECESSARY TO BUILD TWO SETS OF PAGE AND 00966010
- * SWAP TABLES. THE MP FEATURE MUST BE INSTALLED AND THE SYSTEM MUST 00966060
- * BE GENERATED FOR AP MODE. 00966110
- TM APSTAT1,MPFEAT IS THE MP FEATURE INSTALLED? @V5BC0AB 00966160
- BNO UPSEGLP NO, BUILD ONE SET OF PGT/SWPT @V5BC0AB 00966210
- L R7,CFGSYSAP EST. ADDRESSABILITY TO DMKSYSAP @V5BC0AB 00966260
- CLI 0(R7),YES IS SYSTEM GENED FOR AP? @V5BC0AB 00966310
- BE APSEGLP YES BUILD TWO SETS OF PGT/SWPT @V5BC0AB 00966360
- UPSEGLP DS 0H @V5BC0AB 00966410
- SLR R7,R7 CLEAR REGISTER 7 @V5BC0AB 00966460
- IC R7,SYSHRSEG(R9) PICK UP NEXT SEGMENT NUMBER @V304635 00970000
- SLL R7,2 INDEX INTO SEGTABLE @V304635 00971000
- AL R7,VMSEG ADDRESS OF SEGTABLE @V408246 00972000
- L R10,0(,R7) LOAD STE @V408246 00973000
- OI 3(R7),SEGINV MAKE SURE INVALID ON @V408246 00974000
- N R10,=AL4(X'FFFFFFFF'-SEGINV) CLEAR INVALID FLAG @V408246 00975000
- ST R10,SHRPAGE(R8) STORE SEGTABLE ENTRY INTO @V304635 00976000
- * SHRTABLE 00977000
- LR R2,R10 PAGTABLE ADDRESS TO R2 @V304635 00978000
- SRL R2,28 NUMBER OF PAGTABLE ENTRIES TO @V304635 00979000
- * LOW ORDER 00980000
- LA R2,ONE(,R2) PLUS ONE FOR COUNT LOOP @VM03100 00981000
- SL R10,F16 BACK-UP TO HEADER @V408246 00982000
- MVC 4(4,R10),F1 ACTIVE CNT = 0, TOTAL CNT. = 1 @V408246 00983000
- ST R5,8(,R10) POINT TO SHRTABLE @V408246 00984000
- MVC 16+16*2(4,R10),ASYSVM RE-ASIGN SEGMENT TO SYSTEM@V408246 00985000
- LA R10,16+16*2+8(,R10) POINT TO 1ST SWAPTABLE ENTRY@V408246 00986000
- SPACE 00987000
- USING SWPFLAG,R10 @V304635 00988000
- SPACE 00989000
- FLAGLOOP OI SWPFLAG,SWPSHR TURN ON SHARE BIT @V304635 00990000
- A R10,F8 BUMP TO NEXT SWP ENTRY @V304635 00991000
- BCT R2,FLAGLOOP KEEP DOING UNTIL RUN THRU @V304635 00992000
- * SWPTABLE 00993000
- A R8,F4 BUMP INDEX REG. @V304635 00994000
- LA R9,INDEX1(,R9) INDEX BY ONE @VM03100 00995000
- BCT R3,SEGLOOP PROCESS NEXT SEGMENT @V304635 00996000
- B COMMON SKIP OVER AP CODE @V407511 00997000
- APSEGLP DS 0H @V407511 00998000
- DROP R10,R14 @V407511 00999000
- USING PAGTABLE,R1 ADDRESSABILITY TO PAGTABLE @V407511 01000000
- USING SHRPAGE,R8 ADDRESSABILITY TO SHRPAGE ENTRY @V407511 01001000
- USING SWPTABLE,R2 ADDRESSABILITY TO SWPTABLE @V407511 01002000
- SLR R9,R9 ZERO SYSHRSEG INDEX REG @V407511 01003000
- LR R8,R14 GET POINTER TO 1ST SHRPAGE @V407511 01004000
- APSEGLP1 DS 0H @V407511 01005000
- SLR R7,R7 ZERO WORK REG @V407511 01006000
- IC R7,SYSHRSEG(R9) PICK UP NEXT SEGMENT NUMBER @V407511 01007000
- SLL R7,2 TIMES 4 TO INDEX SEGTABLE @V407511 01008000
- AL R7,VMSEG GET ADDR SEGTABLE ENTRY @V407511 01009000
- LA R0,(PAGBMP+PAGBMP)/8 GET NUMBER OF DBLWRDS @V407511 01010000
- * NEED FOR SHARED PAGE & SWPTABLES @V407511 01011000
- CALL DMKFREE OBTAIN PAGE & SWAP TABLES @V407511 01012000
- L R10,0(R7) GET ADDR OLD PTO @V407511 01013000
- LA R0,PAGCORE LOAD ADDRESS OF PTO @V407511 01014000
- STCM R0,B'0111',1(R7) STORE NEW PTO IN STE @V407511 01015000
- OI 3(R7),SEGINV FLAG STE AS INVALID @V407511 01016000
- ST R0,SHRPAGE STORE PTO INTO SHRTABLE @V407511 01017000
- STCM R10,8,SHRPAGE STORE NUMBER OF PAGES IN @V407511 01018000
- * SEGMENT INTO SHRTABLE @V407511 01019000
- N R10,=AL4(X'00FFFFFE') CLEAR COUNT AND INV BITS @V407511 01020000
- SL R10,F16 BACKUP TO HEADER @V407511 01021000
- LA R14,PAGBMP(,R1) GET ADDR OF AP PAGTABLE @V407511 01022000
- * @V407511 01023000
- MVC PAGTABLE(PAGBMP),0(R10) COPY PAGE&SWAP - CPU @V407511 01024000
- MVC 0(PAGBMP,R14),0(R10) COPY PAGE&SWAP - AP @V407511 01025000
- * @V407511 01026000
- LA R2,PAGTSWP(,R1) GET ADDR OF CPU SWPTABLE @V407511 01027000
- MVC SWPVM-SWPTABLE(4,R2),ASYSVM ASG SWPTABLE ASYSVM @V407511 01028000
- MVC PAGBMP+SWPVM(4),ASYSVM ASG SWPTABLE ASYSVM @V407511 01029000
- ST R0,SWPPAG HOOK SWAP - PAGE @V407511 01030000
- LA R0,SWPFLAG GET ADDR SWPTABLE ENT @V407511 01031000
- ST R0,PAGSWP HOOK PAGE - SWAP @V407511 01032000
- ST R5,PAGSHR HOOK PAGE - SHRTABLE @V407511 01033000
- ST R5,PAGBMP+PAGSHR HOOK PAGE - SHRTABLE @V407511 01034000
- LA R0,PAGBMP+PAGCORE GET ADDR AP PTO @V407511 01035000
- ST R0,PAGBMP+SWPPAG HOOK SWAP - PAGE @V407511 01036000
- OI PAGBMP+SWPFLAG2,SWPAPP SET ATTACHED INDICATOR@V407511 01037000
- * (INDICATES 2ND SET OF PG/SWAP TABLES) 01037100
- LA R0,PAGBMP+SWPFLAG ADDR AP SWPTABLE ENTRY@V407511 01038000
- ST R0,PAGBMP+PAGSWP HOOK PAGE - SWAP @V407511 01039000
- OI PAGBMP+PAGSWP,X'80' Indicate AP table HRC066DK 01039100
- MVC PAGACT(4),F1 CPU PAGACT = 0 @V407511 01040000
- * CPU PAGTOT = 1 @V407511 01041000
- MVC PAGBMP+PAGACT(4),F1 AP PAGACT = 0 @V407511 01042000
- * AP PAGTOT = 1 @V407511 01043000
- L R15,0(R7) GET SEGTABLE ENTRY @V407511 01044000
- SRL R15,28 OBTAIN PTE COUNT @V407511 01045000
- LA R15,1(R15) BUMP FOR LOOP CONTROL @V407511 01046000
- LA R14,SWPFLAG POINT TO 1ST SWPTABLE ENTRY @V407511 01047000
- APSEGFL DS 0H @V407511 01048000
- USING SWPFLAG,R14 @V407511 01049000
- OI SWPFLAG,SWPSHR TURN ON CPU SHARE BIT @V407511 01050000
- OI PAGBMP+SWPFLAG,SWPSHR TURN ON AP SHARE BIT @V407511 01051000
- LA R14,8(,R14) BUMP TO NEXT SWPTABLE ENTRY @V407511 01052000
- BCT R15,APSEGFL KEEP DOING UNTIL ALL FLAGGED @V407511 01053000
- LR R1,R10 GET ADDR OF OLD PAGTABLE @V407511 01054000
- L R14,0(R7) GET SEGTABLE ENTRY @V407511 01055000
- SRL R14,28 OBTAIN NUMBER PTE'S @V407511 01056000
- LA R0,PAGBMP+PAGBMP Size of tables for AP HRC066DK 01056500
- SRL R0,3 CHANGE TO NO OF DWORDS @VA07675 01057500
- CALL DMKFRET RETURN OLD PAGE & SWAP TABLES @V407511 01058000
- LA R8,4(,R8) INCREMENT SHRPAGE INDEX @V4M0183 01059000
- LA R9,1(R9) INCR SYSHRSEG INDEX @V407511 01060000
- L R14,SAVEWRK7 RESTORE SHRPAGE POINTER @V407511 01061000
- BCT R3,APSEGLP1 PROCESS NEXT SEGMENT @V407511 01062000
- * RESUME COMMON PROCESSING @V407511 01063000
- DROP R1,R2,R8,R14 @V407511 01064000
- USING SWPFLAG,R10 @V407511 01065000
- USING SHRPAGE,R14 @V407511 01066000
- SPACE 01067000
- * WHEN FALL THRU HAVE FINISHED PROCESS SO PUT SHRTABLE IN CHAIN 01068000
- COMMON DS 0H @V407511 01069000
- SPACE 01070000
- L R8,=A(DMKVMAS1) ADDRESS OF ANCHOR @VM03171 01071000
- L R7,0(,R8) ANCHOR CONTENTS @V304635 01072000
- ST R5,0(,R8) ANCHOR NOW POINTS TO NEW BLOK @V304635 01073000
- STCM R7,B'0111',SHRFPNT+1 STORE FORWARD POINTER @V60BC11 01074200
- ST R8,SHRBPNT STORE BACKWARD POINTER @V60BC11 01074400
- ST R5,SHRBPNT-SHRTABLE(,R7) CHANGE BKWD POINTER @VM03100 01076000
- * IN PREVIOUS BLOK 01077000
- SETVMSHR LH R7,VMSHRSYS GET COUNT OF SHARED SYSTEMS @V304635 01078000
- * FOR THIS USER 01079000
- LA R7,ONE(,R7) ADD ONE @VM03100 01080000
- STH R7,VMSHRSYS STORE NEW COUNT @V304635 01081000
- OI VMOSTAT,VMSHR FLAG RUNNING SHARED SYSTEM @V304635 01082000
- MVC VMSHRPRC,LPUADDR+1 INIT LAST SERVICED IDENT @V407511 01083000
- LH R7,SHRUSECT LOAD COUNT OF USERS FOR THIS @V304635 01084000
- * SYSTEM 01085000
- LA R7,ONE(,R7) BUMP BY ONE @VM03100 01086000
- STH R7,SHRUSECT STORE BACK @V304635 01087000
- TM SHRFLAG,SHRNOPRT UNPROTECTED NAMED SYSTEM @V60BC11 01087200
- BO SKIPVMA YES, SKIP BUILDING A VMABLOK @V60BC11 01087400
- LA R0,VMASIZE GET SIZE OF VMABLOK FOR @V304735 01088000
- CALL DMKFREE CALL TO FREE STORAGE MANAGER @V304735 01089000
- USING VMABLOK,R1 @V304735 01090000
- L R0,VMASSIST FORWARD CHAIN POINTER OF VMABLOKS@V304735 01091000
- ST R1,VMASSIST MAKE THIS BLOK FIRST ON CHAIN @V304735 01092000
- ST R0,VMAFPNT PUT OLD ONE BACK IN CHAIN @V304735 01093000
- ST R5,VMASHRBK STORE POINTER TO (SHRTABLE) @V304735 01094000
- MVC VMANAME,SHRNAME SAVE SHARED SYSTEM NAME @V304735 01095000
- DROP R1 @V304735 01096000
- SKIPVMA DS 0H @V60BC11 01096100
- TM APSTAT1,PROCIPL RUNNING ON THE MAIN (IPL) PROC? @V60B7AA 01097100
- BO BLDNSHR YES, NO NEED TO UPDATES STE'S @V407511 01098000
- TM SHRFLAG,SHRNOPRT UNPROTECTED SHARED SYSTEM? @VMI0032 01098200
- BO BLDNSHR YES, NO NEED TO UPDATE STE'S @VMI0032 01098400
- * SINCE ONLY ONE SET OF PG. TABLES @VMI0032 01098600
- L R2,SHRSEGCT LOAD NUMBER OF SHARED SEGMENTS @V407511 01099000
- BCTR R2,0 DECREMENT FOR INDEXING @V407511 01100000
- REBUILD DS 0H @V407511 01101000
- SLR R7,R7 ZIP REG FOR INSERT @V4M0212 01102000
- IC R7,SHRSEGNM(R2) LOAD SHARED SEGMENT NUMBER @V407511 01103000
- SLL R7,2 TIMES FOUR FOR INDEXING @V407511 01104000
- AL R7,VMSEG LOAD ADDRESS OF STE @V407511 01105000
- USING SEGPAGE,R7 @V407511 01106000
- L R1,SEGPAGE ADDR. OF MAIN (IPL) PROC PAGTABLE@V60B7AA 01107100
- LA R1,PAGBMP(,R1) BUMP TO 2ND SET OF PG/SWP TABLES @V60B7AA 01108100
- STCM R1,B'0111',SEGPAGE+1 ADJUST TO ATTACHED PAGTABLE@V407511 01109000
- S R2,F1 DECREMENT SEGMENT COUNTER @V407511 01110000
- BNM REBUILD CONTINUE REBUILDING @V407511 01111000
- SPACE 1 01112000
- BLDNSHR DS 0H HERE TO BUILD THE PAGE TABLE @V304635 01113000
- * THAT ARE FOR NON-SHARED SYSTEMS. 01114000
- L R2,=A(DMKVMAS2) ADDRESS OF NON-SHARED SYSTEMS @VM03171 01115000
- L R5,0(,R2) ADDRESS OF FIRST NAMED TABLE @V304635 01116000
- NSHRSCAN CR R2,R5 END OF CHAIN REACHED ? @V304635 01117000
- BE NSHRBLD YES - BUILD NECESSARY NAME TABLE @V304635 01118000
- CLC SYSNAME,SHRNAME NON-SHARED NAME SYSTEM FOUND ? @VM03100 01119000
- BE NSHRFND YES - R5 HAS ADDRESS OF NON-SHR @V304635 01120000
- * TABLE 01121000
- L R5,SHRFPNT ADDRESS OF NEXT NON-SHARED SYSTEM@V304635 01122000
- B NSHRSCAN KEEP SEARCHING THE CHAIN . @V304635 01123000
- SPACE 1 01124000
- NSHRBLD DS 0H BUILD NON-SHARED NAMED SYSTEM @V304635 01125000
- * ENTRY. 01126000
- LA R0,0+(SHRSEGNM-SHRFPNT)/8 NUMBER OF DW'S @V304635 01127000
- CALL DMKFREE GET TABLE FROM FREE STORAGE @V304635 01128000
- LR R5,R1 SET INTO PROPER REGISTER @V304635 01129000
- XC SHRTABLE(SHRSEGNM-SHRFPNT),SHRTABLE ZERO IT. @V304635 01130000
- MVC SHRNAME,SYSNAME SAVE THE NON-SHARED SYSTEM NAME @VM03100 01131000
- L R1,0(,R2) ANCHOR OF FIRST NON-SHARED NAME @V304635 01132000
- ST R5,0(,R2) ANCHOR POINTS TO NEW BLOCK @V304635 01133000
- STM R1,R2,SHRFPNT SET UP FWD/BKWD POINTERS @V304635 01134000
- ST R5,SHRBPNT-SHRTABLE(,R1) CHG BKWD IN PREVIOUS @VM03100 01135000
- * BLOCK 01136000
- NSHRFND LH R1,SHRUSECT COUNT OF USERS FOR THIS SYSTEM @V304635 01137000
- LA R1,ONE(,R1) INCREASE BY 1 @VM03100 01138000
- STH R1,SHRUSECT SAVE NEW COUNT OF USERS'S @V304635 01139000
- SPACE 01140000
- L R10,VMSEG ADDRESS OF SEGMENT TABLE @V304635 01141000
- SLR R3,R3 CLEAR INDEX REGISTER @V304635 01142000
- LH R2,SYSPAGLN NUMBER OF FULL WORDS IN SYSNAME @V304635 01143000
- * TABLE 01144000
- NSHRPAGE LH R1,SYSPAGNM(R3) GET ADDRESS OF FIRST SAVE PAGE @V304635 01145000
- SLR R9,R9 NUMBER OF SEGMENTS PER (SYSPAGNM @V304635 01146000
- LH R9,SYSPAGNM+2(R3) LOAD LAST ADDRESS @V304635 01147000
- SH R9,SYSPAGNM(R3) CALC. NUMBER OF SEG(S) @V304635 01148000
- SRL R9,4 16 PAGES PER SEG @V304635 01149000
- LA R9,ONE(,R9) BASE OF 1 @VM03100 01150000
- SRL R1,4 LEAVE ONLY SEGMENT NUMBER @V304635 01151000
- SLL R1,2 TIMES 4 FOR INDEX INTO SEGTABLE @V304635 01152000
- NAMESEG L R7,0(R1,R10) GET PAGE TABLE ADDRESS @V304635 01153000
- N R7,=AL4(X'00FFFFFE') CLEAR EXTENSION BITS @VA10481 01154200
- SL R7,F16 BACK UP TO PAGE TABLE HEADER @V407511 01155000
- CLC PAGSHR-PAGTABLE(,R7),F0 SHARED SEGMENT ENTRY ? @VM03100 01156000
- BNZ SEGSHR YES - LEAVE AS IS @V304635 01157000
- OI VMPSTAT,VMNSHR RUNNING NON-SHARED SYSTEM @V304635 01158000
- ST R5,PAGSHR-PAGTABLE(,R7) SAVE POINTER TO @V407511 01159000
- * NON-SHARED SYSTEM NAME @V407511 01160000
- SEGSHR LA R1,L'SEGPAGE(,R1) INDEX OF NEXT SEG. TABLE ENTRY@VM03100 01161000
- BCT R9,NAMESEG PROCESS NEXT CONTIGUOUS SEG. @V304635 01162000
- * ENTRY 01163000
- LA R3,L'SYSPAGNM(,R3) INDEX TO NEXT SYSPAGNM ENTRY @VM03100 01164000
- BCT R2,NSHRPAGE PROCESS NEXT ENTRY @V304635 01165000
- NAMEXIT TM VMPSTAT,VMV370R ECMODE CAPABILITIES ??? @V304635 01166000
- BZ IPLEXIT1 GO NO FURTHER IF NOT @V304635 01167000
- TM VMPSW+1,EXTMODE IN EXTENDED MODE ??? @V304635 01168000
- BZ IPLEXIT1 IF NOT - WE ARE FINISHED HERE @V304635 01169000
- OI VMESTAT,VMEXTCM FLAG AS ECMODE PSW @V304635 01170000
- TM VMPSW,TRANMODE TRANSLATE ON ??? @V304635 01171000
- BZ IPLEXIT1 NOPE -- OK TO RUN @V304635 01172000
- CALL DMKVATMD ENTER THE TRANSLATE MODE @V304635 01173000
- B IPLEXIT1 AND GO TO IT @V304635 01174000
- SPACE 2 01175000
- RETURN TM SAVEWRK1+2,LOADFLG REQUEST FOR 'LOADSYS' @V304635 01176000
- * FUNCTION ? 01177000
- BZ CFGEXIT NO - RETURN TO CALLER @V304635 01178000
- L R1,SAVER5 ADDRESS OF USER'S RX REG. @V304635 01179000
- LH R2,SYSPAGLN NUMBER OF FW'D IN SYSNAME TABLE @V304635 01180000
- SLL R2,2 TIMES 4 FOUR BYTES FOR INDEXING @V304635 01181000
- LH R3,SYSPAGNM GET ADDRESS OF FIRST SAVED PAGE @V304635 01182000
- SLL R3,12 FORM FULL ADDRESS @V304635 01183000
- ST R3,0(,R1) GIVE IT TO USER @V304635 01184000
- L R1,SAVER6 ADDRESS OF USER'S RY REGISTER @V304635 01185000
- LH R3,SYSPAGNM-2(R2) ADDRESS OF LAST SAVED PAGE @V304635 01186000
- SLL R3,12 FULL ADDRESS @V304635 01187000
- AL R3,F4095 ADD IN HI PAGE BYTE BOUNDARY @V304635 01188000
- ST R3,0(,R1) INTO USER'S RY @V304635 01189000
- L R1,SAVER5 GET ADDRESS OF USER'S RX @V304635 01190000
- CLC 0(L'VMSTOR,R1),VMSTOR WAS USER'S STORAGE @VM03100 01191000
- * OVERLAYED ? 01192000
- BNL CFGEXIT NO - RETURN TO CALLER @V304635 01193000
- L R1,SAVER6 USER'S RY REGISTER @V304635 01194000
- CLC 0(L'VMSTOR,R1),VMSTOR OVERLAY ALL OF USER'S @VM03100 01195000
- * STORAGE ? 01196000
- BNH SETCC1 IF NOT - LIMIT TO TOP OF SAVED @V304635 01197000
- * SYSTEM 01198000
- MVC 0(L'VMSTOR,R1),VMSTOR LIMIT TOP OF USER'S @VM03100 01199000
- * STORAGE 01200000
- B SETCC1 SET CONDITION CODE OF 1 FOR USER @V304635 01201000
- CFGEXIT BAL R10,SYSTUNLC UNLOCK SYSTEM NAME TABLE(DMKSNT) @V304635 01202000
- EXIT RETURN TO CALLER @V304635 01203000
- SPACE 2 01204000
- MOVESEGS MVC SHRSEGNM(*-*),SYSHRSEG 'EX' SYSTBL TO SHRTABLE @VM03100 01205000
- ZEROSHR XC SHRTABLE(*-*),SHRTABLE 'EX' ZERO SHRTABLE @V4M0179 01206000
- DROP R5,R6,R10,R14 @V304635 01207000
- SPACE 01208000
- SPACE 01209000
- SPACE 01210000
- SPACE 01211000
- CHKPARM EQU * @V304635 01212000
- CLC =C'PARM',0(R1) PARM KEYWORK EQUAL TO 'PARM' @VM03100 01213000
- BCR 7,R8 IF NOT - RETURN @V304635 01214000
- CL R0,F4 CORRECT BYTE COUNT ??? @V304635 01215000
- BCR 7,R8 IF NOT RETURN @V304635 01216000
- SPACE 01217000
- USING BUFFER,R9 @V304635 01218000
- SPACE 01219000
- CALL DMKSCNFD GET THE START OF THE PARMS @V304635 01220000
- BNZ ZEROLEN SET UP FOR ZERO LENGTH PARM @V304635 01221000
- LM R2,R3,BUFNXT GET ADDRESS AND COUNT IN BUFFER @V304635 01222000
- AR R3,R0 GET TOTAL LENGTH @V304635 01223000
- C R3,=F'64' OVER 64 CHARACTERS @V304635 01224000
- BH CFG177 IF SO - GO SEND ERROR MESSAGE @V304635 01225000
- STC R3,SAVEWRK1+3 SAVE THE BYTE COUNT @V304635 01226000
- BCTR R3,0 MINUS ONE FOR THE EX MOVE @V304635 01227000
- EX R3,MOVEPARM MOVE 'EM @V304635 01228000
- OI SAVEWRK1,PARMFND FLAG HAVE A PARM FOR REST OF @V304635 01229000
- * IPL 01230000
- BR R8 AND RETURN @V304635 01231000
- SPACE 01232000
- ZEROLEN MVI SAVEWRK1+3,LEN0 STORAGE ZERO LENGTH @VM03100 01233000
- OI SAVEWRK1,PARMFND SET PARM FLAG @V304635 01234000
- BR R8 AND RETURN @V304635 01235000
- SPACE 01236000
- DROP R9 @V304635 01237000
- SPACE 01238000
- GETSNTBL L R4,SAVEWRK6 IS SYSNAME TABLE ALLREADY IN @V304635 01239000
- * STORAGE 01240000
- LTR R4,R4 ..... @V304635 01241000
- BNZR R5 IF IT IS - RETURN TO CALLER @V304635 01242000
- L R1,=A(DMKSNTBL) ADDRESS OF SYSNAME TABLE @V304635 01243000
- TRANS 2,1,OPT=(BRING,DEFER,LOCK,SYSTEM) @V304635 01244000
- LR R4,R2 ADDRESS OF SYSTABLE TO R4 @V304635 01245000
- ST R2,SAVEWRK6 SAVE ADDRESS OF SYSNAME TABLE @V304635 01246000
- BR R5 RETURN TO CALLER @V304635 01247000
- EJECT 01248000
- SYSTUNLC ST R2,SAVEWRK9 SAVE ERROR CODE REGISTER @V304635 01249000
- L R2,SAVEWRK6 TEST IF DMKSNT TABLE IN STORAGE @V304635 01250000
- LTR R2,R2 IS IT ? @V304635 01251000
- BNZ PTRUL IF IS - UNLOCK IT. @V304635 01252000
- L R2,SAVEWRK9 RESTORE R2 @V304635 01253000
- BR R10 RETURN TO CALLER @V304635 01254000
- PTRUL CALL DMKPTRUL UNLOCK THE SYSNAME TABLE @V304635 01255000
- XC SAVEWRK6,SAVEWRK6 ZERO OUT ADDRESS OF SYSNAME @V304635 01256000
- * TABLE 01257000
- L R2,SAVEWRK9 RESTORE ERROR CODE REGISTER @V304635 01258000
- BR R10 RETURN TO CALLER @V304635 01259000
- SPACE 2 01260000
- FREEKBUF L R0,SAVEWRK9 BUFFER LENGTH @VA04160 01261000
- L R1,SAVEWRK4 BUFFER ADDRESS @VA04160 01262000
- CALL DMKFRET FRET THE BUFFER @VA04160 01263000
- BR R10 RETURN @VA04160 01264000
- NOSYSOWN EQU * VOLID NOT CP OWNED @V200820 01265000
- MVC SAVEWRK4+1(L'SYSVOL),SYSVOL MOVE IN VOLID @VM03100 01266000
- MVI SAVEWRK4,SEP00 MOVE IN FIELD DELIMITER @VM03100 01267000
- LA R0,LEN15 LOAD LENGTH OF ERROR MSG PARM @VM03100 01268000
- LA R1,SAVEWRK2 LOAD PARM REG WITH ADDRESS OF MSG@VM03100 01269000
- B CFG179 GO WRITE ERROR MSG DMKCFG179 @VM03100 01270000
- NOSYSVOL MVC SAVEWRK4+1(L'SYSVOL),SYSVOL VOL SER FOR ERR MSG @VM03100 01271000
- B LOADLEN GO SET UP LENGTH PARM REG @VM03100 01272000
- NOSYSRES MVC SAVEWRK4+1(L'VSYSRES),VSYSRES VIRT SYSRES VOL @VM03100 01273000
- * SER FOR MSG 01274000
- LOADLEN MVI SAVEWRK4,SEP00 MOVE IN FIELD SEPARATOR @VM03100 01275000
- LA R0,LEN15 LOAD PARM REG LENGTH OF PARMS @VM03100 01276000
- LA R1,SAVEWRK2 LOAD ADDRESS OF ERROR MSG PARMS @VM03100 01277000
- B CFG171 GO TO WRITE ERROR MSG ROUTINE @VM03100 01278000
- BLD172 EQU * INCOMPATIBLE VSYSRES 01279000
- BAL R10,GETVADDR BUILD VADDR 01280000
- B CFG172 GO TO WRITE ERROR MSG ROUTINE @VM03100 01281000
- SPACE 01282000
- BLD173 EQU * VADDR REQUIRED 01283000
- BAL R10,GETVADDR BUILD VADDR 01284000
- B CFG173 GO TO WRITE ERROR MSG ROUTINE @VM03100 01285000
- SPACE 01286000
- GETVADDR LH R1,SYSVADDR LOAD VADDR FROM SYSTBL 01287000
- CALL DMKCVTBH CONVERT IT 01288000
- ICM R1,8,F0 INSERT THE SEPARATER 01289000
- ST R1,SAVEWRK4 STORE DEV ADDRESS IN MSG TEXT 01290000
- LA R0,12 FIELD LENGTH 01291000
- LA R1,SAVEWRK2 FIELD ADDRESS 01292000
- BR R10 RETURN 01293000
- MOVEPARM MVC VMGPRS(0),0(R1) EXECUTED MOVE @V304635 01294000
- MOVGPRS MVC 0(0,R14),0(R15) DITTO @V304635 01295000
- SAVENAME MVC SAVEWRK2(0),0(R1) @V304635 01296000
- MOVENAME MVC SAVEWRK2(0),0(R2) EXECUTED MOVE @V304635 01297000
- SETFLGS OI SAVEWRK1+2,*-* SET USER'S CONDITION CODE IS PSW @VM03100 01298000
- SETPSWCC OI 0(R1),*-* SET USER'S CONDITION CODE IN PSW @V304635 01299000
- SETCC1 LA R2,CC1 SET CONDITION CODE 1 @VM03100 01300000
- B SETCCODE PUT CC IN USER'S PSW @VM03100 01301000
- SETCC2 LA R2,CC2 SET CONDITION CODE 2 @VM03100 01302000
- B SETCCODE PUT CC IN USER'S PSW @VM03100 01303000
- SETCCODE LA R1,VMPSW+4 BC MODE PSW COND. CODE @V304635 01304000
- TM VMESTAT,VMEXTCM VM IN EC MODE NOW ? @V304635 01305000
- BZ NOECMODE NO - SET BC MODE CC @V304635 01306000
- LA R1,VMPSW+2 TARGET FOR EC MODE PSW CC @V304635 01307000
- NOECMODE EX R2,SETPSWCC SET PSW CONDITION CODE @V304635 01308000
- B CFGEXIT RETURN TO CALLER @V304635 01309000
- MASKFLGS DC AL1(LOADFLG,LOADFLG+NONSHARE,PURFLG,FINDFLG) @V304635 01310000
- EJECT 01311000
- *. 01312000
- * 01313000
- * SUBROUTINE NAME - 01314000
- * 01315000
- * DMKCFGCL 01316000
- * 01317000
- * FUNCTION - 01318000
- * 01319000
- * TO PROCESS THE DIAGNOSE X'64' INSTRUCTION 01320000
- * 01321000
- * SUBFUNCTION CODES - 01322000
- * 01323000
- * X'00' - LOADSYS - LOADS A NAMED SYSTEM IN SHARED MODE 01324000
- * 01325000
- * X'04' - LOADSYS - LOAD A NAMED SYSTEM IN NONSHARED MODE 01326000
- * 01327000
- * X'08' - PURGESYS - RELEASES THE NAMED SYSTEM FROM USER'S 01328000
- * VIRTUAL STORAGE 01329000
- * 01330000
- * X'0C' - FINDSYS - FINDS THE STARTING AND ENDING ADDRESS 01331000
- * OF A NAMED SYSTEM IN USER'S MEMORY 01332000
- * 01333000
- * OPERATION - 01334000
- * 01335000
- * 1. SAVE THE SYSTEM NAME IN SAVEAREA 01336000
- * 01336100
- * 2. DIVIDE THE SUBFUNCTION CODE BY FOUR AND SET THE 01337000
- * APPROPRIATE INTERNAL FLAG IN THE WORKAREA: LOADSYS, 01338000
- * FINDSYS OR PURGESYS. 01339000
- * 01339100
- * 3. IF THIS IS A LOADSYS COMMAND, JOIN CODE AT LOADSYS 01340000
- * LABEL (STEP 20 IN PROLOGUE) OF DMKCFGIP. 01341000
- * 01341100
- * 4. IF IT WASN'T A VALID SUBFUNCTION CODE ISSUE ABEND 10. 01342000
- * 01342100
- * 5. IF THIS USER IS THE V=R USER, RETURN TO CALLER WITH 01343100
- * CONDITION CODE 2. 01343600
- * 01344100
- * 6. IF LOGOFF HAS STARTED, CALL DMKERMSG TO SEND ERROR 01345000
- * MESSAGE DMKCFG001E. 01346000
- * 01346100
- * 7. TRANS AND LOCK THE SYSTEM NAME TABLE (SYSTBL). 01347000
- * 01347100
- * 8. LOOP THRU THE SYSTEM NAME TABLE TRYING TO FIND THE 01348000
- * REQUESTED NAME. IF THE NAME IS NOT FOUND, CALL 01349000
- * DMKERMSG TO SEND ERROR MESSAGE DMKCFG044E. 01350000
- * 01350100
- * 9. IF THIS IS A PURGESYS OPERATION, SKIP TO STEP 12. 01351000
- * 01351100
- * 10. USE THE PAGE NUMBERS IN THE SYSTBL TO CALCULATE THE 01352000
- * STARTING AND ENDING ADDRESS RANGE OF THE NAMED SYSTEM 01353000
- * AND STORE THEM IN THE USER'S PARAMETER AREA. 01354000
- * 01354100
- * 11. DO A DIRECT ADDRESS LOOKUP TO SEE IF USER IS RUNNING 01355100
- * WITH THIS NAMED SYSTEM.IF THE 01355200
- * SYSTEM WAS NOT FOUND IN THE USER'S ADDRESS SPACE, SET 01356000
- * ITS PSW TO CONTAIN A CONDITION CODE OF ONE AND GOTO 01357000
- * STEP 13. IF IT WAS FOUND, GOTO STEP 13. 01358000
- * 12. CALL DMKPGSPS TO PURGE THE NAMED SYSTEM FROM THE USER'S 01359000
- * ADDRESS SPACE. IF THE NAMED SYSTEM WASN'T FOUND, SET 01360000
- * THE USER'S PSW TO CONTAIN A CONDITION CODE OF ONE. 01361000
- * 01361100
- * 13. CALL DMKPTRUL TO UNLOCK THE SYTEM NAME TABLE. 01362000
- * 01362100
- * 14. RETURN TO CALLER 01363000
- *. 01364000
- SPACE 2 01365000
- DMKCFGCL RELOC @V304635 01366000
- XC SAVEWRK1,SAVEWRK1 CLEAR FLAG BYTES. @V304635 01367000
- XC SAVEWRK2(SAVEWRK9-SAVEWRK2+4),SAVEWRK2 CLEAR ALL@VM03100 01368000
- STM R1,R2,SAVEWRK2 SAVE THE 'NAMED' SYSTEM @V304635 01369000
- SRL R3,2 DIVIDE BY 4 @V304635 01370000
- IC R3,MASKFLGS(R3) GET PROPER INDICATOR FLAGS @V304635 01371000
- EX R3,SETFLGS TURN ON APPRO. FLAGS @V304635 01372000
- CL R11,AVMREAL IS USER IN A V=R AREA ? @VA12820 01372100
- BE CFG203 YES.. CAN'T ISSUE THIS FUNCTION @VA12820 01372200
- TM SAVEWRK1+2,LOADFLG LOADSYS FUNCTION. @V304635 01373000
- BO LOADSYS YES - PROCESS IT. @V304635 01374000
- TM SAVEWRK1+2,PURFLG+FINDFLG VALID FUNCTION ? @V304635 01375000
- BNZ VALIDREQ YES - PROCESS IT @V304635 01376000
- SPACE 1 01377000
- ABEND 10 CONDITION SHOULD NEVER HAPPEN. @V304635 01378000
- VALIDREQ DS 0H LOCATE THE DESIRED NAMED SYSTEM @V304635 01379000
- * FUNCTION 01382000
- TM VMRSTAT,VMLOGOFF OTHER ACTIVITY STARTED? @V408246 01383000
- BO CFG001 YES, GET OUT AS FAST AS POSSIBLE @V408246 01384000
- BAL R5,GETSNTBL BRING IN SYSTEM NAME TABLE @V304635 01385000
- USING SYSTBL,R4 @V304635 01386000
- NXTNAME CLC SYSNAME,SAVEWRK2 LOOK FOR NAMED SYSTEM @VM03100 01387000
- BE CHKUSE FOUND IT. @V304635 01388000
- L R3,SYSPNT GET DISP. TO NEXT BLOK @V304635 01389000
- AR R4,R3 CALC. ACTUAL NEXT ADDRESS. @V304635 01390000
- LTR R3,R3 NAME TABLE EXHAUSTED @V304635 01391000
- BZ CFG044 YES - UNKNOWN NAME. @V304635 01392000
- B NXTNAME TRY NEXT ENTRY IN TABLE @V304635 01393000
- CHKUSE DS 0H @V304635 01394000
- TM SAVEWRK1+2,PURFLG PURGESYS FUNCTION ? @V304635 01395000
- BO CHKFUNCT LOAD UP NAME AND CALL DMKPGS @V304635 01396000
- LH R2,SYSPAGNM USER FIRST PAGE @V304635 01397000
- SLL R2,12 ADD DISPLACEMENT TO IT @V304635 01398000
- L R5,SAVER5 GET USERS R1 REGISTER @V304635 01399000
- ST R2,0(,R5) SAVE FIRST ADDRESS FOR CALLER. @V304635 01400000
- LH R3,SYSPAGLN GET NUMBER OF ENTRIES IN TABLE. @V304635 01401000
- BCTR R3,0 DECREMENT FOR INDEX @V304635 01402000
- SLL R3,2 4 BYTES PER ENTRY @V304635 01403000
- LH R2,SYSPAGNM+2(R3) GET ENDING ADDRESS OF SAVED @V304635 01404000
- * SYSTEM 01405000
- SLL R2,12 ADD IN PROPER DISPLACEMENT @V304635 01406000
- AL R2,F4095 ROUND TO LAST BYTE IN THE PAGE @V304635 01407000
- L R5,SAVER6 GET USER'S R2 REGISTER @V304635 01408000
- ST R2,0(,R5) SAVE ENDING ADDRESS FOR CALLER. @V304635 01409000
- CHKFUNCT LM R1,R2,SYSNAME NAME OF 'NAMED' SYSTEM @V304635 01410000
- TM SAVEWRK1+2,PURFLG PURGESYS FUNCTION ? @V304635 01411000
- BO PGSPS YES - ISSUE CALL TO DMKPGSPS @V304635 01412000
- SPACE 1 01413000
- L R1,SAVER5 GET USERS R1 REGISTER @V60BC11 01414100
- L R1,0(,R1) GET STARTING ADDR OF NAMED SYSTEM@V60BC11 01414200
- SRL R1,16 GET SEGMENT NUMBER ONLY @V60BC11 01414300
- SLR R2,R2 ZERO REGISTER @V60BC11 01414400
- IC R2,VMSEG GET SEGMENT TABLE LENGTH @V60BC11 01414500
- LA R2,1(,R2) CHANGE TO BASE OF ONE @V60BC11 01414600
- SLL R2,4 TIMES 16 FOR STE COUNT @V60BC11 01414700
- CR R1,R2 ADDRESS WITHIN USER STORAGE @V60BC11 01414800
- BNL SETCC1 NO, CANNOT HAVE NAMED SEGMENT @VA09458 01414900
- SLL R1,2 SEGMENT NUMBER * 4 @V60BC11 01415000
- AL R1,VMSEG GET ADDRESS OF STE @V60BC11 01415100
- ICM R6,B'0110',(SEGPAGE+1)-SEGTABLE(R1) ANY PTE PT @VA09458 01415225
- BZ SETCC1 NO,CANNOT HAVE NAMED SEGMENT @VA09458 01415250
- IC R6,(SEGPAGE+3)-SEGTABLE(,R1) GET REST OF PTE @VA09458 01415275
- * POINTER 01415300
- N R6,=A(X'00FFFFFF'-SEGINV) CLEAR UNWANTED BITS @VA09458 01415325
- SL R6,F16 BACKUP TO PAGTABLE HEADER @VA09458 01415350
- L R10,PAGSHR-PAGTABLE(,R6) GET ADDR OF SHRTABLE @VA09458 01415375
- LTR R10,R10 IS THERE ONE @V60BC11 01415500
- BZ SETCC1 NO, CANNOT BE RUNNING NAMED SYS @V60BC11 01415600
- USING SHRTABLE,R10 ADDRESSABILITY TO SHRTABLE @V60BC11 01415700
- CLC SHRNAME,SAVEWRK2 NAMES MATCH @V60BC11 01415800
- BZ CFGEXIT YES, RETURN TO CALLER @V60BC11 01415900
- B SETCC1 NO, NOT RUNNING NAMED SYSTEM @V60BC11 01416000
- DROP R10 @V60BC11 01416100
- EJECT 01416200
- PGSPS CALL DMKPGSPS LET PGS PURGE SYSNAME @V304635 01419000
- BNZ SETCC1 IF NOT IN USE SET CC=1 @V304635 01420000
- B RETURN RETURN TO CALLER. @V304635 01421000
- SPACE 1 01422000
- CFG001 LA R2,EMSG001 LOAD ERROR CODE @VM03100 01423000
- B CALLERM GO SET UP ERROR MSG DMKCFG001 @VM03099 01424000
- SPACE 1 01425000
- CFG002 LA R2,EMSG002 LOAD ERROR CODE @VM03100 01426000
- B CALLERM GO SET UP ERROR MSG DMKCFG002 @VM03099 01427000
- SPACE 1 01428000
- CFG003 LA R2,EMSG003 LOAD ERROR CODE @VM03100 01429000
- B CALLERM GO SET UP ERROR MSG DMKCFG003 @VM03099 01430000
- SPACE 1 01431000
- CFG013 LM R0,R1,SAVEWRK7 ARGUMENT LENGTH AND ADDRESS @V304635 01432000
- LA R2,EMSG013 LOAD ERROR CODE @VM03100 01433000
- B CALLERM GO SET UP ERROR MSG DMKCFG013 @VM03099 01434000
- SPACE 1 01435000
- CFG026 LA R2,EMSG026 LOAD ERROR CODE @VM03100 01436000
- B NOVAR GO SET UP ERROR MSG DMKCFG026 @VM03099 01437000
- CFG040 CALL DMKCVTBH CONVERT TO PRINTABLE CHAR'S @V304635 01438000
- N R1,X40FFS BLANK HIGH BYTE @V304635 01439000
- SLR R0,R0 ZERO LENGTH @V304635 01440000
- LA R2,EMSG040 LOAD ERROR CODE @VM03100 01441000
- B CALLERM GO SET UP ERROR MSG DMKCFG044 @VM03099 01442000
- SPACE 1 01443000
- SPACE 01444000
- SPACE 01445000
- CFG044 LA R0,L'SYSNAME LOAD LENGTH OF FIELD @VM03100 01446000
- LA R1,SAVEWRK2 FIELD ADDRESS 01447000
- LA R2,EMSG044 LOAD ERROR CODE @VM03100 01448000
- B CALLERM GO SET UP ERROR MSG DMKCFG044 @VM03099 01449000
- SPACE 1 01450000
- CFG044A LM R0,R1,SAVEWRK2 ADDRESS OF BAD NAME @V304635 01451000
- LA R2,EMSG044 LOAD ERROR CODE @VM03100 01452000
- B CALLERM GO SET UP ERROR MSG DMKCFG170 @VM03099 01453000
- SPACE 01454000
- CFG170 LA R0,L'SYSNAME LOAD LENGTH OF FIELD @VM03201 01455000
- LA R1,SAVEWRK2 FIELD ADDRESS @VM03201 01456000
- LA R2,EMSG170 LOAD ERROR CODE @VM03201 01457000
- B CALLERM ..... 01458000
- SPACE 01459000
- CFG171 LA R2,EMSG171 LOAD ERROR CODE @VM03100 01460000
- B CALLERM GO SET UP ERROR MSG DMKCFG171 @VM03099 01461000
- SPACE 01462000
- CFG172 LA R2,EMSG172 LOAD ERROR CODE @VM03100 01463000
- B CALLERM GO SET UP ERROR MSG DMKCFG172 @VM03099 01464000
- SPACE 01465000
- CFG173 LA R2,EMSG173 LOAD ERROR CODE @VM03100 01466000
- B CALLERM GO SET UP ERROR MSG DMKCFG173 @VM03099 01467000
- SPACE 1 01468000
- CFG174 LA R2,EMSG174 LOAD ERROR CODE @VM03100 01469000
- B NOVAR GO SET UP ERROR MSG DMKCFG174 @VM03099 01470000
- SPACE 1 01471000
- CFG177 LA R2,EMSG177 LOAD ERROR CODE @VM03100 01472000
- B NOVAR GO SET UP ERROR MSG DMKCFG177 @VM03099 01473000
- SPACE 01474000
- CFG179 LA R2,EMSG179 LOAD ERROR CODE @VM03100 01475000
- B CALLERM GO SET UP ERROR MSG DMKCFG179 @VM03099 01476000
- SPACE 1 01477000
- CFG203 LA R2,EMSG203 LOAD ERROR CODE @VM03100 01478000
- SLR R0,R0 CLEAR PARM REG @VM03099 01479000
- B NOVAR GO SET UP ERROR MSG DMKCFG203 @VM03099 01480000
- SPACE 01481000
- SPACE 1 01482000
- NAMPERR2 L R0,SAVEWRK9 LENGTH OF KEY TABLE @VA05638 01483000
- L R1,SAVEWRK3 ADDRESS OF KEY TABLE @VA05638 01484000
- CALL DMKFRET GET RID OF IT @VA05638 01485000
- SPACE 1 01486000
- NAMPERR1 LR R1,R10 STARTING ADDRESS OF SYSTEM @VA05638 01487000
- LR R2,R1 ALSO IS ENDING ADDRESS @VA05638 01488000
- CALL DMKPGSPP CLEAR ONLY POSSIBLE PAGE @VA05638 01489000
- SR R1,R1 INDICATE NO SHRTABLE @VA05638 01490000
- CALL DMKPGSPS FRET TABLES AND REDO VMSIZE @VA05638 01491000
- LA R2,EMSG174 LOAD ERROR CODE @VA05638 01492000
- SPACE 1 01493000
- SPACE 3 01494000
- NOVAR SLR R1,R1 ZIP THE PARM REG 01495000
- CALLERM BAL R10,SYSTUNLC UNLOCK SYSNAME TABLE @V304635 01496000
- ICM R0,B'1110',MODID+3 INSERT MODULE IDENT. @VM03100 01497000
- TM SAVEWRK1+2,LOADFLG+PURFLG+FINDFLG DIAG. @V304635 01498000
- * FUNCTION ? 01499000
- BZ ERMSG NO - CALL ERROR MESSAGE MODULE @V304635 01500000
- L R6,SAVER6 GET ADDRESS OF USERS R2 REGISTER @V304635 01501000
- ST R2,0(,R6) YES - SAVE ERROR RETURN CODE @V304635 01502000
- B SETCC2 SET CC=2 AND RETURN TO CALLER @V304635 01503000
- ERMSG CALL DMKERMSG SEND THE ERROR MESSAGE @V304635 01504000
- * 01505000
- * ERMSG WILL RETURN DIRECTLY TO DMKCFM -- NOT HERE -- 01506000
- * 01507000
- DS 0F 01507010
- CFGSYSAP DC A(DMKSYSAP) ADDRESS OF DMKSYSAP @V5BC0AB 01507110
- YES EQU C'Y' @V5BC0AB 01507210
- SPACE 3 01508000
- PAGE2314 EQU 32 NUMBER OF PAGES PER CYLINDER @VM03100 01509000
- * (2314/2319). 01510000
- PAGE3330 EQU 57 NUMBER OF PAGES PER CYLINDER @VM03100 01511000
- * (3330). 01512000
- PAGE3350 EQU 120 NUMBER OF PAGES PER CYLINDER @VM03100 01513000
- * (3350). 01514000
- PAGE3375 EQU 96 Number of pages per cylinder HRC106DK 01514100
- * (3375) HRC106DK 01514200
- PAGE3380 EQU 150 Number of pages per cylinder HRC106DK 01514300
- * (3380) HRC106DK 01514400
- PAGE2305 EQU 24 NUMBER OF PAGES PER CYLINDER @VM03100 01515000
- * (2305/3340). 01516000
- * 01517000
- LEN0 EQU 0 LENGTH VALUE OF 0 @VM03100 01518000
- LEN3 EQU 3 LENGTH VALUE OF 3 @VM03100 01519000
- LEN4 EQU 4 LENGTH VALUE OF 4 @VM03100 01520000
- LEN15 EQU 15 LENGTH VALUE OF 15 @VM03100 01521000
- * 01522000
- CC0 EQU X'00' VALUE FOR CONDITION CODE 0 @VM03100 01523000
- CC1 EQU X'10' VALUE FOR CONDITION CODE 1 @VM03100 01524000
- CC2 EQU X'20' VALUE FOR CONDITION CODE 2 @VM03100 01525000
- CC3 EQU X'30' VALUE FOR CONDITION CODE 3 @VM03100 01526000
- * 01527000
- ONE EQU 1 VALUE OF ONE @VM03100 01528000
- * 01529000
- SEGINDEX EQU 1 SEGMENT INDEX VALUE OF 1 @VM03100 01530000
- * 01531000
- INDEX1 EQU 1 INDEXING BY 1 @VM03100 01532000
- INDEX4 EQU 4 INDEXING BY 4 @VM03100 01533000
- * 01534000
- RETPLUS4 EQU 4 VALUE USED FOR RETURNING PLUS 4 @VM03100 01535000
- * 01536000
- SEP00 EQU X'00' SEPARATOR CHARACTER @VM03100 01537000
- * 01538000
- HEX00 EQU X'00' VALUE OF X'00' @VM03100 01539000
- HEXC4 EQU X'C4' HEX VALUE OF X'C4' @VM03100 01540000
- HEX02 EQU X'02' HEX VALUE OF X'02' @VM03100 01541000
- * 01542000
- PAGHDR EQU 2 LENGTH OF PAGHDR @VM03100 01543000
- SWPHDR EQU 8 LENGTH OF SWPHDR @VM03100 01544000
- * 01545000
- EMSG001 EQU 1 ERROR MESSAGE NUMBER 001 @VM03100 01546000
- EMSG002 EQU 2 ERROR MESSAGE NUMBER 002 @VM03100 01547000
- EMSG003 EQU 3 ERROR MESSAGE NUMBER 003 @VM03100 01548000
- EMSG006 EQU 6 ERROR MESSAGE NUMBER 006 @VM03100 01549000
- EMSG013 EQU 13 ERROR MESSAGE NUMBER 013 @VM03100 01550000
- EMSG026 EQU 26 ERROR MESSAGE NUMBER 026 @VM03100 01551000
- EMSG040 EQU 40 ERROR MESSAGE NUMBER 040 @VM03100 01552000
- EMSG044 EQU 44 ERROR MESSAGE NUMBER 044 @VM03100 01553000
- EMSG170 EQU 170 ERROR MESSAGE NUMBER 170 @VM03100 01554000
- EMSG171 EQU 171 ERROR MESSAGE NUMBER 171 @VM03100 01555000
- EMSG172 EQU 172 ERROR MESSAGE NUMBER 172 @VM03100 01556000
- EMSG173 EQU 173 ERROR MESSAGE NUMBER 173 @VM03100 01557000
- EMSG174 EQU 174 ERROR MESSAGE NUMBER 174 @VM03100 01558000
- EMSG177 EQU 177 ERROR MESSAGE NUMBER 177 @VM03100 01559000
- EMSG179 EQU 179 ERROR MESSAGE NUMBER 179 @VM03100 01560000
- EMSG203 EQU 203 ERROR MESSAGE NUMBER 203 @VM03100 01561000
- EMSG300 EQU 300 ERROR MESSAGE NUMBER 300 @VM03100 01562000
- EMSG435 EQU 435 ERROR MESSAGE NUMBER 435 @VM03100 01563000
- VMUSERL EQU 8 LENGHT OF VMUSER FIELD @VA13054 01563500
- SPACE 2 01564000
- LTORG * @VM03100 01565000
- SPACE 01566000
- USERSTOR DSECT @VM03100 01567000
- CYLAREA DS XL2 FILLER @VM03100 01568000
- DEVAREA DS XL2 PLACE FOR DEVICE ADDRESS @VM03100 01569000
- DS 4X FILLER @VM03100 01570000
- MSGBYTE DS XL2 PLACE FOR MESSAGE INFORMATION @VM03100 01571000
- STOPBYTE DS 1X STOP FLAG @VM03100 01572000
- * 01573000
- * BITS DEFINED IN STOPBYTE 01574000
- NOSTOP EQU X'00' NO STOP ON IPL @VM03100 01575000
- IPLSTOP EQU X'80' STOP ON IPL @VM03100 01576000
- EJECT 01577200
- OSVSCOM MSSCOM @VA13054 01577400
- SPACE 1 01577600
- COPY CONBUF @VM03100 01578000
- COPY TREXT @VM03100 01579000
- COPY SHRTABLE @VM03100 01580000
- PSA , @V306638 01581000
- COPY CORE @V306638 01582000
- COPY DEVTYPES @V306638 01583000
- COPY EQU @V306638 01584000
- COPY IOBLOKS @V306638 01585000
- COPY RBLOKS @V306638 01586000
- COPY SAVE @V306638 01587000
- COPY SAVTABLE @V306638 01588000
- COPY SYSTBL @V306638 01589000
- COPY VBLOKS @V306638 01590000
- COPY VMBLOK @V306638 01591000
- END 01592000
ibm/vm370-lib/cp/dmkcfg.assemble_src.txt ยท Last modified: 2023/08/06 13:36 by Site Administrator