*** empty log message ***
[h316.git] / programs / fortran / src / frtn_5_of_5.asm
1 * TAPE 5 OF 5 - BEGIN
2 *
3 WHOW LDA D0 (A)=NO. OF WORDS PER ITEM
4 ALS 1 (A)=NO. OF CHARS, PER ITEM
5 STA NTID NTID=NO. OF CHARS. TO BE OUTPUT
6 SUB HOLF
7 SPL
8 JMP WERR
9 LDA ID FIRST WORD
10 JST WSNG OUTPUT IT
11 LDA ID+1 2ND WORD
12 JST WSNG OUTPUT IT
13 LDA ID+2 3RD WORD
14 JST WSNG OUTPUT IT
15 LDA ID+3 4TH WORD
16 JST OA00 OUTPUT IT
17 JMP W420 TO CHECK NEXT DATA
18 *
19 WSNG PZE 0
20 JST OA00 OUTPUT (A)
21 LDA NTID NO. OF CHARS, REMAINED TO BE OUTPUT
22 SUB K102
23 STA NTID NTID=NTID-2
24 SNZ
25 JMP W420 ALL FINISHED, CHECK NEXT ITEM
26 JMP* WSNG SOME HOLLERITH CHARS, REMAINED
27 W403 LDA TID+2 REAL OUTPUT
28 JST OA00
29 LDA TID+1
30 JMP W406
31 W404 LDA TID+2 DOUBLE PRECISION OUTPUT
32 JST OA00
33 LDA TID+1
34 JST OA00
35 W405 LDA TID INTEGER OUTPUT
36 W406 JST OA00
37 LDA T0W4
38 ERA IM
39 ANA K105
40 SNZ
41 JMP *+3
42 * TO BE OUTPUT, RETURN
43 WERR JST ER00
44 BCI 1,DM DATA AND DATA NAME MODE DO NOT AGREE
45 W420 LDA I
46 SUB K102
47 STA I I = I-2
48 CAS KPRM
49 NOP
50 JMP W4M MORE TO DO
51 SUB G TEST FOR COMPLETE
52 SZE
53 JMP W4P
54 LDA K104
55 JST TS00
56 LDA T1W4
57 STA RPL
58 JST CH00 INPUT NEXT CHARACTER
59 SUB K5 ='254 (,)
60 SZE SKIP IF CHAR = COMMA
61 JMP A1 CHECK FOR (CR)
62 JMP W4 PROCESS NEXT DATA GROUP
63 W4P LDA K134
64 JST TS00
65 JMP W4E
66 W4S JST FS00 FLUSH BUFFER IF NECESSARY
67 LDA AF POSITION WITHIN COMMON BLOCK
68 LRL 14
69 LDA K106 FORMAT BCD OUTPUT
70 LGL 6
71 LLL 6
72 STA OCI
73 IAB
74 ANA K116
75 STA OCI+1
76 JST FL00 FETCH LINK
77 LDA DP+4,1
78 SSM
79 ALR 1
80 SSM
81 ARR 1
82 LRL 8
83 ERA OCI+1
84 STA OCI+1
85 LDA DP+3,1
86 IAB
87 LDA DP+4,1
88 LLL 8
89 STA OCI+2
90 LDA DP+2,1
91 IAB
92 LDA DP+3,1
93 LLL 8
94 STA OCI+3
95 LDA DP+2,1
96 LGL 2
97 ADD K103
98 LGL 6
99 STA OCI+4
100 LDA K128
101 STA OCNT
102 JST STXI I POINTS TO DATA TABLE
103 LDA DP-1,1 SET A TO VARIABLE
104 STA A
105 JST FA00
106 JMP W4O
107 W4T LDA K101 =1 (=REL)
108 IAB
109 LDA RPL
110 JST AF00 DEFINE AFT (AT=REL. AF=RPL)
111 LDA I SET POINTER IN DATA POOL
112 STA 0
113 LDA RPL
114 STA DP,1 DP(I) = RPL OF VARIABLE
115 ADD D0
116 STA RPL
117 JMP W4C
118 *
119 *
120 *
121 * *********************************
122 * *BLOCK DATA SUBPROGRAM PROCESSOR*
123 * *********************************
124 * SET BLOCK DATA FLAG AND OUTPUT FORCE LOAD CODE
125 R3 LDA LSTF =0 IF FIRST STATEMENT IN THE SUBPROGRAM
126 SZE
127 JMP *+3
128 JST ER00 ERROR...NOT FIRST STATEMENT
129 BCI 1,BL 'BLOCK DATA' NOT FIRST STATEMENT
130 STA BDF SET BLOCK DATA FLAG ON (NON-ZERO)
131 JST CH00 INPUT NEXT CHARACTER
132 JMP A1 CHECK FOR (CR) AND EXIT
133 *
134 *
135 *
136 *
137 *
138 *
139 *
140 * ***************************
141 * *TRACE STATEMENT PROCESSOR*
142 * ***************************
143 * SETS TRACE TAG ON VARIABLES OR SETS TRACE FLAG
144 TRAC JST XN00 EXAMINE NEXT CHARACTER
145 SZE SKIP IF CHAR, WAS A DIGIT
146 JMP TRAD JUMP IF CHAR. WAS A LETTER
147 JST IS00 INPUT STATEMENT NO.
148 LDA A STATEMENT NO. POINTER
149 STA TRF SET TRACE FLAG ON
150 JMP A1 TEST FOR (CR) AND EXIT
151 *
152 TRAD JST NA00 INPUT NAME
153 JST STXA SET INDEX TO NAME ENTRY
154 LDA DP+4,1 TT(A) TRACE TAG
155 CHS
156 STA DP+4,1
157 JMP B1 (,) OR (CR) TEST
158 * (RETURN TO TRAC IF (,) )
159 *
160 *
161 *
162 * ********************
163 * *OUTPUT OBJECT LINK*
164 * ********************
165 OL00 DAC **
166 JST CN00 CALL NAME
167 CRA
168 STA DF DF = 0
169 LDA ID (A) = IP
170 JST OA00 OUTPUT +BS
171 *
172 JMP* OL00
173 *
174 * *****************
175 * *OUTPUT I/O LINK*
176 * *****************
177 * GENERATE I/O DRIVER LINKAGE CODE. NAME OF
178 * CALLED ROUTINE IS CHANGED IF UNIT DESIGNATOR
179 * IS A CONSTANT.
180 OI00 DAC **
181 JST IV00 INPUT INT VAR/CON
182 LDA NT
183 SNZ IF NT = 0
184 JMP OI20 GO TO 0I20
185 LDA ID IF ID CR 9
186 SUB K126 G0 TU OI20
187 SMI
188 JMP OI20
189 * FORM F$RN OR F$WN
190 LDA NAMF+1
191 ANA K116
192 ADD ID
193 ADD K60 ='260 (SP)
194 STA NAMF+1
195 OI10 JST CN00 CALL NAME
196 JMP* OI00 RETURN
197 OI20 LRL 32
198 LDA OMI7 OUTPUT OA
199 JST OB00 (LOAD A (UNIT N0.))
200 JMP OI10 FO TO OI10
201 *
202 *
203 * ***********
204 * *CALL NAME*
205 * ***********
206 * SET UP NAME AND GENERATE CODE FOR CALLING IT.
207 CN00 DAC **
208 JST FS00 FLUSH
209 JST PRSP SET PRINT BUFFER TO SPACES
210 LDA K147 SET UP OCI FOR CALL
211 STA OCI
212 LDA NAMF+1 OCI = NAMF
213 STA PRI+9
214 IAB ALSO TO PRINT BUFFER
215 LDA NAMF
216 STA PRI+8
217 LRL 8
218 STA OCI+1
219 LLL 16
220 STA OCI+2
221 LDA NAMF+2
222 STA PRI+10
223 IAB
224 LDA NAMF+1
225 LLL 8
226 STA OCI+3
227 LLL 16
228 STA OCI+4
229 LDA K128 ='14
230 STA OCNT OCNT = 6
231 LDA CN90
232 STA PRI+5
233 LDA CN90+1
234 STA PRI+6
235 LDA RPL
236 JST OR80
237 DAC PRI
238 SR2
239 JMP *+3 INHIBIT SYMBOLIC OUTPUT
240 CALL F4$SYM OUTPUT SYMBOLIC LINE,
241 DAC PRI
242 IRS RPL RPL = RPL + 1
243 JST PRSP SET PRINT BUFFER TO SPACES
244 JST FS00 FLUSH
245 JMP* CN00 RETURN
246 K147 OCT 55000
247 CN90 BCI 2,CALL
248 * *************
249 * *OUTPUT PACK*
250 * *************
251 * OUTPUT THE PACK WORD WHEN IT IS FULL.
252 PKF PZE 0 PACK FLAG
253 T0OK PZE 0
254 OK00 DAC **
255 CAS CRET IF (A) = C/R
256 JMP *+2
257 JMP OK30 GO TO OK30
258 IRS PKF PKF = PKF + 1
259 JMP OK20 IF NON-ZERO, GO TO OK20
260 OK10 ADD T0OK (A) = (A) + T0
261 LRL 16
262 STA DF
263 IAB
264 JST OA00 OUTPUT ABS
265 JMP* OK00
266 OK20 LGL 8
267 STA T0OK
268 LDA K123 PKF = - 1
269 STA PKF
270 JMP* OK00 RETURN
271 OK30 LDA PKF IF PKF = 0
272 SNZ
273 JMP* OK00 RETURN
274 LDA K8 ELSE (A) = SPACE,
275 STA PKF
276 JMP OK10 GO TO OK10
277 *
278 *
279 * ***********
280 * *OUTPUT OA*
281 * ***********
282 * GENERAL OUTPUT ROUTINE. MAKES CHECKS AGAINST
283 * THE ASSIGNMENT TABLE ENTRY TO PROCESS DUMMY,
284 * EXTERNAL, RELATIVE, ABSOLUTE OR STRING
285 * REFERENCES PROPERLY.
286 T1OB PZE 0
287 OB00 DAC **
288 STA FTOP FTOP = (A)
289 IAB
290 STA T1OB
291 JST STXA ESTABLISH A
292 SNZ IF A = 0
293 JMP OB08 GO TO OB08
294 JST FA00 FETCH ASSIGNS
295 LDA SOF SPECIAL OUTPUT FLAT
296 SZE
297 JMP OB60 SUBSCRIPT CONSTANT DEFLECTION
298 LDA AF
299 STA T1OB T0 = AF
300 LDA AT
301 SUB K105 IF AT = 'DUM'
302 SNZ
303 JMP OB15 GO TO OB15
304 LDA IU
305 SUB K101 IF IU = 'SUB'
306 SNZ
307 JMP OB40 GO TO OB40
308 OB06 LDA AT
309 CAS K104 IF AT = 'COM'
310 JMP *+2
311 JMP OB20 GO TO OB20
312 CAS K101
313 JMP *+2 IF AT = 'REL'
314 JMP OB10 GO TO OB10
315 LDA K103
316 IAB
317 LDA RPL
318 JST AF00 DEFINE AF AND AT
319 LDA AT IF AT = 'STR-RE'
320 SUB K103
321 SNZ
322 JMP OB10 GO TO OB10
323 CRA
324 STA AF AF = 0
325 OB08 LDA K102
326 STA DF SET FLAG TO OUTPUT SYMBOLIC
327 LDA FTOP
328 JST OA00 OUTPUT ABSOLUTE
329 JMP* OB00 RETURN
330 OB10 LDA T1OB
331 STA AF
332 LDA FTOP
333 JST OR00 OUTPUT REL
334 JMP* OB00 RETURN
335 OB15 LDA FTOP
336 CHS REVERSE INDIRECT BIT
337 STA FTOP
338 JMP OB10 GO TO OB10
339 OB20 JST FS00 OUTPUT COMMON REOUEST
340 LDA T1OB PACK ADDRESS INTO BLOCK
341 LRL 14
342 LDA FTOP
343 LGR 10
344 ADD K150
345 LLL 6
346 STA OCI
347 LLL 8
348 STA OCI+1
349 JST SAV
350 JST FL00
351 LDA DP+2,1
352 STA PRI+13 SET COMMON NAME INTO PRINT BUFFER
353 LLR 8
354 STA OCI+4
355 LLL 8
356 LDA DP+3,1
357 STA PRI+12 SET COMMON NAME INTO PRINT BUFFER
358 LLR 8
359 STA OCI+3
360 LLL 8
361 LDA DP+4,1
362 ANA K111 ='037777
363 CAS *+1 LOOK FOR BLANK COMMON
364 OCT 020240
365 ERA K122
366 ERA HBIT
367 STA PRI+11 SET NAME INTO PRINT BUFFER
368 LLR 8
369 STA OCI+2
370 LLL 8
371 LDA OCI+1
372 LLL 8
373 STA OCI+1
374 LDA K128 ='14
375 STA OCNT
376 JST RST
377 LDA 0
378 STA A RESTORE A TO POINT AT NAME
379 LDA RPL SET RPL MINUS
380 SSM TO DISABLE WORD OUTPUT
381 STA RPL
382 LDA FTOP OUTPUT WORD TO LIST
383 JST OR00 SYMBOLIC COMMAND
384 LDA RPL RESTORE AND
385 SSP INCREMENT PROGRAM
386 AOA COUNTER FOR COMMON
387 STA RPL OUTPUT
388 JST FS00 CLOSE OUT BLOCK
389 JMP* OB00 EXIT
390 OB30 LDA DP+4,1
391 SSM
392 ALR 1
393 SSM
394 ARR 1
395 STA NAMF
396 LDA DP+3,1
397 STA NAMF+1
398 LDA DP+2,1
399 STA NAMF+2
400 JST CN00
401 JMP* OB00
402 OB40 LDA AT
403 SUB K102
404 SNZ
405 JMP OB30
406 JMP OB06
407 OB50 OCT 140000
408 *
409 OB60 CRA
410 STA SOF RESET SPECIAL OUTPUT FLAG
411 LDA AT ADDRESS TYPE
412 CAS K105 TEST FOR DUMMY
413 JMP OB06 PROCESS NORMALLY
414 JMP OB61
415 JMP OB06 PROCESS NORMALLY
416 OB61 LDA T1OB
417 STA FTOP
418 CRA
419 JMP OB08+1
420 *
421 K150 OCT 700
422 *
423 *
424 * **************
425 * OUTPUT TRIADS*
426 * **************
427 * PROCESSES THE TRIAD TABLE, HANDLES FETCH
428 * GENERATION AND RELATIONAL OPERATOR CODE
429 * GENERATION, DRIVES OUTPUT ITEM. ASSIGNS
430 * AND OUTPUT TEMP STORES.
431 T0OT PZE 0
432 T2OT PZE 0
433 T1OT PZE 0
434 T3OT PZE 0 TEMP STORE FOR P
435 OT00 DAC **
436 JST SAV
437 LDA L0
438 STA I I = L0
439 CRA
440 STA T0OT T0 = 0
441 STA IFLG
442 OT06 STA T1OT T1 = I
443 OT10 LDA I
444 SUB K103 I = I-3
445 STA I
446 STA T2OT T2 = I
447 SUB L
448 SPL
449 JMP OT60 IF FINISHED, GO TO OT60
450 JST STXI
451 LDA DP+2,1
452 SSP CHECK P (I)
453 CAS K139 X
454 JMP *+2
455 JMP OT10
456 CAS K138 H
457 JMP *+2
458 JMP OT10
459 CAS K142 I
460 JMP *+2
461 JMP OT50
462 CAS K143 T
463 JMP *+2
464 JMP OT40
465 CAS K151 Q
466 JMP *+2
467 JMP OT35
468 STA T3OT SAVE P
469 LDA DP+1,1
470 STA A A = O1(I)
471 CAS T1OT
472 JMP *+2
473 JMP OT30
474 CAS L0
475 JMP OT16
476 JMP OT99 MAYBE SPECIAL LOAD FOR (A=) STATEMENT
477 JMP OT16
478 OT18 JST STXI
479 LDA DP,1
480 STA A A = O2 (I)
481 LDA DP+2,1
482 SSP
483 JST OM00 OUTPUT ITEM(P(I),A = 02(I))
484 OT22 JST STXI
485 LDA DP+2,1
486 SMI
487 JMP OT28
488 CRA ASSIGN TEMP STOR
489 STA NT NT = 0
490 LDA K102
491 STA IU IU = VAR
492 LDA T0OT
493 LRL 6
494 LDA TCF ID =
495 LRL 3 TS-IM-TCF-T0
496 LDA MFL
497 STA IM
498 LLL 9
499 JST OR80
500 DAC ID
501 LDA K77
502 STA ID
503 IRS T0OT T0 = T0+1
504 JST AS00 ASSIGN ITEM
505 JST STXI
506 LDA A
507 STA DP,1 O2(I) = A
508 LDA K153
509 SSM SURPRESS TRACE OF TEMPORARY STORAGE
510 JST OM00 OUTPUT ITEM (=,A)
511 OT28 LDA I
512 JMP OT06
513 OT30 JST STXA
514 LDA DP+2,1
515 SSP IF P (A) = 0
516 SZE
517 JMP OT32
518 OT16 LDA K152 GENERATE FETCH
519 JST OM00 OUTPUT ITEM
520 OT32 LDA T3OT CHECK FOR RELATIONALS
521 SUB K125 ='10
522 SPL
523 JMP OT18 NOT LOGICAL OR6RATOR
524 SUB K106 =6
525 SMI
526 JMP OT18 NOT A LOGICAL QPERATOR
527 STA 0 SET INDEX = -1 TO -6
528 LDA K103 =3 (LOG)
529 STA MFL SET MODE TO LOGICAL
530 CRA
531 STA A SET FOR OCTAL ADDRESS
532 JMP *+7,1 BRANCH TO OPERATOR PROCESSOR
533 JMP OT3G .LT.
534 JMP OT3E .LE.
535 JMP OT3C .EQ.
536 JMP OT3B .GE.
537 JMP OT3A .GT.
538 LDA OMJ4 .NE. =ALS 16
539 JST OA00 OUTPUT ABSOLUTE
540 LDA OMJ6 =ACA
541 JMP OT3D
542 OT3A LDA OMJ7 *TCA
543 JMP OT3F
544 OT3B LDA OMK1 =CMA
545 JMP OT3F
546 OT3C LDA OMJ4 = ALS 16
547 JST OA00
548 LDA OMK2 =SSC
549 JST OA00 OUTPUT ABSOLUTE
550 LDA OMK3 =AOA
551 OT3D JST OA00 OUTPUT ABSOLUTE
552 JMP OT22
553 OT3E LDA OMJ2 =SNZ
554 JST OA00 OUTPUT ABSOLUTE
555 LDA OMK4 =SSM
556 OT3F JST OA00 OUTPUT ABSOLUTE
557 OT3G LDA OMJ5 =LGR 15
558 JMP OT3D
559 *
560 OT35 LDA DP+1,1
561 STA ID
562 JST NF00
563 LDA K78 NAMF = F $AR
564 STA NAMF+1
565 JST OL00 OUTPUT OBJECT LINK
566 JMP OT18 GO TO OT18
567 OT40 LDA DP,1
568 ADD DO
569 STA I I = 02 (I) + DO
570 JST DQ00 DO TERMINATION
571 OT45 LDA T2OT
572 STA I I = T2
573 JMP OT28
574 OT50 LDA DP,1
575 ADD DO I=O2(I)+DO
576 STA I IF I = DO
577 SUB DO
578 SZE GO TO OT45
579 JST DS00 DO INITIALIZE
580 JMP OT45 GO TO OT45
581 OT60 JST RST
582 LDA L0 RESET TRIAD TABLE
583 STA L
584 JMP* OT00
585 *
586 OT99 LDA T3OT
587 SUB K153 CODE FOR =
588 SZE
589 JMP OT16 NOT SPECIAL LOAD
590 STA MFL SPECIAL LOAD, SET MFL=0
591 JMP OT18 OUTPUT A STORE
592 K77 BCI 1,T$ T$
593 K78 BCI 1,AR AR
594 K142 OCT 27
595 K143 OCT 30
596 K151 OCT 32
597 K152 OCT 31
598 * *************
599 * *OUTPUT ITEM*
600 * *************
601 *
602 * DRIVES BASIC OUTPUT ROUTINES. HANDLES SPECIAL
603 * SUBSCRIPT PROCESSING, GENERATES NECESSARY
604 * MODE CONVERSION CALLS AND HANDLES MODE
605 * CHECKING. IN-LINE ARITHMETIC CODE IS
606 * GENERATED WHERE POSSIBLE. OTHERWISE CALLS
607 * TO ARITHMETIC ROUTINES ARE GENERATED.
608 *
609 T0OM PZE 0
610 T1OM PZE 0
611 T2OM PZE 0
612 T8OM PZE 0
613 T9OM PZE 0
614 TXOM PZE 0
615 *
616 *-------------OUTPUT ITEM
617 OM00 DAC ** RETURN ADDR
618 STA T8OM
619 SSP
620 STA T0OM R(0)=(A)='P' CODE
621 CAS K134
622 JMP *+2
623 JMP OMD1
624 LDA TXOM
625 CAS K101
626 JMP OME1
627 JMP OME5
628 OM05 CRA
629 STA T1OM T(1)=0
630 STA T9OM T(9)=0
631 LDA A
632 STA T2OM T(2)=A
633 SZE
634 JMP OM07
635 LDA MFL
636 JMP OM13
637 OM07 CAS L0
638 JMP *+2
639 JMP OML1
640 CAS ABAR
641 JMP OM76 A .LE. ABAR....WITHIN TRIAD TABLE
642 JMP *+1
643 OM10 JST STXA SET INDEX=A
644 LDA DP,1
645 ARS 9 SES IM=MODE OF ITEM
646 ANA K107
647 OM13 STA IM
648 OM14 LDA MFL SET MFL,IM AS DIGITS INTO NAMF
649 ALS 8
650 ADD IM
651 ERA OM90 ADD '0''0'
652 STA NAMF+1
653 LDA K130
654 STA 0 INDEX=-6
655 LDA T0OM
656 CAS OM50+6,1 CHECK FOR SPECIAL OPERATOR
657 JMP *+2 '1
658 JMP* OM52+6,1 'P'='Q',',','0','A'F', OR 'E'
659 IRS 0
660 JMP *-4
661 LDA MFL
662 SNZ
663 JMP OM62 SPECIAL LIBRARY FIX FOR ( A= )
664 CAS IM CHECK FOR MODE MIXING
665 JMP *+2
666 JMP OMA1 ITEM MODE SAME AS CURRENT MODE
667 OM20 LDA K103
668 JST OM44 CHECK MODE FOR LOG
669 LDA K102 =2 (MODE CODE FOR REAL)
670 CAS MFL MODE OF EXPRESSION
671 JMP *+2
672 JMP OM26 IF MODE=REAL, ALLOW COMPLEX MODE MIXING
673 CAS IM MODE OF ITEM
674 JMP *+2
675 JMP OM26 IF MODE=REAL, ALLOW COMPLEX MODE MIXING
676 LDA K105
677 JST OM44 TEST FOR MODE = COMPLEX
678 OM26 LDA T0OM OPERATOR BEING PROCESSED
679 CAS K153
680 JMP *+2
681 JMP OM36 T(0)='=' (ALLOW INTEGER MODE)
682 LDA K101
683 JST OM44 TEST FOR MODE=INTEGER
684 LDA IM
685 CAS MFL
686 JMP OM38 CONVERT MODE OF ACCUMULATOR
687 JMP *+1
688 OM30 JST NF00 SET LBUF+2 TO SPACES
689 LDA T0OM
690 STA 0
691 LDA A9X4,1 PICK-UP PRINT CODE FOR 'P' OPERATOR
692 ARS 6
693 ANA K100 ='377
694 SNZ
695 JMP OM46 MODE MIXING ERROR
696 LGL 8
697 ERA OM91 ADD '$'
698 STA NAMF
699 LDA K134
700 STA T0OM T(0)=','
701 JMP OM40
702 *
703 OM36 LDA K105
704 JST OM44 CHECK FOR MODE=COMPLEX
705 OM38 LDA IM
706 STA MFL
707 JST NF00 SET LBUF+2 TO SPACES
708 LDA OM92 'C$'
709 STA NAMF
710 OM40 JST CN00 OUTPUT....CALL NAMF
711 LDA MFL
712 STA IM SET ITEM MODE TO CURRENT MODE
713 LDA NAMF
714 CAS OM96
715 JMP OM14
716 JMP* OM00
717 JMP OM14 OUTPUT ARGUMENT ADDRESS
718 *
719 *-----SUBROUTINE TO CHECK FOR ILLEGAL IM OR MFL MODES,
720 OM44 DAC ** RETURN ADDR,
721 CAS IM CHECK FOR IM0(A)
722 JMP *+2
723 JMP OM46 ERROR
724 CAS MFL CHECK FOR MFL=(A)
725 JMP* OM44
726 JMP OM46 ERROR
727 JMP* OM44
728 OM46 JST ER00 NON-RECOVERABLE ERROR......
729 BCI 1,MM MODE MIXING ERROR
730 *
731 *------SPECIAL 'P' OPERATOR TABLE
732 OM50 OCT 32 'Q'
733 OCT 17 ','
734 OCT 00 '0'
735 OCT 22 'A'
736 OCT 31 *F'
737 OCT 20 'E'
738 OM52 DAC OMB3 ('Q')
739 DAC OMB3 (',')
740 DAC OMB3 ('0')
741 DAC OM56 ('A')
742 DAC OM60 ('F')
743 DAC OM70 ('E')
744 *
745 *
746 OM56 LDA OMI1 SET T(1) = ADD*
747 JMP OMB1
748 *
749 OM60 JST STXA SET INDEX = A
750 LDA DP+1,1
751 LGR 14 SET UV=IU(A)
752 STA IU
753 JST STXI SET INDEX=I
754 LDA DP+2,1 P(I)
755 ANA K133 ='77
756 SNZ
757 JMP OM64 (POSSIBLE DUMMY ARRAY FETCH)
758 OM62 LDA IM
759 STA MFL SET CURRENT MODE TO ITEM MODE
760 LGL 8
761 ADD IM
762 ERA OM90
763 STA NAMF+1
764 LDA IU
765 SUB K101 CHECK FOR IU=1 (SUBROUTINE)
766 SZE
767 JMP OMA1
768 LDA OMI2 SET T(1) = JST
769 JMP OM66
770 OM64 LDA IU
771 SUB K103 CHECK FOR IV=3 (ARRAY)
772 SZE
773 JMP OM62
774 LDA K101 SET CURRENT MODE TO INTEGER
775 STA MFL
776 LDA OMI3 SET T(1) = LDA*
777 OM66 STA T1OM
778 JMP OMB3
779 *
780 OM70 LDA K101
781 CAS IM CHECK ITEM MODE EQUALS INTEGER
782 JMP *+2
783 JMP OM74
784 LDA K105 CHECK FOR MODE = COMPLEX
785 JST OM44
786 JMP OM20
787 OM74 LDA K103 CHECK FOR MODE = LOGICAL
788 JST OM44
789 JMP OM30 OUTPUT SUBROUTINE CALL
790 *
791 OM76 JST STXA INDEX=A
792 LDA DP,1 02(A)
793 STA T2OM T(2)=02(A)
794 LDA DP+2,1 P(A)
795 ANA K133 ='77
796 SNZ
797 JMP OM84 P(A)='0' (SUBSCRIPTED VARIABLE)
798 CAS K139
799 JMP *+2
800 JMP OM80 P(A) = 'X' (END OF ARRAY CALCULATION)
801 CAS K138
802 JMP *+2
803 JMP OMHW
804 OM78 LDA T2OM P(4)= 'H' (HOLLERITH DATA)
805 STA A RESET A
806 JMP OM10
807 *
808 OM80 JST STXI INDEX=I
809 LDA T2OM
810 STA DP+1,1 O1(I) = T(2)
811 CRA
812 STA T1OT SET T(1) OF OUTPUT TRIADS TO ZERO
813 LDA A SAVE A
814 STA T1OM
815 CRA SET A=0 (NOT SYMBOLIC)
816 STA A
817 LDA RPL
818 ADD K102 AF = RPL+ 2
819 STA AF
820 LDA OMI4 =ADD INSTRUCTION
821 JST OR00 OUTPUT RELATIVE
822 LDA RPL
823 ADD K102 AF = RPL P+ 2
824 STA AF
825 LDA OMI5 = JMP INSTR,
826 JST OR00 OUTPUT RELATIVE
827 LDA T1OM
828 STA A RESTORE A
829 STA SOF SET SPECIAL OUTPUT FLAG TO NON-ZERO
830 CRA = DAC INSTR.
831 STA T1OM
832 LDA K101
833 STA AT
834 JMP OM88
835 OM84 LDA DP+1,1 O1(A)
836 STA A A=O1(A)
837 CAS L0
838 JMP *+2
839 JMP OM86 A=L(0)....CONSTANT SUBSCRIPT ONLY
840 LDA OMI0 T(1) = INDIRECT BIT
841 STA T1OM
842 JMP OM10
843 *
844 OM86 LDA T2OM A=T(2)
845 STA A
846 STA 0
847 STA SOF
848 LDA DP,1 T(2) = 02(A)
849 STA T2OM
850 OM88 JST STXA INDEX=A
851 LDA DP+1,1 O1(A)
852 STA T9OM T(9)=O1(A)
853 JMP OM78
854 OMHW LDA T2OM
855 STA AF
856 CRA
857 STA A
858 JST OR00
859 JMP* OM00
860 *
861 OM90 OCT 130260 '00'
862 OM91 OCT 000244 ' $'
863 OM92 OCT 141644 'C$'
864 OM93 OCT 152322 'TR'
865 OM94 OCT 000021 'C' CODE
866 OM95 OCT 017777 (MASK)
867 OM96 BCI 1,N$
868 OM97 BCI 1,-1
869 *
870 OMA1 LDA IM CHECK FOR IM=LOGICAL
871 CAS K103
872 JMP *+2
873 JMP OMC1 IM=LOGICAL
874 CAS K101 CHECK FOR IM=INTEGER
875 JMP *+2
876 JMP OMA3 IM=INTEGER
877 JMP OM30
878 *
879 OMA3 LDA T0OM CHECK FOR T,0) = '+'
880 CAS K103 =3
881 JMP *+2
882 JMP OMA4 T(0)= '*'
883 CAS OM94 T(0) = 'C
884 JMP *+2
885 JMP OMA6 OUTPUT 'TCA'
886 CAS K101
887 JMP OMA5
888 LDA OMI4 =ADD INSTR.
889 JMP OMB1
890 OMA4 LDA T2OM VALUE OF A
891 SUB K126 ='12 KNOWN LOCATION OF A FOR 2
892 SZE SMP IF MULTIPLIER IS A CONSTANT OF 2
893 JMP OM30 COUPLE TO THE MULTIPLY SUBROUTINE
894 STA A SET A AND AF TO ZERO (FOR LISTING FLAGS)
895 STA AF
896 LDA *+3 ALS 1 INSTRUCTION
897 JST OA00 OUTPUT ABSOLUTE
898 JMP* OM00 EXIT UUTPUT ITEM
899 ALS 1 (INSTRUCTION TO BE OUTPUT)
900 OMA5 CAS K102 CHECK FOR T(0) = '-'
901 JMP OMA7
902 LDA OMI6 =SUB INSTR,
903 JMP OMB1
904 OMA6 CRA
905 STA A CAUSE OCTAL ADDR LISTING
906 STA AF
907 LDA *+3 TCA
908 JST OA00 OUTPUT ABSOLUTE
909 JMP* OM00 EXIT
910 TCA
911 OMA7 CAS K153 CHECK FOR T(0) = '='
912 JMP *+2
913 JMP OMA9 OUTPUT A STA INSTR,
914 SUB K152 CHECK FOR T(0) = 'F'
915 SZE
916 JMP OM30
917 OMA8 LDA OMI7 =LDA INSTR,
918 JMP OMB1
919 OMA9 LDA OMI8 =STA INSTR,
920 OMB1 ADD T1OM T(1) = T(1) + INSTR.
921 STA T1OM
922 OMB3 LDA T2OM SET A=T(2)
923 STA A
924 LDA T9OM OUTPUT INSTR. WITH T(1) AND T(9)
925 IAB
926 LDA T1OM
927 JST OB00 OUTPUT OA
928 LDA T8OM CHECK FOR T(8) = '='
929 CAS K153 ='16
930 JMP* OM00
931 JMP *+2
932 JMP* OM00 EXIT
933 LDA TRFA POINTER TO FIRST VARIABLE OR ARRAY
934 STA A PROCESSED IN EXPRESSION
935 JST TRSE OUTPUT TRACE COUPLING IF REQUIRED
936 JMP* OM00 EXIT OUTPUT ITEM
937 *
938 *
939 OMC1 LDA T0OM
940 CAS K152 CHECK FOR T(0) = 'F'
941 JMP *+2
942 JMP OMA8 OUTPUT A LDA INSTR.
943 CAS K153 CHECK FOR T(0) = '='
944 JMP *+2
945 JMP OMA9 OUTPUT A STA INSTR,
946 CAS OM94 CHECK FOR T(0) = 'C'
947 JMP *+2
948 JMP OM30 OUTPUT COMPLEMENT CODING
949 CAS K106
950 JMP *+2
951 JMP OMC5 OUTPUT AN ANA INSTR.
952 CAS K107
953 JMP OM46 ERROR
954 JMP OM30
955 JMP OM46 ERR0R
956 OMC5 LDA OMI9 =ANA INSTR.
957 JMP OMB1
958 OMD1 IRS TXOM T0 = T0+1
959 JMP OM05
960 OME1 CRA
961 STA DF DF = 0
962 JST OA00 OUTPUT ABSOLUTE
963 OME5 CRA
964 STA TXOM T0 = 0
965 JMP OM05
966 *
967 TRSE DAC 0 SUBROUTINE TO OUTPUT TRACE COUPLING
968 JST STXA SET INDEX = A
969 SZE
970 LDA DP+4,1 CHECK STATUS OF TRACE TAG
971 SPL
972 JMP TRS7
973 SR4
974 JMP TRS7
975 LDA TRF CHECK STATUS OF TRACE FLAG
976 SNZ
977 JMP* TRSE
978 TRS7 JST NF00 SET LBUF TO 'F$', LSUF+2 TO SPACES
979 LDA OM93 ='TR'
980 STA NAMF+1
981 JST CN00 OUTPUT.....CALL NAMF
982 JST STXA SET INDEX = A
983 LDA DP+4,1
984 ANA OM95
985 STA T1OM
986 LDA DP+3,1
987 STA T8OM
988 LDA DP+2,1
989 STA T9OM
990 CRA
991 STA DF
992 LDA DP,1 MERGE IM WITH ITEM NAME
993 ARS 9
994 LGL 13
995 ERA T1OM
996 JST OA00 OUTPUT ABSOLUTE (FIRST 2 CHAR.)
997 LDA T8OM
998 JST OA00 OUTPUT ABSOLUTE (NEXT 2 CHAR.)
999 LDA T9OM
1000 JST OA00 OUTPUT ABSOLUTE (LAST 2 CHAR.)
1001 JMP* TRSE
1002 *
1003 *.................INSTRUCTION TABLE
1004 OMI0 OCT 100000 INDIRECT BIT
1005 OMI1 OCT 114000 ADD*
1006 OMI2 OCT 020000 JST
1007 OMI3 OCT 104000 LDA*
1008 OMI4 OCT 014000 ADD
1009 OMI5 OCT 002000 JMP
1010 OMI6 OCT 016000 SUB
1011 OMI7 OCT 004000 LDA
1012 OMI8 OCT 010000 STA
1013 OMI9 OCT 006000 ANA
1014 OMJ1 OCT 102000 JMP*
1015 OMJ2 OCT 101040 SNZ
1016 OMJ3 OCT 101400 SMI
1017 OMJ4 ALS 16
1018 OMJ5 OCT 040461 LGR 15
1019 OMJ6 OCT 141216 ACA
1020 OMJ7 OCT 140407 TCA
1021 OMK1 OCT 140401 CMA
1022 OMK2 OCT 101001 SSC
1023 OMK3 OCT 141206 AOA
1024 OMK4 OCT 140500 SSM
1025 OMK5 OCT 042000 JMP 0,1
1026 OMK6 OCT 000000 DAC **
1027 ALS 1 ALS1
1028 TCA TCA
1029 OMK7 OCT 176000 STG
1030 OMK9 CAS 0 CAS
1031 STA* 0
1032 SUB* 0
1033 DAC* **
1034 OCT 131001
1035 OCT 030000 SUBR
1036 CAS* 0
1037 OMK8 OCT 0 (///)
1038 OML1 LDA K101
1039 STA AT
1040 JMP OT10
1041 *
1042 * ************
1043 * *OUTPUT REL*
1044 * ************
1045 * ALSO DRIVES SYMBOLIC INSTRUCTION OUTPUT.
1046 OR00 DAC **
1047 STA FTOP
1048 LDA K102 DF = NON ZER0
1049 STA DF CODE = 2
1050 OR10 STA CODE
1051 LDA RPL LIST RPL
1052 SSP
1053 JST OR80
1054 DAC PRI
1055 OR12 LDA DF IF DF NOT ZERO
1056 SZE
1057 JMP OR20 GO TO OR20
1058 LDA OR18 ='147703
1059 STA PRI+5
1060 LDA OR19 SET 'OCT' INTO PRINT IMAGE
1061 STA PRI+6
1062 LDA FTOP
1063 OR13 JST OR80
1064 DAC PRI+8
1065 OR15 LDA RPL IF RPL PLUS
1066 SMI
1067 JST OW00 OUTPUT WORD
1068 SR2
1069 JMP *+3 SURPRESS SYMBOLIC OUTPUT
1070 CALL F4$SYM LIST LINE
1071 DAC PRI
1072 JST PRSP SET PRINT BUFFER TO SPACES
1073 JMP* OR00 RETURN
1074 OR18 OCT 147703 (0)(C)
1075 OR19 OCT 152240 (T)(SP)
1076 OR20 JST SAV
1077 LDA OR90 SEARCH OP-CODE LIST
1078 TCA
1079 STA XR PUT BCI IN PRINT IMAGE
1080 LDA FTOP
1081 SSP
1082 SZE
1083 JMP OR24
1084 LDA AT
1085 CAS K103
1086 SUB K106
1087 ADD K102
1088 CMA
1089 ANA K107
1090 STA CODE
1091 OR24 LDA FTOP
1092 CAS OR91+NINS,1
1093 JMP *+2
1094 JMP *+3
1095 IRS XR
1096 JMP *-4
1097 LDA OR92+NINS,1
1098 STA PRI+5
1099 LDA OR93+NINS,1
1100 STA PRI+6
1101 JST RST
1102 LDA A
1103 SZE
1104 JMP OR30
1105 LDA AF
1106 ANA K111 MASK OUT HIGH BITS OF ADDRESS
1107 JMP OR13
1108 OR30 JST STXA
1109 LDA DP,1
1110 SMI
1111 JMP OR40
1112 LDA K149
1113 STA PRI+8 SET =' INTO LISTING
1114 LDA DP,1 CHECK IM (A)
1115 LGL 4
1116 SPL SKIP IF NOT COMPLEX
1117 JMP *+4
1118 LGL 2
1119 SPL SKIP IF INTEGER OR LOGICAL
1120 JMP *+3
1121 LDA DP+2,1
1122 JMP *+2 LIST EXPONENT AND PART OF FRACTION
1123 LDA DP+4,1 LIST INTEGER VALUE
1124 JST OR80 CONVERT OCTAL
1125 DAC PRI+9
1126 JMP OR15
1127 OR40 LDA DP+4,1 CONVERT AND PACK INTO
1128 ALR 1
1129 SSM SYMBOLIC IMAGE
1130 ARR 1
1131 SSM
1132 STA PRI+8
1133 LDA DP+3,1
1134 STA PRI+9
1135 LDA DP+2,1
1136 STA PRI+10
1137 JMP OR15
1138 * ***********
1139 * *OUTPUT ABS*
1140 * ***********
1141 OA00 DAC **
1142 STA FTOP
1143 LDA OA00
1144 STA OR00
1145 CRA
1146 JMP OR10
1147 * *******************
1148 * *OUTPUT STRING-RPL*
1149 * *******************
1150 OS00 DAC 00
1151 STA AF
1152 LDA OMK7
1153 STA FTOP
1154 LDA OS00
1155 STA OR00 SET RETURN INTO OUTPUT REL
1156 LDA K104
1157 STA CODE
1158 STA STFL STRING FLAG = NON ZERO
1159 JST PRSP SET PRINT BUF. TO SPACES
1160 JMP OR20 JMP-OUTPUT REL FOR SYMBOLIC AND BINARY
1161 OR80 DAC **
1162 IAB
1163 LDA* OR80
1164 STA OR89
1165 CRA
1166 LRR 2
1167 IRS OR80
1168 JST OR85
1169 JST OR85
1170 JST OR85
1171 JMP* OR80
1172 OR85 DAC **
1173 ADD K140
1174 LLR 3
1175 LGL 5
1176 ADD K140
1177 LLL 3
1178 STA* OR89
1179 IRS OR89
1180 CRA
1181 JMP* OR85
1182 OR89 PZE 0
1183 OR90 DAC NINS
1184 K200 EQU OMI7
1185 K201 EQU OMI5
1186 K202 EQU OMI8
1187 K203 EQU OMI4
1188 K204 EQU OMI6
1189 K205 EQU OMJ3
1190 K206 EQU OMJ1
1191 K207 EQU OMK5
1192 OR91 EQU OMI1
1193 OR92 BCI 22,ADJSLDADJMSULDSTANJMSNSMLLLRACTCCMSSAOSSJMDA
1194 BCI 2,ALTC
1195 BCI 9,STCASTSUDAERSUCA//
1196 OR93 BCI 22,D*T A*D P B A A A P*Z I 1515A A A C A M PXC
1197 BCI 2,S1A
1198 BCI 9,G S A*B*C*R/BRS*/
1199 NINS EQU 32
1200 *
1201 PRSP DAC ** SUBR. T0 SET PRINT BUF. T0 SPACES
1202 LDA PRSK =-40
1203 STA 0
1204 LDA KASP (SP)(SP)
1205 STA PRI+40,1
1206 IRS 0
1207 JMP *-2
1208 JMP* PRSP EXIT
1209 PRSK OCT 177730 =-40
1210 *
1211 * *************************************
1212 * *OUTPUT SUBROUTINE/COMMON BLOCK NAME*
1213 * ************************************
1214 * OUTPUT AN EXTERNAL REFERENCE NAME.
1215 *
1216 ON00 DAC **
1217 STA ONT1 SAVE ADDRESS
1218 JST FS00 FLUSH BUFFER IF NECESSARY
1219 JST STXA SET INDEX=A
1220 LDA ONT1 SUBR. ENTRY ADDR.
1221 LRL 14
1222 STA ONT1 SAVE S/C BITS
1223 LDA ON02 ='600 (=BLOCK CODE NO.)
1224 LLL 6
1225 STA OCI FILL BUFFER
1226 LRL 8
1227 JST STXA SET INDEX=A
1228 LDA DP+4,1 FIHST 2 CHAR. 0F NAME
1229 ANA K111 ='037777
1230 CAS *+1
1231 OCT 020240
1232 ERA K122
1233 ERA HBIT ='140000
1234 LRR 8
1235 STA OCI+1 BUFFER
1236 LRL 8
1237 LDA DP+3,1 SECOND 2 CHAR. OF NAME
1238 LRR 8
1239 STA OCI+2 BUFFER
1240 LRL 8
1241 LDA DP+2,1 LAST 2 CHAR. OF NAME
1242 LRR 8
1243 STA OCI+3 BUFFER
1244 LLL 8
1245 LGL 2
1246 ADD ONT1 S/C BITS
1247 LGL 6
1248 STA OCI+4 BUFFER
1249 CRA SET SIZE = 0
1250 STA OCI+5 8UFFER
1251 LDA K128 ='14
1252 STA OCNT SET 8LOCK SIZE (DOUBLED)
1253 JST FS00 FLUSH BUFFER
1254 JMP* ON00 EXIT
1255 ON02 OCT 600 BLOCK CODE NUMBER (6)
1256 ONT1 OCT 0 TEMP STORE
1257 *
1258 K149 BCI 1,='
1259 K140 OCT 26
1260 *
1261 OW00 DAC **
1262 JST SAV
1263 LDA RPL
1264 SUB ORPL
1265 SPL
1266 TCA
1267 CAS K101
1268 JST FS00 FLUSH BUFFER IF DIFFERENCE IN RPL'S N0T 1
1269 NOP
1270 LDA OCNT
1271 ADD K103
1272 CAS K146
1273 NOP
1274 JST FS00 FLUSH BUFFER
1275 LDA OCNT
1276 ADD K103
1277 STA OCNT OCNT = OCNT+3
1278 SUB K103
1279 ARR 1 OCI (OUTPUT CARD IMAGE)
1280 STA XR
1281 SMI LEFT OR RIGHT POS,
1282 JMP OW20
1283 JST PU00
1284 LRL 8 IF BUFFER FULL
1285 IMA OCI,1
1286 ANA K116 CALL FLUSH (FS0O)
1287 ERA OCI,1
1288 OW10 STA OCI,1
1289 IAB
1290 STA OCI+1,1
1291 LDA PRI+16
1292 IAB
1293 LDA PRI+14 USE LOW BIT OF PRI+14 DATA
1294 LLL 9
1295 LGR 1 STRIP OFF HIGH BIT OF BLOCK CODE TYPE NO,
1296 LLL 3 SET DIGITS IN PRI+17, PRI+19
1297 JST OR80
1298 DAC PRI+16
1299 LDA PRI+14
1300 LRL 6
1301 LGL 1 SHIFT ADDR. TO RIGHT BY 1 BIT
1302 LLL 5
1303 JST OR80 SET DIGITS IN PRI+15, PRI+16
1304 DAC PRI+14
1305 LDA KASP (SP)(SP)
1306 SR1
1307 JMP OW14
1308 STA PRI+15 OVERWRITE BINARY DATA IN
1309 STA PRI+16 PRINT BUFFER WITH SPACES
1310 STA PRI+17 IF NO BINARY LISTING IS WANTED
1311 STA PRI+18
1312 OW14 STA PRI+14
1313 JST RST
1314 LDA RPL
1315 STA ORPL ORPL=RPL
1316 CRA
1317 IMA STFL INDICATE WORD WAS KEY TO LOADER
1318 SNZ THEN LEAVE RPL ALONE
1319 IRS RPL RPL = RPL+1
1320 JMP* OW00
1321 STFL PZE 0
1322 OW20 JST PU00
1323 JMP OW10
1324 ORPL PZE 0
1325 PU00 DAC **
1326 LDA CODE COMBINE CODES TO
1327 CAS K104 =4
1328 NOP
1329 JMP PU10
1330 SZE SKIP IF ABS
1331 JMP PU10 JUMP IF REL.
1332 LRL 8
1333 LDA FTOP
1334 PU08 LRL 4
1335 STA PRI+14 SAVE FOR LISTING
1336 IAB
1337 STA PRI+16
1338 LRR 12 RESTORE POSITION
1339 JMP* PU00
1340 PU10 LRL 4
1341 LDA AF
1342 LRL 4
1343 ERA FTOP
1344 JMP PU08
1345 PU20 LRL 4
1346 LDA AF
1347 ANA K111
1348 LRL 4
1349 IMA AF
1350 ANA K114
1351 ERA AF
1352 JMP PU08
1353 K114 OCT 14000
1354 K146 OCT 117
1355 *
1356 *
1357 * ******************
1358 * *FLUSH SUBROUTINE*
1359 * ******************
1360 FS00 DAC **
1361 LDA OCNT BUFFER OCCUPANCY SIZE
1362 JST SAV SAVE INDEX REGESTER
1363 SUB K104 CHECK FOR OCNT .GT. 4
1364 SPL
1365 JMP FS20 SKIP OUTPUT IF BUFFER IS EMPTY
1366 ADD K105 ADD 1/2 AT B14
1367 ARS 1 DIVIDE BY 2
1368 TCA
1369 STA OCNT OCNT = -WORDS/BUFFER
1370 SUB K101 =1
1371 STA PCNT BUFFER SIZE INCLUDING CHECKSUM
1372 LDA OCI FIRST WORD IN BUFFER
1373 LRL 12
1374 CAS K102 =2
1375 JMP *+2
1376 JMP FS30 BLOCK TYPE = 2 (RELOCATABLE CODE)
1377 * EVERY TIME A BLOCK OF OBJECT OUTPUT IS DUMPED, THE FIRST
1378 * 3 WORDS OF THE BLOCK IS INSERTED IN THE SYMBOLIC OUTPUT
1379 * ALONG WITH AN EOB OPERATOR CODE IF SENSE SWITCH 1 1S DOWN.
1380 * TO INHIBIT THIS LINE, REPLACE FROM FS10 TO AND INCLUDING
1381 * FS11 WITH (FS10 CRA ).
1382 FS10 SS1
1383 JMP FS11 N0 BINARY LISTING UNLESS SSW-1 IS DOWN
1384 CALL F4$SYM
1385 DAC PRI OUTPUT WHATEVER MIGHT BE IN SYMBOLIC BUF.
1386 LDA FS41 =(E)(O)
1387 STA PRI+5 ENTER 'EOB' INTO LISTING
1388 LDA FS41+1 =(B)(SP)
1389 STA PRI+6
1390 LDA OCI
1391 JST OR80 ENTER FIRST WORD FROM BUFFER INTO LISTING
1392 DAC PRI+8
1393 LDA OCI+1
1394 JST OR80 ENTER WORD 2 FROM BUFFER INTO LISTING
1395 DAC PRI+12
1396 LDA OCI+2
1397 JST OR80 ENTER WORD 3 FROM BUFFER INTO LISTING
1398 DAC PRI+16
1399 CALL F4$SYM OUTPUT SYMBOLIC BUFFER
1400 DAC PRI
1401 JST PRSP RESET SYMBOLIC BUFFER TO SPACES
1402 FS11 CRA
1403 STA 0 COMPUTE CHECKSUM
1404 FS12 ERA OCI,1 MERGE BUFFER WORD INTO CHECKSUM
1405 IRS 0 INCREMENT BUFFER POSITION
1406 IRS OCNT DECREMENT BUFFER SIZE
1407 JMP FS12
1408 STA OCI,1 SET CHECKSUM INTO BUFFER
1409 LDA PCNT = NO. OF WORDS IN BUFFER
1410 IMA 0
1411 ADD FS40 = OCI+1,1
1412 CALL F4$OUT PUNCH BUFFER
1413 FS20 LDA RPL SET UP BUFFER FOR NEXT OUTPUT
1414 LRL 8
1415 ADD K145 =#'2000 (BLOCK CODE 2)
1416 STA OCI
1417 IAB
1418 STA OCI+1 SET FIRST 2 WORDS OF BUFFER
1419 LDA K103 =O
1420 STA OCNT RESET BUFFER OCCUPANCY SIZE
1421 JST RST RESET INDEX REGISTER
1422 JMP* FS00 EXIT
1423 *
1424 FS30 LGL 6 MERGE BUFFER SIZE INTO BLOCK HEADER
1425 SUB OCNT BUFFER SIZE
1426 ADD K101 =1 (ACCOUNT FOR CHECKSUM)
1427 LLR 6
1428 LGR 6
1429 LLL 6 BRING IN UPPER HALF OF ADDRESSES
1430 STA OCI STORE INTO BUFFER
1431 JMP FS10 COMPUTE CHECKSUM
1432 *
1433 FS40 DAC OCI+1,1
1434 FS41 BCI 2,EOB 'EOB'
1435 K145 OCT 20000 BLOCK TYPE 2 CODE
1436 C499 OCT 060000
1437 *
1438 OCI BSS 40 40 WORD CARD IMAGE INPUT BUFFER
1439 PRI BSS 40 40 WORD PRINT BUFFER
1440 BCI 20,
1441 BSS 30 COMPILER PATCH AREA
1442 *
1443 * ***********************
1444 * *IOS (AND IOL) GO HERE*
1445 * ***********************
1446 *
1447 END A0