.TITLE SRCTBL .IDENT /01/ ;+ ;SUBROUTINE TO SEARCH CURRENT SYMBOL TABLE FOR TARGET ; ;CALL: ; ; CALL SRCTBL(TABL,KODE,NSYM,IADR,IFLG) ; ;WHERE: ; TABL=2 ;BASE OF TABLE KODE=4 ;TARGET OF SEARCH NSYM=6 ;NUMBER OF SYMBOLS IADR=10 ;RETURN ABSOLUTE ADDRESS OF SYMBOL, ;...OR WHERE SYMBOL WOULD GO. IFLG=12 ;FLAG=0=FAIL,=-1=SUCCESS ;- .MCALL RETURN SIZ =10 ;SIZE OF SYMBOL TABLE ENTRY SRCTBL::MOV TABL(R5),R1 ;PICK UP BASE OF TABLE MOV KODE(R5),R0 ;NOW ADR OF TARGET CLR @IFLG(R5) ;INIT RESULT TO FAIL MOV @NSYM(R5),R2 ;GET COUNT IN TABLE BEQ 40$ ;BR IF NOTHING TO SRC 10$: CMP (R0),2(R1) ;CK FIRST 1/2 BLO 40$ ;BR IF FAIL BHI 20$ ;BR IF STILL A CHANCE CMP 2(R0),4(R1) ;FST 1/2 MATCH-CK OTHER 1/2 BLO 40$ ;BR IF NO WAY BEQ 30$ ;BR IF FOUND 20$: ADD #SIZ,R1 ;ADV TO NXT ENTRY DEC R2 ;COUNT THE LOOP BNE 10$ ;BR IF NOT DONE BR 40$ ;NO-EXIT 30$: DEC @IFLG(R5) ;SET SUCCESS STATUS 40$: MOV R1,@IADR(R5) ;RETURN PLACE IN TBL RETURN .END