.TITLE GTTSK - GET TASK TCB ADDRESS .IDENT /02/ ;HJL011 ; ;HJL011 ; COPYRIGHT (C) 1974, 1976 ;HJL011 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. ;HJL011 ; ;HJL011 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A ;HJL011 ; SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE ;HJL011 ; INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR ;HJL011 ; ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE ;HJL011 ; MADE AVAILABLE TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH ;HJL011 ; SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE TERMS. TITLE ;HJL011 ; TO AND OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN ;HJL011 ; IN DEC. ;HJL011 ; ;HJL011 ; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT ;HJL011 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL ;HJL011 ; EQUIPMENT CORPORATION. ;HJL011 ; ;HJL011 ; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ;HJL011 ; ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. ;HJL011 ; ;HJL011 ; VERSION: 02 ;HJL011 ; BY: H. LEV ;**-18 ; DATE: 3/13/75 ; ;HJL011 ; HJL011 11/14/75 ADD SUPPORT FOR VT AND BS ;HJL011 ; ;HJL011 ; ; ; LOCAL DATA ; TERM: .ASCII / / ; ;HJL011 NUM: .BYTE 0,0,0,0 ; ;**-1 ;+ ; $GTTSK - GET TCB ADDRESS OF TASK ; THIS ROUTINE WILL TRY TO GET THE TCB ADDRESS OF ; THE TASK WHOSE NAME IS POINTED TO BY R3. IT WILL TRY ; FOUR DIFFERENT FORMS OF THE NAME. ; 1) IF THE NAME POINTED TO BY R3 IS FOUND IT'S TCB ADDRESS IS ; RETURNED IN R0. ; 2) IF 1 FAILS, AND THE SECOND WORD OF THE NAME IS ZERO, ; THE NAME XXXYN WHERE Y IS T FOR TT, V FOR VT AND ;HJL011 ; B FOR BS AND N IS THE UNIT NUMBER OF THE DEVICE ;HJL011 ; THE ACTIVE TASK'S TI WILL BE SEARCHED FOR AND ;**-1 ; IF FOUND, THE TCB ADDRESS WILL BE RETURNED IN R0. ; 3) IF 1 AND 2 FAILS, AND THE SECOND WORD OF THE TASK NAME IS ; ZERO, THE NAME ...XXX WILL BE SEARCHED FOR AND ; IF FOUND R0 WILL CONTAIN THE TCB ADDRESS. ; 4) IF 1 FAILS AND BOTH WORDS 1 AND 2 OF TASK NAME ARE ZERO ; SEARCH FOR TASK YYN WHERE N IS THE UNIT NUMBER OF DEVICE YY. ;HJL011 ; IF FOUND R0 WILL CONTAIN THE ADDRESS OF THE TCB. ;**-1 ; ; INPUT: ; R3 - ADDRESS OF TWO WORD TASK NAME ; ; OUTPUT: ; CARRY CLEAR - TASK FOUND ; R0 - TCB ADDRESS ; CARRY SET - TASK NOT FOUND ; ; ALL REGISTERS ARE PRESERVED. ; ;- $GTTSK:: CALL $SWSTK,30$ ; SWITCH TO SYSTEM STATE TST (R3) ; TASK NAME SPECIFIED? BEQ 5$ ; NO, ASSUME TTN CALL $SRSTD ; GET TASK TCB ADDRESS BCC 20$ ; FOUND IT TST 2(R3) ; THREE CHARACTER NAME? BNE 15$ ; NO 5$: CLR -(SP) ; ZERO SECOND PART OF NAME MOV (R3),-(SP) ; GET FIRST PART OF NAME MOV #NUM+4,R3 ; POINT TO AREA FOR TERMINAL NUMBER CLR -(R3) ; CLR -(R3) ; MOV $TKTCB,R0 ; GET OUR TCB ADDRESS ;HJL011 MOV T.UCB(R0),R0 ; GET TI UNIT ADDRESS ;HJL011 MOV U.DCB(R0),R0 ; GET DCB ADDRESS ;HJL011 MOV D.NAM(R0),TERM ; GET DEVICE NAME ;HJL011 CALL $GTMNM ; GET TERMINAL NUMBER TST (SP) ; TASK NAME SPECIFIED? ;**-1 BEQ 8$ ; NO ;HJL011 MOVB TERM,TERM+1 ; YES, GET FIRST CHARACTER ;HJL011 MOV #TERM+1,R0 ; POINT TO TYPE AND NUMBER ;HJL011 BR 10$ ; ;HJL011 8$: MOV #TERM,R0 ; GET DEVICE NAME ADDRESS ;HJL011 CALL $CAT5 ; CONVERT TO RAD50 ;**-2 MOV R1,(SP) ; STORE FIRST PART OF NAME 10$: CALL $CAT5 ; CONVERT REST OF NAME MOV SP,R3 ; RESTORE ADDRESS OF TASK NAME MOV R1,2(R3) ; AND SET REST OF TASK NAME CALL $SRSTD ; SEARCH STD FOR IT BCC 17$ ; FOUND IT MOV (R3),2(R3) ; TRY ...XXX MOV (PC)+,(R3) ; GET ... .RAD50 /.../ ; CALL $SRSTD ; SEARCH FOR TASK BCC 17$ ; FOUND IT CMP (SP)+,(SP)+ ; CLEAN STACK 15$: MOV @$HEADR,R0 ; NO, GET USER SP INC 6(R0) ; SET CARRY BIT IN USER PS BR 30$ ; 17$: CMP (SP)+,(SP)+ ; CLEAN STACK 20$: MOV R0,2(SP) ; SET USER R0 TO TCB ADDRESS 30$: RETURN ; TO USER STATE AND CALLER .END