.TITLE MTM .IDENT /3APR78/ ; ; MTM WRITES THE VOLUME-LABELS OF ANY MOUNTED TAPES TO TI: ; .MCALL QIO$S,WTSE$S,EXIT$S,DCBDF$,UCBDF$,MTADF$ DCBDF$ UCBDF$ MTADF$ ; MTM:: MOV @#$DEVHD,R1 ;POINT TO FIRST DCB BEQ 20$ ;IF 0, PRINT NODCB MSG AND EXIT 10$: CMP D.NAM(R1),MT ;DOES GENERIC NAME MATCH MT? BEQ 30$ ;YES, BRANCH TO CONTINUE CMP D.NAM(R1),MM ;DOES GENERIC NAME MATCH MM? BEQ 30$ ;YES, BRANCH TO CONTINUE MOV @R1,R1 ;NO, GO ON TO NEXT DCB BNE 10$ ;NOT 0, BRANCH TO CONTINUE SEARCH 20$: QIO$S #IO.WVB,#6,#1,,,,<#NODCB,#30.> ;WRITE NODCB MSG WTSE$S #1 BR 60$ ;AND EXIT 30$: MOVB D.UNIT(R1),R2 ;GET LOWEST UNIT # MOV D.UCB(R1),R3 ;GET UCB @ 40$: MOV U.VCB(R3),R4 ;GET VSCB @ BEQ 50$ ;IF IT'S 0, NO TAPE IS MOUNTED INC FLAG ;FLAG AT LEAST ONE TAPE MOUNTED MOV V.UVL(R4),R4 ;GET UNMOUNTED VOLUMN LIST MOV D.NAM(R1),MOU+2 ;PUT GENERIC NAME IN MOU MSG MOVB UNIT(R2),MOU+4 ;PUT UNIT # IN MOU MSG MOV L.VID1(R4),MOU+6 ;PUT VOLID IN MOU MSG MOV L.VID1+2(R4),MOU+8. MOV L.VID1+4(R4),MOU+10. QIO$S #IO.WVB,#6,#1,,,,<#MOU,#14.> ;WRITE MOU MSG WTSE$S #1 50$: ADD D.UCBL(R1),R3 ;INCREMENT UCB @ INC R2 ;INCREMENT UNIT # CMPB R2,D.UNIT+1(R1) ;MORE UNITS TO GO? BLOS 40$ ;YES, BRANCH TST FLAG ;WERE ANY TAPES MOUNTED BNE 60$ ;YES, EXIT QIO$S #IO.WVB,#6,#1,,,,<#NOTM,#20.> ;NO, PRINT NOTM MSG WTSE$S #1 60$: EXIT$S ;NO, STOP ; FLAG: .WORD 0 MT: .ASCII /MT/ MM: .ASCII /MM/ UNIT: .ASCII /01234567/ MOU: .BYTE 15,12 .ASCII / : / NOTM: .BYTE 15,12 .ASCII /NO TAPES MOUNTED/ NODCB: .BYTE 15,12 .ASCII /NO DCB EXISTS FOR MT OR MM/ .BYTE 15,12 .END MTM