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