Commit | Line | Data |
---|---|---|
7af5ad59 PH |
1 | /2 PDP-8 OS/8 CROSS REFERENCE |
2 | / | |
3 | / | |
4 | / | |
5 | / | |
6 | / | |
7 | / | |
8 | / | |
9 | / | |
10 | / | |
11 | /COPYRIGHT (C) 1974,1975,1977 BY DIGITAL EQUIPMENT CORPORATION | |
12 | / | |
13 | / | |
14 | / | |
15 | / | |
16 | / | |
17 | / | |
18 | / | |
19 | / | |
20 | / | |
21 | / | |
22 | /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE | |
23 | /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT | |
24 | /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY | |
25 | /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. | |
26 | \r/ | |
27 | /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER | |
28 | /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED | |
29 | /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH | |
30 | /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. | |
31 | / | |
32 | /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE | |
33 | /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY | |
34 | /DIGITAL. | |
35 | / | |
36 | / | |
37 | / | |
38 | / | |
39 | / | |
40 | / | |
41 | / | |
42 | / | |
43 | / | |
44 | / | |
45 | ||
46 | \f/CREF IS A CROSS REFERENCING PROGRAM FOR THE OS/8 ASSEMBLERS, | |
47 | /PAL8 AND SABR. THE PURPOSE OF CREF IS: | |
48 | ||
49 | / 1) PROVIDE A SEQUENCE NUMBERED (DECIMAL) OUTPUT LISTING | |
50 | ||
51 | / 2) PROVIDE A LIST OF ALL USER DEFINED SYMBOLS AND LITERALS | |
52 | / AND THE SEQUENCE NUMBER OF THE LINES IN WHICH THEY OCCUR | |
53 | ||
54 | /FIXES FOR MAINTENANCE RELEASE: | |
55 | ||
56 | /1. 1975 COPYRIGHT, VERSION 4, EDIT 1 | |
57 | /2. UNIFIED PAGE SIZE INTO ONE PLACE (& MADE IT WORK) | |
58 | /3. OUTPUT EXTRA FORM FEED AT END | |
59 | /4. MADE /A MEAN KEEP CREFLS.TM INSTEAD OF /E | |
60 | ||
61 | /FIXES FOR V3D: | |
62 | ||
63 | /INSTALLED ALL PUBLISHED PATCHES | |
64 | \f | |
65 | /DETAILS OF CREF. | |
66 | ||
67 | /CORE UTILIZED | |
68 | /FIELD 0 | |
69 | ||
70 | /0-3377: MAINLINE CREF CODE | |
71 | /4200-4577: INITIALIZATION CODE.EXECUTED ONCE AT BEGINNING | |
72 | /5600-6177: LATER OVERWRITTEN | |
73 | /DEVICE HANDLERS + BUFFERS ALLOCATED ACCORDING | |
74 | /TO REQUIREMENTS OF DEVICES. | |
75 | /USES 3400-5577 FOR INPUT HANDLER, OUTPUT HANDLER, + INPUT BUFFER | |
76 | /7200-7577: OUTPUT BUFFER | |
77 | /5600-7174: USED FOR REFERENCE STORAGE | |
78 | ||
79 | /FIELD 1 | |
80 | ||
81 | /0-NSYM*4+10 NSYM=NO. OF SYMBOLS.(USER+PERMANENT+LITERALS). | |
82 | /7424-7577 PSEUDO OP TABLE | |
83 | /THE REMAINDER IS USED FOR REFERENCES DURING PASSES GREATER THAN ONE | |
84 | ||
85 | /SYSTEM SCRATCH USED. | |
86 | /IF CREF DECIDES THAT MORE THAN 2 PASSES ARE REQUIRED, THE SYMBOL | |
87 | /TABLE IS SEGMENTED AT AN OPTIMUM POINT, AND PART IS SAVED | |
88 | /IN SCRATCH BLOCKS 27-50 FOR A THIRD (OR LARGER) PASS. | |
89 | ||
90 | ||
91 | /MAJOR ROUTINES AND CODE SECTIONS | |
92 | ||
93 | /MAIN-START OF TEXT PROCESSING.CHECKS FOR VALID LINE.READS AND WRITES | |
94 | /TEXT LINES | |
95 | /CVTSEQ CONVERTS SEQUENCE NUMBERS FROM OCTAL TO DECIMAL AND | |
96 | / WRITES THEM INTO THE OUTPUT BUFFER | |
97 | ||
98 | /GETLIN- GET A LINE OF INPUT INTO LINE BUFFER | |
99 | ||
100 | /WRTLIN- WRITE A LINE OF TEXT INTO OUTPUT BUFFER | |
101 | ||
102 | /ANALYZ- LINE SCANNING BEGINS.ALL SYMBOLS COLLECTED HERE | |
103 | ||
104 | /PACK- CHARACTER PACKING ROUTINE. THE SCHEME USED MAPS LETTERS | |
105 | /A-Z AND [,],\,^ INTO 0-37. 0-9 INTO 40-51 | |
106 | / THE PACKING IS: CHAR1-300^52+CHAR2-300 | |
107 | ||
108 | /SYMCHK- BINARY SYMBOL TABLE SEARCH | |
109 | ||
110 | /ENTRY- MAKES ENTRIES IN USER SYMBOL TABLE | |
111 | ||
112 | /BUMP- BUMPS REFERENCE COUNTER OF SYMBOLS IN PASS 1 | |
113 | ||
114 | /ENDPAS- TERMINATES A PASS THROUGH INPUT | |
115 | ||
116 | /PASSN2- FILLS IN REFERENCE STORAGE ARE DURING PASSES | |
117 | / AFTER PASS ONE | |
118 | ||
119 | /DUMP- DUMPS CREF TABLE TO OUT BUFFER | |
120 | ||
121 | ||
122 | /SWITCHES IN CREF: | |
123 | /Q=INPUT IS SABR CODE | |
124 | /R=INPUT IS RALF CODE | |
125 | /P=DISABLE LISTING OUTPUT. RE ENABLE FOR CREF TABLE | |
126 | /X=DON'T CREF LITERALS | |
127 | /M=MAMMOTH FILE(2 PASSES) | |
128 | /E=DON'T ELIMINATE CREFLS.TM | |
129 | /U=/P + NO SYMBOL TABLE | |
130 | \f DECIMAL | |
131 | ||
132 | PAGLEN=66 /V3C MOST PAPER HAS 66 LINES PER PAGE | |
133 | ||
134 | OCTAL | |
135 | ||
136 | PAGLEN=PAGLEN-6 /HEADINGS | |
137 | ||
138 | ||
139 | VERSN="5 | |
140 | PATCHL="A | |
141 | /PAGE ZERO FOR CREF | |
142 | ||
143 | *10 | |
144 | /AUTO INDEX REGISTERS | |
145 | ||
146 | XRLINE, SYMTAB-1 /USED TO MOVE UP SYMBOL TABLE | |
147 | XRLIT, -1 /DITTO | |
148 | XRSYM1, 0 | |
149 | XRSYM2, 0 /THESE ARE USED IN SEARCHING SYMBOLS | |
150 | OUSAVX, 7611 /USED TO SAVE ARGS FOR /M | |
151 | ||
152 | *20 | |
153 | TXTBEG, LINBUF+12 /TEXT STARTS HERE | |
154 | MARGIN, LINBUF-1 /LINE BUFFER | |
155 | COUNT, 0 /GENERAL COUNTER | |
156 | CHAR, 0 /HOLDS CHARACTER TO EXAMINE | |
157 | SEQNO, 0 /SEQUENCE NO. | |
158 | SAVE, 0 | |
159 | TEMP, 0 | |
160 | TEMP1, 0 /THESE THREE ARE TEMPORARY STORAGE | |
161 | DSWIT, 0 | |
162 | RSWIT, 0 /CD SWITCH WORDS | |
163 | MLF, -212 /-LINE FEED | |
164 | SYMCNT, -6 /ALLOW 6 CHARACTER SYMBOLS | |
165 | ISYM, SYM1 /POINTER TO SYMBOL COLLECTOR | |
166 | PSWCH, 0 /PACK SWITCH..LEFT OR RIGHT HALF | |
167 | SYM1, 0 | |
168 | SYM2, 0 | |
169 | SYM3, 0 /COLLECT SYMBOLS HERE | |
170 | USER, 0 /USER MUST FOLLOW SYM3! | |
171 | 110 /INITIAL SYMBOL TABLE ENTRIES | |
172 | PSEUDO, 0 | |
173 | 0 /THESE 2 GET FILLED IN AT INITIALIZATION | |
174 | PASN2, PASSN2 /IF NOT PASS 1 GO HERE WITH A SYMBOL | |
175 | PASSG1, -1 /=0 IF NOT PASS1 | |
176 | MAXFLD, 0 /-# OF FIRST NON-EXISTENT FIELD | |
177 | CONST, 0 /EITHER 0 OR 96(10) | |
178 | FLDPTR, 0 /POINTER TO CORE FIELD | |
179 | USR, 200 /MONITOR IN CORE..CHANGED TO 7700 | |
180 | DOLLAR, DOLL1 | |
181 | SYMFLD, 2 /FIELDS WITH SYMBOLS: BITS 5-11 | |
182 | MASKF, 0 /MASK FOR ABOVE WORD | |
183 | ||
184 | /THESE ARE THE DEFAULT PARAMETERS FOR THE I/O ROUTINES | |
185 | /AJUSTED ACCORDING TO REQUIREMENTS OF DEVICES REQUESTED | |
186 | ||
187 | OUCTL=4200 | |
188 | OUBUF=7200 | |
189 | OUDEVH=4000 /VARIABLE-MAY ALSO BE 3600 | |
190 | OUFLD=OUCTL&70 | |
191 | ||
192 | INCTL=0400 | |
193 | INBUF=4600 /ALSO 4200 | |
194 | INDEVH=3400 | |
195 | INRECS=2 /ALSO 3 | |
196 | INFLD=INCTL&70 | |
197 | /(SUBJECT TO CHANGE WITHOUT NOTICE!) | |
198 | ||
199 | SYMADD, 0 /CONTAINS SYMBOL ADDRESS | |
200 | SYMNUM, 0 /ABOVE MOD 4 | |
201 | K0=USER | |
202 | BUFFER, 0 /POINTER FOR UNPACKING | |
203 | R=52 | |
204 | RAD=52 /RADIX FOR CONVERTING SYMBOLS | |
205 | ||
206 | ADDER, 0 | |
207 | SYSM, 0 | |
208 | BASE, 0 /THESE ARE USED TO END A PASS | |
209 | SYMLIM, 0 /UPPER LIMIT FOR SYMBOL REF TABLE | |
210 | FINI, 0 | |
211 | ||
212 | IOSR, 0 | |
213 | JMS I [7607 | |
214 | CNTROL, 4010 /THIS IS ON PAGE ZERO MAINLY | |
215 | CTPTR, 4 /BECAUSE CTPTR IS USED A LOT | |
216 | SCRATCH=27 | |
217 | SCRATCH /SYSTEM SCRATCH FOR OVERFLOW | |
218 | SKP /ERROR ON SYS!!! | |
219 | JMP I IOSR | |
220 | HIOERR, JMS I [ERROR | |
221 | HNDERR | |
222 | LNPRPG, -PAGLEN /# LINES OF TEXT PER PAGE | |
223 | LINES, -PAGLEN /V3C MASTER COPY | |
224 | THOUS, 6030 /CONVERSION TABLE..OCTAL-DECIMAL | |
225 | 7634 | |
226 | 7766 | |
227 | 7777 | |
228 | ||
229 | FPUT, STORIT /INITIALLY POINTS TO DCA I XRLINE | |
230 | ||
231 | M12=THOUS+2 | |
232 | M1=THOUS+3 | |
233 | ||
234 | DPAT, 0 | |
235 | DCA I (NOFIRM | |
236 | DCA I (NOFORM | |
237 | JMP I DPAT | |
238 | \f | |
239 | *200 | |
240 | JMP I (ST1 /INITIALIZATION GETS DESTROYED | |
241 | BREAK, JMP I (CHAIN /CHAIN ENTRY POINT | |
242 | ZBLOCK 7 /BREAK TABLE. HOLDS SYMBOL | |
243 | /NUMBERS DURING VARIOUS PASSES | |
244 | /OF CREF. THE ENTRIES ARE THE NUMBER | |
245 | /OF THE LARGEST SYMBOL | |
246 | /WHOSE REFERENCES ARE IN A PARTICULAR | |
247 | /FIELD. THE 0TH ENTRY CORRESPONDS TO | |
248 | /FIELD 0. | |
249 | ERROR, 0 | |
250 | CLA | |
251 | CDF 0 | |
252 | TAD I ERROR | |
253 | DCA BUFFER | |
254 | TAD [-6 | |
255 | DCA SYMCNT /12 CHARACTER MESSAGES | |
256 | TAD TTY /POINT TO TTY OUT ROUTINE | |
257 | DCA [OCHAR | |
258 | ||
259 | TAD I BUFFER | |
260 | JMS I [DIVIDE /CONVERT AND PRINT MESSAGE | |
261 | ISZ SYMCNT | |
262 | JMP .-3 | |
263 | JMP I [7605 | |
264 | TTY, TTYPRT | |
265 | ||
266 | ||
267 | /THE INPUT LINE IS STORED HERE. XRLINE POINTS TO VARIOUS | |
268 | /PLACES THROUGHOUT THE SCAN, AND CHAR HOLDS THE CORRESPONDING | |
269 | /CHARACTER WHILE WE EXAMINE IT. | |
270 | ||
271 | LINBUF=. | |
272 | LITBUF=.+6 | |
273 | VERTST=.+4 | |
274 | ||
275 | ||
276 | *251 | |
277 | FILEXT, 0 | |
278 | CDF 10 | |
279 | TAD I (7604 | |
280 | CDF 0 | |
281 | SNA | |
282 | TAD (1423 | |
283 | CDF 10 | |
284 | DCA I (7604 | |
285 | CDF 0 | |
286 | JMP I FILEXT | |
287 | P2ADJ, 0 | |
288 | TAD I (PASS2 | |
289 | SNA | |
290 | JMP I P2ADJ | |
291 | DCA I (OUBLK /LAST BLOCK WRITTEN TO | |
292 | CDF 10 | |
293 | TAD I OUSAVX | |
294 | CDF 0 | |
295 | DCA I (OUELEN /SIZE OF HOLE | |
296 | CDF 10 | |
297 | TAD I OUSAVX | |
298 | DCA LNPRPG /NO. LINES IN LAST BLK WRITTEN | |
299 | TAD I OUSAVX /NO. BLKS WRITTEN SO FAR | |
300 | CDF 0 | |
301 | JMP I (MP2 /NO ENTER | |
302 | MORCOR, 0 | |
303 | CLA CLL IAC | |
304 | DCA MAXFLD /IN CASE NOT DEFINED | |
305 | TAD I (7777 | |
306 | AND (70 | |
307 | SNA | |
308 | JMP I MORCOR /USE OLD WAY TO DETERMINE | |
309 | CLL RTR | |
310 | RAR /NEED IT HI 3 | |
311 | DCA MAXFLD | |
312 | JMP I (DONCOR | |
313 | ||
314 | OTYPE, 0 | |
315 | CDF 10 | |
316 | TAD I [7600 /DETERMINE WHAT TYPE OF DEVICE | |
317 | AND [17 | |
318 | DCB=7760 | |
319 | TAD (DCB-1 | |
320 | DCA Q | |
321 | TAD I Q /CHECK DEVICE CONTROL BLOCK | |
322 | CDF 0 | |
323 | JMP I OTYPE | |
324 | Q, 0 | |
325 | \f *400 | |
326 | ||
327 | /MAIN IS THE START OF CREF.(IF SABR, NXTLIN IS START). | |
328 | /AT MAIN WE SCAN A LINE OF TEXT FOR BINARY DATA. IF NONE IS FOUND, | |
329 | /THE LINE IS WRITTEN OUT AND A NEW LINE READ. IF BINARY IS FOUND, | |
330 | /THE SEQUENCE NUMBER OF THE LINE IS PLACED IN THE OUTPUT | |
331 | /BUFFER AND THE ANALYSIS BEGINS AT ANALYZ. | |
332 | ||
333 | MAIN, JMS I [FORM /FORM FEED (CR/LF) | |
334 | JMS I [HEADER /SKIP HEADER | |
335 | JMS I (GETLIN /AND ONE CR/LF | |
336 | NOTBIN, JMS WRTLIN | |
337 | NXTLIN, JMS I (GETLIN | |
338 | TAD I XRLINE | |
339 | DCA CHAR | |
340 | JMS I [CHECK /CHECK FOR ALPHA LINE | |
341 | 301 | |
342 | -336 | |
343 | JMP NOALPH | |
344 | NOFIRM, ISZ LNPRPG /NEED A FORM FEED YET? | |
345 | JMP NOTBIN /NOT YET | |
346 | JMS I [FORM /NOW!!! | |
347 | JMP NOTBIN | |
348 | NOALPH, TAD CHAR | |
349 | TAD MCTLD /IF RUB OUT, USED /D | |
350 | SNA | |
351 | JMP I [ENDPAS /CAN'T OUTPUT SYM TABLE | |
352 | TAD (163 /CHECK FOR FORM FEED | |
353 | SNA | |
354 | JMP MAIN /YES.. | |
355 | TAD (-41 /IF ------, HE USED /T(DUMMY!) | |
356 | SNA CLA | |
357 | JMP MAIN /GIVE HIM A FORM FEED | |
358 | NOFORM, ISZ LNPRPG /=0 AFTER PASS1 NEW PAGE? | |
359 | SKP /SKIP A FORM FEED | |
360 | JMS I [FORM | |
361 | ISZ SEQNO /BUMP SEQUENCE | |
362 | JMP MAIN2 | |
363 | TAD [140 | |
364 | DCA CONST | |
365 | MAIN2, JMS I [PASTST /STILL PASS ONE? | |
366 | JMP MAIN3 | |
367 | TAD SEQNO | |
368 | JMS CVTSEQ | |
369 | TAD [-3 /3 SPACES | |
370 | JMS I [SPACE | |
371 | MAIN3, TAD CHAR | |
372 | TAD [-215 | |
373 | SNA CLA | |
374 | JMP NOTBIN | |
375 | JMP I [ANALYZ | |
376 | MCTLD, -377 /RUB OUT | |
377 | ||
378 | /THIS ROUTINE CONVERTS SEQUENCE NUMBERS TO DECIMAL NUMBERS AND | |
379 | /PUTS THEM INTO THE OUTPUT BUFFER. IT IS USED WHEN PRINTING | |
380 | /THE CREF TABLE ALSO | |
381 | /THE CALLING SEQUENCE IS: AC=OCTAL NUMBER TO BE CONVERTED. | |
382 | /THE OUTPUT IS AUTOMATICALLY 4 DIGITS. | |
383 | ||
384 | ||
385 | POSPT=TEMP1 | |
386 | DIGPT=MASKF | |
387 | ||
388 | CVTSEQ, 0 | |
389 | TAD CONST | |
390 | DCA SAVE /TEMP STORE | |
391 | TAD CONST | |
392 | SZA CLA | |
393 | TAD [4 | |
394 | DCA DIGIT1 | |
395 | DCA DIGIT1+1 | |
396 | DCA DIGIT1+2 | |
397 | DCA DIGIT1+3 /ZERO CONVERSION AREA | |
398 | TAD [-4 | |
399 | DCA COUNT | |
400 | TAD SAVE | |
401 | CLL /SEE IF SEQUENCE IS ABOVE 8000(10) | |
402 | TAD CONST /EITHER 0 OR 140(8) | |
403 | SNL | |
404 | JMP CVT2 /O.K. | |
405 | DCA SAVE /CORRECTED NUMBER | |
406 | TAD [10 | |
407 | DCA DIGIT1 /PUT AN 8 INTO THERE FOR PRINTING | |
408 | CVT2, CLA | |
409 | TAD (DIGIT1 | |
410 | DCA DIGPT | |
411 | TAD (THOUS | |
412 | DCA POSPT | |
413 | TAD SAVE | |
414 | RPEAT, CLL | |
415 | TAD I POSPT /POINTS TO -1000,-100,-10, OR -1 | |
416 | SNL /IF LINK ON,WE DID TOO MUCH | |
417 | JMP ADDUP /COLLECT THE CONVERTED DIGIT | |
418 | ISZ I DIGPT /BUMP THE COUNTER DIGIT1-DIGIT1+3 | |
419 | JMP RPEAT | |
420 | ||
421 | ADDUP, CIA /RESTORE THE LAST ONE | |
422 | TAD I POSPT | |
423 | CIA | |
424 | ISZ POSPT | |
425 | ISZ DIGPT | |
426 | ISZ COUNT /DONE ALL 4? | |
427 | JMP RPEAT | |
428 | TAD [-4 /YES..OUTPUT THE CONVERTED NUMBERS | |
429 | DCA COUNT | |
430 | TAD (DIGIT1 | |
431 | DCA DIGPT | |
432 | SPCLUP, TAD I DIGPT | |
433 | TAD ZSPRES /LEADING ZERO SUPPRESSION | |
434 | DCA ZSPRES | |
435 | TAD ZSPRES | |
436 | SNA CLA /ZSPRES IS 0 UNTIL A VALID # IS FOUND | |
437 | TAD (-20 | |
438 | TAD I DIGPT | |
439 | TAD [260 | |
440 | JMS I [OCHAR | |
441 | ISZ DIGPT | |
442 | ISZ COUNT | |
443 | JMP SPCLUP | |
444 | DCA ZSPRES | |
445 | JMP I CVTSEQ | |
446 | ||
447 | DIGIT1, 0 | |
448 | 0 | |
449 | 0 | |
450 | 0 | |
451 | ZSPRES, 0 | |
452 | \f /WRTLIN TRANSFERS INPUT LINE TO OUTPUT BUFFER | |
453 | ||
454 | WRTLIN, 0 | |
455 | TAD MARGIN | |
456 | DCA XRLINE /RESET MARGIN TO LEFT | |
457 | OLINE, TAD I XRLINE /PICK UP TEXT CHARACTER | |
458 | DCA CHAR | |
459 | TAD CHAR | |
460 | SNA /IF NULL,WAS PREMATURE TERMINATOR | |
461 | JMP FLUSH /YES. READ AND WRITE THE REST | |
462 | JMS I [OCHAR /OUTPUT THE CHARACTER | |
463 | TAD CHAR | |
464 | TAD MLF /WAS THIS END OF LINE? | |
465 | SZA CLA | |
466 | JMP OLINE /NO..LOOP AGAIN | |
467 | JMP I WRTLIN | |
468 | ||
469 | FLUSH, JMS I [HEADER | |
470 | JMP I WRTLIN /OVERFLOW NOT IN BUFFER | |
471 | \f | |
472 | *600 | |
473 | /ANALYZ IS A WORK HORSE. IN IT CHARACTERS ARE EXAMINED AND | |
474 | /SYMBOLS ARE BUILT UP. IF A SYMBOL OR A REFERENCE TO A | |
475 | /SYMBOL IS FOUND,THE APPROPRIATE ACTION IS TAKEN;I.E. | |
476 | /EITHER ENTERING A NEW SYMBOL, BUMPING THE RFERENCE COUNTER, | |
477 | /OR BOTH. | |
478 | ||
479 | ANALYZ, TAD SEMISV /IF #0, LAST WAS SEMICOLON | |
480 | SNA | |
481 | TAD TXTBEG /IF=0, START NORMALLY | |
482 | DCA XRLINE | |
483 | ||
484 | SCAN, TAD I XRLINE | |
485 | DCA CHAR | |
486 | JMS I [CHECK /ALPHANUMERIC CHECK | |
487 | 301 | |
488 | -332 | |
489 | SKP /NONE..TEST FOR SPECIAL CHARS | |
490 | JMP PAKIT /FOUND A LETTER PACK AWAY | |
491 | JMS I [CHECK /TEST FOR 0-9 | |
492 | 260 | |
493 | -271 | |
494 | SKP /NOPE..COULD BE SABR | |
495 | JMP SCAN1 | |
496 | SCAN3, JMP TSTIT /IF SABR, THIS LOC IS AND 0 | |
497 | JMS I [CHECK /TEST FOR [,],\,AND ^ | |
498 | 333 | |
499 | -336 | |
500 | SKP | |
501 | JMP PAKIT /VALID SABR CHARACTERS | |
502 | ||
503 | TSTIT, JMS REPACK | |
504 | TAD CHAR /IS THIS A ;? | |
505 | TAD (-273 /IF SO, SAVE PLACE ON LINE | |
506 | SZA CLA | |
507 | JMP .+3 /IF ; SAVE PLACE ON LINE | |
508 | TAD XRLINE | |
509 | DCA SEMISV | |
510 | TAD SYM1 /IS THERE A LEGAL SYMBOL? | |
511 | SNA CLA | |
512 | JMP TSTEND /NO..LOOK FOR A LINE FEED | |
513 | TAD CHAR | |
514 | TAD (-257 | |
515 | SNA CLA /A COMMENT? | |
516 | IAC /YES..NEED SPECIAL RETURN | |
517 | DCA SLSWIT | |
518 | ||
519 | JMS I [SYMCHK /THIS IS EITHER A REFERENCE OR A | |
520 | /DEFINITION OR A PERMANENT SYMBOL,PSEUDO | |
521 | PSEUDO /CHECK PSEUDOS FIRST | |
522 | HC1, JMP USSYM /NOT A PSEUDO-OP | |
523 | /BECOMES JMP PATCH IF /M USED | |
524 | TAD SYMADD | |
525 | TAD [3 | |
526 | DCA SAVE /SYMCHK RETURNS ADDRESS OF SYMBOL IN SYMADD | |
527 | CDF 10 | |
528 | TAD I SAVE | |
529 | DCA SAVE | |
530 | CDF 0 | |
531 | JMS I (CLEAR /WIPE OUT PSEUDO OP | |
532 | JMP I SAVE /PERFORM THE NECESSARY OP FOR PSEUDO | |
533 | PATCH, TAD SYM1 | |
534 | RTL | |
535 | PATCH1, CLA SZL SPA /LG-LH SPLIT | |
536 | JMP B | |
537 | ||
538 | USSYM, JMS I [PASTST | |
539 | JMP I PASN2 | |
540 | JMS I [SYMCHK | |
541 | USER /CHECK PERMANENT AND USER SYMBOLS | |
542 | JMP NTER /DIDN'T FIND IT; SO WE HAVE TO ENTER IT | |
543 | JMS I (TSTPRM /FOUND;TEST FOR PERMANENT SYMBOL | |
544 | JMP B /WAS A PERMANENT SYMBOL | |
545 | JMP BMPIT /FOUND AND NOT PERMANENT;INCREASE THE | |
546 | /REFERENCE COUNTER BY ONE | |
547 | ||
548 | NTER, JMS I [ENTRY /ENTER THE SYMBOL BY PUSHING DOWN ALL | |
549 | /THE ONES BELOW IT | |
550 | BMPIT, JMS I [BUMP /AND INCREASE THE REFERENCE COUNT | |
551 | B, JMS I (CLEAR /SETUP FOR NEXT | |
552 | TAD SLSWIT /WAS LAST A /? | |
553 | SZA CLA | |
554 | JMP I (NOTBIN | |
555 | JMP SCANER | |
556 | ||
557 | TSTEND, TAD CHAR | |
558 | TAD MLF /ARE WE DONE WITH THIS LINE? | |
559 | SZA CLA | |
560 | JMP .+3 /IF LF, CLEAR OUT SEMICOLON | |
561 | CLRSEM, DCA SEMISV | |
562 | JMP I (NOTBIN | |
563 | TAD CHAR | |
564 | TAD (-257 | |
565 | SNA /COMMENT LINE? | |
566 | JMP CLRSEM | |
567 | TAD (15 /A "? | |
568 | SNA | |
569 | ISZ XRLINE /YES..SKIP NEXT LETTER | |
570 | TAD [-2 /A $? | |
571 | SNA | |
572 | JMP I DOLLAR | |
573 | TAD [-4 | |
574 | SNA /TEST FOR ( | |
575 | JMP I (LIT1 | |
576 | TAD (-63 | |
577 | SZA CLA /TEST FOR [ | |
578 | JMP SCANER /NONE OF THEM KEEP GOING | |
579 | JMP I (LIT2 | |
580 | ||
581 | SCAN1, TAD SYM1 /IF WE DON'T HAVE A SYMBOL | |
582 | SNA CLA /DON'T PACK THIS CHARACTER | |
583 | JMP SCAN | |
584 | PAKIT, TAD CHAR | |
585 | JMS I [PACK /PACK A CHARACTER | |
586 | JMP SCAN | |
587 | ||
588 | REPACK, 0 /RESET SYMBOL AREA | |
589 | TAD [-6 | |
590 | DCA SYMCNT /SYMBOL COUNTER..6 CHARS | |
591 | TAD (SYM1 | |
592 | DCA ISYM | |
593 | DCA PSWCH | |
594 | JMP I REPACK | |
595 | ||
596 | SEMISV, 0 | |
597 | SLSWIT, 0 | |
598 | ||
599 | SCANER, TAD CHAR /IF LAST WAS ; READ IN OVERLAY | |
600 | TAD (-273 | |
601 | SNA CLA | |
602 | JMP I (NOTBIN | |
603 | JMP SCAN | |
604 | ||
605 | SUB3, 0 /SUBTRACTS 3 FROM CTPTR | |
606 | TAD [-3 | |
607 | TAD CTPTR | |
608 | DCA CTPTR | |
609 | JMP I SUB3 | |
610 | *1000 | |
611 | ||
612 | ||
613 | /THE PACKING SCHEME IS THE SAME AS THAT USED IN PAL8. THAT IS | |
614 | /IN EACH WORD WE HAVE 2 CHARS. CHAR1-300^45+CHAR2-300. | |
615 | /PERMANENT SYMBOLS HAVE THE FIRST WORD SET TO A NEGATIVE. | |
616 | ||
617 | PACK, 0 | |
618 | DCA BLAH | |
619 | TAD SYMCNT | |
620 | SMA CLA /OVERFLOW PROTECT | |
621 | JMP I PACK | |
622 | TAD BLAH | |
623 | AND [77 /STRIP IT | |
624 | TAD (-37 /INCLUDE VALID SABR CHARS | |
625 | SMA SZA | |
626 | TAD (-20 /NUMBERS GET MAPPED: 40-51 | |
627 | TAD (37 /LETTERS ARE MAPPED:01-37 | |
628 | ISZ PSWCH /WHICH HALF? | |
629 | JMP LEFT | |
630 | TAD I ISYM | |
631 | DCA I ISYM | |
632 | ISZ ISYM | |
633 | JMP PCKOUT | |
634 | LEFT, CLL RAL /*2 | |
635 | DCA TLOW | |
636 | TAD TLOW | |
637 | CLL RTL | |
638 | DCA SAVE /*10 | |
639 | TAD SAVE | |
640 | CLL RTL /*40 | |
641 | TAD SAVE | |
642 | TAD TLOW /*52!! | |
643 | DCA I ISYM | |
644 | CLA CMA /RESET FLIP FLOP | |
645 | DCA PSWCH | |
646 | PCKOUT, ISZ SYMCNT | |
647 | NOP | |
648 | JMP I PACK | |
649 | BLAH, 0 | |
650 | ||
651 | ||
652 | ||
653 | \f | |
654 | /SYMCHK IS THE BINARY SEARCH ROUTINE FOR CREF. SYMBOLS | |
655 | /ARE A GROUP OF FOUR ENTRIES:THE FIRST THREE WORDS ARE | |
656 | /THE STRIPPED-40 REPRESENTATION OF THE SYMBOL. THE LAST | |
657 | /IS THE REFERENCE COUNTER (IN THE CASE OF A USER SYMBOL) OR | |
658 | /A -1 (IN THE CASE OF A PERMANENT SYMBOL). IN PSEUDO OPS | |
659 | /THE FOURTH WORD DESCRIBES THE DESTINATION OR ACTION | |
660 | /TO BE PERFORMED BY THAT PSEUDO OP. | |
661 | /THE TABLE USER,0 HAS ENTRIES WHICH ARE THE SYMBOL NUMBER | |
662 | /AND NOT THE ABSOLUTE CORE LOCATION OF A SYMBOL. | |
663 | ||
664 | /CALLING SYMCHK: | |
665 | / JMS SYMCHK | |
666 | / TABLE /FIRST WORD OF TWO WHICH GIVES THE LIMITS | |
667 | /MOD 4 OF THE APPROPRIATE TABLE | |
668 | /SYMCHK RETURNS WITH THE NUMBER OF THE SYMBOL IN SYMNUM | |
669 | /AND THE CORE ADDRESS OF THE SYMBOL IN SYMADD. IF THE | |
670 | /SYMBOL IS NOT FOUND, THESE WORDS CONTAIN THE PROPER LOCATION | |
671 | /FOR THE SYMBOL. | |
672 | ||
673 | SYMCHK, 0 | |
674 | TAD I SYMCHK | |
675 | DCA THI | |
676 | DCA LAST | |
677 | TAD I THI /GET LIMITS OF TABLE | |
678 | DCA TLOW /LOW LIMIT | |
679 | ISZ THI | |
680 | TAD I THI | |
681 | DCA THI /HIGH LIMIT | |
682 | ||
683 | COMP, TAD TLOW | |
684 | CIA | |
685 | TAD THI | |
686 | CLL RAR /HALF DIFFERENCE BETWEEN THE LIMITS | |
687 | SNA /IF THIS IS ZERO, WE'RE DONE | |
688 | ISZ LAST /THIS WILL BE LAST TRY | |
689 | TAD TLOW /FORM THE NUMBER OF THE ENTRY | |
690 | DCA SYMNUM /WE ARE GOING TO TEST NOW | |
691 | JMS SETXR /SET UP INDICES FOR TEST | |
692 | ISZ COUNT /WE ONLY WANT -3 IN COUNT! | |
693 | ||
694 | S1, CLL | |
695 | CDF 10 | |
696 | TAD I XRSYM2 /SYMBOL TABLE ENTRY | |
697 | CDF 0 | |
698 | AND [3777 /MASK PERMANENT SYMBOL BIT | |
699 | CMA /USE ONE'S COMPLEMENT | |
700 | TAD I XRSYM1 /OUR COLLECTED SYMBOL | |
701 | CMA /0 AC IF EQUAL | |
702 | SZA CLA /WATCH THE LINK!! | |
703 | JMP COMPR /NOW TEST FOR HI OR LOW COMPARISON | |
704 | ISZ COUNT | |
705 | JMP S1 | |
706 | ISZ SYMCHK /TAKE FOUND ENTRY | |
707 | JMP OUT1 | |
708 | ||
709 | ||
710 | COMPR, TAD LAST /LAST GASP? | |
711 | SZA CLA | |
712 | JMP OUT2 /YEP | |
713 | TAD SYMNUM /LINK TELLS THE TALE! | |
714 | SNL | |
715 | JMP COMP-1 /ADJUST HIGH LIMIT | |
716 | DCA TLOW | |
717 | JMP COMP | |
718 | ||
719 | ||
720 | OUT2, TAD SYMNUM | |
721 | SZL | |
722 | IAC | |
723 | DCA SYMNUM | |
724 | OUT1, TAD SYMNUM /ADDING THE FIRST ENTRY AFTER | |
725 | SZA /AN EXPUNGE WILL CAUSE SYMNUM TO BE 0 | |
726 | /AUTOMATICALLY IT HAS TO BE 1 | |
727 | JMP .+3 | |
728 | ISZ SYMNUM | |
729 | JMP OUT1 | |
730 | CLL RTL /FORM SYMADD FROM SYMNUM | |
731 | DCA SYMADD /CORE ADDRESS OF THE SYMBOL | |
732 | ISZ SYMCHK | |
733 | JMP I SYMCHK | |
734 | ||
735 | THI, 0 | |
736 | TLOW, 0 | |
737 | ||
738 | LAST, 0 | |
739 | ||
740 | ||
741 | ||
742 | /THESE TABLES DEFINE THE LIMITS OF CORE STORAGE IN CREF. | |
743 | /BASTBL GIVES THE START LOC WHERE REFERENCES WILL BE STORED. | |
744 | /LTTBL GIVES THE LO CORE LIMIT OF THOSE REFS. THERE IS ONE ENTRY FOR | |
745 | /EACH FIELD | |
746 | ||
747 | BASTBL, 7174 /THIS TABLE GIVES THE BASE | |
748 | 7424 /LOCATIONS INEACH FIELD WHERE THE | |
749 | 7574 /REFERENCES BEGIN | |
750 | 7574 /REFS START HERE AND BUILD TOWARD LOWER | |
751 | 7574 /CORE ADDRESSES | |
752 | 7574 | |
753 | 7574 | |
754 | 7574 | |
755 | LTTBL, DOLL1 /THIS TABLE GIVES THE LOW | |
756 | 10 /CORE ADDRESS OF THE REFS IN EACH FIELD | |
757 | 4 /NOTE:ENDPAS JUGGLES THESE AROUND | |
758 | 4 /TO OPTIMIZE CREF STORAGE | |
759 | 4 | |
760 | 4 | |
761 | 4 | |
762 | 4 | |
763 | ||
764 | DIVE, 0 | |
765 | SNA /IF 0, PRODUCE A SPACE | |
766 | JMP DIVSPC | |
767 | TAD (-37 | |
768 | SMA SZA | |
769 | TAD [-60 | |
770 | TAD [77 | |
771 | DIVSPC, TAD [240 | |
772 | JMP I DIVE | |
773 | ||
774 | SETXR, 0 /SETUP INDEX REGS FOR SEARC,ENTRY | |
775 | TAD SYMNUM /SETUP WHEN FOUND SYMBOL | |
776 | CLL RTL /CORE ADDRESS OF SYMBOL | |
777 | TAD M1 | |
778 | DCA XRSYM2 | |
779 | TAD [SYM1-1 | |
780 | DCA XRSYM1 | |
781 | TAD [-4 | |
782 | DCA COUNT | |
783 | JMP I SETXR | |
784 | \f | |
785 | *1200 | |
786 | /ENTRY IS SLOW! IT ENTERS A SYMBOL BY PUSHING DOWN WHAT IS | |
787 | /BELOW THE PROPER ENTRY.ENTRY CAN ONLY BE USED IN MAKING | |
788 | /ENTRIES IN THE PERMANENT (USER) SYMBOL TABLE. | |
789 | /ENTRY CONDITIONS:AC SHOULD BE CLEAR! | |
790 | / SYMNUM SHOULD HAVE THE SYMBOL NUMBER OF THE | |
791 | / PROPOSED ENTRY. SYMCHK RETURNS THIS WHEN THE | |
792 | / SEARCH IS UNSUCCESSFUL. | |
793 | ||
794 | ENTRY, 0 | |
795 | JMS I (SETXR /SETUP INDEX REGISTERS | |
796 | TAD USER+1 /CHECK FOR POSSIBLE OVERFLOW | |
797 | CMA /WE DON'T WANT TO WIPE PSEUDO TABLE | |
798 | TAD PSEUDO | |
799 | SPA SNA CLA | |
800 | JMP NMOR /BAD!OVERFLOW HAS OCCURRED | |
801 | ISZ USER+1 /OK..BUMP SYMBOL COUNT | |
802 | TAD USER+1 | |
803 | CLL RTL /CORE ADDRESS OF ENTRY | |
804 | DCA TEMP1 | |
805 | TAD TEMP1 | |
806 | TAD [-4 /GIVES BOTTOM OF TABLE NOW | |
807 | DCA SAVE | |
808 | TAD SAVE /TEST FOR AN 'ADD-ON' ENTRY | |
809 | CMA | |
810 | TAD SYMADD | |
811 | DCA COUNT /-# OF WORDS TO MOVE | |
812 | ||
813 | CDF 10 | |
814 | NTR1, TAD I SAVE | |
815 | DCA I TEMP1 /THE BAD LOOP! | |
816 | CMA | |
817 | TAD SAVE | |
818 | DCA SAVE /I WISH WE HAD A DSZ!(DECREMENT &SKIP ON 0 | |
819 | CMA | |
820 | TAD TEMP1 | |
821 | DCA TEMP1 | |
822 | ISZ COUNT /DONE? | |
823 | JMP NTR1 /UNFORTUNATELY NOT | |
824 | ||
825 | CDF 0 | |
826 | ENTER, CLA /NOW PUT IN OUR ENTRY | |
827 | TAD [-4 | |
828 | DCA COUNT /THE 4TH IS A 0 WORD (USER FOLLOWS SYM3) | |
829 | NTR2, TAD I XRSYM1 | |
830 | CDF 10 | |
831 | DCA I XRSYM2 | |
832 | CDF 0 | |
833 | ISZ COUNT | |
834 | JMP NTR2 | |
835 | JMP I ENTRY | |
836 | ||
837 | NMOR, JMS I [ERROR /SYMBOL OVERFLOW | |
838 | SYMERR | |
839 | \f | |
840 | ||
841 | TXT, JMS GETC | |
842 | TAD (-240 /IGNORE SPACES | |
843 | SNA CLA | |
844 | JMP TXT | |
845 | TAD CHAR | |
846 | CIA /STRING DELIMITER | |
847 | DCA DELMIT | |
848 | TXT2, JMS GETC | |
849 | TAD DELMIT /REACHED END OF STRING? | |
850 | SNA CLA | |
851 | JMP I [B /YES | |
852 | TAD CHAR /NO..END OF LINE? | |
853 | TAD [-215 | |
854 | SNA CLA | |
855 | JMP I [B | |
856 | JMP TXT2 | |
857 | ||
858 | GETC, 0 | |
859 | TAD I XRLINE | |
860 | DCA CHAR | |
861 | TAD CHAR | |
862 | JMP I GETC /GET A CHAR;STORE IT, RETURN IN AC | |
863 | DELMIT, 0 | |
864 | ||
865 | \f | |
866 | ||
867 | ||
868 | BUMP, 0 /ROUTINE TO BUMP REFERENCE COUNTERS | |
869 | TAD SYMADD | |
870 | TAD [3 | |
871 | DCA SAVE /ADDRESS OF REFERENCE COUNTER | |
872 | CDF 10 | |
873 | TAD I SAVE | |
874 | SPA CLA /IF 4000 BIT ON, AN EXTRA ENTRY HAS | |
875 | /ALREADY BEEN MADE FOR THIS SYMBOL | |
876 | JMP ONEISZ | |
877 | TAD CONST | |
878 | SNA CLA /IS SEQNO >4095? | |
879 | JMP ONEISZ /NOT YET | |
880 | TAD [4000 | |
881 | TAD I SAVE | |
882 | DCA I SAVE /MARK IT AS BEING NOTED | |
883 | CMA | |
884 | ONEISZ, TAD M1 /EITHER -1 OR -2 | |
885 | DCA COUNT | |
886 | BUMP2, TAD [3777 /THIS CODE PROTECTS AGAINST | |
887 | AND I SAVE />2048 REFS. IF SIGN BIT EVER BECOMES | |
888 | ISZ I SAVE /NEG. ON THE ISZ,KILL IT!! | |
889 | NOP /USELESS PROTECTION | |
890 | TAD [3 /IF AC GOES NEG. HE DIES!! | |
891 | SPA CLA | |
892 | JMP ERR7 | |
893 | ISZ COUNT | |
894 | JMP BUMP2 | |
895 | CDF 0 | |
896 | JMP I BUMP | |
897 | ||
898 | ERR7, CDF 0 | |
899 | JMS I [ERROR | |
900 | REFERR | |
901 | ||
902 | PTRSET, 0 /THIS ROUTINE TAKES | |
903 | TAD [3 /THE SYMBOL TABLE THAT | |
904 | DCA BUFFER /PRODUCED AND SETS UP EACH REFERENCE | |
905 | DCA SYMNUM /AREA WITH A POINTER INTO THE AREA | |
906 | CLA CMA | |
907 | TAD USER+1 /AND A 0 LOCATION TO HOLD THE DEFINITION | |
908 | CIA /SEQUENCE NO. | |
909 | DCA COUNT | |
910 | PTRST1, TAD [4 /START PICKING UP POINTERS | |
911 | TAD BUFFER | |
912 | DCA BUFFER | |
913 | ISZ SYMNUM /CORRESPONDING SYMBOL NUMBER | |
914 | JMS I (GETFLD /FORM CDF N FOR REFERENCE AREA | |
915 | DCA CDTFLD | |
916 | CDF 10 | |
917 | TAD I BUFFER /IF PERMANENT SYMBOL, THIS LOC=0 | |
918 | SNA /IF SO, SKIP IT | |
919 | JMP PTRST2 | |
920 | TAD M1 | |
921 | DCA SAVE | |
922 | CDTFLD, HLT | |
923 | DCA I SAVE | |
924 | ISZ SAVE /POINT TO INDEX WORD | |
925 | TAD [2 | |
926 | DCA I SAVE | |
927 | PTRST2, CDF 0 | |
928 | ISZ COUNT | |
929 | JMP PTRST1 | |
930 | JMP I PTRSET | |
931 | \f | |
932 | *1400 | |
933 | /ENDPAS IS ARRIVED AT WHEN A PASS THROUGH THE INPUT HAS BEEN | |
934 | /COMPLETED.SOME COMPLICATED DIDDLING GOES ON HERE. | |
935 | ||
936 | ENDPAS, ISZ PASSG1 | |
937 | JMP I (DUMP /DUMP WHAT WE HAVE | |
938 | JMS I (ENDFIX | |
939 | IAC /POINT TO END OF NEW TABLE | |
940 | DCA USER+1 /YES..THAT BECOMES THE TOTAL NO. | |
941 | /OF SYMBOLS IN OUR NEW TABLE | |
942 | TAD [3777 /O.K...NOW READ IN A SEGMENT | |
943 | AND CNTROL /NOW FORMING READ CONTROL | |
944 | DCA CNTROL | |
945 | TAD [4 /READ SYMBOLS INTO F1 AT LOC.4 | |
946 | DCA CTPTR | |
947 | JMS IOSR /DO THE READ | |
948 | NDPS1, DCA FLDPTR /INITIALLY AT FIELD 0 | |
949 | TAD [6034 | |
950 | DCA I [OUTSW | |
951 | END2, DCA ADDER /ADDER HOLDS THE COUNT OF THE NUMBER | |
952 | /OF REFERENCES TO THE SYMBOLS THUS FAR | |
953 | /EXAMINED. THIS IS COMPARED TO THE AVAILABLE | |
954 | /CORE IN A PARTICULAR FIELD. WHEN THAT OVER- | |
955 | /FLOWS WE HAVE TO EITHER MOVE TO ANOTHER FIELD | |
956 | /FOR THE REFERENCES OR WRITE PART OF THE SYMBOL | |
957 | /TABLE ONTO SYS. | |
958 | TAD (BASTBL | |
959 | TAD FLDPTR | |
960 | DCA TEMP1 /INITIAL BASE OF REFS | |
961 | TAD I TEMP1 | |
962 | DCA BASE | |
963 | TAD FLDPTR /NOW GET MASK FOR QUESTION.. | |
964 | CMA /DOES THIS FIELD HAVE SYMBOLS? | |
965 | DCA COUNT | |
966 | CLL CML | |
967 | RAL | |
968 | ISZ COUNT | |
969 | JMP .-2 | |
970 | DCA MASKF | |
971 | TAD FLDPTR /GET ADDRESS OF UPPER LIMIT | |
972 | TAD (LTTBL /FOR LATER | |
973 | DCA SYMLIM | |
974 | TAD FLDPTR /SET NEW LIMIT IN FIELD 1 | |
975 | TAD [BREAK | |
976 | DCA NUSER /THE NEW LIMIT FOR REFS IS | |
977 | DCA I NUSER /ZERO SYMBOL IN CURRENT FIELD LOC. | |
978 | TAD I SYMLIM | |
979 | FUJ1, TAD CTPTR /IF MORE THAN 2 FIELDS EXIST | |
980 | /THIS BECOMES A NOP. THE LIMIT IN | |
981 | /FIELD 1 IS AT THE BOTTOM OF THE | |
982 | /SYMBOL TABLE | |
983 | DCA LIMIT | |
984 | NDPS2, TAD CTPTR /CTPTR HOLD THE CORE ADDRESS OF THE | |
985 | /THE 4TH LOCATION OF A GIVEN SYMBOL. THIS | |
986 | /IS ALSO THE REFERENCE COUNTER FOR THAT SYMBOL | |
987 | CLL RTR /FORM SYMBOL NUMBER | |
988 | AND [1777 | |
989 | DCA COUNT /SAVE FOR LATER | |
990 | TAD ADDER | |
991 | CIA | |
992 | TAD BASE /NEXT REFERENCE AREA | |
993 | DCA SAVE /IF IT FITS IN THIS AREA | |
994 | /USED WHEN WE MAKE ACTUAL REF ENTRIES | |
995 | CDF 10 | |
996 | TAD I CTPTR /# REFS FOR THIS SYMBOL | |
997 | DCA TEMP | |
998 | TAD [3 | |
999 | TAD CTPTR | |
1000 | DCA CTPTR | |
1001 | TAD TEMP | |
1002 | SPA CLA /PERMANENT SYMBOL | |
1003 | JMP PRMSYM /YES | |
1004 | TAD I CTPTR | |
1005 | AND [3777 /MASK GT 4095 BIT | |
1006 | TAD ADDER | |
1007 | DCA ADDER /SEE IF THIS SYMBOL WILL FIT IN THE | |
1008 | /CURRENT FIELD HOLDING REFS | |
1009 | CDF 10 /MUST ADD UP NEW REFS ALSO | |
1010 | TAD I CTPTR | |
1011 | AND [3777 | |
1012 | CDF 0 | |
1013 | CLL | |
1014 | TAD LIMIT /IF LINK GOES ON, REFS WON'T FIT | |
1015 | SZL | |
1016 | JMP CUTSYM | |
1017 | CMA CLL /WHEN UPPER MEETS LOWER,QUIT | |
1018 | TAD SAVE | |
1019 | SNL CLA | |
1020 | JMP CUTSYM /OK..QUIT! | |
1021 | CDF 10 | |
1022 | TAD SAVE /FITS..PUT IN BASE WHERE THIS SYMBOL'S | |
1023 | /REFS BEGIN | |
1024 | DCA I CTPTR | |
1025 | ISZ ADDER | |
1026 | ISZ ADDER /2 EXTRA FOR BOOKKEEPING | |
1027 | PRMSYM, CDF 0 | |
1028 | TAD COUNT /SYMBOL NUMBER..REMEMBER? | |
1029 | DCA I NUSER | |
1030 | TAD SYMFLD /BUT..IF THIS FIELD HAS SYMBOLS, | |
1031 | AND MASKF /LET'S REDUCE HIS AVAILABLE SPACE | |
1032 | SNA CLA | |
1033 | JMP .+4 /NO SYMBOLS | |
1034 | TAD [4 | |
1035 | TAD LIMIT | |
1036 | DCA LIMIT | |
1037 | TAD COUNT /SEE IF WE ARE DONE | |
1038 | CMA | |
1039 | TAD USER+1 | |
1040 | SNA | |
1041 | JMP I (DONE /YES!! PROBABLY FORGOT SOMETHING | |
1042 | DCA SYSM /BECOMES # SYMBOLS TO WRITE OUT IN CASE | |
1043 | /WE RUN OUT OF ROOM | |
1044 | ISZ CTPTR | |
1045 | JMP NDPS2 /CYCLE FOR NEXT SYMBOL | |
1046 | \f | |
1047 | CUTSYM, CLA | |
1048 | ISZ FLDPTR /GO TO ANOTHER FIELD | |
1049 | TAD FLDPTR /DOES IT EXIST? | |
1050 | CLL | |
1051 | TAD MAXFLD | |
1052 | SNL CLA | |
1053 | JMP END3 /YES..GROOVY | |
1054 | TAD SYSM /NOPE..HAVE TO WRITE REMAINDER OUT | |
1055 | CLL RAL /CONVER TO PAGES | |
1056 | AND (3700 /FORM CONTROL WORD FOR WRITE | |
1057 | TAD [4110 | |
1058 | DCA CNTROL | |
1059 | JMS I (SUB3 /RESET CTPTR | |
1060 | TAD I NUSER | |
1061 | IAC /FUDGE LAST ENTRY IN TABLE | |
1062 | DCA USER+1 /NEW END OF TABLE | |
1063 | JMS IOSR /WRITE THE SEGMENT | |
1064 | CDF 10 /PUT A 7777 AT END OF CURRENT SEG. | |
1065 | CLA CMA | |
1066 | DCA I CTPTR | |
1067 | CDF 0 | |
1068 | JMP I (DONE+1 /NOT DONE YET!! | |
1069 | ||
1070 | END3, JMS I (SUB3 | |
1071 | JMP END2 /AND RESUME THY WORK!! | |
1072 | NUSER, 0 | |
1073 | LIMIT, 0 | |
1074 | \f\f *1600 | |
1075 | ||
1076 | /PASSN2 IS ENTERED WHEN WE HAVE COLLECTED SOME SORT OF A | |
1077 | /SYMBOL AND IT IS NOT PASS ONE. WE HAVE TO MAKE SURE IT | |
1078 | /IS A USER SYMBOL OR LITERAL. IF IT IS, WE HAVE TO ENTER | |
1079 | /THE SEQUENCE # IN THE AREA SET UP FOR REFERENCES TO THIS | |
1080 | /SYMBOL. ALSO, IF THE REFERENCE IS A DEFINITION, THE SECOND | |
1081 | /LOCATION IN THE REFERENCE AREA IS LOADED WITH THE SEQUENCE | |
1082 | /NO. OF THE LINE WE ARE DOING. | |
1083 | ||
1084 | PASSN2, JMS I [SYMCHK | |
1085 | USER /IS IT KNOWN TO US? | |
1086 | JMP I [B /NO..BUT IT MIGHT BE IN A SEGMENT EITHER | |
1087 | /ALREADY DONE OR YET TO BE DONE!! | |
1088 | JMS TSTPRM /TEST FOR A PERMANENT SYMBOL | |
1089 | JMP I [B /PERMANENT SYMBOL | |
1090 | /NOTE:SAVE IS SET UP IN TSTPRM TO CONTAIN THE ADDRESS OF THE | |
1091 | /INDEX WORD. WE USE THIS LATER ON | |
1092 | ||
1093 | JMS GETFLD | |
1094 | DCA CDFN /DETERMINE WHAT FIELD THIS SYMBOL HAS ITS | |
1095 | /REFS IN AND FORM A CDF N | |
1096 | TAD CHAR | |
1097 | TAD MCOMMA /IS THIS A DEFINITION? | |
1098 | SZA | |
1099 | TAD MEQ /AN= MAYBE? | |
1100 | SNA CLA | |
1101 | IAC /ONE OR OTHER..MARK AS DEFINITION | |
1102 | DCA DEF | |
1103 | CDF 10 | |
1104 | TAD I SAVE /PICK UP POINTER TO REFERENCE AREA | |
1105 | DCA SAVE | |
1106 | TAD CDFN | |
1107 | DCA .+1 | |
1108 | HLT /I HATED TO DO THIS!!! | |
1109 | TAD I SAVE | |
1110 | SPA CLA /IF THIS IS NEGATIVE, IT MEANS THAT THE | |
1111 | /SEQUENCE NUMBER HAS WRAPPED AROUND, BUT WE HAVE | |
1112 | /ALREADY MADE A 0 ENTRY TO SHOW THAT | |
1113 | JMP P2 | |
1114 | TAD CONST /HAS THE SEQUENCE # WRAPPED? | |
1115 | SNA CLA | |
1116 | JMP P2 /NOT YET | |
1117 | JMS REFENT /YES..MAKE A 0 ENTRY | |
1118 | TAD CDFN | |
1119 | DCA .+1 | |
1120 | HLT | |
1121 | TAD I SAVE /MARK AS HAVING A 0 ENTRY | |
1122 | TAD [4000 | |
1123 | DCA I SAVE | |
1124 | P2, CDF 0 | |
1125 | TAD SEQNO /NOW MAKE A REAL ENTRY | |
1126 | JMS REFENT | |
1127 | TAD DEF | |
1128 | SNA CLA /SHOULD WE FILL IN THE DEFINITION LOC? | |
1129 | JMP I [B /NO | |
1130 | CLA CMA | |
1131 | TAD SAVE /YES..POINT TO IT | |
1132 | DCA SAVE | |
1133 | TAD CDFN | |
1134 | DCA .+1 | |
1135 | HLT /THIS IS SLOPPY, BUT SO AM I | |
1136 | TAD SEQNO | |
1137 | CIA | |
1138 | DCA I SAVE | |
1139 | CDFZ, CDF 0 | |
1140 | JMP I [B | |
1141 | DEF, 0 | |
1142 | MEQ, -21 | |
1143 | MCOMMA, -254 | |
1144 | \f | |
1145 | /REFENT, MAKES REFERENCES IN THE SYMBOLS AREA AND BUMPS THE | |
1146 | /FIRST LOCATION TO POINT TO THE NEXT LOC. | |
1147 | ||
1148 | REFENT, 0 | |
1149 | DCA TEMP1 /SAVE SEQNO | |
1150 | CDFN, HLT | |
1151 | TAD I SAVE | |
1152 | AND [3777 /MASK OFF WRAP AROUND BIT | |
1153 | CIA | |
1154 | TAD SAVE /FORM ADDRESS OF THIS REFERENCE | |
1155 | DCA TEMP | |
1156 | TAD TEMP1 | |
1157 | DCA I TEMP | |
1158 | ISZ I SAVE /BUMP POINTER | |
1159 | CDF 0 | |
1160 | JMP I REFENT | |
1161 | ||
1162 | /TSTPRM TESTS THE SYMBOL WE HAVE FOUND FOR BEING A PERMANENT SYMBOL | |
1163 | /PERMANENT SYMBOLS ARE DISTINGUISHED BY HAVING THE 4000 BIT ON. | |
1164 | ||
1165 | TSTPRM, 0 | |
1166 | TAD SYMADD | |
1167 | TAD [3 | |
1168 | DCA SAVE /WE USE THIS ON RETURN!! | |
1169 | CDF 10 | |
1170 | TAD I SYMADD | |
1171 | CDF 0 | |
1172 | SMA CLA /IS IT MINUS? | |
1173 | ISZ TSTPRM | |
1174 | JMP I TSTPRM | |
1175 | ||
1176 | /GETFLD DETERMINES WHAT FIELD A PARTICULAR SYMBOL HAS ITS | |
1177 | /REFS IN. IT DOES IT BY COMPARING THE CURRENT SYMBOLS NUMBER | |
1178 | /WITH THE ENTRIES IN THE BREAK TABLE. | |
1179 | ||
1180 | GETFLD, 0 | |
1181 | DCA FLDPTR | |
1182 | GF1, TAD [BREAK | |
1183 | TAD FLDPTR /GET BREAK TABLE ENTRY | |
1184 | DCA TEMP | |
1185 | TAD I TEMP | |
1186 | CIA | |
1187 | TAD SYMNUM /SYMNUM WAS SET UP WHEN WE FOUND THE SYMBOL | |
1188 | SPA SNA CLA | |
1189 | JMP GF2 /FIRST NEG. VALUE GIVE FLDPTR | |
1190 | ISZ FLDPTR /TRY NEXT | |
1191 | JMP GF1 | |
1192 | GF2, JMS CHDF /FORM THE CDF N | |
1193 | JMP I GETFLD | |
1194 | ||
1195 | CHDF, 0 | |
1196 | TAD FLDPTR | |
1197 | CLL RTL | |
1198 | RAL | |
1199 | TAD CDFZ | |
1200 | JMP I CHDF | |
1201 | ||
1202 | SPACE, 0 /GENERATES AS MANY SPACES AS ARE IN AC | |
1203 | DCA CHDF | |
1204 | TAD [240 | |
1205 | JMS I [OCHAR | |
1206 | ISZ CHDF | |
1207 | JMP SPACE+2 | |
1208 | JMP I SPACE | |
1209 | ||
1210 | CHECK, 0 | |
1211 | TAD I CHECK /SUBROUTINE TO TEST CHAR | |
1212 | CIA /AGAINST PRESCRIBED LIMITS | |
1213 | TAD CHAR | |
1214 | CLL | |
1215 | TAD I CHECK | |
1216 | ISZ CHECK | |
1217 | TAD I CHECK | |
1218 | ISZ CHECK | |
1219 | SNL | |
1220 | SKP CLA /VERY UNESTHETIC..BUT IT WORKS! | |
1221 | SNA CLA | |
1222 | ISZ CHECK | |
1223 | JMP I CHECK | |
1224 | ||
1225 | DONE, ISZ FINI /SET COMPLETION FLAG | |
1226 | JMS I (IOPEN /SET FOR REREAD | |
1227 | JMS I (PTRSET /PREPARE REFERENCE AREAS | |
1228 | DCA SEQNO /BACK TO BASICS | |
1229 | DCA CONST | |
1230 | JMP I (FIRST /READ FIRST RECORDS | |
1231 | \f | |
1232 | *2000 | |
1233 | /DUMP DOES A LITTLE FORMATTING OF THE OUTPUT, AND DUMPS THE | |
1234 | /CROSS REFERENCING TABLE ONTO THE OUTPUT DEVICE. | |
1235 | /ANY FIDDLING WITH THE BUFFERS OR DEVICE HANDLERS WILL HAVE TO | |
1236 | /BE DONE IN DUMP | |
1237 | ||
1238 | ||
1239 | COUNTR=BASE | |
1240 | REFBUF=IOSR | |
1241 | SCHAR=ADDER | |
1242 | ||
1243 | DUMP, CLA CMA | |
1244 | DCA PASSG1 /FORCES ANOTHER PASS AT ENDPAS | |
1245 | DMP7, SKP /V3C | |
1246 | JMP DMP8 /SKIP FIRST-TIME STUFF | |
1247 | ISZ LINES /V3C | |
1248 | ISZ LINES /DIF NO. LINES PER PAGE NOW | |
1249 | JMS I [FORM /FIRST TIME THRU GETS A FORM FEED | |
1250 | DCA DMP7 /FUTURE PASSES DON'T | |
1251 | DMP8, TAD USER+1 | |
1252 | CIA | |
1253 | DCA COUNTR /# SYMBOLS TO PROCESS NOW | |
1254 | TAD [3 | |
1255 | DCA BUFFER /FIRST SYMBOL IS HERE | |
1256 | JMP DMP6 /GET NO. LINES RIGHT FIRST TIME | |
1257 | DMP5, JMS I [CRLF /V3C | |
1258 | DMP, ISZ LNPRPG /IS FORM FEED NEEDED? | |
1259 | SKP /NOT YET | |
1260 | JMS I [FORM | |
1261 | DMP6, TAD [-3 | |
1262 | DCA SYMCNT /2 CHARACTERS PER PASS | |
1263 | DCA CONST /RESET FOR <4096 | |
1264 | TAD M12 | |
1265 | DCA LINENO | |
1266 | NXTDV, ISZ BUFFER | |
1267 | CDF 10 | |
1268 | TAD I BUFFER /PICK UP PACKED WORD | |
1269 | CDF 0 | |
1270 | SPA /PERMANENT SYMBOL? | |
1271 | JMP DPERM /YES | |
1272 | JMS I [DIVIDE /CONVERT 2 CHARS AND PRINT | |
1273 | ISZ SYMCNT | |
1274 | JMP NXTDV+1 | |
1275 | TAD [-4 | |
1276 | JMS I [SPACE /GENERATE(AC) SPACES | |
1277 | TAD BUFFER | |
1278 | CLL RTR /GET SYMBOL NUMBER | |
1279 | AND [1777 | |
1280 | DCA SYMNUM | |
1281 | JMS I (GETFLD | |
1282 | DCA CDFNA /CDF N | |
1283 | CDF 10 | |
1284 | TAD I BUFFER | |
1285 | DCA REFBUF /BASE OF REFS FOR SYMBOL | |
1286 | CDFNA, HLT | |
1287 | TAD I REFBUF /IF THIS IS NEGATIVE, | |
1288 | SPA CLA /WE LEFT A REF FOR A 0 ENTRY | |
1289 | TAD M1 /IN THAT CASE,DON'T INCLUDE THAT ONE AS | |
1290 | TAD [-2 /A REAL ENTRY. | |
1291 | DCA SYMCNT | |
1292 | TAD I REFBUF | |
1293 | AND [3777 /NOW CALCULATE REAL NO. ENTRIES | |
1294 | TAD SYMCNT | |
1295 | CIA | |
1296 | DCA SYMCNT | |
1297 | CLA CMA | |
1298 | TAD REFBUF | |
1299 | DCA REFBUF | |
1300 | TAD I REFBUF /SEQUENCE # OF DEF. | |
1301 | DCA DEFSEQ | |
1302 | DMP2, CLA CMA | |
1303 | TAD REFBUF | |
1304 | DCA REFBUF | |
1305 | TAD CDFNA | |
1306 | DCA .+1 | |
1307 | HLT | |
1308 | TAD I REFBUF /PICK UP A REFERENCE | |
1309 | TAD DEFSEQ /IS THIS THE DEF? | |
1310 | SZA CLA | |
1311 | JMP NODEF | |
1312 | DCA DEFSEQ /ONLY 1 DEF PER LINE | |
1313 | TAD [3 /YES..PRINT # AFTER SEQ # | |
1314 | NODEF, TAD [240 /IF NO, PRINT 2 SPACES | |
1315 | DCA SCHAR | |
1316 | TAD I REFBUF | |
1317 | SZA CLA /IF A 0, ALL FOLLOWING REFS ARE >4095 | |
1318 | JMP .+4 | |
1319 | TAD [140 | |
1320 | DCA CONST | |
1321 | JMP DMP2 /IGNORE ZERO ENTRY!! | |
1322 | TAD I REFBUF | |
1323 | CDF 0 | |
1324 | JMS I (CVTSEQ /WRITE THE DECIMAL SEQUENCE # | |
1325 | TAD SCHAR | |
1326 | JMS I [OCHAR /EITHER # OR SPACE | |
1327 | CLA CMA | |
1328 | JMS I [SPACE | |
1329 | ISZ SYMCNT /MORE TO DO? | |
1330 | JMP DMP0 /NO, BUT IS CR/LF REQUIRED? | |
1331 | GETMOR, ISZ COUNTR /EXHAUSTED ALL SYMBOLS? | |
1332 | JMP DMP5 | |
1333 | TAD FINI /YES..ARE WE ALL DONE | |
1334 | SNA CLA | |
1335 | JMP I [ENDPAS /NO..READ IN NEXT SEGMENT | |
1336 | JMP I (OCLOSE | |
1337 | ||
1338 | DMP0, ISZ LINENO /A CR/LF NEEDED? | |
1339 | JMP DMP2 | |
1340 | TAD M12 | |
1341 | DCA LINENO /RESET ENTRIES PER LINE | |
1342 | JMS I [CRLF /V3C | |
1343 | ISZ LNPRPG /FORM FEED? | |
1344 | SKP | |
1345 | JMS I [FORM | |
1346 | TAD M12 /AND INDENT NEXT LINE | |
1347 | JMS I [SPACE | |
1348 | JMP DMP2 | |
1349 | ||
1350 | DPERM, CLA | |
1351 | TAD [3 /PERMANENT SYMBOL | |
1352 | TAD BUFFER | |
1353 | DCA BUFFER /LOOK AT NEXT | |
1354 | ISZ COUNTR | |
1355 | JMP NXTDV | |
1356 | JMP GETMOR+2 | |
1357 | ||
1358 | FIRST, JMS I (ASHDLR /RESET INPUT FOR READ | |
1359 | JMS I (RDREC /AND READ SOME RECORDS | |
1360 | JMP I (NXTLIN /START READING TEXT | |
1361 | ||
1362 | ||
1363 | DEFSEQ, 0 | |
1364 | LINENO, -12 | |
1365 | PASTST, 0 /SR WHICH DETERMINE IF PASS > 1 | |
1366 | TAD PASSG1 | |
1367 | SPA CLA /IF >0=> PASS >1 | |
1368 | ISZ PASTST | |
1369 | JMP I PASTST | |
1370 | \f *2200 | |
1371 | ||
1372 | /I/O ROUTINES FOR OS/8 | |
1373 | ||
1374 | OUSETP, 0 | |
1375 | TAD (OUCTL&3700 | |
1376 | CIA | |
1377 | DCA OUDWCT /SIZE OF BUFF IN DOUBLEWORDS | |
1378 | TAD XOUBUF | |
1379 | DCA OUPTR /INITIALIZE POINTER | |
1380 | TAD OUJMPE | |
1381 | DCA OUJMP /RESET 3 WAY SWITCH | |
1382 | JMP I OUSETP | |
1383 | ||
1384 | OCHAR, 0 | |
1385 | AND (377 /CALLED WITH CHARACTER IN AC | |
1386 | DCA OUTEMP | |
1387 | JMS I [PASTST | |
1388 | JMP I OCHAR | |
1389 | OUTSW, KRS /TEST FOR ^C WITH FLAG OR | |
1390 | /JMP I OCHAR IF /P,/U OR PASS 2 /M | |
1391 | TAD (-203 | |
1392 | SNA CLA | |
1393 | KSF | |
1394 | JMP .+2 | |
1395 | JMP I [7600 /SAVE CORE FOR SOME REASON | |
1396 | ISZ OUJMP /BUMP 3 WAY SWITCH | |
1397 | OUJMP, HLT | |
1398 | JMP OCHAR1 | |
1399 | JMP OCHAR2 | |
1400 | OCHAR3, TAD OUTEMP /PICK UP CHARACTER | |
1401 | CLL RTL | |
1402 | RTL | |
1403 | AND (7400 /3RD WORD MERGED INTO 2 BUFFER WORDS | |
1404 | TAD I OUPOLD | |
1405 | DCA I OUPOLD | |
1406 | TAD OUTEMP | |
1407 | CLL RTR | |
1408 | RTR | |
1409 | RAR | |
1410 | AND (7400 | |
1411 | TAD I OUPTR | |
1412 | DCA I OUPTR | |
1413 | TAD OUJMPE | |
1414 | DCA OUJMP /RESET FOR NEW SET OF 3 CHARS | |
1415 | ISZ OUPTR /BUMP BUFFER POINTER | |
1416 | ||
1417 | ISZ OUDWCT | |
1418 | JMP OUCOMN | |
1419 | TAD OUCT /YEP | |
1420 | JMS OUTDMP /WRITE IT | |
1421 | JMS OUSETP /RESET OUT BUFFER | |
1422 | JMP I OCHAR | |
1423 | OCHAR2, TAD OUPTR | |
1424 | DCA OUPOLD /FOR LATER | |
1425 | ISZ OUPTR /SECOND WORD GOES HERE | |
1426 | OCHAR1, TAD OUTEMP | |
1427 | DCA I OUPTR | |
1428 | OUCOMN, JMP I OCHAR | |
1429 | ||
1430 | ||
1431 | OUTEMP, 0 /TEMP STORE | |
1432 | OUPOLD, 0 /HOLDS OLD POINTER | |
1433 | OUPTR, 0 | |
1434 | OUJMPE, JMP OUJMP | |
1435 | OUDWCT, 0 | |
1436 | OUCT, OUCTL | |
1437 | \f | |
1438 | ||
1439 | OOPEN, 0 /OPEN AN OUTPUT FILE;FETCH HANDLER | |
1440 | TAD (OFILE | |
1441 | DCA OUBLK /POINT TO FILE NAME | |
1442 | TAD XOUDEV | |
1443 | DCA OUHNDL /LEAVE ROOM FOR 2 PAGE HANDLER | |
1444 | CDF 10 | |
1445 | TAD I [7600 /OUTPUT DEVICE # | |
1446 | CDF 0 | |
1447 | CIF 10 | |
1448 | JMS I USR /ASSIGN,FETCH HANDLER | |
1449 | 1 | |
1450 | OUHNDL, HLT /GETS ENTRY POINT OF HANDLER | |
1451 | JMP HIOERR /HANDLER FAILURE | |
1452 | OUENTR, JMS I (P2ADJ | |
1453 | CDF 10 | |
1454 | TAD I [7600 | |
1455 | CDF 0 | |
1456 | CIF 10 | |
1457 | JMS I USR | |
1458 | 3 /ENTER OUTPUT FILE | |
1459 | OUBLK, OFILE | |
1460 | OUELEN, 0 /RETURNS WITH LENGTH OF HOLE | |
1461 | JMP OEFAIL | |
1462 | MP2, DCA I (OUCCNT | |
1463 | TAD OUBLK /STARTING RECORD | |
1464 | DCA OUREC | |
1465 | JMS OUSETP /SETUP OUTPUT AREA | |
1466 | JMP I OOPEN | |
1467 | XOUDEV, 4001 /MAY BE ALTERED | |
1468 | ||
1469 | OEFAIL, CDF 10 | |
1470 | TAD I [7600 | |
1471 | AND (7760 /GET LENGTH PART | |
1472 | SNA CLA /WAS IT 0? | |
1473 | JMP ERR3 /YEP..HE LOSES | |
1474 | TAD I [7600 | |
1475 | AND [17 /TRY WITH INDETERMINATE LENGTH | |
1476 | DCA I [7600 | |
1477 | JMP OUENTR | |
1478 | ||
1479 | OUTDMP, 0 /WRITE ACTUAL OUTPUT | |
1480 | DCA OUCTLW | |
1481 | JMS I (OUNREC /FIGURE # RECS TO WRITE | |
1482 | TAD I (OUCCNT | |
1483 | DCA I (OUCCNT /UPDATE CLOSE LENGTH | |
1484 | TAD I (OUCCNT | |
1485 | CLL CML | |
1486 | TAD OUELEN /ROOM FOR THIS WRITE? | |
1487 | SNL CLA | |
1488 | JMP ERR4 /HE LOSES | |
1489 | JMS I OUHNDL /NJ WRITE IT | |
1490 | OUCTLW, 0 | |
1491 | XOUBUF, OUBUF | |
1492 | OUREC, 0 | |
1493 | JMP HIOERR /A HANDLER BADNESS | |
1494 | JMS I (OUNREC | |
1495 | TAD OUREC /UPDATE OUTPUT RECORD # | |
1496 | DCA OUREC | |
1497 | JMP I OUTDMP | |
1498 | ||
1499 | ERR4, JMS I [ERROR | |
1500 | FULERR | |
1501 | ERR3, JMS I [ERROR | |
1502 | ENTERR | |
1503 | \f | |
1504 | *2400 | |
1505 | OCLOSE, TAD HCREF | |
1506 | SZA CLA /IF NOT LAST PASS | |
1507 | JMP NOVERS /NO NEED FOR VERSION NO. | |
1508 | JMS CRLF | |
1509 | TAD ("V-300^R+VERSN-"0+40 | |
1510 | JMS I [DIVIDE | |
1511 | TAD (PATCHL /PATCH NO.-ON PAGE | |
1512 | JMS I [OCHAR | |
1513 | JMS CRLF | |
1514 | JMS FORM /V3C | |
1515 | NOVERS, | |
1516 | TAD HCREF | |
1517 | SNA CLA /IF /M PASS 1 | |
1518 | TAD (232 | |
1519 | JMS I [OCHAR /NO 232 | |
1520 | JMS I [OCHAR | |
1521 | FILLIP, JMS I [OCHAR /FILL WITH 0'S | |
1522 | TAD (177 | |
1523 | AND I (OUDWCT | |
1524 | SZA CLA /TO BOUNDARY YET? | |
1525 | JMP FILLIP /NO..KEEP FILLING | |
1526 | TAD I (OUDWCT | |
1527 | TAD (OUCTL&3700 | |
1528 | SNA /FULL WRITE LEFT? | |
1529 | JMP NODUMP /YES..BUT ^Z IS OUT | |
1530 | TAD (4000+OUFLD /FORM WRITE | |
1531 | JMS I (OUTDMP | |
1532 | NODUMP, CIF 10 | |
1533 | JMS I USR | |
1534 | 10 /LOCK IN MONITOR | |
1535 | TAD I (OUREC | |
1536 | CDF 10 | |
1537 | DCA I OUSAVX | |
1538 | CDF 0 | |
1539 | TAD I (OUELEN | |
1540 | CDF 10 | |
1541 | DCA I OUSAVX | |
1542 | TAD LNPRPG | |
1543 | DCA I OUSAVX | |
1544 | TAD OUCCNT | |
1545 | DCA I OUSAVX | |
1546 | TAD I [7600 | |
1547 | CDF 0 | |
1548 | ISZ HCREF | |
1549 | JMP NOD1 | |
1550 | CIF 10 | |
1551 | JMS I [200 | |
1552 | 6 | |
1553 | BLK, 0 | |
1554 | 0 | |
1555 | NOD1, CIF 10 | |
1556 | JMS I [200 | |
1557 | 4 /CLOSE OUTPUT FILE | |
1558 | OFILE /POINTER TO FILE NAME | |
1559 | OUCCNT, 0 /CLOSING LENGTH | |
1560 | JMP ERR5 /SORRY | |
1561 | /FOR LONG FILES(/M), IT WILL CHAIN TO ITSELF ON FIRST PASS. | |
1562 | /ON SECOND PASS,IT WILL DELETE FILE CREFTM.LS(IF NO E) | |
1563 | ISZ SLSWH /DELETE TEMP FILE SWITCH | |
1564 | JMP ALDONE | |
1565 | CLA IAC /SYS | |
1566 | CDF 0 | |
1567 | CIF 10 | |
1568 | JMS I [200 | |
1569 | 4 /DELETE CREFLS.TM | |
1570 | CHANNM | |
1571 | 0 | |
1572 | CLA | |
1573 | ALDONE, JMP I [7605 | |
1574 | HCREF, 0 | |
1575 | SLSWH, 0 | |
1576 | ||
1577 | ERR5, JMS I [ERROR | |
1578 | CLSERR | |
1579 | ERR6, JMS I [ERROR | |
1580 | INPERR | |
1581 | ||
1582 | ||
1583 | OFILE, ZBLOCK 4 /OUTPUT FILE NAME GOES HERE | |
1584 | ||
1585 | FORM, 0 /GENERATE 214 IF NOT TTY | |
1586 | JMS I [PASTST /IF PASS>1, NO FORM FEED | |
1587 | JMP I FORM | |
1588 | TAD TTYSWT | |
1589 | SZA CLA | |
1590 | JMP FORM2 | |
1591 | TAD LNPRPG /FILL TO END OF PAGE | |
1592 | SNA /IF 0, GENERATE 8 LINE FEEDS | |
1593 | TAD [-4 | |
1594 | DCA COUNT | |
1595 | JMS CRLF | |
1596 | ISZ COUNT | |
1597 | JMP CRLF1 /HA! GENERATE EXTRA LINE FEED!! | |
1598 | TAD [-6 | |
1599 | DCA COUNT | |
1600 | TAD ("- /GENERATE ------ | |
1601 | JMS I [OCHAR | |
1602 | ISZ COUNT | |
1603 | JMP .-3 | |
1604 | TAD [-4 | |
1605 | DCA COUNT | |
1606 | FORM3, JMS CRLF | |
1607 | ISZ COUNT | |
1608 | JMP CRLF1 | |
1609 | TAD LINES /V3C | |
1610 | NOP | |
1611 | DCA LNPRPG /RESET TO TOP OF PAGE | |
1612 | JMP I FORM | |
1613 | ||
1614 | FORM2, CLA CMA | |
1615 | DCA COUNT | |
1616 | CMA | |
1617 | JMP FORM3 /USE [215 TO GENERATE A 214 | |
1618 | ||
1619 | CRLF, 0 /GENERATE CRRIAGE RET AND LINE FEED | |
1620 | TAD [215 | |
1621 | JMS I [OCHAR | |
1622 | CRLF1, TAD [212 | |
1623 | JMS I [OCHAR | |
1624 | JMP I CRLF | |
1625 | ||
1626 | TTYSWT, 0 | |
1627 | ||
1628 | \f | |
1629 | *2600 | |
1630 | IOPEN, 0 | |
1631 | CLA CMA | |
1632 | DCA INCHCT /FORCE READ OF NEW FILE | |
1633 | ISZ INEOF | |
1634 | TAD (7617 | |
1635 | DCA INFPTR | |
1636 | JMP I IOPEN | |
1637 | ||
1638 | INPTR, INBUF | |
1639 | ||
1640 | ICHAR, 0 | |
1641 | INCHAR, ISZ INJMP /PACKING SWITCH | |
1642 | ISZ INCHCT /BUFFER EXHAUSTED? | |
1643 | INJMPP, JMP INJMP /NOPE | |
1644 | TAD INEOF /WAS LAST AN EOF? | |
1645 | SNA CLA | |
1646 | JMP INGBUF /NO..GET NEXT INPUT | |
1647 | CDF 10 | |
1648 | TAD I INFPTR | |
1649 | CDF 0 | |
1650 | SNA CLA /MORE INPUT? | |
1651 | JMP I ICHAR /NO..EOF RETURN | |
1652 | ||
1653 | JMS ASHDLR /SET UP STRT RECORD | |
1654 | INGBUF, JMS RDREC /AND READ SOME RECORDS | |
1655 | JMP INCHAR | |
1656 | /THIS IS DONE TO OPTIMIZE THE DECTAPE | |
1657 | /ROCKING. INITIALIZATION DOES THESE | |
1658 | /THE FIRST TIME. | |
1659 | ||
1660 | ||
1661 | INJMP, JMP . /3 WAY SWITCH | |
1662 | JMP ICHAR1 | |
1663 | JMP ICHAR2 | |
1664 | ICHAR3, TAD INJMPP | |
1665 | DCA INJMP | |
1666 | TAD I INPTR | |
1667 | AND (7400 /CONTENTS OF BUFFER | |
1668 | CLL RTR | |
1669 | RTR | |
1670 | TAD INCTLW | |
1671 | RTR | |
1672 | RTR /GETS THIRD WORD FROM 1 AND 2 | |
1673 | ISZ INPTR /NEXT BUFFER LOC | |
1674 | JMP INCOMN | |
1675 | ICHAR2, TAD I INPTR | |
1676 | AND (7400 | |
1677 | DCA INCTLW /TEMP SAVE | |
1678 | ISZ INPTR | |
1679 | ICHAR1, TAD I INPTR | |
1680 | INCOMN, AND (177 /PARITY TEST | |
1681 | SNA /IF 200 CODE..IGNORE IT | |
1682 | JMP INCHAR | |
1683 | TAD [200 | |
1684 | TAD (-232 /IS IT ^Z? | |
1685 | SNA | |
1686 | JMP I ICHAR /YES..NOMMORE!! | |
1687 | TAD (232 | |
1688 | ISZ ICHAR /SKIP EOF RETURN | |
1689 | DCA CHAR | |
1690 | JMP I ICHAR | |
1691 | INCHCT, 0 | |
1692 | INFPTR, 7617 | |
1693 | INEOF, 0 | |
1694 | INCTR, 0 | |
1695 | INHAND, 0 | |
1696 | ||
1697 | ASHDLR, 0 | |
1698 | ||
1699 | CDF 10 | |
1700 | TAD I INFPTR | |
1701 | AND (7760 /LENGTH PART OF WORD | |
1702 | SZA /0 IMPLIES .GTE. 256 | |
1703 | TAD [17 | |
1704 | CLL CML RTR | |
1705 | RTR | |
1706 | DCA INCTR | |
1707 | ISZ INFPTR /BUMP TO NEXT | |
1708 | TAD I INFPTR /GET STARTING RECORD | |
1709 | DCA INREC | |
1710 | ISZ INFPTR | |
1711 | DCA INEOF | |
1712 | CDF 0 | |
1713 | JMP I ASHDLR | |
1714 | XINREC, 2 /DEFAULT CONDITIONS | |
1715 | XINCL1, 401 | |
1716 | ||
1717 | RDREC, 0 | |
1718 | TAD INCTR | |
1719 | CLL | |
1720 | TAD XINRECS /LINK ON IF OVERFLOW AND LAST READ | |
1721 | SNL | |
1722 | DCA INCTR /UPDATE IF NO OVERFLOW | |
1723 | SZL | |
1724 | ISZ INEOF | |
1725 | CLL CML CMA RTR /CONTROL WORD FROM OVERFLOW | |
1726 | RTR | |
1727 | RTR | |
1728 | TAD XINCL1 | |
1729 | DCA INCTLW | |
1730 | CDF 0 | |
1731 | JMS I INHAND | |
1732 | INCTLW, 0 | |
1733 | INBUFP, INBUF | |
1734 | INREC, 0 | |
1735 | JMP INERRX /FATAL OR EOF | |
1736 | INBREC, TAD INREC | |
1737 | TAD XINREC | |
1738 | DCA INREC /UPDATE # READ | |
1739 | TAD INCTLW | |
1740 | AND [7600 | |
1741 | CLL RAL | |
1742 | TAD INCTLW | |
1743 | AND [7600 | |
1744 | CMA | |
1745 | DCA INCHCT /NEW CHARACTER COUNT | |
1746 | TAD INJMPP | |
1747 | DCA INJMP | |
1748 | TAD INBUFP | |
1749 | DCA INPTR | |
1750 | JMP I RDREC | |
1751 | ||
1752 | INERRX, ISZ INEOF /FATAL OR EOF | |
1753 | SMA CLA | |
1754 | JMP INBREC /EOF..NEXT FILE | |
1755 | JMS I [ERROR | |
1756 | INPERR | |
1757 | ||
1758 | TTYPRT, 0 /SIMPLE TTY OUTPUT ROUTINE | |
1759 | TLS | |
1760 | TSF | |
1761 | JMP .-1 | |
1762 | CLA | |
1763 | JMP I TTYPRT | |
1764 | ||
1765 | ||
1766 | *3000 | |
1767 | HNDERR, "H-300^R+"A-300 /HANDLER FAIL | |
1768 | "N-300^R+"D-300 | |
1769 | "L-300^R+"E-300 | |
1770 | "R-300^R | |
1771 | "F-300^R+"A-300 | |
1772 | "I-300^R+"L-300 | |
1773 | ||
1774 | SYMERR, "S-300^R+"Y-300 | |
1775 | "M-300^R | |
1776 | "O-300^R+"V-300 | |
1777 | "E-300^R+"R-300 | |
1778 | "F-300^R+"L-300 | |
1779 | "O-300^R+"W-300 | |
1780 | ||
1781 | LPTERR, "D-300^R+"E-300 /DEV LPT BAD | |
1782 | "V-300^R | |
1783 | "L-300^R+"P-300 | |
1784 | "T-300^R | |
1785 | "B-300^R+"A-300 | |
1786 | "D-300^R | |
1787 | ||
1788 | ENTERR, "E-300^R+"N-300 | |
1789 | "T-300^R+"E-300 | |
1790 | "R-300^R | |
1791 | "F-300^R+"A-300 | |
1792 | "I-300^R+"L-300 | |
1793 | "E-300^R+"D-300 | |
1794 | ||
1795 | FULERR, "O-300^R+"U-300 | |
1796 | "T-300^R | |
1797 | "D-300^R+"E-300 | |
1798 | "V-300^R | |
1799 | "F-300^R+"U-300 | |
1800 | "L-300^R+"L-300 | |
1801 | ||
1802 | CLSERR, "C-300^R+"L-300 | |
1803 | "O-300^R+"S-300 | |
1804 | "E-300^R | |
1805 | "F-300^R+"A-300 | |
1806 | "I-300^R+"L-300 | |
1807 | "E-300^R+"D-300 | |
1808 | ||
1809 | INPERR, "I-300^R+"N-300 | |
1810 | "P-300^R+"U-300 | |
1811 | "T-300^R | |
1812 | "E-300^R+"R-300 | |
1813 | "R-300^R+"O-300 | |
1814 | "R-300^R | |
1815 | ||
1816 | REFERR, 2664 /2045 REFS | |
1817 | 3015 | |
1818 | "R-300 | |
1819 | "E-300^R+"F-300 | |
1820 | "S-300^R | |
1821 | 0 | |
1822 | ||
1823 | /LITERAL PROCESSORS. LITERALS ARE HANDLED ACCORDING TO THEIR | |
1824 | /BINARY DEFINITION. A CURRENT PAGE LITERAL AT,SAY, 0377 WILL | |
1825 | /BE CALLED _L0377. A PAGE ZERO LITERAL AT LOCATION 0100 WILL | |
1826 | /BE CALLED _L0100 | |
1827 | /IF ASSEMBLED WITH NEW PAL8, LITERAL INCLUDES FIELD | |
1828 | /SO 00377 IS _00377, 10377 IS _10377 | |
1829 | ||
1830 | LIT2, TAD (2540 /PAGE 0..FIRST NUMBER ALWAYS 0 | |
1831 | DCA SYM2 /_L GOES IN SYM1 FOR BOTH | |
1832 | JMS LCHK | |
1833 | ISZ ISYM | |
1834 | ISZ ISYM /POINT TO SYM3 FOR LAST 2 DIGITS | |
1835 | JMP LIT3 /COMMON CODE | |
1836 | LIT1, JMS LCHK | |
1837 | ISZ ISYM /POINT TO SECOND WORD | |
1838 | TAD I XRLIT /FIRST BINARY DIGIT | |
1839 | JMS I [PACK | |
1840 | TAD I XRLIT | |
1841 | AND (266 /THIS KNOCKS OFF RELATIVE ADDRESS BIT | |
1842 | JMS I [PACK /GOES INTO RIGHT HALF OF SYM2 | |
1843 | LIT3, TAD DSWIT /IF /D, DON'T CREF LITERALS | |
1844 | SZA CLA | |
1845 | JMP LITEX /DON'T DO ANYTHING BUT CLEAR COUNTERS | |
1846 | TAD (LITBUF+1 /NOW PICK UP RELATIVE ADD BIT FROM INSTRUCT. | |
1847 | DCA XRLIT | |
1848 | TAD I XRLIT | |
1849 | AND (1 | |
1850 | TAD SYM2 | |
1851 | DCA SYM2 /FORMING ADDRESS OF LITERAL! | |
1852 | TAD I XRLIT | |
1853 | JMS I [PACK | |
1854 | TAD I XRLIT | |
1855 | JMS I [PACK /LOAD UP SYM3 | |
1856 | TAD ENDFIX /WILL PRINT FIELD WITH LIT IF NEW PAL8 | |
1857 | AND (57 | |
1858 | TAD [2426 | |
1859 | DCA SYM1 /PUT IN _ (NEGATIVE!) | |
1860 | JMS I (REPACK | |
1861 | ||
1862 | JMP I XUSSYM /DO THE BOOKKEEPING | |
1863 | LITEX, JMS I (REPACK | |
1864 | JMP I [B | |
1865 | XUSSYM, USSYM /WILL BE CHANGED TO PATCH IF /L | |
1866 | LCHK, 0 | |
1867 | TAD MARGIN | |
1868 | DCA XRLIT | |
1869 | TAD I XRLIT | |
1870 | DCA ENDFIX | |
1871 | TAD ENDFIX | |
1872 | TAD (-240 | |
1873 | SNA CLA | |
1874 | JMP LITEX | |
1875 | JMP I LCHK | |
1876 | ||
1877 | GLIN5, TAD CRCNT | |
1878 | SNA CLA | |
1879 | JMP CROUT /NEED THIS CR | |
1880 | ISZ CRCNT | |
1881 | JMP CROUT /NEED CR AFTER HEADER | |
1882 | JMP I (GETLIN | |
1883 | CROUT, TAD [212 | |
1884 | JMS I FPUT | |
1885 | TAD MARGIN | |
1886 | DCA XRLINE | |
1887 | JMP I (GLIN6 | |
1888 | CRCNT, 0 | |
1889 | CHANNM, FILENAME CREFLS.TM | |
1890 | ENDFIX, 0 /TEMP ALSO | |
1891 | JMS I (DOLOT2 | |
1892 | DCA .-1 /ONCE ONLY | |
1893 | TAD SYSM | |
1894 | SNA | |
1895 | JMP I (NDPS1 | |
1896 | JMP I ENDFIX | |
1897 | \f *3200 | |
1898 | OUNREC, 0 /ESTIMATE # RECS | |
1899 | TAD I XOCTLW | |
1900 | CLL RTL | |
1901 | RTL | |
1902 | RTL /ITS NOT AN ESTIMATE, BUT EXACT!! | |
1903 | AND [17 | |
1904 | JMP I OUNREC | |
1905 | XOCTLW, OUCTLW | |
1906 | ||
1907 | DIVIDE, 0 | |
1908 | DCA DIV45B | |
1909 | DCA DIV45C | |
1910 | JMP DIV45D /START UP HERE | |
1911 | ||
1912 | DIV45A, ISZ DIV45C /BUMP THE QUOTIENT | |
1913 | DCA DIV45B /NEW DIVIDEND | |
1914 | DIV45D, TAD DIV45B | |
1915 | TAD (-52 /DIVIDE BY 52 | |
1916 | SMA | |
1917 | JMP DIV45A /STILL +; KEEP LOOPING | |
1918 | TAD (52 /REMAINDER IN AC AFTER ADD | |
1919 | JMS I (DIVE /LETTER OR NUMBER? | |
1920 | DCA DIV45B | |
1921 | TAD DIV45C | |
1922 | JMS I (DIVE | |
1923 | JMS I [OCHAR | |
1924 | TAD DIV45B | |
1925 | JMS I [OCHAR | |
1926 | ISZ BUFFER | |
1927 | JMP I DIVIDE | |
1928 | ||
1929 | ||
1930 | DIV45B, 0 | |
1931 | DIV45C, 0 | |
1932 | ||
1933 | \fGETLIN, 0 /GET A LINE OF INPUT AND STORE | |
1934 | TAD MARGIN /IT AT LINBUF | |
1935 | DCA XRLINE | |
1936 | INLINE, JMS I (ICHAR | |
1937 | JMP EN | |
1938 | TAD RLSKIP /IF RALF HEADER,ELIM 2 LF | |
1939 | SNA CLA | |
1940 | JMP REGULR /NOT RALF | |
1941 | ISZ RLSKIP /CATCH 2ND LINE | |
1942 | JMP INLINE | |
1943 | TAD [7776 /ELIM EXTRA CR AFTER HEADER | |
1944 | DCA I (CRCNT | |
1945 | REGULR, TAD CHAR /LINE FEED TERMINATES THIS ROUTINE | |
1946 | TAD MLF | |
1947 | SNA | |
1948 | JMP INLINE /IGNORE LF'S ON INPUT | |
1949 | TAD [212-215 /LF-CR | |
1950 | SNA CLA | |
1951 | JMP GLIN3 | |
1952 | TAD XRLINE | |
1953 | TAD (-375 | |
1954 | SMA CLA | |
1955 | JMP .+3 | |
1956 | TAD CHAR | |
1957 | JMS I FPUT | |
1958 | TAD CHAR | |
1959 | TAD [-214 | |
1960 | SZA CLA | |
1961 | JMP INLINE | |
1962 | GLIN3, TAD [215 | |
1963 | JMS I FPUT | |
1964 | GLIN4, JMP I (GLIN5 | |
1965 | GLIN6, TAD [200 /TEST FOR ^C | |
1966 | KRS | |
1967 | TAD (-203 | |
1968 | SNA CLA | |
1969 | KSF | |
1970 | JMP I GETLIN | |
1971 | JMP I [7605 /FOUND ^C | |
1972 | RLSKIP, 0 | |
1973 | ||
1974 | ALLOCT, 0 | |
1975 | JMS I (DEVCHK | |
1976 | 7617 /CHECK INPUT DEVICE | |
1977 | SPA CLA | |
1978 | IAC /2 PAGE HANDLER | |
1979 | DCA BUFCNT | |
1980 | JMS I (DEVCHK | |
1981 | 7600 /CHECK SIZE OF OUTPUT DEV HANDLER | |
1982 | SPA CLA | |
1983 | TAD [2 /2 PAGES | |
1984 | TAD BUFCNT | |
1985 | DCA BUFCNT | |
1986 | CLL | |
1987 | TAD BUFCNT | |
1988 | RAR | |
1989 | CLA | |
1990 | SZL CLL /IF 1 OR 3,IN DEV IS 2 PGS | |
1991 | TAD [200 | |
1992 | TAD (3601 | |
1993 | DCA I (XOUDEV | |
1994 | TAD [-2 | |
1995 | TAD BUFCNT | |
1996 | SMA SZA CLA | |
1997 | JMP I ALLOCT /2 2PAGERS IS DEFAULT | |
1998 | TAD (4200 /IF NOT 2 2PAGERS,INBUF AT 4200 | |
1999 | DCA I (INBUFP | |
2000 | TAD I (INBUFP | |
2001 | DCA I (INPTR | |
2002 | TAD [3 | |
2003 | DCA I (XINREC | |
2004 | TAD (601 | |
2005 | DCA I (XINCL1 | |
2006 | JMP I ALLOCT | |
2007 | BUFCNT, 0 | |
2008 | CLEAR, 0 /ROUTINE TO CLEAN OUT OLD SYMBOL | |
2009 | DCA SYM1 | |
2010 | DCA SYM2 | |
2011 | DCA SYM3 | |
2012 | JMP I CLEAR | |
2013 | ||
2014 | EN, JMS DPAT /V3D | |
2015 | JMP I [ENDPAS | |
2016 | \f | |
2017 | ||
2018 | /THIS INITIALIZATION CODE IS DESTROYED WHEN DATA IS READ | |
2019 | /INTO THE BUFFER. FOR THAT REASON, CREF IS NOT RESTARTABLE | |
2020 | ||
2021 | *4200 | |
2022 | ST1, CDF 0 | |
2023 | KLUD, CIF 10 | |
2024 | JMS I USR | |
2025 | 5 | |
2026 | 1423 /DEFAULT EXTENSION IS .LS | |
2027 | CHAIN, CDF 10 | |
2028 | TAD I (7617 /IF NO INPUT, RESTART CD | |
2029 | SNA CLA | |
2030 | JMP ST1 | |
2031 | TAD I [7600 /IF NO OUTPUT, GIVE HIM LPT!! | |
2032 | SZA CLA | |
2033 | JMP ST2 | |
2034 | CDF 0 | |
2035 | CIF 10 | |
2036 | JMS I [200 | |
2037 | 12 /ASSIGN-NO FETCH | |
2038 | 1420 | |
2039 | DEVS, 2400 | |
2040 | 0 | |
2041 | JMP ERRTWO /DEFAULT DEVICE IS BAD | |
2042 | TAD DEVS | |
2043 | CDF 10 | |
2044 | DCA I [7600 | |
2045 | ST2, CDF 0 | |
2046 | JMS I (SWITCH | |
2047 | CDF 10 | |
2048 | TAD I OUSAVX | |
2049 | CDF 0 | |
2050 | DCA PASS2 | |
2051 | BLUE0, TAD [-4 | |
2052 | DCA COUNT | |
2053 | BLUE, CDF 10 | |
2054 | TAD I XNAME | |
2055 | CDF 0 | |
2056 | DCA I (OFILE | |
2057 | ISZ XNAME | |
2058 | ISZ (OFILE | |
2059 | ISZ COUNT | |
2060 | JMP BLUE | |
2061 | JMS I (ALLOCT | |
2062 | JMS I (OTYPE | |
2063 | AND (770 /CHECK FOR TTY AS OUTPUT (CAN CLA IF DEBUGGING) | |
2064 | DCA I (TTYSWT | |
2065 | TAD I (TTYSWT /IF LPT IS OUTPUT, | |
2066 | SZA CLA /NO INTERNAL FORM FEEDS GENERATED | |
2067 | DCA I (NOFORM | |
2068 | ||
2069 | ||
2070 | ||
2071 | /NOW WE MOVE UP THE PERMANENT AND PSEUDO-OP TABLES. | |
2072 | /THE Y WERE ASSEMBLED IN FIELD 0 TO SAVE DECTAPE MOTION | |
2073 | /WHEN LOADING. | |
2074 | JMS I (FTEST /GET MACHINE SIZE | |
2075 | TAD MAXFLD | |
2076 | CIA | |
2077 | DCA MAXFLD /- NO.FIELDS | |
2078 | CDF 10 /ASSIGN THE INPUT HANDLER | |
2079 | TAD I (7617 | |
2080 | CDF 0 | |
2081 | CIF 10 | |
2082 | JMS I USR | |
2083 | 1 | |
2084 | INHNDL, INDEVH+1 | |
2085 | HLT /YECH!!! | |
2086 | TAD INHNDL | |
2087 | DCA I (INHAND /SETUP ENTRY POINT | |
2088 | JMS I (ASHDLR /SET UP FIRST READ | |
2089 | TAD (7700 | |
2090 | DCA USR /SAVE SYMBOL TABLE | |
2091 | TAD I (7746 | |
2092 | AND KLUD | |
2093 | TAD [1000 /MARK NOT RESTARTABLE | |
2094 | DCA I (7746 /SAVE CORE BIT | |
2095 | TAD I XRLINE | |
2096 | DCA COUNT /INITIAL LOAD PROVIDES PARAMETERS FOR | |
2097 | /THE SYMBOL TABLE. THIS IS # WORDS TO MOVE | |
2098 | JMS MOVEM | |
2099 | TAD RSWIT | |
2100 | SNA CLA /DETERMINE WHICH PSEUDO-OPS | |
2101 | TAD (PPSEUD-SPSEUD | |
2102 | TAD (SPSEUD-1 | |
2103 | DCA XRLINE | |
2104 | TAD I XRLINE | |
2105 | DCA PSEUDO /TABLES INITIALLY HAVE A SHORT HEADER | |
2106 | /WHICH CONTAINS INFORMATION ABOUT THEM | |
2107 | /PSEUDO CONTAINS STARTING # OF FIRST | |
2108 | ||
2109 | \f | |
2110 | ||
2111 | TAD I XRLINE | |
2112 | DCA PSEUDO+1 /LAST ENTRY # | |
2113 | TAD I XRLINE | |
2114 | DCA COUNT /# ENTRIES TO MOVE | |
2115 | TAD I XRLINE | |
2116 | DCA XRLIT /WHERE THEY GO IN FIELD 1 | |
2117 | JMS MOVEM | |
2118 | JMP I (XFIRST /READ FIRST RECORDS | |
2119 | ||
2120 | ||
2121 | MOVEM, 0 | |
2122 | TAD I XRLINE | |
2123 | CDF 10 | |
2124 | DCA I XRLIT | |
2125 | CDF 0 | |
2126 | ISZ COUNT | |
2127 | JMP .-5 | |
2128 | JMP I MOVEM | |
2129 | ERRTWO, JMS I [ERROR /THIS IS AN IMPOSSIBLE ERROR | |
2130 | LPTERR | |
2131 | CHANCK, 0 | |
2132 | CLL RTL /CHECK FOR /C+/E | |
2133 | RAL | |
2134 | SNL | |
2135 | JMP I CHANCK //C IS MINIMUM CONDITION | |
2136 | RTR /V3C USE /1 TO MEAN KEEP CREFLS.TM | |
2137 | SNL CLA | |
2138 | CMA /-1 IF NO E (I.E. DO ELIMINATE) | |
2139 | DCA I (SLSWH | |
2140 | JMP I CHANCK | |
2141 | XNAME, 7601 | |
2142 | PASS2, 0 | |
2143 | ||
2144 | PATCHA, TAD (35 | |
2145 | DCA USER+1 | |
2146 | JMP BLUE0 | |
2147 | \f *4400 | |
2148 | SWITCH, 0 | |
2149 | JMS I (FILEXT | |
2150 | CLA IAC | |
2151 | CDF 10 | |
2152 | AND I (7644 /TEST FOR /X | |
2153 | DCA DSWIT | |
2154 | TAD I (7643 | |
2155 | CDF 0 | |
2156 | JMS I (CHANCK | |
2157 | CDF 10 | |
2158 | CLA CLL | |
2159 | TAD I (7644 | |
2160 | AND (410 /P OR /U USED? | |
2161 | SNA | |
2162 | JMP ST3 | |
2163 | CDF 0 | |
2164 | AND [10 | |
2165 | SNA CLA | |
2166 | JMP TXONLY /JUST /P | |
2167 | TAD XDOLL | |
2168 | DCA I (DOLL12 /NO SYMBOL TABLE | |
2169 | TXONLY, TAD KILOUT /YES..DISABLE PASS ONE OUTPUT | |
2170 | DCA I [OUTSW | |
2171 | ST3, CLA | |
2172 | CDF 10 | |
2173 | TAD I (7644 | |
2174 | CDF 0 | |
2175 | AND (300 /IF SABR (Q), SET RSWIT AND DSWIT | |
2176 | SNA | |
2177 | JMP HCR1 /PAL8 | |
2178 | AND [200 /CHECK FOR RALF | |
2179 | SNA CLA | |
2180 | JMP RALFCD /Y | |
2181 | ISZ RSWIT | |
2182 | ISZ DSWIT | |
2183 | DCA I (SCAN3 /ENABLE CHECK FOR SABR CHARS | |
2184 | HCR1, CLA | |
2185 | CDF 10 | |
2186 | TAD I (7644 /CHECK FOR M- MAMMOTH FILE(HCREF) | |
2187 | CDF 0 | |
2188 | SMA CLA | |
2189 | JMP I (BLUE0 /NOT LONG FILE | |
2190 | /PUT IN NECESSARY PATCHES | |
2191 | CLL | |
2192 | TAD XPATCH | |
2193 | DCA I (HC1 | |
2194 | TAD XPTCH1 | |
2195 | DCA I (XUSSYM | |
2196 | CDF 10 | |
2197 | TAD I (7645 | |
2198 | RAR /CHECK IF PASS1 OR 2 FOR /M | |
2199 | SNL | |
2200 | JMP CHNPS1 /PASS 1 | |
2201 | RAL CLL /IT'S PASS 2 | |
2202 | DCA I (7645 /RESTORE TBL | |
2203 | CDF 0 | |
2204 | CIF 10 | |
2205 | JMS I (7700 /RESTORE USR | |
2206 | 10 | |
2207 | TAD KILOUT | |
2208 | DCA I [OUTSW /NO LIST | |
2209 | TAD XDOLL | |
2210 | DCA I (DOLL12 | |
2211 | TAD [7720 | |
2212 | DCA I (PATCH1 /ANOTHER PATCH | |
2213 | JMP I SWITCH | |
2214 | CHNPS1, CLL CML RAL | |
2215 | DCA I (7645 /SET /9 SWITCH | |
2216 | CDF 0 | |
2217 | CLA CMA | |
2218 | DCA I (HCREF /7777 DURING PASS1 | |
2219 | JMS I (CHNSET /LOOKUP CREF.SV | |
2220 | JMP I (PATCHA | |
2221 | XPATCH, PATCH&177+5200 | |
2222 | XPTCH1, PATCH | |
2223 | XDOLL, DOLL13&177+5200 | |
2224 | RALFCD, TAD [7776 /FOR 2 EXTRA LINE FEEDS | |
2225 | DCA I (RLSKIP | |
2226 | JMP HCR1 | |
2227 | KILOUT, OCHAR&177+5600 /JMP I OCHAR | |
2228 | ||
2229 | ||
2230 | /SUBROUTINE TO DETERMINE CORE SIZE | |
2231 | FTEST, 0 | |
2232 | JMS I (MORCOR | |
2233 | COR0, CDF 0 | |
2234 | TAD MAXFLD /GET FIELD TO TEST | |
2235 | RTL | |
2236 | RAL | |
2237 | AND COR70 | |
2238 | TAD COREX | |
2239 | DCA .+1 | |
2240 | COR1, CDF /FIELD TO TEST | |
2241 | TAD I CORLOC | |
2242 | COR2, NOP | |
2243 | DCA COR1 | |
2244 | TAD COR2 | |
2245 | DCA I CORLOC | |
2246 | COR70, 70 | |
2247 | TAD I CORLOC | |
2248 | CORX, 7400 | |
2249 | TAD CORX | |
2250 | TAD CORV | |
2251 | SZA CLA | |
2252 | JMP COREX /NON-EXISTENT FIELD | |
2253 | TAD COR1 | |
2254 | DCA I CORLOC | |
2255 | ISZ MAXFLD | |
2256 | JMP COR0 | |
2257 | COREX, CDF 0 | |
2258 | DONCOR, JMP I FTEST | |
2259 | CORLOC, CORX | |
2260 | CORV, 1400 | |
2261 | \f\f\f\f | |
2262 | FIELD 0 | |
2263 | /THESE ARE THE PERMANENT AND PSEUDO OP TABLES FOR CREF | |
2264 | /RAD IS THE BASE USED TO PACK THE CHARACTERS. FOR SABR IT MAY | |
2265 | /HAVE TO BE MOVED TO 51 RATHER THAN 45. | |
2266 | ||
2267 | RAD=52 | |
2268 | ||
2269 | *4600 | |
2270 | ||
2271 | SYMTAB, -453 /INITIAL ENTRIES | |
2272 | ||
2273 | NOPUNCH | |
2274 | *0 | |
2275 | ENPUNCH | |
2276 | ZBLOCK 4 /DUMMY ENTRY..SYMCHK NEEDS IT | |
2277 | ||
2278 | ||
2279 | "A-300^RAD+"N-300+4000 /AND | |
2280 | "D-300^RAD | |
2281 | ZBLOCK 2 | |
2282 | ||
2283 | "B-300^RAD+"S-300+4000 /BSW | |
2284 | "W-300^RAD | |
2285 | ZBLOCK 2 | |
2286 | ||
2287 | "C-300^RAD+"A-300+4000 /CAF | |
2288 | "F-300^RAD | |
2289 | ZBLOCK 2 | |
2290 | ||
2291 | "C-300^RAD+"D-300+4000 /CDF | |
2292 | "F-300^RAD | |
2293 | ZBLOCK 2 | |
2294 | ||
2295 | "C-300^RAD+"I-300+4000 /CIA | |
2296 | "A-300^RAD | |
2297 | ZBLOCK 2 | |
2298 | ||
2299 | "C-300^RAD+"I-300+4000 /CIF | |
2300 | "F-300^RAD | |
2301 | ZBLOCK 2 | |
2302 | ||
2303 | "C-300^RAD+"L-300+4000 /CLA | |
2304 | "A-300^RAD | |
2305 | ZBLOCK 2 | |
2306 | ||
2307 | "C-300^RAD+"L-300+4000 /CLL | |
2308 | "L-300^RAD | |
2309 | ZBLOCK 2 | |
2310 | ||
2311 | "C-300^RAD+"M-300+4000 /CMA | |
2312 | "A-300^RAD | |
2313 | ZBLOCK 2 | |
2314 | ||
2315 | R=52 | |
2316 | ||
2317 | "C-300^R+"M-300+4000 /CML | |
2318 | "L-300^R | |
2319 | ZBLOCK 2 | |
2320 | ||
2321 | "D-300^R+"C-300+4000 /DCA | |
2322 | "A-300^R | |
2323 | ZBLOCK 2 | |
2324 | \f "G-300^R+"L-300+4000 /GLK | |
2325 | "K-300^R | |
2326 | ZBLOCK 2 | |
2327 | ||
2328 | "G-300^R+"T-300+4000 /GTF | |
2329 | "F-300^R | |
2330 | ZBLOCK 2 | |
2331 | ||
2332 | "H-300^R+"L-300+4000 /HLT | |
2333 | "T-300^R | |
2334 | ZBLOCK 2 | |
2335 | ||
2336 | "I-300^R+"A-300+4000 /IAC | |
2337 | "C-300^R | |
2338 | ZBLOCK 2 | |
2339 | ||
2340 | "I-300^R+"O-300+4000 /IOF | |
2341 | "F-300^R | |
2342 | ZBLOCK 2 | |
2343 | ||
2344 | "I-300^R+"O-300+4000 /ION | |
2345 | "N-300^R | |
2346 | ZBLOCK 2 | |
2347 | ||
2348 | "I-300^R+"O-300+4000 /IOT | |
2349 | "T-300^R | |
2350 | ZBLOCK 2 | |
2351 | ||
2352 | "I-300^R+"S-300+4000 /ISZ | |
2353 | "Z-300^R | |
2354 | ZBLOCK 2 | |
2355 | ||
2356 | "J-300^R+"M-300+4000 /JMP | |
2357 | "P-300^R | |
2358 | ZBLOCK 2 | |
2359 | ||
2360 | "J-300^R+"M-300+4000 /JMS | |
2361 | "S-300^R | |
2362 | ZBLOCK 2 | |
2363 | ||
2364 | "K-300^R+"C-300+4000 /KCC | |
2365 | "C-300^R | |
2366 | ZBLOCK 2 | |
2367 | ||
2368 | "K-300^R+"C-300+4000 /KCF | |
2369 | "F-300^R | |
2370 | ZBLOCK 2 | |
2371 | ||
2372 | "K-300^R+"I-300+4000 /KIE | |
2373 | "E-300^R | |
2374 | ZBLOCK 2 | |
2375 | ||
2376 | "K-300^R+"R-300+4000 /KRB | |
2377 | "B-300^R | |
2378 | ZBLOCK 2 | |
2379 | ||
2380 | "K-300^R+"R-300+4000 /KRS | |
2381 | "S-300^R | |
2382 | ZBLOCK 2 | |
2383 | ||
2384 | "K-300^R+"S-300+4000 /KSF | |
2385 | "F-300^R | |
2386 | ZBLOCK 2 | |
2387 | ||
2388 | "L-300^R+"A-300+4000 /LAS | |
2389 | "S-300^R | |
2390 | ZBLOCK 2 | |
2391 | ||
2392 | "M-300^R+"Q-300+4000 /MQA | |
2393 | "A-300^R | |
2394 | ZBLOCK 2 | |
2395 | ||
2396 | "M-300^R+"Q-300+4000 /MQL | |
2397 | "L-300^R | |
2398 | ZBLOCK 2 | |
2399 | ||
2400 | "N-300^R+"O-300+4000 /NOP | |
2401 | "P-300^R | |
2402 | ZBLOCK 2 | |
2403 | ||
2404 | "O-300^R+"P-300+4000 /OPR | |
2405 | "R-300^R | |
2406 | ZBLOCK 2 | |
2407 | ||
2408 | "O-300^R+"S-300+4000 /OSR | |
2409 | "R-300^R | |
2410 | ZBLOCK 2 | |
2411 | ||
2412 | "P-300^R+"C-300+4000 /PCE | |
2413 | "E-300^R | |
2414 | ZBLOCK 2 | |
2415 | ||
2416 | "P-300^R+"C-300+4000 /PCF | |
2417 | "F-300^R | |
2418 | ZBLOCK 2 | |
2419 | ||
2420 | "P-300^R+"L-300+4000 /PLS | |
2421 | "S-300^R | |
2422 | ZBLOCK 2 | |
2423 | ||
2424 | "P-300^R+"P-300+4000 /PPC | |
2425 | "C-300^R | |
2426 | ZBLOCK 2 | |
2427 | ||
2428 | "P-300^R+"S-300+4000 /PSF | |
2429 | "F-300^R | |
2430 | ZBLOCK 2 | |
2431 | ||
2432 | "R-300^R+"A-300+4000 /RAL | |
2433 | "L-300^R | |
2434 | ZBLOCK 2 | |
2435 | ||
2436 | "R-300^R+"A-300+4000 /RAR | |
2437 | "R-300^R | |
2438 | ZBLOCK 2 | |
2439 | ||
2440 | "R-300^R+"D-300+4000 /RDF | |
2441 | "F-300^R | |
2442 | ZBLOCK 2 | |
2443 | ||
2444 | "R-300^R+"F-300+4000 /RFC | |
2445 | "C-300^R | |
2446 | ZBLOCK 2 | |
2447 | ||
2448 | "R-300^R+"I-300+4000 /RIB | |
2449 | "B-300^R | |
2450 | ZBLOCK 2 | |
2451 | ||
2452 | "R-300^R+"I-300+4000 /RIF | |
2453 | "F-300^R | |
2454 | ZBLOCK 2 | |
2455 | ||
2456 | "R-300^R+"M-300+4000 /RMF | |
2457 | "F-300^R | |
2458 | ZBLOCK 2 | |
2459 | ||
2460 | "R-300^R+"P-300+4000 /RPE | |
2461 | "E-300^R | |
2462 | ZBLOCK 2 | |
2463 | ||
2464 | "R-300^R+"R-300+4000 /RRB | |
2465 | "B-300^R | |
2466 | ZBLOCK 2 | |
2467 | ||
2468 | "R-300^R+"S-300+4000 /RSF | |
2469 | "F-300^R | |
2470 | ZBLOCK 2 | |
2471 | ||
2472 | "R-300^R+"T-300+4000 /RTF | |
2473 | "F-300^R | |
2474 | ZBLOCK 2 | |
2475 | ||
2476 | "R-300^R+"T-300+4000 /RTL | |
2477 | "L-300^R | |
2478 | ZBLOCK 2 | |
2479 | ||
2480 | "R-300^R+"T-300+4000 /RTR | |
2481 | "R-300^R | |
2482 | ZBLOCK 2 | |
2483 | ||
2484 | "S-300^R+"G-300+4000 /SGT | |
2485 | "T-300^R | |
2486 | ZBLOCK 2 | |
2487 | ||
2488 | "S-300^R+"K-300+4000 /SKON | |
2489 | "O-300^R+"N-300 | |
2490 | ZBLOCK 2 | |
2491 | ||
2492 | "S-300^R+"K-300+4000 /SKP | |
2493 | "P-300^R | |
2494 | ZBLOCK 2 | |
2495 | ||
2496 | "S-300^R+"M-300+4000 /SMA | |
2497 | "A-300^R | |
2498 | ZBLOCK 2 | |
2499 | ||
2500 | "S-300^R+"N-300+4000 /SNA | |
2501 | "A-300^R | |
2502 | ZBLOCK 2 | |
2503 | ||
2504 | "S-300^R+"N-300+4000 /SNL | |
2505 | "L-300^R | |
2506 | ZBLOCK 2 | |
2507 | ||
2508 | "S-300^R+"P-300+4000 /SPA | |
2509 | "A-300^R | |
2510 | ZBLOCK 2 | |
2511 | ||
2512 | "S-300^R+"R-300+4000 /SRQ | |
2513 | "Q-300^R | |
2514 | ZBLOCK 2 | |
2515 | ||
2516 | "S-300^R+"T-300+4000 /STA | |
2517 | "A-300^R | |
2518 | ZBLOCK 2 | |
2519 | ||
2520 | "S-300^R+"T-300+4000 /STL | |
2521 | "L-300^R | |
2522 | ZBLOCK 2 | |
2523 | ||
2524 | "S-300^R+"W-300+4000 /SWP | |
2525 | "P-300^R | |
2526 | ZBLOCK 2 | |
2527 | \f | |
2528 | "S-300^R+"Z-300+4000 /SZA | |
2529 | "A-300^R | |
2530 | ZBLOCK 2 | |
2531 | ||
2532 | "S-300^R+"Z-300+4000 /SZL | |
2533 | "L-300^R | |
2534 | ZBLOCK 2 | |
2535 | ||
2536 | "T-300^R+"A-300+4000 /TAD | |
2537 | "D-300^R | |
2538 | ZBLOCK 2 | |
2539 | ||
2540 | "T-300^R+"C-300+4000 /TCF | |
2541 | "F-300^R | |
2542 | ZBLOCK 2 | |
2543 | ||
2544 | "T-300^R+"F-300+4000 /TFL | |
2545 | "L-300^R | |
2546 | ZBLOCK 2 | |
2547 | ||
2548 | "T-300^R+"L-300+4000 /TLS | |
2549 | "S-300^R | |
2550 | ZBLOCK 2 | |
2551 | ||
2552 | "T-300^R+"P-300+4000 /TPC | |
2553 | "C-300^R | |
2554 | ZBLOCK 2 | |
2555 | ||
2556 | "T-300^R+"S-300+4000 /TSF | |
2557 | "F-300^R | |
2558 | ZBLOCK 2 | |
2559 | ||
2560 | "T-300^R+"S-300+4000 /TSK | |
2561 | "K-300^R | |
2562 | ZBLOCK 2 | |
2563 | -1 | |
2564 | -1 | |
2565 | -1 | |
2566 | -1 /DUMMY LOW ENTRY | |
2567 | ||
2568 | \f | |
2569 | /PSEUDO OP TABLES. ENTRIES ARE SAME FORMAT AS PAL8 | |
2570 | /SYMBOLS. | |
2571 | ||
2572 | *.+SYMTAB | |
2573 | ||
2574 | SPSEUD, 1706 /SABR PSEUDOS. BEGINS AT 1706*4 | |
2575 | 1737 /ENDS AT 1737*4 | |
2576 | -150 /150 LOCATIONS LONG | |
2577 | 7427 /STARTS LOADING AT 17430 | |
2578 | ||
2579 | NOPUNCH | |
2580 | *7430 | |
2581 | ENPUNCH | |
2582 | ||
2583 | ZBLOCK 4 | |
2584 | ||
2585 | ||
2586 | "A-300^R+"B-300 /ABSYM | |
2587 | "S-300^R+"Y-300 | |
2588 | "M-300^R | |
2589 | B /RETURN POINT | |
2590 | ||
2591 | "A-300^R+"R-300 /ARG | |
2592 | "G-300^R | |
2593 | 0 | |
2594 | B | |
2595 | ||
2596 | "B-300^R+"L-300 /BLOCK | |
2597 | "O-300^R+"C-300 | |
2598 | "K-300^R | |
2599 | B | |
2600 | ||
2601 | "C-300^R+"A-300 /CALL | |
2602 | "L-300^R+"L-300 | |
2603 | 0 | |
2604 | B | |
2605 | ||
2606 | "C-300^R+"O-300 /COMMON | |
2607 | "M-300^R+"M-300 | |
2608 | "O-300^R+"N-300 | |
2609 | B | |
2610 | ||
2611 | "C-300^R+"P-300 /CPAGE | |
2612 | "A-300^R+"G-300 | |
2613 | "E-300^R | |
2614 | B | |
2615 | ||
2616 | "D-300^R+"E-300 /DECIM | |
2617 | "C-300^R+"I-300 | |
2618 | "M-300^R | |
2619 | B | |
2620 | ||
2621 | "D-300^R+"U-300 /DUMMY | |
2622 | "M-300^R+"M-300 | |
2623 | "Y-300^R | |
2624 | B | |
2625 | ||
2626 | "E-300^R+"A-300 /EAP | |
2627 | "P-300^R | |
2628 | 0 | |
2629 | B | |
2630 | ||
2631 | "E-300^R+"N-300 /END | |
2632 | "D-300^R | |
2633 | 0 | |
2634 | EPASS, DOLL1 /BECOMES ENDPAS | |
2635 | ||
2636 | "E-300^R+"N-300 /ENTRY | |
2637 | "T-300^R+"R-300 | |
2638 | "Y-300^R | |
2639 | B | |
2640 | ||
2641 | "F-300^R+"O-300 /FORTR | |
2642 | "R-300^R+"T-300 | |
2643 | "R-300^R | |
2644 | B | |
2645 | ||
2646 | "I-300^R | |
2647 | 0 | |
2648 | 0 | |
2649 | B /I | |
2650 | ||
2651 | "I-300^R+"F-300 /IF | |
2652 | 0 | |
2653 | 0 | |
2654 | B | |
2655 | ||
2656 | "I-300^R+"N-300 /INC | |
2657 | "C-300^R | |
2658 | 0 | |
2659 | B | |
2660 | ||
2661 | "L-300^R+"A-300 /LAP | |
2662 | "P-300^R | |
2663 | 0 | |
2664 | B | |
2665 | ||
2666 | "O-300^R+"C-300 /OCTAL | |
2667 | "T-300^R+"A-300 | |
2668 | "L-300^R | |
2669 | B | |
2670 | ||
2671 | "O-300^R+"P-300 /OPDEF | |
2672 | "D-300^R+"E-300 | |
2673 | "F-300^R | |
2674 | FXR2, FXMR | |
2675 | ||
2676 | "P-300^R+"A-300 /PAGE | |
2677 | "G-300^R+"E-300 | |
2678 | 0 | |
2679 | B | |
2680 | ||
2681 | "P-300^R+"A-300 /PAUSE | |
2682 | "U-300^R+"S-300 | |
2683 | "E-300^R | |
2684 | B | |
2685 | ||
2686 | "R-300^R+"E-300 /REORG | |
2687 | "O-300^R+"R-300 | |
2688 | "G-300^R | |
2689 | B | |
2690 | ||
2691 | "R-300^R+"E-300 /RETRN | |
2692 | "T-300^R+"R-300 | |
2693 | "N-300^R | |
2694 | B | |
2695 | ||
2696 | "S-300^R+"K-300 /SKPDF | |
2697 | "P-300^R+"D-300 | |
2698 | "F-300^R | |
2699 | FXR3, FXMR | |
2700 | ||
2701 | "T-300^R+"E-300 /TEXT | |
2702 | "X-300^R+"T-300 | |
2703 | 0 | |
2704 | TXT | |
2705 | ||
2706 | -1 | |
2707 | -1 | |
2708 | -1 | |
2709 | -1 | |
2710 | ||
2711 | \f | |
2712 | ||
2713 | /PAL8 PSEUDOS. SAME FORMAT AS OTHERS | |
2714 | ||
2715 | *5424 | |
2716 | ENPUNCH | |
2717 | ||
2718 | PPSEUD, 1706 | |
2719 | 1737 | |
2720 | -150 | |
2721 | 7427 | |
2722 | ||
2723 | NOPUNCH | |
2724 | *7430 | |
2725 | ENPUNCH | |
2726 | ||
2727 | ZBLOCK 4 | |
2728 | ||
2729 | ||
2730 | "D-300^R+"E-300 /DECIMAL | |
2731 | "C-300^R+"I-300 | |
2732 | "M-300^R+"A-300 | |
2733 | B | |
2734 | ||
2735 | "D-300^R+"E-300 /DEVICE | |
2736 | "V-300^R+"I-300 | |
2737 | "C-300^R+"E-300 | |
2738 | B | |
2739 | ||
2740 | "D-300^R+"T-300 /DTORG | |
2741 | "O-300^R+"R-300 | |
2742 | "G-300^R | |
2743 | B | |
2744 | ||
2745 | "E-300^R+"J-300 /EJECT | |
2746 | "E-300^R+"C-300 | |
2747 | "T-300^R | |
2748 | NOTBIN /SKIP ANY MORE TEXT | |
2749 | ||
2750 | "E-300^R+"N-300 /ENPUNCH | |
2751 | "P-300^R+"U-300 | |
2752 | "N-300^R+"C-300 | |
2753 | B | |
2754 | ||
2755 | "E-300^R+"X-300 /EXPUNGE | |
2756 | "P-300^R+"U-300 | |
2757 | "N-300^R+"G-300 | |
2758 | XPJ, XPUNJ | |
2759 | ||
2760 | "F-300^R+"I-300 /FIELD | |
2761 | "E-300^R+"L-300 | |
2762 | "D-300^R | |
2763 | B | |
2764 | ||
2765 | "F-300^R+"I-300 /FILENAME | |
2766 | "L-300^R+"E-300 | |
2767 | "N-300^R+"A-300 | |
2768 | B | |
2769 | ||
2770 | "F-300^R+"I-300 /FIXMRI | |
2771 | "X-300^R+"M-300 | |
2772 | "R-300^R+"I-300 | |
2773 | FXR, FXMR | |
2774 | ||
2775 | "F-300^R+"I-300 /FIXTAB | |
2776 | "X-300^R+"T-300 | |
2777 | "A-300^R+"B-300 | |
2778 | FXT, FXTAB | |
2779 | ||
2780 | "I-300^R /I | |
2781 | ZBLOCK 2 | |
2782 | B | |
2783 | ||
2784 | "I-300^R+"F-300 /IFDEF | |
2785 | "D-300^R+"E-300 | |
2786 | "F-300^R | |
2787 | B | |
2788 | ||
2789 | "I-300^R+"F-300 /IFNDEF | |
2790 | "N-300^R+"D-300 | |
2791 | "E-300^R+"F-300 | |
2792 | B | |
2793 | ||
2794 | "I-300^R+"F-300 /IFNZRO | |
2795 | "N-300^R+"Z-300 | |
2796 | "R-300^R+"O-300 | |
2797 | B | |
2798 | ||
2799 | "I-300^R+"F-300 /IFZERO | |
2800 | "Z-300^R+"E-300 | |
2801 | "R-300^R+"O-300 | |
2802 | B | |
2803 | ||
2804 | "N-300^R+"O-300 /NOPUNCH | |
2805 | "P-300^R+"U-300 | |
2806 | "N-300^R+"C-300 | |
2807 | B | |
2808 | ||
2809 | "O-300^R+"C-300 /OCTAL | |
2810 | "T-300^R+"A-300 | |
2811 | "L-300^R | |
2812 | B | |
2813 | ||
2814 | "P-300^R+"A-300 /PAGE | |
2815 | "G-300^R+"E-300 | |
2816 | 0 | |
2817 | B | |
2818 | ||
2819 | "P-300^R+"A-300 /PAUSE | |
2820 | "U-300^R+"S-300 | |
2821 | "E-300^R | |
2822 | B | |
2823 | ||
2824 | "R-300^R+"L-300 /RELOC | |
2825 | "L-300^R+"O-300 | |
2826 | "C-300^R | |
2827 | B | |
2828 | ||
2829 | "T-300^R+"E-300 /TEXT | |
2830 | "X-300^R+"T-300 | |
2831 | 0 | |
2832 | TXT | |
2833 | ||
2834 | "X-300^R+"L-300 /XLIST | |
2835 | "I-300^R+"S-300 | |
2836 | "T-300^R | |
2837 | B | |
2838 | ||
2839 | "Z-300^R /Z | |
2840 | ZBLOCK 2 | |
2841 | B | |
2842 | ||
2843 | "Z-300^R+"B-300 /ZBLOCK | |
2844 | "L-300^R+"O-300 | |
2845 | "C-300^R+"K-300 | |
2846 | B | |
2847 | ||
2848 | -1 | |
2849 | -1 | |
2850 | -1 | |
2851 | -1 | |
2852 | ||
2853 | ||
2854 | ||
2855 | \f *5600 | |
2856 | /THIS CODE IS EXECUTED DURING PASS ONE ONLY. LATER PASSES | |
2857 | /USE THIS AREA TO BUILD A REFERENCE TABLE. | |
2858 | ||
2859 | ||
2860 | HEADER, 0 /HEADER SWITCHES FPUT TO JMS I [OCHAR | |
2861 | TAD CPCHIT | |
2862 | DCA FPUT /ADDRESS OF PUNCH ROUTINE | |
2863 | JMS I CGTLIN /CALL GETLIN | |
2864 | TAD CSTRIT /RESTORE FPUT | |
2865 | DCA FPUT | |
2866 | JMP I HEADER | |
2867 | CPCHIT, PNCHIT | |
2868 | CGTLIN, GETLIN | |
2869 | CSTRIT, STORIT | |
2870 | ||
2871 | PNCHIT, 0 | |
2872 | JMS I COCHAR | |
2873 | JMP I PNCHIT | |
2874 | ||
2875 | STORIT, 0 | |
2876 | DCA I XRLINE | |
2877 | JMP I STORIT | |
2878 | COCHAR, OCHAR | |
2879 | ||
2880 | DOLL1, TAD (ENDPAS | |
2881 | DCA DOLLAR | |
2882 | JMS DPAT | |
2883 | DOLL12, TAD (KRS /BECOMES JMP .+2 IF /M PASS 2 OR /U | |
2884 | DCA I (OUTSW /RE ENABLE OUTPUT | |
2885 | DOLL13, CDF 10 | |
2886 | TAD RSWIT | |
2887 | SNA CLA | |
2888 | JMP DOLL2 /PAL8 PSEUDOS | |
2889 | TAD (B | |
2890 | DCA I (FXR2 | |
2891 | TAD (B | |
2892 | DCA I (FXR3 | |
2893 | TAD (ENDPAS | |
2894 | DCA I (EPASS /END PSEUDO NOW TO ENDPAS | |
2895 | JMP DOLOUT | |
2896 | DOLL2, TAD (B | |
2897 | DCA I (XPJ | |
2898 | TAD (B | |
2899 | DCA I (FXR | |
2900 | TAD (B | |
2901 | DCA I (FXT | |
2902 | DOLOUT, CDF 0 | |
2903 | JMS DOLOT2 | |
2904 | JMP I (NOTBIN | |
2905 | FUDGE, NOP | |
2906 | ||
2907 | ||
2908 | XPUNJ, DCA COUNT | |
2909 | CLA CMA | |
2910 | TAD USER+1 /SKIP LAST ENTRY (7777) | |
2911 | CLL RTL | |
2912 | XPUNJ3, DCA BUFFER /POINTER INTO SYMBOLS | |
2913 | CDF 10 | |
2914 | TAD I BUFFER | |
2915 | TAD (5336 /IS THIS A LITERAL? | |
2916 | SNA CLA | |
2917 | JMP XPUNJ1 /YES..NEXT ENTRY | |
2918 | TAD COUNT /NO..NOW PUSH ALL LITERALS UP | |
2919 | CLL RTL /BUT IF COUNT =0, THERE ARE NONE | |
2920 | CMA | |
2921 | DCA SAVE | |
2922 | TAD (3 | |
2923 | TAD BUFFER /SETTING UP TO DO TRANSFER. IF COUNT=0 | |
2924 | DCA XRSYM1 /ONLY THE 7777 GETS TRANSFERRED | |
2925 | TAD (3 | |
2926 | DCA XRSYM2 | |
2927 | TAD I XRSYM1 | |
2928 | DCA I XRSYM2 | |
2929 | ISZ SAVE /ALL COMPLETED? | |
2930 | JMP .-3 | |
2931 | TAD COUNT | |
2932 | IAC /INCLUDE 7777 ENTRY! | |
2933 | DCA USER+1 | |
2934 | CDF 0 | |
2935 | JMP I (B | |
2936 | XPUNJ1, TAD (-4 | |
2937 | TAD BUFFER | |
2938 | ISZ COUNT | |
2939 | JMP XPUNJ3 | |
2940 | ||
2941 | XFIRST, JMS I (OOPEN | |
2942 | JMP I (FIRST+1 | |
2943 | ||
2944 | DOLOT2, 0 | |
2945 | STL RTL /IF WE HAVE MORE THAN 2 FIELDS, | |
2946 | TAD MAXFLD /WE SHALL LEAVE THE SYMBOL TABLE IN ONE | |
2947 | /PIECE. THAT ALLOWS US TO USE THE UPPER | |
2948 | SZL CLA /CORE PROFITABLY | |
2949 | JMP I DOLOT2 | |
2950 | TAD USER+1 | |
2951 | CLL RTL | |
2952 | TAD (4 /CLEARS SYMBOL TABLE | |
2953 | DCA I (LTTBL+1 /FIX PERMANENT LIMIT IN FIELD 1 | |
2954 | DCA SYMFLD /AND FAKE THAT FLD 1 HAS NO SYMBOLS | |
2955 | TAD FUDGE /DISABLE RESET OF FIELD 1 LIMIT | |
2956 | DCA I (FUJ1 | |
2957 | JMP I DOLOT2 | |
2958 | ||
2959 | CHNSET, 0 | |
2960 | CLA IAC /SYS DEV ONLY | |
2961 | CIF 10 | |
2962 | JMS I (200 | |
2963 | 2 /LOOKUP | |
2964 | STBLK, CREFNM /GET CREF STARTING BLK | |
2965 | 0 | |
2966 | JMP I (ERR6 | |
2967 | TAD STBLK | |
2968 | DCA I (BLK | |
2969 | JMP I CHNSET | |
2970 | CREFNM, FILENAME CREF.SV | |
2971 | \f PAGE | |
2972 | ||
2973 | FXMR, TAD I XRLINE /SHOULD CONTAIN FIRST CHAR IN INSTR. | |
2974 | DCA CHAR | |
2975 | JMS I (CHECK /CHECK IT | |
2976 | 301 | |
2977 | -332 | |
2978 | JMP .+4 /NOPE;A NUMBER MAYBE? | |
2979 | FX2, TAD CHAR | |
2980 | JMS I (PACK | |
2981 | JMP FXMR | |
2982 | JMS I (CHECK | |
2983 | 260 | |
2984 | -271 /CHECK FOR DIGIT 0-9 | |
2985 | SKP /NOPE. IF THERE IS A SYMBOL, THIS IS TERMINATOR | |
2986 | JMP FX2 | |
2987 | JMS I (REPACK | |
2988 | TAD SYM1 | |
2989 | SNA CLA | |
2990 | JMP FXMR | |
2991 | CDF 10 | |
2992 | TAD I (7644 /M RULES FOR FIXMRI TOO | |
2993 | CDF 0 | |
2994 | SMA CLA | |
2995 | JMP FXNTR /NO M | |
2996 | TAD I (PATCH1 | |
2997 | DCA PATCH2 /APPROPRIATE SWITCH | |
2998 | TAD SYM1 | |
2999 | RTL | |
3000 | PATCH2, HLT /SPA SZA OR SMA SNL + CLA | |
3001 | JMP I (B | |
3002 | FXNTR, JMS I (SYMCHK | |
3003 | USER | |
3004 | JMS I (ENTRY /ENTER AS USER SYMBOL | |
3005 | JMS I (BUMP | |
3006 | JMP I (B | |
3007 | FXTAB, CLA CMA /DON'T INCLUDE 7777 ENTRY | |
3008 | TAD USER+1 | |
3009 | CIA | |
3010 | DCA COUNT /# ENTRIES TO EXAMINE | |
3011 | DCA SAVE | |
3012 | FXTB2, TAD (4 | |
3013 | TAD SAVE | |
3014 | DCA SAVE | |
3015 | FXTB9, CDF 10 | |
3016 | TAD I SAVE /STOP AS SOON AS LITERAL FOUND | |
3017 | TAD (5336 | |
3018 | SNA CLA | |
3019 | JMP FXTB3 | |
3020 | TAD I SAVE /IF ALREADY NEG. ITS A PERM SYMBOL | |
3021 | SMA | |
3022 | TAD (4000 /MAKE IT PERMANENT | |
3023 | DCA I SAVE | |
3024 | ISZ COUNT | |
3025 | TAD (3 | |
3026 | TAD SAVE | |
3027 | DCA SAVE | |
3028 | DCA I SAVE | |
3029 | ISZ SAVE | |
3030 | JMP FXTB9 /LOOP FOR DURATION | |
3031 | FXTB3, CDF 0 | |
3032 | JMP I (B | |
3033 | ||
3034 | DEVCHK, 0 | |
3035 | TAD I DEVCHK | |
3036 | DCA T2 /SAVE TBL START | |
3037 | ISZ DEVCHK | |
3038 | CDF 10 | |
3039 | TAD I T2 /HANDLER NUMBER | |
3040 | AND (17 | |
3041 | DCA T2 | |
3042 | CLA CMA | |
3043 | TAD I (37 /TBL LOCN IN 10037 | |
3044 | TAD T2 | |
3045 | DCA T2 | |
3046 | TAD I T2 | |
3047 | CDF 0 | |
3048 | JMP I DEVCHK | |
3049 | T2, 0 | |
3050 | /THAT'S ALL FOLKS!! | |
3051 | $$$$$$$$$$$$$$$$$$ | |
3052 | \f |