_  __   _  _         _ _     _      _           _           
  __| |/ /_ | || |     __| (_)___| | __ (_)_ __   __| | _____  __
 / _` | '_ \| || |_   / _` | / __| |/ / | | '_ \ / _` |/ _ \ \/ /
| (_| | (_) |__   _| | (_| | \__ \   <  | | | | | (_| |  __/>  < 
 \__,_|\___/   |_|    \__,_|_|___/_|\_\ |_|_| |_|\__,_|\___/_/\_\
                                                                 
            

STACKS

FILE INFORMATION

FILENAME(S): STACKS

FILE TYPE(S): PRG

FILE SIZE: 6.6K

FIRST SEEN: 2025-10-19 22:49:31

APPEARS ON: 1 disk(s)

FILE HASH

004bb47ef2f5714051589454a5ef4b180385dde541945f30d1e2f350ef3c3b7d

FOUND ON DISKS (1 DISKS)

DISK TITLE FILENAME FILE TYPE COLLECTION TRACK SECTOR ACTIONS
GOLD DISK 7 STACKS PRG Radd Maxx 9 6 DOWNLOAD FILE

FILE CONTENT & ANALYSIS

> DETECTED: COMMODORE BASIC PROGRAM (LOAD ADDRESS $0801)

00000000: 01 08 4B 08 64 00 8F 20  20 46 49 52 53 54 2C 20  |..K.d..  FIRST, |
00000010: 57 45 20 4D 55 53 54 20  41 4C 4C 4F 43 41 54 45  |WE MUST ALLOCATE|
00000020: 20 52 4F 4F 4D 20 20 20  20 20 20 20 20 20 20 20  | ROOM           |
00000030: 20 46 4F 52 20 54 48 45  20 54 57 4F 20 53 54 41  | FOR THE TWO STA|
00000040: 43 4B 53 20 54 48 41 54  20 57 45 00 98 08 6E 00  |CKS THAT WE...n.|
00000050: 8F 20 20 4E 45 45 44 2E  20 54 48 45 20 4F 50 45  |.  NEED. THE OPE|
00000060: 52 41 4E 44 20 53 54 41  43 4B 20 28 4E 55 4D 29  |RAND STACK (NUM)|
00000070: 20 20 20 20 20 20 20 20  20 20 20 57 49 4C 4C 20  |           WILL |
00000080: 42 45 20 54 57 49 43 45  20 41 53 20 4C 41 52 47  |BE TWICE AS LARG|
00000090: 45 20 41 53 20 54 48 45  00 E4 08 78 00 8F 20 20  |E AS THE...x..  |
000000A0: 4F 50 45 52 41 54 4F 52  20 53 54 41 43 4B 20 28  |OPERATOR STACK (|
000000B0: 4F 50 29 2E 20 54 48 45  20 54 57 4F 20 20 20 20  |OP). THE TWO    |
000000C0: 20 20 20 20 20 20 20 20  50 4F 49 4E 54 45 52 53  |        POINTERS|
000000D0: 20 54 4F 20 54 4F 50 2D  4F 46 2D 53 54 41 43 4B  | TO TOP-OF-STACK|
000000E0: 20 28 50 4E 00 31 09 82  00 8F 20 20 54 4F 20 54  | (PN.1....  TO T|
000000F0: 48 45 20 4F 50 45 52 41  4E 44 20 53 54 41 43 4B  |HE OPERAND STACK|
00000100: 20 41 4E 44 20 50 4F 20  54 4F 20 20 20 20 20 20  | AND PO TO      |
00000110: 20 20 20 20 54 48 45 20  4F 50 45 52 41 54 4F 52  |    THE OPERATOR|
00000120: 20 53 54 41 43 4B 29 20  4D 55 53 54 20 41 4C 53  | STACK) MUST ALS|
00000130: 4F 00 7E 09 8C 00 8F 20  20 42 45 20 49 4E 49 54  |O.~....  BE INIT|
00000140: 49 41 4C 49 5A 45 44 2C  20 41 4E 44 20 57 45 20  |IALIZED, AND WE |
00000150: 4D 55 53 54 20 50 55 54  20 20 20 20 20 20 20 20  |MUST PUT        |
00000160: 20 41 20 53 54 41 52 54  2D 4F 46 2D 4C 49 4E 45  | A START-OF-LINE|
00000170: 20 46 4C 41 47 20 49 4E  54 4F 20 54 48 45 00 CB  | FLAG INTO THE..|
00000180: 09 96 00 8F 20 20 54 48  45 20 54 4F 50 20 4F 46  |....  THE TOP OF|
00000190: 20 54 48 45 20 4F 50 45  52 41 54 4F 52 20 53 54  | THE OPERATOR ST|
000001A0: 41 43 4B 2E 20 20 20 20  20 20 20 20 20 20 54 48  |ACK.          TH|
000001B0: 45 20 53 54 52 49 4E 47  20 4F 46 20 4C 45 47 41  |E STRING OF LEGA|
000001C0: 4C 20 4F 50 45 52 41 54  4F 52 53 00 18 0A A0 00  |L OPERATORS.....|
000001D0: 8F 20 20 4D 55 53 54 20  41 4C 53 4F 20 42 45 20  |.  MUST ALSO BE |
000001E0: 49 4E 49 54 49 41 4C 49  5A 45 44 2E 20 54 48 45  |INITIALIZED. THE|
000001F0: 20 20 20 20 20 20 20 20  20 20 20 50 4F 53 49 54  |           POSIT|
00000200: 49 4F 4E 20 49 4E 20 54  48 45 20 53 54 52 49 4E  |ION IN THE STRIN|
00000210: 47 20 4F 46 20 54 48 45  00 59 0A AA 00 8F 20 20  |G OF THE.Y....  |
00000220: 4F 50 45 52 41 54 4F 52  20 4D 45 41 53 55 52 45  |OPERATOR MEASURE|
00000230: 53 20 54 48 45 20 50 52  49 4F 52 49 54 59 20 20  |S THE PRIORITY  |
00000240: 20 20 20 20 20 20 20 20  4F 46 20 54 48 41 54 20  |        OF THAT |
00000250: 4F 50 45 52 41 54 4F 52  2E 00 5F 0A B4 00 8F 00  |OPERATOR.._.....|
00000260: 76 0A BE 00 86 20 4E 55  4D 28 32 30 30 29 2C 4F  |v.... NUM(200),O|
00000270: 50 28 31 30 30 29 00 88  0A C8 00 4F 50 24 B2 22  |P(100).....OP$."|
00000280: 28 2B 2D 2A 2F 5E 29 22  00 A3 0A D2 00 50 4E B2  |(+-*/^)".....PN.|
00000290: 30 20 3A 20 4F 50 28 31  29 B2 AB 31 20 3A 20 50  |0 : OP(1)..1 : P|
000002A0: 4F B2 31 00 A9 0A DC 00  8F 00 F3 0A E6 00 8F 20  |O.1............ |
000002B0: 20 52 45 41 44 20 49 4E  20 54 48 45 20 45 58 50  | READ IN THE EXP|
000002C0: 52 45 53 53 49 4F 4E 20  54 4F 20 50 41 52 53 45  |RESSION TO PARSE|
000002D0: 20 20 20 20 20 20 20 20  20 41 4E 44 20 45 43 48  |         AND ECH|
000002E0: 4F 20 49 54 20 54 4F 20  54 48 45 20 53 43 52 45  |O IT TO THE SCRE|
000002F0: 45 4E 2E 00 F9 0A F0 00  8F 00 1A 0B FA 00 85 20  |EN............. |
00000300: 22 45 4E 54 45 52 20 54  48 45 20 45 58 50 52 45  |"ENTER THE EXPRE|
00000310: 53 53 49 4F 4E 22 3B 49  4E 24 00 28 0B 04 01 99  |SSION";IN$.(....|
00000320: 20 49 4E 24 22 3D 22 3B  00 2E 0B 0E 01 8F 00 78  | IN$"=";.......x|
00000330: 0B 18 01 8F 20 20 54 48  45 20 50 41 52 53 45 52  |....  THE PARSER|
00000340: 20 42 45 47 49 4E 53 20  41 54 20 32 39 30 2E 20  | BEGINS AT 290. |
00000350: 46 49 52 53 54 20 20 20  20 20 20 20 20 20 52 45  |FIRST         RE|
00000360: 4D 4F 56 45 20 41 4C 4C  20 4C 45 41 44 49 4E 47  |MOVE ALL LEADING|
00000370: 20 42 4C 41 4E 4B 53 2E  00 7E 0B 22 01 8F 00 BC  | BLANKS..~."....|
00000380: 0B 2C 01 8B 20 C8 28 49  4E 24 2C 31 29 B2 22 20  |.,.. .(IN$,1)." |
00000390: 22 20 A7 20 20 20 20 20  20 20 20 20 20 20 20 20  |" .             |
000003A0: 20 20 20 49 4E 24 B2 C9  28 49 4E 24 2C C3 28 49  |   IN$..(IN$,.(I|
000003B0: 4E 24 29 AB 31 29 3A 89  20 33 30 30 00 C2 0B 36  |N$).1):. 300...6|
000003C0: 01 8F 00 0D 0C 40 01 8F  20 20 4E 4F 57 20 49 46  |.....@..  NOW IF|
000003D0: 20 54 48 45 52 45 20 49  53 20 4E 4F 20 4D 4F 52  | THERE IS NO MOR|
000003E0: 45 20 53 54 52 49 4E 47  2C 20 20 20 20 20 20 20  |E STRING,       |
000003F0: 20 20 47 4F 20 54 4F 20  54 48 45 20 46 49 4E 41  |  GO TO THE FINA|
00000400: 4C 20 50 52 4F 43 45 53  53 49 4E 47 2E 00 13 0C  |L PROCESSING....|
00000410: 4A 01 8F 00 27 0C 54 01  8B 20 49 4E 24 B2 22 22  |J...'.T.. IN$.""|
00000420: 20 89 20 31 31 35 30 00  2D 0C 5E 01 8F 00 78 0C  | . 1150.-.^...x.|
00000430: 68 01 8F 20 20 49 4E 49  54 49 41 4C 49 5A 45 20  |h..  INITIALIZE |
00000440: 54 48 45 20 4F 50 45 52  41 54 4F 52 20 54 4F 4B  |THE OPERATOR TOK|
00000450: 45 4E 20 20 20 20 20 20  20 20 20 20 20 54 4F 20  |EN           TO |
00000460: 30 20 41 4E 44 20 47 45  54 20 54 48 45 20 46 49  |0 AND GET THE FI|
00000470: 52 53 54 20 43 48 41 52  00 BB 0C 72 01 8F 20 20  |RST CHAR...r..  |
00000480: 4F 46 20 54 48 45 20 52  45 4D 41 49 4E 49 4E 47  |OF THE REMAINING|
00000490: 20 4C 49 4E 45 20 49 4E  54 4F 20 41 20 20 20 20  | LINE INTO A    |
000004A0: 20 20 20 20 20 20 20 20  54 45 4D 50 4F 52 41 52  |        TEMPORAR|
000004B0: 59 20 56 41 52 49 41 42  4C 45 2E 00 C1 0C 7C 01  |Y VARIABLE....|.|
000004C0: 8F 00 DB 0C 86 01 46 4F  55 4E 44 B2 30 20 3A 20  |......FOUND.0 : |
000004D0: 54 24 B2 C8 28 49 4E 24  2C 31 29 00 E1 0C 90 01  |T$..(IN$,1).....|
000004E0: 8F 00 2F 0D 9A 01 8F 20  20 4E 4F 57 20 43 48 45  |../....  NOW CHE|
000004F0: 43 4B 20 54 48 45 20 43  48 41 52 41 43 54 45 52  |CK THE CHARACTER|
00000500: 20 41 47 41 49 4E 53 54  20 20 20 20 20 20 20 20  | AGAINST        |
00000510: 20 45 41 43 48 20 4F 46  20 54 48 45 20 50 4F 53  | EACH OF THE POS|
00000520: 53 49 42 4C 45 20 4F 50  45 52 41 54 4F 52 53 00  |SIBLE OPERATORS.|
00000530: 7B 0D A4 01 8F 20 20 49  46 20 57 45 20 46 49 4E  |{....  IF WE FIN|
00000540: 44 20 4F 4E 45 20 53 45  54 20 54 48 45 20 56 41  |D ONE SET THE VA|
00000550: 4C 55 45 20 4F 46 20 20  20 20 20 20 20 20 20 54  |LUE OF         T|
00000560: 48 45 20 54 4F 4B 45 4E  20 54 4F 20 54 48 45 20  |HE TOKEN TO THE |
00000570: 4C 4F 43 41 54 49 4F 4E  20 49 4E 00 BE 0D AE 01  |LOCATION IN.....|
00000580: 8F 20 20 54 48 45 20 53  54 52 49 4E 47 2C 20 41  |.  THE STRING, A|
00000590: 4E 44 20 46 4F 52 43 45  20 54 48 45 20 4C 4F 4F  |ND FORCE THE LOO|
000005A0: 50 20 20 20 20 20 20 20  20 20 20 54 4F 20 54 45  |P          TO TE|
000005B0: 52 4D 49 4E 41 54 45 20  45 41 52 4C 59 2E 00 C4  |RMINATE EARLY...|
000005C0: 0D B8 01 8F 00 D9 0D C2  01 81 20 49 20 B2 20 31  |.......... I . 1|
000005D0: 20 A4 20 C3 28 4F 50 24  29 00 20 0E CC 01 8B 20  | . .(OP$). .... |
000005E0: 54 24 B2 CA 28 4F 50 24  2C 49 2C 31 29 20 A7 20  |T$..(OP$,I,1) . |
000005F0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000600: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000610: 46 4F 55 4E 44 B2 49 3A  49 B2 C3 28 4F 50 24 29  |FOUND.I:I..(OP$)|
00000620: 00 26 0E D6 01 82 00 2C  0E E0 01 8F 00 78 0E EA  |.&.....,.....x..|
00000630: 01 8F 20 20 49 46 20 57  45 27 56 45 20 46 4F 55  |..  IF WE'VE FOU|
00000640: 4E 44 20 41 4E 20 4F 50  45 52 41 54 4F 52 20 54  |ND AN OPERATOR T|
00000650: 48 45 4E 20 20 20 20 20  20 20 20 20 54 41 4B 45  |HEN         TAKE|
00000660: 20 49 54 20 4F 46 46 20  54 48 45 20 46 52 4F 4E  | IT OFF THE FRON|
00000670: 54 20 4F 46 20 54 48 45  00 B0 0E F4 01 8F 20 20  |T OF THE......  |
00000680: 53 54 52 49 4E 47 20 41  4E 44 20 53 4B 49 50 20  |STRING AND SKIP |
00000690: 54 48 45 20 52 45 53 54  20 4F 46 20 54 48 45 20  |THE REST OF THE |
000006A0: 20 20 20 20 20 20 20 20  50 41 52 53 49 4E 47 2E  |        PARSING.|
000006B0: 00 B6 0E FE 01 8F 00 F9  0E 08 02 8B 20 46 4F 55  |............ FOU|
000006C0: 4E 44 B3 B1 30 20 A7 20  20 20 20 20 20 20 20 20  |ND..0 .         |
000006D0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000006E0: 49 4E 24 B2 C9 28 49 4E  24 2C C3 28 49 4E 24 29  |IN$..(IN$,.(IN$)|
000006F0: AB 31 29 3A 89 20 38 32  30 00 FF 0E 12 02 8F 00  |.1):. 820.......|
00000700: 4C 0F 1C 02 8F 20 20 57  45 20 44 4F 4E 27 54 20  |L....  WE DON'T |
00000710: 48 41 56 45 20 41 20 4C  45 47 41 4C 20 4F 50 45  |HAVE A LEGAL OPE|
00000720: 52 41 54 4F 52 20 20 20  20 20 20 20 20 20 20 53  |RATOR          S|
00000730: 4F 20 41 53 53 55 4D 45  20 41 4E 20 4F 50 45 52  |O ASSUME AN OPER|
00000740: 41 4E 44 2E 20 57 45 20  4D 55 53 54 00 98 0F 26  |AND. WE MUST...&|
00000750: 02 8F 20 20 46 49 4E 44  20 54 48 45 20 46 49 52  |..  FIND THE FIR|
00000760: 53 54 20 4E 4F 4E 2D 44  49 47 49 54 20 49 4E 20  |ST NON-DIGIT IN |
00000770: 54 48 45 20 20 20 20 20  20 20 20 20 52 45 53 54  |THE         REST|
00000780: 20 4F 46 20 54 48 45 20  49 4E 50 55 54 20 53 54  | OF THE INPUT ST|
00000790: 52 49 4E 47 20 41 4E 44  00 E4 0F 30 02 8F 20 20  |RING AND...0..  |
000007A0: 4D 41 4B 45 20 41 20 4E  4F 54 45 20 4F 46 20 54  |MAKE A NOTE OF T|
000007B0: 48 45 20 4C 4F 43 41 54  49 4F 4E 20 53 4F 20 20  |HE LOCATION SO  |
000007C0: 20 20 20 20 20 20 20 20  54 48 41 54 20 57 45 20  |        THAT WE |
000007D0: 43 41 4E 20 52 45 4D 4F  56 45 20 54 48 45 20 54  |CAN REMOVE THE T|
000007E0: 4F 4B 45 4E 00 31 10 3A  02 8F 20 20 46 52 4F 4D  |OKEN.1.:..  FROM|
000007F0: 20 54 48 45 20 53 54 52  49 4E 47 2E 20 49 4E 49  | THE STRING. INI|
00000800: 54 49 41 4C 4C 59 20 57  45 20 20 20 20 20 20 20  |TIALLY WE       |
00000810: 20 20 20 20 41 53 53 55  4D 45 20 54 48 45 20 52  |    ASSUME THE R|
00000820: 45 53 54 20 4F 46 20 54  48 45 20 53 54 52 49 4E  |EST OF THE STRIN|
00000830: 47 00 76 10 44 02 8F 20  20 49 53 20 54 48 45 20  |G.v.D..  IS THE |
00000840: 4E 55 4D 42 45 52 2C 20  54 48 45 4E 20 53 45 41  |NUMBER, THEN SEA|
00000850: 52 43 48 20 46 4F 52 20  20 20 20 20 20 20 20 20  |RCH FOR         |
00000860: 20 41 4E 20 45 41 52 4C  49 45 52 20 4E 4F 4E 2D  | AN EARLIER NON-|
00000870: 44 49 47 49 54 2E 00 7C  10 4E 02 8F 00 8E 10 58  |DIGIT..|.N.....X|
00000880: 02 4C 41 53 54 B2 C3 28  49 4E 24 29 AA 31 00 A3  |.LAST..(IN$).1..|
00000890: 10 62 02 81 20 49 20 B2  20 31 20 A4 20 C3 28 49  |.b.. I . 1 . .(I|
000008A0: 4E 24 29 00 A9 10 6C 02  8F 00 F3 10 76 02 8F 20  |N$)...l.....v.. |
000008B0: 20 55 53 45 20 41 20 54  45 4D 50 4F 52 41 52 59  | USE A TEMPORARY|
000008C0: 20 56 41 52 49 41 42 4C  45 20 46 4F 52 20 20 20  | VARIABLE FOR   |
000008D0: 20 20 20 20 20 20 20 20  20 54 48 45 20 4E 45 58  |         THE NEX|
000008E0: 54 20 43 48 41 52 41 43  54 45 52 20 54 4F 20 53  |T CHARACTER TO S|
000008F0: 41 56 45 00 40 11 80 02  8F 20 20 54 49 4D 45 2E  |AVE.@....  TIME.|
00000900: 20 46 4F 52 43 45 20 54  48 45 20 4C 4F 4F 50 20  | FORCE THE LOOP |
00000910: 54 4F 20 53 54 4F 50 20  20 20 20 20 20 20 20 20  |TO STOP         |
00000920: 20 20 20 45 41 52 4C 59  20 49 46 20 57 45 20 46  |   EARLY IF WE F|
00000930: 49 4E 44 20 41 20 4E 4F  4E 2D 44 49 47 49 54 2E  |IND A NON-DIGIT.|
00000940: 00 46 11 8A 02 8F 00 58  11 94 02 54 24 B2 CA 28  |.F.....X...T$..(|
00000950: 49 4E 24 2C 49 2C 31 29  00 9F 11 9E 02 8B 20 54  |IN$,I,1)...... T|
00000960: 24 B3 B1 22 2E 22 20 AF  20 28 54 24 B3 22 30 22  |$.."." . (T$."0"|
00000970: 20 B0 20 54 24 B1 22 39  22 29 20 20 20 20 20 20  | . T$."9")      |
00000980: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 A7 20  |              . |
00000990: 4C 41 53 54 B2 49 3A 49  B2 C3 28 49 4E 24 29 00  |LAST.I:I..(IN$).|
000009A0: A5 11 A8 02 82 00 AB 11  B2 02 8F 00 F8 11 BC 02  |................|
000009B0: 8F 20 20 50 55 54 20 54  48 45 20 56 41 4C 55 45  |.  PUT THE VALUE|
000009C0: 20 4F 46 20 54 48 45 20  4E 55 4D 42 45 52 20 49  | OF THE NUMBER I|
000009D0: 4E 20 20 20 20 20 20 20  20 20 20 54 30 4B 45 4E  |N          T0KEN|
000009E0: 20 28 54 4F 20 49 53 20  41 20 52 45 53 45 52 56  | (TO IS A RESERV|
000009F0: 45 44 20 57 4F 52 44 29  00 39 12 C6 02 8F 20 20  |ED WORD).9....  |
00000A00: 41 4E 44 20 52 45 4D 4F  56 45 20 54 48 45 20 43  |AND REMOVE THE C|
00000A10: 48 41 52 41 43 54 45 52  53 20 46 52 4F 4D 20 20  |HARACTERS FROM  |
00000A20: 20 20 20 20 20 20 20 20  54 48 45 20 49 4E 50 55  |        THE INPU|
00000A30: 54 20 53 54 52 49 4E 47  2E 00 3F 12 D0 02 8F 00  |T STRING..?.....|
00000A40: 82 12 DA 02 54 30 4B 45  4E 20 B2 20 C5 28 C8 28  |....T0KEN . .(.(|
00000A50: 49 4E 24 2C 4C 41 53 54  AB 31 29 29 20 20 20 20  |IN$,LAST.1))    |
00000A60: 20 20 20 20 20 20 3A 20  49 4E 24 20 B2 20 C9 28  |      : IN$ . .(|
00000A70: 49 4E 24 2C C3 28 49 4E  24 29 AB 4C 41 53 54 AA  |IN$,.(IN$).LAST.|
00000A80: 31 29 00 88 12 E4 02 8F  00 D2 12 EE 02 8F 20 20  |1)............  |
00000A90: 54 48 49 53 20 45 4E 44  53 20 54 48 45 20 50 41  |THIS ENDS THE PA|
00000AA0: 52 53 45 52 2E 20 4F 4E  20 45 58 49 54 2C 20 20  |RSER. ON EXIT,  |
00000AB0: 20 20 20 20 20 20 20 20  46 4F 55 4E 44 3D 30 20  |        FOUND=0 |
00000AC0: 49 46 20 54 48 45 20 54  4F 4B 45 4E 20 49 53 20  |IF THE TOKEN IS |
00000AD0: 41 4E 00 1C 13 F8 02 8F  20 20 4F 50 45 52 41 4E  |AN......  OPERAN|
00000AE0: 44 20 4F 52 20 49 46 20  54 48 45 20 54 4F 4B 45  |D OR IF THE TOKE|
00000AF0: 4E 20 49 53 20 41 4E 20  20 20 20 20 20 20 20 20  |N IS AN         |
00000B00: 20 20 4F 50 45 52 41 54  4F 52 20 46 4F 55 4E 44  |  OPERATOR FOUND|
00000B10: 3D 32 2A 50 52 49 4F 52  49 54 59 2E 00 5E 13 02  |=2*PRIORITY..^..|
00000B20: 03 8F 20 20 49 46 20 57  45 20 48 41 56 45 20 41  |..  IF WE HAVE A|
00000B30: 4E 20 4F 50 45 52 41 4E  44 20 54 48 45 4E 20 54  |N OPERAND THEN T|
00000B40: 48 45 20 20 20 20 20 20  20 20 20 20 56 41 4C 55  |HE          VALU|
00000B50: 45 20 49 53 20 49 4E 20  54 30 4B 45 4E 2E 00 64  |E IS IN T0KEN..d|
00000B60: 13 0C 03 8F 00 AF 13 16  03 8F 20 20 4E 4F 57 20  |..........  NOW |
00000B70: 42 45 47 49 4E 20 54 48  45 20 45 58 50 52 45 53  |BEGIN THE EXPRES|
00000B80: 53 49 4F 4E 20 50 52 4F  2D 20 20 20 20 20 20 20  |SION PRO-       |
00000B90: 20 20 20 20 43 45 53 53  49 4E 47 2E 20 49 46 20  |    CESSING. IF |
00000BA0: 54 48 45 20 54 4F 4B 45  4E 20 49 53 20 41 4E 00  |THE TOKEN IS AN.|
00000BB0: FC 13 20 03 8F 20 20 4F  50 45 52 41 4E 44 20 54  |.. ..  OPERAND T|
00000BC0: 48 45 4E 20 50 55 53 48  20 49 54 20 4F 4E 54 4F  |HEN PUSH IT ONTO|
00000BD0: 20 54 48 45 20 20 20 20  20 20 20 20 20 20 20 4F  | THE           O|
00000BE0: 50 45 52 41 4E 44 20 53  54 41 43 4B 20 41 4E 44  |PERAND STACK AND|
00000BF0: 20 47 45 54 20 41 4E 4F  54 48 45 52 00 32 14 2A  | GET ANOTHER.2.*|
00000C00: 03 8F 20 20 54 4F 4B 45  4E 20 20 20 20 20 20 20  |..  TOKEN       |
00000C10: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000C20: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000C30: 20 2E 00 7B 14 34 03 8B  20 46 4F 55 4E 44 B2 30  | ..{.4.. FOUND.0|
00000C40: 20 A7 20 20 20 20 20 20  20 20 20 20 20 20 20 20  | .              |
00000C50: 20 20 20 20 20 20 20 20  20 20 20 20 50 4E B2 50  |            PN.P|
00000C60: 4E AA 31 20 3A 20 4E 55  4D 28 50 4E 29 B2 54 30  |N.1 : NUM(PN).T0|
00000C70: 4B 45 4E 20 3A 20 89 20  33 30 30 00 81 14 3E 03  |KEN : . 300...>.|
00000C80: 8F 00 CE 14 48 03 8F 20  20 49 46 20 54 48 45 20  |....H..  IF THE |
00000C90: 54 4F 4B 45 4E 20 49 53  20 41 4E 20 4F 50 45 4E  |TOKEN IS AN OPEN|
00000CA0: 49 4E 47 20 20 20 20 20  20 20 20 20 20 20 20 20  |ING             |
00000CB0: 20 50 41 52 45 4E 54 48  45 53 49 53 20 54 48 45  | PARENTHESIS THE|
00000CC0: 4E 20 50 55 53 48 20 49  54 20 4F 4E 54 4F 00 0C  |N PUSH IT ONTO..|
00000CD0: 15 52 03 8F 20 20 54 48  45 20 4F 50 45 52 41 54  |.R..  THE OPERAT|
00000CE0: 4F 52 20 53 54 41 43 4B  20 41 4E 44 20 47 45 54  |OR STACK AND GET|
00000CF0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 41 4E  |              AN|
00000D00: 4F 54 48 45 52 20 54 4F  4B 45 4E 2E 00 12 15 5C  |OTHER TOKEN....\|
00000D10: 03 8F 00 5B 15 66 03 8B  20 54 24 B2 22 28 22 20  |...[.f.. T$."(" |
00000D20: A7 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00000D30: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000D40: 20 50 4F B2 50 4F AA 31  20 3A 20 4F 50 28 50 4F  | PO.PO.1 : OP(PO|
00000D50: 29 B2 31 20 3A 20 89 20  33 30 30 00 61 15 70 03  |).1 : . 300.a.p.|
00000D60: 8F 00 AD 15 7A 03 8F 20  20 49 46 20 54 48 45 20  |....z..  IF THE |
00000D70: 4F 50 45 52 41 54 4F 52  20 49 53 4E 27 54 20 41  |OPERATOR ISN'T A|
00000D80: 20 43 4C 4F 53 49 4E 47  20 20 20 20 20 20 20 20  | CLOSING        |
00000D90: 20 50 41 52 45 4E 54 48  45 53 49 53 20 54 48 45  | PARENTHESIS THE|
00000DA0: 4E 20 45 58 45 43 55 54  45 20 54 48 45 00 FB 15  |N EXECUTE THE...|
00000DB0: 84 03 8F 20 20 45 56 41  4C 55 41 54 45 20 53 55  |...  EVALUATE SU|
00000DC0: 42 52 4F 55 54 49 4E 45  20 55 4E 54 49 4C 20 49  |BROUTINE UNTIL I|
00000DD0: 54 20 20 20 20 20 20 20  20 20 20 20 20 43 4F 4D  |T            COM|
00000DE0: 50 4C 45 54 45 53 2E 20  54 48 49 53 20 57 49 4C  |PLETES. THIS WIL|
00000DF0: 4C 20 4C 45 41 56 45 20  54 48 45 00 45 16 8E 03  |L LEAVE THE.E...|
00000E00: 8F 20 20 53 54 41 43 4B  20 49 4E 20 41 20 43 4F  |.  STACK IN A CO|
00000E10: 4E 53 49 53 54 45 4E 54  20 53 54 41 54 45 20 41  |NSISTENT STATE A|
00000E20: 4E 44 20 20 20 20 20 20  20 20 20 50 55 53 48 20  |ND         PUSH |
00000E30: 54 48 45 20 4F 50 45 52  41 54 4F 52 20 4F 4E 54  |THE OPERATOR ONT|
00000E40: 4F 20 54 48 45 00 90 16  98 03 8F 20 20 53 54 41  |O THE......  STA|
00000E50: 43 4B 20 41 54 20 54 48  45 20 41 50 50 52 4F 50  |CK AT THE APPROP|
00000E60: 52 49 41 54 45 20 53 50  4F 54 2E 20 20 20 20 20  |RIATE SPOT.     |
00000E70: 20 20 20 20 20 54 48 45  4E 20 47 4F 20 47 45 54  |     THEN GO GET|
00000E80: 20 54 48 45 20 4E 45 58  54 20 54 4F 4B 45 4E 2E  | THE NEXT TOKEN.|
00000E90: 00 96 16 A2 03 8F 00 DA  16 AC 03 8B 20 54 24 B3  |............ T$.|
00000EA0: B1 22 29 22 20 A7 20 20  20 20 20 20 20 20 20 20  |.")" .          |
00000EB0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000EC0: 20 20 20 20 20 20 20 20  20 20 20 20 20 8D 20 31  |             . 1|
00000ED0: 33 35 30 3A 20 89 20 33  30 30 00 E0 16 B6 03 8F  |350: . 300......|
00000EE0: 00 27 17 C0 03 8F 20 20  57 45 20 48 41 56 45 20  |.'....  WE HAVE |
00000EF0: 41 20 43 4C 4F 53 49 4E  47 20 50 41 52 45 4E 54  |A CLOSING PARENT|
00000F00: 48 45 53 49 53 20 20 20  20 20 20 20 20 20 20 20  |HESIS           |
00000F10: 53 4F 20 57 45 20 55 53  45 20 54 48 45 20 46 4F  |SO WE USE THE FO|
00000F20: 4C 4C 4F 57 49 4E 47 00  73 17 CA 03 8F 20 20 53  |LLOWING.s....  S|
00000F30: 54 52 41 54 45 47 59 2E  20 53 45 54 20 54 48 45  |TRATEGY. SET THE|
00000F40: 20 50 52 45 53 45 4E 54  20 54 4F 4B 45 4E 20 20  | PRESENT TOKEN  |
00000F50: 20 20 20 20 20 20 20 54  4F 20 30 20 28 41 20 53  |       TO 0 (A S|
00000F60: 50 45 43 49 41 4C 20 4F  50 45 52 41 54 4F 52 29  |PECIAL OPERATOR)|
00000F70: 20 53 4F 00 BC 17 D4 03  8F 20 20 54 48 41 54 20  | SO......  THAT |
00000F80: 4E 4F 20 4F 50 45 52 41  54 4F 52 20 57 49 4C 4C  |NO OPERATOR WILL|
00000F90: 20 47 45 54 20 50 55 54  20 20 20 20 20 20 20 20  | GET PUT        |
00000FA0: 20 20 20 4F 4E 54 4F 20  54 48 45 20 53 54 41 43  |   ONTO THE STAC|
00000FB0: 4B 2E 20 54 48 45 4E 20  4B 45 45 50 00 08 18 DE  |K. THEN KEEP....|
00000FC0: 03 8F 20 20 43 41 4C 4C  49 4E 47 20 54 48 45 20  |..  CALLING THE |
00000FD0: 45 56 41 4C 55 41 54 45  20 52 4F 55 54 49 4E 45  |EVALUATE ROUTINE|
00000FE0: 20 20 20 20 20 20 20 20  20 20 20 20 55 4E 54 49  |            UNTI|
00000FF0: 4C 20 41 4E 20 4F 50 45  4E 49 4E 47 20 50 41 52  |L AN OPENING PAR|
00001000: 45 4E 54 48 45 53 49 53  00 34 18 E8 03 8F 20 20  |ENTHESIS.4....  |
00001010: 49 53 20 46 4F 55 4E 44  2E 20 20 20 20 20 20 20  |IS FOUND.       |
00001020: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001030: 20 20 20 2E 00 40 18 F2  03 46 4F 55 4E 44 B2 30  |   ..@...FOUND.0|
00001040: 00 85 18 FC 03 8B 20 4F  50 28 50 4F 29 B3 B1 31  |...... OP(PO)..1|
00001050: 20 A7 20 20 20 20 20 20  20 20 20 20 20 20 20 20  | .              |
00001060: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001070: 20 20 20 20 20 20 20 8D  20 31 33 35 30 3A 20 89  |       . 1350: .|
00001080: 20 31 30 32 30 00 8B 18  06 04 8F 00 D6 18 10 04  | 1020...........|
00001090: 8F 20 20 4F 4E 43 45 20  41 4E 20 4F 50 45 4E 49  |.  ONCE AN OPENI|
000010A0: 4E 47 20 50 41 52 45 4E  54 48 45 53 49 53 20 49  |NG PARENTHESIS I|
000010B0: 53 20 20 20 20 20 20 20  20 20 20 46 4F 55 4E 44  |S          FOUND|
000010C0: 20 57 45 20 52 45 4D 4F  56 45 20 49 54 20 46 52  | WE REMOVE IT FR|
000010D0: 4F 4D 20 54 48 45 00 0C  19 1A 04 8F 20 20 53 54  |OM THE......  ST|
000010E0: 41 43 4B 20 41 4E 44 20  47 4F 20 47 45 54 20 54  |ACK AND GO GET T|
000010F0: 48 45 20 4E 45 58 54 20  20 20 20 20 20 20 20 20  |HE NEXT         |
00001100: 20 20 20 20 20 20 54 4F  4B 45 4E 2E 00 12 19 24  |      TOKEN....$|
00001110: 04 8F 00 26 19 2E 04 50  4F B2 50 4F AB 31 20 3A  |...&...PO.PO.1 :|
00001120: 20 89 20 33 30 30 00 2C  19 38 04 8F 00 76 19 42  | . 300.,.8...v.B|
00001130: 04 8F 20 20 54 48 49 53  20 49 53 20 57 48 45 52  |..  THIS IS WHER|
00001140: 45 20 57 45 20 57 49 4E  44 20 55 50 20 41 46 54  |E WE WIND UP AFT|
00001150: 45 52 20 20 20 20 20 20  20 20 20 20 54 48 45 20  |ER          THE |
00001160: 45 4E 54 49 52 45 20 53  54 52 49 4E 47 20 48 41  |ENTIRE STRING HA|
00001170: 53 20 42 45 45 4E 00 C0  19 4C 04 8F 20 20 50 52  |S BEEN...L..  PR|
00001180: 4F 43 45 53 53 45 44 2E  20 4E 4F 57 20 57 45 20  |OCESSED. NOW WE |
00001190: 4B 45 45 50 20 43 41 4C  4C 49 4E 47 20 20 20 20  |KEEP CALLING    |
000011A0: 20 20 20 20 20 20 54 48  45 20 45 56 41 4C 55 41  |      THE EVALUA|
000011B0: 54 45 20 52 4F 55 54 49  4E 45 20 55 4E 54 49 4C  |TE ROUTINE UNTIL|
000011C0: 00 07 1A 56 04 8F 20 20  57 45 20 46 49 4E 44 20  |...V..  WE FIND |
000011D0: 54 48 45 20 53 54 41 52  54 2D 4F 46 2D 4C 49 4E  |THE START-OF-LIN|
000011E0: 45 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |E               |
000011F0: 54 4F 4B 45 4E 20 4F 4E  20 54 48 45 20 54 4F 50  |TOKEN ON THE TOP|
00001200: 20 4F 46 20 54 48 45 00  52 1A 60 04 8F 20 20 4F  | OF THE.R.`..  O|
00001210: 50 45 52 41 54 4F 52 20  53 54 41 43 4B 2E 20 57  |PERATOR STACK. W|
00001220: 48 45 4E 20 54 48 49 53  20 20 20 20 20 20 20 20  |HEN THIS        |
00001230: 20 20 20 20 20 20 20 4F  43 43 55 52 53 20 57 45  |       OCCURS WE|
00001240: 20 4B 4E 4F 57 20 54 48  41 54 20 57 45 20 48 41  | KNOW THAT WE HA|
00001250: 56 45 00 9F 1A 6A 04 8F  20 20 46 49 4E 49 53 48  |VE...j..  FINISH|
00001260: 45 44 2C 20 41 4E 44 20  54 48 45 20 52 45 53 55  |ED, AND THE RESU|
00001270: 4C 54 20 49 53 20 4F 4E  20 20 20 20 20 20 20 20  |LT IS ON        |
00001280: 20 20 54 48 45 20 54 4F  50 20 4F 46 20 54 48 45  |  THE TOP OF THE|
00001290: 20 4F 50 45 52 41 4E 44  20 53 54 41 43 4B 2E 00  | OPERAND STACK..|
000012A0: A5 1A 74 04 8F 00 EA 1A  7E 04 8B 20 4F 50 28 50  |..t.....~.. OP(P|
000012B0: 4F 29 20 B3 B1 20 AB 31  20 A7 20 20 20 20 20 20  |O) .. .1 .      |
000012C0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000012D0: 20 20 20 20 20 20 20 20  20 20 20 20 8D 20 31 33  |            . 13|
000012E0: 35 30 3A 20 89 20 31 31  35 30 00 F0 1A 88 04 8F  |50: . 1150......|
000012F0: 00 12 1B 92 04 8F 20 20  50 52 49 4E 54 20 54 48  |......  PRINT TH|
00001300: 45 20 52 45 53 55 4C 54  20 41 4E 44 20 53 54 4F  |E RESULT AND STO|
00001310: 50 2E 00 18 1B 9C 04 8F  00 25 1B A6 04 99 20 4E  |P........%.... N|
00001320: 55 4D 28 31 29 00 2B 1B  B0 04 80 00 31 1B BA 04  |UM(1).+.....1...|
00001330: 8F 00 7E 1B C4 04 8F 20  20 54 48 49 53 20 52 4F  |..~....  THIS RO|
00001340: 55 54 49 4E 45 20 45 56  41 4C 55 41 54 45 53 20  |UTINE EVALUATES |
00001350: 54 48 45 20 20 20 20 20  20 20 20 20 20 20 20 20  |THE             |
00001360: 20 53 54 41 43 4B 2E 49  46 20 54 48 45 20 50 52  | STACK.IF THE PR|
00001370: 45 53 45 4E 54 20 4F 50  45 52 41 54 4F 52 00 C7  |ESENT OPERATOR..|
00001380: 1B CE 04 8F 20 20 48 41  53 20 41 20 4C 4F 57 45  |....  HAS A LOWE|
00001390: 52 20 50 52 49 4F 52 49  54 59 20 54 48 41 4E 20  |R PRIORITY THAN |
000013A0: 54 48 45 20 20 20 20 20  20 20 20 20 20 20 54 4F  |THE           TO|
000013B0: 50 20 4F 46 20 54 48 45  20 4F 50 45 52 41 54 4F  |P OF THE OPERATO|
000013C0: 52 20 53 54 41 43 4B 00  13 1C D8 04 8F 20 20 54  |R STACK......  T|
000013D0: 48 45 4E 20 54 48 45 20  54 4F 50 20 54 57 4F 20  |HEN THE TOP TWO |
000013E0: 49 54 45 4D 53 20 4F 4E  20 54 48 45 20 20 20 20  |ITEMS ON THE    |
000013F0: 20 20 20 20 20 20 20 53  54 41 43 4B 20 41 52 45  |       STACK ARE|
00001400: 20 45 56 41 4C 55 41 54  45 44 2C 20 41 4E 44 20  | EVALUATED, AND |
00001410: 54 48 45 00 5E 1C E2 04  8F 20 20 50 52 49 4F 52  |THE.^....  PRIOR|
00001420: 49 54 49 45 53 20 41 52  45 20 52 45 2D 43 48 45  |ITIES ARE RE-CHE|
00001430: 43 4B 45 44 2E 20 49 46  20 20 20 20 20 20 20 20  |CKED. IF        |
00001440: 20 20 20 54 48 45 20 50  52 49 4F 52 49 54 59 20  |   THE PRIORITY |
00001450: 4F 46 20 54 48 45 20 50  52 45 53 45 4E 54 00 A8  |OF THE PRESENT..|
00001460: 1C EC 04 8F 20 20 4F 50  45 52 41 54 4F 52 20 49  |....  OPERATOR I|
00001470: 53 20 47 52 45 41 54 45  52 20 54 48 41 4E 20 54  |S GREATER THAN T|
00001480: 48 45 20 20 20 20 20 20  20 20 20 20 20 20 50 52  |HE            PR|
00001490: 49 4F 52 49 54 59 20 4F  46 20 54 48 45 20 54 4F  |IORITY OF THE TO|
000014A0: 50 20 4F 46 20 54 48 45  00 F1 1C F6 04 8F 20 20  |P OF THE......  |
000014B0: 4F 50 45 52 41 54 4F 52  20 53 54 41 43 4B 20 54  |OPERATOR STACK T|
000014C0: 48 45 4E 20 54 48 45 20  54 4F 4B 45 4E 20 20 20  |HEN THE TOKEN   |
000014D0: 20 20 20 20 20 20 20 20  49 53 20 50 55 53 48 45  |        IS PUSHE|
000014E0: 44 20 4F 4E 54 4F 20 54  48 45 20 53 54 41 43 4B  |D ONTO THE STACK|
000014F0: 2E 00 3A 1D 00 05 8F 20  20 49 46 20 54 48 45 20  |..:....  IF THE |
00001500: 50 52 45 53 45 4E 54 20  54 4F 4B 45 4E 3D 30 20  |PRESENT TOKEN=0 |
00001510: 54 48 45 4E 20 57 45 20  20 20 20 20 20 20 20 20  |THEN WE         |
00001520: 20 48 41 56 45 20 54 48  45 20 53 50 45 43 49 41  | HAVE THE SPECIA|
00001530: 4C 20 4F 50 45 52 41 54  4F 52 00 86 1D 0A 05 8F  |L OPERATOR......|
00001540: 20 20 43 4C 4F 53 49 4E  47 20 50 41 52 45 4E 54  |  CLOSING PARENT|
00001550: 48 45 53 49 53 20 4F 52  20 45 4E 44 2D 4F 46 2D  |HESIS OR END-OF-|
00001560: 20 20 20 20 20 20 20 20  20 20 4C 49 4E 45 20 53  |          LINE S|
00001570: 4F 20 57 45 20 52 45 54  55 52 4E 20 41 46 54 45  |O WE RETURN AFTE|
00001580: 52 20 45 41 43 48 00 99  1D 14 05 8F 20 20 45 56  |R EACH......  EV|
00001590: 41 4C 55 41 54 49 4F 4E  2E 00 9F 1D 1E 05 8F 00  |ALUATION........|
000015A0: E7 1D 28 05 8F 20 20 43  48 45 43 4B 20 54 48 45  |..(..  CHECK THE|
000015B0: 20 50 52 49 4F 52 49 54  59 20 4F 46 20 54 48 45  | PRIORITY OF THE|
000015C0: 20 54 4F 50 20 20 20 20  20 20 20 20 20 20 20 4F  | TOP           O|
000015D0: 46 20 54 48 45 20 53 54  41 43 4B 20 41 47 41 49  |F THE STACK AGAI|
000015E0: 4E 53 54 20 54 48 45 00  31 1E 32 05 8F 20 20 50  |NST THE.1.2..  P|
000015F0: 52 45 53 45 4E 54 20 4F  50 45 52 41 54 4F 52 2E  |RESENT OPERATOR.|
00001600: 20 49 46 20 4E 45 43 45  53 53 41 52 59 20 20 20  | IF NECESSARY   |
00001610: 20 20 20 20 20 20 20 50  55 53 48 20 54 48 45 20  |       PUSH THE |
00001620: 50 52 45 53 45 4E 54 20  4F 50 45 52 41 54 4F 52  |PRESENT OPERATOR|
00001630: 2E 00 37 1E 3C 05 8F 00  79 1E 46 05 8B 20 B5 28  |..7.<...y.F.. .(|
00001640: 4F 50 28 50 4F 29 AD 32  29 20 B3 20 B5 28 46 4F  |OP(PO).2) . .(FO|
00001650: 55 4E 44 AD 32 29 20 20  20 20 20 20 20 A7 20 50  |UND.2)       . P|
00001660: 4F B2 50 4F AA 31 20 3A  20 4F 50 28 50 4F 29 B2  |O.PO.1 : OP(PO).|
00001670: 46 4F 55 4E 44 20 3A 20  8E 00 7F 1E 50 05 8F 00  |FOUND : ....P...|
00001680: C2 1E 5A 05 8F 20 20 57  45 20 4D 55 53 54 20 45  |..Z..  WE MUST E|
00001690: 56 41 4C 55 41 54 45 20  54 48 45 20 54 4F 50 20  |VALUATE THE TOP |
000016A0: 54 57 4F 20 20 20 20 20  20 20 20 20 20 20 20 49  |TWO            I|
000016B0: 54 45 4D 53 20 4F 4E 20  54 48 45 20 53 54 41 43  |TEMS ON THE STAC|
000016C0: 4B 2E 00 C8 1E 64 05 8F  00 13 1F 6E 05 8B 20 4F  |K....d.....n.. O|
000016D0: 50 28 50 4F 29 20 B2 20  32 20 A7 20 20 20 20 20  |P(PO) . 2 .     |
000016E0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000016F0: 20 20 20 20 20 20 4E 55  4D 28 50 4E AB 31 29 B2  |      NUM(PN.1).|
00001700: 4E 55 4D 28 50 4E AB 31  29 20 AA 20 4E 55 4D 28  |NUM(PN.1) . NUM(|
00001710: 50 4E 29 00 5E 1F 78 05  8B 20 4F 50 28 50 4F 29  |PN).^.x.. OP(PO)|
00001720: 20 B2 20 33 20 A7 20 20  20 20 20 20 20 20 20 20  | . 3 .          |
00001730: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001740: 20 4E 55 4D 28 50 4E AB  31 29 B2 4E 55 4D 28 50  | NUM(PN.1).NUM(P|
00001750: 4E AB 31 29 20 AB 20 4E  55 4D 28 50 4E 29 00 A9  |N.1) . NUM(PN)..|
00001760: 1F 82 05 8B 20 4F 50 28  50 4F 29 20 B2 20 34 20  |.... OP(PO) . 4 |
00001770: A7 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00001780: 20 20 20 20 20 20 20 20  20 20 20 20 4E 55 4D 28  |            NUM(|
00001790: 50 4E AB 31 29 B2 4E 55  4D 28 50 4E AB 31 29 20  |PN.1).NUM(PN.1) |
000017A0: AC 20 4E 55 4D 28 50 4E  29 00 F4 1F 8C 05 8B 20  |. NUM(PN)...... |
000017B0: 4F 50 28 50 4F 29 20 B2  20 35 20 A7 20 20 20 20  |OP(PO) . 5 .    |
000017C0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000017D0: 20 20 20 20 20 20 20 4E  55 4D 28 50 4E AB 31 29  |       NUM(PN.1)|
000017E0: B2 4E 55 4D 28 50 4E AB  31 29 20 AD 20 4E 55 4D  |.NUM(PN.1) . NUM|
000017F0: 28 50 4E 29 00 3F 20 96  05 8B 20 4F 50 28 50 4F  |(PN).? ... OP(PO|
00001800: 29 20 B2 20 36 20 A7 20  20 20 20 20 20 20 20 20  |) . 6 .         |
00001810: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001820: 20 20 4E 55 4D 28 50 4E  AB 31 29 B2 4E 55 4D 28  |  NUM(PN.1).NUM(|
00001830: 50 4E AB 31 29 20 AE 20  4E 55 4D 28 50 4E 29 00  |PN.1) . NUM(PN).|
00001840: 45 20 A0 05 8F 00 8F 20  AA 05 8F 20 20 4E 4F 57  |E ..... ...  NOW|
00001850: 20 50 4F 50 20 54 48 45  20 4F 50 45 52 41 54 4F  | POP THE OPERATO|
00001860: 52 20 53 54 41 43 4B 2C  20 20 20 20 20 20 20 20  |R STACK,        |
00001870: 20 20 20 20 20 53 49 4E  43 45 20 57 45 20 55 53  |     SINCE WE US|
00001880: 45 44 20 54 48 45 20 4F  50 45 52 41 54 4F 52 00  |ED THE OPERATOR.|
00001890: DC 20 B4 05 8F 20 20 41  4E 44 20 50 4F 50 20 54  |. ...  AND POP T|
000018A0: 48 45 20 4F 50 45 52 41  4E 44 20 53 54 41 43 4B  |HE OPERAND STACK|
000018B0: 20 42 59 20 20 20 20 20  20 20 20 20 20 20 20 4F  | BY            O|
000018C0: 4E 45 20 53 49 4E 43 45  20 57 45 20 55 53 45 44  |NE SINCE WE USED|
000018D0: 20 54 57 4F 20 4E 55 4D  42 45 52 53 00 1D 21 BE  | TWO NUMBERS..!.|
000018E0: 05 8F 20 20 42 55 54 20  50 55 54 20 54 48 45 20  |..  BUT PUT THE |
000018F0: 52 45 53 55 4C 54 20 42  41 43 4B 20 4F 4E 20 54  |RESULT BACK ON T|
00001900: 48 45 20 20 20 20 20 20  20 20 20 20 54 4F 50 20  |HE          TOP |
00001910: 4F 46 20 54 48 45 20 53  54 41 43 4B 2E 00 23 21  |OF THE STACK..#!|
00001920: C8 05 8F 00 39 21 D2 05  50 4F B2 50 4F AB 31 20  |....9!..PO.PO.1 |
00001930: 3A 20 50 4E B2 50 4E AB  31 00 3F 21 DC 05 8F 00  |: PN.PN.1.?!....|
00001940: 8A 21 E6 05 8F 20 20 49  46 20 57 45 20 44 4F 4E  |.!...  IF WE DON|
00001950: 27 54 20 48 41 56 45 20  54 48 45 20 53 50 45 43  |'T HAVE THE SPEC|
00001960: 49 41 4C 20 20 20 20 20  20 20 20 20 20 20 20 4F  |IAL            O|
00001970: 50 45 52 41 54 4F 52 20  54 48 45 4E 20 47 4F 20  |PERATOR THEN GO |
00001980: 54 4F 20 54 48 45 20 54  4F 50 00 D4 21 F0 05 8F  |TO THE TOP..!...|
00001990: 20 20 4F 46 20 54 48 45  20 52 4F 55 54 49 4E 45  |  OF THE ROUTINE|
000019A0: 20 41 4E 44 20 54 52 59  20 41 47 41 49 4E 20 20  | AND TRY AGAIN  |
000019B0: 20 20 20 20 20 20 20 20  20 20 54 4F 20 45 4E 53  |          TO ENS|
000019C0: 55 52 45 20 54 48 41 54  20 54 48 45 20 50 52 45  |URE THAT THE PRE|
000019D0: 53 45 4E 54 00 1C 22 FA  05 8F 20 20 4F 50 45 52  |SENT.."...  OPER|
000019E0: 41 54 4F 52 20 47 45 54  53 20 50 55 53 48 45 44  |ATOR GETS PUSHED|
000019F0: 20 4F 4E 20 54 48 45 20  20 20 20 20 20 20 20 20  | ON THE         |
00001A00: 20 20 20 20 53 54 41 43  4B 20 49 4E 20 54 48 45  |    STACK IN THE|
00001A10: 20 52 49 47 48 54 20 53  50 4F 54 2E 00 35 22 04  | RIGHT SPOT..5".|
00001A20: 06 8F 20 20 4F 54 48 45  52 57 49 53 45 20 52 45  |..  OTHERWISE RE|
00001A30: 54 55 52 4E 2E 00 3B 22  0E 06 8F 00 51 22 18 06  |TURN..;"....Q"..|
00001A40: 8B 20 46 4F 55 4E 44 B3  B1 30 20 89 20 31 33 35  |. FOUND..0 . 135|
00001A50: 30 00 57 22 22 06 8E 00  00 00                    |0.W"".....      |
..K.D..  FIRST, WE MUST ALLOCATE ROOM   
         FOR THE TWO STACKS THAT WE...N.
.  NEED. THE OPERAND STACK (NUM)        
   WILL BE TWICE AS LARGE AS THE...X..  
OPERATOR STACK (OP). THE TWO            
POINTERS TO TOP-OF-STACK (PN.1....  TO T
HE OPERAND STACK AND PO TO          THE 
OPERATOR STACK) MUST ALSO.~....  BE INIT
IALIZED, AND WE MUST PUT         A START
-OF-LINE FLAG INTO THE.K....  THE TOP OF
 THE OPERATOR STACK.          THE STRING
 OF LEGAL OPERATORS... ..  MUST ALSO BE 
INITIALIZED. THE           POSITION IN T
HE STRING OF THE.Y....  OPERATOR MEASURE
S THE PRIORITY          OF THAT OPERATOR
.._.....V.... NUM(200),OP(100)...H.OP$."
(+-*/^)"...R.PN.0 : OP(1)..1 : PO.1.....
.......  READ IN THE EXPRESSION TO PARSE
         AND ECHO IT TO THE SCREEN......
....... "ENTER THE EXPRESSION";IN$.(....
 IN$"=";.......X....  THE PARSER BEGINS 
AT 290. FIRST         REMOVE ALL LEADING
 BLANKS..~.".....,.. H(IN$,1)." " .     
           IN$.I(IN$,C(IN$).1):. 300.B.6
.....@..  NOW IF THERE IS NO MORE STRING
,         GO TO THE FINAL PROCESSING....
J...'.T.. IN$."" . 1150.-.^...X.H..  INI
TIALIZE THE OPERATOR TOKEN           TO 
0 AND GET THE FIRST CHAR...R..  OF THE R
EMAINING LINE INTO A            TEMPORAR
Y VARIABLE..A.|.......FOUND.0 : T$.H(IN$
,1)......./....  NOW CHECK THE CHARACTER
 AGAINST         EACH OF THE POSSIBLE OP
ERATORS.{....  IF WE FIND ONE SET THE VA
LUE OF         THE TOKEN TO THE LOCATION
 IN......  THE STRING, AND FORCE THE LOO
P          TO TERMINATE EARLY..D.....Y.B
.. I . 1 . C(OP$). .L.. T$.J(OP$,I,1) . 
                                FOUND.I:
I.C(OP$).&.V...,.....X....  IF WE'VE FOU
ND AN OPERATOR THEN         TAKE IT OFF 
THE FRONT OF THE......  STRING AND SKIP 
THE REST OF THE         PARSING.........
.... FOUND..0 .                         
IN$.I(IN$,C(IN$).1):. 820.......L....  W
E DON'T HAVE A LEGAL OPERATOR          S
O ASSUME AN OPERAND. WE MUST...&..  FIND
 THE FIRST NON-DIGIT IN THE         REST
 OF THE INPUT STRING AND...0..  MAKE A N
OTE OF THE LOCATION SO          THAT WE 
CAN REMOVE THE TOKEN.1.:..  FROM THE STR
ING. INITIALLY WE           ASSUME THE R
EST OF THE STRING.V.D..  IS THE NUMBER, 
THEN SEARCH FOR          AN EARLIER NON-
DIGIT..|.N.....X.LAST.C(IN$).1...B.. I .
 1 . C(IN$)...L.....V..  USE A TEMPORARY
 VARIABLE FOR            THE NEXT CHARAC
TER TO SAVE.@....  TIME. FORCE THE LOOP 
TO STOP            EARLY IF WE FIND A NO
N-DIGIT..F.....X...T$.J(IN$,I,1)...... T
$.."." . (T$."0" . T$."9")              
      . LAST.I:I.C(IN$).................
.  PUT THE VALUE OF THE NUMBER IN       
   T0KEN (TO IS A RESERVED WORD).9.F..  
AND REMOVE THE CHARACTERS FROM          
THE INPUT STRING..?.P.....Z.T0KEN . E(H(
IN$,LAST.1))          : IN$ . I(IN$,C(IN
$).LAST.1).......R....  THIS ENDS THE PA
RSER. ON EXIT,          FOUND=0 IF THE T
OKEN IS AN......  OPERAND OR IF THE TOKE
N IS AN           OPERATOR FOUND=2*PRIOR
ITY..^....  IF WE HAVE AN OPERAND THEN T
HE          VALUE IS IN T0KEN..D........
..  NOW BEGIN THE EXPRESSION PRO-       
    CESSING. IF THE TOKEN IS AN... ..  O
PERAND THEN PUSH IT ONTO THE           O
PERAND STACK AND GET ANOTHER.2.*..  TOKE
N                                       
 ..{.4.. FOUND.0 .                      
    PN.PN.1 : NUM(PN).T0KEN : . 300...>.
..N.H..  IF THE TOKEN IS AN OPENING     
         PARENTHESIS THEN PUSH IT ONTO..
.R..  THE OPERATOR STACK AND GET        
      ANOTHER TOKEN....\...[.F.. T$."(" 
.                                PO.PO.1
 : OP(PO).1 : . 300.A.P.....Z..  IF THE 
OPERATOR ISN'T A CLOSING         PARENTH
ESIS THEN EXECUTE THE......  EVALUATE SU
BROUTINE UNTIL IT            COMPLETES. 
THIS WILL LEAVE THE.E....  STACK IN A CO
NSISTENT STATE AND         PUSH THE OPER
ATOR ONTO THE......  STACK AT THE APPROP
RIATE SPOT.          THEN GO GET THE NEX
T TOKEN........Z.... T$..")" .          
                             . 1350: . 3
00.......'....  WE HAVE A CLOSING PARENT
HESIS           SO WE USE THE FOLLOWING.
S.J..  STRATEGY. SET THE PRESENT TOKEN  
       TO 0 (A SPECIAL OPERATOR) SO...T.
.  THAT NO OPERATOR WILL GET PUT        
   ONTO THE STACK. THEN KEEP......  CALL
ING THE EVALUATE ROUTINE            UNTI
L AN OPENING PARENTHESIS.4....  IS FOUND
.                          ..@...FOUND.0
...... OP(PO)..1 .                      
               . 1350: . 1020.......V...
.  ONCE AN OPENING PARENTHESIS IS       
   FOUND WE REMOVE IT FROM THE......  ST
ACK AND GO GET THE NEXT               TO
KEN....$...&...PO.PO.1 : . 300.,.8...V.B
..  THIS IS WHERE WE WIND UP AFTER      
    THE ENTIRE STRING HAS BEEN...L..  PR
OCESSED. NOW WE KEEP CALLING          TH
E EVALUATE ROUTINE UNTIL...V..  WE FIND 
THE START-OF-LINE               TOKEN ON
 THE TOP OF THE.R.`..  OPERATOR STACK. W
HEN THIS               OCCURS WE KNOW TH
AT WE HAVE...J..  FINISHED, AND THE RESU
LT IS ON          THE TOP OF THE OPERAND
 STACK....T.....~.. OP(PO) .. .1 .      
                            . 1350: . 11
50............  PRINT THE RESULT AND STO
P........%.... NUM(1).+.....1.....~.D.. 
 THIS ROUTINE EVALUATES THE             
 STACK.IF THE PRESENT OPERATOR.G.N..  HA
S A LOWER PRIORITY THAN THE           TO
P OF THE OPERATOR STACK...X..  THEN THE 
TOP TWO ITEMS ON THE           STACK ARE
 EVALUATED, AND THE.^....  PRIORITIES AR
E RE-CHECKED. IF           THE PRIORITY 
OF THE PRESENT......  OPERATOR IS GREATE
R THAN THE            PRIORITY OF THE TO
P OF THE......  OPERATOR STACK THEN THE 
TOKEN           IS PUSHED ONTO THE STACK
..:....  IF THE PRESENT TOKEN=0 THEN WE 
         HAVE THE SPECIAL OPERATOR......
  CLOSING PARENTHESIS OR END-OF-        
  LINE SO WE RETURN AFTER EACH......  EV
ALUATION..........(..  CHECK THE PRIORIT
Y OF THE TOP           OF THE STACK AGAI
NST THE.1.2..  PRESENT OPERATOR. IF NECE
SSARY          PUSH THE PRESENT OPERATOR
..7.<...Y.F.. .(OP(PO).2) . .(FOUND.2)  
     . PO.PO.1 : OP(PO).FOUND : ...P...
B.Z..  WE MUST EVALUATE THE TOP TWO     
       ITEMS ON THE STACK..H.D.....N.. O
P(PO) . 2 .                           NU
M(PN.1).NUM(PN.1) . NUM(PN).^.X.. OP(PO)
 . 3 .                           NUM(PN.
1).NUM(PN.1) . NUM(PN)...... OP(PO) . 4 
.                           NUM(PN.1).NU
M(PN.1) . NUM(PN)...... OP(PO) . 5 .    
                       NUM(PN.1).NUM(PN.
1) . NUM(PN).? ... OP(PO) . 6 .         
                  NUM(PN.1).NUM(PN.1) . 
NUM(PN).E  .... ...  NOW POP THE OPERATO
R STACK,             SINCE WE USED THE O
PERATOR.. ...  AND POP THE OPERAND STACK
 BY            ONE SINCE WE USED TWO NUM
BERS..!...  BUT PUT THE RESULT BACK ON T
HE          TOP OF THE STACK..#!H...9!R.
PO.PO.1 : PN.PN.1.?!.....!...  IF WE DON
'T HAVE THE SPECIAL            OPERATOR 
THEN GO TO THE TOP.T!...  OF THE ROUTINE
 AND TRY AGAIN            TO ENSURE THAT
 THE PRESENT.."...  OPERATOR GETS PUSHED
 ON THE             STACK IN THE RIGHT S
POT..5"...  OTHERWISE RETURN..;"....Q"..
. FOUND..0 . 1350.W"".....
C64 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL