.NLIST TTM,SYM .TITLE RENAME FILES FROM FORTRAN .GLOBL RENAME,$FCHNL,$OTSV .PSECT RENAME .MCALL FDBDF$,FDOP$R,NMBLK$,CALL ;INITIALIZE THE DSDR RENAME: MOV #DEV,R0 ;GET THE FIRST ADDRESS MOV #6,R1 ;SET THE NUMBER OF WORDS IN DSDR DSLUP: CLR (R0)+ ;CLEAR THE NEXT WORD SOB R1,DSLUP ;KEEP AT IT UNTIL YOU'RE DONE ; ;GET THE PARAMETER(S) ; MOV (R5)+,R1 ;GET ARG COUNT BIC #177400,R1 ;CHOP OUT BR PART MOV @(R5)+,LUN ;SAVE LUN FOR LATER MOV (R5)+,R0 ;GET THE FIRST ADDRESS CMP R1,#2 ;HOW MANY ARGS? BEQ DEFARG ;IF ONLY ONE, USE DEFAULT MOV @(R5)+,R1 ;GET SECOND ARG (BYTE COUNT) BNE OKARG ;IF IT IS ZERO, USE THE DEFAULT ANYWAY DEFARG: MOV #30.,R1 ;DEFAULT IS 30 DECIMAL BYTES OKARG: CLR R2 ;CLEAR COUNT MOV R0,R3 ;SAVE CURRENT POINTER TO STRING NEXTC: MOVB (R0)+,R4 ;GET NEXT CHAR BEQ FNAME ;PROCESS ANME ON LAST CHAR = 0 INC R2 ; COUNT UP LOCAL NUMBER OF CHARS DEC R1 ; COUNT DOWN TOTAL NUMBER OF CHARS BEQ FNAME ;PROCESS ANME ON LAST CHAR CMPB R4,#': ;WAS THIS THED DEVICE? BEQ FDEV ;YES CMPB R4,#'] ;WAS IT THE UIC? BNE NEXTC ;NOPE, KEEP LOOKING FUIC: MOV R2,UIC MOV R3,UIC+2 BR OKARG ;GO GET THE NAME FDEV: MOV R2,DEV ;GET NUMBER IF CHARS IN DEV MOV R3,DEV+2 ;STORE ADDRESS OF DEV BR OKARG ;GO LOOK FOR UIC OR FILE NAME FNAME: MOV R2,NAME ;STORE CHAR COUNT OF ANME MOV R3,NAME+2 ;STORE ADDRESS OF ANME FDOP$R #NEWFIL,LUN,#DEV,#DEFAU ;INITIALIZE THE FDB ; ;GET THE FDB ADDRESS OF THE OPENED FILE ; MOV LUN,R2 ;GET LUN MOV @#$OTSV,R3 ;GET WORK AREA ADDRESS JSR PC,$FCHNL ;FIND FDB ADDRESS ADD #14,R0 ;CONVERT TO RSX FDB ADDRESS MOV #NEWFIL,R1 ;PUT NEW FILE NAME FDB IN R1 CALL .RENAM ;ZAP! RENAME THE FILE, AND CLOSE IT AND REASSIGN I BCS ERR ; WOOOPS!! MOV R0,R1 SUB #14,R1 ;GET FORTRAN FDB ADDRESS BACK MOV #66,R0 LUP: CLR (R1)+ SOB R0,LUP INC R0 ;RETURN +1 FOR SUCC RTS PC ERR: MOVB F.ERR(R0),R0 ;RETURN FCS ERROR CODE RTS PC DEV: .BLKW 2 UIC: .BLKW 2 NAME: .BLKW 2 DEFAU: NMBLK$ DEFAULT FORFDB: .BLKW 7 ;MAKE ROOM FOR FORTRAN JUST IN CASE NEWFIL: FDBDF$ LUN: .BLKW 1 .END