A large commit.
[pdp8.git] / sw / os8 / v3d / sources / fortran / dectapes / dectape2 / pass3.pa
1 /3 OS/8 FORTRAN (PASS THREE)
2 /
3 / VERSION 4A PT 16-MAY-77
4 /
5 / OS/8 FORTRAN IV COMPILER-PASS 3
6 /
7 / BY: HANK MAURER
8 / UPDATED BY: R. LARY + M. HURLEY
9 /
10 /
11 /COPYRIGHT (C) 1974,1975 BY DIGITAL EQUIPMENT CORPORATION
12 /
13 /
14 /
15 /
16 /
17 /
18 /
19 /
20 /
21 /
22 /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
23 /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
24 /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
25 /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
26 /
27 /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
28 /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
29 /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
30 /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
31 /
32 /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
33 /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
34 /DIGITAL.
35 /
36 /
37 /
38 VERSON=4
39 \f/ PAGE ZERO STUFF
40 OUDEVH=7000 /PUT OUDEVH AND OUBUF IN DIFFERENT
41 INDEVH=6400
42 INBUF=6000
43 OUBUF=5400 /SEGMENTS, STAN KNOWS WHY
44 X10=10
45 X11=11
46 X12=12
47 NCHARS=20
48 CHAR=21
49 TEMP=22
50 FILDEV=6
51 FILBLK=7
52 DEV1CE=173 /THROUGH 177
53 DEVH=23
54 LINENO=24
55 SEVCHR=25 /THROUGH 33
56
57
58 / OS/8 V3C MAINTENANCE RELEASE FIXES:
59
60 /1. EXTENDED RANGE OF PAGE NUMBERS TO 99
61 /2 INTERCHANGED CR/LF FOR HASSINGER
62 /3 CHANGED VERSION NO. TO 305
63 /5. ADDED 'I' TO JMP (OFOO3
64 /
65 /
66 / CHANGES FOR OS/8 V3D AND OS/78 BY P.T.
67 / .CHANGED VERSION NUMBER TO 4A
68 / .PUT IN NEW DATE ALGORITHM
69 /
70 /
71 \f/START OF PASS 3
72 *400 /DON'T LOAD INTO 0-377
73 SPASS3, CDF 10
74 TAD I (7666 /GET DATE
75 DCA TEMP
76 TAD I LSTFIL /COPY FILE NAME
77 CDF
78 DCA I FILLST
79 ISZ LSTFIL
80 ISZ FILLST
81 ISZ OFSIZE
82 JMP SPASS3
83 TAD DEV1CE /FETCH HANDLER FOR OUTPUT FILE
84 CIF 10
85 JMS I (200 /USR IS IN CORE
86 1
87 OH, OUDEVH+1 /TWO PAGE HANDLER IS OK
88 JMP I (OFOO3
89 CIF 10
90 TAD DEV1CE /OPEN THE LISTING FILE
91 JMS I (200
92 3
93 OB, DEV1CE+1
94 OS, 0
95 JMP I (OFOO3
96 TAD OB /SAVE BLOCK NUMBER
97 DCA OBLOCK
98 TAD OS
99 DCA OSIZE /AND SIZE OF HOLE
100 TAD OH /SAVE HANDLER ADDRESS
101 DCA DEVH
102 TAD (NUMS-1 /SET UP NUMBER POINTER
103 DCA I (NUM
104 TAD TEMP /GET THE DATE--FOR YEAR ROUTINE
105 SNA
106 JMP I (PAJE /NO DATE
107 AND (7 /MASK OUT ALL BUT YEAR OFFSET BITS
108 DCA YRTEMP /INCREMENT FROM THE BASE YEAR
109 DCA TEMP1 /HOLDS THE FIRST DIGIT OF THE YEAR
110 TAD I (7777 /GET THE DATE EXTENSION BITS
111 AND (600 /MASK TO GET THE EXTENSION BITS
112 CLL RTR /ROTATE THEM INTO BIT
113 RTR /POSITIONS 7 AND 8
114 TAD (106 /ADD IN 70---OLD BASE YEAR
115 TAD YRTEMP /ADD IN THE YEAR OFFSET BITS
116 /TO FIND THE NEW BASE YEAR
117 CONVYR, CLL /FIND THE YEAR IN DECIMAL
118 TAD (-12 /KEEP SUBTRACTING 12
119 SNL /ALMOST DONE
120 JMP SECDIG /FIND THE SECOND DIGIT OF THE YEAR
121 ISZ TEMP1 /FIND THE FIRST DIGIT OF THE YEAR
122 JMP CONVYR /TRY AGAIN
123 SECDIG, TAD (72 /GET THE SECOND DIGIT OF THE YEAR
124 RTL /AND MAKE IT SIXBIT
125 RTL
126 RTL
127 DCA I (YEAR+1 /PUT IT IN THE PRINT LINE
128 TAD TEMP1 /GET THE FIRST DIGIT
129 TAD (5560 /MAKE IT SIXBIT
130 DCA I (YEAR /PRINT IT
131 TAD TEMP /GET THE DATE--NOW FIND THE MONTH/DAY
132 CLL RTR
133 RAR
134 AND (777
135 DCA TEMP
136 SIMPLE, TAD TEMP /GET THE DAY
137 AND (37
138 TAD (DAYS-1 /THIS IS THE LAZY WAY
139 DCA NCHARS
140 TAD I NCHARS
141 DCA I (DAY
142 TAD TEMP /GET THE MONTH
143 CLL RTR
144 RTR
145 AND (36
146 TAD (MONTHS-3
147 DCA X10
148 TAD I X10
149 DCA I (MONTH
150 TAD I X10
151 DCA I (MONTH+1
152 JMP I (PAJE /WE GOT THE DATE
153 LSTFIL, 7605
154 FILLST, DEV1CE
155 OFSIZE, -5
156 YRTEMP, 0
157 TEMP1, 0
158 \f PAGE
159 PAJE, JMP I (PRHDR /PRINT THE FIRST HEADING
160 CLL CML RTL /INITIALIZE LINE NUMBER
161 DCA LINENO
162 DCA TABCNT /**
163 RDLUPE, TAD (SEVCHR-1 /SEVEN CHAR BUFFER
164 DCA X10
165 TAD (-6
166 DCA NCHARS
167 RDLOOP, JMS I (ICHAR
168 JMP RDACHO /ECHO & IGNORE SHORT LINES
169 TAD (-211 /IS IT A TAB ?
170 SZA CLA
171 JMP NOTAB /NO
172 TAD (-2
173 DCA TABCNT /SET POINTER TO DO EXTRA SPACES LATER**
174 TAD (240
175 DCA I X10 /DO A TAB
176 ISZ NCHARS
177 JMP .-3
178 JMP WHAT /GO LOOK AT THE LINE
179 NOTAB, TAD CHAR
180 DCA I X10 /SAVE THE CHAR
181 ISZ NCHARS
182 JMP RDLOOP
183 WHAT, TAD SEVCHR /IS IT A COMMNET
184 TAD (-303
185 SNA CLA
186 JMP NOISN /YES, NO INTERNAL STMT NUMBER
187 TAD SEVCHR+5 /IS IT A CONTINUATION ?
188 TAD (-240
189 SZA CLA
190 JMP NOISN /YES, NO ISN
191 TAD LINENO /NEITHER OF THESE
192 JMS I (ONUMBR /PRINT ISN
193 TAD LINENO /2.01/ PUT LINE NUM
194 7421 /2.01/ INTO MQ
195 CLA /2.01/ CLA IF NO EAE
196 ISZ LINENO /BUMP LINE NUMBER
197 NOISN, TAD (211 /TAB
198 JMS I (OCHAR
199 TAD (SEVCHR-1 /PRINT FIRST SEVEN
200 DCA X10
201 TAD (-6
202 DCA NCHARS
203 TAD I X10
204 JMS I (OCHAR
205 ISZ NCHARS
206 JMP .-3
207 TAD TABCNT /SEE IF A TAB WAS 1ST
208 SMA CLA /IF YES,NEED 2 MORE SPACES
209 JMP NOTTAB
210 DCA TABCNT /WAS A TAB
211 TAD (240
212 JMS I (OCHAR
213 TAD (240
214 JMS I (OCHAR
215 NOTTAB, JMS I (ICHAR /PRINT REST OF LINE
216 JMP ENDLIN
217 JMS I (OCHAR
218 JMP .-3
219 ENDLIN, JMS I (CRLF /END LINE
220 JMS I (ERRCHK /CHECK ERROR LIST
221 JMP RDLUPE /DO NEXT LINE
222 TABCNT, 0
223
224 HEADER, TEXT ' FORTRAN IV 4AAAA '
225 *.-1
226 DAY, 4040
227 MONTH, 4040;4040
228 YEAR, TEXT ' PAGE '
229 *.-1
230 PAGENO, TEXT 'ONE'
231 ZBLOCK 7 /V3C ROOM FOR LARGE PAGE NUMBERS
232 RDACHO, TAD (211
233 JMS I (OCHAR
234 JMP I (RDECHO
235 PAGE
236 \f TEXT " "
237 LOS, TEXT "ONE "
238 NUMS,/ 2427;1740;4040
239 / 2410;2205;0540
240 / 0617;2522;4040
241 / 0611;2605;4040
242 / 2311;3040;4040
243 / 2305;2605;1640
244 / 0511;0710;2440
245 / 1611;1605;4040
246 / 2405;1640;4040
247 / 0514;0526;0516
248 / 2427;0514;2605
249 TEXT "TWO@@@@@"
250 TEXT "THREE@@@"
251 TEXT "FOUR@@@@"
252 TEXT "FIVE@@@@"
253 TEXT "SIX@@@@@"
254 TEXT "SEVEN@@@"
255 TEXT "EIGHT@@@"
256 TEXT "NINE@@@@"
257 TEXT "TEN@@@@@"
258 TEXT "ELEVEN@@"
259 TEXT "TWELVE@@"
260 TEXT "THIRTEEN"
261 TEXT "FOURTEEN"
262 TEXT "FIFTEEN@"
263 TEXT "SIXTEEN@"
264 TEXT "SEVENTEEN"
265 TEXT "EIGHTEEN"
266 TEXT "NINETEEN"
267 HIS, TEXT " TWENTY "
268 *.-1
269 TEXT " THIRTY "
270 *.-1
271 TEXT " FORTY "
272 *.-1
273 TEXT " FIFTY "
274 *.-1
275 TEXT " SIXTY "
276 *.-1
277 TEXT "SEVENTY "
278 *.-1
279 TEXT " EIGHTY "
280 *.-1
281 TEXT " NINETY "
282 *.-1
283 TEXT "HUNDRED "
284 *.-1
285 DAYS, 4061;4062;4063;4064;4065;4066;4067;4070;4071
286 6160;6161;6162;6163;6164;6165;6166;6167;6170;6171
287 6260;6261;6262;6263;6264;6265;6266;6267;6270;6271
288 6360;6361
289 MONTHS, 5512;0116 /-JAN
290 5506;0502 /-FEB
291 5515;0122 /-MAR
292 5501;2022 /-APR
293 5515;0131 /-MAY
294 5512;2516 /-JUN
295 5512;2514 /-JUL
296 5501;2507 /-AUG
297 5523;0520 /-SEP
298 5517;0324 /-OCT
299 5516;1726 /-NOV
300 5504;0503 /-DEC
301 IFZERO .&100 <PAGE>
302 \fENDX, TAD (-601 /2.02/ CLEAR END OF BUFFER
303 DCA LINENO /2.01/ FOR TV: REASONS
304 TAD X232 /2.01/ OUTPUT ^Z
305 JMS I (OCHAR /2.01/
306 ISZ LINENO /2.01/
307 JMP .-3 /2.01/
308 CIF 10 /CLOSE THE OUTPUT FILE
309 TAD DEV1CE
310 JMS I (200
311 4
312 DEV1CE+1
313 FILSIZ, 0
314 JMP (OFOO3
315 CDF 10 /LOOK AT OPTIONS
316 TAD I X7643
317 CDF
318 M70, SPA CLA
319 JMP I (7605 //A MEANS DON'T CHAIN TO RALF
320 CIF CDF 10
321 TAD FILDEV /SET UP RALF INPUT LIST
322 DCA I (7617 /FILE SIZE AND DEVICE CODE
323 ISZ (7617
324 TAD FILBLK /FILE START
325 DCA I (7617
326 ISZ (7617 /ZERO END OF LIST
327 DCA I (7617
328 TAD I X7643 /IS IT /F (FULL LIST) ?
329 AND (100
330 CIF 0
331 SZA CLA /**
332 JMP LISTIT
333 CIF 10
334 TAD I (7644
335 AND (20 /LET /T SWITCH THRU ALSO
336 SNA CLA
337 DCA I (7605 /NO, INHIBIT RALF LISTING
338 LISTIT, CIF 10
339 CLA IAC
340 CDF
341 JMS I (200 /LOOKUP RALF.SV
342 2
343 RALFNM
344 X7643, 7643
345 JMP (OFOO3
346 TAD .-3
347 DCA .+4
348 CIF 10 /CHAIN TO RALF
349 JMS I (200
350 6
351 X232, 232
352 NCNT, 0
353 ONUMBR, 0
354 DCA TEMP /OUTPUT ISN IN OCTAL
355 TAD (-4
356 DCA NCNT
357 OLOOP, TAD TEMP
358 CLL RTL /ANYONE WHO CAN'T FOLLOW THIS
359 RAL /SHOULDN'T BE A PROGRAMMER
360 DCA TEMP
361 TAD TEMP
362 RAL
363 AND (7
364 TAD (260
365 JMS I (OCHAR
366 ISZ NCNT
367 JMP OLOOP
368 JMP I ONUMBR
369 CONVRT, 0 /CONVERT TO ASCII AND PRINT
370 AND (77
371 SZA
372 TAD (-40
373 SPA
374 TAD (100
375 TAD (240
376 JMS I (OCHAR
377 JMP I CONVRT
378 LINECT, -1 /EJECT FIRST TIME
379 CRLF, PAJE+1
380 TAD (215 /CR LF
381 JMS I (OCHAR
382 TAD (212
383 JMS I (OCHAR
384 ISZ LINECT
385 JMP I CRLF
386 TAD (214
387 JMS I (OCHAR
388 PRHDR, TAD M70 /RESET COUNT
389 DCA LINECT
390 TAD (HEADER /COPY HEADER OUT
391 DCA TEMP
392 OHDR, TAD I TEMP
393 CLL RTR
394 CLL RTR
395 CLL RTR
396 JMS CONVRT
397 TAD I TEMP
398 JMS CONVRT
399 TAD I TEMP /END YET ?
400 ISZ TEMP
401 AND (77
402 SZA CLA
403 JMP OHDR
404 TAD (215 /V3C SKIP EXTRA LINE AFTER TITLE
405 JMS I (OCHAR
406 TAD (212 /V3C
407 JMS I (OCHAR /FOR CENTRONICS
408 JMP PUTNUM /GET NEW PAGE NUMBER
409 \f/ OS/8 FILE INPUT ROUTINES
410 PAGE
411 ICHAR, 0 /READ CHAR FROM INPUT FILE
412 ISZ INJMP /BUMP THREE WAY UNPACK SWITCH
413 ISZ INCHCT
414 INJMPP, JMP INJMP
415 TAD INEOF /DID LAST READ YEILD END OF FILE ?
416 SNA CLA
417 JMP INGBUF /NO, DO ANOTHER READ
418 GETNEW, JMS INNEWF /OPEN A NEW INPUT FILE
419 JMP I (ENDX /NO FILE TO OPEN
420 INGBUF, TAD INCTR /BUMP RECORD COUNTER
421 CLL IAC
422 SNL
423 DCA INCTR /RESTORE IF IT HASN'T OVERFLOWED
424 SZL
425 ISZ INEOF /SET END OF FILE SWITCH
426 JMS I INHNDL /DO THE READ
427 INCALL, 200
428 INBUFP, INBUF
429 INREC, 0
430 JMP INERR /HANDLER ERROR
431 INBREC, ISZ INREC /BUMP RECORD NUMBER
432 TAD (-601 /SET CHAR COUNT
433 DCA INCHCT
434 TAD INJMPP /RESET THREE WAY JUMP SWITCH
435 DCA INJMP
436 TAD INBUFP /RESET BUFFER POINTER
437 DCA INPTR
438 JMP ICHAR+1 /GO AGAIN
439 INERR, ISZ INEOF /EITHER EOF OR BADDIE
440 SMA CLA
441 JMP INBREC /END OF FILE, DO NEXT FILE
442 JMP OFOO3
443 INJMP, HLT /3 WAY CHARACTER UUPACK SWITCH
444 JMP ICHAR1
445 JMP ICHAR2
446 ICHAR3, TAD INJMPP /RESET JUMP SWITCH
447 DCA INJMP
448 TAD I INPTR
449 AND (7400 /COMBINE THE HIGH ORDER BITS
450 CLL RTR /OF THE TWO WORDS
451 RTR
452 TAD INTMP /TO FORM THE THIRD CHAR
453 RTR
454 RTR
455 ISZ INPTR /BUMP WORD POINTER
456 JMP ICHAR1+1 /DO SOME COMMON STUFF
457 ICHAR2, TAD I INPTR /SAVE THE HIGH ORDER BITS
458 AND (7400
459 DCA INTMP /FOR THE THIRD CHAR
460 ISZ INPTR /GO TO THE SECOND WORD
461 ICHAR1, TAD I INPTR /GET THE LOW 8 BITS
462 AND (377 /AND I MEAN ONLY 8 !!
463 DCA CHAR
464 TAD CHAR
465 TAD (-232 /IS IT ^Z (END OF FILE)
466 SNA
467 JMP GETNEW /YES, LOOK FOR THE NEXT FILE
468 TAD (232-212
469 SNA
470 JMP ICHAR+1 /IGNORE LINE FEEDS
471 TAD (212-215
472 SNA
473 JMP I ICHAR /RETURN ON CARRIAGE RETURN
474 IAC
475 SNA CLA
476 JMP ICHAR+1 /IGNORE FORM FEEDS
477 TAD CHAR
478 ISZ ICHAR
479 JMP I ICHAR /RETURN TO THE CALLING WORLD
480 INTMP, 0
481 INFPTR, 7617 /POINTER TO INPUT FILE LIST
482 INEOF, 1
483 INCHCT,
484 INNEWF, -1 /FETCH HANDLER FOR NEXT FILE
485 TAD (INDEVH+1 /THIS IS WHERE IT GOES
486 DCA INHNDL
487 CDF 10
488 TAD I INFPTR /GET NEXT INPUT FILE INFO
489 CDF
490 SNA
491 JMP I INNEWF /NO MORE FILES
492 CIF 10
493 JMS I INCALL /CALL MONITOR
494 1 /FETCH HANDLER
495 INHNDL, 0 /ENTRY ADDR GOES HERE
496 JMP OFOO3
497 CDF 10
498 TAD I INFPTR /GET LENGTH
499 AND (7760
500 SZA /A ZERO HERE MEANS >=256 BLOCKS
501 TAD (17 /PUT IN SOME MORE BITS
502 CLL CML RTR
503 RTR
504 DCA INCTR /STORE LENGTH OF FILE
505 ISZ INFPTR
506 TAD I INFPTR /GET STARTING RECORD NUMBER
507 DCA INREC
508 ISZ INFPTR
509 DCA INEOF /CLEAR EOF FLAG
510 ISZ INNEWF
511 CDF
512 JMP I INNEWF
513 INCTR, 0
514 INPTR, 0
515 /PUTNUM, TAD (PAGENO-1 /COPY THE NEW NUMBER
516 / DCA X10
517 / TAD I NUM
518 / ISZ NUM
519 / DCA I X10
520 / TAD I NUM
521 / ISZ NUM
522 / DCA I X10
523 / TAD I NUM
524 / ISZ NUM
525 / DCA I X10
526 / JMP CRLF+1
527 RDECHO, /KEEP LINES WITH L.T. 6 CHARS OUT OF ISN COLUMN
528 TAD (SEVCHR-1
529 DCA X12
530 RDECLP, TAD X12
531 CIA
532 TAD X10
533 SNA CLA
534 JMP ENDLIN /ONLY ECHO WHAT YOU READ
535 TAD I X12
536 JMS I (OCHAR
537 JMP RDECLP
538 \f PAGE
539 OUDUMP, 0 /BUMP THE DUFFER
540 TAD OSIZE /ANY ROOM LEFT ?
541 IAC
542 SNA
543 JMP OFOO3
544 DCA OSIZE /YES, ITS OK
545 JMS I DEVH /WRITE
546 4200 /CONTROL WORD
547 OUBUF /BUFFER POINTER
548 OBLOCK, 0 /BLOCK NUMBER
549 JMP OFOO3
550 ISZ OBLOCK /INCREMENT BLOCK NUMBER
551 ISZ FILSIZ /AND FILE SIZE
552 TAD OBLOCK-1 /SET BUFFER POINTER
553 DCA OUPTR
554 TAD (-200 /SET DOUBLE WORD COUNT
555 DCA OUWDCT
556 JMP I OUDUMP
557 OCHAR, 0 /OUTPUT A CHAR TO THE RALF INPUT FILE
558 AND (377
559 DCA OUTEMP /SAVE CHAR
560 KSF /^C TEST
561 JMP NOSTOP
562 KRB
563 AND (177
564 TAD (-3
565 SNA CLA
566 JMP I (7605 /YES
567 NOSTOP, ISZ OUJUMP /BUMP 3 WAY SWITCH
568 OUJUMP, JMP .
569 JMP CHAR1
570 JMP CHAR2
571 TAD OUTEMP /HIGH FOUR BITS GO INTO
572 CLL RTL /THE HIGH ORDER BITS OF THE
573 RTL /FIRST WORD OF THE TWO WORD PAIR
574 AND (7400 /SEE NOTE * BELOW
575 TAD I OUPOLD /COMBINE WITH OTHER BITS
576 DCA I OUPOLD
577 TAD OUTEMP /THE OTHER FOUR BITS OF THIS CHAR
578 CLL RTR /GO INTO THE HIGH ORDER FOUR
579 RTR /BITS OF THE SECOND WORD OF THE PAIR
580 RAR
581 AND (7400
582 TAD I OUPTR
583 DCA I OUPTR
584 TAD OUJMP /RESET 3 WAY BRANCH
585 DCA OUJUMP
586 ISZ OUPTR /BUMP BUFFER POINTER
587 ISZ OUWDCT /AND DOUBLE WORD COUNTER
588 JMP I OCHAR /BUFFER NOT FULL
589 JMS OUDUMP /DUMP IT
590 JMP I OCHAR
591 CHAR2, TAD OUPTR /SAVE FIRST WORD POINTER
592 DCA OUPOLD
593 ISZ OUPTR /GO TO SECOND WORD
594 CHAR1, TAD OUTEMP /STORE CHAR 1 OR 2
595 DCA I OUPTR
596 JMP I OCHAR
597 OUTEMP, 0
598 OUPOLD, 0
599 OUPTR, OUBUF
600 OUJMP, JMP OUJUMP
601 OUWDCT, -200
602 OSIZE, 0
603 ERRPTR, 5000
604 ERRCHK, 0
605 CDF 10
606 TAD I ERRPTR /ANY ERRORS FOR THIS LINE
607 CDF
608 CMA
609 TAD LINENO
610 SZA CLA
611 JMP I ERRCHK /NO
612 CLL CMA RAL /BACK UP POINTER
613 TAD ERRPTR
614 DCA ERRPTR
615 TAD ERRPTR
616 IAC
617 DCA TEMP
618 CDF 10
619 TAD I TEMP /GET CODE
620 CDF
621 CIA
622 DCA TEMP /SAVE NEGATIVE
623 TAD (ERRLST-1
624 DCA X10
625 FIND, TAD I X10 /LOOK FOR ERROR MESSAGE
626 SZA
627 TAD TEMP
628 SNA CLA
629 JMP .+3
630 ISZ X10
631 JMP FIND /SKIP POINTER WORD
632 CLA CMA
633 TAD I X10
634 DCA X10 /POINTER TO MESSAGE
635 PMLOOP, TAD I X10 /GET TWO CHARS
636 DCA TEMP
637 TAD TEMP
638 RTR
639 RTR
640 RTR
641 JMS CONVRT /PRINT FIRST
642 TAD TEMP
643 JMS CONVRT /PRINT SECOND
644 TAD TEMP
645 AND (77 /END OF MESSAGE ?
646 SZA CLA
647 JMP PMLOOP /NO, LOOP
648 JMS I (CRLF
649 JMP ERRCHK+1 /SEE IF ANY MORE FOR THIS LINE
650 RALFNM, FILENAME RALF.SV
651 \f PAGE
652 X304, 304
653 X305, 305
654 X7605, 7605
655 OFOO3, TAD X304 /FATAL ERROR IN PASS 3
656 JMS TTY
657 TAD X305
658 JMS TTY
659 JMP I X7605
660 TTY, 0 /PRINT ON TTY
661 TLS
662 TSF
663 JMP .-1
664 CLA
665 JMP I TTY
666 /ERROR MESSAGES
667 ERRLST, 0724;GT
668 1124;IT
669 0504;ED
670 2227;RW
671 0317;CO
672 0530;EX
673 2123;QS
674 2114;QL
675 1106;IF
676 0417;DO
677 2316;SN
678 2404;TD
679 0204;BD
680 2224;RT
681 2204;RD
682 2324;ST
683 0314;CL
684 1517;MO
685 1017;HO
686 1515;MM
687 2323;SS
688 1720;OP
689 0123;AS
690 0401;DA
691 0410;DH
692 1514;ML
693 0405;DE
694 0223;BS
695 1424;LT
696 1105;IE
697 2010;PH
698 1513;MK
699 1724;OT
700 2004;PD
701 1524;MT
702 0726;GV
703 1411;LI
704 0420;DP
705 0414;DL
706 0101;AA
707 2306;SF
708 0406;DF
709 1111;II
710 0;SYSERR
711 SYSERR, TEXT 'UNDEFINED ERROR'
712 II, TEXT 'ILLEGAL USE OF IF'
713 GT, TEXT 'BAD GOTO STATEMENT'
714 RW, TEXT 'BAD READ OR WRITE STATEMENT'
715 CO, TEXT 'ARGS IN COMMON OR VAR IN TWO COMMONS OR SYNTAX BAD'
716 IT, TEXT 'BAD IO LIST ELEMENT'
717 EX, TEXT 'BAD EXTERNAL STMT'
718 QS, TEXT 'SYNTAX ERROR IN EQUIVALENCE'
719 QL, TEXT 'VARIABLE IS EQUIVALENCED MORE THAN ONCE'
720 IF, TEXT 'THIS KIND OF STATEMENT NOT LEGAL AFTER LOGICAL IF'
721 DO, TEXT 'BAD SYNTAX IN DO OR IMPLIED DO'
722 SN, TEXT 'NOT LEGAL AS SUBROUTINE NAME'
723 TD, TEXT 'SYNTAX ERROR IN TYPE STATEMENT'
724 BD, TEXT 'DIMENSIONS TOO BIG, OR SYNTAX ERROR IN DIMENSION LIST'
725 ED, TEXT 'ILLEGAL AS DO ENDING STATEMENT'
726 RT, TEXT 'ATTEMPT TO RE-TYPE A VARIABLE'
727 RD, TEXT 'ATTEMPT TO RE-DIMENSION A VARIABLE'
728 ST, TEXT 'INTERNAL COMPILER ABORT NUMBER ONE'
729 CL, TEXT 'ERROR IN COMPLEX LITERAL'
730 MO, TEXT 'OPERAND EXPECTED, NONE PRESENT'
731 HO, TEXT 'HOLLERITH COUNT WRONG, OR MISSING QUOTES'
732 MM, TEXT 'MISMATCHED PARENTHESIS'
733 SS, TEXT 'SUBSCRIPT OR ARGUMENT LIST ERROR'
734 OP, TEXT 'ILLEGAL OPERATOR'
735 AS, TEXT 'ASSIGN ???'
736 DA, TEXT 'DATA STATEMENT ?'
737 DH, TEXT 'HOLLERITH COUNT OR QUOTE ERROR IN DATA STATEMENT'
738 ML, TEXT 'THIS LINE NUMBER IS ALREADY DEFINED'
739 DE, TEXT "WRONG WAY TO END A DO LOOP"
740 BS, TEXT 'ILLEGAL IN BLOCK DATA'
741 LT, TEXT 'LINE TOO BIG'
742 IE, TEXT 'INPUT FILE ERROR, TAKEN AS END STATEMENT'
743 PH, TEXT 'THIS FUNCTION / SUBROUTINE STATEMENT IS UNACCEPTABLE'
744 MK, TEXT 'YOU MISPELED A KEYWURD'
745 OT, TEXT 'ILLEGAL OPERAND TYPE FOR THIS OPERATOR'
746 PD, TEXT 'INTERNAL COMPILER ABORT NUMBER TWO'
747 MT, TEXT "ILLEGAL VARIABLE TYPE MIXING"
748 GV, TEXT 'VARIABLE IN ASSIGNED OR COMPUTED GOTO MUST BE INTEGER OR REAL'
749 LI, TEXT 'EXPRESSION IN LOGICAL IF IS NOT TYPED LOGICAL'
750 DP, TEXT 'DO PARAMETERS MUST BE INTEGER OR REAL'
751 DL, TEXT "YOUR DATA AND VARIABLE LISTS ARE OF DIFFERENT LENGTHS"
752 AA, TEXT 'SUBROUTINES MAY ONLY HAVE SIX ARGUMENTS THAT ARE DIMENSIONED'
753 SF, TEXT 'BAD STATEMENT FUNCTION'
754 DF, TEXT 'BAD DEFINE FILE'
755 \fPAGEN, 1
756
757 PUTNUM, ISZ PAGEN /BUMP PAGE NUMBER
758 TAD PAGEN
759 TAD (-24 /LT 20?
760 SMA CLA
761 JMP OVER19 /YES
762 TAD (-5 /NO
763 JMS MOVE /MOVE IN NUMBER
764 NUM, 0
765 PAGENO-1
766 TAD NUM
767 TAD (5
768 DCA NUM /PT TO NEXT ONE
769 JMP I (CRLF+1
770
771 TENS, 0
772 ONES, 0
773 KNT, 0
774
775 OVER19, DCA TENS /CONVERT
776 TAD PAGEN /PAGE NUMBER TO ONES AND TENS
777 O1, TAD (-12 /DIVIDE BY TEN
778 SPA
779 JMP .+3
780 ISZ TENS
781 JMP O1
782 TAD (12
783 DCA ONES
784 TAD TENS
785 CLL RTL
786 TAD (HIS-10-1
787 DCA HIP /POINT TO HIGH PART
788 TAD ONES
789 CLL RTL
790 TAD ONES
791 TAD (LOS-5-1
792 DCA LOP
793 TAD (-4
794 JMS MOVE
795 HIP, 0
796 PAGENO-1
797 TAD (-5
798 JMS MOVE
799 LOP, 0
800 PAGENO+4-1
801 JMP I (CRLF+1
802 \fMOVE, 0
803 DCA KNT
804 TAD I MOVE
805 DCA X11
806 ISZ MOVE
807 TAD I MOVE
808 DCA X12
809 ISZ MOVE
810 TAD I X11
811 DCA I X12
812 ISZ KNT
813 JMP .-3
814 JMP I MOVE
815 $
816 \f