ibm:vm370-lib:cp:dmkcpv.assemble_src
Table of Contents
DMKCPV Source
References
- Fixes Applied : 4
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [R11139DK]
Source Listing
- DMKCPV.ASSEMBLE.txt
- CPV TITLE 'DMKCPV (CP) VM/370 - RELEASE 6' 00001000
- *. 00002000
- * MODULE NAME - 00003000
- * 00004000
- * DMKCPV 00005000
- * 00006000
- * FUNCTION - 00007000
- * 00008000
- * TO HANDLE A, B, AND C PRIVILEGE CLASS COMMANDS THAT ARE NOT 00009000
- * SUBSETS OF NON-PRIVILEGED COMMANDS 00010000
- * 00011000
- * ATTRIBUTES - 00012000
- * 00013000
- * REENTRANT, PAGEABLE, CALLED VIA SVC 00014000
- * 00015000
- * ENTRY POINTS 00016000
- * 00017000
- * DMKCPVEN - ENABLE SYSTEM LOW SPEED LINES 00018000
- * DMKCPVAE - ENABLE SYSTEM LOW SPEED LINES DURING SYSTEM RESTART 00019000
- * DMKCPVDS - DISABLE SYSTEM LOW SPEED LINES 00020000
- * DMKCPVLK - LOCK USER PAGES INTO MAIN STORAGE 00021000
- * DMKCPVUL - UNLOCK USER PAGES PREVIOUSLY LOCKED 00022000
- * DMKCPVAC - CREATE AN ACCOUNTING RECORD FOR THE SPECIFIED 00023000
- * USER OR FOR ALL USERS ON THE SYSTEM 00024000
- * DMKCPVAA - TO PUNCH ACCOUNTING CARDS 00025000
- * 00026000
- * ENTRY CONDITIONS - 00027000
- * 00028000
- * GPR9 = ADDRESS OF COMMAND LINE BUFFER 00029000
- * GPR11 = ADDRESS OF CALLER'S VMBLOK 00030000
- * GPR12 = ADDRESS OF ENTRY POINT 00031000
- * GPR13 = ADDRESS OF SAVEAREA 00032000
- * 00033000
- * EXIT CONDITIONS - 00034000
- * 00035000
- * NORMAL - 00036000
- * GPR2 = 0 00037000
- * 00038000
- * ERROR - 00039000
- * GPR2 = ERROR MESSAGE CODE NUMBER 00040000
- * 00041000
- * CALLS TO OTHER ROUTINES - 00042000
- * 00043000
- * DMKGRFIN - TO ENABLE GRAPHIC DEVICES 00044000
- * DMKQCNWT - TO WRITE MESSAGE TO CONSOLE 00045000
- * DMKFREE - TO OBTAIN STORAGE 00046000
- * DMKSCNAU - TO FIND VMBLOK 00047000
- * DMKPTRUL - TO UNLOCK A PAGE 00048000
- * DMKFRET - TO RETURN A BLOCK OF STORAGE 00049000
- * DMKCVTBH - TO CONVERT BINARY TO HEX 00050000
- * DMKSCNRN - GET THE REAL DEVICE TYPE 00051000
- * DMKSCNFD - LOCATE THE NEXT ARGUMENT ON THE COMMAND LINE 00052000
- * DMKCVTHB - CONVERT HEXADECIMAL ADDRESSES TO BINARY 00053000
- * DMKSCNRU -LOCATE THE RDEVBLOK FOR THE SPECIFIED REAL DEVICE 00054000
- * DMKPTRAN - LOCATE AND FETCH A PAGE OF VIRTUAL STORAGE 00055000
- * DMKACOTM - PRINT USER ACCOUNTING MESSAGE GIVING CONNECT AND 00056000
- * CPU TIMES 00057000
- * DMKACOFF - CREATE AN ACCOUNTING RECORD FOR A USER 00058000
- * DMKACODV - CREATE AN ACCOUNTING RECORD FOR A DEDICATED DEVICE 00059000
- * DMKERMSG - TO SEND ERROR MESSAGES TO TERMINAL 00060000
- * DMKSCNRD - GET THE REAL DEVICE ADDRESS (CCU) 00061000
- * DMKLOKSW - SWITCH TO ANOTHER VMBLOK IF SYSTEM IS AP-MODE 00061100
- * 00062000
- * EXTERNAL REFERENCES - 00063000
- * 00064000
- * DMKDSPNP - NUMBER OF PAGES AVAILABLE IN DYNAMIC PAGING 00065000
- * AREA. 00066000
- * DMKSCHPU - PAGE USAGE COUNT (TOTAL WORKING SET SIZE 00066200
- * OF IN-QUEUE USERS). 00066400
- * 00067000
- * TABLES / WORKAREAS - 00068000
- * 00069000
- * CORTABLE 00070000
- * 00071000
- * REGISTER USAGE - 00072000
- * 00073000
- * GPR0 = LENGTH OF ARGUMENT (RETURNED BY DMKSCNFD) 00074000
- * GPR1 = ADDRESS OF ARGUMENT (RETURNED BY DMKSCNFD) 00075000
- * GPR2 = PARMS PASSED TO CALLED ROUTINES 00076000
- * GPR3 = LENGTH FOR EXECUTED MOVES AND COMPARES 00077000
- * GPR4 = INTERNAL LINKAGE (2ND LEVEL) 00078000
- * GPR5 = INTERNAL LINKAGE (2ND LEVEL) 00079000
- * GPR6-8 NOT USED 00080000
- * GPR9 = ADDRESS OF COMMAND LINE BUFFER 00081000
- * GPR10 = IOBLOK BASE 00082000
- * GPR11 = VMBLOK BASE 00083000
- * GPR12 = MODULE BASE 00084000
- * GPR13 = SAVEAREA BASE 00085000
- * GPR14 = EXTERNAL LINKAGE 00086000
- * GPR15 = EXTERNAL LINKAGE 00087000
- * 00088000
- * OPERATION - 00089000
- * 00090000
- * THE COMMAND HANDLING ROUTINES IN DMKCPV ARE CALLED FROM DMKCFM 00091000
- * AFTER THEIR PRIVILEGE CLASS HAS BEEN VERIFIED 00092000
- * THE FORMAT AND OPERATION OF EACH COMMAND IS DESCRIBED IN S 00093000
- * SEPARATE COMMAND PROLOGUES BELOW 00094000
- *. 00095000
- EJECT 00096000
- COPY OPTIONS @VA03757 00097000
- COPY LOCAL @VA03757 00098000
- SPACE 3 00099000
- PUNCH 'SPB' @VA03757 00100000
- DMKCPV CSECT @VA03757 00101000
- MODID DC CL8'DMKCPV' @VA03757 00102000
- SPACE 3 00103000
- USING PSA,R0 @VA03757 00104000
- USING VMBLOK,R11 @VA03757 00105000
- USING SAVEAREA,R13 @VA03757 00106000
- SPACE 2 00107000
- EXTRN DMKSCNFD @VA03757 00108000
- EXTRN DMKSCNAU @VA03757 00109000
- EXTRN DMKCVTHB @VA03757 00110000
- EXTRN DMKSCNRD @VA03757 00111000
- EXTRN DMKSCNRU @VA03757 00112000
- EXTRN DMKPTRUL @VA03757 00113000
- EXTRN DMKACOTM @VA03757 00114000
- EXTRN DMKACOFF @VA03757 00115000
- EXTRN DMKACODV @VA03757 00116000
- EXTRN DMKDSPNP @VA03757 00117000
- EXTRN DMKSCHPU @VA04709 00117500
- EXTRN DMKCVTBH @VA03757 00118000
- EXTRN DMKSCNRN @VA03757 00119000
- EXTRN DMKERMSG @VA03757 00120000
- EXTRN DMKRNH @VA05061 00120500
- EXTRN DMKPTRAN @VA03757 00121000
- * DMKPGSPR - RELEASE PAGES IN VIRT=REAL REGION 00122000
- EXTRN DMKSTKCP,DMKCNSEN,DMKGRFEN @VA03757 00123000
- EXTRN DMKPTRCP,DMKPTRSN @VA08341 00123100
- AIF (NOT &VIRREAL).VIRT0 @VA03757 00124000
- EXTRN DMKSLC @VA03757 00125000
- EXTRN DMKPGSPR @V408246 00126000
- .VIRT0 ANOP 00127000
- EJECT 00128000
- *. 00129000
- * SUBROUTINE NAME - 00130000
- * 00131000
- * DMKCPVEN 00132000
- * 00133000
- * FUNCTION - 00134000
- * 00135000
- * TO ENABLE SYSTEM LOW SPEED LINES FOR USER LOGON 00136000
- * 00137000
- * COMMAND LINE FORMAT - 00138000
- * 00139000
- * +----------+---------------------------+ 00140000
- * | ENABLE | LINE1 LINE2 ... LINEN | 00141000
- * | EN | ALL | 00142000
- * +----------+---------------------------+ 00143000
- * 00144000
- * OPERATION - 00145000
- * 00146000
- * 1. CALL DMKSCNFD TO GET THE NEXT ARGUMENT. IF NONE FOUND, 00147000
- * CHECK TO SEE IF ANY ARGUMENTS HAVE BEEN PROCESSED. IF NOT, 00148000
- * CALL DMKERMSG TO SEND ERROR MESSAGE DMKCPV026E. IF 00149000
- * PROCESSING HAS BEEN DONE, EXIT. 00150000
- * 2. IF ARGUMENT = 'ALL', GO TO STEP 6. IF NOT, CALL DMKCVTHB 00151000
- * TO CONVERT THE ADDRESS TO BINARY. IF CONVERT FAILS, CALL 00152000
- * DMKERMSG TO SEND ERROR MESSAGE DMKCPV021E. 00153000
- * 3. ISSUE SWITCH TO INSURE PROCESSING CONTINUES ON THE MAIN 00154100
- * PROCESSOR IF THE SYSTEM IS IN AP-MODE. CALL DMKSCNRU 00154200
- * TO GET THE DEVICE BLOKS. IF THE BLOKS ARE NOT 00154300
- * FOUND, CALL DMKERMSG TO SEND ERROR MESSAGE DMKCPV040E. 00155000
- * 4. IF DEVICE IS NOT A TERMINAL, GO TO STEP 8. IF IT IS A 00156000
- * DEDICATED LINE, GO TO STEP 10. IF DEVICE IS OFFLINE, GO TO 00157000
- * STEP 9. ELSE - CONTINUE. 00158000
- * 5. IF THIS IS A DISABLE COMMAND, GO TO THE DISABLE ROUTINE 00159000
- * AT LABEL DISASUB VIA A BAL R14. THIS ROUTINE IS DESCRIBED 00160000
- * IN THE PROLOG FOR DISABLE. IF AN ENABLE COMMAND, RESET THE 00161000
- * RDEVDISB FLAG IN THE RDEVBLOK. IF LINE IS ALREADY ENABLED, 00162000
- * GO TO STEP 1. IF NOT,BAL TO THE SUBROUTINE LABELED ENABTERM 00163000
- * IN STEP 12. UPON RETURN FROM THIS, GO TO STEP 1. 00164000
- * 6. CALL DMKSCNFD TO CHECK FOR ANY EXTRANEOUS ARGUMENT. IF 00165000
- * ONE FOUND, CALL DMKERMSG TO SEND ERROR MESSAGE DMKCPV003E. 00166000
- * PICK UP THE DEVICE BLOKS FOR THE NEXT TERMINAL DEVICE. IF 00167000
- * THIS IS A DISABLE COMMAND, BAL TO THE DISABLE ROUTINE AT 00168000
- * LABEL DISASUB WHICH IS DESCRIBED IN THE PROLOG FOR THE 00169000
- * DISABLE COMMAND. WHEN RETURN, GO TO STEP 7. IF THIS IS AN 00170000
- * ENABLE COMMAND, RESET THE RDEVDISB FLAG IN THE RDEVBLOK. 00171000
- * THEN BAL TO THE ENABLE ROUTINE IN STEP 12. 00172000
- * 7. IF THIS IS 'ALL' PROCESS AND THERE ARE MORE DEVICES TO 00173000
- * SCAN, GO BACK TO STEP 6. IF COMMAND IS COMPLETLY 00174000
- * PROCESSED, CALL DMKQCNWT TO SEND THE 'COMMAND COMPLETE' 00175000
- * MESSAGE AND THEN EXIT. 00176000
- * 8. SET UP THE INVALID TYPE MESSAGE(DMKCPV006E) AND GO TO 00177000
- * STEP 11. 00178000
- * 9. SET UP THE OFFLINE MESSAGE(DMKCPV046E) AND GO TO STEP 11. 00179000
- * 10. SET UP THE DEDICATED DEVICE(DMKCPV140E) ERROR MESSAGE. 00180000
- * 11. CALL DMKERMSG TO SEND THE ERROR MESSAGE. THEN GO BACK 00181000
- * TO STEP 1. 00182000
- * 12. CALL DMKFREE TO OBTAIN STORAGE FOR A CPEXBLOK. 00183000
- * STACK CPEXBLOK FOR DMKCNSEN OR DMKGRFEN TO ENABLE THE 00184000
- * SPECIFIED DEVICE. RETURN ON GR9. 00185000
- * 00186000
- * RESPONSES - 00187000
- * COMMAND COMPLETE 00188000
- * 00189000
- * ERROR MESSAGES - 00190000
- * DMKCPV003E INVALID OPTION - (OPTION) 00191000
- * DMKCPV006E INVALID DEVICE TYPE - (ADDR) 00192000
- * DMKCPV021E RADDR MISSING OR INVALID 00193000
- * DMKCPV026E OPERAND MISSING OR INVALID 00194000
- * DMKCPV040E DEV (ADDR) DOES NOT EXIST 00195000
- * DMKCPV046E (TYPE RADDR) OFFLINE 00196000
- * DMKCPV140E (TYPE RADDR) ATTACHED TO (USERID) 00197000
- * 00198000
- *. 00199000
- EJECT 00200000
- DMKCPVEN RELOC @VA03757 00201000
- MVC SAVEWRK1(4),ZEROES ZERO FLAG FIELD @VA03757 00202000
- SPACE 2 00203000
- ENABSCAN EQU * SCAN FOR ENABLE / DISABLE CMD @VA03757 00204000
- CALL DMKSCNFD FIND ANOTHER ARGUMENT @VA03757 00205000
- BNZ NOARG NO MORE ARGUMENTS @VA03757 00206000
- MVI SAVEWRK1,X'FF' INDICATE AT LEAST ONE ARG. @VA03757 00207000
- * RECEIVED 00208000
- CLC 0(3,R1),=C'ALL' WAS ALL SPECIFIED @VA03757 00209000
- BE DOALL YES @VA03757 00210000
- CL R0,F3 CAN ONLY HAVE UP TO THREE @VA03757 00211000
- * CHARACTERS 00212000
- BH CPV021 ERROR IF HAVE MORE @VA03757 00213000
- CALL DMKCVTHB CONVERT THE ADDRESS @VA03757 00214000
- BNZ CPV021 CONVERT FAILED @VA03757 00215000
- CALL DMKSCNRU LOCATE REAL BLOKS FOR DEVICE @VA03757 00216000
- BNZ CPV040 NOT FOUND @VA03757 00217000
- SWITCH CONTINUE PROCESSING ON MAIN PROC @V407508 00217100
- USING RDEVBLOK,R8 @VA03757 00218000
- CLI RDEVTYPC,CLASTERM TEST FOR TERMINAL CLASS @VA03757 00219000
- BE TSTTYP YES, TEST ADAPTER TYPE @VA03757 00220000
- CLI RDEVTYPC,CLASGRAF IS IT GRAPHIC TYPE ?? @VA03757 00221000
- BNE NOTERM NO, INVALID @VA03757 00222000
- TM RDEVTYPE,TYP3066+TYP3277+TYP3284+TYP3278 @V60A6B6 00223000
- BNZ TSTDED YES - ENABLE IT @VA03757 00224000
- B NOTERM INVALID @VA03757 00225000
- TSTTYP CLI RDEVTYPE,TYPTTY SUPPORTED DEVICE TYPE ? @VA03757 00226000
- BH NOTERM NO -- ERROR @VA03757 00227000
- CLI RDEVTYPE,TYPSDLC SDLC ADAPTER? @VA11139 00227100
- BE NOTERM YES, IGNORE IT. @VA11139 00227200
- TSTDED TM RDEVFLAG,RDEVENAB IS IT ENABLED? @VA03757 00228000
- BO ENADISA YES--GO PROCESS @VA03757 00229000
- TM RDEVSTAT,RDEVDED DEDICATE DEVICE? @VA03757 00230000
- BO DEDDEV YES INFORM OPERATOR @VA03757 00231000
- TM RDEVSTAT,RDEVDISA IS DEVICE NOT AVAILABLE? @VA03757 00232000
- BO NOTONLNE YES @VA03757 00233000
- ENADISA EQU * @VA03757 00234000
- BAL R14,ENABSUB GO ENABLE OR DISABLE THE LINE @VA03757 00235000
- B ENABSCAN GO GET NEXT ARGUMENT @VA03757 00236000
- EJECT 00237000
- DOALL EQU * @VA03757 00238000
- CL R0,F3 MUST HAVE THREE AND ONLY THREE @VA03757 00239000
- * CHARACTERS 00240000
- BNE CPV003 ERROR IF IT ISN'T @VA03757 00241000
- SPACE 00242000
- CPVCPI EQU * ENTER HERE FOR AUTO RE-ENABLE @VA03757 00243000
- LA R4,2 LOAD INCREMENT FOR BXLE LOOP @VA03757 00244000
- SR R1,R1 ZERO CHANNEL INDEX @VA03757 00245000
- LA R5,30 GPR5 POINTS TO END OF INDEX TABLE@VA03757 00246000
- ENABNCH L R10,ARIOCT ADDRESS OF CHANNEL INDICES @VA03757 00247000
- LH R6,0(R1,R10) LOAD INDEX OF NEXT CHANNEL @VA03757 00248000
- LTR R6,R6 IS CHANNEL ALIVE ? @VA03757 00249000
- BM ENABCHI NO, TRY NEXT CHANNEL @VA03757 00250000
- A R6,ARIOCH ADDRESS OF RCHBLOK IN GPR6 @VA03757 00251000
- USING RCHBLOK,R6 @VA03757 00252000
- SR R2,R2 ZERO CONTROL UNIT INDEX COUNT @VA03757 00253000
- LA R5,62 END OF CONTROL UNIT INDEX TABLE @VA03757 00254000
- ENABNCU LH R7,RCHCUTBL(R2) PICK UP INDEX @VA03757 00255000
- LTR R7,R7 IS CONTROL UNIT THERE ? @VA03757 00256000
- BM ENABCUI NO TRY NEXT CU @VA03757 00257000
- A R7,ARIOCU ADDRESS OF RCUBLOK TO GPR7 @VA03757 00258000
- USING RCUBLOK,R7 @VA03757 00259000
- SR R3,R3 ZERO INDEX FOR DEV INDEX @VA03757 00260000
- LA R5,30 SET R5 TO END OF DEVICE INDEX @VA03757 00261000
- * TABLE 00262000
- ENABNDEV LH R8,RCUDVTBL(R3) PICK UP INDEX @VA03757 00263000
- LTR R8,R8 IS DEVICE THERE ? @VA03757 00264000
- BM ENABDVI NO TRY NEXT DEVICE @VA03757 00265000
- SLL R8,3(0) CONVERT TO BYTE INDEX @VA03757 00266000
- A R8,ARIODV ADDRESS OF RDEVBLOK TO GPR8 @VA03757 00267000
- USING RDEVBLOK,R8 @VA03757 00268000
- TM RDEVSTAT,RDEVDISA AVAILABLE? @VA03757 00269000
- BO ENABDVI NO--SKIP IT @VA03757 00270000
- SPACE 00271000
- CLI RDEVTYPC,CLASTERM SLOW-SPEED TERMINAL ? @VA03757 00272000
- BNE TSTGRAF NO -- CHECK FOR GRAPHIC @VA03757 00273000
- CLI RDEVTYPE,TYPTTY CHECK FOR SUPPORTED TYPE @VA03757 00274000
- BH ENABDVI NO -- SKIP OVER IT @VA03757 00275000
- CLI RDEVTYPE,TYPSDLC SDLC ADAPTER @VA11139 00275100
- BE ENABDVI YES, IGNORE IT. @VA11139 00275200
- BAL R14,ENABSUB ENABLE OR DISABLE THE LINE @VA03757 00276000
- B ENABDVI CONTINUE @VA03757 00277000
- SPACE 00278000
- TSTGRAF EQU * CHECK FOR SUPPORTED GRAPHIC TERMS@VA03757 00279000
- CLI RDEVTYPC,CLASGRAF LOCAL GRAPHIC TERMINAL ? @VA03757 00280000
- BNE ENABDVI NO -- SKIP OVER IT @VA03757 00281000
- TM RDEVTYPE,TYP3066+TYP3277+TYP3284+TYP3278 @V60A6B6 00282000
- BZ ENABDVI NO -- SKIP IT @VA03757 00283000
- BAL R14,ENABSUB ENABLE OR DISABLE THIS DEVICE @VA03757 00284000
- ENABDVI BXLE R3,R4,ENABNDEV @VA03757 00285000
- LA R5,62 LOAD END OF CU TABLE @VA03757 00286000
- ENABCUI BXLE R2,R4,ENABNCU @VA03757 00287000
- LA R5,30 LOAD END OF CH INDEX TABLE @VA03757 00288000
- ENABCHI BXLE R1,R4,ENABNCH @VA03757 00289000
- TM SAVEWRK1+2,CPICALL+RNHCALL NEED A MSG? @VA05061 00290100
- BNZ ENABEXIT NOT THIS TIME @VA05061 00291100
- EJECT 00292000
- * 00293000
- * WHEN FALL THRU - HAVE CHECKED ALL DEVICES 00294000
- * 00295000
- ALLDONE EQU * HAVE PROCESSED ALL OF COMMAND @VA03757 00296000
- MSG 'COMMAND COMPLETE' REASSURANCE MESSAGE @VA03757 00297000
- SENDMSG EQU * @VA03757 00298000
- CALL DMKQCNWT,PARM=NORET SEND THE MESSAGE @VA03757 00299000
- ENABEXIT EQU * RETURN TO DMKCFM @VA03757 00300000
- EXIT , @VA03757 00301000
- SPACE 2 00302000
- NOARG TM SAVEWRK1,X'FF' ANY ARGUMENTS AT ALL ? @VA03757 00303000
- BO ALLDONE YES @VA03757 00304000
- B CPV026 NO ARGUMENTS @VA03757 00305000
- SPACE 00306000
- SERRMSG LA R1,SAVEWRK2 ADDRESS OF FIELDS @VA03757 00307000
- ICM R0,14,MODID+3 LOAD MODULE IDENTIFIER @VA03757 00308000
- CALL DMKERMSG SEND THE MESSAGE @VA03757 00309000
- * DMKERM WILL RETURN DIRECTLY TO DMKCFM INSTEAD OF HERE. 00310000
- SPACE 00311000
- NOTERM EQU * HAVE NON-TERMINAL DEVICE @VA03757 00312000
- CALL DMKCVTBH CONVERT THE ADDRESS BACK TO HEX @VA03757 00313000
- STCM R1,7,SAVEWRK2 STICK IT IN WIRK AREA @VA03757 00314000
- LA R0,3 FIELD LENGTH @VA03757 00315000
- LA R2,6 ERROR CODE @VA03757 00316000
- B SERRMSG SEND MESSAGE @VA03757 00317000
- SPACE 00318000
- NOTONLNE BAL R10,GETYPE GO SET UP TYPE FIELD @VA03757 00319000
- LA R0,8 FIELD LENGTH @VA03757 00320000
- LA R2,46 ERROR CODE @VA03757 00321000
- B SERRMSG @VA03757 00322000
- SPACE 00323000
- DEDDEV EQU * @VA03757 00324000
- BAL R10,GETYPE SET UP TYPE FIELD @VA03757 00325000
- L R2,RDEVUSER VMBLOK ADDRESS OF USER @VA03757 00326000
- MVC SAVEWRK4+1(8),VMUSER-VMBLOK(R2) MOVE IN USERI @VA03757 00327000
- MVI SAVEWRK4,X'00' SEP. FIELDS @VA03757 00328000
- LA R0,17 FIELD LENGTH @VA03757 00329000
- LA R2,140 ERROR CODE @VA03757 00330000
- B SERRMSG ... @VA03757 00331000
- SPACE 00332000
- GETYPE EQU * DEVELOP TYPE AND RADDR FOR @VA03757 00333000
- * ERROR MESSAGE 00334000
- CALL DMKCVTBH FIRST GET ADDR @VA03757 00335000
- ST R1,SAVEWRK3 AND PUT IN THE MESSAGE @VA03757 00336000
- MVI SAVEWRK3,X'00' SEPARATER @VA03757 00337000
- CALL DMKSCNRN GET THE REAL NAME @VA03757 00338000
- ST R1,SAVEWRK2 SAVE NAME IN WORK AREA @VA03757 00339000
- BR R10 RETURN TO CALLER @VA03757 00340000
- SPACE 3 00341000
- ENABSUB EQU * ENABLE OR DISABLE A DEVICE @VA03757 00342000
- CLI RDEVTYPE,TYPSDLC SDLC ADAPTER? @VA11139 00342100
- BE NOTERM YES, IGNORE IT. @VA11139 00342200
- TM SAVEWRK1+2,DISABLE DISABLE COMMAND ? @VA03757 00343000
- BZ ENABLIN NO -- MUST BE ENABLE @VA03757 00344000
- TM RDEVFLAG,RDEVENAB IS THIS LINE ENABLED ? @VA03757 00345000
- BCR 8,R14 (BZ) NO -- NOTHING NEED BE DONE @VA03757 00346000
- OI RDEVFLAG,RDEVDISB SET THE DISABLE FLAG @VA03757 00347000
- CLI RDEVTYPC,CLASGRAF IS THIS A GRAPHIC CLASS @VA03757 00348000
- BNE ENABCPX NO, ALERT INTERRUPT HANDLER @VA03757 00349000
- CLI RDEVTYPE,TYP3284 IS THIS A 3270 PRINTER @VA03757 00350000
- BNE ENABCPX NO, ALERT THE INTERRUPT HANDLER @VA03757 00351000
- NI RDEVFLAG,X'FF'-RDEVENAB CLEAR ENABLE FLAG @VA03757 00352000
- BR R14 RETURN TO IN LINE CODE @VA03757 00353000
- ENABLIN EQU * @VA03757 00354000
- NI RDEVFLAG,255-RDEVDISB TURN OFF DISABLE FLAG @VA05107 00354500
- TM RDEVSTAT,RDEVDED DEDICATED DEVICE? @VA03757 00355000
- BOR R14 YES--RETURN @VA03757 00356000
- TM SAVEWRK1+2,CPICALL+RNHCALL AUTO RE-ENABLE @VA05061 00357100
- BZ ENABDEV NO -- CHECK ALREADY ENABLED @VA03757 00358000
- TM RDEVFLAG,RDEVENAB SHOULD WE ENABLE THIS LINE ? @VA03757 00359000
- BCR 8,R14 NO -- NOTHING TO BE DONE @VA03757 00360000
- TM SAVEWRK1+2,RNHCALL WHO CALLED? @VA05061 00360100
- BZ ENCPI MUST HAVE BEEN DMKCPI @VA05061 00360200
- CLI RDEVTYPC,CLASGRAF NEED WE GO FURTHER? @VA05061 00360300
- BER R14 NO - IT'S A GRAPHICS DEVICE @VA05061 00360400
- CH R9,RDEVBASE ON THE PROPER 370X? @VA05061 00360500
- BE ENABCPX YES - GO TO IT @VA05061 00360600
- BR R14 NO - TRY ANOTHER @VA05061 00360700
- ENCPI EQU * @VA05061 00360800
- CLI RDEVTYPC,CLASGRAF IS THIS A GRAPHIC CLASS @VA03757 00361000
- BNE ENABCPX NO, ALERT INTERRUPT HANDLER @VA03757 00362000
- CLI RDEVTYPE,TYP3284 IS THIS A 3270 PRINTER @VA03757 00363000
- BNE ENABCPX NO, ALERT INTERRUPT HANDLER @VA03757 00364000
- BR R14 RETURN TO IN LINE CODE @VA03757 00365000
- ENABDEV EQU * @VA03757 00366000
- NI RDEVFLAG,255-RDEVDISB TURN OFF DISABLE FLAG @VA03757 00367000
- TM RDEVFLAG,RDEVENAB IS THE LINE ALREADY ENABLED @VA03757 00368000
- BCR 1,R14 (BO) YES - NOTHING TO BE DONE @VA03757 00369000
- OI RDEVFLAG,RDEVENAB DEVICE IS NOW ENABLED @VA03757 00370000
- CLI RDEVTYPC,CLASGRAF IS THIS A GRAPHIC CLASS @VA03757 00371000
- BNE ENABCPX NO, ALERT INTERRUPT HANDLER @VA03757 00372000
- CLI RDEVTYPE,TYP3284 IS THIS A 3270 PRINTER @VA03757 00373000
- BNE ENABCPX NO, ALERT INTERRUPT HANDLER @VA03757 00374000
- BR R14 RETURN TO IN LINE CODE @VA03757 00375000
- ENABCPX EQU * ALERT THE INTERRUPT HANDLER @VA03757 00376000
- CLC RDEVUSER(4),ASYSVM IS THERE AN ACTIVE USER ? @VA03757 00377000
- BCR 7,R14 (BNE) YES - NOTHING TO BE DONE @VA03757 00378000
- TM RDEVTFLG,RDEVLOG LOGON ALREADY STARTED ? @VA03757 00379000
- BCR 1,R14 YES - JUST RETURN @VA03757 00380000
- STM R14,R5,BALRSAVE SAVE REGISTERS TEMPORARILY @VA03757 00381000
- LA R0,CPEXSIZE @VA03757 00382000
- CALL DMKFREE GET FREE STORAGE FOR A CPEXBLOK @VA03757 00383000
- USING CPEXBLOK,R1 ... @VA03757 00384000
- XC CPEXBLOK(16),CPEXBLOK CLEAR HEADER SECTION @VA03757 00385000
- STM R0,R15,CPEXREGS SET REGISTERS FOR DMKCNS, DM @VA03757 00386000
- L R2,=A(DMKCNSEN) ENABLE START/STOP TERM @VA03757 00387000
- CLI RDEVTYPC,CLASTERM IS THAT THE CORRECT ENTRY ? @VA03757 00388000
- BE *+8 YES - @VA03757 00389000
- L R2,=A(DMKGRFEN) ENABLE GRAPHICS TERM @VA03757 00390000
- ST R2,CPEXADD SET AS EXECUTION ADDRESS... @VA03757 00391000
- ST R2,CPEXR12 ...AND AS MODULE BASE ADDRESS @VA03757 00392000
- CALL DMKSTKCP STACK BLOCK FOR LATER EXECUTION @VA03757 00393000
- LM R14,R5,BALRSAVE DMKSTKCP DOES'NT USE BALRSAVE @VA03757 00394000
- BR R14 RETURN TO SCAN ROUTINE @VA03757 00395000
- EJECT 00396000
- *. 00397000
- * 00398000
- * SUBROUTINE NAME - 00399000
- * 00400000
- * DMKCPVAE - ENABLE SYSTEM LOW SPEED LINES FOR SYSTEM RESTART 00401000
- * OR 370X FAILURE. 00402100
- * 00403000
- * OPERATION - 00404000
- * 00405000
- * 1. SET FLAG (CPICALL OR RNHCALL) IN SAVEWRK1+2 TO 00406100
- * INDICATE WHERE CALL ORIGINATED. ISSUE SWITCH TO INSURE 00407150
- * PROCESSING CONTINUES ON THE MAIN PROCESSOR IF THE SYSTEM 00407250
- * IS IN AP-MODE. THEN ENTER ENABLE 00407350
- * ROUTINE AT LABEL CPVCPI. 00408000
- * 00409000
- * 2. THE ENABLE ROUTINE WILL SCAN ALL TERMINAL AND GRAPHIC 00410000
- * RDEVBLOKS. ONLY THE RDEVBLOKS HAVING THE ENABLE 00411000
- * FLAG ON WILL BE ENABLED. (THE ENABLE FLAG 00412000
- * SET ON BY DMKWRM DURING SYSTEM RESTART) 00413000
- * 00414000
- * 2A. IF THE CALL CAME FROM DMKRNH, ONLY THOSE EMULATOR 00414100
- * LINES ON THE AFFECTED 370X WILL BE ENABLED. 00414200
- * RESPONSES - 00415000
- * 00416000
- * N/A 00417000
- * 00418000
- * ERROR MESSAGES - 00419000
- * 00420000
- * N/A 00421000
- * 00422000
- *. 00423000
- SPACE 2 00424000
- DMKCPVAE RELOC @VA03757 00425000
- MVC SAVEWRK1(4),ZEROES ZERO FLAG FIELD @VA03757 00426000
- MVI SAVEWRK1+2,CPICALL CALLED FROM DMKCPI @VA03757 00427000
- SWITCH CONTINUE PROCESSING ON MAIN PROC @V407508 00427100
- CLC SAVER12(4),=A(DMKRNH) WHO CALLED? @VA05061 00428100
- BNE CPVCPI TWAS DMKCPI @VA05061 00428200
- SPACE 00428300
- * REG 8 CONTAINS A (RDEVBLOK) FOR 370X WHICH HAD PROBLEM 00428400
- CALL DMKSCNRD GO GET 'CUU' TYPE ADDRESS @VA05061 00428500
- LR R9,R1 PUT IN REG 9 FOR LATER @VA05061 00428600
- MVI SAVEWRK1+2,RNHCALL SHOW PROPER CALLER @VA05061 00428700
- B CPVCPI JOIN REST OF ENABLE @VA05061 00428800
- SPACE 00429000
- CPICALL EQU X'80' CALL FROM DMKCPI FLAG @VA03757 00430000
- RNHCALL EQU X'40' CALL FROM DMKRNH FLAG @VA05061 00430100
- EJECT 00431000
- *. 00432000
- * SUBROUTINE NAME - 00433000
- * 00434000
- * DMKCPVDS 00435000
- * 00436000
- * FUNCTION - 00437000
- * 00438000
- * TO CAUSE AN ACTIVE LINE TO BE DISABLED AFTER THE CURRENT USER 00439000
- * (IF ANY) IS FINISHED WITH IT 00440000
- * 00441000
- * COMMAND LINE FORMAT - 00442000
- * 00443000
- * +-----------+-------------------------+ 00444000
- * | DISABLE | LINE1 LINE2 ...LINEN | 00445000
- * | DISA | ALL | 00446000
- * +-----------+-------------------------+ 00447000
- * 00448000
- * OPERATION - 00449000
- * 1. SET FLAG IN SAVEWRK1+2 TO INDICATE A DISABLE OPERATION. 00450000
- * ISSUE SWITCH TO INSURE PROCESSING CONTINUES ON THE MAIN 00450100
- * PROCESSOR IF THE SYSTEM IS IN AP-MODE. 00450200
- * THEN BRANCH TO THE COMMON ROUTINES DESCRIBED IN THE 00451000
- * ENABLE PROLOG. 00452000
- * 00453000
- * RESPONSES - 00454000
- * COMMAND COMPLETE 00455000
- * 00456000
- * ERROR MESSAGE - 00457000
- * DMKCPV003E INVALID OPTION - (OPTION) 00458000
- * DMKCPV006E INVALID DEVICE TYPE - (ADDR) 00459000
- * DMKCPV021E RADDR MISSING OR INVALID 00460000
- * DMKCPV026E OPERAND MISSING OR INVALID 00461000
- * DMKCPV040E DEV (ADDR) DOES NOT EXIST 00462000
- * DMKCPV046E (TYPE RADDR) OFFLINE 00463000
- * DMKCPV140E (TYPE RADDR) ATTACHED TO (USERID) 00464000
- * 00465000
- *. 00466000
- SPACE 2 00467000
- DMKCPVDS RELOC DISABLE LINE(S) @VA03757 00468000
- MVC SAVEWRK1(4),ZEROES ZERO FLAG AREA @VA03757 00469000
- MVI SAVEWRK1+2,DISABLE INDICATE DISABLE OPERATION @VA03757 00470000
- SWITCH CONTINUE PROCESSING ON MAIN PROC @V407508 00470100
- B ENABSCAN DO SAME AS ENABLE EXCEPT WILL @VA03757 00471000
- * DISA LINE 00472000
- SPACE 00473000
- DISABLE EQU X'01' SAVEWRK1+2 FLAG FOR DISABLE CMD @VA07385 00474500
- EJECT 00475000
- *. 00476000
- * 00477000
- * SUBROUTINE NAME - 00478000
- * 00479000
- * DMKCPVLK 00480000
- * 00481000
- * FUNCTION - 00482000
- * 00483000
- * TO LOCK INTO REAL MAIN STORAGE SPECIFIED PAGES OF A USER'S 00484000
- * VIRTUAL STORAGE SPACE 00485000
- * 00486000
- * COMMAND LINE FORMAT - 00487000
- * 00488000
- * +------+--------------------------------------------+ 00489000
- * | LOCK | USERID FIRSTPAGE LASTPAGE (MAP) | 00490000
- * | | SYSTEM | 00491000
- * +------+--------------------------------------------+ 00492000
- * 00493000
- * OPERATION - 00494000
- * 00495000
- * 1. CALL DMKSCNFD TO LOCATE THE USERID. IF NONE FOUND, CALL 00496000
- * DMKERMSG TO SEND ERROR MESSAGE DMKCPV020E. 00497000
- * 2. CALL DMKSCNAU TO GET THE USERID VMBLOK. IF NOT FOUND, CALL 00498000
- * DMKERMSG TO SEND ERROR MESSAGE DMKCPV045E. 00499000
- * 3. CALL DMKSCNFD TO GET THE FPAGE ARGUMENT. IF NONE IS 00500000
- * FOUND, CALL DMKERMSG TO SEND ERROR MESSAGE DMKCPV033E. IF 00501000
- * ONE IS FOUND, CALL DMKCVTHB TO CONVERT THE PAGE NUMBER TO 00502000
- * BINARY. IF THE CONVERT FAILS, CALL DMKERMSG TO SEND ERROR 00503000
- * MESSAGE DMKCPV004E.IF OK, SAVE THE FPAGE NUMBER. 00504000
- * 4. LOCATE AND CONVERT THE LPAGE ARGUMENT IN THE SAME MANNER. 00505000
- * 5. VERIFY THAT THE PAGES ARE WITHIN THE USERS STORAGE LIMITS. 00506000
- * IF NOT, CALL DMKERMSG TO SEND ERROR MESSAGE DMKCPV160E. 00507000
- * ALSO CHECK THAT THE FIRST PAGE IS EQUAL TO OR LESS THAN 00508000
- * THE LAST PAGE. IF NOT, CALL DMKERMSG TO SEND ERROR MESSAGE 00509000
- * DMKCPV009E. 00510000
- * 6. IF THIS IS AN UNLOCK COMMAND, GO TO THE LABEL 'UNLOCK' 00511000
- * TO PROCESS. THIS IS DESCRIBED IN THE PROLOG FOR UNLOCK. 00512000
- * IF 'LOCK' CONTINUE WITH NEXT STEP. 00513000
- * 7. IF THE PAGE IS NOT IN STORAGE GO TO STEP 8. IF IT IS, 00514000
- * FIND THE CORTABLE ENTRY FOR THIS PAGE. IF THE PAGE IS 00515000
- * ALREADY LOCKED IN GO TO STEP 9. IF NOT CONTINUE WITH 00516000
- * NEXT STEP. 00517000
- * 8. TRANS IN THE PAGE AND LOCK. IF THE SYSTEM IS IN AP-MODE 00518100
- * AND THE PAGE IS A SHARED PAGE; UNLOCK THE PAGE, CALL 00518200
- * DMKERMSG TO ISSUE MESSAGE DMKCPV165I, AND CONTINUE AT 00518300
- * STEP 9. OTHERWISE, DECREMENT THE COUNT OF 00518400
- * PAGES AVAILABLE, THE USER'S PROJECTED WORKING SET SIZE 00519200
- * AND, IF IN QUEUE, THE PAGE USAGE COUNT. 00519400
- * 9. IF THE LAST PAGE HAS BEEN PROCESSED, CALL DMKQCNWT TO 00520000
- * SEND THE COMMAND COMPLETE MESSAGE AND EXIT. IF MORE PAGES 00521000
- * GET THE NEXT PAGE ADDRESS AND GO TO STEP 6. 00522000
- * 00523000
- * RESPONSES - 00524000
- * COMMAND COMPLETE 00525000
- * 00526000
- * ERROR MESSAGES - 00527000
- * DMKCPV004E INVALID HEXLOC - (HEXLOC) 00528000
- * DMKCPV009E INVALID RANGE - (RANGE) 00529000
- * DMKCPV020E USERID MISSING OR INVALID 00530000
- * DMKCPV045E (USERID) NOT LOGGED ON 00531000
- * DMKCPV160E HEXLOC (HEXLOC) EXCEEDS STORAGE 00532000
- * DMKCPV165I PAGE (HEXLOC) NOT LOCKED; SHARED PAGE 00532100
- * 00533000
- *. 00534000
- SPACE 2 00535000
- DMKCPVLK RELOC LOCK USER PAGE INTO CORE @VA03757 00536000
- MVI SAVEWRK1,X'00' INDICATE LOCK FUNCTION @VA03757 00537000
- LOCKSCAN CALL DMKSCNFD GET USER ID @VA03757 00538000
- BNZ CPV020 MISSING ARGUMENT @VA03757 00539000
- STM R0,R1,SAVEWRK2 SAVE ARG LENGTH AND ADDRESS @VA03757 00540000
- AIF (NOT &VIRREAL).VIRT1 @VA03757 00541000
- TM SAVEWRK1,X'01' UNLOCK? @VA05291 00541300
- BZ SCANUSER NO.GO SCAN FOR USERID @VA05291 00541700
- CLC 0(9,R1),=C'VIRT=REAL' UNLOCKING VIRT=REAL AREA ?@VA03757 00542000
- BNE ABBREV SEE IF ABBREVIATION V=R IS USED @VA03757 00543000
- CL R0,F9 GREATER THAN NINE CHARACTERS @VA03757 00544000
- BH CPV003 YES,INVALID OPTION @VA03757 00545000
- B GETBLOK CONTINUE FOR VIRT=REAL @VA03757 00546000
- ABBREV CLC 0(3,R1),=C'V=R' V=R SPECIFIED @VA03757 00547000
- BNE SCANUSER NO, MUST BE FOR A USERID @VA03757 00548000
- CL R0,F3 THREE CHARACTERS INPUTTED @VA03757 00549000
- BH SCANUSER NO. CAN'T BE V=R THEN, CAN IT? @VA04681 00550500
- GETBLOK L R4,AVMREAL GET VMBLOK OF OWNER OF V=R AREA @VA03757 00551000
- LTR R4,R4 IS THE AREA IN USE ? @VA03757 00552000
- BP CPV176 IF YES - CAN'T RELEASE IT. @VA03757 00553000
- L R2,=A(DMKSLC-4096) WAS IT GENERATED AT LOAD TIME@VA03757 00554000
- LTR R2,R2 TEST FOR OPTION @VA03757 00555000
- BM CPV202 IF NOT; ITS IMPOSSIBLE TO @VA03757 00556000
- * UNLOCK IT. 00557000
- L R1,ASYSVM USE THE SYSTEM VMBLOK @V407508 00559100
- SWTCHVM OPT=UNLOCK UNLOCK VM & SWITCH TO ASYSVM @V407508 00559200
- L R1,F4096 R1 = 1'ST PAGE; R2 = LAST PAGE @VA07236 00560100
- CALL DMKPGSPR RELEASE SYSTEM PAGES @V408246 00562000
- MVC AVMREAL,F1 IN-USE BY NOBODY @V408246 00564500
- L R15,PREFIXB GET PREFIX ADDR OF OTHER PROC @V4M0132 00564600
- MVC AVMREAL-PSA(,R15),F1 SET AVMREAL IN BOTH PSA'S @VA07236 00564700
- * SET UP SO THAT DMKPTR PAGE SELECTION ROUTINE WILL INCLUDE 00564720
- * THESE UNLOCKED V=R PAGES IN ITS SCAN. 00564740
- L R1,=A(DMKPTRSN) ADDRESS OF PAGE SELECTION PTRS. @VA08341 00564760
- OI 6(R1),VEQRUNLK INDICATE V=R AREA UNLOCKED AND @VA08341 00564780
- * TO BE INCLUDED IN PAGE SELECTION SCAN 00564800
- L R1,=A(DMKPTRCP) ADDRESS OF FRAME BLOCKS @VA08341 00564820
- LA R1,40(R1) POINT TO V=R FULLSCAN BLOCK @VA08341 00564840
- L R0,ACORETBL START OF CORE TABLE @VA08341 00564860
- A R0,F16 FIRST V=R CORE TABLE ENTRY @VA08341 00564880
- BCTR R0,R0 SUBTRACT ONE FOR COMPARE @VA08341 00564900
- ST R0,12(R1) STORE IN V=R FULLSCAN BLOCK @VA08341 00564920
- L R0,=A(DMKSLC-4096) ADDR. OF LAST V=R PAGE @VA08341 00564940
- ST R0,0(R1) SAVE IN V=R FULLSCAN BLOCK @VA08341 00564960
- SRL R0,12 GET PAGE NUMBER @VA08341 00564980
- SLL R0,4 MULTIPLY BY CORETBL ENTRY LENGTH @VA08341 00565000
- A R0,ACORETBL ADD CORE TABLE START ADDRESS @VA08341 00565020
- ST R0,4(R1) SAVE CORETBL ENTRY ADDRESS OF @VA08341 00565040
- * TOP V=R PAGE IN FULLSCAN1 BLOCK 00565060
- L R1,SAVER11 RETURN TO ORIGINAL CALLER @V407508 00565100
- SWTCHVM LOCK THIS VMBLOK @V407508 00565200
- B ALLDONE SEND RESPONSE MESSAGE. @VA03757 00567000
- .VIRT1 ANOP 00568000
- SCANUSER CALL DMKSCNAU FIND VMBLOK @VA03757 00569000
- BNZ USERNON USER NOT ON @VA03757 00570000
- LR R8,R1 SAVE USERS VMBLOK @VA03757 00571000
- AIF (NOT &VIRREAL).VIRT1A @VA05290 00571200
- CL R8,AVMREAL IS THIS THE V=R USERID ? @VA05290 00571400
- BE CPV020 IF YES,CAN'T BE CORRECT @VA05290 00571600
- .VIRT1A ANOP 00571800
- LOCKSYS DS 0H @VA03757 00572000
- CALL DMKSCNFD GET FPAGE ARGUMENT @VA03757 00573000
- BNZ CPV033 MISSING ARGUMENT @VA03757 00574000
- CL R0,F3 THREE DIGIT MAX @VA03757 00575000
- BH CPV033 CAN'T HAVE PAGE THAT SIZE @VA03757 00576000
- STM R0,R1,SAVEWRK2 SAVE ARG LENGTH AND ADDRESS @VA03757 00577000
- CALL DMKCVTHB CONVERT TO BINARY @VA03757 00578000
- BNZ BADPAGE INVALID PAGE NUMBER @VA03757 00579000
- LR R4,R1 GPR4 CONTAINS FIRST PAGE @VA03757 00580000
- CALL DMKSCNFD GET LPAGE @VA03757 00581000
- BNZ CPV033 MISSING ARGUMENT @VA03757 00582000
- CL R0,F3 MAX NUM OF DIGITS ALLOWED @VA03757 00583000
- BH CPV033 ....... @VA03757 00584000
- STM R0,R1,SAVEWRK4 SAVE ARG LEN AND ADDR @VA03757 00585000
- CALL DMKCVTHB CONVERT TO BINARY @VA03757 00586000
- BNZ BADPAGE1 INVALID PAGE NUMBER @VA03757 00587000
- CR R1,R4 IS LAST PAGE LESS THAN FIRST ? @VA03757 00588000
- BL BADRANGE INVALID PAGE SEQUENCE @VA03757 00589000
- TM SAVEWRK1,X'01' UNLOCK COMMAND? @VA05729 00589050
- BO NOCHK YES, BYPASS NO OF DYNAMIC PGS @VA05729 00589150
- LR R5,R1 SAVE LAST PAGE NO. @VA05729 00589250
- SR R1,R4 GET NO. OF PAGES TO LOCK @VA05729 00589350
- A R1,F1 BUMP 1 TO CORRECT NO. PGS @VA05729 00589450
- L R3,=A(DMKDSPNP) NO. OF DYNAMIC PGS IN SYSTEM @VA05729 00589550
- C R1,0(R3) IS THERE ENOUGH ROOM? @VA05729 00589650
- BNL BADRANGE NO, GIVE HIM THE BAD NEWS @V4M0158 00589750
- LR R1,R5 PUT BACK AS WE FOUND IT @VA05729 00589850
- NOCHK SLL R1,12 FORM ADDRESS @VA05729 00590000
- DROP R11 @VA03757 00591000
- USING VMBLOK,R8 @VA03757 00592000
- L R0,VMSTOR GET VIRTUAL MACHINE SIZE @VA03757 00593000
- CL R8,ASYSVM ARE WE LOCKING A SYSTEM PAGE @VA03757 00594000
- BNE *+8 NO - R0 ALL SET @VA03757 00595000
- L R0,VMSIZE GET SYSTEMS VIRTUAL STORAGE SIZE @VA03757 00596000
- CLR R1,R0 IS PAGE WITHIN MACHINE SIZE @VA03757 00597000
- BNL CPV160 NO - TAKE BRANCH @VA03757 00598000
- DROP R8 @VA03757 00599000
- USING VMBLOK,R11 @VA03757 00600000
- LR R10,R11 SAVE OPERATORS VMBLOK @VA03757 00601000
- LR R5,R1 GPR5 CONTAINS LAST PAGE @VA03757 00605000
- SLL R4,12 FORM ADDRESS OF FIRST PAGE @VA03757 00606000
- LOCKCHEK TM SAVEWRK1,X'01' IS THIS UNLOCK REQUEST ?? @VA03757 00607000
- BO UNLOCK YES. @VA03757 00608000
- CALL DMKSCNFD GET MAP OPTION @VA03757 00609000
- BNZ LOCKPAGE NOT THERE @VA03757 00610000
- LR R2,R0 SET COUNT REGISTER @VA03757 00614000
- BCTR R2,R0 DECREMENT FOR EXECUTE @VA03757 00615000
- CH R2,F2+2 IS IT 3 CHARS ?? @VA03757 00616000
- BNE CPV003 NO, NO GOOD @VA03757 00617000
- EX R2,CMAP TEST FOR MAP OPTION @VA03757 00618000
- BNE CPV003 INVALID OPTION @VA03757 00619000
- OI SAVEWRK1,X'80' INDICTAE MAP @VA03757 00620000
- LA R1,LMAPHDR HEADER @VA03757 00621000
- LA R0,LMAPHDRL .. @VA03757 00622000
- CALL DMKQCNWT,PARM=NORET @VA03757 00623000
- LOCKPAGE DS 0H ATTEMPT TO LOCK USER PAGE @V407508 00624100
- LR R1,R8 GET ADDRES OF USERS VMBLOK @V407508 00624200
- SWTCHVM LOCK THIS VMBLOK @V407508 00624300
- LR R1,R4 GET THE VIRTUAL ADDR OF THE PAGE @V407508 00624400
- LCTL R1,R1,VMSEG LOAD CONTROL REG 1 @VA03757 00628000
- LRA R2,0(,R4) LOAD REAL ADDRESS (IF ANY) @VA03757 00629000
- BNZ LOCKTRAN BRANCH IF NOT IN CORE @VA03757 00630000
- SRL R2,8 FORM INDEX TO CORETABLE @VA03757 00631000
- A R2,ACORETBL CORE TABLE ENTRY @VA03757 00632000
- USING CORTABLE,R2 @VA03757 00633000
- TM CORFLAG,CORCFLCK IS PAGE ALREADY LOCKED IN ??? @VA03757 00634000
- BO MAPCHEK CHECK FOR LOCK MAP @VA03757 00635000
- TM SAVEWRK1,X'40' FOOLING WITH THE SYSTEM? @VA03757 00636000
- BZ LOCKTRAN NOPE, OK TO CONTINUE @VA03757 00637000
- CL R4,APAGCP IS HE IN PAGEABLE CP? @VA10861 00637100
- BL MAPCHEK NOPE, RESIDENT PGES ARE ALL SET @VA10861 00637200
- CLC CORVM,ASYSVM IS THIS A CP OWNED PAGE? @VA07284 00638100
- BNE NOTSYSPG NOPE, NOT A SYSTEM PAGE @VA08031 00639100
- B LOCKTRAN HE IS PAGEABLE, LOCK HIM @VA08031 00639700
- NOTSYSPG EQU * @VA08031 00639900
- CLI CORFPNT,C'F' IS IT A CP FREE PAGE? @VA03757 00640000
- BE MAPCHEK YUP, JUST FINE AS IS. @VA03757 00641000
- LOCKTRAN LA R2,BRING+DEFER+LOCK USE THESE OPTIONS FOR PAGE @VA03757 00642000
- TM SAVEWRK1,X'40' CALL FOR SYSTEM PAGE(S) ? @VA03757 00643000
- BZ *+8 NO - OPTIONS OK. @VA03757 00644000
- LA R2,SYSTEM(,R2) YES, ADD SYSTEM OPTION @V408246 00645500
- CALL DMKPTRAN NOW - LOCK THIS PAGE @VA03757 00646000
- LR R6,R2 SAVE REAL ADDRESS @V407508 00646100
- SRL R2,8 FORM INDEX INTO CORETABLE @VA03757 00647000
- A R2,ACORETBL CORE TABLE TO R2 @VA03757 00648000
- USING CORTABLE,R2 @VA03757 00649000
- TM CORFLAG,CORCFLCK IS PAGE ALREADY LOCKED IN @VA03757 00650000
- BO MAPCHEK CHECK FOR LOCK MAP @VA03757 00651000
- TM APSTAT1,APUOPER IS THIS AN AP SYSTEM? @V407508 00651050
- BNO LOCKOK NO, CONTINUE NORMALLY @V407508 00651100
- TM CORFLAG,CORSHARE IS PAGE A SHARED PAGE? @V407508 00651150
- BNO LOCKOK NO, CONTINUE NORMALLY @V407508 00651200
- LR R2,R6 RESTORE REAL ADDRESS FOR UNLOCK @V407508 00651250
- CALL DMKPTRUL UNLOCK THE SHARED PAGE @V407508 00651300
- LR R1,R4 GET VIRTUAL ADDRESS OF PAGE @V407508 00651350
- CALL DMKCVTBH CONVERT TO HEX FOR PRINTING @V407508 00651400
- STM R0,R1,SAVEWRK2 SAVE CONVERTED VALUE @V407508 00651450
- MVC SAVEWRK2(2),=CL2' ' PAD FIELD WITH BLANKS @V407508 00651500
- LR R1,R10 GET ADDR OF OPERATORS VMBLOK @V407508 00651550
- SWTCHVM SWITCH TO THIS VMBLOK @V407508 00651600
- LA R0,8 SET UP LENGTH OF DATA @V407508 00651650
- ICM R0,B'1110',MODID+3 INSERT MODULE IDENTIFIER @V407508 00651700
- LA R1,SAVEWRK2 GET THE ADDRESS OF DATA @V407508 00651750
- L R2,ERMR2 SET UP R2 WITH ERM PARMS @V407508 00651800
- CALL DMKERMSG WRITE OUT MESSAGE @V407508 00651850
- B ENDCHEK GO CHECK FOR MORE PAGES @V407508 00651900
- LOCKOK DS 0H PAGE O.K. TO LOCK @V407508 00651950
- OI CORFLAG,CORCFLCK TURN ON CF LOCK BIT @VA03757 00652000
- L R1,CORFPNT GET POINTER TO PAGE'S OWNER @V408246 00652100
- LH R0,VMPAGES-VMBLOK(,R1) DECREMENT @V408246 00652200
- BCTR R0,0 IN-CORE PAGE COUNT @V408246 00652300
- LTR R0,R0 VMPAGES TO GO NEGATIVE ? @VA07224 00652320
- BM CPV1 YES - ABEND CP @VA07224 00652340
- STH R0,VMPAGES-VMBLOK(,R1) @V408246 00652400
- TM CORFLAG,CORRSV LOCKING RESERVED PAGE? @V408246 00652500
- BO MAPCHEK YES, COUNT ALREADY DECREMENTED @V408246 00652600
- DROP R2 @VA03757 00653000
- L R3,=A(DMKDSPNP) ADDRESS OF PAGE COUNT @VA03757 00654000
- L R1,0(,R3) LOAD COUNT @VA03757 00655000
- BCTR R1,0 DECREMENT COUNT @VA03757 00656000
- ST R1,0(,R3) STORE BACK @VA03757 00657000
- TM VMDSTAT,VMINQ USER IN QUEUE ? @VA04709 00661100
- BZ MAPCHEK NO -- LEAVE PAGE USAGE ALONE @VA04709 00661200
- L R3,=A(DMKSCHPU) GET PAGE USAGE COUNT @VA04709 00661300
- L R1,0(,R3) ... @VA04709 00661400
- LTR R1,R1 WILL PAGE USAGE GO NEGATIVE @VA08454 00661420
- BNP MAPCHEK YES, ZERO IS MINIMUM COUNT @VA08454 00661440
- BCTR R1,0 DECREMENT IT @VA04709 00661500
- ST R1,0(,R3) ... AND STORE IT BACK @VA04709 00661600
- MAPCHEK TM SAVEWRK1,X'80' MAP WANTED ?? @VA03757 00662000
- BZ ENDCHEK NO, CONT @VA03757 00663000
- S R2,ACORETBL MINUS BASE @VA03757 00664000
- SLL R2,8 FORM REAL ADDRESS @VA03757 00665000
- LR R1,R2 FOR CONVERT @VA03757 00666000
- CALL DMKCVTBH TO HEX @VA03757 00667000
- STM R0,R1,SAVEWRK4 SAVE @VA03757 00668000
- LR R1,R4 VIRTUAL ADDRESS @VA03757 00669000
- CALL DMKCVTBH HEX @VA03757 00670000
- STM R0,R1,SAVEWRK2 SAVE @VA03757 00671000
- MVC SAVEWRK2(2),=CL2' ' @VA03757 00672000
- MVC SAVEWRK4(2),=CL2' ' @VA03757 00673000
- LR R1,R10 GET ADDR OF OPERATORS VMBLOK @V407508 00673100
- SWTCHVM SWITCH TO THIS VMBLOK @V407508 00673200
- LA R0,16 SIZE @VA03757 00674000
- LA R1,SAVEWRK2 TEXT @VA03757 00675000
- CALL DMKQCNWT,PARM=NORET @VA03757 00679000
- ENDCHEK CR R4,R5 REACHED END YET ? @VA03757 00683000
- BL LOCKBUMP NO, GET NEXT PAGE @VA03757 00684000
- LR R1,R10 GET ADDR OF OPERATORS VMBLOK @V407508 00685100
- SWTCHVM SWITCH TO THIS VMBLOK @V407508 00685200
- B ALLDONE . . @VA03757 00688000
- LOCKBUMP A R4,F4096 ADD ONE PAGE TO GPR4 @VA03757 00689000
- TM SAVEWRK1,X'01' IS IT UNLOCK ?? @VA03757 00690000
- BO UNLOCK2 YES, GO UNLOCK THIS PAGE @V407508 00691100
- B LOCKPAGE DO LOCK @VA03757 00692000
- SPACE 00693000
- USERNON LM R0,R1,SAVEWRK2 LEN AND ADDR OF BAD ARG @VA03757 00694000
- BC 2,CPV020 USERID LARGER THAN 8 CHAR @VA03757 00695000
- AIF (NOT &VIRREAL).VIRT1B @VA05291 00695200
- CLC 0(4,R1),=C'V=R ' IS IT LOCK V=R? @VA05702 00695400
- BE CPV020 @VA05291 00695600
- .VIRT1B ANOP 00695800
- CLC 0(7,R1),=CL7'SYSTEM ' IS IT SYSTEM ?? @VA03757 00696000
- BNE CPV045 NO, USER NOT ON @VA03757 00697000
- L R8,ASYSVM SET SYSTEM VMBLOK @VA03757 00698000
- OI SAVEWRK1,X'40' IND WE'RE MESN WITH SYSTEM @VA03757 00699000
- B LOCKSYS LOCK @VA03757 00700000
- SPACE 2 00701000
- CMAP CLC 0(0,R1),=CL3'MAP' EXECUTED COMP @VA03757 00702000
- LMAPHDR DC CL16' VIRTPG REALPG' @VA03757 00703000
- LMAPHDRL EQU *-LMAPHDR @VA03757 00704000
- SPACE 00705000
- BADPAGE LM R0,R1,SAVEWRK2 LEN AND ADDR @VA03757 00706000
- B CPV004 .... @VA03757 00707000
- SPACE 00708000
- BADPAGE1 LM R0,R1,SAVEWRK4 LEN AND ADDR @VA03757 00709000
- B CPV004 .... @VA03757 00710000
- SPACE 00711000
- BADRANGE EQU * @VA03757 00712000
- LM R2,R3,SAVEWRK2 LEN AND ADDR OF FPAGE @VA03757 00713000
- EX R2,MOVEFPG MOVE IN FIRST PAGE NUMBER @VA03757 00714000
- LA R1,SAVEWRK2(R2) LOAD ADDRESS OF SEPARATER @VA03757 00715000
- MVI 0(R1),X'40' INSERT BLANK @VA03757 00716000
- LM R4,R5,SAVEWRK4 LEN AND ADDR OF LPAGE @VA03757 00717000
- EX R4,MOVELPG MOVE IN LAST PAGE @VA03757 00718000
- LA R0,1(R2,R4) FIELD LENGTH @VA03757 00719000
- LA R1,SAVEWRK2 FIELD ADDRESS @VA03757 00720000
- B CPV009 ... @VA03757 00721000
- SPACE 1 00721100
- ABEND 1 VMPAGES NEGATIVE - TERMINATE CP @VA07224 00721200
- SPACE 1 00721300
- SPACE 00722000
- MOVEFPG MVC SAVEWRK2(0),0(R3) EXECUTED MOVE @VA03757 00723000
- MOVELPG MVC 1(0,R1),0(R5) EXECUTED MOVE @VA03757 00724000
- SPACE 00724100
- ERMR2 DC A(X'80C900A5') REG 2 FOR CALL TO DMKERMSG @V407508 00724200
- EJECT 00725000
- *. 00726000
- * 00727000
- * SUBROUTINE NAME - 00728000
- * 00729000
- * DMKCPVUL 00730000
- * 00731000
- * FUNCTION - 00732000
- * 00733000
- * TO UNLOCK PAGES LOCKED BY OPERATOR COMMAND 00734000
- * 00735000
- * COMMAND LINE FORMAT - 00736000
- * 00737000
- * +--------+------------------------------------------+ 00738000
- * | UNLOCK | USERID FIRSTPAGE LASTPAGE | 00738500
- * | | SYSTEM | 00739000
- * | | VIRT=REAL | 00739500
- * | | V=R | 00740000
- * +--------+------------------------------------------+ 00740500
- * 00742000
- * OPERATION - 00743000
- * 00744000
- * 1. SET A FLAG TO INDICATE AN UNLOCK COMMAND AND GO TO STEP 1 00745000
- * OF THE PROLOG FOR THE LOCK COMMAND. 00746000
- * 2. UNLOCK - CONTROL IS GIVEN HERE FOR UNLOCKING A PAGE. IF 00747000
- * THIS PAGE HAS NOT BEEN LOCKED VIA THE 'LOCK' COMMAND, GO 00748000
- * TO STEP 9 OF THE 'LOCK' PROLOG. ELSE RESET THE CFLOCK 00749000
- * FLAG IN THE CORTABLE AND INCREMENT THE PAGE COUNT. CALL 00750000
- * DMKPTRUL TO UNLOCK THE PAGE. THEN GO TO STEP 9 OF THE 00751000
- * 'LOCK' PROLOG. 00752000
- * 3. UNLOCK VIRT=REAL : THE AREA IS CHECKED TO SEE IF IT IS 00753000
- * ACTIVE AND ALSO THAT IT IN FACT WAS GENERATED. IF IT 00754000
- * IS FREE THE ENTIRE AREA IS GIVEN BACK TO THE CONTROL 00755000
- * PROGRAM TO BE USED FOR PAGING. THE COUNT OF FREE 00756000
- * PAGES IS UPDATED IN DMKDSP TO REFLECT THE NUMBER OF 00757000
- * PAGES NOW AVAILABLE. THE CORE TABLE ENTRIES ARE CHANGED 00758000
- * FROM *VR* TO *CP* AND THE LOCK COUNT DECREMENTED TO 0. 00759000
- * 00760000
- * 00761000
- * RESPONSES - 00762000
- * COMMAND COMPLETE 00763000
- * 00764000
- * ERROR MESSAGES - 00765000
- * DMKCPV003E INVALID OPTION - (OPTION) 00766000
- * DMKCPV004E INVALID HEXLOC - (HEXLOC) 00767000
- * DMKCPV009E INVALID RANGE - (RANGE) 00768000
- * DMKCPV020E USERID MISSING OR INVALID 00769000
- * DMKCPV045E (USERID) NOT LOGGED ON 00770000
- * DMKCPV160E HEXLOC (HEXLOC) EXCEEDS STORAGE 00771000
- * DMKCPV176E VIRT=REAL AREA IN USE BY <USERID | SYSTEM> 00772000
- * DMKCPV202E VIRT=REAL AREA NOT AVAILABLE; INSUFFICIENT STORAGE 00773000
- * 00774000
- * 00775000
- *. 00776000
- EJECT 00777000
- DMKCPVUL RELOC UNLOCK USER PAGE @VA03757 00778000
- MVI SAVEWRK1,X'01' INITIALIZE UNLOCK REQUEST @VA03757 00779000
- B LOCKSCAN GO SCAN ARGUMENTS @VA03757 00780000
- UNLOCK DS 0H SET UP TO PROCESS UNLOCK COMMAND @V407508 00781100
- LR R1,R8 GET ADDR OF USERS VMBLOK @V407508 00781200
- SWTCHVM SWITCH TO THIS VMBLOK @V407508 00781300
- UNLOCK2 DS 0H USERS VMBLOK ALREADY LOCKED @V407508 00781400
- LCTL R1,R1,VMSEG SET UP CR1 @V407508 00781500
- TRANS 2,4,OPT=(DEFER) GET REAL PAGE ADDRESS @V408246 00782000
- LR R7,R2 SAVE REAL CORE ADDRESS @VA03757 00783000
- BNZ ENDCHEK THIS PAGE NOT IN CORE @VA03757 00784000
- AIF (NOT &VIRREAL).VIRT2 @VA05486 00784050
- L R3,=A(DMKSLC) GET V=R END ADDRESS @VA04959 00784100
- LTR R3,R3 CHECK IF V=R SYSGENED @VA04959 00784200
- BZ NOTVR V=R NOT DEFINED @VA04959 00784300
- CLC AVMREAL(4),F1 WAS V=R AREA UNLOCKED? @V408246 00784400
- BE NOTVR YES, CONTINUE @VA04959 00784500
- CR R2,R3 FIRST PAGE IN V=R AREA? @VA04959 00784600
- BNH CPV204 YES, CANT DO UNLOCK - SEND MSG @VA04959 00784700
- NOTVR EQU * @VA04959 00784800
- .VIRT2 ANOP 00784900
- SRL R2,8 SET UP INDEX INTO CORETBL @VA03757 00785000
- A R2,ACORETBL GPR2 NOW POINTS TO CORETABLE @VA03757 00786000
- * ENTRY 00787000
- USING CORTABLE,R2 @VA03757 00788000
- TM CORFLAG,CORCFLCK CONSOLE FUNCTION LOCK BIT ON @VA03757 00789000
- * ???? 00790000
- BZ ENDCHEK BRANCH IF NO @VA03757 00791000
- NI CORFLAG,255-CORCFLCK TURN OFF CF LOCK BIT @VA03757 00792000
- L R1,CORFPNT GET POINTER TO PAGE'S OWNER @V408246 00792100
- LA R0,1 INCREMENT @V408246 00792150
- AH R0,VMPAGES-VMBLOK(,R1) IN-CORE PAGE COUNT @V408246 00792200
- STH R0,VMPAGES-VMBLOK(,R1) @V408246 00792250
- TM CORFLAG,CORRSV UNLOCKING RESERVED PAGE @V408246 00792300
- BO UNLCKX YES, HANDLE VIA RESERVED COUNT @V408246 00792350
- L R3,=A(DMKDSPNP) @V408246 00792400
- LA R1,1 INCREMENT @V408246 00792450
- A R1,0(,R3) COUNT OF PAGEABLE PAGES @V408246 00792500
- ST R1,0(,R3) @V408246 00792550
- UNLCKX DS 0H @V408246 00792600
- DROP R2 @VA03757 00793000
- LR R2,R7 RESTORE REAL ADDRESS @VA03757 00794000
- CALL DMKPTRUL UNLOCK PAGE @VA03757 00795000
- B ENDCHEK GET NEXT PAGE TO UNLOCK @VA03757 00800000
- EJECT 00801000
- *. 00802000
- * 00803000
- * SUBROUTINE NAME - 00804000
- * 00805000
- * DMKCPVAC 00806000
- * 00807000
- * FUNCTION - 00808000
- * 00809000
- * TO CREATE ACCOUNTING RECORDS FOR LOGGED ON USERS, AND TO RESET 00810000
- * ACCUMULATED ACCOUNTING INFORMATION 00811000
- * 00812000
- * COMMAND LINE FORMAT - 00813000
- * 00814000
- * +-----------+-------------------------+ 00815000
- * | ACNT | USERID1 ... USERIDN | 00816000
- * | ACNT | ALL | 00817000
- * +-----------+-------------------------+ 00818000
- * 00819000
- * OPERATION - 00820000
- * 00821000
- * 1. CALL DMKSCNFD TO GET ARGUMENT. IF NO ARGUMENTS AT ALL ARE 00822000
- * FOUND IN THE COMMAND, CALL DMKERMSG TO SEND ERROR MESSAGE 00823000
- * DMKCPV020E. IF ARGUMENT IS OVER 8 CHARACTERS, CALL 00824000
- * DMKERMSG TO SEND ERROR MESSAGE DMKCPV007E. IF IT IS AN 00825000
- * 'ALL' REQUEST, GO TO STEP 5 - ELSE CONTINUE. 00826000
- * 2. CALL DMKSCNAU TO GET USERID VMBLOK. IF NOT FOUND, GO TO 00827000
- * STEP 7. IF USER IS NOT RECEIVING ACCOUNTING MESSAGES, 00828000
- * GO TO STEP 3. IF RECEIVING ACCOUNTING MESSAGES, CALL 00829000
- * DMKACOTM TO SEND MESSAGE. 00830000
- * 3. CALL DMKACOFF TO CREATE AN ACCOUNTING RECORD FOR THIS 00831000
- * USERID. THEN BAL TO STEP 8 TO CHECK FOR DEDICATED DEVICES. 00832000
- * 4. IF THIS IS AN 'ALL' REQUEST, GO TO STEP 6. IF NOT, GO TO 00833000
- * STEP 1. 00834000
- * 5. CHECK FOR ANY OTHER ARGUMENTS IN THE COMMAND LINE. IF ANY 00835000
- * ARE FOUND, CALL DMKERMSG TO SEND ERROR MESSAGE DMKCPV003E. 00836000
- * ELSE - SET FLAG TO INDICATE ALL REQUEST AND CONTINUE. 00837000
- * 6. PICK UP THE NEXT VMBLOK IN THE CHAIN. IF MORE TO BE 00838000
- * PROCESSED, GO TO STEP 2. ELSE - CALL DMKQCNWT TO SEND THE 00839000
- * 'COMMAND COMPLETE' MESSAGE AND EXIT. 00840000
- * 7. CALL DMKERMSG TO SEND ERROR MESSAGE DMKCPV045E. THEN GO TO 00841000
- * STEP 1. 00842000
- * 8. THIS IS A SUBROUTINE WHICH SCANS THROUGH ALL THE VIRTUAL 00843000
- * DEVICES. FOR EACH ONE THAT IS DEDICATED OR A 'T' DISK, 00844000
- * CALL DMKACODV TO BUILD AN ACCOUNTING RECORD FOR THE 00845000
- * DEDICATED DEVICE. WHEN ALL DEVICES FOR THIS USER HAVE 00846000
- * BEEN SCANNED, RETURN TO THE CALLER. 00847000
- * 00848000
- * RESPONSES - 00849000
- * COMMAND COMPLETE 00850000
- * 00851000
- * ERROR MESSAGES - 00852000
- * DMKCPV003E INVALID OPTION - (OPTION) 00853000
- * DMKCPV007E INVALID USERID - (USERID) 00854000
- * DMKCPV020E USERID MISSING OR INVALID 00855000
- * DMKCPV045E (USERID) NOT LOGGED ON 00856000
- * 00857000
- *. 00858000
- EJECT 00859000
- DMKCPVAC RELOC CREATE ACCOUNTING RECORDS @VA03757 00860000
- MVC SAVEWRK1(4),ZEROES ZERO FLAG AREA @VA03757 00861000
- LR R10,R11 SAVE OPERATORS VMBLOK ADDRESS @VA03757 00862000
- ACNTSCAN CALL DMKSCNFD GET NEXT ARGUMENT @VA03757 00863000
- BNZ ACNTNARG NO MORE - GO CLEAN UP @VA03757 00864000
- CL R0,F8 CHECK ON THE ARGUMENT @VA03757 00865000
- BH CPV007A TAKE ERROR BRANCH IF MORE THAN 8 @VA03757 00866000
- CL R0,F3 IS ARG LENGTH 3? @VA03757 00867000
- BNE NOTAL NOPE, CANT BE 'ALL' THEN @VA03757 00868000
- CLC 0(3,R1),=C'ALL' IS IT 'ALL' @VA03757 00869000
- BE ACNTALL GO DO ALL @VA03757 00870000
- NOTAL OI SAVEWRK1,X'80' FLAG AS 'USERID . . .' SEQ. @VA03757 00871000
- NOTALL EQU * @VA03757 00872000
- STM R0,R1,SAVEWRK8 SAVE ARGUMENT LENGTH AND ADDRESS @VA03757 00873000
- CALL DMKSCNAU FIND USERS VMBLOK @VA03757 00874000
- BNZ ACNTNUSE USER NOT IN SYSTEM @VA03757 00875000
- SWTCHVM SWITCH TO USERS VMBLOK @V407508 00876100
- ACNTLOFF TM VMRSTAT,VMLOGOFF+VMLOGON IS THE USER LOGING @VA03757 00879000
- BNZ ACNTNUSE YES- GO TELL THE OPERATOR @VA03757 00880000
- TM VMMLEVEL,VMMACCON IS USER RECEIVING ACCOUNT @VA03757 00881000
- * MESSAGES 00882000
- BZ ACNTRECB NO, JUST BUILD ACCOUNT RECORDS @VA03757 00883000
- CALL DMKACOTM GO TELL USER @VA03757 00884000
- ACNTRECB CALL DMKACOFF CREATE AN ACCOUNTING RECORD @VA03757 00885000
- BAL R9,ACNTDED GO CHEK FOR DEDICATED DEVICES @VA03757 00886000
- L R9,SAVEREGS+36 RESTORE REG 9 TO ADR. OF @VA03757 00887000
- * COMMAND LINE 00888000
- TM SAVEWRK1,X'40' IS THIS AN 'ALL' REQUEST? @VA03757 00889000
- BO ACNTBUMP YES GO GET NEXT USER @VA03757 00890000
- B ACNTSCAN NO GO GET NEXT ARGUMENT @VA03757 00891000
- SPACE 2 00892000
- ACNTALL EQU * @VA03757 00893000
- TM SAVEWRK1,X'80' IS NON-ALL CASE ACTIVE? @VA03757 00894000
- BO NOTALL YES, PROCESS 'ALL' AS A USER @VA03757 00895000
- OI SAVEWRK1,X'40' FLAG 'ALL' ACTIVE @VA03757 00896000
- LR R10,R11 SAVE THE OPERATORS VMBLOK ADDRESS@VA03757 00897000
- B ACNTLOFF DO ACCOUNTING FOR THE OPERATOR @VA03757 00898000
- SPACE 00899000
- ACNTBUMP DS 0H GO TO NEXT VMBLOK @V407508 00900100
- L R1,VMPNT GET ADDRESS OF NEXT VMBLOK @V407508 00900200
- SWTCHVM SWITCH TO NEXT VMBLOK @V407508 00900300
- CR R10,R11 HAVE WE COMPLETED THE CYCLE ? @VA03757 00903000
- BNE ACNTLOFF NO - GO PROCESS THIS USER @VA03757 00904000
- SPACE 3 00905000
- ACNTNARG EQU * @VA03757 00906000
- LR R1,R10 GET CALLERS VMBLOK ADDRESS @V407508 00907100
- SWTCHVM SWITCH BACK TO THIS VMBLOK @V407508 00907200
- TM SAVEWRK1,X'C0' IS ANYTHING ACTIVE? @VA03757 00910000
- BZ CPV020 NOPE, ERROR @VA03757 00911000
- B ALLDONE SOMETHING WAS, OK @VA03757 00912000
- SPACE 2 00913000
- CPV007A LR R11,R10 RESTORE VMBLOK POINTER @VA03757 00914000
- B CPV007 AND GO SEND ERROR MESSAGE @VA03757 00915000
- SPACE 00916000
- ACNTNUSE EQU * @VA03757 00917000
- TM SAVEWRK1,X'40' IS 'ALL' ACTIVE? @VA03757 00918000
- BO ACNTBUMP YES - BYPASS MESSAGE @VA03757 00919000
- LR R1,R10 GET CALLERS VMBLOK ADDRESS @V407508 00920100
- SWTCHVM SWITCH BACK TO THIS VMBLOK @V407508 00920200
- LA R2,045 ERROR CODE @VA03757 00923000
- LM R0,R1,SAVEWRK8 LOAD ARGUMENT LENGTH AND ADDRESS @VA03757 00924000
- ICM R0,14,MODID+3 INSERT MODULE ID @VA03757 00925000
- CALL DMKERMSG SEND MESSAGE @VA03757 00926000
- * 00927000
- * ERMSG WILL RETURN TO DMKCFM, NOT HERE. 00928000
- * 00929000
- SPACE 2 00930000
- ACNTDED SR R1,R1 ZERO INDEX FOR CHANNEL @VA03757 00931000
- LA R4,2 LOAD INCREMENT REG @VA03757 00932000
- LA R5,30 LOAD END OF TABLES @VA03757 00933000
- ACNTNCH LH R6,VMCHTBL(R1) NEXT CHANNEL INDEX @VA03757 00934000
- LTR R6,R6 DOES THIS CHAN. EXIST ? @VA03757 00935000
- BM ACNTCHI NO - TRY NEXT CHAN. @VA03757 00936000
- A R6,VMCHSTRT ADDRESS OF VCHBLOK TO R6 @VA03757 00937000
- USING VCHBLOK,R6 @VA03757 00938000
- SR R2,R2 ZERO INDEX FOR CONTROL UNITS @VA03757 00939000
- ACNTNCU LH R7,VCHCUTBL(R2) LOAD NEXT CONTROL UNIT @VA03757 00940000
- LTR R7,R7 DOES IT EXIST ? @VA03757 00941000
- BM ACNTCUI NO - GO TRY NEXT @VA03757 00942000
- A R7,VMCUSTRT ADDRESS OF VMCUBLOK @VA03757 00943000
- USING VCUBLOK,R7 @VA03757 00944000
- SR R3,R3 ZERO INDEX FOR DEVICES @VA03757 00945000
- ACNTNDEV LH R8,VCUDVTBL(R3) GET NEXT DEVICE @VA03757 00946000
- LTR R8,R8 DOES IT EXIST ? @VA03757 00947000
- BM ACNTDEVI NO - GO TRY NEXT @VA03757 00948000
- A R8,VMDVSTRT ADDRESS OF VMDEVBLOK @VA03757 00949000
- USING VDEVBLOK,R8 @VA03757 00950000
- TM VDEVSTAT,VDEVDED IS THIS A DEDICATED DEVICE ? @VA03757 00951000
- BO ACNTCALL BRANCH IF IT IS @VA03757 00952000
- CLI VDEVTYPC,CLASDASD IS THIS A DASD DEVICE ?? @VA03757 00953000
- BNE ACNTDEVI NO -- GO GET NEXT DEVICE @VA03757 00954000
- TM VDEVFLAG,VDEVTDSK 'T' DISK ???? @VA03757 00955000
- BZ ACNTDEVI NO - GO GET NEXT DEVICE @VA03757 00956000
- SPACE 00957000
- ACNTCALL EQU * @VA03757 00958000
- CALL DMKACODV BUILD AN ACCOUNTING CARD FOR @VA03757 00959000
- * THE DEVICE 00960000
- ACNTDEVI BXLE R3,R4,ACNTNDEV @VA03757 00961000
- ACNTCUI BXLE R2,R4,ACNTNCU @VA03757 00962000
- ACNTCHI BXLE R1,R4,ACNTNCH @VA03757 00963000
- SPACE 00964000
- * WHEN FALL THRU - HAVE SCANNAD ALL DEVICES FOR THIS USER 00965000
- BR R9 RETURN TO CALLER @VA03757 00966000
- ********************************************************************** 00967000
- EJECT 00968000
- ********************************************************************* 00969000
- * 00970000
- * SUBROUTINE NAME - 00971000
- * DMKCPVAA 00972000
- * 00973000
- * FUNCTION - 00974000
- * 00975000
- *. 00976000
- * USERID. 00977000
- * 00978000
- * OPERATION - 00979000
- * 00980000
- * DMKCPVAA DOES THE FOLLOWING TO GENERATE ACCOUNT RECORDS 00981000
- * FOR THE USER: 00982000
- * 00983000
- * 1. DMKCPVAA GIVES CONTROL TO DMKACO TO MOVE THE USERID, 00984000
- * ACCOUNT NUMBER AND DISTRIBUTION NUMBER INTO THE RECORD 00985000
- * PROVIDING A POINTER EXIST FOR THE USER ACCOUNTING BLOCK. 00986000
- * IF THE USER ACCOUNTING BLOCK POINTER (VMACOUNT) IS ZERO, 00987000
- * THAN THE USERID, ACCOUNT NUMBER AND DISTRIBUTION NUMBER 00988000
- * ARE MOVE INTO THE RECORD FROM THE VMBLOK AND THE RECORDS 00989000
- * ARE PUNCH FOR THE USER THAT GAVE CONTROL TO DMKHVC. 00990000
- * 00991000
- * 2. ONCE DMKACO RETURNS CONTROL TO DMKCPVAA, THE DEVICE 00992000
- * ACCOUNTING CARDS ARE PUNCH. AFTERWARD, CONTROL IS RETURN 00993000
- * TO DMKHVC TO RELEASE THE STORAGE FOR THE USER ACCOUNTING 00994000
- * BLOCK IF ONE EXIST. 00995000
- * 00996000
- * 00997000
- * RESPONSES - 00998000
- * N/A 00999000
- * 01000000
- * ERROR MESSAGES - 01001000
- * N/A 01002000
- *. 01003000
- ********************************************************************** 01004000
- SPACE 2 01005000
- DMKCPVAA RELOC @VA03757 01006000
- CALL DMKACOFF GO CREATE AN ACCOUNTING CARD @VA03757 01007000
- BAL R9,ACNTDED GO CHECK FOR DEDICATED DEVICES @VA03757 01008000
- EXIT @VA03757 01009000
- EJECT 01010000
- CPV003 LA R2,3 ERROR CODE @VA03757 01011000
- B CALLERM .... @VA03757 01012000
- SPACE 01013000
- CPV004 LA R2,4 ERROR CODE @VA03757 01014000
- B CALLERM .... @VA03757 01015000
- SPACE 01016000
- CPV007 LA R2,7 ERROR CODE @VA03757 01017000
- B CALLERM @VA03757 01018000
- SPACE 01019000
- CPV009 LA R2,9 ERROR CODE @VA03757 01020000
- B CALLERM .... @VA03757 01021000
- SPACE 01022000
- CPV020 LA R2,20 ERROR CODE @VA03757 01023000
- B NOVAR ... @VA03757 01024000
- SPACE 01025000
- CPV021 LA R2,21 ERROR CODE @VA03757 01026000
- B NOVAR .... @VA03757 01027000
- SPACE 01028000
- CPV026 LA R2,26 ERROR CODE @VA03757 01029000
- B NOVAR ..... @VA03757 01030000
- SPACE 01031000
- CPV033 LA R2,33 ERROR CODE @VA03757 01032000
- B NOVAR .... @VA03757 01033000
- SPACE 01034000
- CPV040 EQU * @VA03757 01035000
- CALL DMKCVTBH CONVERT ADDR BACK TO HEX @VA03757 01036000
- N R1,X40FFS BLANK HIGH BYTE @VA03757 01037000
- SLR R0,R0 ZERO GPR0 @VA03757 01038000
- LA R2,40 ERROR CODE @VA03757 01039000
- B CALLERM .... @VA03757 01040000
- SPACE 01041000
- CPV045 LA R2,45 ERROR CODE @VA03757 01042000
- B CALLERM .... @VA03757 01043000
- SPACE 01044000
- CPV160 LM R0,R1,SAVEWRK4 LEN AND ADDRESS OF BAD ARG. @VA03757 01045000
- LA R2,160 ERROR CODE @VA03757 01046000
- B CALLERM .... @VA03757 01047000
- SPACE 01048000
- AIF (NOT &VIRREAL).VIRT3 @VA03757 01049000
- CPV176 LA R2,176 ERROR CODE @VA03757 01050000
- DROP R11 @VA03757 01051000
- C R4,F1 AREA UNLOCKED? @V408246 01051100
- BNE *+8 NO @V408246 01051200
- L R4,ASYSVM YES, GET SYSTEM USERID @V408246 01051300
- USING VMBLOK,R4 @VA03757 01052000
- MVC SAVEWRK2(8),VMUSER USERID WHO OWNS VIRT=REAL @VA03757 01053000
- * AREA 01054000
- DROP R4 @VA03757 01055000
- USING VMBLOK,R11 @VA03757 01056000
- LA R0,8 LENGHT OF DATA PASSED @VA03757 01057000
- LA R1,SAVEWRK2 AND ITS LOCATION. @VA03757 01058000
- B CALLERM SEND MSG DMKCPV176E @VA03757 01059000
- .VIRT3 ANOP 01060000
- SPACE 01061000
- AIF (NOT &VIRREAL).VIRT4 @VA03757 01062000
- CPV202 LA R2,202 ERROR CODE @VA03757 01063000
- B NOVAR ... @VA03757 01064000
- .VIRT4 ANOP 01065000
- SPACE 1 01065100
- AIF (NOT &VIRREAL).VIRT5 @VA05486 01065150
- CPV204 DS 0H @V4M0205 01065210
- CHARGE SWITCH,10 SWITCH TO OPERATOR @V4M0205 01065220
- .VIRT5 ANOP 01065700
- SPACE 3 01066000
- SPACE 01067000
- NOVAR SLR R1,R1 ZIP THE PARM REG @VA03757 01068000
- CALLERM ICM R0,14,MODID+3 INSERT THE MODULE INDENT. @VA03757 01069000
- CALL DMKERMSG SEND THE MESSAGE @VA03757 01070000
- * 01071000
- * ERMSG WILL RETURN DIRECTLY TO DMKCFM -- NOT HERE -- 01072000
- * 01073000
- SPACE 2 01073100
- VEQRUNLK EQU X'40' V=R AREA HAS BEEN UNLOCKED BY @VA08341 01073200
- * THE OPERATOR AND IS AVAILABLE TO THE 01073300
- * PAGE SELECTION SCAN PROCESS 01073400
- EJECT 01074000
- LTORG @VA03757 01075000
- EJECT 01076000
- PSA @VA03757 01077000
- COPY CORE @VA03757 01078000
- COPY DEVTYPES @VA03757 01079000
- COPY EQU @VA03757 01080000
- COPY IOBLOKS @VA03757 01081000
- COPY IOER @VA03757 01082000
- COPY MONBLOKS @VA03757 01083000
- COPY NETWORK @VA03757 01084000
- COPY RBLOKS @VA03757 01085000
- COPY SAVE @VA03757 01086000
- COPY SAVTABLE @VA03757 01087000
- COPY SYSTBL @VA03757 01088000
- COPY VBLOKS @VA03757 01089000
- COPY VMBLOK @VA03757 01090000
- END 01091000
ibm/vm370-lib/cp/dmkcpv.assemble_src.txt ยท Last modified: 2023/08/06 13:36 by Site Administrator