perm filename SAIMTP.FAI[X,AIL] blob
sn#136785 filedate 1974-12-20 generic text, type T, neo UTF8
COMPIL(MTP,<MTAPE,USETI,USETO,RENAME,ERENAME>
,<SAVE,RESTR,GETCHN,SIMIO,FILNAM,X22,X33,X44>
,<MTAPE, USETI, USETO, RENAME ROUTINES>)
.MTP:
HERE (MTAPE)
PUSHJ P,SAVE
MOVE LPSA,X33
MOVE CHNL,-2(P) ;CHANNEL NUMBER
LOADI7 A,<MTAPE>
PUSHJ P,GETCHN
LDB C,[POINT 5,-1(P),35] ;PART OF COMMAND CHAR
EXPO <
MOVEI B,101
CAIN C,11 ;MTAPE "I" DOES SPECIAL THINGS.
JRST MTAPQ ;GO SET IBM COMPABILITY MODE
>;EXPO
MOVEI B,0
JUMPE C,MTAPQ ;THIS IS DEFINITELY NOT A NO-OP
MOVE A,OPTAB ;COMMAND BITS
MOVE B,OPTAB+1 ;MORE
TRZE C,30 ;COMPRESS TABLE
ADDI C,5
LSH C,2 ;EACH COMMAND IS 4 BITS
ROTC A,(C) ;GET RIGHT COMMAND
ANDI B,17 ;DO IF SYSTEM DOESN'T
JUMPE B,[ERR <MTAPE: ILLEGAL CODE>,1
JRST RESTR]
MTAPQ: HRLI B,(<MTAPE>) ;CREATE MTAPE OPERATION
DPB CHNL,[POINT 4,B,12]
XCT B ;YES, DO IT
JRST RESTR
OPTAB: BYTE (4) 16,17,0,0,3,6,7,13,10 ;A,B,,,E,F,R,S,T
BYTE (4) 11,0,1 ;U,,W
HERE (USETI)
↑↑.USETI:
SKIPA LPSA,[XCT IOSETI,SIMIO] ;USETI
HERE (USETO)
↑↑.USETO:
MOVE LPSA,[XCT IOSETO,SIMIO] ;USETO
PUSHJ P,SAVE
MOVE CHNL,-2(P)
LOADI7 A,<USET>
PUSHJ P,GETCHN
MOVE A,-1(P) ;VALUE TO USETO
MOVE LPSA+1,[JRST .+2] ;BE ABLE TO GET BACK
JRST LPSA ;GO TO USETI/O
MOVE LPSA,X33
JRST RESTR
HERE (RENAME)
↑↑.RENAME:
PUSHJ P,SAVE
SETZM @-1(P)
MOVE LPSA,X44
LOADI7 A,<RENAME>
MOVE CHNL,-3(P)
PUSHJ P,GETCHN
PUSHJ P,FILNAM ;PARSE FILENAME SPEC
JRST BDSPC ;SPECIFICATION NO GOOD
MOVE TEMP,-2(P)
TDZE TEMP,[XWD 777777,777000] ;MAKE THIS RENAME STERILE
ERR <ATTEMPT TO SET MODE OR DATE VIA RENAME.
USE ERENAME INSTEAD>,1
ROT TEMP,-=9
.RENIT: MOVEM TEMP,FNAME+2(USER)
XCT IORENAME,SIMIO ;DO THE RENAME
JRST RNERR ;NO GOOD
JRST RESTR
BDSPC: HRRZ TEMP,ERRTST(CDB) ;SEE IF
TRNE TEMP,10000 ;WILLING TO HANDLE ERROR
ERR <RENAME: INVALID FILE SPECIFICATION>,1 ;NO, TELL HIM
SKIPA TEMP,[=8] ;ALWAYS REPORT CODE
RNERR: HRRZ TEMP,FNAME+1(USER) ;RETURN HORSESHIT NUMBER
HRROM TEMP,@-1(P) ;TO THE USER
JRST RESTR
HEREFK(ERENAME,ERENA.)
PUSHJ P,SAVE
SETZM @-1(P)
MOVE LPSA,[XWD 7,7];
LOADI7 A,<ERENAME> ;
MOVE CHNL,-6(P);
PUSHJ P,GETCHN
PUSHJ P,FILNAM ;PARSE ID SPEC;
JRST BDSPC ;LOST
SKIPN TEMP,-4(P) ;DATE
JRST EREN.1 ;NO DATE
LDB C,[POINT 3,TEMP,=23] ;PICK UP HIGH ORDER BITS
DPB C,[POINT 3,FNAME+1(USER),=20] ;PUT THEM AWAY
EREN.1: MOVE C,-5(P) ;PROT
DPB C,[POINT =9,TEMP,=8] ;PUT AWAY
MOVE C,-2(P) ;MODE
DPB C,[POINT 4,TEMP,=12] ;PUT AWAY
MOVE C,-3(P) ;TIME
DPB C,[POINT =11,TEMP,=23] ;PUT AWAY
JRST .RENIT
ENDCOM(MTP)