.TITLE MVOL .IDENT /17NOV6/ ; ; MVOL MOUNTED VOLUMES DISPLAY FOR STATUS ; ; AUTHOR: M. KELLOGG ; SYSTEM: RSX-11D ; DATE: 17-NOV-76 ; ; THIS SUBROUINE DISPLAYS MOUNTED VOLUMES ON THE TEC SCOPE. ; ; DISPLAY FORMAT: ; ; 5 VOLUMES PER LINE ARE DISPLAYED, USING AS MANY LINES AS NECESSARY ; TO DISPLAY ALL MOUNTABLE DEVICES. A DISPLAY ITEM HAS THE FORM ; ; DDU:LABEL ; ; DD DEVICE NAME ; U UNIT NUMBER ; LABEL VOLUME LABEL, OR ONE OF THE FOLLOWING: ; : VOLUME LABEL IS NULL ; BLANK: NO VOLUME MOUNTED ; **FOR**: VOLUME MOUNTED FOREIGN ; **MTA**: LABELED MAGTAPE MOUNTED ; IF A DISMOUNT IS PENDING, THE LABEL BLINKS. ; ; INPUTS: ; ; R0 LINE NUMBER OF START OF DISPLAY ; ; OUTPUTS: ; ; R0 NUMBER OF NEXT FREE LINE ; ; NO REGISTERS PRESERVED ; .MCALL F11DF$,DIR$,CALLR R$$11D=0 F11DF$ ; FOR: .ASCII /**FOR** / MTA: .ASCII /**MTA** / NULL: .ASCII // BLANK: .ASCII / / .EVEN MVOL:: MOVB #177,CURCH ;SET CHAR POSITION MOVB #177,CURLIN ;SET LINE POSITION BICB R0,CURLIN DIR$ #SETCUR ;SET CURSOR CALL INLINE ;INITIALIZE FIRST LINE MOV .PUDBA,R1 ;INITIALIZE PUD SEARCH ; ; PROCESS A PUD ENTRY ; DOENT: CMP U.RP(R1),R1 ;IS ENTRY REDIRECTED? BNE EDONE ;YES - SKIP IT BIT #UC.MNT,U.C1(R1) ;IS DEVICE MOUNTABLE? BEQ EDONE ;NO - SKIP IT MOVB U.DN(R1),(R5)+ ;PUT DEV NAME IN BUFFER MOVB U.DN+1(R1),(R5)+ MOVB U.UN(R1),R2 ;GET UNIT NUMBER ADD #60,R2 ;CONVERT TO ASCII MOVB R2,(R5)+ ;PUT IN BUFFER MOVB #':,(R5)+ ;PUT COLON IN BUFFER BIT #CH.UNL,U.CH(R1) ;DISMOUNT PENDING? BEQ 10$ ;NO MOVB #33,(R5)+ ;SET UP BLINK SEQUENCE MOVB #'B,(R5)+ 10$: MOV #BLANK,R2 ;ASSUME NO VOL MOUNTED BIT #CH.OFF,U.CH(R1) ;CHECK FOR MOUNTED BNE 20$ ;NO MOV #FOR,R2 ;ASSUME FOREIGN BIT #CH.FOR,U.CH(R1) ;CHECK FOR FOREIGN BNE 20$ ;YES MOV #MTA,R2 ;ASSUME TAPE BIT #CH.LAB,U.CH(R1) ;CHECK FOR TAPE BNE 20$ ;YES MOV U.VA(R1),R2 ;POINT TO VCB ADD #V.LABL,R2 ;POINT TO VOLUME LABEL TSTB (R2) ;NULL LABEL? BNE 20$ ;NO MOV #NULL,R2 ;POINT TO 'NULL' STRING 20$: MOV #12.,R3 ;DO 12 CHARS 30$: MOVB (R2)+,(R5)+ ;MOVE A LABEL CHAR BNE 40$ ;NOT A NULL MOVB #40,-1(R5) ;NULL TO BLANK 40$: SOB R3,30$ BIT #CH.UNL,U.CH(R1) ;DISMOUNT PENDING? BEQ 50$ ;NO MOVB #33,(R5)+ ;SET UP END BLINK SEQUENCE MOVB #'S,(R5)+ 50$: DEC R4 ;COUNT ITEM BNE 60$ ;LINE NOT DONE CALL DOLINE ;OUTPUT LINE 60$: EDONE: ADD #U.SZ,R1 ;GO TO NEXT PUD ENTRY CMP R1,.PUDEA ;DONE ALL YET? BLO DOENT ;NO CALLR DOLINE ;OUTPUT LAST LINE ; ; OUTPUT A LINE ; DOLINE: SUB #BUFF,R5 ;GET COUNT OF CHARS IN LINE BEQ INLINE ;EMPTY LINE INC R0 ;COUNT LINE MOV R5,CHCNT ;SET CHAR COUNT DIR$ #LINOUT ;WRITE THE LINE ; ; INITIALIZE A LINE ; INLINE: MOV #5,R4 ;INITIALIZE ITEM COUNT MOV #BUFF,R5 ;INITIALIZE BUFFER POINTER RETURN .END