Trailing-Edge
-
PDP-10 Archives
-
bb-x141b-bb
-
mount.lst
There are 2 other files named mount.lst in the archive. Click here to see a list.
RSXDC MACRO M1113 14-APR-81 09:21 PAGE 3
1 ; COPYRIGHT (C) 1975, 1978 BY
2 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
3 ;
4 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
5 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
6 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
7 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
8 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
9 ;
10 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
11 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
12 ; CORPORATION.
13 ;
14 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
15 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
MOUNT D0222, MOUNT VOLUME MACRO M1113 14-APR-81 09:21 PAGE 6
1 .TITLE MOUNT D0222, MOUNT VOLUME
.IDENT "D0222"
2
3 ; COPYRIGHT (C) 1974, 1978 BY
4 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
5 ;
6 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
7 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
8 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
9 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
10 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
11 ;
12 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
13 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
14 ; CORPORATION.
15 ;
16 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
17 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
18 ;
19 ;
20 ;
; VERSION D222, ASSEMBLED FOR RSX-11D
;
21
22 ; ANDREW C. GOLDSTEIN 11 DEC 74 14:34
23 ;
24 ; THIS ROUTINE MOUNTS A VOLUME FOR FILE PROCESSING.
25
26 .MCALL QIOW$,FHDOF$,HMBOF$
27 000000 FHDOF$ ; DEFINE FILE HEADER AND HOME BLOCK OFFSETS
28 000000 HMBOF$
29
30 ; MACRO TO CALL QIO SUBROUTINE
31
32 .MACRO QIO DPB
33 JSR R5,.MXQIO
34 .WORD DPB
35 .ENDM QIO
36
37 ; MACRO TO SIGNAL ERRORS
38
39 .MACRO ERROR CODE
40 .IF NB,CODE
41 MOV #CODE,.IOSTS+2
42 ERRX IE.ABO
43 .IFF
44 MOVB .QIOST,.IOSTS
45 ERRX
46 .ENDC
47 .ENDM ERROR
48
49 ; ERROR CODES RETURNED TO THE MOUNT TASK WITH AN "IE.ABO" ERROR.
50 ; THESE CODES INDEX INTO A TABLE AND THE VALUES ARE CRITICAL. SORRY.
51
52 000007 ME.SYN = 7. ; SYNTAX ERROR
53 000012 ME.NHM = 10. ; HOME BLOCK NOT FOUND
54 000013 ME.WRV = 11. ; WRONG VOLUME
MOUNT D0222, MOUNT VOLUME MACRO M1113 14-APR-81 09:21 PAGE 6-1
55
56 ; LOCALLY USED DPB'S
57
58 ; SET CHARACTERISTICS
59
60 000000 SETCHA: QIOW$ IO.STC,FCPLUN,QIOEFN,,.QIOST,,<0>
61
62 ; READ LOGICAL BLOCK
63
64 000016 RLB: QIOW$ IO.RLB,FCPLUN,QIOEFN,,.QIOST,,<.HDBUF,.VBSIZ,,0,0>
65 000040' LBNH= RLB+Q.IOPL+6 ; HIGH ORDER BLOCK NUMBER
66 000042' LBNL= RLB+Q.IOPL+10 ; LOW ORDER BLOCK NUMBER
67
68 ; BUFFER TO RECEIVE MOUNT COMMAND
69
70 001000 CMDBFL = 512. ; SIZE OF BUFFER
71
72 ; VALUES RETURNED FROM THE COMMAND STRING PARSER
73
74 000044 $VNML:: .BLKW 1 ; STRING DESCRIPTOR OF VOLUME LABEL
75 000046 $VNAM:: .BLKW 1 ; IN COMMAND STRING
76 000050 $UIC:: .BLKW 1 ; VOLUME OWNER
77 000052 $CHAR:: .BLKW 1 ; VOLUME CHARACTERISTICS
78 000054 $PRO:: .BLKW 1 ; VOLUME PROTECTION
79 000056 $EXT:: .BLKW 1 ; DEFAULT FILE EXTEND
80 000060 $FPRO:: .BLKW 1 ; DEFAULT FILE PROTECTION
81 000062 $WIN:: .BLKB 1 ; DEFAULT WINDOW SIZE
82 000063 $LRU:: .BLKB 1 ; MAX ENTRIES IN DIRECTORY LRU
83 000064 $FLAGS::.BLKW 1 ; FLAG WORD FROM PARSER
84
85 ; THE FOLLOWING FLAGS ARE RETURNED:
86
87 000001 MO.UIC==1 ; EXPLICIT UIC
88 000002 MO.CHA==2 ; EXPLICIT CHARACTERISTICS
89 000004 MO.PRO==4 ; EXPLICIT PROTECTION
90 000010 MO.UNL==10 ; UNLOCK INDEX FILE
91 000020 MO.EXT==20 ; DEFAULT FILE EXTEND SPECIFIED
92 000040 MO.FPR==40 ; DEFAULT FILE PROTECTION SPECIFIED
93 000100 MO.WIN==100 ; DEFAULT WINDOW SIZE SPECIFIED
94 000200 MO.OVR==200 ; OVERRIDE VOLUME LABEL CHECK
95 000400 MO.SWL==400 ; SOFTWARE WRITE LOCK
96 001000 MO.LRU==1000 ; DIRECTORY LRU LIMIT SPECIFIED
MOUNT D0222, MOUNT VOLUME MACRO M1113 14-APR-81 09:21 PAGE 7
98 ;+
99 ;
100 ; **.MOUNT - MOUNT VOLUME
101 ;
102 ; THIS ROUTINE ESTABLISHES THAT A VOLUME IS OF LEGAL FILES-11 FORMAT
103 ; AND CREATES THE IN CORE DATA STRUCTURES NEEDED FOR SUBSEQUENT
104 ; FILE OPERATIONS ON THAT VOLUME. IT FINDS THE VOLUME'S HOME BLOCK,
105 ; VERIFIES THE VOLUME LABEL, AND CONSTRUCTS THE VCB AND THE FCB AND
106 ; WINDOW FOR THE INDEX FILE. FINALLY OPTIONS AS SPECIFIED IN THE
107 ; COMMAND STRING ARE APPLIED TO THE VCB.
108 ;
109 ; INPUTS:
110 ;
111 ; R0=ADDRESS OF USER STRING POINTER
112 ; R2=BYTE COUNT OF COMMAND STRING
113 ; R5=ADDRESS OF MOUNT I/O PACKET
114 ;
115 ; OUTPUTS:
116 ;
117 ; R4=VCB ADDRESS
118 ; R5=I/O PACKET ADDRESS
119 ;
120 ; OTHER REGISTERS ARE CLOBBERED.
121 ;
122 ;-
123
124 000066 .MOUNT::
125 000066 005067 177772 CLR $FLAGS ; CLEAN OUT FLAGS WORD
126 000072 005067 000000G CLR .SMUCB ; INVALIDATE BIT MAP BUFFER
127 000076 010203 MOV R2,R3 ; SAVE STRING COUNT
128 000100 012701 000000G MOV #.SMBUF,R1 ; POINT TO COMMAND BUFFER
129 000104 010104 MOV R1,R4 ; SAVE STRING ADDRESS
130 000106 CALL .BLXI ; TRANSFER IN COMMAND STRING
131 000112 005001 CLR R1 ; SET SPACE FLUSH OPTION
132 000114 012702 000000G MOV #.MOKTB,R2 ; POINT TO KEYWORD TABLE
133 000120 012705 000000G MOV #.MOPRS,R5 ; POINT TO STARTING STATE
134 000124 CALL .TPARS ; AND PARSE THE COMMAND STRING
135 000130 103004 BCC 10$
136 000132 ERROR ME.SYN ; SYNTAX ERROR
000140 000C 211 TRAP -IE.ABO ;
137
138 000142 016704 000000G 10$: MOV .UCBAD,R4 ; GET PUD ADDRESS AGAIN
139 000146 005764 000000G TST U.VA(R4) ;VOLUME ALREADY MOUNTED?
140 000152 001404 BEQ 12$ ;NO -- CONTINUE
141 000154 ERROR 12.
000162 000C 211 TRAP -IE.ABO ;
142 000164 016705 000000G 12$: MOV .IOPKT,R5 ; AND I/O PACKET ADDRESS
143 000170 QIO SETCHA ; DO SET CHARACTERISTICS TO SET VOLUME VALID (ON RP04)
144 000176 103010 BCC 20$
145 000200 126727 000000G 000000G CMPB .QIOST,#IE.IFC ; CHECK FOR ILLEGAL FUNCTION
146 000206 001404 BEQ 20$ ; YES, IGNORE (MUST NOT BE AN RP04)
147 000210 ERROR ; SOME OTHER TYPE OF ERROR
000216 104400 TRAP 0 ;
148
149 ; FIRST SEARCH FOR THE HOME BLOCK
150
151 000220 012767 000001 177614 20$: MOV #1,LBNL ; SET UP FIRST CHOICE LOCATION
MOUNT D0222, MOUNT VOLUME MACRO M1113 14-APR-81 09:21 PAGE 7-1
152 000226 005067 177606 CLR LBNH ; I.E., LBN = 1
153 000232 30$: QIO RLB ; READ THE BLOCK
154 000240 103430 BCS 40$ ; CHECK ON I/O ERROR
155 000242 012701 000000G MOV #.HDBUF,R1 ; POINT TO BLOCK BUFFER
156 000246 012702 000034 MOV #H.CHK1/2-1,R2 ; GET WORD COUNT TO FIRST CHECKSUM
157 000252 CALL .CKSM1 ; CHECK THE CHECKSUM
158 000256 103431 BCS 50$ ; NO GOOD - PUNT THIS BLOCK
159 000260 012701 000000G MOV #.HDBUF,R1 ; POINT TO BUFFER AGAIN
160 000264 CALL .CKSUM ; COMPUTE SECOND CHECKSUM
161 000270 103424 BCS 50$ ; OUT ON ERROR
162 000272 005767 000000G TST .HDBUF+H.IBSZ ; CHECK INDEX FILE BITMAP SIZE
163 000276 001421 BEQ 50$ ; MUST BE NON-ZERO
164 000300 016700 000002G MOV .HDBUF+H.IBLB,R0 ; CHECK INDEX FILE BITMAP LBN
165 000304 056700 000004G BIS .HDBUF+H.IBLB+2,R0
166 000310 001414 BEQ 50$ ; MUST BE NON-ZERO
167 000312 005767 000006G TST .HDBUF+H.FMAX ; CHECK MAX NUMBER OF FILES
168 000316 001411 BEQ 50$ ; MUST BE NON-ZERO
169 000320 000441 BR HOMEBL ; YES - A REAL LIVE HOME BLOCK!
170
171 ; WE GET HERE ON ANY I/O ERROR READING THE HOME BLOCK
172
173 000322 126727 000000G 000000G 40$: CMPB .QIOST,#IE.VER ; TEST FOR PARITY ERROR
174 000330 001404 BEQ 50$
175 000332 ERROR ; GIVE UP ON ANYTHING ELSE
000340 104400 TRAP 0 ;
176
177 ; THIS BLOCK IS NOT A HOME BLOCK, EITHER BECAUSE IT HAS BAD PARITY
178 ; OR THE CHECKSUMS ARE NOT THERE.
179
180 000342 042767 000001 177472 50$: BIC #1,LBNL ; TRY THE NEXT BLOCK IN SEQUENCE
181 000350 062767 000400 177464 ADD #400,LBNL ; OF 1, 400, 1000, 1400, 2000, 2400 ....
182 000356 005567 177456 ADC LBNH
183 000362 026764 177452 000000G CMP LBNH,U.LBH(R4) ; CHECK LBN AGAINST VOLUME SIZE
184 000370 103720 BLO 30$ ; OK - TRY IT
185 000372 001404 BEQ 60$
186 000374 ERROR ME.NHM ; IF WE'RE OVER THERE IS NO HOME BLOCK
000402 000C 211 TRAP -IE.ABO ;
187 000404 026764 177432 000000G 60$: CMP LBNL,U.LBN(R4) ; CHECK LOW ORDER
188 000412 103707 BLO 30$
189 000414 ERROR ME.NHM ; OVER THE TOP - OUT
000422 000C 211 TRAP -IE.ABO ;
MOUNT D0222, MOUNT VOLUME MACRO M1113 14-APR-81 09:21 PAGE 8
191 ; WE HAVE FOUND THE HOME BLOCK. FILL IN THE RELEVANT INFORMATION IN THE
192 ; PUD FROM THE VOLUME.
193
194 000424 036727 177434 000200 HOMEBL: BIT $FLAGS,#MO.OVR ; CHECK FOR OVERRIDE BIT
195 000432 001034 BNE 50$ ; YES - SKIP LABEL CHECK
196 000434 016700 177406 MOV $VNAM,R0 ; POINT TO LABEL IN COMMAND LINE
197 000440 012702 000016G MOV #.HDBUF+H.VNAM,R2 ; POINT TO VOLUME LABEL IN HOME BLOCK
198 000444 016701 177374 MOV $VNML,R1 ; GET LENGTH OF VOL LABEL IN COMMAND LINE
199 000450 001417 BEQ 40$ ; SKIP CHECK IF NONE GIVEN
200 000452 122022 10$: CMPB (R0)+,(R2)+ ; COMPARE VOLUME LABELS
201 000454 001404 BEQ 20$
202 000456 ERROR ME.WRV ; OUT ON MISMATCH
000464 000C 211 TRAP -IE.ABO ;
203 000466 077107 20$: SOB R1,10$
204
205 000470 020227 000032G CMP R2,#.HDBUF+H.VNAM+12. ; SEE IF LABEL WAS 12 CHARS LONG
206 000474 101404 BLOS 30$
207 000476 ERROR ME.WRV ; OVER 12 - CAN'T BE RIGHT
000504 000C 211 TRAP -IE.ABO ;
208 000506 001406 30$: BEQ 50$ ; EQUAL - SKIP END CHECK
209 000510 105712 40$: TSTB (R2) ; CHECK NEXT BYTE IN HOME BLOCK
210 000512 001404 BEQ 50$
211 000514 ERROR ME.WRV ; NONZERO MEANS LABEL STRING WAS TOO SHORT
000522 000C 211 TRAP -IE.ABO ;
212
213 000524 005064 000000G 50$: CLR U.AR(R4) ; INIT VOLUME PROTECTION
214 000530 016764 000036G 000000G MOV .HDBUF+H.VOWN,U.UI(R4) ; VOLUME OWNER UIC
215 000536 001403 BEQ 60$ ; VOLUME IS UNOWNED
216 000540 016764 000040G 000000G MOV .HDBUF+H.VPRO,U.AR(R4) ; VOLUME PROTECTION
217 000546 116764 000042G 000000G 60$: MOVB .HDBUF+H.VCHA,U.CH(R4) ; VOLUME CHARACTERISTICS
218
219 000554 042764 000000G 000000G BIC #UC.SWL,U.C1(R4) ; CLEAR SOFTWARE WRITE LOCK BIT
220 000562 036727 177276 000400 BIT $FLAGS,#MO.SWL ; SEE IF WRITE LOCK IS REQUESTED
221 000570 001403 BEQ 70$ ; NO
222 000572 052764 000000G 000000G BIS #UC.SWL,U.C1(R4) ; YES - SET IT
223
224 ; NOW ALLOCATE A VCB, CHARGING IT TO THE FILES TASK.
225
226 000600 016702 000000G 70$: MOV .CRTSK,R2 ; GET OUR ATL ADDR
227 000604 016202 000000G MOV A.TD(R2),R2 ; GET STD ADDR
228 000610 012701 000056 MOV #V.LGTH,R1 ; GET LENGTH OF VCB
229 000614 CALL .ALLOC ; AND ALLOCATE IT
230 000620 010064 000000G MOV R0,U.VA(R4) ; PUT VCB POINTER IN PUD
231 000624 010004 MOV R0,R4 ; SET STANDARD VCB POINTER
232
233 ; FILL IN INFORMATION FROM THE VOLUME'S HOME BLOCK
234
235 000626 012701 000016G MOV #.HDBUF+H.VNAM,R1 ; POINT TO VOLUME NAME AGAIN
236 000632 062700 000040 ADD #V.LABL,R0 ; POINT TO LABEL SPACE IN VCB
237 000636 012702 000014 MOV #12.,R2 ; BYTE COUNT
238 000642 112120 80$: MOVB (R1)+,(R0)+ ; COPY VOLUME LABEL TO VCB
239 000644 077202 SOB R2,80$
240
241 000646 ASSUME V.IBSZ,V.IBLB+1
242 000646 ASSUME V.FMAX,V.IBLB+4
243 000646 ASSUME V.WISZ,V.FMAX+2
244 000646 ASSUME V.SBCL,V.WISZ+1
MOUNT D0222, MOUNT VOLUME MACRO M1113 14-APR-81 09:21 PAGE 8-1
245
246 000646 010400 MOV R4,R0 ; COPY VCB POINTER
247 000650 062700 000012 ADD #V.IBLB,R0 ; POINT INTO VCB
248 000654 116720 000002G MOVB .HDBUF+H.IBLB,(R0)+ ; STARTING LBN OF INDEX FILE BIT MAP, HIGH
249 000660 116720 000000G MOVB .HDBUF+H.IBSZ,(R0)+ ; NUMBER OF BLOCKS IN INDEX FILE BITMAP
250 000664 016720 000004G MOV .HDBUF+H.IBLB+2,(R0)+ ; LBN OF INDEX FILE BIT MAP, LOW ORDER
251 000670 016720 000006G MOV .HDBUF+H.FMAX,(R0)+ ; MAXIMUM NUMBER OF FILES ON VOLUME
252 000674 116710 000054G MOVB .HDBUF+H.WISZ,(R0) ; DEFAULT WINDOW SIZE
253 000700 001010 BNE 90$ ; BRANCH IF OK
254 000702 112710 000011 MOVB #9.,(R0) ; OLD VOLUME - USE DEFAULT
255 000706 112767 000005 000055G MOVB #.DFEXT,.HDBUF+H.FIEX ; STUFF VOLUME'S DEFAULT FILE EXTEND
256 000714 112767 164000 000044G MOVB #.DFPRO,.HDBUF+H.FPRO ; AND DEFAULT FILE PROTECTION
257 000722 036727 177136 000100 90$: BIT $FLAGS,#MO.WIN ; CHECK FOR EXPLICIT WINDOW SIZE
258 000730 001402 BEQ 100$ ; NO
259 000732 116710 177124 MOVB $WIN,(R0) ; YES - PUT IN VCB
260 000736 005200 100$: INC R0
261 000740 116720 000010G MOVB .HDBUF+H.SBCL,(R0)+ ; STORAGE BIT MAP CLUSTER FACTOR
262 000744 116764 000055G 000025 MOVB .HDBUF+H.FIEX,V.FIEX(R4) ; DEFAULT FILE EXTEND INCREMENT
263 000752 016764 000044G 000030 MOV .HDBUF+H.FPRO,V.FPRO(R4) ; DEFAULT FILE PROTECTION
264 000760 116764 000056G 000035 MOVB .HDBUF+H.LRUC,V.LRUC(R4) ; COUNT OF ENTRIES IN DIRECTORY LRU
265 000766 001003 BNE 110$
266 000770 112764 000003 000035 MOVB #3,V.LRUC(R4) ; DEFAULT OLD VOLUMES TO 3
267
268 ; NOW READ THE INDEX FILE HEADER AND "ACCESS" THE INDEX FILE, BUILDING
269 ; AN FCB AND WINDOW.
270
271 000776 116403 000013 110$: MOVB V.IBSZ(R4),R3 ; GET NUMBER OF BLOCKS IN INDEX FILE BITMAP
272 001002 005002 CLR R2
273 001004 156402 000012 BISB V.IBLB(R4),R2 ; ADD IN START OF BITMAP
274 001010 066403 000014 ADD V.IBLB+2(R4),R3
275 001014 005502 ADC R2 ; TO COMPUTE INDEX FILE HEADER LBN
276 001016 012700 000001 MOV #1,R0 ; SET FILE NUMBER = 1
277 001022 010067 000000G MOV R0,.FILNO
278 001026 010067 000000G MOV R0,.FILSQ
279 001032 CALL .RHDLB ; READ THE HEADER
280
281 001036 CALL .CRFCB ; GET AN FCB FOR INDEX FILE
282 001042 010067 000000G MOV R0,.FCBAD ; STORE FCB ADDRESS
283 001046 005000 CLR R0 ; INDICATE READ ACCESS
284 001050 CALL .INWIN ; AND SET UP A WINDOW
285 001054 016700 000000G MOV .FCBAD,R0 ; GET FCB ADDRESS
286 001060 036727 177000 000010 BIT $FLAGS,#MO.UNL ; SEE IF UNLOCK REQUESTED
287 001066 001005 BNE 120$ ; YES
288 001070 ASSUME W.CTL,0
289 001070 052777 004000 000000G BIS #WI.LCK,@.WNDOW ; ELSE SET LOCK BIT
290 001076 105260 000037 INCB F.NLCK(R0) ; AND BUMP LOCK COUNT IN FCB
291 001102 105260 000036 120$: INCB F.NACS(R0) ; BUMP ACCESS COUNT IN FCB
292
293 001106 010064 000006 MOV R0,V.FCB(R4) ; INIT VOLUME'S FCB CHAIN
294 001112 010064 000010 MOV R0,V.FCB+2(R4)
295 001116 016764 000000G 000002 MOV .WNDOW,V.IFWI(R4) ; SET INDEX FILE WINDOW ADDR IN VCB
296 001124 ASSUME V.TRCT,0
297 001124 005214 INC (R4) ; BUMP TRANSACTION COUNT TO 1
298
299 ; NOW READ THE STORAGE BITMAP FILE HEADER AND INIT ITS PARAMETERS IN THE
300 ; VCB.
301
MOUNT D0222, MOUNT VOLUME MACRO M1113 14-APR-81 09:21 PAGE 8-2
302 001126 005067 000000G CLR .FCBAD ; CLEAN OUT CONTEXT
303 001132 005067 000000G CLR .WNDOW
304 001136 012700 000002 MOV #2,R0 ; INDICATE FILE NUMBER 2
305 001142 CALL .RHDFN ; READ HEADER BY FILE NUMBER
306 001146 005000 CLR R0
307 001150 156700 000001G BISB .HDBUF+H.MPOF,R0 ; GET MAP AREA OFFSET
308 001154 006300 ASL R0
309 001156 062700 000012G ADD #.HDBUF+M.RTRV,R0 ; POINT TO RETRIEVAL POINTERS
310 001162 112064 000024 MOVB (R0)+,V.SBLB(R4) ; GET HIGH ORDER LBN
311 001166 112001 MOVB (R0)+,R1 ; GET BLOCK COUNT
312 001170 001003 BNE 130$ ; IF NON-ZERO, COUNT IS GOOD
313 001172 116001 000003 MOVB 3(R0),R1 ; ELSE GET COUNT FROM NEXT POINTER
314 001176 105201 INCB R1 ; MAKE TRUE BLOCK COUNT
315 001200 110164 000022 130$: MOVB R1,V.SBSZ(R4) ; PUT BLOCK COUNT IN VCB
316 001204 012064 000026 MOV (R0)+,V.SBLB+2(R4) ; GET LOW ORDER LBN
317
318 ; SCAN THE STORAGE BITMAP TO DETERMINE THE NUMBER OF FREE BLOCKS ON THE VOLUME
319
320 001210 010146 MOV R1,-(SP) ; GET BLOCK COUNT
321 001212 005003 CLR R3 ; INIT VBN
322 001214 005203 140$: INC R3 ; BUMP TO NEXT VBN
323 001216 CALL .SMRVB ; READ NEXT BITMAP BLOCK
324 001222 012702 000400 MOV #256.,R2 ; COUNT 256 WORDS
325 001226 012703 000020 150$: MOV #16.,R3 ; COUNT 16 BITS PER WORD
326 001232 012100 MOV (R1)+,R0 ; GET NEXT MAP WORD
327 001234 006000 160$: ROR R0 ; LOOK AT A BIT
328 001236 005564 000036 ADC V.FRBK+2(R4) ; COUNT IT IF ON
329 001242 105564 000034 ADCB V.FRBK(R4)
330 001246 077306 SOB R3,160$ ; LOOP FOR BITS
331 001250 077212 SOB R2,150$ ; LOOP FOR WORDS
332 001252 016703 000000G MOV .SMVBN,R3 ; GET CURRENT VBN
333 001256 005316 DEC (SP) ; COUNT BLOCKS
334 001260 001355 BNE 140$ ; AND LOOP FOR BLOCKS
335 001262 005726 TST (SP)+ ; CLEAN THE STACK
336 001264 005067 000000G CLR .SMUCB ; INVALIDATE BITMAP BUFFER SO ALLOCATIONS
337 ; WILL START AT BEGINNING OF VOLUME
338
339 ; APPLY OPTIONS FROM THE COMMAND STRING
340
341 001270 016703 000000G MOV .UCBAD,R3 ; GET PUD ADDRESS
342 001274 036727 176564 000002 BIT $FLAGS,#MO.CHA ; CHECK FOR EXPLICIT CHARACTERISTICS
343 001302 001403 BEQ 170$ ; NONE
344 001304 116763 176542 000000G MOVB $CHAR,U.CH(R3) ; PUT CHARACTERISTICS INTO PUD
345 001312 036727 176546 000001 170$: BIT $FLAGS,#MO.UIC ; CHECK FOR EXPLICIT UIC
346 001320 001403 BEQ 180$ ; NO
347 001322 016763 176522 000000G MOV $UIC,U.UI(R3) ; SET UIC IN PUD
348
349 001330 036727 176530 000004 180$: BIT $FLAGS,#MO.PRO ; CHECK FOR EXPLICIT PROTECTION
350 001336 001403 BEQ 190$ ; NO
351 001340 016763 176510 000000G MOV $PRO,U.AR(R3) ; SET PROTECTION WORD IN PUD
352
353 001346 036727 176512 000020 190$: BIT $FLAGS,#MO.EXT ; CHECK FOR EXPLICIT DEFAULT EXTEND
354 001354 001403 BEQ 200$ ; NO
355 001356 116764 176474 000025 MOVB $EXT,V.FIEX(R4) ; YES - SET IN VCB
356
357 001364 036727 176474 000040 200$: BIT $FLAGS,#MO.FPR ; CHECK FOR EXPLICIT DEFAULT FILE PROTECTION
358 001372 001403 BEQ 210$ ; NO
MOUNT D0222, MOUNT VOLUME MACRO M1113 14-APR-81 09:21 PAGE 8-3
359 001374 016764 176460 000030 MOV $FPRO,V.FPRO(R4) ; YES - SET IN VCB
360
361 001402 036727 176456 001000 210$: BIT $FLAGS,#MO.LRU ; CHECK FOR EXPLICIT LRU SPEC
362 001410 001403 BEQ 220$ ; NO
363 001412 116764 176445 000035 MOVB $LRU,V.LRUC(R4) ; YES - SET IN VCB
364
365 001420 220$: RETURN
366 ;
367 ;
368 001422 $END MOUNT
369 ;
370 ;
371 000001 .END
MOUNT D0222, MOUNT VOLUME MACRO M1113 14-APR-81 09:21 PAGE 8-4
SYMBOL TABLE
AC.DLK= 000002 H.FCHA= 000014 I.IOSB 000016 Q.IOPR= 000007 W.STD 000004
AC.LCK= 000001 H.FIEX= 000055 I.LGTH 000040 Q.IOSB= 000010 W.VBN 000006
A.TD = ****** GX H.FLEV= 000006 I.LNK 000000 RLB 000016R W.WISZ 000007
BITFNU= 000002 H.FMAX= 000006 I.LUN 000012 R$$10F= 000001 $CHAR 000052RG
CMDBFL= 001000 H.FNUM= 000002 I.PRI 000010 R$$11D= 000001 $EXT 000056RG
EX.AC1= 000001 H.FOWN= 000010 I.PRM 000024 SC.BAD= 000100 $FLAGS 000064RG
EX.AC2= 000002 H.FPRO= 000044 I.RTRV 000034 SC.MDL= 000200 $FPRO 000060RG
EX.ADF= 000010 H.FSEQ= 000004 I.RVDT= 000014 SETCHA 000000R $LRU 000063RG
EX.ENA= 000200 H.IBLB= 000002 I.RVNO= 000012 S.HDHD= 000056 $PRO 000054RG
EX.FCO= 000004 H.IBSZ= 000000 I.RVTI= 000023 S.IDHD= 000056 $UIC 000050RG
E$$MSG= 000001 H.IDOF= 000000 I.RWAD= 000024 S.MPHD= 000012 $VNAM 000046RG
E$$TRP= 000001 H.INDF= 000760 I.RWAT 000026 S.STBK= 000012 $VNML 000044RG
FCPLUN= 000001 H.INDN= 000730 I.RWCT= 000026 UC.CON= 000200 $WIN 000062RG
FC.CEF= 020000 H.INDO= 000744 I.RWVB= 000032 UC.DLK= 000100 $$ = 000067
FC.DIR= 040000 H.LRUC= 000056 I.STD 000004 UC.SWL= ****** GX $$$ARG= 000013
FC.FCO= 010000 H.MPOF= 000001 I.TISZ= 000006 U.AR = ****** GX $$$OST= 000014
FC.WAC= 100000 H.PROG= 000010 I.UIC 000022 U.CH = ****** GX .ALLOC= ****** GX
FP.DEL= 000010 H.PROJ= 000011 LBNH = 000040R U.C1 = ****** GX .BLXI = ****** GX
FP.EXT= 000004 H.SBCL= 000010 LBNL = 000042R U.LBH = ****** GX .CKSM1= ****** GX
FP.RAT= 000001 H.SCHA= 000015 LEV11M= 000401 U.LBN = ****** GX .CKSUM= ****** GX
FP.RDV= 000001 H.UCHA= 000014 LOWFCN= 000011 U.UI = ****** GX .CRFCB= ****** GX
FP.WRV= 000002 H.UFAT= 000016 ME.NHM= 000012 U.VA = ****** GX .CRTSK= ****** GX
F$$LVL= 000001 H.VCHA= 000042 ME.SYN= 000007 VC.BMW= 000002 .DFEXT= 000005
F.DREF 000042 H.VDAT= 000074 ME.WRV= 000013 VC.IFW= 000001 .DFPRO= 164000
F.DRNM 000044 H.VLEV= 000014 MFDFNO= 000004 V.FCB 000006 .FCBAD= ****** GX
F.FEXT 000002 H.VNAM= 000016 MFDFSQ= 000004 V.FFNU 000055 .FILNO= ****** GX
F.FNUM 000006 H.VOWN= 000036 MO.CHA= 000002 G V.FIEX 000025 .FILSQ= ****** GX
F.FOWN 000014 H.VPRO= 000040 MO.EXT= 000020 G V.FMAX 000016 .HDBUF= ****** GX
F.FPRO 000016 H.WISZ= 000054 MO.FPR= 000040 G V.FPRO 000030 .INWIN= ****** GX
F.FSEQ 000010 IDXFNU= 000001 MO.LRU= 001000 G V.FRBK 000034 .IOPKT= ****** GX
F.FSQN 000013 ID$$$ = 000222 MO.OVR= 000200 G V.IBLB 000012 .IOSTS= ****** GX
F.FVBN 000046 IE.ABO= ****** GX MO.PRO= 000004 G V.IBSZ 000013 .MOKTB= ****** GX
F.HDLB 000022 IE.IFC= ****** GX MO.SWL= 000400 G V.IFWI 000002 .MOPRS= ****** GX
F.LBN 000026 IE.VER= ****** GX MO.UIC= 000001 G V.LABL 000040 .MOUNT 000066RG
F.LGTH 000052 IO.RLB= ****** GX MO.UNL= 000010 G V.LGTH 000056 .MXQIO= ****** GX
F.LINK 000000 IO.STC= ****** GX MO.WIN= 000100 G V.LRUC 000035 .PRFIL= 000004
F.NACS 000036 I.ACTL 000035 M$$HDR= 000001 V.SBCL 000021 .QIOST= ****** GX
F.NLCK 000037 I.AST 000020 M.CTSZ= 000006 V.SBLB 000024 .RHDFN= ****** GX
F.NWAC 000040 I.ATL 000006 M.EFNU= 000002 V.SBSZ 000022 .RHDLB= ****** GX
F.RVN 000012 I.CRDT= 000031 M.EFSQ= 000004 V.STAT 000054 .RTPTF= 001401
F.SCHA 000021 I.CRTI= 000040 M.ERVN= 000001 V.STD 000004 .SMBUF= ****** GX
F.SIZE 000032 I.DASZ= 000007 M.ESQN= 000000 V.TRCT 000000 .SMRVB= ****** GX
F.STAT 000040 I.DPB 000011 M.LBSZ= 000007 V.WISZ 000020 .SMUCB= ****** GX
F.STD 000004 I.EFN 000013 M.MAX = 000011 WI.BPS= 100000 .SMVBN= ****** GX
F.UCHA 000020 I.EXDT= 000046 M.RTRV= 000012 WI.DLK= 010000 .SYUIC= 000010
F11PR$= 000000 I.EXTD 000030 M.USE = 000010 WI.EXT= 002000 .TPARS= ****** GX
HIFCN = 000030 I.FCN 000014 QIOEFN= 000002 WI.LCK= 004000 .UCBAD= ****** GX
HOMEBL 000424R I.FIDP 000024 Q.IOAE= 000012 WI.RDV= 000400 .VBSIZ= 001000
H.CHK1= 000072 I.FNAM= 000000 Q.IOEF= 000006 WI.WRV= 001000 .WNDOW= ****** GX
H.CHK2= 000776 I.FNBP 000036 Q.IOFN= 000002 W.CTL 000000 ...GBL= 000000
H.CKSM= 000776 I.FTYP= 000006 Q.IOLU= 000004 W.FCB 000002 ...TPC= 001000
H.DVTY= 000012 I.FVER= 000010 Q.IOPL= 000014 W.RTRV 000012
. ABS. 000056 000
001422 001
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 3152 WORDS ( 13 PAGES)
MOUNT D0222, MOUNT VOLUME MACRO M1113 14-APR-81 09:21 PAGE 8-5
SYMBOL TABLE
DYNAMIC MEMORY: 4630 WORDS ( 17 PAGES)
ELAPSED TIME: 00:00:20
[40,10]MOUNT,[40,20]MOUNT/-SP/CR=[40,30]RSXDC,F11PRE,MOUNT
MOUNT CREATED BY MACRO ON 14-APR-81 AT 09:21 PAGE 1
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
AC.DLK = 000002 #3-184
AC.LCK = 000001 #3-183
A.TD = ****** GX 8-227
BITFNU = 000002 #3-168
CMDBFL = 001000 #6-70
CS2$$ = ****** 5-490
EX.AC1 = 000001 #3-190
EX.AC2 = 000002 #3-191
EX.ADF = 000010 #3-194
EX.ENA = 000200 #3-195
EX.FCO = 000004 #3-193
E$$MSG = 000001 #1-32 5-472
E$$TRP = 000001 #1-31 5-412
FCPLUN = 000001 #3-159 6-60 6-64
F$$LVL = 000001 #1-28
F.NACS 000036 *8-291
F.NLCK 000037 *8-290
F11PR$ = 000000 #3-149
HIFCN = 000030 #3-156
HOMEBL 000424 R 7-169 #8-194
H.CHK1 = 000072 7-156
H.FIEX = 000055 *8-255 8-262
H.FMAX = 000006 7-167 8-251
H.FPRO = 000044 *8-256 8-263
H.IBLB = 000002 7-164 7-165 8-248 8-250
H.IBSZ = 000000 7-162 8-249
H.LRUC = 000056 8-264
H.MPOF = 000001 8-307
H.SBCL = 000010 8-261
H.VCHA = 000042 8-217
H.VNAM = 000016 8-197 8-205 8-235
H.VOWN = 000036 8-214
H.VPRO = 000040 8-216
H.WISZ = 000054 8-252
IDXFNU = 000001 #3-167
ID$$$ = 000222 #6-1 6-20
IE.ABO = ****** GX 7-136 7-141 7-186 7-189 8-202 8-207 8-211
IE.IFC = ****** GX 7-145
IE.VER = ****** GX 7-173
IO.RLB = ****** GX 6-64
IO.STC = ****** GX 6-60
I.ACTL 000035 #3-129
I.AST 000020 #3-121
I.ATL 000006 #3-114
I.DPB 000011 #3-116
I.EFN 000013 #3-118
I.EXTD 000030 #3-127
I.FCN 000014 #3-119
I.FIDP 000024 #3-125
I.FNBP 000036 #3-130
I.IOSB 000016 #3-120
I.LGTH 000040 #3-131
MOUNT CREATED BY MACRO ON 14-APR-81 AT 09:21 PAGE 2
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
I.LNK 000000 #3-112
I.LUN 000012 #3-117
I.PRI 000010 #3-115
I.PRM 000024 #3-124 3-138
I.RTRV 000034 #3-128
I.RWAD = 000024 #3-138 3-143
I.RWAT 000026 #3-126
I.RWCT = 000026 #3-143 3-145
I.RWVB = 000032 #3-145
I.STD 000004 #3-113
I.UIC 000022 #3-122
LBNH = 000040 R #6-65 *7-152 *7-182 7-183
LBNL = 000042 R #6-66 *7-151 *7-180 *7-181 7-187
LEV11M = 000401 #3-163
LOWFCN = 000011 #3-155
MASS$$ = ****** 3-16 3-24 3-63 5-512 6-1 6-20
ME.NHM = 000012 #6-53 7-186 7-189
ME.SYN = 000007 #6-52 7-136
ME.WRV = 000013 #6-54 8-202 8-207 8-211
MFDFNO = 000004 #3-169
MFDFSQ = 000004 #3-170
MO.CHA = 000002 G #6-88 8-342
MO.EXT = 000020 G #6-91 8-353
MO.FPR = 000040 G #6-92 8-357
MO.LRU = 001000 G #6-96 8-361
MO.OVR = 000200 G #6-94 8-194
MO.PRO = 000004 G #6-89 8-349
MO.SWL = 000400 G #6-95 8-220
MO.UIC = 000001 G #6-87 8-345
MO.UNL = 000010 G #6-90 8-286
MO.WIN = 000100 G #6-93 8-257
M$$HDR = 000001 #1-33
M$$MGE = ****** 4-385
M.RTRV = 000012 8-309
QIOEFN = 000002 #3-158 6-60 6-64
Q.IOAE = 000012 #6-60 #6-64
Q.IOEF = 000006 #6-60 #6-64
Q.IOFN = 000002 #6-60 #6-64
Q.IOLU = 000004 #6-60 #6-64
Q.IOPL = 000014 #6-60 #6-64 6-65 6-66
Q.IOPR = 000007 #6-60 #6-64
Q.IOSB = 000010 #6-60 #6-64
RLB 000016 R #6-64 6-65 6-66 7-153
R$$EIS = ****** 4-283
R$$10F = 000001 #1-30 4-384
R$$11D = 000001 #1-29 3-77 3-101 3-142 3-154 4-207 4-336 4-349
R$$11M = ****** 3-80 3-85 3-139 3-150 4-243 4-323
SETCHA 000000 R #6-60 7-143
S$$YDF = ****** 1-1 1-36
UC.SWL = ****** GX 8-219 8-222
U.AR = ****** GX *8-213 *8-216 *8-351
U.CH = ****** GX *8-217 *8-344
MOUNT CREATED BY MACRO ON 14-APR-81 AT 09:21 PAGE 3
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
U.C1 = ****** GX *8-219 *8-222
U.LBH = ****** GX 7-183
U.LBN = ****** GX 7-187
U.UI = ****** GX *8-214 *8-347
U.VA = ****** GX 7-139 *8-230
V.FCB 000006 *8-293 *8-294
V.FIEX 000025 *8-262 *8-355
V.FMAX 000016 8-242 8-243
V.FPRO 000030 *8-263 *8-359
V.FRBK 000034 *8-328 *8-329
V.IBLB 000012 8-241 8-242 8-247 8-273 8-274
V.IBSZ 000013 8-241 8-271
V.IFWI 000002 *8-295
V.LABL 000040 8-236
V.LGTH 000056 8-228
V.LRUC 000035 *8-264 *8-266 *8-363
V.SBCL 000021 8-244
V.SBLB 000024 *8-310 *8-316
V.SBSZ 000022 *8-315
V.TRCT 000000 8-296
V.WISZ 000020 8-243 8-244
WI.LCK = 004000 8-289
W.CTL 000000 8-288
$CHAR 000052 RG #6-77 8-344
$EXT 000056 RG #6-79 8-355
$FLAGS 000064 RG #6-83 *7-125 8-194 8-220 8-257 8-286 8-342 8-345 8-349
8-353 8-357 8-361
$FPRO 000060 RG #6-80 8-359
$LRU 000063 RG #6-82 8-363
$PRO 000054 RG #6-78 8-351
$UIC 000050 RG #6-76 8-347
$VNAM 000046 RG #6-75 8-196
$VNML 000044 RG #6-74 8-198
$WIN 000062 RG #6-81 8-259
$$ = 000067 #7-130 7-130 #7-134 7-134 #7-157 7-157 #7-160 7-160 #8-229
8-229 #8-279 8-279 #8-281 8-281 #8-284 8-284 #8-305 8-305
#8-323 8-323
$$$ARG = 000013 #6-60 6-60 #6-60 6-60 #6-64 6-64 #6-64 6-64 #6-64
6-64 #6-64 6-64 #6-64 6-64 #6-64 6-64
$$$GLB = ****** 6-60 6-60 6-60 6-60 6-60 6-60 6-60 6-60 6-64
6-64 6-64 6-64 6-64 6-64 6-64 6-64
$$$OST = 000014 #6-60 6-60 6-60 #6-60 6-60 6-60 #6-60 6-60 6-60
#6-60 6-60 6-60 #6-60 6-60 6-60 #6-60 6-60 6-60
#6-60 6-60 #6-64 6-64 6-64 #6-64 6-64 6-64 #6-64
6-64 6-64 #6-64 6-64 6-64 #6-64 6-64 6-64 #6-64
6-64 6-64 #6-64 6-64
.ALLOC = ****** GX 8-229 8-229
.BLXI = ****** GX 7-130 7-130
.CKSM1 = ****** GX 7-157 7-157
.CKSUM = ****** GX 7-160 7-160
.CRFCB = ****** GX 8-281 8-281
.CRTSK = ****** GX 8-226
MOUNT CREATED BY MACRO ON 14-APR-81 AT 09:21 PAGE 4
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
.DFEXT = 000005 #3-172 8-255
.DFPRO = 164000 #3-173 8-256
.FCBAD = ****** GX *8-282 8-285 *8-302
.FILNO = ****** GX *8-277
.FILSQ = ****** GX *8-278
.HDBUF = ****** GX 6-64 7-155 7-159 7-162 7-164 7-165 7-167 8-197 8-205
8-214 8-216 8-217 8-235 8-248 8-249 8-250 8-251 8-252
*8-255 *8-256 8-261 8-262 8-263 8-264 8-307 8-309
.INWIN = ****** GX 8-284 8-284
.IOPKT = ****** GX 7-142
.IOSTS = ****** GX *7-136 *7-141 *7-147 *7-175 *7-186 *7-189 *8-202 *8-207 *8-211
.MOKTB = ****** GX 7-132
.MOPRS = ****** GX 7-133
.MOUNT 000066 RG #7-124
.MXQIO = ****** GX 7-143 7-153
.PRFIL = 000004 #3-165
.QIOST = ****** GX 6-60 6-64 7-145 7-147 7-173 7-175
.RHDFN = ****** GX 8-305 8-305
.RHDLB = ****** GX 8-279 8-279
.RTPTF = 001401 #3-162
.SMBUF = ****** GX 7-128
.SMRVB = ****** GX 8-323 8-323
.SMUCB = ****** GX *7-126 *8-336
.SMVBN = ****** GX 8-332
.SYUIC = 000010 #3-164
.TPARS = ****** GX 7-134 7-134
.UCBAD = ****** GX 7-138 8-341
.VBSIZ = 001000 #3-161 6-64
.WNDOW = ****** GX 8-289 8-295 *8-303
MOUNT CREATED BY MACRO ON 14-APR-81 AT 09:21 PAGE 5
MACRO CROSS REFERENCE CREF
MACRO NAME REFERENCES
ASSUME #4-201 #8-241 #8-242 #8-243 #8-244 #8-288 #8-296
CALL #3-78 7-130 7-134 7-157 7-160 8-229 8-279 8-281 8-284 8-305
8-323
CALLR #4-400
ERR #5-414
ERROR #6-39 #7-136 #7-141 #7-147 #7-175 #7-186 #7-189 #8-202 #8-207 #8-211
ERRP #5-436
ERRX #5-422 7-136 7-141 7-147 7-175 7-186 7-189 8-202 8-207 8-211
FATAL #5-473
FHDOF$ #3-78 #3-83 #6-26 #6-27
F11DF$ #3-78 #3-84
GETLUN #4-337
GTSKHD #4-369 #4-386
HMBOF$ #6-26 6-28
MUL #4-290
OFF$ #6-60 6-60 6-60 6-60 6-60 6-60 6-60 6-60 6-60 #6-64
6-64 6-64 6-64 6-64 6-64 6-64 6-64 6-64
POP #4-315
PUSH #4-309
PUTLUN #4-341
QDPB$ #6-60 #6-60 #6-64 #6-64
QIO #6-32 #7-143 #7-153
QIOW$ #6-26 #6-60 #6-64
RETURN #3-78 #8-365
XTSKHD #4-379 #4-395
$BEGIN #4-208 6-1
$END #4-229 #8-368
$VERSI #4-280 #6-20
$VER1 #4-233 #6-20