Trailing-Edge
-
PDP-10 Archives
-
BB-H311B-RM
-
rsx20f-swskit/listings/zap.lis
There are no other files named zap.lis in the archive.
ZAP MACRO M1108 05-DEC-77 23:52 PAGE 2
2 ; BLIS11 V.74206 SUNDAY 13-APR-75 1:41.15 ZAP.B11 PAGE 1
3
4 ; 0001 MODULE ZAP(MAIN,IDENT="X04.03")=
5 ; 0002 BEGIN
6 ; 0003
7 ; 0004 !
8 ; 0005 !
9 ; 0006 ! COPYRIGHT 1975,
10 ; 0007 ! DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
11 ; 0008 !
12 ; 0009 ! THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
13 ; 0010 ! ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
14 ; 0011 ! OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
15 ; 0012 ! AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
16 ; 0013 !
17 ; 0014 ! THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
18 ; 0015 ! NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
19 ; 0016 ! EQUIPMENT CORPORATION.
20 ; 0017 !
21 ; 0018 ! DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY
22 ; 0019 ! OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
23 ; 0020 !
24 ; 0021 ! WRITTEN BY
25 ; 0022 ! M. JACK
26 ; 0023 !
27 ; 0024 ! MODULE FUNCTION
28 ; 0025 ! TASK-IMAGE PATCHING UTILITY FOR USE WITH RSX-11D AND RSX-11M
29 ; 0026 !
30 ; 0027 !
31 ; 0028
32 ; 0029 LINKAGE
33 ; 0030 REG0 = BLISS(REGISTER=0);
34 ; 0031
35 ; 0032 FORWARD
36 ; 0033 OPENLOC,
37 ; 0034 REG0 ERRPRT;
38 ; 0035
39 ; 0036
40 ; 0037 REQUIRE STDMAC.BEG;
41 ; 0038 ! STDMAC.BEG - WIDELY USED STANDARD MACROS
42 ; 0039 !
43 ; 0057 SWITCHES LIST; SWITCHES LIST;
44 ; 0058 ! VERSION 000005
45 ; 0059 ! LAST MODIFIED 05/13/74 RBG
46 ; 0098 SWITCHES LIST; SWITCHES LIST;
47 ; 0099 ! STDMAC.BEG LAST LINE
48 ; 0100
49 ; 0101 REQUIRE STDSTR.BEG;
50 ; 0102 ! STDSTR.BEG - WIDELY USED STANDARD STRUCTURES
51 ; 0103 !
52 ; 0121 SWITCHES LIST; SWITCHES LIST;
53 ; 0122 ! VERSION 000003
54 ; 0123 ! LAST MODIFIED 02/28/74 RBG
55 ; 0137 SWITCHES LIST; SWITCHES LIST;
ZAP MACRO M1108 05-DEC-77 23:52 PAGE 3
57 ; BLIS11 V.74206 SUNDAY 13-APR-75 1:41.16 STDSTR.BEG PAGE 1-1
58
59 ; 0138 ! STDSTR.BEG LAST LINE
60 ; 0139
61 ; 0140 REQUIRE ZAP.BEG;
62 ; 0141 ! ZAP.BEG - BEGIN FILE FOR ZAP
63 ; 0142 !
64 ; 0152 SWITCHES LIST; SWITCHES LIST;
65 ; 0153 !
66 ; 0154 ! VERSION 000002
67 ; 0155 ! LAST MODIFIED 09/01/74
68 ; 0156 !
69 ; 0157
70 ; 0158 STRUCTURE
71 ; 0159 BUFFER[I] = (.BUFFER + .I)<0,16>;
72 ; 0160
73 ; 0161 BIND
74 ; 0162 SEGSIZ= 5, ! LENGTH OF SEGMENT TABLE ENTRY
75 ; 0163 SEGENT= 64; ! NUMBER OF SEGMENT TABLE ENTRIES
76 ; 0164
77 ; 0165 MACRO
78 ; 0166 SEGBLK= 0,0,16$, ! STARTING DISK BLOCK (SEGMENT "NAME")
79 ; 0167 SEGLOW= 1,0,16$, ! LOW ADDRESS
80 ; 0168 SEGHIGH=2,0,16$, ! HIGH ADDRESS PLUS ONE
81 ; 0169 SEGVIRT=3,0,16$, ! VIRTUAL ORIGIN DATA
82 ; 0170 SEGVIR1=3,0,16$, ! HIGH ORDER WORD OF SEGVIRT
83 ; 0171 SEGVIR0=4,0,16$, ! LOW ORDER WORD OF SEGVIRT
84 ; 0172 SEGVIRW=4,0,9$, ! WORD OFFSET PART OF SEGVIRT
85 ; 0173 SEGNEXT=5,0,16$; ! OFFSET TO NEXT ENTRY
86 ; 0174
87 ; 0175 MACRO
88 ; 0176 ABSOLUTE=0,0,1$, ! /AB SWITCH BIT
89 ; 0177 READONLY=0,1,1$, ! /RO SWITCH BIT
90 ; 0178 LISTING=0,2,1$; ! /LI SWITCH BIT
91 ; 0179
92 ; 0180 BIND
93 ; 0181 NORELO= 0, ! NO SUCH RELOCATION REGISTER
94 ; 0182 ADROOB= 1, ! ADDRESS NOT WITHIN SEGMENT
95 ; 0183 NOSEGM= 2, ! NO SUCH SEGMENT
96 ; 0184 BADARG= 3, ! BAD ARGUMENT COUNT
97 ; 0185 NOSPEC= 4, ! NO SUCH SPECIAL REGISTER
98 ; 0186 BADCMD= 5, ! UNRECOGNIZABLE COMMAND
99 ; 0187 NOOPEN= 6, ! NO OPEN LOCATION
100 ; 0188 NOBYTE= 7, ! CANNOT USE IN BYTE MODE
101 ; 0189 BADTSK= 12, ! BAD TASK IMAGE
102 ; 0190 VFYREJ= 13, ! VERIFY REJECT
103 ; 0191 NOTYET= 14; ! NOT YET IMPLEMENTED
104 ; 0192
105 ; 0193 BIND
106 ; 0194 SIGXIT= -1, ! SIGNAL VALUE FOR EXIT
107 ; 0195 SIGADR= -2; ! SIGNAL VALUE FOR ADDRESS ERROR
108 ; 0196
109 ; 0197 !
110 ; 0198 ! ZAP.BEG LAST LINE
ZAP MACRO M1108 05-DEC-77 23:52 PAGE 4
112 ; BLIS11 V.74206 SUNDAY 13-APR-75 1:41.17 ZAP.BEG PAGE 1-2
113
114 ; 0199
115 ; 0200
116 ; 0201 PSECT
117 ; 0202 CODE=" ", OWN=" ", GLOBAL=" ";
118 ; 0203
119 ; 0204 EXTERNAL
120 ; 0205 ABORT, ! EXIT IMMEDIATELY
121 ; 0206 FCSCLOSE, ! CLOSE FILES AND EXIT
122 ; 0207 REG0 FCSREAD, ! READ TASK IMAGE BLOCK
123 ; 0208 TRANSLATE, ! TRANSLATE SEGMENT-OFFSET TO BLOCK-WORD
124 ; 0209 REG0 OUTSA, ! OUTPUT ASCIZ STRING
125 ; 0210 EOL, ! OUTPUT RECORD
126 ; 0211 ZAPINIT, ! INITIALIZATION CODE
127 ; 0212 ZAPPROC; ! PROCESSING CODE
128 ; 0213
129 ; 0214 EXTERNAL
130 ; 0215 BLOCK SWITCH; ! COMMAND SWITCHES
131 ; 0216
132 ; 0217 GLOBAL
133 ; 0218 STKLIM = (64), ! SP STACK LIMIT
134 ; 0219 VECBLOCK SEGTAB[SEGENT,SEGSIZ], ! SEGMENT TABLE
135 ; 0220 PBLOCK SEGMAX, ! POINT TO FIRST FREE LOC IN SEGTAB
136 ; 0221 REALDOT; ! POINT TO "DOT" IN BUFFER
137 ; 0222
138 ; 0223
139 ; 0224
140 ; 0225
141 ; 0226 COMMENT ! OPENLOC(SEG,ADDR)
142 ; 0227 !
143 ; 0228 ! FUNCTION
144 ; 0229 ! OPEN A LOCATION IN TASK ADDRESS SPACE
145 ; 0230 !
146 ; 0231 ! INPUTS
147 ; 0232 ! SEG - THE SEGMENT-ID FOR THE SEGMENT
148 ; 0233 ! ADDR - THE ADDRESS IN TASK ADDRESS SPACE
149 ; 0234 !
150 ; 0235 ! OUTPUTS
151 ; 0236 ! REALDOT - THE ADDRESS IN BLOCK BUFFER OF THE WORD OPENED
152 ; 0237 ! VALUE - THE CONTENTS OF THE WORD OPENED
153 ; 0238 !
154 ; 0239
155 ; 0240 GLOBAL ROUTINE OPENLOC(SEG,ADDR)=
156 ; 0241 BEGIN
157 ; 0242
158 ; 0243 LOCAL
159 ; 0244 SEGHIT, ! FOUND A SEGMENT-NUMBER MATCH
160 ; 0245 PBLOCK SEGPTR;
161 ; 0246
162 ; 0247 OWN
163 ; 0248 TEMP[2]; ! TEMPORARY VECTOR
164 ; 0249
165 ; 0250 IF .SWITCH[ABSOLUTE]
ZAP MACRO M1108 05-DEC-77 23:52 PAGE 5
167 ; BLIS11 V.74206 SUNDAY 13-APR-75 1:41.17 ZAP.B11 PAGE 1-3
168
169 ; 0251 THEN
170 ; 0252 BEGIN
171 ; 0253 IF .SEG EQL 0 THEN SEG = 1;
172 ; 0254 TEMP[0] = .SEG<7,9>;
173 ; 0255 TEMP[1] = .SEG * 512;
174 ; 0256 TRANSLATE(TEMP,.ADDR,TEMP,REALDOT);
175 ; 0257 FCSREAD(TEMP);
176 ; 0258 RETURN ..REALDOT;
177 ; 0259 END
178 ; 0260 ELSE
179 ; 0261 BEGIN
180 ; 0262 SEGHIT = 0;
181 ; 0263 SEGPTR = SEGTAB;
182 ; 0264 DO
183 ; 0265 BEGIN
184 ; 0266 IF .SEG EQL .SEGPTR[SEGBLK]
185 ; 0267 THEN
186 ; 0268 BEGIN
187 ; 0269 SEGHIT = .SEGHIT + 1;
188 ; 0270 IF
189 ; 0271 .ADDR GEQU .SEGPTR[SEGLOW] AND
190 ; 0272 .ADDR LSSU .SEGPTR[SEGHIGH]
191 ; 0273 THEN
192 ; 0274 BEGIN
193 ; 0275 TRANSLATE(SEGPTR[SEGVIRT],.ADDR,TEMP,REALDOT);
194 ; 0276 FCSREAD(TEMP);
195 ; 0277 RETURN ..REALDOT;
196 ; 0278 END
197 ; 0279 END;
198 ; 0280 SEGPTR = SEGPTR[SEGNEXT];
199 ; 0281 END
200 ; 0282 UNTIL
201 ; 0283 .SEGPTR GEQU .SEGMAX;
202 ; 0284 ERRPRT(IF .SEGHIT NEQ 0 THEN ADROOB ELSE NOSEGM);
203 ; 0285 SIGNAL SIGADR
204 ; 0286 END;
205 ; 0287
206 ; 0288 END;
207 ; 0289
208 .TITLE ZAP
209 .IDENT /X04.03/
210 000000 .PSECT
211
212
213 000000 R$0=%0
214 000001 R$1=%1
215 000002 R$2=%2
216 000003 R$3=%3
217 000004 R$4=%4
218 000005 R$5=%5
219 000006 SP=%6
220 000007 PC=%7
ZAP MACRO M1108 05-DEC-77 23:52 PAGE 6
222 ; BLIS11 V.74206 SUNDAY 13-APR-75 1:41.21 ZAP.B11 PAGE 1-4
223
224
225
226 000000 OPENLOC:
227 000000 004167 000000G JSR R$1,$SAV3
228 000004 016603 000014 MOV 14(SP),R$3
229 000010 132737 000001 000000G BITB #1,@#SWITCH
230 000016 001432 BEQ L$3
231 000020 005703 TST R$3
232 000022 001003 BNE L$6
233 000024 012766 000001 000014 MOV #1,14(SP)
234 000032 016602 000014 L$6: MOV 14(SP),R$2
235 000036 006102 ROL R$2
236 000040 106102 ROLB R$2
237 000042 000302 SWAB R$2
238 000044 042702 177000 BIC #177000,R$2
239 000050 010267 000200 MOV R$2,TEMP
240 000054 016602 000014 MOV 14(SP),R$2
241 000060 000302 SWAB R$2
242 000062 105002 CLRB R$2
243 000064 006302 ASL R$2
244 000066 010267 000164 MOV R$2,TEMP+2
245 000072 012746 000254' MOV #TEMP,-(SP)
246 000076 016646 000014 MOV 14(SP),-(SP)
247 000102 000422 BR L$28
248 000104 005002 L$3: CLR R$2
249 000106 012701 001172' MOV #SEGTAB,R$1
250 000112 020311 L$9: CMP R$3,@R$1
251 000114 001034 BNE L$11
252 000116 005202 INC R$2
253 000120 016600 000012 MOV 12(SP),R$0
254 000124 020061 000002 CMP R$0,2(R$1)
255 000130 103426 BLO L$11
256 000132 020061 000004 CMP R$0,4(R$1)
257 000136 103023 BHIS L$11
258 000140 010146 MOV R$1,-(SP)
259 000142 062716 000006 ADD #6,@SP
260 000146 010046 MOV R$0,-(SP)
261 000150 012746 000254' L$28: MOV #TEMP,-(SP)
262 000154 012746 001164' MOV #REALDOT,-(SP)
263 000160 004767 000000G JSR PC,TRANSLATE
264 000164 012700 000254' MOV #TEMP,R$0
265 000170 004767 000000G JSR PC,FCSREAD
266 000174 017700 000764 MOV @REALDOT,R$0
267 000200 062706 000010 ADD #10,SP
268 000204 000207 RTS PC
269 000206 062701 000012 L$11: ADD #12,R$1
270 000212 020137 001166' CMP R$1,@#SEGMAX
271 000216 103735 BLO L$9
272 000220 005702 TST R$2
273 000222 001403 BEQ L$19
274 000224 012700 000001 MOV #1,R$0
275 000230 000402 BR L$20
ZAP MACRO M1108 05-DEC-77 23:52 PAGE 7
277 ; BLIS11 V.74206 SUNDAY 13-APR-75 1:41.21 ZAP.B11 PAGE 1-5
278
279 000232 012700 000002 L$19: MOV #2,R$0
280 000236 004767 000016 L$20: JSR PC,ERRPRT
281 000242 012700 177776 MOV #177776,R$0
282 000246 000167 000000G JMP $SIGNL
283 000252 000207 L$2: RTS PC
284
285 ; ROUTINE SIZE: 86
286
287
288 000254 .PSECT
289
290 000254 000260' TEMP: .=.+4
291
292
293
294 ; 0290 COMMENT ! ERRPRT(P)
295 ; 0291 !
296 ; 0292 ! FUNCTION
297 ; 0293 ! OUTPUT A MESSAGE
298 ; 0294 !
299 ; 0295 ! INPUTS
300 ; 0296 ! P - MESSAGE INDEX
301 ; 0297 !
302 ; 0298 ! OUTPUTS
303 ; 0299 ! MESSAGE TYPED ON CONSOLE
304 ; 0300 ! VALUE - NONE
305 ; 0301 !
306 ; 0302
307 ; 0303 GLOBAL ROUTINE REG0 ERRPRT(P)=
308 ; 0304 BEGIN
309 ; 0305
310 ; 0306 BIND
311 ; 0307 MESSAGES = UPLIT(
312 ; 0308 UPLIT ASCIZ "NO SUCH RELOCATION REGISTER",
313 ; 0309 UPLIT ASCIZ "ADDRESS NOT WITHIN SEGMENT",
314 ; 0310 UPLIT ASCIZ "NO SUCH SEGMENT",
315 ; 0311 UPLIT ASCIZ "TOO MANY ARGUMENTS",
316 ; 0312 UPLIT ASCIZ "NO SUCH INTERNAL REGISTER",
317 ; 0313 UPLIT ASCIZ "UNRECOGNIZED COMMAND",
318 ; 0314 UPLIT ASCIZ "NO OPEN LOCATION",
319 ; 0315 UPLIT ASCIZ "CANNOT BE USED IN BYTE MODE",
320 ; 0316 UPLIT ASCIZ "ERROR IN FILE SPECIFICATION",
321 ; 0317 UPLIT ASCIZ "OPEN FAILURE FOR TASK IMAGE FILE",
322 ; 0318 UPLIT ASCIZ "ERROR ON COMMAND INPUT",
323 ; 0319 UPLIT ASCIZ "I/O ERROR ON TASK IMAGE FILE",
324 ; 0320 UPLIT ASCIZ "NOT A TASK IMAGE FILE",
325 ; 0321 UPLIT ASCIZ "VERIFY FAILURE",
326 ; 0322 UPLIT ASCIZ "NOT IMPLEMENTED");
327 ; 0323
328 ; 0324 OUTSA(.MESSAGES[.P]);
329 ; 0325 EOL();
ZAP MACRO M1108 05-DEC-77 23:52 PAGE 8
331 ; BLIS11 V.74206 SUNDAY 13-APR-75 1:41.22 ZAP.B11 PAGE 1-6
332
333 ; 0326 NOVALUE
334 ; 0327 END;
335 ; 0328
336
337 000260 .PSECT
338
339
340 000260 ERRPRT:
341 000260 006300 ASL R$0
342 000262 016000 000604' MOV P$AAB(R$0),R$0
343 000266 004767 000000G JSR PC,OUTSA
344 000272 000167 000000G JMP EOL
345
346 ; ROUTINE SIZE: 7
347
348
349 000276 .PSECT
350
351 000276 040503 047116 052117 P$AAJ: .WORD 40503,47116,52117
352 000304 041040 020105 051525 .WORD 41040,20105,51525
353 000312 042105 044440 020116 .WORD 42105,44440,20116
354 000320 054502 042524 046440 .WORD 54502,42524,46440
355 000326 042117 000105 .WORD 42117,105
356 000332 051105 047522 020122 P$AAK: .WORD 51105,47522,20122
357 000340 047111 043040 046111 .WORD 47111,43040,46111
358 000346 020105 050123 041505 .WORD 20105,50123,41505
359 000354 043111 041511 052101 .WORD 43111,41511,52101
360 000362 047511 000116 .WORD 47511,116
361 000366 050117 047105 043040 P$AAL: .WORD 50117,47105,43040
362 000374 044501 052514 042522 .WORD 44501,52514,42522
363 000402 043040 051117 052040 .WORD 43040,51117,52040
364 000410 051501 020113 046511 .WORD 51501,20113,46511
365 000416 043501 020105 044506 .WORD 43501,20105,44506
366 000424 042514 000000 .WORD 42514,0
367 000430 051105 047522 020122 P$AAM: .WORD 51105,47522,20122
368 000436 047117 041440 046517 .WORD 47117,41440,46517
369 000444 040515 042116 044440 .WORD 40515,42116,44440
370 000452 050116 052125 000000 .WORD 50116,52125,0
371 000460 027511 020117 051105 P$AAN: .WORD 27511,20117,51105
372 000466 047522 020122 047117 .WORD 47522,20122,47117
373 000474 052040 051501 020113 .WORD 52040,51501,20113
374 000502 046511 043501 020105 .WORD 46511,43501,20105
375 000510 044506 042514 000000 .WORD 44506,42514,0
376 000516 047516 020124 020101 P$AAO: .WORD 47516,20124,20101
377 000524 040524 045523 044440 .WORD 40524,45523,44440
378 000532 040515 042507 043040 .WORD 40515,42507,43040
379 000540 046111 000105 .WORD 46111,105
380 000544 042526 044522 054506 P$AAP: .WORD 42526,44522,54506
381 000552 043040 044501 052514 .WORD 43040,44501,52514
382 000560 042522 000000 .WORD 42522,0
383 000564 047516 020124 046511 P$AAQ: .WORD 47516,20124,46511
ZAP MACRO M1108 05-DEC-77 23:52 PAGE 9
385 ; BLIS11 V.74206 SUNDAY 13-APR-75 1:41.24 ZAP.B11 PAGE 1-7
386
387 000572 046120 046505 047105 .WORD 46120,46505,47105
388 000600 042524 000104 .WORD 42524,104
389 000604 000642' 000676' 000732' P$AAB: .WORD P$AAC,P$AAD,P$AAE
390 000612 000752' 000776' 001030' .WORD P$AAF,P$AAG,P$AAH
391 000620 001056' 000276' 000332' .WORD P$AAI,P$AAJ,P$AAK
392 000626 000366' 000430' 000460' .WORD P$AAL,P$AAM,P$AAN
393 000634 000516' 000544' 000564' .WORD P$AAO,P$AAP,P$AAQ
394 000642 047516 051440 041525 P$AAC: .WORD 47516,51440,41525
395 000650 020110 042522 047514 .WORD 20110,42522,47514
396 000656 040503 044524 047117 .WORD 40503,44524,47117
397 000664 051040 043505 051511 .WORD 51040,43505,51511
398 000672 042524 000122 .WORD 42524,122
399 000676 042101 051104 051505 P$AAD: .WORD 42101,51104,51505
400 000704 020123 047516 020124 .WORD 20123,47516,20124
401 000712 044527 044124 047111 .WORD 44527,44124,47111
402 000720 051440 043505 042515 .WORD 51440,43505,42515
403 000726 052116 000000 .WORD 52116,0
404 000732 047516 051440 041525 P$AAE: .WORD 47516,51440,41525
405 000740 020110 042523 046507 .WORD 20110,42523,46507
406 000746 047105 000124 .WORD 47105,124
407 000752 047524 020117 040515 P$AAF: .WORD 47524,20117,40515
408 000760 054516 040440 043522 .WORD 54516,40440,43522
409 000766 046525 047105 051524 .WORD 46525,47105,51524
410 000774 000000 .WORD 0
411 000776 047516 051440 041525 P$AAG: .WORD 47516,51440,41525
412 001004 020110 047111 042524 .WORD 20110,47111,42524
413 001012 047122 046101 051040 .WORD 47122,46101,51040
414 001020 043505 051511 042524 .WORD 43505,51511,42524
415 001026 000122 .WORD 122
416 001030 047125 042522 047503 P$AAH: .WORD 47125,42522,47503
417 001036 047107 055111 042105 .WORD 47107,55111,42105
418 001044 041440 046517 040515 .WORD 41440,46517,40515
419 001052 042116 000000 .WORD 42116,0
420 001056 047516 047440 042520 P$AAI: .WORD 47516,47440,42520
421 001064 020116 047514 040503 .WORD 20116,47514,40503
422 001072 044524 047117 000000 .WORD 44524,47117,0
423
424
425
426 ; 0329 COMMENT ! MAIN PROGRAM
427 ; 0330 !
428 ; 0331 ! FUNCTION
429 ; 0332 ! ACTS AS THE DRIVER PROGRAM
430 ; 0333 !
431 ; 0334
432 ; 0335 ENABLE
433 ; 0336 ALWAYS:
434 ; 0337 BEGIN
435 ; 0338 ENABLE
436 ; 0339 ALWAYS: ABORT()
437 ; 0340 ELBANE;
438 ; 0341 FCSCLOSE()
ZAP MACRO M1108 05-DEC-77 23:52 PAGE 10
440 ; BLIS11 V.74206 SUNDAY 13-APR-75 1:41.26 ZAP.B11 PAGE 1-8
441
442 ; 0342 END
443 ; 0343 ELBANE;
444 ; 0344
445 ; 0345 ZAPINIT();
446 ; 0346 ZAPPROC()
447 ; 0347
448 ; 0348 END
449 ; 0349 ELUDOM
450
451 001100 .PSECT
452
453
454 001100 ZAP:
455 001100 162706 000014 SUB #14,SP
456 001104 012700 000014 MOV #14,R$0
457 001110 004767 000000G JSR PC,$ENABL
458 001114 000026 .WORD L$33-L$32
459 001116 012700 000006 L$32: MOV #6,R$0
460 001122 004767 000000G JSR PC,$ENABL
461 001126 000006 .WORD L$35-L$34
462 001130 004767 000000G L$34: JSR PC,ABORT
463 001134 000000 HALT
464 001136 004767 000000G L$35: JSR PC,FCSCLOSE
465 001142 000404 BR L$36
466 001144 004767 000000G L$33: JSR PC,ZAPINIT
467 001150 004767 000000G JSR PC,ZAPPROC
468 001154 017767 000000G 000000G L$36: MOV @SIGREG,SIGREG
469 001162 000000 U$36: HALT
470
471 ; ROUTINE SIZE: 26
472
473
474 001164 .PSECT
475
476 001164 001166' REALDOT: .=.+2
477 001166 001170' SEGMAX: .=.+2
478 001170 000100 STKLIM: .WORD 100
479 001172 002372' SEGTAB: .=.+1200
480 .GLOBL ZAPINIT
481 .GLOBL FCSCLOSE
482 .GLOBL REALDOT
483 .GLOBL OUTSA
484 .GLOBL SEGMAX
485 .GLOBL ZAPPROC
486 .GLOBL ABORT
487 .GLOBL STKLIM
488 .GLOBL EOL
489 .GLOBL FCSREAD
490 .GLOBL SEGTAB
491 .GLOBL TRANSLATE
492 .GLOBL SWITCH
ZAP MACRO M1108 05-DEC-77 23:52 PAGE 11
494 ; BLIS11 V.74206 SUNDAY 13-APR-75 1:41.28 ZAP.B11 PAGE 1-9
495
496 .GLOBL ERRPRT
497 .GLOBL OPENLOC
498
499 .GLOBL $ENABL
500 .GLOBL $SIGN1
501 .GLOBL $SIGNL
502 .GLOBL $SAV3
503 .GLOBL SIGREG
504 .GLOBL SIGVAL
505
506
507
508
509
510
511
512
513
514 ; SIZE: 119+518
515 ; RUN TIME: 6 SECONDS
516 ; CORE USED: 16K
517 ; COMPILATION COMPLETE
518
519 001100' .END ZAP
ZAP MACRO M1108 05-DEC-77 23:52 PAGE 11-1
SYMBOL TABLE
ABORT = ****** G L$33 001144R P$AAF 000752R REALDO 001164RG SWITCH= ****** G
EOL = ****** G L$34 001130R P$AAG 000776R R$0 =%000000 TEMP 000254R
ERRPRT 000260RG L$35 001136R P$AAH 001030R R$1 =%000001 TRANSL= ****** G
FCSCLO= ****** G L$36 001154R P$AAI 001056R R$2 =%000002 U$36 001162R
FCSREA= ****** G L$6 000032R P$AAJ 000276R R$3 =%000003 ZAP 001100R
L$11 000206R L$9 000112R P$AAK 000332R R$4 =%000004 ZAPINI= ****** G
L$19 000232R OPENLO 000000RG P$AAL 000366R R$5 =%000005 ZAPPRO= ****** G
L$2 000252R OUTSA = ****** G P$AAM 000430R SEGMAX 001166RG $ENABL= ****** G
L$20 000236R P$AAB 000604R P$AAN 000460R SEGTAB 001172RG $SAV3 = ****** G
L$28 000150R P$AAC 000642R P$AAO 000516R SIGREG= ****** G $SIGNL= ****** G
L$3 000104R P$AAD 000676R P$AAP 000544R SIGVAL= ****** G $SIGN1= ****** G
L$32 001116R P$AAE 000732R P$AAQ 000564R STKLIM 001170RG
. ABS. 000000 000
002372 001
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 341 WORDS ( 2 PAGES)
DYNAMIC MEMORY: 3104 WORDS ( 11 PAGES)
ELAPSED TIME: 00:00:11
[62,10]ZAP,[62,20]ZAP/-SP=[62,30]ZAP.P11
ZIOSRV MACRO M1108 05-DEC-77 23:52
TABLE OF CONTENTS
2- 61 GLOBAL STORAGE
3- 122 COMAND -- COMMAND INPUT
4- 152 FCSREAD -- READ A BLOCK FROM TASK IMAGE
5- 188 REWRIT -- REWRITE BLOCK IF MODIFIED
6- 228 EOL -- WRITE LINE TO CONSOLE LOG
7- 255 ERROR HANDLERS
8- 270 TRANSLATE -- TRANSLATE VIRTUAL ADDRESS TO VBN AND BYTE
9- 317 BYTSXT -- BYTE SIGN EXTENSION
ZIOSRV MACRO M1108 05-DEC-77 23:52 PAGE 1
1 .TITLE ZIOSRV
2 .IDENT /000003/
3
4 ;+
5 ;
6 ; COPYRIGHT 1975
7 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
8 ;
9 ; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
10 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
11 ; EQUIPMENT CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES
12 ; NO RESPONSIBILITY FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
13 ;
14 ; THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO PURCHASER
15 ; UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE
16 ; COPIED (WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR
17 ; USE IN SUCH SYSTEM, EXCEPT AS MAY BE OTHERWISE BE PROVIDED IN
18 ; WRITING BY DIGITAL.
19 ;
20 ; DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE
21 ; USE OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT
22 ; SUPPLIED BY DIGITAL EQUIPMENT CORPORATION.
23 ;
24 ;
25 ; WRITTEN BY
26 ; M. JACK
27 ;
28 ; MODULE FUNCTION
29 ; I/O SERVICES FOR THE TASK IMAGE PATCHING UTILITY
30 ;
31 ;-
32
33
34 ;+
35 ; GLOBAL DEFINITIONS
36 ;-
37
38 .MCALL FSRSZ$, FDBDF$, FDAT$A, FDRC$A, FDBK$A, FDOP$A, NMBLK$
39 .MCALL GCMLB$, GCML$, READ$, WRITE$, WAIT$, PUT$S, FDOF$L
40 .MCALL FCSBT$, NBOF$L, GCMLD$, CSI$, CALL, RETURN
41
42 000010 CSIERR==8. ; ERROR IN FILE SPECIFICATION
43 000011 OPNERR==9. ; OPEN FAILURE ON TASK FILE
44 000012 CMIERR==10. ; ERROR ON COMMAND INPUT
45 000013 TRNERR==11. ; TRANSMIT ERROR ON TASK FILE
46
47 177777 SIGXIT==-1 ; SIGNAL VALUE FOR EXIT
48
49 000001 ABSOLU==1 ; /AB SWITCH BIT
50 000002 RDONLY==2 ; /RO SWITCH BIT
51 000004 LSTING==4 ; /LI SWITCH BIT
52
53 000000 FDOF$L
54 000000 FCSBT$
55 000000 NBOF$L
56 000000 GCMLD$
57 000000 CSI$
ZIOSRV MACRO M1108 05-DEC-77 23:52 PAGE 1-1
58
59 000000 FSRSZ$ 2
ZIOSRV MACRO M1108 05-DEC-77 23:52 PAGE 2
GLOBAL STORAGE
61 .SBTTL GLOBAL STORAGE
62
63
64 ;+
65 ; FILE DESCRIPTOR BLOCK FOR TASK IMAGE
66 ;-
67
68 000000 TSKFDB::FDBDF$
69 000140 FDRC$A FD.RWM
70 000140 FDBK$A BLKBUF,512.
71 000140 FDOP$A 6,CSIBLK+C.DSDS,TSKDFN
72
73 000140 TSKDFN: NMBLK$ ,TSK,,SY,0
74
75
76 ;+
77 ; FILE DESCRIPTOR BLOCK FOR OUTPUT DEVICE
78 ;-
79
80 000176 OUTFDB::FDBDF$
81 000336 FDAT$A R.VAR,FD.CR
82 000336 FDRC$A ,OUTBUF
83 000336 FDOP$A 2,,OUTDFN
84
85 000336 OUTDFN: NMBLK$ ZAP,CMO
86
87
88 ;+
89 ; CONTROL BLOCK FOR GET COMMAND LINE
90 ;-
91
92 000374 CMLBLK::GCMLB$ 1,ZAP
93
94 001002 015 012 137 UNDSCO: .ASCII <15><12>"_"
95 000003 UNDSCL= .-UNDSCO
96 .EVEN
97
98 000542' CMLLEN==CMLBLK+G.CMLD
99 000544' CMLADR==CMLBLK+G.CMLD+2
100
101
102 ;+
103 ; CONTROL BLOCK FOR COMMAND STRING INTERPRETER
104 ;-
105
106 001006 CSIBLK::.BLKB C.SIZE
107
108
109 ;+
110 ; MISCELLANEOUS STORAGE
111 ;-
112
113 001062 STATBK::.BLKW 5 ; STATISTICS BLOCK FOR OPEN
114 001074 SAVRAT::.BLKB S.FATT ; AREA TO SAVE FILE'S RECORD ATTRIBUTES
115 001112 BLKBUF::.BLKW 256. ; BUFFER FOR TASK IMAGE BLOCK
116 002112 OUTBUF::.BLKB 80. ; BUFFER FOR OUTPUT BLOCK
117 002232 BLKNUM::.BLKW 2 ; VBN OF TASK FILE
ZIOSRV MACRO M1108 05-DEC-77 23:52 PAGE 2-1
GLOBAL STORAGE
118 002236 WRITBK::.BLKW ; WRITE-BACK FLAG
119 002240 002112' OUTPTR::.WORD OUTBUF ; CURRENT BYTE IN OUTBUF
120 002242 SWITCH::.BLKW ; COMMAND-LEVEL SWITCH WORD
ZIOSRV MACRO M1108 05-DEC-77 23:52 PAGE 3
COMAND -- COMMAND INPUT
122 .SBTTL COMAND -- COMMAND INPUT
123
124 ;+
125 ;
126 ; GLOBAL ROUTINE COMAND
127 ;
128 ; FUNCTION
129 ; READ A COMMAND
130 ;
131 ; INPUTS
132 ; LINE INPUT VIA GCML$
133 ;
134 ; OUTPUTS
135 ; CMLLEN - LENGTH OF THE COMMAND IN BYTES
136 ; CMLADR - BUFFER CONTAINING COMMAND STRING IN ASCII
137 ; VALUE - NONE
138 ;
139 ;-
140
141 002244 COMAND::
142 002244 GCML$ #CMLBLK,#UNDSCO,#UNDSCL ; PROMPT FOR A COMMAND
143 002270 103015 BCC 2$ ; CONTINUE IF NO ERRORS
144 002272 122760 177766 000140 CMPB #GE.EOF,G.ERR(R0) ; CHECK FOR END OF FILE
145 002300 001403 BEQ 1$ ; CONTINUE IF IT IS EOF
146 002302 012700 000012 MOV #CMIERR,R0 ; ANOTHER ERROR - TERMINATE
147 002306 000513 BR ERROR ;
148 002310 012767 000001 176224 1$: MOV #1,CMLLEN ; FAKE AN "X" COMMAND ON EOF
149 002316 112777 000130 176220 MOVB #'X,@CMLADR ;
150 002324 2$: RETURN ; RETURN TO CALLER
ZIOSRV MACRO M1108 05-DEC-77 23:52 PAGE 4
FCSREAD -- READ A BLOCK FROM TASK IMAGE
152 .SBTTL FCSREAD -- READ A BLOCK FROM TASK IMAGE
153
154 ;+
155 ;
156 ; GLOBAL ROUTINE REG0 FCSREAD(VBN)
157 ;
158 ; FUNCTION
159 ; READ A BLOCK FROM THE TASK IMAGE INTO THE IN-CORE BUFFER
160 ; POSSIBLY, REWRITE THE EXISTING BLOCK
161 ;
162 ; INPUTS
163 ; VBN - POINTER TO A TWO-WORD VIRTUAL BLOCK NUMBER
164 ; BLKNUM - VBN OF THE BLOCK IN MEMORY
165 ;
166 ; OUTPUTS
167 ; BLKBUF - CONTAINS THE BLOCK IDENTIFIED BY VBN
168 ; VALUE - NONE
169 ;
170 ;-
171
172 002326 FCSREAD::
173 002326 022067 177700 CMP (R0)+,BLKNUM ; CHECK IF THE BLOCK IS ALREADY IN CORE
174 002332 001003 BNE 1$ ;
175 002334 021067 177674 CMP (R0),BLKNUM+2 ;
176 002340 001422 BEQ 2$ ;
177 002342 1$: CALL REWRIT ; REWRITE OLD BLOCK IF NEEDED
178 002346 011067 177662 MOV (R0),BLKNUM+2 ; COPY THE BLOCK NUMBER INTO BLKNUM
179 002352 011067 175510 MOV (R0),TSKFDB+F.BKVB+2 ; AND ALSO THE FDB
180 002356 014067 177650 MOV -(R0),BLKNUM ;
181 002362 011067 175476 MOV (R0),TSKFDB+F.BKVB
182 002366 READ$ #TSKFDB ; READ THE BLOCK
183 002376 103455 BCS TSKERR
184 002400 WAIT$ R0 ; WAIT FOR COMPLETION
185 002404 103452 BCS TSKERR ;
186 002406 2$: RETURN ; RETURN TO CALLER
ZIOSRV MACRO M1108 05-DEC-77 23:52 PAGE 5
REWRIT -- REWRITE BLOCK IF MODIFIED
188 .SBTTL REWRIT -- REWRITE BLOCK IF MODIFIED
189
190 ;+
191 ;
192 ; GLOBAL ROUTINE REWRIT
193 ;
194 ; FUNCTION
195 ; REWRITE A TASK IMAGE BLOCK IF IT HAS BEEN MODIFIED WHILE
196 ; IN CORE
197 ;
198 ; INPUTS
199 ; BLKBUF - TASK IMAGE BLOCK
200 ; WRITBK - IF NONZERO, BLOCK WAS MODIFIED
201 ;
202 ; OUTPUTS
203 ; WRITBK - CLEARED
204 ; VALUE - NONE
205 ;
206 ; NOTE
207 ; IF THE FILE WAS OPENED FOR READ-ONLY, NO WRITE IS ISSUED,
208 ; AS THIS WOULD CAUSE AN ERROR TO BE RETURNED
209 ;
210 ;-
211
212 002410 REWRIT::
213 002410 005767 177622 TST WRITBK ; TEST IF BLOCK MODIFIED
214 002414 001426 BEQ 2$ ; BLOCK WAS NOT MODIFIED
215 002416 005067 177614 CLR WRITBK ; CLEAR THE FLAG
216 002422 032767 000002 177612 BIT #RDONLY,SWITCH ; TEST IF READ-ONLY ACCESS
217 002430 001020 BNE 2$ ; BRANCH IF READONLY
218 002432 010046 MOV R0,-(SP) ; SAVE R0
219 002434 016767 177572 175422 MOV BLKNUM,TSKFDB+F.BKVB ; SET VBN INTO FDB
220 002442 016767 177566 175416 MOV BLKNUM+2,TSKFDB+F.BKVB+2
221 002450 WRITE$ #TSKFDB ; ISSUE THE WRITE
222 002460 103402 BCS 1$ ;
223 002462 WAIT$ R0 ; WAIT FOR COMPLETION
224 002466 012600 1$: MOV (SP)+,R0 ; RESTORE R0
225 002470 103420 BCS TSKERR ;
226 002472 2$: RETURN ; RETURN TO CALLER
ZIOSRV MACRO M1108 05-DEC-77 23:52 PAGE 6
EOL -- WRITE LINE TO CONSOLE LOG
228 .SBTTL EOL -- WRITE LINE TO CONSOLE LOG
229
230 ;+
231 ;
232 ; GLOBAL ROUTINE EOL
233 ;
234 ; FUNCTION
235 ; WRITE A LINE ON THE CONSOLE LOG
236 ;
237 ; INPUTS
238 ; OUTPTR - POINTER TO NEXT FREE BYTE IN OUTBUF
239 ; OUTBUF - BUFFER FOR PRINT LINE
240 ;
241 ; OUTPUTS
242 ; OUTPTR - REINITIALIZED
243 ; VALUE - NONE
244 ;
245 ;-
246
247 002474 EOL::
248 002474 016746 177540 MOV OUTPTR,-(SP) ; COMPUTE RECORD LENGTH
249 002500 162716 002112' SUB #OUTBUF,@SP ;
250 002504 PUT$S #OUTFDB,,(SP)+ ; WRITE THE RECORD
251 002520 103410 BCS TERMIN ; TERMINATE IF PUT FAILS
252 002522 012767 002112' 177510 MOV #OUTBUF,OUTPTR ; REINITIALIZE POINTER
253 002530 RETURN ; RETURN TO CALLER
ZIOSRV MACRO M1108 05-DEC-77 23:52 PAGE 7
ERROR HANDLERS
255 .SBTTL ERROR HANDLERS
256
257 ;+
258 ; ERROR HANDLERS FOR I/O PACKAGE
259 ;
260 ; TSKERR - OUTPUT I/O ERROR MESSAGE AND EXIT
261 ; ERROR - OUTPUT MESSAGE (NUMBER IN R0) AND EXIT
262 ; TERMIN - EXIT
263 ;-
264
265 002532 012700 000013 TSKERR::MOV #TRNERR,R0 ; SET MESSAGE NUMBER IN R0
266 002536 ERROR: CALL ERRPRT ; CALL ERROR MESSAGE OUTPUT ROUTINE
267 002542 012700 177777 TERMIN: MOV #SIGXIT,R0 ; SET SIGNAL VALUE IN R0
268 002546 000167 000000G JMP $SIGNL ; SIGNAL
ZIOSRV MACRO M1108 05-DEC-77 23:52 PAGE 8
TRANSLATE -- TRANSLATE VIRTUAL ADDRESS TO VBN AND BYTE
270 .SBTTL TRANSLATE -- TRANSLATE VIRTUAL ADDRESS TO VBN AND BYTE
271
272 ;+
273 ;
274 ; GLOBAL ROUTINE TRANSLATE(VIRORG,VIRADR,VBNOUT,BUFPTR)
275 ;
276 ; FUNCTION
277 ; PERFORM ADDRESS TRANSLATION FROM VIRTUAL TO REAL
278 ;
279 ; INPUTS
280 ; VIRORG - POINTER TO TWO WORD VIRTUAL ORIGIN DATA
281 ; VIRADR - THE VIRTUAL ADDRESS
282 ;
283 ; THE VIRTUAL ORIGIN IS A 32-BIT QUANTITY TO WHICH IS
284 ; ADDED THE DESIRED VIRTUAL ADDRESS, TO YIELD A NINE-BIT
285 ; BYTE OFFSET WITHIN BLOCK IN BITS 0-8 AND A 23-BIT
286 ; VIRTUAL BLOCK NUMBER IN BITS 9-31.
287 ;
288 ; OUTPUTS
289 ; VBNOUT - TWO WORD AREA FILLED WITH VBN AS CALCULATED
290 ; BUFPTR - POINTER WITHIN BLKBUF TO THE BYTE AS CALCULATED
291 ; VALUE - NONE
292 ;
293 ;-
294
295 002552 TRANSLATE::
296 002552 004167 000000G JSR R1,$SAV3 ; SAVE REGISTERS
297 002556 016602 000020 MOV 20(SP),R2 ; POINT TO VIRTUAL ORIGIN DATA
298 002562 012200 MOV (R2)+,R0 ; LOAD DATA INTO R0-R1
299 002564 011201 MOV @R2,R1 ;
300 002566 066601 000016 ADD 16(SP),R1 ; ADD THE VIRTUAL ADDRESS
301 002572 005500 ADC R0 ;
302 002574 016602 000012 MOV 12(SP),R2 ; POINT TO REAL ADDRESS OUTPUT WORD
303 002600 010112 MOV R1,@R2 ; PUT LOW ORDER 9 BITS THERE
304 002602 042712 177000 BIC #177000,@R2 ;
305 002606 062712 001112' ADD #BLKBUF,@R2 ; ADD ORIGIN OF BUFFER
306 002612 012703 000011 MOV #9.,R3 ; SHIFT VBN RIGHT 9 BITS INTO POSITION
307 002616 006200 1$: ASR R0 ;
308 002620 006001 ROR R1 ;
309 002622 005303 DEC R3 ;
310 002624 001374 BNE 1$ ;
311 002626 042700 177600 BIC #177600,R0 ; CLEAR HIGH-ORDER 9 BITS
312 002632 016602 000014 MOV 14(SP),R2 ; POINT TO VBN OUTPUT AREA
313 002636 010022 MOV R0,(R2)+ ; MOVE RESULT VBN
314 002640 010112 MOV R1,@R2 ;
315 002642 RETURN ; RETURN TO CALLER
ZIOSRV MACRO M1108 05-DEC-77 23:52 PAGE 9
BYTSXT -- BYTE SIGN EXTENSION
317 .SBTTL BYTSXT -- BYTE SIGN EXTENSION
318
319 ;+
320 ; GLOBAL ROUTINE REG0 BYTSXT(V)
321 ;
322 ; FUNCTION
323 ; SIGN EXTEND BYTE TO WORD
324 ;
325 ; INPUTS
326 ; V - BYTE
327 ;
328 ; OUTPUTS
329 ; VALUE - WORD
330 ;
331 ;-
332
333 002644 BYTSXT::
334 002644 110000 MOVB R0,R0 ; BECAUSE BLISS CAN'T
335 002646 RETURN ; RETURN TO CALLER
336
337 000001 .END
ZIOSRV MACRO M1108 05-DEC-77 23:52 PAGE 9-1
SYMBOL TABLE
ABSOLU= 000001 G FA.SHR= 000040 F.EFBK= 000010 G.CMLD= 000146 SAVRAT 001074RG
BLKBUF 001112RG FA.TMP= 000020 F.EFN = 000050 G.DPRM= 000160 SIGXIT= 177777 G
BLKNUM 002232RG FA.WRT= 000002 F.EOBB= 000032 G.ERR = 000140 STATBK 001062RG
BYTSXT 002644RG FCSREA 002326RG F.ERR = 000052 G.ISIZ= 000020 SWITCH 002242RG
CMIERR= 000012 G FD.BLK= 000010 F.FACC= 000043 G.LPDL= 000040 S.BFHD= 000020
CMLADR= 000544RG FD.CCL= 000002 F.FFBY= 000014 G.MODE= 000141 S.FATT= 000016
CMLBLK 000374RG FD.CR = 000002 F.FNAM= 000110 G.PSDS= 000142 S.FDB = 000140
CMLLEN= 000542RG FD.DIR= 000010 F.FNB = 000102 LSTING= 000004 G S.FNAM= 000006
COMAND 002244RG FD.FTN= 000001 F.FTYP= 000116 NB.DEV= 000200 S.FNB = 000036
CSIBLK 001006RG FD.INS= 000010 F.FVER= 000120 NB.DIR= 000100 S.FNBW= 000017
CSIERR= 000010 G FD.PLC= 000004 F.HIBK= 000004 NB.NAM= 000004 S.FNTY= 000004
CS.DIF= 000002 FD.RAH= 000001 F.LUN = 000042 NB.SD1= 000400 S.FTYP= 000002
CS.DVF= 000004 FD.RAN= 000002 F.MBCT= 000054 NB.SD2= 001000 S.NFEN= 000020
CS.EQU= 000040 FD.REC= 000001 F.MBC1= 000055 NB.SNM= 000040 TERMIN 002542R
CS.INP= 000001 FD.RWM= 000001 F.MBFG= 000056 NB.STP= 000020 TRANSL 002552RG
CS.MOR= 000020 FD.SDI= 000020 F.NRBD= 000024 NB.SVR= 000010 TRNERR= 000013 G
CS.NMF= 000001 FD.SQD= 000040 F.NREC= 000030 NB.TYP= 000002 TSKDFN 000140R
CS.OUT= 000002 FD.TTY= 000004 F.OVBS= 000030 NB.VER= 000001 TSKERR 002532RG
CS.WLD= 000010 FD.WBH= 000002 F.RACC= 000016 N.DID = 000024 TSKFDB 000000RG
C.CMLD= 000002 FO.APD= 000106 F.RATT= 000001 N.DVNM= 000032 UNDSCL= 000003
C.DEVD= 000006 FO.MFY= 000002 F.RCNM= 000034 N.FID = 000000 UNDSCO 001002R
C.DIRD= 000012 FO.RD = 000001 F.RCTL= 000017 N.FNAM= 000006 WRITBK 002236RG
C.DSDS= 000006 FO.UPD= 000006 F.RSIZ= 000002 N.FTYP= 000014 $SAV3 = ****** GX
C.FILD= 000016 FO.WRT= 000016 F.RTYP= 000000 N.FVER= 000016 $SIGNL= ****** GX
C.MKW1= 000024 F.ALOC= 000040 F.STBK= 000036 N.NEXT= 000022 $$ = 000067
C.MKW2= 000026 F.BBFS= 000062 F.UNIT= 000136 N.STAT= 000020 $$$ = 000554R
C.SIZE= 000054 F.BDB = 000070 F.URBD= 000020 N.UNIT= 000034 .FSRCB= ****** G
C.STAT= 000001 F.BGBC= 000057 F.VBN = 000064 OPNERR= 000011 G .GCML1= ****** G
C.SWAD= 000022 F.BKDN= 000026 F.VBSZ= 000060 OUTBUF 002112RG .PUTSQ= ****** G
C.TYPR= 000000 F.BKDS= 000020 GE.BIF= 177775 OUTDFN 000336R .READ = ****** G
EOL 002474RG F.BKEF= 000050 GE.CLO= 000004 OUTFDB 000176RG .WAIT = ****** G
ERROR 002536R F.BKP1= 000051 GE.COM= 000001 OUTPTR 002240RG .WRITE= ****** G
ERRPRT= ****** GX F.BKST= 000024 GE.EOF= 177766 PAR$$$= 000027 ...GBL= 000000
FA.APD= 000100 F.BKVB= 000064 GE.IND= 000002 RDONLY= 000002 G ...PC1= 000374R
FA.CRE= 000010 F.CNTG= 000034 GE.IOR= 177777 REWRIT 002410RG ...PC2= 000576R
FA.EXT= 000004 F.DFNB= 000046 GE.LC = 000010 R.FIX = 000001 ...PC3= 000374R
FA.NSP= 000100 F.DSPT= 000044 GE.MDE= 177774 R.VAR = 000002 ...TPC= 000020
FA.RD = 000001 F.DVNM= 000134 GE.OPR= 177776
. ABS. 000000 000
002650 001
$$FSR1 002040 002
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 4510 WORDS ( 18 PAGES)
DYNAMIC MEMORY: 5216 WORDS ( 20 PAGES)
ELAPSED TIME: 00:00:43
[62,10]ZIOSRV,[62,20]ZIOSRV/-SP=[62,30]ZIOSRV
ZLSTIO MACRO M1108 05-DEC-77 23:53 PAGE 2
2 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:35.30 ZLSTIO.B11 PAGE 1
3
4 ; 0001 MODULE ZLSTIO(IDENT="000002")=
5 ; 0002 BEGIN
6 ; 0003 !
7 ; 0004 ! COPYRIGHT 1975,
8 ; 0005 ! DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
9 ; 0006 !
10 ; 0007 ! THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
11 ; 0008 ! ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
12 ; 0009 ! OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
13 ; 0010 ! AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
14 ; 0011 !
15 ; 0012 ! THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
16 ; 0013 ! NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
17 ; 0014 ! EQUIPMENT CORPORATION.
18 ; 0015 !
19 ; 0016 ! DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY
20 ; 0017 ! OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
21 ; 0018 !
22 ; 0019 ! WRITTEN BY
23 ; 0020 ! M. JACK
24 ; 0021 !
25 ; 0022 ! MODULE FUNCTION
26 ; 0023 ! ASCII OUTPUT AND INTERNAL TO ASCII NUMERIC CONVERSIONS
27 ; 0024 ! FOR THE TASK IMAGE PATCH UTILITY
28 ; 0025
29 ; 0026 LINKAGE
30 ; 0027 REG0 = BLISS(REGISTER=0);
31 ; 0028
32 ; 0029 FORWARD
33 ; 0030 REG0 OUTC, ! SINGLE CHARACTER OUTPUT
34 ; 0031 REG0 OUTSA, ! ASCIZ STRING OUTPUT
35 ; 0032 REG0 OUTR50, ! RADIX50 STRING OUTPUT
36 ; 0033 OUTN; ! NUMERIC CONVERSION ROUTINE
37 ; 0034
38 ; 0035 REQUIRE STDMAC.BEG;
39 ; 0036 ! STDMAC.BEG - WIDELY USED STANDARD MACROS
40 ; 0037 !
41 ; 0055 SWITCHES LIST; SWITCHES LIST;
42 ; 0056 ! VERSION 000005
43 ; 0057 ! LAST MODIFIED 05/13/74 RBG
44 ; 0096 SWITCHES LIST; SWITCHES LIST;
45 ; 0097 ! STDMAC.BEG LAST LINE
46 ; 0098
47 ; 0099 REQUIRE STDSTR.BEG;
48 ; 0100 ! STDSTR.BEG - WIDELY USED STANDARD STRUCTURES
49 ; 0101 !
50 ; 0119 SWITCHES LIST; SWITCHES LIST;
51 ; 0120 ! VERSION 000003
52 ; 0121 ! LAST MODIFIED 02/28/74 RBG
53 ; 0135 SWITCHES LIST; SWITCHES LIST;
54 ; 0136 ! STDSTR.BEG LAST LINE
55 ; 0137
ZLSTIO MACRO M1108 05-DEC-77 23:53 PAGE 3
57 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:35.32 ZLSTIO.B11 PAGE 1-1
58
59 ; 0138 PSECT
60 ; 0139 CODE=" ", GLOBAL=" ", OWN=" ";
61 ; 0140
62 ; 0141 EXTERNAL
63 ; 0142 OUTPTR; ! NEXT CHARACTER POSITION IN OUTPUT BUFFER
64 ; 0143
65 ; 0144 OWN
66 ; 0145 OWNBUF[4]; ! A SHORT OWN BUFFER
67 ; 0146
68 ; 0147
69 ; 0148
70 ; 0149 MACRO
71 ; 0150 OUTCHAR(X)= ((.OPTR)<0,8>=(X);
72 ; 0151 OPTR=.OPTR+1;)$;
73 ; 0152
74 ; 0153 COMMENT ! OUTC(X)
75 ; 0154 !
76 ; 0155 ! FUNCTION
77 ; 0156 ! PLACE A SINGLE CHARACTER IN OUTPUT BUFFER
78 ; 0157 ! INPUTS
79 ; 0158 ! X - ASCII CHARACTER
80 ; 0159 ! OUTPTR - OUTPUT BUFFER POINTER
81 ; 0160 ! OUTPUTS
82 ; 0161 ! VALUE - NONE
83 ; 0162 ! OUTPTR - UPDATED
84 ; 0163 !
85 ; 0164 GLOBAL ROUTINE REG0 OUTC(X)=
86 ; 0165 BEGIN
87 ; 0166 BIND OPTR=OUTPTR;
88 ; 0167 OUTCHAR(.X);
89 ; 0168 NOVALUE
90 ; 0169 END;
91 .TITLE ZLSTIO
92 .IDENT /000002/
93 000000 .PSECT
94
95
96 000000 R$0=%0
97 000001 R$1=%1
98 000002 R$2=%2
99 000003 R$3=%3
100 000004 R$4=%4
101 000005 R$5=%5
102 000006 SP=%6
103 000007 PC=%7
104
105
106 000000 OUTC:
107 000000 110077 000000G MOVB R$0,@OUTPTR
108 000004 005267 000000G INC OUTPTR
109 000010 000207 RTS PC
110
ZLSTIO MACRO M1108 05-DEC-77 23:53 PAGE 4
112 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:35.34 ZLSTIO.B11 PAGE 1-2
113
114 ; ROUTINE SIZE: 5
115
116
117
118
119
120 ; 0170 COMMENT ! OUTSA(P)
121 ; 0171 !
122 ; 0172 ! FUNCTION
123 ; 0173 ! COPY AN ASCIZ STRING TO OUTPUT BUFFER
124 ; 0174 ! INPUTS
125 ; 0175 ! P - POINTER TO ASCIZ STRING
126 ; 0176 ! OUTPTR - OUTPUT BUFFER POINTER
127 ; 0177 ! OUTPUTS
128 ; 0178 ! VALUE - NONE
129 ; 0179 ! OUTPTR - UPDATED
130 ; 0180 !
131 ; 0181 GLOBAL ROUTINE REG0 OUTSA(P)=
132 ; 0182 BEGIN
133 ; 0183 REGISTER IPTR,OPTR;
134 ; 0184 MACRO INCHAR=(.IPTR)<0,8>$;
135 ; 0185 OPTR=.OUTPTR;
136 ; 0186 IPTR=.P;
137 ; 0187 UNTIL .INCHAR EQL 0 DO
138 ; 0188 BEGIN
139 ; 0189 OUTCHAR(.INCHAR);
140 ; 0190 IPTR=.IPTR+1;
141 ; 0191 END;
142 ; 0192 OUTPTR=.OPTR;
143 ; 0193 NOVALUE
144 ; 0194 END;
145
146
147 000012 OUTSA:
148 000012 004167 000000G JSR R$1,$SAV2
149 000016 013701 000000G MOV @#OUTPTR,R$1
150 000022 010002 MOV R$0,R$2
151 000024 105712 L$4: TSTB @R$2
152 000026 001402 BEQ U$2
153 000030 112221 MOVB (R$2)+,(R$1)+
154 000032 000774 BR L$4
155 000034 010167 000000G U$2: MOV R$1,OUTPTR
156 000040 000207 RTS PC
157
158 ; ROUTINE SIZE: 12
159
160
161
162
163
ZLSTIO MACRO M1108 05-DEC-77 23:53 PAGE 5
165 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:35.37 ZLSTIO.B11 PAGE 1-3
166
167 ; 0195 COMMENT ! OUTR50(P)
168 ; 0196 !
169 ; 0197 ! FUNCTION
170 ; 0198 ! CONVERT AND OUTPUT RADIX50 WORD
171 ; 0199 ! INPUTS
172 ; 0200 ! P - RADIX50 WORD
173 ; 0201 ! OUTPUTS
174 ; 0202 ! VALUE - NONE
175 ; 0203 ! OUTPTR - UPDATED
176 ; 0204 !
177 ; 0205 GLOBAL ROUTINE REG0 OUTR50(P)=
178 ; 0206 BEGIN
179 ; 0207
180 ; 0208 BIND
181 ; 0209 DIVTAB = UPLIT(1, #50, #3100);
182 ; 0210 LOCAL
183 ; 0211 J;
184 ; 0212
185 ; 0213 DECR I FROM 2 TO 0 DO
186 ; 0214 BEGIN
187 ; 0215 J = 0;
188 ; 0216 UNTIL ((P = .P - .DIVTAB[.I]) ROT 1) DO J = .J + 1;
189 ; 0217 P = .P + .DIVTAB[.I];
190 ; 0218 IF .J NEQ 0
191 ; 0219 THEN
192 ; 0220 BEGIN
193 ; 0221 IF .J NEQ #33
194 ; 0222 THEN
195 ; 0223 BEGIN
196 ; 0224 IF .J LSS #33 THEN J = .J + #56;
197 ; 0225 J = .J + #11;
198 ; 0226 END;
199 ; 0227 J = .J + #11;
200 ; 0228 END;
201 ; 0229 OUTC(.J);
202 ; 0230 END;
203 ; 0231 NOVALUE
204 ; 0232 END;
205
206
207 000042 OUTR50:
208 000042 004167 000000G JSR R$1,$SAV4
209 000046 010003 MOV R$0,R$3
210 000050 012704 000002 MOV #2,R$4
211 000054 005002 L$10: CLR R$2
212 000056 010401 MOV R$4,R$1
213 000060 006301 ASL R$1
214 000062 016101 000152' MOV P$AAB(R$1),R$1
215 000066 160103 L$12: SUB R$1,R$3
216 000070 010300 MOV R$3,R$0
217 000072 006100 ROL R$0
218 000074 006000 ROR R$0
ZLSTIO MACRO M1108 05-DEC-77 23:53 PAGE 6
220 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:35.41 ZLSTIO.B11 PAGE 1-4
221
222 000076 103402 BLO U$10
223 000100 005202 INC R$2
224 000102 000771 BR L$12
225 000104 060103 U$10: ADD R$1,R$3
226 000106 005702 TST R$2
227 000110 001412 BEQ L$16
228 000112 020227 000033 CMP R$2,#33
229 000116 001405 BEQ L$18
230 000120 002002 BGE L$20
231 000122 062702 000056 ADD #56,R$2
232 000126 062702 000011 L$20: ADD #11,R$2
233 000132 062702 000011 L$18: ADD #11,R$2
234 000136 010200 L$16: MOV R$2,R$0
235 000140 004767 177634 JSR PC,OUTC
236 000144 005304 DEC R$4
237 000146 002342 BGE L$10
238 000150 000207 RTS PC
239
240 ; ROUTINE SIZE: 36
241
242
243 000152 .PSECT
244
245 000152 000001 000050 003100 P$AAB: .WORD 1,50,3100
246
247
248
249 ; 0233 COMMENT ! OUTN(NUM,REQ)
250 ; 0234 !
251 ; 0235 ! FUNCTION
252 ; 0236 ! OCTAL CONVERSION ACCORDING TO SPECIFIED WIDTH
253 ; 0237 ! CONVERTED NUMBER IS PLACE IN OUTPUT BUFFER
254 ; 0238 ! AS POINTED TO BY OUTPTR.
255 ; 0239 ! INPUTS
256 ; 0240 ! NUM - 16-BIT QUANTITY TO BE CONVERTED
257 ; 0241 ! REQ - WIDTH SPECIFICATION
258 ; 0242 ! OUTPUTS
259 ; 0243 ! VALUE - NONE
260 ; 0244 ! OUTPTR - UPDATED
261 ; 0245 !
262 ; 0246 GLOBAL ROUTINE OUTN(NUM,REQ)=
263 ; 0247 BEGIN
264 ; 0248 BIND
265 ; 0249 N =OWNBUF[0], ! VALUE BEING CONVERTED
266 ; 0250 RD =OWNBUF[1]; ! REMAINING FIELD WIDTH TO FILL
267 ; 0251 BIND OPTR=OUTPTR;
268 ; 0252
269 ; 0253 ROUTINE XN= ! RECURSIVE DIVISION ROUTINE
270 ; 0254 BEGIN
271 ; 0255 LOCAL
272 ; 0256 R; ! REMAINDER ON DIVISION (RECURSIVELY LOCAL)
ZLSTIO MACRO M1108 05-DEC-77 23:53 PAGE 7
274 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:35.42 ZLSTIO.B11 PAGE 1-5
275
276 ; 0257 IF .N EQL 0
277 ; 0258 THEN WHILE (RD=.RD-1) GEQ 0
278 ; 0259 DO OUTCHAR("0")
279 ; 0260 ELSE
280 ; 0261 BEGIN
281 ; 0262 R = .N<0,3>;
282 ; 0263 N = .N<3,13>;
283 ; 0264 RD=.RD-1;
284 ; 0265 XN();
285 ; 0266 OUTCHAR("0"+.R);
286 ; 0267 END;
287 ; 0268 NOVALUE
288 ; 0269 END;
289 ; 0270
290
291 000160 .PSECT
292
293
294 000160 XN:
295 000160 004167 000000G JSR R$1,$SAV2
296 000164 012700 000352' MOV #OWNBUF+2,R$0
297 000170 012701 000000G MOV #OUTPTR,R$1
298 000174 005737 000350' TST @#OWNBUF
299 000200 001011 BNE L$27
300 000202 011002 L$26: MOV @R$0,R$2
301 000204 005302 DEC R$2
302 000206 010210 MOV R$2,@R$0
303 000210 002433 BLT L$31
304 000212 112771 000060 000000 MOVB #60,@0(R$1)
305 000220 005211 INC @R$1
306 000222 000767 BR L$26
307 000224 113702 000350' L$27: MOVB @#OWNBUF,R$2
308 000230 042702 177770 BIC #177770,R$2
309 000234 016746 000110 MOV OWNBUF,-(SP)
310 000240 006216 ASR @SP
311 000242 006216 ASR @SP
312 000244 006216 ASR @SP
313 000246 012667 000076 MOV (SP)+,OWNBUF
314 000252 042767 160000 000070 BIC #160000,OWNBUF
315 000260 005310 DEC @R$0
316 000262 004767 177672 JSR PC,XN
317 000266 062702 000060 ADD #60,R$2
318 000272 110271 000000 MOVB R$2,@0(R$1)
319 000276 005211 INC @R$1
320 000300 000207 L$31: RTS PC
321
322 ; ROUTINE SIZE: 41
323
324
325
326
ZLSTIO MACRO M1108 05-DEC-77 23:53 PAGE 8
328 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:35.45 ZLSTIO.B11 PAGE 1-6
329
330
331 ; 0271 RD = .REQ;
332 ; 0272 IF (N=.NUM) EQL 0
333 ; 0273 THEN
334 ; 0274 BEGIN
335 ; 0275 WHILE (RD=.RD-1) GEQ 0
336 ; 0276 DO OUTCHAR("0");
337 ; 0277 RETURN NOVALUE;
338 ; 0278 END;
339 ; 0279 XN();
340 ; 0280 NOVALUE
341 ; 0281 END;
342 ; 0282
343
344
345 000302 OUTN:
346 000302 012700 000352' MOV #OWNBUF+2,R$0
347 000306 016610 000002 MOV 2(SP),@R$0
348 000312 016667 000004 000030 MOV 4(SP),OWNBUF
349 000320 001010 BNE L$35
350 000322 005310 L$34: DEC @R$0
351 000324 100410 BMI L$33
352 000326 112777 000060 000000G MOVB #60,@OUTPTR
353 000334 005267 000000G INC OUTPTR
354 000340 000770 BR L$34
355 000342 000167 177612 L$35: JMP XN
356 000346 000207 L$33: RTS PC
357
358 ; ROUTINE SIZE: 19
359
360
361
362
363
364 ; 0283 END
365 ; 0284 ELUDOM
366
367
368 000350 ZLSTIO:
369
370 ; ROUTINE SIZE: 0
371
372
373 000350 .PSECT
374
375 000350 000360' OWNBUF: .=.+10
376 .GLOBL OUTN
377 .GLOBL OUTR50
378 .GLOBL OUTSA
379 .GLOBL OUTPTR
ZLSTIO MACRO M1108 05-DEC-77 23:53 PAGE 9
381 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:35.51 ZLSTIO.B11 PAGE 1-7
382
383 .GLOBL OUTC
384
385 .GLOBL $SAV4
386 .GLOBL $SAV2
387
388
389
390
391
392
393
394
395
396 ; SIZE: 113+7
397 ; RUN TIME: 6 SECONDS
398 ; CORE USED: 14K
399 ; COMPILATION COMPLETE
400
401 000001 .END
ZLSTIO MACRO M1108 05-DEC-77 23:53 PAGE 9-1
SYMBOL TABLE
L$10 000054R L$31 000300R OUTN 000302RG R$0 =%000000 U$10 000104R
L$12 000066R L$33 000346R OUTPTR= ****** G R$1 =%000001 U$2 000034R
L$16 000136R L$34 000322R OUTR50 000042RG R$2 =%000002 XN 000160R
L$18 000132R L$35 000342R OUTSA 000012RG R$3 =%000003 ZLSTIO 000350R
L$20 000126R L$4 000024R OWNBUF 000350R R$4 =%000004 $SAV2 = ****** G
L$26 000202R OUTC 000000RG P$AAB 000152R R$5 =%000005 $SAV4 = ****** G
L$27 000224R
. ABS. 000000 000
000360 001
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 199 WORDS ( 1 PAGES)
DYNAMIC MEMORY: 3104 WORDS ( 11 PAGES)
ELAPSED TIME: 00:00:08
[62,10]ZLSTIO,[62,20]ZLSTIO/-SP=[62,30]ZLSTIO.P11
BLILIB MACRO M1108 05-DEC-77 23:53
TABLE OF CONTENTS
2- 36 SIGNAL/ENABLE CALLING SEQUENCES
3- 61 SIGNAL/ENABLE ROUTINES
3- 104 SIGNAL/ENABLE GLOBAL VARIABLES
4- 111 REGISTER SAVE/RESTORE COROUTINES
BLILIB MACRO M1108 05-DEC-77 23:53 PAGE 1
1 .TITLE BLILIB
2 .IDENT /000006/
3
4 ; COPYRIGHT 1973,1974 DIGITAL EQUIPMENT CORP.
5 ; MAYNARD, MASS.
6 ;
7 ; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
8 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY
9 ; DIGITAL EQUIPMENT CORPORATION. DIGITAL EQUIPMENT CORPORATION
10 ; ASSUMES NO RESPONSIBILITY FOR ANY ERRORS THAT MAY APPEAR
11 ; IN THIS DOCUMENT.
12 ;
13 ; THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO
14 ; THE PURCHASER UNDER A LICENSE FOR USE ON A SINGLE COMPUTER
15 ; SYSTEM AND CAN BE COPIED (WITH INCLUSION OF DIGITAL'S
16 ; COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT AS MAY
17 ; OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
18 ;
19 ; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
20 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
21
22 ; WRITTEN BY
23 ; R. GROVE
24 ; P. KNUEVEN
25
26 ; THIS MODULE PROVIDES RUN-TIME, OUT-OF-LINE SUPPORT
27 ; FOR BLISS COMPILER-GENERATED CALLS.
28 ; IN PARTICULAR, SUPPORT ROUTINES HAVING NO REASONABLE
29 ; EXPRESSION IN BLISS ARE INCLUDED IN THIS MODULE.
30
31 .MACRO CHKSP
32 CMP SP,STKLIM
33 BLOS STKOV
34 .ENDM
BLILIB MACRO M1108 05-DEC-77 23:53 PAGE 2
SIGNAL/ENABLE CALLING SEQUENCES
36 .SBTTL SIGNAL/ENABLE CALLING SEQUENCES
37 ; ENABLE
38 ;
39 ; MOV #N,R0 STACK OFFSET TO ENABLE FRAME
40 ; JSR PC,$ENABL SET UP ENABLE FRAME
41 ; A: .WORD B-(A+2)
42 ; A+2: SELECT BODY FOR ENABLE
43 ; . . .
44 ; END OF ENABLE BODY
45 ; B:
46
47 ; SIGNAL .V
48 ; MOV V,R0
49 ; JMP $SIGNL
50
51 ; RE-SIGNAL FROM ENABLE BODY (SIGNAL .SIGVAL)
52 ; JMP $SIGN1
53
54 ; SIGNAL/ENABLE DATA STRUCTURE
55 ;
56 ; AN ENABLE STACK FRAME LOOKS LIKE:
57 ; +4: SAVED PC ENA.PC
58 ; +2: SAVED SP ENA.SP
59 ; SIGREG---> +0: OLD SIGREG ENA.SIGREG
BLILIB MACRO M1108 05-DEC-77 23:53 PAGE 3
SIGNAL/ENABLE ROUTINES
61 .SBTTL SIGNAL/ENABLE ROUTINES
62 ; GLOBAL ROUTINE REGISTER0 $ENABL(R0)=
63 ;
64 ; FUNCTION
65 ; BUILD AN ENABLE FRAME AS DESCRIBED ABOVE
66 ; INPUTS
67 ; R0 - STACK DISPLACEMENT TO LAST WORD OF ENABLE FRAME
68 ; OUTPUTS
69 ; VALUE - NONE
70 ; STACK - ENABLE FRAME POINTED AT BY SIGREG
71 ; STACK PICTURE ON ENTRY
72 ; +N : ENA.PC
73 ; +N-2: ENA.SP
74 ; +N-4: ENA.SIGREG
75 ; ...
76 ; +0 : A (RETURN ADDRESS)
77
78 000000 $ENABL::
79 000000 060600 ADD SP,R0 ; R0 NOW POINTS TO ENA.PC
80 000002 011610 MOV (SP),(R0)
81 000004 062710 000002 ADD #2,(R0) ; ENA.PC = A+2
82 000010 017616 000000 MOV @0(SP),(SP) ; PICK UP (B-(A+2)) FROM CODE
83 000014 061016 ADD (R0),(SP) ; RETURN FROM $ENABL = B
84
85 000016 010640 MOV SP,-(R0)
86 000020 062710 000002 ADD #2,(R0) ; ENA.SP = .SP+2
87
88 000024 016740 000002' MOV SIGREG,-(R0) ; ENA.SIGREG = .SIGREG
89 000030 010067 000002' MOV R0,SIGREG ; ADD NEW FRAME TO CHAIN
90 000034 000207 RTS PC
91
92 ; GLOBAL ENTRY REGISTER0 $SIGNL(R0)=
93 000036 $SIGNL::
94 000036 010067 000000' MOV R0,SIGVAL ; SET VALUE SIGNALLED
95
96 ; GLOBAL ENTRY $SIGN1=
97 000042 $SIGN1::
98 000042 016700 000002' MOV SIGREG,R0 ; GET POINTER TO LAST ENABLE FRAME
99 000046 012067 000002' MOV (R0)+,SIGREG ; POP ENABLE STACK ONE LEVEL
100 000052 012006 MOV (R0)+,SP ; RESTORE STACK
101 000054 000130 JMP @(R0)+ ; GO TO ENABLE BODY
102
103
104 .SBTTL SIGNAL/ENABLE GLOBAL VARIABLES
105
106 000000 .PSECT $GBL
107 000000 SIGVAL::.BLKW
108 000002 177777 SIGREG::.WORD -1 ; ODD ADDRESS FAULT FORCED AT LEVEL 0
109 000056 .PSECT
BLILIB MACRO M1108 05-DEC-77 23:53 PAGE 4
REGISTER SAVE/RESTORE COROUTINES
111 .SBTTL REGISTER SAVE/RESTORE COROUTINES
112
113 ; THE ROUTINE $SAVN IS CALLED AT THE BEGINNING OF A
114 ; ROUTINE WHICH MODIFIES THE CONTENTS OF R1-RN
115 ; THE CALLING SEQUENCE IS
116 ; JSR R1,$SAVN
117 ;
118 ; NOTES: 1. BLISS-11 DOES NOT GENERATE CALLS FOR $SAV1
119 ; 2. STACK OVERFLOW CHECKING IS INCLUDED IN THESE ROUTINES
120 ; A "SIGNAL 1" IS EXECUTED ON STACK OVERFLOW
121
122 000056 010246 $SAV2:: MOV R2,-(SP)
123 000060 010146 MOV R1,-(SP)
124 000062 016601 000004 MOV 4(SP),R1
125 000066 CHKSP
126 000074 004736 JSR PC,@(SP)+
127 000076 000443 BR RE2
128
129 000100 010246 $SAV3:: MOV R2,-(SP)
130 000102 010346 MOV R3,-(SP)
131 000104 010146 MOV R1,-(SP)
132 000106 016601 000006 MOV 6(SP),R1
133 000112 CHKSP
134 000120 004736 JSR PC,@(SP)+
135 000122 000430 BR RE3
136
137 000124 010246 $SAV4:: MOV R2,-(SP)
138 000126 010346 MOV R3,-(SP)
139 000130 010446 MOV R4,-(SP)
140 000132 010146 MOV R1,-(SP)
141 000134 016601 000010 MOV 8.(SP),R1
142 000140 CHKSP
143 000146 004736 JSR PC,@(SP)+
144 000150 000414 BR RE4
145
146 000152 010246 $SAV5:: MOV R2,-(SP)
147 000154 010346 MOV R3,-(SP)
148 000156 010446 MOV R4,-(SP)
149 000160 010546 MOV R5,-(SP) ; STACK NOW HAS R1,R2,R3,R4,R5
150 000162 010146 MOV R1,-(SP) ; RESUME POINT FOR COROUTINE CALL
151 000164 016601 000012 MOV 10.(SP),R1 ; RESTORE ORIGINAL R1
152 000170 CHKSP
153 000176 004736 JSR PC,@(SP)+
154
155 000200 012605 MOV (SP)+,R5 ; RESTORE SAVED REGISTERS
156 000202 012604 RE4: MOV (SP)+,R4
157 000204 012603 RE3: MOV (SP)+,R3
158 000206 012602 RE2: MOV (SP)+,R2
159 000210 012601 RE1: MOV (SP)+,R1
160 000212 000207 RTS PC
161
162 000214 012700 000001 STKOV: MOV #1,R0 ; SIGNAL 1 ON STACK LIMIT
163 000220 000706 BR $SIGNL
164
165 000001 .END
BLILIB MACRO M1108 05-DEC-77 23:53 PAGE 4-1
SYMBOL TABLE
RE1 000210R RE4 000202R STKLIM= ****** GX $SAV2 000056RG $SAV5 000152RG
RE2 000206R SIGREG 000002RG 002 STKOV 000214R $SAV3 000100RG $SIGNL 000036RG
RE3 000204R SIGVAL 000000RG 002 $ENABL 000000RG $SAV4 000124RG $SIGN1 000042RG
. ABS. 000000 000
000222 001
$GBL 000004 002
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 159 WORDS ( 1 PAGES)
DYNAMIC MEMORY: 3104 WORDS ( 11 PAGES)
ELAPSED TIME: 00:00:05
[62,10]ZBLILB,[62,20]ZBLILB/-SP=[62,30]ZBLILB
ZINIT MACRO M1108 05-DEC-77 23:53 PAGE 2
2 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:32.25 ZIN11M.B11 PAGE 1
3
4 ; 0001 MODULE ZINIT(IDENT="11M005")=
5 ; 0002 BEGIN
6 ; 0003
7 ; 0004 !
8 ; 0005 !
9 ; 0006 ! COPYRIGHT 1975,
10 ; 0007 ! DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
11 ; 0008 !
12 ; 0009 ! THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
13 ; 0010 ! ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
14 ; 0011 ! OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
15 ; 0012 ! AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
16 ; 0013 !
17 ; 0014 ! THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
18 ; 0015 ! NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
19 ; 0016 ! EQUIPMENT CORPORATION.
20 ; 0017 !
21 ; 0018 ! DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY
22 ; 0019 ! OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
23 ; 0020 !
24 ; 0021 ! WRITTEN BY
25 ; 0022 ! M. JACK
26 ; 0023 !
27 ; 0024 ! MODULE FUNCTION
28 ; 0025 ! TASK-IMAGE PATCHING UTILITY FOR USE WITH RSX-11D AND RSX-11M
29 ; 0026 !
30 ; 0027 !
31 ; 0028
32 ; 0029 LINKAGE
33 ; 0030 REG0 = BLISS(REGISTER=0);
34 ; 0031
35 ; 0032 FORWARD
36 ; 0033 ZAPINIT,
37 ; 0034 DOOVERLAY;
38 ; 0035
39 ; 0036
40 ; 0037 REQUIRE STDMAC.BEG;
41 ; 0038 ! STDMAC.BEG - WIDELY USED STANDARD MACROS
42 ; 0039 !
43 ; 0057 SWITCHES LIST; SWITCHES LIST;
44 ; 0058 ! VERSION 000005
45 ; 0059 ! LAST MODIFIED 05/13/74 RBG
46 ; 0098 SWITCHES LIST; SWITCHES LIST;
47 ; 0099 ! STDMAC.BEG LAST LINE
48 ; 0100
49 ; 0101 REQUIRE STDSTR.BEG;
50 ; 0102 ! STDSTR.BEG - WIDELY USED STANDARD STRUCTURES
51 ; 0103 !
52 ; 0121 SWITCHES LIST; SWITCHES LIST;
53 ; 0122 ! VERSION 000003
54 ; 0123 ! LAST MODIFIED 02/28/74 RBG
55 ; 0137 SWITCHES LIST; SWITCHES LIST;
ZINIT MACRO M1108 05-DEC-77 23:53 PAGE 3
57 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:32.26 STDSTR.BEG PAGE 1-1
58
59 ; 0138 ! STDSTR.BEG LAST LINE
60 ; 0139
61 ; 0140 REQUIRE ZAP.BEG;
62 ; 0141 ! ZAP.BEG - BEGIN FILE FOR ZAP
63 ; 0142 !
64 ; 0152 SWITCHES LIST; SWITCHES LIST;
65 ; 0153 !
66 ; 0154 ! VERSION 000002
67 ; 0155 ! LAST MODIFIED 09/01/74
68 ; 0156 !
69 ; 0157
70 ; 0158 STRUCTURE
71 ; 0159 BUFFER[I] = (.BUFFER + .I)<0,16>;
72 ; 0160
73 ; 0161 BIND
74 ; 0162 SEGSIZ= 5, ! LENGTH OF SEGMENT TABLE ENTRY
75 ; 0163 SEGENT= 64; ! NUMBER OF SEGMENT TABLE ENTRIES
76 ; 0164
77 ; 0165 MACRO
78 ; 0166 SEGBLK= 0,0,16$, ! STARTING DISK BLOCK (SEGMENT "NAME")
79 ; 0167 SEGLOW= 1,0,16$, ! LOW ADDRESS
80 ; 0168 SEGHIGH=2,0,16$, ! HIGH ADDRESS PLUS ONE
81 ; 0169 SEGVIRT=3,0,16$, ! VIRTUAL ORIGIN DATA
82 ; 0170 SEGVIR1=3,0,16$, ! HIGH ORDER WORD OF SEGVIRT
83 ; 0171 SEGVIR0=4,0,16$, ! LOW ORDER WORD OF SEGVIRT
84 ; 0172 SEGVIRW=4,0,9$, ! WORD OFFSET PART OF SEGVIRT
85 ; 0173 SEGNEXT=5,0,16$; ! OFFSET TO NEXT ENTRY
86 ; 0174
87 ; 0175 MACRO
88 ; 0176 ABSOLUTE=0,0,1$, ! /AB SWITCH BIT
89 ; 0177 READONLY=0,1,1$, ! /RO SWITCH BIT
90 ; 0178 LISTING=0,2,1$; ! /LI SWITCH BIT
91 ; 0179
92 ; 0180 BIND
93 ; 0181 NORELO= 0, ! NO SUCH RELOCATION REGISTER
94 ; 0182 ADROOB= 1, ! ADDRESS NOT WITHIN SEGMENT
95 ; 0183 NOSEGM= 2, ! NO SUCH SEGMENT
96 ; 0184 BADARG= 3, ! BAD ARGUMENT COUNT
97 ; 0185 NOSPEC= 4, ! NO SUCH SPECIAL REGISTER
98 ; 0186 BADCMD= 5, ! UNRECOGNIZABLE COMMAND
99 ; 0187 NOOPEN= 6, ! NO OPEN LOCATION
100 ; 0188 NOBYTE= 7, ! CANNOT USE IN BYTE MODE
101 ; 0189 BADTSK= 12, ! BAD TASK IMAGE
102 ; 0190 VFYREJ= 13, ! VERIFY REJECT
103 ; 0191 NOTYET= 14; ! NOT YET IMPLEMENTED
104 ; 0192
105 ; 0193 BIND
106 ; 0194 SIGXIT= -1, ! SIGNAL VALUE FOR EXIT
107 ; 0195 SIGADR= -2; ! SIGNAL VALUE FOR ADDRESS ERROR
108 ; 0196
109 ; 0197 !
110 ; 0198 ! ZAP.BEG LAST LINE
ZINIT MACRO M1108 05-DEC-77 23:53 PAGE 4
112 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:32.27 ZAP.BEG PAGE 1-2
113
114 ; 0199
115 ; 0200
116 ; 0201 PSECT
117 ; 0202 CODE=" ", OWN=" ", GLOBAL=" ";
118 ; 0203
119 ; 0204 MACRO
120 ; 0205 SGBLK= 0,0,12$, ! DISK BLOCK
121 ; 0206 SGLDA= 1,0,16$, ! LOAD ADDRESS
122 ; 0207 SGLNG= 2,0,16$, ! LENGTH
123 ; 0208 SGUP= 3,0,16$, ! LINK UP
124 ; 0209 SGNXT= 5,0,16$; ! LINK NEXT
125 ; 0210
126 ; 0211 EXTERNAL
127 ; 0212 OPENLOC, ! OPEN A LOCATION IN TASK SPACE
128 ; 0213 FCSOPEN, ! OPEN FILES
129 ; 0214 REG0 FCSREAD, ! READ TASK IMAGE BLOCK
130 ; 0215 REG0 VIRTZERO, ! CALCULATE OVERLAY VIRTUAL ZERO
131 ; 0216 ROVZRO, ! VIRTUAL-ZERO CALC FOR RO PSECTS
132 ; 0217 REG0 OUTC, ! OUTPUT CHARACTER
133 ; 0218 REG0 OUTSA, ! OUTPUT ASCIZ STRING
134 ; 0219 OUTN, ! OUTPUT NUMBER
135 ; 0220 REG0 ERRPRT, ! ERROR MESSAGE OUTPUT
136 ; 0221 EOL; ! OUTPUT RECORD
137 ; 0222
138 ; 0223 EXTERNAL
139 ; 0224 REALDOT, ! VALUE OF DOT IN BUFFER
140 ; 0225 PBLOCK SEGMAX, ! UPPER LIMIT OF SEGTAB
141 ; 0226 VECBLOCK SEGTAB[SEGSIZ,SEGENT], ! SEGMENT DESCRIPTION TABLE
142 ; 0227 BLOCK SWITCH, ! COMMAND SWITCHES
143 ; 0228 BUFFER BLKBUF; ! TASK IMAGE BLOCK BUFFER
144 ; 0229
145 ; 0230 OWN
146 ; 0231 ROOTSEG; ! SEGMENT-ID OF ROOT SEGMENT
147 ; 0232
148 ; 0233
149 ; 0234
150 ; 0235
151 ; 0236
152 ; 0237 COMMENT ! ZAPINIT
153 ; 0238 !
154 ; 0239 ! FUNCTION
155 ; 0240 ! CONSTRUCT THE SEGMENT TABLE INTERNAL TO ZAP
156 ; 0241 !
157 ; 0242 ! INPUTS
158 ; 0243 ! ON-DISK DATA STRUCTURE
159 ; 0244 !
160 ; 0245 ! OUTPUTS
161 ; 0246 ! SEGTAB - DESCRIPTIONS OF EACH SEGMENT
162 ; 0247 ! ROOTSEG - SEGMENT-ID OF THE ROOT SEGMENT
163 ; 0248 ! VALUE - NONE
164 ; 0249 !
165 ; 0250
ZINIT MACRO M1108 05-DEC-77 23:53 PAGE 5
167 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:32.27 ZIN11M.B11 PAGE 1-3
168
169 ; 0251 GLOBAL ROUTINE ZAPINIT=
170 ; 0252 BEGIN
171 ; 0253
172 ; 0254 BIND
173 ; 0255 LBLVBN = UPLIT(0,1),
174 ; 0256 HDRVBN = UPLIT(0,4);
175 ; 0257
176 ; 0258 LOCAL
177 ; 0259 PTR, ! POINTER TO OVERLAY DATA
178 ; 0260 PBLOCK S; ! POINTER TO SEGMENT TABLE
179 ; 0261
180 ; 0262
181 ; 0263 ENABLE
182 ; 0264 SIGADR: (ERRPRT(BADTSK); SIGNAL SIGXIT)
183 ; 0265 ELBANE;
184 ; 0266
185 ; 0267 FCSOPEN();
186 ; 0268
187 ; 0269 SEGMAX = SEGTAB;
188 ; 0270 SEGMAX[SEGBLK] = 0;
189 ; 0271 SEGMAX[SEGLOW] = 0;
190 ; 0272 SEGMAX[SEGHIGH] = #177777;
191 ; 0273 SEGMAX[SEGVIR1] = 0;
192 ; 0274 IF NOT .SWITCH[ABSOLUTE]
193 ; 0275 THEN
194 ; 0276 BEGIN
195 ; 0277 FCSREAD(LBLVBN);
196 ; 0278 SEGMAX[SEGBLK] = ROOTSEG = .BLKBUF[#22];
197 ; 0279 SEGMAX[SEGLOW] = .BLKBUF[#20];
198 ; 0280 SEGMAX[SEGHIGH] = .SEGMAX[SEGLOW] + .BLKBUF[#14]*64;
199 ; 0281 VIRTZERO(.SEGMAX,1);
200 ; 0282 IF (PTR = OPENLOC(.ROOTSEG,.SEGMAX[SEGLOW]+#54)) NEQ 0
201 ; 0283 THEN
202 ; 0284 IF OPENLOC(.ROOTSEG,.PTR) NEQ 0
203 ; 0285 THEN
204 ; 0286 DOOVERLAY(OPENLOC(.ROOTSEG,.PTR+2));
205 ; 0287 IF .SWITCH[LISTING]
206 ; 0288 THEN
207 ; 0289 BEGIN
208 ; 0290 OUTSA(UPLIT ASCIZ "SEGMENT TABLE");
209 ; 0291 EOL();
210 ; 0292 S = SEGTAB;
211 ; 0293 DO
212 ; 0294 BEGIN
213 ; 0295 OUTN(.S[SEGBLK],6);
214 ; 0296 OUTC(":");
215 ; 0297 OUTC(" ");
216 ; 0298 OUTN(.S[SEGLOW],6);
217 ; 0299 OUTC("-");
218 ; 0300 OUTN(.S[SEGHIGH]-1,6);
219 ; 0301 EOL();
220 ; 0302 S = S[SEGNEXT];
ZINIT MACRO M1108 05-DEC-77 23:53 PAGE 6
222 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:32.28 ZIN11M.B11 PAGE 1-4
223
224 ; 0303 END
225 ; 0304 UNTIL
226 ; 0305 .S GEQU .SEGMAX;
227 ; 0306 END;
228 ; 0307 END;
229 ; 0308 NOVALUE
230 ; 0309 END;
231 ; 0310
232 .TITLE ZINIT
233 .IDENT /11M005/
234 000000 .PSECT
235
236
237 000000 R$0=%0
238 000001 R$1=%1
239 000002 R$2=%2
240 000003 R$3=%3
241 000004 R$4=%4
242 000005 R$5=%5
243 000006 SP=%6
244 000007 PC=%7
245
246
247 000000 ZAPINIT:
248 000000 004167 000000G JSR R$1,$SAV5
249 000004 162706 000006 SUB #6,SP
250 000010 012700 000006 MOV #6,R$0
251 000014 004767 000000G JSR PC,$ENABL
252 000020 000034 .WORD L$5-L$4
253 000022 026727 000000G 177776 L$4: CMP SIGVAL,#177776
254 000030 001010 BNE L$6
255 000032 012700 000014 MOV #14,R$0
256 000036 004767 000000G JSR PC,ERRPRT
257 000042 012700 177777 MOV #177777,R$0
258 000046 000167 000000G JMP $SIGNL
259 000052 000167 000000G L$6: JMP $SIGN1
260 000056 004767 000000G L$5: JSR PC,FCSOPEN
261 000062 012767 000000G 000000G MOV #SEGTAB,SEGMAX
262 000070 012705 000000G MOV #SEGTAB,R$5
263 000074 005015 CLR @R$5
264 000076 005065 000002 CLR 2(R$5)
265 000102 012765 177777 000004 MOV #177777,4(R$5)
266 000110 005065 000006 CLR 6(R$5)
267 000114 132737 000001 000000G BITB #1,@#SWITCH
268 000122 001171 BNE L$9
269 000124 012700 000522' MOV #P$AAB,R$0
270 000130 004767 000000G JSR PC,FCSREAD
271 000134 013700 000000G MOV @#SEGMAX,R$0
272 000140 013767 000022G 000650 MOV @#BLKBUF+22,ROOTSEG
273 000146 016710 000644 MOV ROOTSEG,@R$0
274 000152 013760 000020G 000002 MOV @#BLKBUF+20,2(R$0)
275 000160 013705 000014G MOV @#BLKBUF+14,R$5
ZINIT MACRO M1108 05-DEC-77 23:53 PAGE 7
277 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:32.32 ZIN11M.B11 PAGE 1-5
278
279 000164 006305 ASL R$5
280 000166 006305 ASL R$5
281 000170 006305 ASL R$5
282 000172 006305 ASL R$5
283 000174 006305 ASL R$5
284 000176 006305 ASL R$5
285 000200 063705 000020G ADD @#BLKBUF+20,R$5
286 000204 010560 000004 MOV R$5,4(R$0)
287 000210 012746 000001 MOV #1,-(SP)
288 000214 004767 000000G JSR PC,VIRTZERO
289 000220 013716 001016' MOV @#ROOTSEG,@SP
290 000224 013705 000000G MOV @#SEGMAX,R$5
291 000230 016505 000002 MOV 2(R$5),R$5
292 000234 062705 000054 ADD #54,R$5
293 000240 010546 MOV R$5,-(SP)
294 000242 004767 000000G JSR PC,OPENLOC
295 000246 010005 MOV R$0,R$5
296 000250 001426 BEQ L$11
297 000252 013746 001016' MOV @#ROOTSEG,-(SP)
298 000256 010546 MOV R$5,-(SP)
299 000260 004767 000000G JSR PC,OPENLOC
300 000264 005700 TST R$0
301 000266 001416 BEQ L$13
302 000270 013746 001016' MOV @#ROOTSEG,-(SP)
303 000274 010566 000002 MOV R$5,2(SP)
304 000300 061766 000002 ADD @PC,2(SP)
305 000304 016646 000002 MOV 2(SP),-(SP)
306 000310 004767 000000G JSR PC,OPENLOC
307 000314 010016 MOV R$0,@SP
308 000316 004767 000226 JSR PC,DOOVERLAY
309 000322 022626 CMP (SP)+,(SP)+
310 000324 022626 L$13: CMP (SP)+,(SP)+
311 000326 132737 000004 000000G L$11: BITB #4,@#SWITCH
312 000334 001463 BEQ L$16
313 000336 012700 000532' MOV #P$AAD,R$0
314 000342 004767 000000G JSR PC,OUTSA
315 000346 004767 000000G JSR PC,EOL
316 000352 012705 000000G MOV #SEGTAB,R$5
317 000356 011546 L$18: MOV @R$5,-(SP)
318 000360 012746 000006 MOV #6,-(SP)
319 000364 004767 000000G JSR PC,OUTN
320 000370 012700 000072 MOV #72,R$0
321 000374 004767 000000G JSR PC,OUTC
322 000400 012700 000040 MOV #40,R$0
323 000404 004767 000000G JSR PC,OUTC
324 000410 016516 000002 MOV 2(R$5),@SP
325 000414 012746 000006 MOV #6,-(SP)
326 000420 004767 000000G JSR PC,OUTN
327 000424 012700 000055 MOV #55,R$0
328 000430 004767 000000G JSR PC,OUTC
329 000434 016566 000004 000004 MOV 4(R$5),4(SP)
330 000442 005366 000004 DEC 4(SP)
ZINIT MACRO M1108 05-DEC-77 23:53 PAGE 8
332 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:32.32 ZIN11M.B11 PAGE 1-6
333
334 000446 016616 000004 MOV 4(SP),@SP
335 000452 012746 000006 MOV #6,-(SP)
336 000456 004767 000000G JSR PC,OUTN
337 000462 004767 000000G JSR PC,EOL
338 000466 062705 000012 ADD #12,R$5
339 000472 062706 000010 ADD #10,SP
340 000476 020537 000000G CMP R$5,@#SEGMAX
341 000502 103725 BLO L$18
342 000504 022626 L$16: CMP (SP)+,(SP)+
343 000506 017767 000000G 000000G L$9: MOV @SIGREG,SIGREG
344 000514 062706 000006 ADD #6,SP
345 000520 000207 RTS PC
346
347 ; ROUTINE SIZE: 169
348
349
350 000522 .PSECT
351
352 000522 000000 000001 P$AAB: .WORD 0,1
353 000526 000000 000004 P$AAC: .WORD 0,4
354 000532 042523 046507 047105 P$AAD: .WORD 42523,46507,47105
355 000540 020124 040524 046102 .WORD 20124,40524,46102
356 000546 000105 .WORD 105
357
358
359
360 ; 0311 COMMENT ! DOOVERLAY(INITADR)
361 ; 0312 !
362 ; 0313 ! FUNCTION
363 ; 0314 ! A RECURSIVE PROCEDURE TO SCAN THE OVERLAY SEGMENT
364 ; 0315 ! DESCRIPTORS AND BUILD THE SEGMENT TABLE
365 ; 0316 !
366 ; 0317 ! INPUTS
367 ; 0318 ! INITADR - THE ADDRESS OF A SEGMENT DESCRIPTOR
368 ; 0319 ! IN TASK ADDRESS SPACE
369 ; 0320 ! ON-DISK DATA STRUCTURE
370 ; 0321 !
371 ; 0322 ! OUTPUTS
372 ; 0323 ! SEGMENT TABLE ENTRIES FOR ALL DESCENDANTS OF THE
373 ; 0324 ! INITADR
374 ; 0325 ! VALUE - NONE
375 ; 0326 !
376 ; 0327
377 ; 0328 ROUTINE DOOVERLAY(INITADR)=
378 ; 0329 BEGIN
379 ; 0330
380 ; 0331 LOCAL
381 ; 0332 BLOCK BLK, ! TEMPORARY
382 ; 0333 PBLOCK CURADR; ! CURRENT SEGMENT TABLE ADDRESS
383 ; 0334
384 ; 0335
ZINIT MACRO M1108 05-DEC-77 23:53 PAGE 9
386 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:32.33 ZIN11M.B11 PAGE 1-7
387
388 ; 0336 CURADR = .INITADR;
389 ; 0337 DO
390 ; 0338 BEGIN
391 ; 0339 MACRO W(I,P,S)=I,0,16$;
392 ; 0340 BLK = OPENLOC(.ROOTSEG,CURADR[W(SGBLK)]);
393 ; 0341 SEGMAX[SEGBLK] = .BLK[SGBLK] + .ROOTSEG;
394 ; 0342 SEGMAX[SEGLOW] = OPENLOC(.ROOTSEG,CURADR[SGLDA]);
395 ; 0343 SEGMAX[SEGHIGH] =
396 ; 0344 .SEGMAX[SEGLOW] + OPENLOC(.ROOTSEG,CURADR[SGLNG]);
397 ; 0345 VIRTZERO(.SEGMAX, 1);
398 ; 0346 SEGMAX = SEGMAX[SEGNEXT];
399 ; 0347 IF OPENLOC(.ROOTSEG,CURADR[SGUP]) NEQ 0
400 ; 0348 THEN
401 ; 0349 DOOVERLAY(..REALDOT);
402 ; 0350 END
403 ; 0351 UNTIL
404 ; 0352 (CURADR = OPENLOC(.ROOTSEG,CURADR[SGNXT])) EQL .INITADR;
405 ; 0353 NOVALUE
406 ; 0354 END;
407 ; 0355
408
409 000550 .PSECT
410
411
412 000550 DOOVERLAY:
413 000550 004167 000000G JSR R$1,$SAV5
414 000554 005746 TST -(SP)
415 000556 016605 000020 MOV 20(SP),R$5
416 000562 012704 000000G L$24: MOV #OPENLOC,R$4
417 000566 012701 001016' MOV #ROOTSEG,R$1
418 000572 011146 MOV @R$1,-(SP)
419 000574 010546 MOV R$5,-(SP)
420 000576 004714 JSR PC,@R$4
421 000600 010066 000004 MOV R$0,4(SP)
422 000604 012703 000000G MOV #SEGMAX,R$3
423 000610 010002 MOV R$0,R$2
424 000612 042702 170000 BIC #170000,R$2
425 000616 061102 ADD @R$1,R$2
426 000620 010273 000000 MOV R$2,@0(R$3)
427 000624 011302 MOV @R$3,R$2
428 000626 011116 MOV @R$1,@SP
429 000630 010546 MOV R$5,-(SP)
430 000632 062716 000002 ADD #2,@SP
431 000636 004714 JSR PC,@R$4
432 000640 010062 000002 MOV R$0,2(R$2)
433 000644 011302 MOV @R$3,R$2
434 000646 011116 MOV @R$1,@SP
435 000650 010566 000002 MOV R$5,2(SP)
436 000654 062766 000004 000002 ADD #4,2(SP)
437 000662 016646 000002 MOV 2(SP),-(SP)
438 000666 004714 JSR PC,@R$4
439 000670 066200 000002 ADD 2(R$2),R$0
ZINIT MACRO M1108 05-DEC-77 23:53 PAGE 10
441 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:32.36 ZIN11M.B11 PAGE 1-8
442
443 000674 010062 000004 MOV R$0,4(R$2)
444 000700 011300 MOV @R$3,R$0
445 000702 012716 000001 MOV #1,@SP
446 000706 004767 000000G JSR PC,VIRTZERO
447 000712 062713 000012 ADD #12,@R$3
448 000716 011116 MOV @R$1,@SP
449 000720 010566 000004 MOV R$5,4(SP)
450 000724 062766 000006 000004 ADD #6,4(SP)
451 000732 016646 000004 MOV 4(SP),-(SP)
452 000736 004714 JSR PC,@R$4
453 000740 005700 TST R$0
454 000742 001404 BEQ L$26
455 000744 017716 000000G MOV @REALDOT,@SP
456 000750 004767 177574 JSR PC,DOOVERLAY
457 000754 011116 L$26: MOV @R$1,@SP
458 000756 010566 000006 MOV R$5,6(SP)
459 000762 062766 000012 000006 ADD #12,6(SP)
460 000770 016646 000006 MOV 6(SP),-(SP)
461 000774 004714 JSR PC,@R$4
462 000776 010005 MOV R$0,R$5
463 001000 062706 000014 ADD #14,SP
464 001004 020566 000020 CMP R$5,20(SP)
465 001010 001264 BNE L$24
466 001012 005726 TST (SP)+
467 001014 000207 RTS PC
468
469 ; ROUTINE SIZE: 83
470
471
472
473
474
475 ; 0356 END ELUDOM
476
477
478 001016 ZINIT:
479
480 ; ROUTINE SIZE: 0
481
482
483 001016 .PSECT
484
485 001016 001020' ROOTSEG: .=.+2
486 .GLOBL OUTN
487 .GLOBL ZAPINIT
488 .GLOBL REALDOT
489 .GLOBL OUTSA
490 .GLOBL VIRTZERO
491 .GLOBL SEGMAX
492 .GLOBL ROVZRO
ZINIT MACRO M1108 05-DEC-77 23:53 PAGE 11
494 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:32.39 ZIN11M.B11 PAGE 1-9
495
496 .GLOBL OUTC
497 .GLOBL EOL
498 .GLOBL FCSREAD
499 .GLOBL SEGTAB
500 .GLOBL FCSOPEN
501 .GLOBL BLKBUF
502 .GLOBL SWITCH
503 .GLOBL ERRPRT
504 .GLOBL OPENLOC
505
506 .GLOBL $ENABL
507 .GLOBL $SIGN1
508 .GLOBL $SIGNL
509 .GLOBL $SAV5
510 .GLOBL SIGREG
511 .GLOBL SIGVAL
512
513
514
515
516
517
518
519
520
521 ; SIZE: 252+12
522 ; RUN TIME: 8 SECONDS
523 ; CORE USED: 20K
524 ; COMPILATION COMPLETE
525
526 000001 .END
ZINIT MACRO M1108 05-DEC-77 23:53 PAGE 11-1
SYMBOL TABLE
BLKBUF= ****** G L$18 000356R OUTN = ****** G R$1 =%000001 SWITCH= ****** G
DOOVER 000550R L$24 000562R OUTSA = ****** G R$2 =%000002 VIRTZE= ****** G
EOL = ****** G L$26 000754R P$AAB 000522R R$3 =%000003 ZAPINI 000000RG
ERRPRT= ****** G L$4 000022R P$AAC 000526R R$4 =%000004 ZINIT 001016R
FCSOPE= ****** G L$5 000056R P$AAD 000532R R$5 =%000005 $ENABL= ****** G
FCSREA= ****** G L$6 000052R REALDO= ****** G SEGMAX= ****** G $SAV5 = ****** G
L$11 000326R L$9 000506R ROOTSE 001016R SEGTAB= ****** G $SIGNL= ****** G
L$13 000324R OPENLO= ****** G ROVZRO= ****** G SIGREG= ****** G $SIGN1= ****** G
L$16 000504R OUTC = ****** G R$0 =%000000 SIGVAL= ****** G
. ABS. 000000 000
001020 001
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 266 WORDS ( 2 PAGES)
DYNAMIC MEMORY: 3104 WORDS ( 11 PAGES)
ELAPSED TIME: 00:00:11
[62,10]ZIN11M,[62,20]ZIN11M/-SP=[62,30]ZIN11M.P11
ZOPEN MACRO M1108 05-DEC-77 23:53
TABLE OF CONTENTS
2- 48 SWITCH TABLE
3- 59 FCSOPEN -- READ FILE SPECIFICATION AND OPEN FILES
4- 150 VIRTZERO -- CALCULATE VIRTUAL ZERO DATA
5- 186 ROVZRO -- VIRTUAL ZERO CALCULATION FOR READONLY PSECTS
ZOPEN MACRO M1108 05-DEC-77 23:53 PAGE 1
1 .TITLE ZOPEN
2 .IDENT /000005/
3
4 ;+
5 ;
6 ; COPYRIGHT 1975
7 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
8 ;
9 ; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
10 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
11 ; EQUIPMENT CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES
12 ; NO RESPONSIBILITY FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
13 ;
14 ; THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO PURCHASER
15 ; UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE
16 ; COPIED (WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR
17 ; USE IN SUCH SYSTEM, EXCEPT AS MAY BE OTHERWISE BE PROVIDED IN
18 ; WRITING BY DIGITAL.
19 ;
20 ; DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE
21 ; USE OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT
22 ; SUPPLIED BY DIGITAL EQUIPMENT CORPORATION.
23 ;
24 ;
25 ; WRITTEN BY
26 ; M. JACK
27 ;
28 ; MODULE FUNCTION
29 ; I/O SERVICES FOR THE TASK IMAGE PATCHING UTILITY
30 ;
31 ;-
32
33
34 ;+
35 ; GLOBAL DEFINITIONS
36 ;-
37
38 .MCALL FINIT$, OPEN$W, GCML$, CSI$1, CSI$2, OPEN$, FDOF$L
39 .MCALL FCSBT$, NBOF$L, GCMLD$, CSI$, CSI$SW, CSI$ND, CALL
40 .MCALL RETURN
41
42 000000 FDOF$L
43 000000 FCSBT$
44 000000 NBOF$L
45 000000 GCMLD$
46 000000 CSI$
ZOPEN MACRO M1108 05-DEC-77 23:53 PAGE 2
SWITCH TABLE
48 .SBTTL SWITCH TABLE
49
50 ;+
51 ; SWITCH TABLE FOR COMMAND STRING INTERPRETER
52 ;-
53
54 000000 SWITAB: CSI$SW AB,ABSOLU,SWITCH,SET ; ABSOLUTE MODE
55 000010 CSI$SW RO,RDONLY,SWITCH,SET ; READ ONLY OPEN
56 000020 CSI$SW LI,LSTING,SWITCH,SET ; LIST SEGMENT DATA
57 000030 CSI$ND
ZOPEN MACRO M1108 05-DEC-77 23:53 PAGE 3
FCSOPEN -- READ FILE SPECIFICATION AND OPEN FILES
59 .SBTTL FCSOPEN -- READ FILE SPECIFICATION AND OPEN FILES
60
61 ;+
62 ;
63 ; GLOBAL ROUTINE FCSOPEN
64 ;
65 ; FUNCTION
66 ; INITIALIZE FCS AND OPEN FILES
67 ;
68 ; INPUTS
69 ; COMMAND STRING
70 ;
71 ; OUTPUTS
72 ; INITIALIZATION AND FILES OPENED
73 ;
74 ;-
75
76 000032 FCSOPEN::
77 000032 004167 000000G JSR R1,$SAV3 ; SAVE REGISTERS
78 000036 FINIT$ ; INITIALIZE FCS
79 000042 005067 000000G CLR BLKNUM ; INITIALIZE VARIABLES
80 000046 005067 000002G CLR BLKNUM+2 ;
81 000052 005067 000000G CLR WRITBK ;
82 000056 005067 000000G CLR SWITCH ;
83
84 000062 OPEN$W #OUTFDB ; OPEN CONSOLE DEVICE
85 000100 103552 BCS 10$ ; TERMINATE IF OPEN FAILS
86
87 000102 152767 000003 000141G 2$: BISB #GE.IND!GE.COM,CMLBLK+G.MODE ; ENABLE @ AND ;
88 000110 GCML$ #CMLBLK ; READ A COMMAND LINE
89 000124 103007 BCC 3$ ; CONTINUE IF NO ERRORS
90 000126 122760 177766 000140 CMPB #GE.EOF,G.ERR(R0) ; TEST FOR END OF FILE
91 000134 001534 BEQ 10$ ; EXIT IF END OF FILE
92 000136 012700 000000G MOV #CMIERR,R0 ; SET ERROR CODE IN R0
93 000142 000527 BR 9$ ; BRANCH TO OUTPUT MESSAGE
94
95 000144 3$: CSI$1 #CSIBLK,CMLBLK+G.CMLD+2,CMLBLK+G.CMLD ; PARSE FILE SPEC
96 000170 103507 BCS 4$ ; TEST FOR ERROR
97 000172 CSI$2 R0,INPUT ; CHECK FOR INPUT FILES
98 000202 103502 BCS 4$ ; THERE SHOULD BE NONE
99 000204 132760 000037 000001 BITB #CS.DVF!CS.DIF!CS.NMF!CS.WLD!CS.MOR,C.STAT(R0)
100 000212 001076 BNE 4$ ;
101 000214 CSI$2 R0,OUTPUT,#SWITAB ; CHECK FOR OUTPUT FILE
102 000232 103466 BCS 4$ ; CHECK FOR ERROR
103 000234 132760 000030 000001 BITB #CS.WLD!CS.MOR,C.STAT(R0) ; MUST NOT HAVE THESE
104 000242 001062 BNE 4$ ;
105 000244 132760 000001 000001 BITB #CS.NMF,C.STAT(R0) ; FILE NAME MUST BE PRESENT
106 000252 001456 BEQ 4$ ;
107
108 000254 012700 000000G MOV #TSKFDB,R0 ; LOAD FDB ADDRESS
109 000260 012760 000000G 000036 MOV #STATBK,F.STBK(R0) ; INSERT STATISTICS BLOCK ADDRESS
110 000266 112760 000001 000043 MOVB #FO.RD,F.FACC(R0) ; ASSUME READ ACCESS
111 000274 032767 000000G 000000G BIT #RDONLY,SWITCH ; TEST /RO SPECIFIED
112 000302 001003 BNE 1$ ; BRANCH IF IT WAS
113 000304 112760 000002 000043 MOVB #FO.MFY,F.FACC(R0) ; ASSUME MODIFY ACCESS
114 000312 1$: OPEN$ R0 ; OPEN THE FILE
115 000316 103431 BCS 6$ ; BRANCH IF OPEN FAILED
ZOPEN MACRO M1108 05-DEC-77 23:53 PAGE 3-1
FCSOPEN -- READ FILE SPECIFICATION AND OPEN FILES
116
117 000320 010001 MOV R0,R1 ; POINT TO FDB
118 000322 012702 000000G MOV #SAVRAT,R2 ; POINT TO SAVE AREA
119 000326 012703 000007 MOV #S.FATT/2,R3 ; SET UP WORD COUNT
120 000332 012122 8$: MOV (R1)+,(R2)+ ; SAVE RECORD ATTRIBUTES
121 000334 005303 DEC R3 ; COUNT WORDS
122 000336 001375 BNE 8$ ;
123
124 000340 010001 MOV R0,R1 ;
125 000342 062701 000004 ADD #F.HIBK,R1 ;
126 000346 016721 000004G MOV STATBK+4,(R1)+ ; SET END OF FILE DATA WITH
127 000352 016721 000006G MOV STATBK+6,(R1)+ ; FILE SIZE FROM STATISTICS
128 000356 016721 000004G MOV STATBK+4,(R1)+ ; BLOCK SINCE CHANCES ARE
129 000362 016711 000006G MOV STATBK+6,@R1 ; EOF DATA IS WRONG
130 000366 005221 INC (R1)+ ;
131 000370 005021 CLR (R1)+ ;
132
133 000372 142767 000003 000141G BICB #GE.IND!GE.COM,CMLBLK+G.MODE ; DISABLE @ AND ;
134 000400 RETURN ; RETURN TO CALLER
135
136 ;+
137 ; ERROR HANDLING
138 ;-
139
140 000402 012700 000000G 6$: MOV #OPNERR,R0 ; OPEN FAILURE
141 000406 000402 BR 7$ ;
142 000410 012700 000000G 4$: MOV #CSIERR,R0 ; BAD FILESPEC
143 000414 7$: CALL ERRPRT ; OUTPUT ERROR MESSAGE
144 000420 000630 BR 2$ ; GIVE USER A SECOND TRY
145
146 000422 9$: CALL ERRPRT ; OUTPUT FATAL GCML ERROR MESSAGE
147 000426 012700 000000G 10$: MOV #SIGXIT,R0 ; SET SIGNAL VALUE IN R0
148 000432 000167 000000G JMP $SIGNL ; SIGNAL
ZOPEN MACRO M1108 05-DEC-77 23:53 PAGE 4
VIRTZERO -- CALCULATE VIRTUAL ZERO DATA
150 .SBTTL VIRTZERO -- CALCULATE VIRTUAL ZERO DATA
151
152 ;+
153 ;
154 ; GLOBAL ROUTINE REG0 VIRTZERO(SEGPTR,FUDGE)
155 ;
156 ; FUNCTION
157 ; CALCULATE VIRTUAL ZERO DATA FROM START BLOCK AND LOAD POINT
158 ;
159 ; INPUTS
160 ; SEGPTR - POINTER TO ZAP SEGMENT TABLE ENTRY
161 ; FUDGE - AMOUNT TO ADJUST STARTING DISK BLOCK
162 ;
163 ; OUTPUTS
164 ; SEGPTR - SEGVIRT FILLED IN
165 ; VALUE - NONE
166 ;
167 ;-
168
169 000436 VIRTZERO::
170 000436 004167 000000G JSR R1,$SAV3 ; SAVE REGISTERS
171 000442 005002 CLR R2 ; LOAD STARTING DISK BLOCK IN DP
172 000444 012003 MOV (R0)+,R3 ;
173 000446 066603 000012 ADD 12(SP),R3 ; ADJUST BY FUDGE AMOUNT
174 000452 012701 000011 MOV #9.,R1 ; SHIFT LEFT 9 BITS TO POSITION
175 000456 006303 1$: ASL R3 ;
176 000460 006102 ROL R2 ;
177 000462 005301 DEC R1 ;
178 000464 001374 BNE 1$ ;
179 000466 162003 SUB (R0)+,R3 ; SUBTRACT LOAD ADDRESS
180 000470 005602 SBC R2 ;
181 000472 005720 TST (R0)+ ; SKIP OVER A WORD
182 000474 010220 MOV R2,(R0)+ ; PUT DOWN ANSWER
183 000476 010310 MOV R3,@R0 ;
184 000500 RETURN ; RETURN TO CALLER
ZOPEN MACRO M1108 05-DEC-77 23:53 PAGE 5
ROVZRO -- VIRTUAL ZERO CALCULATION FOR READONLY PSECTS
186 .SBTTL ROVZRO -- VIRTUAL ZERO CALCULATION FOR READONLY PSECTS
187
188 ;+
189 ;
190 ; GLOBAL ROUTINE ROVZRO(BLKALN,HDRVBN,OFF32W,SEGPTR)
191 ;
192 ; FUNCTION
193 ; COMPUTE THE VIRTUAL ZERO FOR A READONLY AREA
194 ;
195 ; INPUTS
196 ; BLKALN - NONZERO IF RO SECTION IS BLOCK ALIGNED (MULTI-USER)
197 ; HDRVBN - VBN OF TASK HEADER TIMES 1000 OCTAL
198 ; (WHAT THE OFF32W IS RELATIVE TO)
199 ; OFF32W - OFFSET IN 32-WORD BLOCKS FROM HDRVBN AS COMPUTED
200 ; FROM THE PAR TEMPLATES
201 ; SEGPTR - POINTER TO SEGMENT DESCRIPTION ENTRY
202 ;
203 ; OUTPUTS
204 ; SEGPTR - SEGVIRT FILLED IN
205 ; VALUE - NONE
206 ;
207 ;-
208
209 000502 ROVZRO::
210 000502 004167 000000G JSR R1,$SAV5 ; SAVE REGISTERS
211 000506 016602 000016 MOV 16(SP),R2 ; POINT TO SEGMENT DESCRIPTOR
212 000512 005003 CLR R3 ; LOAD OFF32W IN DP
213 000514 016604 000020 MOV 20(SP),R4 ;
214 000520 012705 000006 MOV #6,R5 ; LOAD LOOP COUNT
215 000524 006304 1$: ASL R4 ; SHIFT OFF32W LEFT 6 IN DP
216 000526 006103 ROL R3 ;
217 000530 005305 DEC R5 ;
218 000532 001374 BNE 1$ ;
219 000534 005000 CLR R0 ; LOAD HDRVBN IN DP
220 000536 016601 000022 MOV 22(SP),R1 ;
221 000542 060401 ADD R4,R1 ; ADD OFF32W*64 AND HDRVBN IN DP
222 000544 005500 ADC R0 ;
223 000546 060300 ADD R3,R0 ;
224 000550 005766 000024 TST 24(SP) ; IS R/O SECTION BLOCK ALIGNED
225 000554 001405 BEQ 2$ ; SKIP IF NOT
226 000556 062701 000777 ADD #777,R1 ; ROUND TO BLOCK BOUNDARY
227 000562 005500 ADC R0 ;
228 000564 042701 000777 BIC #777,R1 ;
229 000570 166201 000002 2$: SUB 2(R2),R1 ; SUBTRACT LOAD ADDRESS IN DP
230 000574 005600 SBC R0 ;
231 000576 010062 000006 MOV R0,6(R2) ; PUT ANSWER DOWN
232 000602 010162 000010 MOV R1,10(R2) ;
233 000606 RETURN ; RETURN TO CALLER
234
235 000001 .END
ZOPEN MACRO M1108 05-DEC-77 23:53 PAGE 5-1
SYMBOL TABLE
ABSOLU= ****** GX FCSOPE 000032RG F.DVNM= 000134 GE.EOF= 177766 OUTFDB= ****** GX
BLKNUM= ****** GX FD.BLK= 000010 F.EFBK= 000010 GE.IND= 000002 PAR$$$= 000000
CMIERR= ****** GX FD.CCL= 000002 F.EFN = 000050 GE.IOR= 177777 RDONLY= ****** GX
CMLBLK= ****** GX FD.CR = 000002 F.EOBB= 000032 GE.LC = 000010 ROVZRO 000502RG
CSIBLK= ****** GX FD.DIR= 000010 F.ERR = 000052 GE.MDE= 177774 R.FIX = 000001
CSIERR= ****** GX FD.FTN= 000001 F.FACC= 000043 GE.OPR= 177776 R.VAR = 000002
CS.DIF= 000002 FD.INS= 000010 F.FFBY= 000014 G.CMLD= 000146 SAVRAT= ****** GX
CS.DVF= 000004 FD.PLC= 000004 F.FNAM= 000110 G.DPRM= 000160 SIGXIT= ****** GX
CS.EQU= 000040 FD.RAH= 000001 F.FNB = 000102 G.ERR = 000140 STATBK= ****** GX
CS.INP= 000001 FD.RAN= 000002 F.FTYP= 000116 G.ISIZ= 000020 SWITAB 000000R
CS.MOR= 000020 FD.REC= 000001 F.FVER= 000120 G.MODE= 000141 SWITCH= ****** GX
CS.NMF= 000001 FD.RWM= 000001 F.HIBK= 000004 G.PSDS= 000142 S.FATT= 000016
CS.OUT= 000002 FD.SDI= 000020 F.LUN = 000042 LSTING= ****** GX S.FDB = 000140
CS.WLD= 000010 FD.SQD= 000040 F.MBCT= 000054 NB.DEV= 000200 S.FNAM= 000006
C.CMLD= 000002 FD.TTY= 000004 F.MBC1= 000055 NB.DIR= 000100 S.FNB = 000036
C.DEVD= 000006 FD.WBH= 000002 F.MBFG= 000056 NB.NAM= 000004 S.FNBW= 000017
C.DIRD= 000012 FO.APD= 000106 F.NRBD= 000024 NB.SD1= 000400 S.FNTY= 000004
C.DSDS= 000006 FO.MFY= 000002 F.NREC= 000030 NB.SD2= 001000 S.FTYP= 000002
C.FILD= 000016 FO.RD = 000001 F.OVBS= 000030 NB.SNM= 000040 S.NFEN= 000020
C.MKW1= 000024 FO.UPD= 000006 F.RACC= 000016 NB.STP= 000020 TSKFDB= ****** GX
C.MKW2= 000026 FO.WRT= 000016 F.RATT= 000001 NB.SVR= 000010 VIRTZE 000436RG
C.SIZE= 000054 F.ALOC= 000040 F.RCNM= 000034 NB.TYP= 000002 WRITBK= ****** GX
C.STAT= 000001 F.BBFS= 000062 F.RCTL= 000017 NB.VER= 000001 $SAV3 = ****** GX
C.SWAD= 000022 F.BDB = 000070 F.RSIZ= 000002 N.DID = 000024 $SAV5 = ****** GX
C.TYPR= 000000 F.BGBC= 000057 F.RTYP= 000000 N.DVNM= 000032 $SIGNL= ****** GX
ERRPRT= ****** GX F.BKDN= 000026 F.STBK= 000036 N.FID = 000000 $$ = 000067
FA.APD= 000100 F.BKDS= 000020 F.UNIT= 000136 N.FNAM= 000006 .CSI1 = ****** G
FA.CRE= 000010 F.BKEF= 000050 F.URBD= 000020 N.FTYP= 000014 .CSI2 = ****** G
FA.EXT= 000004 F.BKP1= 000051 F.VBN = 000064 N.FVER= 000016 .FINIT= ****** G
FA.NSP= 000100 F.BKST= 000024 F.VBSZ= 000060 N.NEXT= 000022 .GCML1= ****** G
FA.RD = 000001 F.BKVB= 000064 GE.BIF= 177775 N.STAT= 000020 .OPEN = ****** G
FA.SHR= 000040 F.CNTG= 000034 GE.CLO= 000004 N.UNIT= 000034 ...GBL= 000000
FA.TMP= 000020 F.DFNB= 000046 GE.COM= 000001 OPNERR= ****** GX ...TPC= 000140
FA.WRT= 000002 F.DSPT= 000044
. ABS. 000000 000
000610 001
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 3694 WORDS ( 15 PAGES)
DYNAMIC MEMORY: 4160 WORDS ( 16 PAGES)
ELAPSED TIME: 00:00:27
[62,10]ZOPEN,[62,20]ZOPEN/-SP=[62,30]ZOPEN
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 2
2 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.12 ZPROC.B11 PAGE 1
3
4 ; 0001 MODULE ZPROC(IDENT="000005")=
5 ; 0002 BEGIN
6 ; 0003
7 ; 0004
8 ; 0005
9 ; 0006 !
10 ; 0007 !
11 ; 0008 ! COPYRIGHT 1975,
12 ; 0009 ! DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
13 ; 0010 !
14 ; 0011 ! THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
15 ; 0012 ! ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
16 ; 0013 ! OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
17 ; 0014 ! AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
18 ; 0015 !
19 ; 0016 ! THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
20 ; 0017 ! NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
21 ; 0018 ! EQUIPMENT CORPORATION.
22 ; 0019 !
23 ; 0020 ! DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY
24 ; 0021 ! OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
25 ; 0022 !
26 ; 0023 ! WRITTEN BY
27 ; 0024 ! M. JACK
28 ; 0025 !
29 ; 0026 ! MODULE FUNCTION
30 ; 0027 ! TASK-IMAGE PATCHING UTILITY FOR USE WITH RSX-11D AND RSX-11M
31 ; 0028 !
32 ; 0029 !
33 ; 0030
34 ; 0031 LINKAGE
35 ; 0032 REG0 = BLISS(REGISTER=0);
36 ; 0033
37 ; 0034 FORWARD
38 ; 0035 ZAPPROC,
39 ; 0036 PARSE,
40 ; 0037 GETCHAR,
41 ; 0038 GETNUMANDDEL,
42 ; 0039 REG0 LOOKUP,
43 ; 0040 EXECUTE,
44 ; 0041 OPENANDTYPE,
45 ; 0042 SELRELREG;
46 ; 0043
47 ; 0044
48 ; 0045 REQUIRE STDMAC.BEG;
49 ; 0046 ! STDMAC.BEG - WIDELY USED STANDARD MACROS
50 ; 0047 !
51 ; 0065 SWITCHES LIST; SWITCHES LIST;
52 ; 0066 ! VERSION 000005
53 ; 0067 ! LAST MODIFIED 05/13/74 RBG
54 ; 0106 SWITCHES LIST; SWITCHES LIST;
55 ; 0107 ! STDMAC.BEG LAST LINE
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 3
57 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.13 STDMAC.BEG PAGE 1-1
58
59 ; 0108
60 ; 0109 REQUIRE STDSTR.BEG;
61 ; 0110 ! STDSTR.BEG - WIDELY USED STANDARD STRUCTURES
62 ; 0111 !
63 ; 0129 SWITCHES LIST; SWITCHES LIST;
64 ; 0130 ! VERSION 000003
65 ; 0131 ! LAST MODIFIED 02/28/74 RBG
66 ; 0145 SWITCHES LIST; SWITCHES LIST;
67 ; 0146 ! STDSTR.BEG LAST LINE
68 ; 0147
69 ; 0148 REQUIRE ZAP.BEG;
70 ; 0149 ! ZAP.BEG - BEGIN FILE FOR ZAP
71 ; 0150 !
72 ; 0160 SWITCHES LIST; SWITCHES LIST;
73 ; 0161 !
74 ; 0162 ! VERSION 000002
75 ; 0163 ! LAST MODIFIED 09/01/74
76 ; 0164 !
77 ; 0165
78 ; 0166 STRUCTURE
79 ; 0167 BUFFER[I] = (.BUFFER + .I)<0,16>;
80 ; 0168
81 ; 0169 BIND
82 ; 0170 SEGSIZ= 5, ! LENGTH OF SEGMENT TABLE ENTRY
83 ; 0171 SEGENT= 64; ! NUMBER OF SEGMENT TABLE ENTRIES
84 ; 0172
85 ; 0173 MACRO
86 ; 0174 SEGBLK= 0,0,16$, ! STARTING DISK BLOCK (SEGMENT "NAME")
87 ; 0175 SEGLOW= 1,0,16$, ! LOW ADDRESS
88 ; 0176 SEGHIGH=2,0,16$, ! HIGH ADDRESS PLUS ONE
89 ; 0177 SEGVIRT=3,0,16$, ! VIRTUAL ORIGIN DATA
90 ; 0178 SEGVIR1=3,0,16$, ! HIGH ORDER WORD OF SEGVIRT
91 ; 0179 SEGVIR0=4,0,16$, ! LOW ORDER WORD OF SEGVIRT
92 ; 0180 SEGVIRW=4,0,9$, ! WORD OFFSET PART OF SEGVIRT
93 ; 0181 SEGNEXT=5,0,16$; ! OFFSET TO NEXT ENTRY
94 ; 0182
95 ; 0183 MACRO
96 ; 0184 ABSOLUTE=0,0,1$, ! /AB SWITCH BIT
97 ; 0185 READONLY=0,1,1$, ! /RO SWITCH BIT
98 ; 0186 LISTING=0,2,1$; ! /LI SWITCH BIT
99 ; 0187
100 ; 0188 BIND
101 ; 0189 NORELO= 0, ! NO SUCH RELOCATION REGISTER
102 ; 0190 ADROOB= 1, ! ADDRESS NOT WITHIN SEGMENT
103 ; 0191 NOSEGM= 2, ! NO SUCH SEGMENT
104 ; 0192 BADARG= 3, ! BAD ARGUMENT COUNT
105 ; 0193 NOSPEC= 4, ! NO SUCH SPECIAL REGISTER
106 ; 0194 BADCMD= 5, ! UNRECOGNIZABLE COMMAND
107 ; 0195 NOOPEN= 6, ! NO OPEN LOCATION
108 ; 0196 NOBYTE= 7, ! CANNOT USE IN BYTE MODE
109 ; 0197 BADTSK= 12, ! BAD TASK IMAGE
110 ; 0198 VFYREJ= 13, ! VERIFY REJECT
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 4
112 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.14 ZAP.BEG PAGE 1-2
113
114 ; 0199 NOTYET= 14; ! NOT YET IMPLEMENTED
115 ; 0200
116 ; 0201 BIND
117 ; 0202 SIGXIT= -1, ! SIGNAL VALUE FOR EXIT
118 ; 0203 SIGADR= -2; ! SIGNAL VALUE FOR ADDRESS ERROR
119 ; 0204
120 ; 0205 !
121 ; 0206 ! ZAP.BEG LAST LINE
122 ; 0207
123 ; 0208
124 ; 0209 PSECT
125 ; 0210 CODE=" ", OWN=" ", GLOBAL=" ";
126 ; 0211
127 ; 0212 EXTERNAL
128 ; 0213 REG0 ERRPRT, ! OUTPUT ERROR MESSAGE
129 ; 0214 OPENLOC, ! OPEN LOCATION IN TASK SPACE
130 ; 0215 COMAND, ! GET COMMAND
131 ; 0216 REG0 BYTSXT, ! BYTE SIGN EXTENSION
132 ; 0217 REG0 OUTC, ! OUTPUT CHARACTER
133 ; 0218 OUTN, ! OUTPUT NUMBER
134 ; 0219 EOL, ! OUTPUT RECORD
135 ; 0220 REG0 OUTR50; ! OUTPUT RADIX50
136 ; 0221
137 ; 0222 EXTERNAL
138 ; 0223 REALDOT, ! POINT TO "DOT" IN BUFFER
139 ; 0224 WRITBK, ! BLOCK WRITE-BACK FLAG
140 ; 0225 PBYTVECT CMLADR, ! POINTER TO COMMAND LINE ADDRESS
141 ; 0226 CMLLEN; ! POINTER TO COMMAND LINE LENGTH
142 ; 0227
143 ; 0228 BIND
144 ; 0229 PARSIZ= 2, ! SIZE OF PARSE TABLE ENTRY
145 ; 0230 PARENT= 3; ! NUMBER OF PARSE TABLE ENTRIES
146 ; 0231
147 ; 0232 MACRO
148 ; 0233 PARVAL= 0,0,16$, ! PARTAB - VALUE FIELD
149 ; 0234 PARREG= 0,0,3$, ! PARTAB - REGISTER FIELD
150 ; 0235 PARSEG= 1,0,16$, ! PARTAB - SEGMENT FIELD
151 ; 0236 PARNEXT=2,0,16$; ! PARTAB - NEXT ENTRY
152 ; 0237
153 ; 0238 OWN
154 ; 0239 COUNT, ! DIGIT COUNT IN NUM
155 ; 0240 ARGS, ! ARGUMENT COUNT
156 ; 0241 INTREGS[23] = ! INTERNAL REGISTERS
157 ; 0242 (0,0,0,0,0,-1,0,8:-1,8:0),
158 ; 0243 BWMODE, ! MODE OF OPEN LOCATION
159 ; 0244 VRMODE, ! VIRTUAL OR SPECIAL-REG ADDRESS FLAG
160 ; 0245 FORM, ! TYPEOUT FORMAT
161 ; 0246 CHARNDX, ! INDEX INTO COMMAND LINE
162 ; 0247 BLOCK PFLAG, ! PARSE FLAGS
163 ; 0248 NUM, ! NUMBER
164 ; 0249 DEL, ! ITS RIGHT DELIMITER
165 ; 0250 VECBLOCK PARTAB[PARENT,PARSIZ], ! PARSE RESULTS
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 5
167 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.14 ZPROC.B11 PAGE 1-3
168
169 ; 0251 TYPE, ! COMMAND TYPE CODE
170 ; 0252 SAVEDOT, ! SAVED DOT FOR "<" COMMAND
171 ; 0253 VIRTDOT, ! VIRTUAL VALUE OF DOT
172 ; 0254 VIRTSEG; ! SEGMENT PART OF DOT
173 ; 0255
174 ; 0256 BIND
175 ; 0257 ARGREG= INTREGS[0], ! $A REGISTER
176 ; 0258 CONREG= INTREGS[1], ! $C REGISTER
177 ; 0259 FMTREG= INTREGS[2], ! $F REGISTER
178 ; 0260 HIGHREG=INTREGS[3], ! $H REGISTER
179 ; 0261 LOWREG= INTREGS[4], ! $L REGISTER
180 ; 0262 MASKREG=INTREGS[5], ! $M REGISTER
181 ; 0263 QUANREG=INTREGS[6], ! $Q REGISTER
182 ; 0264 RELOCV= INTREGS[7], ! $R REGISTERS
183 ; 0265 RELOCS= INTREGS[15];
184 ; 0266
185 ; 0267 MACRO
186 ; 0268 SYMBNUM=0,0,1$, ! PFLAG - SYMBOLIC NUMBER
187 ; 0269 SPECREG=0,1,1$; ! PFLAG - SPECIAL REGISTER
188 ; 0270
189 ; 0271 MACRO
190 ; 0272 INDEX(STR)=
191 ; 0273 LOOKUP(UPLIT ASCIZ STR)$;
192 ; 0274
193 ; 0275
194 ; 0276
195 ; 0277
196 ; 0278
197 ; 0279 COMMENT ! ZAPPROC
198 ; 0280 !
199 ; 0281 ! FUNCTION
200 ; 0282 ! PROCESSING DRIVER
201 ; 0283 !
202 ; 0284 ! INPUTS
203 ; 0285 ! NONE
204 ; 0286 !
205 ; 0287 ! OUTPUTS
206 ; 0288 ! NONE
207 ; 0289 !
208 ; 0290
209 ; 0291 GLOBAL ROUTINE ZAPPROC=
210 ; 0292 BEGIN
211 ; 0293
212 ; 0294 REPEAT
213 ; 0295 BEGIN
214 ; 0296 COMAND();
215 ; 0297 PARSE();
216 ; 0298 EXECUTE();
217 ; 0299 END;
218 ; 0300
219 ; 0301 END;
220 ; 0302
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 6
222 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.15 ZPROC.B11 PAGE 1-4
223
224 .TITLE ZPROC
225 .IDENT /000005/
226 000000 .PSECT
227
228
229 000000 R$0=%0
230 000001 R$1=%1
231 000002 R$2=%2
232 000003 R$3=%3
233 000004 R$4=%4
234 000005 R$5=%5
235 000006 SP=%6
236 000007 PC=%7
237
238
239 000000 ZAPPROC:
240 000000 004767 000000G L$3: JSR PC,COMAND
241 000004 004767 000006 JSR PC,PARSE
242 000010 004767 001156 JSR PC,EXECUTE
243 000014 000771 BR L$3
244
245 ; ROUTINE SIZE: 7
246
247
248
249
250
251 ; 0303 COMMENT ! PARSE
252 ; 0304 !
253 ; 0305 ! FUNCTION
254 ; 0306 ! PARSE A USER COMMAND
255 ; 0307 !
256 ; 0308 ! INPUTS
257 ; 0309 ! CMLADR - ADDRESS OF USER'S COMMAND (IN ASCII)
258 ; 0310 ! CMLLEN - LENGTH OF USER'S COMMAND IN BYTES
259 ; 0311 !
260 ; 0312 ! OUTPUTS
261 ; 0313 ! PARTAB - THE PARSED ADDRESSES
262 ; 0314 ! ARGS - THE ARGUMENT COUNT
263 ; 0315 ! TYPE - THE COMMAND TYPE
264 ; 0316 ! VALUE - NONE
265 ; 0317 !
266 ; 0318
267 ; 0319 ROUTINE PARSE=
268 ; 0320 BEGIN
269 ; 0321 LOCAL
270 ; 0322 OP; ! PREVIOUS OPERATOR
271 ; 0323 BIND
272 ; 0324 SEG = PARTAB[0,PARSEG], ! SEGMENT PART OF CURRENT EXPRESSION
273 ; 0325 EXP = PARTAB[0,PARVAL]; ! VALUE PART OF CURRENT EXPRESSION
274 ; 0326
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 7
276 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.18 ZPROC.B11 PAGE 1-5
277
278 ; 0327 TYPE = -2;
279 ; 0328 CHARNDX = -1;
280 ; 0329 EXP = SEG = COUNT = OP = ARGS = PFLAG = 0;
281 ; 0330
282 ; 0331 REPEAT
283 ; 0332 BEGIN
284 ; 0333 GETNUMANDDEL();
285 ; 0334 EXP =
286 ; 0335 BEGIN
287 ; 0336 CASE .OP OF
288 ; 0337 SET
289 ; 0338
290 ; 0339 .NUM; ! 0 - NONE
291 ; 0340
292 ; 0341 .EXP + .NUM; ! 1 - PLUS
293 ; 0342
294 ; 0343 .EXP - .NUM; ! 2 - MINUS
295 ; 0344
296 ; 0345 BEGIN LOCAL T; ! 3 - STAR
297 ; 0346 T = .EXP * 4;
298 ; 0347 (.T + .EXP) * #10 + .NUM
299 ; 0348 END;
300 ; 0349
301 ; 0350 TES
302 ; 0351 END;
303 ; 0352 OP = 0;
304 ; 0353
305 ; 0354 CASE INDEX(":,;+-*.CQ$")+1 OF
306 ; 0355 SET
307 ; 0356
308 ; 0357 ! 0 - NOT FOUND
309 ; 0358 !
310 ; 0359 EXITLOOP;
311 ; 0360
312 ; 0361 ! 1 - COLON
313 ; 0362 !
314 ; 0363 BEGIN
315 ; 0364 SEG = .EXP;
316 ; 0365 EXP = 0
317 ; 0366 END;
318 ; 0367
319 ; 0368 ! 2 - COMMA
320 ; 0369 !
321 ; 0370 IF .EXP GTRU 7
322 ; 0371 THEN
323 ; 0372 RETURN ERRPRT(NORELO)
324 ; 0373 ELSE
325 ; 0374 BEGIN
326 ; 0375 SEG = .RELOCS[.EXP];
327 ; 0376 EXP = .RELOCV[.EXP];
328 ; 0377 OP = 1;
329 ; 0378 END;
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 8
331 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.18 ZPROC.B11 PAGE 1-6
332
333 ; 0379
334 ; 0380 ! 3 - SEMICOLON
335 ; 0381 !
336 ; 0382 IF
337 ; 0383 (ARGS = .ARGS + 1) LEQ 2
338 ; 0384 THEN
339 ; 0385 BEGIN
340 ; 0386 LOCAL
341 ; 0387 PTR1,PTR2;
342 ; 0388 PTR1 = PARTAB[PARENT-1,PARNEXT];
343 ; 0389 PTR2 = PARTAB[PARENT-2,PARNEXT];
344 ; 0390 DECR I FROM PARSIZ*(PARENT-1)-1 TO 0 DO
345 ; 0391 BEGIN
346 ; 0392 PTR1 = .PTR1 - 2;
347 ; 0393 PTR2 = .PTR2 - 2;
348 ; 0394 .PTR1 = ..PTR2
349 ; 0395 END;
350 ; 0396 SEG = EXP = COUNT = 0
351 ; 0397 END
352 ; 0398 ELSE
353 ; 0399 RETURN ERRPRT(BADARG);
354 ; 0400
355 ; 0401 ! 4 - PLUS
356 ; 0402 !
357 ; 0403 OP = 1;
358 ; 0404
359 ; 0405 ! 5 - MINUS
360 ; 0406 !
361 ; 0407 OP = 2;
362 ; 0408
363 ; 0409 ! 6 - STAR
364 ; 0410 !
365 ; 0411 OP = 3;
366 ; 0412
367 ; 0413 ! 7 - DOT
368 ; 0414 !
369 ; 0415 BEGIN
370 ; 0416 SEG = .VIRTSEG;
371 ; 0417 NUM = .VIRTDOT;
372 ; 0418 PFLAG[SYMBNUM] = TRUE
373 ; 0419 END;
374 ; 0420
375 ; 0421 ! 8 - C
376 ; 0422 !
377 ; 0423 BEGIN
378 ; 0424 NUM = .CONREG;
379 ; 0425 PFLAG[SYMBNUM] = TRUE
380 ; 0426 END;
381 ; 0427
382 ; 0428 ! 9 - Q
383 ; 0429 !
384 ; 0430 BEGIN
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 9
386 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.19 ZPROC.B11 PAGE 1-7
387
388 ; 0431 NUM = .QUANREG;
389 ; 0432 PFLAG[SYMBNUM] = TRUE
390 ; 0433 END;
391 ; 0434
392 ; 0435 ! 10 - DOLLAR
393 ; 0436 !
394 ; 0437 BEGIN
395 ; 0438 GETNUMANDDEL();
396 ; 0439 IF .DEL EQL "R"
397 ; 0440 THEN
398 ; 0441 IF .NUM GTRU 7
399 ; 0442 THEN
400 ; 0443 RETURN ERRPRT(NORELO)
401 ; 0444 ELSE
402 ; 0445 NUM = RELOCV[.NUM]
403 ; 0446 ELSE
404 ; 0447 IF (NUM = INDEX("ACFHLMQ")) LSS 0
405 ; 0448 THEN
406 ; 0449 RETURN ERRPRT(NOSPEC)
407 ; 0450 ELSE
408 ; 0451 NUM = INTREGS[.NUM];
409 ; 0452 PFLAG[SPECREG] = PFLAG[SYMBNUM] = TRUE;
410 ; 0453 END
411 ; 0454
412 ; 0455 TES
413 ; 0456 END;
414 ; 0457
415 ; 0458 IF .ARGS NEQ 0 OR .COUNT NEQ 0
416 ; 0459 THEN
417 ; 0460 ARGS = .ARGS + 1;
418 ; 0461 TYPE = INDEX("X?M?J^_@></\""'%=KEWNFORLV");
419 ; 0462 NOVALUE
420 ; 0463 END;
421 ; 0464
422
423
424 000016 PARSE:
425 000016 004167 000000G JSR R$1,$SAV5
426 000022 012767 177776 003776 MOV #177776,TYPE
427 000030 012767 177777 004056 MOV #177777,CHARNDX
428 000036 012701 004116' MOV #PARTAB,R$1
429 000042 012705 004120' MOV #PARTAB+2,R$5
430 000046 012704 004010' MOV #ARGS,R$4
431 000052 005067 003744 CLR PFLAG
432 000056 005014 CLR @R$4
433 000060 005046 CLR -(SP)
434 000062 005067 003742 CLR COUNT
435 000066 162706 000006 SUB #6,SP
436 000072 005015 CLR @R$5
437 000074 005011 L$62: CLR @R$1
438 000076 004767 000704 L$8: JSR PC,GETNUMANDD
439 000102 012703 004016' MOV #NUM,R$3
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 10
441 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.25 ZPROC.B11 PAGE 1-8
442
443 000106 016602 000006 MOV 6(SP),R$2
444 000112 006302 ASL R$2
445 000114 066207 000120' ADD L$9(R$2),PC
446 000120 000012 L$9: .WORD L$11-L$9
447 000122 000016 .WORD L$12-L$9
448 000124 000022 .WORD L$13-L$9
449 000126 000026 .WORD L$14-L$9
450 000130 000054 .WORD L$15-L$9
451 000132 011311 L$11: MOV @R$3,@R$1
452 000134 000420 BR L$10
453 000136 061311 L$12: ADD @R$3,@R$1
454 000140 000416 BR L$10
455 000142 161311 L$13: SUB @R$3,@R$1
456 000144 000414 BR L$10
457 000146 011116 L$14: MOV @R$1,@SP
458 000150 006316 ASL @SP
459 000152 006316 ASL @SP
460 000154 011602 MOV @SP,R$2
461 000156 061102 ADD @R$1,R$2
462 000160 006302 ASL R$2
463 000162 006302 ASL R$2
464 000164 006302 ASL R$2
465 000166 061302 ADD @R$3,R$2
466 000170 010211 MOV R$2,@R$1
467 000172 000401 BR L$10
468 000174 005011 L$15: CLR @R$1
469 000176 005066 000006 L$10: CLR 6(SP)
470 000202 012700 000632' MOV #P$AAB,R$0
471 000206 004767 000716 JSR PC,LOOKUP
472 000212 005200 INC R$0
473 000214 006300 ASL R$0
474 000216 066007 000222' ADD L$16(R$0),PC
475 000222 000352 L$16: .WORD U$5-L$16
476 000224 000026 .WORD L$19-L$16
477 000226 000032 .WORD L$20-L$16
478 000230 000066 .WORD L$21-L$16
479 000232 000162 .WORD L$22-L$16
480 000234 000172 .WORD L$23-L$16
481 000236 000202 .WORD L$24-L$16
482 000240 000212 .WORD L$25-L$16
483 000242 000224 .WORD L$26-L$16
484 000244 000232 .WORD L$27-L$16
485 000246 000246 .WORD L$28-L$16
486 000250 011115 L$19: MOV @R$1,@R$5
487 000252 000710 BR L$62
488 000254 021127 000007 L$20: CMP @R$1,#7
489 000260 101402 BLOS L$30
490 000262 005000 L$63: CLR R$0
491 000264 000527 BR L$54
492 000266 011102 L$30: MOV @R$1,R$2
493 000270 006302 ASL R$2
494 000272 016215 004074' MOV INTREGS+36(R$2),@R$5
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 11
496 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.25 ZPROC.B11 PAGE 1-9
497
498 000276 011102 MOV @R$1,R$2
499 000300 006302 ASL R$2
500 000302 016211 004054' MOV INTREGS+16(R$2),@R$1
501 000306 000436 BR L$22
502 000310 005214 L$21: INC @R$4
503 000312 021427 000002 CMP @R$4,#2
504 000316 003027 BGT L$33
505 000320 012766 004132' 000002 MOV #PARTAB+14,2(SP)
506 000326 012766 004126' 000004 MOV #PARTAB+10,4(SP)
507 000334 012702 000003 MOV #3,R$2
508 000340 161766 000002 L$34: SUB @PC,2(SP)
509 000344 162766 000002 000004 SUB #2,4(SP)
510 000352 017676 000004 000002 MOV @4(SP),@2(SP)
511 000360 005302 DEC R$2
512 000362 002366 BGE L$34
513 000364 005067 003440 CLR COUNT
514 000370 005011 CLR @R$1
515 000372 005015 CLR @R$5
516 000374 000640 L$64: BR L$8
517 000376 012700 000003 L$33: MOV #3,R$0
518 000402 000460 BR L$54
519 000404 012766 000001 000006 L$22: MOV #1,6(SP)
520 000412 000631 BR L$8
521 000414 012766 000002 000006 L$23: MOV #2,6(SP)
522 000422 000625 BR L$8
523 000424 012766 000003 000006 L$24: MOV #3,6(SP)
524 000432 000621 BR L$8
525 000434 013715 004024' L$25: MOV @#VIRTSEG,@R$5
526 000440 013713 004012' MOV @#VIRTDOT,@R$3
527 000444 000405 BR L$60
528 000446 013713 004040' L$26: MOV @#INTREGS+2,@R$3
529 000452 000402 BR L$60
530 000454 013713 004052' L$27: MOV @#INTREGS+14,@R$3
531 000460 152737 000001 004022' L$60: BISB #1,@#PFLAG
532 000466 000603 BR L$8
533 000470 004767 000312 L$28: JSR PC,GETNUMANDD
534 000474 023727 004014' 000122 CMP @#DEL,#122
535 000502 001010 BNE L$38
536 000504 021327 000007 CMP @R$3,#7
537 000510 101264 BHI L$63
538 000512 011302 MOV @R$3,R$2
539 000514 006302 ASL R$2
540 000516 062702 004054' ADD #INTREGS+16,R$2
541 000522 000417 BR L$51
542 000524 012700 000646' L$38: MOV #P$AAC,R$0
543 000530 004767 000374 JSR PC,LOOKUP
544 000534 010013 MOV R$0,@R$3
545 000536 002005 BGE L$44
546 000540 012700 000004 MOV #4,R$0
547 000544 004767 000000G L$54: JSR PC,ERRPRT
548 000550 000425 BR L$7
549 000552 011302 L$44: MOV @R$3,R$2
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 12
551 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.25 ZPROC.B11 PAGE 1-10
552
553 000554 006302 ASL R$2
554 000556 062702 004036' ADD #INTREGS,R$2
555 000562 010213 L$51: MOV R$2,@R$3
556 000564 152737 000003 004022' BISB #3,@#PFLAG
557 000572 000700 BR L$64
558 000574 005714 U$5: TST @R$4
559 000576 001003 BNE L$47
560 000600 005767 003224 TST COUNT
561 000604 001401 BEQ L$49
562 000606 005214 L$47: INC @R$4
563 000610 012700 000656' L$49: MOV #P$AAD,R$0
564 000614 004767 000310 JSR PC,LOOKUP
565 000620 010067 003202 MOV R$0,TYPE
566 000624 062706 000010 L$7: ADD #10,SP
567 000630 000207 RTS PC
568
569 ; ROUTINE SIZE: 198
570
571
572 000632 .PSECT
573
574 000632 026072 025473 025055 P$AAB: .WORD 26072,25473,25055
575 000640 041456 022121 000000 .WORD 41456,22121,0
576 000646 041501 044106 046514 P$AAC: .WORD 41501,44106,46514
577 000654 000121 .WORD 121
578 000656 006530 057012 040137 P$AAD: .WORD 6530,57012,40137
579 000664 036076 056057 023442 .WORD 36076,56057,23442
580 000672 036445 042513 047127 .WORD 36445,42513,47127
581 000700 047506 046122 000126 .WORD 47506,46122,126
582
583
584
585 ; 0465 COMMENT ! GETCHAR
586 ; 0466 !
587 ; 0467 ! FUNCTION
588 ; 0468 ! GET ONE CHARACTER FROM THE USER COMMAND
589 ; 0469 !
590 ; 0470 ! INPUTS
591 ; 0471 ! USER COMMAND BUFFER
592 ; 0472 ! CHARNDX - INDEX OF THE NEXT CHARACTER TO BE SCANNED
593 ; 0473 !
594 ; 0474 ! OUTPUTS
595 ; 0475 ! VALUE - CHARACTER
596 ; 0476 ! A NULL LINE IS TRANSLATED TO <LF>
597 ; 0477 ! BLANK IS TRANSLATED TO PLUS
598 ; 0478 ! A <CR> IS RETURNED WHEN THE COUNT IS EXHAUSTED
599 ; 0479 !
600 ; 0480
601 ; 0481 ROUTINE GETCHAR=
602 ; 0482 BEGIN
603 ; 0483 IF .CMLLEN EQL 0
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 13
605 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.27 ZPROC.B11 PAGE 1-11
606
607 ; 0484 THEN
608 ; 0485 "?J"
609 ; 0486 ELSE
610 ; 0487 IF (CHARNDX = .CHARNDX + 1) GEQ .CMLLEN
611 ; 0488 THEN
612 ; 0489 "?M"
613 ; 0490 ELSE
614 ; 0491 IF .CMLADR[.CHARNDX] EQL " "
615 ; 0492 THEN
616 ; 0493 "+"
617 ; 0494 ELSE
618 ; 0495 .CMLADR[.CHARNDX]
619 ; 0496 END;
620 ; 0497
621
622 000706 .PSECT
623
624
625 000706 GETCHAR:
626 000706 010146 MOV R$1,-(SP)
627 000710 005737 000000G TST @#CMLLEN
628 000714 001003 BNE L$67
629 000716 012700 000012 MOV #12,R$0
630 000722 000427 BR L$71
631 000724 012701 004114' L$67: MOV #CHARNDX,R$1
632 000730 011100 MOV @R$1,R$0
633 000732 005200 INC R$0
634 000734 010011 MOV R$0,@R$1
635 000736 020037 000000G CMP R$0,@#CMLLEN
636 000742 002403 BLT L$70
637 000744 012700 000015 MOV #15,R$0
638 000750 000414 BR L$71
639 000752 013700 000000G L$70: MOV @#CMLADR,R$0
640 000756 061100 ADD @R$1,R$0
641 000760 121027 000040 CMPB @R$0,#40
642 000764 001003 BNE L$73
643 000766 012701 000053 MOV #53,R$1
644 000772 000402 BR L$74
645 000774 005001 L$73: CLR R$1
646 000776 151001 BISB @R$0,R$1
647 001000 010100 L$74: MOV R$1,R$0
648 001002 012601 L$71: MOV (SP)+,R$1
649 001004 000207 RTS PC
650
651 ; ROUTINE SIZE: 32
652
653
654
655
656
657 ; 0498 COMMENT ! GETNUMANDDEL
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 14
659 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.30 ZPROC.B11 PAGE 1-12
660
661 ; 0499 !
662 ; 0500 ! FUNCTION
663 ; 0501 ! RETURN A NUMERIC QUANTITY AND ITS FOLLOWING DELIMITER
664 ; 0502 ! FROM THE COMMAND STRING
665 ; 0503 !
666 ; 0504 ! INPUTS
667 ; 0505 ! PFLAG - SET IF A SYMBOLIC NUMBER (LIKE C OR Q OR DOT)
668 ; 0506 ! PRECEDED
669 ; 0507 !
670 ; 0508 ! OUTPUTS
671 ; 0509 ! NUM - VALUE OF THE NUMERIC QUANTITY (ZERO IF NONE)
672 ; 0510 ! DEL - DELIMITER CHARACTER (ASCII)
673 ; 0511 ! COUNT - COUNT OF NUMERIC DIGITS
674 ; 0512 ! VALUE - NONE
675 ; 0513 !
676 ; 0514
677 ; 0515 ROUTINE GETNUMANDDEL=
678 ; 0516 BEGIN
679 ; 0517 IF .PFLAG[SYMBNUM]
680 ; 0518 THEN
681 ; 0519 BEGIN
682 ; 0520 PFLAG[SYMBNUM] = FALSE;
683 ; 0521 COUNT = .COUNT + 1;
684 ; 0522 END
685 ; 0523 ELSE
686 ; 0524 NUM = 0;
687 ; 0525
688 ; 0526 DEL = GETCHAR();
689 ; 0527 WHILE
690 ; 0528 .DEL GEQ "0" AND .DEL LEQ "7"
691 ; 0529 DO
692 ; 0530 BEGIN
693 ; 0531 NUM = .NUM*8 + .DEL-"0";
694 ; 0532 COUNT = .COUNT + 1;
695 ; 0533 DEL = GETCHAR();
696 ; 0534 END;
697 ; 0535 NOVALUE
698 ; 0536 END;
699 ; 0537
700
701
702 001006 GETNUMANDD:
703 001006 004167 000000G JSR R$1,$SAV4
704 001012 012702 004030' MOV #COUNT,R$2
705 001016 012703 004016' MOV #NUM,R$3
706 001022 132737 000001 004022' BITB #1,@#PFLAG
707 001030 001407 BEQ L$77
708 001032 142737 000001 004022' BICB #1,@#PFLAG
709 001040 011204 MOV @R$2,R$4
710 001042 005204 INC R$4
711 001044 010412 MOV R$4,@R$2
712 001046 000401 BR L$79
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 15
714 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.33 ZPROC.B11 PAGE 1-13
715
716 001050 005013 L$77: CLR @R$3
717 001052 012701 004014' L$79: MOV #DEL,R$1
718 001056 004767 177624 L$85: JSR PC,GETCHAR
719 001062 010011 MOV R$0,@R$1
720 001064 010004 MOV R$0,R$4
721 001066 020427 000060 CMP R$4,#60
722 001072 002415 BLT U$113
723 001074 020427 000067 CMP R$4,#67
724 001100 003012 BGT U$113
725 001102 011300 MOV @R$3,R$0
726 001104 006300 ASL R$0
727 001106 006300 ASL R$0
728 001110 006300 ASL R$0
729 001112 060400 ADD R$4,R$0
730 001114 162700 000060 SUB #60,R$0
731 001120 010013 MOV R$0,@R$3
732 001122 005212 INC @R$2
733 001124 000754 BR L$85
734 001126 000207 U$113: RTS PC
735
736 ; ROUTINE SIZE: 41
737
738
739
740
741
742 ; 0538 COMMENT ! LOOKUP(P0)
743 ; 0539 !
744 ; 0540 ! FUNCTION
745 ; 0541 ! SEARCH FOR A CHARACTER AND RETURN ITS INDEX IN AN ASCIZ STRING
746 ; 0542 !
747 ; 0543 ! INPUTS
748 ; 0544 ! P0 - POINTER TO AN ASCIZ STRING
749 ; 0545 ! DEL - CHARACTER TO BE SEARCHED FOR
750 ; 0546 !
751 ; 0547 ! OUTPUTS
752 ; 0548 ! VALUE - INDEX OF THE CHARACTER (-1 IF NOT PRESENT)
753 ; 0549 !
754 ; 0550
755 ; 0551 ROUTINE REG0 LOOKUP(P0)=
756 ; 0552 BEGIN
757 ; 0553 LOCAL
758 ; 0554 PBYTVECT P;
759 ; 0555 P = .P0;
760 ; 0556 UNTIL
761 ; 0557 .P[0] EQL 0
762 ; 0558 DO
763 ; 0559 BEGIN
764 ; 0560 IF .DEL<0,8> EQL .P[0]
765 ; 0561 THEN EXITLOOP .P-.P0;
766 ; 0562 P = .P + 1
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 16
768 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.34 ZPROC.B11 PAGE 1-14
769
770 ; 0563 END
771 ; 0564 END;
772 ; 0565
773
774
775 001130 LOOKUP:
776 001130 004167 000000G JSR R$1,$SAV2
777 001134 010002 MOV R$0,R$2
778 001136 010201 MOV R$2,R$1
779 001140 105711 L$88: TSTB @R$1
780 001142 001410 BEQ L$89
781 001144 123711 004014' CMPB @#DEL,@R$1
782 001150 001003 BNE L$92
783 001152 010100 MOV R$1,R$0
784 001154 160200 SUB R$2,R$0
785 001156 000207 RTS PC
786 001160 005201 L$92: INC R$1
787 001162 000766 BR L$88
788 001164 012700 177777 L$89: MOV #177777,R$0
789 001170 000207 U$126: RTS PC
790
791 ; ROUTINE SIZE: 17
792
793
794
795
796
797 ; 0566 COMMENT ! EXECUTE
798 ; 0567 !
799 ; 0568 ! FUNCTION
800 ; 0569 ! EXECUTE THE USER COMMAND
801 ; 0570 !
802 ; 0571 ! INPUTS
803 ; 0572 ! TYPE - COMMAND TYPE
804 ; 0573 ! PARTAB - THE PARSED ADDRESSES
805 ; 0574 ! ARGS - ARGUMENT COUNT
806 ; 0575 !
807 ; 0576 ! OUTPUTS
808 ; 0577 ! THE COMMAND EXECUTED
809 ; 0578 ! VALUE - NONE
810 ; 0579 !
811 ; 0580
812 ; 0581 ROUTINE EXECUTE=
813 ; 0582 BEGIN
814 ; 0583 BIND
815 ; 0584 BYTVECT CASEVAL = UPLIT(BYTS(
816 ; 0585 0,1,11,2,2,2,2,2,2,2,3,3,3,3,3,4,5,6,6,6,7,8,9,10,12,0)),
817 ; 0586 BYTVECT SUBCASE = UPLIT(BYTS(
818 ; 0587 0,0,0,0,1,2,4,5,6,3,0,3,1,4,2,0,0,0,0,0,0,0,0,0,0,0)),
819 ; 0588 BYTVECT MAXARGS = UPLIT(BYTS(
820 ; 0589 3,3,0,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,1,2,2,3,1,0));
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 17
822 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.37 ZPROC.B11 PAGE 1-15
823
824 ; 0590 LOCAL
825 ; 0591 SUBC;
826 ; 0592
827 ; 0593
828 ; 0594 IF .MAXARGS[.TYPE+2] LSS .ARGS<0,8>
829 ; 0595 THEN RETURN ERRPRT(BADARG);
830 ; 0596
831 ; 0597 SUBC = .SUBCASE[.TYPE+2];
832 ; 0598 CASE .CASEVAL[.TYPE+2] OF
833 ; 0599 SET
834 ; 0600
835 ; 0601 ! 0 - ERROR
836 ; 0602 !
837 ; 0603 0;
838 ; 0604
839 ; 0605 ! 1 - NOT FOUND
840 ; 0606 !
841 ; 0607 ERRPRT(BADCMD);
842 ; 0608
843 ; 0609 ! 2 - <CR>, <LF>, ^, _, @, >, <
844 ; 0610 !
845 ; 0611 BEGIN
846 ; 0612 IF .ARGS NEQ 0
847 ; 0613 THEN
848 ; 0614 CASE .BWMODE+.VRMODE OF
849 ; 0615 SET
850 ; 0616
851 ; 0617 ! 0 - NO OPEN LOCATION
852 ; 0618 !
853 ; 0619 ERRPRT(NOOPEN);
854 ; 0620
855 ; 0621 ! 1 - OPEN AS BYTE
856 ; 0622 !
857 ; 0623 BEGIN
858 ; 0624 (.REALDOT)<0,8> = .PARTAB[0,PARVAL];
859 ; 0625 WRITBK = TRUE;
860 ; 0626 END;
861 ; 0627
862 ; 0628 ! 2 - OPEN AS WORD
863 ; 0629 !
864 ; 0630 BEGIN
865 ; 0631 .REALDOT = .PARTAB[0,PARVAL];
866 ; 0632 WRITBK = TRUE;
867 ; 0633 END;
868 ; 0634
869 ; 0635 ! 3 - SPECIAL REGISTER OPEN AS BYTE
870 ; 0636 !
871 ; 0637 (.REALDOT)<0,8> = .PARTAB[0,PARVAL];
872 ; 0638
873 ; 0639 ! 4 - SPECIAL REGISTER OPEN AS WORD
874 ; 0640 !
875 ; 0641 .REALDOT = .PARTAB[0,PARVAL]
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 18
877 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.38 ZPROC.B11 PAGE 1-16
878
879 ; 0642
880 ; 0643 TES;
881 ; 0644 IF .SUBC NEQ 0
882 ; 0645 THEN
883 ; 0646 IF .SUBC GEQ 4 AND .BWMODE
884 ; 0647 THEN
885 ; 0648 BEGIN
886 ; 0649 ERRPRT(NOBYTE);
887 ; 0650 BWMODE = VRMODE = 0
888 ; 0651 END
889 ; 0652 ELSE
890 ; 0653 BEGIN
891 ; 0654 VIRTDOT =
892 ; 0655 BEGIN
893 ; 0656 CASE .SUBC-1 OF
894 ; 0657 SET
895 ; 0658
896 ; 0659 ! LINEFEED
897 ; 0660 !
898 ; 0661 SAVEDOT = .VIRTDOT + .BWMODE;
899 ; 0662
900 ; 0663 ! UP-ARROW
901 ; 0664 !
902 ; 0665 SAVEDOT = .VIRTDOT - .BWMODE;
903 ; 0666
904 ; 0667 ! LESS THAN
905 ; 0668 !
906 ; 0669 .SAVEDOT + .BWMODE;
907 ; 0670
908 ; 0671 ! BACK-ARROW
909 ; 0672 !
910 ; 0673 .VIRTDOT + ..REALDOT + 2;
911 ; 0674
912 ; 0675 ! AT SIGN
913 ; 0676 !
914 ; 0677 ..REALDOT;
915 ; 0678
916 ; 0679 ! GREATER THAN
917 ; 0680 !
918 ; 0681 .VIRTDOT + BYTSXT(..REALDOT)*2 + 2
919 ; 0682
920 ; 0683 TES
921 ; 0684 END;
922 ; 0685 IF .VIRTDOT THEN BWMODE = 1;
923 ; 0686 OPENANDTYPE()
924 ; 0687 END
925 ; 0688 END;
926 ; 0689
927 ; 0690 ! 3 - /, \, ", ', %
928 ; 0691 !
929 ; 0692 BEGIN
930 ; 0693 BIND
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 19
932 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.39 ZPROC.B11 PAGE 1-17
933
934 ; 0694 BYTVECT FORMTAB = UPLIT(BYTS(
935 ; 0695 0,2,4,0,2,0));
936 ; 0696
937 ; 0697 IF .ARGS NEQ 0
938 ; 0698 THEN
939 ; 0699 BEGIN
940 ; 0700 VIRTSEG = .PARTAB[0,PARSEG];
941 ; 0701 VIRTDOT = SAVEDOT = .PARTAB[0,PARVAL];
942 ; 0702 VRMODE = .PFLAG[SPECREG] * 2;
943 ; 0703 END;
944 ; 0704 BWMODE =
945 ; 0705 BEGIN
946 ; 0706 IF .SUBC GEQ 3 OR .VIRTDOT
947 ; 0707 THEN
948 ; 0708 1
949 ; 0709 ELSE
950 ; 0710 2
951 ; 0711 END;
952 ; 0712 FORM = .FORMTAB[.SUBC];
953 ; 0713 OPENANDTYPE()
954 ; 0714 END;
955 ; 0715
956 ; 0716 ! 4 - =
957 ; 0717 !
958 ; 0718 BEGIN
959 ; 0719 OUTN(QUANREG=.PARTAB[0,PARVAL],6);
960 ; 0720 EOL();
961 ; 0721 END;
962 ; 0722
963 ; 0723 ! 5 - K
964 ; 0724 !
965 ; 0725 BEGIN
966 ; 0726 IF .ARGS NEQ 2
967 ; 0727 THEN
968 ; 0728 BEGIN
969 ; 0729 PARTAB[1,PARSEG] = .VIRTSEG;
970 ; 0730 PARTAB[1,PARVAL] = .VIRTDOT
971 ; 0731 END;
972 ; 0732 IF .ARGS NEQ 0
973 ; 0733 THEN
974 ; 0734 IF
975 ; 0735 (PARTAB[0,PARVAL] =
976 ; 0736 SELRELREG(.PARTAB[1,PARSEG],.PARTAB[1,PARVAL]))
977 ; 0737 LSS 0
978 ; 0738 THEN
979 ; 0739 RETURN ERRPRT(NORELO);
980 ; 0740 OUTC("=");
981 ; 0741 OUTC(.PARTAB[0,PARREG] + "0");
982 ; 0742 OUTC(",");
983 ; 0743 OUTN(QUANREG=.PARTAB[1,PARVAL]-.RELOCV[.PARTAB[0,PARREG]],6);
984 ; 0744 EOL()
985 ; 0745 END;
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 20
987 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.41 ZPROC.B11 PAGE 1-18
988
989 ; 0746
990 ; 0747 ! 6 - E, W, N
991 ; 0748 !
992 ; 0749 ERRPRT(NOTYET);
993 ; 0750
994 ; 0751 ! 7 - F
995 ; 0752 !
996 ; 0753 ERRPRT(NOTYET);
997 ; 0754
998 ; 0755 ! 8 - O
999 ; 0756 !
1000 ; 0757 BEGIN
1001 ; 0758 LOCAL
1002 ; 0759 N;
1003 ; 0760 N = (IF .ARGS NEQ 1 THEN .PARTAB[1,PARVAL] ELSE .VIRTDOT);
1004 ; 0761 OUTC("_");
1005 ; 0762 OUTN(N=.PARTAB[0,PARVAL] - .N - 2, 6);
1006 ; 0763 OUTC(" ");
1007 ; 0764 OUTC(">");
1008 ; 0765 OUTN(QUANREG=.N/2, 6);
1009 ; 0766 EOL()
1010 ; 0767 END;
1011 ; 0768
1012 ; 0769 ! 9 - R
1013 ; 0770 !
1014 ; 0771 CASE .ARGS OF
1015 ; 0772 SET
1016 ; 0773
1017 ; 0774 ! 0 - CLEAR ALL
1018 ; 0775 !
1019 ; 0776 DECR I FROM 7 TO 0 DO
1020 ; 0777 BEGIN
1021 ; 0778 RELOCV[.I] = #177777;
1022 ; 0779 RELOCS[.I] = 0;
1023 ; 0780 END;
1024 ; 0781
1025 ; 0782 ! 1 - CLEAR ONE
1026 ; 0783 !
1027 ; 0784 IF .PARTAB[0,PARVAL] GTRU 7
1028 ; 0785 THEN
1029 ; 0786 ERRPRT(NORELO)
1030 ; 0787 ELSE
1031 ; 0788 BEGIN
1032 ; 0789 RELOCV[.PARTAB[0,PARVAL]] = #177777;
1033 ; 0790 RELOCS[.PARTAB[0,PARVAL]] = 0;
1034 ; 0791 END;
1035 ; 0792
1036 ; 0793 ! 2 - SET ONE
1037 ; 0794 !
1038 ; 0795 IF .PARTAB[0,PARVAL] GTRU 7
1039 ; 0796 THEN
1040 ; 0797 ERRPRT(NORELO)
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 21
1042 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.43 ZPROC.B11 PAGE 1-19
1043
1044 ; 0798 ELSE
1045 ; 0799 BEGIN
1046 ; 0800 RELOCV[.PARTAB[0,PARVAL]] = .PARTAB[1,PARVAL];
1047 ; 0801 RELOCS[.PARTAB[0,PARVAL]] = .PARTAB[1,PARSEG];
1048 ; 0802 END
1049 ; 0803
1050 ; 0804 TES;
1051 ; 0805
1052 ; 0806 ! 10 - L
1053 ; 0807 !
1054 ; 0808 ERRPRT(NOTYET);
1055 ; 0809
1056 ; 0810 ! 11 - X
1057 ; 0811 !
1058 ; 0812 SIGNAL SIGXIT;
1059 ; 0813
1060 ; 0814 ! 12 - V
1061 ; 0815 !
1062 ; 0816 IF .QUANREG NEQ .PARTAB[0,PARVAL]
1063 ; 0817 THEN
1064 ; 0818 BEGIN
1065 ; 0819 ERRPRT(VFYREJ);
1066 ; 0820 SIGNAL SIGXIT
1067 ; 0821 END
1068 ; 0822
1069 ; 0823 TES;
1070 ; 0824 NOVALUE
1071 ; 0825 END;
1072 ; 0826
1073
1074
1075 001172 EXECUTE:
1076 001172 004167 000000G JSR R$1,$SAV2
1077 001176 013700 004026' MOV @#TYPE,R$0
1078 001202 012702 004010' MOV #ARGS,R$2
1079 001206 126012 002672' CMPB P$AAG+2(R$0),@R$2
1080 001212 103004 BHIS L$97
1081 001214 012700 000003 MOV #3,R$0
1082 001220 000167 000000G JMP ERRPRT
1083 001224 013700 004026' L$97: MOV @#TYPE,R$0
1084 001230 062700 000002 ADD #2,R$0
1085 001234 005001 CLR R$1
1086 001236 156001 002636' BISB P$AAF(R$0),R$1
1087 001242 116000 002604' MOVB P$AAE(R$0),R$0
1088 001246 042700 177400 BIC #177400,R$0
1089 001252 006300 ASL R$0
1090 001254 066007 001260' ADD L$99(R$0),PC
1091 001260 001260 L$99: .WORD L$100-L$99
1092 001262 000032 .WORD L$102-L$99
1093 001264 000042 .WORD L$103-L$99
1094 001266 000424 .WORD L$104-L$99
1095 001270 000540 .WORD L$105-L$99
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 22
1097 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.49 ZPROC.B11 PAGE 1-20
1098
1099 001272 000554 .WORD L$106-L$99
1100 001274 000750 .WORD L$107-L$99
1101 001276 000760 .WORD L$108-L$99
1102 001300 000770 .WORD L$109-L$99
1103 001302 001120 .WORD L$110-L$99
1104 001304 001262 .WORD L$111-L$99
1105 001306 001272 .WORD L$112-L$99
1106 001310 001302 .WORD L$113-L$99
1107 001312 012700 000005 L$102: MOV #5,R$0
1108 001316 000167 000000G JMP ERRPRT
1109 001322 005712 L$103: TST @R$2
1110 001324 001443 BEQ L$115
1111 001326 013700 004020' MOV @#BWMODE,R$0
1112 001332 063700 004132' ADD @#VRMODE,R$0
1113 001336 006300 ASL R$0
1114 001340 066007 001344' ADD L$116(R$0),PC
1115 001344 000012 L$116: .WORD L$118-L$116
1116 001346 000024 .WORD L$119-L$116
1117 001350 000034 .WORD L$120-L$116
1118 001352 000052 .WORD L$121-L$116
1119 001354 000062 .WORD L$122-L$116
1120 001356 012700 000006 L$118: MOV #6,R$0
1121 001362 004767 000000G JSR PC,ERRPRT
1122 001366 000422 BR L$115
1123 001370 113777 004116' 000000G L$119: MOVB @#PARTAB,@REALDOT
1124 001376 000403 BR L$178
1125 001400 013777 004116' 000000G L$120: MOV @#PARTAB,@REALDOT
1126 001406 012767 000001 000000G L$178: MOV #1,WRITBK
1127 001414 000407 BR L$115
1128 001416 113777 004116' 000000G L$121: MOVB @#PARTAB,@REALDOT
1129 001424 000403 BR L$115
1130 001426 013777 004116' 000000G L$122: MOV @#PARTAB,@REALDOT
1131 001434 005701 L$115: TST R$1
1132 001436 001002 BNE L$191
1133 001440 000167 001074 JMP L$100
1134 001444 132737 000001 004020' L$191: BITB #1,@#BWMODE
1135 001452 001414 BEQ L$126
1136 001454 020127 000004 CMP R$1,#4
1137 001460 002411 BLT L$126
1138 001462 012700 000007 MOV #7,R$0
1139 001466 004767 000000G JSR PC,ERRPRT
1140 001472 005067 002434 CLR VRMODE
1141 001476 005067 002316 CLR BWMODE
1142 001502 000207 RTS PC
1143 001504 010100 L$126: MOV R$1,R$0
1144 001506 005300 DEC R$0
1145 001510 006300 ASL R$0
1146 001512 066007 001516' ADD L$130(R$0),PC
1147 001516 000014 L$130: .WORD L$132-L$130
1148 001520 000036 .WORD L$133-L$130
1149 001522 000062 .WORD L$134-L$130
1150 001524 000074 .WORD L$135-L$130
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 23
1152 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.50 ZPROC.B11 PAGE 1-21
1153
1154 001526 000106 .WORD L$136-L$130
1155 001530 000116 .WORD L$137-L$130
1156 001532 013701 004012' L$132: MOV @#VIRTDOT,R$1
1157 001536 063701 004020' ADD @#BWMODE,R$1
1158 001542 010167 002266 MOV R$1,SAVEDOT
1159 001546 010167 002240 MOV R$1,VIRTDOT
1160 001552 000443 BR L$131
1161 001554 013767 004012' 002252 L$133: MOV @#VIRTDOT,SAVEDOT
1162 001562 163767 004020' 002244 SUB @#BWMODE,SAVEDOT
1163 001570 016767 002240 002214 MOV SAVEDOT,VIRTDOT
1164 001576 000431 BR L$131
1165 001600 013700 004034' L$134: MOV @#SAVEDOT,R$0
1166 001604 063700 004020' ADD @#BWMODE,R$0
1167 001610 000422 BR L$189
1168 001612 013700 004012' L$135: MOV @#VIRTDOT,R$0
1169 001616 067700 000000G ADD @REALDOT,R$0
1170 001622 000413 BR L$190
1171 001624 017767 000000G 002160 L$136: MOV @REALDOT,VIRTDOT
1172 001632 000413 BR L$131
1173 001634 017700 000000G L$137: MOV @REALDOT,R$0
1174 001640 004767 000000G JSR PC,BYTSXT
1175 001644 006300 ASL R$0
1176 001646 063700 004012' ADD @#VIRTDOT,R$0
1177 001652 062700 000002 L$190: ADD #2,R$0
1178 001656 010067 002130 L$189: MOV R$0,VIRTDOT
1179 001662 132737 000001 004012' L$131: BITB #1,@#VIRTDOT
1180 001670 001403 BEQ L$138
1181 001672 012767 000001 002120 MOV #1,BWMODE
1182 001700 000167 001024 L$138: JMP OPENANDTYP
1183 001704 005712 L$104: TST @R$2
1184 001706 001417 BEQ L$143
1185 001710 013767 004120' 002106 MOV @#PARTAB+2,VIRTSEG
1186 001716 013767 004116' 002110 MOV @#PARTAB,SAVEDOT
1187 001724 016767 002104 002060 MOV SAVEDOT,VIRTDOT
1188 001732 113700 004022' MOVB @#PFLAG,R$0
1189 001736 042700 177775 BIC #177775,R$0
1190 001742 010067 002164 MOV R$0,VRMODE
1191 001746 020127 000003 L$143: CMP R$1,#3
1192 001752 002004 BGE L$145
1193 001754 132737 000001 004012' BITB #1,@#VIRTDOT
1194 001762 001404 BEQ L$147
1195 001764 012767 000001 002026 L$145: MOV #1,BWMODE
1196 001772 000403 BR L$148
1197 001774 012767 000002 002016 L$147: MOV #2,BWMODE
1198 002002 005067 002024 L$148: CLR FORM
1199 002006 156167 002722' 002016 BISB P$AAH(R$1),FORM
1200 002014 000167 000710 JMP OPENANDTYP
1201 002020 013767 004116' 002024 L$105: MOV @#PARTAB,INTREGS+14
1202 002026 016746 002020 MOV INTREGS+14,-(SP)
1203 002032 000466 BR L$184
1204 002034 021227 000002 L$106: CMP @R$2,#2
1205 002040 001406 BEQ L$150
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 24
1207 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.50 ZPROC.B11 PAGE 1-22
1208
1209 002042 013767 004024' 002054 MOV @#VIRTSEG,PARTAB+6
1210 002050 013767 004012' 002044 MOV @#VIRTDOT,PARTAB+4
1211 002056 005712 L$150: TST @R$2
1212 002060 001416 BEQ L$153
1213 002062 013746 004124' MOV @#PARTAB+6,-(SP)
1214 002066 013746 004122' MOV @#PARTAB+4,-(SP)
1215 002072 004767 001612 JSR PC,SELRELREG
1216 002076 010067 002014 MOV R$0,PARTAB
1217 002102 002004 BGE L$155
1218 002104 005000 CLR R$0
1219 002106 004767 000000G JSR PC,ERRPRT
1220 002112 000444 BR L$181
1221 002114 022626 L$155: CMP (SP)+,(SP)+
1222 002116 012700 000075 L$153: MOV #75,R$0
1223 002122 004767 000000G JSR PC,OUTC
1224 002126 113700 004116' MOVB @#PARTAB,R$0
1225 002132 042700 177770 BIC #177770,R$0
1226 002136 062700 000060 ADD #60,R$0
1227 002142 004767 000000G JSR PC,OUTC
1228 002146 012700 000054 MOV #54,R$0
1229 002152 004767 000000G JSR PC,OUTC
1230 002156 113701 004116' MOVB @#PARTAB,R$1
1231 002162 006301 ASL R$1
1232 002164 042701 177760 BIC #177760,R$1
1233 002170 016101 004054' MOV INTREGS+16(R$1),R$1
1234 002174 005401 NEG R$1
1235 002176 063701 004122' ADD @#PARTAB+4,R$1
1236 002202 010167 001644 MOV R$1,INTREGS+14
1237 002206 010146 MOV R$1,-(SP)
1238 002210 012746 000006 L$184: MOV #6,-(SP)
1239 002214 004767 000000G JSR PC,OUTN
1240 002220 004767 000000G JSR PC,EOL
1241 002224 022626 L$181: CMP (SP)+,(SP)+
1242 002226 000207 RTS PC
1243 002230 012700 000016 L$107: MOV #16,R$0
1244 002234 000167 000000G JMP ERRPRT
1245 002240 012700 000016 L$108: MOV #16,R$0
1246 002244 000167 000000G JMP ERRPRT
1247 002250 021227 000001 L$109: CMP @R$2,#1
1248 002254 001403 BEQ L$159
1249 002256 013701 004122' MOV @#PARTAB+4,R$1
1250 002262 000402 BR L$160
1251 002264 013701 004012' L$159: MOV @#VIRTDOT,R$1
1252 002270 012700 000137 L$160: MOV #137,R$0
1253 002274 004767 000000G JSR PC,OUTC
1254 002300 013700 004116' MOV @#PARTAB,R$0
1255 002304 160100 SUB R$1,R$0
1256 002306 162700 000002 SUB #2,R$0
1257 002312 010001 MOV R$0,R$1
1258 002314 010146 MOV R$1,-(SP)
1259 002316 012746 000006 MOV #6,-(SP)
1260 002322 004767 000000G JSR PC,OUTN
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 25
1262 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.50 ZPROC.B11 PAGE 1-23
1263
1264 002326 012700 000040 MOV #40,R$0
1265 002332 004767 000000G JSR PC,OUTC
1266 002336 012700 000076 MOV #76,R$0
1267 002342 004767 000000G JSR PC,OUTC
1268 002346 006201 ASR R$1
1269 002350 010167 001476 MOV R$1,INTREGS+14
1270 002354 010116 MOV R$1,@SP
1271 002356 012746 000006 MOV #6,-(SP)
1272 002362 004767 000000G JSR PC,OUTN
1273 002366 004767 000000G JSR PC,EOL
1274 002372 062706 000006 ADD #6,SP
1275 002376 000207 RTS PC
1276 002400 011200 L$110: MOV @R$2,R$0
1277 002402 006300 ASL R$0
1278 002404 066007 002410' ADD L$161(R$0),PC
1279 002410 000006 L$161: .WORD L$163-L$161
1280 002412 000036 .WORD L$164-L$161
1281 002414 000070 .WORD L$165-L$161
1282 002416 012701 000007 L$163: MOV #7,R$1
1283 002422 010100 L$166: MOV R$1,R$0
1284 002424 006300 ASL R$0
1285 002426 012760 177777 004054' MOV #177777,INTREGS+16(R$0)
1286 002434 005060 004074' CLR INTREGS+36(R$0)
1287 002440 005301 DEC R$1
1288 002442 002367 BGE L$166
1289 002444 000207 RTS PC
1290 002446 023727 004116' 000007 L$164: CMP @#PARTAB,#7
1291 002454 101015 BHI L$188
1292 002456 013701 004116' MOV @#PARTAB,R$1
1293 002462 006301 ASL R$1
1294 002464 012761 177777 004054' MOV #177777,INTREGS+16(R$1)
1295 002472 005061 004074' CLR INTREGS+36(R$1)
1296 002476 000207 RTS PC
1297 002500 023727 004116' 000007 L$165: CMP @#PARTAB,#7
1298 002506 101403 BLOS L$172
1299 002510 005000 L$188: CLR R$0
1300 002512 000167 000000G JMP ERRPRT
1301 002516 013701 004116' L$172: MOV @#PARTAB,R$1
1302 002522 006301 ASL R$1
1303 002524 013761 004122' 004054' MOV @#PARTAB+4,INTREGS+16(R$1)
1304 002532 013761 004124' 004074' MOV @#PARTAB+6,INTREGS+36(R$1)
1305 002540 000207 L$100: RTS PC
1306 002542 012700 000016 L$111: MOV #16,R$0
1307 002546 000167 000000G JMP ERRPRT
1308 002552 012700 177777 L$112: MOV #177777,R$0
1309 002556 000167 000000G JMP $SIGNL
1310 002562 023737 004052' 004116' L$113: CMP @#INTREGS+14,@#PARTAB
1311 002570 001763 BEQ L$100
1312 002572 012700 000015 MOV #15,R$0
1313 002576 004767 000000G JSR PC,ERRPRT
1314 002602 000763 BR L$112
1315
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 26
1317 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.50 ZPROC.B11 PAGE 1-24
1318
1319 ; ROUTINE SIZE: 389
1320
1321
1322 002604 .PSECT
1323
1324 002604 000400 001013 001002 P$AAE: .WORD 400,1013,1002
1325 002612 001002 001002 001403 .WORD 1002,1002,1403
1326 002620 001403 002003 003005 .WORD 1403,2003,3005
1327 002626 003006 004007 005011 .WORD 3006,4007,5011
1328 002634 000014 .WORD 14
1329 002636 000000 000000 001001 P$AAF: .WORD 0,0,1001
1330 002644 002404 001406 001400 .WORD 2404,1406,1400
1331 002652 002001 000002 000000 .WORD 2001,2,0
1332 002660 000000 000000 000000 .WORD 0,0,0
1333 002666 000000 .WORD 0
1334 002670 001403 000400 000401 P$AAG: .WORD 1403,400,401
1335 002676 000401 000401 000401 .WORD 401,401,401
1336 002704 000401 000401 001002 .WORD 401,401,1002
1337 002712 001002 001001 001402 .WORD 1002,1001,1402
1338 002720 000001 .WORD 1
1339 002722 001000 000004 000002 P$AAH: .WORD 1000,4,2
1340
1341
1342
1343 ; 0827 COMMENT ! OPENANDTYPE
1344 ; 0828 !
1345 ; 0829 ! FUNCTION
1346 ; 0830 ! OPEN AND TYPE A LOCATION IN THE CURRENT TYPEOUT FORMAT
1347 ; 0831 !
1348 ; 0832 ! INPUTS
1349 ; 0833 ! VRMODE - ZERO IF IN TASK ADDRESS SPACE, NONZERO IF IN
1350 ; 0834 ! REAL ADDRESS SPACE (AS FOR DOLLAR REGISTERS)
1351 ; 0835 ! VIRTSEG - SEGMENT-ID FOR ADDRESS
1352 ; 0836 ! VIRTDOT - ADDRESS
1353 ; 0837 ! BWMODE - OPEN LOCATION FORMAT
1354 ; 0838 ! 0 - NONE; 1 - BYTE; 2 - WORD
1355 ; 0839 !
1356 ; 0840 ! OUTPUTS
1357 ; 0841 ! LOCATION OPENED AND CONTENTS TYPED
1358 ; 0842 ! VALUE - NONE
1359 ; 0843 !
1360 ; 0844
1361 ; 0845 ROUTINE OPENANDTYPE=
1362 ; 0846 BEGIN
1363 ; 0847 BIND
1364 ; 0848 VECTOR REGIDS = UPLIT(
1365 ; 0849 "A","C","F","H","L","M","Q",
1366 ; 0850 "0R","1R","2R","3R","4R","5R","6R","7R"),
1367 ; 0851 BYTVECT FORMCHAR = UPLIT
1368 ; 0852 "/\""'%%";
1369 ; 0853 LOCAL
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 27
1371 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.52 ZPROC.B11 PAGE 1-25
1372
1373 ; 0854 C,
1374 ; 0855 REG,
1375 ; 0856 FORMAT,
1376 ; 0857 VAL;
1377 ; 0858
1378 ; 0859 ENABLE
1379 ; 0860 SIGADR: (BWMODE=VRMODE=VIRTSEG=VIRTDOT=0; NOVALUE)
1380 ; 0861 ELBANE;
1381 ; 0862
1382 ; 0863 IF .VRMODE EQL 0
1383 ; 0864 THEN
1384 ; 0865 BEGIN
1385 ; 0866 OPENLOC(.VIRTSEG,.VIRTDOT AND NOT 1);
1386 ; 0867 IF .VIRTDOT THEN REALDOT = .REALDOT + 1;
1387 ; 0868 END
1388 ; 0869 ELSE
1389 ; 0870 BEGIN
1390 ; 0871 REALDOT = .VIRTDOT;
1391 ; 0872 IF
1392 ; 0873 .REALDOT GEQU ARGREG AND
1393 ; 0874 .REALDOT LSSU RELOCV[8]
1394 ; 0875 THEN
1395 ; 0876 C = .REGIDS[(.REALDOT-ARGREG)/2]
1396 ; 0877 ELSE
1397 ; 0878 BEGIN
1398 ; 0879 BWMODE = VRMODE = 0;
1399 ; 0880 RETURN ERRPRT(NOSPEC)
1400 ; 0881 END
1401 ; 0882 END;
1402 ; 0883
1403 ; 0884 FORMAT = .FORM + .BWMODE<0,1>;
1404 ; 0885
1405 ; 0886 VAL =
1406 ; 0887 BEGIN
1407 ; 0888 CASE .BWMODE OF
1408 ; 0889 SET
1409 ; 0890
1410 ; 0891 RETURN NOVALUE;
1411 ; 0892
1412 ; 0893 .(.REALDOT)<0,8>;
1413 ; 0894
1414 ; 0895 ..REALDOT
1415 ; 0896
1416 ; 0897 TES
1417 ; 0898 END;
1418 ; 0899
1419 ; 0900 IF .VRMODE EQL 0
1420 ; 0901 THEN
1421 ; 0902 BEGIN
1422 ; 0903 OUTN(.VIRTSEG,(IF .VIRTSEG<8,8> NEQ 0 THEN 6 ELSE 3));
1423 ; 0904 OUTC(":");
1424 ; 0905 IF
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 28
1426 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.52 ZPROC.B11 PAGE 1-26
1427
1428 ; 0906 (REG = SELRELREG(.VIRTSEG,.VIRTDOT)) LSS 0
1429 ; 0907 OR .FMTREG NEQ 0
1430 ; 0908 THEN
1431 ; 0909 OUTN(.VIRTDOT,6)
1432 ; 0910 ELSE
1433 ; 0911 BEGIN
1434 ; 0912 OUTN(.REG,1);
1435 ; 0913 OUTC(",");
1436 ; 0914 OUTN(.VIRTDOT - .RELOCV[.REG],6)
1437 ; 0915 END
1438 ; 0916 END
1439 ; 0917 ELSE
1440 ; 0918 BEGIN
1441 ; 0919 OUTC("$");
1442 ; 0920 OUTC(.C);
1443 ; 0921 OUTC(.C<8,8>)
1444 ; 0922 END;
1445 ; 0923 OUTC(.FORMCHAR[.FORMAT]);
1446 ; 0924 OUTC(" ");
1447 ; 0925
1448 ; 0926 QUANREG = .VAL;
1449 ; 0927
1450 ; 0928 CASE .FORMAT OF
1451 ; 0929 SET
1452 ; 0930
1453 ; 0931 OUTN(.VAL,6);
1454 ; 0932
1455 ; 0933 OUTN(.VAL,3);
1456 ; 0934
1457 ; 0935 BEGIN
1458 ; 0936 OUTC(.VAL);
1459 ; 0937 OUTC(.VAL<8,8>)
1460 ; 0938 END;
1461 ; 0939
1462 ; 0940 OUTC(.VAL);
1463 ; 0941
1464 ; 0942 OUTR50(.VAL);
1465 ; 0943
1466 ; 0944 OUTR50(.VAL)
1467 ; 0945
1468 ; 0946 TES;
1469 ; 0947
1470 ; 0948 EOL();
1471 ; 0949 NOVALUE
1472 ; 0950 END;
1473 ; 0951
1474
1475 002730 .PSECT
1476
1477
1478 002730 OPENANDTYP:
1479 002730 004167 000000G JSR R$1,$SAV5
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 29
1481 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.58 ZPROC.B11 PAGE 1-27
1482
1483 002734 162706 000006 SUB #6,SP
1484 002740 012700 000006 MOV #6,R$0
1485 002744 004767 000000G JSR PC,$ENABL
1486 002750 000040 .WORD L$195-L$194
1487 002752 026727 000000G 177776 L$194: CMP SIGVAL,#177776
1488 002760 001012 BNE L$196
1489 002762 005067 001024 CLR VIRTDOT
1490 002766 005067 001032 CLR VIRTSEG
1491 002772 005067 001134 CLR VRMODE
1492 002776 005067 001016 CLR BWMODE
1493 003002 000167 000630 JMP U$300
1494 003006 000167 000000G L$196: JMP $SIGN1
1495 003012 013705 004012' L$195: MOV @#VIRTDOT,R$5
1496 003016 005737 004132' TST @#VRMODE
1497 003022 001017 BNE L$198
1498 003024 013746 004024' MOV @#VIRTSEG,-(SP)
1499 003030 010546 MOV R$5,-(SP)
1500 003032 042716 000001 BIC #1,@SP
1501 003036 004767 000000G JSR PC,OPENLOC
1502 003042 132737 000001 004012' BITB #1,@#VIRTDOT
1503 003050 001402 BEQ L$199
1504 003052 005267 000000G INC REALDOT
1505 003056 022626 L$199: CMP (SP)+,(SP)+
1506 003060 000431 BR L$206
1507 003062 010567 000000G L$198: MOV R$5,REALDOT
1508 003066 020527 004036' CMP R$5,#INTREGS
1509 003072 103412 BLO L$204
1510 003074 022705 004074' CMP #INTREGS+36,R$5
1511 003100 101407 BLOS L$204
1512 003102 162705 004036' SUB #INTREGS,R$5
1513 003106 006205 ASR R$5
1514 003110 006305 ASL R$5
1515 003112 016502 003652' MOV P$AAI(R$5),R$2
1516 003116 000412 BR L$206
1517 003120 005067 001006 L$204: CLR VRMODE
1518 003124 005067 000670 CLR BWMODE
1519 003130 012700 000004 MOV #4,R$0
1520 003134 004767 000000G JSR PC,ERRPRT
1521 003140 000167 000464 JMP L$231
1522 003144 013705 004032' L$206: MOV @#FORM,R$5
1523 003150 005004 CLR R$4
1524 003152 132737 000001 004020' BITB #1,@#BWMODE
1525 003160 001401 BEQ L$207
1526 003162 005204 INC R$4
1527 003164 060405 L$207: ADD R$4,R$5
1528 003166 010503 MOV R$5,R$3
1529 003170 013705 004020' MOV @#BWMODE,R$5
1530 003174 006305 ASL R$5
1531 003176 066507 003202' ADD L$208(R$5),PC
1532 003202 000426 L$208: .WORD L$231-L$208
1533 003204 000006 .WORD L$211-L$208
1534 003206 000016 .WORD L$212-L$208
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 30
1536 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.58 ZPROC.B11 PAGE 1-28
1537
1538 003210 005004 L$211: CLR R$4
1539 003212 157704 000000G BISB @REALDOT,R$4
1540 003216 000402 BR L$209
1541 003220 017704 000000G L$212: MOV @REALDOT,R$4
1542 003224 005737 004132' L$209: TST @#VRMODE
1543 003230 001103 BNE L$214
1544 003232 013746 004024' MOV @#VIRTSEG,-(SP)
1545 003236 105737 004025' TSTB @#VIRTSEG+1
1546 003242 001403 BEQ L$216
1547 003244 012746 000006 MOV #6,-(SP)
1548 003250 000402 BR L$217
1549 003252 012746 000003 L$216: MOV #3,-(SP)
1550 003256 004767 000000G L$217: JSR PC,OUTN
1551 003262 012700 000072 MOV #72,R$0
1552 003266 004767 000000G JSR PC,OUTC
1553 003272 013716 004024' MOV @#VIRTSEG,@SP
1554 003276 013746 004012' MOV @#VIRTDOT,-(SP)
1555 003302 004767 000402 JSR PC,SELRELREG
1556 003306 010005 MOV R$0,R$5
1557 003310 002403 BLT L$218
1558 003312 005737 004042' TST @#INTREGS+4
1559 003316 001407 BEQ L$220
1560 003320 013746 004012' L$218: MOV @#VIRTDOT,-(SP)
1561 003324 012746 000006 MOV #6,-(SP)
1562 003330 004767 000000G JSR PC,OUTN
1563 003334 000436 BR L$221
1564 003336 010546 L$220: MOV R$5,-(SP)
1565 003340 012746 000001 MOV #1,-(SP)
1566 003344 004767 000000G JSR PC,OUTN
1567 003350 012700 000054 MOV #54,R$0
1568 003354 004767 000000G JSR PC,OUTC
1569 003360 010566 000002 MOV R$5,2(SP)
1570 003364 006366 000002 ASL 2(SP)
1571 003370 016605 000002 MOV 2(SP),R$5
1572 003374 016566 004054' 000002 MOV INTREGS+16(R$5),2(SP)
1573 003402 005466 000002 NEG 2(SP)
1574 003406 063766 004012' 000002 ADD @#VIRTDOT,2(SP)
1575 003414 016616 000002 MOV 2(SP),@SP
1576 003420 012746 000006 MOV #6,-(SP)
1577 003424 004767 000000G JSR PC,OUTN
1578 003430 005726 TST (SP)+
1579 003432 062706 000012 L$221: ADD #12,SP
1580 003436 000414 BR L$222
1581 003440 012700 000044 L$214: MOV #44,R$0
1582 003444 004767 000000G JSR PC,OUTC
1583 003450 010200 MOV R$2,R$0
1584 003452 004767 000000G JSR PC,OUTC
1585 003456 010200 MOV R$2,R$0
1586 003460 105000 CLRB R$0
1587 003462 000300 SWAB R$0
1588 003464 004767 000000G JSR PC,OUTC
1589 003470 005000 L$222: CLR R$0
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 31
1591 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.58 ZPROC.B11 PAGE 1-29
1592
1593 003472 156300 003644' BISB P$AAJ(R$3),R$0
1594 003476 004767 000000G JSR PC,OUTC
1595 003502 012700 000040 MOV #40,R$0
1596 003506 004767 000000G JSR PC,OUTC
1597 003512 010467 000334 MOV R$4,INTREGS+14
1598 003516 010300 MOV R$3,R$0
1599 003520 006300 ASL R$0
1600 003522 066007 003526' ADD L$223(R$0),PC
1601 003526 000014 L$223: .WORD L$225-L$223
1602 003530 000024 .WORD L$226-L$223
1603 003532 000042 .WORD L$227-L$223
1604 003534 000060 .WORD L$228-L$223
1605 003536 000070 .WORD L$229-L$223
1606 003540 000070 .WORD L$229-L$223
1607 003542 010446 L$225: MOV R$4,-(SP)
1608 003544 012746 000006 MOV #6,-(SP)
1609 003550 000403 BR L$234
1610 003552 010446 L$226: MOV R$4,-(SP)
1611 003554 012746 000003 MOV #3,-(SP)
1612 003560 004767 000000G L$234: JSR PC,OUTN
1613 003564 022626 CMP (SP)+,(SP)+
1614 003566 000416 BR L$224
1615 003570 010400 L$227: MOV R$4,R$0
1616 003572 004767 000000G JSR PC,OUTC
1617 003576 010400 MOV R$4,R$0
1618 003600 105000 CLRB R$0
1619 003602 000300 SWAB R$0
1620 003604 000401 BR L$235
1621 003606 010400 L$228: MOV R$4,R$0
1622 003610 004767 000000G L$235: JSR PC,OUTC
1623 003614 000403 BR L$224
1624 003616 010400 L$229: MOV R$4,R$0
1625 003620 004767 000000G JSR PC,OUTR50
1626 003624 004767 000000G L$224: JSR PC,EOL
1627 003630 017767 000000G 000000G L$231: MOV @SIGREG,SIGREG
1628 003636 062706 000006 U$300: ADD #6,SP
1629 003642 000207 RTS PC
1630
1631 ; ROUTINE SIZE: 230
1632
1633
1634 003644 .PSECT
1635
1636 003644 056057 023442 022445 P$AAJ: .WORD 56057,23442,22445
1637 003652 000101 000103 000106 P$AAI: .WORD 101,103,106
1638 003660 000110 000114 000115 .WORD 110,114,115
1639 003666 000121 051060 051061 .WORD 121,51060,51061
1640 003674 051062 051063 051064 .WORD 51062,51063,51064
1641 003702 051065 051066 051067 .WORD 51065,51066,51067
1642
1643
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 32
1645 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:34.58 ZPROC.B11 PAGE 1-30
1646
1647
1648 ; 0952 COMMENT ! SELRELREG(SEG,OFF)
1649 ; 0953 !
1650 ; 0954 ! FUNCTION
1651 ; 0955 ! SELECT A RELOCATION REGISTER FOR TYPEOUT
1652 ; 0956 !
1653 ; 0957 ! INPUTS
1654 ; 0958 ! SEG - SEGMENT-ID
1655 ; 0959 ! OFF - ADDRESS
1656 ; 0960 !
1657 ; 0961 ! OUTPUTS
1658 ; 0962 ! VALUE - RELOCATION REGISTER (-1 IF NONE)
1659 ; 0963 ! WHOSE SEGMENT-ID MATCHES AND WHOSE CONTENTS
1660 ; 0964 ! ARE CLOSEST TO AND LESS THAN THE ADDRESS
1661 ; 0965 !
1662 ; 0966
1663 ; 0967 ROUTINE SELRELREG(SEG,OFF)=
1664 ; 0968 BEGIN
1665 ; 0969 LOCAL
1666 ; 0970 REG,
1667 ; 0971 DIST;
1668 ; 0972
1669 ; 0973 DIST = REG = -1;
1670 ; 0974 DECR I FROM 7 TO 0 DO
1671 ; 0975 BEGIN
1672 ; 0976 IF
1673 ; 0977 .SEG EQL .RELOCS[.I] AND
1674 ; 0978 .OFF GEQU .RELOCV[.I] AND
1675 ; 0979 .OFF-.RELOCV[.I] LEQU .DIST
1676 ; 0980 THEN
1677 ; 0981 BEGIN
1678 ; 0982 REG = .I;
1679 ; 0983 DIST = .OFF - .RELOCV[.I];
1680 ; 0984 END
1681 ; 0985 END;
1682 ; 0986 .REG
1683 ; 0987 END;
1684 ; 0988
1685
1686 003710 .PSECT
1687
1688
1689 003710 SELRELREG:
1690 003710 004167 000000G JSR R$1,$SAV4
1691 003714 012700 177777 MOV #177777,R$0
1692 003720 010003 MOV R$0,R$3
1693 003722 012704 000007 MOV #7,R$4
1694 003726 010402 L$240: MOV R$4,R$2
1695 003730 006302 ASL R$2
1696 003732 026662 000016 004074' CMP 16(SP),INTREGS+36(R$2)
1697 003740 001020 BNE L$243
1698 003742 026662 000014 004054' CMP 14(SP),INTREGS+16(R$2)
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 33
1700 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:35.02 ZPROC.B11 PAGE 1-31
1701
1702 003750 103414 BLO L$243
1703 003752 016601 000014 MOV 14(SP),R$1
1704 003756 166201 004054' SUB INTREGS+16(R$2),R$1
1705 003762 020301 CMP R$3,R$1
1706 003764 103406 BLO L$243
1707 003766 010400 MOV R$4,R$0
1708 003770 016601 000014 MOV 14(SP),R$1
1709 003774 166201 004054' SUB INTREGS+16(R$2),R$1
1710 004000 010103 MOV R$1,R$3
1711 004002 005304 L$243: DEC R$4
1712 004004 002350 BGE L$240
1713 004006 000207 RTS PC
1714
1715 ; ROUTINE SIZE: 32
1716
1717
1718
1719
1720
1721 ; 0989 END
1722 ; 0990 ELUDOM
1723
1724
1725 004010 ZPROC:
1726
1727 ; ROUTINE SIZE: 0
1728
1729
1730 004010 .PSECT
1731
1732 004010 004012' ARGS: .=.+2
1733 004012 004014' VIRTDOT: .=.+2
1734 004014 004016' DEL: .=.+2
1735 004016 004020' NUM: .=.+2
1736 004020 004022' BWMODE: .=.+2
1737 004022 004024' PFLAG: .=.+2
1738 004024 004026' VIRTSEG: .=.+2
1739 004026 004030' TYPE: .=.+2
1740 004030 004032' COUNT: .=.+2
1741 004032 004034' FORM: .=.+2
1742 004034 004036' SAVEDOT: .=.+2
1743 004036 000000 000000 000000 INTREGS: .WORD 0,0,0
1744 004044 000000 000000 177777 .WORD 0,0,177777
1745 004052 000000 177777 177777 .WORD 0,177777,177777
1746 004060 177777 177777 177777 .WORD 177777,177777,177777
1747 004066 177777 177777 177777 .WORD 177777,177777,177777
1748 004074 000000 000000 000000 .WORD 0,0,0
1749 004102 000000 000000 000000 .WORD 0,0,0
1750 004110 000000 000000 .WORD 0,0
1751 004114 004116' CHARNDX: .=.+2
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 34
1753 ; BLIS11 V.74206 SUNDAY 13-APR-75 0:35.05 ZPROC.B11 PAGE 1-32
1754
1755 004116 004132' PARTAB: .=.+14
1756 004132 004134' VRMODE: .=.+2
1757 .GLOBL OUTN
1758 .GLOBL OUTR50
1759 .GLOBL REALDOT
1760 .GLOBL CMLADR
1761 .GLOBL ZAPPROC
1762 .GLOBL COMAND
1763 .GLOBL OUTC
1764 .GLOBL BYTSXT
1765 .GLOBL EOL
1766 .GLOBL WRITBK
1767 .GLOBL CMLLEN
1768 .GLOBL ERRPRT
1769 .GLOBL OPENLOC
1770
1771 .GLOBL $ENABL
1772 .GLOBL $SIGN1
1773 .GLOBL $SIGNL
1774 .GLOBL $SAV5
1775 .GLOBL $SAV4
1776 .GLOBL $SAV2
1777 .GLOBL SIGREG
1778 .GLOBL SIGVAL
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788 ; SIZE: 946+124
1789 ; RUN TIME: 33 SECONDS
1790 ; CORE USED: 23K
1791 ; COMPILATION COMPLETE
1792
1793 000001 .END
ZPROC MACRO M1108 05-DEC-77 23:54 PAGE 34-1
SYMBOL TABLE
ARGS 004010R L$122 001426R L$195 003012R L$3 000000R PFLAG 004022R
BWMODE 004020R L$126 001504R L$196 003006R L$30 000266R P$AAB 000632R
BYTSXT= ****** G L$13 000142R L$198 003062R L$33 000376R P$AAC 000646R
CHARND 004114R L$130 001516R L$199 003056R L$34 000340R P$AAD 000656R
CMLADR= ****** G L$131 001662R L$20 000254R L$38 000524R P$AAE 002604R
CMLLEN= ****** G L$132 001532R L$204 003120R L$44 000552R P$AAF 002636R
COMAND= ****** G L$133 001554R L$206 003144R L$47 000606R P$AAG 002670R
COUNT 004030R L$134 001600R L$207 003164R L$49 000610R P$AAH 002722R
DEL 004014R L$135 001612R L$208 003202R L$51 000562R P$AAI 003652R
EOL = ****** G L$136 001624R L$209 003224R L$54 000544R P$AAJ 003644R
ERRPRT= ****** G L$137 001634R L$21 000310R L$60 000460R REALDO= ****** G
EXECUT 001172R L$138 001700R L$211 003210R L$62 000074R R$0 =%000000
FORM 004032R L$14 000146R L$212 003220R L$63 000262R R$1 =%000001
GETCHA 000706R L$143 001746R L$214 003440R L$64 000374R R$2 =%000002
GETNUM 001006R L$145 001764R L$216 003252R L$67 000724R R$3 =%000003
INTREG 004036R L$147 001774R L$217 003256R L$7 000624R R$4 =%000004
LOOKUP 001130R L$148 002002R L$218 003320R L$70 000752R R$5 =%000005
L$10 000176R L$15 000174R L$22 000404R L$71 001002R SAVEDO 004034R
L$100 002540R L$150 002056R L$220 003336R L$73 000774R SELREL 003710R
L$102 001312R L$153 002116R L$221 003432R L$74 001000R SIGREG= ****** G
L$103 001322R L$155 002114R L$222 003470R L$77 001050R SIGVAL= ****** G
L$104 001704R L$159 002264R L$223 003526R L$79 001052R TYPE 004026R
L$105 002020R L$16 000222R L$224 003624R L$8 000076R U$113 001126R
L$106 002034R L$160 002270R L$225 003542R L$85 001056R U$126 001170R
L$107 002230R L$161 002410R L$226 003552R L$88 001140R U$300 003636R
L$108 002240R L$163 002416R L$227 003570R L$89 001164R U$5 000574R
L$109 002250R L$164 002446R L$228 003606R L$9 000120R VIRTDO 004012R
L$11 000132R L$165 002500R L$229 003616R L$92 001160R VIRTSE 004024R
L$110 002400R L$166 002422R L$23 000414R L$97 001224R VRMODE 004132R
L$111 002542R L$172 002516R L$231 003630R L$99 001260R WRITBK= ****** G
L$112 002552R L$178 001406R L$234 003560R NUM 004016R ZAPPRO 000000RG
L$113 002562R L$181 002224R L$235 003610R OPENAN 002730R ZPROC 004010R
L$115 001434R L$184 002210R L$24 000424R OPENLO= ****** G $ENABL= ****** G
L$116 001344R L$188 002510R L$240 003726R OUTC = ****** G $SAV2 = ****** G
L$118 001356R L$189 001656R L$243 004002R OUTN = ****** G $SAV4 = ****** G
L$119 001370R L$19 000250R L$25 000434R OUTR50= ****** G $SAV5 = ****** G
L$12 000136R L$190 001652R L$26 000446R PARSE 000016R $SIGNL= ****** G
L$120 001400R L$191 001444R L$27 000454R PARTAB 004116R $SIGN1= ****** G
L$121 001416R L$194 002752R L$28 000470R
. ABS. 000000 000
004134 001
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 1018 WORDS ( 4 PAGES)
DYNAMIC MEMORY: 3104 WORDS ( 11 PAGES)
ELAPSED TIME: 00:00:41
[62,10]ZPROC,[62,20]ZPROC/-SP=[62,30]ZPROC.P11
ZCLOSE MACRO M1108 05-DEC-77 23:55
TABLE OF CONTENTS
2- 43 FCSCLOSE -- CLOSE FILES AND EXIT
ZCLOSE MACRO M1108 05-DEC-77 23:55 PAGE 1
1 .TITLE ZCLOSE
2 .IDENT /000002/
3
4 ;+
5 ;
6 ; COPYRIGHT 1975
7 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
8 ;
9 ; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
10 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
11 ; EQUIPMENT CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES
12 ; NO RESPONSIBILITY FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
13 ;
14 ; THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO PURCHASER
15 ; UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE
16 ; COPIED (WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR
17 ; USE IN SUCH SYSTEM, EXCEPT AS MAY BE OTHERWISE BE PROVIDED IN
18 ; WRITING BY DIGITAL.
19 ;
20 ; DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE
21 ; USE OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT
22 ; SUPPLIED BY DIGITAL EQUIPMENT CORPORATION.
23 ;
24 ;
25 ; WRITTEN BY
26 ; M. JACK
27 ;
28 ; MODULE FUNCTION
29 ; I/O SERVICES FOR THE TASK IMAGE PATCHING UTILITY
30 ;
31 ;-
32
33
34 ;+
35 ; GLOBAL DEFINITIONS
36 ;-
37
38 .MCALL CLOSE$, EXIT$S, FDOF$L, FCSBT$, CALL
39
40 000000 FDOF$L
41 000000 FCSBT$
ZCLOSE MACRO M1108 05-DEC-77 23:55 PAGE 2
FCSCLOSE -- CLOSE FILES AND EXIT
43 .SBTTL FCSCLOSE -- CLOSE FILES AND EXIT
44
45 ;+
46 ;
47 ; GLOBAL ROUTINE FCSCLOSE
48 ;
49 ; FUNCTION
50 ; CLOSE FILES AND EXIT
51 ;
52 ; INPUTS
53 ; NONE
54 ;
55 ; OUTPUTS
56 ; NONE
57 ;
58 ;-
59
60 000000 FCSCLOSE::
61 000000 CALL REWRIT ; REWRITE BLOCK IF MODIFIED
62 000004 CLOSE$ #CMLBLK ; CLOSE COMMAND INPUT FILE
63 000014 012701 000000G MOV #SAVRAT,R1 ; POINT TO ATTRIBUTE SAVE AREA
64 000020 012702 000000G MOV #TSKFDB,R2 ; POINT TO FDB
65 000024 012703 000007 MOV #S.FATT/2,R3 ; WORD COUNT
66 000030 012122 1$: MOV (R1)+,(R2)+ ; COPY BACK RECORD ATTRIBUTES
67 000032 005303 DEC R3 ;
68 000034 001375 BNE 1$ ;
69 000036 CLOSE$ #TSKFDB ; CLOSE TASK IMAGE FILE
70 000046 103002 BCC 2$ ; CHECK FOR ERRORS
71 000050 000167 000000G JMP TSKERR ;
72 000054 2$: CLOSE$ #OUTFDB ; CLOSE MESSAGE FILE
73 000064 ABORT:: EXIT$S ; EXIT
74
75 000001 .END
ZCLOSE MACRO M1108 05-DEC-77 23:55 PAGE 2-1
SYMBOL TABLE
ABORT 000064RG FD.SQD= 000040 F.EFN = 000050 F.STBK= 000036 N.STAT= 000020
CMLBLK= ****** GX FD.TTY= 000004 F.EOBB= 000032 F.UNIT= 000136 N.UNIT= 000034
FA.APD= 000100 FD.WBH= 000002 F.ERR = 000052 F.URBD= 000020 OUTFDB= ****** GX
FA.CRE= 000010 FO.APD= 000106 F.FACC= 000043 F.VBN = 000064 PAR$$$= 000027
FA.EXT= 000004 FO.MFY= 000002 F.FFBY= 000014 F.VBSZ= 000060 REWRIT= ****** GX
FA.NSP= 000100 FO.RD = 000001 F.FNAM= 000110 NB.DEV= 000200 R.FIX = 000001
FA.RD = 000001 FO.UPD= 000006 F.FNB = 000102 NB.DIR= 000100 R.VAR = 000002
FA.SHR= 000040 FO.WRT= 000016 F.FTYP= 000116 NB.NAM= 000004 SAVRAT= ****** GX
FA.TMP= 000020 F.ALOC= 000040 F.FVER= 000120 NB.SD1= 000400 S.FATT= 000016
FA.WRT= 000002 F.BBFS= 000062 F.HIBK= 000004 NB.SD2= 001000 S.FDB = 000140
FCSCLO 000000RG F.BDB = 000070 F.LUN = 000042 NB.SNM= 000040 S.FNAM= 000006
FD.BLK= 000010 F.BGBC= 000057 F.MBCT= 000054 NB.STP= 000020 S.FNB = 000036
FD.CCL= 000002 F.BKDN= 000026 F.MBC1= 000055 NB.SVR= 000010 S.FNBW= 000017
FD.CR = 000002 F.BKDS= 000020 F.MBFG= 000056 NB.TYP= 000002 S.FNTY= 000004
FD.DIR= 000010 F.BKEF= 000050 F.NRBD= 000024 NB.VER= 000001 S.FTYP= 000002
FD.FTN= 000001 F.BKP1= 000051 F.NREC= 000030 N.DID = 000024 S.NFEN= 000020
FD.INS= 000010 F.BKST= 000024 F.OVBS= 000030 N.DVNM= 000032 TSKERR= ****** GX
FD.PLC= 000004 F.BKVB= 000064 F.RACC= 000016 N.FID = 000000 TSKFDB= ****** GX
FD.RAH= 000001 F.CNTG= 000034 F.RATT= 000001 N.FNAM= 000006 $$ = 000067
FD.RAN= 000002 F.DFNB= 000046 F.RCNM= 000034 N.FTYP= 000014 .CLOSE= ****** G
FD.REC= 000001 F.DSPT= 000044 F.RCTL= 000017 N.FVER= 000016 ...GBL= 000000
FD.RWM= 000001 F.DVNM= 000134 F.RSIZ= 000002 N.NEXT= 000022 ...TPC= 000140
FD.SDI= 000020 F.EFBK= 000010 F.RTYP= 000000
. ABS. 000000 000
000072 001
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 2155 WORDS ( 9 PAGES)
DYNAMIC MEMORY: 3104 WORDS ( 11 PAGES)
ELAPSED TIME: 00:00:13
[62,10]ZCLOSE,[62,20]ZCLOSE/-SP=[62,30]ZCLOSE