Trailing-Edge
-
PDP-10 Archives
-
decuslib20-02
-
decus/20-0047/rename.mac
There are 4 other files named rename.mac in the archive. Click here to see a list.
TITLE RENAME
ENTRY RENAME
;THIS ROUTINE RENAMES AN EXISTING FILE 'OLDNAM.EXT' TO 'NEWNAM.EXT'.
;IF 'OLDNAM.EXT' DOESN'T EXIST RENAME HAS THE FUNCTIONAL VALUE .FALSE.
;OTHERWISE IT IS .TRUE. AND THE FILE IS RENAMED AND GIVEN PROTECTION
;<155>. THE CALL IS: VALUE = RENAME('NEWNA','M.EXT','OLDNA','M.EXT')
ANS=0 ;AC'S
BPT=1
CTR=2
TAC=3
BPT2=4
CNT=5
FIL=6
FEL=7
CHR=10
DOT=16 ;PERIOD
PROT=155 ;PROTECTION
D=12 ;CHANNEL
DEFINE TTYOUT (ADR)<TTCALL 3,ADR>
DEFINE TTYIN (ADR)<TTCALL 4,ADR>
RENAME: MOVSI 1,2
HRRI 1,ACSAV
BLT 1,ACSAV+15 ;SAVE AC'S
INIT D,17
SIXBIT/DSK/
0
JRST NOTAVL
SETZM ANS ;ASSUME IT'S NOT THERE
MOVE FIL,@2(16) ;GET OLDNAM.EXT
MOVE FEL,@3(16)
JSR NAME ;PACK FILENAME IN UFD BLOCK
LOOKUP D,UFD ;LOOKUP FILE
JRST BACK ;FILE NOT THERE...RETURN
CLOSE D,
SETOM ANS ;FILE THERE...RENAME IS .TRUE.
MOVE FIL,@(16) ;GET NEWNAM.EXT
MOVE FEL,@1(16)
JSR NAME ;STORE IT
MOVE TAC,[EXP<PROT>B8]
MOVEM TAC,UFD+2
RENAME D,UFD
JRST NOREN ;RENAME BOMBED FOR SOME REASON.
CLOSE D,
BACK: MOVSI 1,ACSAV
HRRI 1,2
BLT 1,17
POPJ 17, ;DONE
NAME: 0 ;ROUTINE TO UNPACK NAME.EXT
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 ;FILENAME
CLEARM UFD+1 ;EXT
CLEARM UFD+2 ;PROTECTION
CLEARM UFD+3
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 @NAME ;DONE, GO BACK
JRST GETNAM ;GET NEXT CHARACTER
EXT: MOVE BPT,[POINT 6,UFD+1]
MOVEI CTR,3 ;TO STORE THREE CHARS
JRST COUNT ;GO GET EXT
NOTAVL: TTYOUT [ASCIZ"DEVICE NOT AVAILABLE"]
CALLI 12
ACSAV: BLOCK 17
UFD: BLOCK 4
NOREN: HRRZ 1,UFD+1 ;PUT ERROR CODE IN AC 1
TTYOUT [ASCIZ"
? RENAME FAILED"]
EXIT ;AND DIE
END