Commit | Line | Data |
---|---|---|
7af5ad59 PH |
1 | /SABR ASSEMBLER V18 |
2 | / | |
3 | / | |
4 | / | |
5 | / | |
6 | / | |
7 | / | |
8 | / | |
9 | // | |
10 | / | |
11 | / | |
12 | / | |
13 | / | |
14 | /COPYRIGHT (C) 1971,1974,1975 | |
15 | /DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. | |
16 | / | |
17 | / | |
18 | / | |
19 | /THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A | |
20 | /SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLU- | |
21 | /SION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR ANT OTHER | |
22 | /COPIES THEREOF, MAY NOT BR PROVIDED OR OTHERWISE MADE AVAILABLE | |
23 | /TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO | |
24 | /AGREES TO THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE | |
25 | /SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC. | |
26 | / | |
27 | / | |
28 | /THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT | |
29 | /NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL | |
30 | /EQUIPMRNT COROPATION. | |
31 | / | |
32 | /DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS | |
33 | /SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. | |
34 | / | |
35 | / | |
36 | / | |
37 | / | |
38 | / | |
39 | / | |
40 | \f/ VERSION SABR.17 | |
41 | / OCTOBER 26, 1971 | |
42 | / C. MCCOMAS | |
43 | / R. LARY | |
44 | / B. CLOGHER | |
45 | /SABR.V17 DEC-08-A2D2-17 | |
46 | / OCTOBER 26,1971 | |
47 | /COPYRIGHT 1971, DIGITAL EQUIPMENT CORPORATION, MAYNARD MASSACHUSETTS 01754 | |
48 | / C. MCCOMAS/R. LARY/B. CLOGHER | |
49 | ||
50 | ||
51 | // | |
52 | / | |
53 | /FIXES TO SABR FOR V18 J.K 1975 | |
54 | / | |
55 | / .LITERAL POOL OVERFLOW | |
56 | / .INCORRECT LINE NUMBER WITH ERROR MESSAGE | |
57 | / | |
58 | / | |
59 | /ASSEMBLY, LOAD AND SAVE INSTRUCTIONS | |
60 | / | |
61 | / .PAL SABR.PA | |
62 | / .PAL SPATCH.PA | |
63 | / | |
64 | / .LO SABR$SPATCH$ | |
65 | / | |
66 | / .SA SYS SABR | |
67 | / | |
68 | / | |
69 | FIELD 1 | |
70 | / | |
71 | / | |
72 | / DEFINE LOCATIONS OF MONITOR SUBROUTINES | |
73 | / | |
74 | DISPL=10 | |
75 | CDFSK=35+DISPL | |
76 | CDZSK=41+DISPL | |
77 | DUMS=57+DISPL | |
78 | LINK=23+DISPL | |
79 | OBIS=45+DISPL | |
80 | OPIS=52+DISPL | |
81 | RTN=30+DISPL | |
82 | ||
83 | ||
84 | *1 | |
85 | USE, 0 | |
86 | VAL, 0 | |
87 | SYMBOL, 0 /PTR TO CURRENT USE WORD IN MST | |
88 | M7, -7 | |
89 | AS0, S0 | |
90 | OTP, CORE1-1 /OCC. TAB. PTR (NEXT FREE WORD BELOW) | |
91 | STT, STTP /PTR TO 1ST FREE WORD OF SYM. TAB. | |
92 | /(KEEP STT AFTER OTP FOR INITA) | |
93 | ||
94 | X0, 0 /LINE BUFFER INDEX | |
95 | X1, 0 /TEMP AUTOS | |
96 | X2, 0 | |
97 | X3, 0 /HSR BUFFER INDEX | |
98 | ||
99 | K2, 2 | |
100 | K4, 4 | |
101 | K3, 3 | |
102 | K130, 130 | |
103 | K30, 30 | |
104 | ||
105 | / INDIRRECT REFERENCES | |
106 | / | |
107 | ICPLFS, CPLFS /CHECK FOR AND PROCESS COLLECTION LFS | |
108 | CPGESI, CPGES | |
109 | CTYPE, L61 /CHARACTER TYPEOUT ROUTINE | |
110 | CRLF, L73 | |
111 | DUMMY, DUM /DUMMY ROUTINE | |
112 | GETCHR, L65 /ROUTINE TO READ NEXT CHAR | |
113 | GETSYM, GTSYM /ROUTINE TO INPUT AND DECODE NEXT SYMBOL | |
114 | INI, INILPT | |
115 | LFSCHK, LFSCK /CHECK FOR A LFS | |
116 | OBSYM, OBNSYM /OBTAIN SYMBOL FROM MST | |
117 | DCIL1, RDL1 | |
118 | NULLP, NULL | |
119 | OTYPE, L62 /OCTAL TYPEOUT ROUTINE | |
120 | OUTBIN, OUTBN /ROUTINE TO OUTPUT COMP WORD AND REL BITS | |
121 | OUTSKP, OUTSK /ROUTINE TO OUTPUT A SKIP INSTRUCTION | |
122 | POPEXP, POPEX | |
123 | PRSYMP, PRSYM | |
124 | PUNCH, L63 /BINARY PUNCH ROUTINE | |
125 | RDIL, DCIL /READ AND DECODE ONE INPUT LINE | |
126 | RECTI, RECT | |
127 | L55I, L55 | |
128 | SKIPL, L72 /SKIPS UNTIL A RETURN OR SEMICOLON | |
129 | SLITAB, SLTAB /SEARCH LITERAL TABLE | |
130 | SPSTAB, SPSTB /SEARCH PAGE SYMBOL TABLE | |
131 | SREST, L66 /ROUTINE TO SEARCH EXTERNAL SYMBOL TABLE | |
132 | STCE, SETCT | |
133 | TEST, TSCHR /ROUTINE TO TEST CHARACTERS FOR EQUALITY | |
134 | TYPE, L64 /TTY TYPE ROUTINE | |
135 | WLNP, WLN | |
136 | WRITEP, WRITE | |
137 | / | |
138 | / IMPORTANT VARIABLES | |
139 | / | |
140 | ACTR, 0 /ASSEMBLY COUNTER | |
141 | BSSSW, 0 /BSS 0 IN PROCESS SWITCH | |
142 | CHR, 0 /LOC TO HOLD CURRENT CHARACTER | |
143 | CSUM, 0 /BINARY CHECK SUM | |
144 | EQVOPR, EQUTB /EQUIVALENCE TABLE OUTPUT POINTER | |
145 | EQVIPR, EQUTB /EQ. TB. INPUT PTR. | |
146 | ILC, 0 /CURRENT LOCATION | |
147 | LFSPTR, 0 /POINTER TO LFS TABLE ENTRY | |
148 | LINE, 0 /NO OF LINES SINCE LAST LFS | |
149 | LITSZE, 0 /SIZE OF LIT TAB (ASM PHASE) | |
150 | LTSZE, 0 /SAME FOR COLL. PHASE | |
151 | LSTSKP, 0 /LAST INSTRUCTION SKIP INDICATOR | |
152 | LSTBNK, 0 /LAST INSTRUCTION BANK INDICATOR | |
153 | OBACTR, 0 /OFF BANK INSTRUCTION ADDITION COUNTER | |
154 | OPSCTR, 0 /OFF PAGE SYMBOL COUNTER | |
155 | /***** KEEP ITEMS SO INCLOSED IN THE GIVEN ORDER FOR INITA | |
156 | HICOM, 0177 | |
157 | PAG, 0200 /CURRENT PAGE BITS | |
158 | ESTSIZ, 0 /HOLDS SIZE OF EXTERNAL SYMBOL TABLE | |
159 | EQVBIT, 0 | |
160 | APMSW, 0 /AUTOMATIC PAGING MODE SWITCH | |
161 | TEM7, 1 /SPECIAL VARIABLE USED BY ASME5 | |
162 | CPSW, 1 | |
163 | DSW, 0 | |
164 | FORFLG, 0 /FORTR PSUEDO-OP FLAG | |
165 | /POS NON-0 MEANS IGNORE DATA | |
166 | SCOLON, 0 | |
167 | /***** | |
168 | PASS, 0 | |
169 | PGEESC, 0 /HOLDS SIZE OF PAGE ESCAPE REQUIRED FOR CUR PAGE | |
170 | PUPGE, 0 | |
171 | PHASE, 0 /PHASE SWITCH | |
172 | PSTCPR, 0 /PAGE SYMBOL TABLE CODE POINTER | |
173 | PSTSPR, 0 /PAGE SYMBOL TABLE SYMBOL POINTER | |
174 | PSTSZE, 0 /SIZE OF PST | |
175 | PTCPR, 0 /PAGE TABLE CODE POINTER | |
176 | PTOPR, 0 /PAGE TABLE OP CODE POINTER | |
177 | PTSPR, 0 /PAGE TABLE SYMBOL POINTER | |
178 | PTSZE, 0 /SIZE OF PT | |
179 | TEM1, 0 | |
180 | TEM2, 0 | |
181 | TEM3, 0 | |
182 | TEM4, 0 | |
183 | TEM5, 0 | |
184 | PTSIZ=PTSZE /KEYPUNCHING ERROR | |
185 | LITSIZ=LITSZE /KEYPUNCHING ERROR | |
186 | / | |
187 | /LISTING VARIABLES | |
188 | LFLG, 0 /0 IF NULL LINE | |
189 | EFLG, 0 /ERROR FLAG, 6BIT CHAR. IN LEFT HALF | |
190 | VFLG, 0 /0 IF NO VALUE TO OUTPUT | |
191 | AFLG, 0 /DITTO FOR ADDRESS | |
192 | CODE, 0 /RELOCATION CODE | |
193 | ADDRES, 0 /INSTR. ADDRESS | |
194 | VALUE, 0 /INSTR. VALUE | |
195 | ||
196 | /LINE INFO | |
197 | LFS, 0 /KEEP THIS LIST ORDERED AS GIVEN | |
198 | OP, 0 /TO AGREE WITH TLFS LIST | |
199 | IB, 0 | |
200 | AFS, 0 | |
201 | UMIC, 0 | |
202 | NSGN, 0 | |
203 | EXP, 0 | |
204 | SK, 0 | |
205 | CURSKP=SK | |
206 | BANK, 0 | |
207 | S0, 0 | |
208 | S1, 0 | |
209 | S2, 0 | |
210 | S3, 0 | |
211 | ||
212 | ||
213 | / FREQUENTLY USED CONSTANTS | |
214 | / | |
215 | K5, 5 | |
216 | K7, 0007 | |
217 | K10, 0010 | |
218 | K20, 0020 | |
219 | K40, 0040 | |
220 | K77, 0077 | |
221 | K100, 100 | |
222 | K177, 0177 | |
223 | K200, 0200 | |
224 | K240, 240 | |
225 | K400=L55I | |
226 | K600=GETSYM | |
227 | K3000=LFSCHK | |
228 | K1000=INI | |
229 | K4000=PRSYMP | |
230 | K7600, 7600 | |
231 | M200=K7600 | |
232 | M254, -254 | |
233 | LINAX, LINBUF-1 | |
234 | M2, -2 | |
235 | M3, -3 | |
236 | K2000=RDIL | |
237 | M3000=STCE | |
238 | M7600=K200 | |
239 | / | |
240 | / CORE LAYOUT POINTERS | |
241 | / | |
242 | PTOPTB=K200 /PAGE OP CODE TABLE 1 IN BANK 1 | |
243 | BSEEST=K100 /BASE OF EXTERNAL SYMBOL TABLE IN BANK 1 | |
244 | MST=K2000 /BASE MAIN SYM. TAB IN BANK1 | |
245 | LFSBSE=K600 /BASE OF LOCATION FIELD SYMBOL TABLE IN BANK 1 | |
246 | LITBSE=L55I /BASE OF ASSEMBLY PHASE LITERAL TABLE IN BANK 1 | |
247 | PSTBSE, PSTB /BASE OF PAGE SYMBOL TABLE IN BANK 0 | |
248 | PTBSE, PTB /BASE OF PAGE TABLE IN BANK 0 | |
249 | LTBSE=K1000 /BASE OF COLL. PHASE LIT. TABLE IN BANK 1 | |
250 | PTB=7176 | |
251 | PSTB=6776 | |
252 | ||
253 | ||
254 | ||
255 | IERROR=JMP I . /ERROR MESSAGES | |
256 | ERRI | |
257 | CERROR=JMP I . | |
258 | ERRC | |
259 | SERROR=JMP I . | |
260 | ERRS | |
261 | ||
262 | \f*0200 | |
263 | / | |
264 | / MAIN CONTROL LOGIC | |
265 | / | |
266 | START, CLA | |
267 | JMS I INITIO | |
268 | DCA PASS | |
269 | DCA I ICALSW | |
270 | JMS I INITAP | |
271 | RSTRT, JMS I INI /INITIALIZE PAGE TABLE POINTERS | |
272 | SKP | |
273 | RSTRT1, JMS I INCPTI /INCREMENT PAGE TABLE POINTERS | |
274 | JMS I RDIL /INPUT AND DECODE ONE LINE | |
275 | JMS I CKCSWP /CK FOR MISSING ARG | |
276 | DCA BSSSW /ALSO CLR BSS IS PROGRESS SW | |
277 | JMS I STCE /SET COUNTERS FOR CURRENT LINE | |
278 | TAD OP /OP CODE | |
279 | CDF 00 | |
280 | DCA I PTOPR /TO PT OP CODE WORD | |
281 | CDF 10 | |
282 | TAD SK /OR IN SKIP BIT | |
283 | SZA CLA | |
284 | TAD K40 /SKIP INST | |
285 | TAD I PTCPR /IN CASE LFS BIT IN ALREADY | |
286 | DCA TEM1 | |
287 | TAD IB /OR IN INDIRECT BIT | |
288 | SZA CLA | |
289 | TAD K400 /YES | |
290 | TAD TEM1 | |
291 | DCA TEM1 /FOR NEW PT CODE WORD | |
292 | TAD EXP /DO WE HAVE A PAR? | |
293 | SZA CLA | |
294 | JMP RSTRT5 /YES | |
295 | TAD UMIC /A MICRO INST? | |
296 | SNA CLA | |
297 | JMP RSTRT4 /NO AN MRI | |
298 | TAD K4 /OR IN OPERATE BIT | |
299 | JMP COMP /EXIT TO COMPUTE PAGE SIZE | |
300 | / | |
301 | / PAR FOR AN OP CODE | |
302 | / | |
303 | RSTRT5, TAD K10 /PLACE PAR BIT ON PAGE TABLE | |
304 | TAD TEM1 | |
305 | DCA TEM1 | |
306 | RSTRT4, TAD M2 | |
307 | TAD AFS /IS AFS A CONSTANT | |
308 | SZA | |
309 | JMP .+6 /NO | |
310 | TAD K20 /YES ... CONSTANT BIT | |
311 | RSTRT2, TAD TEM1 /+PT CODE WORD | |
312 | DCA TEM1 /FOR NEW PT CODE WORD | |
313 | TAD S0 /ACTUAL BINARY CONSTANT | |
314 | JMP COMPGO /EXIT TO COMPUTE PAGE SIZE | |
315 | IAC | |
316 | SZA CLA /IS AFS A LITERAL | |
317 | JMP .+3 /NO | |
318 | TAD K2 /YES ... LITERAL BIT | |
319 | JMP RSTRT2 /SAVE AS CONSTANT FROM THIS POINT | |
320 | TAD AFS /PLACE AFS ON PST | |
321 | COMPGO, DCA I PTSPR | |
322 | TAD NSGN /CK FOR # REF | |
323 | SZA CLA | |
324 | TAD K2000 /YES | |
325 | COMP, TAD TEM1 /GET ALL THE BITS | |
326 | DCA I PTCPR /TO THE CODE WORD | |
327 | / | |
328 | / NOW COMPUTE THE CURRENT PAGE SIZE | |
329 | / | |
330 | TAD LFS /IS THERE AN LFS | |
331 | SZA CLA | |
332 | JMS I RECTI /YES ... EXIT TO RECOUNT PAGE | |
333 | JMS I CPGESI /COMPUTE ACTUAL PAGE SIZE | |
334 | TAD M200 /SUBTRACT PHYSICAL PAGE SIZE | |
335 | SPA SNA CLA /IS SIZE .GT. PHYSICAL SIZE | |
336 | JMP RSTRT6 /NO ... GET NEXT | |
337 | JMS I PSHINI /YES ... PUSH CURRENT INPUT LINE | |
338 | TAD PUPGE /RESTORE LAST PAGE ESCAPE | |
339 | DCA PGEESC | |
340 | CLA CMA /DECREMENT PAGE TABLE SIZE | |
341 | TAD PTSZE | |
342 | DCA PTSZE | |
343 | / | |
344 | / ASSEMBLE THE CURRENT PAGE | |
345 | / | |
346 | JMS I L55I /ASSEMBLE CURRENT PAGE | |
347 | JMS I UDPG | |
348 | JMS I FIXI /FIX ILC IF PASS 2 | |
349 | JMS I POPINI /POP LAST INPUT LINE | |
350 | JMS I INI /INITIALIZE PT POINTERS | |
351 | DCA I RECTI /CLR RECOUNT FLAG FOR CPLFS | |
352 | JMP RSTRT1+2 /EXIT TO PROCESS POPPED LINE | |
353 | / | |
354 | RSTRT6, TAD PGEESC /SAVE CURRENT PAGE ESCAPE | |
355 | DCA PUPGE /IN CASE NEXT LINE OVERFLOWS PAGE | |
356 | TAD PASS | |
357 | SZA CLA | |
358 | JMS I LASMP | |
359 | JMP RSTRT1 | |
360 | LASMP, ASM02 | |
361 | INITAP, INITA | |
362 | ICALSW, CALLSW | |
363 | INCPTI, INCPT | |
364 | POPINI, POPIN | |
365 | PSHINI, PUSHIN | |
366 | FIXI, FIXILC | |
367 | CKCSWP, CKCSW | |
368 | / PAGE PSEUDO OPERATION | |
369 | / | |
370 | PPAGE, JMS I SKIPL | |
371 | CLA CMA /DECREMENT PAGE TABLE SIZE | |
372 | TAD PTSZE | |
373 | SNA /WATCH FOR ZERO | |
374 | JMP .+3 | |
375 | DCA PTSZE /FOR NEW PAGE TABLE SIZE | |
376 | JMS I L55I /ASSEMBLE CURRENT PAGE | |
377 | JMS I UDPG | |
378 | JMP RORGX /INITIALIZE AND INPUT ANOTHER LINE | |
379 | / | |
380 | / REORG PSEUDO OPERATOIN | |
381 | / | |
382 | PRORG, JMS I GETSYM /GET NEXT INPUT ITEM | |
383 | NOP /NOTHING THERE | |
384 | SKP /SYMBOL | |
385 | SKP CLA /CONSTANT | |
386 | IERROR /LITERAL | |
387 | JMS I SKIPL | |
388 | TAD S0 /NEW RELOCATABLE ORIGIN | |
389 | AND K7600 /MASK OFF PAGE DISPLACEMENT BITS | |
390 | SNA /ARE WE TRYING TO REORIGIN BELOW 200 | |
391 | IERROR /YES ... NOT ALLOWED | |
392 | DCA RORG1 /SAVE NEW ORIGIN | |
393 | CLA CMA /DECREMENT PAGE TABLE SIZE | |
394 | TAD PTSZE | |
395 | SNA /IS THIS THE BEGINNING OF A PAGE | |
396 | JMP .+3 /YES | |
397 | DCA PTSZE | |
398 | JMS I L55I | |
399 | TAD RORG1 /NEW ORIGIN | |
400 | DCA PAG /TO PROPER LOCATION | |
401 | RORGX, JMS I FIXI | |
402 | TAD RSTRTX /RETURN AT RSTRT INSTEAD OF RDL1 | |
403 | DCA DCIL1 | |
404 | JMP I NULLP /RE-INITIALIZE AND GO | |
405 | RORG1, 0 | |
406 | RSTRTX, RSTRT | |
407 | UDPG, UDPAGE | |
408 | INITIO, IOINIT | |
409 | \f*0400 | |
410 | / | |
411 | / ROUTINE TO CAUSE CURRENT PAGE TO BE ASSEMBLED | |
412 | ||
413 | /THIS ROUTINE ACTS AS THE DRIVER FOR THE ASSEMBLY | |
414 | /PROCESS. MOST OF THE ACTUAL ASSEMBLY WORK | |
415 | /IS DONE BY ASMBL,A1,A2,& ASM02. | |
416 | /FUNCTION:(PASS1) | |
417 | / CALL ASMBL TWICE. THE FIRST TIME | |
418 | / (ACTR=0) PROHIBIT OUTPUT BY CONVERTING | |
419 | / "JMS OUTBIN" TO "JMS DUMMY". BUT | |
420 | / ALSO CONVERT "JMS DUMMY" TO "JMS OUTBN" | |
421 | / SO THAT OUTPUTTING OF OCCURANCES | |
422 | / WILL OCCUR IN FIRST CALL TO ASMBL. | |
423 | / IN GENERAL, IN THE FIRST RUN THRU ASMBL | |
424 | / NOTHING HAPPENS EXCEPT THAT TAGS ARE | |
425 | / DEFINED (BY LFSCK). AS THE TAGS ARE | |
426 | / DEFINED LFSCK ALSO CAUSES THE | |
427 | / OCC.TAB. TO BE SEARCHED FOR PREVIOUSLY | |
428 | / UNRESOLVED FORWARD REFERENCES TO THIS | |
429 | / TAG. IF FOUND, RELOCATABLE POINTERS TO | |
430 | / THE TAG ARE OUTPUT AT ALL REQUIRED | |
431 | / ADDRESSES DURING PHASE1 OF ASMBL. | |
432 | / AFTER THE 1ST ASMBL, OUTBIN & DUMMY ARE | |
433 | / SWITCHED BACK TO NORMAL & ASMBL | |
434 | / IS CALLED AGAIN. DURING 2ND ASMBL | |
435 | / THE TAG DEFN. SECTION OF LFSCK IS | |
436 | / BY-PASSED & ALL CODE EXCEPT OCCURANCES | |
437 | / IS OUTPUT. | |
438 | / (PASS2) | |
439 | / DURING THE LISTING PASS MOST OF THE | |
440 | / ASSEMBLY IS DONE ON A LINE-BY-LINE | |
441 | / BASIS BY ASM02 SO L55 HAS LITTLE | |
442 | / TO DO. IT JUST CALLS A2 TO | |
443 | / OUTPUT THE LITERAL POOL & THEN | |
444 | / A1 TO INIT. ASSEMBLY OF THE NEXT | |
445 | / PAGE. | |
446 | / | |
447 | L55, 0 | |
448 | JMP I L55B /CHANGED FROM V16 TO FIX LISTING BUG | |
449 | L55C, TAD PASS | |
450 | SZA CLA | |
451 | JMP L55L | |
452 | JMS I L55A /CHECK COMMON PUNCHED | |
453 | TAD L56 /SET DUMMY ROUTINE TO OUTPUT | |
454 | DCA DUMMY | |
455 | TAD L56+1 /SET OUTPUT ROUTINE TO DUMMY | |
456 | DCA OUTBIN | |
457 | DCA ACTR /CLEAR ASSEMBLY COUNTER | |
458 | TAD EQVOPR /SAVE FOR 2ND ASSEMBL | |
459 | DCA TEM55 | |
460 | JMS I ASSMBL /ASSEMBLE PAGE FIRST TIME | |
461 | TAD L56 /RESTORE OUTPUT ROUTINE | |
462 | DCA OUTBIN | |
463 | TAD L56+1 /RESTORE DUMMY ROUTINE | |
464 | DCA DUMMY | |
465 | ISZ ACTR /SET ASSEMBLY COUNTER | |
466 | TAD TEM55 /RESTORE AS BEFORE 1ST ASSEMBL | |
467 | DCA EQVOPR | |
468 | JMS I ASSMBL /ASSEMBLE AND OUTPUT THIS TIME | |
469 | JMP I L55 /RETURN | |
470 | L56, OUTBN | |
471 | DUM | |
472 | ASSMBL, ASMBL | |
473 | L55A, HCBPS | |
474 | L55B, EQVFIX | |
475 | TEM55, 0 | |
476 | ||
477 | ||
478 | ||
479 | L55L, JMS I A2P | |
480 | JMS I A1P /INITIALIZE NEXT PAGE | |
481 | JMP I L55 | |
482 | A2P, A2 | |
483 | A1P, A1 | |
484 | ||
485 | ||
486 | ||
487 | / | |
488 | /COLLECTION PHASE ROUTINE | |
489 | /RECOUNT THE CURRENT PAGE BECAUSE OF AN LFS | |
490 | /CALL WITH AC=0, LEAVES AC=0 | |
491 | /FUNCTION:WHEN A NEW TAG IS DEFINED ON PAGE | |
492 | / OPSCTR & OBACTR MAY NEED TO BE | |
493 | / REDUCED. CPLFS TAKES CARE OF OPSCTR | |
494 | / BUT OBACTR REQUIRES REVIEWING THE | |
495 | / ENTIRE PAGE. | |
496 | /OPERATION: (1) CALL CLNPST TO CLEAR BITS 1-9 | |
497 | / OF ALL PST CODE WORDS-WIPES OUT | |
498 | / SHARE OF OBACTR DUE TO EACH SYM. | |
499 | / (2) RE-INIT PAGE & CLR OBACTR | |
500 | / (3) FETCH ITEM FROM PAGE TABLE | |
501 | / (4) SET ALL INSTR.TYPE FLAGS ACCORDINGLY | |
502 | / (5) CALL SETC | |
503 | / (6) INC PAGE TABLE PTRS TO NEXT ITEM | |
504 | / & LOOP BACK TO (3) | |
505 | / CONTINUE THRU ENTIRE TABLE. | |
506 | / | |
507 | RECT, 0 | |
508 | TAD PSTSZE /ANYTHING ON PST? | |
509 | SZA | |
510 | JMP I CLENUP /YES, CLEAN PST CODES | |
511 | ||
512 | RECRET, JMS I INISS /DO INITS. | |
513 | DCA OBACTR /ZERO OFF BANK ADDITION COUNTER | |
514 | TAD PTSZE /SIZE OF PT | |
515 | CIA | |
516 | DCA RECT1 /TO INDEX LOCATION | |
517 | / | |
518 | / THIS IS THE RECOUNT LOOP | |
519 | / | |
520 | RECT2, CDF 00 | |
521 | TAD I PTOPR /OP CODE FROM PT | |
522 | CDF 10 | |
523 | DCA OP | |
524 | TAD I PTCPR /CK FOR SKIP INST | |
525 | AND K40 | |
526 | DCA SK | |
527 | TAD I PTCPR /CK FOR # REF | |
528 | AND K2000 | |
529 | DCA NSGN | |
530 | TAD I PTCPR /PT CODE WORD | |
531 | AND K4 /IS IT AN OPERATE INSTRUCTION | |
532 | DCA UMIC | |
533 | TAD I PTCPR /CK FOR PAR EXP | |
534 | AND K10 | |
535 | DCA EXP | |
536 | TAD I PTCPR /PAGE TABLE CODE WORD | |
537 | AND K400 /MASK OFF INDIRECT BIT | |
538 | DCA IB /PLACE IT IN PROPER LOCATION | |
539 | TAD I PTCPR /PT CODE WORD | |
540 | AND K20 /IS AFS A CONSTANT | |
541 | CLL RTR | |
542 | SZA | |
543 | JMP .+3 /YES | |
544 | TAD I PTCPR /PT CODE WORD | |
545 | AND K2 /IS AFS A LITERAL | |
546 | CLL RAR | |
547 | SNA | |
548 | TAD I PTSPR /ADDRESS FIELD SYMBOL | |
549 | DCA AFS | |
550 | TAD I PTSPR /ACTUAL LITERAL | |
551 | DCA S0 /TO LITERAL LOCATION | |
552 | / | |
553 | / AREA WHICH CALLS COUNT ROUTINE | |
554 | / | |
555 | RECT3, TAD I PTCPR /PT CODE WORD | |
556 | AND K201 /IS THERE A TAG OR AN EQUIVALENCED TAG? | |
557 | SNA CLA | |
558 | JMP .+3 /NO | |
559 | CLA CMA /YES ... SET BANK UNKNOWN | |
560 | DCA BANK | |
561 | JMS I STCE /CALL COUNT ROUTINE | |
562 | ISZ RECT1 /OVER YET | |
563 | SKP /NO | |
564 | JMP I RECT /EXIT | |
565 | JMS I ISZPT1 | |
566 | JMP RECT2 /GO GET NEXT LINE | |
567 | RECT1=L55 | |
568 | INISS, INISUB | |
569 | CLENUP, CLNPST | |
570 | K201, 201 | |
571 | ISZPT1, ISZPT | |
572 | PAUS1, PPAUS1 | |
573 | / | |
574 | / END PSEUDO OPERATION | |
575 | / | |
576 | PEND, TAD FORFLG /IF FLAG ON, TURN OFF & | |
577 | SMA SZA CLA /GO TO RDL1 | |
578 | JMP I PAUS1 /GO TURN OFF FORTR P-OP | |
579 | CLA CMA /DECREMENT PT SIZE | |
580 | TAD PTSZE | |
581 | SNA /ARE WE AT THE BEGINNING OF A PAGE | |
582 | JMP PCSM /YES | |
583 | DCA PTSZE /NO ... NEW PAGE TABLE SIZE | |
584 | TAD PAG /CHECK FOR OVERFLOW INTO 7600 PAGE | |
585 | TAD K200 | |
586 | SNA CLA | |
587 | SERROR /OVERFLOW-ERROR S | |
588 | ISZ APMSW /LEAVE AUTO PAGING MODE FOR LAST PAGE | |
589 | JMS L55 /ASSEMBLE CURRENT PAGE | |
590 | PCSM, JMS I OUTBIN /OUTPUT CKSUM | |
591 | CSUM | |
592 | 10 | |
593 | TAD PASS | |
594 | SZA CLA | |
595 | JMP ENDEND | |
596 | JMS I LEAD /OUTPUT TRAILER CODE | |
597 | JMS I PRSYMP /TYPE OUT SYMBOL TABLE | |
598 | ISZ PASS | |
599 | JMS I INITAI | |
600 | JMS I A1P | |
601 | HLT | |
602 | JMP I REE | |
603 | ENDEND, JMS I WLNP /LIST THE "END" STATMT | |
604 | HLT CLA | |
605 | JMP I K200 /RESTART AT 200 | |
606 | REE, RSTRT | |
607 | INITAI, INITA | |
608 | LEAD, LEADER | |
609 | ||
610 | ||
611 | \f*600 | |
612 | /READ INPUT ITEM | |
613 | / IGNORES SPACES & TABS TO 1ST CHAR OF ITEM | |
614 | /ASSUMES AC=0 | |
615 | /CALLING SEQ: JMS I GETSYM | |
616 | / NULL RETURN (IF NO ITEM FOUND BEFORE CR ; / * | |
617 | / SYMBOL RET. (WITH SYM PACKED IN S1-S3 | |
618 | / AND S0=SYMBOL LENGTH) | |
619 | / CONST. RET. (WITH VALUE IN S0) | |
620 | / LITERAL RET. (WITH VALUE IN S0) | |
621 | /SYNTAX: LITERALS: (000 NUMERIC LIT. | |
622 | / (-000 NEG. | |
623 | / (K000 OCTAL | |
624 | / (D000 DECIMAL | |
625 | / ("A ASCII LIT. | |
626 | / (-"A NEGATIVE ASCII | |
627 | / CONSTANTS: 000,-000,"A,OR -"A | |
628 | / NOTE: AFTER A VALID QUOTE ANY ASCII CHAR MAY APPEAR | |
629 | / AND WILL BE STORED AS THE CONST OR LIT VALUE. | |
630 | / THIS INCLUDES CR ; / * SO THESE DO NOT | |
631 | / TERMINATE A LINE AFTER A QUOTE. | |
632 | /ALL EXITS LEAVE AC=0 | |
633 | /NOTE: TO PROVIDE A CHECK OF THE PUNCTUATION | |
634 | /CHAR. FOLLOWING PREVIOUSLY READ SYMBOL, GTSYM | |
635 | /DECREMENTS THE LINE PTR BEFORE STARTING | |
636 | /THE READ. IF THIS IS NOT WANTED | |
637 | /CALL TO GTSYM MUST BE PRECEDED | |
638 | /BY "ISZ X0" | |
639 | ||
640 | GTSYM, 0 | |
641 | CMA /DECREMENT CHARACTER PTR | |
642 | TAD X0 | |
643 | DCA X0 | |
644 | TAD DSW /SAVE NUMERIC MODE | |
645 | DCA TEM4 | |
646 | CMA /SIGN=-1 FOR POSITIVE | |
647 | ITM4, DCA SIGN /SIGN=0 TO FORCE NEGATION | |
648 | ITM2, JMS I RC /READ 1ST CHAR | |
649 | JMP ITM5 /DIGIT: GET NUMERIC CONST | |
650 | JMP ITM3 /ALPHA: GET SYMBOL | |
651 | JMS I TEST /SORT LEADING PUNCT. | |
652 | SL2-1 | |
653 | BL2-SL2 | |
654 | CERROR /ILLEGAL CHAR | |
655 | / | |
656 | /READ IN A SYMBOL | |
657 | /ASSUMES 1ST CHAR ALREADY READ IN & SAVED IN CHR | |
658 | /LEAVES SYMBOL PACKED IN 6BIT CHAR PAIRS IN S1-S3 | |
659 | / S0=NUMBER OF CHAR PAIRS ACTUALLY USED | |
660 | ||
661 | ITM3, ISZ SIGN /CK FOR -SYMBOL | |
662 | CERROR /YES | |
663 | DCA S0 /CLR FOR SYM LENGTH COUNT | |
664 | DCA TEM1 /CLR FOR CHAR COUNT | |
665 | DCA TEM3 /SET PTR FOR LEFT BYTE | |
666 | TAD AS0 /AUTO-INDEX STORAGE IN S1-S3 | |
667 | DCA X2 | |
668 | RSM2, ISZ TEM1 /COUNT CHAR | |
669 | TAD TEM1 /ARE MORE THAN 6 CHARS IN? | |
670 | TAD M7 | |
671 | SMA CLA | |
672 | JMP RSM1 /YES, IGNORE | |
673 | TAD CHR /NO, GET ASCII | |
674 | AND K77 /MASK TO 6BIT | |
675 | ISZ TEM3 /WHICH BYTE? | |
676 | JMP RSM3 /LEFT | |
677 | TAD TEM2 /ADD ON LEFT HALF | |
678 | DCA I X2 /STORE CHAR PAIR IN S1-S3 | |
679 | JMP RSM1 | |
680 | RSM3, RTL CLL /MOVE 6BIT TO LEFT BYTE | |
681 | RTL | |
682 | RTL | |
683 | DCA TEM2 /SAVE WHILE WAITING ON RT BYTE | |
684 | CMA /SET PTR FOR RT BYTE | |
685 | DCA TEM3 | |
686 | ISZ S0 /COUNT 1 SYMBOL WORD | |
687 | RSM1, JMS I RC /READ NEXT CHAR | |
688 | JMP RSM2 /DIGIT | |
689 | JMP RSM2 /ALPHA | |
690 | ISZ TEM3 /PUNCT=END OF SYM: CHECK BYTE PTR | |
691 | JMP .+3 /NOTHING IN TEM2 | |
692 | TAD TEM2 /SAVE THE ODD CHAR | |
693 | DCA I X2 | |
694 | TAD I IFCTP /SKIP SYM TAB IF IF-COUNT NOT UP | |
695 | SMA CLA | |
696 | JMS I SRS /LOOK IT UP IN SYM TAB. & ENTER IF NEC. | |
697 | JMP ITM14 /EXIT | |
698 | ||
699 | /READ DIGIT STRING | |
700 | /ASSUMES 1ST DIGIT ALREADY READ AND ASCII SAVED IN CHR | |
701 | / SGN=-1 IF NUM. IS TO BE NEGATED | |
702 | / DSW=0 FOR OCTAL CONVERSION, 1 FOR DECIMAL | |
703 | /LEAVES AC=OCTAL VALUE OF DIGIT STRING (NEG IF SGN=-1) | |
704 | / CHR=ASCII FOR TERMINAL PUNCTUATION | |
705 | ||
706 | ITM5, DCA TEM1 /CLEAR FOR ACCUMULATION | |
707 | RDS1, TAD CHR /REDUCE CHR TO OCTAL VALUE | |
708 | TAD M260A | |
709 | DCA TEM2 | |
710 | TAD DSW /OCTAL OR DECIMAL CONVERSION? | |
711 | SZA CLA /OCTAL, CK FOR 8 OR 9 | |
712 | JMP MUL1 /DECIMAL, 8 OR 9 IS OK | |
713 | TAD TEM2 /VALUE = 8 OR 9? | |
714 | TAD M7 | |
715 | SMA SZA CLA /NO, GO ON | |
716 | CERROR /YES | |
717 | /MULT. PREV. VAL. BY CONV. FACTOR | |
718 | TAD TEM1 | |
719 | CLL RTL /ARG *4 | |
720 | JMP MUL1+3 | |
721 | MUL1, TAD TEM1 | |
722 | CLL RTL /ARG * 4 | |
723 | TAD TEM1 /PLUS ARG=ARG*5 | |
724 | RAL /*2 | |
725 | TAD TEM2 /ADD NEW DIGIT | |
726 | DCA TEM1 /SAVE ACCUMULATED VALUE | |
727 | JMS I RC /READ NEXT CHAR. | |
728 | JMP RDS1 /DIGIT | |
729 | CERROR /ALPHA | |
730 | TAD TEM1 /PUNCT.; GET TOTAL | |
731 | ITM6, ISZ SIGN /IS NEGATE SW. SET? | |
732 | CIA /YES | |
733 | DCA S0 /STORE CONST VALUE | |
734 | TAD TEM4 /RESTORE NUMERIC MODE | |
735 | DCA DSW | |
736 | JMP ITM13 /EXIT | |
737 | ITM7, JMS I GETCHR /READ ALPHA CONST. | |
738 | SNA | |
739 | IERROR /NOTHING THERE | |
740 | DCA TEM1 | |
741 | JMS I GETCHR /READ NEXT CHAR FOR BENEFIT OF SKIPL | |
742 | CLA | |
743 | TAD TEM1 | |
744 | JMP ITM6 | |
745 | ITM8, JMS I CKIFP /MOVE PTR TO LITERAL EXIT | |
746 | ITM9, JMS I RC /READ 1ST CHAR OF LIT. | |
747 | JMP ITM5 /DIGIT: NUMERIC LIT. | |
748 | NOP /ALPHA: MUST BE K OR D | |
749 | JMS I TEST /LOOK FOR K,D,",- | |
750 | SL3-1 | |
751 | BL3-SL3 | |
752 | CERROR /ILLEGAL CHAR | |
753 | ITM10, DCA SIGN /SET FLAG FOR NEG. LIT. | |
754 | JMP ITM9 | |
755 | ITM11, IAC /FORCE DECIMAL LIT. | |
756 | ITM12, DCA DSW /FORCE OCTAL LIT. | |
757 | JMP ITM9 | |
758 | ITM13, JMS I CKIFP /CONST. EXIT | |
759 | ITM14, JMS I CKIFP /SYMBOL EXIT | |
760 | ITM15, JMP I GTSYM /NULL EXIT | |
761 | M260A, -260 | |
762 | SRS, SRSYM | |
763 | RC, RCH | |
764 | SIGN, 0 | |
765 | IFCTP, IFCTR | |
766 | CKIFP, CKIF | |
767 | AERROR=JMP I . | |
768 | ERRA | |
769 | CALLSP, CALLSW | |
770 | / | |
771 | /CHECK FOR TOO FEW ARGS | |
772 | /AERROR IF CALLSW MINUS | |
773 | / | |
774 | CKCSW, 0 | |
775 | TAD I CALLSP /CK | |
776 | SMA CLA | |
777 | JMP I CKCSW /OK | |
778 | ISZ I CALLSP /COUNT MISSING ARG | |
779 | NOP | |
780 | AERROR /FLAG | |
781 | / | |
782 | /CHECK FOR TOO MANY ARGS | |
783 | /AERROR IF CALLSW POSITIVE | |
784 | / | |
785 | CKCLS, 0 | |
786 | TAD I CALLSP /DO WE WANT THIS ARG? | |
787 | SMA CLA | |
788 | AERROR /NO, ARG COUNT OVERFLOW | |
789 | ISZ I CALLSP /YES, COUNT THIS ARG | |
790 | NOP | |
791 | JMP I CKCLS | |
792 | \f*1000 | |
793 | / | |
794 | / ROUTINE TO INITIALIZE POINTERS FOR THE COLLECTION OF A PAGE | |
795 | / | |
796 | INILPT, 0 | |
797 | CLA IAC | |
798 | DCA PTSZE /SET PAGE TABLE SIZE | |
799 | DCA PSTSZE /ZERO PAGE SYMBOL TABLE SIZE | |
800 | DCA LTSZE /ZERO LITERAL TABLE SIZE (COLL. PHASE) | |
801 | DCA LITSZE /& ASMBLY PHASE LIT TABL | |
802 | DCA OPSCTR /ZERO OFF PAGE SYMBOL COUNTER | |
803 | DCA PHASE /SET PHASE SWITCH TO COLLECTION | |
804 | JMS INISUB | |
805 | CLA CMA | |
806 | DCA I BNKSV | |
807 | CLA IAC | |
808 | DCA I LSTSKK | |
809 | TAD EQVBIT /ANY EQUIV. LEFT FROM LAST PAGE? | |
810 | SZA | |
811 | JMP EQSAV /YES, SKIP TABLE REINIT & SAVE BIT | |
812 | DCA EQVIPR /NO, RE-INIT EQ. TAB. PTRS | |
813 | DCA EQVOPR | |
814 | EQSAV, DCA I PTCPR /INITIALIZE PAGE TABLE CODE WORD | |
815 | DCA I PTSPR /INITIALIZE PAGE TABLE SYMBOL WORD | |
816 | CDF 00 | |
817 | DCA I PTOPR /INITIALIZE PT OP CODE WORD | |
818 | CDF 10 | |
819 | TAD LFSBSE /INITIALIZE LFS TABLE POINTER | |
820 | DCA LFSPTR | |
821 | DCA OBACTR /ZERO OFF BANK ADDITION COUNTER | |
822 | TAD RDL1X /RESTORE IN CASE OF REORG OR PAGE PSUEDO | |
823 | DCA DCIL1 | |
824 | JMP I INILPT /RETURN | |
825 | ||
826 | RDL1X, RDL1 | |
827 | BNKSV, BNKSAV | |
828 | LSTSKK, SKPSAV | |
829 | M211, -211 | |
830 | ||
831 | ||
832 | / | |
833 | /GENERAL PAGE TABLE INITALIZATION | |
834 | /DOES PARTS OF INITALIZ. COMMON TO SEVERAL | |
835 | /ROUTINES | |
836 | / | |
837 | INISUB, 0 | |
838 | TAD PTBSE /INITIALIZE PAGE TABLE CODE POINTER | |
839 | DCA PTCPR | |
840 | TAD PTBSE /INITIALIZE PAGE TABLE SYMBOL POINTER | |
841 | IAC | |
842 | DCA PTSPR | |
843 | TAD PTOPTB /INITIALIZE PT OP CODE POINTER | |
844 | DCA PTOPR | |
845 | CLA CMA /SET LAST BANK UNKNOWN | |
846 | DCA LSTBNK | |
847 | CLA IAC /SET LAST INSTRUCTION SKIP INDICATOR ON | |
848 | DCA LSTSKP | |
849 | CLA CMA /SET CURRENT BANK UNKNOWN | |
850 | DCA BANK | |
851 | JMP I INISUB | |
852 | ||
853 | ||
854 | / | |
855 | /SUBR. TO WRITE A LINE | |
856 | /MAY BE USED ONLY DURING PASS 2 (LISTING) | |
857 | /FUNCTION:TYPES (OR PUNCHES) EACH LINE OF SOURCE | |
858 | / WITH PROPER ASSEMBLY ADDR. & CODES | |
859 | / AT BEGINNING OF LINE (OR SPACES IF | |
860 | / THESE ARE OMITTED). | |
861 | /LINE FORMAT: | |
862 | /ADDR VALU RC CONTENTS OF LINE BUFFER | |
863 | /ERROR FLAGS TYPED BETWEEN ADDR & VALU | |
864 | /COLUMNS. RC=RELOCATION CODE. THE LINE | |
865 | /BUFFER IS IN FIELD 1 AT "LINBUF." | |
866 | / | |
867 | WLN, 0 | |
868 | TAD LFLG /NULL LINE? | |
869 | SNA CLA | |
870 | JMP WLN3 /YES | |
871 | TAD AFLG | |
872 | SZA CLA | |
873 | JMP .+4 | |
874 | JMS I CTYPE /IF AFLG=0 TYPE 4 SPACES | |
875 | JMS I CTYPE | |
876 | JMP .+3 | |
877 | TAD ADDRES /OTHERWISE TYPE 4 DIGITS | |
878 | JMS I OTYPE | |
879 | TAD EFLG /TYPE ERR. FLAG & SPACE | |
880 | JMS I CTYPE | |
881 | TAD VFLG /SAME TREATMENT FOR VALUE | |
882 | SZA CLA /AS FOR ADDRES | |
883 | JMP .+4 | |
884 | JMS I CTYPE | |
885 | JMS I CTYPE | |
886 | JMP .+3 | |
887 | TAD VALUE | |
888 | JMS I OTYPE | |
889 | TAD K240 /SPACE | |
890 | JMS I TYPE | |
891 | TAD CODE /2 DIGITS OR 2 SPACES | |
892 | JMS I CTYPE | |
893 | CDF 00 | |
894 | TAD I LINEB /IS THERE ANY LINE TO TYPE? | |
895 | CDF 10 | |
896 | SNA CLA | |
897 | JMP WLN3 /NO, EXIT | |
898 | JMS I CTYPE /2 SPACES | |
899 | TAD K240 /3RD SPACE | |
900 | JMS I TYPE | |
901 | TAD LINAX /INDEX LINE BUFFER | |
902 | DCA X1 | |
903 | DCA CHARCT /CLR COUNTER | |
904 | WLN1, CDF 00 | |
905 | TAD I X1 /GET CHAR | |
906 | CDF 10 | |
907 | SNA | |
908 | JMP WLN3 /END OF LINE | |
909 | DCA CHR | |
910 | TAD CHR /CK FOR TAB | |
911 | TAD M211 | |
912 | SNA CLA | |
913 | JMP WLN2 /YES | |
914 | ISZ CHARCT /COUNT 1 CHAR | |
915 | TAD CHR /OUTPUT IT | |
916 | JMS I TYPE | |
917 | JMP WLN1 | |
918 | WLN2, TAD K240 /SIMULATE TAB | |
919 | ISZ CHARCT | |
920 | JMS I TYPE | |
921 | TAD CHARCT | |
922 | AND K7 | |
923 | SZA CLA | |
924 | JMP WLN2 /CONTINUE TAB | |
925 | JMP WLN1 | |
926 | WLN3, JMS I CRLF | |
927 | DCA VFLG | |
928 | DCA EFLG | |
929 | DCA AFLG | |
930 | DCA CODE | |
931 | CDF 00 | |
932 | DCA I LINEB | |
933 | CDF 10 | |
934 | JMP I WLN | |
935 | ||
936 | LINEB, LINBUF | |
937 | CHARCT=TEM5 | |
938 | / | |
939 | /PATCH FOR SETCT | |
940 | /NOT USED BY ANY OTHER PART OF PROGRAM | |
941 | /(ADDED AT V15) | |
942 | / | |
943 | /FUNCTION: SET BANK=1 AFTER A "CALL" | |
944 | /(MUST BE DONE FOR BENEFIT OF RECT ROUTINE) | |
945 | / | |
946 | SETCAL, 0 | |
947 | TAD I PTCPR /CK FOR CALL CONST. | |
948 | AND K100 | |
949 | SNA CLA | |
950 | JMP .+3 /NO | |
951 | IAC /YES, BANK TO CURRENT | |
952 | DCA BANK | |
953 | TAD EXP /DO 2 INSTRUCTIONS THAT | |
954 | TAD UMIC /WERE KNOCKED OUT OF SETCT | |
955 | JMP I SETCAL | |
956 | ||
957 | ||
958 | \f*1200 | |
959 | / | |
960 | / ASSEMBLY PHASE PAR | |
961 | ||
962 | / | |
963 | /PPAR1 IS ACTUALLY A PART OF THE BASIC ASSEMBLY | |
964 | /ROUTINE ASM02. | |
965 | /IT ASSEMBLES ALL PARAMETERS | |
966 | /TYPES ARE: RC=00 ABSOLUTE CONSTANT | |
967 | / RC=01 RELOCATABLE ADDRESS | |
968 | / RC=05 CDF TO CURRENT FIELD | |
969 | / RC=06 CALL CONSTANT (#ARGS+EXT.SYM.#) | |
970 | / ALSO LITERALS USED IN ARG STATEMENTS | |
971 | / SUCH LITS. ARE PUT IN LIT. POOL | |
972 | / AND RC=01 ADDRESS OF LIT. PUT WHERE | |
973 | / THE ARG STATEMT OCCURS. | |
974 | /ADDRESS PARAMETERS ARE ACUALLY TAKEN | |
975 | /CAR OF BY SUBR. PPAR3S. | |
976 | / | |
977 | / | |
978 | PPAR1, DCA PPARY /CLR OUTPUT CODE | |
979 | TAD I PTCPR /CK FOR LITERAL ARG OR PARAM. | |
980 | AND K2 | |
981 | SZA CLA | |
982 | JMP PARLIT /YES | |
983 | TAD I PTCPR /PT CODE WORD | |
984 | AND K20 /IS IT PAR CONSTANT | |
985 | SNA CLA | |
986 | JMP PPAR3 /NO | |
987 | TAD I PTSPR /YES ... ACTUAL CONSTANT | |
988 | DCA TEM1 /TO DIRECTLY ADDRESSABLE LOC | |
989 | TAD I PTCPR /IS THIS A SPECIAL CONSTANT USED BY CALL | |
990 | AND K100 | |
991 | SNA CLA | |
992 | JMP .+5 | |
993 | IAC /YES, SET BANK TO CURRENT (NEW IN V15) | |
994 | DCA BANK | |
995 | IAC /& FORCE CODE=06 | |
996 | JMP .+5 | |
997 | TAD I PTCPR /IS THIS A CDF INSTRUCTION TO THIS BANK | |
998 | AND K1000 | |
999 | SNA CLA | |
1000 | JMP .+3 | |
1001 | TAD K5 | |
1002 | DCA PPARY | |
1003 | JMS I WRITEP | |
1004 | JMS I OUTBIN /OUTPUT IT | |
1005 | TEM1 /NO RELOCATION | |
1006 | PPARY, 0 | |
1007 | SKP | |
1008 | PPAR3, JMS PPAR3S /DO ALL WORK | |
1009 | JMP I PPAR5-1 | |
1010 | SERALI, SRALT | |
1011 | ||
1012 | PARLIT, TAD I PTSPR /PUT LIT ON TAB. | |
1013 | DCA S1 | |
1014 | IAC | |
1015 | DCA S0 | |
1016 | JMS I SERALI | |
1017 | AND K177 /GET PAGE ADDRESS | |
1018 | TAD PAG /+ PAGE BITS | |
1019 | DCA TEM1 | |
1020 | ISZ PPARY /CODE FOR RELOCATABLE ADDR. | |
1021 | JMP PPARY-3 | |
1022 | / | |
1023 | / SUBROUTINE TO ASSEMBLE PAR SYMBOL | |
1024 | ||
1025 | / | |
1026 | /ASSEMBLE ADDRESS PARAMETER | |
1027 | /SYMBOL MAY BE ABSOLUTE OR RELOCATABLE | |
1028 | /NORMAL OR # REF. | |
1029 | /IF SYMBOL IS YET UNDEFINED, AN ENTRY IS | |
1030 | /MADE FOR IT & THE CURRENT ADDRESS IN THE | |
1031 | /OCCURANCE TABLE. | |
1032 | / | |
1033 | / | |
1034 | PPAR3S, 0 | |
1035 | DCA PPARX /CLR OUTPUT CODE | |
1036 | TAD ACTR /WHCH TIME ARE WE ASSEMBLING THIS PAGE | |
1037 | /NOTE: ACTR REMAINS 1 DURING PASS 2 | |
1038 | SNA CLA | |
1039 | JMP I PPAR3S /FIRST TIME JUST RETURN | |
1040 | TAD I PTSPR /SYMBOL | |
1041 | DCA AFS /TO DIRRECTLY ADDRESSABLE LOCATION | |
1042 | JMS I OBSYM /GET IT FROM MST | |
1043 | AFS | |
1044 | TAD USE /MST USE WORD | |
1045 | AND K400 /IS IT DEFINED YET | |
1046 | SNA CLA | |
1047 | JMP PPAR4 /NO ... OCCURANCE | |
1048 | TAD USE /MST USE WORD | |
1049 | AND K3000 /IS SYMBOL ABSOLUTE | |
1050 | SZA CLA | |
1051 | ISZ PPARX /OUTPUT RELOCATABLE | |
1052 | JMS I NSCHKI | |
1053 | TAD VAL /INCREMENT IF # REF. | |
1054 | PPAR6, DCA TEM1 | |
1055 | JMS I WRITEP | |
1056 | JMS I OUTBIN | |
1057 | TEM1 | |
1058 | PPARX, 0 | |
1059 | JMP I PPAR3S /RETURN | |
1060 | PPAR4, TAD AFS /SYMBOL | |
1061 | DCA I PPAR5 /TO SUBROUTINE LOCATION | |
1062 | TAD ILC /CUR LOC | |
1063 | DCA I PPAR5+1 /TO SUBROUTINE LOC | |
1064 | JMS I NSCHKI | |
1065 | CLL RTL | |
1066 | DCA I PPAR5+3 /SET ATEM2 FOR NORMAL OR # REFERENCE | |
1067 | JMS I PPAR5+2 /CREATE AN OCCURANCE | |
1068 | JMP PPAR6 /OUTPUT ZERO WORD FOR LOADER | |
1069 | ASM01 | |
1070 | PPAR5, ATEM3 | |
1071 | ATEM4 | |
1072 | L53B | |
1073 | ATEM2 | |
1074 | NSCHKI, NSCHK | |
1075 | ||
1076 | / | |
1077 | /TWO CHARACTER TYPEOUT | |
1078 | /FROM PACKED ASCII PAIR | |
1079 | /CALL WITH 6-BIT PAIR IN AC | |
1080 | /L61A ACTS AS SUBR FOR L61 | |
1081 | / | |
1082 | L61, 0 | |
1083 | DCA TEM1 /SAVE CHARACTERS | |
1084 | TAD TEM1 | |
1085 | RTR /SHIFT HIGH 6 BITS TO LOW | |
1086 | RTR | |
1087 | RTR | |
1088 | JMS L61A /MASK AND TYPE FIRST CHARACTER | |
1089 | TAD TEM1 | |
1090 | JMS L61A /MASK AND TYPE SECOND CHARACTER | |
1091 | JMP I L61 /RETURN | |
1092 | ||
1093 | L61A, 0 | |
1094 | AND K77 /MASK CHAR TO 6 BITS | |
1095 | SNA /ZERO MEANS SPACE | |
1096 | JMP L61B | |
1097 | JMP I L61CP /HAVE DO SOME OF THIS WORK ON ANOTHER PAGE | |
1098 | L61D, JMS I TYPE /TYPE CHAR | |
1099 | JMP I L61A /RETURN | |
1100 | L61B, TAD K240 /SPACE | |
1101 | JMP L61D | |
1102 | L61CP, L61C | |
1103 | ||
1104 | / | |
1105 | / ROUTINE TO TEST CHARACTERS AND TAKE SELECTIVE EXITS | |
1106 | / | |
1107 | / CALL IS | |
1108 | / JMS I TEST | |
1109 | / SORT LIST ADDR -1 | |
1110 | / BRANCH LIST ADDR - SORT LIST ADDR | |
1111 | / RETURN IF ALL TESTS UNSUCCESSFUL | |
1112 | / ASSUMES AC=0 & CHAR TO LOOK FOR IS IN CHR | |
1113 | ||
1114 | /SORT ENDS UNSUCCESSFULLY AT | |
1115 | /NEGATIVE NUMBER FOLLOWING SORT LIST | |
1116 | /IF SORT IS SUCCESSFUL, A BRANCH IS | |
1117 | /TAKEN VIA BR. LIST ITEM CORRESPONDING | |
1118 | /TO MATCHING SORT LIST ITEM. | |
1119 | / | |
1120 | TSCHR, 0 | |
1121 | CLA | |
1122 | TAD I TSCHR /GET SORT LIST ADDR -1 | |
1123 | DCA X1 /AUTO-INDEX SORT LIST | |
1124 | ISZ TSCHR /MOVE ARG PTR | |
1125 | CDF 00 | |
1126 | TSCHR2, TAD I X1 /GET SORT LIST ITEM | |
1127 | SPA | |
1128 | JMP TSCHR3 /NEG = END OF SORT LIST | |
1129 | CIA /COMPARE ITEM WITH CHR | |
1130 | TAD CHR | |
1131 | SZA CLA /0 = MATCH FOUND | |
1132 | JMP TSCHR2 /NO MATCH, TRY NEXT ITEM | |
1133 | TAD X1 /GET ADDR. OF MATCH | |
1134 | CDF 10 | |
1135 | TAD I TSCHR /+BR. LIST ADDR - SORT LIST ADDR | |
1136 | DCA TSCHR /= PTR TO BR. LIST ITEM | |
1137 | CDF 00 | |
1138 | TAD I TSCHR /GET BR. LIST ITEM | |
1139 | DCA TSCHR /= BRANCH PTR FOR THE MATCH | |
1140 | SKP | |
1141 | TSCHR3, ISZ TSCHR /NO MATCH ON LIST | |
1142 | CLA CLL | |
1143 | CDF 10 | |
1144 | JMP I TSCHR / RETURN UNSUCCESSFUL | |
1145 | ||
1146 | ||
1147 | \f*1400 | |
1148 | / | |
1149 | / CALL PSEUDO OPERATION | |
1150 | / | |
1151 | PCALL, JMS I GETSYM /GET NEXT INPUT ITEM | |
1152 | NOP /NOTHING THERE | |
1153 | SKP /SYMBOL | |
1154 | TAD CHR /CONSTANT | |
1155 | TAD M254 /LITERAL | |
1156 | SZA CLA /IS BREAK CHARACTER A COMMA | |
1157 | JMP CALERR /NO ... ERROR | |
1158 | TAD S0 /SAVE ARG COUNT | |
1159 | DCA ARGCT | |
1160 | ISZ X0 /PROHIBIT FLAGGING THE COMMA | |
1161 | JMS I GETSYM /GET SUBROUTINE NAME | |
1162 | SKP /NONE THERE | |
1163 | JMP .+3 /SYMBOL | |
1164 | NOP /CONSTANT | |
1165 | CALERR, IERROR /LITERAL | |
1166 | JMS I SKIPL | |
1167 | JMS I SREST /SEARCH EXTERNAL SYMBOL TABLE AND OUTPUT TV DEF | |
1168 | DCA PCALL1 /SAVE EXTERNAL SYMBOL NUMBER | |
1169 | TAD LFS | |
1170 | DCA I CALLFS | |
1171 | TAD ARGCT /SET ARG COUNT IN DYNAMIC LOCATION | |
1172 | CIA | |
1173 | DCA CALLSW /SET CALL - ARG IN PROCESS SWITCH & COUNTER | |
1174 | TAD ARGCT /COUNT OF ARGS | |
1175 | RAL CLL /*2 | |
1176 | TAD ARGCT /*3 IN CASE USING LITERAL ARGS | |
1177 | TAD K2 /+2 | |
1178 | JMS I PARG2 /CAN THE CURRENT PAGE HOLD IT | |
1179 | SKP /YES | |
1180 | JMS I INI /NO ... INITIALIZE PT PTRS ... HAD TO ASSEMBLE PAG | |
1181 | TAD I CALLFS | |
1182 | DCA LFS | |
1183 | JMS I ICPLFS /PROCESS COLLECTION LFS | |
1184 | TAD I PTCPR /PT CODE WORD | |
1185 | TAD K30 /ADD CONSTANT BIT & PAR BIT | |
1186 | DCA I PTCPR /TO PT CODE WORD | |
1187 | TAD PARG6 /PLACE JMS LINK INSTRUCTION | |
1188 | DCA I PTSPR /AS CONSTANT | |
1189 | JMS PARG5 /INC PT PTRS & ASSMBL IF PASS 2 | |
1190 | TAD K130 /CORRECT BIT PATTERN FOR CALL | |
1191 | DCA I PTCPR /TO PT CODE WORD | |
1192 | IAC /A CALL FORCES BANK TO CURRENT | |
1193 | DCA LSTBNK /(NEW IN V15) | |
1194 | IAC | |
1195 | DCA BANK | |
1196 | TAD ARGCT /COUNT OF ARGS | |
1197 | CLL RTL /TO HIGH ORDER AC | |
1198 | RTL | |
1199 | RTL | |
1200 | TAD PCALL1 /OR IN EXTERNAL SYMBOL NUMBER | |
1201 | DCA I PTSPR /PLACE IN PT SYMBOL WORD | |
1202 | JMP ARGPP0 /COMMON EXIT | |
1203 | / | |
1204 | / ARG PSEUDO OPERATION | |
1205 | / | |
1206 | PARG, JMS I GETSYM /GET NEXT INPUT ITEM | |
1207 | IERROR /NOTHING THERE | |
1208 | JMP PARGSM /SYMBOL | |
1209 | JMP PARGCN /CONSTANT CODE IS 2 | |
1210 | JMS I SKIPL /FIXES BUG IN V16 | |
1211 | JMS I SLITAB /PUT LIT ON TABLE | |
1212 | CMA /LIT CODE IS 1 | |
1213 | PARGCN, TAD K2 | |
1214 | SKP | |
1215 | PARGSM, TAD SYMBOL /PAR ADDRESS | |
1216 | DCA AFS | |
1217 | JMS I SKIPL | |
1218 | JMS I CKCLSP /CK FOR TOO MANY ARGS | |
1219 | / | |
1220 | / ROUTINE TO PUT A CDF IN THE PAGE TABLE | |
1221 | / | |
1222 | TAD K30 /PT CODE WORD | |
1223 | DCA I PTCPR /TO PT | |
1224 | JMS I ICPLFS /PROCESS ANY LFS | |
1225 | TAD K6201 /CDF | |
1226 | DCA I PTSPR /TO PT SYMBOL WORD | |
1227 | TAD M2 | |
1228 | TAD AFS /IS AFS A CONSTANT | |
1229 | SNA | |
1230 | JMP ARGPP4 /YES | |
1231 | IAC /IS AFS A LITERAL | |
1232 | SNA CLA | |
1233 | JMP ARGPP5 /YES | |
1234 | JMS I OBSYM /NO ... SYMBOL ... GET ITS POINTERS TO MST | |
1235 | AFS | |
1236 | TAD USE /AFS MST USE WORD | |
1237 | AND K40 /IS IT A COMMON SYMBOL | |
1238 | SNA CLA | |
1239 | JMS CDFCHG /NO | |
1240 | JMS ARGPP2 /INCREMENT PT PTRS AND PUT OUT A PAR | |
1241 | TAD AFS | |
1242 | DCA I PTSPR /PLACE SYMBOL IN PT SYMBOL WORD | |
1243 | ARGPP0, JMS PARG5 /INC PT PTRS &ASSMBL IF PASS 2 | |
1244 | JMP I POPEXP /EXIT TO GET NEXT LINE | |
1245 | ||
1246 | / | |
1247 | ARGPP5, JMS CDFCHG | |
1248 | JMS ARGPP2 /INCREMENT PTRS AND PUT OUT A PAR | |
1249 | TAD K2 /SET LITERAL BIT | |
1250 | JMP .+3 /SAVE AS CONSTANT FROM HERE | |
1251 | / | |
1252 | ARGPP4, JMS ARGPP2 /INCREMENT PTRS AND PUT OUT A PAR | |
1253 | TAD K20 /SET CONSTANT BIT | |
1254 | TAD I PTCPR /PT CODE WORD | |
1255 | DCA I PTCPR /FOR PROPER WORD | |
1256 | TAD S0 /PLACE CONSTANT IN PROPER LOCATION | |
1257 | DCA I PTSPR | |
1258 | JMP ARGPP0 | |
1259 | / | |
1260 | / ROUTINE TO INCREMENT POINTERS AND SET UP FOR A PAR IN THE PAGE TABLE | |
1261 | / | |
1262 | ARGPP2, 0 | |
1263 | JMS PARG5 /INC PT PTRS & ASSMBL IF PASS 2 | |
1264 | TAD K10 | |
1265 | DCA I PTCPR | |
1266 | JMP I ARGPP2 /RETURN | |
1267 | K6201, CDF 10 | |
1268 | ||
1269 | ASMIF1, 0 | |
1270 | TAD PASS | |
1271 | SZA CLA | |
1272 | JMS I ASM02S /ASSMBL NOW IF LISTING PASS | |
1273 | JMS I INC | |
1274 | JMP I ASMIF1 | |
1275 | ||
1276 | ASM02S, ASM02 | |
1277 | INC, INCPT | |
1278 | ||
1279 | ARGCT, 0 | |
1280 | CALLFS=PRSYMP /TEMP | |
1281 | CALLSW, 0 | |
1282 | PARG2, IFFSUB | |
1283 | CKCLSP, CKCLS | |
1284 | PARG5=ASMIF1 | |
1285 | PARG6, JMS LINK | |
1286 | M10, -10 | |
1287 | ||
1288 | /ROUTINE TO CHANGE CDF 10 TO CDF * | |
1289 | CDFCHG, 0 | |
1290 | TAD I PTCPR | |
1291 | TAD K1000 /SET CDF * BIT IN P.T. | |
1292 | DCA I PTCPR | |
1293 | TAD I PTSPR /CHANGE 6211 | |
1294 | TAD M10 /TO 6201 | |
1295 | DCA I PTSPR | |
1296 | JMP I CDFCHG | |
1297 | PCALL1=CDFCHG /TEMP | |
1298 | ||
1299 | ||
1300 | \f*1600 | |
1301 | / | |
1302 | / COMMN PSEUDO OPERATION | |
1303 | / | |
1304 | PCOMMN, JMS I GETSYM /GET ADDRESS FIELD SYMBOL | |
1305 | NOP /NOTHING THERE | |
1306 | SKP /SYMBOL THERE | |
1307 | SKP CLA /CONSTANT | |
1308 | IERROR /LITERAL | |
1309 | JMS I SKIPL | |
1310 | TAD LFS | |
1311 | SNA CLA /IS THERE AN LFS | |
1312 | JMP COMMN2 /NO ... JUST INCREMENT COUNTERS | |
1313 | JMS I OBSYM /GET POINTERS TO LFS | |
1314 | LFS | |
1315 | TAD USE /MST USE WORD | |
1316 | AND K3 /SAVE SYMBOL LENGTH | |
1317 | TAD K440 /ADD CORRECT BITS | |
1318 | DCA USE /FOR NEW MST USE WORD | |
1319 | TAD S0 /NO OF COMMON LOCATIONS | |
1320 | SNA CLA /ARE THERE ZERO | |
1321 | JMP COMMN1 /YES ... EQUIVALENCE OUTPUT | |
1322 | TAD HICOM /NO ... HIGHEST COMMON LOCATION USED | |
1323 | TAD S0 /+SIZE OF THIS BLOCK | |
1324 | DCA TEM1 /FOR TENTATIVE NEW HIGHEST | |
1325 | TAD TEM1 /ACTUAL ADDRESS | |
1326 | AND K7600 /ARE WE OVERFLOWING ONTO THE LAST PAGE | |
1327 | TAD M7600 | |
1328 | SZL CLA | |
1329 | SERROR /YES ... ERROR | |
1330 | TAD HICOM /LAST COMMON ASSIGNMENT | |
1331 | IAC /+1 | |
1332 | DCA VAL /GIVES NEW ADDRESS | |
1333 | TAD TEM1 /NEW HIGHEST COMMON LOCATION | |
1334 | DCA HICOM /TO PROPER LOC | |
1335 | COMMN0, TAD VAL | |
1336 | JMP I NULLP /GO GET NEXT LINE | |
1337 | / | |
1338 | / EQUIVALENCE GENERATED COMMON OUTPUT | |
1339 | / | |
1340 | COMMN1, TAD HICOM /PLACE LAST COMMON ASSIGNMENT | |
1341 | IAC /+1 | |
1342 | DCA VAL /IN MST AS ADDRESS | |
1343 | JMP COMMN0 /EXIT | |
1344 | / | |
1345 | / NON LOCATION FIELD SYMBOL COMMON ASSIGNMENT | |
1346 | / | |
1347 | COMMN2, TAD HICOM /LAST HIGHEST | |
1348 | TAD S0 /+CUR ASSIGNMENT | |
1349 | DCA HICOM /FOR NEW HIGHEST | |
1350 | TAD HICOM /NEW HIGHEST | |
1351 | AND K7600 /ARE WE OVERFLOWING ONTO THE LAST PAGE | |
1352 | TAD M7600 | |
1353 | SZL CLA | |
1354 | SERROR /YES ... ERROR | |
1355 | JMP COMMN0 /NO ... EXIT | |
1356 | K440, 0440 | |
1357 | ||
1358 | /TEXT PSUEDO-OP | |
1359 | ||
1360 | PTEXT, TAD FORFLG | |
1361 | SMA SZA CLA | |
1362 | JMP I DCIL1 | |
1363 | JMS I GETCHR /LOOK FOR STRING START | |
1364 | JMS I TEST | |
1365 | SL1-1 | |
1366 | BL1-SL1 | |
1367 | TAD CHR /SAVE OPENING DELINEATOR | |
1368 | CIA | |
1369 | DCA DELIN | |
1370 | DCA TEXCTR /CLR CHAR CTR | |
1371 | TAD X0 /SAVE AUTO-INDEX TO START OF STR | |
1372 | DCA TEXSUB | |
1373 | TEX1, JMS I GETCHR /LOOK FOR END OF STRING | |
1374 | SNA | |
1375 | TEXERR, IERROR /TOO SOON END OF LINE | |
1376 | TAD DELIN | |
1377 | SNA CLA | |
1378 | JMP TEX2 /THE END OF THE LINE | |
1379 | ISZ TEXCTR /KEEP STRING TALLY | |
1380 | JMP TEX1 | |
1381 | TEX2, JMS I GETCHR /MOVE LINE PTR TO CHAR. AFTER DELINEATOR | |
1382 | CLA | |
1383 | JMS I SKIPL | |
1384 | JMS I PUSH /SAVE INFO FOR A MINUTE | |
1385 | TAD TEXCTR | |
1386 | IAC | |
1387 | CLL RAR /DIV BY 2 | |
1388 | JMS I IFFS /SEE IF STR WILL FIT ON PAGE | |
1389 | SKP CLA | |
1390 | JMS I INI /HAD TO ASSMBL: RE-INIT PT | |
1391 | JMS I POP /POP LINE INFO | |
1392 | JMS I ICPLFS /PROCESS LFS | |
1393 | TAD TEXCTR | |
1394 | CIA | |
1395 | DCA TEXCTR | |
1396 | TAD TEXSUB /RE-INIT STRING INDEX | |
1397 | DCA X0 | |
1398 | DCA BYTE /SET FOR LEFT BYTE | |
1399 | TEX5, JMS I GETCHR | |
1400 | AND K77 /EXTRACT 6 BIT | |
1401 | ISZ BYTE | |
1402 | SKP | |
1403 | JMP TEX4 /RIGHT BYTE | |
1404 | CLL RTL | |
1405 | RTL /MOVE LEFT | |
1406 | RTL | |
1407 | DCA TXSV | |
1408 | CMA /SET PTR TO RT BYTE | |
1409 | DCA BYTE | |
1410 | SKP | |
1411 | TEX4, JMS TEXSUB | |
1412 | ISZ TEXCTR | |
1413 | JMP TEX5 /NOT DONE | |
1414 | ISZ BYTE /CK FOR ODD CHAR LEFT OVER | |
1415 | SKP /NO | |
1416 | JMS TEXSUB /YES | |
1417 | JMP I POPEXP | |
1418 | ||
1419 | TEXSUB, 0 | |
1420 | TAD TXSV /COMBINE LEFT & RT BYTES | |
1421 | DCA I PTSPR | |
1422 | TAD K30 /PAR CONST BITS | |
1423 | TAD I PTCPR | |
1424 | DCA I PTCPR | |
1425 | TAD X0 /SAVE INDEX | |
1426 | DCA TXSV | |
1427 | JMS I ASIF /INC PTRS & ASSMBL IF PASS 2 | |
1428 | TAD TXSV /RESTOR INDEX | |
1429 | DCA X0 | |
1430 | JMP I TEXSUB | |
1431 | ||
1432 | PUSH, PUSHIN | |
1433 | POP, POPIN | |
1434 | ASIF, ASMIF1 | |
1435 | IFFS, IFFSUB | |
1436 | DELIN, 0 | |
1437 | TEXCTR, 0 | |
1438 | TXSV=S3 | |
1439 | BYTE=DELIN | |
1440 | ||
1441 | ||
1442 | ||
1443 | / | |
1444 | /WRITE LINE IF IN PASS 2 | |
1445 | / | |
1446 | WLNIF1, 0 | |
1447 | TAD PASS /WHICH PASS? | |
1448 | SZA CLA | |
1449 | JMS I WLNP /LISTING | |
1450 | JMP I WLNIF1 | |
1451 | ||
1452 | / | |
1453 | \f*2000 | |
1454 | ||
1455 | /READ & DECODE 1 LINE | |
1456 | /IGNORES NULL LINES & COMMENT LINES | |
1457 | / EXP=NON-0 IF NO OPERATION ON LINE (CONST, LIT, | |
1458 | / OR ADDRESS ONLY) | |
1459 | / SK=NON-0 IF SKIP INSTR. | |
1460 | / UMIC=NON-0 IF OP CODE IS 6 OR 7 | |
1461 | / IB=NON-0 IF INSTR IS INDIRECT | |
1462 | / NSGN=NON-0 IF AFS IS # SYMBOL | |
1463 | / OP=OP CODE | |
1464 | / LFS=PTR TO LFS IN SYM. TAB., IF ANY | |
1465 | /*** AFS=2 IF CONSTANT PARAMETER OR CONST. AFS*** | |
1466 | /*** AFS=1 IF LITERAL PARAMETER OR LIT. AFS*** | |
1467 | / AFS=SYM. TAB. PTR. TO ADDRESS PARAMETER OR AFS | |
1468 | / | |
1469 | DCIL, 0 | |
1470 | RDL1, JMS I RLNP /READ IN A LINE | |
1471 | DCA LFS /CLR STORAGE FOR LINE INFO | |
1472 | DCA EXP | |
1473 | DCA OP | |
1474 | DCA SK | |
1475 | DCA IB | |
1476 | DCA NSGN | |
1477 | DCA UMIC | |
1478 | DCA I RECTI /CLR RECOUNT FLAG FOR CPLFS | |
1479 | ISZ LINE /INC LINE COUNT | |
1480 | ISZ X0 /DO NOT BACK UP X0 | |
1481 | JMS I GETSYM /READ 1ST ITEM | |
1482 | JMP RDL11 /NULL LINE OR COMMENT | |
1483 | JMP RDL7 /SYMBOL - POSSIBLE LFS | |
1484 | JMP .+3 /SET AFS=2 FOR CONSTANT | |
1485 | RDL3, JMS I SLITAB /PUT LIT ON TAB | |
1486 | CMA /AFS=1 FOR LITERAL | |
1487 | RDL2, TAD K2 | |
1488 | ISZ EXP /SET PARAMETER EXPRESSION FLAG | |
1489 | RDL5, DCA AFS | |
1490 | JMS I SKIPL /SKIP TO END OF LINE | |
1491 | JMP I DCIL /RETURN | |
1492 | RDL7, TAD CHR /CK FOR COMMA | |
1493 | TAD M254 | |
1494 | SZA CLA | |
1495 | JMP RDL9 /NO, SHOULD BE SPACE,TAB,CR,OR ; | |
1496 | JMS I WHATPP | |
1497 | SKP | |
1498 | IERROR /OP SYMBOL AS TAG | |
1499 | TAD SYMBOL /NO, ENTER PTR TO LFS | |
1500 | DCA LFS | |
1501 | ISZ X0 /PROHIBIT FLAGGING COMMA | |
1502 | JMS I GETSYM /GET ITEM AFTER LFS | |
1503 | JMP I PB0 /NULL AFTER LFS IS BSS0 | |
1504 | JMP RDL9 /SYMBOL-OP OR PARAMETER | |
1505 | JMP RDL2 /CONSTANT | |
1506 | JMP RDL3 /LITERAL | |
1507 | RDL9, JMS I WHATPP | |
1508 | JMP RDL4 /NO-MUST BE ADDRESS PARAMETER | |
1509 | TAD USE /IS SYMBOLE A PSUEDO-OP | |
1510 | AND K40 | |
1511 | SZA CLA /NO | |
1512 | JMP RDL18 /YES | |
1513 | TAD USE /IS SYMBOL AN MRI? | |
1514 | AND K400 | |
1515 | SNA CLA | |
1516 | JMP RDL14 /NO-OPR OR I/O INSTR. | |
1517 | TAD USE /MRI-PUT OP SKIP BIT | |
1518 | AND K20 /INTO SKIP FLAG | |
1519 | DCA SK | |
1520 | TAD VAL | |
1521 | DCA OP | |
1522 | SKP | |
1523 | RDL10, ISZ IB / SET INDIRECT FLAG | |
1524 | JMS I GETSYM /READ SYMBOL AFTER MRI | |
1525 | IERROR /NOTHING THERE | |
1526 | JMP RDL12 /SYMBOL | |
1527 | IAC /AFS=2 FOR CONST. AFS | |
1528 | IAC /AFS=1 FOR LIT.AFS | |
1529 | JMP RDL5 /SKIP TO END OF LINE | |
1530 | ||
1531 | RDL12, TAD SYMBOL /CK FOR I | |
1532 | CIA | |
1533 | TAD IBTI /SYM. ADDR-I ADDR | |
1534 | SNA CLA /NOT I | |
1535 | JMP RDL10 /IT IS I | |
1536 | JMS I WHATPP | |
1537 | JMP .+3 | |
1538 | IERROR /AFS NOT USER SYMBOL | |
1539 | RDL4, ISZ EXP /ENTER HERE ON ADDRESS PAR. | |
1540 | TAD CHR /CK FOR # | |
1541 | TAD M243 | |
1542 | SZA CLA | |
1543 | JMP .+4 | |
1544 | ISZ NSGN /YES | |
1545 | JMS I GETCHR /PREVENT FLAGGING # | |
1546 | CLA | |
1547 | TAD SYMBOL /SET PTR TO AFS | |
1548 | JMP RDL5 | |
1549 | RDL13, JMS I WHATPP | |
1550 | IERROR /ELIM USER SYM | |
1551 | TAD USE /CK FOR OPR OR I/O INST. | |
1552 | AND K4440 /ELIM. MRI, PSUEDO | |
1553 | SZA CLA /OK | |
1554 | IERROR /ILLEGAL SYMBOL | |
1555 | RDL14, TAD USE /COMPARE NEW MICRO-GRP | |
1556 | AND K300 /WITH OLD, IF ANY | |
1557 | SNA | |
1558 | JMP RDL16 /GRP0 OK WITH ANYTHING | |
1559 | DCA TEM1 /NEW IS NOT 0 | |
1560 | TAD MGRP /CK OLD MGP, IF ANY | |
1561 | SNA /THERE IS ONE | |
1562 | JMP RDL15 /0 OK WITH ANY NEW | |
1563 | CIA /COMPARE OLD | |
1564 | TAD TEM1 /WITH NEW | |
1565 | SZA CLA /SAME-OK | |
1566 | IERROR /ILLEGAL COMBINATION | |
1567 | RDL15, TAD TEM1 /MICRO-GRP=NEW | |
1568 | DCA MGRP | |
1569 | RDL16, TAD VAL /OR NEW VALUE INTO OLD OP | |
1570 | CMA /NOT A | |
1571 | AND OP /AND B | |
1572 | TAD VAL /+A | |
1573 | DCA OP /=A OR B | |
1574 | TAD USE /GET NEW SKIP BIT | |
1575 | AND K20 | |
1576 | SZA CLA /NON-SKIP | |
1577 | ISZ SK /SET SKIP FLAG | |
1578 | JMS I GETSYM /GET NEXT INSTR OF STRING | |
1579 | JMP RDL17 /NONE THERE - END OF SRTING | |
1580 | JMP RDL13 /SYMBOL (AS EXPECTED) | |
1581 | NOP /CONST, ILLEGAL | |
1582 | IERROR /LIT ILLEGAL | |
1583 | RDL17, ISZ UMIC /SET MICRO INST FLAG | |
1584 | JMP RDL5 /SKIP TO END OF LINE | |
1585 | IBTI, II | |
1586 | MGRP=UMIC | |
1587 | RLNP, RLN | |
1588 | PB0, PBSS2 | |
1589 | K4440, 440 | |
1590 | K300, 300 | |
1591 | WHATPP, WHATYP | |
1592 | M243, -243 | |
1593 | ||
1594 | /NULL LINE OR COMMENT | |
1595 | ||
1596 | RDL11, JMS I SKIPL | |
1597 | JMP I NULLP | |
1598 | ||
1599 | /PSUEDO-OP | |
1600 | ||
1601 | RDL18, TAD VAL /GET PSUEDO-OP ADDRESS | |
1602 | DCA TEM1 /STORE PTR | |
1603 | JMP I TEM1 /TO PROPER PSUEDO-OP HANDLER | |
1604 | ||
1605 | \f*2200 | |
1606 | / | |
1607 | /END OF LINE PROCESSOR FOR COLLECTION PHASE | |
1608 | /LOOKS FOR SEMI-COLON BEFORE A SLASH | |
1609 | /STAR OR SLASH OR 000 (CR) MEANS NORMAL | |
1610 | /END OF LINE. SEMI-COLON MEANS WE MUST | |
1611 | /SAVE CURRENT ADDRESS IN LINE BUFFER FOR | |
1612 | /START OF "NEXT" LINE. | |
1613 | /THIS ROUTINE ALSO HAS THE IMPORTANT | |
1614 | /FUNCTION OF WATCHING THE FORTR PSUEDO-OP | |
1615 | /FLAG. IF FLAG IS ON L72 CAUSES LINE | |
1616 | /TO BE TREATED AS NON-EXISTENT. L72 MUST | |
1617 | /BE CALLED FOR EVER INSTR. LINE OR PSUEDO-OP | |
1618 | /LINE (EXCEPT END, PAUSE, FORTR) BEFORE | |
1619 | /ACTUAL PROCESSING OF THAT LINE BEGINS. | |
1620 | / | |
1621 | L72, 0 | |
1622 | SKP | |
1623 | JMS I GETCHR | |
1624 | JMS I TEST | |
1625 | SL6-1 | |
1626 | BL7-SL6 | |
1627 | IERROR | |
1628 | L72S, TAD X0 | |
1629 | DCA SCOLON | |
1630 | L72X, TAD FORFLG /IF FLG=1 WE ARE SKIPPING | |
1631 | SMA SZA CLA /1ST HALF OF FORTRAN OUTPUT | |
1632 | JMP I DCIL1 | |
1633 | JMP I L72 | |
1634 | ||
1635 | /KLUDGE TO RESET ILC BECAUSE A1 COMES BEFORE UDPAGE IN PASS 2 | |
1636 | ||
1637 | FIXILC, 0 | |
1638 | TAD PASS | |
1639 | SNA CLA | |
1640 | JMP I FIXILC | |
1641 | TAD PAG | |
1642 | DCA ILC | |
1643 | JMP I FIXILC | |
1644 | ||
1645 | ||
1646 | ||
1647 | / | |
1648 | /COLLECTION PHASE ROUTINE | |
1649 | /SEARCH PAGE SYMBOL TABLE FOR SYMBOL | |
1650 | /CALLING SEQUENCE: (ASSUMES SYM.ID.IS IN "SYMBOL") | |
1651 | / JMS SPSTB | |
1652 | / RETURN IF NOT FOUND (HAD TO ENTER IT) | |
1653 | / RETURN IF FOUND | |
1654 | /THE SEARCH IS AT L31; ENTERING DONE BY L32. | |
1655 | / | |
1656 | SPSTB, 0 | |
1657 | TAD PSTSZE /SIZE OF PST | |
1658 | SZA /IS IT EMPTY | |
1659 | JMP L31 /NO | |
1660 | L32, TAD PSTSZE /IS PST FULL? | |
1661 | TAD PSTMAX | |
1662 | SMA CLA | |
1663 | SERROR /YES | |
1664 | TAD PSTSZE /SIZE OF PST*2 | |
1665 | RAL CLL | |
1666 | TAD PSTBSE /+BASE | |
1667 | DCA PSTSPR /GIVES POINTER TO SYMBOL | |
1668 | ISZ PSTSZE / INCREMENT COUNTER | |
1669 | TAD SYMBOL /PHYSICALLY MOVE SYMBOL | |
1670 | DCA I PSTSPR | |
1671 | TAD PSTSPR | |
1672 | IAC /ADD 1 | |
1673 | DCA PSTCPR /FOR CODE WORD POINTER | |
1674 | TAD PASS | |
1675 | SNA CLA | |
1676 | JMP L32A /ASSEMBLY: JUST ZERO CODE WORD | |
1677 | JMS I OBSYM /LISTING | |
1678 | SYMBOL | |
1679 | TAD VAL /CK IF SYM IS ON PAGE FORWARD REF. | |
1680 | AND K7600 /EXTRACT PAGE BITS | |
1681 | CIA | |
1682 | TAD PAG | |
1683 | SZA CLA | |
1684 | JMP L32A /NOT ON PAGE | |
1685 | TAD K4000 /ON PAGE: SET DEFINED BIT | |
1686 | ISZ SPSTB /& SET FOR "FOUND" RETURN | |
1687 | L32A, DCA I PSTCPR | |
1688 | JMP I SPSTB /NOT FOUND | |
1689 | / | |
1690 | L31, CIA /PLACE - COUNT OF TABLE | |
1691 | DCA TEM1 /IN INDEX LOC | |
1692 | TAD PSTBSE /PLACE TABLE BASE | |
1693 | DCA TEM2 /IN ADDRESS LOC | |
1694 | L31B, TAD I TEM2 /-SYMBOL | |
1695 | CIA | |
1696 | TAD SYMBOL /+ REQUESTED SYMBOL | |
1697 | SNA CLA | |
1698 | JMP L31A /FOUND | |
1699 | ISZ TEM2 /NOT FOUNE ... INCREMENT ADDRESS | |
1700 | ISZ TEM2 | |
1701 | ISZ TEM1 /OVER | |
1702 | JMP L31B /NO ... TRY AGAIN | |
1703 | JMP L32 /YES ... PLACE ON TABLE | |
1704 | L31A, ISZ SPSTB /FOUND ... INDEX FOR EXIT | |
1705 | TAD TEM2 /POINTER TO SYMBOL | |
1706 | DCA PSTSPR /TO PROPER LOC | |
1707 | TAD PSTSPR /SYMBOL POINTER | |
1708 | IAC /+1 | |
1709 | DCA PSTCPR /GIVES CODE POINTER | |
1710 | JMP I SPSTB /EXIT | |
1711 | / | |
1712 | PSTMAX, -100 /MUST BE (PSTB-PTB)/2 | |
1713 | ||
1714 | ||
1715 | ||
1716 | / | |
1717 | /OUTPUT 6 CHARACTER ASCII NAME | |
1718 | /TO BINARY TAPE | |
1719 | /FOR EXTERNAL SYMBOL DEFN. | |
1720 | /USED BY LFSCK (FOR RC=03) & 666 (FOR RC=17) | |
1721 | /OUTPUT GOES VIA TYPE PTR, BUT PTR IS | |
1722 | /CHANGED TO L66E SO CHAR CAN BE PUNCHED | |
1723 | /& ADDED TO CK.SUM INSTEAD OF TYPED. | |
1724 | /668 IS USED ONLY IN PAS1- | |
1725 | /ASSEMBLY PHASE1 | |
1726 | / | |
1727 | L68, 0 | |
1728 | TAD PASS | |
1729 | SZA CLA | |
1730 | JMP I L68 /EXIT IF LISTING | |
1731 | TAD L66B /FOOL OUTPUT ROUTINE | |
1732 | DCA TYPE /SO IT THINKS PUNCH IS TTY | |
1733 | DCA S1 | |
1734 | DCA S2 | |
1735 | DCA S3 | |
1736 | TAD AS0 | |
1737 | DCA X1 | |
1738 | TAD SYMBOL /MST SYMBOL ADDRESS - 1 | |
1739 | DCA X2 /TO AUTO X2 | |
1740 | TAD USE /MST USE WORD | |
1741 | AND K3 /SYMBOL LENGTH | |
1742 | CIA | |
1743 | DCA TEM4 /-WORDS TO LOC | |
1744 | CDF 00 | |
1745 | TAD I X2 /OBTAIN SYMBOL | |
1746 | CDF 10 | |
1747 | DCA I X1 | |
1748 | ISZ TEM4 | |
1749 | JMP .-5 | |
1750 | TAD AS0 | |
1751 | DCA X2 | |
1752 | TAD M3 | |
1753 | DCA TEM4 | |
1754 | TAD I X2 | |
1755 | JMS I CTYPE /PUNCH IT EXPANDED | |
1756 | ISZ TEM4 /MORE | |
1757 | JMP .-3 /YES | |
1758 | TAD L66D /RESTORE TYPE ROUTINE | |
1759 | DCA TYPE | |
1760 | JMP I L68 | |
1761 | / | |
1762 | / DUMMY TYPE ROUTINE FOR EST TV DEFINITION | |
1763 | / | |
1764 | T8=SPSTB /SCRATCH LOC | |
1765 | L66E, 0 | |
1766 | DCA T8 /SAVE CHAR | |
1767 | TAD T8 | |
1768 | TAD CSUM /ADD CHAR TO BINARY CHECK SUM | |
1769 | DCA CSUM | |
1770 | TAD T8 | |
1771 | JMS I PUNCH /OUTPUT CHAR ON BINARY TAPE | |
1772 | JMP I L66E /RETURN | |
1773 | L66B, L66E | |
1774 | L66D, L64 | |
1775 | ||
1776 | ||
1777 | / | |
1778 | /INITIALIZATION THAT WONT FIT IN "INITA" | |
1779 | / | |
1780 | INITMR, 0 | |
1781 | DCA I VALPTP | |
1782 | DCA I LLFSP | |
1783 | DCA LINE | |
1784 | JMP I INITMR | |
1785 | VALPTP, VALPTR | |
1786 | LLFSP, LLFS | |
1787 | ||
1788 | \f*2400 | |
1789 | ||
1790 | ||
1791 | / | |
1792 | /COLLECTION PHASE ROUTINE. | |
1793 | /SEARCH LITERAL TABLE FOR VALUE IN S0. | |
1794 | /PLACES LITERAL ON TABLE IS NOT THERE. | |
1795 | /OTHERWISE DOES NOTHING. | |
1796 | / | |
1797 | SLTAB, 0 | |
1798 | CLA | |
1799 | TAD LTSZE /SIZE OF TABLE | |
1800 | SZA /IS TABLE EMPTY | |
1801 | JMP SLITB1 /NO ... SEARCH IT | |
1802 | TAD LTBSE /BASE COLL. PHASE LIT. TABLE) | |
1803 | TAD LTSZE /+DISPLACEMENT | |
1804 | DCA TEM1 /GIVES ADDRESS POINTER | |
1805 | TAD S0 /PHYSICALLY MOVE LITERAL | |
1806 | CDF 00 | |
1807 | DCA I TEM1 | |
1808 | ISZ LTSZE /INCREMENT COUNT | |
1809 | CDF 10 | |
1810 | JMP I SLTAB /RETURN | |
1811 | SLITB1, CIA /PLACE - COUNT | |
1812 | DCA TEM1 | |
1813 | CMA | |
1814 | TAD LTBSE /LTBSE-1 | |
1815 | DCA X1 /TO AUTO X1 | |
1816 | SLITB2, CDF 00 | |
1817 | TAD I X1 /-TABLE | |
1818 | CDF 10 | |
1819 | CIA | |
1820 | TAD S0 /+REQUESTED LITERAL | |
1821 | SNA CLA /SAME | |
1822 | JMP I SLTAB /YES, RETURN | |
1823 | ISZ TEM1 /MORE SYMBOLS TO TEST | |
1824 | JMP SLITB2 /YES | |
1825 | JMP SLTAB+5 /NO | |
1826 | ||
1827 | ||
1828 | / | |
1829 | /COLLECTION PHASE EQUIVALENCE PROCESSOR | |
1830 | /(FORMERLY CALLED BSS0 PROCESSOR) | |
1831 | /ENTERS SYMBOL ID. IN EQ. TAB | |
1832 | / | |
1833 | PBSS2, JMS I SKIPL | |
1834 | TAD LFS /LOCATION FIELD SYMBOL | |
1835 | SNA CLA /IS THERE ANY | |
1836 | JMP I NULLP /NO | |
1837 | CDF 00 | |
1838 | TAD BSSSW /ARE WE PROCESSING A BSS 0 SEQUENCE | |
1839 | SZA CLA | |
1840 | JMP .+5 /YES ... SKIP INITIALIZING | |
1841 | TAD EQVIPR /NO ... INITIALIZE | |
1842 | DCA CTPTR /SET INPUT POINTER TO COUNT LOCATION | |
1843 | DCA I CTPTR /ZERO COUNT | |
1844 | ISZ EQVIPR /INCREMENT INPUT POINTER | |
1845 | TAD LFS /LOCATION FIELD SYMBOL | |
1846 | DCA I EQVIPR /PLACE LFS ON EQUIVALENCE TABLE | |
1847 | ISZ I CTPTR /INCREMENT COUNT | |
1848 | CDF 10 | |
1849 | JMS I ICPLFS /PROCESS IT FOR COLLECTION | |
1850 | CLA CMA /REMOVE LFS FROM LFS TABLE | |
1851 | TAD LFSPTR | |
1852 | DCA LFSPTR | |
1853 | ISZ BSSSW /SET BSS 0 IN PROGRSS SWITCH | |
1854 | CMA /REMOVE EXTRA LFS BIT | |
1855 | TAD I PTCPR | |
1856 | AND K7577X /REMOVE EXTRA BSS0 BIT | |
1857 | TAD K200 /PLACE BSS0 BIT ON PT | |
1858 | DCA I PTCPR | |
1859 | TAD PSTCPR /SAVE PST ADDRESS IN CASE NEXT LINE OVERFLOWS | |
1860 | DCA EQVBIT | |
1861 | ISZ EQVIPR /INCREMENT POINTER | |
1862 | JMP I NULLP /EXIT FOR NEXT LINE | |
1863 | CTPTR, EQUTB | |
1864 | LFSBSI, LFSBSS | |
1865 | K7577X, 7577 | |
1866 | ||
1867 | / | |
1868 | /ASSEMBLY PHASE EQUIVALENCE PROCESSOR | |
1869 | /EXTRACTS ENTIRE GROUP OF TAGS EQUIVALENCED | |
1870 | /TO SAME ADDRESS FROM TABLE & DEFINES | |
1871 | /THEM BY USING LFSCK FROM LFSBSS ON. | |
1872 | / | |
1873 | ANUMCK, 0 | |
1874 | TAD I PTCPR /PT CODE WORD | |
1875 | AND K200 /MASK OUT BSS 0 BIT | |
1876 | SNA CLA /IS IT A BSS 0 SYMBOL | |
1877 | JMP I ANUMCK /NO ... EXIT | |
1878 | CMA | |
1879 | DCA BANK /BANK UNKNOWN | |
1880 | TAD AANUM7 /CHEAT RETURN ADDRESS | |
1881 | DCA I LFSCHK /SO IT LOOKS LIKE A JMS FROM SOMEWHERE ELSE | |
1882 | JMS GNEQ /GET COUNT | |
1883 | CIA /NEGATE | |
1884 | DCA OPICTR /SAVE IN INDEX LOC | |
1885 | JMS GNEQ /GET SYMBOL | |
1886 | JMP I LFSBSI /PROCESS SYMBOL | |
1887 | ANUM7, JMS I SPSTAB /SET DEFINED BIT ON PST IN CASE | |
1888 | NOP /THIS WAS CARRIED OVER | |
1889 | JMS I PSTD /THE LAST PAGE | |
1890 | ISZ OPICTR /ANY MORE ? | |
1891 | JMP ANUM7-2 /YES | |
1892 | JMP I ANUMCK /EXIT | |
1893 | PSTD, PSTDEF | |
1894 | AANUM7, ANUM7 | |
1895 | / | |
1896 | / ROUTINE TO GET NEXT ITEM OFF EQUIVALENCE TABLE | |
1897 | / | |
1898 | GNEQ, 0 | |
1899 | CDF 00 | |
1900 | TAD I EQVOPR | |
1901 | ISZ EQVOPR | |
1902 | CDF 10 | |
1903 | JMP I GNEQ | |
1904 | / | |
1905 | /SUBR. TO LIST A LINE IF IN PASS 2 | |
1906 | / | |
1907 | /CALLING SEQUENCE: JMS I WRITEP | |
1908 | / JMS I OUTBIN | |
1909 | / LOCATION OF WORD TO OUTPUT | |
1910 | / CONSTANT=RELOC. CODE | |
1911 | / RETURN | |
1912 | /(CALL TO OUTBN MUST ALWAYS FOLLOW CALL | |
1913 | /TO WRITE.) | |
1914 | /ASSUMES CURRENT PC IS IN "ILC" | |
1915 | /SETS FLAGS FOR PROPER LISTING | |
1916 | /& CALLS WLN TO DO THE DRUDGE WORK. | |
1917 | / | |
1918 | WRITE, 0 | |
1919 | TAD PASS | |
1920 | SNA CLA | |
1921 | JMP I WRITE /PASS 1 | |
1922 | ISZ WRITE | |
1923 | TAD I WRITE /ADDRESS OF VALUE | |
1924 | DCA VALUE | |
1925 | TAD I VALUE /GET VALUE | |
1926 | DCA VALUE | |
1927 | ISZ VFLG | |
1928 | ISZ WRITE | |
1929 | TAD I WRITE /GET RELOC. CODE | |
1930 | DCA CODE | |
1931 | TAD CODE | |
1932 | SNA | |
1933 | JMP WRITE2 | |
1934 | RTR /CONVERT TO 6BIT | |
1935 | RAR | |
1936 | AND K7 | |
1937 | TAD K60 | |
1938 | CLL RTL | |
1939 | RTL | |
1940 | RTL | |
1941 | DCA ADDRES /TEM SAVE | |
1942 | TAD CODE | |
1943 | AND K7 | |
1944 | TAD K60 | |
1945 | TAD ADDRES | |
1946 | DCA CODE | |
1947 | WRITE2, TAD ILC /CURRENT ADDRESS | |
1948 | DCA ADDRES | |
1949 | ISZ AFLG | |
1950 | ISZ LFLG | |
1951 | JMS I WLNP /LIST | |
1952 | ISZ WRITE | |
1953 | JMP I WRITE | |
1954 | K60, 60 | |
1955 | OPICTR=WRITE | |
1956 | CDZSKP, JMS CDZSK | |
1957 | \f*2600 | |
1958 | / | |
1959 | / BLOCK PSEUDO OPERATOR | |
1960 | / | |
1961 | PBSS, JMS I GETSYM /GET NEXT INPUT ITEM | |
1962 | JMP I PBSS2I /NOTHING THERE (BSS 0) | |
1963 | SKP /SYMBOL | |
1964 | SKP CLA /CONSTANT | |
1965 | IERROR /LITERAL | |
1966 | JMS I SKIPL | |
1967 | JMS I IPSHIN /SAVE ALL CURRENT INFO | |
1968 | JMP I PBSS4I /CHECK BLOCK SIZE | |
1969 | PBSS5, JMS IFFSUB /CAN THIS FIT IN CORE | |
1970 | SKP CLA /YES | |
1971 | JMS I INI /NO ... INITIALIZE PT POINTERS | |
1972 | JMS I IPOPIN /POP CURRENT INFORMATION | |
1973 | DCA BSSSW /CLEAR BSS0 SWITCH | |
1974 | JMS I ICPLFS /PROCESS CURRENT LFS | |
1975 | TAD S0 /-BLOCK CONSTANT | |
1976 | CIA | |
1977 | DCA TEM12 /TO INDEX LOCATION | |
1978 | PBSS1, TAD K30 /PAR CONSTANT PT BIT STRUCTURE | |
1979 | TAD I PTCPR /DONT LOSE LFS AND BSS 0 INFORMATION | |
1980 | DCA I PTCPR | |
1981 | JMS I ASMIF /DO THEM INDIVIDUALLY IF PASS 2 | |
1982 | ISZ TEM12 /MORE | |
1983 | JMP PBSS1 /YES | |
1984 | JMP I POPEXP /EXIT TO GET NEXT LINE | |
1985 | PBSS2I, PBSS2 | |
1986 | TEM12, 0 /RESRV STORAGE CTR | |
1987 | PBSS4I, PBSS4 | |
1988 | ||
1989 | / | |
1990 | / CPAGE PSEUDO OPERATION | |
1991 | / | |
1992 | PIFF, JMS I GETSYM /GET NEXT INPUT ITEM | |
1993 | NOP /NONE THERE | |
1994 | SKP /SYMBOL | |
1995 | SKP CLA /CONSTANT | |
1996 | IERROR /LITERAL | |
1997 | JMS I SKIPL | |
1998 | JMS I WLNIF /LIST IF PASS 2 | |
1999 | TAD S0 /BINARY CONSTANT | |
2000 | JMS IFFSUB /USE GLOBAL IFF SUBROUTINE | |
2001 | JMP I DCIL1 /DIDNT HAVE TO ASSEMBLE PAGE | |
2002 | JMP I RSTRTI /GO INITIALIZE | |
2003 | / | |
2004 | / IFF SUBROUTINE | |
2005 | / CALL IS TAD PAGE INCREMENT | |
2006 | / JMS IFFSUB | |
2007 | / OK RETURN | |
2008 | / HAD TO ASSEMBLE PAGE RETURN | |
2009 | ||
2010 | /FUNCTION: TO SEE IF GIVEN NO. OF WORDS | |
2011 | /WILL FIT ON CUR. PAGE; IF SO, RETURN | |
2012 | /AT OK RET.; OTHERWISE ASSEMBLE PAGE WE | |
2013 | /HAVE NOW & INIT A NEW PAGE & RET. AT | |
2014 | /SECOND RET. LOC. | |
2015 | /IFFSUB IS USED BY CPAGE,BLOCK & | |
2016 | /SEVERAL OTHER P-OPS | |
2017 | / | |
2018 | / | |
2019 | IFFSUB, 0 | |
2020 | DCA TEM1 /SAVE INCREMENT | |
2021 | JMS I ICPGES /COMPUTE PAGE SIZE | |
2022 | TAD TEM1 /ADD INCREMENT | |
2023 | TAD M201 /IS TOTAL .GT. PAGE SIZE (1 EXTRA BECAUSE | |
2024 | SPA SNA CLA /PTSZE INCREMENTED BEFORE PSUEDO-OP | |
2025 | JMP I IFFSUB /NO ... RETURN | |
2026 | CLA CMA /YES ... DECREMENT PAGE TABLE SIZE | |
2027 | TAD PTSIZ | |
2028 | SNA /WATCH FOR AN EMPTY PAGE | |
2029 | JMP .+4 /LEAVE THINGS ALONE IF PAGE EMPTY | |
2030 | DCA PTSIZ | |
2031 | JMS I L55I /ASSEMBLE THE PAGE | |
2032 | JMS I UPDATE | |
2033 | JMS I FIXIL | |
2034 | ISZ IFFSUB /INCREMENT FOR EXIT | |
2035 | JMP I IFFSUB /RETURN | |
2036 | IPSHIN, PUSHIN | |
2037 | IPOPIN, POPIN | |
2038 | WLNIF, WLNIF1 | |
2039 | ASMIF, ASMIF1 | |
2040 | RSTRTI, RSTRT | |
2041 | UPDATE, UDPAGE | |
2042 | ICPGES=CPGESI | |
2043 | M201, -201 | |
2044 | FIXIL, FIXILC | |
2045 | ||
2046 | ||
2047 | / ERROR ROUTINE | |
2048 | / | |
2049 | K6200, 6200 | |
2050 | FATAL, 0 | |
2051 | ||
2052 | ERRE, TAD K6200 /0500 | |
2053 | ERRS, ISZ FATAL /SET FATAL ERROR SWITCH | |
2054 | TAD K600 /2300 | |
2055 | JMP .+3 | |
2056 | ERRM, TAD LFS | |
2057 | DCA I LLFSI | |
2058 | TAD K400 /1500 | |
2059 | ERRI, TAD K600 /1100 | |
2060 | ERRC, TAD K200 /0300 | |
2061 | ERRA, TAD K100 /0100 | |
2062 | DCA EFLG | |
2063 | TAD PASS | |
2064 | SZA CLA | |
2065 | JMP ERREX /LISTING PASS | |
2066 | JMS I CRLF /TYPE CRLF | |
2067 | TAD EFLG /TYPE E# | |
2068 | JMS I CTYPE | |
2069 | TAD AT | |
2070 | JMS I CTYPE | |
2071 | JMS I CTYPE /TYPE 2 SPACES | |
2072 | TAD I LLFSI | |
2073 | DCA INDEX | |
2074 | CDF 00 | |
2075 | TAD I INDEX | |
2076 | ISZ INDEX | |
2077 | AND K3 | |
2078 | ||
2079 | CMA | |
2080 | DCA COUNT | |
2081 | TAD M3 /SET 6 CHAR PRINT CTR | |
2082 | DCA MSCTR | |
2083 | ISZ COUNT | |
2084 | SKP /NOT DONE YET WITH SYMBOL | |
2085 | JMP ERR1 /DONE : SEE IF SPACES NEEDED | |
2086 | CDF 00 | |
2087 | TAD I INDEX | |
2088 | CDF 10 | |
2089 | ISZ INDEX | |
2090 | JMS I CTYPE /TYPE THE LETTERS OR SPACES | |
2091 | ISZ MSCTR | |
2092 | JMP .-11 | |
2093 | ERR11, TAD SPPLUS /TYPE SPACE + | |
2094 | JMS I TYPE | |
2095 | TAD LINE /TYPE LINS FROM LAST LFS | |
2096 | JMS I OTYPE | |
2097 | JMS I CRLF | |
2098 | ERREX, TAD FATAL /FATAL ERROR? | |
2099 | SNA CLA | |
2100 | JMP .+3 /NO | |
2101 | HLT | |
2102 | JMP I K200 /IF YES GO TO START AFTER HALT | |
2103 | TAD PHASE /WHAT PHASE ARE WE IN | |
2104 | SZA CLA | |
2105 | JMP I ERR2 /ASSEMBLY | |
2106 | JMP I NULLP /COLLECTION | |
2107 | ERR2, ASM02R | |
2108 | ||
2109 | LLFSI, LLFS | |
2110 | INDEX=S1 | |
2111 | COUNT=S2 | |
2112 | MSCTR=S3 | |
2113 | AT, 0124 | |
2114 | SPPLUS, 253 | |
2115 | ||
2116 | ERR1, JMS I CTYPE /FILL OUT THE REST WITH SPACES | |
2117 | ISZ MSCTR | |
2118 | JMP .-2 | |
2119 | JMP ERR11 | |
2120 | ||
2121 | \f*3000 | |
2122 | ||
2123 | / | |
2124 | /ASSEMBLY PHASE ROUTINE TO CHECK FOR A | |
2125 | /LOC. TAG (LFS) & PROCESS IF FOUND. | |
2126 | /FUNCTION: (ASMBLY PHASE 1 - ACTR=0) | |
2127 | / (1) DEFINE TAG | |
2128 | / (2) OUTPUT VALUE AT PAST OCCURANCES OF | |
2129 | / FORWARD REF. TO THIS TAG | |
2130 | / (3) CONDENSE OCC. TAB IF POSSIBLE. | |
2131 | / | |
2132 | / (ASMBLY PHASE 2 - ACTR=1 | |
2133 | / (THIS INCLUDES ALL OF PASS 2 AS | |
2134 | / ACTR STAYS=1 IN PASS 2) | |
2135 | / (1) OUTPUT EXT. SYM. DEFN. ON REL-TAPE | |
2136 | / | |
2137 | ||
2138 | LFSCK, 0 | |
2139 | TAD I PTCPR /PT CODE WORD | |
2140 | RAR | |
2141 | SNL CLA /IS THERE A LFS | |
2142 | JMP I LFSCK /NO ... RETURN | |
2143 | CMA | |
2144 | DCA BANK /BANK UNKNOWN | |
2145 | TAD PASS /MOVE BACK PTR IF IN LISTING PASS | |
2146 | CIA | |
2147 | TAD LFSPTR | |
2148 | DCA LFSPTR | |
2149 | CDF 00 | |
2150 | TAD I LFSPTR /ACTUAL LFS | |
2151 | CDF 10 | |
2152 | ISZ LFSPTR | |
2153 | LFSBSS, DCA LFS | |
2154 | JMS I OBSYM /OBTAIN LFS FROM MST | |
2155 | LFS | |
2156 | TAD ACTR /WHICH TIME ARE WE ASSEMBLING THIS PAGE | |
2157 | /ACTR REMAINS 1 DURING PASS2 | |
2158 | SZA CLA | |
2159 | JMP L67 /SECOND TIME: NO TEST | |
2160 | TAD USE /CK FOR MULTI DEF. | |
2161 | AND K400 | |
2162 | SZA CLA | |
2163 | MERROR /YES | |
2164 | JMP LFSCK1 | |
2165 | L67, TAD USE /MST USE WORD | |
2166 | AND K200 /(L67 HAS NO EFFECT IN PASS 2) | |
2167 | SNA CLA /IS IT AN ENTRY | |
2168 | JMP LFSCK1 /NO | |
2169 | / | |
2170 | / EXTERNAL SYMBOL DEFINITION | |
2171 | / | |
2172 | JMS I OUTBIN /OUTPUT BINARY DEFINITION | |
2173 | ILC | |
2174 | 3 | |
2175 | JMS I L68I /PUNCH SYMBOL ON TAPE | |
2176 | LFSCK1, TAD ILC /CUR ILC | |
2177 | DCA VAL /PLACE ON MST AS DEFINITION | |
2178 | TAD USE /SYMBOL TABLE USE WORD | |
2179 | AND K7377 /MASK OUT DEFINED BIT | |
2180 | TAD K400 /ADD IN DEFINED BIT | |
2181 | DCA USE /SYMBOL IS NOW DEFINED IN MST | |
2182 | / | |
2183 | / NOW LETS SEARCH OCCURANCE TABLE TO SEE IF WE | |
2184 | / CAN CLEAR OFF A FEW | |
2185 | / | |
2186 | TAD OTP /SIZE OF OCCURANCE TABLE | |
2187 | CMA | |
2188 | TAD TOPCOR | |
2189 | SNA | |
2190 | JMP I LFSCK /RETURN IF EMPTY | |
2191 | CIA | |
2192 | DCA TEM1 /PLACE - SIZE IN INDEX LOC | |
2193 | TAD OTP /PLACE TABLE BASE IN TEM2 | |
2194 | DCA TEM2 /TEM2=PTR TO SYMBOL | |
2195 | CDF 00 | |
2196 | L51, DCA L51FLG /CLR # SWITCH | |
2197 | ISZ TEM2 | |
2198 | CMA /CK 1ST WORD FOR # FLAG | |
2199 | TAD I TEM2 | |
2200 | SZA CLA | |
2201 | JMP .+4 /NO | |
2202 | ISZ L51FLG /YES, SET SWITCH | |
2203 | ISZ TEM2 /MOVE PTR & CTR | |
2204 | ISZ TEM1 /PAST EXTRA WORD | |
2205 | TAD I TEM2 /- OCCURRING SYMBOL | |
2206 | CIA | |
2207 | TAD SYMBOL /+SYMBOL JUST DEFINED | |
2208 | SNA CLA /ARE THEY EQUAL | |
2209 | JMP .+7 | |
2210 | ISZ TEM2 | |
2211 | L51E, ISZ TEM1 /NO ... ARE THERE MORE | |
2212 | ISZ TEM1 /(2 WORDS PER OCCURRANCE) | |
2213 | JMP L51 /YES | |
2214 | CDF 10 | |
2215 | JMP I LFSCK /NO ... RETURN | |
2216 | / | |
2217 | / AN OCCURANCE FOUND ... OUTPUT IT | |
2218 | / | |
2219 | ISZ TEM2 | |
2220 | TAD I TEM2 /ACTUAL ADDRESS | |
2221 | CDF 10 | |
2222 | DCA TEM4 | |
2223 | JMS I DUMMY /OUTPUT ADDRESS AS ORIGIN | |
2224 | TEM4 | |
2225 | 4 | |
2226 | TAD VAL | |
2227 | TAD L51FLG /ADD 1 IF # REF | |
2228 | DCA TEM4 | |
2229 | JMS I DUMMY /OUTPUT SYMBOL VALUE AS RELOCATABLE DEF | |
2230 | TEM4 | |
2231 | 1 | |
2232 | CDF 00 | |
2233 | / | |
2234 | / NOW MOVE OCCURANCE TABLE UP 2 | |
2235 | / | |
2236 | L51G, TAD OTP | |
2237 | DCA TEM4 /SAVE | |
2238 | TAD TEM2 | |
2239 | DCA OTP /RESET | |
2240 | TAD L51FLG | |
2241 | TAD K2 | |
2242 | CIA | |
2243 | TAD TEM2 | |
2244 | CIA | |
2245 | TAD TEM4 | |
2246 | SNA | |
2247 | JMP L51E /NOTHING TO MOVE | |
2248 | DCA TEM3 /CTR FOR MOVE UP | |
2249 | TAD TEM3 | |
2250 | CIA | |
2251 | TAD TEM4 | |
2252 | DCA TEM4 /TO PTR | |
2253 | L51J, TAD I TEM4 | |
2254 | DCA I OTP | |
2255 | CMA | |
2256 | TAD TEM4 | |
2257 | DCA TEM4 | |
2258 | CMA | |
2259 | TAD OTP | |
2260 | DCA OTP | |
2261 | ISZ TEM3 | |
2262 | JMP L51J | |
2263 | JMP L51E | |
2264 | ||
2265 | ||
2266 | L68I, L68 | |
2267 | K7377, 7377 | |
2268 | TOPCOR, CORE1 | |
2269 | MERROR=JMP I . | |
2270 | ERRM | |
2271 | ||
2272 | / | |
2273 | / PUNCH ROUTINE | |
2274 | / | |
2275 | L63, 0 | |
2276 | PLS /SELECT IT | |
2277 | PSF /WAIT FOR PUNCH | |
2278 | JMP .-1 | |
2279 | CLA /EXIT WITH CLEAR AC | |
2280 | JMP I L63 | |
2281 | ||
2282 | ||
2283 | ||
2284 | ||
2285 | / | |
2286 | /UPDATE "PAGE" TO NEXT CORE PAGE | |
2287 | /I.E., PAGE =PAGE+200 | |
2288 | / | |
2289 | UDPAGE, 0 | |
2290 | CLA | |
2291 | TAD PAG /OLD PAGE SETTING | |
2292 | TAD K200 /+SIZE OF ONE PAGE | |
2293 | DCA PAG /FOR NEW PAGE SETTING | |
2294 | JMP I UDPAGE /EXIT | |
2295 | ||
2296 | L51FLG=UDPAGE | |
2297 | \f*3200 | |
2298 | / | |
2299 | / SUBROUTINE TO OUTPUT ASSEMBLY PHASE LITERAL | |
2300 | / TABLE AND REMEMBER OCCURANCES | |
2301 | / | |
2302 | OAPLT, 0 | |
2303 | TAD ACTR /SKIP IT THE 1ST TIME | |
2304 | SNA CLA | |
2305 | JMP I OAPLT | |
2306 | JMS I SAVLNI /PREVENT ANY LINE TYPEOUT | |
2307 | TAD LITSIZ /SIZE OF TABLE | |
2308 | SNA | |
2309 | JMP I OAPLT /RETURN IF NONE | |
2310 | CIA | |
2311 | DCA ATEM1 /PLACE - SIZE IN LOC | |
2312 | CLA CMA | |
2313 | TAD LITBSE /BASE - 1 | |
2314 | DCA X2 /TO AUTO 12 | |
2315 | TAD APMSW /ARE WE IN AUTO PAGING MODE | |
2316 | SZA CLA | |
2317 | JMP .+3 /NO ... OK | |
2318 | TAD PGEESC /YES ... SUBRTACT SIZE OF PAGE ESCAPE | |
2319 | RAR CLL /DIVIDED BY 2 | |
2320 | TAD LITSIZ /& SUBTR. LITSIZ | |
2321 | CIA | |
2322 | DCA LITPTR /TEM SAVE | |
2323 | TAD LITPTR | |
2324 | TAD PAG /INITIALIZE PAGE ADDRESS | |
2325 | TAD K200 | |
2326 | DCA ILC | |
2327 | TAD LITSIZ /INIT LIT TBL PTR | |
2328 | CLL RAL /(MULT BY 2) | |
2329 | TAD LITBSE | |
2330 | DCA LITPTR | |
2331 | IAC | |
2332 | SKP | |
2333 | / | |
2334 | L52, ISZ ILC /INC PAGE LOC | |
2335 | TAD M3 /DECREMENT LIT TBL PTR | |
2336 | TAD LITPTR | |
2337 | DCA LITPTR | |
2338 | CDF 00 | |
2339 | TAD I LITPTR /CODE | |
2340 | DCA ATEM2 | |
2341 | ISZ LITPTR | |
2342 | TAD I LITPTR /SYMBOL OR LITERAL | |
2343 | DCA ATEM3 | |
2344 | CDF 10 | |
2345 | CLA CMA | |
2346 | TAD ATEM2 /IS CODE 1 ... LITERAL | |
2347 | SZA CLA | |
2348 | JMP L53 /NO ... SYMBOL | |
2349 | JMS I ILC4P /YES ... OUTPUT PAGE ADDRESS AS ORIGIN | |
2350 | JMS I WRITEP | |
2351 | JMS I OUTBIN /OUTPUT LITERAL WITH NO RELOCATION | |
2352 | ATEM3 | |
2353 | 0 | |
2354 | L52A, ISZ ATEM1 /MORE | |
2355 | JMP L52 /YES | |
2356 | ISZ ILC /SET FOR ESCAPE | |
2357 | JMP I OAPLT /NO ... RETURN | |
2358 | L53, JMS I OBSYM /OBTAIN SYMBOL FROM MST | |
2359 | ATEM3 | |
2360 | TAD USE /MST USE WORD | |
2361 | AND K400 /IS SYMBOL DEFINED | |
2362 | SNA CLA | |
2363 | JMP L53A /NO ... OCCURANCE | |
2364 | JMS I ILC4P /YES ... OUTPUT ORIGIN | |
2365 | TAD ATEM2 | |
2366 | AND K4 | |
2367 | SZA CLA | |
2368 | IAC /ITS A # | |
2369 | TAD VAL /ACTUAL VALUE | |
2370 | DCA ATEM3 /TO DIRRECTLY ADDRESSABLE LOC | |
2371 | JMS I WRITEP | |
2372 | JMS I OUTBIN /OUTPUT VALUE | |
2373 | ATEM3 | |
2374 | 1 /RELOCATABLE | |
2375 | JMP L52A /TRY MORE | |
2376 | L53A, TAD ILC | |
2377 | DCA ATEM4 | |
2378 | JMS L53B /PLACE ON OCCURANCE TALBE | |
2379 | JMP L52A /TRY MORE | |
2380 | / | |
2381 | / SUBROUTINE TO CREATE AN OCCURANCE IN OCCURANCE TABLE | |
2382 | / | |
2383 | L53B, 0 | |
2384 | TAD OTP | |
2385 | CIA CLL | |
2386 | IAC /ALLOW FOR # FLAG | |
2387 | TAD STT /+TOP OF MST | |
2388 | SZL CLA /OVERFLOW? | |
2389 | SERROR /YES ... OUT OF CORE | |
2390 | TAD M2 | |
2391 | TAD OTP /OT SIZE - 2 | |
2392 | DCA OTP /GIVES ADDRESS ON OCCUR TABLE | |
2393 | TAD OTP | |
2394 | DCA X1 | |
2395 | CDF 00 | |
2396 | TAD ATEM3 /SYMBOL | |
2397 | DCA I X1 /TO OCCUR TABLE | |
2398 | TAD ATEM4 /PAGE ADDRESS | |
2399 | DCA I X1 /TO OCCUR TABLE | |
2400 | TAD ATEM2 /CK FOR # | |
2401 | AND K4 | |
2402 | SNA CLA | |
2403 | JMP .+6 /NO | |
2404 | IAC /SET FLAG WORD | |
2405 | DCA I OTP | |
2406 | CMA /MOVE DOWN PTR | |
2407 | TAD OTP /PAST EXTRA WORD | |
2408 | DCA OTP | |
2409 | CDF 10 | |
2410 | JMP I L53B /TRY MORE | |
2411 | / | |
2412 | ATEM1, 0 | |
2413 | ATEM2, 0 | |
2414 | ATEM3, 0 | |
2415 | ATEM4, 0 | |
2416 | SAVLNI, SAVLIN | |
2417 | LITPTR, 0 | |
2418 | ||
2419 | PFORT, ISZ FORFLG /SET TO 1 FOR 1ST PASS THRU FORTRAN CODE | |
2420 | NOP /END PSUEDO SETS IT TO -1 TO NULLIFY | |
2421 | JMS I SKIPL /SO BACK TO 0 FOR 2ND PASS | |
2422 | JMP I NULLP | |
2423 | ||
2424 | / | |
2425 | /DO SOME WORK FOR L61A | |
2426 | / | |
2427 | L61C, DCA TEM2 /SAVE 6-BIT CODE | |
2428 | TAD TEM2 | |
2429 | AND K40 | |
2430 | SNA CLA | |
2431 | TAD K100 /ADD CORRECT LEADING BITS | |
2432 | TAD K200 | |
2433 | TAD TEM2 /ADD CHAR BITS | |
2434 | JMP I L61DP | |
2435 | L61DP, L61D | |
2436 | ILC4P, ILC4 | |
2437 | ||
2438 | \f*3400 | |
2439 | / | |
2440 | / ROUTINE TO PUNCH WORD AND RELOCATION BITS ON TAPE | |
2441 | / CALL IS | |
2442 | / JMS OUTBN | |
2443 | / ADDRESS OF WORD | |
2444 | / BITS | |
2445 | / | |
2446 | OUTBN, 0 | |
2447 | CLA CLL | |
2448 | TAD I OUTBN /ADDRESS OF WORD | |
2449 | DCA OUT1 | |
2450 | ISZ OUTBN | |
2451 | TAD I OUTBN /RELOCATION BITS | |
2452 | RTL /SHIFT LEFT 4 | |
2453 | RTL | |
2454 | DCA OUT2 /SAVE | |
2455 | TAD PASS | |
2456 | SZA CLA | |
2457 | JMP OUTEX | |
2458 | TAD I OUT1 /ACTUAL WORD | |
2459 | DCA OUT1 /MUST DO THIS SINCE WE DO A JMS OUTBN;CSUM;10 | |
2460 | TAD OUT1 /AT LOC. PCSM, AND OTHERWISE CSUM WOULD CHANGE AFTER CALL TO SUM. | |
2461 | RTL /ROTATE HIGH 4 BITS TO LOW | |
2462 | RTL | |
2463 | RAL | |
2464 | AND K17 /MASK | |
2465 | TAD OUT2 /ADD REL BITS | |
2466 | JMS SUM /ADD TO CHECK SUM | |
2467 | JMS I PUNCH /PUNCH IT | |
2468 | TAD OUT1 /REMAINDER OF WORD | |
2469 | AND K377 /MASK TO 8 BITS | |
2470 | JMS SUM /ADD TO CHECK SUM | |
2471 | JMS I PUNCH /PUNCH IT | |
2472 | OUTEX, ISZ OUTBN /INDEX FOR EXIT | |
2473 | JMP I OUTBN /RETURN | |
2474 | SUM, 0 | |
2475 | DCA TSUM | |
2476 | TAD CSUM | |
2477 | TAD TSUM | |
2478 | DCA CSUM | |
2479 | TAD TSUM | |
2480 | JMP I SUM | |
2481 | TSUM=NSGN | |
2482 | OUT1=IB | |
2483 | OUT2=TEM5 | |
2484 | K377, 377 | |
2485 | K17, 17 | |
2486 | / | |
2487 | / ROUTINE TO SEARCH ASSEMBLY PHASE LITERAL TABLE | |
2488 | / FOR 2 WORD ENTRY IN S0-S1 | |
2489 | / PLACES ON TABLE IF NOT THERE | |
2490 | / RETURNS PAGE ADDRESS IN AC | |
2491 | / | |
2492 | SRALT, 0 | |
2493 | CLA | |
2494 | DCA TEM2 /ZERO SEARCH COUNTER | |
2495 | CDF 00 | |
2496 | TAD LITSIZ /NO OF ENTRYS | |
2497 | SZA | |
2498 | JMP L40 /NON ZERO ... SEARCH | |
2499 | L39, TAD LITSIZ /NO OF ENTRYS - 1 | |
2500 | RAL CLL /MULTIPLY BY 2 | |
2501 | TAD LITBSE /ADD BASE OF TABLE | |
2502 | DCA TEM1 /GIVES ADDRESS OF NEW ENTRY | |
2503 | ISZ LITSIZ /INCREMENT COUNT | |
2504 | TAD S0 /FIRST WORD | |
2505 | DCA I TEM1 /TO TABLE | |
2506 | ISZ TEM1 /INCREMENT ADDRESS | |
2507 | TAD S1 /SECOND WORD | |
2508 | DCA I TEM1 /TO TABLE | |
2509 | TAD LITSIZ /ENTRY NO | |
2510 | ||
2511 | / COMPUTE PAGE ADDRESS FROM DISPLACEMENT IN TABLE | |
2512 | / AND STATUS OF AUTOMATIC PAGING MODE SWITCH AND SIZE OF PAGE | |
2513 | / ESCAPE REQUIRED | |
2514 | / | |
2515 | L40A, DCA TEM1 /SAVE LOCATION IN TABLE | |
2516 | TAD PASS | |
2517 | SZA CLA | |
2518 | JMP L40C /LISTING | |
2519 | TAD APMSW /ARE WE IN AUTOMATIC PAGING MODE? | |
2520 | SNA CLA | |
2521 | TAD PGEESC /YES - COUNT ESCAPE WORDS | |
2522 | L40DR, CLL RAR /(OVER 2) | |
2523 | L40D, TAD TEM1 /NO ... COMPUTE PAGE ADDRESS | |
2524 | CIA /BY STRAIGNT COMPLEMENTATION METHOD | |
2525 | AND K377 /MASK | |
2526 | CDF 10 | |
2527 | JMP I SRALT /EXIT | |
2528 | /FOR AUTO PAGING MODE | |
2529 | ||
2530 | L40, CIA | |
2531 | DCA TEM1 /- NO OF ENTRYS TO LOC | |
2532 | CLA CMA | |
2533 | TAD LITBSE /BASE OF TABLE - 1 | |
2534 | DCA X1 /TO AUTO 10 | |
2535 | L41, ISZ TEM2 /INCREMENT SEARCH COUNTER | |
2536 | TAD I X1 /- FIRST WORD FROM TABLE | |
2537 | CIA | |
2538 | TAD S0 /+FIRST COMP WORD | |
2539 | SZA CLA | |
2540 | JMP L40B /NO MATCH | |
2541 | TAD I X1 /-SECOND TABLE WORD | |
2542 | CIA | |
2543 | TAD S1 | |
2544 | SZA CLA | |
2545 | JMP .+4 /NO MATCH | |
2546 | TAD TEM2 /MATCH ... CTR TO AC | |
2547 | JMP L40A /RETURN | |
2548 | L40B, ISZ X1 /INCREMENT FOR NO SECOND COMPARISON | |
2549 | ISZ TEM1 /OVER | |
2550 | JMP L41 /NO ... TRY MORE | |
2551 | JMP L39 /YES ... PLACE ON TABLE | |
2552 | L40C, CDF 10 | |
2553 | TAD I REDUCP /GET PAGE ESC COMPUTED BY A1 | |
2554 | JMP L40DR | |
2555 | REDUCP, REDUCE | |
2556 | ||
2557 | / | |
2558 | / HAS COMMON BEEN PUNCHED YET SUBROUTINE | |
2559 | ||
2560 | /IF IT HAS ALREADY BEEN PUNCHED, EXIT | |
2561 | /IF NOT, PUNCH IT & SET FLAG | |
2562 | /THIS ROUTINE IS CALLED ONLY ONCE PER PROGRAM | |
2563 | /BUT IT COULD BE CALLED FROM ANY OF SEVERAL PLACES | |
2564 | / | |
2565 | HCBPS, 0 | |
2566 | TAD CPSW /COMMON PUNCHED SWITCH | |
2567 | SNA CLA /HAS IT BEEN PUNCHED | |
2568 | JMP I HCBPS /YES ... RETURN | |
2569 | DCA CPSW /NO ... CLEAR SWITCH | |
2570 | JMS I OUTBIN /AND PUNCH HIGHEST COMMON ASSIGNED | |
2571 | HICOM | |
2572 | 12 | |
2573 | JMP I HCBPS /EXIT | |
2574 | ||
2575 | DUMSUB, JMS DUMS | |
2576 | ||
2577 | ||
2578 | / | |
2579 | /INCREMENT PAGE TABLE PTRS | |
2580 | /TO PREPARE FOR NEXT INSTRUCTION (OR PARAMETER) | |
2581 | / | |
2582 | INCPT, 0 | |
2583 | ISZ PTSZE /INCREMENT PAGE TABLE SIZE | |
2584 | JMS I ISZPT2 | |
2585 | DCA EQVBIT /CLR | |
2586 | DCA I PTCPR /INITIALIZE PAGE TABLE CODE WORD | |
2587 | DCA I PTSPR /INITIALIZE PAGE TABLE SYMBOL WORD | |
2588 | CDF 00 | |
2589 | DCA I PTOPR /INITIALIZE PT OP CODE POINTER | |
2590 | CDF 10 | |
2591 | TAD CURSKP /MOVE CURRENT SKIP INSTRUCTION INDICATOR | |
2592 | DCA LSTSKP /TO LAST INSTRUCTION SKIP INDICATOR | |
2593 | TAD BANK /MOVE CURRENT BANK | |
2594 | DCA LSTBNK /TO LAST BANK | |
2595 | JMP I INCPT /RETURN | |
2596 | ISZPT2, ISZPT | |
2597 | // | |
2598 | //FOLLOWING CODE MOVED HERE TO MAKE ROOM FOR V03 IN ASME3 | |
2599 | ASMEXT, JMS I OUTSKP /YES, OUTPUT SKP | |
2600 | TAD ILC /GET PG.LOC.PTR. | |
2601 | AND K177 | |
2602 | TAD K5204 /OUTPUT JMP .+4 | |
2603 | DCA TEM1 | |
2604 | JMP I .+1 | |
2605 | REEASM | |
2606 | K5204, 5204 | |
2607 | ||
2608 | ||
2609 | \f*3600 | |
2610 | ||
2611 | / ABSYM PSEUDO OPERATOR | |
2612 | / | |
2613 | PABSYM, TAD K400 | |
2614 | JMS DEFSUB | |
2615 | CLA | |
2616 | JMP DEF1 | |
2617 | ||
2618 | /SKPDF & OPDEF PSUEDO-OPS | |
2619 | ||
2620 | ||
2621 | SKPDEX, TAD K20 /PUT IN SKIP BIT | |
2622 | OPDEX, TAD K3010 /STANDARD OP BITS | |
2623 | JMS DEFSUB | |
2624 | CLL | |
2625 | AND K7000 /CK TYPE OF INST | |
2626 | TAD K2000 | |
2627 | SNA CLA | |
2628 | JMP DEF1 /IOT | |
2629 | SNL | |
2630 | JMP DEF3 /MRI | |
2631 | TAD S0 /OPR, BUT WHICH GRP? | |
2632 | AND K401 | |
2633 | CLL RAR | |
2634 | SNA CLA | |
2635 | JMP DEF2 /GRP1 | |
2636 | SZL | |
2637 | TAD K100 /GRP3 | |
2638 | TAD K200 /GRP2 | |
2639 | DEF1, TAD TEM5 | |
2640 | DCA USE | |
2641 | TAD S0 | |
2642 | DCA VAL | |
2643 | TAD VAL | |
2644 | JMP I NULLP | |
2645 | DEF2, TAD K100 | |
2646 | JMP DEF1 | |
2647 | DEF3, TAD K400 | |
2648 | JMP DEF1 | |
2649 | K401, 401 | |
2650 | K3010, 3010 | |
2651 | ||
2652 | ||
2653 | / | |
2654 | /UTILITY FOR PABSYM & OPDEX | |
2655 | /CALL WITH MST CODE WORD EXCEPT BITS 10-11 | |
2656 | /IN AC. EXITS WITH SYMBOL VALUE | |
2657 | /AS DEF. BY SOURCE TAPE IN S0 & IN AC. | |
2658 | / | |
2659 | DEFSUB, 0 | |
2660 | DCA TEM5 | |
2661 | JMS I GETSYM /GET THE SYMBOL NAME | |
2662 | JMP DEFERR /NULL | |
2663 | JMP .+3 /SYMBOL | |
2664 | K7000, NOP | |
2665 | JMP DEFERR /CONST. OR LIT. | |
2666 | TAD S0 /ADD IN SYM LENGTH | |
2667 | TAD TEM5 | |
2668 | DCA TEM5 | |
2669 | JMS I GETSYM /GET VALUE | |
2670 | NOP /NULL | |
2671 | SKP /SYMBOL | |
2672 | K7410, SKP /CONST | |
2673 | DEFERR, IERROR /LIT. | |
2674 | JMS I SKIPL | |
2675 | TAD S0 /VALUE | |
2676 | JMP I DEFSUB | |
2677 | ||
2678 | / | |
2679 | /OCTAL TYPEOUT | |
2680 | /CALLING SEQUENCE: TAD (OCTAL#) | |
2681 | / JMS L62 | |
2682 | / RET. AC=0 | |
2683 | / | |
2684 | ||
2685 | L62, 0 | |
2686 | CLL RAL /PUSH THRU LINK | |
2687 | DCA TEM1 | |
2688 | TAD M4 /SET CTR | |
2689 | DCA TEM2 | |
2690 | L62A, TAD TEM1 | |
2691 | RTL | |
2692 | RAL | |
2693 | DCA TEM1 | |
2694 | TAD TEM1 | |
2695 | AND K7 | |
2696 | TAD K260 | |
2697 | JMS I TYPE | |
2698 | ISZ TEM2 | |
2699 | JMP L62A | |
2700 | JMP I L62 | |
2701 | M4, -4 | |
2702 | K260, 0260 | |
2703 | ||
2704 | / | |
2705 | /DUMMY OUTPUT ROUTINE | |
2706 | /REPLACES OUTBN DURING ASMBLY PHASE 1 | |
2707 | /CALLING SEQUENCE: JMS DUMMY | |
2708 | / ADDR. OF ARG | |
2709 | / RELOC. CONST. | |
2710 | / RETURN | |
2711 | /NOTE: SAME CALLING SEQ. AS OUTBN | |
2712 | / | |
2713 | DUM, 0 | |
2714 | CLA CLL | |
2715 | ISZ DUM /INDEX FOR PROPER EXIT | |
2716 | ISZ DUM /INDEX FOR PROPER EXIT | |
2717 | JMP I DUM | |
2718 | / | |
2719 | / ROUTINE TO SEARCH EXTERNAL SYMBOL TABLE | |
2720 | / FOR CUR SYMBOL - RETURNS EXTERNAL SYMBOL | |
2721 | / NUMBER IN AC - PLACES SYMBOL ON TABLE | |
2722 | / AND OUTPUTS BIN CODE FOR TV IF NOT ON TABLE | |
2723 | / | |
2724 | L66, 0 | |
2725 | TAD ESTSIZ /IS TABLE FULL? | |
2726 | TAD M100 | |
2727 | M100, SMA CLA | |
2728 | SERROR /YES | |
2729 | TAD ESTSIZ /SIZE OF EST | |
2730 | SZA /IS TABLE EMPTY | |
2731 | JMP L66A1 /NO ... SEARCH IT | |
2732 | L66A3, CLA CMA /YES ... PLACE SYMBOL ON IT | |
2733 | ISZ ESTSIZ /INCREMENT TABLE SIZE | |
2734 | TAD BSEEST /BASE | |
2735 | TAD ESTSIZ /+SIZE | |
2736 | DCA TEM1 /GIVES ADDRESS OF NEW ENTRY | |
2737 | TAD SYMBOL /PHYSICALLY PLACE ON TABLE | |
2738 | CDF 00 | |
2739 | DCA I TEM1 | |
2740 | CDF 10 | |
2741 | TAD USE /MST CODE WORD | |
2742 | AND K403A /SAVE LENGTH AND DEFINITION BIT | |
2743 | TAD K2000 /ADD EXTERNAL BITS | |
2744 | DCA USE | |
2745 | JMP L66A /GO TO PUNCH TV DEF | |
2746 | L66A1, CIA | |
2747 | DCA TEM2 /PLACE -SIZE IN INDEX LOC | |
2748 | DCA TEM3 /ZERO COUNT | |
2749 | CLA CMA | |
2750 | TAD BSEEST /BASE OF EST - 1 | |
2751 | DCA X1 /TO AUTO X1 | |
2752 | L66A2, ISZ TEM3 /INCREMENT COUNT LOC | |
2753 | CDF 00 | |
2754 | TAD I X1 /-TABLE SYMBOL | |
2755 | CDF 10 | |
2756 | CIA | |
2757 | TAD SYMBOL /+ CUR SYMBOL | |
2758 | SNA CLA /COMPARE | |
2759 | JMP .+4 /SAVE | |
2760 | ISZ TEM2 /NOT SAME ... ANY MORE | |
2761 | JMP L66A2 /YES ... KEEP TRYING | |
2762 | JMP L66A3 /NO ... PLACE ON TABLE | |
2763 | TAD TEM3 /PLACE COUNT IN AC | |
2764 | JMP I L66 /RETURN | |
2765 | / | |
2766 | / OUTPUT BINARY EXTERNAL SYMBOL | |
2767 | / | |
2768 | HCBPS | |
2769 | L66A, JMS I .-1 /CHECK TO SEE IF COMMON HAS BEEN PUNCHED | |
2770 | JMS I OUTBIN /TV DEF FOR 1 SYMBOL | |
2771 | K1 | |
2772 | 17 | |
2773 | JMS I L62A1 /PUNCH ASCII CHARS | |
2774 | TAD ESTSIZ /EST NO TO AC | |
2775 | JMP I L66 /RETURN | |
2776 | L62A1, L68 | |
2777 | K403A, 403 | |
2778 | K1, 1 | |
2779 | ||
2780 | \f*4000 | |
2781 | ||
2782 | ||
2783 | ||
2784 | / | |
2785 | /SYMBOL TABLE LISTING ROUTINE | |
2786 | /TYPES TABLE FROM "STTP" UP | |
2787 | /WITH NAME-VALUE-FLAG | |
2788 | /POSSIBLE FLAGS ARE: EXT, COM, UNDF, ABS, OP | |
2789 | /FLAGS TYPED BY "STFT" | |
2790 | /TABLE LISTED ALPHABETICALLY WITH NUMERIC | |
2791 | /CHARACTERS .GT. ALPHABETIC | |
2792 | / | |
2793 | ||
2794 | PRSYM, 0 | |
2795 | DCA PFLG /CLR PRSYM-PASS FLAG | |
2796 | TAD I LSTDEP | |
2797 | SNA CLA | |
2798 | JMP .+3 | |
2799 | TAD PUNCH /LIST ON H.S. PUNCH | |
2800 | DCA TYPE | |
2801 | JMS I CRLF | |
2802 | PRS1, TAD PST /INIT SPTR AT TOP OF PERM. S.T. | |
2803 | DCA SPTR | |
2804 | TAD M3 /FILL S1,S2,S3 WITH 7777'S (MAX) | |
2805 | DCA ALEN | |
2806 | TAD APTR | |
2807 | DCA X1 | |
2808 | CMA | |
2809 | DCA I X1 | |
2810 | ISZ ALEN | |
2811 | JMP .-3 | |
2812 | TAD K3 /AND LENGTH=3 | |
2813 | DCA ALEN | |
2814 | DCA FOUND /CLR EXIT FLAG | |
2815 | PRS2, TAD STT /HAS SEARCH HIT END OF TABLE? | |
2816 | CIA | |
2817 | TAD SPTR | |
2818 | SNA CLA | |
2819 | JMP PRS7 /YES, USE THE A-SYM WE HAVE | |
2820 | JMS I OBSYM /NO, GET NEXT MST ENTRY | |
2821 | SPTR | |
2822 | TAD BCODE /EXTRACT LENGTH | |
2823 | AND K3 | |
2824 | DCA BLEN | |
2825 | TAD BPTR /INDEX NEW ENTRY | |
2826 | DCA X2 | |
2827 | TAD BLEN /SET ENTRY CTR | |
2828 | CIA | |
2829 | DCA BCTR | |
2830 | TAD ALEN /SET A-SYM CTR | |
2831 | CIA | |
2832 | DCA AACTR | |
2833 | TAD APTR /INDEX A-SYM | |
2834 | DCA X1 | |
2835 | TAD PFLG /IS THIS THE FIRST TIME THRU THE TABLE? | |
2836 | SZA CLA | |
2837 | JMP PRS3 /NO | |
2838 | TAD BCODE /YES, CLR ENTRY BIT 0 | |
2839 | AND K3777 /(THE HAS-BEEN-PRINTED FLAG) | |
2840 | DCA BCODE | |
2841 | PRS3, TAD BCODE /HAS THIS SYMBOL BEEN PRINTED ALREADY? | |
2842 | SPA CLA | |
2843 | JMP PRS6 /YES, IGNORE IT | |
2844 | PRS4, TAD I X1 /NO, COMRARE A-SYM WORD | |
2845 | CIA CLL | |
2846 | CDF 00 | |
2847 | TAD I X2 /WITH B-SYM WORD | |
2848 | CDF 10 | |
2849 | SNA | |
2850 | JMP .+4 /MATCH SO FAR | |
2851 | SNL CLA | |
2852 | JMP PRS5 /A-SYM WORD IS BIGGER-- USE B-SYM | |
2853 | JMP PRS6 /VICE-VERSA | |
2854 | ISZ AACTR /IS A-SYM DONE? | |
2855 | SKP /NO | |
2856 | JMP PRS6 /YES, STICK WITH A-SYM | |
2857 | ISZ BCTR /IS B-SYM DONE | |
2858 | JMP PRS4 /NO, TRY NEXT WORD | |
2859 | PRS5, ISZ FOUND /YES, B-SYM IS NEW A-SYM | |
2860 | /SET CONTINUE FLAG | |
2861 | TAD BPTR /INDEX B-SYM | |
2862 | DCA X2 | |
2863 | TAD APTR /CLR STORAGE FOR NEW A-SYM | |
2864 | DCA X1 | |
2865 | DCA I X1 | |
2866 | DCA I X1 | |
2867 | DCA I X1 | |
2868 | TAD APTR /RESET A-SYM INDEX | |
2869 | DCA X1 | |
2870 | TAD BLEN /CTR FOR TRANSFER | |
2871 | CIA | |
2872 | DCA ALEN | |
2873 | CDF 00 | |
2874 | TAD I X2 /MOVE B-SYM TO A-SYM | |
2875 | CDF 10 | |
2876 | DCA I X1 | |
2877 | ISZ ALEN | |
2878 | JMP .-5 | |
2879 | TAD BLEN /NEW LENGTH | |
2880 | DCA ALEN | |
2881 | TAD BVAL /NEW VALUE | |
2882 | DCA AVAL | |
2883 | TAD BPTR /NEW PTR | |
2884 | DCA ASAV | |
2885 | PRS6, TAD BPTR /MOVE SPTR TO NEXT MST ENTRY | |
2886 | TAD BLEN | |
2887 | TAD K2 | |
2888 | DCA SPTR | |
2889 | JMP PRS2 /CONTINUE SEARCH | |
2890 | PRS7, TAD FOUND /HAS ANOTHER SYMBOL BEEN FOUND? | |
2891 | SNA CLA | |
2892 | JMP PRS8 /NO, EXIT | |
2893 | JMS I OBSYM /YES | |
2894 | ASAV | |
2895 | TAD USE | |
2896 | TAD K4000 | |
2897 | DCA USE /SET HAS-BEEN-PRINTED BIT | |
2898 | ISZ PFLG /SET PASS FLAG | |
2899 | JMS I CRLF /POSITION PRINT | |
2900 | TAD APTR /INDEX SYMBOL | |
2901 | DCA X1 | |
2902 | TAD M3 /SET CTR | |
2903 | DCA ALEN | |
2904 | TAD I X1 /PRINT SYMBOL | |
2905 | JMS I CTYPE | |
2906 | ISZ ALEN | |
2907 | JMP .-3 | |
2908 | JMS I CTYPE /PRINT 2 SPACES | |
2909 | TAD AVAL /PRINT VALUE | |
2910 | JMS I OTYPE | |
2911 | TAD USE /MOVE TYPE BITS TO LOW AC | |
2912 | RTL /& DEF. BIT TO LINK | |
2913 | RTL | |
2914 | JMS I STFTI /TYPE FLAGS IF ANY | |
2915 | JMP PRS1 /LOOK FOR ANOTHER SYMBOL TO PRINT | |
2916 | ||
2917 | PRS8, JMS I CRLF | |
2918 | JMS I CRLF | |
2919 | JMP I PRSYM | |
2920 | ||
2921 | ||
2922 | STFTI, STFT | |
2923 | ASAV=UMIC | |
2924 | PFLG=TEM3 | |
2925 | PST, STTP /TOP OF PERMANENT SYMBOL TABLE | |
2926 | ALEN=S0 | |
2927 | APTR=AS0 | |
2928 | BPTR=SYMBOL | |
2929 | BVAL=VAL | |
2930 | BCODE=USE | |
2931 | FOUND=TEM4 | |
2932 | SPTR=TEM5 | |
2933 | BLEN=LFS | |
2934 | BCTR=OP | |
2935 | AACTR=IB | |
2936 | AVAL=AFS | |
2937 | K3777, 3777 | |
2938 | LSTDEP, LSTDEV | |
2939 | ||
2940 | ||
2941 | \f*4200 | |
2942 | ||
2943 | / | |
2944 | /ROUTINE TO PUSH DOWN CUR.LINE FOR NEXT PAGE. | |
2945 | /SAVES ENTIRE LIST OF VITAL INFO | |
2946 | /(LFS, OP, IB,...,BANK, S0) IN TEMP.LOCS | |
2947 | /(TLFS, TOP, TIB,..., TS0) | |
2948 | /BOTH LISTS MUST BE KEPT IN SPECIFIED | |
2949 | /ORDER. | |
2950 | /IF THERE IS AN LFS ON LINE MUST MARK IT | |
2951 | /NO-LONGER-DEFINED-ON-PAGE IN PST. | |
2952 | / | |
2953 | ||
2954 | PUSHIN, 0 | |
2955 | TAD LFS /IS THERE AN LFS | |
2956 | SNA CLA | |
2957 | JMP PSHIN2 /NO | |
2958 | JMS I OBSYM | |
2959 | LFS | |
2960 | JMS I SPSTAB /GET ITS POINTERS TO THE PAGE SYMBOL TABLE | |
2961 | NOP | |
2962 | TAD I PSTCPR /KILL THE DEFINED BIT | |
2963 | AND K3777A | |
2964 | DCA I PSTCPR /SET PAGE SYMBOL TABLE CODE WORD OFF PAGE | |
2965 | PSHIN2, JMS PUSHER | |
2966 | LFS-1 | |
2967 | TLFS-1 | |
2968 | JMP I PUSHIN /RETURN | |
2969 | / | |
2970 | / ROUTINE TO POP UP A PUSHED DOWN INSTRUCTION | |
2971 | / | |
2972 | POPIN, 0 | |
2973 | CLA | |
2974 | JMS PUSHER | |
2975 | TLFS-1 | |
2976 | LFS-1 | |
2977 | JMP I POPIN /RETURN | |
2978 | TLFS, 0 /KEEP THIS LIST ORDERED AS GIVEN | |
2979 | TOP, 0 | |
2980 | TIB, 0 | |
2981 | TAFS, 0 | |
2982 | TUMIC, 0 | |
2983 | TNSGN, 0 | |
2984 | TEXP, 0 | |
2985 | TSKZ, 0 | |
2986 | TBANK, 0 | |
2987 | TS0, 0 | |
2988 | ||
2989 | ||
2990 | / | |
2991 | /TRANSFER ANY LIST OF 10 (12 OCTAL) ITEMS | |
2992 | /FROM ONE LIST TO ANOTHER | |
2993 | /CALL SEQ.: JMS PUSHER | |
2994 | / ADDR-1 OF FROM-LIST | |
2995 | / ADDR-1 OF TO-LIST | |
2996 | / RET. | |
2997 | / | |
2998 | ||
2999 | PUSHER, 0 | |
3000 | TAD M12A | |
3001 | DCA TEM1 /CTR | |
3002 | TAD I PUSHER | |
3003 | DCA X1 /INDEX FROM LIST | |
3004 | ISZ PUSHER | |
3005 | TAD I PUSHER | |
3006 | DCA X2 /INDEX TO LIST | |
3007 | TAD I X1 | |
3008 | DCA I X2 | |
3009 | ISZ TEM1 | |
3010 | JMP .-3 | |
3011 | ISZ PUSHER | |
3012 | JMP I PUSHER | |
3013 | M12A, -12 | |
3014 | K3777A, 3777 | |
3015 | /RETRN PSUEDO-OP | |
3016 | / | |
3017 | PRTN, JMS I GETSYM /GET NEXT INPUT ITEM | |
3018 | SKP /NOTHING | |
3019 | JMP .+3 /SYMBOL | |
3020 | NOP /CONSTANT | |
3021 | IERROR /LITERAL | |
3022 | JMS I SKIPL | |
3023 | JMS I SREST /PLACE SYMBOL ON EXTERNAL SYMBOL TABLE | |
3024 | DCA PRTN0 /SAVE SYMBOL ID | |
3025 | JMS PUSHIN /PUSH LFS INFO IN CASE OF PAGE ASSEMBLY | |
3026 | TAD K2 /SET AC TO 2 | |
3027 | JMS I PRTN1 /ARE THERE 2 LOCATIONS ON THIS PAGE | |
3028 | SKP CLA /YES | |
3029 | JMS I INI /NO ... HAD TO ASSEMBLE PAGE ... INITIALIZE PT | |
3030 | JMS POPIN /POP LFS INFO FROM PAGE PUSH LIST | |
3031 | JMS I ICPLFS /PROCESS ANY LFS | |
3032 | TAD I PTCPR /PT CODE WORD WITH POSSIBLE LFS BIT | |
3033 | TAD K30 /ADD SPECIAL RELOCATION BIT | |
3034 | DCA I PTCPR /PLACE PROPER CODE WORD ON PT | |
3035 | TAD DOTRTN | |
3036 | DCA I PTSPR /PLACE JMS .RTN INSTRUCTION IN PT SYMBOL WORD | |
3037 | JMS I PRTN3 /INCREMENT PT POINTERS | |
3038 | TAD K130 /PROPER BIT PATTERN | |
3039 | DCA I PTCPR /TO PT CODE WORD | |
3040 | TAD PRTN0 /PLACE EXTERNAL SYMBOL NUMBER ON PT | |
3041 | DCA I PTSPR /AS SYMBOL WORD | |
3042 | JMS I PRTN3 /INCREMENT PT POINTERS | |
3043 | JMP I POPEXP /EXIT FOR NEXT LINE | |
3044 | DOTRTN, JMS RTN | |
3045 | PRTN0, 0 | |
3046 | PRTN1, IFFSUB | |
3047 | PRTN3, ASMIF1 | |
3048 | ||
3049 | / | |
3050 | / @PAUSE@ PSEUDO OPERATION | |
3051 | / | |
3052 | PPAUSE, JMS I WLNIFI /LIST IF PASS 2 | |
3053 | CLA HLT /WAIT FOR OPERATOR ACTION | |
3054 | RFC /SELECT READER | |
3055 | JMS I INITRP | |
3056 | JMS I SKIPL | |
3057 | PPAUS1, CMA /WE REACH THIS ONLY IF FORFLG. LE. 0(ALSO COME FROM *PEND*) | |
3058 | DCA FORFLG /SHUT OFF FORTR IN CASE GUY | |
3059 | /HAS STARTED HIS TAPE IN | |
3060 | /THE MIDDLE | |
3061 | JMP I DCIL1 /RETURN FOR NEXT LINE | |
3062 | ||
3063 | WLNIFI, WLNIF1 | |
3064 | ||
3065 | ||
3066 | / | |
3067 | /OVERAL ASSEMBLY INITIALIZATION | |
3068 | / | |
3069 | INITA, 0 | |
3070 | CDF 10 | |
3071 | DCA I FATALP | |
3072 | JMS I CRLF | |
3073 | JMS I CRLF | |
3074 | TAD PEB | |
3075 | DCA I PEPTRP | |
3076 | JMS PUSHER /INIT HICOM, PAGE, ESTSIZ, EQVBIT & APMSW ETC | |
3077 | K777-1 | |
3078 | HICOM-1 | |
3079 | JMS I INITRP | |
3080 | TAD PASS | |
3081 | SZA CLA | |
3082 | JMP I INITA | |
3083 | DCA SYMBOL /PROTECT FROM RUSVL | |
3084 | JMS I INITMP | |
3085 | DCA CSUM | |
3086 | TAD K10 /SET PUSH CTR=-2 | |
3087 | JMS PUSHER /INIT OTP & STP | |
3088 | OTPR-1 | |
3089 | OTP-1 | |
3090 | JMS I LEADI | |
3091 | JMP I INITA | |
3092 | OTPR, CORE1-1 /KEEP STTR IMMEDIATELY AFTER OTPR | |
3093 | STTR, STTP | |
3094 | /***** KEEP ITEMS SO INCLOSED IN GIVEN ORDER | |
3095 | K777, 177 | |
3096 | 200 | |
3097 | 0 | |
3098 | 0 | |
3099 | 0 | |
3100 | 1 | |
3101 | 1 | |
3102 | 0 | |
3103 | 0 | |
3104 | 0 | |
3105 | /****************** | |
3106 | INITRP, INITR | |
3107 | FATALP, FATAL | |
3108 | PEPTRP, PEPTR | |
3109 | LEADI, LEADER | |
3110 | PEB, PEBSE | |
3111 | INITMP, INITMR | |
3112 | \f*4400 | |
3113 | / | |
3114 | / ROUTINE TO SEARCH SYMBOL TABLE FOR SYMBOL IN S0-S3 | |
3115 | / PLACES SYMBOL ON TABLE IF NOT THERE | |
3116 | / CALL IS | |
3117 | / JMS SRSYM | |
3118 | / NOT FOUND EXIT | |
3119 | / FOUND EXIT | |
3120 | ||
3121 | /RETURNS WITH SYMBOL CODE BITS IN "USE" | |
3122 | /SYMBOL VALUE (0 IF NOT DEFINED) | |
3123 | /IN "VAL" | |
3124 | /& PTR TO SYM.TAB. ENTRY IN "SYMBOL" | |
3125 | /THE LATTER ADDRESS IS REFERRED TO HERE IN | |
3126 | /AS THE SYMBOL "ID" | |
3127 | /SRSYM CALL RUSVL TO STORE USE & VAL | |
3128 | /OF LAST REFERENCED SYMBOL IN MST | |
3129 | /IN CASE THEY HAVE BEEN CHANGED | |
3130 | /IN THE MEANWHILE. | |
3131 | ||
3132 | / | |
3133 | SRSYM, 0 | |
3134 | JMS RUSVL | |
3135 | TAD MST /START AT SYM. TAB. BASE | |
3136 | SRS1, DCA SYMBOL /SET PTR. TO NEXT ENTRY | |
3137 | TAD STT /COMPARE PTR. WITH SYM. TAB. TOP | |
3138 | CIA | |
3139 | TAD SYMBOL | |
3140 | SNA CLA /CONTINUE SEARCH | |
3141 | JMP SRS2 /NAME NOT IN TABLE ENTER IT | |
3142 | CDF 00 | |
3143 | TAD I SYMBOL /GET ENTRY CODE WORD | |
3144 | CDF 10 | |
3145 | AND K3 /EXTRACT SYMBOL LENGTH | |
3146 | DCA TEM2 | |
3147 | TAD TEM2 | |
3148 | CIA /NEGATE FOR COMPARE & CTR. | |
3149 | DCA TEM1 | |
3150 | TAD TEM1 /COMPARE ENTRY & LOOK-UP SYMBOL LENGTHS | |
3151 | TAD S0 | |
3152 | SZA CLA /SAME LENGTH; COMPARE LETTERS | |
3153 | JMP SRS5 /NOT SAME; GO TO NEXT ENTRY | |
3154 | TAD AS0 /AUTO-INDEX LOOP-UP SYMBOL | |
3155 | DCA X1 | |
3156 | TAD SYMBOL /AUTO-INDEX TABLE ENTRY | |
3157 | DCA X2 | |
3158 | SRS3, CDF 00 | |
3159 | TAD I X2 /GET TABLE ENTRY CHAR. PAIR | |
3160 | CIA | |
3161 | CDF 10 | |
3162 | TAD I X1 /COMPARE LOOK-UP SYMBOL CHAR. PAIR | |
3163 | SZA CLA /SAME | |
3164 | JMP SRS5 /NO MATCH | |
3165 | ISZ TEM1 /CK SYM. LEN. CTR. | |
3166 | JMP SRS3 /NOT DONE, TRY NEXT CHAR. PAIR | |
3167 | SRS4, JMS SUSVL /GET USE & VAL WORDS | |
3168 | JMP I SRSYM | |
3169 | ||
3170 | SRS5, TAD SYMBOL /PTR TO LAST ENTRY | |
3171 | TAD K2 /+2 FOR USE & VAL WORDS | |
3172 | TAD TEM2 /+ENTRY SYMBOL LENGTH | |
3173 | JMP SRS1 /=PTR TO NEXT ENTRY | |
3174 | / | |
3175 | /CURRENT SYMBOL NOT ON TABLE ... PLACE IT THERE | |
3176 | / | |
3177 | ||
3178 | SRS2, TAD OTP /WILL NEW ENTRY FIT BELOW | |
3179 | CIA CLL /OCCURANCE TABLE? | |
3180 | TAD SYMBOL | |
3181 | TAD S0 | |
3182 | SZL CLA /0 LINK=YES | |
3183 | SERROR /NO, SYMBOL TABLE OVERFLOW | |
3184 | TAD S0 /ENTRY CODE WORD = SYM. LEN. | |
3185 | TAD K1000 /+REL BIT | |
3186 | CDF 00 | |
3187 | DCA I STT /PUT CODE IN 1ST WORD OF NEW ENTRY | |
3188 | TAD STT /AUTO-INDEX ENTRY | |
3189 | DCA X2 | |
3190 | TAD AS0 /AUTO-INDEX SYMBOL TO BE STORED | |
3191 | DCA X1 | |
3192 | TAD S0 /SET SYM. LEN. CTR. | |
3193 | CIA | |
3194 | DCA TEM1 | |
3195 | ERS1, CDF 10 | |
3196 | TAD I X1 /MOVE SYMBOL CHAR. PAIR TO TABLE | |
3197 | CDF 00 | |
3198 | DCA I X2 | |
3199 | ISZ TEM1 /CK. CTR. | |
3200 | JMP ERS1 /NOT DONE | |
3201 | DCA I X2 /CLR VALUE WORD | |
3202 | TAD STT /SAVE PTR TO NEW ENTRY | |
3203 | DCA SYMBOL | |
3204 | TAD X2 /RESET PTR. TO SYM. TAB. TOP | |
3205 | IAC | |
3206 | DCA STT | |
3207 | CDF 10 | |
3208 | JMP SRS4 | |
3209 | ||
3210 | / | |
3211 | /OBTAIN GIVEN SYMBOL'S VITAL INFO FROM MST | |
3212 | /CALL SEQ: JMS OBNSYM | |
3213 | / ADDRESS OF SYMBOL ID | |
3214 | / RET. | |
3215 | /OBNSYM LEAVES SYMBOL ID IN "SYMBOL", | |
3216 | / SYMBOL CODE WORD IN USE, | |
3217 | / SYMBOL VALUE IN VAL. | |
3218 | /OBNSYM CALLS RUSVL BEFORE ACTION | |
3219 | /FOR SAME REASON AS SRSYM DOES. | |
3220 | / | |
3221 | OBNSYM, 0 | |
3222 | JMS RUSVL | |
3223 | TAD I OBNSYM /ADDRESS OF SYMBOL | |
3224 | DCA TEM1 | |
3225 | TAD I TEM1 /ACTUAL SYMBOL | |
3226 | DCA SYMBOL | |
3227 | ISZ OBNSYM /INDEX FOR EXIT | |
3228 | JMS SUSVL /SET UP USE AND VALUE WORDS | |
3229 | JMP I OBNSYM /RETURN WHEN FOUND | |
3230 | / | |
3231 | / ROUTINE TO SET UP USE AND VALUE WORDS | |
3232 | / | |
3233 | SUSVL, 0 | |
3234 | CDF 00 /OFF TO BANK 1 | |
3235 | TAD I SYMBOL /MST USE WORD FROM BANK 1 | |
3236 | DCA USE /TO BANK 0 USE LOCATION | |
3237 | TAD USE | |
3238 | AND K3 | |
3239 | IAC | |
3240 | TAD SYMBOL | |
3241 | DCA VALPTR | |
3242 | TAD I VALPTR /MST VALUE WORD FROM BANK 1 | |
3243 | DCA VAL /TO BANK 0 VALUE LOCATION | |
3244 | CDF 10 /RESTORE DATA FIELD | |
3245 | JMP I SUSVL /RETURN | |
3246 | ||
3247 | RUSVL, 0 | |
3248 | CDF 00 | |
3249 | TAD USE | |
3250 | DCA I SYMBOL | |
3251 | TAD VAL | |
3252 | DCA I VALPTR | |
3253 | CDF 10 | |
3254 | JMP I RUSVL | |
3255 | ||
3256 | VALPTR, 0 /PTR TO CURRENT VAL WORD IN MST | |
3257 | / | |
3258 | /READ A CHARACTER | |
3259 | / IGNORES LF, FF, RO, LEADER | |
3260 | / ALSO CHECKS CHAR AS TO TYPE | |
3261 | /CALLING SEQ: JMS RCH | |
3262 | / RETURN IF CHAR IS A DIGIT | |
3263 | / RETURN IF CHAR IS ALPHABETIC | |
3264 | / RETURN FOR ALL OTHER (PUNCT,ETC) | |
3265 | /LEAVES AC==0 | |
3266 | / CHR=ASCII VALUE OF INPUT CHARACTER | |
3267 | /CALLS SRT | |
3268 | ||
3269 | RCH, 0 | |
3270 | JMS I GETCHR /GET 1 CHAR | |
3271 | SNA | |
3272 | JMP RCH3 /0=END OF LINE | |
3273 | TAD M260 | |
3274 | SPA | |
3275 | JMP RCH3 /TAKE PUNCT.EXIT (200-257) | |
3276 | TAD M12 | |
3277 | SPA | |
3278 | JMP RCH4 /TAKE DIGIT EXIT (260-271) | |
3279 | TAD M7 | |
3280 | SPA | |
3281 | JMP RCH3 /TAKE PUNCT, EXIT (272-300) | |
3282 | TAD M37A | |
3283 | ||
3284 | SMA | |
3285 | ||
3286 | RCH3, ISZ RCH /PUNCT, EXIT (337-376) | |
3287 | ISZ RCH /ALPHA EXIT (301-336) | |
3288 | ||
3289 | RCH4, CLA /DIGIT EXIT | |
3290 | JMP I RCH | |
3291 | M260, -260 | |
3292 | M12, -12 | |
3293 | M37A, -36 | |
3294 | ||
3295 | ||
3296 | /FORCE BUFFER FILL ON FIRST READ | |
3297 | ||
3298 | INITR, 0 | |
3299 | TAD MBE | |
3300 | DCA X3 | |
3301 | JMP I INITR | |
3302 | ||
3303 | MBE=LINAX /=LAST WORD OF DATA BUFFER | |
3304 | \f*4600 | |
3305 | ||
3306 | /SUBR TO READ 1 LINE INTO LINE BUFFER | |
3307 | ||
3308 | RLN, 0 | |
3309 | DCA LFLG /CLR NON-NULL LINE FLAG | |
3310 | TAD SCOLON /IF LAST LINE ENDED WITH ; | |
3311 | SZA /NO NEED TO READ ANOTHER | |
3312 | JMP RLN4 | |
3313 | TAD LINAX /INIT STORAGE AUTO-INDEX | |
3314 | DCA X2 | |
3315 | RLN2, JMS FETCH /GET A CHARACTER | |
3316 | JMS I TEST /IS IT A CR,TAB,SP,FF,LF? | |
3317 | SL7-1 /IF SO GO TO RLN15,3,3,2,2 | |
3318 | BL6-SL7 | |
3319 | ISZ LFLG /OTHERWISE A NON-NULL LINE | |
3320 | RLN3, JMS I STOREP /OTHERWISE PUT IT IN THE BUFFER | |
3321 | TAD X2 /IS BUFFER FULL? | |
3322 | TAD LINEND | |
3323 | SZA CLA | |
3324 | JMP RLN2 /NO | |
3325 | CMA | |
3326 | TAD X2 | |
3327 | DCA X2 /IF SO MOVE BACK PTR | |
3328 | JMP RLN2 | |
3329 | RLN15, DCA CHR /TERMINATE LINE WITH 0 | |
3330 | JMS I STOREP | |
3331 | DCA AFLG | |
3332 | DCA EFLG | |
3333 | DCA VFLG | |
3334 | DCA CODE | |
3335 | TAD LINAX /INIT LINE INDEX | |
3336 | RLN4, DCA X0 | |
3337 | DCA SCOLON /CLR | |
3338 | JMP I RLN | |
3339 | ||
3340 | ||
3341 | STOREP, STORE | |
3342 | LINEND, -LINBUF-107 | |
3343 | ||
3344 | /SUBROUTINE TO READ 1 CHARACTER VIA INPUT DEVICE | |
3345 | /IGNORES 200'S & 377'S | |
3346 | ||
3347 | FETCH, 0 | |
3348 | JMS R | |
3349 | AND K177 | |
3350 | TAD K200 /FORCE FULL 8BIT ASCII | |
3351 | DCA CHR | |
3352 | TAD CHR | |
3353 | TAD M200 | |
3354 | SZA | |
3355 | TAD M177 | |
3356 | SNA CLA | |
3357 | JMP FETCH+1 | |
3358 | JMP I FETCH | |
3359 | M177, -177 | |
3360 | ||
3361 | /SUBR TO GET NEXT CHAR FROM HSR BUFFER | |
3362 | /REFILL BUFFER WHEN X3 REACHES END OF BUFFER | |
3363 | ||
3364 | R, 0 | |
3365 | CDF 00 | |
3366 | TAD X3 | |
3367 | TAD BUFEND /CK FOR END OF BUFFER | |
3368 | SNA CLA | |
3369 | JMP RG /REFILL | |
3370 | R1, TAD I X3 /GET NEXT CHAR | |
3371 | CDF 10 | |
3372 | JMP I R | |
3373 | RG, TAD BUF /INDEX THE BUFFER | |
3374 | DCA X3 | |
3375 | RG1, JMS I INDEV | |
3376 | DCA I X3 | |
3377 | TAD X3 /CK FOR FULL | |
3378 | TAD BUFEND | |
3379 | SZA CLA | |
3380 | JMP RG1 /NOT FULL | |
3381 | RG3, TAD BUF /RESET PTR | |
3382 | DCA X3 | |
3383 | JMP R1 | |
3384 | ||
3385 | INDEV, HSR | |
3386 | BUF, DATA-1 | |
3387 | ||
3388 | BUFEND, 1-LINBUF | |
3389 | ||
3390 | /GET 1 CHAR FROM LINE BUFFER | |
3391 | ||
3392 | L65, 0 | |
3393 | CDF 00 | |
3394 | TAD I X0 | |
3395 | CDF 10 | |
3396 | DCA CHR | |
3397 | TAD CHR | |
3398 | JMP I L65 | |
3399 | ||
3400 | / | |
3401 | / ROUTINE TO PUNCH LEADER TRAILER CODE | |
3402 | / | |
3403 | LEADER, 0 | |
3404 | TAD K7600 | |
3405 | DCA TEM1 | |
3406 | TAD K200 | |
3407 | JMS I PUNCH | |
3408 | ISZ TEM1 | |
3409 | JMP .-3 | |
3410 | JMP I LEADER | |
3411 | ||
3412 | / | |
3413 | / ROUTINE TO TYPE RETURN-LINE FEED | |
3414 | / | |
3415 | 0215 | |
3416 | 0212 | |
3417 | L73, 0 | |
3418 | CLA | |
3419 | TAD L73-2 | |
3420 | JMS I TYPE | |
3421 | TAD L73-1 | |
3422 | JMS I TYPE | |
3423 | JMP I L73 | |
3424 | ||
3425 | ||
3426 | /DECIM & OCTAL PSUEDO-OPS | |
3427 | ||
3428 | PDEC, JMS I SKIPL | |
3429 | IAC /SET ARITHMETIC CONVERSION TO DECIMAL | |
3430 | SKP | |
3431 | POCT, JMS I SKIPL | |
3432 | DCA DSW /SET ARITHMETIC CONVERSION TO OCTAL | |
3433 | JMP I NULLP /GO GET NEXT INPUT LINE | |
3434 | ||
3435 | ||
3436 | ||
3437 | / | |
3438 | /ROUTINE TO STOP NEXT LINE FROM BEING LISTED | |
3439 | /THO IT IS ALREADY IN THE BUFR. | |
3440 | /E.G., STOP LISTING OF PUSHED DOWN LINE | |
3441 | /WHILE ASSEMBLING LIT. POOL | |
3442 | / | |
3443 | SAVLIN, 0 | |
3444 | CDF 00 | |
3445 | TAD I LINEB2 /SAVE 1ST CHAR OF LINE | |
3446 | SNA /IF ANY | |
3447 | JMP .+3 /THERE ISNT ANY | |
3448 | ||
3449 | DCA SAVEIT | |
3450 | DCA I LINEB2 /CLR TO PREVENT TYPEOUT | |
3451 | CDF 10 | |
3452 | JMP I SAVLIN | |
3453 | ||
3454 | ||
3455 | / | |
3456 | /REENABLE LISTING OF LINE WHICH SAVLIN | |
3457 | /PREVENTED | |
3458 | / | |
3459 | ||
3460 | RELINE, 0 | |
3461 | CDF 00 | |
3462 | TAD SAVEIT /RESTORE 1ST CHAR OF LINE | |
3463 | DCA I LINEB2 | |
3464 | CDF 10 | |
3465 | JMP I RELINE | |
3466 | ||
3467 | SAVEIT, 0 | |
3468 | LINEB2, LINBUF | |
3469 | ||
3470 | ||
3471 | /ROUTINE TO LIST NULL, COMMENT OR PSUEDO-OP LINE | |
3472 | ||
3473 | NULL, DCA VALUE /IF ANY GIVEN | |
3474 | TAD VALUE /SET TYPEOUT FLAG IF NON-0 | |
3475 | DCA VFLG | |
3476 | JMS I WLIF /LIST IF PASS 2 | |
3477 | JMP I DCIL1 /GO BACK TO RDL1 FOR NEXT LINE | |
3478 | WLIF, WLNIF1 | |
3479 | ||
3480 | / | |
3481 | / TYPE ROUTINE | |
3482 | / | |
3483 | L64, 0 | |
3484 | TLS /SELECT IT | |
3485 | TSF /WAIT FOR TTY | |
3486 | JMP .-1 | |
3487 | CLA /EXIT WITH CLEAR AC | |
3488 | JMP I L64 | |
3489 | \f*5000 | |
3490 | / | |
3491 | / ROUTINE TO SET THE CORRECT COUNTERS FOR THE CURRENT | |
3492 | / OP CODE AND ADDRESS FIELD SYMBOL | |
3493 | / | |
3494 | /THIS IS A MAJOR ROUTINE. IT IS CALLED ONCE | |
3495 | /FOR EVERY NORMAL (MRI,OPR,IOT) INSTR. COLLECTED. | |
3496 | /IT IS ALSO CALLED DURING PAGE | |
3497 | /RECOUNTING, ONCE FOR EVERY ITEM ON THE | |
3498 | /PAGE TABLE. | |
3499 | /CALLING SEQ: AC=0,JMS,RET WITH AC=0 | |
3500 | /FUNCTION: DETERMINE THE TYPE OF LINE BEING | |
3501 | /READ AND SET THE VARIOUS PAGE COUNTERS | |
3502 | /AND FLAGS ACCORDINGLY. | |
3503 | /A FLOW CHART OF TYPES & FLAG SETTINGS IS GIVEN BELOW. | |
3504 | /CONSIDERABLE OVERLAPPING IS USED TO ACHIEVE | |
3505 | /THE MIN. CORE USAGE. THIS IS SOMETIMES AT THE | |
3506 | /EXPENSE OF LOGICAL CLARITY. | |
3507 | /ALL POSSIBLE CONDITIONS EXIT VIA SETC00 | |
3508 | /SETC00:(1) IF LAST INSTR. WAS A SKIP & LAST BANK | |
3509 | / IS NOT= CUR.BANK, BANK=-1. | |
3510 | / (2) IF CUR. INSTR. IS A SKIP, PGEESC=4 | |
3511 | / OTHERWISE PGEESC=2. | |
3512 | / (3) LASTSKIP CONDITION= CUR. SKIP CONDITION | |
3513 | / (4) LAST BANK= CUR. BANK | |
3514 | / | |
3515 | /FLOW OF INSTR. TYPES | |
3516 | /SETCT: IF (PARAMETER OR MICRO-INSTR.) SETC00 | |
3517 | / IF (LITERAL AFS) SETC02 | |
3518 | / IF(CONSTANT AFS) SETC01 | |
3519 | / CALL OBNSYM(AFS) | |
3520 | / IF (INSTR. IS INDIRECT) SETC07 | |
3521 | / IF (AFS IS IN COMMON) SETCO4 | |
3522 | / IF (ABSOLUTE AFS) SETC05 | |
3523 | / CALL SPSTB (AFS) /SEARCH PST FOR AFS | |
3524 | / CALL SETSUB | |
3525 | / IF (AFS NOT BEFORE ON PST) SETC06 | |
3526 | / IF (AFS WAS IN PST BUT NOT DEF. ON PAGE)SETC12 | |
3527 | / IF (OP CODE=JMS) BANK=1 | |
3528 | / GO TO SETC00 /ON PAGE MR1 | |
3529 | /SETC01:IF (CONST.AFS ON PG.0)J2 | |
3530 | / IF (INSTR. IS INDIRECT) ERROR | |
3531 | / CALL SLTAB(CONST. AFS) /PUT CONST. IN LIT.TAB. | |
3532 | /J1: IF (BANK NOT=1) SETC13 | |
3533 | / GO TO SETC00 | |
3534 | / J2* IF( INSTR.INDIR.) J1 /PG.0 INDIRECT | |
3535 | / GO TO SETC00 /PG.0 DIRECT | |
3536 | /SETC04:IF(BANK NOT 0) CALL INCOBA /INC OBACTR | |
3537 | / CALL NUMSGN | |
3538 | / S0=RESULT+COMMON ADDR. | |
3539 | /SETC02:CALL SLTAB(S0) /LIT.OR. COMMN. ADDR. TO LIT. TAB. | |
3540 | / GO TO SETC00 | |
3541 | / IF (AFS NOT PREV. ON PST) SETC11 | |
3542 | / IF (AFS WAS ON PST BUT NOT DEF. ON PAGE) SETC11 | |
3543 | / GO TO J3 | |
3544 | /SETC10:CALL NUMSGN | |
3545 | / IF (ABS.AFS ON PAGE 0) J3 | |
3546 | /SETC11:AC=1 /FORCE BANK=1 | |
3547 | /SETC09:AC=AC+1 /FORCE BANK=0 | |
3548 | /SETC08:AC=AC-2 /FORCE BANK=-1 | |
3549 | / CALL INCOBA /INC OBACTR | |
3550 | / AC=BANK /(BANK OFFSET BY -1) | |
3551 | / GO TO SETC13 /(TAKEN CARE OF AT SETC13) | |
3552 | /SETC12:IF (NEW PST CODE BITS 10-11=OLD SAME (IN TEM 3)) J3 | |
3553 | /SETC06:INC OPSCTR /OFF PAGE SYMBOL | |
3554 | /J3: IF (BANK=1) SETC00 | |
3555 | / INC AC | |
3556 | / CALL INCOBA | |
3557 | /J4: IF (THERE HAS NOT BEEN A PST SEARCH) SETC00 | |
3558 | / ADD CHANGE IN OBACTR (OBACTR-OLDOBA) TO PST CODE BITS 3-9 | |
3559 | / GO TO SETC00 | |
3560 | / | |
3561 | /NOTE: CONDITION AT J4 IS TESTED BY SETSUB HEADER | |
3562 | /WORD (OBFLG). THIS IS ALWAYS CLEARED | |
3563 | /WHEN SETCT STARTS AND WILL NOT CHANGE | |
3564 | /UNLESS THERE IS A CALL TO SPSTB BECAUSE | |
3565 | /A CALL TO SETSUB ALWAYS FOLLOWS CALL TO | |
3566 | /SPSTB IN SETCT. | |
3567 | ||
3568 | ||
3569 | / | |
3570 | \fSETCT, 0 | |
3571 | JMS I ICPLFS /CHECK FOR AND PROCESS ANY LFS | |
3572 | DCA OBFLG /CLR | |
3573 | /NEXT 2 LINES MOVED TO | |
3574 | /SETCAL (AS OF V15) TO MAKE ROOM FOR FOLLOWING INSTR. & PTR | |
3575 | / TAD EXP /IS IT PAR OR A MICRO INST? | |
3576 | / TAD UMIC | |
3577 | JMS I SETCAP | |
3578 | SZA CLA | |
3579 | JMP I SET00I /YES | |
3580 | CLA CLL CMA RAL | |
3581 | TAD AFS | |
3582 | SNA /IS AFS A CONSTANT | |
3583 | JMP SETC01 /YES | |
3584 | IAC | |
3585 | SNA CLA /IS AFS A LITERAL | |
3586 | JMP I SET02I /YES | |
3587 | JMS I OBSYM /NO ... GET POINTERS TO AFS | |
3588 | AFS | |
3589 | TAD IB /INDIRECT BIT | |
3590 | SZA CLA /IS IT SET | |
3591 | JMP SETC07 /YES | |
3592 | JMS USETST /TEST FOR OFF BANK OR ABSOLUTE | |
3593 | SETC04 /OFF BANK | |
3594 | SETC05 /ABSOLUTE | |
3595 | JMS I SPSTAB /IS AFS ON PST | |
3596 | CMA /NOT FOUND | |
3597 | JMS SETSUB | |
3598 | JMP I SET06I /NO ... MUST BE OFF PAGE | |
3599 | TAD I PSTCPR /YES ... PST CODE WORD | |
3600 | SMA CLA /IS AFS ON PAGE | |
3601 | JMP I SET12I /NO | |
3602 | JMP I SET00I | |
3603 | / | |
3604 | / INDIRECT MEMORY REFERANCE INSTRUCTION | |
3605 | ||
3606 | SETC07, TAD USE /AFS MST USE WORD | |
3607 | AND K20 /IS AFS DUMMY | |
3608 | SZA CLA | |
3609 | JMP I SET08I /YES | |
3610 | JMS USETST /TEST OFF BANK OR ABSOLUTE | |
3611 | SETC09 /OFF BANK | |
3612 | SETC10 /ABSOLUTE | |
3613 | JMS I SPSTAB /IS AFS ON PST | |
3614 | CMA /NOT FOUND | |
3615 | JMS SETSUB | |
3616 | JMP I SET11I /NO | |
3617 | TAD I PSTCPR /YES ... PST CODE WORD | |
3618 | SMA CLA /IS AFS ON PAGE | |
3619 | JMP I SET11I /NO | |
3620 | JMP I SET6P1 /YES | |
3621 | / | |
3622 | / CONSTANT FOR AN ADDRESS FIELD SYMBOL | |
3623 | / | |
3624 | SETC01, TAD S0 /ACTUAL BINARY CONSTANT | |
3625 | AND K7600 /IS CONSTANT ON PAGE ZERO | |
3626 | SNA CLA | |
3627 | JMP SET01A /YES | |
3628 | TAD IB /NO ... IS IT INDIRECT | |
3629 | SZA CLA | |
3630 | IERROR /YES ... ERROR | |
3631 | JMS I SLITAB /IS CONSTANT ON LITERAL TABLE | |
3632 | /IF NOT SUBROUTINE PUTS IT THERE | |
3633 | TAD OP | |
3634 | SPA CLA /IF OPCODE IS JMS OR JMP THEN BANK IS IRRELEVANT | |
3635 | JMP I SET00I | |
3636 | SET01B, CLA CMA | |
3637 | TAD BANK /BANK SETTING | |
3638 | SNA CLA /IS IT SET TO THE CURRENT BANK | |
3639 | JMP I SET00I /YES ... NO PROBLEMS | |
3640 | JMP I SET00J /EXIT TO; COMMON AREA | |
3641 | / | |
3642 | SET01A, TAD IB /IS INDIRECT BIT SET | |
3643 | SZA CLA | |
3644 | JMP SET01B /YES | |
3645 | JMP I SET00I /NO | |
3646 | SET00I, SETC00 | |
3647 | SET02I, SETC02 | |
3648 | SET00J, SETC13 | |
3649 | SET00B, JMP I SETCT /OFF PAGE RETURN | |
3650 | SET06I, SETC06 | |
3651 | SET08I, SETC08 | |
3652 | SET11I, SETC11 | |
3653 | SET12I, SETC12 | |
3654 | SET6P1, SETC6A | |
3655 | SETCAP, SETCAL | |
3656 | ||
3657 | ||
3658 | /ROUTINE TO TEST MST USE WORD TO DETERMINE WHETHER A SYMBOL IS | |
3659 | /OFF-BANK OR ABSOLUTE | |
3660 | ||
3661 | USETST, 0 | |
3662 | TAD USE | |
3663 | AND K40 | |
3664 | SZA CLA /IS IT OFF BANK? | |
3665 | JMP USESUC /YES- RETURN INDIRECT THROUGH FIRST ARG | |
3666 | TAD USE | |
3667 | AND K3000 | |
3668 | ISZ USETST | |
3669 | SNA CLA /IS IT ABSOLUTE? | |
3670 | JMP USESUC /YES- RETURN INDIRECT THROUGH SECOND ARG | |
3671 | ISZ USETST | |
3672 | JMP I USETST /NEITHER - RETURN TO CALL+3 | |
3673 | USESUC, TAD I USETST | |
3674 | DCA USETST | |
3675 | JMP I USETST /TAKE PROPER BRANCH | |
3676 | ||
3677 | / | |
3678 | /SETSUB IS A UTILITY USED BY SETCT ONLY. | |
3679 | /USED ONLY IMMEDIATELY AFTER A PST SEARCH. | |
3680 | /CALLING SEQUENCE: JMS SPSTB | |
3681 | / CMA /SPSTB MAY SKIP | |
3682 | / JMS SETSUB | |
3683 | / RETURN IF SPSTB SKIPPED OVER CMA | |
3684 | / RETURN IF SPSTB DID NOT SKIP | |
3685 | /HAS SEVERAL FUNCTIONS: | |
3686 | /(1) SAVE COPY OF OLD VALUE OF OBACTR BEFORE | |
3687 | /CHANGING STARTS- SO IT MAY BE USED AT SETC13. | |
3688 | /(2) IF INSTR IS INDIRECT, THAT'S IT- EXIT | |
3689 | /(3) OTHERWISE SAVE OLD VALUE OF PST CODE BITS 10-11 | |
3690 | /FOR LATER USE AT SETC12. WARNING: THIS | |
3691 | /IS SAVED IN TEM3, SO TEM3 IS NOT | |
3692 | /TEMPORARY FOR A FEW MINUTES. | |
3693 | /(4) SET PST CODE BIT 10 IF THIS IS A #REF, | |
3694 | /OR BIT 11 IF IT IS A NORMAL REF. | |
3695 | /ALGORITHM IS A.OR.B=(.NOT.A.AND.B)+A | |
3696 | / | |
3697 | ||
3698 | SETSUB, 0 | |
3699 | DCA TEM1 /0=FOUND, -1=NOT | |
3700 | TAD OBACTR /SAVE FOR SETC11,12,6,13 | |
3701 | DCA I OLDOBP | |
3702 | TAD IB /OMIT CHANGING PST BITS IF INDIRECT | |
3703 | SZA CLA | |
3704 | JMP SETSX | |
3705 | TAD I PSTCPR /SAVE OLD CODE | |
3706 | AND K3 | |
3707 | DCA TEM3 | |
3708 | TAD NSGN | |
3709 | SZA CLA | |
3710 | IAC /# | |
3711 | IAC | |
3712 | DCA TEM2 | |
3713 | TAD TEM2 /OR INTO CODE | |
3714 | CMA | |
3715 | AND I PSTCPR | |
3716 | TAD TEM2 | |
3717 | DCA I PSTCPR | |
3718 | SETSX, ISZ TEM1 /FOUND? | |
3719 | ISZ SETSUB /YES | |
3720 | JMP I SETSUB | |
3721 | ||
3722 | OLDOBP, OLDOBA | |
3723 | OBFLG=SETSUB | |
3724 | ||
3725 | ||
3726 | ||
3727 | /SUBR TO STORE CHARACTER IN LINE BUFFER | |
3728 | /ASSUMES X1 SET | |
3729 | /CHAR MAY BE IN AC OR IN CHR | |
3730 | ||
3731 | STORE, 0 | |
3732 | SNA | |
3733 | TAD CHR | |
3734 | CDF 00 | |
3735 | DCA I X2 | |
3736 | CDF 10 | |
3737 | JMP I STORE | |
3738 | ||
3739 | ||
3740 | / | |
3741 | /ROUTINE TO CHECK NSGN FOR SETCT | |
3742 | /USED ONLY BY SETCT ROUTINE. | |
3743 | /CALLING SEQUENCE: AC=0 | |
3744 | / JMS NUMSGN | |
3745 | / RETURN WITH AC=0 IF | |
3746 | / NSGN=0,AC=1 IF NSGN | |
3747 | / NOT=0. | |
3748 | /NOTE:NSGN MAY BE NON-0 AND NOT=1. THIS | |
3749 | /IS THE REASON FOR NUMSGN. | |
3750 | / | |
3751 | ||
3752 | NUMSGN, 0 | |
3753 | TAD NSGN | |
3754 | SZA CLA | |
3755 | IAC | |
3756 | JMP I NUMSGN | |
3757 | \f*5200 | |
3758 | / | |
3759 | / AFS ABSOLUTE | |
3760 | / | |
3761 | SETC05, JMS I NUMSGP | |
3762 | TAD VAL /ABSOLUTE SYMBOL VALUE | |
3763 | AND K7600 /MASK OUT PAGE BITS | |
3764 | SNA CLA /IS ABSOLUTE SYMBOL ON PAGE ZERO | |
3765 | JMP SETC00 /YES ... EXIT | |
3766 | JMS I NUMSGP | |
3767 | TAD VAL /NO ... ABSOLUTE SYMBOL VALUE | |
3768 | DCA S0 /TO LITERAL TABLE SEARCH LOCATION | |
3769 | JMS I SLITAB /SEARCH LITERAL TABLE FOR VALUE | |
3770 | /IF NOT THERE ROUTINE PLACES IT THERE | |
3771 | JMP SETC06+1 /EXIT | |
3772 | / | |
3773 | / INDIRECT ABSOLUTE | |
3774 | / | |
3775 | SETC10, JMS I NUMSGP | |
3776 | TAD VAL /ACTUAL AFS VALUE | |
3777 | AND K7600 | |
3778 | SNA CLA /IS ADDRESS FIELD SYMBOL ON PAGE ZERO | |
3779 | JMP SETC6A /YES | |
3780 | / | |
3781 | / INDIRECT DUMMY ADDRESS FIELD SYMBOL | |
3782 | / | |
3783 | SETC08, TAD M2 /SET BANK UNKNOWN | |
3784 | / | |
3785 | / OFF PAGE INDIRECT | |
3786 | / | |
3787 | SETC11, IAC /SET BANK TO CURRENT | |
3788 | / | |
3789 | / OFF BANK INDIRECT - SET BANK TO 0 | |
3790 | / | |
3791 | SETC09, | |
3792 | JMS INCOBA /SET BANK & INCR. OBACTR | |
3793 | TAD BANK | |
3794 | JMP SETC13+1 /EXIT TO COMMON AREA | |
3795 | / | |
3796 | ||
3797 | ||
3798 | / ADDRESS FIELD SYMBOL NOT ON PAGE SYMBOL TABLE. | |
3799 | / | |
3800 | SETC12, TAD I PSTCPR /HAS NEW TYPE REF BEEN ADDED? | |
3801 | AND K3 | |
3802 | CIA | |
3803 | TAD TEM3 | |
3804 | SZA CLA /YES | |
3805 | SETC06, ISZ OPSCTR /INCREMENT OFF PAGE SYMBOL COUNTER | |
3806 | TAD OP | |
3807 | SPA CLA /DON'T WORRY ABOUT BANK FOR JMS'S AND JMP'S | |
3808 | JMP SETC00 /WHICH ARE NOT EXPLICITLY INDIRECT | |
3809 | SETC6A, TAD BANK | |
3810 | SMA SZA CLA | |
3811 | JMP SETC00 /YES ... EXIT TO COMMON AREA | |
3812 | SETC13, IAC | |
3813 | JMS INCOBA /SET BANK TO CUR. & INC OBACTR | |
3814 | TAD I OBFLGP /WAS THERE A PST SEARCH? | |
3815 | SNA CLA | |
3816 | JMP SETC00 /NO | |
3817 | TAD OLDOBA /YES GET CHANGE IN OBACTR | |
3818 | CIA | |
3819 | TAD OBACTR | |
3820 | CLL RTL /IN BITS 1-9 | |
3821 | TAD I PSTCPR /ADD TO PST CODE | |
3822 | DCA I PSTCPR | |
3823 | / | |
3824 | / COMMON AREA | |
3825 | / | |
3826 | SETC00, JMS CMNSET /SET BANK=1 AFTER JMS | |
3827 | JMS I SETCMN /UPDATE BANK AND LSTSKP | |
3828 | SZA CLA /IS CURRENT INSTRUCTION A SKIP? | |
3829 | TAD K2 /YES ... PAGE ESCAPE = 4 | |
3830 | TAD K2 /NO ... PAGE ESCAPE = 2 | |
3831 | DCA PGEESC | |
3832 | JMP I .+1 /RETURN | |
3833 | SET00B | |
3834 | SETCMN, ASMCMN | |
3835 | ||
3836 | /ROUTINE TO SET BANK TO CURRENT AFTER A JMS | |
3837 | CMNSET, 0 | |
3838 | TAD OP | |
3839 | TAD K4000 | |
3840 | SZA CLA /WAS OP A JMS? | |
3841 | JMP I CMNSET /NO | |
3842 | IAC | |
3843 | DCA BANK | |
3844 | JMP I CMNSET | |
3845 | ||
3846 | OLDOBA, 0 | |
3847 | OBFLGP, OBFLG | |
3848 | / | |
3849 | / DIRECT OFF BANK REFERANCE | |
3850 | / | |
3851 | SETC04, TAD BANK /BANK INDICATOR | |
3852 | SZA CLA /IS BANK SET TO OFF | |
3853 | JMS INCOBA /NO, SET BANK TO COMMN & INC OBACTR | |
3854 | JMS I NUMSGP | |
3855 | TAD VAL /YES ... ACTUAL BANK 0 ADDRESS | |
3856 | DCA S0 /TO CONSTANT - LITERAL LOCATION | |
3857 | / | |
3858 | / LITERAL FOR AN AFS | |
3859 | / | |
3860 | SETC02, JMS I SLITAB /PLACE LITERAL ON LITERAL TABLE | |
3861 | JMP I SET1AP | |
3862 | / | |
3863 | / COLLECTION ROUTINE TO CHECK FOR AND PROCESS AN LFS | |
3864 | / | |
3865 | /CALLING SEQUENCE: AC=0 | |
3866 | / JMS CPLFS | |
3867 | / RETURN WITH AC=0 | |
3868 | /FUNCTION: USED DURING COLLECTION PHASE | |
3869 | / EXCEPT WHEN RECOUNTING A PAGE. | |
3870 | / IF TAG OCCURS ON CURRENT LINE, CPLFS | |
3871 | / LOCATES (OR ENTERS) IT IN PAGE SYM.TAB. | |
3872 | / AND SETS THE DEFINED-ON-PAGE BIT IN | |
3873 | / THE PST CODE WORD. | |
3874 | / ALSO SETS BANK CONDITION TO UNKNOWN | |
3875 | / SINCE USER CODE CAN JUMP TO TAG | |
3876 | / FROM ANYWHERE. ALSO SAVE | |
3877 | / TAG IN LLFS & RESET LINE COUNT | |
3878 | / IN CASE WE GET A MULT.DEF. ERROR | |
3879 | / IN PASS1 WE MUST ALSO DO THE | |
3880 | / FOLLOWING IF THE SYMBOL IS ALREADY | |
3881 | / IN THE PST WHEN WE GO LOOK FOR | |
3882 | / IT: (1) REDUCE THE OFF-PAGE SYM. | |
3883 | / CTR. BECAUSE OFF-PAGE POINTER (FOR | |
3884 | / EITHER NORMAL OR # REFERENCES) ARE | |
3885 | / NO LONGER NEEDED. (2) REDUCE | |
3886 | / OBACTR BY THE NO. OF EXTRA WORDS | |
3887 | / OF CODE DUE TO THIS SYMBOL. | |
3888 | /SUBRS. CALLED: OBNSYM(LFS),SPSTB,PSTDEF | |
3889 | / | |
3890 | CPLFS, 0 | |
3891 | TAD I RECTI /ARE WE RECOUNTING? | |
3892 | SZA CLA | |
3893 | JMP I CPLFS /YES ... RETURN | |
3894 | TAD LFS | |
3895 | SNA | |
3896 | JMP I CPLFS /NONE THERE | |
3897 | CDF 00 | |
3898 | DCA I LFSPTR /PLACE ON LFS TABLE | |
3899 | ISZ LFSPTR /INCREMENT LFS TABLE POINTER | |
3900 | CDF 10 | |
3901 | ISZ I PTCPR /SET LFS BIT ON PAGE TABLE | |
3902 | JMS I OBSYM | |
3903 | LFS | |
3904 | JMS I SPSTAB /IS IT ON THE PAGE SYMBOL TABLE | |
3905 | JMP CPLFS3 /NO ... SKIP DECREMENTING | |
3906 | DCA TEM1 /CLR | |
3907 | TAD PASS /SKIP DECREMENTING IF PASS 2 | |
3908 | SNA CLA | |
3909 | TAD I PSTCPR /CK USE | |
3910 | AND K3 | |
3911 | CLL RAR | |
3912 | SZL | |
3913 | ISZ TEM1 /NORMAL | |
3914 | SZA CLA | |
3915 | ISZ TEM1 /# | |
3916 | TAD TEM1 /SUBTRACT | |
3917 | CIA | |
3918 | TAD OPSCTR | |
3919 | DCA OPSCTR | |
3920 | TAD I PSTCPR /EXTRACT SHARE OF OBACTR DUE | |
3921 | AND C3774 /TO THIS SYMBOL | |
3922 | CLL RTR /MOVE TO LOW ORDER | |
3923 | CIA /SUB. FROM OBACTR | |
3924 | TAD OBACTR | |
3925 | DCA OBACTR | |
3926 | CPLFS3, JMS I PSTDEP | |
3927 | CLA CMA CLL /SET BANK UNKNOWN (THE CLL IS USED ELSEWHERE) | |
3928 | DCA BANK | |
3929 | TAD LFS /SAVE IN CASE OF ERROR | |
3930 | DCA LLFS | |
3931 | DCA LINE /ZERO LINE COUNT FROM LAST LFS | |
3932 | JMP I CPLFS | |
3933 | C3774, 3774 | |
3934 | NUMSGP, NUMSGN | |
3935 | PSTDEP, PSTDEF | |
3936 | LLFS, 0 | |
3937 | ||
3938 | ||
3939 | / | |
3940 | /UTILITY FOR SETC04,SETC08,SETC13 | |
3941 | /NOT USED ELSEWHERE | |
3942 | /CALLING SEQUENCE: DESIRED BANK SETTING IN AC | |
3943 | / JMS INCOBA | |
3944 | / RETURN WITH AC=0 | |
3945 | /FUNCTION:(1) SET BANK AS SPECIFIED | |
3946 | / (2) INCREMENT OFF-BANK ADDITION CTR | |
3947 | / BY 1 OR 2: 2 IF PREVIOUS INSTR. | |
3948 | / WAS A SKIP-TYPE, 1 OTHERWISE. | |
3949 | / | |
3950 | INCOBA, 0 | |
3951 | DCA BANK | |
3952 | TAD LSTSKP /LAST INSTRUCTION SKIP INDICATOR | |
3953 | SZA CLA /WAS LAST INSTRUCTION A SKIP INSTRUCTION | |
3954 | ISZ OBACTR /+ OLD VALUE OF OFF BANK ADDITION COUNTER | |
3955 | ISZ OBACTR /FOR NEW VALUE OF OFF BANK ADDITION COUNTER | |
3956 | JMP I INCOBA | |
3957 | SET1AP, SET01A | |
3958 | \f*5400 | |
3959 | / | |
3960 | / ROUTINE TO ASSEMBLE THE PAGE HELD IN THE CURRENT SET OF TABLES | |
3961 | ||
3962 | /THIS IS THE MAIN PASS1 ASSEMBLY ROUTINE | |
3963 | /(NOT USED BY PASS2) | |
3964 | /ASMBL GOES THRU ENTIRE PAGE TABLE | |
3965 | /FLOW: (1) CALL A1 TO INIT. PAGE ASSEMBLY | |
3966 | / (2) GET ITEM OFF P.T. | |
3967 | / (3) CALL ASM02 TO ASSEMBLE ITEM | |
3968 | / (4) LOOP BACK TO (2) TIL DONE WITH PAGE | |
3969 | / (5) CALL A2 TO ASM. LITERALS | |
3970 | /ASMBL IS CALLED TWICE BY L55 FOR | |
3971 | /EACH PAGE OF CODE. | |
3972 | / | |
3973 | ASMBL, 0 | |
3974 | JMS A1 | |
3975 | JMS I ILC4PT /OUTPUT PAGE ORIGIN | |
3976 | JMS I INIS /DO INITS. | |
3977 | TAD PTSZE /PLACE - SIZE OF PAGE TABLE | |
3978 | CIA | |
3979 | DCA INDX1 /IN AN INDEX LOCATION | |
3980 | TAD LFSBSE /SET UP LFS TABLE POINTER | |
3981 | DCA LFSPTR | |
3982 | CLA CMA | |
3983 | DCA PHASE /SET PHASE SWITCH TO ASSEMBLY | |
3984 | JMS I ASM02I /SKIP INCREMENTING POINTERS THE FIRST TIME | |
3985 | JMS I ISSI /INCREMENT PAGE TABLE POINTERS | |
3986 | ISZ INDX1 /OVER YET | |
3987 | JMP .-3 | |
3988 | JMS A2 | |
3989 | JMP I ASMBL | |
3990 | ISSI, ISZPT | |
3991 | ||
3992 | ||
3993 | / | |
3994 | /ASSEMBLY ROUTINE TO FINISH OFF A PAGE | |
3995 | /(1) PUTS OUT PAGE ESCAPE | |
3996 | /(2) LITERAL POOL (BY CALLING OAPLT) | |
3997 | /(3) GET READY FOR NEXT PAGE | |
3998 | / | |
3999 | A2, 0 | |
4000 | JMS I SAVLNP /STOP NEXT LINE LISTING | |
4001 | TAD APMSW /ARE WE IN AUTOMATIC PAGING MODE | |
4002 | SZA CLA | |
4003 | JMP A2NONA /NO ... DONT SEND PAGE ESCAPE | |
4004 | TAD PGEESC /SIZE OF PAGE ESCAPE REQUIRED | |
4005 | RTR /2 BIT TO LINK | |
4006 | SZL CLA | |
4007 | JMP ASM01A /2 INSTRUCTION PAGE ESCAPE | |
4008 | /4 INSTRUCTION PAGE ESCAPE | |
4009 | JMS I WRITEP | |
4010 | JMS I OUTBIN /JMP NEXT TO LAST LOC ON THIS PAGE | |
4011 | K5376 | |
4012 | 0 | |
4013 | ISZ ILC /FOR BENEFIT OF "WRITE" | |
4014 | CLA CMA | |
4015 | JMS A2SUBR /OUTPUT JMP AND LITERAL TABLE | |
4016 | JMS I OUTSKP /OUTPUT 2 SKIP INSTRUCTIONS | |
4017 | JMS I OUTSKP | |
4018 | JMP ASM01B /RETURN | |
4019 | / | |
4020 | ASM01A, JMS A2SUBR /OUTPUT JMP AND LITERAL TABLE | |
4021 | JMS I WRITEP | |
4022 | JMS I OUTBIN /PLACE A NOP IN THE LAST LOCATION | |
4023 | K7000 | |
4024 | 0 | |
4025 | ASM01B, JMS I RELNP /RESTORE NEXT LINE FOR LISTING | |
4026 | TAD ACTR /REMAINS 1 DURING PASS 2 | |
4027 | SZA CLA | |
4028 | JMP I A2 /EXIT IF LISTING OR 2ND ASSEMBLY | |
4029 | TAD PUPGE /SAVE ESCAPE ON PUSH DOWN LIST | |
4030 | CDF 00 | |
4031 | DCA I PEPTR | |
4032 | CDF 10 | |
4033 | ISZ PEPTR /MOVE STACK PTR | |
4034 | JMP I A2 /RETURN | |
4035 | ||
4036 | A2NONA, JMS I OUAPLT | |
4037 | DCA PUPGE /CLR | |
4038 | JMP ASM01B | |
4039 | ||
4040 | /SUBROUTINE TO ELIMINATE SOME COMMON CODE | |
4041 | / | |
4042 | A2SUBR, 0 | |
4043 | TAD K177 | |
4044 | TAD PAG | |
4045 | DCA A2TEMP /SET ILC IN CASE NO LITERALS | |
4046 | JMS I WRITEP | |
4047 | JMS I OUTBIN | |
4048 | K5377 | |
4049 | 0 | |
4050 | JMS I OUAPLT /OUTPUT LITERAL TABLE | |
4051 | TAD A2TEMP | |
4052 | DCA ILC /SET ILC TO 176 OR 177 IN PAGE | |
4053 | JMS I ILC4PT | |
4054 | JMP I A2SUBR /RETURN | |
4055 | A2TEMP, 0 | |
4056 | ||
4057 | ||
4058 | ILC4PT, ILC4 | |
4059 | ASM02I, ASM02 | |
4060 | INDX1, 0 | |
4061 | INIS, INISUB | |
4062 | OUAPLT, OAPLT | |
4063 | SAVLNP, SAVLIN | |
4064 | RELNP, RELINE | |
4065 | PEPTR, PEBSE | |
4066 | REDUCE, 0 | |
4067 | CDFSKP, JMS CDFSK | |
4068 | ||
4069 | ||
4070 | / | |
4071 | /INITIALIZE A PAGE ASSEMBLY | |
4072 | / | |
4073 | A1, 0 | |
4074 | TAD PAG /MOVE PAGE TO ILC | |
4075 | DCA ILC | |
4076 | DCA LITSIZ /ZERO LITERAL TABLE SIZE | |
4077 | TAD PASS | |
4078 | SNA CLA | |
4079 | JMP I A1 /EXIT IF PASS 1 | |
4080 | CDF 00 | |
4081 | TAD I PEPTR /GET NEXT PAGE ESC FROM STACK | |
4082 | CDF 10 | |
4083 | ISZ PEPTR /MOVE PTR | |
4084 | DCA REDUCE | |
4085 | JMP I A1 | |
4086 | / | |
4087 | / DUMMY PSEUDO OP | |
4088 | / | |
4089 | PDUMMY, JMS I GETSYM /GET NEXT INPUT ITEM | |
4090 | SKP /NOTHING THERE | |
4091 | JMP .+3 /SYMTOL | |
4092 | NOP /CONSTANT | |
4093 | IERROR /LITERAL | |
4094 | JMS I SKIPL | |
4095 | TAD USE /MST USE WORD | |
4096 | AND K3403 /SAVE SYMBOL LENGTH, TYPE BITS, AND DEF BIT | |
4097 | TAD K20 /ADD CORRECT MST BIT FOR DUMMY | |
4098 | DCA USE /FOR CORRECT CODE WORD | |
4099 | JMP I NULLP /EXIT TO GET NEXT LINE | |
4100 | K3403, 3403 | |
4101 | ||
4102 | ||
4103 | / | |
4104 | /COMPUTE CURRENT PAGE SIZE | |
4105 | /ENTER WITH AC=0 | |
4106 | /EXIT WITH PAGE SIZE IN AC | |
4107 | / | |
4108 | CPGES, 0 | |
4109 | TAD APMSW /OMIT PGEESC IF NON-AUTO PAGING | |
4110 | SNA CLA | |
4111 | TAD PGEESC /+SIZE OF ESCAPE REQUIRED | |
4112 | TAD PTSZE /SIZE OF PAGE TABLE | |
4113 | TAD LTSZE /+SIZE OF LITERAL TABLE | |
4114 | TAD OPSCTR /+OFF PAGE SYMBOL COUNTER | |
4115 | TAD OBACTR /+OFF BANK ADDITION COUNTER | |
4116 | DCA PSTDEF /STORE IN TEM. | |
4117 | TAD PSTDEF /GET IT BACK | |
4118 | TAD PAG /AND CHECK FOR 7600 PAGE OVERFLOW | |
4119 | AND K7600 | |
4120 | TAD K200 | |
4121 | SNA CLA | |
4122 | SERROR /OVERFLOW-ERROR S | |
4123 | TAD PSTDEF /O.K. GET PAGE SIZE, WHICH | |
4124 | JMP I CPGES /IS DESIRED RESULT | |
4125 | ||
4126 | ||
4127 | /ROUTINE TO SET DEFINED BIT ON PST | |
4128 | /USED BY CPLFS & ANUMCK | |
4129 | ||
4130 | PSTDEF, 0 | |
4131 | TAD I PSTCPR /PROTECT CODES | |
4132 | SMA | |
4133 | TAD K4000 /SET DEFINED BIT ON PST | |
4134 | DCA I PSTCPR | |
4135 | JMP I PSTDEF | |
4136 | \f*5600 | |
4137 | / | |
4138 | / CONSTANT FOR AN ADDRESS FIELD SYMBOL | |
4139 | / | |
4140 | ASM05, TAD I PTSPR /ACTUAL BINARY CONSTANT | |
4141 | AND K7600 /IS IT ON PAGE ZERO | |
4142 | SZA CLA | |
4143 | JMP I ASM5CI /NO | |
4144 | TAD I PTSPR /ADD IN PAGE ZERO ADDRESS | |
4145 | DCA TEMP6 | |
4146 | TAD I PTCPR /YES ... IS IT INDIRECT | |
4147 | AND K400 | |
4148 | SNA CLA | |
4149 | JMP ASM00 /EXIT TO COMMON AREA | |
4150 | TAD TEMP6 | |
4151 | JMP I ASM5AI | |
4152 | ASM5AI, ASM12E | |
4153 | ASM5CI, ASM05C | |
4154 | / | |
4155 | / OFF BANK DIRECT (COMMON DIRECT) | |
4156 | / | |
4157 | ASM08, JMS I NSCHKP | |
4158 | TAD VAL /ACTUAL ADDRESS IN BANK ZERO | |
4159 | DCA S1 /TO 2 WORD LITERAL TABLE SEARCH LOCATION | |
4160 | CLA IAC | |
4161 | DCA S0 /ABSOLUTE SEARCH | |
4162 | JMS I SERALP /GET A PAGE ADDRESS | |
4163 | TAD K400 /ADD INDIRECT BIT | |
4164 | DCA TEMP6 | |
4165 | TAD BANK /BANK INDICATOR | |
4166 | SNA CLA /IS IT SET | |
4167 | JMP ASM00 | |
4168 | DCA I ASMX5I | |
4169 | TAD KCDF1A | |
4170 | DCA I ASMX4I | |
4171 | TAD CDZSKI | |
4172 | DCA I ASMX6I | |
4173 | DCA TEM7 | |
4174 | JMP I ASME7I | |
4175 | ASMX5I, ASMX5 | |
4176 | ASMX4I, ASMX4 | |
4177 | KCDF1A, KCDF10 | |
4178 | ASMX6I, ASMX6 | |
4179 | ASME7I, ASME7 | |
4180 | CDZSKI, CDZSKP | |
4181 | SERALP, SRALT | |
4182 | NSCHKP, NSCHK | |
4183 | ||
4184 | / | |
4185 | /ASM02 IS THE HEART OF ASSEMBLY | |
4186 | /IT IS CALLED ONCE FOR EACH ITEM ON | |
4187 | /THE PAGE TABLE. | |
4188 | /IT CONSISTS OF MANY PARTS, ONE FOR | |
4189 | /EACH BASIC TYPE OF INSTR. TO BE | |
4190 | /ASSEMBLED PLUS VARIOUS COMMON EXITS | |
4191 | / | |
4192 | ASM02, 0 | |
4193 | DCA LFS /ZERO LFS INDICATOR | |
4194 | TAD PASS | |
4195 | SZA CLA | |
4196 | JMS I GETBAP /RESTORE BANK & LSTSKP IF PASS2 | |
4197 | JMS I LFSCHK /PROCESS LFS IF ANY | |
4198 | JMS I ANCHK /PROCESS BSS 0 IF ANY | |
4199 | KCDF00, CDF 00 | |
4200 | TAD I PTOPR | |
4201 | KCDF10, CDF 10 | |
4202 | DCA OP | |
4203 | TAD I PTCPR | |
4204 | AND K40 /IS IT A SKIP INSTRUCTION | |
4205 | DCA CURSKP /YES ... SET SKIP INDICATOR | |
4206 | TAD I PTCPR | |
4207 | AND K10 /IS IT A PSEUDO OP (PAR) | |
4208 | SZA CLA | |
4209 | JMP I ASM03I /YES ... EXIT | |
4210 | TAD I PTCPR | |
4211 | AND K4 /IS IT A MEMORY REFERANCE INSTRUCTION | |
4212 | SZA CLA | |
4213 | JMP ASME1 /NO | |
4214 | TAD I PTCPR /PT CODE WORD | |
4215 | AND K20 /IS AFS A CONSTANT | |
4216 | SZA CLA | |
4217 | JMP ASM05 /YES | |
4218 | TAD I PTCPR /PT CODE WORD | |
4219 | AND K2 /IS AFS A LITERAL | |
4220 | SZA CLA | |
4221 | JMP I ASM06I /YES | |
4222 | TAD I PTSPR /AFS ID WORD FOR SYMBOL TABLE | |
4223 | DCA AFS /TO DIRECTLY ADDRESSABLE LOCATION | |
4224 | JMS I OBSYM /GET ITS POINTERS TO MST | |
4225 | AFS | |
4226 | TAD I PTCPR /PT CODE WORD | |
4227 | AND K400 /IS OP INDIRECT | |
4228 | SZA CLA | |
4229 | JMP I ASM2AI /YES | |
4230 | JMS I UZTST /TEST FOR OFF BANK OR ABSOLUTE | |
4231 | ASM08 /OFF BANK | |
4232 | ASM09 /ABSOLUTE | |
4233 | JMP I ASM07I /NO | |
4234 | ASM2AI, ASM02A | |
4235 | ASM03I, PPAR1 | |
4236 | ASM06I, ASM06 | |
4237 | ASM07I, ASM07 | |
4238 | ANCHK, ANUMCK | |
4239 | UZTST, USETST | |
4240 | / | |
4241 | / END OF LINE NECESSITIES | |
4242 | / | |
4243 | ASM00, TAD TEMP6 | |
4244 | ASME1, TAD OP | |
4245 | ASME2, DCA TEM1 | |
4246 | JMS I WRITEP | |
4247 | JMS I OUTBIN | |
4248 | TEM1 | |
4249 | ASME1X, 0 | |
4250 | ASM01, JMS I CMNASM /SET BANK=1 AFTER A JMS | |
4251 | JMS ASMCMN /SET BANK AND LSTSKP | |
4252 | DCA SKPSAV /SAVE CURSKP IN SKPSAV | |
4253 | TAD BANK /SAVE FOR PROTECTION DURING LISTING | |
4254 | DCA BNKSAV | |
4255 | ISZ ILC /INCREMENT ILC | |
4256 | ASM02R, JMP I ASM02 /USED AS OFF-PAGE RETURN | |
4257 | SERROR /ILC OVERFLOWED 7777 - PROGRAM TOO BIG | |
4258 | CMNASM, CMNSET | |
4259 | GETBAP, GETBAS | |
4260 | BNKSAV, 0 | |
4261 | SKPSAV, 0 | |
4262 | OPISUB, JMS OPIS | |
4263 | OBISUB, JMS OBIS | |
4264 | ||
4265 | /SUBROUTINE TO UPDATE BANK,LSTSKP,LSTBNK | |
4266 | / | |
4267 | ASMCMN, 0 | |
4268 | TAD LSTSKP /IS LAST INSTRUCTION A SKIP INSTRUCTION | |
4269 | SNA CLA | |
4270 | JMP .+10 /NO | |
4271 | TAD LSTBNK /YES ... LAST BANK | |
4272 | CIA | |
4273 | TAD BANK /+CURRENT BANK | |
4274 | SNA CLA /ARE THEY THE SAME | |
4275 | JMP .+3 /YES | |
4276 | CLA CMA /NO ... SET BANK UNKNOWN | |
4277 | DCA BANK | |
4278 | TAD CURSKP /PLACE CUR SKIP INDICATOR | |
4279 | DCA LSTSKP /AS LAST SKIP INDICATOR | |
4280 | TAD BANK /PLACE CURRENT BANK | |
4281 | DCA LSTBNK /IN LAST BANK INDICATOR | |
4282 | TAD LSTSKP | |
4283 | JMP I ASMCMN | |
4284 | \f*6000 | |
4285 | / | |
4286 | / | |
4287 | / INDIRECT DUMMY ARGUMENT | |
4288 | / | |
4289 | DUMSUB | |
4290 | ASM10, TAD I .-1 | |
4291 | DCA TEMP6 | |
4292 | CLA CMA /SET BANK UNKNOWN | |
4293 | JMP ASME3 /EXIT FOR SKIP CHECK | |
4294 | / | |
4295 | / OFF BANK INDIRECT (INDIRECT COMMON) | |
4296 | / | |
4297 | OBISUB | |
4298 | ASM11, TAD I .-1 | |
4299 | DCA TEMP6 | |
4300 | / | |
4301 | ||
4302 | TEMP6=EXP | |
4303 | ASME3, DCA BANK /SET C(AC) IN BANK | |
4304 | TAD LSTSKP /WAS LAST A SKIP? | |
4305 | SNA CLA | |
4306 | JMP ASME4 /NO | |
4307 | //FOLLOWING 6 LINES HAVE BEEN | |
4308 | //MOVED TO 6600 TO MAKE ROOM FOR V03 | |
4309 | JMP I .+1 | |
4310 | ASMEXT | |
4311 | // JMS I OUTSKP /YES, OUTPUT SKP | |
4312 | // TAD ILC /GET PG.LOC.PTR. | |
4313 | // TAD K4 /+4 | |
4314 | // AND K177 | |
4315 | // TAD K5200A /OUTPUT JMP .+4 | |
4316 | // DCA TEM1 | |
4317 | REEASM, JMS I WRITEP | |
4318 | JMS I OUTBIN | |
4319 | TEM1 | |
4320 | 0 | |
4321 | ISZ ILC /INCREMENT PG.LOC.PTR. | |
4322 | ASME4, JMS I WRITEP | |
4323 | JMS I OUTBIN /OUTPUT JMS TO | |
4324 | TEMP6 /OBISUB,OPISUB, OR DUMSUB | |
4325 | 0 | |
4326 | ISZ ILC | |
4327 | JMS I ASM10B /PPAR3S | |
4328 | ISZ ILC | |
4329 | TAD OP | |
4330 | TAD K407 | |
4331 | JMP I ASME2P | |
4332 | ASME2P, ASME2 | |
4333 | ASM02A, TAD USE /AFS MST USE WORD | |
4334 | AND K20 /IS AFS A DUMMY ARGUMENT | |
4335 | SZA CLA | |
4336 | JMP ASM10 /YES | |
4337 | JMS I UZETST /TEST FOR OFF-BANK OR ABSOLUTE | |
4338 | ASM11 /OFF-BANK | |
4339 | ASM12 /ABSOLUTE | |
4340 | JMP I ASM13I /NO | |
4341 | ASM10B, PPAR3S | |
4342 | ASM13I, ASM13 | |
4343 | K407, 0407 | |
4344 | ASME5A, TAD OP | |
4345 | SPA CLA /BANK NEED NOT BE CURRENT FOR A JMP OR JMS | |
4346 | JMP ASME6+2 /WHICH IS NOT EXPLICITLY INDIRECT | |
4347 | ASME5, TAD BANK | |
4348 | SMA SZA CLA | |
4349 | JMP ASME6+2 | |
4350 | ASME7, TAD LSTSKP | |
4351 | SZA CLA | |
4352 | JMP .+7 | |
4353 | JMS I WRITEP | |
4354 | JMS I OUTBIN | |
4355 | ASMX4, KCDF00 | |
4356 | ASMX5, 5 | |
4357 | ISZ ILC | |
4358 | JMP ASME6 | |
4359 | JMS I WRITEP | |
4360 | JMS I OUTBIN | |
4361 | ASMX6, CDFSKP | |
4362 | 0 | |
4363 | ISZ ILC | |
4364 | JMS I OUTSKP | |
4365 | ASME6, TAD TEM7 | |
4366 | DCA BANK | |
4367 | TAD K5 | |
4368 | DCA ASMX5 | |
4369 | TAD KCDFA | |
4370 | DCA ASMX4 | |
4371 | TAD CDFSKI | |
4372 | DCA ASMX6 | |
4373 | IAC | |
4374 | DCA TEM7 | |
4375 | JMP I .+1 | |
4376 | ASM00 | |
4377 | CDFSKI, CDFSKP | |
4378 | ASME1I, ASME1 | |
4379 | KCDFA, KCDF00 | |
4380 | UZETST, USETST | |
4381 | ||
4382 | / | |
4383 | / SYMBOL TABLE TYPEOUT FLAG TYPEOUT ROUTINE | |
4384 | ||
4385 | /CALL SEQ.: TAD USE /GET TYPE BITS | |
4386 | / RTL | |
4387 | / RTL | |
4388 | / JMS STFT | |
4389 | / RETURN | |
4390 | /USED ONLY BY PRSYM | |
4391 | / | |
4392 | STFT, 0 | |
4393 | AND K3 /MASK OUT TYPE BITS | |
4394 | SNA | |
4395 | JMP STFT3 /ABSOLUTE SYM. | |
4396 | TAD M3 /CK FOR NEW OPDEF | |
4397 | SNA | |
4398 | JMP STFT2 /YES | |
4399 | IAC | |
4400 | SNA | |
4401 | JMP STFT5 /EXTERNAL | |
4402 | SZL CLA | |
4403 | JMP STFT1 /DEFINED | |
4404 | TAD K2516 /"UN" | |
4405 | JMS I CTYPE | |
4406 | TAD K0406 /"DF" | |
4407 | STFT0, JMS I CTYPE /TYPE FLAG | |
4408 | STFT1, CLA /WE MUST HAVE A CLEAR AC | |
4409 | JMP I STFT /RETURN | |
4410 | K2560, 2560 | |
4411 | K1720, 1720 | |
4412 | ||
4413 | STFT2, TAD K1720 /TYPE "OP" | |
4414 | JMP STFT0 | |
4415 | STFT3, TAD USE | |
4416 | AND K40 | |
4417 | SZA CLA | |
4418 | JMP STFT4 /COMMON | |
4419 | TAD K0102 /"AB" | |
4420 | JMS I CTYPE | |
4421 | TAD K2300 /"S " | |
4422 | JMP STFT0 | |
4423 | STFT4, TAD K0317 /"CO" | |
4424 | JMS I CTYPE | |
4425 | TAD K1500 /"M " | |
4426 | JMP STFT0 | |
4427 | ||
4428 | K0102, 102 | |
4429 | K0317, 317 | |
4430 | K2300, 2300 | |
4431 | K1500, 1500 | |
4432 | K2516, 2516 | |
4433 | K0406, 406 | |
4434 | K0530, 530 | |
4435 | K2400=SLITAB | |
4436 | ||
4437 | STFT5, TAD K0530 /"EX" | |
4438 | JMS I CTYPE | |
4439 | TAD K2400 | |
4440 | JMP STFT0 | |
4441 | \f*6200 | |
4442 | / | |
4443 | / LOCAL DIRECT REFERANCE | |
4444 | / | |
4445 | ASM07, JMS I SPSTAB /IS AFS ON PST | |
4446 | JMP ASM07A /NO ... ROUTINE PLACES IT THERE | |
4447 | TAD I PSTCPR /PST CODE WORD | |
4448 | SMA CLA /IS SYMBOL ON PAGE | |
4449 | JMP ASM07A /NO | |
4450 | JMS NSCHK | |
4451 | TAD VAL /AFS MST VALUE | |
4452 | AND K177 /SAVE PAGE ADDRESS | |
4453 | TAD K200 /ADD PAGE BIT | |
4454 | JMP I AS00I4 / | |
4455 | ASM07A, TAD I PTSPR /ACTUAL SYMBOL | |
4456 | DCA S1 /TO 2 WORD LITERAL TABLE SEARCH LOCATION | |
4457 | JMS NSCHK | |
4458 | CLL RTL | |
4459 | TAD K2 /RELOCATABLE SEARCH | |
4460 | JMP ASM05C+3 | |
4461 | ASM09B, JMS NSCHK | |
4462 | TAD VAL /DIRECT NON-PAGE 0 ABSOLUTE | |
4463 | SKP | |
4464 | / | |
4465 | / | |
4466 | / NON PAGE ZERO CONSTANT ADDRESS | |
4467 | / | |
4468 | ASM05C, TAD I PTSPR /ACTUAL BINARY CONSTANT | |
4469 | DCA S1 /TO 2 WORD LITERAL TABLE SEARCH LOCATION | |
4470 | CLA IAC | |
4471 | DCA S0 /ABSOLUTE SEARCH | |
4472 | JMS I SERALT /GET A PAGE ADDRESS | |
4473 | TAD K400 /ADD INDIRECT BIT | |
4474 | DCA TEMP6 | |
4475 | JMP I .+1 | |
4476 | ASME5A /EXIT FOR SKIP CHECK IF OP IS NOT JMP OR JMS | |
4477 | / | |
4478 | / DIRECT ABSOLUTE OR EXTERNAL | |
4479 | / | |
4480 | ASM09, JMS NSCHK | |
4481 | TAD VAL /ABSOLUTE SYMBOL VALUE | |
4482 | AND K7600 /IS SYMBOL ON PAGE ZERO | |
4483 | SZA CLA | |
4484 | JMP ASM09B /NO | |
4485 | JMS NSCHK | |
4486 | TAD VAL /ADD IN PAGE ZERO ADDRESS | |
4487 | JMP I AS00I4 / | |
4488 | AS00II, ASME5 | |
4489 | / | |
4490 | / LITERAL FOR AN ADDRESS FIELD SYMBOL | |
4491 | / | |
4492 | ASM06, TAD I PTSPR /ACTUAL LITERAL | |
4493 | DCA S1 /TO 2 WORD LITERAL TABLE SEARCH LOCATION | |
4494 | CLA IAC | |
4495 | DCA S0 /ABSOLUTE SEARCH | |
4496 | JMS I SERALT /GET A PAGE ADDRESS | |
4497 | JMP I AS00I4 /EXIT FOR SKIP CHECK | |
4498 | AS00I4, ASM05+5 | |
4499 | OUTSK, 0 | |
4500 | JMS I WRITEP | |
4501 | JMS I OUTBIN | |
4502 | K7410 | |
4503 | 0 | |
4504 | ISZ ILC | |
4505 | JMP I OUTSK | |
4506 | SERALT, SRALT | |
4507 | / | |
4508 | / INDIRECT ABSOLUTE | |
4509 | / | |
4510 | ASM12, TAD VAL /AFS MST USE WORD | |
4511 | AND K7600 /IS IT ON PAGE ZERO | |
4512 | SZA CLA | |
4513 | JMP ASM12F /NO | |
4514 | / | |
4515 | / INDIRECT PAGE ZERO ABSOLUTE SYMBOL | |
4516 | / | |
4517 | JMS NSCHK | |
4518 | TAD VAL /SAVE PAGE ZERO ADDRESS | |
4519 | ASM12E, TAD K400 /ADD INDIRECT BIT | |
4520 | DCA TEMP6 | |
4521 | JMP I AS00II | |
4522 | / | |
4523 | / INDIRECT NON PAGE ZERO ABSOLUTE SYMBOL | |
4524 | / | |
4525 | OPISUB | |
4526 | ASM12F, TAD I .-1 | |
4527 | DCA TEMP6 | |
4528 | TAD BANK | |
4529 | JMP I AS00I3 /EXIT FOR SKIP CHECK | |
4530 | AS00I3, ASME3 | |
4531 | K5377, 5377 | |
4532 | / | |
4533 | / LOCAL INDIRECT REFERANCE | |
4534 | / | |
4535 | ASM13, JMS I SPSTAB /IS AFS ON PST | |
4536 | JMP ASM14 /NO ... MUST BE OFF PAGE | |
4537 | TAD I PSTCPR /YES ... PST CODE WORD | |
4538 | SMA CLA /IS AFS ON PAGE | |
4539 | JMP ASM14 /NO | |
4540 | JMS NSCHK | |
4541 | TAD VAL /AFS VALUE FROM MST | |
4542 | AND K177 /SAVE PAGE DISPLACEMENT | |
4543 | TAD K600 /ADD PAGE AND INDIRECT BIT | |
4544 | DCA TEMP6 /SAVE | |
4545 | JMP I AS00II /GO OUTPUT INSTRUCTION | |
4546 | / | |
4547 | / OFF PAGE INDIRECT | |
4548 | / | |
4549 | OPISUB | |
4550 | ASM14, TAD I .-1 | |
4551 | DCA TEMP6 | |
4552 | CLA IAC /SET BANK TO CURRENT | |
4553 | JMP I AS00I3 /EXIT FOR SKIP CHECK | |
4554 | NSCHK, 0 | |
4555 | TAD I PTCPR | |
4556 | AND K2000 | |
4557 | SZA CLA | |
4558 | IAC /ITS A # | |
4559 | JMP I NSCHK | |
4560 | ||
4561 | ||
4562 | /"IF" - CONDITIONAL ASSEMBLY PSUEDO-OP | |
4563 | ||
4564 | PIF, JMS I GETSYM | |
4565 | JMP PIFERR /NOTHING THERE | |
4566 | JMP .+3 /SYM | |
4567 | NOP /CON | |
4568 | JMP PIFERR /LIT | |
4569 | TAD CHR /CK FOR COMMA | |
4570 | TAD M254 | |
4571 | SZA CLA | |
4572 | IERROR /NOT A COMMA | |
4573 | ISZ X0 /PREVENT FLAGGING COMMA | |
4574 | JMS I GETSYM /YES, SET CTR TO SKIP N LINES | |
4575 | NOP | |
4576 | SKP | |
4577 | SKP /I WANT A NUMBER | |
4578 | PIFERR, IERROR | |
4579 | TAD USE /IS SYMBOL DEFINED? | |
4580 | AND K400 | |
4581 | SZA CLA | |
4582 | DCA S0 /YES, CONTINUE NORMAL ASSMBLY | |
4583 | JMS I SKIPL | |
4584 | TAD S0 /GET THE NUM. | |
4585 | CIA | |
4586 | DCA IFCTR | |
4587 | JMP I NULLP | |
4588 | ||
4589 | IFCTR, 0 | |
4590 | ||
4591 | ILC4, 0 | |
4592 | JMS I OUTBIN | |
4593 | ILC | |
4594 | 4 | |
4595 | JMP I ILC4 | |
4596 | ||
4597 | ||
4598 | /LAP & EAP PSUEDO-OPS | |
4599 | ||
4600 | *6372 /MUST BE AT 6372 OR AT PAGE BOUND. +172 FOR K5376 TO WORK AS SKIP | |
4601 | PLAP, JMS I SKIPL | |
4602 | IAC /LEAVE AUTO-PAGING MODE | |
4603 | K5376, 5376 /THIS REPLACES A SKIP.*******DO NOT MOVE******** | |
4604 | PEAP, JMS I SKIPL | |
4605 | DCA APMSW /ENTER AUTO-PAGING MODE | |
4606 | JMP I NULLP | |
4607 | ||
4608 | \f *6400 | |
4609 | LISTON, 1411 | |
4610 | 2324 | |
4611 | 1116 | |
4612 | 0700 | |
4613 | 1716 | |
4614 | 0000 | |
4615 | HISP, 1011 | |
4616 | 0710 | |
4617 | 0023 | |
4618 | 2005 | |
4619 | 0504 | |
4620 | 0020 | |
4621 | 2516 | |
4622 | 0310 | |
4623 | 7700 | |
4624 | RDER, 0022 | |
4625 | 0501 | |
4626 | 0405 | |
4627 | 2277 | |
4628 | 0000 | |
4629 | / PART OF MAIN PROGRAM | |
4630 | / RECOUNT ROUTINE | |
4631 | /FOLLOWING CODE CLEANS UP PST CODES BEFORE RECOUNTING | |
4632 | CLNPST, CIA | |
4633 | DCA IOINIT /SET COUNTER | |
4634 | TAD PSTBSE | |
4635 | IAC | |
4636 | DCA PSTCPR /CODE POINTER | |
4637 | TAD I PSTCPR /LOOP | |
4638 | AND K4003K /KILL OBAC DUE TO THIS SYM. | |
4639 | DCA I PSTCPR | |
4640 | ISZ PSTCPR /MOVE PTR | |
4641 | ISZ PSTCPR | |
4642 | ISZ IOINIT | |
4643 | JMP .-6 /NOT DONE | |
4644 | JMP I .+1 | |
4645 | RECRET | |
4646 | K4003K, 4003 | |
4647 | / | |
4648 | / | |
4649 | /COMMON EXIT FOR DATA-GENERATING PSUEDO-OPS | |
4650 | / | |
4651 | POPEX, DCA BSSSW | |
4652 | TAD LFS /CK FOR TAG | |
4653 | SNA CLA | |
4654 | JMP I DCIL1 /NO TAG | |
4655 | CMA /DECREMENT PTSZE | |
4656 | TAD PTSZE | |
4657 | DCA PTSZE | |
4658 | JMS I RECTI /YES RECOUNT THE PAGE | |
4659 | ISZ PTSZE /RESTORE PTSZE | |
4660 | JMS I ISZPTX /RESTORE PT PTRS | |
4661 | JMP I DCIL1 /RETURN FOR NEXT LINE | |
4662 | ISZPTX, ISZPT | |
4663 | ||
4664 | ||
4665 | ||
4666 | /ROUTINE T0 INITIALIZE I/O DEVICES | |
4667 | ||
4668 | C2=JMS I CTYPE | |
4669 | ||
4670 | IOINIT, 0 | |
4671 | CDF 10 | |
4672 | TAD JL64 | |
4673 | DCA TYPE | |
4674 | VN, JMP I VERSI | |
4675 | IOI, JMS I CRLF | |
4676 | TAD JHISP | |
4677 | DCA X1 | |
4678 | TAD M5 | |
4679 | JMS QUERY | |
4680 | JMP RGO | |
4681 | TAD JRDER | |
4682 | DCA X1 | |
4683 | TAD M5 | |
4684 | JMS QUERY | |
4685 | JMP RGO | |
4686 | RGO, JMS KSR | |
4687 | TAD JHSR | |
4688 | TAD JASR | |
4689 | DCA I INDEVP | |
4690 | JMS I CRLF | |
4691 | TAD JHISP | |
4692 | DCA X1 | |
4693 | TAD M11 | |
4694 | JMS QUERY | |
4695 | NOP | |
4696 | JMS KSR | |
4697 | JMP .+4 | |
4698 | TAD TYPE | |
4699 | DCA PUNCH | |
4700 | JMP IOX | |
4701 | TAD JL63 | |
4702 | DCA PUNCH | |
4703 | JMS I CRLF | |
4704 | TAD JLIST | |
4705 | DCA X1 | |
4706 | TAD M17 | |
4707 | JMS QUERY | |
4708 | NOP | |
4709 | JMS KSR | |
4710 | IAC /1 = PUNCH, 0 = TYPE | |
4711 | IOX, DCA LSTDEV | |
4712 | JMP I IOINIT | |
4713 | ||
4714 | ||
4715 | ||
4716 | QUERY, 0 | |
4717 | DCA JCOUNT | |
4718 | TAD I X1 | |
4719 | C2 | |
4720 | KSF | |
4721 | SKP | |
4722 | JMP I QUERY | |
4723 | ISZ JCOUNT | |
4724 | JMP .-6 | |
4725 | ISZ QUERY | |
4726 | JMP I QUERY | |
4727 | KSR, 0 | |
4728 | KSF | |
4729 | JMP .-1 | |
4730 | KRB | |
4731 | DCA TEM1 | |
4732 | TAD TEM1 | |
4733 | JMS I TYPE | |
4734 | TAD TEM1 | |
4735 | TAD M331 | |
4736 | SZA CLA /0="YES" | |
4737 | ISZ KSR /NOT "YES" | |
4738 | JMP I KSR | |
4739 | LSTDEV=QUERY | |
4740 | M331, -331 | |
4741 | JHSR, HSR-ASR | |
4742 | JASR, ASR | |
4743 | INDEVP, INDEV | |
4744 | JL63, L63 | |
4745 | JL64, L64 | |
4746 | JCOUNT=TEM3 | |
4747 | JHISP, HISP-1 | |
4748 | JLIST, LISTON-1 | |
4749 | JRDER, RDER-1 | |
4750 | VERSI, VERNUM | |
4751 | M5, -5 | |
4752 | M11, -11 | |
4753 | M17, -17 | |
4754 | ||
4755 | \f*6600 | |
4756 | // | |
4757 | //PART OF MAIN PROGRAM MOVED FOR V03 | |
4758 | // | |
4759 | /ROUTINE TO RESTORE BANK AND LSTSKP FOR PASS2 | |
4760 | /WILL NOT FIT INTO ASM02 WHERE IT BELONGS | |
4761 | ||
4762 | GETBAS, 0 | |
4763 | TAD I BNKSAP | |
4764 | DCA BANK | |
4765 | TAD I SKPSAP | |
4766 | DCA LSTSKP | |
4767 | JMP I GETBAS | |
4768 | ||
4769 | BNKSAP, BNKSAV | |
4770 | SKPSAP, SKPSAV | |
4771 | ||
4772 | /INPUT ROUTINES | |
4773 | ||
4774 | HSR, 0 | |
4775 | DCA TEM10 /CLR TIMER | |
4776 | RFC | |
4777 | HSR1, RSF | |
4778 | JMP HSR2 | |
4779 | RRB | |
4780 | JMP I HSR | |
4781 | HSR2, DCA ASR /WASTE SOME TIME | |
4782 | ISZ TEM10 /CK TIMER | |
4783 | JMP HSR1 /KEEP TRYING | |
4784 | REXIT, TAD X3 /CK FOR EMPTY BUFFER | |
4785 | TAD BUFBEG | |
4786 | SZA CLA | |
4787 | JMP .+4 /NO, WE HAVE A PARTIAL BUFFER | |
4788 | CDF 10 | |
4789 | JMP I .+1 /YES TAPE HAS ENDED WITH NO END STATMT | |
4790 | ERRE | |
4791 | DCA I X3 /FILL END OF BUFFER WITH 0'S | |
4792 | TAD X3 | |
4793 | TAD BUFEN | |
4794 | SZA CLA | |
4795 | JMP .-4 | |
4796 | JMP I RG3P /NOW RET. FOR PROCESSING | |
4797 | ||
4798 | ASR, 0 | |
4799 | TAD M50 | |
4800 | DCA TEM11 | |
4801 | DCA TEM10 | |
4802 | ASR1, KSF | |
4803 | JMP ASR2 | |
4804 | KRB | |
4805 | JMP I ASR | |
4806 | ASR2, ISZ TEM10 | |
4807 | JMP ASR1 | |
4808 | ISZ TEM11 | |
4809 | JMP ASR1-1 | |
4810 | JMP REXIT | |
4811 | ||
4812 | ||
4813 | M50, -50 | |
4814 | TEM10, 0 | |
4815 | TEM11, 0 | |
4816 | BUFBEG, 1-DATA | |
4817 | RG3P, RG3 | |
4818 | BUFEN, 1-LINBUF | |
4819 | / | |
4820 | / ENTRY PSEUDO OPERATION | |
4821 | / | |
4822 | PENTRY, JMS I GETSYM /GET NEXT INPUT ITEM | |
4823 | SKP /NOTHING THERE | |
4824 | JMP .+3 /SYMBOL | |
4825 | NOP /CONSTANT | |
4826 | IERROR /LITERAL | |
4827 | JMS I SKIPL | |
4828 | JMS I SREST /PLACE SYMBOL ON EXTERNAL SYMBOL TABLE | |
4829 | CLA | |
4830 | TAD USE /AFS MST USE WORD | |
4831 | AND K403 /SAVE SYMBOL LENGTH (& DEF. BIT FOR PASS 2) | |
4832 | TAD K2220 /ADD IN PROPER BITS | |
4833 | DCA USE /FOR NEW MST USE WORD | |
4834 | JMP I NULLP /EXIT FOR NEXT LINE | |
4835 | K2220, 2220 | |
4836 | K403, 403 | |
4837 | / | |
4838 | / | |
4839 | / | |
4840 | /INCREMENT PAGE TABLE POINTERS | |
4841 | / | |
4842 | ISZPT, 0 | |
4843 | ISZ PTCPR /INCREMENT PAGE TABLE CODE POINTER BY 2 | |
4844 | ISZ PTCPR | |
4845 | ISZ PTSPR /INCREMENT PAGE TABLE SYMBOL POINTER BY 2 | |
4846 | ISZ PTSPR | |
4847 | ISZ PTOPR /INCREMENT PT OP CODE POINTER | |
4848 | JMP I ISZPT | |
4849 | / | |
4850 | /CK CONSTANT FOR BLOCK PSEUDO-OP | |
4851 | / | |
4852 | PBSS4, TAD APMSW /AUTOMATIC PAGING? | |
4853 | SNA CLA | |
4854 | TAD K2 /YES, 176 IS MAXIMUM | |
4855 | TAD M200 /NO, 200 IS MAX | |
4856 | TAD S0 /CHECK CONSTANT | |
4857 | SMA SZA CLA | |
4858 | IERROR /TOO BIG | |
4859 | TAD S0 /IS CONSTANT 0? | |
4860 | SNA | |
4861 | JMP I PBSS2J /YES, EQUIVALENCE TAG | |
4862 | JMP I PBSS5I /NO, CREATE BLOCK OF THIS SIZE | |
4863 | PBSS2J, PBSS2 | |
4864 | PBSS5I, PBSS5 | |
4865 | ||
4866 | / | |
4867 | /PATCH TO DELETE DEFINED BIT IN PST FOR A TAG | |
4868 | /EQUIVALENCED TO A LINE THAT OVERFLOWED THE PAGE | |
4869 | / | |
4870 | EQVFIX, TAD EQVBIT /WAS THERE SUCH A TAG? | |
4871 | SNA CLA | |
4872 | JMP I L55CP /NO | |
4873 | TAD I EQVBIT /YES, GET PST CODE FOR THIS TAG | |
4874 | TAD K4000 /CANCEL DEFINED BIT | |
4875 | DCA I EQVBIT | |
4876 | TAD K200 /SET EQUIVALENCE BIT FOR NEXT LINE | |
4877 | DCA EQVBIT /WHEN NEXT PAGE GETS GOING | |
4878 | JMP I L55CP /RETURN TO ASSEMBLE THE PAGE WE HAVE | |
4879 | L55CP, L55C | |
4880 | ||
4881 | ||
4882 | / | |
4883 | /CK FOR TYPE OF SYMBOL | |
4884 | /CALL SEQ: JMS WHATYP | |
4885 | / RET. IF USER SYMBOL | |
4886 | / RET. IF OP SYMBOL | |
4887 | / | |
4888 | WHATYP, 0 | |
4889 | TAD USE | |
4890 | AND K3000 | |
4891 | TAD M3000 | |
4892 | SNA CLA | |
4893 | ISZ WHATYP | |
4894 | JMP I WHATYP | |
4895 | ||
4896 | ||
4897 | / | |
4898 | /EXECUTE ISZ GTSYM (MOVE RETURN POINTER) ONLY IF IFCTR .GE. 0 | |
4899 | /OTHERWISE MOVE LINE PTR TO NEXT SLASH, SEMI-COLON OR CAR.RET. | |
4900 | /& ISZ IFCTR & TREAT AS A NULL LINE. | |
4901 | / | |
4902 | CKIF, 0 | |
4903 | TAD I IFCT /IS CONDITIONAL NON-ASM IN EFFECT? | |
4904 | SPA CLA | |
4905 | JMP .+3 /YES: DO NOT ASMBL LINE | |
4906 | ISZ I GETSYM /NO, MOVE RETRN PTR & CONT. AS USUAL | |
4907 | JMP I CKIF | |
4908 | ISZ I IFCT /COUNT IGNORED LINE | |
4909 | NOP | |
4910 | TAD CHR /MOVE LINE PTR TO END OF LINE | |
4911 | CKIF2, SNA | |
4912 | JMP CKIF3 /FOUND A CR | |
4913 | TAD M257 | |
4914 | SNA | |
4915 | JMP CKIF3 /SLASH | |
4916 | TAD M14 | |
4917 | SNA CLA | |
4918 | JMP CKIF3 /SEMI-COLON | |
4919 | JMS I GETCHR /TRY NEXT | |
4920 | JMP CKIF2 | |
4921 | CKIF3, JMP I .+1 | |
4922 | ITM15 | |
4923 | M257, -257 | |
4924 | M14, -14 | |
4925 | IFCT, IFCTR | |
4926 | \f*6776 | |
4927 | ||
4928 | /PAGE SYMBOL TABLE (200 WORDS) | |
4929 | /DOUBLE WORD ENTRIES | |
4930 | /REBUILT FOR EACH CORE PAGE OF CODE | |
4931 | /EVERY SYMBOL DEFINED OR REFERENCED ON | |
4932 | /GIVEN PAGE IS ENTERED | |
4933 | /TYPICAL ENTRY*: WD1=SYMBOL ID | |
4934 | / WD2=CODE BITS | |
4935 | /SYMBOL ID=ADDRESS OF SYMBOL ENTRY IN MAIN SYM. TAB | |
4936 | /CODE: BIT0=1 IF SYM. DEF. ON CUR. PAGE | |
4937 | / BIT11=1 IF SYM REFERENCED NORMALLY BY A MR1 ON THE PG. | |
4938 | / BIT10=1 IF SYM. REF'D. WITH A # | |
4939 | / BITS 1-9 USED FOR COUNTING AMOUNT OF OBACTR | |
4940 | / WHICH IS DUE TO THIS SYMBOL | |
4941 | /SYMBOLS ARE ENTERED ON PST IN ORDER OF APPEARENCE | |
4942 | /IN SOURCE | |
4943 | /NO MORE THAN 64 (DEC) SYMBOLS MAY BE REF'D. | |
4944 | /ON ANY PAGE. | |
4945 | /NOTE: THE SIZE OF THIS TABLE SHOULD NOT BE | |
4946 | /INCREASED UNLESS LFS TABLE IS ALSO INCREASED. | |
4947 | ||
4948 | ||
4949 | *7176 | |
4950 | ||
4951 | /PAGE TABLE (402 WORDS) | |
4952 | /DOUBLE WORD ENTRIES | |
4953 | /ONE ENTRY FOR EACH INSTRUCTION TO BE ASSEMBLED | |
4954 | /ROOM FOR 1 EXTRA ENTRY TO COVER PAGE OVERFLOW | |
4955 | /A NEW TABLE FOR EACH PAGE OF CODE | |
4956 | /TYPICAL ENTRY: WD1=CODE BITS | |
4957 | / WD2=SYMBOL WORD | |
4958 | /CODE: BIT1=1 IF # REF | |
4959 | / BIT2=1 IF CDF TO CUR BANK | |
4960 | / BIT3=1 IF INDIRECT | |
4961 | / BIT4=1 IF BLOCK 0 (FOR EQUIVALENCED TAGS) | |
4962 | / BIT5=1 IF SPECIAL CALL CONST | |
4963 | / BIT6=1 IF SKIP INST. | |
4964 | / BIT7=1 IF AFS IS CONST | |
4965 | / BIT8=1 IF PARAMETER | |
4966 | / BIT9=1 IF OPR OR IOT INST. | |
4967 | / BIT10=1 IF AFS IS LITERAL | |
4968 | / BIT11=1 IF LFS OCCURS | |
4969 | / BIT0 UNUSED | |
4970 | /THE SYMBOL WORD=0 IF CODE BIT9=1 | |
4971 | / =THE ACTUAL CONST OR LITERAL IF BITS2,5,7 OR 10=1 | |
4972 | / =THE SYMBOL ID (MST ENTRY ADDR.) FOR AN ADDR. PARAMETER | |
4973 | / OR FOR THE AFS OF AN MRI | |
4974 | ||
4975 | ||
4976 | / | |
4977 | /TYPE VERSION NUMBER | |
4978 | /(THIS IS ONCE ONLY CODE) | |
4979 | /(OVERWRITTEN BY P.S.T.) | |
4980 | / | |
4981 | *7000 | |
4982 | / | |
4983 | VERNUM, JMS I CRLF | |
4984 | TAD JVERS | |
4985 | DCA X1 | |
4986 | TAD M26 | |
4987 | JMS I MTYPE | |
4988 | NOP | |
4989 | TAD K7000X | |
4990 | DCA I VNOP | |
4991 | JMP I .+1 | |
4992 | IOI | |
4993 | JVERS, VERSN-1 | |
4994 | MTYPE, QUERY | |
4995 | M26, -15 | |
4996 | VNOP, VN | |
4997 | K7000X, NOP | |
4998 | VERSN, 2004 /PDP-8 SABR DEC-08-A2C2-V# | |
4999 | 2055 | |
5000 | 7040 | |
5001 | 2301 | |
5002 | 0222 | |
5003 | 4004 | |
5004 | 0503 | |
5005 | 5560 | |
5006 | 7055 | |
5007 | 0162 | |
5008 | 0462 | |
5009 | 5561 /- VERSION # (1ST DIGIT) | |
5010 | 7001 /2ND DIGIT AND PATCH LEVEL | |
5011 | ||
5012 | ||
5013 | \f | |
5014 | /SABR BANK 1 SECTION | |
5015 | ||
5016 | /TABLES | |
5017 | ||
5018 | FIELD 0 | |
5019 | ||
5020 | ||
5021 | ||
5022 | *0 | |
5023 | EQUTB, 0 /EQUIVALENCE TABLE | |
5024 | /100 WORDS | |
5025 | /TABLE IS REINITIALIZED BEFORE EACH PAGE BEGINS | |
5026 | /COLLECTION, IF NO EQUIV. IS LEFT FROM PREVIOUS PAGE | |
5027 | /MULTIPLE WORD ENTRIES | |
5028 | /ONE ENTRY IS MADE FOR | |
5029 | /EACH LOC. TAG WHICH HAS | |
5030 | /EQUIVALENTS | |
5031 | /1ST WORD OF EACH ENTRY | |
5032 | /CONTAINS NO. OF OTHER WORDS | |
5033 | /IN THE ENTRY | |
5034 | /OTHER WORDS ARE SYMBOL ID'S | |
5035 | /(MST ADDRESSES) OF SYMBOLS | |
5036 | /EQUIVALENT TO THE PARTICULAR | |
5037 | /LOCATION TAG | |
5038 | ||
5039 | ||
5040 | *100 | |
5041 | ||
5042 | /BSEEST, 0 /EXTERNAL SYMBOL TABLE | |
5043 | /100 WORDS | |
5044 | /SINGLE WORD ENTRIES | |
5045 | /CONSISTING OF THE SYMBOL ID (MST ADDRESS) | |
5046 | /EACH EXT. SYM. IS ENTRED IN | |
5047 | /THE TABLE WHEN IT FIRST | |
5048 | /OCCURS IN THE SOURCE AND | |
5049 | /ASSIGNED A LOCAL EXT. NUMBER | |
5050 | /ACCORDING TO ITS PLACE IN THE | |
5051 | /TABLE. | |
5052 | ||
5053 | ||
5054 | *200 | |
5055 | ||
5056 | /PTOPTB, 0 /PAGE OP CODE TABLE | |
5057 | /200 WORDS | |
5058 | /SINGLE WORD ENTRIES | |
5059 | /ONE FOR EACH ENTRY IN PAGE TABLE | |
5060 | /ENTRY=ACTUAL OP CODE FOR | |
5061 | /ALL MRI, OPR OR IOT'S | |
5062 | /OR 0 FOR ALL PARAMETERS | |
5063 | /NEW TABLE FOR EACH PAGE OF CODE | |
5064 | /NOTE: THIS TABLE MAY OVERFLOW BY 1 WORD DURING COLLECTION | |
5065 | /OVERFLOW CAUSED BY PUTTING INFO ON TABLE BEFORE CK FOR OVERFLOW | |
5066 | /NO HARM IF ASSEM. PHASE LIT. TAB FOLLOWS | |
5067 | ||
5068 | CDF CIF 10 /CODE FOR START AT 200 | |
5069 | JMP I .+1 | |
5070 | START | |
5071 | ||
5072 | *400 | |
5073 | ||
5074 | /LITBSE, 0 /ASSEMBLY PHASE LITERAL TABLE | |
5075 | /200 WORDS | |
5076 | /DOUBLE WORD ENTRIES | |
5077 | /MUST BE SEPARATE FROM COLL. | |
5078 | /PHASE LIT. TAB. BECAUSE BOTH | |
5079 | /GOING AT ONCE IN PASS 2. | |
5080 | /THIS TABLE CONTAINS NOT | |
5081 | /ONLY LITERALS BUT ALSO | |
5082 | /OFF PAGE POINTERS | |
5083 | /1ST WORD OF ENTRY = 1 OR 2 OR 6 | |
5084 | /1 MEANS LITERAL & | |
5085 | /2ND WORD CONTAINS ACTUAL VALUE | |
5086 | /2 MEANS OFF PAGE SYMBOL PTR | |
5087 | /& 2ND WORD CONTAINS SYMBOL ID. | |
5088 | /6 MEANS OFF PAGE SYM. PTR | |
5089 | /WHERE SYMBOL REFERENCED BY A # | |
5090 | /2ND WORD AS FOR 2 | |
5091 | /TABLE BUILT ANEW FOR EACH | |
5092 | /PAGE OF CODE. | |
5093 | ||
5094 | ||
5095 | *600 | |
5096 | ||
5097 | /LFSBSE, 0 /LOC FIELD SYMBOL TABLE | |
5098 | /100 WORDS | |
5099 | /SINGLE WORD ENTRIES | |
5100 | /EACH=SYMBOL ID (MST ADDRESS) | |
5101 | /OF THE GIVEN LFS | |
5102 | /LFS'S ARE ENTERED IN ORDER | |
5103 | /OF THEIR APPEARENCE IN SOURCE | |
5104 | /TABLE REBUILT FOR EACH PAGE OF CODE | |
5105 | /NOTE: THIS TABLE MUST BE AT LEAST AS LONG | |
5106 | /AS THE PST TO PREVENT LFS OVERFLOW | |
5107 | ||
5108 | ||
5109 | ||
5110 | *700 | |
5111 | ||
5112 | PEBSE, 0 /PAGE ESCAPE PUSH DOWN LIST | |
5113 | /40 WORDS | |
5114 | /SINGLE WORD ENTRIES | |
5115 | /EACH ENTRY IS 0,2, OR 4 | |
5116 | /BEING THE VALUE OF THE | |
5117 | /PAGE ESCAPE (0,2,OR 4 WORDS) | |
5118 | /OF EACH PAGE ASSEMBLED | |
5119 | /THESE NOS. ARE SAVED DURING | |
5120 | /PASS 1 & USED DURING | |
5121 | /PASS 2 | |
5122 | \f*740 | |
5123 | /SORT LISTS | |
5124 | ||
5125 | /SORT LIST FOR INITIAL CHAR. OF LITERAL | |
5126 | SL3, 242 /QUOTE | |
5127 | 255 /MINUS | |
5128 | 304 /D | |
5129 | 313 /K | |
5130 | -1 /SORT LIST MUST BE FOLLOWED BY A NEGATIVE | |
5131 | ||
5132 | ||
5133 | ||
5134 | /BRANCH LISTS | |
5135 | BL6, RLN15 | |
5136 | RLN2 | |
5137 | RLN2 | |
5138 | RLN3 | |
5139 | RLN3 | |
5140 | ||
5141 | /SORT LIST FOR BEGINNING OF INPUT ITEM | |
5142 | SL2, 255 /MINUS | |
5143 | 250 /LEFT PARIN | |
5144 | 242 /QUOTE | |
5145 | SL6, 273 /SEMI-COLON | |
5146 | 257 /SLASH | |
5147 | SL1, 240 /SPACE | |
5148 | 211 /TAB | |
5149 | 000 /CR | |
5150 | -1 /SORT LIST MUST BE FOLLOWED BY A NEGATIVE | |
5151 | /BRANCH LIST FOR BEGINNING OF INPUT ITEM | |
5152 | BL2, ITM4 /NEGATIVE | |
5153 | ITM8 /LITERAL | |
5154 | ITM7 /ALPHA CONSTANT | |
5155 | ITM15 /NULL ITEM | |
5156 | ITM15 /NULL ITEM | |
5157 | ITM2 /IGNORE SPACE | |
5158 | ITM2 /IGNORE TAB | |
5159 | ITM15 /NULL ITEM | |
5160 | /BRANCH LIST FOR INITIAL CHAR. OF LITERL | |
5161 | BL3, ITM7 /GET ASCII VALUE FOR LITERAL | |
5162 | ITM10 /SET NEG. SW. | |
5163 | ITM11 /SET MODE TO DECIMAL | |
5164 | ITM12 /SET MODE TO OCTAL | |
5165 | ||
5166 | ||
5167 | ||
5168 | ||
5169 | ||
5170 | ||
5171 | *1000 | |
5172 | ||
5173 | /LTBSE, 0 /COLLECTION PHASE LITERAL TABLE | |
5174 | /100 WORDS | |
5175 | /SINGLE WORD ENTRIES | |
5176 | /CONTAINING ACTUAL VALUES | |
5177 | /TABLE CONTAINS NOT ONLY | |
5178 | /LITERALS BUT ALSO | |
5179 | /POINTERS TO CONSTANT | |
5180 | /AND ABSOLUTE ADDRESSES. | |
5181 | /TABLE BUILT ANEW FOR | |
5182 | /EACH PAGE OF CODE. | |
5183 | ||
5184 | /INPUT DATA BUFFER | |
5185 | /546 (OCTAL) WORDS | |
5186 | /ALL DATA CHARACTERS READ DIRECTLY INTO THIS BUFFER | |
5187 | /1 CHAR. PER WORD | |
5188 | /THE ACTUAL SIZE OF THE BUFFER IS ARBITRARY. | |
5189 | ||
5190 | *1100 | |
5191 | ||
5192 | DATA, 0 | |
5193 | ||
5194 | ||
5195 | ||
5196 | /LINE BUFFER (73 WORDS) | |
5197 | /CONTAINS ASCII CHARACTERS, 1 PER WORD | |
5198 | /NULLS & RUBOUTS DONT MAKE IT | |
5199 | /END OF LINE MARKED BY A 0000 | |
5200 | /CR,LF,FF DON'T GO INTO THE BUFFER | |
5201 | ||
5202 | /BUFFER IS LAID OUT AS FOLLOWS: | |
5203 | ||
5204 | *1646 | |
5205 | LINBUF, 0 /110(OCTAL) WORDS FOR LINE CHARACTERS | |
5206 | ||
5207 | *1756 | |
5208 | /LINEND, 0 /1 EXTRA WORD TO PREVENT OVERFLOW | |
5209 | /(GETS THE 0 WHEN LINE IS TOO LONG) | |
5210 | *1757 | |
5211 | SL7, 215 | |
5212 | 214 | |
5213 | 212 | |
5214 | 240 | |
5215 | 211 /SORT LIST MUST BE FOLLOWED BY A NEGATIVE | |
5216 | -1 | |
5217 | BL1, PTEXT /SPACE | |
5218 | PTEXT /TAB | |
5219 | TEXERR /000 | |
5220 | BL7, L72S | |
5221 | L72X | |
5222 | L72+2 | |
5223 | L72+2 | |
5224 | L72X | |
5225 | ||
5226 | \f | |
5227 | ||
5228 | /MAIN SYMBOL TABLE | |
5229 | ||
5230 | *2000 | |
5231 | ||
5232 | ||
5233 | /ENTRIES ARE COMPOSED OF THE FOLLOWING: | |
5234 | / FIRST A 1 WORD HEADER CODE | |
5235 | / THEN THE SYMBOL ITSELF IN PACKED 6BIT ASCII (1-3 WORDS) | |
5236 | / FINALLY THE 1 WORD BINARY VALUE OF THE SYMBOL | |
5237 | ||
5238 | /THE HEADER CODE IS LAID OUT AS FOLLOWS: | |
5239 | /(A) FOR OP CODE SYMBOLS: | |
5240 | / BIT0=1 AFTER THE SYMBOL HAS BEEN PRINTED BY PRSYM | |
5241 | / BITS1&2=3 (THESE ARE THE SYMBOL TYPE BITS) | |
5242 | / BIT3=1 FOR MEMORY REFERENCE INSTRUCTIONS | |
5243 | / BITS4&5=THE MICRO-GROUP FOR OPR INSTRUCTIONS (0 FOR MRI AND IOT INSTS.) | |
5244 | / (NOTE: MICRO-GROUP IS SET TO 0 FOR CLA) | |
5245 | / BIT6=1 IF THE SYMBOL IS A PSUEDO-OP | |
5246 | / BIT7=1 IF THE INST. IS A SKIP TYPE INST. | |
5247 | / BIT8=1 | |
5248 | / BIT9=0 | |
5249 | / BITS10&11=THE NUMBER OF PACKED ASCII SYMBOL WORDS IN THE ENTRY | |
5250 | ||
5251 | /(B) FOR OTHER SYMBOL TYPES: | |
5252 | / BIT0 AS ABOVE | |
5253 | / BITS1&2=0 FOR ABSOLUTE AND COMMON SYMBOLS | |
5254 | / =1 FOR RELOCATABLE SYMBOLS | |
5255 | / =2 FOR EXTERNAL SYMBOLS | |
5256 | / BIT3=1 AFTER THE SYMBOL HAS BEEN DEFINED | |
5257 | / BIT4=1 FOR ENTRY SYMBOLS | |
5258 | / BIT5=1 IF THE SYMBOL IS EVER REFERENCED BY A # | |
5259 | / BIT6=1 IF THE SYMBOL IS IN COMMON | |
5260 | / BIT7=1 IF THE SYMBOL IS A DUMMY SYMBOL | |
5261 | / BITS8-11 AS ABOVE | |
5262 | /MST=. | |
5263 | 3053 /ABSYM | |
5264 | 0102 | |
5265 | 2331 | |
5266 | 1500 | |
5267 | PABSYM | |
5268 | 3052 /ARG | |
5269 | 0122 | |
5270 | 0700 | |
5271 | PARG | |
5272 | 3412 /AND | |
5273 | 0116 | |
5274 | 0400 | |
5275 | AND 0 | |
5276 | 3053 /BLOCK | |
5277 | 0214 | |
5278 | 1703 | |
5279 | 1300 | |
5280 | PBSS | |
5281 | 3052 /CALL | |
5282 | 0301 | |
5283 | 1414 | |
5284 | PCALL | |
5285 | 3053 /COMMN | |
5286 | 0317 | |
5287 | 1515 | |
5288 | 1600 | |
5289 | PCOMMN | |
5290 | 3112 /CIA | |
5291 | 0311 | |
5292 | 0100 | |
5293 | CIA | |
5294 | 3012 /CLA | |
5295 | 0314 | |
5296 | 0100 | |
5297 | CLA | |
5298 | 3112 /CLL | |
5299 | 0314 | |
5300 | 1400 | |
5301 | CLL | |
5302 | 3112 /CMA | |
5303 | 0315 | |
5304 | 0100 | |
5305 | CMA | |
5306 | 3112 /CML | |
5307 | 0315 | |
5308 | 1400 | |
5309 | CML | |
5310 | 3053 /DECIM | |
5311 | 0405 | |
5312 | 0311 | |
5313 | 1500 | |
5314 | PDEC | |
5315 | 3053 /DUMMY | |
5316 | 0425 | |
5317 | 1515 | |
5318 | 3100 | |
5319 | PDUMMY | |
5320 | 3412 /DCA | |
5321 | 0403 | |
5322 | 0100 | |
5323 | DCA 0 | |
5324 | 3052 /EAP | |
5325 | 0501 | |
5326 | 2000 | |
5327 | PEAP | |
5328 | 3052 /END | |
5329 | 0516 | |
5330 | 0400 | |
5331 | PEND | |
5332 | 3053 /ENTRY | |
5333 | 0516 | |
5334 | 2422 | |
5335 | 3100 | |
5336 | PENTRY | |
5337 | 3053 /FORTR | |
5338 | 0617 | |
5339 | 2224 | |
5340 | 2200 | |
5341 | PFORT | |
5342 | 3212 /HLT | |
5343 | 1014 | |
5344 | 2400 | |
5345 | HLT | |
5346 | 3051 /IF | |
5347 | 1106 | |
5348 | PIF | |
5349 | 3053 /CPAGE | |
5350 | 0320 | |
5351 | 0107 | |
5352 | 0500 | |
5353 | PIFF | |
5354 | 3432 /ISZ | |
5355 | 1123 | |
5356 | 3200 | |
5357 | ISZ 0 | |
5358 | 3412 /INC (NON-SKIP ISZ) | |
5359 | 1116 | |
5360 | 0300 | |
5361 | ISZ 0 | |
5362 | 3112 /IAC | |
5363 | 1101 | |
5364 | 0300 | |
5365 | IAC | |
5366 | 3012 /IOF | |
5367 | 1117 | |
5368 | 0600 | |
5369 | IOF | |
5370 | 3012 /ION | |
5371 | 1117 | |
5372 | 1600 | |
5373 | ION | |
5374 | 3412 /JMP | |
5375 | 1215 | |
5376 | 2000 | |
5377 | JMP 0 | |
5378 | 3412 /JMS | |
5379 | 1215 | |
5380 | 2300 | |
5381 | JMS 0 | |
5382 | 3012 /KRB | |
5383 | 1322 | |
5384 | 0200 | |
5385 | KRB | |
5386 | 3032 /KSF | |
5387 | 1323 | |
5388 | 0600 | |
5389 | KSF | |
5390 | 3052 /LAP | |
5391 | 1401 | |
5392 | 2000 | |
5393 | PLAP | |
5394 | 3112 /NOP | |
5395 | 1617 | |
5396 | 2000 | |
5397 | NOP | |
5398 | 3053 /OCTAL | |
5399 | 1703 | |
5400 | 2401 | |
5401 | 1400 | |
5402 | POCT | |
5403 | 3053 /OPDEF | |
5404 | 1720 | |
5405 | 0405 | |
5406 | 0600 | |
5407 | OPDEX | |
5408 | 3212 /OSR | |
5409 | 1723 | |
5410 | 2200 | |
5411 | OSR | |
5412 | 3052 /PAGE | |
5413 | 2001 | |
5414 | 0705 | |
5415 | PPAGE | |
5416 | 3053 /PAUSE | |
5417 | 2001 | |
5418 | 2523 | |
5419 | 0500 | |
5420 | PPAUSE | |
5421 | 3012 /PLS | |
5422 | 2014 | |
5423 | 2300 | |
5424 | PLS | |
5425 | 3032 /PSF | |
5426 | 2023 | |
5427 | 0600 | |
5428 | PSF | |
5429 | 3053 /REORG | |
5430 | 2205 | |
5431 | 1722 | |
5432 | 0700 | |
5433 | PRORG | |
5434 | 3053 /RETRN | |
5435 | 2205 | |
5436 | 2422 | |
5437 | 1600 | |
5438 | PRTN | |
5439 | 3112 /RAL | |
5440 | 2201 | |
5441 | 1400 | |
5442 | RAL | |
5443 | 3112 /RAR | |
5444 | 2201 | |
5445 | 2200 | |
5446 | RAR | |
5447 | 3012 /RFC | |
5448 | 2206 | |
5449 | 0300 | |
5450 | RFC | |
5451 | 3012 /RRB | |
5452 | 2222 | |
5453 | 0200 | |
5454 | RRB | |
5455 | 3032 /RSF | |
5456 | 2223 | |
5457 | 0600 | |
5458 | RSF | |
5459 | 3112 /RTL | |
5460 | 2224 | |
5461 | 1400 | |
5462 | RTL | |
5463 | 3112 /RTR | |
5464 | 2224 | |
5465 | 2200 | |
5466 | RTR | |
5467 | 3232 /SKP | |
5468 | 2313 | |
5469 | 2000 | |
5470 | SKP | |
5471 | 3053 /SKPDF | |
5472 | 2313 | |
5473 | 2004 | |
5474 | 0600 | |
5475 | SKPDEX | |
5476 | 3232 /SMA | |
5477 | 2315 | |
5478 | 0100 | |
5479 | SMA | |
5480 | 3232 /SNA | |
5481 | 2316 | |
5482 | 0100 | |
5483 | SNA | |
5484 | 3232 /SNL | |
5485 | 2316 | |
5486 | 1400 | |
5487 | SNL | |
5488 | 3232 /SPA | |
5489 | 2320 | |
5490 | 0100 | |
5491 | SPA | |
5492 | 3112 /STA | |
5493 | 2324 | |
5494 | 0100 | |
5495 | STA | |
5496 | 3112 /STL | |
5497 | 2324 | |
5498 | 1400 | |
5499 | STL | |
5500 | 3232 /SZA | |
5501 | 2332 | |
5502 | 0100 | |
5503 | SZA | |
5504 | 3232 /SZL | |
5505 | 2332 | |
5506 | 1400 | |
5507 | SZL | |
5508 | 3232 /SPC=SPA+CLA (USED BY COMPILER) | |
5509 | 2320 | |
5510 | 0300 | |
5511 | SPA CLA | |
5512 | 3412 /TAD | |
5513 | 2401 | |
5514 | 0400 | |
5515 | TAD 0 | |
5516 | 3052 /TEXT | |
5517 | 2405 | |
5518 | 3024 | |
5519 | PTEXT | |
5520 | 3012 /TLS | |
5521 | 2414 | |
5522 | 2300 | |
5523 | TLS | |
5524 | 3032 /TSF | |
5525 | 2423 | |
5526 | 0600 | |
5527 | TSF | |
5528 | ||
5529 | ||
5530 | ACH=20 | |
5531 | ACM=21 | |
5532 | ACL=22 | |
5533 | ||
5534 | 0452 /ACH | |
5535 | 0103 | |
5536 | 1000 | |
5537 | ACH | |
5538 | 0452 /ACM | |
5539 | 0103 | |
5540 | 1500 | |
5541 | ACM | |
5542 | 0452 /ACL | |
5543 | 0103 | |
5544 | 1400 | |
5545 | ACL | |
5546 | ||
5547 | II, 0451 /I | |
5548 | 1100 | |
5549 | 0400 | |
5550 | ||
5551 | STTP=. | |
5552 | \fCORE1=7600 | |
5553 | *CORE1-1 | |
5554 | ||
5555 | /THE OCCURRENCE TABLE EXTENDS DOWNWARD FROM HERE | |
5556 | /TOWARD THE MAIN SYMBOL TABLE | |
5557 | /& SHARING THE SAME SPACE WITH IT. | |
5558 | /THIS TABLE IS VARIABLE, BEING COLLAPSED | |
5559 | /AS MUCH AS POSIBLE DURING USE. THE ONLY | |
5560 | /THING LEFT ON IT AT THE END ARE UNDEFINED | |
5561 | /SYMBOLS. | |
5562 | /THE OCC. TAB. CONTAINS AN ENTRY FOR EVERY | |
5563 | /REF. TO AN AS YET UNDF. SYMBOL. EACH | |
5564 | /TIME A SYMBOL IS DEFINED THE TABLE IS SEARCHED | |
5565 | /TO SEE IF FORWARD REFERENCES TO IT EXIST. | |
5566 | /IF SO THEY ARE OUTPUT & THE TABLE | |
5567 | /CONDENSED. | |
5568 | /ENTRIES CONSIST OF 2 OR 3 WORDS | |
5569 | /STRUCTURED AS BELOW: | |
5570 | /HIGH WORD: LOCATION OF REFERENCE | |
5571 | /LOW WORD: SYMBOL I.D. | |
5572 | /OPTIONAL WORD: # FLAG | |
5573 | /THE LOC. WORD CONTAINS THE PROG. ADDR. WHERE | |
5574 | /THE VALUE OF THE SYM. MUST BE ASSEMBLED | |
5575 | /THE # FLAG=1 IF IT EXISTS. IT WILL | |
5576 | /EXIST ONLY FOR THOSE ENTRIES WHERE THE | |
5577 | /SYM. WAS REF'D. BY A #. | |
5578 | /THE TABLE IS ALWAYS SEARCHED IN REVERSE | |
5579 | /FROM LOW CORE UPWARD | |
5580 | /THE O.T. PTR (OTP) ALWAYS PTS. TO THE NEXT FREE | |
5581 | /LOCATION BELOW THE TABLE | |
5582 | /THE TABLE HAS NO IMPORTANCE DURING PASS 2. | |
5583 | ||
5584 | ||
5585 | /MEMORY IS NOT USED | |
5586 | ||
5587 | ||
5588 | $ | |
5589 | \f |