ibm:vm370-lib:cp:dmkalg.assemble_src
Table of Contents
DMKALG Source
References
- Fixes Applied : 4
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [HRC101DK]
Source Listing
- DMKALG.ASSEMBLE.txt
- ALG TITLE 'DMKALG (CP) VM/370 - RELEASE 6' 00001000
- ISEQ 73,80 VALIDATE SEQUENCING OF SOURCE 00002000
- *. 00003000
- * MODULE NAME - DMKALG 00004000
- * 00005000
- * 00006000
- * FUNCTION - 00007000
- * 00008000
- * PROCESS THE AUTOLOG COMMAND - A COMMAND WHICH CAUSES 00009000
- * ONE USER TO BE LOGGED ON BY ANOTHER 00010000
- * 00011000
- * COMMAND LINE FORMAT - 00012000
- * 00013000
- * +-----------+-------------------------------------------+ 00014000
- * | AUTOLOG | USERID PASSWORD < FIRST VREAD DATA > | 00015000
- * +-----------+-------------------------------------------+ 00016000
- * 00017000
- * ATTRIBUTES - 00018000
- * 00019000
- * REENTRANT, PAGEABLE, CALLED VIA SVC 00020000
- * 00021000
- * ENTRY POINT - 00022000
- * 00023000
- * DMKALGON - AUTOLOG A USER 00024000
- * 00025000
- * ENTRY CONDITIONS - 00026000
- * 00027000
- * GPR 9 = ADDRESS OF COMMAND BUFFER 00028000
- * GPR 11 = ADDRESS OF INVOKER'S VMBLOK 00029000
- * GPR 12 = ADDRESS OF DMKALG 00030000
- * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00031000
- * 00032000
- * EXIT CONDITIONS - 00033000
- * 00034000
- * 00035000
- * GPR 2 = 0 IF AUTOLOG WAS SUCCESSFUL 00036000
- * GPR 2 HOLDS ERROR-CODE (SEE ERROR MESSAGES) IF AUTOLOG FAILED 00037000
- EJECT 00038000
- * 00039000
- * OPERATION - 00040000
- * 00041000
- * THE FOLLOWING ROUTINE WILL ATTEMPT TO LOGON ANOTHER 00042000
- * USER AND PLACE HIM IN DISCONNECTED STATE. ANY DATA 00043000
- * ON THE COMMAND LINE BEYOND THE PASSWORD WILL BE PASSED 00044000
- * AS A COMMAND TO SATISFY THE FIRST VIRTUAL MACHINE 00045000
- * CONSOLE READ. GENERAL STEPS TAKEN IN THIS PROCESS 00046000
- * INCLUDE THE FOLLOWING: 00047000
- * 00048000
- * FROM DMKALG, CALL DMKBLD TO GET A NEW VMBLOK; THEN 00049000
- * CALL DMKLOGB TO 00050000
- * REQUEST THE USER BE LOGGED ON. ANY LOG ERROR MESSAGES 00051000
- * (AS OPPOSED TO LNK) RESULTING FROM THIS PROCESS WILL 00052000
- * BE SENT TO THE USER WHO ISSUED THE AUTOLOG COMMAND. 00053000
- * ALL OTHER ERROR MESSAGES WILL BE SENT TO THE NEW 00054000
- * USER. 00055000
- * 00056000
- * ON RETURN FROM DMKLOGB, DMKALG WILL CHECK FOR ERRORS. 00057000
- * IF AN ERROR RESULTED, DMKUSO WILL BE CALLED TO GET 00058000
- * RID OF THE ILL FATED AUTOLOGGED USER. IF THE ERROR 00059000
- * WAS DUE TO A BAD PASSWORD, CONTROL IS PASSED TO THE 00060000
- * PASSWORD COUNT ROUTINE IN COMMON CODE. THIS COMMON 00061000
- * CODE KEYS OFF OF THE AUTOLOG BIT AND THE VMVIRCF BIT. 00062000
- * THE AUTOLOG BIT IS SET BY DMKALG, DMKLOGB AND 00063000
- * DMKLOGOP. THE VMVIRCF BIT WILL NEVER BE SEEN HERE 00064000
- * FOR AN AUTOLOGGED USER; IT MAY BE ON FOR THE COMMAND 00065000
- * ISSUING USER. 00066000
- * 00067000
- * IF NO ERROR OCCURRED, PROCEED TO HANDLE THE FIRST 00068000
- * COMMAND BUFFER, TWIDDLE BITS TO LET THE NEW USER RUN, 00069000
- * CALL DMKSCHDL FOR THE SAME REASON AND, NOW THAT IT 00070000
- * WORKED OK, RESET THE BAD PASSWORD COUNT. 00071000
- * 00072000
- * NOTE - SAVEWRK1: AUTOLOG+PSWRDCK = AUTOLOG COMMAND 00073000
- * AUTOLOG ONLY = CPI SYS OP LOGON 00074000
- * 00075000
- * RESPONSES - 00076000
- * 00077000
- * AUTO LOGON *** USERID USERS = NNN 00078000
- * 00079000
- * ERROR MESSAGES - SEE LOGON COMMAND ALSO 00080000
- * 00081000
- * DMKALG115 - INVALID, EXCESSIVE INCORRECT PASSWORDS 00082000
- *. 00083000
- EJECT 00084000
- DMKALG CSECT 00085000
- DC CL8'DMKALG' PAGEABLE MODULE IDENTIFIER 00086000
- * ENTRY DMKALGON AUTOLOG A USER 00087000
- EXTRN DMKBLDVM 00088000
- EXTRN DMKLOGB 00089000
- EXTRN DMKSCNVD 00090000
- EXTRN DMKSCHDL 00091000
- EXTRN DMKSTKCP 00092000
- EXTRN DMKERMSG 00093000
- EXTRN DMKCVTBH 00094000
- EXTRN DMKSCNVN 00095000
- EXTRN DMKSYSJR @V60BBBB 00095500
- SPACE 1 00096000
- USING PSA,R0 FOR ALL ENTRIES 00097000
- USING VMBLOK,R11 00098000
- USING DMKALG,R12 00099000
- USING SAVEAREA,R13 00100000
- SPACE 2 00101000
- COPY OPTIONS 00102000
- EJECT 00103000
- DMKALGON RELOC @VM03066 00104000
- ST R11,SAVEWRK8 SAVE CMD VMBLOK FOR ERRORS @VM03066 00105000
- LR R10,R11 IN R10 TOO, FOR DMKLOGB @VM03066 00106000
- MVI SAVEWRK1,AUTOLOG+PSWRDCK AUTOLOG CMD PARMS @VM03066 00107000
- SPACE 00108000
- L R4,=A(DMKSYSJR) GET ADDRESS OF JSPCBLOK @V60BBBB 00108100
- USING JPSCBLOK,R4 TELL ASSEMBLER @V60BBBB 00108200
- TM LOGONJRL,L'LOGONJRL AUTOLOG JOURNALING? @V60BBBB 00108300
- BZ LOGA0 BR IF NOT @V60BBBB 00108400
- CLC VMPSWDCA,JPSLOGDS LIMIT REACHED? @V60BBBB 00108500
- BL LOGA1 BR IF NOT @V60BBBB 00108600
- B ERROR115 TOO MANY- SEND ERROR MESSAGE @V60BBBB 00108700
- LOGA0 TM VMOSTAT,VMVIRCF ISSUED FROM VIRT MACHINE? @VM03198 00109000
- BZ LOGA1 NOPE, CONTINUE... @VM03198 00110000
- IC R14,VMPSWDCT YUP, GET THE CURRENT PSWD COUNT @VM03198 00111000
- N R14,F240 ISOLATE THE HI DIGIT OF THE BYTE @VM03198 00112000
- LA R15,LOGLIMIT*16 GET COMPARAND @VM03198 00113000
- CR R14,R15 WELL?.... @VM03198 00114000
- BH ERROR115 TOO MANY BAD GUESSES, SORRY. @VM03198 00115000
- SPACE 00116000
- LOGA1 L R8,=C'AUTO' INDICATE AUTOLOG TO DMKBLD @VM03198 00117000
- CALL DMKBLDVM BUILD NEW VMBLOK @V305535 00118000
- OI VMOSTAT,VMDISC+VMCF FLAG DISC AND CONS FUNC @VA09214 00119000
- SR R0,R0 CLEAR PSUEDO READ PARAMETER @V305535 00120000
- SR R1,R1 . . @V305535 00121000
- CALL DMKLOGB ATTEMPT AUTOLOG @V305535 00122000
- B ALGERR UNSUCCESFUL @V305535 00123000
- LTR R2,R2 SUCCESFUL? @V305535 00124000
- BNZ ALGERR NO @V305535 00125000
- LH R8,VMVTERM DISPLACEMENT OF VIRT. CONS @V305535 00126000
- LTR R8,R8 DO WE HAVE A VIRT CONS? @VA07613 00126300
- BM NOCONS NO, SKIP HIM @VA07613 00126600
- AL R8,VMDVSTRT FORM ABSOLUTE ADDRESS OF CONS. @V305535 00127000
- CALL DMKSCNVD GET ALL VIRTUAL I/O BLOKS @V305535 00128000
- USING VDEVBLOK,R8 @V305535 00129000
- OI VDEVCFLG,VDEVAUCR FLAG FOR FIRST AUTO READ @V305535 00130000
- LA R0,BUFSIZE GET A FULL BUFFER @V305535 00131000
- CALL DMKFREE @V305535 00132000
- L R9,SAVER9 ADDRESS OF INPUT BUFFER @V305535 00133000
- LM R2,R3,BUFNXT-BUFFER(R9) GET NEXT & LENGTH FLDS @VM03066 00134000
- SLR R0,R0 ZIP FOR STORE @VM03066 00135000
- ST R0,BUFCNT-BUFFER(R9) GET NO MORE FROM THIS BUFFR@VM03066 00136000
- CLI 0(R2),C' ' IS NEXT CHAR A BLANK? @VM03066 00137000
- BE LOGA3 YES, SKIP @VM03066 00138000
- LTR R3,R3 IS THERE ANY DATA LEFT? @VM03066 00139000
- BP LOGA4 YES, GO MOVE IT. @VM03066 00140000
- LOGA2 SLR R3,R3 MAKE SURE COUNT IS 0 THEN. @VM03066 00141000
- B LOGA5 AND PROCEED WITH NULL BUFFER @VM03066 00142000
- SPACE 00143000
- LOGA3 S R3,F1 REMOVE BLANK AFTER CMD @VM03066 00144000
- BNP LOGA2 NONE OR ONE, NO DATA TO PASS, BR.@VM03066 00145000
- LA R2,1(R2) BUMP PAST THE BLANK @VM03066 00146000
- LOGA4 BCTR R3,0 DECREMENT FOR EXECUTE @VM03066 00147000
- EX R3,MOVEREAD MOVE REMAINING DATA FOR 1ST VREAD@VM03066 00148000
- LA R3,1(R3) R3 BACK TO USER DATA COUNT @VM03066 00149000
- LOGA5 ST R1,BUFNXT-BUFFER(R1) NEXT BYTE = 1ST BYTE @VM03066 00150000
- ST R3,BUFCNT-BUFFER(R1) SAVE REMAINING LENGTH @VM03066 00151000
- L R7,VDEVCON ADDRESS OF VCONCTL BLOCK @VM03066 00152000
- USING VCONCTL,R7 ADDRESS THE BLOCK @VM03066 00153000
- ST R1,VCONRBUF FILL IN READ BUFFER ADDRESS @VM03066 00154000
- MVC VCONRBSZ,=AL2(BUFSIZE) FILL IN BUFFER SIZE HRC101DK 00155490
- STC R3,VCONRCNT+1 FILL IN READ DATA COUNT @VM03066 00156000
- DROP R7,R8 @V305535 00157000
- NOCONS EQU * @VA07613 00157500
- NI VMRSTAT,255-VMCFWAIT CLEAR @V305535 00158000
- NI VMOSTAT,255-VMCF-VMSLEEP CLEAR @V305535 00159000
- CALL DMKSCHDL INFORM SCHEDULAR OF NEW VMBLOK @V305535 00160000
- SPACE 1 00161000
- LOGEXTA DS 0H @V408246 00162000
- L R1,SAVER11 NO,SWITCH TIMERS AND LOCKS 00163000
- SWTCHVM 00164000
- LOGEXIT EQU * 00165000
- LOGEXITR EXIT REALLY EXIT. 00166000
- SPACE 1 00167000
- MOVEREAD MVC 0(*-*,R1),0(R2) MOVE FROM OLD BUFFER TO NEW @VM03066 00168000
- * 00169000
- EJECT 00170000
- ALGERR ST R2,SAVER2 SAVE ERROR CODE FROM DMKLOGB @VM03066 00171000
- TM SAVER2,OPMSG LET USO BLAB TO OP ABOUT THIS? @VM03066 00173000
- MVI SAVER2,X'00' CLEAR OUT ANY FLAG FOR CALLER @VM03066 00174000
- BO NOSUPRES YES, DON'T SET SUPPRESS PARM @VA13026 00175000
- OI VMSVSTAT,VMLGNMSG SET SUPPRESS MESSAGE PARM @VA13026 00175600
- NOSUPRES DS 0H @VA13026 00176200
- OI VMOSTAT,VMKILL MAKE SURE KILL FLAG UP @V408246 00177000
- OI VMSVSTAT,VMLGFORC INDICATE THAT USER WAS FORCED @VA13026 00177200
- NI VMOSTAT,X'FF'-VMCF LET THE FORCE PROCEED @VA09214 00177500
- LA R0,CPEXSIZE GET CPEXBLOK @V408246 00178000
- CALL DMKFREE @V408246 00179000
- USING CPEXBLOK,R1 @V408246 00180000
- STM R0,R15,CPEXR0 SAVE ALL REGS. @V408246 00181000
- L R0,ADSPCH DISPATCH ENTRY @V408246 00182000
- ST R0,CPEXR12 @V408246 00183000
- ST R0,CPEXADD @V408246 00184000
- CALL DMKSTKCP STACK NEW BLOCK @V408246 00185000
- DROP R1 @V408246 00186000
- LR R1,R10 SWITCH TO VMBLOK IN R10 00187000
- SWTCHVM 00188000
- ALGERRA DS 0H @V408246 00189000
- BAL R8,CLEARBUF SET REMAINING BUFFER DATA = 0 @VM03066 00190000
- CLI SAVER2+3,50 BAD PASSWORD? @V305535 00191000
- BNE LOGEXIT NOPE, ALL DONE. @VM03198 00192000
- TM LOGONJRL,L'LOGONJRL AUTOLOG JOURNALING? @V60BBBB 00192100
- BNO ALGERRF BR IF NOT @V60BBBB 00192200
- IC R14,VMPSWDCA GET CURRENT COUNT OF INVALID @V60BBBB 00192300
- * LINK + AUTOLOG PASSWORDS @V60BBBB 00192400
- LA R14,1(,R14) BUMP IT BY ONE @V60BBBB 00192500
- STC R14,VMPSWDCA STUFF IT @V60BBBB 00192600
- B LOGEXIT DONE NOW @V60BBBB 00192700
- SPACE 1 00192800
- ALGERRF DS 0H @V60BBBB 00192900
- TM VMOSTAT,VMVIRCF YES, CMD ISSUED FROM VIRT MACHIN@VM03198 00193000
- BZ LOGEXIT NOPE, FROM CP, THATS OK; DONE. @VM03198 00194000
- IC R14,VMPSWDCT GET THE CURRENT COUNT @VM03198 00195000
- LA R14,16(R14) AUTOLOG PASSWORD CT +1 (HI DIGIT)@VM03198 00196000
- STC R14,VMPSWDCT AND RE-SAVE @VM03198 00197000
- B LOGEXIT DONE NOW. @VM03198 00198000
- SPACE 00199000
- CLEARBUF L R9,SAVER9 GET ORIGINAL COMMAND BUFFER @VM03066 00200000
- SLR R7,R7 CLEAR OUT REMAINING DATA COUNT @VM03066 00201000
- ST R7,BUFCNT-BUFFER(R9) AND SAVE @VM03066 00202000
- BR R8 RETURN TO CALLER @VM03066 00203000
- SPACE 00204000
- EJECT 00205000
- * ERROR RETURNS: 00206000
- * 00207000
- ERROR115 LA R0,7 '$INVALD; INVALD PSWDCT EXCEEDED'@VM03198 00208000
- LA R1,VMCOMND R0 = LENGTH, R1 = A(C'AUTOLOG') @VM03198 00209000
- LA R2,115 R2 = ERROR MSG NUMBER @VM03198 00210000
- ERRJOIN3 ST R2,SAVER2 RETURN ERROR CODE TO OUR CALLER 00211000
- ERRJOIN4 ICM R0,B'1110',DMKALG+3 'ALG' IDENTIFIER INTO R0, 00212000
- ICM R2,B'1000',HEX80 SIGNAL - RETURN TO LOGON PLEASE 00213000
- CALL DMKERMSG SEND ERROR MESSAGE @V305535 00214000
- B LOGEXIT 00215000
- EJECT 00216000
- CHARI DC C'I' @V4075A0 00217000
- HEX80 DC X'80' @V4075A0 00218000
- SPACE 2 00219000
- LTORG 00220000
- SPACE 2 00221000
- LOGLIMIT EQU 3 LIMIT OF HOW MANY "WRONG PASSWORDS" WE'LL TOLERATE 00222000
- EJECT 00223000
- PSA 00224000
- COPY SAVE 00225000
- * FLAG-BITS USED IN SAVEWRK1: 00226000
- * 00227000
- AUTOLOG EQU X'80' AUTOLOG CMD OR CPI SYS OP LOGON @VM03066 00228000
- PSWRDOK EQU X'40' PASSWORD OK - DON'T CALL DMKEPSWD 00229000
- NOIPL EQU X'20' NO AUTOMATIC IPL WANTED 00230000
- NONFATAL EQU X'10' ERROR(S) NONFATAL - GO READ NEXT UDEVBLOK 00231000
- RECON EQU X'08' RECONNECT PERFORMED 00232000
- R9FRE EQU X'04' R9 IN USE AS FREE-STORAGE BUFFER 00233000
- EXECF EQU X'02' RECONNECTED W/ VMCF STILL ON @VM03066 00234000
- PSWRDCK EQU X'01' AUTOLOG CMD - PASSWORD REQUIRED @VM03066 00235000
- SPACE 00236000
- * PARAMETER BITS PASSED TO DMKUSOFF 00237000
- * 00238000
- NOOPMSG EQU X'01' DONT SEND LOGOFF MSG TO SYS OP @VM03066 00239000
- SPACE 00240000
- * PARAMETER BITS PASSED FROM DMKLOG BACK TO DMKLOGA 00241000
- * 00242000
- OPMSG EQU X'80' LET USOFF SEND LOGOFF MSG TO OP @VM03066 00243000
- * MISCELLANEOUS EQUATES 00244000
- CON512 EQU 512 512 DOUBLEWORDS @V3E7466 00245000
- CON131 EQU 131 DMKLOG131E MESSAGE NUMBER @V3E7466 00246000
- CON95 EQU 95 DMKLOG095E @V3E7466 00247000
- LENGTH5 EQU 5 DATA LENGTH MSG 131E @V3E7466 00248000
- EJECT 00249000
- COPY EQU 00250000
- COPY VMBLOK 00251000
- COPY VBLOKS 00252000
- COPY IOBLOKS 00253000
- COPY CONBUF @V305535 00254000
- JPSCBLOK , @V60BBBB 00254500
- END DMKALG 00255000
ibm/vm370-lib/cp/dmkalg.assemble_src.txt ยท Last modified: 2023/08/06 13:36 by Site Administrator