ASMB,R,Q,C,Z IFZ HED #DSSM 91750-1X006 REV.2013 * (C) HEWLETT-PACKARD CO. 1980 NAM #DSSM,7 91750-1X006 REV.2013 800519 RTE-IVB W/S.M. XIF IFN HED #DSSM 91750-1X007 REV.2013 * (C) HEWLETT-PACKARD CO. 1980 NAM #DSSM,7 91750-1X007 REV.2013 800519 ALL, W/O S.M. XIF * * "Z" OPTION FOR SESSION MONITOR NODE, "N" OPTION FOR NON-SESSION NODE. SPC 1 ****************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * ****************************************************************** SPC 1 ENT #DSSM * EXT PRNT#,$DSCS IFZ EXT READ#,INBF#,PRNL#,EXFR#,ABRT# EXT .UACT,.DRCT,#DFUN,#PASS EXT .MVW,.LBT,.CBT,.MBT,.SBT XIF * * NAME: #DSSM * SOURCE: 91750-18006 * RELOC: PART OF 91750-12014 ("Z"), -12015 ("N") * PGMR: JIM HARTSELL * * SUBROUTINES TO PERFORM OPTIONAL REMOTE SESSION MODIFICATIONS FOR * THE DS/1000 DSMOD PROGRAM. * * CALLING SEQUENCES: * * * PROCESSOR FOR "/U" COMMAND. * * CLA * JSB #DSSM * * * PROCESSOR FOR "/P" COMMAND. * * CLA,INA * JSB #DSSM SKP SUP PRINT EQU PRNT# IFZ READ EQU READ# INBUF EQU INBF# PRNTL EQU PRNL# ERXFR EQU EXFR# ABORT EQU ABRT# XIF A EQU 0 B EQU 1 * * CHECK WHETHER THIS IS A SESSION MONITOR NODE. * #DSSM NOP ENTRY. STA FCODE SAVE FUNCTION CODE. * LDA $DSCS IF NO SESSION MONITOR SSA AT THIS NODE, JMP #DSSM,I RETURN TO CALLER. * IFN JSB PRINT ISSUE "NOT AVAILABLE" MSG IF DEF WARN NON-SESSION MODULE WAS LOADED, JMP #DSSM,I AND IGNORE REQUEST. XIF * IFZ JSB .DRCT GET DIRECT EXTERNAL ADDRESSES. DEF INBUF STA DINBF JSB .DRCT DEF #DFUN STA DFUN JSB .DRCT DEF #PASS STA PASS * * CHECK #DSSM FUNCTION REQUESTED. * LDA FCODE SZA,RSS JMP PR/U CPA B1 JMP PR/P JMP #DSSM,I * * PROCESS "/U" COMMAND - CHANGE DEFAULT SESSION USER NAME. * PR/U LDA DFUN MOVE CURRENT NAME LDB SMSG0 TO DISPLAY BUFFER. ADB D9 JSB .MVW DEF D11 NOP * JSB PRINT DISPLAY CURRENT NAME. DEF SMSG0 * RDNAM JSB READ ASK THE USER TO "ENTER NEW DEF SMSG1 DEFAULT SESSION USER-NAME". CPA B2 IS THE RESPONSE ASCII? JMP GTLEN YES. ERNAM JSB ERXFR NO. INFORM USER OF ERROR DEF IVRES AND TRY AGAIN. JMP RDNAM * GTLEN CPB /E GET OUT JMP #DSSM,I IF REQUESTED. * LDA PRNTL GET # CHARS INPUT. INA COMPUTE # WORDS. ARS STA TEMP SAVE FOR MOVE. ADA N12 IF GREATER THAN 11, SSA,RSS OUTPUT ERROR MSG JMP ERNAM AND TRY AGAIN. * LDA PRNTL VERIFY WHETHER VALID NAME. CMA,INA LDB DINBF * JSB .UACT DEF BUFR * SSA JMP ERNAM INVALID USER NAME. * LDB BLNKS BLANK OUT CURRENT NAME. LDA DFUN STB A,I LDB A INB JSB .MVW DEF D10 NOP * LDA DINBF MOVE NEW NAME TO #DFUN (IN RES). LDB DFUN JSB .MVW DEF TEMP NOP * JMP #DSSM,I RETURN TO DSMOD. SKP * * PROCESS "/P" COMMAND - CHANGE PASSWORD FOR NON-SESSION ACCESS. * PR/P LDA N10 FIND # CHAR IN CURRENT PASSWORD. STA TEMP CLA STA CNTR INIT CHARACTER COUNTER. LDB PASS RBL BYTE ADDR OF #PASS (IN RES). COUNT JSB .LBT GET NEXT BYTE IN #PASS. CPA BLANK BLANK? JMP ASKCR YES. ISZ CNTR NO. COUNT # CHAR IN #PASS, ISZ TEMP CHECK IF LIMIT REACHED, JMP COUNT AND GO TRY NEXT CHARACTER. * ASKCR LDA CNTR IF ODD NUMBER OF CHARACTERS, SLA MAKE COUNT EVEN TO ACCOUNT ISZ CNTR FOR TRAILING BLANK ON INPUT. SZA,RSS IF NO CURRENT PASSWORD, JMP ASKNW DON'T ASK USER FOR IT. * JSB READ ASK THE USER TO "ENTER CURRENT DEF SMSG2 PASSWORD FOR NON-SESSION ACCESS". CPA B2 IS THE RESPONSE ASCII? JMP CMPAR YES. ERCUR JSB PRINT NO. INFORM USER DEF IVRES AND JMP ABORT ** ABORT DSMOD ** * CMPAR LDA PRNTL CHECK # CHAR INPUT AGAINST CPA CNTR CURRENT PASSWORD LENGTH. RSS JMP ERCUR NO MATCH. ERROR. LDA DINBF OK. COMPARE PASSWORD. RAL LDB PASS RBL JSB .CBT DEF CNTR NOP JMP ASKNW INPUT MATCHES CURRENT PASSWORD. JMP ERCUR MISMATCH. JMP ERCUR MISMATCH. * ASKNW JSB READ ASK THE USER TO "ENTER NEW DEF SMSG3 PASSWORD FOR NON-SESSION ACCESS". CPA B2 IS THE RESPONSE ASCII? JMP CKLEN YES--GO PROCESS. ERNEW JSB ERXFR NO. INFORM USER DEF IVRES AND JMP ASKNW TRY AGAIN. * CKLEN CLA CPB /D IF USER WANTS "NO PASSWORD", STA PRNTL SET INPUT LENGTH = ZERO. * LDA PRNTL GET # BYTES INPUT. ADA N11 IF GREATER THAN 10, SSA,RSS INFORM USER JMP ERNEW AND TRY AGAIN. * LDA DINBF MOVE NEW PASSWORD TO #PASS. RAL LDB PASS RBL JSB .MBT DEF PRNTL NOP (B) = ADDR OF NEXT BYTE IN #PASS. * LDA PRNTL NEED TO PAD OUT WITH BLANKS? CMA,INA ADA D10 # BYTES TO PAD. SSA,RSS SZA,RSS JMP #DSSM,I NO PADDING NEEDED. RETURN. ADA N1 (A) = + #BYTES -1 REMAINING STA TEMP IN #PASS. SZA,RSS JMP #DSSM,I LDA BLANK JSB .SBT LDA B (B) = ADDR OF NEXT BYTE IN #PASS. ADA N1 JSB .MBT PAD IT OUT. DEF TEMP NOP * JMP #DSSM,I RETURN TO DSMOD. SKP * * CONSTANTS AND STORAGE. * B1 OCT 1 B2 OCT 2 D9 DEC 9 D10 DEC 10 D11 DEC 11 N1 DEC -1 N10 DEC -10 N11 DEC -11 N12 DEC -12 BLANK OCT 40 BLNKS ASC 1, /D ASC 1,/D /E ASC 1,/E BUFR BSS 128 TEMP NOP CNTR NOP DINBF NOP RESOLVED "DEF INBUF". DFUN NOP RESOLVED "DEF #DFUN". PASS NOP RESOLVED "DEF #PASS". * IVRES DEF *+2 DEF D9 ASC 9, INVALID RESPONSE! * SMSG0 DEF *+2 DEF D20 ASC 20, CURRENT NAME = UUUUUUUUUU.GGGGGGGGGG * SMSG1 DEF *+2 DEF D20 ASC 20, ENTER NEW DEFAULT SESSION USER-NAME: _ * * SMSG2 DEF *+2 DEF D20 ASC 20, CURRENT PASSWORD FOR NON-SESSION? _ * * SMSG3 DEF *+2 DEF D20 ASC 20, ENTER NEW PASSWORD FOR NON-SESSION _ * XIF * D20 DEC 20 FCODE NOP * IFN WARN DEF *+2 DEF D20 ASC 20, NOT AVAILABLE IN NON-SESSION VERSION! XIF * BSS 0 SIZE OF #DSSM. * END