TITLE LOOKUP ENTRY LOOKUP ;THIS ROUTINE LOOKS UP A FILE 'FILNAM.EXT' ;THE CALLING SEQUENCE IS CALL LOOKUP('FILNA','M.EXT') ;THE RETURN IS ALL ONES (.TRUE.) IF ITS THERE AND 0 (.FALSE.) IF NOT ANS=0 ;AC'S BPT=1 CTR=2 TAC=3 BPT2=4 CNT=5 FIL=6 FEL=7 CHR=10 DOT=16 ;PERIOD D=12 ;CHANNEL DEFINE TTYOUT (ADR) DEFINE TTYIN (ADR) LOOKUP: 0 MOVSI 1,2 HRRI 1,ACSAV BLT 1,ACSAV+15 ;SAVE AC'S INIT D,17 SIXBIT/DSK/ 0 JRST NOTAVL SETOM ANS ;ASSUME ITS THERE MOVE FIL,@(16) ;GET FIRST ARG MOVE FEL,@1(16) ;GET SECOND ARG MOVE BPT2,[POINT 7,FIL] ;POINT TO FILENAME MOVEI CNT,12 ;ONLY LOOK AT 10 CHARACTERS MOVEI CTR,6 ;TO STORE SIX CHARS MOVE BPT,[POINT 6,UFD] CLEARM UFD ;FILNAME CLEARM UFD+1 ;EXT CLEARM UFD+2 ;PROTECTION GETNAM: ILDB CHR,BPT2 ;READ CHARACTER SUBI CHR,40 ;CONVERT TO SIXBIT JUMPE CHR,COUNT ;SKIP BLANKS CAIN CHR,DOT ;TEST FOR PERIOD JRST EXT ;PERIOD--EXT FOLLOWS SOSL CTR ;STORE ONLY LEGAL LIMIT IDPB CHR,BPT ;ALPHANUMERIC--STORE COUNT: SOSG CNT ;DECREMENT CHARACTER COUNTER JRST LOOK ;DONE, GO LOOKUP FILE JRST GETNAM ;GET NEXT CHARACTER EXT: MOVE BPT,[POINT 6,UFD+1] MOVEI CTR,3 ;TO STORE THREE CHARS JRST COUNT ;GO GET EXT LOOK: LOOKUP D,UFD ;LOOKUP FILE SETZM ANS ;FILE NOT THERE CLOSE D, MOVSI 1,ACSAV HRRI 1,2 BLT 1,17 JRA 16,(16) ;DONE NOTAVL: TTYOUT [ASCIZ"DEVICE NOT AVAILABLE"] CALLI 12 ACSAV: BLOCK 17 UFD: BLOCK 4 END