CVL - CHANGE VOLUME LABEL MACRO M1110 15-MAR-78 16:33 PAGE 3 1 .MACRO MSGN$S PFX,SEV,MSG,REP,LEN,ERR 2 JSR R5,$MSGEN ;GO TO MESSAGE GEN ROUTINE 3 .IIF B .WORD 0 ;NO PREFIX 4 .IIF NB .WORD PFX ;A(MESSAGE PREFIX) 5 .IIF B .WORD 0 ;SEVERITY LEVEL 0 6 .IF NB 7 .IF GT SEV-3 8 .ERROR SEV ;SEVERITY LEVEL TOO BIG 9 .ENDC ;.IF GT SEV0-3 10 .IF LT SEV 11 .ERROR SEV ;SEVERITY LEVEL NEGATIVE 12 .ENDC ;.IF LT SEV 13 .WORD SEV ;SEVERITY LEVEL 14 .ENDC ;.IF NB 15 .IIF B .WORD 0 ;NO MESSAGE TEXT 16 .IIF NB .WORD MSG ;A(MESSAGE TEXT) 17 .IIF B .WORD 0,0 ;NO REPLY 18 .IF NB 19 .IF B 20 .ERROR ;REPLY LENGTH NOT SPECIFIED 21 .ENDC ;.IF B 22 .WORD REP ;A(REPLY BUFFER) 23 .WORD LEN ;REPLY LENGTH 24 .ENDC ;.IF NB 25 .IIF NB .MCALL ERR$ 26 .IIF NB ERR$ ERR 27 .ENDM CVL - CHANGE VOLUME LABEL MACRO M1110 15-MAR-78 16:33 PAGE 4 1 .TITLE CVL - CHANGE VOLUME LABEL 2 .IDENT /01.00/ 3 .LIST MEB 4 ; 5 ; AUTHOR: H. L. COLEMAN 6 ; MILLIKEN AND COMPANY 7 ; P. O. BOX 1926 8 ; MAIL STOP M-103 9 ; SPARTANBURG, S. C. 29304 10 ; (803)573-2556 11 ; 12 ; DATE: 24-JAN-78 13 ; 14 ; MODIFIED: 15 ; 16 ; FUNCTION: READ THE DISK LABEL BLOCK AND CHANGE THE LABEL TO THAT 17 ; SPECIFIED IN THE MCR COMMAND. IF NO MCR COMMMAND IS 18 ; AVAILABLE, THE OPERATOR IS PROMPTED FOR COMMANDS. 19 ; 20 ; INPUT: 21 ; 22 ; MCR COMMAND OF THE FORM: 23 ; 24 ; CVL DDU:LABEL 25 ; 26 ; OUTPUT: 27 ; 28 ; THE SPECIFIED DISK LABEL BLOCK IS MODIFIED. 29 ; CVL - CHANGE VOLUME LABEL MACRO M1110 15-MAR-78 16:33 PAGE 5 31 .MCALL QIOW$S,WSIG$S,GMCR$,EXIT$S,DIR$ 32 .MCALL MSGN$S 33 .MCALL ALUN$S 34 .MCALL TCBDF$,LCBDF$,DCBDF$,UCBDF$,HMBOF$ 35 000000 TCBDF$ <:>,<=> ;DEFINE TCB OFFSETS 36 000000 UCBDF$ <:>,<=> ;DEFINE UCB OFFSETS 37 000000 DCBDF$ <:>,<=> ;DEFINE DCB OFFSETS 38 000000 LCBDF$ <:>,<=> ;DEFINE LCB OFFSETS 39 000000 HMBOF$ ;DEFINE HOME BLOCK OFFSETS 40 000000 .PSECT CVL CVL - CHANGE VOLUME LABEL MACRO M1110 15-MAR-78 16:33 PAGE 6 42 ; MESSAGES - ERROR AND OTHERWISE 43 ; 44 ; ALL MESSAGES PRINTED BY MSGTRP UTILITY ROUTINE 45 ; 46 000000 005 PFX: .BYTE PRMT-PFX-1 ;MESSAGE PREFIX 47 000001 103 126 114 .ASCII /CVL -/ 000004 040 055 48 000006 004 PRMT: .BYTE M001-PRMT-1 ;PROMPT PREFIX 49 000007 103 126 114 .ASCII /CVL>/ 000012 076 50 000013 023 M001: .BYTE M002-M001-1 51 000014 120 122 111 .ASCII /PRIVLEDGE VIOLATION/ 000017 126 114 105 000022 104 107 105 000025 040 126 111 000030 117 114 101 000033 124 111 117 000036 116 52 000037 014 M002: .BYTE M003-M002-1 53 000040 123 131 116 .ASCII /SYNTAX ERROR/ 000043 124 101 130 000046 040 105 122 000051 122 117 122 54 000054 016 M003: .BYTE M004-M003-1 55 000055 111 116 126 .ASCII /INVALID DEVICE/ 000060 101 114 111 000063 104 040 104 000066 105 126 111 000071 103 105 56 000073 022 M004: .BYTE M005-M004-1 57 000074 104 105 126 .ASCII /DEVICE NOT MOUNTED/ 000077 111 103 105 000102 040 116 117 000105 124 040 115 000110 117 125 116 000113 124 105 104 58 000116 037 M005: .BYTE M006-M005-1 59 000117 110 105 101 .ASCII /HEADER BLOCK READ ERROR / 000122 104 105 122 000125 040 102 114 000130 117 103 113 000133 040 122 105 000136 101 104 040 000141 105 122 122 000144 117 122 040 60 000147 040 040 040 HBREC: .ASCII / / 000152 040 040 040 000155 040 61 000156 040 M006: .BYTE M007-M006-1 62 000157 110 105 101 .ASCII /HEADER BLOCK WRITE ERROR / 000162 104 105 122 000165 040 102 114 000170 117 103 113 000173 040 127 122 000176 111 124 105 000201 040 105 122 000204 122 117 122 CVL - CHANGE VOLUME LABEL MACRO M1110 15-MAR-78 16:33 PAGE 6-1 000207 040 63 000210 040 040 040 HBWEC: .ASCII / / 000213 040 040 040 000216 040 64 000217 065 M007: .BYTE M008-M007-1 65 000220 126 117 114 .ASCII /VOLUME NAME CHANGED FROM / 000223 125 115 105 000226 040 116 101 000231 115 105 040 000234 103 110 101 000237 116 107 105 000242 104 040 106 000245 122 117 115 000250 040 66 000251 040 040 040 OLDLBL: .ASCII / / 000254 040 040 040 000257 040 040 040 000262 040 040 040 67 000265 040 124 117 .ASCII / TO / 000270 040 68 000271 040 040 040 NEWLBL: .ASCII / / 000274 040 040 040 000277 040 040 040 000302 040 040 040 69 000305 000 M008: .BYTE 0 70 .EVEN CVL - CHANGE VOLUME LABEL MACRO M1110 15-MAR-78 16:33 PAGE 7 72 ; CONSTANTS AND WORK AREAS. 73 ; 74 000306 MCRLIN: GMCR$ ;MCR COMMAND BUFFER 000306 177 051 .BYTE 127.,41. 75 000430 000000 .WORD 0 ;BUFFER PAD 76 000432 040 040 DEV: .ASCII / / ;DEVICE NAME 77 000434 000000 UNIT: .WORD 0 ;UNIT NUMBER 78 000436 000000 000000 IOSB: .WORD 0,0 ;IOSB FOR DISK I/O 79 000442 000000 PRFLG: .WORD 0 ;PROMPT MODE FLAG 80 000444 000000 000000 LBN: .WORD 0,0 ;DISK LOGICAL BLOCK NUMBER 81 000450 HDRBUF: .BLKW 256. ;DISK HEADER BUFFER CVL - CHANGE VOLUME LABEL MACRO M1110 15-MAR-78 16:33 PAGE 8 83 001450 016701 000000G CVL:: MOV $TKTCB,R1 ;R1 = A(MY TCB) 84 001454 016100 000026 MOV T.UCB(R1),R0 ;R0 = A(TI: UCB) 85 001460 032760 000010 000012 BIT #U2.PRV,U.CW2(R0) ;IS USER PRIVLEDGED? 86 001466 001015 BNE 1100$ ;IF NE, YES - CONTINUE 87 001470 MSGN$S PFX,3,M001,,,ABORT ;PRIVLEDGE VIOLATION! 001470 004567 000000G JSR R5,$MSGEN ;GO TO MESSAGE GEN ROUTINE 001474 000000' .IIF NB .WORD PFX ;A(MESSAGE PREFIX) 001476 000003 .WORD 3 ;SEVERITY LEVEL 001500 000013' .IIF NB .WORD M001 ;A(MESSAGE TEXT) 001502 000000 000000 .IIF B <> .WORD 0,0 ;NO REPLY 001506 103002 BCC .+6 001510 004767 001210 JSR PC,ABORT 88 001514 1000$: EXIT$S ;EXIT 001514 012746 MOV (PC)+,-(SP) 001516 063 001 .BYTE 51.,1 001520 104377 EMT ^O<377> 89 001522 1100$: DIR$ #MCRLIN ;GET MCR COMMAND LINE 001522 012746 000306' MOV #MCRLIN,-(SP) 001526 104377 EMT ^O<377> 90 001530 103035 BCC 1300$ ;IF CC, GOT ONE - GO PROCESS IT 91 001532 012767 000001 176702 1200$: MOV #1,PRFLG ;INDICATE PROMPT MODE 92 001540 012767 053103 176542 MOV #"CV,MCRLIN+2 ;MAKE IT LOOK LIKE MCR COMMAND 93 001546 012767 020114 176536 MOV #"L ,MCRLIN+4 94 001554 MSGN$S PRMT,0,,MCRLIN+6,74.,ABORT ;PROMPT 001554 004567 000000G JSR R5,$MSGEN ;GO TO MESSAGE GEN ROUTINE 001560 000006' .IIF NB .WORD PRMT ;A(MESSAGE PREFIX) 001562 000000 .WORD 0 ;SEVERITY LEVEL 001564 000000 .IIF B <> .WORD 0 ;NO MESSAGE TEXT 001566 000314' .WORD MCRLIN+6 ;A(REPLY BUFFER) 001570 000112 .WORD 74. ;REPLY LENGTH 001572 103002 BCC .+6 001574 004767 001124 JSR PC,ABORT 95 001600 122767 000000G 000000G CMPB #IE.EOF,$TIOSB ;CTRL/Z? 96 001606 001742 BEQ 1000$ ;IF EQ, YES - EXIT 97 001610 016700 000002G MOV $TIOSB+2,R0 ;GET LENGTH READ 98 001614 001746 BEQ 1200$ ;IF EQ, NO DATA READ - PROMPT AGAIN 99 001616 062700 000314' ADD #MCRLIN+6,R0 ;R0 = A(EOL) 100 001622 105010 CLRB (R0) ;TERMINATE INPUT LINE 101 001624 012701 000310' 1300$: MOV #MCRLIN+2,R1 ;R1 = A(COMMAND) 102 001630 005067 176610 CLR LBN ;SET BEGINNING LBN 103 001634 012767 000001 176604 MOV #1,LBN+2 104 001642 012704 000305' MOV #NEWLBL+12.,R4 ;R4 = A(END OF NEW NAME FIELD) 105 001646 012700 000014 MOV #12.,R0 ;R0 = COUNT 106 001652 105044 1350$: CLRB -(R4) ;CLEAR AREA 107 001654 SOB R0,1350$ ;LOOP UNTIL DONE 001654 005300 DEC R0 001656 001375 BNE 1350$ 108 ;R4 = A(NEW NAME AREA) 109 001660 005003 CLR R3 ;R3 = 0 110 001662 1400$: CALL GETNXT ;GET NEXT CHARACTER IN BUFFER 001662 004767 001040 JSR PC,GETNXT 111 001666 103412 BCS 1600$ ;IF CS, EOL - SYNTAX ERROR 112 001670 102374 BVC 1400$ ;IF VC, NO BLANK SEEN - KEEP LOOKING 113 001672 010102 MOV R1,R2 ;R2 = A(NEXT CHARACTER) 114 001674 005302 DEC R2 ;R2 = A(DEVICE SPECIFIER) 115 001676 122700 000072 1500$: CMPB #':,R0 ;COLON? 116 001702 001017 BNE 1700$ ;IF NE, NO - CHECK FURTHER CVL - CHANGE VOLUME LABEL MACRO M1110 15-MAR-78 16:33 PAGE 8-1 117 001704 005703 TST R3 ;COLON ALREADY SEEN? 118 001706 001002 BNE 1600$ ;IF NE, YES - SYNTAX ERROR 119 001710 010103 MOV R1,R3 ;R3 = A(LABEL FIELD) 120 001712 000421 BR 1800$ ;KEEP SCANNING 121 001714 1600$: MSGN$S PFX,3,M002,,,ABORT ;SYNTAX ERROR 001714 004567 000000G JSR R5,$MSGEN ;GO TO MESSAGE GEN ROUTINE 001720 000000' .IIF NB .WORD PFX ;A(MESSAGE PREFIX) 001722 000003 .WORD 3 ;SEVERITY LEVEL 001724 000037' .IIF NB .WORD M002 ;A(MESSAGE TEXT) 001726 000000 000000 .IIF B <> .WORD 0,0 ;NO REPLY 001732 103002 BCC .+6 001734 004767 000764 JSR PC,ABORT 122 001740 000674 BR 1200$ ;FORCE PROMPT MODE 123 001742 005703 1700$: TST R3 ;COLON ALREADY SEEN? 124 001744 001404 BEQ 1800$ ;IF EQ, NO - KEEP SCANNING 125 001746 020427 000305' CMP R4,#NEWLBL+12. ;LABEL TOO LONG? 126 001752 103360 BHIS 1600$ ;IF LOS, YES - SYNTAX ERROR 127 001754 110024 MOVB R0,(R4)+ ;PUT CHARACTER IN LABEL AREA 128 001756 1800$: CALL GETNXT ;GET NEXT CHARACTER FROM BUFFER 001756 004767 000744 JSR PC,GETNXT 129 001762 103345 BCC 1500$ ;IF CC, GOT ONE - KEEP SCANNING 130 001764 010200 MOV R2,R0 ;R0 = A(DEVICE SPECIFIER) 131 001766 012703 000432' MOV #DEV,R3 ;R3 = A(DEVICE ID BUFFER) 132 001772 CALL $FDLOG ;PARSE DEVICE (MCR PARSER) 001772 004767 000000G JSR PC,$FDLOG 133 001776 103015 BCC 2000$ ;IF CC, DEVICE OK SO FAR 134 002000 005703 TST R3 ;WHAT TYPE OF ERROR WAS IT 135 002002 001744 BEQ 1600$ ;IF EQ, SYNTAX ERROR 136 002004 1900$: MSGN$S PFX,3,M003,,,ABORT ;INVALID DEVICE 002004 004567 000000G JSR R5,$MSGEN ;GO TO MESSAGE GEN ROUTINE 002010 000000' .IIF NB .WORD PFX ;A(MESSAGE PREFIX) 002012 000003 .WORD 3 ;SEVERITY LEVEL 002014 000054' .IIF NB .WORD M003 ;A(MESSAGE TEXT) 002016 000000 000000 .IIF B <> .WORD 0,0 ;NO REPLY 002022 103002 BCC .+6 002024 004767 000674 JSR PC,ABORT 137 002030 000640 BR 1200$ ;FORCE PROMPT MODE 138 002032 2000$: CALL $SWSTK,2040$ ;SWITCH TO SYSTEM STACK 002032 104376 EMT 376 002034 002056' .WORD 2040$ 139 002036 016101 000002 2020$: MOV U.RED(R1),R1 ;FOLLOW REDIRECT CHAIN 140 002042 026101 000002 CMP U.RED(R1),R1 ;END OF CHAIN? 141 002046 001373 BNE 2020$ ;IF NE, NO - KEEP LOOKING 142 002050 010166 000004 MOV R1,4(SP) ;SET R1 IN SAVED R1 ON STACK 143 002054 RETURN ;RETURN TO USER STATE 002054 000207 RTS PC 144 002056 032761 040000 000010 2040$: BIT #DV.F11,U.CW1(R1) ;FILES 11 DEVICE? 145 002064 001747 BEQ 1900$ ;IF EQ, NO - INVALID DEVICE 146 002066 132761 000100 000005 BITB #US.MNT,U.STS(R1) ;IS IT MOUNTED? 147 002074 001413 BEQ 2100$ ;IF EQ, YES - ALL OK 148 002076 MSGN$S PFX,3,M004,,,ABORT ;DEVICE NOT MOUNTED 002076 004567 000000G JSR R5,$MSGEN ;GO TO MESSAGE GEN ROUTINE 002102 000000' .IIF NB .WORD PFX ;A(MESSAGE PREFIX) 002104 000003 .WORD 3 ;SEVERITY LEVEL 002106 000073' .IIF NB .WORD M004 ;A(MESSAGE TEXT) 002110 000000 000000 .IIF B <> .WORD 0,0 ;NO REPLY 002114 103002 BCC .+6 CVL - CHANGE VOLUME LABEL MACRO M1110 15-MAR-78 16:33 PAGE 8-2 002116 004767 000602 JSR PC,ABORT 149 002122 000603 2080$: BR 1200$ ;FORCE PROMPT MODE 150 002124 2100$: ALUN$S #2,DEV,UNIT ;ASSIGN LUN 2 TO DEVICE 002124 016746 176304 MOV UNIT,-(SP) 002130 016746 176276 MOV DEV,-(SP) 002134 012746 000002 MOV #2,-(SP) 002140 012746 MOV (PC)+,-(SP) 002142 007 004 .BYTE 7,4 002144 104377 EMT ^O<377> 151 002146 103002 BCC 2200$ ;IF CC, LUN ASSIGNED 152 002150 CALL ABORT ;ABORT TASK 002150 004767 000550 JSR PC,ABORT 153 002154 2200$: QIOW$S #IO.RLB,#2,#1,,#IOSB,,<#HDRBUF,#512.,,LBN,LBN+2> 002154 005046 CLR -(SP) 002156 016746 176264 MOV LBN+2,-(SP) 002162 016746 176256 MOV LBN,-(SP) 002166 005046 CLR -(SP) 002170 012746 001000 MOV #512.,-(SP) 002174 012746 000450' MOV #HDRBUF,-(SP) 002200 005046 CLR -(SP) 002202 012746 000436' MOV #IOSB,-(SP) 002206 005046 CLR -(SP) 002210 112716 000001 MOVB #1,(SP) 002214 012746 000002 MOV #2,-(SP) 002220 012746 000000G MOV #IO.RLB,-(SP) 002224 012746 MOV (PC)+,-(SP) 002226 003 014 .BYTE 3,12. 002230 104377 EMT ^O<377> 154 002232 103012 BCC 2400$ ;IF CC, NO DIRECTIVE ERROR - CHECK I/O 155 002234 022767 000000G 000000G CMP #IE.UPN,$DSW ;INSUFFICIENT DYNAMIC MEMORY? 156 002242 001402 BEQ 2300$ ;IF EQ, YES - TRY AGAIN 157 002244 CALL ABORT ;ABORT TASK 002244 004767 000454 JSR PC,ABORT 158 002250 2300$: WSIG$S ;GIVE SYSTEM A CHANCE TO FREESOME DSR 002250 012746 MOV (PC)+,-(SP) 002252 061 001 .BYTE 49.,1 002254 104377 EMT ^O<377> 159 002256 000736 BR 2200$ ;TRY AGAIN 160 002260 122767 000000G 176150 2400$: CMPB #IS.SUC,IOSB ;READ SUCESSFULL? 161 002266 001422 BEQ 2500$ ;IF EQ, YES - GO CHANGE LABEL 162 002270 012700 000147' MOV #HBREC,R0 ;R0 = A(ERROR CODE FIELD) 163 002274 016701 176136 MOV IOSB,R1 ;R1 = ERROR CODE 164 002300 010002 MOV R0,R2 ;NO ZERO SUPRESSION 165 002302 CALL $CBOMG ;INSERT ERROR CODE IN MESSAGE 002302 004767 000000G JSR PC,$CBOMG 166 002306 MSGN$S PFX,3,M005,,,ABORT ;HEADER BLOCK READ ERROR 002306 004567 000000G JSR R5,$MSGEN ;GO TO MESSAGE GEN ROUTINE 002312 000000' .IIF NB .WORD PFX ;A(MESSAGE PREFIX) 002314 000003 .WORD 3 ;SEVERITY LEVEL 002316 000116' .IIF NB .WORD M005 ;A(MESSAGE TEXT) 002320 000000 000000 .IIF B <> .WORD 0,0 ;NO REPLY 002324 103002 BCC .+6 002326 004767 000372 JSR PC,ABORT 167 002332 000673 BR 2080$ ;FORCE PROMPT MODE 168 002334 012700 000450' 2500$: MOV #HDRBUF,R0 ;R0 = A(HEADER BUFFER) 169 002340 012701 000035 MOV #H.CHK1/2,R1 ;R1 = COUNT OF WORDS TO CHECKSUM 170 002344 CALL CHKSUM ;COMPUTE CHECKSUM CVL - CHANGE VOLUME LABEL MACRO M1110 15-MAR-78 16:33 PAGE 8-3 002344 004767 000450 JSR PC,CHKSUM 171 002350 020110 CMP R1,(R0) ;DOES IT MATCH HOME BLOCK? 172 002352 001010 BNE 2520$ ;IF NE, NO - MUST NOT BE HOME BLOCK 173 002354 012700 000450' MOV #HDRBUF,R0 ;R0 = A(HOME BLOCK) 174 002360 012701 000377 MOV #H.CHK2/2,R1 ;R1 = COUNT OF WORDS TO CHECKSUM 175 002364 CALL CHKSUM ;COMPUTE CHECKSUM 002364 004767 000430 JSR PC,CHKSUM 176 002370 020110 CMP R1,(R0) ;DOES IT MATCH HOME BLOCK? 177 002372 001411 BEQ 2540$ ;IF EQ, YES - THIS MUST BE HOME BLOCK 178 002374 042767 000377 176044 2520$: BIC #377,LBN+2 ;MAKE MULTIPLE OF 256. 179 002402 062767 000400 176036 ADD #256.,LBN+2 ;BUMP TO NEXT MULTIPLE OF 256. 180 002410 005567 176030 ADC LBN ;DOUBLE PRECISION 181 002414 000657 BR 2200$ ;TRY AGAIN 182 002416 012700 000466' 2540$: MOV #HDRBUF+H.VNAM,R0 ;R0 = A(VOLUME NAME) 183 002422 012701 000271' MOV #NEWLBL,R1 ;R1 = A(NEW NAME) 184 002426 012702 000251' MOV #OLDLBL,R2 ;R2 = A(OLD NAME FIELD) 185 002432 012703 000014 MOV #12.,R3 ;R3 = COUNT 186 002436 111022 2600$: MOVB (R0),(R2)+ ;COPY OLD NAME 187 002440 112120 MOVB (R1)+,(R0)+ ;INSERT NEW NAME 188 002442 SOB R3,2600$ ;LOOP UNTIL DONE 002442 005303 DEC R3 002444 001374 BNE 2600$ 189 002446 012700 000450' MOV #HDRBUF,R0 ;R0 = A(HOME BLOCK) 190 002452 012701 000035 MOV #H.CHK1/2,R1 ;R1 = COUNT OF WORDS TO CHECKSUM 191 002456 CALL CHKSUM ;COMPUTE CHECKSUM 002456 004767 000336 JSR PC,CHKSUM 192 002462 010110 MOV R1,(R0) ;SET NEW CHECKSUM 193 002464 012700 000450' MOV #HDRBUF,R0 ;R0 = A(HOME BLOCK) 194 002470 012701 000377 MOV #H.CHK2/2,R1 ;R1 = COUNT OF WORDS TO CHECKSUM 195 002474 CALL CHKSUM ;COMPUTE CHECKSUM 002474 004767 000320 JSR PC,CHKSUM 196 002500 010110 MOV R1,(R0) ;SET NEW CHECKSUM 197 002502 2700$: QIOW$S #IO.WLB,#2,#1,,#IOSB,,<#HDRBUF,#512.,,LBN,LBN+2> 002502 005046 CLR -(SP) 002504 016746 175736 MOV LBN+2,-(SP) 002510 016746 175730 MOV LBN,-(SP) 002514 005046 CLR -(SP) 002516 012746 001000 MOV #512.,-(SP) 002522 012746 000450' MOV #HDRBUF,-(SP) 002526 005046 CLR -(SP) 002530 012746 000436' MOV #IOSB,-(SP) 002534 005046 CLR -(SP) 002536 112716 000001 MOVB #1,(SP) 002542 012746 000002 MOV #2,-(SP) 002546 012746 000000G MOV #IO.WLB,-(SP) 002552 012746 MOV (PC)+,-(SP) 002554 003 014 .BYTE 3,12. 002556 104377 EMT ^O<377> 198 002560 103012 BCC 2900$ ;IF CC, NO DIRECTIVE ERROR 199 002562 022767 000000G 000000G CMP #IE.UPN,$DSW ;INSUFFICIENT DYNAMIC MEMORY? 200 002570 001402 BEQ 2800$ ;IF EQ, YES - TRY AGAIN 201 002572 CALL ABORT ;ABORT TASK 002572 004767 000126 JSR PC,ABORT 202 002576 2800$: WSIG$S ;GIVE SYSTEM A CHANCE TO FREE SOME DSR 002576 012746 MOV (PC)+,-(SP) 002600 061 001 .BYTE 49.,1 002602 104377 EMT ^O<377> CVL - CHANGE VOLUME LABEL MACRO M1110 15-MAR-78 16:33 PAGE 8-4 203 002604 000736 BR 2700$ ;GO TRY AGAIN 204 002606 122767 000000G 175622 2900$: CMPB #IS.SUC,IOSB ;WRITE SUCESSFULL? 205 002614 001423 BEQ 3000$ ;IF EQ, YES - GO SEE IF MORE TO DO 206 002616 012700 000210' MOV #HBWEC,R0 ;R0 = A(ERROR CODE FIELD) 207 002622 016701 175610 MOV IOSB,R1 ;R1 = ERROR CODE 208 002626 010002 MOV R0,R2 ;NO ZERO SUPRESSION 209 002630 CALL $CBOMG ;INSERT ERROR CODE 002630 004767 000000G JSR PC,$CBOMG 210 002634 MSGN$S PFX,3,M006,,,ABORT ;HEADER BLOCK WRITE ERROR 002634 004567 000000G JSR R5,$MSGEN ;GO TO MESSAGE GEN ROUTINE 002640 000000' .IIF NB .WORD PFX ;A(MESSAGE PREFIX) 002642 000003 .WORD 3 ;SEVERITY LEVEL 002644 000156' .IIF NB .WORD M006 ;A(MESSAGE TEXT) 002646 000000 000000 .IIF B <> .WORD 0,0 ;NO REPLY 002652 103002 BCC .+6 002654 004767 000044 JSR PC,ABORT 211 002660 000167 176646 2950$: JMP 1200$ ;FORCE PROMPT MODE 212 002664 3000$: MSGN$S PFX,0,M007,,,ABORT ;VOLUME NAME CHANGED FROM - TO 002664 004567 000000G JSR R5,$MSGEN ;GO TO MESSAGE GEN ROUTINE 002670 000000' .IIF NB .WORD PFX ;A(MESSAGE PREFIX) 002672 000000 .WORD 0 ;SEVERITY LEVEL 002674 000217' .IIF NB .WORD M007 ;A(MESSAGE TEXT) 002676 000000 000000 .IIF B <> .WORD 0,0 ;NO REPLY 002702 103002 BCC .+6 002704 004767 000014 JSR PC,ABORT 213 002710 005767 175526 TST PRFLG ;PROMPT MODE? 214 002714 001361 BNE 2950$ ;IF NE, YES - GO PROMPT AGAIN 215 002716 EXIT$S ;EXIT 002716 012746 MOV (PC)+,-(SP) 002720 063 001 .BYTE 51.,1 002722 104377 EMT ^O<377> 216 002724 000000 ABORT: HALT ;ABORT TASK CVL - CHANGE VOLUME LABEL MACRO M1110 15-MAR-78 16:33 PAGE 9 218 ; GETNXT 219 ; 220 ; FUNCTION: SUBROUTINE TO GET NEXT NON-BLANK CHARACTER FROM THE 221 ; MCR COMMAND BUFFER. 222 ; 223 ; INPUT: 224 ; 225 ; R1 = A(NEXT CHARACTER TO SCAN) 226 ; 227 ; OUTPUT: 228 ; 229 ; R0 = NEXT NON-BLANK CHARACTER 230 ; R1 = A(NEXT CHARACTER TO SCAN) 231 ; CC - R0 CONTAINS CHARACTER 232 ; CS - END OF LINE REACHED 233 ; VC - NO BLANKS SKIPPED 234 ; VS - AT LEAST ONE BLANK SKIPPED 235 ; 236 002726 005046 GETNXT: CLR -(SP) ;CLEAR BLANK COUNT 237 002730 112100 1000$: MOVB (R1)+,R0 ;R0 = NEXT CHARACTER 238 002732 001425 BEQ 1300$ ;IF EQ, EOL - GO SET CARRY 239 002734 122700 000040 CMPB #' ,R0 ;IS IT A BLANK? 240 002740 001002 BNE 1100$ ;IF NE, NO - CHECK FURTHER 241 002742 005216 INC (SP) ;BUMP BLANK COUNT 242 002744 000771 BR 1000$ ;GO GET NEXT CHARACTER 243 002746 122700 000015 1100$: CMPB #15,R0 ;CARRIAGE RETURN? 244 002752 001415 BEQ 1300$ ;IF EQ, YES - GO SET CARRY 245 002754 122700 000033 CMPB #33,R0 ;ESCAPE? 246 002760 001412 BEQ 1300$ ;IF EQ, YES - GO SET CARRY 247 002762 122700 000040 CMPB #' ,R0 ;LEGAL CHARACTER? 248 002766 101360 BHI 1000$ ;IF HI, NO - GO GET ANOTHER ONE 249 002770 122700 000172 CMPB #172,R0 ;LEGAL CHARACTER? 250 002774 103755 BLO 1000$ ;IF LO, NO - GO GET ANOTHER ONE 251 002776 005726 1200$: TST (SP)+ ;DID WE SEE A BLANK 252 003000 001401 BEQ 1250$ ;IF EQ, NO - LEAVE VC 253 003002 000262 SEV ;SET OVERFLOW 254 003004 000207 1250$: RTS PC ;RETURN TO CALLER 255 003006 005726 1300$: TST (SP)+ ;DID WE SEE ANY BLANKS? 256 003010 001401 BEQ 1400$ ;IF EQ, NO - LEAVE VC 257 003012 000262 SEV ;SET OVERFLOW 258 003014 000261 1400$: SEC ;SET CARRY 259 003016 000207 RTS PC ;RETURN TO CALLER CVL - CHANGE VOLUME LABEL MACRO M1110 15-MAR-78 16:33 PAGE 10 261 ; CHKSUM 262 ; 263 ; FUNCTION: SUBROUTINE TO FORM A CHECKSUM OF A VARIABLE NUMBER OF 264 ; WORDS. THE CHECKSUM IS COMPATIABLE WITH THAT USED IN 265 ; FILES 11 HOME BLOCKS. 266 ; 267 ; INPUT: 268 ; 269 ; R0 = A(AREA TO CHECKSUM) 270 ; 271 ; R1 = COUNT OF WORDS TO CHECKSUM 272 ; 273 ; OUTPUT: 274 ; 275 ; R0 = A(NEXT WORD AFTER AREA CHECKSUMMED) 276 ; 277 ; R1 = COMPUTED CHECKSUM 278 ; 279 003020 005046 CHKSUM: CLR -(SP) ;INITILIZE CHECKSUM 280 003022 062016 1000$: ADD (R0)+,(SP) ;ADD NEXT WORD 281 003024 SOB R1,1000$ ;LOOP UNTIL DONE 003024 005301 DEC R1 003026 001375 BNE 1000$ 282 003030 012601 MOV (SP)+,R1 ;R1 = COMPUTED CHECKSUM 283 003032 RETURN ;RETURN TO CALLER 003032 000207 RTS PC 284 001450' .END CVL CVL - CHANGE VOLUME LABEL MACRO M1110 15-MAR-78 16:33 PAGE 10-1 SYMBOL TABLE ABORT 002724R 002 H.INDO= 000744 M003 000054R 002 T.RCVL 000012 G US.PWF= 000010 G A$$CHK= 000000 H.LRUC= 000056 M004 000073R 002 T.RRFL 000064 G US.RED= 000002 G A$$CPS= 000000 H.SBCL= 000010 M005 000116R 002 T.SRCT 000063 G US.SHR= 000001 G CHKSUM 003020R 002 H.VCHA= 000042 M006 000156R 002 T.STAT 000032 G US.SPU= 000002 G CVL 001450RG 002 H.VDAT= 000074 M007 000217R 002 T.ST2 000034 G US.UMD= 000010 G C$$CKP= 000000 H.VFSQ= 000046 M008 000305R 002 T.ST3 000036 G US.WCK= 000010 G C$$ORE= 001000 H.VLEV= 000014 NEWLBL 000271R 002 T.TCBL 000030 G U.ACP = 000032 G DEV 000432R 002 H.VNAM= 000016 N$$LDV= 000001 T.UCB 000026 G U.ATT 000022 G DV.CCL= 000002 G H.VOWN= 000036 OLDLBL 000251R 002 T2.ABO= 000100 G U.BUF 000024 G DV.COM= 020000 G H.VPRO= 000040 PFX 000000R 002 T2.AST= 100000 G U.CBF = 000032 G DV.DIR= 000010 G H.WISZ= 000054 PRFLG 000442R 002 T2.BFX= 004000 G U.CNT 000030 G DV.F11= 040000 G IE.EOF= ****** GX PRMT 000006R 002 T2.CAF= 000400 G U.CTL 000004 G DV.ISP= 002000 G IE.UPN= ****** GX P$$P11= 000001 T2.CHK= 020000 G U.CW1 000010 G DV.MNT= 100000 G IOSB 000436R 002 P$$P45= 000000 T2.CKD= 010000 G U.CW2 000012 G DV.MXD= 000100 G IO.RLB= ****** GX P$$R11= 000001 T2.DST= 040000 G U.CW3 000014 G DV.OSP= 004000 G IO.WLB= ****** GX R$$JPO= 000000 T2.FXD= 002000 G U.CW4 000016 G DV.PSE= 010000 G IS.SUC= ****** GX R$$JP1= 000001 T2.HLT= 000200 G U.DCB 000000 G DV.REC= 000001 G I$$RAR= 000000 R$$K11= 000001 T2.SPN= 000004 G U.LUIC 177774 G DV.SDI= 000020 G I$$RDN= 000000 R$$L11= 000001 T2.STP= 000020 G U.OWN 177776 G DV.SQD= 000040 G K$$CNT= 177546 R$$MOF= 000000 T2.TIO= 001000 G U.RED 000002 G DV.SWL= 001000 G K$$CSR= 177546 R$$M11= 000001 T2.WFR= 000001 G U.SCB 000020 G DV.TTY= 000004 G K$$IEN= 000115 R$$P11= 000001 T3.ACP= 100000 G U.STS 000005 G DV.UMD= 000200 G K$$LDC= 000001 R$$X11= 000001 T3.CAL= 000100 G U.ST2 000007 G D$$ISK= 000000 K$$TPS= 000074 R$$11M= 000000 T3.CLI= 001000 G U.UIC = 000052 G D$$L11= 000001 LBN 000444R 002 R$$6OF= 000000 T3.MCR= 004000 G U.UNIT 000006 G D.DSP 000012 G LD$CT = 000000 R$$611= 000001 T3.NET= 000020 G U.VCB = 000034 G D.LNK 000000 G LD$DB = 000000 S$$YSZ= 001400 T3.NSD= 000200 G U2.AT.= 000020 G D.MSK 000014 G LD$DK = 000000 TS.BLK= 170700 G T3.PMD= 040000 G U2.CRT= 002000 G D.NAM 000004 G LD$DL = 000000 TS.CKP= 000200 G T3.PRV= 010000 G U2.DH1= 100000 G D.PCB 000034 G LD$DM = 000000 TS.CKR= 000100 G T3.REM= 020000 G U2.DJ1= 040000 G D.UCB 000002 G LD$DP = 000000 TS.EXE= 100000 G T3.ROV= 000040 G U2.DZ1= 000100 G D.UCBL 000010 G LD$DR = 000000 TS.MSG= 020000 G T3.RST= 000400 G U2.ESC= 001000 G D.UNIT 000006 G LD$DT = 000000 TS.NRP= 010000 G T3.SLV= 002000 G U2.HLD= 000040 G D.VCAN= 000002 G LD$DX = 000000 TS.OUT= 000400 G UC.ALG= 000200 G U2.LOG= 000400 G D.VINI= 000000 G LD$LP = 000000 TS.RDN= 040000 G UC.ATT= 000010 G U2.LWC= 000001 G D.VOUT= 000004 G LD$MM = 000000 TS.RUN= 004000 G UC.KIL= 000004 G U2.L3S= 000004 G D.VPWF= 000006 G LD$MT = 000000 T$$A11= 000001 UC.LGH= 000003 G U2.L8S= 010000 G F$$LVL= 000001 LD$PP = 000000 T$$C11= 000001 UC.NPR= 000100 G U2.NEC= 004000 G GETNXT 002726R 002 LD$PR = 000000 T$$J16= 000001 UC.PWF= 000020 G U2.PRV= 000010 G G$$TPP= 000000 L$$ASG= 000000 T$$KMG= 000000 UC.QUE= 000040 G U2.RMT= 020000 G G$$TTK= 000000 L$$DRV= 000000 T$$MIN= 000000 UNIT 000434R 002 U2.R04= 100000 G G.MCRB= 000002 L$$P11= 000001 T$$M11= 000001 US.ABO= 000001 G U2.SLV= 000200 G HBREC 000147R 002 L.ASG 000010 G T.ACTL 000052 G US.BSP= 000002 G U2.VT5= 000002 G HBWEC 000210R 002 L.LGTH= 000012 G T.ASTL 000016 G US.BSY= 000200 G U2.7CH= 010000 G HDRBUF 000450R 002 L.LNK 000000 G T.ATT 000054 G US.CRW= 000004 G V$$CTR= 000400 H$$RTZ= 000074 L.NAM 000002 G T.CPCB 000004 G US.DSB= 000010 G $CBOMG= ****** GX H.CHK1= 000072 L.TYPE 000005 G T.DPRI 000040 G US.ECH= 000002 G $DSW = ****** GX H.CHK2= 000776 L.UCB 000006 G T.EFLG 000022 G US.FOR= 000040 G $FDLOG= ****** GX H.DFPR= 000044 L.UNIT 000004 G T.IOC 000003 G US.FRK= 000002 G $MSGEN= ****** GX H.DVTY= 000012 MCRLIN 000306R 002 T.LBN 000041 G US.LAB= 000004 G $TIOSB= ****** GX H.FIEX= 000055 M$$CRB= 000124 T.LDV 000044 G US.MDE= 000002 G $TKTCB= ****** GX H.FMAX= 000006 M$$CRX= 000000 T.LNK 000000 G US.MDM= 000020 G $$$ARG= 000002 H.FPRO= 000044 M$$FCS= 000000 T.MXSZ 000050 G US.MNT= 000100 G $$$OST= 000122 H.IBLB= 000002 M$$MGE= 000000 T.NAM 000006 G US.OFL= 000001 G $$$T1 = 000067 H.IBSZ= 000000 M$$OVR= 000000 T.OFF 000060 G US.OUT= 000001 G ...GBL= 000000 H.INDF= 000760 M001 000013R 002 T.PCB 000046 G US.PUB= 000004 G ...TPC= 001000 H.INDN= 000730 M002 000037R 002 T.PRI 000002 G CVL - CHANGE VOLUME LABEL MACRO M1110 15-MAR-78 16:33 PAGE 10-2 SYMBOL TABLE . ABS. 177776 000 000000 001 CVL 003034 002 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 5195 WORDS ( 21 PAGES) DYNAMIC MEMORY: 5836 WORDS ( 22 PAGES) ELAPSED TIME: 00:00:24 CVL,[202,34]CVL/CR/-SP=[1,1]EXEMC/ML,[200,200]RSXMC/PA:1,[202,1]MSGN,CVL CVL CREATED BY MACRO ON 15-MAR-78 AT 16:33 PAGE 1 SYMBOL CROSS REFERENCE CREF V01 SYMBOL VALUE REFERENCES ABORT 002724 R 8-87 8-87 8-94 8-94 8-121 8-121 8-136 8-136 8-148 8-148 8-152 8-157 8-166 8-166 8-201 8-210 8-210 8-212 8-212 #8-216 CHKSUM 003020 R 8-170 8-175 8-191 8-195 #10-279 CVL 001450 RG #8-83 10-284 DEV 000432 R #7-76 8-131 8-150 DV.F11 = 040000 8-144 GETNXT 002726 R 8-110 8-128 #9-236 G.MCRB = 000002 7-74 HBREC 000147 R #6-60 8-162 HBWEC 000210 R #6-63 8-206 HDRBUF 000450 R #7-81 8-153 8-168 8-173 8-182 8-189 8-193 8-197 H.CHK1 = 000072 8-169 8-190 H.CHK2 = 000776 8-174 8-194 H.VNAM = 000016 8-182 IE.EOF = ****** GX 8-95 IE.UPN = ****** GX 8-155 8-199 IOSB 000436 R #7-78 8-153 8-160 8-163 8-197 8-204 8-207 IO.RLB = ****** GX 8-153 IO.WLB = ****** GX 8-197 IS.SUC = ****** GX 8-160 8-204 LBN 000444 R #7-80 *8-102 *8-103 8-153 8-153 *8-178 *8-179 *8-180 8-197 8-197 MCRLIN 000306 R #7-74 8-89 *8-92 *8-93 8-94 8-99 8-101 M001 000013 R 6-48 #6-50 6-50 8-87 M002 000037 R 6-50 #6-52 6-52 8-121 M003 000054 R 6-52 #6-54 6-54 8-136 M004 000073 R 6-54 #6-56 6-56 8-148 M005 000116 R 6-56 #6-58 6-58 8-166 M006 000156 R 6-58 #6-61 6-61 8-210 M007 000217 R 6-61 #6-64 6-64 8-212 M008 000305 R 6-64 #6-69 NEWLBL 000271 R #6-68 8-104 8-125 8-183 OLDLBL 000251 R #6-66 8-184 PFX 000000 R #6-46 6-46 8-87 8-121 8-136 8-148 8-166 8-210 8-212 PRFLG 000442 R #7-79 *8-91 8-213 PRMT 000006 R 6-46 #6-48 6-48 8-94 T.UCB 000026 8-84 UNIT 000434 R #7-77 8-150 US.MNT = 000100 8-146 U.CW1 000010 8-144 U.CW2 000012 8-85 U.RED 000002 8-139 8-140 U.STS 000005 8-146 U2.PRV = 000010 8-85 $CBOMG = ****** GX 8-165 8-209 $DSW = ****** GX 8-155 8-199 $FDLOG = ****** GX 8-132 $MSGEN = ****** GX 8-87 8-94 8-121 8-136 8-148 8-166 8-210 8-212 $TIOSB = ****** GX 8-95 8-97 $TKTCB = ****** GX 8-83 $$$ARG = 000002 #8-153 8-153 #8-153 8-153 #8-153 8-153 #8-153 8-153 #8-153 CVL CREATED BY MACRO ON 15-MAR-78 AT 16:33 PAGE 2 SYMBOL CROSS REFERENCE CREF V01 SYMBOL VALUE REFERENCES 8-153 #8-153 8-153 8-153 #8-153 8-153 8-153 8-153 8-153 8-153 8-153 8-153 8-153 8-153 8-153 #8-153 8-153 8-153 8-153 8-153 8-153 8-153 8-153 8-153 8-153 8-153 #8-153 8-153 8-153 8-153 8-153 8-153 8-153 8-153 8-153 8-153 8-153 #8-197 8-197 #8-197 8-197 #8-197 8-197 #8-197 8-197 #8-197 8-197 #8-197 8-197 8-197 #8-197 8-197 8-197 8-197 8-197 8-197 8-197 8-197 8-197 8-197 8-197 #8-197 8-197 8-197 8-197 8-197 8-197 8-197 8-197 8-197 8-197 8-197 #8-197 8-197 8-197 8-197 8-197 8-197 8-197 8-197 8-197 8-197 8-197 $$$GLB = ****** 7-74 $$$T1 = 000067 #8-87 8-87 8-87 8-87 #8-94 8-94 8-94 8-94 #8-121 8-121 8-121 8-121 #8-136 8-136 8-136 8-136 #8-148 8-148 8-148 8-148 #8-166 8-166 8-166 8-166 #8-210 8-210 8-210 8-210 #8-212 8-212 8-212 8-212 CVL CREATED BY MACRO ON 15-MAR-78 AT 16:33 PAGE 3 MACRO CROSS REFERENCE CREF V01 MACRO NAME REFERENCES ALUN$S #5-33 8-150 CALL #8-87 #8-94 #8-110 #8-121 #8-128 #8-132 #8-136 #8-138 #8-148 #8-152 #8-157 #8-165 #8-166 #8-170 #8-175 #8-191 #8-195 #8-201 #8-209 #8-210 #8-212 DCBDF$ #5-34 #5-37 DIR$ #5-31 #8-88 #8-88 #8-89 #8-150 #8-150 #8-153 #8-153 #8-158 #8-158 #8-197 #8-197 #8-202 #8-202 #8-215 #8-215 ERR$ #8-87 8-87 #8-94 8-94 #8-121 8-121 #8-136 8-136 #8-148 8-148 #8-166 8-166 #8-210 8-210 #8-212 8-212 EXIT$S #5-31 8-88 8-215 GMCR$ #5-31 7-74 HMBOF$ #5-34 5-39 LCBDF$ #5-34 5-38 MOV$ #8-150 8-150 8-150 8-150 #8-153 8-153 8-153 8-153 8-153 8-153 #8-153 8-153 8-153 #8-153 8-153 8-153 #8-197 8-197 8-197 8-197 8-197 8-197 #8-197 8-197 8-197 #8-197 8-197 8-197 MSGN$S #3-1 #5-32 8-87 8-94 8-121 8-136 8-148 8-166 8-210 8-212 MVB$ #8-153 #8-153 #8-197 #8-197 OFF$ #7-74 QDPB$S #8-153 #8-153 #8-197 #8-197 QIOW$S #5-31 #8-153 #8-197 RETURN #8-143 #10-283 RVP$ #8-153 8-153 8-153 8-153 #8-197 8-197 8-197 8-197 SOB #8-107 #8-188 #10-281 TCBDF$ #5-34 #5-35 UCBDF$ #5-34 5-36 WSIG$S #5-31 #8-158 #8-202