;*FFNAM.MAC -- FETCH FILE NAME INFORMATION FROM FDB ; WRITTEN DATE 10/27/77 ; REVISED DATE ; ; CALL: ; CALL FFNAM(LUN,CIV,NC) ; WHERE: ; LUN LUN # OF FILE ; CIV RETURNED AS DEV:FILE-NAME.FILE-TYPE;VER-NO ; NC NC IN CIV ; ;- .NLIST TOC ;TBL OF CONTENTS NOT WANTED ; .TITLE FFNAM .SBTTL FETCH FILE NAME INFORMATION FROM FDB ;***DEBUG< .ENABL AMA ;NO PC-REL ADDRS ;***DEBUG> ; .MCALL SUBR,RTN .MCALL MINIT,PUSH,POP,NBOF$L ; .GLOBL $CBOMG,$C5TA ;SUBRS CALLED .GLOBL $FCHNL,$OTSV .GLOBL F.DSPT,F.FNB,FPUICT,.PPASC ; MINIT NBOF$L ;DEFINE FNB OFFSETS ; DSDEV =0 ;DISP OF DEVICE IN DSD DSDIR =4 ;DISP OF DIRECTORY IN DSD DSFIL =10 ;DISP OF FILE NAME IN DSD D.FDB =14 ;DISP OF FDB PAST FFDB ; SUBR FFNAM,3 MOV @(R5)+,R2 ;GET LUN # PUSH R2 ;SAVE LUN MOV @#$OTSV,R3 ;OTS IMPURE PTR JSR PC,$FCHNL POP R3 ;GET LUN # ADD #D.FDB,R0 ;FDB ADR ADD #F.FNB,R0 ;FNB ADDR MOV R0,R4 ;USE R4 AS FNB PTR MOV (R5)+,R0 ;CIV PTR PUSH <(R5)+,R0> ;SAVE NC PTR AND CIV PTR MOVB N.DVNM(R4),(R0)+ ;1'ST CHAR OF DEV NAME MOVB N.DVNM+1(R4),(R0)+ ;2'ND CHAR MOV N.UNIT(R4),R1 ;GET DEV # CLR R2 ;SUPPR LEAD 0 FLAG JSR PC,$CBOMG ;CNVT DEV # TO ASCII MOVB #':,(R0)+ ;DEV TERM CHAR ADD R3,R3 ;COMPUTE OFFSET FROM LUN MOV FPUICT-2(R3),R3 ;GET UIC BEQ FF20 ;NO UIC MOV R0,R2 ;ADDR FOR DIRECTORY STRING PUSH R4 ;SAVE CLR R4 ;SUPPR LEADING ZEROES JSR PC,.PPASC ;CNVRT TO ASCII MOV R2,R0 ;UPDATE OUTPUT PTR POP R4 ;RESTORE FF20: MOV #3,R3 ;LOOP THROUGH N.FNAM MOV R4,R5 ;COMPUTE FNAM ADDR ADD #N.FNAM,R5 ;DONE FF50: MOV (R5)+,R1 ;GET RAD50 NAME JSR PC,$C5TA ;CNV WORD TO ASCII SOB R3,FF50 MOVB #'.,(R0)+ ;PUT '.' AFTER FILE NAME MOV (R5)+,R1 ;RAD50 FILE TYPE JSR PC,$C5TA ;CNVRT TO ASCII MOV N.FVER(R4),R1 ;GET VERSION # BEQ FF60 ;DON'T BOTHER IF 0 MOVB #';,(R0)+ CLR R2 ;SUPPR LEAD ZEROS JSR PC,$CBOMG ;CNVRT VER # TO ASCII FF60: ; ;NOW STRIP IMBEDDED BLANKS POP R1 ;CIV START ADDR MOV R1,R2 ;COPY CIV ADDR MOV R1,R3 ;DITTO FF70: CMPB #' ,(R1) ;IS NEXT CHAR A BLANK? BEQ FF80 ;YES- IGNORE MOVB (R1),(R2)+ ;MOVE SIG CHAR FF80: INC R1 ;NEXT INPUT ADDR CMP R1,R0 ;AT END ADDR? BLO FF70 ;NO CLRB (R2)+ ;TERMINATE WITH 0 SUB R3,R2 ;COMPUTE NC MOV R2,@(SP)+ ;RETURN NC RTN .END