HELLO.MAC;2/-BF/AU:72.=HELLO.MAC;1 \ -2,2 .IDENT /DS1.27/ .ENABL LC -96 ; GREG THOMPSON @NASA/AMES ; GAT05 09-JUL-79 FIX ESC LINE TERMINATOR BUG IN HELP CODE ; ; JIM DOWNWARD @KMS FUSION ; JGD02 TYPE LB:[1,2]NOLOG.TXT IF LOGINS DISABLED ; ; DANIEL STEINBERG @SRI INTERNATIONAL ; DSS03 25-OCT-78 DON'T DISPLAY @LOGIN.CMD ; ; DSS04 21-FEB-80 CONDITIONAL ON DS$LOG: CONNECT TIME LOGGING: ; USER IS PROMPTED FOR A PROJECT NUMBER WHICH IS ; SENT TO LOG... TASK. USERS IN GROUPS ING1-ING2 ; MAY LOG ON W/O ACCOUNTING BY APPENDING "I-" ; IN FRONT OF THEIR PASSWORD (EG: I-FOO ). ; ; DSS05 14-MAR-80 MOVE $USESB SUBROUTINE CALL AFTER THE CODE ; THAT SETS GRP,MEM IN CASE USER LOGGED ON ; BY LAST NAME ; ; DSS07 21-FEB-80 MAKE GROUPS SLV1-SLV2 SLAVED AFTER LOGIN ; MAKE GROUPS PRV1-PRV2 PRIVILEGED ; ; DSS08 21-FEB-80 ALLOW ING# GROUPS TO LOGON AFTER SET /NOLOGON ; BY INVOKING HELLO AS "HELN". E.G. HELN 1/1 ; ; DSS09 21-FEB-80 USE NICE ENGLISH TEXT ERROR MSGS FROM SCS CODE ; ; DSS10 1-APR-80 CLEAN UP FILE CLOSE CODE ; ; DSS11 11-APR-80 DON'T SPAWN "ASN SY00:=SY0:/LOGIN" SINCE IT IS ; REDUNDANT AND FRAGMENTS POOL SPACE % -103,104,/;DSS04/ .MCALL SDAT$,RQST$ -,,/;DSS07/ ; ; CONSTANTS ; PRV1 = 1 ;FIRST PRIVILEGED ACCOUNT PRV2 = 10 ;LAST PRIV ACNT ING1 = 1 ;FIRST SUPER-PRIV ACCOUNT ING2 = 1 ;LAST S-P ACNT SLV1 = 10 ;FIRST SLAVE ONLY ACCOUNT SLV2 = 17 ;LAST SLAVE ACNT .IIF LT,PRV2-PRV1 .ERROR ;BAD ACCOUNT ORGANIZATION .IIF LT,ING2-ING1 .ERROR ;BAD ACCOUNT ORGANIZATION .IIF LT,SLV2-SLV1 .ERROR ;BAD ACCOUNT ORGANIZATION -108,,/;DSS04/ CR=15 LF=12 SPC=40 -185,203,/;DSS09/ ER1: .ASCIZ /Invalid login syntax./ ER2: .ASCIZ /The account does not exist, or the password is wrong./ ER3: .ASCIZ /This terminal is allocated and cannot be logged-on./ ER4: .ASCIZ /HELLO could not get its command line./ ER5: .ASCIZ /Someone is already logged in at this terminal./ ER6: .ASCIZ /HELLO cannot open the system account file./ ER7: .ASCIZ /No one may log into the system at this time./ ER8: .ASCII /The login message can not be printed at this time: / ER8NUM: .ASCIZ /-NNNNN/ ER9: .ASCIZ /Ambiguous qualifier in help file./ ER10: .ASCIZ /Improper help file format./ ER11: .ASCIZ /No information is available on that subject./ ER15: .ASCIZ /System fuckup -- LB: not found./ ER17: .ASCIZ /Indirect file syntax error./ ER18: .ASCII /Indirect file open error: / ER18NM: .ASCIZ /-NNNNN/ ER19: .ASCIZ /Synonym not found./ ER20: .ASCIZ /Ambiguous synonym./ ERABO: .ASCIZ /*** LOGIN ABORTED ***/ .IF DF,DS$LOG ;CONNECT TIME ACCOUNTING ER30: .ASCIZ /System accounting has fucked up./ .ENDC ;DF,DS$LOG -223,,/;DSS04/ RECSIZ: .WORD 0 ;SAVED RECORD SIZE FOR FILE I/O .IF DF,DS$LOG ;IF CONNECT-TIME LOGGING SENDL: SDAT$ LOG...,LOGDAT REQL: RQST$ LOG...,,,1,1 INVFLG: .WORD 0 PRJPMT: .ASCIZ /PROJECT: / PRJSIZ=10. NAMSIZ=14. ; *** NEXT BUNCH OF BYTES MUST BE IN ORDER!! *** LOGDAT: .BYTE 2 ;LOGIN FLAG TERMB: .BYTE ;TERMINAL NUMBER GRPB: .BYTE ;UIC MEMB: .BYTE PRJBUF: .BLKB PRJSIZ ;PROJECT STRING NAMBUF: .BLKB NAMSIZ ;LAST NAME STRING .EVEN .ENDC ;DF,DS$LOG -234,,/;JGD02/ NLGDSP: .WORD 4. ; .WORD DEVNAM ; .WORD 5. ; .WORD DIRNAM ; .WORD 9. ; .WORD NLGNAM ; -287,,/;JGD02/ NLGNAM: .ASCII /NOLOG.TXT/ -359,,/;DSS08/ ; HELN .... - ATTEMPT TO LOGON WHEN LOGONS ARE DISABLED -444,444,/;DSS08/ CMPB BUF+3,#'N ; YES...LOGGING IN WITH 'HELN'? BEQ 701$ ; YUP, LET 'EM TRY IT JMP ERR7 ; ELSE, PRINT MSGS AND EXIT -546,558,/;DSS05/ 481$: MOV ENTRY,R0 ; POINT TO ACCOUNT FILE ENTRY -580,580,/;DSS05/ TST #$USESB ; IS USER SUBROUTINE PRESENT? BEQ 4814$ ; EQ- NO. MOV ENTRY,R0 ; YES...POINT TO ACCOUNT FILE ENTRY CALL $USESB ; CALL USER SUBROUTINE BCC 4814$ ; CC- OK TO LOGIN USER JMP ERR2 ; DO NOT LOGIN USER 4814$: TST #$DNTSB ; IS DECNET SUBROUTINE PRESENT? BEQ 4815$ ; EQ- NO. MOV ENTRY,R0 ; YES...POINT TO ACCOUNT FILE ENTRY CALL $DNTSB ; CALL DECNET SUBROUTINE BCC 4815$ ; CC- OK TO LOGIN USER JMP ERR2 ; DO NOT LOGIN USER 4815$: CALL $SWSTK,60$ ; SWITCH TO SYSTEM STACK -598,599,/;DSS10/ CALL CLOSE ; CLOSE ACCOUNT FILE -748,,/;DSS11/ CMP ASSN+4,#"SY ;IS THIS ASSIGN GONNA DO ANYTHING? BNE 1250$ ; YUP CMP ASSN+6,#"00 ; REALLY? BEQ 170$ ; NOPE...DON'T BOTHER WASTING POOL SPACE 1250$: ;REF LABEL -781,786,/;DSS07/ 170$: CMPB U.LUIC+1(R1),#PRV1 ; IS UIC PRIVILEGED? BLO 175$ ; NO CMPB U.LUIC+1(R1),#PRV2 BLOS 180$ ; YES 175$: BIC #U2.PRV,U.CW2(R1) ; NO, CLEAR PRIV FLAG 180$: CMPB U.LUIC+1(R1),#SLV1 ; IS UIC SLAVED? BLO 381$ ; NO CMPB U.LUIC+1(R1),#SLV2 BLOS 384$ ; YES...LEAVE IT SLAVED 381$: DIR$ #SLVDPB ;TRY QIO$ TO UNSLAVE TI: BIC #U2.SLV,U.CW2(R1) ;MAKE SURE (QIO MIGHT FAIL) 384$: ROR (SP)+ ; SHOULD WE WAIT FOR CO: TO FINISH? -847,850,/;DSS03/ ; DON'T DISPLAY '@LOGIN.CMD' ON TI: -888,890,/;JGD02/ ERR7: CALL CLOSE ; CLOSE ACCOUNT FILE MOV #ER7,R0 ; MOV #40,ODPB+Q.IOPL+4 ; SET NORMAL CARRIAGE RETURN CALL WRIT ; MOV #NLGDSP,R1 ; GET READY TO PRINT NOLOG.TXT CALL DSPFIL ; MOV #EX$ERR,EXSTAT ; SET EXIT STATUS BR ERROR1 ; AND EXIT -897,,/;DSS04/ .IF DF,DS$LOG ;CONNECT TIME LOGGING ERR30: MOV #ER30,R0 ;CAN'T SEND OR REQUEST LOG... MOV #EX$SEV,EXSTAT BR ERROR .ENDC ;DF,DS$LOG -900,902,/;DSS10/ CALL CLOSE ;CONTROL-S HANGS ACTFIL -909,,/;JGD02/ ERROR1: MOV #ERABO,R0 ;PRINT 'LOGON ABORTED' CALL ERROUT -1105,1107,/;DSS10/ MOV R0,-(SP) ;SAVE R0 CLOSE$ #$ACTFL ; YES - CLOSE FILE MOV (SP)+,R0 ;RESTORE R0 CLR FILOPN ; SET FILE CLOSED 90$: RETURN -1214,,/;DSS04/ MOV R2,RECSIZ ; SAVE IT FOR LATER -1269,,/;DSS04/ CMPB (R1)+,#'I BNE 401$ CMPB (R1),#'- BNE 401$ INC INVFLG ADD #2,PSWDBF 401$: MOV PSWDBF,R1 -1342,1342,/;DSS04/ MOV RECSIZ,Q.IOPL+2(R4) ; SET COUNT OF BYTES TO WRITE -1346,,/;DSS04/ .IF DF,DS$LOG ;CONNECT TIME LOGGING $USESB: CMPB GRP,#ING1 BLO 5$ CMPB GRP,#ING2 BHI 5$ TST INVFLG BEQ 25$ 1$: CLC ;SIGNAL LOGON OK RETURN 5$: BIT #FE.NLG,$FMASK ;LOGONS DISABLED? BEQ 10$ ; NO JMP ERR7 ; YUP...THAT'S ALL FOLKS 10$: TST INVFLG BNE 100$ ; N.G. 25$: MOV #PRJPMT,R0 ;PROMPT FOR PROJECT MOV #ODPB,R4 ;POINT TO QIO DPB MOV #IO.WLB,Q.IOFN(R4) ;SET TO WRITE CLR Q.IOPL+4(R4) ;WITH NO CARRIAGE CONTROL CALL WRIT MOV #PRJBUF,R0 ;SET INPUT BUFFER MOV #PRJSIZ,R1 ;AND SIZE CALL READ MOV IOSB+2,R1 ;GET SIZE OF READ BEQ 100$ ;BLANK NOT VALID ADD R1,R0 ;POINT AFTER LAST INPUT CHAR MOV #PRJSIZ,R2 ;GET MAX SIZE SUB R1,R2 BEQ 32$ ;IF ZERO, FULL 30$: MOVB #SPC,(R0)+ ;FILL IT OUT SOB R2,30$ 32$: MOV ENTRY,R0 ;RETRIEVE LOGIN ENTRY LINE ADD #A.LNM,R0 ;POINT TO LAST NAME MOV #NAMSIZ,R2 MOV #NAMBUF,R1 ;DEST 35$: MOVB (R0)+,(R1)+ SOB R2,35$ MOV $TKTCB,R0 ;GET TCB ADDRESS MOV T.UCB(R0),R0 ;GET TERMINAL TI: UCB MOV U.DCB(R0),R4 ;GET TI: DCB SUB D.UCB(R4),R0 ;SUBTRACT ADDR OF 1ST UCB MOV D.UCBL(R4),R1 ;GET SIZE OF EACH UCB CALL $DIV ;AND FIND OUT HOW FAR IN WE ARE ADD D.UNIT(R4),R0 ;GENERATE UNIT NUMBER MOVB R0,TERMB MOVB GRP,GRPB MOVB MEM,MEMB ;SET UP THE REST OF THE ACCOUNT LINE DIR$ #SENDL ;SEND A PACKET TO LOG... BCS 98$ DIR$ #REQL ;REQUEST LOG... BCC 1$ ;THAT'S IT 98$: JMP ERR30 ;CAN'T GET ACCOUNTING GOING!!! 100$: SEC RETURN .ENDC ;DF,DS$LOG -1633,,/;GAT05/ CMPB #33,(R4) ; ESC MAY BE A TERMINATOR BEQ TEXT ; -1857,,/;GAT05/ CMPB #33,R2 ; R2 = ESCAPE? BEQ 10$ ; YES, ITS A TERMINATOR /