.TITLE SETDEF .IDENT /MRH001/ .SBTTL INTRODUCTION ;PROGRAM SUPPORTING MRMC VARIABLE DEFAULT DEVICE PACKAGE ; ;PURPOSE OF PROGRAM IS TO CHANGE THE 'DEFAULT DEVICE' OF THE ;TERMINAL RUNNING THE PROGRAM ; ;CALLING SEQUENCE (FOR EXAMPLE) ; ;MCR>SDV SM: ; ;WOULD CHANGE THE 'DEFAULT DEVICE PUD POINTER', (LOCATED IN LOCATION ;U.LBH OF THE PUD FOR THE TT IN QUESTION) TO POINT TO THE PUD FOR THE ;DEVICE NAMED IN THE COMMAND LINE ; ;DUE TO THE SIMPLICITY OF THE COMMAND, NO INDIRECT LEVELS ARE SUPPORTED ;AUTHOR F.BORGER ; DEPT. OF MEDICAL PHYSICS ; MICHAEL REESE MEDICAL CENTER ; MARCH, 1976 ; .PAGE .SBTTL DECODE DEVICE NAME .MCALL GMCR$,QIOW$,EXIT$,DIR$ START: DIR$ #GETMCR ;GETMCR COMMAND LINE MOV #GETMCR+G.MCRB,R0 ;START OF BUFFER -> R0 ADD #4,R0 ;BUMP PAST 'SDV ' CMPB (R0),#'A ;CHECK FOR ASCII CHARACTER BLT BADSYN ;WOOPS, SYNTAX ERROR CMPB (R0),#'Z ;I DON'T THINK I NEED TO COMMENT THIS !! BGT BADSYN CMPB 1(R0),#'A BLT BADSYN CMPB 1(R0),#'Z BGT BADSYN CMPB 2(R0),#15 ;TERMINATOR (IMPLYING DEVICE 0) ? BEQ 2$ ;BR IF YES CMPB 2(R0),#33 ;ALT MODE TERMINATOR (ALSO DEV ZERO) ? BEQ 2$ ;BR IF YES CMPB 2(R0),#': ;DEVICE NUMBER A ':' ? BNE 1$ ;BR IF NOT 2$: MOV #60,2(R0) ;IF SO CHANGE IT TO AN ASCII '0' 1$: CMPB 2(R0),#'0 ;CHECK (ASCII) DEVICE NUMBER BLT BADSYN CMPB 2(R0),#'7 BGT BADSYN FIND: BIC #60,2(R0) ;ASCII NUMBER OK, CHANGE IT TO OCTAL MOV .CRTSK,R1 ;MY ATL ADDRESS -> R1 MOV A.TI(R1),R1 ;GET MY TI PUD ADDRESS MOV .PUDBA,R2 ;SET UP TO SCAN PUD FOR NEW DEFAULT DEVICE CKPUD: CMP (R2),(R0) ;DO ASCII NAMES MATCH ? BNE NOMAT ;BR IF NOT CMPB 2(R2),2(R0) ;NAMES MATCH, HOW 'BOUT UNIT NUMBERS ? BNE NOMAT ;NO NO MATCH ;R2 NOW POINTS TO PUD OF DEVICE GUY AT TTY WANTS MOV R2,R5 ;PUD POINTER -> R5 10$: MOV R5,U.LBH(R1) ;CHANGE DEFAULT DEVICE PUD POINTER BR SCRAM ;AND SCRAM ; ; NOMAT: ADD #U.SZ,R2 ;BUMP PUD POINTER TO NEXT PUD CMP R2,.PUDEA ;ARE WE STILL IN THE PUD ? BHIS BAD ;NO, COULDN'T FIND DEVICE BR CKPUD ;YES, TRY FOR MATCH AGAIN .PAGE .SBTTL DECODE VOLUMN NAME BADSYN: MOV #NAMTAB,R4 ;GET NAME TABLE POINTER INTO R4 REGO: CLR R1 ;FOR CAT5 CALL $CAT5 ;CONVERT 1ST THREE CHARACTERS CMP R1,(R4) ;NAMES MATCH ? BNE NEXT ;BR IF NOT CMP R2,#15 ;TERMINATOR ? BEQ OK CMP R2,#33 ;OR ESC ? BEQ OK CLR R1 ;FOR CAT5 CALL $CAT5 ;CONVERT NEXT THREE CHARACTERS CMP R1,2(R4) ;NAMES MATCH ? BNE NEXT ;BR IF NOT CMP R2,#15 ;TERMINATOR ? BEQ OK CMP R2,#33 ;OR ESC ? BEQ OK CLR R1 ;FOR CAT5 CALL $CAT5 ;CONVERT 3RD THREE CHARACTERS CMP R1,4(R4) ;NAMES MATCH ? BNE NEXT ;BR IF NOT CMP R2,#15 ;TERMINATOR ? BEQ OK CMP R2,#33 ;OR ESC ? BEQ OK CLR R1 ;FOR CAT5 CALL $CAT5 ;CONVERT LAST THREE CHARACTERS CMP R1,6(R4) ;NAMES MATCH ? BEQ OK ;BR IF OK NEXT: ADD #14,R4 ;BUMP TO NEXT ENTRY MOV #GETMCR+G.MCRB+4,R0 ;RESET R0 TO START OF NAME TST (R4) ;END OF TABLE ? BEQ BAD ;BR IF SO BR REGO ;ELSE SEARCH AGAIN OK: MOV R4,R0 ;POINT TO NEW ASCII DEVICE STRING ADD #10,R0 JMP FIND ;AND FIND DEVICE PUD BAD: DIR$ #SYNBAD ;REPORT SYNTAX ERROR SCRAM: DIR$ #EXITPG ;EXIT, CPU LEFT ; ; .PAGE .SBTTL DIRECTIVES AND DATA ; ;DIRECTIVE TO GET MCR COMMAND LINE GETMCR: GMCR$ ;GET MCR, (INCLUDES BUFFER) ; ; ;DIRECTIVE TO REPORT BAD SYNTAX ; SYNBAD: QIOW$ IO.WVB,5,1,,IOST,, ; ;ERROR MESSAGE SYNMES: .ASCII <15>/***SDV ---SYNTAX ERROR/ SYNLEN=.-SYNMES .EVEN ; IOST: .WORD 0,0 ; ;EXIT DIRECTIVE EXITPG: EXIT$ ; ;TABLE OF VOLUME NAMES WITH EQUIVALENT DEVICES ; NAMTAB: .RAD50 /MRH/ .RAD50 /V62/ .WORD 0,0 .ASCII /DP1:/ .RAD50 /IAS/ .RAD50 /V31/ .WORD 0,0 .ASCII /DR0:/ .RAD50 /SYS/ .RAD50 /TWO/ .WORD 0,0 .ASCII /DR2:/ .RAD50 /IAS/ .RAD50 /UPD/ .WORD 0,0 .ASCII /DR1:/ .RAD50 /CAT/ .RAD50 /CHA/ .RAD50 /LL/ .WORD 0 .ASCII /DR3:/ .WORD 0 ;END OF TABLE INDICATOR .END START