Commit | Line | Data |
---|---|---|
7af5ad59 PH |
1 | / RALF, V62A |
2 | / | |
3 | / | |
4 | / | |
5 | / | |
6 | / | |
7 | / | |
8 | / | |
9 | // | |
10 | / | |
11 | / | |
12 | / | |
13 | / | |
14 | /COPYRIGHT (C) 1974, 1975, 1977 | |
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/ RELOCATABLE ASSEMBLER FOR OS/8 FORTRAN IV | |
41 | / | |
42 | / | |
43 | / FPPASM BY HANK MAURER | |
44 | / RALF MODS BY JUD LEONARD | |
45 | / OS/8 FORTRAN MODS BY RICHIE LARY + MARTY HURLEY | |
46 | / NEW DATE ALGORITHUM PUT IN BY ED STEINBERGER | |
47 | / | |
48 | / THE FOLLOWING FORMULA GIVES THE NUM | |
49 | / OF USER SYMBOLS: | |
50 | / -(FREE+200[BASE8])/6[BASE10] | |
51 | / WHERE THE VALUE OF FREE IS FROM THE | |
52 | / RALF SYMBOL MAP | |
53 | / | |
54 | / | |
55 | IFNDEF RALF <RALF=1 /GO RELOCATABLE THEN> | |
56 | / | |
57 | / ASSEMBLE WITH PAL8-V9 WITH W SWITCH | |
58 | / SAVE AS: | |
59 | / .SAVE SYS RALF.SV ;200=2000 | |
60 | ||
61 | / | |
62 | / CHANGES FOR OS/78 AND OS/8 V3D BY P.T. | |
63 | / .CHANGED VERSION NUMBER TO 62 | |
64 | / .RALF NO LONGER GENERATES FAULTY RELOCATABLE IF: | |
65 | / 1.) THE ESD IS LONGER THAN ONE BLOCK, AND | |
66 | / 2.)LIST OUTPUT IS DIRECTED TO A 2-PAGE NON-SYSTEM HANDLER | |
67 | / | |
68 | / | |
69 | FLD0=0 | |
70 | FLD1=10 | |
71 | VNUM=62 | |
72 | PATCH="A /PATCH LEVEL A | |
73 | *3 | |
74 | VERS, VNUM /VERSION NUMBER | |
75 | OLDN3, 0 /\ fTEMP FOR LOOKUP | |
76 | OTEMP, 0 /A COUPLE OF TEMPS THAT | |
77 | OCNT, 0 /DIDNT FIT INTO THEIR PAGE | |
78 | 0 | |
79 | X10, 0 | |
80 | X11, 0 | |
81 | X12, 0 | |
82 | X13, 0 | |
83 | X14, 0 | |
84 | OUTPTR, OUBUF-1 | |
85 | NEXT, FREE-1 | |
86 | CHRPTR, LINE-1 | |
87 | NCHARS, -1 /CHARACTER INPUT STUFF | |
88 | CPTMP, 0 | |
89 | NCTMP, 0 /USED TO SAVE CHAR POSITION | |
90 | LINSIZ, 0 /SIZE OF LINE FOR PRINTING | |
91 | STYPE, /SYMBOL TYPE CODE | |
92 | CHKSUM, 0 /FOR BINARY OUTPUT | |
93 | IFZERO RALF < | |
94 | LOCTR1, 0 /INITIAL LOCN CNTR FOR ABSOLUTE ASM | |
95 | LOCTR2, 200 > | |
96 | IFNZRO RALF < | |
97 | ESDNO, 2 /LAST ESD #. (#MAIN & BLANK COMMON DEFAULT) | |
98 | LOCTR1, 20 /HIGH LOCN CNTR WITH ESD (STARTS IN #MAIN) | |
99 | LOCTR2, 0 | |
100 | DPFLG, 0 > | |
101 | \fBASER, 4000 /BASE REGISTER SETTING | |
102 | 0 | |
103 | INDXR, 0 /INDEX LOCS: MUST FOLLOW BASER | |
104 | 0 | |
105 | EXPVAL, 0 /EXPRESSION VALUE | |
106 | 0 | |
107 | 0 | |
108 | EXPDEF, 0 /=0 IF EXPR IS UNDEFINED | |
109 | EXPSW, 0 /FLAG=1 IF NO EXPR | |
110 | WORD1, 0 /TEMPORARY 2 WORD OPERAND | |
111 | WORD2, 0 | |
112 | FPPADR, 0 /ADDRESS FIELD FOR FPP INDEX INSTR | |
113 | 0 | |
114 | OPCODE, 0 /OPCODE OR PSEUDO-OP POINTER | |
115 | XFLAG, 0 /INDEX FLAG = 1 IF INDEX PRESENT | |
116 | XINCR, 1 /FLAG = 0 IF + LEGAL IN INDEX EXPR | |
117 | BUCKET, 0 /FIRST CHAR OF NAME | |
118 | NAME1, 0 /CHARS 2 AND 3 OF NAME | |
119 | NAME2, 0 /CHARS 4 AND 5 OF NAME | |
120 | NAME3, 0 /CHAR 6 OF NAME AND TYPE | |
121 | LASTOP, 0 /LAST OPERATOR ENCOUNTERRED IN EXPR | |
122 | PASSNO, -1 /PASS NUMBER | |
123 | ASMOF, 0 /SET NEGATIVE WHEN ASSEMBLY OFF | |
124 | PNCHOF, 0 /NON-ZERO TO SUPPRESS BINARY OUTPUT | |
125 | LISTSW, 1 /LIST SWITCH (1 ENABLES LISTING) | |
126 | OUTSWT, 0 /OUT SWITCH, =1 IF LINE ALREADY LISTED | |
127 | REPCNT, 0 /REPEAT COUNTER | |
128 | SCSWT, 0 /SEMICOLON SWITCH | |
129 | RADIX, 0 /RADIX FOR INTEGERS (0 IS OCTAL) | |
130 | LTEMP, -177 /TEMP USED BY LOOKUP | |
131 | EXTMP, 0 /TEMPS USED BY EXPR AND OTHERS | |
132 | EXTMP2, 0 | |
133 | EQUN, 0;0;0;0 /NAME ON LEFT OF EQUAL SIGN | |
134 | /NEXT TWO LOCS USED WITH EQUN BY DMPESD | |
135 | FPPSWT, 0 /1 WHHEN FINDING FPP ADR EXPR | |
136 | FPP2WD, 0 /SET BY EXPR TO FORCE 2 WD FMT | |
137 | FPPWD2, 0 /SET BY FPP2WD.OR.EXPTYP.EQ.0 | |
138 | LITRL, 0 /SET = 1 FOR LITERAL | |
139 | P0LIT, 177 | |
140 | CPLIT, 177 | |
141 | PAGEN, 0 | |
142 | ERRORS, 0 /ERROR COUNT | |
143 | PC, TTYOUT /OUTPUT ROUTINE | |
144 | OUFILE, 7573 /OUTPUT FILE LIST POINTER | |
145 | BFILE, 1 | |
146 | \fLPAGE1, 1 /INPUT FORMFEED COUNT | |
147 | LPAGE2, 0 /OUTPUT PAGE WITH RESPECT TO ABOVE | |
148 | LINPAG, -1 /LINES/PAGE COUNTER | |
149 | LINKSW, 0 /1 IF LINK GENERATED ON THIS LINE | |
150 | LINKS, /NO OF LINKS GENERATED | |
151 | ABREFS, 0 /NO OF ABSOLUTE REFERENCES | |
152 | ABSOP, 0 /POINTER-SWITCH FOR BINARY OUTPUT | |
153 | USR, 200 /CURRENT CALL ADDRESS FOR USR | |
154 | SYONLY, 0 /=0=LIST ONLY SMAP WHEN LIST FILE | |
155 | /IS SPECIFIED. ITS SET VIA SLASH S | |
156 | /=1=REGULAR | |
157 | NP17, 17 /** | |
158 | NP7700, 7700 | |
159 | OPX, 0 | |
160 | OP, ZBLOCK 6 | |
161 | ACX, 0 | |
162 | AC, ZBLOCK 6 | |
163 | M3, -3 | |
164 | BLINE, LINE-1 | |
165 | / | |
166 | PAGE | |
167 | \f/ | |
168 | / CORE ALLOCATION IN HIGH FIELD 0 | |
169 | / | |
170 | CPLBUF=5100 /ACTUALLY AT 5200 | |
171 | P0LBUF=5200 /AND 5300, 1/2 PAGE EACH | |
172 | IFZERO RALF < | |
173 | INBUF=5400 > | |
174 | IFNZRO RALF < | |
175 | INBUF=6000 /AFTER PASS 1, MOVES TO 5400> | |
176 | OUBUF=6400 | |
177 | LINE=7000 /CURRENT INPUT LINE IN ASCII | |
178 | INDEVH=7200 /TENTATIVE INPUT DEVICE HANDLR ADDR | |
179 | OUDEVH=7400 /TENTATIVE OUTPUT HANDLER ADDR | |
180 | INRECS=2 | |
181 | INCTL=400 | |
182 | OUCTL=4200 | |
183 | / | |
184 | / COLLECT THE NEXT STATEMENT | |
185 | / | |
186 | ISZ .+2 | |
187 | REPLEN, JMP I .+1 | |
188 | REPLST, BEGIN /START AT 6000 IF CHAINED ELSE 6001 | |
189 | NEXTST, CDF FLD0 /JUST PRECAUTION | |
190 | TAD OUTSWT /IF NO OUTPUT FROM THIS LINE, | |
191 | SNA CLA | |
192 | TAD PASSNO /AND LISTING PASS | |
193 | SMA SZA CLA | |
194 | TAD LISTSW /AND LISTING ENABLED | |
195 | SNA CLA /PRINT THIS LINE NOW | |
196 | JMP START /ELSE GET NEXT | |
197 | JMS I [CRLF /PRINT CR/LF | |
198 | TAD (-6 | |
199 | DCA LTEMP /SPACE OVER | |
200 | JMS I [PRINT2 /12 SPACES | |
201 | ISZ LTEMP | |
202 | JMP .-2 | |
203 | JMS I (PRNTLN /THEN PRINT LINE | |
204 | START, JMS I [GETCHR /ANY MORE CHARS ? | |
205 | JMP NOTEG | |
206 | JMS I [ERMSG /EXTRA GARBAGE ON LAST LINE | |
207 | 0507 /*EG* | |
208 | NOTEG, TAD SCSWT /DID LAST LINE END WITH SEMICOLON ? | |
209 | SNA CLA | |
210 | JMP .+5 /NO | |
211 | DCA SCSWT /KILL SC SWITCH | |
212 | ISZ CHRPTR /SKIP OVER SEMICOLON | |
213 | ISZ NCHARS | |
214 | JMP ASMBL /DON'T READ A NEW LINE | |
215 | TAD REPCNT /IS THIS LINE TO BE REPEATED? | |
216 | SPA CLA | |
217 | JMP AGAIN /DO IT | |
218 | NEWLIN, TAD BLINE /RESET POINTER | |
219 | DCA CHRPTR | |
220 | TAD [-200 /LIMIT LINE SIZE | |
221 | DCA MAXLIN | |
222 | DCA OUTSWT /CLEAR OUTPUT SWITCH | |
223 | \fRDLOOP, JMS I (ICHAR /READ A CHAR | |
224 | TAD (-212 | |
225 | SNA | |
226 | JMP RDLOOP /IGNORE LINE FEEDS | |
227 | TAD (212-215 /END ON CR | |
228 | SNA | |
229 | JMP ENDLIN | |
230 | IAC | |
231 | SNA /FORM FEED? | |
232 | JMP FORMFD | |
233 | TAD (214 /FIX CHAR | |
234 | DCA I CHRPTR /SAVE IT | |
235 | ISZ MAXLIN /TEST FOR LINE TOO LONG | |
236 | JMP RDLOOP /PUT CHAR AWAY AND GET NEXT 1 | |
237 | JMS I (ICHAR /IGNORE ANOTHER CHAR | |
238 | TAD (-215 /UNLESS CR | |
239 | SZA CLA | |
240 | JMP .-3 | |
241 | JMS I [ERMSG /EXCESS LENGTH LINE | |
242 | 1424 /*LT* | |
243 | ENDLIN, TAD CHRPTR /FIND - NUMBER OF CHARS - 1 | |
244 | CMA | |
245 | TAD BLINE | |
246 | DCA NCHARS | |
247 | TAD REPCNT /0 BECOMES 0, | |
248 | CIA /BUT POS REP COUNT | |
249 | DCA REPCNT /ENABLES REPEAT | |
250 | TAD NCHARS /SAVE LENGTH | |
251 | DCA REPLEN | |
252 | TAD LISTSW /SAVE LISTING SWITCH DURING REPEAT | |
253 | DCA REPLST | |
254 | REASM, TAD NCHARS /SAVE SIZE OF LINE FOR PRINT | |
255 | DCA LINSIZ | |
256 | TAD BLINE | |
257 | DCA CHRPTR /SET POINTER | |
258 | ASMBL, TAD ASMOF /ARE WE INSIDE A CONDITIONAL | |
259 | SZA CLA | |
260 | JMP OFFIT /YES, AND THE COND WAS FALSE | |
261 | JMS I [GETCHR /LOOK FOR A CHARACTER | |
262 | JMP NEXTST | |
263 | TAD (-257 /IS IT SLASH ? | |
264 | SNA | |
265 | JMP NOASM /YES, COOL IT | |
266 | TAD [257-240 /IS IT BLANK OR TAB ? | |
267 | SZA CLA /YES, IGNORE | |
268 | JMS I [BACK1 /NO, PUT IT BACK | |
269 | JMP I (LUNAME /ASSEMBLE STMT | |
270 | \fFORMFD, ISZ LPAGE1 /BUMP FORM FEED COUNT | |
271 | DCA LPAGE2 /CLEAR SUB-PAGE COUNT | |
272 | CLA CMA | |
273 | DCA LINPAG /FORCE EJECT ON CRLF | |
274 | JMP RDLOOP | |
275 | OPENIT, CLA CMA /DECR COUNT, ANOTHER OPEN ANGLE | |
276 | TAD ASMOF | |
277 | DCA ASMOF | |
278 | OFFIT, ISZ NCHARS /MORE TO GO? | |
279 | JMP GETIT /YES | |
280 | NOASM, CLA CMA | |
281 | DCA NCHARS /DONT ASSEMBLE THIS LINE | |
282 | JMP NEXTST /(PREVENTING *EG* MESSAGE) | |
283 | GETIT, TAD I CHRPTR /PICK UP THE CHARACTER | |
284 | TAD (-274 /OPEN ANGLE BRACKET? | |
285 | SNA | |
286 | JMP OPENIT /YES, PUSH ONE LEVEL DOWN | |
287 | CLL RTR | |
288 | SNA CLA | |
289 | ISZ ASMOF /IF CLOSE, CHECK LEVEL | |
290 | JMP OFFIT /TRY FOR NEXT | |
291 | JMP ASMBL /RESUME WORK | |
292 | AGAIN, TAD REPLEN /WE NOW REPEAT THE SAME LINE | |
293 | DCA NCHARS | |
294 | DCA LISTSW /NO LISTING DURRING REPEAT | |
295 | ISZ REPCNT | |
296 | JMP REASM /ASSUMING COUNT STILL OK | |
297 | TAD REPLST /RESTORE LISTING | |
298 | DCA LISTSW | |
299 | JMP NEWLIN /GET NEXT LINE | |
300 | MAXLIN=LTEMP | |
301 | / | |
302 | TXERR, TEXT " ERRORS" | |
303 | TXELN= .-TXERR | |
304 | PAGE | |
305 | \f/ | |
306 | / DIVIDE AC BY 3 | |
307 | / USEFUL IN FPP REFERENCES TO BASE | |
308 | / | |
309 | OVER3, 0 /DIVIDE AC BY THREE | |
310 | DCA EXTMP2 /MQ | |
311 | TAD (-15 /SET SHIFT COUNT | |
312 | DCA LTEMP | |
313 | DIVLUP, CLL /ZERO LINK | |
314 | TAD (-3 /SUBTRACT DIVISOR FROM AC | |
315 | SZL /IF AC>=3 SET LINK TO 1 | |
316 | JMP .+3 /OK, DONT RESTORE | |
317 | TAD (3 /TOO SMALL, RESTORE AC | |
318 | CLL /SET LINK BACK TO 0 | |
319 | DCA EXTMP /SAVE AC | |
320 | TAD EXTMP2 /ROTATE MQ-AC LEFT, PUT LINK IN MQ | |
321 | RAL | |
322 | DCA EXTMP2 /SAVE MQ | |
323 | TAD EXTMP /GET BACK AC | |
324 | RAL /COMPLETE SHIFT | |
325 | ISZ LTEMP /TEST COUNT | |
326 | JMP DIVLUP /KEEP GOING | |
327 | DCA EXTMP /THIS IS REMAINDER | |
328 | TAD EXTMP2 /RETURN QUOTIENT | |
329 | JMP I OVER3 | |
330 | / | |
331 | / INITIALIZE FOR OUTPUT | |
332 | / | |
333 | OUSETP, 0 | |
334 | TAD (OUCTL&3700 /BUFFER SIZE IN DBL WORDS | |
335 | CIA /NEGATE IT (PAL10 BLOWS) | |
336 | DCA OUDWCT | |
337 | TAD NOUBUF | |
338 | DCA OUPTR /INITIALIZE WORD POINTER | |
339 | TAD OUJMPE | |
340 | DCA OUJMP /INITIALIZE 3-WAY CHARACTER SWITCH | |
341 | JMP I OUSETP | |
342 | NOUBUF, OUBUF | |
343 | / | |
344 | / STORE CHARACTERS IN OUTPUT BUFFER | |
345 | / IN PS8 FORMAT (YOU KNOW, 3 CHARS | |
346 | / IN 2 WORDS THE WRONG WAY) | |
347 | / | |
348 | OCHAR, 0 | |
349 | AND (377 | |
350 | DCA OUTEMP | |
351 | TAD OUTINH | |
352 | SZA CLA /IS THERE AN OUTPUT FILE? | |
353 | JMP I OCHAR /NO - EXIT | |
354 | CDF OUFLD /SET DATA FIELD TO BUFFER'S FIELD | |
355 | ISZ OUJMP /BUMP THE CHARACTER SWITCH | |
356 | OUJMP, HLT /THREE WAY CHARACTER SWITCH | |
357 | JMP OCHAR1 | |
358 | JMP OCHAR2 | |
359 | TAD OUTEMP | |
360 | CLL RTL | |
361 | RTL | |
362 | AND (7400 | |
363 | TAD I OUPOLD | |
364 | DCA I OUPOLD /UPDATE FIRST WORD OF TWO WITH HIGH | |
365 | /ORDER 4 BITS OF THIRD CHAR | |
366 | TAD OUTEMP | |
367 | CLL RTR | |
368 | RTR | |
369 | RAR | |
370 | AND (7400 | |
371 | TAD I OUPTR | |
372 | DCA I OUPTR /UPDATE 2ND WORD FROM LO 4 BITS | |
373 | TAD OUJMPE | |
374 | DCA OUJMP /RESET SWITCH | |
375 | ISZ OUPTR | |
376 | ISZ OUDWCT /BUMP COUNTER EVERY 3 CHARS | |
377 | JMP OUCOMN | |
378 | TAD (OUCTL /LOAD CONTROL WORD FOR A FULL WRITE | |
379 | JMS I (OUTDMP /DUMP THE BUFFER | |
380 | JMS OUSETP /RE-INITIALIZE THE POINTERS | |
381 | JMP OUCOMN | |
382 | OCHAR2, TAD OUPTR | |
383 | DCA OUPOLD /SAVE POINTER TO FIRST WORD OF TWO | |
384 | ISZ OUPTR /BUMP WORD POINTER TO SECOND WORD | |
385 | OCHAR1, TAD OUTEMP | |
386 | DCA I OUPTR | |
387 | OUCOMN, CDF | |
388 | JMP I OCHAR | |
389 | OUTEMP, 0 | |
390 | OUPOLD, 0 | |
391 | OUPTR, 0 | |
392 | OUJMPE, JMP OUJMP | |
393 | OUDWCT, 0 | |
394 | OUTINH, 0 | |
395 | / | |
396 | / MOVE OUTPUT FILE NAME TO FIELD 0 | |
397 | / | |
398 | OFNAME, 0 | |
399 | TAD OUFILE | |
400 | DCA X10 | |
401 | TAD (OUFNAM-1 | |
402 | DCA X11 | |
403 | TAD (-4 | |
404 | DCA LTEMP | |
405 | CDF 10 | |
406 | TAD I X10 | |
407 | CDF 0 | |
408 | DCA I X11 | |
409 | ISZ LTEMP | |
410 | JMP .-5 | |
411 | JMP I OFNAME | |
412 | \f/ | |
413 | / GET OUTPUT DEVICE CHARISTICS | |
414 | / | |
415 | OTYPE, 0 | |
416 | CDF 10 | |
417 | TAD I (7600 | |
418 | AND [17 | |
419 | TAD (DCB-1 | |
420 | DCA OTYPP | |
421 | TAD I OTYPP | |
422 | CDF 0 | |
423 | JMP I OTYPE | |
424 | OTYPP= OFNAME | |
425 | / | |
426 | / BASIC TITLE INFO | |
427 | / | |
428 | TITBUF, | |
429 | IFZERO RALF < | |
430 | TEXT "FLAP V" > | |
431 | IFNZRO RALF < | |
432 | TEXT "RALF V" > | |
433 | *.-1 | |
434 | VMTXT, 0;0;0 | |
435 | TITDAT, ZBLOCK 6 | |
436 | TEXT " PAGE" | |
437 | TITLEN= .-TITBUF | |
438 | PAGE | |
439 | \f/ | |
440 | / PROCESS A STATEMENT | |
441 | / | |
442 | LUNAME, TAD CHRPTR /SAVE CHAR STUFF | |
443 | DCA CPTMP | |
444 | TAD NCHARS | |
445 | DCA NCTMP | |
446 | DCA LINKSW /CLEAR SWITCH | |
447 | JMS I [GETNAM /LOOK FOR NAME | |
448 | IFZERO RALF < | |
449 | JMP I (TRYSTR /COULD BE AN ORG> | |
450 | IFNZRO RALF < | |
451 | JMP I (GETEXP /NOT ONE OF OURS, I GUESS> | |
452 | JMS I [GETCHR /LOOK FOR COMMA | |
453 | JMP JSTONE /ITS JUST ONE SYMBOL | |
454 | TAD (-254 /COMMA TEST | |
455 | SZA | |
456 | JMP TRYEQU /NO COMMA, CHECK FOR EQUAL | |
457 | JMS I [LOOKUP /LOOK UP SYMBOL | |
458 | JMP DEFLBL /ITS UNDEFINED | |
459 | CLL RAR /VERIFY ADDR TYPE | |
460 | SZA CLA | |
461 | JMP MDERR /THAT'S A NO-NO | |
462 | TAD I X10 /CHECK LOCCTR AGAINST OLD DEFINITION | |
463 | CIA | |
464 | TAD LOCTR1 /FIRST UPPERR HALF | |
465 | SZA CLA | |
466 | JMP .+6 | |
467 | TAD I X10 | |
468 | CIA | |
469 | TAD LOCTR2 /THEN LOWER HALF | |
470 | SNA CLA | |
471 | JMP DEFIND | |
472 | MDERR, JMS I [ERMSG /MULTIPLY DEFINED | |
473 | 1504 /*MD* | |
474 | JMP I (ASMBL /FIELD IS OK | |
475 | DEFLBL, ISZ I LTEMP /SET TYPE TO 1 (USER ADDR) | |
476 | TAD LOCTR1 /PUT LOCATION COUNTER | |
477 | DCA I X10 /INTO VALUE | |
478 | TAD LOCTR2 | |
479 | DCA I X10 | |
480 | DEFIND, CDF FLD0 /GO LOOK FOR ANOTHER TAG | |
481 | JMP I (ASMBL | |
482 | \fTRYEQU, TAD (-21 /CHECK FOR EQUAL SIGN | |
483 | SZA | |
484 | JMP TRYBLK /NO, TRY BLANK | |
485 | TAD NAME1 | |
486 | DCA EQUN /SAVE 6 CHARACTER NAME | |
487 | TAD NAME2 | |
488 | DCA EQUN+1 | |
489 | TAD NAME3 | |
490 | DCA EQUN+2 | |
491 | TAD BUCKET | |
492 | DCA EQUN+3 | |
493 | JMS I [GETCHR /ALLOW BLANK AFTER = | |
494 | JMP EQUERR | |
495 | TAD [-240 | |
496 | SZA CLA | |
497 | JMS I [BACK1 /ANYTHING ELSE GOES BACK | |
498 | JMS I [EXPR /GET VALUE RIGHT OF EQUALS | |
499 | JMP EQUERR /BAD EQU | |
500 | TAD EQUN /RESTORE NAME | |
501 | DCA NAME1 | |
502 | TAD EQUN+1 | |
503 | DCA NAME2 | |
504 | TAD EQUN+2 | |
505 | DCA NAME3 | |
506 | TAD EQUN+3 | |
507 | DCA BUCKET | |
508 | JMS I [LOOKUP /LOOKUP SYMBOL | |
509 | JMP PUTVAL /A NEW SYMBOL | |
510 | CLL RAR | |
511 | SZA CLA | |
512 | JMP EQUERR /TYPE CONFLICT | |
513 | PUTVAL, TAD EXPVAL+1 /SAVE ADDRESS TYPE | |
514 | DCA I X10 | |
515 | TAD EXPVAL+2 | |
516 | DCA I X10 | |
517 | TAD I LTEMP /NOW GET TYPE WORD | |
518 | AND (7740 /ZERO OLD TYPE, PRESERVING FORCE BIT | |
519 | TAD EXPDEF /DEFINED BY RIGHT HAND SIDE | |
520 | DCA I LTEMP /RESTORE WORD | |
521 | CDF FLD0 | |
522 | JMP I [NEXTST /GO GET NEXT STMT | |
523 | EQUERR, JMS I [ERMSG /BAD EQU | |
524 | 0205 /*BE* | |
525 | JMP I [NEXTST | |
526 | \fTRYBLK, TAD (35 /CHECK FOR BLANK | |
527 | SNA /MATCH BLANK? | |
528 | JMP JSTONE /YES | |
529 | AND [77 | |
530 | JMS I [R6L | |
531 | DCA NAME3 /MAKE MODIFIED NAME OF IT | |
532 | JMS I [GETCHR /MODIFIER MUST BE FOLLOWED BY BLANK | |
533 | JMP I (GETEXP /LOOKS BAD | |
534 | TAD [-240 /GOT IT? | |
535 | SZA CLA | |
536 | JMP I (GETEXP /LET EXPR TELL HIM IF ITS WRONG | |
537 | JSTONE, TAD (33 /USE OUR INTERNAL SYMBOL TABLE | |
538 | JMS I [FIND /IS IT THERE? | |
539 | JMP I (GETEXP /NO, LOOK IN USER'S | |
540 | TAD OPCTBL /CREATE JUMP THRU TABLE | |
541 | DCA OPCJMP /SAVE IT | |
542 | TAD I X10 /PICK UP FIRST WORD OF VALUE | |
543 | DCA OPCODE /ITS AN OPCODE-MAYBE? | |
544 | CDF FLD0 | |
545 | OPCJMP, 0 /JUMP SOMEWHERE | |
546 | OPCTBL, JMP I .-4 | |
547 | PSEUDO /PSEUDO OPS | |
548 | PDP8MR /PDP8 MRI | |
549 | FPPMR /FPPMR | |
550 | FPPS1 /OTHER FPP OPCODES | |
551 | FPPS2 | |
552 | FPPS3 | |
553 | FPPS4 | |
554 | FPPS5 | |
555 | FPMRI /INDIRECT FPP MEM REF | |
556 | FPMRS /SHORT DIRECT MEM REF | |
557 | FPMRL /LONG DIRECT REF | |
558 | PDPOPR /8-MODE OPERATES | |
559 | REPETX, JMS I (ADRGET /EVALUATE REPEAT EXPR | |
560 | CLL CMA RAR /3777 | |
561 | AND EXPVAL+2 | |
562 | DCA REPCNT | |
563 | JMP I [NEXTST | |
564 | PAGE | |
565 | \f/ | |
566 | GETEXP, CDF FLD0 | |
567 | TAD CPTMP /RESTORE CHARACTER POINTER | |
568 | DCA CHRPTR | |
569 | TAD NCTMP /TO JUST AFTER TAG (IF ANY) | |
570 | DCA NCHARS | |
571 | SX, DCA OPCODE | |
572 | JMS I [EXPR /TRY FOR AN EXPRESSION | |
573 | JMP BADEXP /IF NONE, ERROR | |
574 | IFNZRO RALF < | |
575 | JMS RELERR /BOMB IF NOT ABSOLUTE EXP> | |
576 | TAD EXPVAL+2 | |
577 | JMS I [OUTWRD | |
578 | JMP I [NEXTST /GO DO NEXT STMT | |
579 | IFNZRO RALF </IF EXPVAL IS RELOCATABLE, | |
580 | RELERR, 0 /GIVE ERROR MESSAGE | |
581 | TAD EXPVAL+1 /CAUTION: THIS ROUTINE IS | |
582 | /SOMETIMES CALLED WITH NON-ZERO AC | |
583 | AND [7770 /JUST ESD BITS | |
584 | SNA CLA | |
585 | JMP I RELERR /ITS ABSOLUTELY FINE | |
586 | TAD EXPVAL+1 | |
587 | AND [7 /REMOVE ESD | |
588 | DCA EXPVAL+1 | |
589 | JMS I [ERMSG | |
590 | 2205 /*RE* | |
591 | JMP I RELERR > | |
592 | / | |
593 | FPPMR, ISZ FPPSWT /SET FORCE ENABLE | |
594 | JMS FPADR | |
595 | TAD WORD1 /IF WAY OFF BASE, | |
596 | SNA | |
597 | TAD FPPWD2 /OR IF FORCED | |
598 | SNA | |
599 | TAD XFLAG /OR IF INDEXED | |
600 | SZA CLA | |
601 | JMP FORMT1 /USE LONG FORM | |
602 | TAD WORD2 | |
603 | CLL | |
604 | TAD (-600 /COMPLETE OFF-BASE CHECK | |
605 | SZL CLA | |
606 | JMP FORMT1 /USE LONG | |
607 | JMP FORMT2 | |
608 | FPPS2, JMS I (GETADR /COLLECT ADDRESS EXPR | |
609 | JMS IXMES /BUT DISALLOW INDEX | |
610 | JMP F2WD /PUT TWO WORDS OUT | |
611 | / | |
612 | IXMES, 0 | |
613 | TAD XFLAG /NO INDEX ALLOWED | |
614 | SNA CLA | |
615 | JMP I IXMES /HE'S COOL | |
616 | JMS I [ERMSG | |
617 | 1130 /*IX* | |
618 | JMP I IXMES | |
619 | \fFPMRL, JMS FPADR | |
620 | FORMT1, JMS I (FIXOPC | |
621 | F2WD, TAD FPPADR | |
622 | AND [7 /FIELD BITS | |
623 | TAD OPCODE /IN FIRST WORD | |
624 | FPDMP, IFZERO RALF < | |
625 | JMS I [OUTWRD | |
626 | TAD FPPADR+1 /LOW ADDRESS | |
627 | JMS I [OUTWRD | |
628 | JMP I [NEXTST /NEXT!> | |
629 | IFNZRO RALF < | |
630 | JMP I (OUTREL /DUMP TWO RELOCATABLE> | |
631 | FPMRS, JMS FPADR /COLLECT OPERAND | |
632 | JMS IXMES /ERROR IF INDEX GIVEN | |
633 | TAD WORD1 | |
634 | SZA CLA | |
635 | JMP BADEXP | |
636 | TAD WORD2 | |
637 | CLL | |
638 | TAD (-600 /DOES IT FIT? | |
639 | SNL CLA | |
640 | JMP FORMT2 | |
641 | BADEXP, JMS I [ERMSG | |
642 | 0230 /*BX* | |
643 | TAD OPCODE /BEST GUESS OF THE DESIRED OUTPUT | |
644 | JMS I [OUTWRD | |
645 | JMP I [NEXTST | |
646 | FPMRI, JMS FPADR | |
647 | TAD WORD1 | |
648 | SZA CLA | |
649 | JMP BADEXP /NOT EVEN CLOSE | |
650 | TAD WORD2 | |
651 | CLL | |
652 | TAD (-30 | |
653 | SZL CLA | |
654 | JMP BADEXP /GOTTA BE IN THE FIRST 10 | |
655 | FORMT3, JMS I (FIXOPC | |
656 | FORMT2, TAD WORD2 | |
657 | JMS I (OVER3 /BY 3 FOR BASE ADDRESS | |
658 | TAD [200 | |
659 | FPPS3, TAD OPCODE | |
660 | JMS I [OUTWRD /WHEW! | |
661 | JMP I [NEXTST | |
662 | FPPS1, JMS I (GETADR /GET ADDR, AND INDEX | |
663 | JMS I (FIXOPC /PUT OPCODE TOGETHER | |
664 | TAD FPPADR /GET ADDR EXTENSION | |
665 | AND [7 | |
666 | TAD OPCODE /WITH TOGETHER OPCODE | |
667 | AND (7377 /WITHDRAW ONE BIT | |
668 | JMP FPDMP /PUT IT OUT | |
669 | \fFPPS5, CLA IAC /DISALLOW INDEX INCR | |
670 | JMS I (GETADR /COLLECT ADDRESS AND INDEX | |
671 | IFNZRO RALF < | |
672 | TAD FPPADR | |
673 | AND [7770 /MUST BE ABSOLUTE | |
674 | SNA CLA | |
675 | JMP .+3 /OK | |
676 | JMS I [ERMSG | |
677 | 2205 /*RE*> | |
678 | TAD XFLAG | |
679 | SZA CLA /ANY INDEX? | |
680 | TAD EXPVAL+2 | |
681 | AND [7 /STRIP OFF ESD BITS | |
682 | TAD OPCODE | |
683 | JMS I [OUTWRD /DUMP THAT | |
684 | TAD FPPADR+1 | |
685 | JMS I [OUTWRD /NOW LOW 12 BITS | |
686 | JMP I [NEXTST | |
687 | / | |
688 | FPADR, 0 | |
689 | JMS I (GETADR /COLLECT ADDRESS AND INDEX | |
690 | TAD BASER+1 | |
691 | CIA STL | |
692 | TAD FPPADR+1 | |
693 | DCA WORD2 /GET ADDRESS RELATIVE TO BASE | |
694 | RAL | |
695 | TAD BASER | |
696 | CIA | |
697 | TAD FPPADR | |
698 | DCA WORD1 | |
699 | JMP I FPADR | |
700 | PAGE | |
701 | \f/ | |
702 | PSEUDO, JMP I OPCODE /DISPATCH TO APPROPRIATE HNDLR | |
703 | / | |
704 | IFZERO RALF < | |
705 | / | |
706 | / ASSEMBLE VARIOUS INSTRUCTION TYPES | |
707 | / | |
708 | PDP8MR, TAD CHRPTR /SAVE POSITION | |
709 | DCA CPTMP | |
710 | TAD NCHARS | |
711 | DCA NCTMP /SAVE COUNT | |
712 | JMS I [GETCHR /LOOK FOR SPACE "I" | |
713 | JMP GETMR /WILL GIVE BX ERROR | |
714 | TAD (-"I /IS IT I? | |
715 | SNA CLA /IF NOT, FORGET IT | |
716 | JMS I [GETCHR /MUST BE FOLLOWED BY SPACE | |
717 | JMP NOTIND | |
718 | TAD [-240 | |
719 | SZA CLA | |
720 | JMP NOTIND /SOMETHING ELSE | |
721 | TAD OPCODE /PUT INDIRECT INTO OPCODE | |
722 | TAD (400 | |
723 | DCA OPCODE | |
724 | GETMR, JMS ADRGET /PICK UP ADDRESS FIELD | |
725 | TAD EXPVAL+2 /CHECK PAGE OF ADDRESS | |
726 | AND [7600 | |
727 | SNA | |
728 | JMP PAGEZ /ITS IN PAGE 0 | |
729 | CIA | |
730 | TAD LOCTR2 /COMPARE WITH CURRENT PAGE | |
731 | AND [7600 | |
732 | SNA CLA | |
733 | JMP THSPAG /OK, ITS THIS PAGE | |
734 | TAD OPCODE /CAN WE USE A LINK ? | |
735 | AND (400 /IS INDIRECT BIT OFF ? | |
736 | SNA CLA | |
737 | JMP I (MAKLNK /YES, GO MAKE LINK | |
738 | JMS I [ERMSG /NOPE, ITS AN ILLEGAL REFERENCE | |
739 | 1122 /*IR* | |
740 | THSPAG, TAD EXPVAL+2 /GET ADDRESS | |
741 | AND [177 /LOWER 7 BITS | |
742 | TAD [200 /PUT IN PAGE BIT | |
743 | SKP | |
744 | PAGEZ, TAD EXPVAL+2 /GET ADDRESS (UPPER 5 BITS ZERO) | |
745 | TAD OPCODE /PLUS OPCODE | |
746 | JMS I [OUTWRD /OUTPUT WORD | |
747 | JMP I [NEXTST | |
748 | NOTIND, TAD CPTMP /RESTORE CHAR POINTER | |
749 | DCA CHRPTR | |
750 | TAD NCTMP | |
751 | DCA NCHARS | |
752 | JMP GETMR /NOT AN INDIRECT> | |
753 | \fFPPS4, JMS ADRGET /GET INDEX REG EXPRESSION | |
754 | IFZERO RALF < | |
755 | JMS LITERR /CAN'T ALLOW LITERAL> | |
756 | JMS SUBX /GET RELATIVE INDEX VALUE | |
757 | TAD EXPVAL+2 /GET LOWER 3 BITS | |
758 | AND [7 /OF INDEX REG EXPR | |
759 | TAD OPCODE /WITH OPCODE | |
760 | JMS I [OUTWRD /OUT | |
761 | JMP I [NEXTST | |
762 | ADRGET, 0 /GET ADDRESS EXPR AND CHECK TYPE | |
763 | JMS I [EXPR /GET EXPR | |
764 | JMS I [ERMSG /BAD ADDR EXPR | |
765 | 0230 /*BX* | |
766 | JMP I ADRGET | |
767 | IFZERO RALF < | |
768 | LITERR, 0 /GIVE ERROR IF LITERAL | |
769 | TAD LITRL | |
770 | SNA CLA | |
771 | JMP I LITERR | |
772 | JMS I [ERMSG | |
773 | 1114 /*IL* | |
774 | JMP I LITERR > | |
775 | IFNZRO RALF < | |
776 | PDP8MR, JMS ADRGET | |
777 | JMP I (CHCKMR /V.56 | |
778 | > | |
779 | \fGETADR, 0 /GET ADDR, INDEX | |
780 | DCA XITEMP /SAVE INDEX INCREMENT SWITCH | |
781 | JMS ADRGET /GET ADDR | |
782 | DCA FPPSWT /KILL FPP SWITCH | |
783 | IFZERO RALF < | |
784 | JMS LITERR /DISALLOW LITERALS> | |
785 | TAD EXPDEF /IF EXPR WAS UNDEFINED | |
786 | SNA CLA | |
787 | IAC /OR FORCE BIT WAS SET | |
788 | TAD FPP2WD | |
789 | DCA FPPWD2 /FORCE 2 WORD FORMAT | |
790 | DCA XFLAG /ZERO INDEX SWT | |
791 | TAD EXPVAL+1 /SAVE ADDRESS VALUE | |
792 | DCA FPPADR | |
793 | TAD EXPVAL+2 | |
794 | DCA FPPADR+1 | |
795 | JMS I [GETCHR /LOOK FOR COMMA | |
796 | JMP I GETADR /NO INDEX | |
797 | TAD (-254 | |
798 | SZA CLA | |
799 | JMS I [BACK1 /WILL CAUSE A BX ERROR | |
800 | ISZ XFLAG /SET INDEX SWITCH | |
801 | TAD XITEMP /SET INDEX INCREMENT SWITCH | |
802 | DCA XINCR | |
803 | JMS ADRGET | |
804 | ISZ XINCR /CLEAR INDEX INCREMENT SWITCH | |
805 | IFZERO RALF < | |
806 | JMS LITERR > | |
807 | JMS SUBX /CALCULATE INDEX NO | |
808 | JMP I GETADR | |
809 | XITEMP, | |
810 | SUBX, 0 | |
811 | TAD INDXR+1 /CHECK FOR INDEX IN RANGE | |
812 | STL CIA | |
813 | TAD EXPVAL+2 | |
814 | DCA EXPVAL+2 | |
815 | RAL | |
816 | TAD INDXR | |
817 | CIA | |
818 | TAD EXPVAL+1 | |
819 | SZA CLA | |
820 | JMP BIERR | |
821 | TAD EXPVAL+2 | |
822 | CLL | |
823 | TAD [-10 | |
824 | SZL CLA | |
825 | BIERR, JMS I [ERMSG | |
826 | 0211 /*BI* | |
827 | JMP I SUBX | |
828 | \f IFNZRO RALF < | |
829 | / | |
830 | / AT END OF PASS, | |
831 | / CLEAR LENGTHS OF ALL SECTIONS | |
832 | / | |
833 | CLRSCT, 0 | |
834 | TAD (PNDL+3 | |
835 | DCA LTEMP /POINT TO USER SYMBOL SPACE | |
836 | CDF FLD1 | |
837 | CSLOOP, TAD I LTEMP /GET TYPE | |
838 | AND [37 /STRIP TO TYPE ONLY | |
839 | TAD (-3 | |
840 | SPA CLA /IS IT COMMON OR SECTION? | |
841 | JMP NOTSCT /NO, PASS IT | |
842 | ISZ LTEMP /BUMP POINTER TO VALUE | |
843 | TAD I LTEMP | |
844 | AND [7770 /SAVE ESD NUMBER | |
845 | DCA I LTEMP | |
846 | ISZ LTEMP | |
847 | DCA I LTEMP /CLEAR LOW ORDER | |
848 | CLA CLL CMA RAL /-2 | |
849 | NOTSCT, TAD (6 /BUMP POINTER | |
850 | TAD LTEMP /TO NEXT SYMBOL | |
851 | DCA LTEMP | |
852 | TAD NEXT /COMPARE END OF SYMBOL TABLE | |
853 | CIA CLL | |
854 | TAD LTEMP | |
855 | SNL CLA | |
856 | JMP CSLOOP /MORE TO GO | |
857 | CDF FLD0 | |
858 | JMP I CLRSCT /THAS ALL> | |
859 | / | |
860 | / | |
861 | IFNZRO RALF < | |
862 | / | |
863 | / ENSURE BOTH SYMBOL AND SUB-EXPR ARE ABSOLUTE | |
864 | / | |
865 | NOREL, 0 | |
866 | TAD WORD1 /IS SYMBOL RELOCATABLE? | |
867 | AND [7770 /TEST ESD BITS | |
868 | SZA CLA | |
869 | STL RAR /IF SO, FORCE ERROR | |
870 | JMS I (RELERR /TEST SUB EXPR | |
871 | JMP I NOREL | |
872 | DPCHKX, CLA CLL CML RAR /SET DPFLG, MODULE NEEDS | |
873 | DCA DPFLG /DP HARDWARE | |
874 | JMP I [NEXTST | |
875 | / SET BASE AND INDEX LOCS | |
876 | INDXX, CLA STL RTL /INDXR MUST JUST FOLLOW BASER | |
877 | BASEX, TAD (BASER-1 /POINT TO VALUE TO BE SET | |
878 | DCA X12 /HOPEFULLY UNUSED XR | |
879 | JMS I (ADRGET /COLLECT EXPRESSION | |
880 | TAD EXPVAL+1 | |
881 | DCA I X12 /HIGH ORDER AND ESD | |
882 | TAD EXPVAL+2 | |
883 | DCA I X12 /LOW ORDER | |
884 | JMP I [NEXTST >/THIS CONDITIONAL SASSEMBLY WAS | |
885 | /EXPANDED TO INCLUDE INDXX ON THIS PAGE. IT IS ALSO | |
886 | /COND. ASSEMBLED ON ANOTHER PAGE FOR FLAP. | |
887 | DELFIL, 0 | |
888 | TAD [7600 | |
889 | DCA OUFILE | |
890 | JMS I [OFNAME | |
891 | CLA IAC | |
892 | CIF 10 | |
893 | JMS I USR | |
894 | 4 | |
895 | OUFNAM | |
896 | 0 | |
897 | NOP | |
898 | JMP I DELFIL | |
899 | PAGE | |
900 | \f/ | |
901 | / PRINT THE CURRENT LINE IF NOT ALREADY DONE | |
902 | / | |
903 | PRNTLN, 0 /PRINT THE LINE | |
904 | TAD OUTSWT /HAS THE LINE BEEN PRINTED YET? | |
905 | SZA CLA | |
906 | JMP I PRNTLN /YES, COOL IT | |
907 | ISZ OUTSWT /SET SWITCH | |
908 | TAD BLINE /POINTER TO LINE | |
909 | DCA X13 | |
910 | DCA CRLF /CLEAR POSITION COUNT | |
911 | JMP PRLTST /IN CASE OF EMPTY LINE | |
912 | PRLNXT, TAD I X13 /GET A CHAR | |
913 | TAD (-211 /WATCH OUT FOR TAB | |
914 | SNA | |
915 | JMP TABIT /CONVERT TO BLANKS | |
916 | TAD (211 /RESTORE | |
917 | ISZ CRLF /BUMP POSITION COUNT | |
918 | JMS I PC /PRINT IT | |
919 | PRLTST, ISZ LINSIZ /CHECK COUNT | |
920 | JMP PRLNXT | |
921 | JMP I PRNTLN | |
922 | TABIT, TAD [240 /REPLACE TAB WITH BLANKS | |
923 | ISZ CRLF | |
924 | JMS I PC | |
925 | TAD CRLF | |
926 | AND [7 | |
927 | SZA CLA | |
928 | JMP TABIT | |
929 | JMP PRLTST | |
930 | / | |
931 | / GO TO NEXT LINE | |
932 | / | |
933 | CRLF, 0 | |
934 | CLA | |
935 | TAD (215 | |
936 | JMS I PC /PRINT A CHAR | |
937 | TAD (212 | |
938 | JMS I PC | |
939 | ISZ LINPAG /FULL PAGE? | |
940 | JMP I CRLF /NO | |
941 | CLA CMA | |
942 | DCA LINPAG | |
943 | / | |
944 | / NEW PAGE, WITH HEADING AND PAGE NO | |
945 | / | |
946 | TAD PASSNO /IF NOT LISTING PASS | |
947 | SMA SZA CLA | |
948 | TAD LISTSW /OR IF NOT LISTING, | |
949 | SNA CLA | |
950 | JMP I CRLF /DO NOT EJECT | |
951 | TAD RFORMF | |
952 | SZA /DON'T F.F. FIRST TIME | |
953 | JMS I PC /TOP OF PAGE | |
954 | TAD (214 | |
955 | DCA RFORMF | |
956 | JMS I (PRTXT /PRINT HEADING | |
957 | TITBUF-1 | |
958 | -TITLEN | |
959 | TAD LPAGE1 /FORM FEED COUNT | |
960 | JMS I (DECOUT | |
961 | TAD LPAGE2 | |
962 | SNA CLA | |
963 | JMP .+5 /NO SUB PAGE IF 0 | |
964 | TAD (255 | |
965 | JMS I PC | |
966 | TAD LPAGE2 | |
967 | JMS I (DECOUT | |
968 | ISZ LPAGE2 | |
969 | TAD (215 /FOR BH | |
970 | JMS I PC | |
971 | TAD (212 | |
972 | JMS I PC | |
973 | TAD (-71 /RESET LINE COUNTER | |
974 | DCA LINPAG | |
975 | JMP CRLF+1 /GIVE ANOTHER CRLF | |
976 | RFORMF, 0 | |
977 | / | |
978 | / PRINT TEXT | |
979 | / | |
980 | PRTXT, 0 | |
981 | TAD I PRTXT | |
982 | DCA X13 | |
983 | ISZ PRTXT | |
984 | TAD I PRTXT | |
985 | DCA PRTTMP | |
986 | ISZ PRTXT | |
987 | TAD I X13 | |
988 | JMS PRINT2 | |
989 | ISZ PRTTMP | |
990 | JMP .-3 | |
991 | JMP I PRTXT | |
992 | PRTTMP= PRNTLN | |
993 | / | |
994 | PRINT2, 0 | |
995 | DCA P2 | |
996 | TAD P2 | |
997 | JMS I [R6R | |
998 | JMS P1 | |
999 | TAD P2 | |
1000 | JMS P1 | |
1001 | JMP I PRINT2 | |
1002 | / | |
1003 | P1, 0 | |
1004 | AND [77 | |
1005 | SNA | |
1006 | JMP .+4 /PRINT ZERO AS BLANK | |
1007 | TAD (-40 /TEST ABOVE OR BELOW 300 | |
1008 | SPA | |
1009 | TAD [100 /ABOVE, MAKE 301 TO 337 | |
1010 | TAD [240 /IF BELOW, MAKE 240 TO 277 | |
1011 | JMS I PC /PRINT IT, WHATEVER IT IS | |
1012 | JMP I P1 | |
1013 | \f/ | |
1014 | TTYOUT, 0 | |
1015 | TLS | |
1016 | TSF | |
1017 | JMP .-1 | |
1018 | TTYCLA, JMS I (CKCTC /CHECK FOR ^C - AC CONTAINS DIFFERENCE | |
1019 | TAD (-14 /CTRL/O | |
1020 | SZA CLA | |
1021 | JMP I TTYOUT | |
1022 | TAD .+2 | |
1023 | DCA TTYOUT+1 | |
1024 | JMP I TTYOUT | |
1025 | / | |
1026 | P2, 0 | |
1027 | / | |
1028 | IFZERO RALF < | |
1029 | TXLNK, TEXT " LINKS" | |
1030 | TXLLN= .-TXLNK > | |
1031 | IFNZRO RALF < | |
1032 | TXABR, TEXT " ABS REFS" | |
1033 | TXALN= .-TXABR > | |
1034 | PAGE | |
1035 | \f/ | |
1036 | / GET AND EVALUATE AN EXPRESSION | |
1037 | / | |
1038 | EXPR, 0 /GET EXPRESSION | |
1039 | DCA EXPVAL /ZERO EXPR VALUE | |
1040 | DCA EXPVAL+1 | |
1041 | DCA EXPVAL+2 | |
1042 | CLA IAC | |
1043 | DCA EXPDEF /AND TYPE | |
1044 | CLA IAC /SET EXPR SWITCH TO NO EXPR | |
1045 | DCA EXPSW | |
1046 | DCA FPP2WD /SET FORCE SWITCH OFF | |
1047 | CLA IAC /SET LASTOP TO + | |
1048 | DCA LASTOP | |
1049 | IFZERO RALF < | |
1050 | JMS I (CHKLIT /GO CHECK FOR LITERAL> | |
1051 | JMS I (GETSGN /IGNORE +, BUMP LASTOP IF - | |
1052 | SYMBOL, JMS I [GETNAM /NOW PICK UP NAME | |
1053 | JMP NOSYM /NONE, TRY OTHER | |
1054 | JMS I [LOOKUP /LOOK IT UP | |
1055 | JMP UNDEF /A NEW ONE | |
1056 | IFZERO RALF < | |
1057 | JMP ADR /YES > | |
1058 | IFNZRO RALF < | |
1059 | CLL RAR | |
1060 | SNA | |
1061 | JMP ADR | |
1062 | SCTN, TAD I LTEMP /GET TYPE | |
1063 | AND (40 /FORCE BIT | |
1064 | SZA CLA | |
1065 | ISZ FPP2WD /SET FORCE EXPR SW | |
1066 | TAD I X10 /GET ESD FROM SYMBOL | |
1067 | AND [7770 /ESD ONLY | |
1068 | DCA WORD1 /INTERNALLY, SYMBOL VAL IS ZERO | |
1069 | JMP CLR2 /SO CLEAR WORD 2> | |
1070 | \fNOTDOT, TAD (256-242 /IS IT DBL QUOTE? | |
1071 | SZA CLA | |
1072 | JMP ENDEXP | |
1073 | ISZ NCHARS /IS THERE ANOTHER CHAR? | |
1074 | JMP ISQUOT /YES, USE IT | |
1075 | ENDEXP, JMS I [BACK1 /PUT IT BACK | |
1076 | TAD EXPSW /WAS THERE ANY EXPRESSION AT ALL? | |
1077 | SZA CLA | |
1078 | JMP BAD /NO, DON'T SKIP | |
1079 | IFZERO RALF < | |
1080 | TAD LITRL /WAS IT A LITERAL REF? | |
1081 | SZA CLA | |
1082 | JMS I (CRLIT /YES, STICK IT IN THE POOL> | |
1083 | TAD LASTOP /TRAILING OPERATOR? | |
1084 | SNA | |
1085 | JMP OKEXP /NO, ALL IS FINE | |
1086 | CLL RAR /IF PLUS OPERATOR | |
1087 | TAD XINCR /AND THATS LEGAL | |
1088 | SNA CLA | |
1089 | OKEXP, ISZ EXPR /GOOD EXPR, BUMP RETURN | |
1090 | BAD, JMS CKCTC | |
1091 | CLA | |
1092 | JMP I EXPR /AND RETURN | |
1093 | / | |
1094 | NOSYM, JMS I (NUMBER /LOOK FOR A NUMBER | |
1095 | JMP ADREXP /USE NUMBER | |
1096 | JMS I [GETCHR /NOT A NUMBER, GET A CHAR | |
1097 | JMP ENDEXP+1 /NONE LEFT, END | |
1098 | TAD (-256 /IS IT "." ? | |
1099 | SZA | |
1100 | JMP NOTDOT /NO, TRY FOR QUOTE | |
1101 | TAD LOCTR1 /THIS WAS LOC SYMBOL | |
1102 | DCA WORD1 /PUT VALUE INTO WORD1,2 | |
1103 | TAD LOCTR2 | |
1104 | JMP CLR2 /AND USE VALUE | |
1105 | ISQUOT, DCA WORD1 | |
1106 | TAD I CHRPTR | |
1107 | JMP CLR2 | |
1108 | CKCTC, 0 | |
1109 | CLA | |
1110 | KSF /IF NOTHING AT THE KEYBOARD, | |
1111 | JMP I CKCTC /RETURN | |
1112 | TAD [200 | |
1113 | KRS /ELSE, LOOK AT IT | |
1114 | TAD (-203 /IS IT CTRL/C? | |
1115 | SNA | |
1116 | JMP I [7600 /GO TO MOMMA | |
1117 | JMP I CKCTC | |
1118 | \fADR, TAD I LTEMP /CHECK FORCE BIT FOR THIS SYMBOL | |
1119 | AND (40 | |
1120 | SZA CLA | |
1121 | ISZ FPP2WD /AND SET SWITCH IF BIT ON | |
1122 | TAD I X10 /GET FIRST WORD OF VALUE | |
1123 | ONE, DCA WORD1 /SINGLE WORD SYMBOL, HIGH=0 | |
1124 | TAD I X10 /GET REST OF SYMBOL | |
1125 | CLR2, DCA WORD2 | |
1126 | CDF FLD0 /FIX FIELD | |
1127 | ADREXP, DCA EXPSW /KILL FIRST TIME SWITCH | |
1128 | TAD LASTOP /PICK UP LAST OPERATOR | |
1129 | TAD ADROP /MAKE A JMP I | |
1130 | DCA .+1 | |
1131 | 0 /DO IT | |
1132 | ADROP, JMP I . | |
1133 | ADRADD | |
1134 | ADRSUB | |
1135 | ADRMUL | |
1136 | ADRDIV | |
1137 | ADRAND | |
1138 | ADROR | |
1139 | ADROR | |
1140 | \fUNDEF, TAD FPPSWT /IS THIS AN FPP ADDR ? | |
1141 | SNA CLA | |
1142 | JMP .+5 /NO, SKIP AROUND | |
1143 | TAD I LTEMP /TURN ON FORCE BIT | |
1144 | AND (7737 /FOR THIS SYMBOL | |
1145 | TAD (40 | |
1146 | DCA I LTEMP | |
1147 | DCA EXPDEF /SET TYPE TO UNDEFINED | |
1148 | CDF FLD0 /FIX FIELD | |
1149 | DCA EXPSW /KILL FIRST TIME SWITCH | |
1150 | JMS I [ERMSG | |
1151 | 2523 /*US* | |
1152 | OPR8R, TAD (OPR8RS-1 /SET POINTER | |
1153 | DCA X11 /TO OPERATOR TABLE | |
1154 | DCA LASTOP /ZERO LASTOP | |
1155 | JMS I [GETCHR /GET CHAR | |
1156 | JMP ENDEXP+1 /NONE, DONE | |
1157 | DCA EXTMP /SAVE IT | |
1158 | FINDOP, ISZ LASTOP | |
1159 | TAD I X11 /GET NEXT LIST ENTRY | |
1160 | SNA | |
1161 | JMP NOOPR /ZERO IS END OF LIST | |
1162 | TAD EXTMP /COMPARE | |
1163 | SZA CLA | |
1164 | JMP FINDOP /LOOP | |
1165 | JMP SYMBOL /LOOK FOR OPERAND | |
1166 | NOOPR, DCA LASTOP /NO MATCH FOUND | |
1167 | JMP ENDEXP /PUT IT BACK | |
1168 | PAGE | |
1169 | \fADRADD, IFNZRO RALF < | |
1170 | TAD WORD1 | |
1171 | AND [7770 /IF THIS SYMBOL IS RELOCATABLE, | |
1172 | SZA CLA /CHECK FOR EXPR VALIDITY | |
1173 | JMS I (RELERR > | |
1174 | TAD EXPVAL+2 /ADD FOR 15 BIT ADDRESS | |
1175 | CLL /ZERO LINK | |
1176 | TAD WORD2 /ADD LOW WORDS | |
1177 | DCA EXPVAL+2 /SAVE RESULT | |
1178 | RAL /PUT CARRY INTO BIT 11 | |
1179 | TAD WORD1 /ORDER WORDS | |
1180 | JMP ADRASX /LOOK FOR OPERATOR | |
1181 | ADRSUB, IFNZRO RALF < | |
1182 | TAD WORD1 /IF SYMBOL IS RELOCATABLE | |
1183 | AND [7770 /WE MUST COMPARE SECTIONS | |
1184 | CIA /IF EQUAL, EXPR BECOMES ABSOLUTE | |
1185 | SNA /ELSE, EXPR IS ILLEGAL | |
1186 | JMP .+5 /OK, USE EXPVAL ESD | |
1187 | JMS I (RELERR /COMPARE: AC DELIBERATELY NON-ZERO | |
1188 | TAD EXPVAL+1 | |
1189 | AND [7 /IF WORD RELOCATABLE, EXP IS ABS | |
1190 | DCA EXPVAL+1 > | |
1191 | TAD WORD2 /SUBTR LOW 12 BITS | |
1192 | CLL CML CIA | |
1193 | TAD EXPVAL+2 | |
1194 | DCA EXPVAL+2 /SAVE LOW HALF | |
1195 | RAL | |
1196 | TAD WORD1 /SUBTRACT HIGH HALF | |
1197 | CIA | |
1198 | AND [7 /DO NOT SUBTR ESD'S | |
1199 | ADRASX, TAD EXPVAL+1 | |
1200 | AND (7767 /PREVENT CARRY INTO BIT 8 | |
1201 | ADRASY, DCA EXPVAL+1 /SAVE HIGH HALF | |
1202 | JMP I (OPR8R /GET OPERATOR | |
1203 | /INDXX HERE FOR FLAP | |
1204 | IFZERO RALF < | |
1205 | / SET BASE AND INDEX LOCS | |
1206 | INDXX, CLA STL RTL /INDXR MUST JUST FOLLOW BASER | |
1207 | BASEX, TAD (BASER-1 /POINT TO VALUE TO BE SET | |
1208 | DCA X12 /HOPEFULLY UNUSED XR | |
1209 | JMS I (ADRGET /COLLECT EXPRESSION | |
1210 | TAD EXPVAL+1 | |
1211 | DCA I X12 /HIGH ORDER AND ESD | |
1212 | TAD EXPVAL+2 | |
1213 | DCA I X12 /LOW ORDER | |
1214 | JMP I [NEXTST > | |
1215 | \fADRAND, TAD WORD1 /AND | |
1216 | AND EXPVAL+1 /HIGH | |
1217 | AND [7 /3 BITS | |
1218 | DCA EXPVAL+1 /HALF | |
1219 | TAD WORD2 /THEN | |
1220 | AND EXPVAL+2 /LOW | |
1221 | JMP ADRAOX | |
1222 | ADROR, TAD WORD1 /OR IS PERFORMED BY | |
1223 | CMA /SETTING THE BITS | |
1224 | AND EXPVAL+1 /THAT ARE ON IN B AND NOT ON IN A | |
1225 | TAD WORD1 /AND THEN SETTING THE BITS | |
1226 | AND [7 | |
1227 | DCA EXPVAL+1 /THAT ARE ON IN A | |
1228 | TAD WORD2 | |
1229 | CMA | |
1230 | AND EXPVAL+2 | |
1231 | TAD WORD2 | |
1232 | ADRAOX, DCA EXPVAL+2 | |
1233 | IFNZRO RALF < | |
1234 | JMS I (NOREL /**> | |
1235 | JMP I (OPR8R /GET NEXT OPERATOR | |
1236 | / | |
1237 | \fADRMUL, TAD WORD2 /**RL CODE | |
1238 | CIA | |
1239 | DCA EXPVAL+1 /MULT BY | |
1240 | TAD EXPVAL+2 /REPEATED ADDITIONS | |
1241 | ISZ EXPVAL+1 | |
1242 | JMP .-2 | |
1243 | JMP ADRAOX | |
1244 | ADRDIV, DCA WORD1 | |
1245 | DCA EXPVAL+1 | |
1246 | TAD WORD2 | |
1247 | SNA CLA | |
1248 | JMP DIVERR | |
1249 | TAD EXPVAL+2 | |
1250 | CIA CLL | |
1251 | TAD WORD2 | |
1252 | SZL | |
1253 | JMP .+3 /DIVIDE BY | |
1254 | ISZ WORD1 /COUNTING SUBTRACTIONS | |
1255 | JMP .-4 | |
1256 | CLA | |
1257 | TAD WORD1 | |
1258 | JMP ADRAOX | |
1259 | \fDIVERR, JMS I [ERMSG | |
1260 | 0626 /*DV* | |
1261 | JMP I (OPR8R /CONTINUE | |
1262 | \fPDPOPR, TAD CHRPTR | |
1263 | DCA CPTMP | |
1264 | TAD NCHARS | |
1265 | DCA NCTMP | |
1266 | JMS I [GETNAM /LOOK FOR ANOTHER MICRO-INST | |
1267 | JMP TRYEXP /NONE | |
1268 | TAD (33 /USE INTERNAL TABLE | |
1269 | JMS I [FIND /IS IT THERE ? | |
1270 | JMP TRYEXP /NO | |
1271 | TAD (-PDPOP /IS IT AN OPERATE ? | |
1272 | SZA CLA | |
1273 | JMP TRYEXP /NO | |
1274 | TAD I X10 /GET VALUE | |
1275 | CDF FLD0 | |
1276 | DCA EXPVAL+2 | |
1277 | PDPOR, TAD EXPVAL+2 | |
1278 | CMA /OR THEM TOGETHER | |
1279 | AND OPCODE | |
1280 | TAD EXPVAL+2 | |
1281 | DCA OPCODE | |
1282 | JMS I [GETCHR /MORE CHARS ? | |
1283 | JMP I (FPPS3 /NO-DONE | |
1284 | TAD [-240 /BLANK ? | |
1285 | SNA CLA | |
1286 | JMP PDPOPR /YES-PROCESS NEXT | |
1287 | JMP I (BADEXP | |
1288 | TRYEXP, CDF FLD0 | |
1289 | TAD CPTMP | |
1290 | DCA CHRPTR | |
1291 | TAD NCTMP | |
1292 | DCA NCHARS | |
1293 | ISZ NCTMP | |
1294 | SKP | |
1295 | JMP I (FPPS3 | |
1296 | JMS I [EXPR | |
1297 | JMP I (BADEXP | |
1298 | JMP PDPOR | |
1299 | TXSYM, TEXT " SYMBOLS," | |
1300 | TXSLN=.-TXSYM | |
1301 | PAGE | |
1302 | \f IFZERO RALF < | |
1303 | / | |
1304 | / LITERAL THINGS | |
1305 | / | |
1306 | CHKLIT, 0 /CHECK FOR LITERAL | |
1307 | DCA PAGENO /ZERO PAGE NUMBER | |
1308 | DCA LITRL | |
1309 | JMS I [GETCHR /GET CHARACTER | |
1310 | JMP I CHKLIT /NO LITERAL | |
1311 | TAD (-250 /CHECK FOR ( | |
1312 | SNA | |
1313 | ISZ PAGENO /CURRENT PAGE LITERAL | |
1314 | SZA /SKIP IF ALREADY ZERO | |
1315 | TAD (-63 /CHECK FOR [ | |
1316 | SNA | |
1317 | ISZ LITRL /SET SWITCH | |
1318 | SZA CLA | |
1319 | JMS I [BACK1 /PUT BACK NON ([ | |
1320 | JMP I CHKLIT | |
1321 | / | |
1322 | / CREATE A LINK FOR OFF-PAGE REFERENCE | |
1323 | / | |
1324 | MAKLNK, TAD (THSPAG /PROPER RETURN ADDR | |
1325 | DCA CRLIT | |
1326 | TAD OPCODE /SET INDIRECT BIT | |
1327 | TAD (400 | |
1328 | DCA OPCODE | |
1329 | CLA IAC | |
1330 | DCA PAGENO /SET INDICATOR | |
1331 | ISZ LINKS /COUNT ANOTHER LINK GENERATED | |
1332 | ISZ LINKSW /SET SWITCH FOR APOSTROPHE OUTPUT | |
1333 | JMP NOTP0 | |
1334 | CRLIT, 0 /CREATE LITERAL | |
1335 | /VALUE:EXPVAL, IN PAGE:PAGENO | |
1336 | TAD PAGENO /CHECK FOR PAGE 0 | |
1337 | SNA CLA | |
1338 | JMP ISP0 /PAGE 0 LITERAL | |
1339 | NOTP0, TAD (CPLBUF /SET PTR TO LITERAL BUFFER | |
1340 | DCA LITBAS | |
1341 | TAD LOCTR2 /CHECK FOR LIT BUFFER FULL | |
1342 | AND [100 | |
1343 | SNA CLA | |
1344 | JMP DOLIT-1 /USE 77 AS LIMIT | |
1345 | TAD LOCTR2 | |
1346 | AND [177 | |
1347 | JMP DOLIT /USE CURRENT ADDR AS LIMIT | |
1348 | \fISP0, TAD (P0LBUF /USE PAGE 0 LIT BUFFER | |
1349 | DCA LITBAS | |
1350 | TAD [77 /ASSUME FIRST 64 WORDS USED | |
1351 | DOLIT, DCA NWUSED | |
1352 | TAD PAGENO /GET POINTER TO | |
1353 | TAD [P0LIT /LITERAL BOUNDARY | |
1354 | DCA XPAGE | |
1355 | TAD I XPAGE /DISPLACEMENT OF LIT BUFR - 1 | |
1356 | DCA LITPTR /INTO LITPTR | |
1357 | NOTIT, TAD LITPTR /POINTER+SIZE | |
1358 | TAD (-177 /SHOULD BE LESS THAN 177 | |
1359 | SMA CLA | |
1360 | JMP NEWLIT /ENTER NEW LITERAL | |
1361 | TAD LITPTR /NOW GET POINTER | |
1362 | TAD LITBAS /TO TABLE | |
1363 | DCA X11 /FOR COMPARISON | |
1364 | ISZ LITPTR /INCREMENT POINTER | |
1365 | TAD I X11 /GET WORD OF LITERAL | |
1366 | CIA | |
1367 | TAD EXPVAL+2 /COMPARE PROTOTYPE | |
1368 | SZA CLA | |
1369 | JMP NOTIT /NOT IT, SLIDE POINTER AND RETRY | |
1370 | LITADR, TAD PAGENO /PAGE 0 ? | |
1371 | SZA CLA | |
1372 | TAD LOCTR2 /NO, CURRENT PAGE, GET ADDRESS | |
1373 | AND [7600 | |
1374 | TAD LITPTR /PLUS PAGE DISPLACEMENT | |
1375 | DCA EXPVAL+2 /INTO VALUE | |
1376 | TAD LOCTR1 | |
1377 | RETLIT, DCA EXPVAL+1 | |
1378 | JMP I CRLIT | |
1379 | \fNEWLIT, CLA CMA | |
1380 | TAD I XPAGE /MOVE LITERAL BOUNDARY DOWN | |
1381 | DCA X10 /ADDRESS OF NEW LITERAL | |
1382 | TAD NWUSED /CHECK FOR PAGE OVERFULL | |
1383 | CIA | |
1384 | TAD X10 | |
1385 | SMA CLA | |
1386 | JMP .+5 /NOT FULL | |
1387 | JMS I [ERMSG /*PO* | |
1388 | 2017 | |
1389 | DCA EXPVAL+2 /ZERO ADDRESS | |
1390 | JMP RETLIT | |
1391 | TAD X10 | |
1392 | DCA I XPAGE | |
1393 | TAD I XPAGE /SET UP POINTER FOR MOVE | |
1394 | TAD LITBAS | |
1395 | DCA X10 | |
1396 | TAD EXPVAL+2 /MOVE LITERAL IN | |
1397 | DCA I X10 | |
1398 | TAD I XPAGE /SET UP LITERAL ADDRESS | |
1399 | IAC | |
1400 | DCA LITPTR | |
1401 | JMP LITADR /RETURN LITERAL ADDRESS | |
1402 | LITBAS, 0 | |
1403 | NWUSED, 0 | |
1404 | LITPTR, 0 | |
1405 | PAGENO, 0 | |
1406 | XPAGE, 0 | |
1407 | PAGE /> | |
1408 | \f/ | |
1409 | / FIND SYMBOL TABLE ENTRY | |
1410 | / FOR THE SYMBOL IN BUCKET AND NAME 1, 2, 3 | |
1411 | / SKIP IF FOUND WITH TYPE IN AC | |
1412 | / | |
1413 | FIND, 0 /SYMBOL TABLE LOOKUP | |
1414 | TAD BUCKET /GET BUCKET ADDRESS | |
1415 | CDF FLD1 /GO TO FIELD 1 | |
1416 | LOOK, DCA OLDN3 /THIS IS PTR OF PREV ENTRY | |
1417 | TAD I OLDN3 /THIS IS ADR OF NEXT ENTRY | |
1418 | SNA /IF ZERO, THEN | |
1419 | JMP I FIND /IT AIN'T HERE | |
1420 | DCA X10 /SAVE NEXT NAME PTR | |
1421 | TAD NAME1 /COMPARE NAMES | |
1422 | CIA CLL | |
1423 | TAD I X10 /WORD 1 | |
1424 | SZA CLA | |
1425 | JMP NOTSAM | |
1426 | TAD NAME2 | |
1427 | CIA CLL | |
1428 | TAD I X10 /WORD2 | |
1429 | SZA CLA | |
1430 | JMP NOTSAM | |
1431 | TAD NAME3 | |
1432 | CIA CLL | |
1433 | TAD I X10 /COMPARE LAST CHAR | |
1434 | AND [7700 /HIGH HALF ONLY | |
1435 | SZA CLA | |
1436 | JMP NOTSAM | |
1437 | ISZ FIND /IF FOUND BUMP RETURN | |
1438 | TAD X10 | |
1439 | DCA LTEMP /ADDR OF TYPE WORD | |
1440 | TAD I LTEMP /GET TYPE INTO AC | |
1441 | AND [37 /WITHOUT FORCE BIT | |
1442 | JMP I FIND /RETURN | |
1443 | NOTSAM, SZL CLA /IS NAME 1,2,3 .LT. ENTRY | |
1444 | JMP I FIND /YES, IT ISN'T HERE | |
1445 | TAD I OLDN3 /GET ADDR OF LINK INTO AC | |
1446 | JMP LOOK /LOOP | |
1447 | \f/ | |
1448 | / FIND SYMBOL, OR IF NOT THERE, CREATE ENTRY FOR IT | |
1449 | / | |
1450 | LOOKUP, 0 | |
1451 | JMS FIND | |
1452 | JMP .+4 | |
1453 | SZA | |
1454 | ISZ LOOKUP /SKIP RETURN IF DEFINED | |
1455 | JMP I LOOKUP /RETURN TYPE CODE | |
1456 | TAD I OLDN3 /GET FORWARD LINK TO | |
1457 | DCA I NEXT /NEXT ENTRY INTO NEW ENTRY | |
1458 | TAD NEXT /PUT FORWARD LINK TO NEW | |
1459 | DCA I OLDN3 /ENTRY INTO PREVIOUS ENTRY | |
1460 | TAD NAME1 /PUT IN NAME | |
1461 | DCA I NEXT | |
1462 | TAD NAME2 | |
1463 | DCA I NEXT | |
1464 | TAD NAME3 | |
1465 | DCA I NEXT | |
1466 | TAD NEXT /X10=NEXT | |
1467 | DCA X10 | |
1468 | TAD NEXT /LTEMP=NEXT | |
1469 | DCA LTEMP | |
1470 | DCA I NEXT /INITIAL VALUE IS ZERO | |
1471 | DCA I NEXT | |
1472 | TAD NEXT /CHECK FOR TABLE FULL | |
1473 | CLL | |
1474 | TAD [200 /GONNA OVERFLO PS8? | |
1475 | SNL CLA | |
1476 | JMP I LOOKUP /NO PROBLEMS, RETURN (NO SKIP) | |
1477 | JMS I [ERMSG1 | |
1478 | 2324 /*ST* | |
1479 | \f/ | |
1480 | / COLLECT AN INTEGER IN THE CURRENT RADIX | |
1481 | / | |
1482 | NUMBER, 0 /GET INTEGER NUMBER (NO SIGN) | |
1483 | DCA NSWTCH /CLEAR SWITCH | |
1484 | DCA NOFLO /CLEAR OVRFLO SW | |
1485 | DCA WORD1 /CLEAR 24 BIT NUMBER | |
1486 | DCA WORD2 | |
1487 | NUMLUP, JMS I (DIGIT | |
1488 | JMP NODGT /TOO BAD | |
1489 | DCA NUM /YES, SAVE IT | |
1490 | TAD WORD1 /SAVE CURRENT VALUE | |
1491 | DCA NUM1 /OF NUMBER | |
1492 | TAD WORD2 | |
1493 | DCA NUM2 | |
1494 | JMS SHIFT /SHIFT WORD1,2, LEFT 1 (MULT BY 2) | |
1495 | JMS SHIFT /DO IT AGAIN (MULT BY 4) | |
1496 | TAD RADIX /LOOK AT RADIX (1=DECIMAL) | |
1497 | SNA CLA | |
1498 | JMP OCTNUM /ITS OCTAL | |
1499 | CLL /DECIMAL, ADD IN NUMBER | |
1500 | TAD NUM2 | |
1501 | TAD WORD2 /THUS MULTIPLYING BY 5 | |
1502 | DCA WORD2 | |
1503 | RAL | |
1504 | TAD NUM1 | |
1505 | TAD WORD1 | |
1506 | DCA WORD1 | |
1507 | JMP ADDDGT | |
1508 | OCTNUM, TAD NUM | |
1509 | AND [7770 /CHECK FOR 8 OR 9 | |
1510 | SZA CLA | |
1511 | ISZ NOFLO /SET ERROR FLAG | |
1512 | ADDDGT, JMS SHIFT /SHIFT LEFT 1 AGAIN, THUS | |
1513 | TAD WORD2 /MULTIPLYING BY 8 OR 10 | |
1514 | CLL /THEN ADD IN NEW DIGIT | |
1515 | TAD NUM | |
1516 | DCA WORD2 | |
1517 | RAL | |
1518 | TAD WORD1 | |
1519 | DCA WORD1 | |
1520 | SZL /BEWARE OF OVERFLO | |
1521 | ISZ NOFLO | |
1522 | JMP NUMLUP /LOOP | |
1523 | \fNODGT, TAD NSWTCH /WAS THERE A NUMBER | |
1524 | SNA CLA | |
1525 | ISZ NUMBER /NO, SKIP | |
1526 | TAD WORD1 | |
1527 | AND [7770 /CHECK FOR MORE THAN 15 BITS | |
1528 | SNA | |
1529 | TAD NOFLO /OR GROSS OVERFLOW | |
1530 | SNA CLA | |
1531 | JMP I NUMBER /ALL GREEN | |
1532 | JMS I [ERMSG | |
1533 | 1605 /*NE* | |
1534 | JMP I NUMBER /RETURN | |
1535 | NOFLO= LOOKUP /ZERO IF NO ERRORS | |
1536 | NUM= FIND | |
1537 | NUM1= EXTMP | |
1538 | NUM2= EXTMP2 | |
1539 | NSWTCH, /ZERO IF NO DIGITS | |
1540 | SHIFT, 0 /SHIFT DOUBLE WORD LEFT 1 | |
1541 | TAD WORD2 | |
1542 | CLL RAL | |
1543 | DCA WORD2 | |
1544 | TAD WORD1 | |
1545 | RAL | |
1546 | DCA WORD1 | |
1547 | SZL /IF BIT SHIFTED FROM HI WORD, | |
1548 | ISZ NOFLO /SET ERROR FLAG | |
1549 | JMP I SHIFT | |
1550 | PAGE | |
1551 | \f/ | |
1552 | / BACK UP GETCHR POINTERS, | |
1553 | / WE DON'T WANT THIS ONE | |
1554 | / | |
1555 | BACK1, 0 | |
1556 | CLA CMA /BACKUP COUNT | |
1557 | TAD NCHARS | |
1558 | DCA NCHARS | |
1559 | CLA CMA /AND POINTER | |
1560 | TAD CHRPTR | |
1561 | DCA CHRPTR | |
1562 | JMP I BACK1 | |
1563 | / | |
1564 | / GET NEXT CHAR FROM LINE BUFFER | |
1565 | / FOR ASSEMBLY PURPOSES ONLY | |
1566 | / SKIP UNLESS END OF LINE (CR, ;, OR /) | |
1567 | / | |
1568 | GETCHR, 0 | |
1569 | JMS GETAC | |
1570 | GETSKP, ISZ GETCHR /SKIP RETURN | |
1571 | JMP I GETCHR | |
1572 | BLANK, JMS GETAC /COME HERE IF BALNK OR TAB | |
1573 | TAD (-257 /END OF LINE ON SLASH AFTER BLANK | |
1574 | SNA CLA | |
1575 | JMP GETCND | |
1576 | JMS BACK1 /PUT IT BACK | |
1577 | TAD [240 /AND RETURN A SINGLE BLANK | |
1578 | JMP GETSKP /SKIP OUT | |
1579 | SEMICL, ISZ SCSWT | |
1580 | JMS BACK1 /PUT BACK SEMI COLON | |
1581 | JMP I GETCHR | |
1582 | GETAC, 0 | |
1583 | ISZ NCHARS /END OF LINE? | |
1584 | JMP .+4 /NO, GET IT | |
1585 | GETCND, CLA CMA /YES, RESET IN CASE OF | |
1586 | DCA NCHARS /ANOTHER CALL | |
1587 | JMP I GETCHR /RETURN END OF LINE | |
1588 | TAD I CHRPTR /PICK UP NEXT | |
1589 | TAD [-240 /CHECK FOR BLANK | |
1590 | SZA | |
1591 | TAD (240-211 /OR TAB | |
1592 | SNA | |
1593 | JMP BLANK /THEY GET SPECIAL HANDLING | |
1594 | TAD (211-273 /LOOKOUT FOR SEMICOLON | |
1595 | SNA | |
1596 | JMP SEMICL /ALSO SPECIAL | |
1597 | TAD (273-276 /IGNORE CLOSE ANGLE BRACKET | |
1598 | SNA | |
1599 | JMP GETAC+1 /GET ANOTHER | |
1600 | TAD (276 /ELSE, RESTORE CHAR | |
1601 | JMP I GETAC /AND PASS IT BACK | |
1602 | \f/ | |
1603 | / COLLECT A SYMBOL IN BUCKET, NAME 1,2, & 3 | |
1604 | / NO SKIP ON RETURN IF NO SYMBOL | |
1605 | / | |
1606 | GETNAM, 0 | |
1607 | DCA NAME1 /CLEAR SYMBOL SPACE | |
1608 | DCA NAME2 | |
1609 | DCA NAME3 | |
1610 | JMS LETTER /GET A LETTER | |
1611 | JMP ISSYM | |
1612 | JMS GETCHR /CHECK FOR # | |
1613 | JMP I GETNAM /NOPE | |
1614 | TAD (-"# | |
1615 | SNA CLA | |
1616 | JMP ISSYM | |
1617 | JMS BACK1 | |
1618 | JMP I GETNAM | |
1619 | ISSYM, DCA BUCKET | |
1620 | ISZ GETNAM /ONE LETTER DOTH A SYMBOL MAKE | |
1621 | JMS GNC /FRIENDLY LOCAL SUBR | |
1622 | JMS R6L | |
1623 | DCA NAME1 | |
1624 | JMS GNC | |
1625 | TAD NAME1 | |
1626 | DCA NAME1 | |
1627 | JMS GNC | |
1628 | JMS R6L | |
1629 | DCA NAME2 | |
1630 | JMS GNC | |
1631 | TAD NAME2 | |
1632 | DCA NAME2 | |
1633 | JMS GNC | |
1634 | JMS R6L | |
1635 | DCA NAME3 | |
1636 | JMS GNC /AFTER 6, WE IGNORE | |
1637 | SKP CLA | |
1638 | GNC, 0 | |
1639 | JMS LETTER | |
1640 | JMP I GNC /RETTURN LETTER | |
1641 | JMS DIGIT | |
1642 | JMP I GETNAM /EMPTY HANDED, RETURN TO CALLER | |
1643 | TAD (60 | |
1644 | JMP I GNC | |
1645 | \f/ | |
1646 | / IF NEXT CHAR IS A LETTER, RETURN 6 BITS | |
1647 | / IF NOT, REPLACE CHAR AND SKIP. | |
1648 | / | |
1649 | LETTER, 0 | |
1650 | JMS GETCHR | |
1651 | JMP NLETR /NO LETTER, SKIP | |
1652 | TAD (-333 | |
1653 | CLL CML | |
1654 | TAD (33 | |
1655 | SZA SNL /DON'T ALLOW 300 | |
1656 | JMP I LETTER | |
1657 | JMS BACK1 | |
1658 | NLETR, ISZ LETTER | |
1659 | JMP I LETTER | |
1660 | / | |
1661 | / IF NEXT CHAR IS A DIGIT (0-9) RETURN VALUE AND SKIP | |
1662 | / | |
1663 | DIGIT, 0 | |
1664 | JMS GETCHR | |
1665 | JMP I DIGIT | |
1666 | TAD (-272 | |
1667 | CLL | |
1668 | TAD (12 | |
1669 | SNL | |
1670 | JMP NDIGT | |
1671 | ISZ DIGIT | |
1672 | JMP I DIGIT | |
1673 | NDIGT, JMS BACK1 | |
1674 | JMP I DIGIT | |
1675 | / | |
1676 | R6L, 0 | |
1677 | CLL RTL | |
1678 | RTL | |
1679 | RTL | |
1680 | JMP I R6L | |
1681 | / | |
1682 | R6R, 0 | |
1683 | RTR | |
1684 | RTR | |
1685 | RTR | |
1686 | AND [77 | |
1687 | JMP I R6R | |
1688 | PAGE | |
1689 | \f/ | |
1690 | / BUILD AN INSTRUCTION | |
1691 | / | |
1692 | FIXOPC, 0 /COMBINE OPCODE PARTS | |
1693 | TAD XFLAG /CHECK INDEX SWITCH | |
1694 | SNA CLA | |
1695 | JMP ZRONDX /IF ZERO, NO INDEX REG | |
1696 | CLA CMA | |
1697 | TAD LASTOP /IF INDEX, CHECK FOR INCR | |
1698 | SNA CLA | |
1699 | TAD [100 /YES, PUT + BIT ON | |
1700 | TAD OPCODE /COMBINE WITH OPCODE | |
1701 | DCA OPCODE | |
1702 | TAD EXPVAL+2 /GET INDEX REG. EXPR | |
1703 | AND [7 /ONLY 3 BITS | |
1704 | CLL RTL /SHIFT INTO POSITION | |
1705 | RAL | |
1706 | ZRONDX, TAD OPCODE /ADD OPCODE | |
1707 | TAD (400 /TURN ON TYPE BIT | |
1708 | DCA OPCODE /SAVE OPCODE | |
1709 | JMP I FIXOPC /RETURN | |
1710 | / | |
1711 | OPR8RS, | |
1712 | -253 /PLUS | |
1713 | -255 /MINUS | |
1714 | -252 /STAR (MULTIPLY) ** | |
1715 | -257 /SLASH (DIVIDE) | |
1716 | -246 /AMPERSAND (AND) | |
1717 | -240 /SPACE (OR) | |
1718 | -241 /EXCLAMATION (OR) | |
1719 | 0 /END OF LIST | |
1720 | \f/ | |
1721 | / FATAL ERRORS | |
1722 | / | |
1723 | ERMSG1, 0 /PASS 1 (FATAL) MESSAGES | |
1724 | CDF | |
1725 | TAD I ERMSG1 /GET CODE | |
1726 | DCA .+3 | |
1727 | DCA PASSNO | |
1728 | JMS ERMSG /DO THE MSG THING | |
1729 | 0 | |
1730 | IFZERO RALF < | |
1731 | RETSYS, > | |
1732 | TSF /FINISH TYPING | |
1733 | JMP .-1 | |
1734 | JMP I [7600 /EXIT TO PS8 | |
1735 | / | |
1736 | / GENERAL GARBAGE TYPE ERRORS | |
1737 | / | |
1738 | ERMSG, 0 | |
1739 | CDF FLD0 /FIX FIELD | |
1740 | CLA /NO MESSAGE ON PASS 1 | |
1741 | TAD PASSNO | |
1742 | SMA SZA /IF PASS 3, OUTPUT LEADING CRLF | |
1743 | JMS I [CRLF | |
1744 | SPA CLA | |
1745 | JMP MSGDUN | |
1746 | TAD (5555 /MINUSES | |
1747 | JMS I [PRINT2 | |
1748 | TAD I ERMSG /2-CHAR CODE | |
1749 | JMS I [PRINT2 /PRINT THE MESSAGE | |
1750 | TAD (5555 | |
1751 | JMS I [PRINT2 | |
1752 | TAD PASSNO | |
1753 | SZA CLA | |
1754 | JMP .+4 | |
1755 | JMS I [PRINT2 | |
1756 | PLINE, JMS I (PRNTLN | |
1757 | JMS I [CRLF | |
1758 | ISZ ERRORS /BUMP COUNT | |
1759 | MSGDUN, ISZ ERMSG | |
1760 | JMP I ERMSG | |
1761 | \f/ | |
1762 | / OUTPUT DECIMAL | |
1763 | / SUPPRESS LEADING ZEROS | |
1764 | / PRINT "NO" INSTEAD OF "0" | |
1765 | / | |
1766 | DECOUT, 0 | |
1767 | SNA /ZERO IS SPECIAL | |
1768 | JMP DECNO /NO INSTEAD OF 0 | |
1769 | DCA OTEMP | |
1770 | DCA OCNT | |
1771 | JMS DEC2 /GET THOUSANDS | |
1772 | -1750 | |
1773 | JMS DEC2 /HUNDREDS | |
1774 | -144 | |
1775 | JMS DEC2 /TENS | |
1776 | -12 | |
1777 | TAD OTEMP /UNITS (NO ZERO SUPPRESS HERE) | |
1778 | JMS PDIG /PRINT LAST DIGIT | |
1779 | JMP I DECOUT /EASY, WHEN YOU KNOW HOW | |
1780 | / | |
1781 | DECNO, TAD (1617 /NO | |
1782 | JMS I [PRINT2 | |
1783 | JMP I DECOUT | |
1784 | / | |
1785 | / LAZY MAN'S DIVISION | |
1786 | / | |
1787 | DEC2, 0 | |
1788 | CDF FLD0 /JUST TO MAKE SURE | |
1789 | DEC3, CLA CLL | |
1790 | TAD OTEMP | |
1791 | SNA | |
1792 | JMP DEC4 | |
1793 | TAD I DEC2 /SUBTRACT DIVISOR | |
1794 | SNL /TOO MUCH? | |
1795 | JMP DEC4 /YES, STOP NOW | |
1796 | DCA OTEMP /NO, SAVE NEW REMAIN | |
1797 | ISZ OCNT /BUMP QUOTIENT | |
1798 | JMP DEC3 /DO IT AGAIN | |
1799 | DEC4, CLA | |
1800 | ISZ DEC2 /SKIP RETURN | |
1801 | TAD OCNT /CHECK FOR SIGNIFICANCE | |
1802 | SNA | |
1803 | JMP I DEC2 /NONE | |
1804 | JMS PDIG | |
1805 | CLA STL RAR /FORCE SIGNIFICANCE | |
1806 | DCA OCNT | |
1807 | JMP I DEC2 | |
1808 | \f/ | |
1809 | TENTH, -111 | |
1810 | 1463;1463;1463 | |
1811 | 1463;1463;1463 | |
1812 | TEN, 1 | |
1813 | PDIG, 0 | |
1814 | TAD P260 | |
1815 | JMS I PC | |
1816 | JMP I PDIG | |
1817 | P260, 260 | |
1818 | 5 | |
1819 | / | |
1820 | / OCTAL CONVERSION, THE HARD WAY | |
1821 | / | |
1822 | OCTOUT, 0 | |
1823 | DCA OTEMP | |
1824 | STL RAR /NO ZERO SUPPRESS | |
1825 | DCA OCNT | |
1826 | JMS DEC2 | |
1827 | -1000 | |
1828 | JMS DEC2 | |
1829 | -100 | |
1830 | JMS DEC2 | |
1831 | -10 | |
1832 | TAD OTEMP | |
1833 | JMS PDIG | |
1834 | JMP I OCTOUT | |
1835 | PAGE | |
1836 | \f/ | |
1837 | / OUTPUT ONE WORD | |
1838 | / | |
1839 | IFNZRO RALF < | |
1840 | / | |
1841 | / TEXT TYPE CODES: | |
1842 | TTABS= 0400 | |
1843 | TTORG= 1000 | |
1844 | TTREL= 1400 | |
1845 | / | |
1846 | OUTREL, DCA WRD /HOLD FIRST WORD | |
1847 | DCA LINKSW /CLEAR ABSOLUTE REF INDICATOR | |
1848 | TAD FPPADR /GET ESD CODE | |
1849 | RTR | |
1850 | RTR /RIGHT IN AC | |
1851 | AND [177 /STRIP TO ESD ONLY | |
1852 | SNA /CHECK FOR ABSOLUTE | |
1853 | JMP PUTABS | |
1854 | DCA FPPADR /SAVE ESD | |
1855 | TAD PASSNO /CHECK FOR PASS 2 | |
1856 | SZA CLA | |
1857 | JMP PRNTRL /IF NOT, TREAT NORMALLY | |
1858 | DCA ABSOP | |
1859 | CLA STL RTL | |
1860 | JMS I (FULCHK /ENSURE 3 WORDS LEFT | |
1861 | TAD FPPADR /GET ESD AGAIN | |
1862 | TAD (TTREL /INSERT CONTROL CODE | |
1863 | DCA I OUTPTR | |
1864 | TAD WRD /FIRST DATUM | |
1865 | DCA I OUTPTR | |
1866 | TAD FPPADR+1 | |
1867 | DCA I OUTPTR | |
1868 | JMS I (FULCHK /IS IT FULL? | |
1869 | JMS BMPLOC /TWO WORDS OUT | |
1870 | JMS BMPLOC /SO LOCCTR +2 | |
1871 | JMP I [NEXTST | |
1872 | PUTABS, ISZ ABREFS /COUNT IT | |
1873 | ISZ LINKSW /SET FLAG | |
1874 | PRNTRL, TAD WRD /GET FIRST WORD | |
1875 | JMS OUTWRD | |
1876 | TAD FPPADR+1 | |
1877 | JMS OUTWRD | |
1878 | JMP I [NEXTST > | |
1879 | \f/ | |
1880 | OUTWRD, 0 /OUTPUT ROUTINE | |
1881 | DCA WRD /SAVE WORD | |
1882 | IFZERO RALF < | |
1883 | TAD LOCTR2 /GET LOW 12 BITS OF LOCATION | |
1884 | JMS I [R6L | |
1885 | AND [37 /GET PAGE NUMBER (WITHIN FIELD) | |
1886 | DCA OTEMP /SAVE PAGE NUMBER | |
1887 | TAD OTEMP | |
1888 | SZA CLA /POINTER TO LITERAL POINTER | |
1889 | IAC | |
1890 | TAD [P0LIT | |
1891 | DCA OWTEMP | |
1892 | TAD LOCTR2 /GET CURRENT ADDRESS DISPLACEMENT | |
1893 | AND [177 | |
1894 | CIA /COMPARE WITH LITERAL BOUNDARY | |
1895 | TAD I OWTEMP | |
1896 | SMA CLA | |
1897 | JMP .+3 /NO PAGE OVER FLOW | |
1898 | JMS I [ERMSG | |
1899 | 2017 /*PO*> | |
1900 | TAD PASSNO /CHECK PASS | |
1901 | SZA | |
1902 | JMP PRNTST /ITS NOT PASS 2 | |
1903 | IFZERO RALF < | |
1904 | TAD WRD /NOW OUTPUT WORD | |
1905 | JMS I [R6R | |
1906 | JMS OOCHAR | |
1907 | TAD WRD | |
1908 | AND [77 | |
1909 | JMS OOCHAR > | |
1910 | IFNZRO RALF < | |
1911 | TAD ABSOP /CHECK FOR ALREADY IN ABS OUTPUT | |
1912 | SZA CLA | |
1913 | JMP INABS /NO PROBLEM | |
1914 | CLA IAC | |
1915 | JMS I (FULCHK | |
1916 | TAD (TTABS /SET ABS CONTROL CODE | |
1917 | DCA I OUTPTR | |
1918 | TAD OUTPTR /SAVE POINTER FOR FUTRUE REF | |
1919 | DCA ABSOP | |
1920 | INABS, ISZ I ABSOP /BUMP COUNT | |
1921 | TAD WRD | |
1922 | DCA I OUTPTR | |
1923 | JMS I (FULCHK /GOOD!> | |
1924 | \fPRNTST, SMA SZA CLA | |
1925 | TAD LISTSW /IS LIST ON ? | |
1926 | SNA CLA | |
1927 | JMP ENDOUT /NO, DONT PRINT | |
1928 | JMS I [CRLF /NEW LINE | |
1929 | TAD LOCTR1 /PRINT LOCATION COUNTER | |
1930 | AND [7 | |
1931 | JMS I (PDIG | |
1932 | TAD LOCTR2 /NEXT FOUR DIGITS | |
1933 | JMS I [OCTOUT | |
1934 | TAD [240 | |
1935 | JMS I PC | |
1936 | TAD WRD /NOW WORD | |
1937 | JMS I [OCTOUT | |
1938 | TAD LINKSW /LINK GENERATED ON THIS LINE? | |
1939 | SZA CLA | |
1940 | TAD (4700 /IF SO, GIVE APOSTROPHE SPACE | |
1941 | JMS I [PRINT2 | |
1942 | DCA LINKSW /CLEAR SW | |
1943 | JMS I (PRNTLN /PRINT LINE IF NECESSARY | |
1944 | ENDOUT, JMS BMPLOC /BUMP LOC CNTR | |
1945 | JMP I OUTWRD /RETURN | |
1946 | / | |
1947 | WRD, | |
1948 | BMPLOC, 0 | |
1949 | ISZ LOCTR2 /BUMP LOW ORDER | |
1950 | JMP I BMPLOC | |
1951 | CLA IAC | |
1952 | TAD LOCTR1 | |
1953 | AND (7767 /STOP CARRY INTO BIT 8 | |
1954 | DCA LOCTR1 | |
1955 | JMP I BMPLOC | |
1956 | \f IFZERO RALF < | |
1957 | / | |
1958 | / PUNCH CONTROL | |
1959 | / | |
1960 | NOPNCX, CLA IAC | |
1961 | ENPNCX, DCA PNCHOF | |
1962 | JMP I [NEXTST | |
1963 | / | |
1964 | / OUTPUT AN ORIGIN | |
1965 | / | |
1966 | PUTORG, 0 | |
1967 | TAD PASSNO /CHECK FOR PASS 2 | |
1968 | SZA CLA | |
1969 | JMP I PUTORG /ELSE FORGET IT | |
1970 | TAD LOCTR2 /OUTPUT FIRST CHAR | |
1971 | JMS I [R6R | |
1972 | TAD [100 | |
1973 | JMS OOCHAR /OUTPUT CHAR | |
1974 | TAD LOCTR2 /NOW LOWER HALF OF ORIGIN | |
1975 | AND [77 | |
1976 | JMS OOCHAR | |
1977 | JMP I PUTORG | |
1978 | OWTEMP, | |
1979 | CHAROO, 0 | |
1980 | OOCHAR, 0 /OUTPUT CHAR AND COMPUTE CHKSUM | |
1981 | DCA CHAROO | |
1982 | TAD PNCHOF /PUNCHING? | |
1983 | SZA CLA | |
1984 | JMP I OOCHAR /NOPE | |
1985 | TAD CHAROO | |
1986 | TAD CHKSUM | |
1987 | DCA CHKSUM | |
1988 | TAD CHAROO | |
1989 | JMS I [OCHAR | |
1990 | JMP I OOCHAR > | |
1991 | \f/ | |
1992 | / BEGIN NEXT PASS | |
1993 | / WITH APPROPRIATE THINGS RESET | |
1994 | / TO DEFAULT VALUES | |
1995 | / | |
1996 | RESET, JMS I (IOPEN /RE-SELECT FIRST INPUT FILE | |
1997 | TAD USR /EITHER 200 OR 7700 | |
1998 | SPA CLA /IS USR IN CORE? | |
1999 | JMP .+6 /NO | |
2000 | CIF 10 /YES, DISMISS IT | |
2001 | JMS I USR | |
2002 | 11 /USROUT | |
2003 | TAD [7700 | |
2004 | DCA USR /ITS GONE | |
2005 | IFNZRO RALF < | |
2006 | CLA STL RTL /COUNTING FROM 2, | |
2007 | DCA ESDNO /RESET ESD COUNT | |
2008 | JMS I (CLRSCT /ZERO ALL SECTION LENGTHS> | |
2009 | DCA ASMOF /ZERO CONDITIONAL SWITCH | |
2010 | DCA SCSWT /ZERO SEMICOLON SWITCH | |
2011 | TAD SYONLY /IF NOT SYM MAP ONLY | |
2012 | DCA LISTSW /FORCE LIST ENABLE | |
2013 | CLA IAC | |
2014 | DCA LPAGE1 | |
2015 | DCA LPAGE2 | |
2016 | CLA CMA | |
2017 | DCA LINPAG | |
2018 | IFZERO RALF < | |
2019 | TAD [177 | |
2020 | DCA P0LIT /RESET LITERAL BUFFER POINTERS | |
2021 | TAD [177 | |
2022 | DCA CPLIT | |
2023 | TAD [200 > | |
2024 | DCA LOCTR2 /LOCATION COUNTER | |
2025 | IFNZRO RALF < | |
2026 | TAD (20 > | |
2027 | DCA LOCTR1 | |
2028 | CLL CML RAR /4000 | |
2029 | DCA BASER /SET BASE BEYOND BELIEF | |
2030 | DCA INDXR | |
2031 | DCA INDXR+1 | |
2032 | DCA RADIX /RESET DEFAULT OCTAL | |
2033 | DCA ERRORS /ZERO ERROR COUNT | |
2034 | DCA LINKS | |
2035 | ISZ PASSNO /BUMP PASS NUMBER | |
2036 | JMP I (NEWLIN | |
2037 | JMP I (NEWLIN /DO NEXT PASS | |
2038 | PAGE | |
2039 | \f/ | |
2040 | / END OF A PASS | |
2041 | / | |
2042 | ENDX, IFZERO RALF < | |
2043 | DCA PNCHOF /RE-ENABLE PUNCH> | |
2044 | IFNZRO RALF < | |
2045 | JMS I (BORG /SET MAX LEN OF CURRENT SECT> | |
2046 | TAD PASSNO | |
2047 | SMA CLA /WHAT PASS WAS THIS? | |
2048 | JMP EOP2 /NOT THE FIRST | |
2049 | IFNZRO RALF < | |
2050 | TAD (INBUF-400 | |
2051 | DCA I (INBUFP /MOVE INPUT BUFFER OVER DMPESD> | |
2052 | TAD BFILE | |
2053 | SNA CLA | |
2054 | JMP START3 /NO BINARY, START PASS 3 | |
2055 | IFZERO RALF < | |
2056 | TAD [200 /START BIN OUT WITH L/T | |
2057 | JMS I [OCHAR | |
2058 | JMP I (RESET > | |
2059 | IFNZRO RALF < | |
2060 | JMP I (DMPESD /OUTPUT EXT SYM TABLE> | |
2061 | / | |
2062 | EOP2, IFZERO RALF < | |
2063 | CLA IAC /DUMP CURRENT PAGE LITERALS | |
2064 | JMS I (DMPLIT | |
2065 | JMS I (DMPLIT /THEN DUMP PAGE 0 LITERALS> | |
2066 | TAD PASSNO | |
2067 | SMA SZA CLA | |
2068 | JMP EOP3 /YES, PRINT SYMBOL TABLE | |
2069 | IFZERO RALF < | |
2070 | TAD CHKSUM /OUTPUT CHECKSUM | |
2071 | JMS I [R6R | |
2072 | JMS I [OCHAR | |
2073 | TAD CHKSUM | |
2074 | AND [77 | |
2075 | JMS I [OCHAR /LOWER HALF | |
2076 | TAD [200 /TRAILER CHAR | |
2077 | JMS I [OCHAR > | |
2078 | IFNZRO RALF < | |
2079 | DCA I OUTPTR /SET OUTPUT END INDICATOR> | |
2080 | JMS I (OCLOSE /CLOSE THE BINARY FILE | |
2081 | START3, DCA PASSNO /SKIP PASS TWO | |
2082 | JMS I (OOPEN /OPEN LISTING FILE | |
2083 | IFZERO RALF < | |
2084 | JMP NOP3 /NO LISTING, GIVE INFO ON TTY> | |
2085 | IFNZRO RALF < | |
2086 | JMP I (RETSYS > | |
2087 | TAD [OCHAR /CHANGE PRINT ROUTINE | |
2088 | DCA PC | |
2089 | JMP I (RESET /NO,RESET EVERYTHING | |
2090 | \f/ | |
2091 | / END OF LAST PASS | |
2092 | / GIVE SOME STATISTICS | |
2093 | / | |
2094 | EOP3, CLA CMA | |
2095 | DCA LINPAG | |
2096 | JMS I [CRLF | |
2097 | NOP3, JMS I (7607 /READ IN OVERLAY | |
2098 | 0100 | |
2099 | OVERLY, OVBUFR | |
2100 | 40 /USE SYS SCRATCH BLK | |
2101 | JMP I (7605 | |
2102 | JMP I OVERLY | |
2103 | ||
2104 | CHCKMR, 0 | |
2105 | TAD OPCODE /BE SURE ALL REFS ARE | |
2106 | AND [200 /ARE ON SAME PG | |
2107 | SZA CLA | |
2108 | TAD LOCTR2 | |
2109 | AND [7600 | |
2110 | CIA | |
2111 | TAD EXPVAL+2 | |
2112 | AND [7600 | |
2113 | SZA CLA | |
2114 | ADRERR, JMS I [ERMSG | |
2115 | 0201 /**BA** | |
2116 | TAD EXPVAL+2 | |
2117 | AND [177 | |
2118 | TAD OPCODE | |
2119 | JMS I [OUTWRD | |
2120 | JMP I [NEXTST | |
2121 | ||
2122 | IOERR, TAD INOP /REMOVE JMS PRNTLN | |
2123 | DCA PLINE | |
2124 | JMS I [ERMSG1 | |
2125 | 1117 /**IO** | |
2126 | INOP, NOP | |
2127 | ||
2128 | PAGE | |
2129 | \f IFZERO RALF < | |
2130 | / ORG THINGS FOR ABSOLUTE ASSEMBLIES | |
2131 | / | |
2132 | TRYSTR, JMS I [GETCHR | |
2133 | JMP I [NEXTST /WHAT CAN YOU DO? | |
2134 | TAD (-252 /IS IT AN ORG | |
2135 | SZA CLA | |
2136 | JMP I (GETEXP /NO, SOME FUNNY EXPR, MAYBE | |
2137 | ORGX, JMS I (ADRGET | |
2138 | TAD LOCTR1 /CHECK FOR NEW FIELD | |
2139 | CIA | |
2140 | TAD EXPVAL+1 | |
2141 | SNA CLA | |
2142 | JMP SAMFLD /NOT A DIFFERENT FIELD | |
2143 | CLA IAC | |
2144 | JMS DMPLIT /DUMP CURRENT PAGE LITERALS | |
2145 | JMS DMPLIT /DUMP PAGE 0 LITERALS | |
2146 | TAD EXPVAL+1 | |
2147 | AND [7 | |
2148 | DCA LOCTR1 | |
2149 | TAD PNCHOF /PUNCHING ENABLED? | |
2150 | SNA | |
2151 | TAD PASSNO /PASS 2? | |
2152 | SZA CLA | |
2153 | JMP SAMPAG /NO, DON'T OUTPUT CHANGE FIELD | |
2154 | TAD LOCTR1 /NEW FIELD BITS | |
2155 | RTL CLL | |
2156 | RAL | |
2157 | TAD (300 /TURN ON THE LEFT TWO BITS | |
2158 | JMS I [OCHAR /PUT IT OUT (NOT IN CHECK SUM) | |
2159 | JMP SAMPAG /DO THE SAME FOR CURRENT PAGE | |
2160 | SAMFLD, TAD LOCTR2 | |
2161 | AND [7600 /CHECK FOR SAME PAGE | |
2162 | DCA LTEMP | |
2163 | TAD EXPVAL+2 | |
2164 | AND [7600 | |
2165 | CIA | |
2166 | TAD LTEMP | |
2167 | SNA CLA | |
2168 | JMP SAMPAG /PAGE IS THE SAME | |
2169 | CLA IAC | |
2170 | JMS DMPLIT /DUMP CURRENT PAGE LITERALS | |
2171 | SAMPAG, TAD EXPVAL+2 | |
2172 | DCA LOCTR2 | |
2173 | JMS I (PUTORG | |
2174 | JMP I [NEXTST /DONE | |
2175 | PAGEX, TAD LOCTR2 /ADVANCE TO NEXT PAGE | |
2176 | CLL | |
2177 | TAD [177 | |
2178 | AND [7600 | |
2179 | DCA EXPVAL+2 | |
2180 | RAL | |
2181 | TAD LOCTR1 | |
2182 | DCA EXPVAL+1 | |
2183 | JMP ORGX+1 /DO ORG THINGS | |
2184 | \fDMPLIT, 0 | |
2185 | DCA PAGEN /SAVE PAGE INDICATOR | |
2186 | TAD OUTSWT /SAVE OUTPUT SWITCH | |
2187 | DCA SWTOUT | |
2188 | ISZ OUTSWT /DONT PRINT LINE WITH LITERALS | |
2189 | TAD PAGEN | |
2190 | TAD [P0LIT /GET BOUNDARY POINTER | |
2191 | DCA LTEMP | |
2192 | TAD PAGEN /WHICH LITERAL BUFFER ? | |
2193 | SNA CLA | |
2194 | TAD (P0LBUF-CPLBUF /PAGE 0 BUFFER | |
2195 | TAD (CPLBUF /CURRENT PAGE BUFFER | |
2196 | TAD I LTEMP /PLUS PAGE ADDRESS | |
2197 | DCA X10 /GIVES START OF LITERALS -1 | |
2198 | TAD PAGEN | |
2199 | SZA CLA | |
2200 | TAD LOCTR2 /UPPER FIVE BITS OF ADDRESS | |
2201 | AND [7600 | |
2202 | TAD I LTEMP /PLUS LOWER SEVEN | |
2203 | IAC /PLUS ONE | |
2204 | DCA LOCTR2 /GIVES LOCATION COUNTER | |
2205 | TAD LOCTR2 | |
2206 | AND [177 /ANYTHING TO DUMP? | |
2207 | SNA CLA | |
2208 | JMP DMPFIN /NO | |
2209 | TAD PASSNO | |
2210 | SMA SZA CLA | |
2211 | JMS I [CRLF /ONLY IF PASS 3 | |
2212 | JMS I (PUTORG | |
2213 | TAD [177 /STORE SPURIOUS LITERAL BOUNDARY | |
2214 | DCA I LTEMP /TO PREVENT FALLACIOUS *PO* MESSAGES | |
2215 | LITLUP, TAD I X10 /NO, GET NEXT LITERAL | |
2216 | JMS I [OUTWRD /OUTPUT WORD AND BUMP LC | |
2217 | TAD X10 /DONE? | |
2218 | IAC | |
2219 | AND [77 | |
2220 | SZA CLA | |
2221 | JMP LITLUP /LOOP | |
2222 | DMPFIN, TAD SWTOUT /RESTORE OUTPUT SWITCH | |
2223 | DCA OUTSWT | |
2224 | JMP I DMPLIT /ALL DONE | |
2225 | SWTOUT, 0 > | |
2226 | \fEXPON, TAD LASTOP | |
2227 | DCA TMP | |
2228 | DCA LASTOP | |
2229 | JMS I (GETSGN /GET SIGN OF EXPONENT | |
2230 | TAD RADIX | |
2231 | DCA OTEMP | |
2232 | ISZ RADIX /SET RADIX TO DECIMAL | |
2233 | JMS I (NUMBER /GET EXPONENT | |
2234 | NOP | |
2235 | TAD OTEMP | |
2236 | DCA RADIX /RESTORE RADIX | |
2237 | TAD TMP | |
2238 | CLL RAR | |
2239 | TAD LASTOP | |
2240 | RAR /LASTOP TO LINK, | |
2241 | DCA LASTOP /TMP TO SIGN OF LASTOP | |
2242 | TAD WORD2 | |
2243 | SZL | |
2244 | CIA /PUT SIGN ON EXP | |
2245 | JMP I (OVER | |
2246 | TMP, 0 | |
2247 | IFZERO RALF < PAGE / > | |
2248 | \f IFNZRO RALF < | |
2249 | / | |
2250 | / IF ALL CONDITIONS ARE RIGHT, CALL THE LOADER | |
2251 | / | |
2252 | RETSYS, JMS I (DELFIL /THIS LOCATION USED BY INIT CODE | |
2253 | /MAY BE ZEROED BY IT. USED TO DELETE F4 OUTPUT FILE WHEN CHAINING | |
2254 | /FROM COMPILER + OUTPUT DEV IS NOT SYS | |
2255 | CDF 10 | |
2256 | TAD (7604 /POINT TO 2ND OUT FILE THING | |
2257 | DCA X11 | |
2258 | TAD (7611 /POINTER TO 3RD | |
2259 | DCA X10 | |
2260 | TAD (-5 /LENGTH OF SUCH THINGS | |
2261 | DCA LTEMP | |
2262 | TAD I X10 /MOVE 3RD TO 2ND | |
2263 | DCA I X11 /FOR LOADER MAP FILE | |
2264 | ISZ LTEMP | |
2265 | JMP .-3 | |
2266 | TAD I [7600 /WAS THERE A FIRST OUT FILE | |
2267 | AND NP17 /(BINARY OUT)* | |
2268 | DCA LTEMP | |
2269 | TAD OUTBLK /GET FILE LENGTH | |
2270 | AND (377 | |
2271 | CLL RTL | |
2272 | RTL | |
2273 | CIA | |
2274 | TAD LTEMP /COMBINE UNIT AND LEN | |
2275 | DCA I X10 /FOR FIRST INPUT FILE TO LOADER | |
2276 | TAD PASBLK /STARTING BLOCK | |
2277 | DCA I X10 | |
2278 | DCA I X10 /THAT'S THE END OF INPUT | |
2279 | CDF 0 | |
2280 | TAD ERRORS /IF NO ERRORS | |
2281 | SNA CLA | |
2282 | ISZ CHNSW /SHOULD WE CHAIN? | |
2283 | JMP I (7605 /NO!!! | |
2284 | ISZ I (7746 /** | |
2285 | CIF 10 | |
2286 | JMS I USR | |
2287 | 6 /CHAIN | |
2288 | LDRBLK, 0 /FIRST BLOCK OF LOADER | |
2289 | / | |
2290 | PASBLK, 0 /FIRST BLOCK OF FILE PASSED | |
2291 | CHNSW, 0 /-1 TO ENABLE CHAIN LOADER | |
2292 | \f/ | |
2293 | / OUTPUT A BLOCK OF BINARY | |
2294 | / | |
2295 | OUTBLK, 0 /AT END OF PASS2, BECOMES | |
2296 | /LENGTH OF BINARY FILE | |
2297 | TAD (OUCTL /DEV HNDLR CONTROL WORD | |
2298 | JMS I (OUTDMP /CALL THE HANDLER | |
2299 | TAD MOUBUF | |
2300 | DCA OUTPTR /RESET BUFFER POINTER | |
2301 | DCA ABSOP /FORCE NEW ABS OUTPUT CONTROL | |
2302 | JMP I OUTBLK | |
2303 | MOUBUF, OUBUF-1 | |
2304 | / | |
2305 | TYPCOD, 2500 /UNDEFINED | |
2306 | 0000 /ADDRESS | |
2307 | 3000 /XTERNAL | |
2308 | 0300 /COMMON | |
2309 | 2300 /SECTION | |
2310 | -1 /? | |
2311 | -1 /? | |
2312 | 7000 /8-M0DE SECTION | |
2313 | 3200 /8-MODE PAGE0 COMMON SECTION | |
2314 | 0600 /8-MODE FIELD1 SECTION | |
2315 | \fBORG, 0 | |
2316 | CDF FLD0 | |
2317 | TAD LOCTR1 | |
2318 | RTR | |
2319 | RTR | |
2320 | AND [177 | |
2321 | TAD (ESDBUF-1 /POINT INTO ESD TABLE | |
2322 | DCA LTEMP | |
2323 | TAD I LTEMP | |
2324 | TAD (4 /ADDRESS VALUE | |
2325 | DCA LTEMP | |
2326 | CDF FLD1 | |
2327 | TAD LOCTR1 | |
2328 | AND [7 /GET ADDR BITS ONLY | |
2329 | DCA BOTMP /SAVE EM | |
2330 | TAD I LTEMP /OLD HIGH VALUE BITS | |
2331 | AND [7 | |
2332 | CIA | |
2333 | TAD BOTMP /COMPARE THEM | |
2334 | SPA | |
2335 | JMP BOXIT /NO UPDATE REQUIRED | |
2336 | SNA CLA | |
2337 | JMP BOCHKL /NO DIFFERENCE YET | |
2338 | TAD LOCTR1 | |
2339 | DCA I LTEMP /RESET TO NEW HIGH | |
2340 | ISZ LTEMP | |
2341 | JMP BOSETL /SKIP OVER TEST | |
2342 | BOCHKL, ISZ LTEMP /POINT TO LO-ORDER | |
2343 | TAD I LTEMP | |
2344 | CIA CLL | |
2345 | TAD LOCTR2 /COMPARE LOW ORDERS | |
2346 | SNL CLA | |
2347 | JMP BOXIT /NO REPLACE | |
2348 | BOSETL, TAD LOCTR2 | |
2349 | DCA I LTEMP | |
2350 | BOXIT, CLA | |
2351 | CDF FLD0 | |
2352 | JMP I BORG /WHEW! | |
2353 | BOTMP= EXTMP | |
2354 | PAGE | |
2355 | \fNEWESD, 0 | |
2356 | TAD ESDNO | |
2357 | TAD (-177 /CHECK LIMIT | |
2358 | SPA CLA | |
2359 | JMP .+3 | |
2360 | JMS I [ERMSG1 /TOO MANY | |
2361 | 3023 /*XS* | |
2362 | ISZ ESDNO /BUMP COUNT | |
2363 | TAD PASSNO /DON'T CHANGE TABLE AFTER PASS 1 | |
2364 | SMA CLA | |
2365 | JMP I NEWESD | |
2366 | TAD ESDNO | |
2367 | TAD (ESDBUF-1 /INDEX BUFFER | |
2368 | DCA ESDTMP | |
2369 | CDF FLD1 | |
2370 | TAD I OLDN3 /GET POINTER TO THIS SYMBOL | |
2371 | CDF FLD0 | |
2372 | DCA I ESDTMP | |
2373 | TAD ESDTMP | |
2374 | TAD [200 | |
2375 | DCA ESDTMP /NOW ADDRESS CHAR TABLE | |
2376 | TAD BUCKET | |
2377 | DCA I ESDTMP | |
2378 | JMP I NEWESD | |
2379 | ESDTMP= EXTMP | |
2380 | / | |
2381 | / RELOCATION CONTROL PSEUDO-OPS | |
2382 | / | |
2383 | ENTRX, JMS I [GETNAM /NAME OF ENTRY POINT | |
2384 | JMP ESDERR | |
2385 | JMS I [LOOKUP /FIND IT | |
2386 | JMP QENT /UNDEFINED | |
2387 | CLL RAR /MUST BE USER ADDR TYPE | |
2388 | SNA CLA | |
2389 | TAD I X10 /LOOK AT ESD | |
2390 | AND [7770 | |
2391 | SZA CLA /IS IT RELOCATABLE? | |
2392 | JMP OKENT /YES | |
2393 | QENT, JMS I [ERMSG /NO MESSAGE ON PASS 1 | |
2394 | 1105 /*IE* | |
2395 | OKENT, JMS NEWESD /CREATE AN ENTRY FOR IT | |
2396 | JMP I [NEXTST | |
2397 | \f/ | |
2398 | EXTRNX, CLA STL RTL | |
2399 | DCA STYPE /EXTERNS ARE TYPE 2 | |
2400 | JMS I [GETNAM | |
2401 | JMP ESDERR | |
2402 | JMS I [LOOKUP | |
2403 | JMS CRESD /IF UNDEFINED, DEFINE IT | |
2404 | CLL RTR /IF DEFINED, CHECK LEGALITY | |
2405 | SZA CLA | |
2406 | ESDERR, JMS I [ERMSG | |
2407 | 0523 /*ES* | |
2408 | JMP I [NEXTST | |
2409 | / | |
2410 | CLA IAC /FIELD1 SECT=11 | |
2411 | IAC /COMMZ SECT=10 | |
2412 | SECT8X, TAD [7 | |
2413 | JMP COMMX+1 | |
2414 | SECTX, CLA IAC | |
2415 | COMMX, TAD (COMMN /GET DESIRED CODE | |
2416 | DCA STYPE /FOR SECTION TYPE | |
2417 | JMS I [GETNAM | |
2418 | DCA BUCKET /IF NO NAME, BLANK COMMON | |
2419 | JMS I [LOOKUP | |
2420 | JMP NEWSCT /UNDEFINED | |
2421 | CIA /OLD FRIEND | |
2422 | TAD STYPE /SAME? | |
2423 | SNA CLA | |
2424 | JMP SETSCT /YUP, DO IT | |
2425 | JMP ESDERR | |
2426 | / | |
2427 | CRESD, 0 | |
2428 | JMS NEWESD /CREATE NEW ESD ENTRY | |
2429 | CDF FLD1 | |
2430 | TAD I LTEMP /SET TYPE CODE | |
2431 | AND [7700 | |
2432 | TAD STYPE | |
2433 | DCA I LTEMP | |
2434 | ISZ LTEMP | |
2435 | TAD ESDNO | |
2436 | CLL RTL /ESD NO TO SYMBOL VLAUE | |
2437 | RTL | |
2438 | DCA I LTEMP | |
2439 | CDF FLD0 | |
2440 | JMP I CRESD | |
2441 | / | |
2442 | NEWSCT, JMS CRESD /CREATE AN ESD | |
2443 | SETSCT, JMS I (BORG /ADJUST LOC CTR'S | |
2444 | CDF FLD1 | |
2445 | TAD I X10 /GET NEW LOC CTR VALUE | |
2446 | DCA LOCTR1 | |
2447 | TAD I X10 | |
2448 | DCA LOCTR2 /LOW LOC CTR | |
2449 | CDF FLD0 | |
2450 | JMP PUTORG | |
2451 | \f/ | |
2452 | ORGX, JMS I (ADRGET /GET ORG EXPR | |
2453 | JMS I (BORG | |
2454 | TAD EXPVAL+1 | |
2455 | AND [7770 /DOES IT HAVE AN ESD? | |
2456 | SNA CLA | |
2457 | TAD LOCTR1 /IF NOT, KEEP CURRENT ESD | |
2458 | AND [7770 | |
2459 | TAD EXPVAL+1 | |
2460 | DCA LOCTR1 /RESET PC | |
2461 | TAD EXPVAL+2 | |
2462 | DCA LOCTR2 | |
2463 | PUTORG, TAD PASSNO /OUTPUT ON PASS 2 ONLY | |
2464 | SZA CLA | |
2465 | JMP I [NEXTST | |
2466 | DCA ABSOP /CLEAR ABS OUTPUT SW | |
2467 | CLA STL RTL | |
2468 | JMS I (FULCHK /ROOM FOR MORE? | |
2469 | TAD LOCTR1 | |
2470 | RTR | |
2471 | RTR /GET ESD | |
2472 | AND [177 | |
2473 | TAD (TTORG | |
2474 | DCA I OUTPTR | |
2475 | TAD LOCTR1 | |
2476 | AND [7 /FIELD BITS | |
2477 | DCA I OUTPTR | |
2478 | TAD LOCTR2 /ADDRESS | |
2479 | DCA I OUTPTR | |
2480 | JMS I (FULCHK | |
2481 | JMP I [NEXTST | |
2482 | PAGE /> | |
2483 | \f/ | |
2484 | / VARIOUS PSEUDO-OP HANDLERS | |
2485 | / | |
2486 | LSTONX, TAD SYONLY /ENABLE LISTING UNLESS SYM MAP ONLY | |
2487 | LSTOFX, DCA LISTSW | |
2488 | JMP I [NEXTST | |
2489 | / | |
2490 | DECX, CLA IAC | |
2491 | OCTALX, DCA RADIX | |
2492 | JMP I [NEXTST | |
2493 | / | |
2494 | TEXTX, JMS I [GETCHR /GET DELIMITER | |
2495 | JMP I [NEXTST /NULL STMT | |
2496 | CIA | |
2497 | DCA EXTMP /SAVE - DELIM | |
2498 | LOOP6B, JMS GETCHT /GET HIG ORDER CHAR | |
2499 | JMP I [NEXTST | |
2500 | JMS I [R6L /SHIFT IT UP | |
2501 | DCA LTEMP /SAVE HALF | |
2502 | JMS GETCHT /GET LOWER CHAR | |
2503 | JMP OUTTXT /GO PUT LAST | |
2504 | TAD LTEMP /PUT 2 CHARS TOGETHER | |
2505 | JMS I [OUTWRD /OUTPUT WORD | |
2506 | JMP LOOP6B /LOOP | |
2507 | OUTTXT, TAD LTEMP /PUT OUT HALF WORD | |
2508 | JMS I [OUTWRD /OR ZERO WORD | |
2509 | JMP I [NEXTST | |
2510 | GETCHT, 0 /GET CHAR FOR TEXT STMT | |
2511 | ISZ NCHARS /BUMP COUNT | |
2512 | SKP | |
2513 | JMP I GETCHT /END OF TEXT | |
2514 | TAD I CHRPTR /GET CHAR | |
2515 | DCA BUCKET /SAVE IT | |
2516 | TAD BUCKET /IS IT THE DELIM ? | |
2517 | TAD EXTMP | |
2518 | SNA CLA | |
2519 | JMP I GETCHT /YES, RETURN NO SKIP | |
2520 | ISZ GETCHT /BUMP RETURN | |
2521 | TAD BUCKET /GET CHAR | |
2522 | AND [77 /LOW 6 BITS | |
2523 | JMP I GETCHT /RETURN | |
2524 | \f/ | |
2525 | / CONDITIONAL ASSEMBLY HANDLERS | |
2526 | / | |
2527 | IFNZRX, CLA CMA | |
2528 | IFZROX, JMS GETCON /GET CONDITION EXPR | |
2529 | TAD EXPVAL+1 /HIGH ORDER | |
2530 | AND [7 | |
2531 | SNA | |
2532 | TAD EXPVAL+2 /LOW ORDER | |
2533 | SWTCH, SNA CLA | |
2534 | JMP TRUE /PRESENT CONDITION OF ASMOF IS OK | |
2535 | FALSE, TAD ASMOF /GOTTA REVERSE IT | |
2536 | CMA | |
2537 | DCA ASMOF /THAT DOES IT | |
2538 | TRUE, CDF FLD0 | |
2539 | JMS I [GETCHR | |
2540 | JMP BADCND /FORGOT THE ANGLE | |
2541 | TAD [-240 /IGNORE BLANK, IF ANY | |
2542 | SNA | |
2543 | JMP TRUE /TRY AGAIN | |
2544 | TAD (240-274 | |
2545 | SNA CLA | |
2546 | JMP I (ASMBL /GO FROM HERE | |
2547 | JMS I [BACK1 /LET SOMEONE ELSE WORRY ABOUT IT | |
2548 | JMP BADCND | |
2549 | / | |
2550 | GETCON, 0 | |
2551 | DCA ASMOF /SET INITIAL TRUTH | |
2552 | JMS I [EXPR /COLLECT EXPR | |
2553 | JMP OKCND /BAD MAY MEAN GOOD | |
2554 | BADCND, JMS I [ERMSG /BUT GOOD MEANS BAD | |
2555 | 1103 /*IC* | |
2556 | DCA ASMOF /ENABLE ASSEMBLY | |
2557 | JMP I (ASMBL | |
2558 | OKCND, TAD EXPSW /WAS THERE AN EXPR, AT LEAST? | |
2559 | SNA CLA | |
2560 | JMP I GETCON /YES | |
2561 | JMP BADCND | |
2562 | / | |
2563 | IFNEGX, CLA CMA | |
2564 | IFPOSX, JMS GETCON | |
2565 | CLA CLL IAC RTL /4 | |
2566 | AND EXPVAL+1 /SIGN OF EXPR | |
2567 | JMP SWTCH /GO FROM THERE | |
2568 | / | |
2569 | IFNDFX, CLA CMA | |
2570 | IFREFX, DCA ASMOF | |
2571 | JMS I [GETNAM /GET SYMBOL NAME | |
2572 | JMP BADCND /GOTTA GIVE SOMETHING | |
2573 | JMS I [FIND /IS IT KNOWN TO US? | |
2574 | JMP FALSE /NOT REFERENCED YET | |
2575 | SNA CLA /SKIP IF DEFINED | |
2576 | DCA ASMOF /ELSE ASSEMBLE | |
2577 | JMP TRUE | |
2578 | \fIFSWX, CLA CMA | |
2579 | IFNSWX, DCA ASMOF | |
2580 | TAD (7642 /ADDRESS OF OPTION WORDS | |
2581 | DCA WORD2 /A TEMP | |
2582 | JMS I (LETTER /ALLOW LETTER | |
2583 | JMP .+4 /AC BETWEEN 1 AND 32 | |
2584 | JMS I (DIGIT /OR NUMBER | |
2585 | JMP BADCND /ALL ELSE IS BAD | |
2586 | TAD (33 /MAKE 0 = Z+1 | |
2587 | ISZ WORD2 /BUMP POINTER | |
2588 | TAD (-14 /IS IT IN THIS WORD? | |
2589 | SMA SZA | |
2590 | JMP .-3 /NO, POINT TO NEXT | |
2591 | CIA | |
2592 | CMA STL /BIT COUNT AWAY FROM LINK | |
2593 | DCA WORD1 | |
2594 | RAL /SHIFT | |
2595 | ISZ WORD1 /COUNT | |
2596 | JMP .-2 | |
2597 | CDF 10 /OPTIONS FIELD | |
2598 | AND I WORD2 /GET SELECTED BIT | |
2599 | JMP SWTCH /AND TEST IT | |
2600 | / | |
2601 | ZBLKX, JMS I (ADRGET /EVALUATE EXPR | |
2602 | TAD EXPVAL+2 | |
2603 | CIA | |
2604 | DCA ZBCNT /HOLD COUNT | |
2605 | TAD LISTSW /SAVE LISTSWITCH | |
2606 | DCA ZBTMP | |
2607 | JMS I [OUTWRD /PUT A WORD | |
2608 | DCA LISTSW /NO LIST AFTER FIRST | |
2609 | ISZ ZBCNT /COUNT THEM | |
2610 | JMP .-3 /MORE | |
2611 | TAD ZBTMP /RESTORE | |
2612 | DCA LISTSW /LISTING | |
2613 | JMP I [NEXTST | |
2614 | ZBCNT= EXTMP | |
2615 | ZBTMP= EXTMP2 | |
2616 | PAGE | |
2617 | ||
2618 | ||
2619 | \f PTP=20 | |
2620 | DCB=7760 | |
2621 | INFLD=INCTL&70 /GET FIELD OF INPUT BUFFER | |
2622 | OUFLD=OUCTL&70 /DITTO OUTPUT BUFFER | |
2623 | IN7400, 7400 | |
2624 | NINCTL, INCTL+1 | |
2625 | NINREC, INRECS | |
2626 | IOPEN, 0 | |
2627 | TAD (7617 | |
2628 | DCA INFPTR /RESET FILE POINTER | |
2629 | JMS INNEWF /FETCH NEW HNDLR, ETC | |
2630 | /WHILE USR IS STILL IN CORE | |
2631 | CLA CMA | |
2632 | DCA INCHCT /FORCE A READ ON NEXT CHAR | |
2633 | JMP I IOPEN | |
2634 | ||
2635 | ICHAR, 0 | |
2636 | IN7600, 7600 | |
2637 | INCHAR, CDF INFLD | |
2638 | ISZ INJMP /BUMP THREE-WAY UNPACK SWITCH | |
2639 | ISZ INCHCT | |
2640 | INJMPP, JMP INJMP | |
2641 | TAD INEOF | |
2642 | SZA CLA /DID LAST READ GIVE EOF ? | |
2643 | GETNEW, JMS INNEWF /OPEN A NEW INPUT FILE | |
2644 | TAD INCTR | |
2645 | CLL | |
2646 | TAD NINREC | |
2647 | SNL | |
2648 | DCA INCTR /RESTORE INCR IF NOT OVERFLOWED | |
2649 | SZL /IS THIS THE LAST READ? | |
2650 | ISZ INEOF /YES - SET END-OF-FILE FLAG | |
2651 | CLL CML CMA RTR /MAKE CONTROL WORD | |
2652 | RTR /FROM THE AMOUNT OF THE OVERFLOW | |
2653 | RTR /(IF ANY) AND THE STANDARD CNTRL WD | |
2654 | TAD NINCTL | |
2655 | DCA INCTLW | |
2656 | CDF | |
2657 | JMS I INHNDL /CALL THE DEVICE HANDLER | |
2658 | INCTLW, 0 | |
2659 | INBUFP, INBUF | |
2660 | INREC, 0 | |
2661 | JMP INERRX /SOME KIND OF HANDLER ERROR | |
2662 | INBREC, TAD INREC | |
2663 | TAD NINREC | |
2664 | DCA INREC /UPDATE THE RECORD NUMBER | |
2665 | TAD INCTLW | |
2666 | AND IN7600 | |
2667 | CLL RAL | |
2668 | TAD INCTLW | |
2669 | AND IN7600 | |
2670 | CMA | |
2671 | DCA INCHCT /COMPUTE THE NEW CHARACTER COUNT | |
2672 | TAD INJMPP | |
2673 | DCA INJMP /RESET THE CHARACTER SWITCH | |
2674 | TAD INBUFP | |
2675 | DCA INPTR /AND THE WORD POINTER | |
2676 | JMP INCHAR /MAKE BELIEVE THIS NEVER HAPPENED | |
2677 | INERRX, ISZ INEOF /EITHER AN END-OF-FILE OR A BADDIE | |
2678 | SMA CLA /WHICH TYPE WAS IT ? | |
2679 | JMP INBREC /END OF FILE - RESUME PROCESSING | |
2680 | JMP I [IOERR /BADDIE, GIVE ERROR MESSAGE | |
2681 | INJMP, HLT /THIS IS THE 3 WAY CHARACTER SWITCH | |
2682 | JMP ICHAR1 | |
2683 | JMP ICHAR2 | |
2684 | TAD INJMPP | |
2685 | DCA INJMP | |
2686 | TAD I INPTR | |
2687 | AND IN7400 | |
2688 | CLL RTR | |
2689 | RTR /COMBINE HIGH-ORDER FOUR BITS OF | |
2690 | TAD INCTLW | |
2691 | RTR /THE 2 WORD TO FORM THE 3RD CHAR | |
2692 | RTR | |
2693 | ISZ INPTR | |
2694 | JMP INCOMN | |
2695 | ICHAR2, TAD I INPTR | |
2696 | AND IN7400 | |
2697 | DCA INCTLW /SAVE THE HI ORDER BITS FOR THE 3RD | |
2698 | ISZ INPTR /BUMP THE WORD POINTER | |
2699 | ICHAR1, TAD I INPTR | |
2700 | INCOMN, AND (177 /PHPH WAS 277 | |
2701 | TAD (-32 /PHPH WAS 232 | |
2702 | SNA /IS THE CHARACTER A ^Z? | |
2703 | JMP GETNEW /YES - GET A NEW FILE | |
2704 | TAD (232 /RESTORE THE CHARACTER /PHPH NOW WE HAVE PARITY ON! | |
2705 | CDF | |
2706 | JMP I ICHAR /AND RETURN | |
2707 | INFPTR, 7617 | |
2708 | INEOF, 1 /PARAMETERS ARE SET UP SO THAT | |
2709 | INCHCT, /IOPEN IS UNNECESSARY. | |
2710 | INNEWF, -1 | |
2711 | TAD NINDEV | |
2712 | DCA INHNDL /INITIALIZE HANDLER ADDRESS | |
2713 | CDF 10 | |
2714 | TAD I INFPTR /GET NEXT CD INPUT FILE ENTRY | |
2715 | CDF | |
2716 | SNA /ANY MORE? | |
2717 | JMP I (ENDX /NO MORE INPUT | |
2718 | CIF 10 | |
2719 | JMS I USR | |
2720 | 1 /ASSIGN, FETCH HANDLER | |
2721 | ||
2722 | INHNDL, 0 | |
2723 | JMP I [IOERR /HUH? | |
2724 | CDF 10 | |
2725 | TAD I INFPTR | |
2726 | AND (7760 /GET LENGTH PART OF WORD | |
2727 | SZA /LENGTH OF 0 MEANS LENGTH GE 256 | |
2728 | TAD [17 /ADD HIGH ORDER BITS | |
2729 | CLL CML RTR | |
2730 | RTR | |
2731 | DCA INCTR /STORE LENGTH OF FILE | |
2732 | ISZ INFPTR | |
2733 | TAD I INFPTR | |
2734 | CDF | |
2735 | DCA INREC /STARTING RECORD NUMBER OF FILE | |
2736 | ISZ INFPTR | |
2737 | DCA INEOF /ZERO END-OF-FILE FLAG | |
2738 | JMP I INNEWF | |
2739 | INCTR, 0 | |
2740 | INPTR, 0 | |
2741 | OUFNAM, 0;0;0;0 /OUTPUT FILE NAME | |
2742 | NINDEV, INDEVH | |
2743 | PAGE | |
2744 | \fOOPEN, 0 | |
2745 | TAD OUFILE /INCR OUTPUT FILE POINTER | |
2746 | TAD (5 | |
2747 | DCA OUFILE | |
2748 | CDF 10 | |
2749 | TAD I OUFILE /GET DEVICE CODE, LEN | |
2750 | DCA OUELEN /HOLD IT A MO | |
2751 | JMS I (OFNAME /GET FILE NAME INTO FIELD 0 | |
2752 | TAD OUELEN /CHECK FOR NULL FILE | |
2753 | SNA CLA | |
2754 | JMP ONOFIL /INHIBIT OUTPUT | |
2755 | JMS GETUSR /LOAD USR IF NOT ALREADY IN | |
2756 | TAD OUNAME /RESET ENTER CALL | |
2757 | DCA OUBLK | |
2758 | TAD NOUDEV | |
2759 | DCA OUHNDL | |
2760 | TAD OUELEN /THE UNIT | |
2761 | CIF 10 | |
2762 | JMS I USR | |
2763 | 1 /ASSIGN, FETCH HANDLER | |
2764 | OUHNDL, 0 /OUTPUT DEVICE HANDLER ENTRY | |
2765 | JMP I [IOERR /HUH? | |
2766 | TAD OUELEN /UNIT AGAIN | |
2767 | CIF 10 | |
2768 | JMS I USR | |
2769 | 3 /ENTER OUTPUT FILE | |
2770 | OUBLK, OUFNAM /REPLACED WITH STARTING BLOCK | |
2771 | OUELEN, 0 /REPLACED WITH LENGTH OF HOLE | |
2772 | JMP I [IOERR /YOU BLEW IT!!! | |
2773 | DCA OUCCNT | |
2774 | DCA I (OUTINH /ZERO OUTPUT INHIBIT FLAG | |
2775 | JMS I (OUSETP | |
2776 | ISZ OOPEN | |
2777 | JMP I OOPEN | |
2778 | ONOFIL, ISZ I (OUTINH | |
2779 | JMP I OOPEN | |
2780 | OUTDMP, 0 | |
2781 | DCA OUCTLW /STORE THE CONTROL WORD | |
2782 | TAD OUCCNT | |
2783 | SNA | |
2784 | ISZ OUCTLW | |
2785 | TAD OUBLK | |
2786 | DCA OUREC /COMPUTE STARTING BLOCK | |
2787 | TAD OUCTLW | |
2788 | JMS I [R6L | |
2789 | AND [17 /COMPUTE THE NUMBER OF RECORDS | |
2790 | TAD OUCCNT /UPDATE SIZE OF FILE | |
2791 | DCA OUCCNT | |
2792 | TAD OUCCNT | |
2793 | CLL CML | |
2794 | TAD OUELEN | |
2795 | SNL SZA CLA /EXCEED GIVEN LENGTH ? | |
2796 | JMP I [IOERR /YES - ERROR | |
2797 | CDF | |
2798 | JMS I OUHNDL | |
2799 | OUCTLW, 0 | |
2800 | LOUBUF, OUBUF | |
2801 | OUREC, 0 | |
2802 | JMP I [IOERR | |
2803 | JMP I OUTDMP | |
2804 | OCLOSE, 0 | |
2805 | JMS GETUSR /ENSURE USR IN CORE | |
2806 | IFNZRO RALF < | |
2807 | TAD PASSNO | |
2808 | SZA CLA | |
2809 | JMP .+6 | |
2810 | TAD (377 | |
2811 | JMS I (FULCHK /DUMP LAST BLOCK | |
2812 | TAD OUCCNT /SAVE FILE LENGTH | |
2813 | DCA I (OUTBLK /FOR CHAIN | |
2814 | JMP NODUMP > | |
2815 | JMS I (OTYPE | |
2816 | AND (770 | |
2817 | TAD (-PTP /CHECK FOR PAPER TAPE PUNCH OUTPUT | |
2818 | SZA CLA /AND SKIP ^Z OUTPUT IF TRUE | |
2819 | TAD (232 /OUTPUT A ^Z | |
2820 | JMS I [OCHAR | |
2821 | FILLLP, JMS I [OCHAR | |
2822 | JMS I (OTYPE /GET TYPE OF OUTPUT DEVICE | |
2823 | SPA CLA | |
2824 | TAD [100 | |
2825 | TAD [77 | |
2826 | AND I (OUDWCT | |
2827 | SZA CLA /UP TO THE BOUNDARY YET? | |
2828 | JMP FILLLP /NO - FILL WITH ZEROS | |
2829 | TAD I (OUDWCT /GET DOUBLEWORD COUNT LEFT | |
2830 | TAD (OUCTL&3700 | |
2831 | SNA /A FULL WRITE LEFT? | |
2832 | JMP NODUMP /YES DON'T DO IT | |
2833 | TAD (4000+OUFLD /PUT IN FIELD AND WRITE BITS | |
2834 | JMS OUTDMP | |
2835 | NODUMP, CIF CDF 10 | |
2836 | TAD I OUFILE | |
2837 | CDF | |
2838 | JMS I USR | |
2839 | 4 /CLOSE THE OUTPUT FILE | |
2840 | OUNAME, OUFNAM /POINTER TO OUTPUT FILE NAME | |
2841 | OUCCNT, 0 | |
2842 | JMP I [IOERR /ERROR WHILE CLOSING - BAD!! | |
2843 | JMP I OCLOSE /ALL DONE | |
2844 | NOUDEV, OUDEVH | |
2845 | \f/ | |
2846 | / LOAD USR IF NOT IN CORE ALREADY | |
2847 | / | |
2848 | GETUSR, 0 | |
2849 | TAD USR /CURRENT CALL ADDR | |
2850 | SMA CLA | |
2851 | JMP I GETUSR /WE GOT IT | |
2852 | CIF 10 | |
2853 | JMS I USR /THE ANSWERING SERVICE | |
2854 | 10 /CALLS THE SR | |
2855 | TAD [200 | |
2856 | DCA USR /RESET THE CALL ADDRESS | |
2857 | JMP I GETUSR /JES FINE | |
2858 | PAGE | |
2859 | \fFULCHK, 0 | |
2860 | IFNZRO RALF < | |
2861 | / | |
2862 | / IF THE RELOCATABLE BINARY OUTPUT | |
2863 | / BLOCK IS FULL (WITHIN THE CONTENTS OF THE AC) | |
2864 | / FILL THE REST WITH NOP CODES AND OUTPUT THE | |
2865 | / BLOCK. | |
2866 | / | |
2867 | TAD OUTPTR | |
2868 | TAD KOUBUF | |
2869 | SPA CLA | |
2870 | JMP I FULCHK | |
2871 | FULLUP, TAD OUTPTR | |
2872 | TAD KOUBUF | |
2873 | SMA CLA | |
2874 | JMP .+4 | |
2875 | CLA IAC | |
2876 | DCA I OUTPTR | |
2877 | JMP FULLUP | |
2878 | JMS I (OUTBLK | |
2879 | JMP I FULCHK | |
2880 | KOUBUF, -OUBUF-377 > | |
2881 | / | |
2882 | / | |
2883 | / GET SIGN CHARACTER IF ANY | |
2884 | / BUMP LASTOP IF MINUS | |
2885 | / | |
2886 | GETSGN, 0 | |
2887 | JMS I [GETCHR | |
2888 | JMP I GETSGN | |
2889 | TAD (-255 /MINUS? | |
2890 | SNA | |
2891 | ISZ LASTOP | |
2892 | SZA | |
2893 | CLL CMA RAR /IF IT WAS PLUS, BECOMES 0 | |
2894 | SZA CLA /SKIP IF PLUS OR MINUS | |
2895 | JMS I [BACK1 /OTHERWISE PUT IT BACK | |
2896 | JMP I GETSGN | |
2897 | \f/ AS PER RICHIE LARY | |
2898 | / | |
2899 | / SINGLE AND DOUBLE PRECISION | |
2900 | / FLOATING POINT INPUT | |
2901 | / | |
2902 | / | |
2903 | EX, TAD M3 | |
2904 | FX, TAD M3 | |
2905 | DCA DESW /STORE LENGTH | |
2906 | TAD (-7 | |
2907 | JMS CLEAR /CLEAR FAC+OP | |
2908 | DCA LASTOP | |
2909 | JMS GETSGN /GET SIGN | |
2910 | STA /CLA CMA | |
2911 | DCA DPSW /SET NO DP | |
2912 | GETD, DCA DCNT | |
2913 | JMS I (DIGIT /GET A DIGIT | |
2914 | JMP LOOKP /NO | |
2915 | DCA OTEMP /SAVE IT | |
2916 | JMS I (FMPTEN /MULT FAC*10 | |
2917 | JMS CLEAR | |
2918 | TAD OTEMP | |
2919 | SZA | |
2920 | JMS I (FAD /ADD DIGIT TO FAC IF NOT= 0 | |
2921 | TAD DPSW | |
2922 | CMA | |
2923 | TAD DCNT /BUMP IF FP SEEN | |
2924 | JMP GETD | |
2925 | \fLOOKP, JMS I [GETCHR | |
2926 | JMP OVER /DONE | |
2927 | TAD (-256 | |
2928 | SNA | |
2929 | JMP DECPT | |
2930 | TAD (256-304 | |
2931 | CLL RAR | |
2932 | SNA CLA | |
2933 | JMP I (EXPON /E OR D | |
2934 | DEXERR, JMS I [ERMSG | |
2935 | 0620 /FP | |
2936 | JMP NOTNEG | |
2937 | DECPT, ISZ DPSW | |
2938 | JMP DEXERR /2 PERIODS | |
2939 | JMP GETD | |
2940 | / | |
2941 | OVER, TAD DCNT /EXPON COMES HERE W EXP IN AC | |
2942 | SNA | |
2943 | JMP NOSCAL /NO SCALING NEEDE | |
2944 | CLL | |
2945 | SMA | |
2946 | CIA CML /SIGN IN LINK,MAGNITUDE IN AC | |
2947 | DCA DCNT /AS A COUNT | |
2948 | SNL | |
2949 | TAD (TENTH-TEN /OFFSET KLUDGE | |
2950 | DCA OTEMP | |
2951 | SCALUP, TAD OTEMP | |
2952 | JMS I (FMPTEN /MULT BY 10.0 OR 0.1 | |
2953 | ISZ DCNT | |
2954 | JMP SCALUP | |
2955 | NOSCAL, JMS CLEAR | |
2956 | STL RAR | |
2957 | DCA OP+5 /ROUNDING CONSTANT | |
2958 | JMS I (ADD | |
2959 | TAD AC | |
2960 | SZA CLA | |
2961 | JMS I (NORM /WATCH IT! | |
2962 | DCA AC+5 | |
2963 | TAD LASTOP | |
2964 | SNA CLA /SIGN -? | |
2965 | JMP NOTNEG /NO | |
2966 | TAD (AC+5 | |
2967 | JMS I (SETUP | |
2968 | ACNGLP, RAL | |
2969 | TAD I P /NEGATE FAC | |
2970 | CLL CIA | |
2971 | DCA I P | |
2972 | STA | |
2973 | TAD P | |
2974 | DCA P | |
2975 | ISZ CT | |
2976 | JMP ACNGLP | |
2977 | NOTNEG, JMS CLEAR /SET UP X10 | |
2978 | TAD I X10 | |
2979 | JMS I [OUTWRD | |
2980 | ISZ DESW /OUTPUT # | |
2981 | JMP .-3 | |
2982 | JMP I [NEXTST | |
2983 | \fCLEAR, 0 /AC MAY NOT BE 0 | |
2984 | TAD (-7 | |
2985 | DCA CT | |
2986 | TAD (OPX-1 | |
2987 | DCA X10 | |
2988 | DCA I X10 | |
2989 | ISZ CT | |
2990 | JMP .-2 | |
2991 | JMP I CLEAR | |
2992 | DCNT=FULCHK | |
2993 | DPSW=NCTMP | |
2994 | DESW=OPCODE | |
2995 | PAGE | |
2996 | \f OVBUFR=. | |
2997 | FAD, 0 /FLOATING ADD DIGIT IN AC | |
2998 | DCA OP | |
2999 | TAD (13 | |
3000 | DCA OPX | |
3001 | ALNLP, TAD OPX | |
3002 | CIA | |
3003 | TAD ACX | |
3004 | SNA /ALIGNED? | |
3005 | JMP GOADD /YES | |
3006 | SMA CLA | |
3007 | TAD (OPX-ACX | |
3008 | JMS RSHFT /NO-SHIFT 1 OF THEM RIGHT 1 | |
3009 | JMP ALNLP /TRY AGAIN | |
3010 | GOADD, JMS ADD /ADD FRACTIONS | |
3011 | JMS NORM /NORMALIZE RESULT | |
3012 | JMP I FAD /RETURN | |
3013 | / | |
3014 | RSHFT, 0 /SHIFT RIGHT | |
3015 | TAD (ACX /DEFAULT IS FAC | |
3016 | JMS SETUP | |
3017 | ISZ I P /BUMP EXPONENT | |
3018 | RSLP, ISZ P | |
3019 | TAD I P | |
3020 | RAR | |
3021 | DCA I P | |
3022 | ISZ CT | |
3023 | JMP RSLP | |
3024 | JMP I RSHFT | |
3025 | / | |
3026 | ADD, 0 /ADD TO FAC | |
3027 | TAD (OP+5 | |
3028 | DCA PP2 | |
3029 | TAD (AC+5 | |
3030 | JMS SETUP | |
3031 | ADDLP, RAL /CARRY | |
3032 | TAD I PP2 | |
3033 | TAD I P | |
3034 | DCA I P /ADD ONE WORD | |
3035 | STA | |
3036 | TAD P /COMPLEMENT LINK | |
3037 | DCA P | |
3038 | STA | |
3039 | TAD PP2 /COMPLEMENT LINK | |
3040 | DCA PP2 | |
3041 | ISZ CT | |
3042 | JMP ADDLP | |
3043 | JMP I ADD | |
3044 | \fNORM, 0 /NORMALIZE FAC | |
3045 | TAD AC | |
3046 | SPA CLA /CHECK FOR OVERNORMALIZATION | |
3047 | JMS RSHFT /AND CORRECT | |
3048 | NORMLP, STL RTR | |
3049 | AND AC | |
3050 | SZA CLA /NORMALIZED? | |
3051 | JMP I NORM /YES | |
3052 | TAD (AC+5 | |
3053 | JMS SETUP | |
3054 | LSLP, TAD I P | |
3055 | RAL /LEFT SHIFT | |
3056 | DCA I P /FAC 1 BIT | |
3057 | STA CML /COMPLEMENT LINK | |
3058 | TAD P | |
3059 | DCA P | |
3060 | ISZ CT | |
3061 | JMP LSLP | |
3062 | STA | |
3063 | TAD ACX /BUMP EXP | |
3064 | DCA ACX /DOWN 1 | |
3065 | JMP NORMLP | |
3066 | \fFMPTEN, 0 /FLTG MULTIPLY BY 10.0 OR .1 | |
3067 | TAD (TEN | |
3068 | JMS SETUP | |
3069 | TAD AC | |
3070 | SNA CLA /AC=0 MEANS RESULT=0 | |
3071 | JMP I FMPTEN | |
3072 | TAD I P | |
3073 | TAD ACX /FUDGE FAC | |
3074 | DCA ACX /EXPONENT | |
3075 | TAD (MUX | |
3076 | DCA X11 | |
3077 | TAD (ACX | |
3078 | DCA SETUP | |
3079 | TAD (OPX | |
3080 | DCA X10 | |
3081 | DCA MUX /CLEAR MULT TEMP EXP | |
3082 | MPLP1, ISZ SETUP | |
3083 | TAD I SETUP /MOVE FAC | |
3084 | DCA I X10 /TO OP | |
3085 | DCA I SETUP /CLEAR FAC | |
3086 | ISZ P | |
3087 | TAD I P /MOVE MULTIPLIER | |
3088 | DCA I X11 /TO MULT TEMP | |
3089 | ISZ CT | |
3090 | JMP MPLP1 | |
3091 | / | |
3092 | MPLP2, TAD (MUX-ACX | |
3093 | JMS RSHFT /SHIFT MULT TEMP RIGHT 1 | |
3094 | SZL | |
3095 | JMS ADD /ADD IF LOW ORDER BIT WAS 1 | |
3096 | JMS RSHFT /SHIFT FAC RIGHT | |
3097 | TAD MU+5 | |
3098 | SZA CLA /12 SUCCESSIVE 0 BITS | |
3099 | JMP MPLP2 /IN MULTIPLIER MEANS DONE | |
3100 | JMS NORM | |
3101 | JMP I FMPTEN | |
3102 | / | |
3103 | SETUP, 0 /COMMON CODE | |
3104 | DCA P | |
3105 | TAD (-6 | |
3106 | DCA CT | |
3107 | CLL | |
3108 | JMP I SETUP | |
3109 | / | |
3110 | MUX, 0 /MULT TEMP | |
3111 | MU, ZBLOCK 6 | |
3112 | CT=CPTMP | |
3113 | P=EXTMP | |
3114 | PP2=PAGEN | |
3115 | \f PAGE | |
3116 | \f IFNZRO RALF < | |
3117 | ESDBUF, PNDL+6 /ESD ENTRY FOR SECTION #MAIN | |
3118 | PNDL /DITTO FOR BLANK COMMON | |
3119 | ZBLOCK 376 /FILL TO 400 LOCS | |
3120 | / | |
3121 | / BEGIN OF PASS 2: | |
3122 | / DUMP EXTERNAL SYMBOL DICTIONARY | |
3123 | / DURING PASSES 2 AND 3, THIS IS INPUT BUFFER | |
3124 | / | |
3125 | DMPESD, CLA CLL CMA RAL /-2 | |
3126 | DCA EXTMP2 /PASS CONTROL | |
3127 | TAD (3 /RALF OUTPUT IDENTIFIER | |
3128 | DCA I OUTPTR | |
3129 | TAD VERS | |
3130 | DCA I OUTPTR /THIS MAKES 6-WORD ENTRIES | |
3131 | TAD DPFLG /4000=NEED DP HARDWARE | |
3132 | DCA I OUTPTR /EXACTLY FILL A BLOCK | |
3133 | DCA I OUTPTR | |
3134 | ESDSCN, TAD (ESDBUF-1 | |
3135 | DCA X10 /POINT TO POINTERS | |
3136 | TAD (ESDBUF+177 | |
3137 | DCA X12 /POINT TO INITAIL CHARS | |
3138 | TAD ESDNO | |
3139 | CIA | |
3140 | DCA EXTMP | |
3141 | ESDLUP, TAD (-3 | |
3142 | DCA LTEMP /NAME LENGTH COUNT | |
3143 | TAD (EQUN-1 /WHERE WE'LL KEEP THE NAME | |
3144 | DCA X13 | |
3145 | TAD I X10 /GET POINTER | |
3146 | DCA X11 | |
3147 | TAD I X12 /GET FIRST CHAR | |
3148 | SNA /BLANK BECOMES # | |
3149 | TAD (43 | |
3150 | ESDNLP, JMS I [R6L | |
3151 | DCA EQUN+2 | |
3152 | CDF FLD1 | |
3153 | TAD I X11 /GET NEXT PAIR FROM SYMBOL TABLE | |
3154 | DCA EQUN+3 /HOLD IT | |
3155 | CDF FLD0 | |
3156 | TAD EQUN+3 | |
3157 | JMS I [R6R /GET LEFT CHAR | |
3158 | TAD EQUN+2 /COMBINE THEM | |
3159 | DCA I X13 | |
3160 | TAD EQUN+3 /GET RIGHT HALF OF PAIR | |
3161 | AND [77 | |
3162 | ISZ LTEMP | |
3163 | JMP ESDNLP | |
3164 | AND [37 /DROP FORCE BIT FROM TYPE | |
3165 | DCA EQUN+3 | |
3166 | CDF FLD1 | |
3167 | TAD I X11 /HIGH VALUE | |
3168 | DCA EQUN+4 | |
3169 | TAD I X11 /LOW VALUE | |
3170 | DCA EQUN+5 | |
3171 | CDF FLD0 | |
3172 | TAD EXTMP2 /WHAT PASS IS THIS? | |
3173 | RAR /LINK 0 IF FIRST, 1 IF SECOND | |
3174 | SNL CLA | |
3175 | JMP NOENTS /FIRST, ENTRYS NOT OUTPUT | |
3176 | TAD EQUN+3 /OUTPUT ENTRIES ONLY ON 2ND | |
3177 | CLL RAR | |
3178 | SNA CLA | |
3179 | SNL | |
3180 | JMP ESDLND /NO GO | |
3181 | JMP ESDOUT /YES, PUT IT | |
3182 | NOENTS, TAD EQUN+3 /EXT, COMM, OR SCTN | |
3183 | CLL RAR | |
3184 | SNA /SKIP IF OK | |
3185 | JMP ESDLND /UNDEFINED OR ENTRY | |
3186 | RAR | |
3187 | SNA CLA | |
3188 | JMP ESDOUT /IF EXTERN, DO IT | |
3189 | TAD EQUN+4 /IF SECTION, CHECK | |
3190 | AND [7 /THAT LENGTH | |
3191 | SNA /IS NON-ZERO | |
3192 | TAD EQUN+5 | |
3193 | SNA CLA | |
3194 | JMP ESDLND /ZERO LEN JUST GETS IN THE WAY | |
3195 | ESDOUT, TAD (EQUN-1 | |
3196 | DCA X13 | |
3197 | TAD (-6 | |
3198 | DCA LTEMP | |
3199 | TAD I X13 /GET OUTPUT WORD | |
3200 | DCA I OUTPTR | |
3201 | ISZ LTEMP | |
3202 | JMP .-3 /6-WORD ENTRIES | |
3203 | TAD OUTPTR | |
3204 | TAD OUTBUF | |
3205 | SPA CLA | |
3206 | JMP ESDLND /NOT END OF BLOCK YET | |
3207 | JMS I (OUTBLK | |
3208 | TAD (3 | |
3209 | DCA I OUTPTR | |
3210 | DCA I OUTPTR | |
3211 | DCA I OUTPTR | |
3212 | DCA I OUTPTR | |
3213 | ESDLND, ISZ EXTMP /GO THRU ESD LIST | |
3214 | JMP ESDLUP | |
3215 | ISZ EXTMP2 /WHOLE LIST TWO PASSES | |
3216 | JMP ESDSCN | |
3217 | TAD (-6 /THEN STORE END-OF-ESD | |
3218 | DCA LTEMP | |
3219 | DCA I OUTPTR | |
3220 | ISZ LTEMP | |
3221 | JMP .-2 | |
3222 | TAD (377 /FORCE BLOCK OUTPUT | |
3223 | JMS I (FULCHK | |
3224 | CDF FLD1 /THEN DEFAULT ORG | |
3225 | TAD I (LMAIN /IF MAIN LEN .NE. 0 | |
3226 | AND [7 | |
3227 | SNA | |
3228 | TAD I (LMAIN+1 | |
3229 | CDF FLD0 | |
3230 | SNA CLA | |
3231 | JMP I (RESET /FIRST SECTION WILL GET IT | |
3232 | TAD (TTORG+1 /ORG TO ZERO OF MAIN | |
3233 | DCA I OUTPTR | |
3234 | DCA I OUTPTR | |
3235 | DCA I OUTPTR | |
3236 | JMP I (RESET | |
3237 | OUTBUF, 1001 | |
3238 | PAGE /> | |
3239 | \f/ | |
3240 | / INITIALIZATION CODE | |
3241 | / | |
3242 | BEGIN, JMP CHNIN /IF ENTERED BY CHAIN | |
3243 | GCMND, CIF 10 /IF ENTERED BY .R, ETC | |
3244 | JMS I USR /USR IS LEFT OVER | |
3245 | 5 /DECODE | |
3246 | IFZERO RALF < | |
3247 | 620 /DEFAULT EXT = .FP> | |
3248 | IFNZRO RALF < | |
3249 | 2201 /DEFAULT EXT = .RA> | |
3250 | DCA I (RETSYS /NO NEED FOR IT IF NOT CHAINED | |
3251 | CHNIN, JMS I (7607 | |
3252 | 4100 /TEMP WRITE OUT OVERLAY | |
3253 | 6600 /NOW AT 6600 | |
3254 | 40 /TO SYS SCRATCH BLK 40 | |
3255 | JMP I (7605 /ERROR | |
3256 | CDF 10 | |
3257 | IFNZRO RALF < | |
3258 | TAD I [7600 /BIN FILE UNIT | |
3259 | AND NP17 | |
3260 | SNA /IS THERE ONE? | |
3261 | JMP DEFBIN /NO, SET DEFAULT | |
3262 | TAD (7757 /POINT TO DEV CTRL WORD | |
3263 | DCA WORD1 | |
3264 | TAD I WORD1 | |
3265 | SPA CLA | |
3266 | JMP OKBIN /FILE-STRUCTURED, OK | |
3267 | CDF 0 | |
3268 | JMS I (PRTXT /TYPE MESSAGE | |
3269 | TXBBIN-1 | |
3270 | -TXBLN | |
3271 | JMS I [CRLF | |
3272 | JMP GCMND /TRY AGAIN | |
3273 | / | |
3274 | DEFBIN, CLA IAC /DEFAULT BIN UNIT IS SYS | |
3275 | DCA I [7600 /SET UNIT | |
3276 | TAD [7600 | |
3277 | DCA X10 /SET POINTER | |
3278 | TAD (0617 /FO | |
3279 | DCA I X10 | |
3280 | TAD (2224 /RT | |
3281 | DCA I X10 | |
3282 | TAD (2216 /RN | |
3283 | DCA I X10 /FORTRN. | |
3284 | DCA I X10 | |
3285 | CDF 0 | |
3286 | JMP I (NOEXT /NOW, OPEN THE FILE> | |
3287 | \fOKBIN, CDF 0 /HAVE TO GO TO ANOTHER PAGE | |
3288 | JMP I (NOKBIN /ONLY SO MANY PATCHES TO A PAGE | |
3289 | GBIN, CDF 10 | |
3290 | TAD I (7644 | |
3291 | AND (20 | |
3292 | SNA CLA | |
3293 | ISZ SYONLY /=NO SLASH T | |
3294 | CDF 0 | |
3295 | JMS I (NEW /**SEE IF NEED 2 PG HANDLER | |
3296 | 7600 | |
3297 | JMS I (OOPEN | |
3298 | DCA BFILE | |
3299 | IFNZRO RALF < | |
3300 | TAD R41 /L OR G SWITCH** | |
3301 | CDF 10 | |
3302 | AND I (7643 /TEST /L OR /G SWITCH | |
3303 | CDF 0 | |
3304 | SNA CLA /** | |
3305 | JMP KCHN /KILL CHAIN, IT'S SET | |
3306 | CIF 10 | |
3307 | CLA IAC /UNIT IS SYS | |
3308 | JMS I USR | |
3309 | 2 /LOOKUP | |
3310 | LBLK, LDRNAM /LOADER.SV | |
3311 | R41, 41 /** | |
3312 | JMP KCHN /NO FIND, NO CALL | |
3313 | TAD LBLK /STARTING BLOCK | |
3314 | DCA I (LDRBLK /FOR CHAIN | |
3315 | TAD I (OUBLK /OUTPUT STARTING BLOCK | |
3316 | DCA I (PASBLK /SAVED FOR CHAIN TO LOADER | |
3317 | CLA CMA /ENABLE CHAIN | |
3318 | KCHN, DCA I (CHNSW /OR KILL IT, WHATEVER> | |
3319 | JMS I (INCHK /NOW CHECK INPUT DEVICES FOR 2 PG HANDLERS | |
3320 | JMS I (INNEWF /GET INPUT HANDLER | |
3321 | CLA CMA | |
3322 | DCA I (INCHCT /SET INITIAL COUNT | |
3323 | TAD NP7700 | |
3324 | DCA USR /FROM NOW ON, USE THE HIGH CALL | |
3325 | \f JMS I (NEW | |
3326 | 7605 /CHECK LIST DEV TOO** | |
3327 | CDF 10 | |
3328 | TAD I (7611 /LST FILE EXT | |
3329 | SNA | |
3330 | TAD (1423 /LS DEFAULT | |
3331 | DCA I (7611 | |
3332 | TAD I (7666 /GET DATE | |
3333 | DCA WORD1 | |
3334 | / | |
3335 | / MOVE SYMBOL TABLE TO ITS PROPER LOCATION | |
3336 | / | |
3337 | TAD (1777 | |
3338 | DCA X10 /LOADED ADDRESS OF SYMBOL TABLE | |
3339 | CLA CMA | |
3340 | DCA X11 /WE MOVE IT TO ASSEMBLED ADDRESS | |
3341 | TAD (-FREE /LENGTH OF SYMBOL TABLE | |
3342 | DCA WORD2 /SET COUNT | |
3343 | TAD I X10 | |
3344 | DCA I X11 /THIS SAVES SWAPS OF USR | |
3345 | ISZ WORD2 | |
3346 | JMP .-3 | |
3347 | CDF 0 | |
3348 | JMP I (GDATE /CHECK FOR FPP PRESENCE** | |
3349 | PAGE | |
3350 | \f/ | |
3351 | / PUT THE DATE INTO THE PAGE HEADING | |
3352 | / | |
3353 | GDATE, TAD (1000 | |
3354 | DCA I (7746 /SET NO-RESTART BIT | |
3355 | /PUT VERNUM IN TITLE LINE | |
3356 | TAD VMSG | |
3357 | DCA I (VMTXT | |
3358 | TAD VMSG+1 /PATCH LEVEL | |
3359 | DCA I (VMTXT+1 | |
3360 | DCA OCNT /CLEAR OCNT | |
3361 | TAD WORD1 /RE-GET DATE | |
3362 | SNA | |
3363 | JMP I (NEWLIN /GOLLY, AND ALL THIS CODE WASTED | |
3364 | AND (370 | |
3365 | CLL RTR | |
3366 | RAR | |
3367 | TAD (-12 | |
3368 | SPA | |
3369 | JMP .+3 | |
3370 | ISZ OCNT | |
3371 | JMP .-4 | |
3372 | TAD (72 /60+12 | |
3373 | DCA OTEMP | |
3374 | TAD (TITDAT-1 | |
3375 | DCA X11 | |
3376 | TAD OCNT | |
3377 | JMS I (R6L | |
3378 | SZA | |
3379 | TAD (6000 | |
3380 | TAD OTEMP | |
3381 | DCA I X11 | |
3382 | TAD WORD1 | |
3383 | AND (7400 /MONTH | |
3384 | JMS I (R6L | |
3385 | TAD (MONTHS-3 | |
3386 | DCA X10 | |
3387 | TAD I X10 | |
3388 | DCA I X11 | |
3389 | TAD I X10 | |
3390 | DCA I X11 | |
3391 | DCA OCNT | |
3392 | TAD WORD1 | |
3393 | AND [7 | |
3394 | DCA OTEMP | |
3395 | TAD I (7777 | |
3396 | AND (600 | |
3397 | RTR CLL | |
3398 | RTR | |
3399 | TAD OTEMP | |
3400 | TAD (106 | |
3401 | \f TAD (-12 | |
3402 | SPA | |
3403 | JMP .+3 | |
3404 | ISZ OCNT | |
3405 | JMP .-4 | |
3406 | TAD (72 | |
3407 | DCA OTEMP | |
3408 | TAD (5560 | |
3409 | TAD OCNT | |
3410 | DCA I 11 | |
3411 | TAD OTEMP | |
3412 | JMS I (R6L | |
3413 | TAD (40 | |
3414 | DCA I X11 | |
3415 | JMP I (NEWLIN | |
3416 | VMSG, VNUM&70^10+VNUM&707+6060 | |
3417 | PATCH&77^100+40 | |
3418 | IFNZRO RALF < | |
3419 | LDRNAM, TEXT "LOAD@@SV" | |
3420 | TXBBIN, TEXT "BIN OUT DEV NOT FILE-STRUCTURED" | |
3421 | TXBLN= .-TXBBIN > | |
3422 | MONTHS, TEXT "-JAN-FEB-MAR-APR-MAY-JUN-JUL-AUG-SEP-OCT-NOV-DEC" | |
3423 | \f PAGE | |
3424 | /PAGE FOR NEW CODE REQUIRED FOR OS/8 FORTRAN | |
3425 | NEW, 0 | |
3426 | TAD NT2 /CHECK IF ALREADY CHECKED | |
3427 | SZA CLA | |
3428 | JMP NEWDON | |
3429 | TAD I NEW /NO. GET THE DEV TO CHECK | |
3430 | DCA NTEMP | |
3431 | CDF 10 | |
3432 | TAD I NTEMP /GET DEV.NUM | |
3433 | AND [17 | |
3434 | DCA NT1 /INCHK NEEDS TO KNOW TOO | |
3435 | TAD NT1 | |
3436 | SNA /IF 0,THEN NO DEVICE | |
3437 | JMP NEWDON | |
3438 | DCA NTEMP | |
3439 | CLA CMA | |
3440 | TAD I (37 /GET PTR TO DEV TBL | |
3441 | TAD NTEMP | |
3442 | DCA NTEMP /PTS TO ENTRY IN DEV TBL | |
3443 | TAD I NTEMP | |
3444 | CDF 0 | |
3445 | SMA CLA | |
3446 | JMP FIX /NOT A 2 PG HANDLER | |
3447 | TAD (6377 /FIX ALL LOCATIONS THAT REFER TO | |
3448 | /THE BUFFER VARIABLES. | |
3449 | /THE CHANGES ARE: | |
3450 | /OUBUF=6000,LINE=6400,INDEVH=6600,OUDEVH=7200 | |
3451 | /INRECS=1,INCTL=200 | |
3452 | DCA I (BLINE | |
3453 | TAD (6000 | |
3454 | DCA I (NOUBUF | |
3455 | IFNZRO RALF < | |
3456 | TAD (5777 | |
3457 | DCA I (MOUBUF > /FLAP DOESN'T USE ALL THE RALF LOCNS | |
3458 | TAD (6601 | |
3459 | DCA I (NINDEV | |
3460 | TAD (201 | |
3461 | DCA I (NINCTL | |
3462 | JMS TPNSH /TWO-PAGE NON-SYSTEM HANDLER | |
3463 | DCA I (NINREC | |
3464 | TAD (6000 | |
3465 | DCA I (LOUBUF | |
3466 | TAD (7201 | |
3467 | DCA I (NOUDEV | |
3468 | TAD (5777 | |
3469 | DCA I (OUTPTR | |
3470 | TAD (6377 | |
3471 | DCA I (CHRPTR | |
3472 | IFNZRO RALF < | |
3473 | TAD (1401 | |
3474 | DCA I (KOUBUF > | |
3475 | TAD (7201 | |
3476 | FIX, DCA NT2 /SET SO IF DID 2 PGS., DONT DO IT AGAIN | |
3477 | NEWDON, ISZ NEW /GET CORRECT ADDR | |
3478 | JMP I NEW | |
3479 | NTEMP, 0 | |
3480 | NT1, 0 /DEV. NUM. | |
3481 | NT2, 0 /0 IF NO 2PG HANDLERS YET | |
3482 | INCHK, 0 /CHECK THE INPUT DEVICES | |
3483 | JMS NEW | |
3484 | INLOC, 7617 | |
3485 | TAD INLOC | |
3486 | DCA NEXTIN | |
3487 | ANOTH, TAD NT1 | |
3488 | SNA CLA /SKIP IF FILE USED | |
3489 | JMP I INCHK | |
3490 | TAD NT2 | |
3491 | SZA CLA /SKIP IF STILL 1 PAGE HANDLERS | |
3492 | JMP I INCHK | |
3493 | TAD NP2 | |
3494 | TAD NEXTIN | |
3495 | DCA NEXTIN /INCREMENT TO PT TO NEXT INPUT FILR | |
3496 | JMS NEW | |
3497 | NEXTIN, 0 | |
3498 | JMP ANOTH | |
3499 | NP2, 2 | |
3500 | NOKBIN, CDF 10 /BELONGS WITH INIT CODE | |
3501 | TAD I [7600 | |
3502 | AND NP17 | |
3503 | TAD (7646 | |
3504 | DCA WORD1 /CREATE POINTER INTO DEV TBL | |
3505 | TAD I WORD1 | |
3506 | CDF 0 | |
3507 | TAD (-7607 | |
3508 | SNA CLA /IF ITS SYS, NO PROBLEMS | |
3509 | DCA I (RETSYS /SO CAN ZERO CALL TO DELETE ROUTINE | |
3510 | CDF 10 | |
3511 | TAD I (7604 | |
3512 | SZA | |
3513 | JMP FEND /AN EXT WAS SPECIFIED | |
3514 | IFZERO RALF < | |
3515 | TAD (0216 /.BN DEFAULT FOR FLAP | |
3516 | JMP FEND > | |
3517 | IFNZRO RALF < | |
3518 | NOEXT, CDF 10 | |
3519 | TAD I (7643 /CHECK IF L OR G SPEC | |
3520 | AND L41 | |
3521 | SNA CLA | |
3522 | TAD (0610 /NO-NEEDS RL EXT | |
3523 | TAD (1404 > /YES-NEEDS LD | |
3524 | FEND, DCA I (7604 | |
3525 | CDF 0 | |
3526 | JMP I (GBIN | |
3527 | L41, 41 | |
3528 | TPNSH, 0 | |
3529 | TAD (1401 /CHANGE OUTPUT BUFFER | |
3530 | DCA I (OUTBUF | |
3531 | IAC | |
3532 | JMP I TPNSH | |
3533 | / | |
3534 | PAGE | |
3535 | \fLDADR, RELOC OVBUFR | |
3536 | TAD ERRORS /ERROR COUNT | |
3537 | JMS I (DECOUT | |
3538 | JMS I (PRTXT /"ERRORS" | |
3539 | TXERR-1 | |
3540 | -TXELN | |
3541 | JMS I [CRLF | |
3542 | IFZERO RALF < | |
3543 | TAD PASSNO /IF NOT LISTING PASS | |
3544 | SPA SNA CLA /ERROR COUNT IS ENUF | |
3545 | JMP I (RETSYS > | |
3546 | TAD NEXT | |
3547 | TAD (-FREE+1 /DON'T COUNT BASIC SYMBOLS | |
3548 | CLL RAR /DIVIDE | |
3549 | JMS I (OVER3 /BY 6 | |
3550 | JMS I (DECOUT | |
3551 | JMS I (PRTXT /"SYMBOLS, " | |
3552 | TXSYM-1 | |
3553 | -TXSLN | |
3554 | IFZERO RALF < | |
3555 | TAD LINKS | |
3556 | JMS I (DECOUT | |
3557 | JMS I (PRTXT /"LINKS" | |
3558 | TXLNK-1 | |
3559 | -TXLLN > | |
3560 | IFNZRO RALF < | |
3561 | TAD ABREFS | |
3562 | JMS I (DECOUT | |
3563 | JMS I (PRTXT /"ABS REFS" | |
3564 | TXABR-1 | |
3565 | -TXALN > | |
3566 | JMS I [CRLF | |
3567 | TAD (-33 /27 BUCKETS | |
3568 | DCA LTEMP | |
3569 | DCA BUCKET | |
3570 | CLA CMA | |
3571 | DCA OPCODE /SYMBOLS PER LINE COUNTER | |
3572 | \fSTPRNT, TAD BUCKET | |
3573 | DCA EXTMP /BUCKET START ADDRESS | |
3574 | LUPBKT, CDF FLD1 | |
3575 | TAD I EXTMP /WAS THAT LAST SYMBOL ? | |
3576 | SNA | |
3577 | JMP NXTBKT /YES, GO GET NEXT BUCKET | |
3578 | DCA EXTMP /SAVE LINK ADDR | |
3579 | TAD EXTMP | |
3580 | DCA X14 /SET UP POINTER FOR NAME | |
3581 | ISZ OPCODE /IS LINE FULL? | |
3582 | JMP .+4 /NO | |
3583 | TAD (-4 | |
3584 | DCA OPCODE | |
3585 | JMS I [CRLF | |
3586 | TAD BUCKET | |
3587 | SNA /WATCH FOR # | |
3588 | TAD (43 | |
3589 | JMS I [PRINT2 /PRINT BUCKET (FIRST) CHAR | |
3590 | CDF FLD1 | |
3591 | TAD I X14 /SYMBOL | |
3592 | JMS I [PRINT2 /PRINT 2 AND 3 | |
3593 | CDF FLD1 | |
3594 | TAD I X14 | |
3595 | JMS I [PRINT2 /PRINT 4 AND 5 | |
3596 | CDF FLD1 | |
3597 | TAD I X14 | |
3598 | IFNZRO RALF < | |
3599 | DCA OTEMP /HOLD | |
3600 | TAD OTEMP > | |
3601 | AND [7700 /PRINT 6 AND BLANK | |
3602 | JMS I [PRINT2 | |
3603 | IFNZRO RALF < | |
3604 | TAD OTEMP /GET TYPE | |
3605 | AND [17 | |
3606 | TAD (TYPCOD /POINT TO TABLE | |
3607 | DCA OTEMP | |
3608 | TAD I OTEMP /GET TYPE INDICATOR | |
3609 | JMS I [PRINT2 > | |
3610 | CDF FLD1 | |
3611 | TAD I X14 /PRINT FIRST DIGIT | |
3612 | AND [7 | |
3613 | JMS I (PDIG /FIELD DIGIT | |
3614 | CDF FLD1 | |
3615 | TAD I X14 /LOW 12 BITS | |
3616 | JMS I [OCTOUT | |
3617 | JMS I [PRINT2 /TWO BLANKS | |
3618 | JMP LUPBKT | |
3619 | \fNXTBKT, ISZ BUCKET /NEXT BUCKET CHAR | |
3620 | CDF FLD0 | |
3621 | ISZ LTEMP /INCREMENT COUNT | |
3622 | JMP STPRNT | |
3623 | JMS I [CRLF /DO FINAL CRLF** | |
3624 | TAD (214 /DO NOT PAGEJ | |
3625 | JMS I PC /THAT WOULD GIVE A HEADING | |
3626 | JMS I (OCLOSE | |
3627 | JMP I (RETSYS /FINISH IT OFF | |
3628 | PAGE | |
3629 | RELOC | |
3630 | \f/ PAGE 0 LITERALS | |
3631 | FIELD 1 | |
3632 | *10000 | |
3633 | \f/ | |
3634 | / SYMBOL TABLE IS IN FIELD ONE. | |
3635 | / EACH ENTRY HAS THE FOLLOWING FORMAT | |
3636 | / | |
3637 | / 0: POINTER TO NEXT ENTRY IN BUCKET, 0 IF LAST | |
3638 | / 1: 2ND AND 3RD CHARS OF SYMBOL | |
3639 | / 2: 4TH AND 5TH | |
3640 | / 3: 6TH AND TYPE CODE | |
3641 | / 4: ESD # AND HIGH-ORDER VALUE | |
3642 | / 5: LOW-ORDER VALUE | |
3643 | / | |
3644 | USER=1 | |
3645 | XTERN=2 | |
3646 | COMMN=3 | |
3647 | SECTN=4 | |
3648 | PSUDO=5 | |
3649 | PDPMR=6 | |
3650 | FPPMRF=7 | |
3651 | FPPSF1=10 /JXN, TRAP | |
3652 | FPPSF2=11 /JA, SETB, SETX | |
3653 | FPPSF3=12 /CLA, EXIT, NEG, NOP, NORM, | |
3654 | /PAUS, JAC, STARTD, STARTF | |
3655 | FPPSF4=13 /ALN, ATX, XTA | |
3656 | FPPSF5=14 /ADDX, LDX | |
3657 | FPPMRI=15 /% | |
3658 | FPPMRS=16 /' | |
3659 | FPPMRL=17 /# | |
3660 | PDPOP=20 | |
3661 | / | |
3662 | / THE FOLLOWING CODE TRICKS THE LOADER INTO PUTTING | |
3663 | / THE SYMBOL TABLE AT 2000, WHERE THE USR IS NOT, | |
3664 | / THUS SAVING SOME SWAPPING AT LOAD AND INITIALIZE. | |
3665 | / IT IS MOVED TO THE ASSEMBLED ADDRESS AFTER WE'RE | |
3666 | / DONE WITH THE USR, AND BEFORE THE FIRST PASS BEGINS | |
3667 | / | |
3668 | *12000 | |
3669 | NOPUNCH | |
3670 | *10000 | |
3671 | ENPUNCH | |
3672 | \f/ | |
3673 | / BUCKETS FOR USER-DEFINED SYMBOLS | |
3674 | / AND PDP8 OPERATES AND IOTS | |
3675 | / | |
3676 | PNDL | |
3677 | ZBLOCK 33 | |
3678 | \f/ | |
3679 | / BUCKETS FOR INTERNALLY DEFINED SYMBOLS | |
3680 | / | |
3681 | AL | |
3682 | BL | |
3683 | CL | |
3684 | DL | |
3685 | EL | |
3686 | FL | |
3687 | GL | |
3688 | HL | |
3689 | IL | |
3690 | JL | |
3691 | KL | |
3692 | LL | |
3693 | ML | |
3694 | NL | |
3695 | OL | |
3696 | PL | |
3697 | QL | |
3698 | RL | |
3699 | SL | |
3700 | TL | |
3701 | UL | |
3702 | VL | |
3703 | WL | |
3704 | XL | |
3705 | YL | |
3706 | ZL | |
3707 | \fAL, .+5 /ADDR | |
3708 | 0404;2200 | |
3709 | FPPSF2 | |
3710 | 0 | |
3711 | .+5 /ADDX | |
3712 | 0404;3000 | |
3713 | FPPSF5 | |
3714 | 0110 | |
3715 | .+5 /ALN | |
3716 | 1416;0 | |
3717 | FPPSF4 | |
3718 | 0010 | |
3719 | IFZERO RALF < | |
3720 | .+5 /AND | |
3721 | 1604;0 | |
3722 | PDPMR | |
3723 | AND 0 > | |
3724 | IFNZRO RALF < | |
3725 | .+5 /AND . | |
3726 | 1604;0 | |
3727 | PDPMR | |
3728 | 200 | |
3729 | .+5 /AND% | |
3730 | 1604;0 | |
3731 | PDPMR+500 | |
3732 | 600 | |
3733 | .+5 /ANDZ | |
3734 | 1604;3200 | |
3735 | PDPMR | |
3736 | 0 | |
3737 | .+5 /ANDZ% | |
3738 | 1604;3200 | |
3739 | PDPMR+500 | |
3740 | 400 > | |
3741 | 0 /ATX | |
3742 | 2430;0 | |
3743 | FPPSF4 | |
3744 | 0020 | |
3745 | BL, 0 /BASE | |
3746 | 0123;0500 | |
3747 | PSUDO | |
3748 | BASEX | |
3749 | CL, .+5 /CDF | |
3750 | 0406;0 | |
3751 | PDPOP | |
3752 | CDF | |
3753 | .+5 /CIA | |
3754 | 1101;0 | |
3755 | PDPOP | |
3756 | CIA | |
3757 | .+5 /CIF | |
3758 | 1106;0 | |
3759 | PDPOP | |
3760 | CIF | |
3761 | .+5 /CLA | |
3762 | 1401;0 | |
3763 | PDPOP | |
3764 | CLA | |
3765 | .+5 /CLL | |
3766 | 1414;0 | |
3767 | PDPOP | |
3768 | CLL | |
3769 | .+5 /CMA | |
3770 | 1501;0 | |
3771 | PDPOP | |
3772 | CMA | |
3773 | IFZERO RALF < 0 > | |
3774 | IFNZRO RALF < .+5 > | |
3775 | 1514;0 /CML | |
3776 | PDPOP | |
3777 | CML | |
3778 | IFNZRO RALF < | |
3779 | .+5 /COMMON | |
3780 | 1715;1517 | |
3781 | PSUDO+1600 | |
3782 | COMMX | |
3783 | 0 /COMMZ (8-MODE COMM SECT) | |
3784 | 1715;1532 | |
3785 | PSUDO | |
3786 | SECT8X-1 > | |
3787 | \fDL, IFZERO RALF < | |
3788 | .+5 /DCA | |
3789 | 0301;0 | |
3790 | PDPMR | |
3791 | DCA 0 > | |
3792 | IFNZRO RALF < | |
3793 | .+5 /DCA . | |
3794 | 0301;0 | |
3795 | PDPMR | |
3796 | 3200 | |
3797 | .+5 /DCA% | |
3798 | 0301;0 | |
3799 | PDPMR+500 | |
3800 | 3600 | |
3801 | .+5 /DCAZ | |
3802 | 0301;3200 | |
3803 | PDPMR | |
3804 | DCA 0 | |
3805 | .+5 /DCAZ% | |
3806 | 0301;3200 | |
3807 | PDPMR+500 | |
3808 | DCA I 0 > | |
3809 | IFZERO RALF < 0 > /DECIMAL | |
3810 | IFNZRO RALF < .+5 > | |
3811 | 0503;1115 | |
3812 | PSUDO+0100 | |
3813 | DECX | |
3814 | IFNZRO RALF < 0 /DPCHK | |
3815 | 2003;1013 | |
3816 | PSUDO | |
3817 | DPCHKX > | |
3818 | EL, .+5 /E | |
3819 | 0;0 | |
3820 | PSUDO | |
3821 | EX | |
3822 | .+5 /END | |
3823 | 1604;0 | |
3824 | PSUDO | |
3825 | ENDX | |
3826 | IFZERO RALF < | |
3827 | 0 /ENPUNCH | |
3828 | 1620;2516 | |
3829 | PSUDO+0300 | |
3830 | ENPNCX > | |
3831 | IFNZRO RALF < | |
3832 | .+5 /ENTRY | |
3833 | 1624;2231 | |
3834 | PSUDO | |
3835 | ENTRX | |
3836 | 0 /EXTERN | |
3837 | 3024;0522 | |
3838 | PSUDO+1600 | |
3839 | EXTRNX > | |
3840 | \fFL, .+5 /F | |
3841 | 0;0 | |
3842 | PSUDO | |
3843 | FX | |
3844 | .+5 /FADD | |
3845 | 0104;0400 | |
3846 | FPPMRF | |
3847 | 1000 | |
3848 | .+5 /FADD# | |
3849 | 0104;0400 | |
3850 | FPPMRL+300 | |
3851 | 1000 | |
3852 | .+5 /FADD% | |
3853 | 0104;0400 | |
3854 | FPPMRI+500 | |
3855 | 1000 | |
3856 | .+5 /FADD' | |
3857 | 0104;0400 | |
3858 | FPPMRS+700 | |
3859 | 1000 | |
3860 | .+5 /FADDM | |
3861 | 0104;0415 | |
3862 | FPPMRF | |
3863 | 5000 | |
3864 | .+5 /FADDM# | |
3865 | 0104;0415 | |
3866 | FPPMRL+300 | |
3867 | 5000 | |
3868 | .+5 /FADDM% | |
3869 | 0104;0415 | |
3870 | FPPMRI+500 | |
3871 | 5000 | |
3872 | .+5 /FADDM' | |
3873 | 0104;0415 | |
3874 | FPPMRS+700 | |
3875 | 5000 | |
3876 | .+5 /FCLA | |
3877 | 0314;0100 | |
3878 | FPPSF3 | |
3879 | 0002 | |
3880 | \f .+5 /FDIV | |
3881 | 0411;2600 | |
3882 | FPPMRF | |
3883 | 3000 | |
3884 | .+5 /FDIV# | |
3885 | 0411;2600 | |
3886 | FPPMRL+300 | |
3887 | 3000 | |
3888 | .+5 /FDIV% | |
3889 | 0411;2600 | |
3890 | FPPMRI+500 | |
3891 | 3000 | |
3892 | .+5 /FDIV' | |
3893 | 0411;2600 | |
3894 | FPPMRI+700 | |
3895 | 3000 | |
3896 | .+5 /FEXIT | |
3897 | 0530;1124 | |
3898 | FPPSF3 | |
3899 | 0 | |
3900 | IFNZRO RALF < | |
3901 | .+5 /FIELD1 (8-MODE FIELD1 SECT) | |
3902 | 1105;1404 | |
3903 | PSUDO+6100 | |
3904 | SECT8X-2 > | |
3905 | .+5 /FLDA | |
3906 | 1404;0100 | |
3907 | FPPMRF | |
3908 | 0000 | |
3909 | .+5 /FLDA# | |
3910 | 1404;0100 | |
3911 | FPPMRL+300 | |
3912 | 0000 | |
3913 | .+5 /FLDA% | |
3914 | 1404;0100 | |
3915 | FPPMRI+500 | |
3916 | 0000 | |
3917 | .+5 /FLDA' | |
3918 | 1404;0100 | |
3919 | FPPMRS+700 | |
3920 | 0000 | |
3921 | \f .+5 /FMUL | |
3922 | 1525;1400 | |
3923 | FPPMRF | |
3924 | 4000 | |
3925 | .+5 /FMUL# | |
3926 | 1525;1400 | |
3927 | FPPMRL+300 | |
3928 | 4000 | |
3929 | .+5 /FMUL% | |
3930 | 1525;1400 | |
3931 | FPPMRI+500 | |
3932 | 4000 | |
3933 | .+5 /FMUL' | |
3934 | 1525;1400 | |
3935 | FPPMRS+700 | |
3936 | 4000 | |
3937 | .+5 /FMULM | |
3938 | 1525;1415 | |
3939 | FPPMRF | |
3940 | 7000 | |
3941 | .+5 /FMULM# | |
3942 | 1525;1415 | |
3943 | FPPMRL+300 | |
3944 | 7000 | |
3945 | .+5 /FMULM% | |
3946 | 1525;1415 | |
3947 | FPPMRI+500 | |
3948 | 7000 | |
3949 | .+5 /FMULM' | |
3950 | 1525;1415 | |
3951 | FPPMRS+700 | |
3952 | 7000 | |
3953 | .+5 /FNEG | |
3954 | 1605;0700 | |
3955 | FPPSF3 | |
3956 | 0003 | |
3957 | .+5 /FNOP | |
3958 | 1617;2000 | |
3959 | FPPSF3 | |
3960 | 0040 | |
3961 | \f .+5 /FNORM | |
3962 | 1617;2215 | |
3963 | FPPSF3 | |
3964 | 0004 | |
3965 | .+5 /FPAUSE | |
3966 | 2001;2523 | |
3967 | FPPSF3+0500 | |
3968 | 0001 | |
3969 | .+5 /FPCOM | |
3970 | 2003;1715 | |
3971 | PDPOP | |
3972 | 6553 | |
3973 | .+5 /FPHLT | |
3974 | 2010;1424 | |
3975 | PDPOP | |
3976 | 6554 | |
3977 | .+5 /FPICL | |
3978 | 2011;0314 | |
3979 | PDPOP | |
3980 | 6552 | |
3981 | .+5 /FPINT | |
3982 | 2011;1624 | |
3983 | PDPOP | |
3984 | 6551 | |
3985 | .+5 /FPIST | |
3986 | 2011;2324 | |
3987 | PDPOP | |
3988 | 6557 | |
3989 | .+5 /FPRST | |
3990 | 2022;2324 | |
3991 | PDPOP | |
3992 | 6556 | |
3993 | .+5 /FPST | |
3994 | 2023;2400 | |
3995 | PDPOP | |
3996 | 6555 | |
3997 | .+5 /FSTA | |
3998 | 2324;0100 | |
3999 | FPPMRF | |
4000 | 6000 | |
4001 | .+5 /FSTA# | |
4002 | 2324;0100 | |
4003 | FPPMRL+300 | |
4004 | 6000 | |
4005 | .+5 /FSTA% | |
4006 | 2324;0100 | |
4007 | FPPMRI+500 | |
4008 | 6000 | |
4009 | .+5 /FSTA' | |
4010 | 2324;0100 | |
4011 | FPPMRS+700 | |
4012 | 6000 | |
4013 | .+5 /FSUB | |
4014 | 2325;0200 | |
4015 | FPPMRF | |
4016 | 2000 | |
4017 | .+5 /FSUB# | |
4018 | 2325;0200 | |
4019 | FPPMRL+300 | |
4020 | 2000 | |
4021 | .+5 /FSUB% | |
4022 | 2325;0200 | |
4023 | FPPMRI+500 | |
4024 | 2000 | |
4025 | 0 /FSUB' | |
4026 | 2325;0200 | |
4027 | FPPMRS+700 | |
4028 | 2000 | |
4029 | \fGL= 0 /AINT NONE | |
4030 | HL, 0 /HLT | |
4031 | 1424;0 | |
4032 | PDPOP | |
4033 | HLT | |
4034 | IL, .+5 /IAC | |
4035 | 0103;0 | |
4036 | PDPOP | |
4037 | IAC | |
4038 | .+5 /IFFLAP | |
4039 | 0606;1401 | |
4040 | PSUDO+2000 | |
4041 | IFZERO RALF <TRUE> | |
4042 | IFNZRO RALF <FALSE> | |
4043 | .+5 /IFNDEF | |
4044 | 0616;0405 | |
4045 | PSUDO+0600 | |
4046 | IFNDFX | |
4047 | .+5 /IFNEG | |
4048 | 0616;0507 | |
4049 | PSUDO | |
4050 | IFNEGX | |
4051 | .+5 /IFNSW | |
4052 | 0616;2327 | |
4053 | PSUDO | |
4054 | IFNSWX | |
4055 | .+5 /IFNZRO | |
4056 | 0616;3222 | |
4057 | PSUDO+1700 | |
4058 | IFNZRX | |
4059 | \f .+5 /IFPOS | |
4060 | 0620;1723 | |
4061 | PSUDO | |
4062 | IFPOSX | |
4063 | .+5 /IFRALF | |
4064 | 0622;0114 | |
4065 | PSUDO+0600 | |
4066 | IFNZRO RALF <TRUE> | |
4067 | IFZERO RALF <FALSE> | |
4068 | .+5 /IFREF | |
4069 | 0622;0506 | |
4070 | PSUDO | |
4071 | IFREFX | |
4072 | .+5 /IFSW | |
4073 | 0623;2700 | |
4074 | PSUDO | |
4075 | IFSWX | |
4076 | .+5 /IFZERO | |
4077 | 0632;0522 | |
4078 | PSUDO+1700 | |
4079 | IFZROX | |
4080 | .+5 | |
4081 | 1604;0530 | |
4082 | PSUDO | |
4083 | INDXX | |
4084 | .+5 /IOF | |
4085 | 1706;0 | |
4086 | PDPOP | |
4087 | IOF | |
4088 | .+5 /ION | |
4089 | 1716;0 | |
4090 | PDPOP | |
4091 | ION | |
4092 | IFZERO RALF < | |
4093 | 0 /ISZ | |
4094 | 2332;0 | |
4095 | PDPMR | |
4096 | ISZ 0 > | |
4097 | IFNZRO RALF < | |
4098 | .+5 /ISZ . | |
4099 | 2332;0 | |
4100 | PDPMR | |
4101 | ISZ .&7600 | |
4102 | .+5 /ISZ% | |
4103 | 2332;0 | |
4104 | PDPMR+500 | |
4105 | ISZ I .&7600 | |
4106 | .+5 /ISZZ | |
4107 | 2332;3200 | |
4108 | PDPMR | |
4109 | ISZ 0 | |
4110 | 0 /ISZZ% | |
4111 | 2332;3200 | |
4112 | PDPMR+500 | |
4113 | ISZ I 0 > | |
4114 | \fJL, .+5 /JA | |
4115 | 0100;0 | |
4116 | FPPSF2 | |
4117 | 1030 | |
4118 | .+5 /JAC | |
4119 | 0103;0 | |
4120 | FPPSF3 | |
4121 | 0007 | |
4122 | .+5 /JAL | |
4123 | 0114;0 | |
4124 | FPPSF2 | |
4125 | 1070 | |
4126 | .+5 /JEQ | |
4127 | 0521;0 | |
4128 | FPPSF2 | |
4129 | 1000 | |
4130 | .+5 /JGE | |
4131 | 0705;0 | |
4132 | FPPSF2 | |
4133 | 1010 | |
4134 | .+5 /JGT | |
4135 | 0724;0 | |
4136 | FPPSF2 | |
4137 | 1060 | |
4138 | .+5 /JLE | |
4139 | 1405;0 | |
4140 | FPPSF2 | |
4141 | 1020 | |
4142 | .+5 /JLT | |
4143 | 1424;0 | |
4144 | FPPSF2 | |
4145 | 1050 | |
4146 | IFZERO RALF < | |
4147 | .+5 /JMP | |
4148 | 1520;0 | |
4149 | PDPMR | |
4150 | JMP 0 | |
4151 | .+5 /JMS | |
4152 | 1523;0 | |
4153 | PDPMR | |
4154 | JMS 0 > | |
4155 | IFNZRO RALF < | |
4156 | .+5 /JMP . | |
4157 | 1520;0 | |
4158 | PDPMR | |
4159 | JMP .&7600 | |
4160 | .+5 /JMP% | |
4161 | 1520;0 | |
4162 | PDPMR+500 | |
4163 | JMP I .&7600 | |
4164 | .+5 /JMPZ | |
4165 | 1520;3200 | |
4166 | PDPMR | |
4167 | JMP 0 | |
4168 | .+5 /JMPZ% | |
4169 | 1520;3200 | |
4170 | PDPMR+500 | |
4171 | JMP I 0 | |
4172 | .+5 /JMS . | |
4173 | 1523;0 | |
4174 | PDPMR | |
4175 | JMS .&7600 | |
4176 | .+5 /JMS% | |
4177 | 1523;0 | |
4178 | PDPMR+500 | |
4179 | JMS I .&7600 | |
4180 | .+5 /JMSZ | |
4181 | 1523;3200 | |
4182 | PDPMR | |
4183 | JMS 0 | |
4184 | .+5 /JMSZ% | |
4185 | 1523;3200 | |
4186 | PDPMR+500 | |
4187 | JMS I 0 > | |
4188 | \f .+5 /JNE | |
4189 | 1605;0 | |
4190 | FPPSF2 | |
4191 | 1040 | |
4192 | .+5 /JSA | |
4193 | 2301;0 | |
4194 | FPPSF2 | |
4195 | 1120 | |
4196 | .+5 /JSR | |
4197 | 2322;0 | |
4198 | FPPSF2 | |
4199 | 1130 | |
4200 | 0 /JXN | |
4201 | 3016;0 | |
4202 | FPPSF1 | |
4203 | 2000 | |
4204 | KL, .+5 /KCC | |
4205 | 0303;0 | |
4206 | PDPOP | |
4207 | KCC | |
4208 | .+5 /KRB | |
4209 | 2202;0 | |
4210 | PDPOP | |
4211 | KRB | |
4212 | .+5 /KRS | |
4213 | 2223;0 | |
4214 | PDPOP | |
4215 | KRS | |
4216 | 0 /KSF | |
4217 | 2306;0 | |
4218 | PDPOP | |
4219 | KSF | |
4220 | LL, .+5 /LAS | |
4221 | 0123;0 | |
4222 | PDPOP | |
4223 | LAS | |
4224 | .+5 /LDX | |
4225 | 0430;0 | |
4226 | FPPSF5 | |
4227 | 0100 | |
4228 | .+5 /LISTOFF | |
4229 | 1123;2417 | |
4230 | PSUDO+0600 | |
4231 | LSTOFX | |
4232 | 0 /LISTON | |
4233 | 1123;2417 | |
4234 | PSUDO+1600 | |
4235 | LSTONX | |
4236 | \fML= 0 /NO LIST | |
4237 | NL, IFZERO RALF < .+5 > | |
4238 | IFNZRO RALF < 0 > | |
4239 | 1720;0 /NOP | |
4240 | PDPOP | |
4241 | NOP | |
4242 | IFZERO RALF < | |
4243 | 0 /NOPUNCH | |
4244 | 1720;2516 | |
4245 | PSUDO+0300 | |
4246 | NOPNCX > | |
4247 | OL, .+5 /OCTAL | |
4248 | 0324;0114 | |
4249 | PSUDO | |
4250 | OCTALX | |
4251 | .+5 /ORG | |
4252 | 2207;0 | |
4253 | PSUDO | |
4254 | ORGX | |
4255 | 0 /OSR | |
4256 | 2322;0 | |
4257 | PDPOP | |
4258 | OSR | |
4259 | IFZERO RALF < | |
4260 | PL, 0 /PAGE | |
4261 | 0107;0500 | |
4262 | PSUDO | |
4263 | PAGEX > | |
4264 | IFNZRO RALF <PL=0 > | |
4265 | QL= 0 /WHAT DID YOU EXPECT? | |
4266 | RL, .+5 /RAL | |
4267 | 0114;0 | |
4268 | PDPOP | |
4269 | RAL | |
4270 | .+5 /RAR | |
4271 | 0122;0 | |
4272 | PDPOP | |
4273 | RAR | |
4274 | .+5 /RDF | |
4275 | 0406;0 | |
4276 | PDPOP | |
4277 | RDF | |
4278 | .+5 /REPEAT | |
4279 | 0520;0501 | |
4280 | PSUDO+2400 | |
4281 | REPETX | |
4282 | .+5 /RIB | |
4283 | 1102;0 | |
4284 | PDPOP | |
4285 | RIB | |
4286 | .+5 /RIF | |
4287 | 1106;0 | |
4288 | PDPOP | |
4289 | RIF | |
4290 | .+5 /RMF | |
4291 | 1506;0 | |
4292 | PDPOP | |
4293 | RMF | |
4294 | .+5 /RTL | |
4295 | 2414;0 | |
4296 | PDPOP | |
4297 | RTL | |
4298 | 0 /RTR | |
4299 | 2422;0 | |
4300 | PDPOP | |
4301 | RTR | |
4302 | \fSL, .+5 /S | |
4303 | 0;0 | |
4304 | PSUDO | |
4305 | SX | |
4306 | IFNZRO RALF < | |
4307 | .+5 /SECT | |
4308 | 0503;2400 | |
4309 | PSUDO | |
4310 | SECTX | |
4311 | .+5 /8 MODE SECT | |
4312 | 0503;2470 | |
4313 | PSUDO | |
4314 | SECT8X > | |
4315 | .+5 /SETB | |
4316 | 0524;0200 | |
4317 | FPPSF2 | |
4318 | 1110 | |
4319 | .+5 /SETX | |
4320 | 0524;3000 | |
4321 | FPPSF2 | |
4322 | 1100 | |
4323 | .+5 /SKP | |
4324 | 1320;0 | |
4325 | PDPOP | |
4326 | SKP | |
4327 | .+5 /SMA | |
4328 | 1501;0 | |
4329 | PDPOP | |
4330 | SMA | |
4331 | .+5 /SNA | |
4332 | 1601;0 | |
4333 | PDPOP | |
4334 | SNA | |
4335 | .+5 /SNL | |
4336 | 1614;0 | |
4337 | PDPOP | |
4338 | SNL | |
4339 | .+5 /SPA | |
4340 | 2001;0 | |
4341 | PDPOP | |
4342 | SPA | |
4343 | .+5 /STARTD | |
4344 | 2401;2224 | |
4345 | FPPSF3+0400 | |
4346 | 0006 | |
4347 | .+5 /STARTE | |
4348 | 2401;2224 | |
4349 | FPPSF3+0500 | |
4350 | 0050 | |
4351 | .+5 /STARTF | |
4352 | 2401;2224 | |
4353 | FPPSF3+0600 | |
4354 | 0005 | |
4355 | .+5 /STL | |
4356 | 2414;0 | |
4357 | PDPOP | |
4358 | STL | |
4359 | .+5 /SZA | |
4360 | 3201;0 | |
4361 | PDPOP | |
4362 | SZA | |
4363 | 0 /SZL | |
4364 | 3214;0 | |
4365 | PDPOP | |
4366 | SZL | |
4367 | \fTL, IFZERO RALF < | |
4368 | .+5 /TAD | |
4369 | 0104;0 | |
4370 | PDPMR | |
4371 | TAD 0 > | |
4372 | IFNZRO RALF < | |
4373 | .+5 /TAD . | |
4374 | 0104;0 | |
4375 | PDPMR | |
4376 | TAD .&7600 | |
4377 | .+5 /TAD% | |
4378 | 0104;0 | |
4379 | PDPMR+500 | |
4380 | TAD I .&7600 | |
4381 | .+5 /TADZ | |
4382 | 0104;3200 | |
4383 | PDPMR | |
4384 | TAD 0 | |
4385 | .+5 /TADZ% | |
4386 | 0104;3200 | |
4387 | PDPMR+500 | |
4388 | TAD I 0 > | |
4389 | .+5 /TCF | |
4390 | 0306;0 | |
4391 | PDPOP | |
4392 | TCF | |
4393 | .+5 /TEXT | |
4394 | 0530;2400 | |
4395 | PSUDO | |
4396 | TEXTX | |
4397 | .+5 /TLS | |
4398 | 1423;0 | |
4399 | PDPOP | |
4400 | TLS | |
4401 | .+5 /TPC | |
4402 | 2003;0 | |
4403 | PDPOP | |
4404 | TPC | |
4405 | .+5 /TRAP3 | |
4406 | 2201;2063 | |
4407 | FPPSF1 | |
4408 | 3000 | |
4409 | .+5 /TRAP4 | |
4410 | 2201;2064 | |
4411 | FPPSF1 | |
4412 | 4000 | |
4413 | .+5 /TRAP5 | |
4414 | 2201;2065 | |
4415 | FPPSF1 | |
4416 | 5000 | |
4417 | .+5 /TRAP6 | |
4418 | 2201;2066 | |
4419 | FPPSF1 | |
4420 | 6000 | |
4421 | .+5 /TRAP7 | |
4422 | 2201;2067 | |
4423 | FPPSF1 | |
4424 | 7000 | |
4425 | 0 /TSF | |
4426 | 2306;0 | |
4427 | PDPOP | |
4428 | TSF | |
4429 | \fUL= 0 | |
4430 | VL= 0 | |
4431 | WL= 0 | |
4432 | XL, 0 /XTA | |
4433 | 2401;0 | |
4434 | FPPSF4 | |
4435 | 0030 | |
4436 | YL= 0 | |
4437 | ZL, 0 /ZBLOCK | |
4438 | 0214;1703 | |
4439 | PSUDO+1300 | |
4440 | ZBLKX | |
4441 | \f IFZERO RALF < PNDL=0 > | |
4442 | IFNZRO RALF < | |
4443 | PNDL, .+6 /BLANK COMMON | |
4444 | 0;0 | |
4445 | 3 /CODE FOR COMMON | |
4446 | 40;0 /ESD #2, LEN=0 | |
4447 | 0 /#MAIN | |
4448 | 1501;1116 | |
4449 | 4 /CODE FOR SECTION | |
4450 | LMAIN, 20;0 /ESD #1, LEN=0> | |
4451 | FREE, | |
4452 | END, END /NICE WHEN FLAP ASSEMBLES | |
4453 | $ | |
4454 | \f |