; ******************************************************* ; * * ; * THIS SOFTWARE WAS DEVELOPED WITH SUPPORT * ; * FROM THE NATIONAL INSTITUTES OF HEALTH: * ; * NIH CA06927 * ; * NIH CA22780 * ; * * ; * DIRECT INQUIRIES TO: * ; * COMPUTER CENTER * ; * THE INSTITUTE FOR CANCER RESEARCH * ; * 7701 BURHOLME AVENUE * ; * PHILADELPHIA, PENNSYLVANIA 19111 * ; * * ; * NO WARRANTY OR REPRESENTATION, EXPRESS OR * ; * IMPLIED, IS MADE WITH RESPECT TO THE * ; * CORRECTNESS, COMPLETENESS, OR USEFULNESS * ; * OF THIS SOFTWARE, NOR THAT USE OF THIS * ; * SOFTWARE MIGHT NOT INFRINGE PRIVATELY * ; * OWNED RIGHTS. * ; * * ; * NO LIABILITY IS ASSUMED WITH RESPECT TO * ; * THE USE OF, OR FOR DAMAGES RESULTING FROM * ; * THE USE OF THIS SOFTWARE * ; * * ; ******************************************************* ; * * ; * THIS SOFTWARE WAS DESIGNED FOR USE ON A * ; * PDP-11/70 OPERATING UNDER IAS V3.0 USING * ; * THE IAS PDP-11 MACRO ASSEMBLER. * ; * * ; ******************************************************* .TITLE .WHO. -- WHO IS LOGGED IN AT A TERMINAL .SBTTL DOCUMENTATION .MCALL VRCT$,VSDR$,EXIT$,DIR$ ; ; THIS PROGRAM ALLOWS A PROGRAM TO GET THE NAME OF THE USER ; WHO IS LOGGED IN AT A TERMINAL WITHOUT BEING LINKED TO IASCOM, ; SCOM, OR ACCCOM. IN ORDER TO USE, THE TASK MUST SEND A ; MESSAGE USING THE RESUME OR REQUEST RECEIVER FUNCTION CONTAINING ; TWO WORDS: ; 1: DEVICE NAME: ; IF NEGATIVE, IS THE PUD POINTER OF THE ; TERMINAL. ; IF ZERO, THE SENDER'S TERMINAL IS USED. ; IF POSITIVE, IT IS THE DEVICE NAME. ; 2: DEVICE UNIT NUMBER: ; USED IF WORD ONE POSITIVE TO INDICATE THE ; UNIT NUMBER. ; ; THIS PROGRAM WILL SEND BACK A MESSAGE CONTAINING THE 12 BYTES OF ; THE USER NAME. NOTE THAT USER NAMES GENERALLY ARE NULL FILLED AND ; LEFT JUSTIFIED. ; THIS PROGRAM WILL SEND AND RESUME OR REQUEST, BUT TIMESHARING ; TASKS MAY NOT STOP OR SUSPEND, SO WFM SHOULD BE USED. THIS PROGRAM ; WILL ALWAYS RESPOND. ; .PAGE .SBTTL DIRECTIVE PARAMETER BLOCKS AND DATA SND: VSDR$ RQTASK,,,,,BIGZ,6,,,SND RCVTI=SND+S.DRTI RECS: VRCT$ ,RCVMES,2,RCVTI EXIT: EXIT$ ; RCVMES: .WORD 0,0 ;RECEIVER TASK RQDEVC: .WORD 0,0 ;MESSAGE TEXT BIGZ: .WORD 0,0,0,0,0,0 ;NULL USER NAME ; .SBTTL MAIN CODE .WHO.: DIR$ #RECS BCS SPLIT ;LEAVE CMP #IS.SUC,@#$DSW ;INSURE MESSAGE RECEIVED BNE .WHO. ;GET MESSAGE MOV RQDEVC,R5 ;GET REQUESTED DEVICE INDICATOR BLT 4$ ;IS A PUD ADDRESS BGT 10$ ;IS A DEVICE NAME MOV RCVTI,R5 ;GET SENDERS TI 4$: BIC #1,R5 ;INSURE AGAINST ODD ADDRESS MOVB U.UN(R5),R4 ;GET UNIT NUMBER MOV U.DN(R5),R5 ;GET DEVICE NAME BR 20$ 10$: MOV RQDEVC+2,R4 ;GET REQUESTED UNIT 20$: MOV RCVMES,SND+S.DRTN ;SAVE TASK NAME IN SEND BLOCK MOV RCVMES+2,SND+S.DRTN+2 MOV @#.CITHD,R3 ;GET CLI TABLE ADDRESS MOV @#.CITNO,R2 ;NUMBER OF CLIS ADD #C.TU,R3 ;SPACE TO TERMINAL NODE LH 24$: MOV R3,R1 ;BEGIN TERMINAL SCAN 30$: MOV (R1),R1 ;GET NEXT UTN CMP R1,R3 ;NO MORE? BEQ 40$ ;NO, SO GO GET NEXT CLI CMP I.DN(R1),R5 ;THIS DEVICE? BNE 30$ ;NO CMPB I.TT(R1),R4 ;YES. THIS UNIT? BNE 30$ ;NO. ADD #I.UN,R1 ;YES. SPACE TO USER NAME BR 50$ ;GO SEND MESSAGE 40$: ADD @#.CITSZ,R3 ;GO TO NEXT CLI SOB R2,24$ ;MORE? MOV #BIGZ,R1 ;NO, SO BAD DEVICE 50$: MOV R1,SND+S.DRBA ;SAVE ADDRESS IN SEND BLOCK DIR$ #SND ;RETURN NAME TO SENDER BR .WHO. SPLIT: DIR$ #EXIT .END .WHO.