| 1 | * C210-001-6601 (FRTN) 3C NO.180463000 REV. D |
| 2 | * |
| 3 | * TAPE 1 OF 5 - BEGIN |
| 4 | * |
| 5 | * |
| 6 | * COMPUTER. DDP-116,516 |
| 7 | * |
| 8 | * |
| 9 | * |
| 10 | * |
| 11 | * PROGRAM CATEGORY- COMPILER |
| 12 | * |
| 13 | * |
| 14 | * |
| 15 | * |
| 16 | * PROGRAM TITLE. FRTN |
| 17 | * EXPANDED FORTRAN IV COMPILER |
| 18 | * FOR DDP-116,516 |
| 19 | * |
| 20 | * |
| 21 | * |
| 22 | * |
| 23 | * |
| 24 | * |
| 25 | * |
| 26 | * APPROVAL DATE |
| 27 | * |
| 28 | * |
| 29 | * PROG--------------------- ------------ |
| 30 | * |
| 31 | * |
| 32 | * SUPR---------------------- ------------ |
| 33 | * |
| 34 | * |
| 35 | * QUAL---------------------- ------------ |
| 36 | * |
| 37 | * |
| 38 | * NO. OF PAGES ------------ |
| 39 | * |
| 40 | * REVISIONS |
| 41 | * |
| 42 | * REV. D ECO 5249 |
| 43 | * REV. C ECO 3824 10-31-66 |
| 44 | * REV. B ECO 3476 09-19-66 |
| 45 | * REV. A 06-08-66 |
| 46 | * |
| 47 | * AUTHOR |
| 48 | * |
| 49 | * HONEYWELL. INC. - COMPUTER CONTROL DIVISION |
| 50 | * |
| 51 | * |
| 52 | * PURPOSE |
| 53 | * |
| 54 | * THIS PROGRAM IS DESIGNED TO COMPILE ASA STANDARD FORTRAN IV |
| 55 | * PROGRAMS IN ONE PASS, GENERATING OPTIMUM OBJECT CODE FOR THE |
| 56 | * DDP-116 OR DDP-516. |
| 57 | * |
| 58 | * |
| 59 | * RESTRICTIONS |
| 60 | * |
| 61 | * MINIMUM 8K CORE STORAGE |
| 62 | * |
| 63 | * |
| 64 | * STORAGE |
| 65 | * |
| 66 | * 6682 (DECIMAL) |
| 67 | * 15034 (OCTAL) |
| 68 | * |
| 69 | * |
| 70 | * USE |
| 71 | * |
| 72 | * |
| 73 | * ******************************** |
| 74 | * |
| 75 | * *FORTRAN-IV OPERATING PROCEDURE* |
| 76 | * ******************************** |
| 77 | * |
| 78 | * 1. LOAD THE COMPILER SYSTEM TAPE USING STANDARD 'LOAD-MODE' |
| 79 | * (DDP-116), OR "PAL-MODE (DDP-516) LOADING PROCEDURES |
| 80 | * |
| 81 | * 2. SET THE (A) REGISTER FOR THE DESIRED INPUT/OUTPUT DEVICE |
| 82 | * SELECTION AS DESCRIBED BELOW, SET (P) TO '1000, SET THE |
| 83 | * SENSE SWITCHES AS DESCRIBED BELOW, AND PRESS START. |
| 84 | * |
| 85 | * 3. INPUT/OUTPUT DEVICE SELECTION (BITS SET IN (A) ON ENTRY)..... |
| 86 | * 1......IF SET, CERTAIN ERROR CHECKS ARE NOT MADE. THIS |
| 87 | * OPTION IS USED WHEN COMPILING THOSE PARTS OF THE |
| 88 | * LIBRARY WRITTEN IN FORTRAN LANGUAGE AND IT ALLOWS THE |
| 89 | * LIBRARY TO TAKE ADVANTAGE OF THE COMPILER'S LOGIC TO |
| 90 | * GENERATE SPECIAL CODING. |
| 91 | * |
| 92 | * 2-7....NOT ASSIGNED |
| 93 | * |
| 94 | * 8-10...INPUT DEVICE SELECTION |
| 95 | * 1 = ASR-33/35 KEYBOARD (OR ITS PAPER TAPE READER) |
| 96 | * 2 = NCR CARD READER |
| 97 | * 3 = DIGITRONICS PAPER TAPE READER |
| 98 | * 4 = MAGNETIC TAPE ( UNIT 1 ) |
| 99 | * 5-7 = (SPARES) |
| 100 | * |
| 101 | * 11-13..SYMBOLIC LISTING SELECTION |
| 102 | * 0. SUPPRESS ALL SYMBOLIC LISTINGS |
| 103 | * 1. ASR-33/35 TYPEWRITER |
| 104 | * 2. LINE PRINTER |
| 105 | * 3 = ( SPARE ) |
| 106 | * 4 = LISTING ON MAGNETIC TAPE UNIT 2 |
| 107 | * 5-7 = (SPARES) |
| 108 | * |
| 109 | * 14-16..BINARY OUTPUT SELECTION |
| 110 | * 0. SUPPRESS BINARY OUTPUT. |
| 111 | * 1. BRPE HIGH SPEED PAPER TAPE PUNCH |
| 112 | * 2. ASR BINARY OUTPUT ASR/33 |
| 113 | * 3. ASR BINARY OUTPUT ASR/35 |
| 114 | * 4 = MAGNETIC TAPE OUTPUT |
| 115 | * 5-7 (SPARES) |
| 116 | * |
| 117 | * |
| 118 | * 4. SENSE SWITCH SETTINGS AND MEANINGS....... |
| 119 | * 1......EXPAND THE SYMBOLIC LISTING TO INCLUDE |
| 120 | * SIDE-BY-SIDE OCTAL INFORMATION. |
| 121 | * 2......INHIBIT SYMBOLIC LISTING (AS LONG AS SSW-1 NOT SET). |
| 122 | * 3......PAUSE BEFORE INPUT OF THE NEXT RECORD. DURING |
| 123 | * THIS PAUSE, THE (A) REGISTER WILL DISPLAY THE CURRENT |
| 124 | * STATUS OF THE I/O KEYBOARD, IT MAY BE |
| 125 | * CHANGED AT THIS TIME IF DESIRED BEFORE RESETTING |
| 126 | * SSW-3 AND PRESSING START TO CONTINUE. |
| 127 | * 4......CAUSE TRACE COUPLING INFORMATION TO BE INCLUDED |
| 128 | * IN THE OBJECT CODING BEING GENERATED REGARDLESS OF |
| 129 | * ANY TRACE STATEMENTS WITHIN THE PROGRAM (OPERATOR |
| 130 | * OVERRIDE). |
| 131 | * |
| 132 | * 5. WHEN BINARY TAPE IS BEING GENERATED, THE COMPILER |
| 133 | * AUTOMATICALLY TURNS ON THE TAPE PUNCH AND PUNCHES OUT A |
| 134 | * LENGTH OF LEADER. AFTER THE END-OF-JOB IS TYPED, A LENGTH OF |
| 135 | * TRAILER IS PUNCHED BEFORE TURNING OFF THE PUNCH, AND THE LINE |
| 136 | * PRINTER IS ADVANCED TO THE NEXT PAPER SEAM. PRESS 'START' |
| 137 | * TO PROCESS THE NEXT PROGRAM (BATCH COMPILING). |
| 138 | * |
| 139 | * FOR ASR BINARY OUTPUT, NO LEADER OR TRAILER IS |
| 140 | * PROVIDED, AND THE BINARY PUNCH IS LEFT ON THROUGHOUT |
| 141 | * THE COMPILATION. |
| 142 | * |
| 143 | * |
| 144 | * ERRORS |
| 145 | * |
| 146 | * THE ERROR MESSAGES OUTPUT BY THIS COMPILER ARE LISTED ON A |
| 147 | * SEPERATE DOCUMENT FOR EASE OF DISTRIBUTION. |
| 148 | * ************************* |
| 149 | * *DATA POOL ENTRY FORMATS* |
| 150 | * ************************* |
| 151 | * |
| 152 | * THE DATA POOL CONSISTS OF FOUR FORMS OF INFORMATION |
| 153 | * 1. THE ASSIGNMENT TABLE CONSISTS OF 5 WORDS, STARTS |
| 154 | * AT THE END OF THE COMPILER AND EXTENDS TOWARD THE |
| 155 | * END OF MEMORY. |
| 156 | * |
| 157 | * TDCCCCCCCCCCCCCC....DP(A+4) |
| 158 | * CCCCCCCCCCCCCCCC....DP(A+3) |
| 159 | * CCCCCCCCCCCCCCCC....DP(A+2) |
| 160 | * IIAAAAAAAAAAAAAA....DP(A+1) |
| 161 | * NRRRMMMLLLLLLLLL....DP(A) |
| 162 | * |
| 163 | * T = TRACE TAG |
| 164 | * D = DATA TAG |
| 165 | * C = SIX 8-BIT CHAR. OR BINARY CONSTANT |
| 166 | * I = ITEM USAGE (IU) |
| 167 | * 0 = NO USAGE 2 = VAR/CONSTAN^ |
| 168 | * 1 = SUBPROGRAM 3 = ARRAY |
| 169 | * A = ASSIGNMENT ADDRESS |
| 170 | * N = NAME TAG (NT) |
| 171 | * 0 = NAME 1 = CONSTANT |
| 172 | * R = ADDRESS TYPE (AT) |
| 173 | * 0 = ABSOLUTE 3 = STRING-REL |
| 174 | * 1 = RELATIVE 4 = COMMON |
| 175 | * 2 = STRING-ABS 5 = DUMMT |
| 176 | * M = ITEM MODE (IM) |
| 177 | * 1 = INTEGER 5 = COMPLEX |
| 178 | * 2 = REAL 6 = DOUBLE |
| 179 | * 3 = LOGICAL |
| 180 | * 4=COM/EQU LINK |
| 181 | * 2. THE DO TABLE 'FLOATS' ON TOP OF THE ASSIGNMENT |
| 182 | * TABLE AND CONTAINS THE INFORMATION NEEDED TO CLOSE-OUT |
| 183 | * A DO-LOOP, EACH ENTRY IS 5 WORDS. |
| 184 | * 00IIIIIIIIIIIII |
| 185 | * 00TTTITTTTTTTTT |
| 186 | * 00XXXXXXXXXXXXX |
| 187 | * 00UUUUUUUUUUUUUU |
| 188 | * 00NNNNNNNNNNNNNN |
| 189 | * I = INITIAL VALUE/OR RPL |
| 190 | * T = TERMINAL VALUE |
| 191 | * X = INDEX |
| 192 | * U = INCREMENT |
| 193 | * N = STATEMENT NUMBER |
| 194 | * |
| 195 | * 3. THE EXPRESSION TABLE (A0I TABLE) 'FLOATS' ON TOP |
| 196 | * THE DO TABLE AND CONSISTS OF 2 WORD ENTRIES. |
| 197 | * |
| 198 | * NOOOOOOOOIIIIIII.....DP(I+1) |
| 199 | * 00AAAAAAAAAAAAAAAA...DP(I) |
| 200 | * N = NEGATION INDICATOR |
| 201 | * O = OPERATOR |
| 202 | * I = INDEX (OPERATOR LEVEL) |
| 203 | * A = ASSIGNMENT TABLE REFERENCE |
| 204 | * 4. THE TRIAD TABLE IS USED TO OPTIMIZE EXPRESSIONS AND |
| 205 | * IS AT THE END OF MEMORY EXTENDING DOWN TOWARDS THE |
| 206 | * COMPILER. EACH ENTRY IS THREE WORDS LONG. |
| 207 | * |
| 208 | * S000000000PPPPPP.....DP(L+2) |
| 209 | * 0011111111111111.....DP(L+1) |
| 210 | * 0022222222222222.....DP(L) |
| 211 | * S = TEMP STORAGE INDICATOR |
| 212 | * P = OPERATOR |
| 213 | * 1 = FIRST OPERAND ADDRESS |
| 214 | * 2 = SECOND OPERAND ADDRESS |
| 215 | ABS |
| 216 | ORG '100 |
| 217 | * |
| 218 | * ************************************ |
| 219 | * * DIRECTORY OF FORTRAN IV COMPILER * |
| 220 | * ************************************ |
| 221 | * |
| 222 | * |
| 223 | * |
| 224 | *..............ENTRANCE GROUP |
| 225 | DAC A3 (ENG1) COMPILER ENTRANCE/INITIALIZE |
| 226 | DAC DP DATA POOL START |
| 227 | * |
| 228 | *..............INPUT GROUP |
| 229 | DAC IC00 (IPG1) INPUT COLUMN |
| 230 | DAC UC00 (IPG2) UNINPUT COLUMN |
| 231 | DAC CH00 (IPG3) INPUT CHARACTER |
| 232 | DAC ID00 (IPG4) INPUT DIGIT |
| 233 | DAC IA00 (IPG5) INPUT (A) CHARACTERS |
| 234 | DAC FN00 (IPG6) FINISH OPERATOR |
| 235 | DAC DN00 (IPG7) INPUT DNA |
| 236 | DAC II00 (IPG8) INPUT ITEM |
| 237 | DAC OP00 (IPG9) INPUT OPERAND |
| 238 | DAC NA00 (IPG10) INPUT NAME |
| 239 | DAC IG00 (IPG11) INPUT INTEGER |
| 240 | DAC IV00 (IPG12) INPUT INTEGER VARIABLE/CONSTANT |
| 241 | DAC IR00 (IPG13) INPUT INTEGER VARIABLE |
| 242 | DAC IS00 (IPG14) INPUT STATEMENT NUMBER |
| 243 | DAC XN00 (IPG15) EXAMINE NEXT CHARACTER |
| 244 | DAC SY00 INPUT STMBOL |
| 245 | * |
| 246 | *..............TEST GROUP |
| 247 | DAC TS00 (TSG1) ALL CHARACTER TEST (EXCEPT C/R) |
| 248 | DAC IP00 (TSG2) )-INPUT OPERATOR |
| 249 | DAC A1 (TSG3) C/R TEST |
| 250 | DAC B1 (TSG4) , OR C/R TEST |
| 251 | DAC NU00 (TSG5) NO USAGE TEST |
| 252 | DAC NC00 (TSG6) NON CONSTANT TEST |
| 253 | DAC NS00 (TSG7) NON SUBPROGRAM TEST |
| 254 | DAC AT00 (TSG8) ARRAY TEST |
| 255 | DAC IT00 (TSG9) INTEGER TEST |
| 256 | DAC NR00 (TSG10) NON REL TEST |
| 257 | * |
| 258 | *..............ASSIGNMENT GROUP |
| 259 | DAC AS00 (ASG1) ASSIGN ITEM |
| 260 | DAC TG00 (ASG2) TAG SUBPROGRAM |
| 261 | DAC TV00 (ASG3) TAG VARIABLE |
| 262 | DAC FA00 (ASG4) FETCH ASSIGN |
| 263 | DAC FL00 (ASG5) FETCH LINK |
| 264 | DAC KT00 (ASG6) D(0)= SIZE OF ARRAY DEFLECTION |
| 265 | DAC DM00 (ASG7) DEFINE IM |
| 266 | DAC DA00 (ASG8) DEFINE AF |
| 267 | DAC AF00 (ASG9) DEFINE AFT |
| 268 | DAC LO00 (ASG10) DEFINE LOCATION |
| 269 | DAC AI00 (ASG11) ASSIGN INTEGER CONSTANT |
| 270 | DAC AA00 (ASG12) ASSIGN SPECIAL |
| 271 | DAC NXT GET NEXT ENTRY FROM ASSGN TABLE |
| 272 | DAC BUD BUILD ASSIGNMENT TABLE ENTRT |
| 273 | * |
| 274 | *..............CONTROL GROUP |
| 275 | DAC B6 (CNG1) JUMP |
| 276 | DAC C5 ILL TERM |
| 277 | DAC C6 (CNG2) CONTINUE |
| 278 | DAC C7 (CNG3) STATEMENT INPUT |
| 279 | DAC C8 (CNG4) STATEMENT SCAN |
| 280 | DAC A9 (CNG5) STATEMENT IDENTIFICATION |
| 281 | DAC NP00 (CNG6) FIRST NON-SPEC CHECK |
| 282 | * |
| 283 | *..............SPECIFICATIONS GROUP |
| 284 | DAC EL00 (SPG1) EXCHANGE LINKS |
| 285 | DAC NM00 (SPG2) NON COMM0N TEST |
| 286 | DAC ND00 (SPG3) NON DUMMY OR SUBPROGRAM TEST |
| 287 | DAC SC00 (SPG4) INPUT SUBSCRIPT |
| 288 | DAC IL00 (SPG5) INPUT LIST ELEMENT |
| 289 | DAC R1 (SPG6) FUNCTION |
| 290 | DAC R2 SUBROUTINE |
| 291 | DAC A3 (SPG7) INTEGER |
| 292 | DAC A4 REAL |
| 293 | DAC A5 DOUBLE PRECISION |
| 294 | DAC A6 COMPLEX |
| 295 | DAC A7 LOGICAL |
| 296 | DAC B2 (SPG8) EXTERNAL |
| 297 | DAC B3 (SPG9) DIMENSION |
| 298 | DAC B7 INPUT DIMENSION |
| 299 | DAC B4 (SPG10) COMMON |
| 300 | DAC B5 (SPG11) EQUIVALENCE |
| 301 | DAC C2 (SPG12) RELATE COMMON ITEMS |
| 302 | DAC C3 (SPG13) GROUP EOUIVALENCE |
| 303 | DAC C4 (SPG14) ASSIGN SPECIFICATIONS |
| 304 | DAC W4 (SPG15) DATA |
| 305 | DAC R3 (SPG16) BLOCK DATA |
| 306 | DAC TRAC (SPG17) TRACE |
| 307 | * |
| 308 | *..............PROCESSOR GROUP |
| 309 | DAC V3 (PRG1) IF |
| 310 | DAC R7 (PRG2) GO TO |
| 311 | DAC IB00 INPUT BRANCH LIST |
| 312 | DAC W3 (PRG3) ASSIGN |
| 313 | DAC C9 (PRG5) DO |
| 314 | DAC V7 (PRG6) END FILE |
| 315 | DAC V6 BACKSPACE |
| 316 | DAC V8 REWIND |
| 317 | DAC V5 (PRG7) READ |
| 318 | DAC V4 WRITE |
| 319 | DAC V2 (PRG8) FORMAT |
| 320 | DAC SI00 INPUT FORMAT STRING |
| 321 | DAC IN00 INPUT NUMERIC FORMAT STRING |
| 322 | DAC NZ00 NON ZERO STRING TEST |
| 323 | DAC W8 (PRG9) PAUSE |
| 324 | DAC W7 STOP |
| 325 | DAC R8 (PRG10) CALL |
| 326 | DAC G2 ASSIGNMENT STATEMENT |
| 327 | DAC R9 (PRG11) RETURN |
| 328 | DAC G1 (PRG12) STATEMENT FUNCTION |
| 329 | DAC W5 (PRG13) END |
| 330 | * |
| 331 | *..............PROCESSOR SUBROUTINES GROUP |
| 332 | DAC PO00 (PSG1) INPUT CHAR AND OUTPUT PACK |
| 333 | DAC HS00 (PSG2) TRANSMIT HOLLERITH STRING |
| 334 | DAC DP00 (PSG3) DO INPUT |
| 335 | DAC DS00 (PSG4) DO INITIALIZE |
| 336 | DAC DQ00 (PSG5) DO TERMINATION |
| 337 | DAC EX00 (PSG6) EXPRESSION |
| 338 | DAC CA00 (PSG7) SCAN |
| 339 | DAC ST00 TRIAD SEARCH |
| 340 | DAC TC00 TEMP STORE CHECK |
| 341 | DAC ET00 (PSG8) ENTER TRIAD |
| 342 | DAC GE00 (PSG9) GENERATE SUBPROGRAM ENTRANCE |
| 343 | * |
| 344 | *..............OUTPUT GROUP |
| 345 | DAC OL00 (OPG1) OUTPUT OBJECT LINK |
| 346 | DAC OI00 (OPG2) OUTPUT I/O LINK |
| 347 | DAC CN00 (OPG3) CALL NAME |
| 348 | DAC OK00 (OPG4) OUTPUT PACK |
| 349 | DAC OB00 (OPG5) OUTPUT OA |
| 350 | DAC OT00 (OPG6) OUTPUT TRIADS |
| 351 | DAC OM00 (OPG7) OUTPUT ITEM |
| 352 | DAC OR00 (OPG8) OUTPUT REL |
| 353 | DAC OA00 OUTPUT ABS |
| 354 | DAC OS00 OUTPUT STRING |
| 355 | DAC OW00 (OPG9) OUTPUT WORD |
| 356 | DAC PU00 PICKUP |
| 357 | DAC FS00 (OPG10) FLUSH |
| 358 | DAC TRSE (OPG11) OUTPUT TRACE COUPLING |
| 359 | DAC PRSP SET BUFFER TO SPACES |
| 360 | * |
| 361 | *..............MISC. GROUP |
| 362 | DAC AD3 ADD TWO 3 WORD INTEGERS |
| 363 | DAC IM00 MULTIPLY (A) BY (B) |
| 364 | DAC STXA SET A INTO INDEX |
| 365 | DAC STXI SET I INTO INDEX |
| 366 | DAC NF00 SET FS INTO NAMF |
| 367 | DAC BLNK SET AREA TO ZEROS |
| 368 | DAC MOV3 MOVE 3 WORDS TO TEMP STORAGE |
| 369 | DAC CIB COMPARE IBUF TO A CONSTANT |
| 370 | DAC SAV SAVE INDEX IN PUSH-DOWN STACK |
| 371 | DAC RST RESET INDEX FROM PUSH-DOWN STACK |
| 372 | DAC PACK |
| 373 | DAC ER00 ERROR OUTPUT |
| 374 | DAC SRT SHIFT RIGHT 1 (TRIPLE PRES.) |
| 375 | DAC SFT SHIFT LEFT 1 (TRIPLE PRES.) |
| 376 | DAC LIST |
| 377 | * |
| 378 | * |
| 379 | * **************************** |
| 380 | * *CONSTANT AND VARIABLE POOL* |
| 381 | * **************************** |
| 382 | * |
| 383 | XR EQU 0 INDEX REGISTER |
| 384 | * THE FOLLOWING 62 VARIABLES ARE SET TO ZERO DURING |
| 385 | * PROGRAM INITIALIZATION |
| 386 | A EQU '40 ASSIGNMENT TABLE INDEX |
| 387 | I EQU A+1 EXPRESSION TABLE INDEX |
| 388 | C EQU A+2 |
| 389 | ASAV EQU A+3 |
| 390 | L EQU A+4 |
| 391 | MFL EQU A+5 MODE FLAG |
| 392 | SFF EQU A+6 FUNCTION FLAG |
| 393 | SBF EQU A+7 SUBFUNCTION FLAG |
| 394 | SXF EQU A+8 POSSIBLE CPX FLAG |
| 395 | SPF EQU A+9 PEC. FLAG |
| 396 | TCF EQU A+10 TEMP STORE COUNT |
| 397 | IFF EQU A+11 |
| 398 | ABAR EQU A+12 BASE OF ASSIGN TABLE |
| 399 | XST EQU A+13 FIRST EXECUTABLE STMNT. |
| 400 | CFL EQU A+14 MON FLAG |
| 401 | D EQU A+15 DO INDEX |
| 402 | RPL EQU A+16 RELATE PROGRAM LOCATION |
| 403 | BDF EQU A+17 LOCK DATA FLAG |
| 404 | SLST EQU A+18 SOURCE LIST |
| 405 | OBLS EQU A+19 OUTPUT BINARY LIST |
| 406 | BNOT EQU A+20 BINART OUTPUT FLAG |
| 407 | TRF EQU A+21 TRACE FLAG (END TRACE STATEMENT NO.) |
| 408 | TRFA EQU A+22 POINTER TO FIRST VAR, 0R ARRAY NAME IN |
| 409 | * AN EXPRESSION (FOR USE BY TRACE). |
| 410 | SOF EQU A+23 SUBSCRIPT CONSTANT FLAG (NON-ZERO IF SET) |
| 411 | LIF EQU A+24 LOGICAL IF FLAG |
| 412 | LSTN EQU A+25 LAST STATEMENT NO. |
| 413 | LSTF EQU A+26 LAST STATEMENT FLAG |
| 414 | LSTP EQU A+27 LAST STATEMENT STOP |
| 415 | SDSW EQU A+28 STATEMENT I0 SWITCH |
| 416 | * |
| 417 | NAMF EQU '570 NAME FUNCTION |
| 418 | ND EQU NAMF+1 NO OF DIMENSIONS |
| 419 | NS EQU '572 NO OF SUBSCRIPTS |
| 420 | NT EQU NS+1 NAME TAG |
| 421 | NTF EQU NS+2 NAME TAG FLAG |
| 422 | NTID EQU NS+3 NO. WORDS IN TID |
| 423 | O1 EQU NS+4 OPERATOR 1 |
| 424 | O2 EQU NS+5 OPERATOR 2 |
| 425 | P EQU NS+6 |
| 426 | PCNT EQU NS+7 |
| 427 | OCNT EQU NS+8 OUTPUT COUNT |
| 428 | S0 EQU NS+9 |
| 429 | S1 EQU NS+10 SUBSCRIPT NO.1 |
| 430 | S2 EQU NS+11 SUBSCRIPT NO.2 |
| 431 | S3 EQU NS+12 SUBSCRIPT NO.3 |
| 432 | TC EQU NS+13 TERMINAL CHAR |
| 433 | TT EQU NS+14 |
| 434 | TYPE EQU NS+15 |
| 435 | X EQU NS+16 ARRAY INDICES |
| 436 | X1 EQU NS+17 |
| 437 | X2 EQU NS+18 |
| 438 | X3 EQU NS+19 |
| 439 | X4 EQU NS+20 |
| 440 | NTA EQU NS+21 UNPACKED ASSIGNMENT ITEMS |
| 441 | ATA EQU NS+22 |
| 442 | IMA EQU NS+23 |
| 443 | CLA EQU NS+24 |
| 444 | IUA EQU NS+25 |
| 445 | DTA EQU NS+26 |
| 446 | TTA EQU NS+27 |
| 447 | *..........ADJUST THIS ORG IF THE SIZE OF THE CONSTAST POOL IS MODIFIED |
| 448 | ORG '630 |
| 449 | AF PZE 0 ADDRESS FIELD |
| 450 | GF EQU AF |
| 451 | AT PZE 0 ADDRESS TYPE |
| 452 | CODE PZE 0 OUTPUT CODE |
| 453 | D0 PZE 0 DIMENSIONS |
| 454 | D1 PZE 0 |
| 455 | D2 PZE 0 |
| 456 | D3 PZE 0 |
| 457 | D4 PZE 0 |
| 458 | DF PZE 0 DATA FLAG |
| 459 | NF PZE 0 |
| 460 | B PZE 0 |
| 461 | DFL PZE 0 DELIMITER FLAG |
| 462 | E OCT 0 EQUIVALENCE INDEX |
| 463 | EP PZE 0 E-PRIME |
| 464 | E0 PZE 0 E-ZERO |
| 465 | FTOP PZE 0 OUTPUT COMMAND |
| 466 | GFA PZE 0 |
| 467 | ICSW PZE 1 INPUT CONTROL SWITCH |
| 468 | IFLG PZE 0 I-FLAG |
| 469 | IM PZE 0 ITEM MODE |
| 470 | IOF PZE 0 I-0 FLAG |
| 471 | IU PZE 0 ITEM USAGE |
| 472 | KBAR PZE 0 TEM STORE |
| 473 | KPRM PZE 0 TEM STORE |
| 474 | EBAR OCT -1 E-BAR |
| 475 | DO OCT 17 DO TABLE INDEX(FLOATS ABOVE ASSIGNMENT) |
| 476 | CC PZE '111 CARD COLUMN COUNTER |
| 477 | DCT PZE 0 DUMMY ARGUMENT COUNT |
| 478 | F PZE 0 TRIAD TABLE INDEX |
| 479 | CL PZE 0 ASSIGNMENT ITEMS UNPACKED |
| 480 | DT PZE 0 |
| 481 | FLT1 PZE 0 FETCH LINK CL POINTER LOCATION |
| 482 | LIBF PZE 0 SPECIAL LIBRARY FLAG (NON-ZERO IF SET) |
| 483 | *..........CONSTANTS USED BY THE COMPILER |
| 484 | K4 OCT 251 0) |
| 485 | K5 OCT 254 0, |
| 486 | K8 OCT 240 0-SPACE |
| 487 | K9 OCT 257 0/ |
| 488 | K10 OCT 256 0. |
| 489 | K12 OCT 255 0- |
| 490 | K13 OCT 253 0+ |
| 491 | K15 OCT 244 0$ |
| 492 | K16X OCT 16 |
| 493 | K17 OCT 250 0( |
| 494 | K18 OCT 275 0= |
| 495 | K19 BCI 1,DO DO |
| 496 | K34 OCT 324 0T |
| 497 | K35 OCT 317 0O |
| 498 | K40 BCI 1,WN |
| 499 | K41 BCI 1,RN RN |
| 500 | K42 BCI 1,CB |
| 501 | K43 OCT 311 0I |
| 502 | K44 OCT 321 0Q |
| 503 | K45 EQU K34 0T |
| 504 | K57 OCT 252 0* |
| 505 | K60 OCT 260 00 (BCI ZERO) |
| 506 | K61 OCT 271 09 |
| 507 | K68 EQU K19 |
| 508 | K101 OCT 1 |
| 509 | K102 OCT 2 |
| 510 | K103 OCT 3 |
| 511 | K104 OCT 4 |
| 512 | K105 OCT 5 |
| 513 | K106 OCT 6 |
| 514 | K107 OCT 7 |
| 515 | K109 DEC 16 |
| 516 | K100 OCT 377 |
| 517 | K111 OCT 37777 |
| 518 | K110 DEC -17 |
| 519 | K115 OCT 170777 |
| 520 | K116 OCT 177400 |
| 521 | K117 DEC -27 |
| 522 | K118 OCT 777 |
| 523 | K119 OCT 177000 |
| 524 | K120 DEC -15 |
| 525 | K122 OCT 040000 |
| 526 | K123 DEC -1 |
| 527 | K124 DEC 9 |
| 528 | K125 DEC 8 |
| 529 | K126 DEC 10 |
| 530 | K127 DEC 11 |
| 531 | K128 DEC 12 |
| 532 | K129 DEC 13 |
| 533 | K131 DEC -14 |
| 534 | K132 OCT 22 |
| 535 | K134 OCT 17 |
| 536 | K137 OCT 24002 |
| 537 | K138 OCT 25 |
| 538 | K139 OCT 24 |
| 539 | CRET OCT 215 0 C/R |
| 540 | ZERO OCT 0 |
| 541 | HBIT OCT 140000 HIGH BITS FOR ALPHA DATA |
| 542 | KAEQ BCI 1,EQ EQUIVALENCE ERROR MESSAGE ATTACHMENT |
| 543 | MIN2 DEC -2 -2 |
| 544 | HC2 OCT 340 |
| 545 | K357 OCT 357 |
| 546 | * |
| 547 | * |
| 548 | DP EQU '15400 DUMMY START OF DATA POOL (ACTUALLY SET |
| 549 | * BY THE FORTRAN IOS SUBROUTINE.) |
| 550 | L0 EQU '113 DUMMY END OF DATA POOL (MINUS 3 WORDS) |
| 551 | * THE FOLLOWING INSTRUCTIONS CAUSE THE LOADER |
| 552 | * TO ASSIGN ALL REFERENCES TO THE DATA POOL IN WORDS |
| 553 | * 100 TO 112 OF THE ZERO SECTOR, FORTRAN IOS WILL |
| 554 | * CAUSE THESE CELLS TO BE SET TO THE ACTUAL DATA POOL |
| 555 | * LOCATIONS WHICH WILL BE DETERMINED BY COMPUTER |
| 556 | * CONFIGURATION. |
| 557 | ORG '1000 |
| 558 | PZE DP-4,1 (100) |
| 559 | PZE DP-3,1 (101) DATA POOL REFERENCES |
| 560 | PZE DP-2,1 (102) |
| 561 | PZE DP-1,1 (103) |
| 562 | PZE DP,1 (104) |
| 563 | PZE DP+1,1 (105) |
| 564 | PZE DP+2,1 (106) |
| 565 | PZE DP+3,1 (107) |
| 566 | PZE DP+4,1 (108) |
| 567 | PZE DP+9,1 (111) |
| 568 | PZE DP+6,1 (112) |
| 569 | PZE DP+7 (113) NO WDS IN DATA POOL SET BY IOS |
| 570 | * |
| 571 | * |
| 572 | ORG 1 |
| 573 | JST ER00 THIS INSTRUCTION REACHED ONLY IF THE |
| 574 | BCI 1,CG COMPILER JUMPED TO ZERO BY MISTAKE. |
| 575 | * |
| 576 | * |
| 577 | * |
| 578 | * |
| 579 | * ******************* |
| 580 | * *START OF COMPILER* |
| 581 | * ******************* |
| 582 | * |
| 583 | ORG '1000 |
| 584 | * |
| 585 | * |
| 586 | * |
| 587 | * - A0 COMP ENT EMPTY BUFFERS |
| 588 | LRL 15 |
| 589 | STA LIBF SET SPECIAL LIBRARY FLAG |
| 590 | LLL 15 (BIT 1 ON INHIBITS CERTAIN ERROR CHECKS) |
| 591 | A0 CALL F4$INT INITIALIZE I/O DEVICES |
| 592 | LDA K108 |
| 593 | STA CC CC = 73 |
| 594 | JST IC00 INPUT COLUMN |
| 595 | A051 LDA A090 |
| 596 | STA XR |
| 597 | LDA A092 LOC, OF INDEX PUSH-DOWN BUFFER |
| 598 | STA SAV9 INITIALIZE PUSH-DOWN BUFR, |
| 599 | CRA |
| 600 | STA A+M,1 SET M VARIABLES TO ZERO |
| 601 | STA NAMF+M,1 |
| 602 | IRS XR |
| 603 | JMP *-3 |
| 604 | STA IFLG |
| 605 | STA PKF |
| 606 | JST FS00 INITIALIZE OUTPUT BUFFER |
| 607 | CMA |
| 608 | STA LSTF LSTF NOT EQ 0 |
| 609 | STA LSTP LSTP NOT EQ 0 |
| 610 | STA EBAR EBAR SET NEGATIVE |
| 611 | LDA L0 |
| 612 | STA ICSW |
| 613 | STA E0 INITIALIZE EQUIVALENCE TABLE |
| 614 | STA L INITIALIZE TRIAD TABLE POINTER |
| 615 | JST PRSP SET PRINT BUFFER TO SPACES |
| 616 | LDA K134 |
| 617 | STA DO INITIALIZE DO TABLE POINTER |
| 618 | SUB K138 |
| 619 | STA A091 |
| 620 | CRA |
| 621 | STA ID |
| 622 | A055 IRS ID ESTABLISH CONSTANTS |
| 623 | JST AI00 |
| 624 | IRS A091 |
| 625 | JMP A055 |
| 626 | LDA K81 |
| 627 | STA ID |
| 628 | STA ID+1 |
| 629 | STA ID+2 |
| 630 | CRA |
| 631 | LRL 32 (B)=0 IM=NO USAGE |
| 632 | LDA K101 (A)=1 IU=SUBR |
| 633 | JST AA00 ASSIGN (SPECIAL) |
| 634 | JST STXA SET POINTER A INTO INDEX AND (A) |
| 635 | STA CFL CFL=A (LOCATION OF FIRST COMMON BLOCK) |
| 636 | ADD K122 ='40000 (IU=SUBR) |
| 637 | STA DP+1,1 GF(A)=A (IN CASE NO BLANK COMMON IS SPECIFI |
| 638 | JMP C7 GO TO STMNT INPUT |
| 639 | M EQU 30 |
| 640 | A090 DAC* -M,1 |
| 641 | A091 PZE 0 |
| 642 | A092 DAC SAVX START OF INDEX PUSH-DOWN BUFFER |
| 643 | * |
| 644 | * |
| 645 | * |
| 646 | * ************** |
| 647 | * *INPUT COLUMN* |
| 648 | * ************** |
| 649 | * |
| 650 | * INPUT NEXT CHARACTER |
| 651 | * IGNORE BLANKS |
| 652 | * CHECK FOR COMMENTS |
| 653 | * IC02 SET AS FOLLOWS - |
| 654 | * NORMAL - ICIP |
| 655 | * INITIAL SCAN -ICSR |
| 656 | IC00 DAC ** LINK STORE |
| 657 | JST SAV SAVE INDEX |
| 658 | LDA CC IF CC = 73, GO TO IC 10 |
| 659 | SUB K108 |
| 660 | SZE |
| 661 | JMP IC19 ELSE, GO TO IC |
| 662 | IC10 LDA ICSW IF ICSW. GO TO IC12 |
| 663 | SNZ |
| 664 | JMP IC24 ELSE, GO TO IC24 |
| 665 | IC12 CALL F4$IN INPUT SYMBOLIC CARD IMAGE |
| 666 | DAC CI |
| 667 | LDA CI |
| 668 | LGR 8 GO 70 IC 14 |
| 669 | CAS K16 =(C) |
| 670 | JMP *+2 |
| 671 | JMP IC30 COMMENT CARD (IGNORE) |
| 672 | SUB K15 =($) |
| 673 | SNZ |
| 674 | JMP IC18 CONTROL CARD (IGNORE COLUMN 6) |
| 675 | LDA K357 IF CARD COL, SIX IS |
| 676 | ANA CI+2 ZERO OR BLANK, GO TO IC18 |
| 677 | SUB K8 |
| 678 | SZE |
| 679 | JMP IC26 ELSE, GO TO IC26 |
| 680 | IC18 STA CC CC = 0. |
| 681 | LDA CI+2 CI(6) = SPECIAL |
| 682 | ANA K116 |
| 683 | ADD HC2 ='340 |
| 684 | STA CI+2 |
| 685 | LDA CRET |
| 686 | JMP IC20 TC = C.R. |
| 687 | IC19 LDA CC TC = CI(CC) |
| 688 | SUB K101 |
| 689 | LGR 1 |
| 690 | STA XR |
| 691 | LDA CI,1 |
| 692 | SSC |
| 693 | LGR 8 |
| 694 | ANA K100 |
| 695 | IC20 STA TC |
| 696 | IRS CC CC = CC+1 |
| 697 | IC22 JST RST RESTORE INDEX |
| 698 | JMP* IC00 RETURN |
| 699 | IC24 LDA K9 TC = /, END OF LINE - STATEMENT SCAN |
| 700 | STA TC |
| 701 | JMP IC22 GO TO IC22 |
| 702 | IC26 JST LIST LIST, CONTINUATION CARD |
| 703 | LDA K107 CC = 7. IGNORE STATEMENT NO. |
| 704 | STA CC |
| 705 | JMP IC19 G0 TO IC19 |
| 706 | IC30 JST LIST PRINT CARD IMAGE |
| 707 | JMP IC12 READ IN NEW CARD |
| 708 | K16 OCT 303 0C |
| 709 | K108 DEC 73 |
| 710 | KASP BCI 1, (SP)(SP) MUST PRECEDE CARD IMAGE BUFFER |
| 711 | CI BSS 40 |
| 712 | BCI 20, |
| 713 | * |
| 714 | * |
| 715 | * |
| 716 | * **************** |
| 717 | * *UNINPUT COLUMN* |
| 718 | * **************** |
| 719 | * BACK UP ONE COLUMN |
| 720 | * |
| 721 | UC00 DAC ** |
| 722 | IMA CC CC= CC-1 |
| 723 | SUB K101 RETAIN (A) |
| 724 | IMA CC |
| 725 | JMP* UC00 |
| 726 | * |
| 727 | * |
| 728 | * ***************** |
| 729 | * *INPUT CHARACTER* |
| 730 | * ***************** |
| 731 | * INPUT ONE CHARACTER FROM EITHER |
| 732 | * 1, INPUT BUFFER (EBAR POSITIVE) OR |
| 733 | * 2, EQUIVALENCE BUFFER (EBAR NEGATIVE) |
| 734 | * |
| 735 | CH00 DAC ** |
| 736 | LDA EBAR IF EBAR 7 0, |
| 737 | SMI |
| 738 | JMP CH10 G0 10 CH10 |
| 739 | CH03 JST IC00 INPUT COLUMN |
| 740 | SUB K8 IF BLANK, REPEAT |
| 741 | SNZ |
| 742 | JMP CH03 |
| 743 | LDA TC ELSE, |
| 744 | * |
| 745 | CH04 CAS CH13 ='301 |
| 746 | NOP |
| 747 | JMP CH06 |
| 748 | CAS K61 ='271 |
| 749 | JMP CH05 |
| 750 | NOP |
| 751 | CAS K15 ='244 |
| 752 | JMP *+2 |
| 753 | JMP CH05-1 |
| 754 | CAS K60 ='260 |
| 755 | NOP |
| 756 | CRA ALPHA NUMERIC CHARACTER |
| 757 | CH05 STA DFL DELIMITER ENTRY |
| 758 | LDA TC EXIT WITH TC IN A |
| 759 | JMP* CH00 |
| 760 | CH06 CAS K63 ='332 |
| 761 | JMP CH05 |
| 762 | NOP |
| 763 | JMP CH05-1 |
| 764 | CH08 STA DFL |
| 765 | JMP* CH00 |
| 766 | CH10 LDA E IF E = EBAR |
| 767 | CAS EBAR |
| 768 | JMP *+2 |
| 769 | JMP CH12 GO TO CH12 |
| 770 | STA 0 SET E INTO INDEX |
| 771 | LLL 16 SET (B) TO ZERO |
| 772 | LDA DP,1 CURRENT CHARACTER WORD |
| 773 | LLR 8 |
| 774 | STA DP,1 SAVE REMAINING CHARACTER IF ANY |
| 775 | IAB |
| 776 | STA TC TC=LEFTMOST CHARACTER |
| 777 | SZE SKIP IF NEW CHARACTER WORD NEEDED |
| 778 | JMP CH04 |
| 779 | LDA E E=E-1 |
| 780 | SUB K101 =1 |
| 781 | STA E |
| 782 | JMP CH10 PICK UP NEXT CHARACTER WORD |
| 783 | CH12 SSM MAKE E MINUS |
| 784 | STA EBAR |
| 785 | JMP C4 GO TO ASSIGN SPEC |
| 786 | K63 OCT 332 0Z |
| 787 | CH13 OCT 301 |
| 788 | * |
| 789 | * |
| 790 | * ************* |
| 791 | * *INPUT DIGIT* |
| 792 | * ************* |
| 793 | * A IS ZERO IF NOT DIGIT |
| 794 | * |
| 795 | ID00 DAC ** INPUT DIGIT |
| 796 | JST CH00 INPUT A CHAR |
| 797 | CAS K61 ='271 (9) |
| 798 | JMP* ID00 (A) = TC |
| 799 | JMP ID10 ELSE, (A) = 0 |
| 800 | CAS K60 RETURN |
| 801 | NOP |
| 802 | JMP *+2 |
| 803 | JMP* ID00 |
| 804 | ID10 CRA |
| 805 | JMP* ID00 |
| 806 | * |
| 807 | * |
| 808 | * ********************** |
| 809 | * *INPUT (A) CHARACTERS* |
| 810 | * ********************** |
| 811 | * CHAR COUNT IN XR, TERMINATES WITH EITHER |
| 812 | * 1, CHAR COUNT -1 = ZERO OR |
| 813 | * 2, LAST CHAR IS A DELIMITER |
| 814 | * |
| 815 | IA00 DAC ** |
| 816 | TCA SET COUNTER |
| 817 | STA IA99 |
| 818 | JST IA50 EXCHANGE IBUF AND ID |
| 819 | CRA |
| 820 | STA NTID NTID = 0 |
| 821 | IA10 JST CH00 INPUT A CHARACTER |
| 822 | JST PACK |
| 823 | LDA DFL IF DFL NOT ZERO, |
| 824 | SZE CONTINUE |
| 825 | JMP IA20 ELSE, |
| 826 | IRS IA99 TEST COUNTER |
| 827 | JMP IA10 MORE CHARACTERS TO INPUT |
| 828 | IA20 JST IA50 EXCHANGE ID AND IBUF |
| 829 | JMP* IA00 RETURN |
| 830 | IA50 DAC ** EXCHANGE IBUF AND ID |
| 831 | JST SAV SAVE INDEX |
| 832 | LDA IA90 |
| 833 | STA XR |
| 834 | LDA IBUF+3,1 |
| 835 | IMA ID+3,1 |
| 836 | STA IBUF+3,1 |
| 837 | IRS XR |
| 838 | JMP *-4 |
| 839 | JST RST RESTORE INDEX |
| 840 | LDA NTID |
| 841 | JMP* IA50 |
| 842 | IA90 OCT -3 |
| 843 | IA99 PZE 0 |
| 844 | * |
| 845 | * |
| 846 | * ***************** |
| 847 | * *FINISH OPERATOR* |
| 848 | * ***************** |
| 849 | * WRAP UP LOGICAL/RELATIONAL OPERATORS |
| 850 | * |
| 851 | FN00 DAC ** |
| 852 | LDA DFL IF DFL NOT . , |
| 853 | STA IBUF |
| 854 | SUB K10 |
| 855 | SZE |
| 856 | JMP FN05 GO TO FN05 |
| 857 | LDA K104 |
| 858 | JST IA00 |
| 859 | FN05 LDA K110 USE TABLE TO CONVERT |
| 860 | STA XR OPERATOR |
| 861 | FN10 LDA FN90+17,1 |
| 862 | CAS IBUF |
| 863 | JMP *+2 |
| 864 | JMP FN20 |
| 865 | IRS XR |
| 866 | JMP FN10 |
| 867 | LDA TC |
| 868 | JMP* FN00 |
| 869 | FN20 LDA FN91+17,1 FOUND A LOGICAL OPERATOR |
| 870 | STA TC SET INTO TC |
| 871 | JMP* FN00 |
| 872 | FN90 OCT 253,255,252,257 +-*/ |
| 873 | BCI 9,NOANORLTLEEQGEGTNE |
| 874 | OCT 275,254 =, |
| 875 | FN91 OCT 1,2,3,4,5,6,7,10,11,12,13,14,15,16,17 |
| 876 | * |
| 877 | * |
| 878 | * *********** |
| 879 | * *INPUT DNA* |
| 880 | * *********** |
| 881 | * BASIC INPUT ROUTINE, HANDLES FOLLOWING - |
| 882 | * CONSTANT CONVERSION |
| 883 | * MODE TYPING (CONSTANTS, IMPLIED/VARIABLES) |
| 884 | * ALL OPERATORS (TERMINATE ITEM) |
| 885 | * |
| 886 | ID BSS 4 |
| 887 | TID EQU ID TEMP STORE FOR ID |
| 888 | IBUF BSS 3 3-WORD BUF |
| 889 | TIDN PZE 0 |
| 890 | K155 OCT 177727 -41 |
| 891 | K156 OCT 024000 1085 |
| 892 | K157 OCT 007777 |
| 893 | K158 OCT 074000 |
| 894 | F1 PZE 0 SIGN FLAG |
| 895 | F2 PZE 0 |
| 896 | F3 PZE 0 INPUT EXPONENT |
| 897 | F4 PZE 0 NO, FRAC. POSITIONS |
| 898 | F5 PZE 0 TEMP DELIMITER STORE |
| 899 | F6 PZE 0 |
| 900 | L4 PZE 0 |
| 901 | HOLF PZE 0 HOLLERITH FLAG |
| 902 | DN00 DAC ** |
| 903 | DN01 CRA |
| 904 | STA HOLF SET HOLF =0 |
| 905 | STA F4 F4 = 0 |
| 906 | STA IU |
| 907 | STA NT IU=NT=NTID=0 |
| 908 | STA NTID |
| 909 | JST BLNK CLEAR OUT TID = ID |
| 910 | DAC TID |
| 911 | JST BLNK |
| 912 | DAC F1 F1,F2,F3 = 0 |
| 913 | DN06 CRA |
| 914 | STA IM |
| 915 | STA DNX2 |
| 916 | DN07 JST ID00 INPUT DIGIT |
| 917 | SZE |
| 918 | JMP DN14 (A) NON-ZERO, G0 T0 DN14 |
| 919 | DN10 LDA TID+2 CHECK FOR OVERFLOW AND ADJUST |
| 920 | ANA K158 POSITION COUNT IF NECESSARY, |
| 921 | SZE |
| 922 | JMP SKIP |
| 923 | ADD IM |
| 924 | ARS 1 |
| 925 | ADD F4 F4 = F4+1 IF NO OVERFLOW |
| 926 | STA F4 AND IM ALREADY SET TO REAL |
| 927 | LDA K101 |
| 928 | STA NT NT=1 |
| 929 | ADD K101 |
| 930 | STA IU IU = VAR/COD |
| 931 | JST SFT SHIFT ID LEFT |
| 932 | DAC ID |
| 933 | JST MOV3 MOVE TO TEMP STORE |
| 934 | JST SFT |
| 935 | DAC ID |
| 936 | JST SFT |
| 937 | DAC ID |
| 938 | JST AD3 ID = 10*ID+TC |
| 939 | JST BLNK |
| 940 | DAC DNX1 |
| 941 | LDA TC |
| 942 | SUB K60 |
| 943 | STA DNX1 |
| 944 | JST AD3 |
| 945 | JMP DN07 |
| 946 | SKIP LDA MIN2 |
| 947 | ADD IM |
| 948 | ARS 1 |
| 949 | ADD F4 |
| 950 | STA F4 |
| 951 | JMP DN07 |
| 952 | DN14 LDA IM IM = REAL |
| 953 | SUB K102 |
| 954 | SZE |
| 955 | JMP DN50 NO, GO TO DN50 |
| 956 | DN16 LDA K10 YES, |
| 957 | DN17 STA F5 F5 = '.' |
| 958 | LDA DFL IF DFL =0, GO SO DN20 (5) |
| 959 | SZE |
| 960 | JMP DN90 ELSE GO TO DN90 (9) |
| 961 | DN20 LDA TC IF TC = D, GO TO DN26 |
| 962 | SUB K11 |
| 963 | SNZ |
| 964 | JMP DN26 |
| 965 | SUB K101 ELSE, IF TC = E, GO TO DN22 |
| 966 | SNZ |
| 967 | JMP DN22 TERMINATOR = E |
| 968 | JST UC00 |
| 969 | LDA K10 ='256 (,) |
| 970 | STA DFL SET DELIMITER FLAG |
| 971 | LDA K101 =1 |
| 972 | STA IM SET ITEM MODE TO INTEGER |
| 973 | JMP DN67 FINISH OPERATOR AND EXIT |
| 974 | * |
| 975 | DN22 JST ID00 INPUT DIGIT |
| 976 | SNZ IF (A) = 0, GO TO DN30 |
| 977 | JMP DN30 |
| 978 | LDA TC IF TC = -, GO TO DN28 |
| 979 | SUB K12 |
| 980 | SNZ |
| 981 | JMP DN28 |
| 982 | ADD K102 |
| 983 | SNZ |
| 984 | JMP DN29 |
| 985 | LDA F5 |
| 986 | STA DFL |
| 987 | JST UC00 UN-INPUT COL |
| 988 | DN24 JST FN00 FINISH OPERATOR |
| 989 | DN25 LDA K101 IM = INT |
| 990 | STA IM |
| 991 | LDA ID+1 IF ID IS TOO BIG TO |
| 992 | SZE BE AN INTEGER (>L2), |
| 993 | JMP DN69 GO TO DN69 (20) |
| 994 | LDA ID+2 |
| 995 | SZE |
| 996 | JMP DN69 |
| 997 | JMP DN84 OTHERWISE, GO TO DN84(12) |
| 998 | DN26 LDA K106 IM = DBL |
| 999 | STA IM |
| 1000 | JMP DN22 |
| 1001 | DN28 LDA K101 F2 = 1 |
| 1002 | STA F2 |
| 1003 | DN29 JST ID00 INPUT DIGIT |
| 1004 | SZE IF (A) = 0, GO TO DN30 (8.5) |
| 1005 | JMP DN69 ELSE, GO TO DN69 (20) |
| 1006 | DN30 LDA F3 F3 = 10 * F3 |
| 1007 | ALS 3 |
| 1008 | IMA F3 F3 = F3 +TC |
| 1009 | ALS 1 |
| 1010 | ADD F3 |
| 1011 | ADD TC INPUT DIGIT |
| 1012 | SUB K60 |
| 1013 | STA F3 IF (A) = 0, GO TO DN30 (8.5) |
| 1014 | JST ID00 ELSE, GO TO DN90 (9) |
| 1015 | SZE |
| 1016 | JMP DN90 |
| 1017 | JMP DN30 |
| 1018 | DN50 LDA K102 IM=REA |
| 1019 | STA IM |
| 1020 | LDA TC IF TC = ., GO TO DN54 |
| 1021 | SUB K10 |
| 1022 | SNZ |
| 1023 | JMP DN54 ELSE, |
| 1024 | LDA NT |
| 1025 | SNZ IF NT = 0, GO TO DN72 |
| 1026 | JMP DN72 |
| 1027 | LDA TC IF TC = H, GO TO DN9H (22) |
| 1028 | SUB K14 |
| 1029 | SNZ |
| 1030 | JMP DN9H |
| 1031 | LDA DFL IF DFL = 0, |
| 1032 | SZE GO TO DN16 (4.9) |
| 1033 | JMP DN25 ELSE, GO TO DN25 |
| 1034 | JMP DN16 |
| 1035 | DN54 JST ID00 INPUT DIGIT |
| 1036 | SNZ |
| 1037 | JMP DN10 IF (A) = 0, GO TO DN10 (3) |
| 1038 | LDA NT |
| 1039 | SNZ IF NT = 0, GO TO DN56 |
| 1040 | JMP DN56 |
| 1041 | LDA TC F5 = TC |
| 1042 | JMP DN16 GO TO DN16 (4) |
| 1043 | DN56 CRA |
| 1044 | STA TC TC = ) |
| 1045 | DN58 JST UC00 UN-INPUT A COLUMN, |
| 1046 | LDA F1 IF F1 = 0, GO TO DN60 |
| 1047 | SZE |
| 1048 | JMP DN63 ELSE, GO TO DN63 (15) |
| 1049 | DN60 LDA K106 |
| 1050 | JST IA00 INPUT (6) CHARS |
| 1051 | JST CIB IF IBUF = TRUE., |
| 1052 | DAC K1+3,1 |
| 1053 | JMP DN64 |
| 1054 | JST CIB IF IBUF = FALSE., |
| 1055 | DAC K2+3,1 GO TO DN66 (16) |
| 1056 | JMP DN66 |
| 1057 | JST CIB CHECK FOR .NOT. OPERATOR |
| 1058 | DAC KNOT+3,1 CHECK FOR .NOT. OPERATOR |
| 1059 | JMP DN9N OPERATOR IS .NOT. |
| 1060 | * |
| 1061 | * TAPE 1 OF 5 - END |
| 1062 | MOR |