Commit | Line | Data |
---|---|---|
81e70d48 PH |
1 | / |
2 | / | |
3 | / | |
4 | /COPYRIGHT (C) 1979 BY DIGITAL EQUIPMENT CORPORATION | |
5 | / | |
6 | / | |
7 | / | |
8 | /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE | |
9 | /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT | |
10 | /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY | |
11 | /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. | |
12 | / | |
13 | /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER | |
14 | /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED | |
15 | /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH | |
16 | /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. | |
17 | / | |
18 | /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE | |
19 | /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY | |
20 | /DIGITAL. | |
21 | / | |
22 | / | |
23 | / | |
24 | ||
25 | \f | |
26 | /VERSION=V3A (D.H.) | |
27 | \f/4 CCL'S COMMAND DECODER | |
28 | .EXTERNAL TABLES,FNAME1 | |
29 | .EXTERNAL SWTCHS | |
30 | .ENTRY GETSPC | |
31 | /THE FOLLOWING DON'T HAVE TO BE ENTRY'S BECAUSE THEY ARE LINKED TO | |
32 | /FROM THE EXTENSION MODULE (CCLCDX) THAT KNOWS CCLCD IS IN MEMORY | |
33 | .GLOBAL LV | |
34 | .EXTERNAL EQLPRM,POUND,DNUMB | |
35 | MULTI=1 /SET TO 0 TO GET RID OF MULTIPLE CHARACTER SWITCHES | |
36 | PTR=36 | |
37 | .GLOBAL BADEV,CDER2,DVICE /****** | |
38 | .GLOBAL ASADR,LNAME /***** | |
39 | .ENTRY CCER1 | |
40 | .RSECT CCLCD | |
41 | .GLOBAL UNKN | |
42 | .EXTERNAL FLAG,MOVE,PRMESG | |
43 | .EXTERNAL PRNAME,PRWD | |
44 | .EXTERNAL LBEGIN,DECODE | |
45 | .EXTERNAL ARLOC | |
46 | .EXTERNAL DEFILE | |
47 | .ENTRY CD,ASSIGN,LOOKUP,ZEROCD,GLXR | |
48 | .EXTERNAL OUTSW,OUTLIM | |
49 | .ENTRY GCH,SETDEV,SETEXT | |
50 | .ENTRY NMOVE | |
51 | .EXTERNAL DONB | |
52 | .EXTERNAL NAMPTR | |
53 | FIELD 1 | |
54 | MOFILE=7600 | |
55 | MIFILE=7617 | |
56 | MPARAM=7643 | |
57 | ||
58 | XR2=15 | |
59 | XR=16 | |
60 | T=20 | |
61 | TT=21 | |
62 | DEF=22 | |
63 | NAME1=23 | |
64 | NAME2=24 | |
65 | NAME3=25 | |
66 | NAME4=26 | |
67 | NAME5=27 | |
68 | NMBASE=37 | |
69 | DEV1=30 | |
70 | DEV2=31 | |
71 | DELIM=32 | |
72 | DEFALT=33 /POINTS TO DEFAULT EXTENSION LIST | |
73 | LXR=34 | |
74 | CLXR=35 | |
75 | BEGLN=1000 | |
76 | HNDLR=4400 | |
77 | \fCD, 0 | |
78 | JMS I (CDINIT | |
79 | BEGGRP, TAD I (OUTSW | |
80 | SNA CLA | |
81 | TAD I (BEGDIF /DIFF BETWEEN INPUT & OUTPUT AREAS | |
82 | TAD (MOFILE-1 | |
83 | DCA CLXR | |
84 | JMS I (GETSPC /FAKE-OUT TO GETSPC CAN CAUSE EFFECTIVE BRANCH HERE | |
85 | JMS I (ASSIGN | |
86 | TAD I (OUTSW | |
87 | SNA CLA | |
88 | TAD I (LIMDIF /DIFF BETWEEN END OF OUTPUT & INPUT AREAS | |
89 | TAD I (OUTLIM /END OF OUTPUT AREA | |
90 | TAD CLXR | |
91 | SMA CLA | |
92 | JMP I (CDER1 | |
93 | TAD I (OUTSW | |
94 | SNA CLA | |
95 | LKUPSW, JMP IN$ /ZEROED IF IN "SPECIAL DECODE" MODE | |
96 | TAD I (DVICE | |
97 | JMS PCLXR | |
98 | TAD NAME1 | |
99 | JMS PCLXR | |
100 | TAD NAME2 | |
101 | JMS PCLXR | |
102 | TAD NAME3 | |
103 | JMS PCLXR | |
104 | TAD NAME4 | |
105 | JMP 2$ | |
106 | IN$: JMS I (LOOKUP | |
107 | JMS PCLXR /STORE LENGTH AND DEV NUMBER | |
108 | TAD I (LNAME /GET BLOCK | |
109 | 2$: JMS PCLXR | |
110 | JMS I (CCLSWT | |
111 | TAD I (OUTSW | |
112 | SNA CLA | |
113 | TAD I (FLAG | |
114 | CLL RTL | |
115 | SPA CLA /FEATURE ENABLED? | |
116 | TAD LKUPSW | |
117 | SNA CLA | |
118 | JMP DLOOK /IN SPECIAL MODE OR ON OUTPUT SIDE | |
119 | TAD DELIM | |
120 | TAD (-"+ | |
121 | SNA CLA | |
122 | JMP NBS | |
123 | TAD DONB | |
124 | SZA CLA | |
125 | JMP NBS | |
126 | TAD (7600 /V1A NOW TAKES ARG IN AC | |
127 | JMS I (NMOVE /MOVE NAME TO OUTPUT FILE NAMES | |
128 | JMP DLOOK | |
129 | \fNBS, JMS I (ZERR | |
130 | DLOOK, STA | |
131 | DCA I (DVFLAG | |
132 | TAD DELIM | |
133 | SNA | |
134 | JMP I CD | |
135 | TAD (-"[ | |
136 | SNA | |
137 | JMP I (OLENGT | |
138 | TAD ("[-"+ | |
139 | SZA | |
140 | TAD ("+-", | |
141 | SNA | |
142 | JMP I (FILLP /**** JUMPING INTO ROUTINE (IS THIS A BUG?) | |
143 | TAD (",-"< | |
144 | SZA | |
145 | TAD ("<-"_ | |
146 | SNA | |
147 | JMP 5$ /BACK-ARROW (UNDERSCORE) MEANS SAME AS "<" | |
148 | TAD ("_-"= | |
149 | SZA CLA /SKIP ON AN EQUAL SIGN (=) | |
150 | JMP I (CDER2 /BAD CHAR | |
151 | JMS I (GLXR | |
152 | JMS I (DECODE | |
153 | CLL | |
154 | STA /LINK=0 MEANS LETTER | |
155 | TAD LXR /NOW LINK=1 MEANS LETTER | |
156 | DCA LXR | |
157 | SZL | |
158 | JMP 5$ /= MEANS "<" | |
159 | JMS I (EQLPRM /= MEANS = (NUMERIC PARAMETER) | |
160 | DL2: JMS I (CCLSWT | |
161 | JMP DLOOK | |
162 | 5$: ISZ I (OUTSW /FOUND BACK-ARROW (<) | |
163 | JMP I (CDER2 /TWO BACK-ARROWS | |
164 | TAD LXR /GET PTR TO ARROW | |
165 | DCA I (ARLOC /SAVE IT ('EDIT' MIGHT NEED IT) | |
166 | JMP BEGGRP | |
167 | ||
168 | PCLXR, 0 | |
169 | ISZ CLXR | |
170 | DCA I CLXR | |
171 | JMP I PCLXR | |
172 | \f PAGE | |
173 | \fZERR, 0 | |
174 | DCA I (DONB /ZERO 1ST OUTPUT FILE | |
175 | TAD (7577 | |
176 | DCA XR2 | |
177 | DCA I XR2 | |
178 | DCA I XR2 | |
179 | DCA I XR2 | |
180 | DCA I XR2 | |
181 | DCA I XR2 | |
182 | JMP I ZERR | |
183 | \fASSIGN, 0 | |
184 | TAD CLXR | |
185 | AND I (DVFLAG | |
186 | TAD I (OUTLIM | |
187 | SMA SZA CLA /CHECK FOR OUTPUT OR FIRST INPUT | |
188 | JMP ASNORM /IF DEVICE WAS SPECIFIC, | |
189 | /OR IF WE ARE ON THE INPUT SIDE, | |
190 | /PROCEED NORMALLY | |
191 | TAD NAME1 | |
192 | SNA CLA | |
193 | JMP ASGNST | |
194 | TAD DFLTNM+1 | |
195 | DCA DEV2 | |
196 | TAD DFLTNM | |
197 | DCA DEV1 | |
198 | ASNORM, TAD DEV1 | |
199 | DCA AS+1 | |
200 | TAD DEV2 | |
201 | DCA AS+2 | |
202 | TAD I (OUTSW | |
203 | SNA CLA /DON'T LOAD HANDLER | |
204 | /IF WE ARE ON OUTPUT SIDE OF "_" | |
205 | TAD NAME1 | |
206 | SPKLG1, SNA CLA /OR THERE IS NO FILE NAME TO LOOK UP | |
207 | TAD GETHND /GETHND=11 NORMALLY, | |
208 | /0 IF IN "SPECIAL DECODE" MODE | |
209 | IAC | |
210 | DCA AS | |
211 | TAD (HNDLR+1 /ALLOW TWO PAGE HANDLERS | |
212 | DCA ASADR | |
213 | CIF 10 | |
214 | JMS I (200 | |
215 | AS, 0 | |
216 | 0 | |
217 | 0 | |
218 | ASADR, HNDLR+1 | |
219 | JMP I (CDER0 | |
220 | TAD AS+2 | |
221 | ASGNST, DCA I (DVICE | |
222 | JMP I ASSIGN | |
223 | \fDFLTNM, DEVICE DSK | |
224 | GETHND, 11 /1+11=12 (1=FETCH, 12=INQUIRE) | |
225 | \fGETL, 0 | |
226 | JMS I (GCH | |
227 | DCA DELIM | |
228 | TAD DELIM | |
229 | JMS I (DECODE | |
230 | JMP I GETL /NON-ALPHANUM IN CCL SWITCH | |
231 | CLA | |
232 | TAD DELIM | |
233 | AND (77 | |
234 | ISZ GETL | |
235 | JMP I GETL | |
236 | \fCCLSWT, 0 | |
237 | TAD DELIM | |
238 | TAD (-"/ | |
239 | SNA | |
240 | JMP I (SLASH | |
241 | TAD ("/-"- | |
242 | SZA CLA | |
243 | JMP I CCLSWT | |
244 | TAD I (OUTSW | |
245 | SZA CLA | |
246 | JMP I (CDER4 /CCL EXT ON OUTPUT FILE | |
247 | TAD (SWTCHS | |
248 | DCA DEF | |
249 | JMS GETL | |
250 | JMP I (CDER44 /NON-ALPHANUMERIC CCL SWITCH | |
251 | JMS I (ROTL | |
252 | DCA TN$ | |
253 | JMS GETL | |
254 | JMP 1$ /ONE CHAR CCL SWITCH | |
255 | TAD TN$ | |
256 | DCA TN$ | |
257 | JMS GETL | |
258 | 1$: SKP CLA /2 CHAR CCL SWITCH | |
259 | JMP I (CDER44 /3 CHAR CCL-SWITCH | |
260 | TAD TN$ | |
261 | JMS I (EXTLUK | |
262 | CLA | |
263 | ISZ DEF | |
264 | CDF 0 | |
265 | TAD I DEF | |
266 | DCA G$ /GET PTR TO ARGUMENT PAIR | |
267 | TAD I G$ /GET SUBROUTINE | |
268 | DCA H$ | |
269 | ISZ G$ | |
270 | TAD I G$ /GET ARGUMENT | |
271 | CDF 10 | |
272 | JMS I H$ /CALL SUBR, ARG IN AC | |
273 | JMP CCLSWT+1 | |
274 | G$: 0 | |
275 | H$: 0 | |
276 | TN$: 0 | |
277 | PAGE | |
278 | \f/GETS A NAME FROM FIELD ZERO BUFFER VIA LXR | |
279 | /RETURNS WITH DELIMETER IN AC | |
280 | /GIVES ERROR MESSAGE IF NAME IS BAD | |
281 | ||
282 | GNAME, 0 | |
283 | DCA NAME1 | |
284 | DCA NAME2 | |
285 | DCA NAME3 | |
286 | DCA NAME4 | |
287 | DCA NAME5 | |
288 | TAD (NAME1 | |
289 | DCA NMBASE | |
290 | CLA CMA | |
291 | DCA PERDSW | |
292 | DCA NAMECT | |
293 | JMS I (GCH | |
294 | TAD (-"# | |
295 | SNA | |
296 | JMS I (NUMC /BUG IF MAKE COMMAND USES A # (OVERLAYS LOOP) | |
297 | TAD ("# | |
298 | SKP | |
299 | GTNMLP, JMS I (GCH | |
300 | P2, DCA DELIM | |
301 | TAD DELIM | |
302 | TAD (-"% | |
303 | SNA | |
304 | JMP PER | |
305 | TAD ("%-"? | |
306 | SZA | |
307 | TAD ("?-"* | |
308 | SNA | |
309 | STARSW, JMP I (CDER6 /"JMP STARNM" | |
310 | /IF "SPECIAL DECODE" MODE | |
311 | TAD ("*-". | |
312 | SNA CLA | |
313 | JMP PERIOD | |
314 | TAD DELIM | |
315 | JMS I (DECODE | |
316 | JMP LV | |
317 | STARNM, CLA /THIS CODE HANDLES *'S AND ?'S CORRECTLY | |
318 | TAD DELIM | |
319 | AND (77 | |
320 | DCA DELIM | |
321 | TAD NAMECT | |
322 | TAD (-6 | |
323 | SMA CLA | |
324 | JMP GTNMLP | |
325 | TAD NAMECT | |
326 | CLL RAR | |
327 | TAD NMBASE | |
328 | DCA TT | |
329 | TAD DELIM | |
330 | SNL | |
331 | JMS I (ROTL | |
332 | TAD I TT | |
333 | DCA I TT | |
334 | ISZ NAMECT | |
335 | JMP GTNMLP | |
336 | PERIOD, TAD NAME1 | |
337 | SZA CLA | |
338 | ISZ PERDSW | |
339 | JMP I (CDER7 /NULL NAME OR DOUBLE EXTENSION | |
340 | ISZ NMBASE | |
341 | ISZ NMBASE | |
342 | STL CLA RTL /2 (ALLOW 4 CHARACTER EXTENSION) | |
343 | DCA NAMECT | |
344 | JMP GTNMLP | |
345 | LV, CLA | |
346 | TAD DELIM | |
347 | JMP I GNAME | |
348 | ||
349 | PER, TAD ("? | |
350 | JMP P2 | |
351 | \fPERDSW, 0 | |
352 | NAMECT, 0 | |
353 | \f SOFSET=7747 | |
354 | ||
355 | CDER6, CDF 0 | |
356 | TAD I (7777 | |
357 | CDF 10 | |
358 | RAL | |
359 | SPA CLA | |
360 | JMP CD6E /ERROR IF BATCH IS RUNNING | |
361 | TAD I (FLAG | |
362 | RTL | |
363 | SMA CLA | |
364 | JMP CD6E /ONLY IF -LS WORKS | |
365 | TAD (-12 | |
366 | JMS I (MOVE | |
367 | CDF 10 | |
368 | MUNGC | |
369 | CDF 10 | |
370 | 7600 | |
371 | TAD (-34 | |
372 | JMS I (MOVE | |
373 | CDF 0 | |
374 | 1000 | |
375 | CDF 10 | |
376 | 7612 | |
377 | DCA I (7646 /SAFETY | |
378 | CDF 0 | |
379 | TAD I (SOFSET | |
380 | CDF 10 | |
381 | DCA BLK | |
382 | JMS I (200 | |
383 | 6 /CHAIN TO CCL.SV | |
384 | BLK, 0 | |
385 | ||
386 | ||
387 | CD6E, JMS I (PRMESG | |
388 | BADSTR | |
389 | ||
390 | PAGE | |
391 | \fLOOKUP, 0 | |
392 | DCA LNAME | |
393 | TAD NAME1 | |
394 | SNA CLA | |
395 | JMP LKUPST | |
396 | TAD I (PERDSW | |
397 | TAD NAME4 | |
398 | SNA CLA | |
399 | CLA IAC /FORCE NAMERM NON-0 IF . AND NO EXT | |
400 | TAD NAME4 | |
401 | DCA NAMERM /REMEMBER TYPED EXTENSION | |
402 | TAD DEFALT | |
403 | DCA DEF | |
404 | TAD I (SETEXT | |
405 | SNA /HAS AN EXTENSION BEEN SET? | |
406 | TAD NAMERM /NO | |
407 | SNA /DOES FILE HAVE EXTENSION? | |
408 | JMP EXT2 /NO EXTENSION TYPED OR SET, DO SUCCESSIVE LOOK-UPS | |
409 | JMS EXTLUK /LOOK FOR EXTENSION | |
410 | SNA CLA /DID WE FIND IT? | |
411 | JMP EXT3 /NO, FORCE NULL EXTENSION TO MATCH | |
412 | EXT2, CDF 0 | |
413 | TAD I DEF | |
414 | IAC | |
415 | SNA CLA | |
416 | JMP NEXTEXT /IGNORE -1'S | |
417 | TAD NAMERM | |
418 | SZA CLA | |
419 | JMP EXT3 | |
420 | TAD I DEF | |
421 | DCA NAME4 /SET NEW EXTENSION | |
422 | EXT3, CDF 10 | |
423 | TAD (NAME1 | |
424 | DCA LNAME | |
425 | TAD I (AS+2 | |
426 | JMS I (200 | |
427 | 2 | |
428 | LNAME, 0 /NAME1 | |
429 | LENGTH, 0 | |
430 | JMP LFAILD | |
431 | TAD NAME4 | |
432 | DCA I (SETEXT | |
433 | ISZ DEF /POINT TO ASSOCIATED CUSP NAME | |
434 | CDF 0 | |
435 | TAD I DEF | |
436 | CDF 10 | |
437 | DCA I (DEFILE /SAVE IT AWAY | |
438 | TAD LENGTH | |
439 | CLL | |
440 | TAD (400 | |
441 | SNL | |
442 | CLACON, 7600 /CLA | |
443 | CLL RTL | |
444 | RTL | |
445 | AND (7760 | |
446 | LKUPST, TAD DVICE | |
447 | JMP I LOOKUP | |
448 | \fLFAILD, TAD NAMERM | |
449 | CDF 0 | |
450 | SNA CLA /WAS THERE AN EXPLICIT EXTENSION? | |
451 | TAD I DEF /NO - WAS THERE A DEFAULT EXTENSION? | |
452 | SNA CLA | |
453 | JMP XYZ | |
454 | NEXTEXT,CDF 10 | |
455 | ISZ DEF /NO EXPLICIT EXT AND YES DEFAULT EXT | |
456 | ISZ DEF /POINT TO NEXT POSSIBLE DEFAULT EXTENSION | |
457 | JMP EXT2 /AND TRY FOR IT | |
458 | ||
459 | NAMERM, 0 | |
460 | DVICE, 0 | |
461 | ||
462 | EXTLUK, 0 | |
463 | CIA | |
464 | DCA T | |
465 | 1$: CDF 0 | |
466 | TAD I DEF | |
467 | CDF 10 | |
468 | SNA /AT NULL? | |
469 | JMP I EXTLUK /YES | |
470 | TAD T /NO | |
471 | SNA CLA /MATCH? | |
472 | JMP 2$ /YES | |
473 | ISZ DEF /NO | |
474 | ISZ DEF /POINT TO NEXT ENTRY | |
475 | JMP 1$ /TRY AGAIN | |
476 | 2$: TAD T /RETURN WITH IT IN AC | |
477 | CIA | |
478 | JMP I EXTLUK | |
479 | XYZ, CDF 10 | |
480 | JMP I (CDER3 /NO DEFALT EXTENSION OR YES EXPLICIT EXTENSION | |
481 | \fBADSYN, TEXT /#ILLEGAL SYNTAX/ | |
482 | TOOMAN, TEXT /#TOO MANY FILES/ | |
483 | /AMBIGY, TEXT /#AMBIGUOUS SWITCH/ | |
484 | CDER1, JMS I (PRMESG | |
485 | TOOMAN | |
486 | \fNFOU, TAD NAME1 | |
487 | AND (77 | |
488 | SNA CLA | |
489 | JMP I (ONE /ONE-CHARACTER SWITCH | |
490 | JMS I (PRNAME | |
491 | JMS I (PRMESG | |
492 | SWNF | |
493 | PAGE | |
494 | \f/TAKES A LETTER OR A DIGIT IN AC | |
495 | /AND TURNS ON APPROPRIATE BIT IN OPTION TABLE | |
496 | ||
497 | SLSHCH, 0 | |
498 | DCA DELIM | |
499 | TAD (MPARAM-1 | |
500 | DCA T | |
501 | TAD DELIM | |
502 | JMS I (DECODE | |
503 | JMP CDER8 | |
504 | SZL | |
505 | TAD (32 | |
506 | CMA STL /THE FOLLOWING TURNS | |
507 | /ON THE CORRECT OPTION BIT | |
508 | DCA TT | |
509 | L$: SZL | |
510 | ISZ T | |
511 | RAR | |
512 | SNL | |
513 | ISZ TT | |
514 | JMP L$ | |
515 | DCA TT | |
516 | TAD TT | |
517 | CMA | |
518 | AND I T | |
519 | TAD TT | |
520 | DCA I T | |
521 | JMP I SLSHCH | |
522 | ||
523 | CDER8, CLA | |
524 | JMS I (PRMESG | |
525 | BADOPT | |
526 | \fZEROCD, 0 | |
527 | TAD (-42 /AC MAY BE NON-0 | |
528 | DCA T | |
529 | TAD (MOFILE-1 | |
530 | DCA XR | |
531 | DCA I XR /ZERO THE COMMAND DECODER OUTPUT AREA | |
532 | ISZ T | |
533 | JMP .-2 | |
534 | JMP I ZEROCD | |
535 | ||
536 | GCH, 0 | |
537 | JMS GLXR | |
538 | TAD (-240 | |
539 | SNA | |
540 | JMP GCH+1 /IGNORE SPACES | |
541 | TAD (240-"( | |
542 | SNA | |
543 | JMP OPENP$ | |
544 | TAD ("( | |
545 | JMP I GCH | |
546 | JMP GCH+1 | |
547 | OPENP$: JMS GLXR | |
548 | TAD (-") | |
549 | SNA | |
550 | JMP GCH+1 | |
551 | TAD (") | |
552 | JMS SLSHCH | |
553 | JMP OPENP$ | |
554 | ||
555 | GLXR, 0 | |
556 | CDF 0 | |
557 | ISZ LXR | |
558 | TAD I LXR | |
559 | CDF 10 | |
560 | JMP I GLXR | |
561 | ||
562 | IFZERO MULTI < | |
563 | SLASH, JMS GLXR | |
564 | JMS SLSHCH | |
565 | JMS GLXR | |
566 | DCA DELIM | |
567 | JMP I (CCLSWT+1 | |
568 | > | |
569 | ||
570 | IFNZRO MULTI < | |
571 | SLASH, CDF TABLES /POINT TO SWITCH TABLE POINTER | |
572 | TAD I PTR /GET PTR TO SWITCH TABLE | |
573 | CDF 10 | |
574 | JMS I (TRANSL | |
575 | JMP I (CCLSWT+1 | |
576 | > | |
577 | \fOLENGT, TAD I (OUTSW | |
578 | AND NAME1 /[N] IS ONLY LEGAL | |
579 | /ON THE OUTPUT SIDE OF THE "_" | |
580 | SNA CLA /AND ONLY AFTER A FILE NAME | |
581 | JMP I (CDER2 | |
582 | TAD (-4 | |
583 | TAD CLXR | |
584 | DCA NMBASE | |
585 | JMS I (DNUMB | |
586 | CLL RTL | |
587 | RTL | |
588 | AND (7760 | |
589 | TAD I NMBASE | |
590 | DCA I NMBASE | |
591 | CDF 0 | |
592 | TAD DELIM | |
593 | TAD (-"] /IS THERE A CLOSING BRACKET? | |
594 | SNA /IF NOT, | |
595 | /"DLOOK" ROUTINE WILL DETECT IT | |
596 | JMS GCH | |
597 | DCA DELIM | |
598 | JMP I (DL2 | |
599 | \fSETDSK, 0 | |
600 | TAD DSKDEV | |
601 | SZA | |
602 | JMP I SETDSK | |
603 | JMS I (200 | |
604 | 12 /INQUIRE | |
605 | 5723 /PACKED ENCODING FOR 'DSK:' | |
606 | DSKDEV, 0 /SET TO DEVICE NUMBER | |
607 | 0 | |
608 | HLT /NO 'DSK' ! | |
609 | TAD DSKDEV | |
610 | JMP I SETDSK | |
611 | \f .ENABLE ASCII | |
612 | .DISABLE FILL | |
613 | MUNGC, TEXT /MUNG WILD,/ | |
614 | .ENABLE SIXBIT | |
615 | .ENABLE FILL | |
616 | PAGE | |
617 | \fCCER1, TAD I (NAMPTR | |
618 | DCA X$ | |
619 | TAD (-5 | |
620 | JMS I (MOVE | |
621 | CDF 10 | |
622 | X$: 0 | |
623 | CDF 10 | |
624 | NAME1 | |
625 | CDER3, TAD (4300 | |
626 | JMS I (PRWD /# | |
627 | JMS I (PRNAME | |
628 | JMS I (PRMESG | |
629 | NF | |
630 | ||
631 | CCER2, TAD I (DVNM1 | |
632 | DCA DEV1 | |
633 | TAD I (DVNM2 | |
634 | DCA DEV2 | |
635 | CDER0, TAD DEV1 | |
636 | SNA CLA | |
637 | JMP I (CDER2 /B DOES NOT EXIST | |
638 | TAD (4300 /# | |
639 | JMS I (PRWD | |
640 | TAD DEV1 | |
641 | JMS I (PRWD | |
642 | TAD DEV2 | |
643 | JMS I (PRWD | |
644 | JMS I (PRMESG | |
645 | DNE | |
646 | \fNF, TEXT / NOT FOUND/ | |
647 | DNE, TEXT / DOES NOT EXIST/ | |
648 | BADSW, TEXT /#SWITCH NOT ALLOWED HERE/ | |
649 | BADSW2, TEXT /#BAD CCL SWITCH/ | |
650 | CONTRA, TEXT /#CONTRADICTORY SWITCHES/ | |
651 | \fBKA, 0 | |
652 | TAD I (LBEGIN | |
653 | DCA CLXR | |
654 | 1$: CDF 0 | |
655 | ISZ CLXR | |
656 | TAD I CLXR | |
657 | CDF 10 | |
658 | SNA | |
659 | JMP NOBKR$ | |
660 | TAD (-"< | |
661 | SNA | |
662 | JMP I BKA | |
663 | TAD ("<-"_ | |
664 | SNA | |
665 | JMP I BKA | |
666 | TAD ("_-"= | |
667 | SZA CLA | |
668 | JMP 1$ | |
669 | ISZ CLXR /= MEANS _ IF NOT FOLLOWED BY A DIGIT | |
670 | CDF 0 | |
671 | TAD I CLXR | |
672 | CDF 10 | |
673 | JMS I (DECODE | |
674 | SKP CLA /NOT A DIGIT | |
675 | SNL CLA /MAYBE A DIGIT | |
676 | JMP I BKA /= FOLLOWED BY A NON-DIGIT MEANS _ | |
677 | JMP 1$ /IT'S AN =NNNN | |
678 | ||
679 | NOBKR$: ISZ BKA | |
680 | JMP I BKA | |
681 | BADEV, TEXT /#BAD DEVICE/ | |
682 | PAGE | |
683 | \fCDINIT, 0 | |
684 | ISZ PTR /POINT TO SWITCH TABLE | |
685 | JMS I (200 | |
686 | 13 /RESET ALL HANDLERS | |
687 | CDF 0 | |
688 | TAD I DEFALT | |
689 | CDF 10 | |
690 | TAD (-5200 | |
691 | SZA CLA /IS THIS A REQUEST FOR A | |
692 | /"SPECIAL DECODE"? | |
693 | JMP CDCONT /NO | |
694 | TAD ALTLIM | |
695 | DCA I (OUTLIM /YES, SET UP THE PROPER LOCATIONS | |
696 | TAD ALTDF1 | |
697 | DCA LIMDIF /TO GET 1 OUTPUT AND 5 INPUT FILES | |
698 | TAD ALTDF2 | |
699 | DCA BEGDIF /ALL OF WHICH ARE | |
700 | /5-WORD <DEVICE,NAME> ENTRIES | |
701 | DCA I PLKUPS | |
702 | TAD STARJM | |
703 | DCA I PSTARS /AND ALLOW * | |
704 | /AS A FILE OR EXTENSION NAME | |
705 | TAD L7600 /STOPS FETCHES IN SPECIAL MODE | |
706 | DCA I PSPKG1 /NO HANDLER FETCHES NECESSARY EITHER | |
707 | /SINCE NO LOOKUPS | |
708 | CDCONT, JMS I (BKA /SCAN AHEAD FOR < | |
709 | STA /SKIP RETURN IF NOT FOUND | |
710 | DCA I (OUTSW | |
711 | JMS I (ZEROCD | |
712 | TAD I (LBEGIN | |
713 | DCA LXR | |
714 | JMP I CDINIT | |
715 | /CONSTANTS NECESSARY TO SUPPORT "SPECIAL DECODE" MODE | |
716 | ALTLIM, 1-MOFILE-5 | |
717 | ALTDF1, MOFILE+5-MPARAM+5 | |
718 | ALTDF2, 5 | |
719 | PLKUPS, LKUPSW | |
720 | PSTARS, STARSW | |
721 | PSPKG1, SPKLG1 | |
722 | ||
723 | BEGDIF, MIFILE-MOFILE | |
724 | LIMDIF, MIFILE-MPARAM+2 | |
725 | \f/STARJM, RELOC STARNM /DUMP LITERALS AT LAST POSSIBLE MOMENT | |
726 | / JMP STARNM | |
727 | / RELOC | |
728 | STARJM, 5200+<STARNM&177> | |
729 | \fSETDEV, 0 /V1A ARG NOW IN AC | |
730 | DCA 1$ | |
731 | CLL STA RAL /-2 | |
732 | JMS I (MOVE | |
733 | CDF 0 | |
734 | 1$: 0 /PTS TO DEVICE NAME | |
735 | CDF 10 | |
736 | DVNM1 | |
737 | JMS I (SETOUT | |
738 | JMP I SETDEV | |
739 | ||
740 | UNKN, 0 | |
741 | TAD SETEXT | |
742 | SZA | |
743 | TAD T /NEG OF SWITCH REQUEST | |
744 | SZA CLA | |
745 | JMP CCERA /CAN'T HAVE 2ND DEFAULT EXTENSION | |
746 | TAD T | |
747 | CIA | |
748 | DCA SETEXT /SET DEFAULT EXTENSION | |
749 | TAD DEFALT /SEE IF IT'S IN COMMAND'S SEARCH LIST | |
750 | DCA DEF | |
751 | TAD SETEXT | |
752 | JMS I (EXTLUK | |
753 | SNA CLA /DID WE FIND IT? | |
754 | JMP CDER4 /NO | |
755 | ISZ DEF /YES | |
756 | / TAD I (JMSUB /ALLOW RECURSIVE CALL | |
757 | / DCA HOLD | |
758 | CDF 0 | |
759 | TAD I DEF | |
760 | CDF 10 | |
761 | JMS I (JMSUB /CALL ITS SUBR | |
762 | / TAD HOLD | |
763 | /V1A RECURSIVE CALL NO LONGER THREATENS | |
764 | / DCA I (JMSUB | |
765 | JMP I UNKN | |
766 | ||
767 | SETEXT, 0 /EXT WHICH HAS BEEN SET BY A CCL SWITCH | |
768 | \fCCERA, JMS I (PRMESG | |
769 | CONTRA | |
770 | CDER2, JMS PRMESG | |
771 | BADSYN | |
772 | ||
773 | L7600, | |
774 | CCERB, | |
775 | CDER4, 7600 /CLA | |
776 | JMS I (PRMESG | |
777 | BADSW | |
778 | CDER44, CLA | |
779 | JMS I (PRMESG | |
780 | BADSW2 | |
781 | CDER7, JMS I (PRMESG | |
782 | BADX | |
783 | \fBADSTR, TEXT /#ILLEGAL * OR ?/ | |
784 | SWNF, TEXT / OPTION UNKNOWN/ | |
785 | BADOPT, TEXT /#BAD SWITCH OPTION/ | |
786 | PAGE | |
787 | \fBADX, TEXT /#BAD EXTENSION/ | |
788 | ||
789 | /THIS GETS A DEV:NAME.EXT SPECIFICATION (USING LXR) | |
790 | /PUTTING RESULT IN DEV1,DEV2, NAME1-4. | |
791 | /IT GIVES A FATAL ERROR MESSAGE IF BAD. | |
792 | GETSPC, 0 | |
793 | STA | |
794 | DCA DVFLAG | |
795 | DCA DEV1 | |
796 | FILLP1, DCA DEV2 | |
797 | FILLP, JMS I (GNAME | |
798 | TAD (-": /AC CONTAINED DELIM | |
799 | SNA CLA | |
800 | JMP 3$ /IT'S A DEVICE NAME | |
801 | DCA NUMC | |
802 | TAD (-4 | |
803 | JMS I (MOVE | |
804 | CDF 10 | |
805 | NAME1 | |
806 | CDF 0 | |
807 | FNAME1 /SAVE AWAY FILE NAME | |
808 | JMP I GETSPC | |
809 | 3$: CLA IAC /PARSE FILENAME AFTER DEV: | |
810 | TAD I (PERDSW | |
811 | TAD NUMC | |
812 | SZA CLA | |
813 | JMP CDERA /. OR # IN DEVICE NAME | |
814 | TAD NAME1 | |
815 | DCA DEV1 | |
816 | ISZ DVFLAG | |
817 | JMP CDERA /CATCHES A:B: | |
818 | TAD NAME2 | |
819 | JMP FILLP1 | |
820 | ||
821 | DVFLAG, 0 | |
822 | CDERA, JMS I (PRMESG | |
823 | BADEV | |
824 | ||
825 | NUMC, 0 /USED AS FLAG INDICATING SAW # | |
826 | JMS I (POUND | |
827 | JMP I NUMC | |
828 | \fNMOVE, 0 | |
829 | DCA 2$ /V1A ARG IN AC | |
830 | TAD I (FLAG | |
831 | RTL | |
832 | SMA CLA /FEATURE ENABLED? | |
833 | JMP I (CCERB /NO | |
834 | TAD I (OUTSW | |
835 | SZA CLA | |
836 | JMP I (CCERB /ON OUTPUT SIDE | |
837 | TAD I (MOFILE /V3C | |
838 | SNA CLA /DON'T CHANGE OUT DEV IF SPECIFIED | |
839 | TAD I (FLAG /LOOK AT 'COPY EXT' BIT | |
840 | AND (200 | |
841 | SNA CLA | |
842 | JMP 1$ /IT WASN'T SET | |
843 | TAD I (MIFILE /GET FIRST INPUT DEVICE | |
844 | AND (17 /ISOLATE DEVICE BITS | |
845 | DCA I (MOFILE /FORCE THIS TO BE FIRST OUTPUT DEVICE | |
846 | 1$: TAD I 2$ | |
847 | SNA | |
848 | JMS I (SETDSK /CHANGE TO 'IAC' TO ALWAYS USE SYS: | |
849 | DCA I 2$ /SET DEVICE TO SYS IF NONE | |
850 | ISZ 2$ | |
851 | TAD I 2$ /WAS THERE A SPECIFICATION THERE? | |
852 | SZA CLA | |
853 | JMP I NMOVE /YES, DO NOTHING | |
854 | TAD I (FLAG | |
855 | AND (200 /GET 'COPY EXTENSION' BIT | |
856 | SMA SZA CLA /'SMA' IS UNNECESSARY | |
857 | STA /COPY 4 WORDS IF BIT 4 WAS ON | |
858 | TAD (-3 /OTHERWISE ONLY COPY 3 WORDS | |
859 | JMS I (MOVE | |
860 | CDF 0 | |
861 | FNAME1 | |
862 | CDF 10 | |
863 | 2$: 0 | |
864 | JMP I NMOVE | |
865 | \fROTL, 0 | |
866 | CLL RTL | |
867 | RTL | |
868 | RTL | |
869 | JMP I ROTL | |
870 | ||
871 | JMSUB, 0 | |
872 | SNA | |
873 | JMP I JMSUB | |
874 | DCA T$ | |
875 | JMS I T$ | |
876 | JMP I JMSUB | |
877 | T$: 0 | |
878 | \fAMBIG, TAD NAME1 | |
879 | AND (77 | |
880 | SNA CLA | |
881 | JMP I (ONE | |
882 | JMS I (PRNAME | |
883 | JMS I (PRMESG | |
884 | AMBIGY | |
885 | AMBIGY, TEXT / OPTION AMBIGUOUS/ | |
886 | PAGE | |
887 | \fSETOUT, 0 | |
888 | TAD I (FLAG | |
889 | RTR | |
890 | SZL CLA | |
891 | TAD (5 | |
892 | TAD (7600 | |
893 | DCA OLOC | |
894 | TAD I OLOC | |
895 | SZA CLA | |
896 | JMP I SETOUT /HE'S SPECIFIED SOMETHING | |
897 | JMS I (200 | |
898 | 12 /INQUIRE | |
899 | DVNM1, 0 | |
900 | DVNM2, 0 | |
901 | 0 | |
902 | JMP I (CCER2 /NO SUCH DEVICE | |
903 | TAD DVNM2 | |
904 | DCA I OLOC | |
905 | TAD OLOC | |
906 | AND (5 | |
907 | SNA CLA /USING 2ND OUT DEV? | |
908 | JMP I SETOUT /NO | |
909 | ISZ OLOC /YES | |
910 | TAD (-4 | |
911 | JMS I (MOVE | |
912 | CDF 0 | |
913 | FNAME1 | |
914 | CDF 10 | |
915 | OLOC, 7600 /INITIALLY 7600 OR 7605 | |
916 | JMP I SETOUT | |
917 | \f/ TAD (PTR TO SWITCH TABLE ENTRY (IN FIELD 0) | |
918 | / JMS TRANSL | |
919 | / IT PARSES SWITCH, SETS BIT | |
920 | / PARSES :VALUE, SETS = OPTION | |
921 | / LEAVES DELIMETER IN DELIM | |
922 | ||
923 | TRANSL, 0 | |
924 | DCA SPTR /POINT INTO A SWITCH TABLE | |
925 | JMS I (GNAME /GET A NAME | |
926 | DCA DEL | |
927 | / TAD NAME4 | |
928 | / SZA CLA | |
929 | / HLT /EXTENSION ON A SWITCH | |
930 | JMS SRCH | |
931 | JMP I (NFOU /SWITCH NOT FOUND | |
932 | STA | |
933 | TAD SRPTR | |
934 | DCA SSPTR /SAVE PTR INTO LONG NAME | |
935 | JMS SRCH /SEARCH SOME MORE | |
936 | SKP /SHOULDN'T FIND ANYTHING | |
937 | JMP I (AMBIG /AMBIGUOUS SWITCH | |
938 | CDF 0 | |
939 | L$: TAD I SSPTR /SCAN PAST END OF LONG NAME | |
940 | ISZ SSPTR | |
941 | AND (77 | |
942 | X240: SZA CLA | |
943 | JMP L$ | |
944 | TAD I SSPTR | |
945 | CDF 10 | |
946 | SL, AND (377 /ISOLATE CORRESPONDING ONE-CHARACTER SWITCH | |
947 | SZA | |
948 | JMS I (SLSHCH /SET APPROPRIATE BIT | |
949 | TAD DEL | |
950 | DCA DELIM | |
951 | TAD DELIM | |
952 | TAD (-": | |
953 | SNA CLA | |
954 | JMS I (EQLPRM | |
955 | JMP I TRANSL | |
956 | ||
957 | ONE, TAD NAME1 | |
958 | CLL RTR | |
959 | RTR | |
960 | RTR | |
961 | TAD X240 | |
962 | AND (77 | |
963 | TAD X240 | |
964 | JMP SL | |
965 | ||
966 | SPTR, 0 | |
967 | SSPTR, 0 | |
968 | DEL, 0 | |
969 | \f/RETURN 1 IF NAME NOT FOUND | |
970 | /RETURN 2 IF NAME FOUND | |
971 | ||
972 | SRCH, 0 | |
973 | 1$: TAD (NAME1 | |
974 | DCA NPTR | |
975 | CLL STA RTL /-3 | |
976 | DCA NCNT | |
977 | CDF 0 | |
978 | TAD I SPTR | |
979 | CDF 10 | |
980 | ISZ SPTR | |
981 | SNA | |
982 | JMP I SRCH /NOT FOUND | |
983 | DCA SRPTR | |
984 | 2$: TAD I NPTR | |
985 | SNA | |
986 | JMP 3$ | |
987 | AND (77 | |
988 | SZA CLA | |
989 | TAD (77 /MUST MATCH BOTH BYTES | |
990 | TAD (7700 /NEED ONLY MATCH LEFT BYTE | |
991 | CDF 0 | |
992 | AND I SRPTR | |
993 | CDF 10 | |
994 | CIA | |
995 | TAD I NPTR | |
996 | SZA CLA | |
997 | JMP 1$ /THIS SWITCH AIN'T IT | |
998 | ISZ SRPTR | |
999 | ISZ NPTR | |
1000 | ISZ NCNT | |
1001 | JMP 2$ | |
1002 | 3$: ISZ SRCH | |
1003 | JMP I SRCH | |
1004 | ||
1005 | SRPTR, 0 /POINTS INTO LONG NAME TABLE | |
1006 | NCNT, 0 | |
1007 | NPTR, 0 /POINTS INTO NAME1-3 | |
1008 | PAGE | |
1009 | \f |