000000: 45 58 54 45 4E 44 45 44 20 43 50 43 20 44 53 4B EXTENDED CPC DSK
000010: 20 46 69 6C 65 0D 0A 44 69 73 6B 2D 49 6E 66 6F File..Disk-Info
000020: 0D 0A 53 41 4D 64 69 73 6B 31 35 30 37 30 38 00 ..SAMdisk150708.
000030: 2A 01 00 00 13 13 13 13 13 13 13 13 13 13 13 13 *...............
000040: 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 ................
000050: 13 13 13 13 13 13 13 13 13 13 13 13 02 00 00 00 ................
000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000100: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
000110: 00 00 01 00 02 09 52 E5 00 00 41 02 00 00 00 02 ......R...A.....
000120: 00 00 46 02 00 00 00 02 00 00 42 02 00 00 00 02 ..F.......B.....
000130: 00 00 47 02 00 00 00 02 00 00 43 02 00 00 00 02 ..G.......C.....
000140: 00 00 48 02 00 00 00 02 00 00 44 02 00 00 00 02 ..H.......D.....
000150: 00 00 49 02 00 00 00 02 00 00 45 02 00 00 00 02 ..I.......E.....
000160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000200: 60 69 E5 11 00 A8 01 33 00 ED B0 E1 11 00 A7 01 `i.....3........
000210: 33 00 ED B0 21 00 A0 22 04 A7 21 35 01 11 00 10 3...!.."..!5....
000220: 01 47 00 ED B0 0E 00 CD 1B A8 F3 D9 CB C9 CB 81 .G..............
000230: D9 FB C3 00 10 01 00 A0 11 14 00 3E 1C CD 1C 10 ...........>....
000240: 01 00 01 11 08 00 3E 0C CD 1C 10 01 00 A7 C3 00 ......>.........
000250: 01 32 3C 10 D5 C5 01 00 00 CD 1E A8 C1 CD 24 A8 .2<...........$.
000260: 21 80 00 09 E3 44 4D CD 21 A8 C5 CD 27 A8 E1 23 !....DM.!...'..#
000270: 3E 0C BD 28 05 E3 44 4D 18 E3 C1 C9 60 69 11 00 >..(..DM....`i..
000280: 05 01 33 00 ED B0 0E 42 11 00 00 21 00 03 CD 89 ..3....B...!....
000290: BE 30 06 CD 50 01 C3 03 05 CD 59 02 0D 0A 46 61 .0..P.....Y...Fa
0002A0: 69 6C 65 64 20 74 6F 20 6C 6F 61 64 20 74 68 65 iled to load the
0002B0: 20 63 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 73 configuration s
0002C0: 65 63 74 6F 72 0D 0A 0A 24 C3 03 05 CD 59 02 04 ector...$....Y..
0002D0: 02 24 2A 00 03 11 CB ED 19 7C B5 28 26 CD 59 02 .$*......|.(&.Y.
0002E0: 0D 0A 49 6C 6C 65 67 61 6C 20 63 6F 6E 66 69 67 ..Illegal config
0002F0: 75 72 61 74 69 6F 6E 20 73 65 63 74 6F 72 0D 0A uration sector..
000300: 0A 24 C9 2A 02 03 22 3D 02 2A 04 03 22 3F 02 3A .$.*.."=.*.."?.:
000310: 06 03 32 43 02 21 3D 02 CD 83 BE 3A 07 03 32 03 ..2C.!=....:..2.
000320: 00 3A 08 03 CD 80 BE 3A 09 03 CD 9E BE 21 0A 03 .:.....:.....!..
000330: CD A1 BE 21 64 03 CD 5F 02 7E 23 B7 28 0C 47 4E ...!d.._.~#.(.GN
000340: 23 E5 C5 CD 0F 05 C1 E1 10 F5 EB 21 27 BB CD 46 #..........!'..F
000350: 02 21 2D BB CD 46 02 21 33 BB CD 46 02 EB 7E 23 .!-..F.!3..F..~#
000360: B7 28 50 57 46 23 4E 23 E5 D5 C5 CD 0F BB C1 D1 .(PWF#N#........
000370: E1 38 3A CD 59 02 0D 0A 45 78 70 61 6E 73 69 6F .8:.Y...Expansio
000380: 6E 20 62 75 66 66 65 72 20 66 75 6C 6C 20 6F 72 n buffer full or
000390: 20 69 6C 6C 65 67 61 6C 20 74 6F 6B 65 6E 20 73 illegal token s
0003A0: 70 65 63 69 66 69 65 64 0D 0A 0A 24 C9 06 00 09 pecified...$....
0003B0: 15 20 B1 3A 16 03 C3 A4 BE 00 00 00 00 AF 1E 00 . .:............
0003C0: 01 03 1A 4F 13 B7 C8 1A 47 13 1A 13 E5 CD 6C 02 ...O....G.....l.
0003D0: E1 0D 20 F3 C9 E3 CD 5F 02 E3 C9 7E 23 FE 24 C8 .. ...._...~#.$.
0003E0: 4F E5 CD 0C 05 E1 18 F3 E9 CF CF CF CF CF CF CF O...............
0003F0: CF CF CF CF CF CF CF CF CF CF CF CF CF CF CF CF ................
000400: 31 00 A0 0E 00 CD 1B A8 11 0A 00 19 5E 23 56 EB 1...........^#V.
000410: 11 F1 A1 01 0E 00 ED B0 21 00 00 ED 5B F1 A1 ED ........!...[...
000420: 4B FE A1 03 0B 78 B1 28 03 19 18 F8 22 EF A1 CD K....x.(...."...
000430: 70 A1 79 32 ED A1 01 80 00 CD 24 A8 11 80 00 ED p.y2......$.....
000440: 53 E5 A1 ED 4B FE A1 ED 43 E7 A1 CD 1E A8 0E 00 S...K...C.......
000450: C5 CD 21 A8 CD 27 A8 C1 CD 4B A1 38 3A 2A E5 A1 ..!..'...K.8:*..
000460: 11 04 00 B7 ED 52 22 E5 A1 28 10 38 0E 0C 3A F1 .....R"..(.8..:.
000470: A1 B9 20 DC ED 4B E7 A1 03 18 CC 21 93 A1 CD 87 .. ..K.....!....
000480: A1 CD 09 A8 CD 9B BE 9E BE 21 D4 A1 CD D4 BC 18 .........!......
000490: EA AF B8 20 0E 18 26 11 10 00 19 11 01 A2 D5 06 ... ..&.........
0004A0: 10 0E 00 3A F7 A1 16 00 5E 05 23 B7 28 03 56 05 ...:....^.#.(.V.
0004B0: 23 0C E3 73 23 72 23 E3 7A B3 20 D5 0D D1 79 B7 #..s#r#.z. ...y.
0004C0: CA 7B A0 32 00 A2 21 01 A2 E5 01 80 00 ED 43 EB .{.2..!.......C.
0004D0: A1 E1 5E 23 56 23 E5 CD E4 A0 21 00 A2 35 20 F1 ..^#V#....!..5 .
0004E0: E1 C3 00 01 EB 3A F3 A1 29 3D 20 FC ED 5B EF A1 .....:..)= ..[..
0004F0: 19 ED 5B F1 A1 AF ED 52 3C 28 04 30 F9 19 3D 2B ..[....R<(.0..=+
000500: 22 E9 A1 6F 26 00 22 E7 A1 4D 44 CD 1E A8 3A F4 "..o&."..MD...:.
000510: A1 3C 47 C5 3A F1 A1 47 3A E9 A1 3C B8 20 0D ED .<G.:..G:..<. ..
000520: 4B E7 A1 03 ED 43 E7 A1 CD 1E A8 AF 32 E9 A1 4F K....C......2..O
000530: 06 00 CD 21 A8 2A EB A1 11 80 00 19 22 EB A1 E5 ...!.*......"...
000540: C1 CD 24 A8 CD 27 A8 C1 10 C9 C9 C5 06 04 21 80 ..$..'........!.
000550: 00 E5 11 D9 A1 C5 06 0C 1A BE 20 09 23 13 10 F8 .......... .#...
000560: C1 E1 C1 37 C9 C1 E1 11 20 00 19 10 E4 C1 B7 C9 ...7.... .......
000570: 3A FA A1 CD 7B A1 3A FB A1 18 02 0E 00 06 08 CB :...{.:.........
000580: 17 30 01 0C 10 F9 C9 7E B7 C8 23 E5 4F CD 0C A8 .0.....~..#.O...
000590: E1 18 F4 24 4F 53 43 2E 53 59 53 20 77 75 72 64 ...$OSC.SYS wurd
0005A0: 65 20 6E 69 63 68 74 20 67 65 66 75 6E 64 65 6E e nicht gefunden
0005B0: 2E 0D 0A 42 41 53 49 43 3D 69 72 67 65 6E 64 65 ...BASIC=irgende
0005C0: 69 6E 65 20 54 61 73 74 65 20 64 72 75 65 63 6B ine Taste drueck
0005D0: 65 6E 20 00 42 41 53 49 C3 00 24 4F 53 43 20 20 en .BASI..$OSC
0005E0: 20 20 53 59 53 00 00 00 00 00 00 00 00 00 00 00 SYS...........
0005F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000600: 35 12 32 00 FA 00 0C 81 00 00 44 6A E1 44 6A E1 5.2.......Dj.Dj.
000610: 0D 00 0D 00 0D 00 00 00 00 00 00 00 00 00 00 00 ................
000620: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000630: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000640: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000650: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000660: 00 00 00 00 24 00 00 00 00 00 00 40 1D 77 77 43 ....$......@.wwC
000670: 50 2F 4D 20 32 2E 32 20 2D 20 41 6D 73 74 72 61 P/M 2.2 - Amstra
000680: 64 20 43 6F 6E 73 75 6D 65 72 20 45 6C 65 63 74 d Consumer Elect
000690: 72 6F 6E 69 63 73 20 70 6C 63 0A 0D 24 00 00 00 ronics plc..$...
0006A0: 00 00 00 00 08 08 09 01 0A 02 07 1B 42 7F 10 08 ............B...
0006B0: 4F 0B 00 08 08 09 01 0A 02 07 1B 42 7F 10 08 4F O..........B...O
0006C0: 0B 00 08 08 09 01 0A 02 00 00 31 31 31 31 31 31 ..........111111
0006D0: 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 1111111111111111
0006E0: 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 1111111111111111
0006F0: 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 1111111111111111
000700: 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 1111111111111111
000710: 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 1111111111111111
000720: 31 31 31 31 31 31 31 31 31 31 01 66 32 32 32 32 1111111111.f2222
000730: 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 2222222222222222
000740: 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 2222222222222222
000750: 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 2222222222222222
000760: 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 2222222222222222
000770: 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 2222222222222222
000780: 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 2222222222222222
000790: 32 32 03 1C 33 33 33 33 33 33 33 33 33 33 33 33 22..333333333333
0007A0: 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 3333333333333333
0007B0: 34 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4...............
0007C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0007D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0007E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0007F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E5 E5 ................
000800: A3 1E FE 0F C2 8A 06 CD CF 15 01 06 1E CD 20 12 £............. .
000810: 3A A9 1E D6 01 C6 FF 9F F5 3A A8 1E D6 3D C6 FF :........:...=..
000820: 9F C1 48 B1 1F D2 AE 06 01 9D 04 CD AF 09 21 A7 ..H...........!.
000830: 1F 36 01 3A A7 1F 1F D2 BE 07 3A C0 1E 32 C1 1E .6.:......:..2..
000840: 01 06 1E CD 20 12 21 04 1E 36 00 3A A9 1E D6 02 .... .!..6.:....
000850: D6 01 9F F5 3A F5 1D 2F C1 48 A1 1F D2 ED 06 CD ....:../.H......
000860: 88 1C CD BE 18 21 A8 1E 36 FF C3 13 07 3A A9 1E .....!..6....:..
000870: D6 03 C6 FF 9F F5 3E 0A 21 A8 1E 96 9F 2F F5 3E ......>.!..../.>
000880: 05 96 9F C1 48 A1 C1 48 B1 1F D2 13 07 01 B0 04 ....H..H........
000890: CD AF 09 3A 04 1E 21 5E 1F B6 77 3A A8 1E 3C 32 ...:..!^..w:..<2
0008A0: A4 1E 3A A8 1E FE 13 C2 30 07 CD CF 15 C3 7D 07 ..:.....0.....}.
0008B0: 3A A8 1E FE 14 C2 40 07 0E 1A CD 45 0E C3 7D 07 :.....@....E..}.
0008C0: 3A A8 1E D6 05 9F 21 05 1E A6 1F D2 53 07 21 57 :.....!.....S.!W
0008D0: 1F 36 01 3A A3 1E FE 0A C2 7A 07 21 5D 1F 36 01 .6.:£....z.!].6.
0008E0: 3A 63 1F FE 00 C2 6D 07 21 63 1F 36 08 3A 5F 1F :c....m.!c.6.:_.
0008F0: FE 00 C2 7A 07 21 5F 1F 36 01 CD 6C 1A CD 12 19 ...z.!_.6..l....
000900: 01 06 1E CD 20 12 3A A9 1E D6 01 C6 FF 9F F5 3A .... .:........:
000910: A8 1E D6 2C C6 FF 9F F5 3A A8 1E D6 0D C6 FF 9F ...,....:.......
000920: C1 48 A1 C1 48 B1 1F D2 B0 07 01 BC 04 CD AF 09 .H..H...........
000930: 3A A8 1E D6 0D C6 FF 9F 32 A7 1F C3 B3 06 3A A3 :.......2.....:£
000940: 1E FE 0F C2 CE 07 0E 1A CD 45 0E CD CF 15 3A A3 .........E....:£
000950: 1E FE 00 C2 DB 07 0E 00 CD 31 19 3A A5 1E 32 CC .........1.:..2.
000960: 1E C3 14 05 FB 76 21 F2 1D 71 21 F2 07 E5 2A 38 .....v!..q!...*8
000970: 02 E9 C9 21 FB 07 E5 2A 36 02 E9 3A 09 01 C9 3E ...!...*6..:...>
000980: FA CD A6 1D 3E FA CD A6 1D C9 11 00 00 0E 03 CD ....>...........
000990: 05 00 C9 11 00 00 0E 01 CD 05 00 C9 21 AB 1E 71 ............!..q
0009A0: 3A AB 1E E6 7F 5F 16 00 0E 02 CD 05 00 C9 0E 0D :...._..........
0009B0: CD 1C 08 0E 0A CD 1C 08 C9 21 AD 1E 70 2B 71 CD .........!..p+q.
0009C0: 2E 08 2A AC 1E EB 0E 09 CD 05 00 C9 11 00 00 0E ..*.............
0009D0: 0C CD 05 00 C9 11 00 00 0E 0D CD 05 00 C9 21 AF ..............!.
0009E0: 1E 71 2A AF 1E 26 00 EB 0E 0E CD 05 00 C9 21 B1 .q*..&........!.
0009F0: 1E 70 2B 71 2A B0 1E EB 0E 0F CD 05 00 32 AE 1E .p+q*........2..
000A00: 60 69 11 00 05 01 33 00 ED B0 0E 42 11 00 00 21 `i....3....B...!
000A10: 00 03 CD 89 BE 30 06 CD 50 01 C3 03 05 CD 59 02 .....0..P.....Y.
000A20: 0D 0A 46 61 69 6C 65 64 20 74 6F 20 6C 6F 61 64 ..Failed to load
000A30: 20 74 68 65 20 63 6F 6E 66 69 67 75 72 61 74 69 the configurati
000A40: 6F 6E 20 73 65 63 74 6F 72 0D 0A 0A 24 C3 03 05 on sector...$...
000A50: CD 59 02 04 02 24 2A 00 03 11 CB ED 19 7C B5 28 .Y...$*......|.(
000A60: 26 CD 59 02 0D 0A 49 6C 6C 65 67 61 6C 20 63 6F &.Y...Illegal co
000A70: 6E 66 69 67 75 72 61 74 69 6F 6E 20 73 65 63 74 nfiguration sect
000A80: 6F 72 0D 0A 0A 24 C9 2A 02 03 22 3D 02 2A 04 03 or...$.*.."=.*..
000A90: 22 3F 02 3A 06 03 32 43 02 21 3D 02 CD 83 BE 3A "?.:..2C.!=....:
000AA0: 07 03 32 03 00 3A 08 03 CD 80 BE 3A 09 03 CD 9E ..2..:.....:....
000AB0: BE 21 0A 03 CD A1 BE 21 64 03 CD 5F 02 7E 23 B7 .!.....!d.._.~#.
000AC0: 28 0C 47 4E 23 E5 C5 CD 0F 05 C1 E1 10 F5 EB 21 (.GN#..........!
000AD0: 27 BB CD 46 02 21 2D BB CD 46 02 21 33 BB CD 46 '..F.!-..F.!3..F
000AE0: 02 EB 7E 23 B7 28 50 57 46 23 4E 23 E5 D5 C5 CD ..~#.(PWF#N#....
000AF0: 0F BB C1 D1 E1 38 3A CD 59 02 0D 0A 45 78 70 61 .....8:.Y...Expa
000B00: 6E 73 69 6F 6E 20 62 75 66 66 65 72 20 66 75 6C nsion buffer ful
000B10: 6C 20 6F 72 20 69 6C 6C 65 67 61 6C 20 74 6F 6B l or illegal tok
000B20: 65 6E 20 73 70 65 63 69 66 69 65 64 0D 0A 0A 24 en specified...$
000B30: C9 06 00 09 15 20 B1 3A 16 03 C3 A4 BE 00 00 00 ..... .:........
000B40: 00 AF 1E 00 01 03 1A 4F 13 B7 C8 1A 47 13 1A 13 .......O....G...
000B50: E5 CD 6C 02 E1 0D 20 F3 C9 E3 CD 5F 02 E3 C9 7E ..l... ...._...~
000B60: 23 FE 24 C8 4F E5 CD 0C 05 E1 18 F3 E9 CF CF CF #.$.O...........
000B70: CF CF CF CF CF CF CF CF CF CF CF CF CF CF CF CF ................
000B80: CF CF CF CF CF CF CF CF CF CF CF CF CF CF CF CF ................
000B90: CF CF CF CF CF CF CF CF CF CF CF CF CF CF CF CF ................
000BA0: CF CF CF CF CF CF CF CF CF CF CF CF CF CF CF CF ................
000BB0: CF CF CF CF CF CF CF CF CF CF CF CF CF CF CF CF ................
000BC0: CF CF CF CF CF CF CF CF CF CF CF CF CF CF CF CF ................
000BD0: CF CF CF CF CF CF CF CF CF CF CF CF CF CF CF CF ................
000BE0: CF CF CF CF CF CF CF CF CF CF CF CF CF CF CF CF ................
000BF0: CF CF CF CF CF CF CF CF CF CF CF CF CF CF CF CF ................
000C00: C3 5C E1 C3 58 E1 7F 00 20 20 20 20 20 20 20 20 .\..X...
000C10: 20 20 20 20 20 20 20 20 43 4F 50 59 52 49 47 48 COPYRIGH
000C20: 54 20 28 43 29 20 31 39 37 39 2C 20 44 49 47 49 T (C) 1979, DIGI
000C30: 54 41 4C 20 52 45 53 45 41 52 43 48 20 20 00 00 TAL RESEARCH ..
000C40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000C50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000C60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000C70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000C80: 00 00 00 00 00 00 00 00 08 DE 00 00 5F 0E 02 C3 ............_...
000C90: 05 00 C5 CD 8C DE C1 C9 3E 0D CD 92 DE 3E 0A C3 ........>....>..
000CA0: 92 DE 3E 20 C3 92 DE C5 CD 98 DE E1 7E B7 C8 23 ..> ........~..#
000CB0: E5 CD 8C DE E1 C3 AC DE 0E 0D C3 05 00 5F 0E 0E ............._..
000CC0: C3 05 00 CD 05 00 32 EE E5 3C C9 0E 0F C3 C3 DE ......2..<......
000CD0: AF 32 ED E5 11 CD E5 C3 CB DE 0E 10 C3 C3 DE 0E .2..............
000CE0: 11 C3 C3 DE 0E 12 C3 C3 DE 11 CD E5 C3 DF DE 0E ................
000CF0: 13 C3 05 00 CD 05 00 B7 C9 0E 14 C3 F4 DE 11 CD ................
000D00: E5 C3 F9 DE 0E 15 C3 F4 DE 0E 16 C3 C3 DE 0E 17 ................
000D10: C3 05 00 1E FF 0E 20 C3 05 00 CD 13 DF 87 87 87 ...... .........
000D20: 87 21 EF E5 B6 32 04 00 C9 3A EF E5 32 04 00 C9 .!...2...:..2...
000D30: FE 61 D8 FE 7B D0 E6 5F C9 3A AB E5 B7 CA 96 DF .a..{.._.:......
000D40: 3A EF E5 B7 3E 00 C4 BD DE 11 AC E5 CD CB DE CA :...>...........
000D50: 96 DF 3A BB E5 3D 32 CC E5 11 AC E5 CD F9 DE C2 ..:..=2.........
000D60: 96 DF 11 07 DE 21 80 00 06 80 CD 42 E2 21 BA E5 .....!.....B.!..
000D70: 36 00 23 35 11 AC E5 CD DA DE CA 96 DF 3A EF E5 6.#5.........:..
000D80: B7 C4 BD DE 21 08 DE CD AC DE CD C2 DF CA A7 DF ....!...........
000D90: CD DD DF C3 82 E1 CD DD DF CD 1A DF 0E 0A 11 06 ................
000DA0: DE CD 05 00 CD 29 DF 21 07 DE 46 23 78 B7 CA BA .....).!..F#x...
000DB0: DF 7E CD 30 DF 77 05 C3 AB DF 77 21 08 DE 22 88 .~.0.w....w!..".
000DC0: DE C9 0E 0B CD 05 00 B7 C8 0E 01 CD 05 00 B7 C9 ................
000DD0: 0E 19 C3 05 00 11 80 00 0E 1A C3 05 00 21 AB E5 .............!..
000DE0: 7E B7 C8 36 00 AF CD BD DE 11 AC E5 CD EF DE 3A ~..6...........:
000DF0: EF E5 C3 BD DE 11 28 E1 21 00 E6 06 06 1A BE C2 ......(.!.......
000E00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000EA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000EB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000EC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000ED0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000EE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000EF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000FA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000FB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000FC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000FD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000FE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000FF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
001000: CF E1 13 23 05 C2 FD DF C9 CD 98 DE 2A 8A DE 7E ...#........*..~
001010: FE 20 CA 22 E0 B7 CA 22 E0 E5 CD 8C DE E1 23 C3 . ."..."......#.
001020: 0F E0 3E 3F CD 8C DE CD 98 DE CD DD DF C3 82 E1 ..>?............
001030: 1A B7 C8 FE 20 DA 09 E0 C8 FE 3D C8 FE 5F C8 FE .... .....=.._..
001040: 2E C8 FE 3A C8 FE 3B C8 FE 3C C8 FE 3E C8 C9 1A ...:..;..<..>...
001050: B7 C8 FE 20 C0 13 C3 4F E0 85 6F D0 24 C9 3E 00 ... ...O..o.$.>.
001060: 21 CD E5 CD 59 E0 E5 E5 AF 32 F0 E5 2A 88 DE EB !...Y....2..*...
001070: CD 4F E0 EB 22 8A DE EB E1 1A B7 CA 89 E0 DE 40 .O.."..........@
001080: 47 13 1A FE 3A CA 90 E0 1B 3A EF E5 77 C3 96 E0 G...:....:..w...
001090: 78 32 F0 E5 70 13 06 08 CD 30 E0 CA B9 E0 23 FE x2..p....0....#.
0010A0: 2A C2 A9 E0 36 3F C3 AB E0 77 13 05 C2 98 E0 CD *...6?...w......
0010B0: 30 E0 CA C0 E0 13 C3 AF E0 23 36 20 05 C2 B9 E0 0........#6 ....
0010C0: 06 03 FE 2E C2 E9 E0 13 CD 30 E0 CA E9 E0 23 FE .........0....#.
0010D0: 2A C2 D9 E0 36 3F C3 DB E0 77 13 05 C2 C8 E0 CD *...6?...w......
0010E0: 30 E0 CA F0 E0 13 C3 DF E0 23 36 20 05 C2 E9 E0 0........#6 ....
0010F0: 06 03 23 36 00 05 C2 F2 E0 EB 22 88 DE E1 01 0B ..#6......".....
001100: 00 23 7E FE 3F C2 09 E1 04 0D C2 01 E1 78 B7 C9 .#~.?........x..
001110: 44 49 52 20 45 52 41 20 54 59 50 45 53 41 56 45 DIR ERA TYPESAVE
001120: 52 45 4E 20 55 53 45 52 D0 16 04 00 00 00 21 10 REN USER......!.
001130: E1 0E 00 79 FE 06 D0 11 CE E5 06 04 1A BE C2 4F ...y...........O
001140: E1 13 23 05 C2 3C E1 1A FE 20 C2 54 E1 79 C9 23 ..#..<... .T.y.#
001150: 05 C2 4F E1 0C C3 33 E1 AF 32 07 DE 31 AB E5 C5 ..O...3..2..1...
001160: 79 1F 1F 1F 1F E6 0F 5F CD 15 DF CD B8 DE 32 AB y......_......2.
001170: E5 C1 79 E6 0F 32 EF E5 CD BD DE 3A 07 DE B7 C2 ..y..2.....:....
001180: 98 E1 31 AB E5 CD 98 DE CD D0 DF C6 41 CD 8C DE ..1.........A...
001190: 3E 3E CD 8C DE CD 39 DF 11 80 00 CD D8 DF CD D0 >>....9.........
0011A0: DF 32 EF E5 CD 5E E0 C4 09 E0 3A F0 E5 B7 C2 A5 .2...^....:.....
0011B0: E4 CD 2E E1 21 C1 E1 5F 16 00 19 19 7E 23 66 6F ....!.._....~#fo
0011C0: E9 77 E2 1F E3 5D E3 AD E3 10 E4 8E E4 A5 E4 21 .w...].........!
0011D0: F3 76 22 00 DE 21 00 DE E9 01 DF E1 C3 A7 DE 52 .v"..!.........R
0011E0: 45 41 44 20 45 52 52 4F 52 00 01 F0 E1 C3 A7 DE EAD ERROR.......
0011F0: 4E 4F 20 46 49 4C 45 00 CD 5E E0 3A F0 E5 B7 C2 NO FILE..^.:....
001200: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
001210: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
001220: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
001230: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
001240: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
001250: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
001260: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
001270: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
001280: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
001290: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0012A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0012B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0012C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0012D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0012E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0012F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
001300: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
001310: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
001320: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
001330: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
001340: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
001350: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
001360: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
001370: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
001380: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
001390: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0013A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0013B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0013C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0013D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0013E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0013F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
001400: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
001410: 01 00 01 00 02 09 52 E5 01 00 41 02 00 00 00 02 ......R...A.....
001420: 01 00 46 02 00 00 00 02 01 00 42 02 00 00 00 02 ..F.......B.....
001430: 01 00 47 02 00 00 00 02 01 00 43 02 00 00 00 02 ..G.......C.....
001440: 01 00 48 02 00 00 00 02 01 00 44 02 00 00 00 02 ..H.......D.....
001450: 01 00 49 02 00 00 00 02 01 00 45 02 00 00 00 02 ..I.......E.....
001460: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
001470: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
001480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
001490: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0014A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0014B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0014C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0014D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0014E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0014F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
001500: 09 E0 21 CE E5 01 0B 00 7E FE 20 CA 33 E2 23 D6 ..!.....~. .3.#.
001510: 30 FE 0A D2 09 E0 57 78 E6 E0 C2 09 E0 78 07 07 0.....Wx.....x..
001520: 07 80 DA 09 E0 80 DA 09 E0 82 DA 09 E0 47 0D C2 .............G..
001530: 08 E2 C9 7E FE 20 C2 09 E0 23 0D C2 33 E2 78 C9 ...~. ...#..3.x.
001540: 06 03 7E 12 23 13 05 C2 42 E2 C9 21 80 00 81 CD ..~.#...B..!....
001550: 59 E0 7E C9 AF 32 CD E5 3A F0 E5 B7 C8 3D 21 EF Y.~..2..:....=!.
001560: E5 BE C8 C3 BD DE 3A F0 E5 B7 C8 3D 21 EF E5 BE ......:....=!...
001570: C8 3A EF E5 C3 BD DE CD 5E E0 CD 54 E2 21 CE E5 .:......^..T.!..
001580: 7E FE 20 C2 8F E2 06 0B 36 3F 23 05 C2 88 E2 1E ~. .....6?#.....
001590: 00 D5 CD E9 DE CC EA E1 CA 1B E3 3A EE E5 0F 0F ...........:....
0015A0: 0F E6 60 4F 3E 0A CD 4B E2 17 DA 0F E3 D1 7B 1C ..`O>..K......{.
0015B0: D5 E6 03 F5 C2 CC E2 CD 98 DE C5 CD D0 DF C1 C6 ................
0015C0: 41 CD 92 DE 3E 3A CD 92 DE C3 D4 E2 CD A2 DE 3E A...>:.........>
0015D0: 3A CD 92 DE CD A2 DE 06 01 78 CD 4B E2 E6 7F FE :........x.K....
0015E0: 20 C2 F9 E2 F1 F5 FE 03 C2 F7 E2 3E 09 CD 4B E2 ..........>..K.
0015F0: E6 7F FE 20 CA 0E E3 3E 20 CD 92 DE 04 78 FE 0C ... ...> ....x..
001600: D2 0E E3 FE 09 C2 D9 E2 CD A2 DE C3 D9 E2 F1 CD ................
001610: C2 DF C2 1B E3 CD E4 DE C3 98 E2 D1 C3 86 E5 CD ................
001620: 5E E0 FE 0B C2 42 E3 01 52 E3 CD A7 DE CD 39 DF ^....B..R.....9.
001630: 21 07 DE 35 C2 82 E1 23 7E FE 59 C2 82 E1 23 22 !..5...#~.Y...#"
001640: 88 DE CD 54 E2 11 CD E5 CD EF DE 3C CC EA E1 C3 ...T.......<....
001650: 86 E5 41 4C 4C 20 28 59 2F 4E 29 3F 00 CD 5E E0 ..ALL (Y/N)?..^.
001660: C2 09 E0 CD 54 E2 CD D0 DE CA A7 E3 CD 98 DE 21 ....T..........!
001670: F1 E5 36 FF 21 F1 E5 7E FE 80 DA 87 E3 E5 CD FE ..6.!..~........
001680: DE E1 C2 A0 E3 AF 77 34 21 80 00 CD 59 E0 7E FE ......w4!...Y.~.
001690: 1A CA 86 E5 CD 8C DE CD C2 DF C2 86 E5 C3 74 E3 ..............t.
0016A0: 3D CA 86 E5 CD D9 E1 CD 66 E2 C3 09 E0 CD F8 E1 =.......f.......
0016B0: F5 CD 5E E0 C2 09 E0 CD 54 E2 11 CD E5 D5 CD EF ..^.....T.......
0016C0: DE D1 CD 09 DF CA FB E3 AF 32 ED E5 F1 6F 26 00 .........2...o&.
0016D0: 29 11 00 01 7C B5 CA F1 E3 2B E5 21 80 00 19 E5 )...|....+.!....
0016E0: CD D8 DF 11 CD E5 CD 04 DF D1 E1 C2 FB E3 C3 D4 ................
0016F0: E3 11 CD E5 CD DA DE 3C C2 01 E4 01 07 E4 CD A7 .......<........
001700: FF 22 EA F3 C9 2A C8 F3 EB 2A EA F3 23 22 EA F3 ."...*...*..#"..
001710: CD 95 EB D2 19 EC C3 FE EB 3A EA F3 E6 03 06 05 .........:......
001720: 87 05 C2 20 EC 32 E9 F3 B7 C0 C5 CD C3 E9 CD D4 ... .2..........
001730: EB C1 C3 9E EB 79 E6 07 3C 5F 57 79 0F 0F 0F E6 .....y..<_Wy....
001740: 1F 4F 78 87 87 87 87 87 B1 4F 78 0F 0F 0F E6 1F .Ox......Ox.....
001750: 47 2A BF F3 09 7E 07 1D C2 56 EC C9 D5 CD 35 EC G*...~...V....5.
001760: E6 FE C1 B1 0F 15 C2 64 EC 77 C9 CD 5E EB 11 10 .......d.w..^...
001770: 00 19 C5 0E 11 D1 0D C8 D5 3A DD F3 B7 CA 88 EC .........:......
001780: C5 E5 4E 06 00 C3 8E EC 0D C5 4E 23 46 E5 79 B0 ..N.......N#F.y.
001790: CA 9D EC 2A C6 F3 7D 91 7C 98 D4 5C EC E1 23 C1 ...*..}.|..\..#.
0017A0: C3 75 EC 2A C6 F3 0E 03 CD EA EA 23 44 4D 2A BF .u.*.......#DM*.
0017B0: F3 36 00 23 0B 78 B1 C2 B1 EC 2A CA F3 EB 2A BF .6.#.x....*...*.
0017C0: F3 73 23 72 CD A1 E9 2A B3 F3 36 03 23 36 00 CD .s#r...*..6.#6..
0017D0: FE EB 0E FF CD 05 EC CD F5 EB C8 CD 5E EB 3E E5 ............^.>.
0017E0: BE CA D2 EC 3A 41 E9 BE C2 F6 EC 23 7E D6 24 C2 ....:A.....#~.$.
0017F0: F6 EC 3D 32 45 E9 0E 01 CD 6B EC CD 8C EB C3 D2 ..=2E....k......
001800: EC 3A D4 F3 C3 01 E9 C5 F5 3A C5 F3 2F 47 79 A0 .:.......:../Gy.
001810: 4F F1 A0 91 E6 1F C1 C9 3E FF 32 D4 F3 21 D8 F3 O.......>.2..!..
001820: 71 2A 43 E9 22 D9 F3 CD FE EB CD A1 E9 0E 00 CD q*C."...........
001830: 05 EC CD F5 EB CA 94 ED 2A D9 F3 EB 1A FE E5 CA ........*.......
001840: 4A ED D5 CD 7F EB D1 D2 94 ED CD 5E EB 3A D8 F3 J..........^.:..
001850: 4F 06 00 79 B7 CA 83 ED 1A FE 3F CA 7C ED 78 FE O..y......?.|.x.
001860: 0D CA 7C ED FE 0C 1A CA 73 ED 96 E6 7F C2 2D ED ..|.....s.....-.
001870: C3 7C ED C5 4E CD 07 ED C1 C2 2D ED 13 23 04 0D .|..N.....-..#..
001880: C3 53 ED 3A EA F3 E6 03 32 45 E9 21 D4 F3 7E 17 .S.:....2E.!..~.
001890: D0 AF 77 C9 CD FE EB 3E FF C3 01 E9 CD 54 EB 0E ..w....>.....T..
0018A0: 0C CD 18 ED CD F5 EB C8 CD 44 EB CD 5E EB 36 E5 .........D..^.6.
0018B0: 0E 00 CD 6B EC CD C6 EB CD 2D ED C3 A4 ED 50 59 ...k.....-....PY
0018C0: 79 B0 CA D1 ED 0B D5 C5 CD 35 EC 1F D2 EC ED C1 y........5......
0018D0: D1 2A C6 F3 7B 95 7A 9C D2 F4 ED 13 C5 D5 42 4B .*..{.z.......BK
0018E0: CD 35 EC 1F D2 EC ED D1 C1 C3 C0 ED 17 3C CD 64 .5...........<.d
0018F0: EC E1 D1 C9 79 B0 C2 C0 ED 21 00 00 C9 0E 00 1E ....y....!......
001900: DE CD D5 DF C3 86 E5 4E 4F 20 53 50 41 43 45 00 .......NO SPACE.
001910: CD 5E E0 C2 09 E0 3A F0 E5 F5 CD 54 E2 CD E9 DE .^....:....T....
001920: C2 79 E4 21 CD E5 11 DD E5 06 10 CD 42 E2 2A 88 .y.!........B.*.
001930: DE EB CD 4F E0 FE 3D CA 3F E4 FE 5F C2 73 E4 EB ...O..=.?.._.s..
001940: 23 22 88 DE CD 5E E0 C2 73 E4 F1 47 21 F0 E5 7E #"...^..s..G!..~
001950: B7 CA 59 E4 B8 70 C2 73 E4 70 AF 32 CD E5 CD E9 ..Y..p.s.p.2....
001960: DE CA 6D E4 11 CD E5 CD 0E DF C3 86 E5 CD EA E1 ..m.............
001970: C3 86 E5 CD 66 E2 C3 09 E0 01 82 E4 CD A7 DE C3 ....f...........
001980: 86 E5 46 49 4C 45 20 45 58 49 53 54 53 00 CD F8 ..FILE EXISTS...
001990: E1 FE 10 D2 09 E0 5F 3A CE E5 FE 20 CA 09 E0 CD ......_:... ....
0019A0: 15 DF C3 89 E5 CD F5 DF 3A CE E5 FE 20 C2 C4 E4 ........:... ...
0019B0: 3A F0 E5 B7 CA 89 E5 3D 32 EF E5 CD 29 DF CD BD :......=2...)...
0019C0: DE C3 89 E5 11 D6 E5 1A FE 20 C2 09 E0 D5 CD 54 ......... .....T
0019D0: E2 D1 21 83 E5 CD 40 E2 CD D0 DE CA 6B E5 21 00 ..!...@.....k.!.
0019E0: 01 E5 EB CD D8 DF 11 CD E5 CD F9 DE C2 01 E5 E1 ................
0019F0: 11 80 00 19 11 00 DE 7D 93 7C 9A D2 71 E5 C3 E1 .......}.|..q...
001A00: E4 E1 3D C2 71 E5 CD 66 E2 CD 5E E0 21 F0 E5 E5 ..=.q..f..^.!...
001A10: 7E 32 CD E5 3E 10 CD 60 E0 E1 7E 32 DD E5 AF 32 ~2..>..`..~2...2
001A20: ED E5 11 5C 00 21 CD E5 06 21 CD 42 E2 21 08 DE ...\.!...!.B.!..
001A30: 7E B7 CA 3E E5 FE 20 CA 3E E5 23 C3 30 E5 06 00 ~..>.. .>.#.0...
001A40: 11 81 00 7E 12 B7 CA 4F E5 04 23 13 C3 43 E5 78 ...~...O..#..C.x
001A50: 32 80 00 CD 98 DE CD D5 DF CD 1A DF CD 00 01 31 2..............1
001A60: AB E5 CD 29 DF CD BD DE C3 82 E1 CD 66 E2 C3 09 ...)........f...
001A70: E0 01 7A E5 CD A7 DE C3 86 E5 42 41 44 20 4C 4F ..z.......BAD LO
001A80: 41 44 00 43 4F 4D CD 66 E2 CD 5E E0 3A CE E5 D6 AD.COM.f..^.:...
001A90: 20 21 F0 E5 B6 C2 09 E0 C3 82 E1 00 00 00 00 00 !..............
001AA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 24 24 24 .............$$$
001AB0: 20 20 20 20 20 53 55 42 00 00 00 00 00 00 00 00 SUB........
001AC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
001AD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
001AE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
001AF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
001B00: 20 D5 06 00 2A 43 E9 09 EB CD 5E EB C1 CD 4F E9 ...*C....^...O.
001B10: CD C3 E9 C3 C6 EB CD 54 EB 0E 0C CD 18 ED 2A 43 .......T......*C
001B20: E9 7E 11 10 00 19 77 CD F5 EB C8 CD 44 EB 0E 10 .~....w.....D...
001B30: 1E 0C CD 01 EE CD 2D ED C3 27 EE 0E 0C CD 18 ED ......-..'......
001B40: CD F5 EB C8 0E 00 1E 0C CD 01 EE CD 2D ED C3 40 ............-..@
001B50: EE 0E 0F CD 18 ED CD F5 EB C8 CD A6 EA 7E F5 E5 .............~..
001B60: CD 5E EB EB 2A 43 E9 0E 20 D5 CD 4F E9 CD 78 EB .^..*C.. ..O..x.
001B70: D1 21 0C 00 19 4E 21 0F 00 19 46 E1 F1 77 79 BE .!...N!...F..wy.
001B80: 78 CA 8B EE 3E 00 DA 8B EE 3E 80 2A 43 E9 11 0F x...>....>.*C...
001B90: 00 19 77 C9 7E 23 B6 2B C0 1A 77 13 23 1A 77 1B ..w.~#.+..w.#.w.
001BA0: 2B C9 AF 32 45 E9 32 EA F3 32 EB F3 CD 1E EB C0 +..2E.2..2......
001BB0: CD 69 EB E6 80 C0 0E 0F CD 18 ED CD F5 EB C8 01 .i..............
001BC0: 10 00 CD 5E EB 09 EB 2A 43 E9 09 0E 10 3A DD F3 ...^...*C....:..
001BD0: B7 CA E8 EE 7E B7 1A C2 DB EE 77 B7 C2 E1 EE 7E ....~.....w....~
001BE0: 12 BE C2 1F EF C3 FD EE CD 94 EE EB CD 94 EE EB ................
001BF0: 1A BE C2 1F EF 13 23 1A BE C2 1F EF 0D 13 23 0D ......#.......#.
001C00: C2 CD EE 01 EC FF 09 EB 09 1A BE DA 17 EF 77 01 ..............w.
001C10: 03 00 09 EB 09 7E 12 3E FF 32 D2 F3 C3 10 EE 21 .....~.>.2.....!
001C20: 45 E9 35 C9 CD 54 EB 2A 43 E9 E5 21 AC F3 22 43 E.5..T.*C..!.."C
001C30: E9 0E 01 CD 18 ED CD F5 EB E1 22 43 E9 C8 EB 21 .........."C...!
001C40: 0F 00 19 0E 11 AF 77 23 0D C2 46 EF 21 0D 00 19 ......w#..F.!...
001C50: 77 CD 8C EB CD FD ED C3 78 EB AF 32 D2 F3 CD A2 w.......x..2....
001C60: EE CD F5 EB C8 2A 43 E9 01 0C 00 09 7E 3C E6 1F .....*C.....~<..
001C70: 77 CA 83 EF 47 3A C5 F3 A0 21 D2 F3 A6 CA 8E EF w...G:...!......
001C80: C3 AC EF 01 02 00 09 34 7E E6 0F CA B6 EF 0E 0F .......4~.......
001C90: CD 18 ED CD F5 EB C2 AC EF 3A D3 F3 3C CA B6 EF .........:..<...
001CA0: CD 24 EF CD F5 EB CA B6 EF C3 AF EF CD 5A EE CD .$...........Z..
001CB0: BB EA AF C3 01 E9 CD 05 E9 C3 78 EB 3E 01 32 D5 ..........x.>.2.
001CC0: F3 3E FF 32 D3 F3 CD BB EA 3A E3 F3 21 E1 F3 BE .>.2.....:..!...
001CD0: DA E6 EF FE 80 C2 FB EF CD 5A EF AF 32 E3 F3 3A .........Z..2..:
001CE0: 45 E9 B7 C2 FB EF CD 77 EA CD 84 EA CA FB EF CD E......w........
001CF0: 8A EA CD D1 E9 CD B2 E9 C3 D2 EA C3 05 E9 3E 01 ..............>.
001D00: D0 16 04 00 00 00 C3 11 E6 99 E6 A5 E6 AB E6 B1 ................
001D10: E6 EB 22 43 E9 EB 7B 32 D6 F3 21 00 00 22 45 E9 .."C..{2..!.."E.
001D20: 39 22 0F E9 31 41 E9 AF 32 E0 F3 32 DE F3 21 74 9"..1A..2..2..!t
001D30: F3 E5 79 FE 29 D0 4B 21 47 E6 5F 16 00 19 19 5E ..y.).K!G._....^
001D40: 23 56 2A 43 E9 EB E9 03 F4 C8 E8 90 E7 CE E8 12 #V*C............
001D50: F4 0F F4 D4 E8 ED E8 F3 E8 F8 E8 E1 E7 FE E8 7E ...............~
001D60: F2 83 F2 45 F2 9C F2 A5 F2 AB F2 C8 F2 D7 F2 E0 ...E............
001D70: F2 E6 F2 EC F2 F5 F2 FE F2 04 F3 0A F3 11 F3 2C ...............,
001D80: EB 17 F3 1D F3 26 F3 2D F3 41 F3 47 F3 4D F3 0E .....&.-.A.G.M..
001D90: F2 53 F3 04 E9 04 E9 9B F3 21 CA E6 CD E5 E6 FE .S.......!......
001DA0: 03 CA 00 00 C9 21 D5 E6 C3 B4 E6 21 E1 E6 C3 B4 .....!.....!....
001DB0: E6 21 DC E6 CD E5 E6 C3 00 00 42 64 6F 73 20 45 .!........Bdos E
001DC0: 72 72 20 4F 6E 20 20 3A 20 24 42 61 64 20 53 65 rr On : $Bad Se
001DD0: 63 74 6F 72 24 53 65 6C 65 63 74 24 46 69 6C 65 ctor$Select$File
001DE0: 20 52 2F 4F 24 E5 CD C9 E7 3A 42 E9 C6 41 32 C6 R/O$....:B..A2.
001DF0: E6 01 BA E6 CD D3 E7 C1 CD D3 E7 21 0E E9 7E 36 ...........!..~6
001E00: 00 B7 C0 C3 09 F4 CD FB E6 CD 14 E7 D8 F5 4F CD ..............O.
001E10: 90 E7 F1 C9 FE 0D C8 FE 0A C8 FE 09 C8 FE 08 C8 ................
001E20: FE 20 C9 3A 0E E9 B7 C2 45 E7 CD 06 F4 E6 01 C8 . .:....E.......
001E30: CD 09 F4 FE 13 C2 42 E7 CD 09 F4 FE 03 CA 00 00 ......B.........
001E40: AF C9 32 0E E9 3E 01 C9 3A 0A E9 B7 C2 62 E7 C5 ..2..>..:....b..
001E50: CD 2A E7 C1 C5 CD 0C F4 C1 C5 3A 0D E9 B7 C4 0F .*........:.....
001E60: F4 C1 79 21 0C E9 FE 7F C8 34 FE 20 D0 35 7E B7 ..y!.....4. .5~.
001E70: C8 79 FE 08 C2 79 E7 35 C9 FE 0A C0 36 00 C9 79 .y...y.5....6..y
001E80: CD 14 E7 D2 90 E7 F5 0E 5E CD 48 E7 F1 F6 40 4F ........^.H...@O
001E90: 79 FE 09 C2 48 E7 0E 20 CD 48 E7 3A 0C E9 E6 07 y...H.. .H.:....
001EA0: C2 96 E7 C9 CD AC E7 0E 20 CD 0C F4 0E 08 C3 0C ........ .......
001EB0: F4 0E 23 CD 48 E7 CD C9 E7 3A 0C E9 21 0B E9 BE ..#.H....:..!...
001EC0: D0 0E 20 CD 48 E7 C3 B9 E7 0E 0D CD 48 E7 0E 0A .. .H.......H...
001ED0: C3 48 E7 0A FE 24 C8 03 C5 4F CD 90 E7 C1 C3 D3 .H...$...O......
001EE0: E7 3A 0C E9 32 0B E9 2A 43 E9 4E 23 E5 06 00 C5 .:..2..*C.N#....
001EF0: E5 CD FB E6 E6 7F E1 C1 FE 0D CA C1 E8 FE 0A CA ................
001F00: 32 D5 F3 3E 00 32 D3 F3 CD 54 EB 2A 43 E9 CD 47 2..>.2...T.*C..G
001F10: EB CD BB EA 3A E3 F3 FE 80 D2 05 E9 CD 77 EA CD ....:........w..
001F20: 84 EA 0E 00 C2 6E F0 CD 3E EA 32 D7 F3 01 00 00 .....n..>.2.....
001F30: B7 CA 3B F0 4F 0B CD 5E EA 44 4D CD BE ED 7D B4 ..;.O..^.DM...}.
001F40: C2 48 F0 3E 02 C3 01 E9 22 E5 F3 EB 2A 43 E9 01 .H.>...."...*C..
001F50: 10 00 09 3A DD F3 B7 3A D7 F3 CA 64 F0 CD 64 EB ...:...:...d..d.
001F60: 73 C3 6C F0 4F 06 00 09 09 73 23 72 0E 02 3A 45 s.l.O....s#r..:E
001F70: E9 B7 C0 C5 CD 8A EA 3A D5 F3 3D 3D C2 BB F0 C1 .......:..==....
001F80: C5 79 3D 3D C2 BB F0 E5 2A B9 F3 57 77 23 14 F2 .y==....*..Ww#..
001F90: 8C F0 CD E0 EB 2A E7 F3 0E 02 22 E5 F3 C5 CD D1 .....*....".....
001FA0: E9 C1 CD B8 E9 2A E5 F3 0E 00 3A C4 F3 47 A5 B8 .....*....:..G..
001FB0: 23 C2 9A F0 E1 22 E5 F3 CD DA EB CD D1 E9 C1 C5 #...."..........
001FC0: CD B8 E9 C1 3A E3 F3 21 E1 F3 BE DA D2 F0 77 34 ....:..!......w4
001FD0: 0E 02 00 00 21 00 DE F5 CD 69 EB E6 7F 77 F1 FE ....!....i...w..
001FE0: 7F C2 00 F1 3A D5 F3 FE 01 C2 00 F1 CD D2 EA CD ....:...........
001FF0: 5A EF 21 45 E9 7E B7 C2 FE F0 3D 32 E3 F3 36 00 Z.!E.~....=2..6.
002000: C3 D2 EA AF 32 D5 F3 C5 2A 43 E9 EB 21 21 00 19 ....2...*C..!!..
002010: 7E E6 7F F5 7E 17 23 7E 17 E6 1F 4F 7E 1F 1F 1F ~...~.#~...O~...
002020: 1F E6 0F 47 F1 23 6E 2C 2D 2E 06 C2 8B F1 21 20 ...G.#n,-.....!
002030: 00 19 77 21 0C 00 19 79 96 C2 47 F1 21 0E 00 19 ..w!...y..G.!...
002040: 78 96 E6 7F CA 7F F1 C5 D5 CD A2 EE D1 C1 2E 03 x...............
002050: 3A 45 E9 3C CA 84 F1 21 0C 00 19 71 21 0E 00 19 :E.<...!...q!...
002060: 70 CD 51 EE 3A 45 E9 3C C2 7F F1 C1 C5 2E 04 0C p.Q.:E.<........
002070: CA 84 F1 CD 24 EF 2E 05 3A 45 E9 3C CA 84 F1 C1 ....$...:E.<....
002080: AF C3 01 E9 E5 CD 69 EB 36 C0 E1 C1 7D 32 45 E9 ......i.6...}2E.
002090: C3 78 EB 0E FF CD 03 F1 CC C1 EF C9 0E 00 CD 03 .x..............
0020A0: F1 CC 03 F0 C9 EB 19 4E 06 00 21 0C 00 19 7E 0F .......N..!...~.
0020B0: E6 80 81 4F 3E 00 88 47 7E 0F E6 0F 80 47 21 0E ...O>..G~....G!.
0020C0: 00 19 7E 87 87 87 87 F5 80 47 F5 E1 7D E1 B5 E6 ..~......G..}...
0020D0: 01 C9 0E 0C CD 18 ED 2A 43 E9 11 21 00 19 E5 72 .......*C..!...r
0020E0: 23 72 23 72 CD F5 EB CA 0C F2 CD 5E EB 11 0F 00 #r#r.......^....
0020F0: CD A5 F1 E1 E5 5F 79 96 23 78 9E 23 7B 9E DA 06 ....._y.#x.#{...
002100: C1 E8 FE 08 C2 16 E8 78 B7 CA EF E7 05 3A 0C E9 .......x.....:..
002110: 32 0A E9 C3 70 E8 FE 7F C2 26 E8 3E 08 C3 07 E8 2...p....&.>....
002120: 7E 05 2B C3 A9 E8 FE 05 C2 37 E8 C5 E5 CD C9 E7 ~.+......7......
002130: AF 32 0B E9 C3 F1 E7 FE 10 C2 48 E8 E5 21 0D E9 .2........H..!..
002140: 3E 01 96 77 E1 C3 EF E7 FE 18 C2 5F E8 E1 3A 0B >..w......._..:.
002150: E9 21 0C E9 BE D2 E1 E7 35 CD A4 E7 C3 4E E8 FE .!......5....N..
002160: 15 C2 6B E8 CD B1 E7 E1 C3 E1 E7 FE 12 C2 A6 E8 ..k.............
002170: C5 CD B1 E7 C1 E1 E5 C5 78 B7 CA 8A E8 23 4E 05 ........x....#N.
002180: C5 E5 CD 7F E7 E1 C1 C3 78 E8 E5 3A 0A E9 B7 CA ........x..:....
002190: F1 E7 21 0C E9 96 32 0A E9 CD A4 E7 21 0A E9 35 ..!...2.....!..5
0021A0: C2 99 E8 C3 F1 E7 23 77 04 C5 E5 4F CD 7F E7 E1 ......#w...O....
0021B0: C1 7E FE 03 78 C2 BD E8 FE 01 CA 00 00 B9 DA EF .~..x...........
0021C0: E7 E1 70 0E 0D C3 48 E7 CD 06 E7 C3 01 E9 CD 15 ..p...H.........
0021D0: F4 C3 01 E9 79 3C CA E0 E8 3C CA 06 F4 C3 0C F4 ....y<...<......
0021E0: CD 06 F4 B7 CA 91 F3 CD 09 F4 C3 01 E9 3A 03 00 .............:..
0021F0: C3 01 E9 21 03 00 71 C9 EB 4D 44 C3 D3 E7 CD 23 ...!..q..MD....#
002200: E7 32 45 E9 C9 3E 01 C3 01 E9 00 00 00 00 00 00 .2E..>..........
002210: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
002220: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
002230: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
002240: 00 00 00 00 00 00 00 21 0B E6 5E 23 56 EB E9 0C .......!..^#V...
002250: 0D C8 1A 77 13 23 C3 50 E9 3A 42 E9 4F CD 1B F4 ...w.#.P.:B.O...
002260: 7C B5 C8 5E 23 56 23 22 B3 F3 23 23 22 B5 F3 23 |..^#V#"..##"..#
002270: 23 22 B7 F3 23 23 EB 22 D0 F3 21 B9 F3 0E 08 CD #"..##."..!.....
002280: 4F E9 2A BB F3 EB 21 C1 F3 0E 0F CD 4F E9 2A C6 O.*...!.....O.*.
002290: F3 7C 21 DD F3 36 FF B7 CA 9D E9 36 00 3E FF B7 .|!..6.....6.>..
0022A0: C9 CD 18 F4 AF 2A B5 F3 77 23 77 2A B7 F3 77 23 .....*..w#w*..w#
0022B0: 77 C9 CD 27 F4 C3 BB E9 CD 2A F4 B7 C8 21 09 E6 w..'.....*...!..
0022C0: C3 4A E9 2A EA F3 0E 02 CD EA EA 22 E5 F3 22 EC .J.*......."..".
0022D0: F3 21 E5 F3 4E 23 46 2A B7 F3 5E 23 56 2A B5 F3 .!..N#F*..^#V*..
0022E0: 7E 23 66 6F 79 93 78 9A D2 FA E9 E5 2A C1 F3 7B ~#foy.x.....*..{
0022F0: 95 5F 7A 9C 57 E1 2B C3 E4 E9 E5 2A C1 F3 19 DA ._z.W.+....*....
002300: F2 73 2B 70 2B 71 CD 2D ED C3 E4 F1 E1 C9 2A 43 .s+p+q.-......*C
002310: E9 11 20 00 CD A5 F1 21 21 00 19 71 23 70 23 77 .. ....!!..q#p#w
002320: C9 2A AF F3 3A 42 E9 4F CD EA EA E5 EB CD 59 E9 .*..:B.O......Y.
002330: E1 CC 47 E9 7D 1F D8 2A AF F3 4D 44 CD 0B EB 22 ..G.}..*..MD..."
002340: AF F3 C3 A3 EC 3A D6 F3 21 42 E9 BE C8 77 C3 21 ...£.:..!B...w.!
002350: F2 3E FF 32 DE F3 2A 43 E9 7E E6 1F 3D 32 D6 F3 .>.2..*C.~..=2..
002360: FE 1E D2 75 F2 3A 42 E9 32 DF F3 7E 32 E0 F3 E6 ...u.:B.2..~2...
002370: E0 77 CD 45 F2 3A 41 E9 2A 43 E9 B6 77 C9 3E 22 .w.E.:A.*C..w.>"
002380: C3 01 E9 21 00 00 22 AD F3 22 AF F3 AF 32 42 E9 ...!..".."...2B.
002390: 21 80 00 22 B1 F3 CD DA EB C3 21 F2 CD 72 EB CD !.."......!..r..
0023A0: 51 F2 C3 51 EE CD 51 F2 C3 A2 EE 0E 00 EB 7E FE Q..Q..Q.......~.
0023B0: 3F CA C2 F2 CD A6 EA 7E FE 3F C4 72 EB CD 51 F2 ?......~.?.r..Q.
0023C0: 0E 0F CD 18 ED C3 E9 EB 2A D9 F3 22 43 E9 CD 51 ........*.."C..Q
0023D0: F2 CD 2D ED C3 E9 EB CD 51 F2 CD 9C ED C3 01 ED ..-.....Q.......
0023E0: CD 51 F2 C3 BC EF CD 51 F2 C3 FE EF CD 72 EB CD .Q.....Q.....r..
0023F0: 51 F2 C3 24 EF CD 51 F2 CD 16 EE C3 01 ED 2A AF Q..$..Q.......*.
002400: F3 C3 29 F3 3A 42 E9 C3 01 E9 EB 22 B1 F3 C3 DA ..).:B....."....
002410: EB 2A BF F3 C3 29 F3 2A AD F3 C3 29 F3 CD 51 F2 .*...).*...)..Q.
002420: CD 3B EE C3 01 ED 2A BB F3 22 45 E9 C9 3A D6 F3 .;....*.."E..:..
002430: FE FF C2 3B F3 3A 41 E9 C3 01 E9 E6 1F 32 41 E9 ...;.:A......2A.
002440: C9 CD 51 F2 C3 93 F1 CD 51 F2 C3 9C F1 CD 51 F2 ..Q.....Q.....Q.
002450: C3 D2 F1 2A 43 E9 7D 2F 5F 7C 2F 2A AF F3 A4 57 ...*C.}/_|/*...W
002460: 7D A3 5F 2A AD F3 EB 22 AF F3 7D A3 6F 7C A2 67 }£_*..."..}£o|.g
002470: 22 AD F3 C9 3A DE F3 B7 CA 91 F3 2A 43 E9 36 00 "...:......*C.6.
002480: 3A E0 F3 B7 CA 91 F3 77 3A DF F3 32 D6 F3 CD 45 :......w:..2...E
002490: F2 2A 0F E9 F9 2A 45 E9 7D 44 C9 CD 51 F2 3E 02 .*...*E.}D..Q.>.
0024A0: 32 D5 F3 0E 00 CD 07 F1 CC 03 F0 C9 E5 00 00 00 2...............
0024B0: 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0024C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0024D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0024E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0024F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
002500: 0F EA 79 95 78 9C DA 0F EA EB E1 23 C3 FA E9 E1 ..y.x......#....
002510: C5 D5 E5 EB 2A CE F3 19 44 4D CD 1E F4 D1 2A B5 ....*...DM....*.
002520: F3 73 23 72 D1 2A B7 F3 73 23 72 C1 79 93 4F 78 .s#r.*..s#r.y.Ox
002530: 9A 47 2A D0 F3 EB CD 30 F4 4D 44 C3 21 F4 21 C3 .G*....0.MD.!.!.
002540: F3 4E 3A E3 F3 B7 1F 0D C2 45 EA 47 3E 08 96 4F .N:......E.G>..O
002550: 3A E2 F3 0D CA 5C EA B7 17 C3 53 EA 80 C9 2A 43 :....\....S...*C
002560: E9 11 10 00 19 09 3A DD F3 B7 CA 71 EA 6E 26 00 ......:....q.n&.
002570: C9 09 5E 23 56 EB C9 CD 3E EA 4F 06 00 CD 5E EA ..^#V...>.O...^.
002580: 22 E5 F3 C9 2A E5 F3 7D B4 C9 3A C3 F3 2A E5 F3 "...*..}..:..*..
002590: 29 3D C2 90 EA 22 E7 F3 3A C4 F3 4F 3A E3 F3 A1 )=..."..:..O:...
0025A0: B5 6F 22 E5 F3 C9 2A 43 E9 11 0C 00 19 C9 2A 43 .o"...*C......*C
0025B0: E9 11 0F 00 19 EB 21 11 00 19 C9 CD AE EA 7E 32 ......!.......~2
0025C0: E3 F3 EB 7E 32 E1 F3 CD A6 EA 3A C5 F3 A6 32 E2 ...~2.....:...2.
0025D0: F3 C9 CD AE EA 3A D5 F3 FE 02 C2 DE EA AF 4F 3A .....:........O:
0025E0: E3 F3 81 77 EB 3A E1 F3 77 C9 0C 0D C8 7C B7 1F ...w.:..w....|..
0025F0: 67 7D 1F 6F C3 EB EA 0E 80 2A B9 F3 AF 86 23 0D g}.o.....*....#.
002600: C2 FD EA C9 0C 0D C8 29 C3 05 EB C5 3A 42 E9 4F .......)....:B.O
002610: 21 01 00 CD 04 EB C1 79 B5 6F 78 B4 67 C9 2A AD !......y.ox.g.*.
002620: F3 3A 42 E9 4F CD EA EA 7D E6 01 C9 21 AD F3 4E .:B.O...}...!..N
002630: 23 46 CD 0B EB 22 AD F3 2A C8 F3 23 EB 2A B3 F3 #F..."..*..#.*..
002640: 73 23 72 C9 CD 5E EB 11 09 00 19 7E 17 D0 21 0F s#r..^.....~..!.
002650: E6 C3 4A E9 CD 1E EB C8 21 0D E6 C3 4A E9 2A B9 ..J.....!...J.*.
002660: F3 3A E9 F3 85 6F D0 24 C9 2A 43 E9 11 0E 00 19 .:...o.$.*C.....
002670: 7E C9 CD 69 EB 36 00 C9 CD 69 EB F6 80 77 C9 2A ~..i.6...i...w.*
002680: EA F3 EB 2A B3 F3 7B 96 23 7A 9E C9 CD 7F EB D8 ...*..{.#z......
002690: 13 72 2B 73 C9 7B 95 6F 7A 9C 67 C9 0E FF 2A EC .r+s.{.oz.g...*.
0026A0: F3 EB 2A CC F3 CD 95 EB D0 C5 CD F7 EA 2A BD F3 ..*..........*..
0026B0: EB 2A EC F3 19 C1 0C CA C4 EB BE C8 CD 7F EB D0 .*..............
0026C0: CD 2C EB C9 77 C9 CD 9C EB CD E0 EB 0E 01 CD B8 .,..w...........
0026D0: E9 C3 DA EB CD E0 EB CD B2 E9 21 B1 F3 C3 E3 EB ..........!.....
0026E0: 21 B9 F3 4E 23 46 C3 24 F4 2A B9 F3 EB 2A B1 F3 !..N#F.$.*...*..
0026F0: 0E 80 C3 4F E9 21 EA F3 7E 23 BE C0 3C C9 21 FF ...O.!..~#..<.!.
002700: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
002710: 02 00 01 00 02 09 52 E5 02 00 41 02 00 00 00 02 ......R...A.....
002720: 02 00 46 02 00 00 00 02 02 00 42 02 00 00 00 02 ..F.......B.....
002730: 02 00 47 02 00 00 00 02 02 00 43 02 00 00 00 02 ..G.......C.....
002740: 02 00 48 02 00 00 00 02 02 00 44 02 00 00 00 02 ..H.......D.....
002750: 02 00 49 02 00 00 00 02 02 00 45 02 00 00 00 02 ..I.......E.....
002760: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
002770: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
002780: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
002790: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0027A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0027B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0027C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0027D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0027E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0027F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
002800: E5 50 49 50 20 20 20 20 20 43 4F 4D 00 00 00 3A .PIP COM...:
002810: 02 03 04 05 06 07 08 09 00 00 00 00 00 00 00 00 ................
002820: 00 43 43 20 20 20 20 20 20 41 52 43 00 00 00 80 .CC ARC....
002830: 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 ................
002840: 00 43 43 20 20 20 20 20 20 41 52 43 01 00 00 80 .CC ARC....
002850: 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 ...... !"#$%&'()
002860: 00 43 43 20 20 20 20 20 20 41 52 43 02 00 00 80 .CC ARC....
002870: 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 *+,-./0123456789
002880: 00 43 43 20 20 20 20 20 20 41 52 43 03 00 00 80 .CC ARC....
002890: 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 :;<=>?@ABCDEFGHI
0028A0: 00 43 43 20 20 20 20 20 20 41 52 43 04 00 00 15 .CC ARC....
0028B0: 4A 4B 4C 00 00 00 00 00 00 00 00 00 00 00 00 00 JKL.............
0028C0: 00 43 4C 49 42 20 20 20 20 41 52 43 00 00 00 80 .CLIB ARC....
0028D0: 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C MNOPQRSTUVWXYZ[\
0028E0: 00 43 4C 49 42 20 20 20 20 41 52 43 01 00 00 80 .CLIB ARC....
0028F0: 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C ]^_`abcdefghijkl
002900: 00 43 4C 49 42 20 20 20 20 41 52 43 02 00 00 80 .CLIB ARC....
002910: 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C mnopqrstuvwxyz{|
002920: 00 43 4C 49 42 20 20 20 20 41 52 43 03 00 00 58 .CLIB ARC...X
002930: 7D 7E 7F 80 81 82 83 84 85 86 87 00 00 00 00 00 }~..............
002940: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002950: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002960: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002970: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002980: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002990: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0029A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0029B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0029C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0029D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0029E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0029F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002A00: 41 42 4F 52 54 45 44 24 42 41 44 20 50 41 52 41 ABORTED$BAD PARA
002A10: 4D 45 54 45 52 24 49 4E 56 41 4C 49 44 20 55 53 METER$INVALID US
002A20: 45 52 20 4E 55 4D 42 45 52 24 52 45 43 4F 52 44 ER NUMBER$RECORD
002A30: 20 54 4F 4F 20 4C 4F 4E 47 24 49 4E 56 41 4C 49 TOO LONG$INVALI
002A40: 44 20 44 49 47 49 54 24 45 4E 44 20 4F 46 20 46 D DIGIT$END OF F
002A50: 49 4C 45 2C 20 43 54 4C 2D 5A 3F 24 43 48 45 43 ILE, CTL-Z?$CHEC
002A60: 4B 53 55 4D 20 45 52 52 4F 52 24 43 4F 52 52 45 KSUM ERROR$CORRE
002A70: 43 54 20 45 52 52 4F 52 2C 20 54 59 50 45 20 52 CT ERROR, TYPE R
002A80: 45 54 55 52 4E 20 4F 52 20 43 54 4C 2D 5A 24 49 ETURN OR CTL-Z$I
002A90: 4E 56 41 4C 49 44 20 46 4F 52 4D 41 54 24 48 45 NVALID FORMAT$HE
002AA0: 58 24 24 24 24 4E 4F 20 44 49 52 45 43 54 4F 52 X$$$$NO DIRECTOR
002AB0: 59 20 53 50 41 43 45 24 4E 4F 20 46 49 4C 45 24 Y SPACE$NO FILE$
002AC0: 43 4F 4D 24 53 54 41 52 54 20 4E 4F 54 20 46 4F COM$START NOT FO
002AD0: 55 4E 44 24 51 55 49 54 20 4E 4F 54 20 46 4F 55 UND$QUIT NOT FOU
002AE0: 4E 44 24 43 41 4E 4E 4F 54 20 43 4C 4F 53 45 20 ND$CANNOT CLOSE
002AF0: 44 45 53 54 49 4E 41 54 49 4F 4E 20 46 49 4C 45 DESTINATION FILE
002B00: 24 44 45 53 54 49 4E 41 54 49 4F 4E 20 49 53 20 $DESTINATION IS
002B10: 52 2F 4F 2C 20 44 45 4C 45 54 45 20 28 59 2F 4E R/O, DELETE (Y/N
002B20: 29 3F 24 2A 2A 4E 4F 54 20 44 45 4C 45 54 45 44 )?$**NOT DELETED
002B30: 2A 2A 24 24 24 24 24 24 24 4E 4F 54 20 46 4F 55 **$$$$$$$NOT FOU
002B40: 4E 44 24 43 4F 50 59 49 4E 47 20 2D 24 52 45 51 ND$COPYING -$REQ
002B50: 55 49 52 45 53 20 43 50 2F 4D 20 32 2E 30 20 4F UIRES CP/M 2.0 O
002B60: 52 20 4E 45 57 45 52 20 46 4F 52 20 4F 50 45 52 R NEWER FOR OPER
002B70: 41 54 49 4F 4E 2E 24 55 4E 52 45 43 4F 47 4E 49 ATION.$UNRECOGNI
002B80: 5A 45 44 20 44 45 53 54 49 4E 41 54 49 4F 4E 24 ZED DESTINATION$
002B90: 43 41 4E 4E 4F 54 20 57 52 49 54 45 24 49 4E 56 CANNOT WRITE$INV
002BA0: 41 4C 49 44 20 50 49 50 20 46 4F 52 4D 41 54 24 ALID PIP FORMAT$
002BB0: 43 41 4E 4E 4F 54 20 52 45 41 44 24 49 4E 56 41 CANNOT READ$INVA
002BC0: 4C 49 44 20 53 45 50 41 52 41 54 4F 52 24 31 F2 LID SEPARATOR$1.
002BD0: 1D 01 80 00 C5 1E 80 01 CC 1E CD 18 0A 3A CC 1E .............:..
002BE0: D6 00 D6 01 9F 32 A5 1E CD 4C 08 EB 3E 20 CD 84 .....2...L..> ..
002BF0: 1D D2 FD 04 01 4D 04 CD 39 08 CD 00 00 CD 16 09 .....M..9.......
002C00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002C10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002C20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002C30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002C40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002C50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002C60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002C70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002C80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002C90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002CA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002CB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002CC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002CD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002CE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002CF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002D00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002D10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002D20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002D30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002D40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002D50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002D60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002D70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002D80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002D90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002DA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002DB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002DC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002DD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002DE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002DF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
002E00: 32 C0 1E 11 00 00 0E 19 CD 05 00 32 FC 1D 31 F2 2..........2..1.
002E10: 1D CD 40 1A 3A C0 1E 32 C1 1E 21 6F 1F 36 00 2B ..@.:..2..!o.6.+
002E20: 36 00 2B 36 00 21 A6 1E 36 01 23 36 00 21 F3 1D 6.+6.!..6.#6.!..
002E30: 36 00 23 36 FE 3A A5 1E 1F D2 47 05 0E 2A CD 1C 6.#6.:....G..*..
002E40: 08 CD 6F 09 CD 2E 08 21 4E 1F 36 FF 3A CC 1E FE ..o....!N.6.:...
002E50: 00 C2 5E 05 2A FC 1D 4D CD 5E 08 CD 00 00 21 4B ..^.*..M.^....!K
002E60: 1E 36 00 21 03 1E 36 00 21 A4 1E 36 00 2B 36 00 .6.!..6.!..6.+6.
002E70: 01 27 1E CD 20 12 3A A9 1E FE 03 C2 81 05 C3 24 .'.. .:........$
002E80: 06 3A A9 1E FE 04 C2 C3 05 3A 94 1F 3D 32 4B 1E .:.......:..=2K.
002E90: CD 0C 1D 01 06 1E CD 20 12 3A A9 1E FE 02 CA A4 ....... .:......
002EA0: 05 CD 5C 18 3A F5 1D 1F D2 B7 05 01 5C 00 CD EE ..\.:.......\...
002EB0: 1C CD 78 1B C3 C0 05 01 27 1E CD EE 1C CD B2 1A ..x.....'.......
002EC0: C3 DB 07 3A A9 1E D6 02 C6 FF 9F 21 F5 1D B6 1F ...:.......!....
002ED0: D2 D6 05 CD 5C 18 CD A2 1C CD 0C 1D 01 06 1E CD ....\...........
002EE0: 20 12 3A A9 1E FE 04 C2 05 06 CD 88 1C CD C6 1C .:.............
002EF0: 01 27 1E C5 1E 21 01 06 1E CD 18 0A CD DF 1C CD .'...!..........
002F00: B2 1A C3 DB 07 3A A9 1E FE 02 C2 24 06 CD 11 12 .....:.....$....
002F10: 3A A8 1E FE 0D CA 1B 06 C3 24 06 CD 88 1C CD B2 :........$......
002F20: 1A C3 DB 07 21 4E 1F 36 FF 01 27 1E CD 20 12 3A ....!N.6..'.. .:
002F30: A9 1E D6 02 9F 21 F5 1D B6 1F D2 43 06 01 77 04 .....!.....C..w.
002F40: CD AF 09 21 05 1E 36 00 3A A9 1E FE 02 C2 5E 06 ...!..6.:.....^.
002F50: CD A2 1C CD 63 18 21 A8 1E 36 FF C3 7B 06 3A A8 ....c.!..6..{.:.
002F60: 1E D6 13 9F 2F F5 3E 05 21 A8 1E 96 9F 2F C1 48 ..../.>.!..../.H
002F70: B1 1F D2 7B 06 01 90 04 CD AF 09 3A A8 1E 3C 32 ...{.......:..<2
002F80: A3 1E FE 0F C2 8A 06 CD CF 15 01 06 1E CD 20 12 £............. .
002F90: 3A A9 1E D6 01 C6 FF 9F F5 3A A8 1E D6 3D C6 FF :........:...=..
002FA0: 9F C1 48 B1 1F D2 AE 06 01 9D 04 CD AF 09 21 A7 ..H...........!.
002FB0: 1F 36 01 3A A7 1F 1F D2 BE 07 3A C0 1E 32 C1 1E .6.:......:..2..
002FC0: 01 06 1E CD 20 12 21 04 1E 36 00 3A A9 1E D6 02 .... .!..6.:....
002FD0: D6 01 9F F5 3A F5 1D 2F C1 48 A1 1F D2 ED 06 CD ....:../.H......
002FE0: 88 1C CD BE 18 21 A8 1E 36 FF C3 13 07 3A A9 1E .....!..6....:..
002FF0: D6 03 C6 FF 9F F5 3E 0A 21 A8 1E 96 9F 2F F5 3E ......>.!..../.>
003000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0030A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0030B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0030C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0030D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0030E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0030F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0031A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0031B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0031C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0031D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0031E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0031F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003200: 05 96 9F C1 48 A1 C1 48 B1 1F D2 13 07 01 B0 04 ....H..H........
003210: CD AF 09 3A 5E 1F 21 04 1E B6 77 3A A8 1E 3C 32 ...:^.!...w:..<2
003220: A4 1E 3A A8 1E FE 13 C2 30 07 CD CF 15 C3 7D 07 ..:.....0.....}.
003230: 3A A8 1E FE 14 C2 40 07 0E 1A CD 45 0E C3 7D 07 :.....@....E..}.
003240: 3A A8 1E D6 05 9F 21 05 1E A6 1F D2 53 07 21 57 :.....!.....S.!W
003250: 1F 36 01 3A A3 1E FE 0A C2 7A 07 21 5D 1F 36 01 .6.:£....z.!].6.
003260: 3A 63 1F FE 00 C2 6D 07 21 63 1F 36 08 3A 5F 1F :c....m.!c.6.:_.
003270: FE 00 C2 7A 07 21 5F 1F 36 01 CD 6C 1A CD 12 19 ...z.!_.6..l....
003280: 01 06 1E CD 20 12 3A A9 1E D6 01 C6 FF 9F F5 3A .... .:........:
003290: A8 1E D6 2C C6 FF 9F F5 3A A8 1E D6 0D C6 FF 9F ...,....:.......
0032A0: C1 48 A1 C1 48 B1 1F D2 B0 07 01 BC 04 CD AF 09 .H..H...........
0032B0: 3A A8 1E D6 0D C6 FF 9F 32 A7 1F C3 B3 06 3A A3 :.......2.....:£
0032C0: 1E FE 0F C2 CE 07 0E 1A CD 45 0E CD CF 15 3A A3 .........E....:£
0032D0: 1E FE 00 C2 DB 07 0E 00 CD 31 19 3A A5 1E 32 CC .........1.:..2.
0032E0: 1E C3 14 05 FB 76 21 F2 1D 71 21 F2 07 E5 2A 38 .....v!..q!...*8
0032F0: 02 E9 C9 21 FB 07 E5 2A 36 02 E9 3A 09 01 C9 3E ...!...*6..:...>
003300: FA CD A6 1D 3E FA CD A6 1D C9 11 00 00 0E 03 CD ....>...........
003310: 05 00 C9 11 00 00 0E 01 CD 05 00 C9 21 AB 1E 71 ............!..q
003320: 3A AB 1E E6 7F 5F 16 00 0E 02 CD 05 00 C9 0E 0D :...._..........
003330: CD 1C 08 0E 0A CD 1C 08 C9 21 AD 1E 70 2B 71 CD .........!..p+q.
003340: 2E 08 2A AC 1E EB 0E 09 CD 05 00 C9 11 00 00 0E ..*.............
003350: 0C CD 05 00 C9 11 00 00 0E 0D CD 05 00 C9 21 AF ..............!.
003360: 1E 71 2A AF 1E 26 00 EB 0E 0E CD 05 00 C9 21 B1 .q*..&........!.
003370: 1E 70 2B 71 2A B0 1E EB 0E 0F CD 05 00 32 AE 1E .p+q*........2..
003380: C9 21 B3 1E 70 2B 71 2A B2 1E EB 0E 10 CD 05 00 .!..p+q*........
003390: 32 AE 1E C9 21 B5 1E 70 2B 71 2A B4 1E EB 0E 11 2...!..p+q*.....
0033A0: CD 05 00 32 AE 1E C9 11 00 00 0E 12 CD 05 00 32 ...2...........2
0033B0: AE 1E C9 21 B7 1E 70 2B 71 2A B6 1E EB 0E 13 CD ...!..p+q*......
0033C0: 05 00 C9 21 B9 1E 70 2B 71 2A B8 1E EB 0E 14 CD ...!..p+q*......
0033D0: 05 00 C9 21 BB 1E 70 2B 71 2A BA 1E EB 0E 15 CD ...!..p+q*......
0033E0: 05 00 C9 21 BD 1E 70 2B 71 2A BC 1E EB 0E 16 CD ...!..p+q*......
0033F0: 05 00 32 AE 1E C9 21 BF 1E 70 2B 71 2A BE 1E EB ..2...!..p+q*...
003400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003410: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003430: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0034A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0034B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0034C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0034D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0034E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0034F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003500: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003510: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003520: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003530: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003540: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003550: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003560: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003570: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003580: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003590: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0035A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0035B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0035C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0035D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0035E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0035F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
003600: 0E 17 CD 05 00 C9 21 C3 1E 70 2B 71 2A C2 1E EB ......!..p+q*...
003610: 0E 1E CD 05 00 C9 11 FF 00 0E 20 CD 05 00 C9 21 .......... ....!
003620: C4 1E 71 2A C4 1E 26 00 EB 0E 20 CD 05 00 C9 2A ..q*..&... ....*
003630: C0 1E 4D CD 1F 09 C9 2A C1 1E 4D CD 1F 09 C9 21 ..M....*..M....!
003640: C6 1E 70 2B 71 2A C5 1E EB 0E 21 CD 05 00 C9 21 ..p+q*....!....!
003650: C8 1E 70 2B 71 2A C7 1E EB 0E 22 CD 05 00 C9 21 ..p+q*...."....!
003660: CA 1E 70 2B 71 2A C9 1E EB 0E 24 CD 05 00 C9 21 ..p+q*....$....!
003670: CB 1E 36 80 11 CB 1E 0E 0A CD 05 00 C9 11 00 00 ..6.............
003680: 0E 0B CD 05 00 C9 21 6B 1F 70 2B 71 2A 6A 1F EB ......!k.p+q*j..
003690: 0E 1A CD 05 00 C9 3E 0C D3 01 3E 08 D3 01 DB 01 ......>...>.....
0036A0: 07 07 07 1F DA AA 09 C3 9E 09 DB 03 E6 7F C9 21 ...............!
0036B0: 71 1F 70 2B 71 CD 2F 09 2A 70 1F 44 4D CD 39 08 q.p+q./.*p.DM.9.
0036C0: 0E 3A CD 1C 08 0E 20 CD 1C 08 3A 4D 1F 32 72 1F .:.... ...:M.2r.
0036D0: 3A 4E 1F 21 72 1F BE DA F8 09 21 CC 1E 3A 72 1F :N.!r.....!..:r.
0036E0: BE D2 F1 09 2A 72 1F 26 00 01 CD 1E 09 4E CD 1C ....*r.&.....N..
0036F0: 08 21 72 1F 34 C2 D0 09 21 CC 1E 36 00 01 3A 02 .!r.4...!..6..:.
003700: CD 94 08 3A AE 1E FE FF CA 11 0A 01 3A 02 CD B3 ...:........:...
003710: 08 CD 2E 08 C3 0E 05 C9 21 77 1F 73 2B 70 2B 71 ........!w.s+p+q
003720: 2B D1 C1 70 2B 71 D5 3A 77 1F 3D 32 77 1F FE FF +..p+q.:w.=2w...
003730: CA 4E 0A 2A 73 1F E5 2A 75 1F C1 0A 77 2A 73 1F .N.*s..*u...w*s.
003740: 23 22 73 1F 2A 75 1F 23 22 75 1F C3 27 0A C9 21 #"s.*u.#"u..'..!
003750: 00 00 22 9D 1E 2A 03 1E 4D CD 5E 08 CD 37 09 21 .."..*..M.^..7.!
003760: 78 1F 36 00 3A FB 1D 21 78 1F BE DA BE 0A 2A 9D x.6.:..!x.....*.
003770: 1E EB 2A 01 1E 19 44 4D CD 86 09 01 06 1E CD C3 ..*...DM........
003780: 08 32 79 1F FE 00 CA AD 0A 3A 79 1F FE 01 CA 97 .2y......:y.....
003790: 0A 01 94 02 CD AF 09 2A 9D 1E 22 9F 1E EB 2A 01 .......*.."...*.
0037A0: 1E 19 36 1A 3A FB 1D 32 78 1F C3 B7 0A 11 80 00 ..6.:..2x.......
0037B0: 2A 9D 1E 19 22 9D 1E 21 78 1F 34 C2 64 0A 21 00 *..."..!x.4.d.!.
0037C0: 00 22 9D 1E CD 2F 09 C9 0E 07 21 A1 1E CD 6A 1D .".../....!...j.
0037D0: 7D 3D 32 7C 1F FE FF C2 DB 0A C9 21 00 00 22 A1 }=2|.......!..".
0037E0: 1E 2A 4B 1E 4D CD 5E 08 01 27 1E CD 5F 09 21 7A .*K.M.^..'.._.!z
0037F0: 1F 36 00 3A 7C 1F 21 7A 1F BE DA 31 0B 2A A1 1E .6.:|.!z...1.*..
003800: C3 CE 04 C9 00 00 C9 00 00 1A 00 00 00 00 00 00 ................
003810: 28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29 (INP:/OUT:SPACE)
003820: 28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29 (INP:/OUT:SPACE)
003830: 28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29 (INP:/OUT:SPACE)
003840: 28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29 (INP:/OUT:SPACE)
003850: 28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29 (INP:/OUT:SPACE)
003860: 28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29 (INP:/OUT:SPACE)
003870: 28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29 (INP:/OUT:SPACE)
003880: 28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29 (INP:/OUT:SPACE)
003890: 28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29 (INP:/OUT:SPACE)
0038A0: 28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29 (INP:/OUT:SPACE)
0038B0: 28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29 (INP:/OUT:SPACE)
0038C0: 28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29 (INP:/OUT:SPACE)
0038D0: 28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29 (INP:/OUT:SPACE)
0038E0: 28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29 (INP:/OUT:SPACE)
0038F0: 28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29 (INP:/OUT:SPACE)
003900: 20 20 20 43 4F 50 59 52 49 47 48 54 20 28 43 29 COPYRIGHT (C)
003910: 20 31 39 37 39 2C 20 44 49 47 49 54 41 4C 20 52 1979, DIGITAL R
003920: 45 53 45 41 52 43 48 2C 20 20 50 49 50 20 56 45 ESEARCH, PIP VE
003930: 52 53 20 31 2E 35 03 01 06 01 00 24 24 24 20 20 RS 1.5.....$$$
003940: 20 20 20 53 55 42 00 00 00 20 3D 2E 3A 2C 3C 3E SUB... =.:,<>
003950: 0D 5F 5B 5D 49 4E 50 49 52 44 50 54 52 55 52 31 ._[]INPIRDPTRUR1
003960: 55 52 32 52 44 52 4F 55 54 4C 50 54 55 4C 31 50 UR2RDROUTLPTUL1P
003970: 52 4E 4C 53 54 50 54 50 55 50 31 55 50 32 50 55 RNLSTPTPUP1UP2PU
003980: 4E 54 54 59 43 52 54 55 43 31 43 4F 4E 4E 55 4C NTTYCRTUC1CONNUL
003990: 45 4F 46 00 44 49 53 4B 20 52 45 41 44 20 45 52 EOF.DISK READ ER
0039A0: 52 4F 52 24 44 49 53 4B 20 57 52 49 54 45 20 45 ROR$DISK WRITE E
0039B0: 52 52 4F 52 24 56 45 52 49 46 59 20 45 52 52 4F RROR$VERIFY ERRO
0039C0: 52 24 4E 4F 54 20 41 20 43 48 41 52 41 43 54 45 R$NOT A CHARACTE
0039D0: 52 20 53 49 4E 4B 24 52 45 41 44 45 52 20 53 54 R SINK$READER ST
0039E0: 4F 50 50 49 4E 47 0D 0A 24 4E 4F 54 20 41 20 43 OPPING..$NOT A C
0039F0: 48 41 52 41 43 54 45 52 20 53 4F 55 52 43 45 24 HARACTER SOURCE$
003A00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
003A10: 03 00 01 00 02 09 52 E5 03 00 41 02 00 00 00 02 ......R...A.....
003A20: 03 00 46 02 00 00 00 02 03 00 42 02 00 00 00 02 ..F.......B.....
003A30: 03 00 47 02 00 00 00 02 03 00 43 02 00 00 00 02 ..G.......C.....
003A40: 03 00 48 02 00 00 00 02 03 00 44 02 00 00 00 02 ..H.......D.....
003A50: 03 00 49 02 00 00 00 02 03 00 45 02 00 00 00 02 ..I.......E.....
003A60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003A70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003A80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003A90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003AA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003AB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003AC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003AD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003AE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003AF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003B00: 01 CA 1F 09 22 7D 1F 2A 7D 1F 44 4D CD 86 09 01 ...."}.*}.DM....
003B10: 27 1E CD D3 08 FE 00 CA 20 0B 01 A4 02 CD AF 09 '....... .......
003B20: 11 80 00 2A A1 1E 19 22 A1 1E 21 7A 1F 34 C2 F3 ...*..."..!z.4..
003B30: 0A 3A 65 1F 1F D2 C9 0B 21 00 00 22 A1 1E 01 80 .:e.....!.."....
003B40: 00 CD 86 09 21 7A 1F 36 00 3A 7C 1F 21 7A 1F BE ....!z.6.:|.!z..
003B50: DA C0 0B 01 27 1E CD 3F 09 D6 00 D6 01 9F 32 7F ....'..?......2.
003B60: 1F 2A 48 1E 23 22 48 1E 21 7B 1F 36 00 3A 7B 1F .*H.#"H.!{.6.:{.
003B70: D6 80 9F 21 7F 1F A6 1F D2 A2 0B 2A 7B 1F 26 00 ...!.......*{.&.
003B80: 01 80 00 09 3A 7B 1F 11 A1 1E E5 CD 34 1D 01 CA ....:{......4...
003B90: 1F 09 C1 0A 96 D6 01 9F 32 7F 1F 21 7B 1F 34 C3 ........2..!{.4.
003BA0: 6D 0B 11 80 00 2A A1 1E 19 22 A1 1E 3A 7F 1F 1F m....*..."..:...
003BB0: DA B9 0B 01 B5 02 CD AF 09 21 7A 1F 34 C2 49 0B .........!z.4.I.
003BC0: 01 27 1E CD D3 08 32 7F 1F 21 00 00 22 A1 1E C9 .'....2..!.."...
003BD0: 21 80 1F 71 3A 80 1F FE 20 DA F4 0B 21 F3 1D 34 !..q:... ...!..4
003BE0: 3E 00 21 53 1F BE D2 F4 0B 3A 53 1F 21 F3 1D BE >.!S.....:S.!...
003BF0: D2 F4 0B C9 3A 03 00 32 81 1F 2A A3 1E 4D 06 00 ....:..2..*£.M..
003C00: 21 DD 0C 09 09 5E 23 56 EB E9 01 FF 1D 11 A1 1E !....^#V........
003C10: CD 8E 1D DA 19 0C CD C8 0A 2A A1 1E 01 CA 1F 09 .........*......
003C20: 3A 80 1F 77 2A A1 1E 23 22 A1 1E C3 05 0D C3 3D :..w*..#"......=
003C30: 0C C3 3D 0C C3 3D 0C C3 3D 0C C3 3D 0C 01 C2 02 ..=..=..=..=....
003C40: CD AF 09 C3 05 0D 2A 80 1F 4D CD E6 07 C3 05 0D ......*..M......
003C50: 21 03 00 36 80 C3 71 0C C3 05 0D 21 03 00 36 C0 !..6..q....!..6.
003C60: C3 71 0C C3 05 0D 21 03 00 36 80 C3 71 0C C3 05 .q....!..6..q...
003C70: 0D 2A 80 1F 26 00 EB 0E 05 CD 05 00 C3 05 0D 21 .*..&..........!
003C80: 03 00 36 10 C3 A0 0C C3 05 0D 21 03 00 36 20 C3 ..6.......!..6 .
003C90: A0 0C C3 05 0D 21 03 00 36 30 C3 A0 0C C3 05 0D .....!..60......
003CA0: 2A 80 1F 26 00 EB 0E 04 CD 05 00 C3 05 0D 21 03 *..&..........!.
003CB0: 00 36 00 C3 CF 0C C3 05 0D 21 03 00 36 01 C3 CF .6.......!..6...
003CC0: 0C C3 05 0D 21 03 00 36 03 C3 CF 0C C3 05 0D 2A ....!..6.......*
003CD0: 80 1F 26 00 EB 0E 02 CD 05 00 C3 05 0D 0A 0C 2E ..&.............
003CE0: 0C 31 0C 34 0C 37 0C 3A 0C 3D 0C 46 0C 50 0C 5B .1.4.7.:.=.F.P.[
003CF0: 0C 66 0C 71 0C 7F 0C 8A 0C 95 0C A0 0C AE 0C B9 .f.q............
003D00: C3 B7 15 3A A8 1E D6 53 D6 01 9F F5 3A A8 1E D6 ...:...S....:...
003D10: 51 D6 01 9F C1 48 B1 1F D2 49 15 3A 4E 1F 3C 32 Q....H...I.:N.<2
003D20: 9F 1F CD F2 11 32 A8 1E D6 1A D6 01 9F F5 3A A8 .....2........:.
003D30: 1E D6 0D D6 01 9F C1 48 B1 1F DA 40 15 C3 22 15 .......H...@..".
003D40: CD F2 11 32 A8 1E C3 8D 15 CD F2 11 32 A8 1E D6 ...2........2...
003D50: 30 32 9F 1F 4F 3E 09 B9 D2 63 15 21 9F 1F 36 01 02..O>...c.!..6.
003D60: C3 8D 15 CD F2 11 32 A8 1E D6 30 32 99 1F 4F 3E ......2...02..O>
003D70: 09 B9 DA 8D 15 2A 9F 1F 26 00 CD 4F 1D E5 2A 99 .....*..&..O..*.
003D80: 1F 26 00 C1 09 EB 21 9F 1F 73 C3 63 15 2A 9E 1F .&....!..s.c.*..
003D90: 26 00 01 50 1F 09 3A 9F 1F 77 3A 9E 1F FE 06 C2 &..P..:..w:.....
003DA0: B7 15 3E 1F 21 9F 1F BE D2 B1 15 01 16 03 CD AF ..>.!...........
003DB0: 09 3A 9F 1F 32 C1 1E C3 C2 14 CD F2 11 32 A8 1E .:..2........2..
003DC0: C9 3A A8 1E FE 5F C2 CE 15 21 A8 1E 36 3D C9 21 .:..._...!..6=.!
003DD0: A3 1F 36 00 3E 27 21 A3 1F BE DA E9 15 0E 00 CD £.6.>'!£........
003DE0: 45 0E 21 A3 1F 34 C2 D4 15 C9 21 A9 1F 70 2B 71 E.!£.4....!..p+q
003DF0: 2A A8 1F E5 1E 03 01 30 1E CD 18 0A C9 21 AD 1F *......0.....!..
003E00: 72 2B 73 2B 70 2B 71 2A AC 1F 7E FE 24 CA 37 16 r+s+p+q*..~.$.7.
003E10: 2A AC 1F 3E 7F A6 2A AA 1F F5 3E 7F A6 C1 48 B9 *..>..*...>...H.
003E20: CA 26 16 3E 00 C9 2A AA 1F 23 22 AA 1F 2A AC 1F .&.>..*..#"..*..
003E30: 23 22 AC 1F C3 07 16 3E 01 C9 CD 0D 11 32 A8 1E #".....>.....2..
003E40: 3A 04 1E 1F D2 52 16 01 9D 1E 11 9F 1E CD 8E 1D :....R..........
003E50: 9F C9 3A A8 1E D6 1A D6 01 9F C9 21 AF 1F 36 01 ..:........!..6.
003E60: 21 9C 1E 36 00 CD 3D 17 32 B5 1F FE 3A CA 99 16 !..6..=.2...:...
003E70: 21 9C 1E 36 00 3A B5 1F FE 1A C2 93 16 01 48 03 !..6.:........H.
003E80: CD 39 08 CD 13 08 FE 1A C2 8E 16 3E 01 C9 21 9C .9.........>..!.
003E90: 1E 36 00 CD 2D 17 C3 65 16 21 B5 1F 36 00 CD BB .6..-..e.!..6...
003EA0: 17 32 B4 1F FE 00 C2 C7 16 CD 3D 17 32 B4 1F FE .2........=.2...
003EB0: 1A CA BA 16 CD 2D 17 C3 A9 16 3A AF 1F 1F D2 C4 .....-....:.....
003EC0: 16 3E 01 C9 3E 02 C9 CD C4 17 22 B7 1F CD BB 17 .>..>.....".....
003ED0: 32 B6 1F 3A B4 1F D6 00 C6 FF 9F 21 AF 1F A6 1F 2..:.......!....
003EE0: D2 F0 16 21 B4 1F 35 CD BB 17 32 B3 1F C3 D3 16 ...!..5...2.....
003EF0: CD AC 17 21 B5 1F 86 FE 00 CA 02 17 01 5C 03 CD ...!.........\..
003F00: 0C C4 0C CF 0C 3A 81 1F 32 03 00 C9 21 82 1F 71 .....:..2...!..q
003F10: 3A 82 1F FE 09 CA 22 0D 2A 82 1F 4D CD D0 0B C3 :.....".*..M....
003F20: 6E 0D 3A 63 1F FE 00 C2 34 0D 2A 82 1F 4D CD D0 n.:c....4.*..M..
003F30: 0B C3 6E 0D 3A F3 1D 32 83 1F 21 63 1F 3A 83 1F ..n.:..2..!c.:..
003F40: BE DA 51 0D 21 63 1F 3A 83 1F 96 32 83 1F C3 3A ..Q.!c.:...2...:
003F50: 0D 21 83 1F 3A 63 1F 96 77 3E 00 21 83 1F BE D2 .!..:c..w>.!....
003F60: 6E 0D 21 83 1F 35 0E 20 CD D0 0B C3 59 0D 3A 82 n.!..5. ....Y.:.
003F70: 1F FE 0D C2 7B 0D 21 F3 1D 36 00 C9 21 84 1F 71 ....{.!..6..!..q
003F80: 3A 84 1F D6 00 D6 01 9F 21 6C 1F A6 77 1F D2 99 :.......!l..w...
003F90: 0D 0E 20 CD 0C 0D C3 A2 0D 3A 84 1F C6 30 4F CD .. ......:...0O.
003FA0: 0C 0D C9 21 85 1F 71 3A 85 1F E6 F8 1F 1F 1F 1F ...!..q:........
003FB0: 4F CD 7C 0D 3A 85 1F E6 0F 4F CD 7C 0D C9 21 86 O.|.:....O.|..!.
003FC0: 1F 36 01 3A 5D 1F D6 01 D6 01 9F 32 6C 1F 3A 6F .6.:]......2l.:o
003FD0: 1F 86 27 32 6F 1F 3A 6E 1F CE 00 27 32 6E 1F 3A ..'2o.:n...'2n.:
003FE0: 6D 1F CE 00 27 32 6D 1F 2A 6D 1F 4D CD A3 0D 2A m...'2m.*m.M.£.*
003FF0: 6E 1F 4D CD A3 0D 2A 6F 1F 4D CD A3 0D 3A 5D 1F n.M.£.*o.M.£.:].
004000: FE 01 C2 12 0E 0E 3A CD 0C 0D 0E 20 CD 0C 0D C3 ......:.... ....
004010: 17 0E 0E 09 CD 0C 0D C9 2A A1 1E 7D E6 7F 32 89 ........*..}..2.
004020: 1F 11 80 FF CD 44 1D 22 87 1F CD C8 0A 2A 87 1F .....D.".....*..
004030: 01 CA 1F 09 E5 2A 89 1F EB CD 18 0A 2A 89 1F 26 .....*......*..&
004040: 00 22 A1 1E C9 21 8A 1F 71 3A 55 1F 1F D2 59 0E ."...!..q:U...Y.
004050: 3A 8A 1F FE 0C C2 59 0E C9 3A A6 1E 1F D2 A9 0E :.....Y..:......
004060: 3A 8A 1F FE 0C CA A9 0E 3A 5F 1F 32 8B 1F FE 00 :.......:_.2....
004070: CA 98 0E 3A 8B 1F FE 01 C2 80 0E 21 8B 1F 36 3C ...:.......!..6<
004080: 3A F4 1D 3C 32 F4 1D 21 8B 1F BE DA 98 0E 21 F4 :..<2..!......!.
004090: 1D 36 00 0E 0C CD 0C 0D 3E 00 21 5D 1F BE D2 A4 .6......>.!]....
0040A0: 0E CD BE 0D 21 A6 1E 36 00 3A 51 1F 1F D2 CC 0E ....!..6.:Q.....
0040B0: 3A 8A 1F D6 13 D6 01 9F F5 3A A3 1E D6 00 D6 01 :........:£.....
0040C0: 9F C1 48 A1 1F D2 CC 0E CD 18 0E C9 3A 8A 1F FE ..H.........:...
0040D0: 0C C2 D9 0E 21 F4 1D 36 00 2A 8A 1F 4D CD 0C 0D ....!..6.*..M...
0040E0: 3A 8A 1F FE 0A C2 ED 0E 21 A6 1E 36 01 C9 21 8C :.......!..6..!.
0040F0: 1F 71 3A 8C 1F D6 61 9F 2F F5 3E 7A 21 8C 1F 96 .q:...a./.>z!...
004100: 12 17 CD 2D 17 3A AF 1F 1F D2 0F 17 3E 00 C9 3E ...-.:......>..>
004110: 02 C9 21 B1 1F 70 2B 71 3A AF 1F 1F D2 2C 17 21 ..!..p+q:....,.!
004120: AF 1F 36 00 2A B0 1F 44 4D CD 39 08 C9 3A AE 1F ..6.*..DM.9..:..
004130: 1F D2 3C 17 21 AE 1F 36 00 CD 18 0E C9 3A AF 1F ..<.!..6.....:..
004140: 1F D2 7A 17 CD 0D 11 32 B2 1F FE 13 C2 57 17 21 ..z....2.....W.!
004150: AE 1F 36 01 C3 44 17 2A 9C 1E 26 00 01 4C 1E 09 ..6..D.*..&..L..
004160: 3A B2 1F 77 3A 9C 1E 3C 32 9C 1E FE 4F DA 76 17 :..w:..<2...O.v.
004170: 01 2A 03 CD 12 17 3A B2 1F C9 3E 1A C9 CD 3D 17 .*....:...>...=.
004180: 32 B9 1F D6 30 4F 3E 09 B9 DA 92 17 3A B9 1F D6 2...0O>.....:...
004190: 30 C9 3A B9 1F D6 41 4F 3E 05 B9 D2 A4 17 01 3A 0.:...AO>......:
0041A0: 03 CD 12 17 3A B9 1F D6 41 C6 0A C9 CD 7D 17 87 ....:...A....}..
0041B0: 87 87 87 F5 CD 7D 17 C1 48 B1 C9 CD AC 17 21 B5 .....}..H.....!.
0041C0: 1F 86 77 C9 CD BB 17 4F 06 00 60 69 0E 08 CD 64 ..w....O..`i...d
0041D0: 1D E5 CD BB 17 E1 CD 56 1D C9 CD 5B 16 32 BA 1F .......V...[.2..
0041E0: 4F 3E 01 B9 DA 32 18 3A BA 1F D6 01 D6 01 9F 21 O>...2.:.......!
0041F0: 58 1F A6 1F DA 1C 18 21 BB 1F 36 01 3A 9C 1E 21 X......!..6.:..!
004200: BB 1F BE DA 1C 18 3A BB 1F 3D 4F 06 00 21 4C 1E ......:..=O..!L.
004210: 09 4E CD 45 0E 21 BB 1F 34 C2 FC 17 0E 0D CD 45 .N.E.!..4......E
004220: 0E 0E 0A CD 45 0E 3A BA 1F FE 01 C2 2F 18 C9 C3 ....E.:...../...
004230: DA 17 CD 2E 08 2A 9C 1E 26 00 01 4C 1E 09 36 24 .....*..&..L..6$
004240: 01 4C 1E CD 39 08 01 6B 03 CD 39 08 CD 2E 08 CD .L..9..k..9.....
004250: 13 08 FE 1A C2 58 18 C9 C3 DA 17 C9 01 8F 03 CD .....X..........
004260: AF 09 C9 2A 4B 1E 4D CD 5E 08 11 9E 03 01 30 1E ...*K.M.^.....0.
004270: CD FD 15 32 05 1E 01 30 1E C5 1E 03 01 A4 1F CD ...2...0........
004280: 18 0A 3A 30 1E E6 7F 32 30 1E 3A 31 1E E6 7F 32 ..:0...20.:1...2
004290: 31 1E 01 A2 03 CD EA 15 01 27 1E CD B3 08 01 27 1........'.....'
0042A0: 1E CD E3 08 3A AE 1E FE FF C2 B2 18 01 A5 03 CD ....:...........
0042B0: AF 09 21 47 1E 36 00 21 00 00 22 A1 1E C9 21 FF ..!G.6.!.."...!.
0042C0: FF 22 9F 1E CD 37 09 2A 03 1E 4D CD 5E 08 01 06 ."...7.*..M.^...
0042D0: 1E CD 6E 08 CD 2F 09 3A 61 1F 2F F5 3A 10 1E 07 ..n../.:a./.:...
0042E0: C1 48 A1 1F D2 EC 18 21 AE 1E 36 FF 3A AE 1E FE .H.....!..6.:...
0042F0: FF C2 FA 18 01 B8 03 CD AF 09 21 26 1E 36 00 11 ..........!&.6..
004300: 9F 2F C1 48 A1 1F D2 11 0F 3A 8C 1F E6 5F 32 8C ./.H.....:..._2.
004310: 1F 3A 8C 1F C9 21 8D 1F 71 3A 8D 1F D6 41 9F 2F .:...!..q:...A./
004320: F5 3E 5A 21 8D 1F 96 9F 2F C1 48 A1 1F D2 38 0F .>Z!..../.H...8.
004330: 3A 8D 1F F6 20 32 8D 1F 3A 8D 1F C9 3A A4 1E 3D :... 2..:...:..=
004340: 4F 3E 05 B9 DA 6D 0F 3A 57 1F 21 51 1F B6 F5 CD O>...m.:W.!Q....
004350: 7D 09 C1 48 A1 1F D2 6D 0F CD 13 08 FE 1A C2 64 }..H...m.......d
004360: 0F 3E 1A C9 01 D7 02 CD 39 08 3E 13 C9 21 90 1F .>......9.>..!..
004370: 36 01 3A 03 00 32 8E 1F 2A A4 1E 4D 06 00 21 45 6.:..2..*..M..!E
004380: 10 09 09 5E 23 56 EB E9 01 FD 1D 11 9D 1E CD 8E ...^#V..........
004390: 1D DA 97 0F CD 4F 0A 2A 9D 1E EB 2A 01 1E 19 7E .....O.*...*...~
0043A0: 32 8F 1F 2A 9D 1E 23 22 9D 1E C3 6D 10 CD F3 07 2..*..#"...m....
0043B0: 32 8F 1F C3 6D 10 CD 96 09 32 8F 1F C3 6D 10 21 2...m....2...m.!
0043C0: 03 00 36 04 C3 E0 0F C3 6D 10 21 03 00 36 08 C3 ..6.....m.!..6..
0043D0: E0 0F C3 6D 10 21 03 00 36 0C C3 E0 0F C3 6D 10 ...m.!..6.....m.
0043E0: 11 00 00 0E 03 CD 05 00 E6 7F 32 8F 1F C3 6D 10 ..........2...m.
0043F0: C3 08 10 C3 08 10 C3 08 10 C3 08 10 C3 08 10 C3 ................
004400: 08 10 C3 08 10 C3 08 10 01 E9 02 CD AF 09 C3 6D ...............m
004410: 10 21 03 00 36 00 C3 32 10 C3 6D 10 21 03 00 36 .!..6..2..m.!..6
004420: 01 C3 32 10 C3 6D 10 21 03 00 36 03 C3 32 10 C3 ..2..m.!..6..2..
004430: 6D 10 21 90 1F 36 00 11 00 00 0E 01 CD 05 00 32 m.!..6.........2
004440: 8F 1F C3 6D 10 88 0F AD 0F B6 0F BF 0F CA 0F D5 ...m............
004450: 0F E0 0F F0 0F F3 0F F6 0F F9 0F FC 0F FF 0F 02 ................
004460: 10 05 10 08 10 11 10 1C 10 27 10 32 10 3A 8E 1F .........'.2.:..
004470: 32 03 00 3A 54 1F 1F D2 92 10 3A A3 1E 32 8E 1F 2..:T.....:£.2..
004480: 21 A3 1E 36 13 2A 8F 1F 4D CD 45 0E 3A 8E 1F 32 !£.6.*..M.E.:..2
004490: A3 1E 3A 90 1F 1F D2 DC 10 3A 04 1E 1F D2 B2 10 £.:......:......
0044A0: 3A A7 1E 3C 32 A7 1E D6 00 D6 01 9F 32 90 1F C3 :..<2.......2...
0044B0: BD 10 3A 8F 1F D6 0A D6 01 9F 32 90 1F 3A 90 1F ..:.......2..:..
0044C0: 1F D2 DC 10 CD 7D 09 1F D2 DC 10 CD 13 08 FE 1A .....}..........
0044D0: C2 D6 10 3E 1A C9 01 00 03 CD AF 09 3A 69 1F 1F ...>........:i..
0044E0: D2 EB 10 3A 8F 1F E6 7F 32 8F 1F 3A 64 1F 1F D2 ...:....2..:d...
0044F0: FA 10 2A 8F 1F 4D CD EE 0E C9 3A 5B 1F 1F D2 09 ..*..M....:[....
004500: C0 03 01 0F 1E CD FD 15 32 04 1E 2A FD 1D 22 9D ........2..*..".
004510: 1E C9 3E 00 21 62 1F BE D2 21 19 01 C4 03 CD AF ..>.!b...!......
004520: 09 3E 00 21 60 1F BE D2 30 19 01 D4 03 CD AF 09 .>.!`...0.......
004530: C9 21 BC 1F 71 3A BC 1F 1F D2 45 19 3A 13 1E 32 .!..q:....E.:..2
004540: 34 1E C3 4A 19 21 34 1E 36 00 2A A1 1E 7D E6 7F 4..J.!4.6.*..}..
004550: FE 00 CA 61 19 21 34 1E 34 0E 1A CD 45 0E C3 4A ...a.!4.4...E..J
004560: 19 CD 12 19 CD C8 0A 2A 4B 1E 4D CD 5E 08 01 27 .......*K.M.^..'
004570: 1E CD 81 08 3A AE 1E FE FF C2 82 19 01 E3 03 CD ....:...........
004580: AF 09 01 A4 1F CD EA 15 21 33 1E 36 00 01 27 1E ........!3.6..'.
004590: CD 6E 08 3A AE 1E FE FF CA E9 19 3A 30 1E 07 1F .n.:.......:0...
0045A0: D2 E3 19 3A 66 1F 1F DA D5 19 01 01 04 CD 39 08 ...:f.........9.
0045B0: CD 13 08 4F CD EE 0E FE 59 CA D2 19 01 23 04 CD ...O....Y....#..
0045C0: 39 08 CD 2E 08 01 33 04 CD EA 15 01 27 1E CD B3 9.....3.....'...
0045D0: 08 C9 CD 2E 08 3A 30 1E E6 7F 32 30 1E 01 27 1E .....:0...20..'.
0045E0: CD 06 09 01 27 1E CD B3 08 01 27 1E C5 1E 10 01 ....'.....'.....
0045F0: 37 1E CD 18 0A 01 36 04 CD EA 15 01 27 1E CD F6 7.....6.....'...
004600: 08 C9 0E 07 21 FF 1D CD 6A 1D 3E FF CD 41 1D 2B ....!...j.>..A.+
004610: EB 21 FB 1D 73 C9 21 CA 1F 22 01 1E 01 00 40 11 .!..s.!.."....@.
004620: FF 1D CD 93 1D DA 31 1A 21 80 7F 22 FF 1D C3 3C ......1.!.."...<
004630: 1A 2A FD 1D EB 2A FF 1D 19 22 FF 1D CD 02 1A C9 .*...*..."......
004640: 01 CA 1F 11 06 00 CD 93 1D 0E 01 E5 CD 6E 1D 01 .............n..
004650: CA 1F 09 22 01 1E 11 00 FF E1 CD 44 1D 0E 01 CD ...".......D....
004660: 6E 1D 22 FD 1D 22 FF 1D CD 02 1A C9 3A A4 1E D6 n.".."......:...
004670: 00 C6 FF 9F 21 51 1F A6 32 BD 1F 1F D2 82 1A CD ....!Q..2.......
004680: 16 1A 3A 58 1F 21 57 1F B6 1F D2 93 1A CD DA 17 ..:X.!W.........
004690: C3 A4 1A CD 3A 16 1F DA A4 1A 2A A8 1E 4D CD 45 ....:.....*..M.E
0046A0: 0E C3 93 1A 3A BD 1F 1F D2 B1 1A CD 18 0E CD 40 ....:..........@
0046B0: 1A C9 CD 40 1A 3A 4F 1F 32 4D 1F CD 63 18 CD BE ...@.:O.2M..c...
0046C0: 18 21 BE 1F 36 01 23 36 00 3E 19 21 BF 1F BE DA .!..6.#6.>.!....
0046D0: 29 1B 2A BF 1F 26 00 01 50 1F 09 7E FE 00 CA 22 ).*..&..P..~..."
0046E0: 1B 3A BF 1F D6 06 D6 01 9F F5 3A BF 1F D6 0E D6 .:........:.....
0046F0: 01 9F C1 48 B1 F5 3A BF 1F D6 11 D6 01 9F C1 48 ...H..:........H
004700: 11 2A 8F 1F 4D CD 15 0F C9 3A 8F 1F C9 3E 00 21 .*..M....:...>.!
004710: FA 1D BE D2 28 11 3A FA 1D 3D 32 FA 1D FE 01 C2 ....(.:..=2.....
004720: 25 11 3E 0A C9 3E 1A C9 3E 00 21 F8 1D BE D2 46 %.>..>..>.!....F
004730: 11 21 F8 1D 35 2B 4E 06 00 21 CD 1E 09 7E 32 91 .!..5+N..!...~2.
004740: 1F 21 F7 1D 34 C9 CD 3C 0F 32 91 1F FE 1A C2 54 .!..4..<.2.....T
004750: 11 3E 1A C9 3E 00 21 62 1F BE D2 7D 11 2A 62 1F .>..>.!b...}.*b.
004760: 4D CD AD 11 1F D2 7A 11 3A 62 1F 32 F7 1D 21 62 M.....z.:b.2..!b
004770: 1F 36 00 3A F9 1D 3C 32 F8 1D C3 A9 11 3E 00 21 .6.:..<2.....>.!
004780: 60 1F BE D2 A5 11 2A 60 1F 4D CD AD 11 1F D2 9E `.....*`.M......
004790: 11 21 60 1F 36 00 21 FA 1D 36 02 3E 0D C9 3A 91 .!`.6.!..6.>..:.
0047A0: 1F C9 C3 A9 11 3A 91 1F C9 C3 28 11 C9 21 92 1F .....:....(..!..
0047B0: 71 3A F9 1D 21 92 1F 86 77 4F 06 00 21 CD 1E 09 q:..!...wO..!...
0047C0: 7E 32 93 1F FE 1A C2 D9 11 2A 92 1F 26 00 01 CD ~2.......*..&...
0047D0: 1E 09 3A 91 1F 77 3E 01 C9 21 91 1F 3A 93 1F BE ..:..w>..!..:...
0047E0: C2 EA 11 21 F9 1D 34 C3 EF 11 21 F9 1D 36 00 3E ...!..4...!..6.>
0047F0: 00 C9 3A 4E 1F 3C 32 4E 1F 21 CC 1E BE DA 03 12 ..:N.<2N.!......
004800: 3E 0D C9 2A 4E 1F 26 00 01 CD 1E 09 4E CD EE 0E >..*N.&.....N...
004810: C9 CD F2 11 32 A8 1E FE 20 C2 1F 12 C3 11 12 C9 ....2... .......
004820: 21 96 1F 70 2B 71 21 F5 1D 36 00 21 A9 1E 36 00 !..p+q!..6.!..6.
004830: 2B 36 20 21 AA 1E 36 00 3A AA 1E FE 20 D2 53 12 +6 !..6.:... .S.
004840: 3A AA 1E FE 0B C2 4D 12 21 A8 1E 36 00 CD 67 14 :.....M.!..6..g.
004850: C3 38 12 CD 11 12 3A 4E 1F 32 4D 1F 2A A8 1E 4D .8....:N.2M.*..M
004860: CD 38 14 1F D2 70 12 CD C1 15 21 A9 1E 36 01 C9 .8...p....!..6..
004870: 21 94 1F 36 00 21 97 1F 36 00 3E 19 21 97 1F BE !..6.!..6.>.!...
004880: DA 95 12 2A 97 1F 26 00 01 50 1F 09 36 00 21 97 ...*..&..P..6.!.
004890: 1F 34 C2 7A 12 21 F6 1D 36 00 21 F8 1D 36 00 23 .4.z.!..6.!..6.#
0048A0: 36 00 23 36 00 21 AA 1E 36 00 2A A8 1E 4D CD 38 6.#6.!..6.*..M.8
0048B0: 14 1F DA DA 12 3A AA 1E FE 08 DA BE 12 C9 3A A8 .....:........:.
0048C0: 1E FE 2A C2 CE 12 0E 08 CD 87 14 C3 D1 12 CD 67 ..*............g
0048D0: 14 CD F2 11 32 A8 1E C3 AA 12 3A A8 1E FE 3A C2 ....2.....:...:.
0048E0: BF 13 3A 94 1F FE 00 CA EB 12 C9 3A AA 1E FE 01 ..:........:....
0048F0: C2 2C 13 0E 01 CD A1 14 D6 41 3C 32 94 1F 4F 3E .,.......A<2..O>
004900: B1 F5 3A BF 1F D6 15 D6 01 9F C1 48 B1 F5 3A BF ..:........H..:.
004910: 1F D6 16 D6 01 9F C1 48 B1 1F DA 22 1B 21 BE 1F .......H...".!..
004920: 36 00 21 BF 1F 34 C2 C9 1A 3A BE 1F 1F D2 5F 1B 6.!..4...:...._.
004930: CD 16 1A CD 6A 1B 1F DA 59 1B CD 4F 0A CD 6A 1B ....j...Y..O..j.
004940: 1F D2 4D 1B 2A 9F 1E 22 A1 1E C3 53 1B 2A FF 1D ..M.*.."...S.*..
004950: 22 A1 1E CD C8 0A C3 33 1B CD 40 1A C3 62 1B CD "......3..@..b..
004960: 6C 1A 2A BE 1F 4D CD 31 19 C9 01 FF FF 11 9F 1E l.*..M.1........
004970: CD 93 1D B5 C6 FF 9F C9 21 00 00 22 C0 1F 22 C4 ........!.."..".
004980: 1F CD 37 09 2A 03 1E 4D CD 5E 08 01 80 00 CD 86 ..7.*..M.^......
004990: 09 01 5C 00 CD 94 08 21 00 00 22 C2 1F 3A AE 1E ..\....!.."..:..
0049A0: D6 FF C6 FF 9F 01 C0 1F 11 C2 1F F5 CD 8E 1D 9F ................
0049B0: C1 48 A1 1F D2 C4 1B 2A C2 1F 23 22 C2 1F CD A7 .H.....*..#"....
0049C0: 08 C3 9D 1B CD 2F 09 3A AE 1E FE FF C2 E5 1B 3E ...../.:.......>
0049D0: 00 11 C4 1F CD 9B 1D B5 C2 E1 1B 01 39 04 CD AF ............9...
0049E0: 09 CD 2E 08 C9 2A C2 1F 23 22 C0 1F 3A AE 1E E6 .....*..#"..:...
0049F0: 03 87 87 87 87 87 5F 16 00 21 80 00 19 E5 1E 10 ......_..!......
004A00: 01 27 1E CD 18 0A 21 27 1E 36 00 21 33 1E 36 00 .'....!'.6.!3.6.
004A10: 01 27 1E C5 1E 10 01 06 1E CD 18 0A 3A 31 1E 07 .'..........:1..
004A20: 2F 21 61 1F B6 1F D2 45 1C 2A C4 1F 23 22 C4 1F /!a....E.*..#"..
004A30: 3E 01 CD 7A 1D B5 C2 3F 1C 01 43 04 CD 39 08 CD >..z...?..C..9..
004A40: 49 1C CD B2 1A C3 81 1B C9 CD 2E 08 21 C6 1F 36 I...........!..6
004A50: 01 3E 0B 21 C6 1F BE DA 87 1C 2A C6 1F 26 00 01 .>.!......*..&..
004A60: 27 1E 09 7E 32 C7 1F FE 20 CA 80 1C 3A C6 1F FE '..~2... ...:...
004A70: 09 C2 79 1C 0E 2E CD 1C 08 2A C7 1F 4D CD 1C 08 ..y......*..M...
004A80: 21 C6 1F 34 C2 51 1C C9 3E 00 21 94 1F BE D2 9B !..4.Q..>.!.....
004A90: 1C 3A 94 1F 3D 32 03 1E C3 A1 1C 3A FC 1D 32 03 .:..=2.....:..2.
004AA0: 1E C9 3A F6 1D 1F D2 AC 1C CD 5C 18 3E 00 21 94 ..:.......\.>.!.
004AB0: 1F BE D2 BF 1C 3A 94 1F 3D 32 4B 1E C3 C5 1C 3A .....:..=2K....:
004AC0: FC 1D 32 4B 1E C9 21 C0 1E 3A C1 1E BE CA D1 1C ..2K..!..:......
004AD0: C9 21 03 1E 3A 4B 1E BE C2 DE 1C CD 5C 18 C9 CD .!..:K......\...
004AE0: 11 12 3A A8 1E FE 0D CA ED 1C CD 5C 18 C9 21 C9 ..:........\..!.
004AF0: 1F 70 2B 71 CD 88 1C CD DF 1C 01 06 1E C5 2A C8 .p+q..........*.
004B00: 1A B9 D2 06 13 C9 CD 11 12 2A A8 1E 4D CD 38 14 .........*..M.8.
004B10: 1F D2 29 13 3A A8 1E FE 5B C2 1F 13 CD B1 14 21 ..).:...[......!
004B20: 4E 1F 35 21 A9 1E 36 04 C9 C3 B1 13 3A AA 1E FE N.5!..6.....:...
004B30: 03 CA 35 13 C9 21 A1 1F 36 FF 23 36 00 3E 14 21 ..5..!..6.#6.>.!
004B40: A2 1F BE DA B0 13 21 A0 1F 36 00 3A A0 1F 3C 32 ......!..6.:..<2
004B50: A0 1F 4F 3E 03 91 9F 2F F5 3A A0 1F 21 A1 1F 86 ..O>.../.:..!...
004B60: 4F 06 00 21 54 02 09 E5 2A A0 1F 4D CD A1 14 E1 O..!T...*..M....
004B70: 96 D6 01 9F C1 48 A1 1F D2 7E 13 C3 4B 13 3A A0 .....H...~..K.:.
004B80: 1F FE 04 C2 A1 13 21 A9 1E 36 03 CD F2 11 FE 5B ......!..6.....[
004B90: C2 96 13 CD B1 14 21 4E 1F 35 3A A2 1F 32 A8 1E ......!N.5:..2..
004BA0: C9 3A A1 1F C6 03 32 A1 1F 21 A2 1F 34 C2 3D 13 .:....2..!..4.=.
004BB0: C9 3A A8 1E FE 5B C2 BC 13 CD B1 14 C3 34 14 3A .:...[.......4.:
004BC0: AA 1E FE 00 C2 C8 13 C9 21 AA 1E 36 08 3A A8 1E ........!..6.:..
004BD0: FE 2E C2 02 14 CD F2 11 32 A8 1E 4F CD 38 14 1F ........2..O.8..
004BE0: DA 02 14 3A AA 1E FE 0B DA EC 13 C9 3A A8 1E FE ...:........:...
004BF0: 2A C2 FC 13 0E 0B CD 87 14 C3 FF 13 CD 67 14 C3 *............g..
004C00: D5 13 3A A8 1E FE 5B C2 0D 14 CD B1 14 21 4E 1F ..:...[......!N.
004C10: 35 21 A9 1E 36 02 3A 94 1F FE 00 C2 25 14 3A FC 5!..6.:.....%.:.
004C20: 1D 3C 32 94 1F 2A 95 1F 36 00 01 20 00 2A 95 1F .<2..*..6.. .*..
004C30: 09 36 00 C9 C3 A5 12 C9 21 9A 1F 71 21 9B 1F 36 .6......!..q!..6
004C40: 00 3E 0A 21 9B 1F BE DA 64 14 2A 9B 1F 26 00 01 .>.!....d.*..&..
004C50: 49 02 09 3A 9A 1F BE C2 5D 14 3E 01 C9 21 9B 1F I..:....].>..!..
004C60: 34 C2 41 14 3E 00 C9 3A AA 1E 3C 32 AA 1E 4F 06 4.A.>..:..<2..O.
004C70: 00 2A 95 1F 09 3A A8 1E 77 3A A8 1E FE 3F C2 86 .*...:..w:...?..
004C80: 14 21 F5 1D 36 01 C9 21 9C 1F 71 21 A8 1E 36 3F .!..6..!..q!..6?
004C90: 21 9C 1F 3A AA 1E BE D2 A0 14 CD 67 14 C3 90 14 !..:.......g....
004CA0: C9 21 9D 1F 71 2A 9D 1F 26 00 EB 2A 95 1F 19 7E .!..q*..&..*...~
004CB0: C9 21 F6 1D 36 01 3A C0 1E 32 C1 1E CD F2 11 32 .!..6.:..2.....2
004CC0: A8 1E 3A A8 1E D6 0D D6 01 9F F5 3A A8 1E D6 5D ..:........:...]
004CD0: D6 01 9F C1 48 B1 1F DA BA 15 3A A8 1E D6 41 32 ....H.....:...A2
004CE0: 9E 1F 4F 3E 19 B9 D2 03 15 3A A8 1E FE 20 C2 FA ..O>.....:... ..
004CF0: 14 CD F2 11 32 A8 1E C3 00 15 01 08 03 CD AF 09 ....2...........
004D00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
004D10: 04 00 01 00 02 09 52 E5 04 00 41 02 00 00 00 02 ......R...A.....
004D20: 04 00 46 02 00 00 00 02 04 00 42 02 00 00 00 02 ..F.......B.....
004D30: 04 00 47 02 00 00 00 02 04 00 43 02 00 00 00 02 ..G.......C.....
004D40: 04 00 48 02 00 00 00 02 04 00 44 02 00 00 00 02 ..H.......D.....
004D50: 04 00 49 02 00 00 00 02 04 00 45 02 00 00 00 02 ..I.......E.....
004D60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004D70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004D80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004D90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004DA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004DB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004DC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004DD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004DE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004DF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004E00: 1F 44 4D 1E 21 CD 18 0A CD C6 1C C9 01 06 1E CD .DM.!...........
004E10: 20 12 3A A9 1E D6 01 D6 01 9F F5 3A A8 1E D6 3D .:........:...=
004E20: D6 01 9F C1 48 A1 1F DA 2D 1D CD 5C 18 3A 4E 1F ....H...-..\.:N.
004E30: 32 4F 1F C9 EB 5F 16 00 EB 1A 85 6F 13 1A 8C 67 2O..._.....o...g
004E40: C9 5F 16 00 7B A5 6F 7A A4 67 C9 5E 23 56 EB 29 ._..{.oz.g.^#V.)
004E50: E5 29 29 C1 09 C9 5F 16 00 7B B5 6F 7A B4 67 C9 .))..._..{.oz.g.
004E60: 5E 23 56 EB 29 0D C2 64 1D C9 5E 23 56 EB 7C B7 ^#V.)..d..^#V.|.
004E70: 1F 67 7D 1F 6F 0D C2 6E 1D C9 5F 16 00 7B 95 6F .g}.o..n.._..{.o
004E80: 7A 9C 67 C9 4F 06 00 7B 91 6F 7A 98 67 C9 69 60 z.g.O..{.oz.g.i`
004E90: 4E 23 46 1A 91 6F 13 1A 98 67 C9 6F 26 00 1A 95 N#F..o...g.o&...
004EA0: 6F 13 1A 9C 67 C9 06 0C 48 0D C2 A9 1D 3D C2 A8 o...g...H....=..
004EB0: 1D C9 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004EC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004ED0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004EE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004EF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004F00: 01 27 1E CD 18 0A 21 27 1E 36 00 21 33 1E 36 00 .'....!'.6.!3.6.
004F10: 01 27 1E C5 1E 10 01 06 1E CD 18 0A 3A 31 1E 07 .'..........:1..
004F20: 2F 21 61 1F B6 1F D2 45 1C 2A C4 1F 23 22 C4 1F /!a....E.*..#"..
004F30: 3E 01 CD 7A 1D B5 C2 3F 1C 01 43 04 CD 39 08 CD >..z...?..C..9..
004F40: 49 1C CD B2 1A C3 81 1B C9 CD 2E 08 21 C6 1F 36 I...........!..6
004F50: 01 3E 0B 21 C6 1F BE DA 87 1C 2A C6 1F 26 00 01 .>.!......*..&..
004F60: 27 1E 09 7E 32 C7 1F FE 20 CA 80 1C 3A C6 1F FE '..~2... ...:...
004F70: 09 C2 79 1C 0E 2E CD 1C 08 2A C7 1F 4D CD 1C 08 ..y......*..M...
004F80: 21 C6 1F 34 C2 51 1C C9 3E 00 21 94 1F BE D2 9B !..4.Q..>.!.....
004F90: 1C 3A 94 1F 3D 32 03 1E C3 A1 1C 3A FC 1D 32 03 .:..=2.....:..2.
004FA0: 1E C9 3A F6 1D 1F D2 AC 1C CD 5C 18 3E 00 21 94 ..:.......\.>.!.
004FB0: 1F BE D2 BF 1C 3A 94 1F 3D 32 4B 1E C3 C5 1C 3A .....:..=2K....:
004FC0: FC 1D 32 4B 1E C9 21 C0 1E 3A C1 1E BE CA D1 1C ..2K..!..:......
004FD0: C9 21 03 1E 3A 4B 1E BE C2 DE 1C CD 5C 18 C9 CD .!..:K......\...
004FE0: 11 12 3A A8 1E FE 0D CA ED 1C CD 5C 18 C9 21 C9 ..:........\..!.
004FF0: 1F 70 2B 71 CD 88 1C CD DF 1C 01 06 1E C5 2A C8 .p+q..........*.
005000: 59 4D 54 42 53 5A 20 20 20 33 30 35 30 20 20 2F YMTBSZ 3050 /
005010: 2A 20 4E 55 4D 4C 4F 43 53 2A 53 59 4D 41 56 47 * NUMLOCS*SYMAVG
005020: 20 2B 20 4E 55 4D 47 4C 42 53 2A 53 59 4D 4D 41 + NUMGLBS*SYMMA
005030: 58 20 2A 2F 0D 0A 20 0D 0A 2F 2A 0D 0A 2A 2A 20 X */.. ../*..**
005040: 53 79 73 74 65 6D 20 77 69 64 65 20 6E 61 6D 65 System wide name
005050: 20 73 69 7A 65 20 28 66 6F 72 20 73 79 6D 62 6F size (for symbo
005060: 6C 73 29 0D 0A 2A 2F 0D 0A 23 64 65 66 69 6E 65 ls)..*/..#define
005070: 20 4E 41 4D 45 53 49 5A 45 20 39 0D 0A 23 64 65 NAMESIZE 9..#de
005080: 66 69 6E 65 20 4E 41 4D 45 4D 41 58 20 20 38 0D fine NAMEMAX 8.
005090: 0A 20 0D 0A 2F 2A 0D 0A 2A 2A 20 70 6F 73 73 69 . ../*..** possi
0050A0: 62 6C 65 20 65 6E 74 72 69 65 73 20 66 6F 72 20 ble entries for
0050B0: 22 49 44 45 4E 54 22 0D 0A 2A 2F 0D 0A 23 64 65 "IDENT"..*/..#de
0050C0: 66 69 6E 65 20 4C 41 42 45 4C 20 20 20 20 30 0D fine LABEL 0.
0050D0: 0A 23 64 65 66 69 6E 65 20 56 41 52 49 41 42 4C .#define VARIABL
0050E0: 45 20 31 0D 0A 23 64 65 66 69 6E 65 20 41 52 52 E 1..#define ARR
0050F0: 41 59 20 20 20 20 32 0D 0A 23 64 65 66 69 6E 65 AY 2..#define
005100: 20 50 4F 49 4E 54 45 52 20 20 33 0D 0A 23 64 65 POINTER 3..#de
005110: 66 69 6E 65 20 46 55 4E 43 54 49 4F 4E 20 34 0D fine FUNCTION 4.
005120: 0A 20 0D 0A 2F 2A 0D 0A 2A 2A 20 70 6F 73 73 69 . ../*..** possi
005130: 62 6C 65 20 65 6E 74 72 69 65 73 20 66 6F 72 20 ble entries for
005140: 22 54 59 50 45 22 0D 0A 2A 2A 20 20 20 20 6C 6F "TYPE"..** lo
005150: 77 20 6F 72 64 65 72 20 32 20 62 69 74 73 20 6D w order 2 bits m
005160: 61 6B 65 20 74 79 70 65 20 75 6E 69 71 75 65 20 ake type unique
005170: 77 69 74 68 69 6E 20 6C 65 6E 67 74 68 0D 0A 2A within length..*
005180: 2A 20 20 20 20 68 69 67 68 20 6F 72 64 65 72 20 * high order
005190: 62 69 74 73 20 67 69 76 65 20 6C 65 6E 67 74 68 bits give length
0051A0: 20 6F 66 20 6F 62 6A 65 63 74 0D 0A 2A 2F 0D 0A of object..*/..
0051B0: 2F 2A 20 20 20 20 20 20 4C 41 42 45 4C 20 20 20 /* LABEL
0051C0: 30 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 43 43 0 */..#define CC
0051D0: 48 41 52 20 20 20 28 31 3C 3C 32 29 0D 0A 23 64 HAR (1<<2)..#d
0051E0: 65 66 69 6E 65 20 43 49 4E 54 20 20 20 20 28 42 efine CINT (B
0051F0: 50 57 3C 3C 32 29 0D 0A 20 0D 0A 2F 2A 0D 0A 2A PW<<2).. ../*..*
005200: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005210: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005220: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005230: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005240: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005250: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005260: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005270: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005280: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005290: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0052A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0052B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0052C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0052D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0052E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0052F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005300: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005310: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005320: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005330: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005340: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005350: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005360: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005370: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005380: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005390: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0053A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0053B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0053C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0053D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0053E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0053F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005400: 2A 20 70 6F 73 73 69 62 6C 65 20 65 6E 74 72 69 * possible entri
005410: 65 73 20 66 6F 72 20 22 43 4C 41 53 53 22 0D 0A es for "CLASS"..
005420: 2A 2F 0D 0A 2F 2A 20 20 20 20 20 20 4C 41 42 45 */../* LABE
005430: 4C 20 20 20 20 20 30 20 2A 2F 0D 0A 23 64 65 66 L 0 */..#def
005440: 69 6E 65 20 53 54 41 54 49 43 20 20 20 20 31 0D ine STATIC 1.
005450: 0A 23 64 65 66 69 6E 65 20 41 55 54 4F 4D 41 54 .#define AUTOMAT
005460: 49 43 20 32 0D 0A 23 64 65 66 69 6E 65 20 45 58 IC 2..#define EX
005470: 54 45 52 4E 41 4C 20 20 33 0D 0A 23 64 65 66 69 TERNAL 3..#defi
005480: 6E 65 20 41 55 54 4F 45 58 54 20 20 20 34 0D 0A ne AUTOEXT 4..
005490: 0D 0A 2F 2A 0D 0A 2A 2A 20 22 73 77 69 74 63 68 ../*..** "switch
0054A0: 22 20 74 61 62 6C 65 0D 0A 2A 2F 0D 0A 23 64 65 " table..*/..#de
0054B0: 66 69 6E 65 20 53 57 53 49 5A 20 20 20 28 32 2A fine SWSIZ (2*
0054C0: 42 50 57 29 0D 0A 23 64 65 66 69 6E 65 20 53 57 BPW)..#define SW
0054D0: 54 41 42 53 5A 20 28 36 30 2A 53 57 53 49 5A 29 TABSZ (60*SWSIZ)
0054E0: 0D 0A 20 0D 0A 2F 2A 0D 0A 2A 2A 20 22 77 68 69 .. ../*..** "whi
0054F0: 6C 65 22 20 73 74 61 74 65 6D 65 6E 74 20 71 75 le" statement qu
005500: 65 75 65 0D 0A 2A 2F 0D 0A 23 64 65 66 69 6E 65 eue..*/..#define
005510: 20 57 51 54 41 42 53 5A 20 20 33 30 0D 0A 23 64 WQTABSZ 30..#d
005520: 65 66 69 6E 65 20 57 51 53 49 5A 20 20 20 20 20 efine WQSIZ
005530: 33 0D 0A 23 64 65 66 69 6E 65 20 57 51 4D 41 58 3..#define WQMAX
005540: 20 20 20 28 77 71 2B 57 51 54 41 42 53 5A 2D 57 (wq+WQTABSZ-W
005550: 51 53 49 5A 29 0D 0A 20 0D 0A 2F 2A 0D 0A 2A 2A QSIZ).. ../*..**
005560: 20 65 6E 74 72 79 20 6F 66 66 73 65 74 73 20 69 entry offsets i
005570: 6E 20 77 68 69 6C 65 20 71 75 65 75 65 0D 0A 2A n while queue..*
005580: 2F 0D 0A 23 64 65 66 69 6E 65 20 57 51 53 50 20 /..#define WQSP
005590: 20 20 20 30 0D 0A 23 64 65 66 69 6E 65 20 57 51 0..#define WQ
0055A0: 4C 4F 4F 50 20 20 31 0D 0A 23 64 65 66 69 6E 65 LOOP 1..#define
0055B0: 20 57 51 45 58 49 54 20 20 32 0D 0A 20 0D 0A 2F WQEXIT 2.. ../
0055C0: 2A 0D 0A 2A 2A 20 6C 69 74 65 72 61 6C 20 70 6F *..** literal po
0055D0: 6F 6C 0D 0A 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 ol..*/..#define
0055E0: 4C 49 54 41 42 53 5A 20 38 30 30 0D 0A 23 64 65 LITABSZ 800..#de
0055F0: 66 69 6E 65 20 4C 49 54 4D 41 58 20 20 28 4C 49 fine LITMAX (LI
005600: 3E 3E 3E 20 53 54 44 49 4F 2E 48 20 32 39 36 0D >>> STDIO.H 296.
005610: 0A 2F 2A 0D 0A 2A 2A 20 53 54 44 49 4F 2E 48 20 ./*..** STDIO.H
005620: 2D 2D 20 53 74 61 6E 64 61 72 64 20 53 6D 61 6C -- Standard Smal
005630: 6C 2D 43 20 44 65 66 69 6E 69 74 69 6F 6E 73 0D l-C Definitions.
005640: 0A 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 73 74 64 .*/..#define std
005650: 69 6E 20 20 20 20 30 0D 0A 23 64 65 66 69 6E 65 in 0..#define
005660: 20 73 74 64 6F 75 74 20 20 20 31 0D 0A 23 64 65 stdout 1..#de
005670: 66 69 6E 65 20 73 74 64 65 72 72 20 20 20 32 0D fine stderr 2.
005680: 0A 23 64 65 66 69 6E 65 20 45 52 52 20 20 20 28 .#define ERR (
005690: 2D 32 29 0D 0A 23 64 65 66 69 6E 65 20 45 4F 46 -2)..#define EOF
0056A0: 20 20 20 28 2D 31 29 0D 0A 23 64 65 66 69 6E 65 (-1)..#define
0056B0: 20 59 45 53 20 20 20 20 20 20 31 0D 0A 23 64 65 YES 1..#de
0056C0: 66 69 6E 65 20 4E 4F 20 20 20 20 20 20 20 30 0D fine NO 0.
0056D0: 0A 23 64 65 66 69 6E 65 20 4E 55 4C 4C 20 20 20 .#define NULL
0056E0: 20 20 30 0D 0A 23 64 65 66 69 6E 65 20 43 52 20 0..#define CR
0056F0: 20 20 20 20 20 31 33 0D 0A 23 64 65 66 69 6E 65 13..#define
005700: 20 4C 46 20 20 20 20 20 20 31 30 0D 0A 23 64 65 LF 10..#de
005710: 66 69 6E 65 20 42 45 4C 4C 20 20 20 20 20 37 0D fine BELL 7.
005720: 0A 23 64 65 66 69 6E 65 20 53 50 41 43 45 20 20 .#define SPACE
005730: 27 20 27 0D 0A 23 64 65 66 69 6E 65 20 4E 45 57 ' '..#define NEW
005740: 4C 49 4E 45 20 4C 46 0D 0A 3E 3E 3E 20 4E 4F 54 LINE LF..>>> NOT
005750: 49 43 45 2E 48 20 39 39 0D 0A 23 64 65 66 69 6E ICE.H 99..#defin
005760: 65 20 56 45 52 53 49 4F 4E 20 22 56 65 72 73 69 e VERSION "Versi
005770: 6F 6E 20 32 2E 31 20 28 52 65 76 2E 20 36 37 29 on 2.1 (Rev. 67)
005780: 5C 6E 22 0D 0A 23 64 65 66 69 6E 65 20 43 52 49 \n"..#define CRI
005790: 47 48 54 31 20 22 43 6F 70 79 72 69 67 68 74 20 GHT1 "Copyright
0057A0: 31 39 38 32 2C 20 31 39 38 33 20 4A 2E 20 45 2E 1982, 1983 J. E.
0057B0: 20 48 65 6E 64 72 69 78 5C 6E 5C 6E 22 0D 0A 3E Hendrix\n\n"..>
0057C0: 3E 3E 20 43 43 2E 44 45 46 20 32 37 37 30 0D 0A >> CC.DEF 2770..
0057D0: 2F 2A 0D 0A 2A 2A 20 53 6D 61 6C 6C 2D 43 20 43 /*..** Small-C C
0057E0: 6F 6D 70 69 6C 65 72 20 53 79 6D 62 6F 6C 20 44 ompiler Symbol D
0057F0: 65 66 69 6E 69 74 69 6F 6E 73 0D 0A 2A 2F 0D 0A efinitions..*/..
005800: 54 41 42 53 5A 2D 31 29 0D 0A 20 0D 0A 2F 2A 0D TABSZ-1).. ../*.
005810: 0A 2A 2A 20 69 6E 70 75 74 20 6C 69 6E 65 0D 0A .** input line..
005820: 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 4C 49 4E 45 */..#define LINE
005830: 4D 41 58 20 20 31 32 37 0D 0A 23 64 65 66 69 6E MAX 127..#defin
005840: 65 20 4C 49 4E 45 53 49 5A 45 20 31 32 38 0D 0A e LINESIZE 128..
005850: 0D 0A 2F 2A 0D 0A 2A 2A 20 6F 75 74 70 75 74 20 ../*..** output
005860: 73 74 61 67 69 6E 67 20 62 75 66 66 65 72 20 73 staging buffer s
005870: 69 7A 65 0D 0A 2A 2F 0D 0A 23 64 65 66 69 6E 65 ize..*/..#define
005880: 20 53 54 41 47 45 53 49 5A 45 20 20 20 38 30 30 STAGESIZE 800
005890: 0D 0A 23 64 65 66 69 6E 65 20 53 54 41 47 45 4C ..#define STAGEL
0058A0: 49 4D 49 54 20 20 28 53 54 41 47 45 53 49 5A 45 IMIT (STAGESIZE
0058B0: 2D 31 29 0D 0A 20 0D 0A 2F 2A 0D 0A 2A 2A 20 6D -1).. ../*..** m
0058C0: 61 63 72 6F 20 28 64 65 66 69 6E 65 29 20 70 6F acro (define) po
0058D0: 6F 6C 0D 0A 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 ol..*/..#define
0058E0: 4D 41 43 4E 42 52 20 20 20 31 33 30 0D 0A 23 64 MACNBR 130..#d
0058F0: 65 66 69 6E 65 20 4D 41 43 4E 53 49 5A 45 20 28 efine MACNSIZE (
005900: 4D 41 43 4E 42 52 2A 28 4E 41 4D 45 53 49 5A 45 MACNBR*(NAMESIZE
005910: 2B 32 29 29 0D 0A 23 64 65 66 69 6E 65 20 4D 41 +2))..#define MA
005920: 43 4E 45 4E 44 20 20 28 6D 61 63 6E 2B 4D 41 43 CNEND (macn+MAC
005930: 4E 53 49 5A 45 29 0D 0A 23 64 65 66 69 6E 65 20 NSIZE)..#define
005940: 4D 41 43 51 53 49 5A 45 20 28 4D 41 43 4E 42 52 MACQSIZE (MACNBR
005950: 2A 37 29 0D 0A 23 64 65 66 69 6E 65 20 4D 41 43 *7)..#define MAC
005960: 4D 41 58 20 20 20 28 4D 41 43 51 53 49 5A 45 2D MAX (MACQSIZE-
005970: 31 29 0D 0A 20 0D 0A 2F 2A 0D 0A 2A 2A 20 73 74 1).. ../*..** st
005980: 61 74 65 6D 65 6E 74 20 74 79 70 65 73 0D 0A 2A atement types..*
005990: 2F 0D 0A 23 64 65 66 69 6E 65 20 53 54 49 46 20 /..#define STIF
0059A0: 20 20 20 20 20 31 0D 0A 23 64 65 66 69 6E 65 20 1..#define
0059B0: 53 54 57 48 49 4C 45 20 20 20 32 0D 0A 23 64 65 STWHILE 2..#de
0059C0: 66 69 6E 65 20 53 54 52 45 54 55 52 4E 20 20 33 fine STRETURN 3
0059D0: 0D 0A 23 64 65 66 69 6E 65 20 53 54 42 52 45 41 ..#define STBREA
0059E0: 4B 20 20 20 34 0D 0A 23 64 65 66 69 6E 65 20 53 K 4..#define S
0059F0: 54 43 4F 4E 54 20 20 20 20 35 0D 0A 23 64 65 66 TCONT 5..#def
005A00: 0D 0A 2F 2A 0D 0A 2A 2A 20 63 6F 6D 70 69 6C 65 ../*..** compile
005A10: 20 6F 70 74 69 6F 6E 73 0D 0A 2A 2F 0D 0A 23 64 options..*/..#d
005A20: 65 66 69 6E 65 20 4E 4F 43 43 41 52 47 43 09 2F efine NOCCARGC./
005A30: 2A 20 6E 6F 20 61 72 67 75 6D 65 6E 74 20 63 6F * no argument co
005A40: 75 6E 74 73 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 unts */..#define
005A50: 20 53 45 50 41 52 41 54 45 09 2F 2A 20 63 6F 6D SEPARATE./* com
005A60: 70 69 6C 65 20 73 65 70 61 72 61 74 65 6C 79 20 pile separately
005A70: 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 4F 50 54 49 */..#define OPTI
005A80: 4D 49 5A 45 09 2F 2A 20 63 6F 6D 70 69 6C 65 20 MIZE./* compile
005A90: 6F 75 74 70 75 74 20 6F 70 74 69 6D 69 7A 65 72 output optimizer
005AA0: 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 44 59 4E */..#define DYN
005AB0: 41 4D 49 43 20 09 2F 2A 20 61 6C 6C 6F 63 61 74 AMIC ./* allocat
005AC0: 65 20 6D 65 6D 6F 72 79 20 64 79 6E 61 6D 69 63 e memory dynamic
005AD0: 61 6C 6C 79 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 ally */..#define
005AE0: 20 43 4F 4C 09 09 2F 2A 20 74 65 72 6D 69 6E 61 COL../* termina
005AF0: 74 65 20 6C 61 62 65 6C 73 20 77 69 74 68 20 61 te labels with a
005B00: 20 63 6F 6C 6F 6E 20 2A 2F 0D 0A 2F 2A 20 23 64 colon */../* #d
005B10: 65 66 69 6E 65 20 55 50 50 45 52 09 2F 2A 20 66 efine UPPER./* f
005B20: 6F 72 63 65 20 73 79 6D 62 6F 6C 73 20 74 6F 20 orce symbols to
005B30: 75 70 70 65 72 20 63 61 73 65 20 2A 2F 0D 0A 23 upper case */..#
005B40: 64 65 66 69 6E 65 20 4C 49 4E 4B 09 09 2F 2A 20 define LINK../*
005B50: 77 69 6C 6C 20 75 73 65 20 77 69 74 68 20 6C 69 will use with li
005B60: 6E 6B 69 6E 67 20 6C 6F 61 64 65 72 20 2A 2F 0D nking loader */.
005B70: 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 6D 61 63 68 69 6E .../*..** machin
005B80: 65 20 64 65 70 65 6E 64 65 6E 74 20 70 61 72 61 e dependent para
005B90: 6D 65 74 65 72 73 0D 0A 2A 2F 0D 0A 23 64 65 66 meters..*/..#def
005BA0: 69 6E 65 20 42 50 57 20 20 20 20 20 32 09 2F 2A ine BPW 2./*
005BB0: 20 62 79 74 65 73 20 70 65 72 20 77 6F 72 64 20 bytes per word
005BC0: 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 4C 42 50 57 */..#define LBPW
005BD0: 20 20 20 20 31 09 2F 2A 20 6C 6F 67 32 28 42 50 1./* log2(BP
005BE0: 57 29 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 53 W) */..#define S
005BF0: 42 50 43 20 20 20 20 31 09 2F 2A 20 73 74 61 63 BPC 1./* stac
005C00: 69 6E 65 20 53 54 41 53 4D 20 20 20 20 20 36 0D ine STASM 6.
005C10: 0A 23 64 65 66 69 6E 65 20 53 54 45 58 50 52 20 .#define STEXPR
005C20: 20 20 20 37 0D 0A 23 64 65 66 69 6E 65 20 53 54 7..#define ST
005C30: 44 4F 20 20 20 20 20 20 38 09 2F 2A 20 63 6F 6D DO 8./* com
005C40: 70 69 6C 65 20 22 64 6F 22 20 6C 6F 67 69 63 20 pile "do" logic
005C50: 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 53 54 46 4F */..#define STFO
005C60: 52 20 20 20 20 20 39 09 2F 2A 20 63 6F 6D 70 69 R 9./* compi
005C70: 6C 65 20 22 66 6F 72 22 20 6C 6F 67 69 63 20 2A le "for" logic *
005C80: 2F 0D 0A 23 64 65 66 69 6E 65 20 53 54 53 57 49 /..#define STSWI
005C90: 54 43 48 20 31 30 09 2F 2A 20 63 6F 6D 70 69 6C TCH 10./* compil
005CA0: 65 20 22 73 77 69 74 63 68 2F 63 61 73 65 2F 64 e "switch/case/d
005CB0: 65 66 61 75 6C 74 22 20 6C 6F 67 69 63 20 2A 2F efault" logic */
005CC0: 0D 0A 23 64 65 66 69 6E 65 20 53 54 43 41 53 45 ..#define STCASE
005CD0: 20 20 20 31 31 0D 0A 23 64 65 66 69 6E 65 20 53 11..#define S
005CE0: 54 44 45 46 20 20 20 20 31 32 0D 0A 23 64 65 66 TDEF 12..#def
005CF0: 69 6E 65 20 53 54 47 4F 54 4F 20 20 20 31 33 09 ine STGOTO 13.
005D00: 2F 2A 20 63 6F 6D 70 69 6C 65 20 22 67 6F 74 6F /* compile "goto
005D10: 22 20 6C 6F 67 69 63 20 2A 2F 0D 0A 23 64 65 66 " logic */..#def
005D20: 69 6E 65 20 53 54 4C 41 42 45 4C 20 20 31 34 0D ine STLABEL 14.
005D30: 0A 3E 3E 3E 20 43 43 31 2E 43 20 33 32 39 39 0D .>>> CC1.C 3299.
005D40: 0A 2F 2A 0D 0A 2A 2A 20 53 6D 61 6C 6C 2D 43 20 ./*..** Small-C
005D50: 43 6F 6D 70 69 6C 65 72 20 50 61 72 74 20 31 0D Compiler Part 1.
005D60: 0A 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 20 3C 73 .*/..#include <s
005D70: 74 64 69 6F 2E 68 3E 0D 0A 23 69 6E 63 6C 75 64 tdio.h>..#includ
005D80: 65 20 22 6E 6F 74 69 63 65 2E 68 22 0D 0A 23 69 e "notice.h"..#i
005D90: 6E 63 6C 75 64 65 20 22 63 63 2E 64 65 66 22 0D nclude "cc.def".
005DA0: 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 6D 69 73 63 65 6C .../*..** miscel
005DB0: 6C 61 6E 65 6F 75 73 20 73 74 6F 72 61 67 65 0D laneous storage.
005DC0: 0A 2A 2F 0D 0A 63 68 61 72 0D 0A 23 69 66 64 65 .*/..char..#ifde
005DD0: 66 20 4F 50 54 49 4D 49 5A 45 0D 0A 20 20 6F 70 f OPTIMIZE.. op
005DE0: 74 69 6D 69 7A 65 2C 09 2F 2A 20 6F 70 74 69 6D timize,./* optim
005DF0: 69 7A 65 20 6F 75 74 70 75 74 20 6F 66 20 73 74 ize output of st
005E00: 6B 20 62 79 74 65 73 20 70 65 72 20 63 68 61 72 k bytes per char
005E10: 61 63 74 65 72 20 2A 2F 0D 0A 23 64 65 66 69 6E acter */..#defin
005E20: 65 20 45 52 52 43 4F 44 45 20 37 09 2F 2A 20 6F e ERRCODE 7./* o
005E30: 70 20 73 79 73 20 72 65 74 75 72 6E 20 63 6F 64 p sys return cod
005E40: 65 20 2A 2F 0D 0A 20 0D 0A 2F 2A 0D 0A 2A 2A 20 e */.. ../*..**
005E50: 73 79 6D 62 6F 6C 20 74 61 62 6C 65 20 66 6F 72 symbol table for
005E60: 6D 61 74 0D 0A 2A 2F 0D 0A 23 64 65 66 69 6E 65 mat..*/..#define
005E70: 20 49 44 45 4E 54 20 20 20 20 30 0D 0A 23 64 65 IDENT 0..#de
005E80: 66 69 6E 65 20 54 59 50 45 20 20 20 20 20 31 0D fine TYPE 1.
005E90: 0A 23 64 65 66 69 6E 65 20 43 4C 41 53 53 20 20 .#define CLASS
005EA0: 20 20 32 0D 0A 23 64 65 66 69 6E 65 20 4F 46 46 2..#define OFF
005EB0: 53 45 54 20 20 20 33 0D 0A 23 64 65 66 69 6E 65 SET 3..#define
005EC0: 20 4E 41 4D 45 20 20 20 20 20 35 0D 0A 23 64 65 NAME 5..#de
005ED0: 66 69 6E 65 20 4F 46 46 53 49 5A 45 20 28 4E 41 fine OFFSIZE (NA
005EE0: 4D 45 2D 4F 46 46 53 45 54 29 0D 0A 23 64 65 66 ME-OFFSET)..#def
005EF0: 69 6E 65 20 53 59 4D 41 56 47 20 20 31 30 0D 0A ine SYMAVG 10..
005F00: 23 64 65 66 69 6E 65 20 53 59 4D 4D 41 58 20 20 #define SYMMAX
005F10: 31 34 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 73 79 6D 14..../*..** sym
005F20: 62 6F 6C 20 74 61 62 6C 65 20 70 61 72 61 6D 65 bol table parame
005F30: 74 65 72 73 0D 0A 2A 2F 0D 0A 23 64 65 66 69 6E ters..*/..#defin
005F40: 65 20 4E 55 4D 4C 4F 43 53 20 20 20 32 35 0D 0A e NUMLOCS 25..
005F50: 23 64 65 66 69 6E 65 20 53 54 41 52 54 4C 4F 43 #define STARTLOC
005F60: 20 20 73 79 6D 74 61 62 0D 0A 23 64 65 66 69 6E symtab..#defin
005F70: 65 20 45 4E 44 4C 4F 43 20 20 20 28 73 79 6D 74 e ENDLOC (symt
005F80: 61 62 2B 28 4E 55 4D 4C 4F 43 53 2A 53 59 4D 41 ab+(NUMLOCS*SYMA
005F90: 56 47 29 29 0D 0A 23 64 65 66 69 6E 65 20 4E 55 VG))..#define NU
005FA0: 4D 47 4C 42 53 20 20 20 32 30 30 0D 0A 23 64 65 MGLBS 200..#de
005FB0: 66 69 6E 65 20 53 54 41 52 54 47 4C 42 20 20 45 fine STARTGLB E
005FC0: 4E 44 4C 4F 43 0D 0A 23 64 65 66 69 6E 65 20 45 NDLOC..#define E
005FD0: 4E 44 47 4C 42 20 20 20 28 45 4E 44 4C 4F 43 2B NDGLB (ENDLOC+
005FE0: 28 28 4E 55 4D 47 4C 42 53 2D 31 29 2A 53 59 4D ((NUMGLBS-1)*SYM
005FF0: 4D 41 58 29 29 0D 0A 23 64 65 66 69 6E 65 20 53 MAX))..#define S
006000: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
006010: 05 00 01 00 02 09 52 E5 05 00 41 02 00 00 00 02 ......R...A.....
006020: 05 00 46 02 00 00 00 02 05 00 42 02 00 00 00 02 ..F.......B.....
006030: 05 00 47 02 00 00 00 02 05 00 43 02 00 00 00 02 ..G.......C.....
006040: 05 00 48 02 00 00 00 02 05 00 44 02 00 00 00 02 ..H.......D.....
006050: 05 00 49 02 00 00 00 02 05 00 45 02 00 00 00 02 ..I.......E.....
006060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
006070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
006080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
006090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
006100: 61 67 69 6E 67 20 62 75 66 66 65 72 20 2A 2F 0D aging buffer */.
006110: 0A 23 65 6E 64 69 66 0D 0A 20 20 61 6C 61 72 6D .#endif.. alarm
006120: 2C 09 2F 2A 20 61 75 64 69 62 6C 65 20 61 6C 61 ,./* audible ala
006130: 72 6D 20 6F 6E 20 65 72 72 6F 72 73 3F 20 2A 2F rm on errors? */
006140: 0D 0A 20 20 6D 6F 6E 69 74 6F 72 2C 09 2F 2A 20 .. monitor,./*
006150: 6D 6F 6E 69 74 6F 72 20 66 75 6E 63 74 69 6F 6E monitor function
006160: 20 68 65 61 64 65 72 73 3F 20 2A 2F 0D 0A 20 20 headers? */..
006170: 70 61 75 73 65 2C 09 2F 2A 20 70 61 75 73 65 20 pause,./* pause
006180: 66 6F 72 20 6F 70 65 72 61 74 6F 72 20 6F 6E 20 for operator on
006190: 65 72 72 6F 72 73 3F 20 2A 2F 0D 0A 23 69 66 64 errors? */..#ifd
0061A0: 65 66 20 44 59 4E 41 4D 49 43 0D 0A 20 2A 73 74 ef DYNAMIC.. *st
0061B0: 61 67 65 2C 09 2F 2A 20 6F 75 74 70 75 74 20 73 age,./* output s
0061C0: 74 61 67 69 6E 67 20 62 75 66 66 65 72 20 2A 2F taging buffer */
0061D0: 0D 0A 20 2A 73 79 6D 74 61 62 2C 09 2F 2A 20 73 .. *symtab,./* s
0061E0: 79 6D 62 6F 6C 20 74 61 62 6C 65 20 2A 2F 0D 0A ymbol table */..
0061F0: 20 2A 6C 69 74 71 2C 09 09 2F 2A 20 6C 69 74 65 *litq,../* lite
006200: 72 61 6C 20 70 6F 6F 6C 20 2A 2F 0D 0A 20 2A 6D ral pool */.. *m
006210: 61 63 6E 2C 09 09 2F 2A 20 6D 61 63 72 6F 20 6E acn,../* macro n
006220: 61 6D 65 20 62 75 66 66 65 72 20 2A 2F 0D 0A 20 ame buffer */..
006230: 2A 6D 61 63 71 2C 09 09 2F 2A 20 6D 61 63 72 6F *macq,../* macro
006240: 20 73 74 72 69 6E 67 20 62 75 66 66 65 72 20 2A string buffer *
006250: 2F 0D 0A 20 2A 70 6C 69 6E 65 2C 09 2F 2A 20 70 /.. *pline,./* p
006260: 61 72 73 69 6E 67 20 62 75 66 66 65 72 20 2A 2F arsing buffer */
006270: 0D 0A 20 2A 6D 6C 69 6E 65 2C 09 2F 2A 20 6D 61 .. *mline,./* ma
006280: 63 72 6F 20 62 75 66 66 65 72 20 2A 2F 0D 0A 23 cro buffer */..#
006290: 65 6C 73 65 0D 0A 20 20 73 74 61 67 65 5B 53 54 else.. stage[ST
0062A0: 41 47 45 53 49 5A 45 5D 2C 0D 0A 20 20 73 79 6D AGESIZE],.. sym
0062B0: 74 61 62 5B 53 59 4D 54 42 53 5A 5D 2C 0D 0A 20 tab[SYMTBSZ],..
0062C0: 20 6C 69 74 71 5B 4C 49 54 41 42 53 5A 5D 2C 0D litq[LITABSZ],.
0062D0: 0A 20 20 6D 61 63 6E 5B 4D 41 43 4E 53 49 5A 45 . macn[MACNSIZE
0062E0: 5D 2C 0D 0A 20 20 6D 61 63 71 5B 4D 41 43 51 53 ],.. macq[MACQS
0062F0: 49 5A 45 5D 2C 0D 0A 20 20 70 6C 69 6E 65 5B 4C IZE],.. pline[L
006300: 2C 09 2F 2A 20 66 64 20 23 20 66 6F 72 20 6F 75 ,./* fd # for ou
006310: 74 70 75 74 20 66 69 6C 65 20 2A 2F 0D 0A 20 20 tput file */..
006320: 66 69 6C 65 73 2C 09 2F 2A 20 6E 6F 6E 2D 7A 65 files,./* non-ze
006330: 72 6F 20 69 66 20 66 69 6C 65 20 6C 69 73 74 20 ro if file list
006340: 73 70 65 63 69 66 69 65 64 20 6F 6E 20 63 6D 64 specified on cmd
006350: 20 6C 69 6E 65 20 2A 2F 0D 0A 20 20 66 69 6C 65 line */.. file
006360: 61 72 67 2C 09 2F 2A 20 63 75 72 20 66 69 6C 65 arg,./* cur file
006370: 20 61 72 67 20 69 6E 64 65 78 20 2A 2F 0D 0A 20 arg index */..
006380: 20 67 6C 62 66 6C 61 67 2C 09 2F 2A 20 6E 6F 6E glbflag,./* non
006390: 2D 7A 65 72 6F 20 69 66 20 69 6E 74 65 72 6E 61 -zero if interna
0063A0: 6C 20 67 6C 6F 62 61 6C 73 20 2A 2F 0D 0A 20 20 l globals */..
0063B0: 63 74 65 78 74 2C 09 2F 2A 20 6E 6F 6E 2D 7A 65 ctext,./* non-ze
0063C0: 72 6F 20 74 6F 20 69 6E 74 65 72 6D 69 78 20 63 ro to intermix c
0063D0: 2D 73 6F 75 72 63 65 20 2A 2F 0D 0A 20 20 63 63 -source */.. cc
0063E0: 6F 64 65 2C 09 2F 2A 20 6E 6F 6E 2D 7A 65 72 6F ode,./* non-zero
0063F0: 20 77 68 69 6C 65 20 70 61 72 73 69 6E 67 20 63 while parsing c
006400: 2D 63 6F 64 65 20 2A 2F 0D 0A 09 09 2F 2A 20 7A -code */..../* z
006410: 65 72 6F 20 77 68 65 6E 20 70 61 73 73 69 6E 67 ero when passing
006420: 20 61 73 73 65 6D 62 6C 79 20 63 6F 64 65 20 2A assembly code *
006430: 2F 0D 0A 20 20 6C 69 73 74 66 70 2C 09 2F 2A 20 /.. listfp,./*
006440: 66 69 6C 65 20 70 6F 69 6E 74 65 72 20 74 6F 20 file pointer to
006450: 6C 69 73 74 20 64 65 76 69 63 65 20 2A 2F 0D 0A list device */..
006460: 20 20 6C 61 73 74 73 74 2C 09 2F 2A 20 6C 61 73 lastst,./* las
006470: 74 20 65 78 65 63 75 74 65 64 20 73 74 61 74 65 t executed state
006480: 6D 65 6E 74 20 74 79 70 65 20 2A 2F 0D 0A 20 2A ment type */.. *
006490: 69 70 74 72 3B 09 09 2F 2A 20 77 6F 72 6B 20 70 iptr;../* work p
0064A0: 74 72 20 74 6F 20 61 6E 79 20 69 6E 74 20 62 75 tr to any int bu
0064B0: 66 66 65 72 20 2A 2F 0D 0A 0D 0A 23 69 6E 63 6C ffer */....#incl
0064C0: 75 64 65 20 22 63 63 31 31 2E 63 22 0D 0A 23 69 ude "cc11.c"..#i
0064D0: 6E 63 6C 75 64 65 20 22 63 63 31 32 2E 63 22 0D nclude "cc12.c".
0064E0: 0A 23 69 6E 63 6C 75 64 65 20 22 63 63 31 33 2E .#include "cc13.
0064F0: 63 22 0D 0A 0D 0A 23 69 66 6E 64 65 66 20 53 45 c"....#ifndef SE
006500: 49 4E 45 53 49 5A 45 5D 2C 0D 0A 20 20 6D 6C 69 INESIZE],.. mli
006510: 6E 65 5B 4C 49 4E 45 53 49 5A 45 5D 2C 0D 0A 20 ne[LINESIZE],..
006520: 20 73 77 71 5B 53 57 54 41 42 53 5A 5D 2C 0D 0A swq[SWTABSZ],..
006530: 23 65 6E 64 69 66 0D 0A 20 2A 6C 69 6E 65 2C 09 #endif.. *line,.
006540: 09 2F 2A 20 70 6F 69 6E 74 73 20 74 6F 20 70 6C ./* points to pl
006550: 69 6E 65 20 6F 72 20 6D 6C 69 6E 65 20 2A 2F 0D ine or mline */.
006560: 0A 20 2A 6C 70 74 72 2C 09 09 2F 2A 20 70 74 72 . *lptr,../* ptr
006570: 20 74 6F 20 65 69 74 68 65 72 20 2A 2F 0D 0A 20 to either */..
006580: 2A 67 6C 62 70 74 72 2C 09 2F 2A 20 70 74 72 73 *glbptr,./* ptrs
006590: 20 74 6F 20 6E 65 78 74 20 65 6E 74 72 69 65 73 to next entries
0065A0: 20 2A 2F 0D 0A 20 2A 6C 6F 63 70 74 72 2C 09 2F */.. *locptr,./
0065B0: 2A 20 70 74 72 20 74 6F 20 6E 65 78 74 20 6C 6F * ptr to next lo
0065C0: 63 61 6C 20 73 79 6D 62 6F 6C 20 2A 2F 0D 0A 20 cal symbol */..
0065D0: 2A 73 74 61 67 65 6E 65 78 74 2C 09 2F 2A 20 6E *stagenext,./* n
0065E0: 65 78 74 20 61 64 64 72 20 69 6E 20 73 74 61 67 ext addr in stag
0065F0: 65 20 2A 2F 0D 0A 20 2A 73 74 61 67 65 6C 61 73 e */.. *stagelas
006600: 74 2C 09 2F 2A 20 6C 61 73 74 20 61 64 64 72 20 t,./* last addr
006610: 69 6E 20 73 74 61 67 65 20 2A 2F 0D 0A 20 20 71 in stage */.. q
006620: 75 6F 74 65 5B 32 5D 2C 09 2F 2A 20 6C 69 74 65 uote[2],./* lite
006630: 72 61 6C 20 73 74 72 69 6E 67 20 66 6F 72 20 27 ral string for '
006640: 22 27 20 2A 2F 0D 0A 20 2A 63 70 74 72 2C 09 09 "' */.. *cptr,..
006650: 2F 2A 20 77 6F 72 6B 20 70 74 72 73 20 74 6F 20 /* work ptrs to
006660: 61 6E 79 20 63 68 61 72 20 62 75 66 66 65 72 20 any char buffer
006670: 2A 2F 0D 0A 20 2A 63 70 74 72 32 2C 0D 0A 20 2A */.. *cptr2,.. *
006680: 63 70 74 72 33 2C 0D 0A 20 20 6D 73 6E 61 6D 65 cptr3,.. msname
006690: 5B 4E 41 4D 45 53 49 5A 45 5D 2C 09 2F 2A 20 6D [NAMESIZE],./* m
0066A0: 61 63 72 6F 20 73 79 6D 62 6F 6C 20 6E 61 6D 65 acro symbol name
0066B0: 20 61 72 72 61 79 20 2A 2F 0D 0A 20 20 73 73 6E array */.. ssn
0066C0: 61 6D 65 5B 4E 41 4D 45 53 49 5A 45 5D 3B 09 2F ame[NAMESIZE];./
0066D0: 2A 20 73 74 61 74 69 63 20 73 79 6D 62 6F 6C 20 * static symbol
0066E0: 6E 61 6D 65 20 61 72 72 61 79 20 2A 2F 0D 0A 69 name array */..i
0066F0: 6E 74 0D 0A 23 69 66 64 65 66 20 53 54 47 4F 54 nt..#ifdef STGOT
006700: 50 41 52 41 54 45 0D 0A 23 69 6E 63 6C 75 64 65 PARATE..#include
006710: 20 22 63 63 32 31 2E 63 22 0D 0A 23 69 6E 63 6C "cc21.c"..#incl
006720: 75 64 65 20 22 63 63 32 32 2E 63 22 0D 0A 23 69 ude "cc22.c"..#i
006730: 6E 63 6C 75 64 65 20 22 63 63 33 31 2E 63 22 0D nclude "cc31.c".
006740: 0A 23 69 6E 63 6C 75 64 65 20 22 63 63 33 32 2E .#include "cc32.
006750: 63 22 0D 0A 23 69 6E 63 6C 75 64 65 20 22 63 63 c"..#include "cc
006760: 33 33 2E 63 22 0D 0A 23 69 6E 63 6C 75 64 65 20 33.c"..#include
006770: 22 63 63 34 31 2E 63 22 0D 0A 23 69 6E 63 6C 75 "cc41.c"..#inclu
006780: 64 65 20 22 63 63 34 32 2E 63 22 0D 0A 23 65 6E de "cc42.c"..#en
006790: 64 69 66 0D 0A 3E 3E 3E 20 43 43 31 31 2E 43 20 dif..>>> CC11.C
0067A0: 35 34 30 39 0D 0A 2F 2A 0D 0A 2A 2A 20 65 78 65 5409../*..** exe
0067B0: 63 75 74 69 6F 6E 20 62 65 67 69 6E 73 20 68 65 cution begins he
0067C0: 72 65 0D 0A 2A 2F 0D 0A 6D 61 69 6E 28 61 72 67 re..*/..main(arg
0067D0: 63 2C 20 61 72 67 76 29 20 69 6E 74 20 61 72 67 c, argv) int arg
0067E0: 63 2C 20 2A 61 72 67 76 3B 20 7B 0D 0A 20 20 61 c, *argv; {.. a
0067F0: 72 67 63 73 3D 61 72 67 63 3B 0D 0A 20 20 61 72 rgcs=argc;.. ar
006800: 67 76 73 3D 61 72 67 76 3B 0D 0A 20 20 66 70 75 gvs=argv;.. fpu
006810: 74 73 28 22 53 6D 61 6C 6C 2D 43 20 43 6F 6D 70 ts("Small-C Comp
006820: 69 6C 65 72 2C 20 22 2C 20 73 74 64 65 72 72 29 iler, ", stderr)
006830: 3B 20 66 70 75 74 73 28 56 45 52 53 49 4F 4E 2C ; fputs(VERSION,
006840: 20 73 74 64 65 72 72 29 3B 0D 0A 20 20 66 70 75 stderr);.. fpu
006850: 74 73 28 43 52 49 47 48 54 31 2C 20 73 74 64 65 ts(CRIGHT1, stde
006860: 72 72 29 3B 0D 0A 23 69 66 64 65 66 20 44 59 4E rr);..#ifdef DYN
006870: 41 4D 49 43 0D 0A 20 20 73 77 6E 65 78 74 3D 63 AMIC.. swnext=c
006880: 61 6C 6C 6F 63 28 53 57 54 41 42 53 5A 2C 20 31 alloc(SWTABSZ, 1
006890: 29 3B 0D 0A 20 20 73 77 65 6E 64 3D 73 77 6E 65 );.. swend=swne
0068A0: 78 74 2B 28 28 53 57 54 41 42 53 5A 2D 53 57 53 xt+((SWTABSZ-SWS
0068B0: 49 5A 29 3E 3E 31 29 3B 0D 0A 20 20 73 74 61 67 IZ)>>1);.. stag
0068C0: 65 3D 63 61 6C 6C 6F 63 28 53 54 41 47 45 53 49 e=calloc(STAGESI
0068D0: 5A 45 2C 20 31 29 3B 0D 0A 20 20 73 74 61 67 65 ZE, 1);.. stage
0068E0: 6C 61 73 74 3D 73 74 61 67 65 2B 53 54 41 47 45 last=stage+STAGE
0068F0: 4C 49 4D 49 54 3B 0D 0A 20 20 77 71 3D 63 61 6C LIMIT;.. wq=cal
006900: 4F 0D 0A 20 20 6E 6F 67 6F 2C 09 09 2F 2A 20 3E O.. nogo,../* >
006910: 20 30 20 64 69 73 61 62 6C 65 73 20 67 6F 74 6F 0 disables goto
006920: 20 73 74 61 74 65 6D 65 6E 74 73 20 2A 2F 0D 0A statements */..
006930: 20 20 6E 6F 6C 6F 63 2C 09 2F 2A 20 3E 20 30 20 noloc,./* > 0
006940: 64 69 73 61 62 6C 65 73 20 62 6C 6F 63 6B 20 6C disables block l
006950: 6F 63 61 6C 73 20 2A 2F 0D 0A 23 65 6E 64 69 66 ocals */..#endif
006960: 0D 0A 20 20 6F 70 5B 31 36 5D 2C 09 2F 2A 20 66 .. op[16],./* f
006970: 75 6E 63 74 69 6F 6E 20 61 64 64 72 65 73 73 65 unction addresse
006980: 73 20 6F 66 20 62 69 6E 61 72 79 20 6F 70 65 72 s of binary oper
006990: 61 74 6F 72 73 20 2A 2F 0D 0A 20 20 6F 70 32 5B ators */.. op2[
0069A0: 31 36 5D 2C 09 2F 2A 20 73 61 6D 65 20 66 6F 72 16],./* same for
0069B0: 20 75 6E 73 69 67 6E 65 64 20 6F 70 65 72 61 74 unsigned operat
0069C0: 6F 72 73 20 2A 2F 0D 0A 20 20 6F 70 69 6E 64 65 ors */.. opinde
0069D0: 78 2C 09 2F 2A 20 69 6E 64 65 78 20 74 6F 20 6D x,./* index to m
0069E0: 61 74 63 68 65 64 20 6F 70 65 72 61 74 6F 72 20 atched operator
0069F0: 2A 2F 0D 0A 20 20 6F 70 73 69 7A 65 2C 09 2F 2A */.. opsize,./*
006A00: 20 73 69 7A 65 20 6F 66 20 6F 70 65 72 61 74 6F size of operato
006A10: 72 20 69 6E 20 62 79 74 65 73 20 2A 2F 0D 0A 20 r in bytes */..
006A20: 20 73 77 61 63 74 69 76 65 2C 09 2F 2A 20 74 72 swactive,./* tr
006A30: 75 65 20 69 6E 73 69 64 65 20 61 20 73 77 69 74 ue inside a swit
006A40: 63 68 20 2A 2F 0D 0A 20 20 73 77 64 65 66 61 75 ch */.. swdefau
006A50: 6C 74 2C 09 2F 2A 20 64 65 66 61 75 6C 74 20 6C lt,./* default l
006A60: 61 62 65 6C 20 23 2C 20 65 6C 73 65 20 30 20 2A abel #, else 0 *
006A70: 2F 0D 0A 20 2A 73 77 6E 65 78 74 2C 09 2F 2A 20 /.. *swnext,./*
006A80: 61 64 64 72 65 73 73 20 6F 66 20 6E 65 78 74 20 address of next
006A90: 65 6E 74 72 79 20 2A 2F 0D 0A 20 2A 73 77 65 6E entry */.. *swen
006AA0: 64 2C 09 2F 2A 20 61 64 64 72 65 73 73 20 6F 66 d,./* address of
006AB0: 20 6C 61 73 74 20 74 61 62 6C 65 20 65 6E 74 72 last table entr
006AC0: 79 20 2A 2F 0D 0A 23 69 66 64 65 66 20 44 59 4E y */..#ifdef DYN
006AD0: 41 4D 49 43 0D 0A 20 2A 77 71 2C 09 09 2F 2A 20 AMIC.. *wq,../*
006AE0: 77 68 69 6C 65 20 71 75 65 75 65 20 2A 2F 0D 0A while queue */..
006AF0: 23 65 6C 73 65 0D 0A 20 20 77 71 5B 57 51 54 41 #else.. wq[WQTA
006B00: 6C 6F 63 28 57 51 54 41 42 53 5A 2C 20 42 50 57 loc(WQTABSZ, BPW
006B10: 29 3B 0D 0A 20 20 6C 69 74 71 3D 63 61 6C 6C 6F );.. litq=callo
006B20: 63 28 4C 49 54 41 42 53 5A 2C 20 31 29 3B 0D 0A c(LITABSZ, 1);..
006B30: 20 20 6D 61 63 6E 3D 63 61 6C 6C 6F 63 28 4D 41 macn=calloc(MA
006B40: 43 4E 53 49 5A 45 2C 20 31 29 3B 0D 0A 20 20 6D CNSIZE, 1);.. m
006B50: 61 63 71 3D 63 61 6C 6C 6F 63 28 4D 41 43 51 53 acq=calloc(MACQS
006B60: 49 5A 45 2C 20 31 29 3B 0D 0A 20 20 70 6C 69 6E IZE, 1);.. plin
006B70: 65 3D 63 61 6C 6C 6F 63 28 4C 49 4E 45 53 49 5A e=calloc(LINESIZ
006B80: 45 2C 20 31 29 3B 0D 0A 20 20 6D 6C 69 6E 65 3D E, 1);.. mline=
006B90: 63 61 6C 6C 6F 63 28 4C 49 4E 45 53 49 5A 45 2C calloc(LINESIZE,
006BA0: 20 31 29 3B 0D 0A 23 65 6C 73 65 0D 0A 20 20 73 1);..#else.. s
006BB0: 77 65 6E 64 3D 28 73 77 6E 65 78 74 3D 73 77 71 wend=(swnext=swq
006BC0: 29 2B 53 57 54 41 42 53 5A 2D 53 57 53 49 5A 3B )+SWTABSZ-SWSIZ;
006BD0: 0D 0A 20 20 73 74 61 67 65 6C 61 73 74 3D 73 74 .. stagelast=st
006BE0: 61 67 65 2B 53 54 41 47 45 4C 49 4D 49 54 3B 0D age+STAGELIMIT;.
006BF0: 0A 23 65 6E 64 69 66 0D 0A 20 20 73 77 61 63 74 .#endif.. swact
006C00: 69 76 65 3D 09 09 2F 2A 20 6E 6F 74 20 69 6E 20 ive=../* not in
006C10: 73 77 69 74 63 68 20 2A 2F 0D 0A 20 20 73 74 61 switch */.. sta
006C20: 67 65 6E 65 78 74 3D 09 09 2F 2A 20 64 69 72 65 genext=../* dire
006C30: 63 74 20 6F 75 74 70 75 74 20 6D 6F 64 65 20 2A ct output mode *
006C40: 2F 0D 0A 20 20 69 66 6C 65 76 65 6C 3D 09 09 2F /.. iflevel=../
006C50: 2A 20 23 69 66 2E 2E 2E 20 6E 65 73 74 69 6E 67 * #if... nesting
006C60: 20 6C 65 76 65 6C 20 3D 20 30 20 2A 2F 0D 0A 20 level = 0 */..
006C70: 20 73 6B 69 70 6C 65 76 65 6C 3D 09 09 2F 2A 20 skiplevel=../*
006C80: 23 69 66 2E 2E 2E 20 6E 6F 74 20 65 6E 63 6F 75 #if... not encou
006C90: 6E 74 65 72 65 64 20 2A 2F 0D 0A 20 20 6D 61 63 ntered */.. mac
006CA0: 70 74 72 3D 09 09 2F 2A 20 63 6C 65 61 72 20 74 ptr=../* clear t
006CB0: 68 65 20 6D 61 63 72 6F 20 70 6F 6F 6C 20 2A 2F he macro pool */
006CC0: 0D 0A 20 20 63 73 70 3D 09 09 09 2F 2A 20 73 74 .. csp=.../* st
006CD0: 61 63 6B 20 70 74 72 20 28 72 65 6C 61 74 69 76 ack ptr (relativ
006CE0: 65 29 20 2A 2F 0D 0A 20 20 65 72 72 66 6C 61 67 e) */.. errflag
006CF0: 3D 09 09 2F 2A 20 6E 6F 74 20 73 6B 69 70 70 69 =../* not skippi
006D00: 42 53 5A 5D 2C 0D 0A 23 65 6E 64 69 66 0D 0A 20 BSZ],..#endif..
006D10: 20 61 72 67 63 73 2C 09 2F 2A 20 73 74 61 74 69 argcs,./* stati
006D20: 63 20 61 72 67 63 20 2A 2F 0D 0A 20 2A 61 72 67 c argc */.. *arg
006D30: 76 73 2C 09 2F 2A 20 73 74 61 74 69 63 20 61 72 vs,./* static ar
006D40: 67 76 20 2A 2F 0D 0A 20 2A 77 71 70 74 72 2C 09 gv */.. *wqptr,.
006D50: 2F 2A 20 70 74 72 20 74 6F 20 6E 65 78 74 20 65 /* ptr to next e
006D60: 6E 74 72 79 20 2A 2F 0D 0A 20 20 6C 69 74 70 74 ntry */.. litpt
006D70: 72 2C 09 2F 2A 20 70 74 72 20 74 6F 20 6E 65 78 r,./* ptr to nex
006D80: 74 20 65 6E 74 72 79 20 2A 2F 0D 0A 20 20 6D 61 t entry */.. ma
006D90: 63 70 74 72 2C 09 2F 2A 20 6D 61 63 72 6F 20 62 cptr,./* macro b
006DA0: 75 66 66 65 72 20 69 6E 64 65 78 20 2A 2F 0D 0A uffer index */..
006DB0: 20 20 70 70 74 72 2C 09 09 2F 2A 20 70 74 72 20 pptr,../* ptr
006DC0: 74 6F 20 70 61 72 73 69 6E 67 20 62 75 66 66 65 to parsing buffe
006DD0: 72 20 2A 2F 0D 0A 20 20 6F 70 65 72 2C 09 09 2F r */.. oper,../
006DE0: 2A 20 61 64 64 72 65 73 73 20 6F 66 20 62 69 6E * address of bin
006DF0: 61 72 79 20 6F 70 65 72 61 74 6F 72 20 66 75 6E ary operator fun
006E00: 63 74 69 6F 6E 20 2A 2F 0D 0A 20 20 63 68 2C 09 ction */.. ch,.
006E10: 09 2F 2A 20 63 75 72 72 65 6E 74 20 63 68 61 72 ./* current char
006E20: 61 63 74 65 72 20 6F 66 20 6C 69 6E 65 20 62 65 acter of line be
006E30: 69 6E 67 20 73 63 61 6E 6E 65 64 20 2A 2F 0D 0A ing scanned */..
006E40: 20 20 6E 63 68 2C 09 09 2F 2A 20 6E 65 78 74 20 nch,../* next
006E50: 63 68 61 72 61 63 74 65 72 20 6F 66 20 6C 69 6E character of lin
006E60: 65 20 62 65 69 6E 67 20 73 63 61 6E 6E 65 64 20 e being scanned
006E70: 2A 2F 0D 0A 20 20 64 65 63 6C 61 72 65 64 2C 09 */.. declared,.
006E80: 2F 2A 20 23 20 6F 66 20 6C 6F 63 61 6C 20 62 79 /* # of local by
006E90: 74 65 73 20 64 65 63 6C 61 72 65 64 2C 20 65 6C tes declared, el
006EA0: 73 65 20 2D 31 20 77 68 65 6E 20 64 6F 6E 65 20 se -1 when done
006EB0: 2A 2F 0D 0A 20 20 69 66 6C 65 76 65 6C 2C 09 2F */.. iflevel,./
006EC0: 2A 20 23 69 66 2E 2E 2E 20 6E 65 73 74 20 6C 65 * #if... nest le
006ED0: 76 65 6C 20 2A 2F 0D 0A 20 20 73 6B 69 70 6C 65 vel */.. skiple
006EE0: 76 65 6C 2C 09 2F 2A 20 6C 65 76 65 6C 20 61 74 vel,./* level at
006EF0: 20 77 68 69 63 68 20 23 69 66 2E 2E 2E 20 73 6B which #if... sk
006F00: 6E 67 20 65 72 72 6F 72 73 20 74 69 6C 6C 20 22 ng errors till "
006F10: 3B 22 20 2A 2F 0D 0A 20 20 65 6F 66 3D 09 09 09 ;" */.. eof=...
006F20: 2F 2A 20 6E 6F 74 20 65 6F 66 20 79 65 74 20 2A /* not eof yet *
006F30: 2F 0D 0A 20 20 6E 63 6D 70 3D 09 09 09 2F 2A 20 /.. ncmp=.../*
006F40: 6E 6F 74 20 69 6E 20 63 6F 6D 70 6F 75 6E 64 20 not in compound
006F50: 73 74 61 74 65 6D 65 6E 74 20 2A 2F 0D 0A 20 20 statement */..
006F60: 66 69 6C 65 73 3D 0D 0A 20 20 66 69 6C 65 61 72 files=.. filear
006F70: 67 3D 0D 0A 20 20 71 75 6F 74 65 5B 31 5D 3D 30 g=.. quote[1]=0
006F80: 3B 0D 0A 20 20 66 75 6E 63 31 3D 09 09 2F 2A 20 ;.. func1=../*
006F90: 66 69 72 73 74 20 66 75 6E 63 74 69 6F 6E 20 2A first function *
006FA0: 2F 0D 0A 20 20 63 63 6F 64 65 3D 31 3B 09 09 2F /.. ccode=1;../
006FB0: 2A 20 65 6E 61 62 6C 65 20 70 72 65 70 72 6F 63 * enable preproc
006FC0: 65 73 73 69 6E 67 20 2A 2F 0D 0A 20 20 77 71 70 essing */.. wqp
006FD0: 74 72 3D 77 71 3B 09 09 2F 2A 20 63 6C 65 61 72 tr=wq;../* clear
006FE0: 20 77 68 69 6C 65 20 71 75 65 75 65 20 2A 2F 0D while queue */.
006FF0: 0A 20 20 71 75 6F 74 65 5B 30 5D 3D 27 22 27 3B . quote[0]='"';
007000: 09 09 2F 2A 20 66 61 6B 65 20 61 20 71 75 6F 74 ../* fake a quot
007010: 65 20 6C 69 74 65 72 61 6C 20 2A 2F 0D 0A 20 20 e literal */..
007020: 69 6E 70 75 74 3D 69 6E 70 75 74 32 3D 45 4F 46 input=input2=EOF
007030: 3B 0D 0A 20 20 61 73 6B 28 29 3B 09 09 2F 2A 20 ;.. ask();../*
007040: 67 65 74 20 75 73 65 72 20 6F 70 74 69 6F 6E 73 get user options
007050: 20 2A 2F 0D 0A 20 20 6F 70 65 6E 66 69 6C 65 28 */.. openfile(
007060: 29 3B 09 09 2F 2A 20 61 6E 64 20 69 6E 69 74 69 );../* and initi
007070: 61 6C 20 69 6E 70 75 74 20 66 69 6C 65 20 2A 2F al input file */
007080: 0D 0A 20 20 70 72 65 70 72 6F 63 65 73 73 28 29 .. preprocess()
007090: 3B 09 09 2F 2A 20 66 65 74 63 68 20 66 69 72 73 ;../* fetch firs
0070A0: 74 20 6C 69 6E 65 20 2A 2F 0D 0A 23 69 66 64 65 t line */..#ifde
0070B0: 66 20 44 59 4E 41 4D 49 43 0D 0A 20 20 73 79 6D f DYNAMIC.. sym
0070C0: 74 61 62 3D 63 61 6C 6C 6F 63 28 28 4E 55 4D 4C tab=calloc((NUML
0070D0: 4F 43 53 2A 53 59 4D 41 56 47 20 2B 20 4E 55 4D OCS*SYMAVG + NUM
0070E0: 47 4C 42 53 2A 53 59 4D 4D 41 58 29 2C 20 31 29 GLBS*SYMMAX), 1)
0070F0: 3B 0D 0A 23 65 6E 64 69 66 0D 0A 20 20 6C 6F 63 ;..#endif.. loc
007100: 69 70 70 69 6E 67 20 73 74 61 72 74 65 64 20 2A ipping started *
007110: 2F 0D 0A 20 20 66 75 6E 63 31 2C 09 2F 2A 20 74 /.. func1,./* t
007120: 72 75 65 20 66 6F 72 20 66 69 72 73 74 20 66 75 rue for first fu
007130: 6E 63 74 69 6F 6E 20 2A 2F 0D 0A 20 20 6E 78 74 nction */.. nxt
007140: 6C 61 62 2C 09 2F 2A 20 6E 65 78 74 20 61 76 61 lab,./* next ava
007150: 69 6C 20 6C 61 62 65 6C 20 23 20 2A 2F 0D 0A 20 il label # */..
007160: 20 6C 69 74 6C 61 62 2C 09 2F 2A 20 6C 61 62 65 litlab,./* labe
007170: 6C 20 23 20 61 73 73 69 67 6E 65 64 20 74 6F 20 l # assigned to
007180: 6C 69 74 65 72 61 6C 20 70 6F 6F 6C 20 2A 2F 0D literal pool */.
007190: 0A 20 20 62 65 67 6C 61 62 2C 09 2F 2A 20 62 65 . beglab,./* be
0071A0: 67 69 6E 6E 69 6E 67 20 6C 61 62 65 6C 20 2D 2D ginning label --
0071B0: 20 66 69 72 73 74 20 66 75 6E 63 74 69 6F 6E 20 first function
0071C0: 2A 2F 0D 0A 20 20 63 73 70 2C 09 09 2F 2A 20 63 */.. csp,../* c
0071D0: 6F 6D 70 69 6C 65 72 20 72 65 6C 61 74 69 76 65 ompiler relative
0071E0: 20 73 74 6B 20 70 74 72 20 2A 2F 0D 0A 20 20 61 stk ptr */.. a
0071F0: 72 67 73 74 6B 2C 09 2F 2A 20 66 75 6E 63 74 69 rgstk,./* functi
007200: 6F 6E 20 61 72 67 20 73 70 20 2A 2F 0D 0A 20 20 on arg sp */..
007210: 61 72 67 74 6F 70 2C 0D 0A 20 20 6E 63 6D 70 2C argtop,.. ncmp,
007220: 09 09 2F 2A 20 23 20 6F 70 65 6E 20 63 6F 6D 70 ../* # open comp
007230: 6F 75 6E 64 20 73 74 61 74 65 6D 65 6E 74 73 20 ound statements
007240: 2A 2F 0D 0A 20 20 65 72 72 66 6C 61 67 2C 09 2F */.. errflag,./
007250: 2A 20 6E 6F 6E 2D 7A 65 72 6F 20 61 66 74 65 72 * non-zero after
007260: 20 31 73 74 20 65 72 72 6F 72 20 69 6E 20 73 74 1st error in st
007270: 61 74 65 6D 65 6E 74 20 2A 2F 0D 0A 20 20 65 6F atement */.. eo
007280: 66 2C 09 09 2F 2A 20 73 65 74 20 6E 6F 6E 2D 7A f,../* set non-z
007290: 65 72 6F 20 6F 6E 20 66 69 6E 61 6C 20 69 6E 70 ero on final inp
0072A0: 75 74 20 65 6F 66 20 2A 2F 0D 0A 20 20 69 6E 70 ut eof */.. inp
0072B0: 75 74 2C 09 2F 2A 20 66 64 20 23 20 66 6F 72 20 ut,./* fd # for
0072C0: 69 6E 70 75 74 20 66 69 6C 65 20 2A 2F 0D 0A 20 input file */..
0072D0: 20 69 6E 70 75 74 32 2C 09 2F 2A 20 66 64 20 23 input2,./* fd #
0072E0: 20 66 6F 72 20 22 69 6E 63 6C 75 64 65 22 20 66 for "include" f
0072F0: 69 6C 65 20 2A 2F 0D 0A 20 20 6F 75 74 70 75 74 ile */.. output
007300: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
007310: 06 00 01 00 02 09 52 E5 06 00 41 02 00 00 00 02 ......R...A.....
007320: 06 00 46 02 00 00 00 02 06 00 42 02 00 00 00 02 ..F.......B.....
007330: 06 00 47 02 00 00 00 02 06 00 43 02 00 00 00 02 ..G.......C.....
007340: 06 00 48 02 00 00 00 02 06 00 44 02 00 00 00 02 ..H.......D.....
007350: 06 00 49 02 00 00 00 02 06 00 45 02 00 00 00 02 ..I.......E.....
007360: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
007370: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
007380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
007390: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0073A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0073B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0073C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0073D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0073E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0073F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
007400: 70 74 72 3D 53 54 41 52 54 4C 4F 43 3B 0D 0A 20 ptr=STARTLOC;..
007410: 20 67 6C 62 70 74 72 3D 53 54 41 52 54 47 4C 42 glbptr=STARTGLB
007420: 3B 0D 0A 20 20 67 6C 62 66 6C 61 67 3D 31 3B 0D ;.. glbflag=1;.
007430: 0A 20 20 63 74 65 78 74 3D 30 3B 0D 0A 20 20 68 . ctext=0;.. h
007440: 65 61 64 65 72 28 29 3B 09 09 2F 2A 20 69 6E 74 eader();../* int
007450: 72 6F 20 63 6F 64 65 20 2A 2F 0D 0A 20 20 73 65 ro code */.. se
007460: 74 6F 70 73 28 29 3B 09 09 2F 2A 20 73 65 74 20 tops();../* set
007470: 76 61 6C 75 65 73 20 69 6E 20 6F 70 20 61 72 72 values in op arr
007480: 61 79 73 20 2A 2F 0D 0A 20 20 70 61 72 73 65 28 ays */.. parse(
007490: 29 3B 09 09 2F 2A 20 70 72 6F 63 65 73 73 20 41 );../* process A
0074A0: 4C 4C 20 69 6E 70 75 74 20 2A 2F 0D 0A 20 20 6F LL input */.. o
0074B0: 75 74 73 69 64 65 28 29 3B 09 09 2F 2A 20 76 65 utside();../* ve
0074C0: 72 69 66 79 20 6F 75 74 73 69 64 65 20 61 6E 79 rify outside any
0074D0: 20 66 75 6E 63 74 69 6F 6E 20 2A 2F 0D 0A 20 20 function */..
0074E0: 74 72 61 69 6C 65 72 28 29 3B 09 09 2F 2A 20 66 trailer();../* f
0074F0: 6F 6C 6C 6F 77 2D 75 70 20 63 6F 64 65 20 2A 2F ollow-up code */
007500: 0D 0A 20 20 66 63 6C 6F 73 65 28 6F 75 74 70 75 .. fclose(outpu
007510: 74 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A t);.. }..../*..
007520: 2A 2A 20 70 72 6F 63 65 73 73 20 61 6C 6C 20 69 ** process all i
007530: 6E 70 75 74 20 74 65 78 74 0D 0A 2A 2A 0D 0A 2A nput text..**..*
007540: 2A 20 41 74 20 74 68 69 73 20 6C 65 76 65 6C 2C * At this level,
007550: 20 6F 6E 6C 79 20 73 74 61 74 69 63 20 64 65 63 only static dec
007560: 6C 61 72 61 74 69 6F 6E 73 2C 0D 0A 2A 2A 20 20 larations,..**
007570: 20 20 20 20 64 65 66 69 6E 65 73 2C 20 69 6E 63 defines, inc
007580: 6C 75 64 65 73 20 61 6E 64 20 66 75 6E 63 74 69 ludes and functi
007590: 6F 6E 0D 0A 2A 2A 20 20 20 20 20 20 64 65 66 69 on..** defi
0075A0: 6E 69 74 69 6F 6E 73 20 61 72 65 20 6C 65 67 61 nitions are lega
0075B0: 6C 2E 2E 2E 0D 0A 2A 2F 0D 0A 70 61 72 73 65 28 l.....*/..parse(
0075C0: 29 20 7B 0D 0A 20 20 77 68 69 6C 65 20 28 65 6F ) {.. while (eo
0075D0: 66 3D 3D 30 29 20 7B 0D 0A 20 20 20 20 69 66 28 f==0) {.. if(
0075E0: 61 6D 61 74 63 68 28 22 65 78 74 65 72 6E 22 2C amatch("extern",
0075F0: 20 36 29 29 20 20 20 64 6F 64 65 63 6C 61 72 65 6)) dodeclare
007600: 65 66 20 4F 50 54 49 4D 49 5A 45 0D 0A 20 20 20 ef OPTIMIZE..
007610: 20 73 6F 75 74 28 22 20 5B 2D 6F 5D 22 2C 20 73 sout(" [-o]", s
007620: 74 64 65 72 72 29 3B 0D 0A 23 65 6E 64 69 66 0D tderr);..#endif.
007630: 0A 23 69 66 6E 64 65 66 20 4C 49 4E 4B 0D 0A 20 .#ifndef LINK..
007640: 20 20 20 73 6F 75 74 28 22 20 5B 2D 62 23 5D 22 sout(" [-b#]"
007650: 2C 20 73 74 64 65 72 72 29 3B 0D 0A 23 65 6E 64 , stderr);..#end
007660: 69 66 0D 0A 20 20 20 20 73 6F 75 74 28 4E 45 57 if.. sout(NEW
007670: 4C 49 4E 45 2C 20 73 74 64 65 72 72 29 3B 0D 0A LINE, stderr);..
007680: 20 20 20 20 61 62 6F 72 74 28 45 52 52 43 4F 44 abort(ERRCOD
007690: 45 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D E);.. }.. }.
0076A0: 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 69 6E 70 75 74 20 .../*..** input
0076B0: 61 6E 64 20 6F 75 74 70 75 74 20 66 69 6C 65 20 and output file
0076C0: 6F 70 65 6E 73 0D 0A 2A 2F 0D 0A 6F 70 65 6E 66 opens..*/..openf
0076D0: 69 6C 65 28 29 20 7B 09 09 2F 2A 20 65 6E 74 69 ile() {../* enti
0076E0: 72 65 20 66 75 6E 63 74 69 6F 6E 20 72 65 76 69 re function revi
0076F0: 73 65 64 20 2A 2F 0D 0A 20 20 63 68 61 72 20 6F sed */.. char o
007700: 75 74 66 6E 5B 31 35 5D 3B 0D 0A 20 20 69 6E 74 utfn[15];.. int
007710: 20 69 2C 20 6A 2C 20 65 78 74 3B 0D 0A 20 20 69 i, j, ext;.. i
007720: 6E 70 75 74 3D 45 4F 46 3B 0D 0A 20 20 77 68 69 nput=EOF;.. whi
007730: 6C 65 28 67 65 74 61 72 67 28 2B 2B 66 69 6C 65 le(getarg(++file
007740: 61 72 67 2C 20 70 6C 69 6E 65 2C 20 4C 49 4E 45 arg, pline, LINE
007750: 53 49 5A 45 2C 20 61 72 67 63 73 2C 20 61 72 67 SIZE, argcs, arg
007760: 76 73 29 21 3D 45 4F 46 29 20 7B 0D 0A 20 20 20 vs)!=EOF) {..
007770: 20 69 66 28 70 6C 69 6E 65 5B 30 5D 3D 3D 27 2D if(pline[0]=='-
007780: 27 29 20 63 6F 6E 74 69 6E 75 65 3B 0D 0A 20 20 ') continue;..
007790: 20 20 65 78 74 20 3D 20 4E 4F 3B 0D 0A 20 20 20 ext = NO;..
0077A0: 20 69 20 3D 20 2D 31 3B 0D 0A 20 20 20 20 6A 20 i = -1;.. j
0077B0: 3D 20 30 3B 0D 0A 20 20 20 20 77 68 69 6C 65 28 = 0;.. while(
0077C0: 70 6C 69 6E 65 5B 2B 2B 69 5D 29 20 7B 0D 0A 20 pline[++i]) {..
0077D0: 20 20 20 20 20 69 66 28 70 6C 69 6E 65 5B 69 5D if(pline[i]
0077E0: 20 3D 3D 20 27 2E 27 29 20 7B 65 78 74 20 3D 20 == '.') {ext =
0077F0: 59 45 53 3B 20 62 72 65 61 6B 3B 7D 0D 0A 20 20 YES; break;}..
007800: 28 45 58 54 45 52 4E 41 4C 29 3B 0D 0A 20 20 20 (EXTERNAL);..
007810: 20 65 6C 73 65 20 69 66 28 64 6F 64 65 63 6C 61 else if(dodecla
007820: 72 65 28 53 54 41 54 49 43 29 29 3B 0D 0A 20 20 re(STATIC));..
007830: 20 20 65 6C 73 65 20 69 66 28 6D 61 74 63 68 28 else if(match(
007840: 22 23 61 73 6D 22 29 29 20 20 20 20 64 6F 61 73 "#asm")) doas
007850: 6D 28 29 3B 0D 0A 20 20 20 20 65 6C 73 65 20 69 m();.. else i
007860: 66 28 6D 61 74 63 68 28 22 23 69 6E 63 6C 75 64 f(match("#includ
007870: 65 22 29 29 64 6F 69 6E 63 6C 75 64 65 28 29 3B e"))doinclude();
007880: 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 28 6D 61 .. else if(ma
007890: 74 63 68 28 22 23 64 65 66 69 6E 65 22 29 29 20 tch("#define"))
0078A0: 61 64 64 6D 61 63 28 29 3B 0D 0A 20 20 20 20 65 addmac();.. e
0078B0: 6C 73 65 20 20 20 20 20 20 20 20 20 20 20 20 20 lse
0078C0: 20 20 20 20 20 20 20 20 20 6E 65 77 66 75 6E 63 newfunc
0078D0: 28 29 3B 0D 0A 20 20 20 20 62 6C 61 6E 6B 73 28 ();.. blanks(
0078E0: 29 3B 09 09 2F 2A 20 66 6F 72 63 65 20 65 6F 66 );../* force eof
0078F0: 20 69 66 20 70 65 6E 64 69 6E 67 20 2A 2F 0D 0A if pending */..
007900: 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A }.. }..../*
007910: 0D 0A 2A 2A 20 64 75 6D 70 20 74 68 65 20 6C 69 ..** dump the li
007920: 74 65 72 61 6C 20 70 6F 6F 6C 0D 0A 2A 2F 0D 0A teral pool..*/..
007930: 64 75 6D 70 6C 69 74 73 28 73 69 7A 65 29 20 69 dumplits(size) i
007940: 6E 74 20 73 69 7A 65 3B 20 7B 0D 0A 20 20 69 6E nt size; {.. in
007950: 74 20 6A 2C 20 6B 3B 0D 0A 20 20 6B 3D 30 3B 0D t j, k;.. k=0;.
007960: 0A 20 20 77 68 69 6C 65 20 28 6B 3C 6C 69 74 70 . while (k<litp
007970: 74 72 29 20 7B 0D 0A 20 20 20 20 70 6F 6C 6C 28 tr) {.. poll(
007980: 31 29 3B 09 09 2F 2A 20 61 6C 6C 6F 77 20 70 72 1);../* allow pr
007990: 6F 67 72 61 6D 20 69 6E 74 65 72 72 75 70 74 69 ogram interrupti
0079A0: 6F 6E 20 2A 2F 0D 0A 20 20 20 20 64 65 66 73 74 on */.. defst
0079B0: 6F 72 61 67 65 28 73 69 7A 65 29 3B 0D 0A 20 20 orage(size);..
0079C0: 20 20 6A 3D 31 30 3B 0D 0A 20 20 20 20 77 68 69 j=10;.. whi
0079D0: 6C 65 28 6A 2D 2D 29 20 7B 0D 0A 20 20 20 20 20 le(j--) {..
0079E0: 20 6F 75 74 64 65 63 28 67 65 74 69 6E 74 28 6C outdec(getint(l
0079F0: 69 74 71 2B 6B 2C 20 73 69 7A 65 29 29 3B 0D 0A itq+k, size));..
007A00: 20 20 20 20 69 66 28 6A 20 3C 20 31 30 29 20 6F if(j < 10) o
007A10: 75 74 66 6E 5B 6A 2B 2B 5D 20 3D 20 70 6C 69 6E utfn[j++] = plin
007A20: 65 5B 69 5D 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A e[i];.. }..
007A30: 20 20 20 20 69 66 28 21 65 78 74 29 20 7B 0D 0A if(!ext) {..
007A40: 20 20 20 20 20 20 73 74 72 63 70 79 28 70 6C 69 strcpy(pli
007A50: 6E 65 20 2B 20 69 2C 20 22 2E 43 22 29 3B 0D 0A ne + i, ".C");..
007A60: 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 69 6E 70 }.. inp
007A70: 75 74 20 3D 20 6D 75 73 74 6F 70 65 6E 28 70 6C ut = mustopen(pl
007A80: 69 6E 65 2C 20 22 72 22 29 3B 0D 0A 20 20 20 20 ine, "r");..
007A90: 69 66 28 21 66 69 6C 65 73 20 26 26 20 69 73 61 if(!files && isa
007AA0: 74 74 79 28 73 74 64 6F 75 74 29 29 20 7B 0D 0A tty(stdout)) {..
007AB0: 20 20 20 20 20 20 73 74 72 63 70 79 28 6F 75 74 strcpy(out
007AC0: 66 6E 20 2B 20 6A 2C 20 22 2E 4D 41 43 22 29 3B fn + j, ".MAC");
007AD0: 0D 0A 20 20 20 20 20 20 6F 75 74 70 75 74 20 3D .. output =
007AE0: 20 6D 75 73 74 6F 70 65 6E 28 6F 75 74 66 6E 2C mustopen(outfn,
007AF0: 20 22 77 22 29 3B 0D 0A 20 20 20 20 20 20 7D 0D "w");.. }.
007B00: 0A 20 20 20 20 66 69 6C 65 73 3D 59 45 53 3B 0D . files=YES;.
007B10: 0A 20 20 20 20 6B 69 6C 6C 28 29 3B 0D 0A 20 20 . kill();..
007B20: 20 20 72 65 74 75 72 6E 3B 0D 0A 20 20 20 20 7D return;.. }
007B30: 0D 0A 20 20 69 66 28 66 69 6C 65 73 2B 2B 29 20 .. if(files++)
007B40: 65 6F 66 3D 59 45 53 3B 0D 0A 20 20 65 6C 73 65 eof=YES;.. else
007B50: 20 69 6E 70 75 74 3D 73 74 64 69 6E 3B 0D 0A 20 input=stdin;..
007B60: 20 6B 69 6C 6C 28 29 3B 0D 0A 20 20 7D 0D 0A 0D kill();.. }...
007B70: 0A 2F 2A 0D 0A 2A 2A 20 6F 70 65 6E 20 61 20 66 ./*..** open a f
007B80: 69 6C 65 20 77 69 74 68 20 65 72 72 6F 72 20 63 ile with error c
007B90: 68 65 63 6B 69 6E 67 0D 0A 2A 2F 0D 0A 6D 75 73 hecking..*/..mus
007BA0: 74 6F 70 65 6E 28 66 6E 2C 20 6D 6F 64 65 29 20 topen(fn, mode)
007BB0: 63 68 61 72 20 2A 66 6E 2C 20 2A 6D 6F 64 65 3B char *fn, *mode;
007BC0: 20 7B 0D 0A 20 20 69 6E 74 20 66 64 3B 0D 0A 20 {.. int fd;..
007BD0: 20 69 66 28 66 64 20 3D 20 66 6F 70 65 6E 28 66 if(fd = fopen(f
007BE0: 6E 2C 20 6D 6F 64 65 29 29 20 72 65 74 75 72 6E n, mode)) return
007BF0: 20 66 64 3B 0D 0A 20 20 73 6F 75 74 28 22 6F 70 fd;.. sout("op
007C00: 20 20 20 20 20 20 6B 3D 6B 2B 73 69 7A 65 3B 0D k=k+size;.
007C10: 0A 20 20 20 20 20 20 69 66 20 28 28 6A 3D 3D 30 . if ((j==0
007C20: 29 7C 28 6B 3E 3D 6C 69 74 70 74 72 29 29 20 7B )|(k>=litptr)) {
007C30: 6E 6C 28 29 3B 20 62 72 65 61 6B 3B 7D 0D 0A 20 nl(); break;}..
007C40: 20 20 20 20 20 6F 75 74 62 79 74 65 28 27 2C 27 outbyte(','
007C50: 29 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 );.. }..
007C60: 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A }.. }..../*..*
007C70: 2A 20 64 75 6D 70 20 7A 65 72 6F 65 73 20 66 6F * dump zeroes fo
007C80: 72 20 64 65 66 61 75 6C 74 20 69 6E 69 74 69 61 r default initia
007C90: 6C 20 76 61 6C 75 65 73 0D 0A 2A 2F 0D 0A 64 75 l values..*/..du
007CA0: 6D 70 7A 65 72 6F 28 73 69 7A 65 2C 20 63 6F 75 mpzero(size, cou
007CB0: 6E 74 29 20 69 6E 74 20 73 69 7A 65 2C 20 63 6F nt) int size, co
007CC0: 75 6E 74 3B 20 7B 0D 0A 20 20 69 6E 74 20 6A 3B unt; {.. int j;
007CD0: 0D 0A 20 20 77 68 69 6C 65 20 28 63 6F 75 6E 74 .. while (count
007CE0: 20 3E 20 30 29 20 7B 0D 0A 20 20 20 20 70 6F 6C > 0) {.. pol
007CF0: 6C 28 31 29 3B 09 09 2F 2A 20 61 6C 6C 6F 77 20 l(1);../* allow
007D00: 70 72 6F 67 72 61 6D 20 69 6E 74 65 72 72 75 70 program interrup
007D10: 74 69 6F 6E 20 2A 2F 0D 0A 20 20 20 20 64 65 66 tion */.. def
007D20: 73 74 6F 72 61 67 65 28 73 69 7A 65 29 3B 0D 0A storage(size);..
007D30: 20 20 20 20 6A 3D 33 30 3B 0D 0A 20 20 20 20 77 j=30;.. w
007D40: 68 69 6C 65 28 6A 2D 2D 29 20 7B 0D 0A 20 20 20 hile(j--) {..
007D50: 20 20 20 6F 75 74 64 65 63 28 30 29 3B 0D 0A 20 outdec(0);..
007D60: 20 20 20 20 20 69 66 20 28 28 2D 2D 63 6F 75 6E if ((--coun
007D70: 74 20 3C 3D 20 30 29 7C 28 6A 3D 3D 30 29 29 20 t <= 0)|(j==0))
007D80: 7B 6E 6C 28 29 3B 20 62 72 65 61 6B 3B 7D 0D 0A {nl(); break;}..
007D90: 20 20 20 20 20 20 6F 75 74 62 79 74 65 28 27 2C outbyte(',
007DA0: 27 29 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 ');.. }..
007DB0: 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A }.. }..../*..
007DC0: 2A 2A 20 76 65 72 69 66 79 20 63 6F 6D 70 69 6C ** verify compil
007DD0: 65 20 65 6E 64 73 20 6F 75 74 73 69 64 65 20 61 e ends outside a
007DE0: 6E 79 20 66 75 6E 63 74 69 6F 6E 0D 0A 2A 2F 0D ny function..*/.
007DF0: 0A 6F 75 74 73 69 64 65 28 29 20 20 7B 0D 0A 20 .outside() {..
007E00: 65 6E 20 65 72 72 6F 72 20 6F 6E 20 22 2C 20 73 en error on ", s
007E10: 74 64 65 72 72 29 3B 0D 0A 20 20 6C 6F 75 74 28 tderr);.. lout(
007E20: 66 6E 2C 20 73 74 64 65 72 72 29 3B 0D 0A 20 20 fn, stderr);..
007E30: 61 62 6F 72 74 28 45 52 52 43 4F 44 45 29 3B 0D abort(ERRCODE);.
007E40: 0A 20 20 7D 0D 0A 0D 0A 73 65 74 6F 70 73 28 29 . }....setops()
007E50: 20 7B 0D 0A 20 20 6F 70 32 5B 20 30 5D 3D 20 20 {.. op2[ 0]=
007E60: 20 20 20 6F 70 5B 20 30 5D 3D 20 20 66 66 6F 72 op[ 0]= ffor
007E70: 3B 09 09 2F 2A 20 68 65 69 72 35 20 2A 2F 0D 0A ;../* heir5 */..
007E80: 20 20 6F 70 32 5B 20 31 5D 3D 20 20 20 20 20 6F op2[ 1]= o
007E90: 70 5B 20 31 5D 3D 20 66 66 78 6F 72 3B 09 09 2F p[ 1]= ffxor;../
007EA0: 2A 20 68 65 69 72 36 20 2A 2F 0D 0A 20 20 6F 70 * heir6 */.. op
007EB0: 32 5B 20 32 5D 3D 20 20 20 20 20 6F 70 5B 20 32 2[ 2]= op[ 2
007EC0: 5D 3D 20 66 66 61 6E 64 3B 09 09 2F 2A 20 68 65 ]= ffand;../* he
007ED0: 69 72 37 20 2A 2F 0D 0A 20 20 6F 70 32 5B 20 33 ir7 */.. op2[ 3
007EE0: 5D 3D 20 20 20 20 20 6F 70 5B 20 33 5D 3D 20 20 ]= op[ 3]=
007EF0: 66 66 65 71 3B 09 09 2F 2A 20 68 65 69 72 38 20 ffeq;../* heir8
007F00: 2A 2F 0D 0A 20 20 6F 70 32 5B 20 34 5D 3D 20 20 */.. op2[ 4]=
007F10: 20 20 20 6F 70 5B 20 34 5D 3D 20 20 66 66 6E 65 op[ 4]= ffne
007F20: 3B 0D 0A 20 20 6F 70 32 5B 20 35 5D 3D 75 6C 65 ;.. op2[ 5]=ule
007F30: 3B 20 6F 70 5B 20 35 5D 3D 20 20 66 66 6C 65 3B ; op[ 5]= ffle;
007F40: 09 09 2F 2A 20 68 65 69 72 39 20 2A 2F 0D 0A 20 ../* heir9 */..
007F50: 20 6F 70 32 5B 20 36 5D 3D 75 67 65 3B 20 6F 70 op2[ 6]=uge; op
007F60: 5B 20 36 5D 3D 20 20 66 66 67 65 3B 0D 0A 20 20 [ 6]= ffge;..
007F70: 6F 70 32 5B 20 37 5D 3D 75 6C 74 3B 20 6F 70 5B op2[ 7]=ult; op[
007F80: 20 37 5D 3D 20 20 66 66 6C 74 3B 0D 0A 20 20 6F 7]= fflt;.. o
007F90: 70 32 5B 20 38 5D 3D 75 67 74 3B 20 6F 70 5B 20 p2[ 8]=ugt; op[
007FA0: 38 5D 3D 20 20 66 66 67 74 3B 0D 0A 20 20 6F 70 8]= ffgt;.. op
007FB0: 32 5B 20 39 5D 3D 20 20 20 20 20 6F 70 5B 20 39 2[ 9]= op[ 9
007FC0: 5D 3D 20 66 66 61 73 72 3B 09 09 2F 2A 20 68 65 ]= ffasr;../* he
007FD0: 69 72 31 30 20 2A 2F 0D 0A 20 20 6F 70 32 5B 31 ir10 */.. op2[1
007FE0: 30 5D 3D 20 20 20 20 20 6F 70 5B 31 30 5D 3D 20 0]= op[10]=
007FF0: 66 66 61 73 6C 3B 0D 0A 20 20 6F 70 32 5B 31 31 ffasl;.. op2[11
008000: 20 69 66 20 28 6E 63 6D 70 29 20 65 72 72 6F 72 if (ncmp) error
008010: 28 22 6E 6F 20 63 6C 6F 73 69 6E 67 20 62 72 61 ("no closing bra
008020: 63 6B 65 74 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A cket");.. }....
008030: 2F 2A 0D 0A 2A 2A 20 67 65 74 20 72 75 6E 20 6F /*..** get run o
008040: 70 74 69 6F 6E 73 0D 0A 2A 2F 0D 0A 61 73 6B 28 ptions..*/..ask(
008050: 29 20 7B 0D 0A 20 20 69 6E 74 20 69 3B 0D 0A 20 ) {.. int i;..
008060: 20 69 3D 6C 69 73 74 66 70 3D 6E 78 74 6C 61 62 i=listfp=nxtlab
008070: 3D 30 3B 0D 0A 20 20 6F 75 74 70 75 74 3D 73 74 =0;.. output=st
008080: 64 6F 75 74 3B 0D 0A 23 69 66 64 65 66 20 4F 50 dout;..#ifdef OP
008090: 54 49 4D 49 5A 45 0D 0A 20 20 6F 70 74 69 6D 69 TIMIZE.. optimi
0080A0: 7A 65 3D 0D 0A 23 65 6E 64 69 66 0D 0A 20 20 61 ze=..#endif.. a
0080B0: 6C 61 72 6D 3D 6D 6F 6E 69 74 6F 72 3D 70 61 75 larm=monitor=pau
0080C0: 73 65 3D 4E 4F 3B 0D 0A 20 20 6C 69 6E 65 3D 6D se=NO;.. line=m
0080D0: 6C 69 6E 65 3B 0D 0A 20 20 77 68 69 6C 65 28 67 line;.. while(g
0080E0: 65 74 61 72 67 28 2B 2B 69 2C 20 6C 69 6E 65 2C etarg(++i, line,
0080F0: 20 4C 49 4E 45 53 49 5A 45 2C 20 61 72 67 63 73 LINESIZE, argcs
008100: 2C 20 61 72 67 76 73 29 21 3D 45 4F 46 29 20 7B , argvs)!=EOF) {
008110: 0D 0A 20 20 20 20 69 66 28 6C 69 6E 65 5B 30 5D .. if(line[0]
008120: 21 3D 27 2D 27 29 20 63 6F 6E 74 69 6E 75 65 3B !='-') continue;
008130: 0D 0A 20 20 20 20 69 66 28 28 74 6F 75 70 70 65 .. if((touppe
008140: 72 28 6C 69 6E 65 5B 31 5D 29 3D 3D 27 4C 27 29 r(line[1])=='L')
008150: 26 28 69 73 64 69 67 69 74 28 6C 69 6E 65 5B 32 &(isdigit(line[2
008160: 5D 29 29 26 28 6C 69 6E 65 5B 33 5D 3C 3D 27 20 ]))&(line[3]<='
008170: 27 29 29 20 7B 0D 0A 20 20 20 20 20 20 6C 69 73 ')) {.. lis
008180: 74 66 70 3D 6C 69 6E 65 5B 32 5D 2D 27 30 27 3B tfp=line[2]-'0';
008190: 0D 0A 20 20 20 20 20 20 63 6F 6E 74 69 6E 75 65 .. continue
0081A0: 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 ;.. }..
0081B0: 69 66 28 6C 69 6E 65 5B 32 5D 3C 3D 27 20 27 29 if(line[2]<=' ')
0081C0: 20 7B 0D 0A 20 20 20 20 20 20 69 66 28 74 6F 75 {.. if(tou
0081D0: 70 70 65 72 28 6C 69 6E 65 5B 31 5D 29 3D 3D 27 pper(line[1])=='
0081E0: 41 27 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 61 A') {.. a
0081F0: 6C 61 72 6D 3D 59 45 53 3B 0D 0A 20 20 20 20 20 larm=YES;..
008200: 5D 3D 20 20 20 20 20 6F 70 5B 31 31 5D 3D 20 66 ]= op[11]= f
008210: 66 61 64 64 3B 09 09 2F 2A 20 68 65 69 72 31 31 fadd;../* heir11
008220: 20 2A 2F 0D 0A 20 20 6F 70 32 5B 31 32 5D 3D 20 */.. op2[12]=
008230: 20 20 20 20 6F 70 5B 31 32 5D 3D 20 66 66 73 75 op[12]= ffsu
008240: 62 3B 0D 0A 20 20 6F 70 32 5B 31 33 5D 3D 20 20 b;.. op2[13]=
008250: 20 20 20 6F 70 5B 31 33 5D 3D 66 66 6D 75 6C 74 op[13]=ffmult
008260: 3B 09 09 2F 2A 20 68 65 69 72 31 32 20 2A 2F 0D ;../* heir12 */.
008270: 0A 20 20 6F 70 32 5B 31 34 5D 3D 20 20 20 20 20 . op2[14]=
008280: 6F 70 5B 31 34 5D 3D 20 66 66 64 69 76 3B 0D 0A op[14]= ffdiv;..
008290: 20 20 6F 70 32 5B 31 35 5D 3D 20 20 20 20 20 6F op2[15]= o
0082A0: 70 5B 31 35 5D 3D 20 66 66 6D 6F 64 3B 0D 0A 20 p[15]= ffmod;..
0082B0: 20 7D 0D 0A 0D 0A 3E 3E 3E 20 43 43 31 32 2E 43 }....>>> CC12.C
0082C0: 20 36 37 38 38 0D 0A 2F 2A 0D 0A 2A 2A 20 6F 70 6788../*..** op
0082D0: 65 6E 20 61 6E 20 69 6E 63 6C 75 64 65 20 66 69 en an include fi
0082E0: 6C 65 0D 0A 2A 2F 0D 0A 64 6F 69 6E 63 6C 75 64 le..*/..doinclud
0082F0: 65 28 29 20 20 7B 0D 0A 20 20 63 68 61 72 20 2A e() {.. char *
008300: 63 70 3B 0D 0A 20 20 62 6C 61 6E 6B 73 28 29 3B cp;.. blanks();
008310: 09 09 09 2F 2A 20 73 6B 69 70 20 6F 76 65 72 20 .../* skip over
008320: 74 6F 20 6E 61 6D 65 20 2A 2F 0D 0A 20 20 73 77 to name */.. sw
008330: 69 74 63 68 20 28 2A 6C 70 74 72 29 20 7B 0D 0A itch (*lptr) {..
008340: 20 20 20 20 63 61 73 65 20 27 22 27 3A 20 63 61 case '"': ca
008350: 73 65 20 27 3C 27 3A 20 63 70 20 3D 20 2B 2B 6C se '<': cp = ++l
008360: 70 74 72 3B 0D 0A 20 20 20 20 77 68 69 6C 65 28 ptr;.. while(
008370: 2A 63 70 29 20 7B 0D 0A 20 20 20 20 20 20 73 77 *cp) {.. sw
008380: 69 74 63 68 28 2A 63 70 29 20 7B 63 61 73 65 20 itch(*cp) {case
008390: 27 22 27 3A 20 63 61 73 65 20 27 3E 27 3A 20 2A '"': case '>': *
0083A0: 63 70 3D 4E 55 4C 4C 3B 7D 0D 0A 20 20 20 20 20 cp=NULL;}..
0083B0: 20 2B 2B 63 70 3B 0D 0A 20 20 20 20 20 20 7D 0D ++cp;.. }.
0083C0: 0A 20 20 20 20 7D 0D 0A 20 20 69 66 28 28 69 6E . }.. if((in
0083D0: 70 75 74 32 3D 66 6F 70 65 6E 28 6C 70 74 72 2C put2=fopen(lptr,
0083E0: 22 72 22 29 29 3D 3D 4E 55 4C 4C 29 20 7B 0D 0A "r"))==NULL) {..
0083F0: 20 20 20 20 69 6E 70 75 74 32 3D 45 4F 46 3B 0D input2=EOF;.
008400: 20 20 20 63 6F 6E 74 69 6E 75 65 3B 0D 0A 20 20 continue;..
008410: 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 69 }.. i
008420: 66 28 74 6F 75 70 70 65 72 28 6C 69 6E 65 5B 31 f(toupper(line[1
008430: 5D 29 3D 3D 27 4D 27 29 20 7B 0D 0A 20 20 20 20 ])=='M') {..
008440: 20 20 20 20 6D 6F 6E 69 74 6F 72 3D 59 45 53 3B monitor=YES;
008450: 0D 0A 20 20 20 20 20 20 20 20 63 6F 6E 74 69 6E .. contin
008460: 75 65 3B 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A ue;.. }..
008470: 23 69 66 64 65 66 20 4F 50 54 49 4D 49 5A 45 0D #ifdef OPTIMIZE.
008480: 0A 20 20 20 20 20 20 69 66 28 74 6F 75 70 70 65 . if(touppe
008490: 72 28 6C 69 6E 65 5B 31 5D 29 3D 3D 27 4F 27 29 r(line[1])=='O')
0084A0: 20 7B 0D 0A 20 20 20 20 20 20 20 20 6F 70 74 69 {.. opti
0084B0: 6D 69 7A 65 3D 59 45 53 3B 0D 0A 20 20 20 20 20 mize=YES;..
0084C0: 20 20 20 63 6F 6E 74 69 6E 75 65 3B 0D 0A 20 20 continue;..
0084D0: 20 20 20 20 20 20 7D 0D 0A 23 65 6E 64 69 66 0D }..#endif.
0084E0: 0A 20 20 20 20 20 20 69 66 28 74 6F 75 70 70 65 . if(touppe
0084F0: 72 28 6C 69 6E 65 5B 31 5D 29 3D 3D 27 50 27 29 r(line[1])=='P')
008500: 20 7B 0D 0A 20 20 20 20 20 20 20 20 70 61 75 73 {.. paus
008510: 65 3D 59 45 53 3B 0D 0A 20 20 20 20 20 20 20 20 e=YES;..
008520: 63 6F 6E 74 69 6E 75 65 3B 0D 0A 20 20 20 20 20 continue;..
008530: 20 20 20 7D 0D 0A 20 20 20 20 20 20 7D 0D 0A 23 }.. }..#
008540: 69 66 6E 64 65 66 20 4C 49 4E 4B 0D 0A 20 20 20 ifndef LINK..
008550: 20 69 66 28 74 6F 75 70 70 65 72 28 6C 69 6E 65 if(toupper(line
008560: 5B 31 5D 29 3D 3D 27 42 27 29 20 7B 0D 0A 20 20 [1])=='B') {..
008570: 20 20 20 20 62 75 6D 70 28 30 29 3B 20 62 75 6D bump(0); bum
008580: 70 28 32 29 3B 0D 0A 20 20 20 20 20 20 69 66 28 p(2);.. if(
008590: 6E 75 6D 62 65 72 28 26 6E 78 74 6C 61 62 29 29 number(&nxtlab))
0085A0: 20 63 6F 6E 74 69 6E 75 65 3B 0D 0A 20 20 20 20 continue;..
0085B0: 20 20 7D 0D 0A 23 65 6E 64 69 66 0D 0A 20 20 20 }..#endif..
0085C0: 20 73 6F 75 74 28 22 75 73 61 67 65 3A 20 63 63 sout("usage: cc
0085D0: 20 5B 66 69 6C 65 5D 2E 2E 2E 20 5B 2D 6D 5D 20 [file]... [-m]
0085E0: 5B 2D 61 5D 20 5B 2D 70 5D 20 5B 2D 6C 23 5D 22 [-a] [-p] [-l#]"
0085F0: 2C 20 73 74 64 65 72 72 29 3B 0D 0A 23 69 66 64 , stderr);..#ifd
008600: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
008610: 07 00 01 00 02 09 52 E5 07 00 41 02 00 00 00 02 ......R...A.....
008620: 07 00 46 02 00 00 00 02 07 00 42 02 00 00 00 02 ..F.......B.....
008630: 07 00 47 02 00 00 00 02 07 00 43 02 00 00 00 02 ..G.......C.....
008640: 07 00 48 02 00 00 00 02 07 00 44 02 00 00 00 02 ..H.......D.....
008650: 07 00 49 02 00 00 00 02 07 00 45 02 00 00 00 02 ..I.......E.....
008660: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
008670: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
008680: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
008690: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0086A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0086B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0086C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0086D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0086E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0086F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
008700: 0A 20 20 20 20 65 72 72 6F 72 28 22 6F 70 65 6E . error("open
008710: 20 66 61 69 6C 75 72 65 20 6F 6E 20 69 6E 63 6C failure on incl
008720: 75 64 65 20 66 69 6C 65 22 29 3B 0D 0A 20 20 20 ude file");..
008730: 20 7D 0D 0A 20 20 6B 69 6C 6C 28 29 3B 09 09 09 }.. kill();...
008740: 2F 2A 20 63 6C 65 61 72 20 72 65 73 74 20 6F 66 /* clear rest of
008750: 20 6C 69 6E 65 20 2A 2F 0D 0A 09 09 09 09 2F 2A line */....../*
008760: 20 73 6F 20 6E 65 78 74 20 72 65 61 64 20 77 69 so next read wi
008770: 6C 6C 20 63 6F 6D 65 20 66 72 6F 6D 20 2A 2F 0D ll come from */.
008780: 0A 09 09 09 09 2F 2A 20 6E 65 77 20 66 69 6C 65 ...../* new file
008790: 20 28 69 66 20 6F 70 65 6E 29 20 2A 2F 0D 0A 20 (if open) */..
0087A0: 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 74 65 73 }..../*..** tes
0087B0: 74 20 66 6F 72 20 67 6C 6F 62 61 6C 20 64 65 63 t for global dec
0087C0: 6C 61 72 61 74 69 6F 6E 73 0D 0A 2A 2F 0D 0A 64 larations..*/..d
0087D0: 6F 64 65 63 6C 61 72 65 28 63 6C 61 73 73 29 20 odeclare(class)
0087E0: 69 6E 74 20 63 6C 61 73 73 3B 20 7B 0D 0A 20 20 int class; {..
0087F0: 69 66 28 61 6D 61 74 63 68 28 22 63 68 61 72 22 if(amatch("char"
008800: 2C 34 29 29 20 7B 0D 0A 20 20 20 20 64 65 63 6C ,4)) {.. decl
008810: 67 6C 62 28 43 43 48 41 52 2C 20 63 6C 61 73 73 glb(CCHAR, class
008820: 29 3B 0D 0A 20 20 20 20 6E 73 28 29 3B 0D 0A 20 );.. ns();..
008830: 20 20 20 72 65 74 75 72 6E 20 31 3B 0D 0A 20 20 return 1;..
008840: 20 20 7D 0D 0A 20 20 65 6C 73 65 20 69 66 28 28 }.. else if((
008850: 61 6D 61 74 63 68 28 22 69 6E 74 22 2C 33 29 29 amatch("int",3))
008860: 7C 28 63 6C 61 73 73 3D 3D 45 58 54 45 52 4E 41 |(class==EXTERNA
008870: 4C 29 29 20 7B 0D 0A 20 20 20 20 64 65 63 6C 67 L)) {.. declg
008880: 6C 62 28 43 49 4E 54 2C 20 63 6C 61 73 73 29 3B lb(CINT, class);
008890: 0D 0A 20 20 20 20 6E 73 28 29 3B 0D 0A 20 20 20 .. ns();..
0088A0: 20 72 65 74 75 72 6E 20 31 3B 0D 0A 20 20 20 20 return 1;..
0088B0: 7D 0D 0A 20 20 72 65 74 75 72 6E 20 30 3B 0D 0A }.. return 0;..
0088C0: 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 64 65 }..../*..** de
0088D0: 6C 63 61 72 65 20 61 20 73 74 61 74 69 63 20 76 lcare a static v
0088E0: 61 72 69 61 62 6C 65 0D 0A 2A 2F 0D 0A 64 65 63 ariable..*/..dec
0088F0: 6C 67 6C 62 28 74 79 70 65 2C 20 63 6C 61 73 73 lglb(type, class
008900: 20 20 20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 69 }.. else i
008910: 6E 69 74 28 73 69 7A 65 2C 20 69 64 65 6E 74 2C nit(size, ident,
008920: 20 26 64 69 6D 29 3B 0D 0A 20 20 20 20 7D 0D 0A &dim);.. }..
008930: 20 20 69 66 28 28 64 69 6D 20 3D 3D 20 2D 31 29 if((dim == -1)
008940: 26 28 64 69 6D 3D 3D 73 61 76 65 64 69 6D 29 29 &(dim==savedim))
008950: 20 7B 0D 0A 20 20 20 20 20 73 74 6F 77 6C 69 74 {.. stowlit
008960: 28 30 2C 20 73 69 7A 65 3D 42 50 57 29 3B 0D 0A (0, size=BPW);..
008970: 20 20 20 20 69 64 65 6E 74 3D 50 4F 49 4E 54 45 ident=POINTE
008980: 52 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 64 75 6D R;.. }.. dum
008990: 70 6C 69 74 73 28 73 69 7A 65 29 3B 0D 0A 20 20 plits(size);..
0089A0: 64 75 6D 70 7A 65 72 6F 28 73 69 7A 65 2C 20 64 dumpzero(size, d
0089B0: 69 6D 29 3B 0D 0A 20 20 72 65 74 75 72 6E 20 69 im);.. return i
0089C0: 64 65 6E 74 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A dent;.. }..../*
0089D0: 0D 0A 2A 2A 20 65 76 61 6C 75 61 74 65 20 6F 6E ..** evaluate on
0089E0: 65 20 69 6E 69 74 69 61 6C 69 7A 65 72 0D 0A 2A e initializer..*
0089F0: 2F 0D 0A 69 6E 69 74 28 73 69 7A 65 2C 20 69 64 /..init(size, id
008A00: 65 6E 74 2C 20 64 69 6D 29 20 69 6E 74 20 73 69 ent, dim) int si
008A10: 7A 65 2C 20 69 64 65 6E 74 2C 20 2A 64 69 6D 3B ze, ident, *dim;
008A20: 20 7B 0D 0A 20 20 69 6E 74 20 76 61 6C 75 65 3B {.. int value;
008A30: 0D 0A 20 20 69 66 28 71 73 74 72 28 26 76 61 6C .. if(qstr(&val
008A40: 75 65 29 29 20 7B 0D 0A 20 20 20 20 69 66 28 28 ue)) {.. if((
008A50: 69 64 65 6E 74 3D 3D 56 41 52 49 41 42 4C 45 29 ident==VARIABLE)
008A60: 7C 28 73 69 7A 65 21 3D 31 29 29 0D 0A 20 20 20 |(size!=1))..
008A70: 20 20 20 65 72 72 6F 72 28 22 6D 75 73 74 20 61 error("must a
008A80: 73 73 69 67 6E 20 74 6F 20 63 68 61 72 20 70 6F ssign to char po
008A90: 69 6E 74 65 72 20 6F 72 20 61 72 72 61 79 22 29 inter or array")
008AA0: 3B 0D 0A 20 20 20 20 2A 64 69 6D 20 3D 20 2A 64 ;.. *dim = *d
008AB0: 69 6D 20 2D 20 28 6C 69 74 70 74 72 20 2D 20 76 im - (litptr - v
008AC0: 61 6C 75 65 29 3B 0D 0A 20 20 20 20 69 66 28 69 alue);.. if(i
008AD0: 64 65 6E 74 3D 3D 50 4F 49 4E 54 45 52 29 20 70 dent==POINTER) p
008AE0: 6F 69 6E 74 28 29 3B 0D 0A 20 20 20 20 7D 0D 0A oint();.. }..
008AF0: 20 20 65 6C 73 65 20 69 66 28 63 6F 6E 73 74 65 else if(conste
008B00: 29 20 20 69 6E 74 20 74 79 70 65 2C 20 63 6C 61 ) int type, cla
008B10: 73 73 3B 20 7B 0D 0A 20 20 69 6E 74 20 6B 2C 20 ss; {.. int k,
008B20: 6A 3B 0D 0A 20 20 77 68 69 6C 65 28 31 29 20 7B j;.. while(1) {
008B30: 0D 0A 20 20 20 20 69 66 28 65 6E 64 73 74 28 29 .. if(endst()
008B40: 29 20 72 65 74 75 72 6E 3B 09 09 09 2F 2A 20 64 ) return;.../* d
008B50: 6F 20 6C 69 6E 65 20 2A 2F 0D 0A 20 20 20 20 69 o line */.. i
008B60: 66 28 6D 61 74 63 68 28 22 28 2A 22 29 7C 6D 61 f(match("(*")|ma
008B70: 74 63 68 28 22 2A 22 29 29 20 7B 0D 0A 20 20 20 tch("*")) {..
008B80: 20 20 20 6A 3D 50 4F 49 4E 54 45 52 3B 0D 0A 20 j=POINTER;..
008B90: 20 20 20 20 20 6B 3D 30 3B 0D 0A 20 20 20 20 20 k=0;..
008BA0: 20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 7B 0D 0A }.. else {..
008BB0: 20 20 20 20 20 20 6A 3D 56 41 52 49 41 42 4C 45 j=VARIABLE
008BC0: 3B 0D 0A 20 20 20 20 20 20 6B 3D 31 3B 0D 0A 20 ;.. k=1;..
008BD0: 20 20 20 20 20 7D 0D 0A 20 20 20 20 69 66 20 28 }.. if (
008BE0: 73 79 6D 6E 61 6D 65 28 73 73 6E 61 6D 65 2C 20 symname(ssname,
008BF0: 59 45 53 29 3D 3D 30 29 20 69 6C 6C 6E 61 6D 65 YES)==0) illname
008C00: 28 29 3B 0D 0A 20 20 20 20 69 66 28 66 69 6E 64 ();.. if(find
008C10: 67 6C 62 28 73 73 6E 61 6D 65 29 29 20 6D 75 6C glb(ssname)) mul
008C20: 74 69 64 65 66 28 73 73 6E 61 6D 65 29 3B 0D 0A tidef(ssname);..
008C30: 20 20 20 20 69 66 28 6D 61 74 63 68 28 22 29 22 if(match(")"
008C40: 29 29 20 3B 0D 0A 20 20 20 20 69 66 28 6D 61 74 )) ;.. if(mat
008C50: 63 68 28 22 28 29 22 29 29 20 6A 3D 46 55 4E 43 ch("()")) j=FUNC
008C60: 54 49 4F 4E 3B 0D 0A 20 20 20 20 65 6C 73 65 20 TION;.. else
008C70: 69 66 20 28 6D 61 74 63 68 28 22 5B 22 29 29 20 if (match("["))
008C80: 7B 0D 0A 20 20 20 20 20 20 70 61 65 72 72 6F 72 {.. paerror
008C90: 28 6A 29 3B 0D 0A 20 20 20 20 20 20 6B 3D 6E 65 (j);.. k=ne
008CA0: 65 64 73 75 62 28 29 3B 09 09 09 2F 2A 20 67 65 edsub();.../* ge
008CB0: 74 20 73 69 7A 65 20 2A 2F 0D 0A 20 20 20 20 20 t size */..
008CC0: 20 6A 3D 41 52 52 41 59 3B 09 09 09 09 2F 2A 20 j=ARRAY;..../*
008CD0: 21 30 3D 61 72 72 61 79 20 2A 2F 0D 0A 20 20 20 !0=array */..
008CE0: 20 20 20 7D 0D 0A 20 20 20 20 69 66 28 63 6C 61 }.. if(cla
008CF0: 73 73 3D 3D 45 58 54 45 52 4E 41 4C 29 20 65 78 ss==EXTERNAL) ex
008D00: 78 70 72 28 26 76 61 6C 75 65 29 29 20 7B 0D 0A xpr(&value)) {..
008D10: 20 20 20 20 69 66 28 69 64 65 6E 74 3D 3D 50 4F if(ident==PO
008D20: 49 4E 54 45 52 29 20 65 72 72 6F 72 28 22 63 61 INTER) error("ca
008D30: 6E 6E 6F 74 20 61 73 73 69 67 6E 20 74 6F 20 70 nnot assign to p
008D40: 6F 69 6E 74 65 72 22 29 3B 0D 0A 20 20 20 20 73 ointer");.. s
008D50: 74 6F 77 6C 69 74 28 76 61 6C 75 65 2C 20 73 69 towlit(value, si
008D60: 7A 65 29 3B 0D 0A 20 20 20 20 2A 64 69 6D 20 3D ze);.. *dim =
008D70: 20 2A 64 69 6D 20 2D 20 31 3B 0D 0A 20 20 20 20 *dim - 1;..
008D80: 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A }.. }..../*..**
008D90: 20 67 65 74 20 72 65 71 75 69 72 65 64 20 61 72 get required ar
008DA0: 72 61 79 20 73 69 7A 65 0D 0A 2A 2F 0D 0A 6E 65 ray size..*/..ne
008DB0: 65 64 73 75 62 28 29 20 20 7B 0D 0A 20 20 69 6E edsub() {.. in
008DC0: 74 20 76 61 6C 3B 0D 0A 20 20 69 66 28 6D 61 74 t val;.. if(mat
008DD0: 63 68 28 22 5D 22 29 29 20 72 65 74 75 72 6E 20 ch("]")) return
008DE0: 30 3B 09 2F 2A 20 6E 75 6C 6C 20 73 69 7A 65 20 0;./* null size
008DF0: 2A 2F 0D 0A 20 20 69 66 20 28 63 6F 6E 73 74 65 */.. if (conste
008E00: 78 70 72 28 26 76 61 6C 29 3D 3D 30 29 20 76 61 xpr(&val)==0) va
008E10: 6C 3D 31 3B 0D 0A 20 20 69 66 20 28 76 61 6C 3C l=1;.. if (val<
008E20: 30 29 20 7B 0D 0A 20 20 20 20 65 72 72 6F 72 28 0) {.. error(
008E30: 22 6E 65 67 61 74 69 76 65 20 73 69 7A 65 20 69 "negative size i
008E40: 6C 6C 65 67 61 6C 22 29 3B 0D 0A 20 20 20 20 76 llegal");.. v
008E50: 61 6C 20 3D 20 2D 76 61 6C 3B 0D 0A 20 20 20 20 al = -val;..
008E60: 7D 0D 0A 20 20 6E 65 65 64 74 6F 6B 65 6E 28 22 }.. needtoken("
008E70: 5D 22 29 3B 09 09 2F 2A 20 66 6F 72 63 65 20 73 ]");../* force s
008E80: 69 6E 67 6C 65 20 64 69 6D 65 6E 73 69 6F 6E 20 ingle dimension
008E90: 2A 2F 0D 0A 20 20 72 65 74 75 72 6E 20 76 61 6C */.. return val
008EA0: 3B 09 09 09 2F 2A 20 61 6E 64 20 72 65 74 75 72 ;.../* and retur
008EB0: 6E 20 73 69 7A 65 20 2A 2F 0D 0A 20 20 7D 0D 0A n size */.. }..
008EC0: 0D 0A 2F 2A 0D 0A 2A 2A 20 62 65 67 69 6E 20 61 ../*..** begin a
008ED0: 20 66 75 6E 63 74 69 6F 6E 0D 0A 2A 2A 0D 0A 2A function..**..*
008EE0: 2A 20 63 61 6C 6C 65 64 20 66 72 6F 6D 20 22 70 * called from "p
008EF0: 61 72 73 65 22 20 61 6E 64 20 74 72 69 65 73 20 arse" and tries
008F00: 74 65 72 6E 61 6C 28 73 73 6E 61 6D 65 29 3B 0D ternal(ssname);.
008F10: 0A 20 20 20 20 65 6C 73 65 20 69 66 28 6A 21 3D . else if(j!=
008F20: 46 55 4E 43 54 49 4F 4E 29 20 6A 3D 69 6E 69 74 FUNCTION) j=init
008F30: 69 61 6C 73 28 74 79 70 65 3E 3E 32 2C 20 6A 2C ials(type>>2, j,
008F40: 20 6B 29 3B 0D 0A 20 20 20 20 61 64 64 73 79 6D k);.. addsym
008F50: 28 73 73 6E 61 6D 65 2C 20 6A 2C 20 74 79 70 65 (ssname, j, type
008F60: 2C 20 6B 2C 20 26 67 6C 62 70 74 72 2C 20 63 6C , k, &glbptr, cl
008F70: 61 73 73 29 3B 0D 0A 20 20 20 20 69 66 20 28 6D ass);.. if (m
008F80: 61 74 63 68 28 22 2C 22 29 3D 3D 30 29 20 72 65 atch(",")==0) re
008F90: 74 75 72 6E 3B 09 09 2F 2A 20 6D 6F 72 65 3F 20 turn;../* more?
008FA0: 2A 2F 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A */.. }.. }..
008FB0: 0D 0A 2F 2A 0D 0A 2A 2A 20 64 65 63 6C 61 72 65 ../*..** declare
008FC0: 20 6C 6F 63 61 6C 20 76 61 72 69 61 62 6C 65 73 local variables
008FD0: 0D 0A 2A 2F 0D 0A 64 65 63 6C 6C 6F 63 28 74 79 ..*/..declloc(ty
008FE0: 70 29 20 20 69 6E 74 20 74 79 70 3B 20 20 7B 0D p) int typ; {.
008FF0: 0A 20 20 69 6E 74 20 6B 2C 6A 3B 0D 0A 20 20 69 . int k,j;.. i
009000: 66 28 73 77 61 63 74 69 76 65 29 20 65 72 72 6F f(swactive) erro
009010: 72 28 22 6E 6F 74 20 61 6C 6C 6F 77 65 64 20 69 r("not allowed i
009020: 6E 20 73 77 69 74 63 68 22 29 3B 0D 0A 23 69 66 n switch");..#if
009030: 64 65 66 20 53 54 47 4F 54 4F 0D 0A 20 20 69 66 def STGOTO.. if
009040: 28 6E 6F 6C 6F 63 29 20 65 72 72 6F 72 28 22 6E (noloc) error("n
009050: 6F 74 20 61 6C 6C 6F 77 65 64 20 77 69 74 68 20 ot allowed with
009060: 67 6F 74 6F 22 29 3B 0D 0A 23 65 6E 64 69 66 0D goto");..#endif.
009070: 0A 20 20 69 66 28 64 65 63 6C 61 72 65 64 20 3C . if(declared <
009080: 20 30 29 20 65 72 72 6F 72 28 22 6D 75 73 74 20 0) error("must
009090: 64 65 63 6C 61 72 65 20 66 69 72 73 74 20 69 6E declare first in
0090A0: 20 62 6C 6F 63 6B 22 29 3B 0D 0A 20 20 77 68 69 block");.. whi
0090B0: 6C 65 28 31 29 20 7B 0D 0A 20 20 20 20 77 68 69 le(1) {.. whi
0090C0: 6C 65 28 31 29 20 7B 0D 0A 20 20 20 20 20 20 69 le(1) {.. i
0090D0: 66 28 65 6E 64 73 74 28 29 29 20 72 65 74 75 72 f(endst()) retur
0090E0: 6E 3B 0D 0A 20 20 20 20 20 20 69 66 28 6D 61 74 n;.. if(mat
0090F0: 63 68 28 22 2A 22 29 29 20 6A 3D 50 4F 49 4E 54 ch("*")) j=POINT
009100: 74 6F 20 6D 61 6B 65 20 61 20 66 75 6E 63 74 69 to make a functi
009110: 6F 6E 0D 0A 2A 2A 20 6F 75 74 20 6F 66 20 74 68 on..** out of th
009120: 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 74 65 78 74 e following text
009130: 0D 0A 2A 2A 0D 0A 2A 2F 0D 0A 6E 65 77 66 75 6E ..**..*/..newfun
009140: 63 28 29 20 20 7B 0D 0A 20 20 63 68 61 72 20 2A c() {.. char *
009150: 70 74 72 3B 0D 0A 23 69 66 64 65 66 20 53 54 47 ptr;..#ifdef STG
009160: 4F 54 4F 0D 0A 20 20 6E 6F 67 6F 20 20 3D 09 09 OTO.. nogo =..
009170: 09 2F 2A 20 65 6E 61 62 6C 65 20 67 6F 74 6F 20 ./* enable goto
009180: 73 74 61 74 65 6D 65 6E 74 73 20 2A 2F 0D 0A 20 statements */..
009190: 20 6E 6F 6C 6F 63 20 3D 20 30 3B 09 09 09 2F 2A noloc = 0;.../*
0091A0: 20 65 6E 61 62 6C 65 20 62 6C 6F 63 6B 2D 6C 6F enable block-lo
0091B0: 63 61 6C 20 64 65 63 6C 61 72 61 74 69 6F 6E 73 cal declarations
0091C0: 20 2A 2F 0D 0A 23 65 6E 64 69 66 0D 0A 20 20 6C */..#endif.. l
0091D0: 61 73 74 73 74 3D 09 09 09 2F 2A 20 6E 6F 20 73 astst=.../* no s
0091E0: 74 61 74 65 6D 65 6E 74 20 79 65 74 20 2A 2F 0D tatement yet */.
0091F0: 0A 20 20 6C 69 74 70 74 72 3D 30 3B 09 09 09 2F . litptr=0;.../
009200: 2A 20 63 6C 65 61 72 20 6C 69 74 20 70 6F 6F 6C * clear lit pool
009210: 20 2A 2F 0D 0A 20 20 6C 69 74 6C 61 62 3D 67 65 */.. litlab=ge
009220: 74 6C 61 62 65 6C 28 29 3B 09 09 2F 2A 20 6C 61 tlabel();../* la
009230: 62 65 6C 20 6E 65 78 74 20 6C 69 74 20 70 6F 6F bel next lit poo
009240: 6C 20 2A 2F 0D 0A 20 20 6C 6F 63 70 74 72 3D 53 l */.. locptr=S
009250: 54 41 52 54 4C 4F 43 3B 09 09 2F 2A 20 63 6C 65 TARTLOC;../* cle
009260: 61 72 20 6C 6F 63 61 6C 20 76 61 72 69 61 62 6C ar local variabl
009270: 65 73 20 2A 2F 0D 0A 20 20 69 66 28 6D 6F 6E 69 es */.. if(moni
009280: 74 6F 72 29 20 6C 6F 75 74 28 6C 69 6E 65 2C 20 tor) lout(line,
009290: 73 74 64 65 72 72 29 3B 0D 0A 20 20 69 66 20 28 stderr);.. if (
0092A0: 73 79 6D 6E 61 6D 65 28 73 73 6E 61 6D 65 2C 20 symname(ssname,
0092B0: 59 45 53 29 3D 3D 30 29 20 7B 0D 0A 20 20 20 20 YES)==0) {..
0092C0: 65 72 72 6F 72 28 22 69 6C 6C 65 67 61 6C 20 66 error("illegal f
0092D0: 75 6E 63 74 69 6F 6E 20 6F 72 20 64 65 63 6C 61 unction or decla
0092E0: 72 61 74 69 6F 6E 22 29 3B 0D 0A 20 20 20 20 6B ration");.. k
0092F0: 69 6C 6C 28 29 3B 09 09 09 2F 2A 20 69 6E 76 61 ill();.../* inva
009300: 45 52 3B 0D 0A 20 20 20 20 20 20 65 6C 73 65 20 ER;.. else
009310: 20 20 20 20 20 20 20 20 20 20 6A 3D 56 41 52 49 j=VARI
009320: 41 42 4C 45 3B 0D 0A 20 20 20 20 20 20 69 66 20 ABLE;.. if
009330: 28 73 79 6D 6E 61 6D 65 28 73 73 6E 61 6D 65 2C (symname(ssname,
009340: 20 59 45 53 29 3D 3D 30 29 20 69 6C 6C 6E 61 6D YES)==0) illnam
009350: 65 28 29 3B 0D 0A 20 20 20 20 20 20 2F 2A 20 6E e();.. /* n
009360: 6F 20 6D 75 6C 74 69 64 65 66 20 63 68 65 63 6B o multidef check
009370: 2C 20 62 6C 6F 63 6B 2D 6C 6F 63 61 6C 73 20 61 , block-locals a
009380: 72 65 20 74 6F 67 65 74 68 65 72 20 2A 2F 0D 0A re together */..
009390: 20 20 20 20 20 20 6B 3D 42 50 57 3B 0D 0A 20 20 k=BPW;..
0093A0: 20 20 20 20 69 66 20 28 6D 61 74 63 68 28 22 5B if (match("[
0093B0: 22 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 70 ")) {.. p
0093C0: 61 65 72 72 6F 72 28 6A 29 3B 0D 0A 20 20 20 20 aerror(j);..
0093D0: 20 20 20 20 69 66 28 6B 3D 6E 65 65 64 73 75 62 if(k=needsub
0093E0: 28 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 20 ()) {..
0093F0: 20 6A 3D 41 52 52 41 59 3B 0D 0A 20 20 20 20 20 j=ARRAY;..
009400: 20 20 20 20 20 69 66 28 74 79 70 3D 3D 43 49 4E if(typ==CIN
009410: 54 29 6B 3D 6B 3C 3C 4C 42 50 57 3B 0D 0A 20 20 T)k=k<<LBPW;..
009420: 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 }..
009430: 20 20 20 65 6C 73 65 20 7B 6A 3D 50 4F 49 4E 54 else {j=POINT
009440: 45 52 3B 20 6B 3D 42 50 57 3B 7D 0D 0A 20 20 20 ER; k=BPW;}..
009450: 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 65 6C }.. el
009460: 73 65 20 69 66 28 28 74 79 70 3D 3D 43 43 48 41 se if((typ==CCHA
009470: 52 29 26 28 6A 3D 3D 56 41 52 49 41 42 4C 45 29 R)&(j==VARIABLE)
009480: 29 20 6B 3D 53 42 50 43 3B 0D 0A 20 20 20 20 20 ) k=SBPC;..
009490: 20 64 65 63 6C 61 72 65 64 20 3D 20 64 65 63 6C declared = decl
0094A0: 61 72 65 64 20 2B 20 6B 3B 0D 0A 20 20 20 20 20 ared + k;..
0094B0: 20 61 64 64 73 79 6D 28 73 73 6E 61 6D 65 2C 20 addsym(ssname,
0094C0: 6A 2C 20 74 79 70 2C 20 63 73 70 20 2D 20 64 65 j, typ, csp - de
0094D0: 63 6C 61 72 65 64 2C 20 26 6C 6F 63 70 74 72 2C clared, &locptr,
0094E0: 20 41 55 54 4F 4D 41 54 49 43 29 3B 0D 0A 20 20 AUTOMATIC);..
0094F0: 20 20 20 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 break;..
009500: 6C 69 64 61 74 65 20 6C 69 6E 65 20 2A 2F 0D 0A lidate line */..
009510: 20 20 20 20 72 65 74 75 72 6E 3B 0D 0A 20 20 20 return;..
009520: 20 7D 0D 0A 20 20 69 66 28 66 75 6E 63 31 29 20 }.. if(func1)
009530: 7B 0D 0A 20 20 20 20 70 6F 73 74 6C 61 62 65 6C {.. postlabel
009540: 28 62 65 67 6C 61 62 29 3B 0D 0A 20 20 20 20 66 (beglab);.. f
009550: 75 6E 63 31 3D 30 3B 0D 0A 20 20 20 20 7D 0D 0A unc1=0;.. }..
009560: 20 20 69 66 28 70 74 72 3D 66 69 6E 64 67 6C 62 if(ptr=findglb
009570: 28 73 73 6E 61 6D 65 29 29 20 7B 09 2F 2A 20 61 (ssname)) {./* a
009580: 6C 72 65 61 64 79 20 69 6E 20 73 79 6D 62 6F 6C lready in symbol
009590: 20 74 61 62 6C 65 20 3F 20 2A 2F 0D 0A 20 20 20 table ? */..
0095A0: 20 69 66 28 70 74 72 5B 49 44 45 4E 54 5D 21 3D if(ptr[IDENT]!=
0095B0: 46 55 4E 43 54 49 4F 4E 29 20 20 20 20 20 20 20 FUNCTION)
0095C0: 6D 75 6C 74 69 64 65 66 28 73 73 6E 61 6D 65 29 multidef(ssname)
0095D0: 3B 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 28 70 ;.. else if(p
0095E0: 74 72 5B 4F 46 46 53 45 54 5D 3D 3D 46 55 4E 43 tr[OFFSET]==FUNC
0095F0: 54 49 4F 4E 29 20 6D 75 6C 74 69 64 65 66 28 73 TION) multidef(s
009600: 73 6E 61 6D 65 29 3B 0D 0A 20 20 20 20 65 6C 73 sname);.. els
009610: 65 20 7B 0D 0A 20 20 20 20 20 20 2F 2A 20 65 61 e {.. /* ea
009620: 72 6C 69 65 72 20 61 73 73 75 6D 65 64 20 74 6F rlier assumed to
009630: 20 62 65 20 61 20 66 75 6E 63 74 69 6F 6E 20 2A be a function *
009640: 2F 0D 0A 20 20 20 20 20 20 70 74 72 5B 4F 46 46 /.. ptr[OFF
009650: 53 45 54 5D 3D 46 55 4E 43 54 49 4F 4E 3B 0D 0A SET]=FUNCTION;..
009660: 20 20 20 20 20 20 70 74 72 5B 43 4C 41 53 53 5D ptr[CLASS]
009670: 3D 53 54 41 54 49 43 3B 0D 0A 20 20 20 20 20 20 =STATIC;..
009680: 7D 0D 0A 20 20 20 20 7D 0D 0A 20 20 65 6C 73 65 }.. }.. else
009690: 0D 0A 20 20 20 20 61 64 64 73 79 6D 28 73 73 6E .. addsym(ssn
0096A0: 61 6D 65 2C 20 46 55 4E 43 54 49 4F 4E 2C 20 43 ame, FUNCTION, C
0096B0: 49 4E 54 2C 20 46 55 4E 43 54 49 4F 4E 2C 20 26 INT, FUNCTION, &
0096C0: 67 6C 62 70 74 72 2C 20 53 54 41 54 49 43 29 3B glbptr, STATIC);
0096D0: 0D 0A 20 20 69 66 28 6D 61 74 63 68 28 22 28 22 .. if(match("("
0096E0: 29 3D 3D 30 29 20 65 72 72 6F 72 28 22 6E 6F 20 )==0) error("no
0096F0: 6F 70 65 6E 20 70 61 72 65 6E 22 29 3B 0D 0A 20 open paren");..
009700: 20 20 7D 0D 0A 20 20 20 20 69 66 20 28 6D 61 74 }.. if (mat
009710: 63 68 28 22 2C 22 29 3D 3D 30 29 20 72 65 74 75 ch(",")==0) retu
009720: 72 6E 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D rn;.. }.. }.
009730: 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 74 65 73 74 20 66 .../*..** test f
009740: 6F 72 20 70 6F 69 6E 74 65 72 20 61 72 72 61 79 or pointer array
009750: 20 28 75 6E 73 75 70 70 6F 72 74 65 64 29 0D 0A (unsupported)..
009760: 2A 2F 0D 0A 70 61 65 72 72 6F 72 28 6A 29 20 69 */..paerror(j) i
009770: 6E 74 20 6A 3B 20 7B 0D 0A 20 20 69 66 28 6A 3D nt j; {.. if(j=
009780: 3D 50 4F 49 4E 54 45 52 29 20 65 72 72 6F 72 28 =POINTER) error(
009790: 22 6E 6F 20 70 6F 69 6E 74 65 72 20 61 72 72 61 "no pointer arra
0097A0: 79 73 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A ys");.. }..../*
0097B0: 0D 0A 2A 2A 20 69 6E 69 74 69 61 6C 69 7A 65 20 ..** initialize
0097C0: 67 6C 6F 62 61 6C 20 6F 62 6A 65 63 74 73 0D 0A global objects..
0097D0: 2A 2F 0D 0A 69 6E 69 74 69 61 6C 73 28 73 69 7A */..initials(siz
0097E0: 65 2C 20 69 64 65 6E 74 2C 20 64 69 6D 29 20 69 e, ident, dim) i
0097F0: 6E 74 20 73 69 7A 65 2C 20 69 64 65 6E 74 2C 20 nt size, ident,
009800: 64 69 6D 3B 20 7B 0D 0A 20 20 69 6E 74 20 73 61 dim; {.. int sa
009810: 76 65 64 69 6D 3B 0D 0A 20 20 6C 69 74 70 74 72 vedim;.. litptr
009820: 3D 30 3B 0D 0A 20 20 69 66 28 64 69 6D 3D 3D 30 =0;.. if(dim==0
009830: 29 20 64 69 6D 20 3D 20 2D 31 3B 0D 0A 20 20 73 ) dim = -1;.. s
009840: 61 76 65 64 69 6D 3D 64 69 6D 3B 0D 0A 20 20 65 avedim=dim;.. e
009850: 6E 74 72 79 28 29 3B 0D 0A 20 20 69 66 28 6D 61 ntry();.. if(ma
009860: 74 63 68 28 22 3D 22 29 29 20 7B 0D 0A 20 20 20 tch("=")) {..
009870: 20 69 66 28 6D 61 74 63 68 28 22 7B 22 29 29 20 if(match("{"))
009880: 7B 0D 0A 20 20 20 20 20 20 77 68 69 6C 65 28 64 {.. while(d
009890: 69 6D 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 69 im) {.. i
0098A0: 6E 69 74 28 73 69 7A 65 2C 20 69 64 65 6E 74 2C nit(size, ident,
0098B0: 20 26 64 69 6D 29 3B 0D 0A 20 20 20 20 20 20 20 &dim);..
0098C0: 20 69 66 28 6D 61 74 63 68 28 22 2C 22 29 3D 3D if(match(",")==
0098D0: 30 29 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 0) break;..
0098E0: 20 20 20 7D 0D 0A 20 20 20 20 20 20 6E 65 65 64 }.. need
0098F0: 74 6F 6B 65 6E 28 22 7D 22 29 3B 0D 0A 20 20 20 token("}");..
009900: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
009910: 08 00 01 00 02 09 52 E5 08 00 41 02 00 00 00 02 ......R...A.....
009920: 08 00 46 02 00 00 00 02 08 00 42 02 00 00 00 02 ..F.......B.....
009930: 08 00 47 02 00 00 00 02 08 00 43 02 00 00 00 02 ..G.......C.....
009940: 08 00 48 02 00 00 00 02 08 00 44 02 00 00 00 02 ..H.......D.....
009950: 08 00 49 02 00 00 00 02 08 00 45 02 00 00 00 02 ..I.......E.....
009960: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
009970: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
009980: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
009990: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0099A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0099B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0099C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0099D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0099E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0099F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
009A00: 20 65 6E 74 72 79 28 29 3B 0D 0A 20 20 6C 6F 63 entry();.. loc
009A10: 70 74 72 3D 53 54 41 52 54 4C 4F 43 3B 0D 0A 20 ptr=STARTLOC;..
009A20: 20 61 72 67 73 74 6B 3D 30 3B 09 09 09 2F 2A 20 argstk=0;.../*
009A30: 69 6E 69 74 20 61 72 67 20 63 6F 75 6E 74 20 2A init arg count *
009A40: 2F 0D 0A 20 20 77 68 69 6C 65 28 6D 61 74 63 68 /.. while(match
009A50: 28 22 29 22 29 3D 3D 30 29 20 7B 09 2F 2A 20 74 (")")==0) {./* t
009A60: 68 65 6E 20 63 6F 75 6E 74 20 61 72 67 73 20 2A hen count args *
009A70: 2F 0D 0A 20 20 20 20 2F 2A 20 61 6E 79 20 6C 65 /.. /* any le
009A80: 67 61 6C 20 6E 61 6D 65 20 62 75 6D 70 73 20 61 gal name bumps a
009A90: 72 67 20 63 6F 75 6E 74 20 2A 2F 0D 0A 20 20 20 rg count */..
009AA0: 20 69 66 28 73 79 6D 6E 61 6D 65 28 73 73 6E 61 if(symname(ssna
009AB0: 6D 65 2C 20 59 45 53 29 29 20 7B 0D 0A 20 20 20 me, YES)) {..
009AC0: 20 20 20 69 66 28 66 69 6E 64 6C 6F 63 28 73 73 if(findloc(ss
009AD0: 6E 61 6D 65 29 29 20 6D 75 6C 74 69 64 65 66 28 name)) multidef(
009AE0: 73 73 6E 61 6D 65 29 3B 0D 0A 20 20 20 20 20 20 ssname);..
009AF0: 65 6C 73 65 20 7B 0D 0A 20 20 20 20 20 20 20 20 else {..
009B00: 61 64 64 73 79 6D 28 73 73 6E 61 6D 65 2C 20 30 addsym(ssname, 0
009B10: 2C 20 30 2C 20 61 72 67 73 74 6B 2C 20 26 6C 6F , 0, argstk, &lo
009B20: 63 70 74 72 2C 20 41 55 54 4F 4D 41 54 49 43 29 cptr, AUTOMATIC)
009B30: 3B 0D 0A 20 20 20 20 20 20 20 20 61 72 67 73 74 ;.. argst
009B40: 6B 3D 61 72 67 73 74 6B 2B 42 50 57 3B 0D 0A 20 k=argstk+BPW;..
009B50: 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 }..
009B60: 7D 0D 0A 20 20 20 20 65 6C 73 65 20 7B 65 72 72 }.. else {err
009B70: 6F 72 28 22 69 6C 6C 65 67 61 6C 20 61 72 67 75 or("illegal argu
009B80: 6D 65 6E 74 20 6E 61 6D 65 22 29 3B 6A 75 6E 6B ment name");junk
009B90: 28 29 3B 7D 0D 0A 20 20 20 20 62 6C 61 6E 6B 73 ();}.. blanks
009BA0: 28 29 3B 0D 0A 20 20 20 20 2F 2A 20 69 66 20 6E ();.. /* if n
009BB0: 6F 74 20 63 6C 6F 73 69 6E 67 20 70 61 72 65 6E ot closing paren
009BC0: 2C 20 73 68 6F 75 6C 64 20 62 65 20 63 6F 6D 6D , should be comm
009BD0: 61 20 2A 2F 0D 0A 20 20 20 20 69 66 28 73 74 72 a */.. if(str
009BE0: 65 71 28 6C 70 74 72 2C 22 29 22 29 3D 3D 30 29 eq(lptr,")")==0)
009BF0: 20 7B 0D 0A 20 20 20 20 20 20 69 66 28 6D 61 74 {.. if(mat
009C00: 20 6E 6F 67 6F 3D 64 65 63 6C 61 72 65 64 3B 09 nogo=declared;.
009C10: 2F 2A 20 64 69 73 61 62 6C 65 20 67 6F 74 6F 20 /* disable goto
009C20: 69 66 20 61 6E 79 20 2A 2F 0D 0A 23 65 6E 64 69 if any */..#endi
009C30: 66 0D 0A 20 20 20 20 20 20 63 73 70 3D 6D 6F 64 f.. csp=mod
009C40: 73 74 6B 28 63 73 70 20 2D 20 64 65 63 6C 61 72 stk(csp - declar
009C50: 65 64 2C 20 4E 4F 29 3B 0D 0A 20 20 20 20 20 20 ed, NO);..
009C60: 64 65 63 6C 61 72 65 64 20 3D 20 2D 31 3B 0D 0A declared = -1;..
009C70: 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 69 66 28 }.. if(
009C80: 6D 61 74 63 68 28 22 7B 22 29 29 20 20 20 20 20 match("{"))
009C90: 20 20 20 20 20 20 20 20 20 20 20 63 6F 6D 70 6F compo
009CA0: 75 6E 64 28 29 3B 0D 0A 20 20 20 20 65 6C 73 65 und();.. else
009CB0: 20 69 66 28 61 6D 61 74 63 68 28 22 69 66 22 2C if(amatch("if",
009CC0: 32 29 29 20 20 20 20 20 20 20 7B 64 6F 69 66 28 2)) {doif(
009CD0: 29 3B 09 09 6C 61 73 74 73 74 3D 53 54 49 46 3B );..lastst=STIF;
009CE0: 7D 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 28 61 }.. else if(a
009CF0: 6D 61 74 63 68 28 22 77 68 69 6C 65 22 2C 35 29 match("while",5)
009D00: 29 20 20 20 20 7B 64 6F 77 68 69 6C 65 28 29 3B ) {dowhile();
009D10: 09 09 6C 61 73 74 73 74 3D 53 54 57 48 49 4C 45 ..lastst=STWHILE
009D20: 3B 7D 0D 0A 23 69 66 64 65 66 20 53 54 44 4F 0D ;}..#ifdef STDO.
009D30: 0A 20 20 20 20 65 6C 73 65 20 69 66 28 61 6D 61 . else if(ama
009D40: 74 63 68 28 22 64 6F 22 2C 32 29 29 20 20 20 20 tch("do",2))
009D50: 20 20 20 7B 64 6F 64 6F 28 29 3B 09 09 6C 61 73 {dodo();..las
009D60: 74 73 74 3D 53 54 44 4F 3B 7D 0D 0A 23 65 6E 64 tst=STDO;}..#end
009D70: 69 66 0D 0A 23 69 66 64 65 66 20 53 54 46 4F 52 if..#ifdef STFOR
009D80: 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 28 61 6D .. else if(am
009D90: 61 74 63 68 28 22 66 6F 72 22 2C 33 29 29 09 20 atch("for",3)).
009DA0: 20 7B 64 6F 66 6F 72 28 29 3B 09 09 6C 61 73 74 {dofor();..last
009DB0: 73 74 3D 53 54 46 4F 52 3B 7D 0D 0A 23 65 6E 64 st=STFOR;}..#end
009DC0: 69 66 0D 0A 23 69 66 64 65 66 20 53 54 53 57 49 if..#ifdef STSWI
009DD0: 54 43 48 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 TCH.. else if
009DE0: 28 61 6D 61 74 63 68 28 22 73 77 69 74 63 68 22 (amatch("switch"
009DF0: 2C 36 29 29 09 20 20 7B 64 6F 73 77 69 74 63 68 ,6)). {doswitch
009E00: 63 68 28 22 2C 22 29 3D 3D 30 29 20 65 72 72 6F ch(",")==0) erro
009E10: 72 28 22 6E 6F 20 63 6F 6D 6D 61 22 29 3B 0D 0A r("no comma");..
009E20: 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 69 66 28 }.. if(
009E30: 65 6E 64 73 74 28 29 29 20 62 72 65 61 6B 3B 0D endst()) break;.
009E40: 0A 20 20 20 20 7D 0D 0A 20 20 63 73 70 3D 30 3B . }.. csp=0;
009E50: 09 09 09 2F 2A 20 70 72 65 73 65 74 20 73 74 61 .../* preset sta
009E60: 63 6B 20 70 74 72 20 2A 2F 0D 0A 20 20 61 72 67 ck ptr */.. arg
009E70: 74 6F 70 3D 61 72 67 73 74 6B 3B 0D 0A 20 20 77 top=argstk;.. w
009E80: 68 69 6C 65 28 61 72 67 73 74 6B 29 20 7B 0D 0A hile(argstk) {..
009E90: 20 20 20 20 2F 2A 20 6E 6F 77 20 6C 65 74 20 75 /* now let u
009EA0: 73 65 72 20 64 65 63 6C 61 72 65 20 77 68 61 74 ser declare what
009EB0: 20 74 79 70 65 73 20 6F 66 20 74 68 69 6E 67 73 types of things
009EC0: 20 2A 2F 0D 0A 20 20 20 20 2F 2A 20 20 20 20 20 */.. /*
009ED0: 20 74 68 6F 73 65 20 61 72 67 75 6D 65 6E 74 73 those arguments
009EE0: 20 77 65 72 65 20 2A 2F 0D 0A 20 20 20 20 69 66 were */.. if
009EF0: 28 61 6D 61 74 63 68 28 22 63 68 61 72 22 2C 34 (amatch("char",4
009F00: 29 29 20 20 20 20 20 7B 64 6F 61 72 67 73 28 43 )) {doargs(C
009F10: 43 48 41 52 29 3B 6E 73 28 29 3B 7D 0D 0A 20 20 CHAR);ns();}..
009F20: 20 20 65 6C 73 65 20 69 66 28 61 6D 61 74 63 68 else if(amatch
009F30: 28 22 69 6E 74 22 2C 33 29 29 20 7B 64 6F 61 72 ("int",3)) {doar
009F40: 67 73 28 43 49 4E 54 29 3B 6E 73 28 29 3B 7D 0D gs(CINT);ns();}.
009F50: 0A 20 20 20 20 65 6C 73 65 20 7B 65 72 72 6F 72 . else {error
009F60: 28 22 77 72 6F 6E 67 20 6E 75 6D 62 65 72 20 6F ("wrong number o
009F70: 66 20 61 72 67 75 6D 65 6E 74 73 22 29 3B 62 72 f arguments");br
009F80: 65 61 6B 3B 7D 0D 0A 20 20 20 20 7D 0D 0A 20 20 eak;}.. }..
009F90: 73 74 61 74 65 6D 65 6E 74 28 29 3B 0D 0A 23 69 statement();..#i
009FA0: 66 64 65 66 20 53 54 47 4F 54 4F 0D 0A 20 20 69 fdef STGOTO.. i
009FB0: 66 28 6C 61 73 74 73 74 20 21 3D 20 53 54 52 45 f(lastst != STRE
009FC0: 54 55 52 4E 20 26 26 20 6C 61 73 74 73 74 20 21 TURN && lastst !
009FD0: 3D 20 53 54 47 4F 54 4F 29 20 66 66 72 65 74 28 = STGOTO) ffret(
009FE0: 29 3B 0D 0A 23 65 6C 73 65 0D 0A 20 20 69 66 28 );..#else.. if(
009FF0: 6C 61 73 74 73 74 20 21 3D 20 53 54 52 45 54 55 lastst != STRETU
00A000: 28 29 3B 09 09 6C 61 73 74 73 74 3D 53 54 53 57 ();..lastst=STSW
00A010: 49 54 43 48 3B 7D 0D 0A 20 20 20 20 65 6C 73 65 ITCH;}.. else
00A020: 20 69 66 28 61 6D 61 74 63 68 28 22 63 61 73 65 if(amatch("case
00A030: 22 2C 34 29 29 09 20 20 7B 64 6F 63 61 73 65 28 ",4)). {docase(
00A040: 29 3B 09 09 6C 61 73 74 73 74 3D 53 54 43 41 53 );..lastst=STCAS
00A050: 45 3B 7D 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 E;}.. else if
00A060: 28 61 6D 61 74 63 68 28 22 64 65 66 61 75 6C 74 (amatch("default
00A070: 22 2C 37 29 29 20 20 7B 64 6F 64 65 66 61 75 6C ",7)) {dodefaul
00A080: 74 28 29 3B 09 09 6C 61 73 74 73 74 3D 53 54 44 t();..lastst=STD
00A090: 45 46 3B 7D 0D 0A 23 65 6E 64 69 66 0D 0A 23 69 EF;}..#endif..#i
00A0A0: 66 64 65 66 20 53 54 47 4F 54 4F 0D 0A 20 20 20 fdef STGOTO..
00A0B0: 20 65 6C 73 65 20 69 66 28 61 6D 61 74 63 68 28 else if(amatch(
00A0C0: 22 67 6F 74 6F 22 2C 20 34 29 29 09 20 20 7B 64 "goto", 4)). {d
00A0D0: 6F 67 6F 74 6F 28 29 3B 09 09 6C 61 73 74 73 74 ogoto();..lastst
00A0E0: 3D 53 54 47 4F 54 4F 3B 7D 0D 0A 20 20 20 20 65 =STGOTO;}.. e
00A0F0: 6C 73 65 20 69 66 28 64 6F 6C 61 62 65 6C 28 29 lse if(dolabel()
00A100: 29 09 09 09 09 09 6C 61 73 74 73 74 3D 53 54 4C ).....lastst=STL
00A110: 41 42 45 4C 3B 0D 0A 23 65 6E 64 69 66 0D 0A 20 ABEL;..#endif..
00A120: 20 20 20 65 6C 73 65 20 69 66 28 61 6D 61 74 63 else if(amatc
00A130: 68 28 22 72 65 74 75 72 6E 22 2C 36 29 29 09 20 h("return",6)).
00A140: 20 7B 64 6F 72 65 74 75 72 6E 28 29 3B 6E 73 28 {doreturn();ns(
00A150: 29 3B 09 6C 61 73 74 73 74 3D 53 54 52 45 54 55 );.lastst=STRETU
00A160: 52 4E 3B 7D 0D 0A 20 20 20 20 65 6C 73 65 20 69 RN;}.. else i
00A170: 66 28 61 6D 61 74 63 68 28 22 62 72 65 61 6B 22 f(amatch("break"
00A180: 2C 35 29 29 09 20 20 7B 64 6F 62 72 65 61 6B 28 ,5)). {dobreak(
00A190: 29 3B 6E 73 28 29 3B 09 6C 61 73 74 73 74 3D 53 );ns();.lastst=S
00A1A0: 54 42 52 45 41 4B 3B 7D 0D 0A 20 20 20 20 65 6C TBREAK;}.. el
00A1B0: 73 65 20 69 66 28 61 6D 61 74 63 68 28 22 63 6F se if(amatch("co
00A1C0: 6E 74 69 6E 75 65 22 2C 38 29 29 20 7B 64 6F 63 ntinue",8)) {doc
00A1D0: 6F 6E 74 28 29 3B 6E 73 28 29 3B 09 6C 61 73 74 ont();ns();.last
00A1E0: 73 74 3D 53 54 43 4F 4E 54 3B 7D 0D 0A 20 20 20 st=STCONT;}..
00A1F0: 20 65 6C 73 65 20 69 66 28 6D 61 74 63 68 28 22 else if(match("
00A200: 52 4E 29 20 66 66 72 65 74 28 29 3B 0D 0A 23 65 RN) ffret();..#e
00A210: 6E 64 69 66 0D 0A 20 20 69 66 28 6C 69 74 70 74 ndif.. if(litpt
00A220: 72 29 20 7B 0D 0A 20 20 20 20 70 72 69 6E 74 6C r) {.. printl
00A230: 61 62 65 6C 28 6C 69 74 6C 61 62 29 3B 0D 0A 20 abel(litlab);..
00A240: 20 20 20 63 6F 6C 28 29 3B 0D 0A 20 20 20 20 64 col();.. d
00A250: 75 6D 70 6C 69 74 73 28 31 29 3B 09 09 2F 2A 20 umplits(1);../*
00A260: 64 75 6D 70 20 6C 69 74 65 72 61 6C 73 20 2A 2F dump literals */
00A270: 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A .. }.. }....
00A280: 2F 2A 0D 0A 2A 2A 20 64 65 63 6C 61 72 65 20 61 /*..** declare a
00A290: 72 67 75 6D 65 6E 74 20 74 79 70 65 73 0D 0A 2A rgument types..*
00A2A0: 2A 0D 0A 2A 2A 20 63 61 6C 6C 65 64 20 66 72 6F *..** called fro
00A2B0: 6D 20 22 6E 65 77 66 75 6E 63 22 20 74 68 69 73 m "newfunc" this
00A2C0: 20 72 6F 75 74 69 6E 65 20 61 64 64 73 20 61 6E routine adds an
00A2D0: 20 65 6E 74 72 79 20 69 6E 20 74 68 65 0D 0A 2A entry in the..*
00A2E0: 2A 20 6C 6F 63 61 6C 20 73 79 6D 62 6F 6C 20 74 * local symbol t
00A2F0: 61 62 6C 65 20 66 6F 72 20 65 61 63 68 20 6E 61 able for each na
00A300: 6D 65 64 20 61 72 67 75 6D 65 6E 74 0D 0A 2A 2F med argument..*/
00A310: 0D 0A 64 6F 61 72 67 73 28 74 29 20 69 6E 74 20 ..doargs(t) int
00A320: 74 3B 20 7B 0D 0A 20 20 69 6E 74 20 6A 2C 20 6C t; {.. int j, l
00A330: 65 67 61 6C 6E 61 6D 65 3B 0D 0A 20 20 63 68 61 egalname;.. cha
00A340: 72 20 63 2C 20 2A 61 72 67 70 74 72 3B 0D 0A 20 r c, *argptr;..
00A350: 20 77 68 69 6C 65 28 31 29 20 7B 0D 0A 20 20 20 while(1) {..
00A360: 20 69 66 28 61 72 67 73 74 6B 3D 3D 30 29 20 72 if(argstk==0) r
00A370: 65 74 75 72 6E 3B 09 2F 2A 20 6E 6F 20 61 72 67 eturn;./* no arg
00A380: 75 6D 65 6E 74 73 20 2A 2F 0D 0A 20 20 20 20 69 uments */.. i
00A390: 66 28 6D 61 74 63 68 28 22 28 2A 22 29 7C 6D 61 f(match("(*")|ma
00A3A0: 74 63 68 28 22 2A 22 29 29 20 6A 3D 50 4F 49 4E tch("*")) j=POIN
00A3B0: 54 45 52 3B 20 20 65 6C 73 65 20 6A 3D 56 41 52 TER; else j=VAR
00A3C0: 49 41 42 4C 45 3B 0D 0A 20 20 20 20 69 66 28 28 IABLE;.. if((
00A3D0: 6C 65 67 61 6C 6E 61 6D 65 3D 73 79 6D 6E 61 6D legalname=symnam
00A3E0: 65 28 73 73 6E 61 6D 65 2C 20 59 45 53 29 29 3D e(ssname, YES))=
00A3F0: 3D 30 29 20 69 6C 6C 6E 61 6D 65 28 29 3B 0D 0A =0) illname();..
00A400: 3B 22 29 29 09 09 20 20 65 72 72 66 6C 61 67 3D ;")).. errflag=
00A410: 30 3B 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 28 0;.. else if(
00A420: 6D 61 74 63 68 28 22 23 61 73 6D 22 29 29 09 20 match("#asm")).
00A430: 20 7B 64 6F 61 73 6D 28 29 3B 09 09 6C 61 73 74 {doasm();..last
00A440: 73 74 3D 53 54 41 53 4D 3B 7D 0D 0A 20 20 20 20 st=STASM;}..
00A450: 65 6C 73 65 09 09 09 20 20 7B 64 6F 65 78 70 72 else... {doexpr
00A460: 28 29 3B 6E 73 28 29 3B 09 6C 61 73 74 73 74 3D ();ns();.lastst=
00A470: 53 54 45 58 50 52 3B 7D 0D 0A 20 20 20 20 7D 0D STEXPR;}.. }.
00A480: 0A 20 20 72 65 74 75 72 6E 20 6C 61 73 74 73 74 . return lastst
00A490: 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A ;.. }..../*..**
00A4A0: 20 73 65 6D 69 63 6F 6C 6F 6E 20 65 6E 66 6F 72 semicolon enfor
00A4B0: 63 65 72 0D 0A 2A 2A 0D 0A 2A 2A 20 63 61 6C 6C cer..**..** call
00A4C0: 65 64 20 77 68 65 6E 65 76 65 72 20 73 79 6E 74 ed whenever synt
00A4D0: 61 78 20 72 65 71 75 69 72 65 73 20 61 20 73 65 ax requires a se
00A4E0: 6D 69 63 6F 6C 6F 6E 0D 0A 2A 2F 0D 0A 6E 73 28 micolon..*/..ns(
00A4F0: 29 20 20 7B 0D 0A 20 20 69 66 28 6D 61 74 63 68 ) {.. if(match
00A500: 28 22 3B 22 29 3D 3D 30 29 20 65 72 72 6F 72 28 (";")==0) error(
00A510: 22 6E 6F 20 73 65 6D 69 63 6F 6C 6F 6E 22 29 3B "no semicolon");
00A520: 0D 0A 20 20 65 6C 73 65 20 65 72 72 66 6C 61 67 .. else errflag
00A530: 3D 30 3B 0D 0A 20 20 7D 0D 0A 0D 0A 63 6F 6D 70 =0;.. }....comp
00A540: 6F 75 6E 64 28 29 20 20 7B 0D 0A 20 20 69 6E 74 ound() {.. int
00A550: 20 73 61 76 63 73 70 3B 0D 0A 20 20 63 68 61 72 savcsp;.. char
00A560: 20 2A 73 61 76 6C 6F 63 3B 0D 0A 20 20 73 61 76 *savloc;.. sav
00A570: 63 73 70 3D 63 73 70 3B 0D 0A 20 20 73 61 76 6C csp=csp;.. savl
00A580: 6F 63 3D 6C 6F 63 70 74 72 3B 0D 0A 20 20 64 65 oc=locptr;.. de
00A590: 63 6C 61 72 65 64 3D 30 3B 09 09 09 2F 2A 20 6D clared=0;.../* m
00A5A0: 61 79 20 6E 6F 77 20 64 65 63 6C 61 72 65 20 6C ay now declare l
00A5B0: 6F 63 61 6C 20 76 61 72 69 61 62 6C 65 73 20 2A ocal variables *
00A5C0: 2F 0D 0A 20 20 2B 2B 6E 63 6D 70 3B 09 09 09 2F /.. ++ncmp;.../
00A5D0: 2A 20 6E 65 77 20 6C 65 76 65 6C 20 6F 70 65 6E * new level open
00A5E0: 20 2A 2F 0D 0A 20 20 77 68 69 6C 65 20 28 6D 61 */.. while (ma
00A5F0: 74 63 68 28 22 7D 22 29 3D 3D 30 29 0D 0A 20 20 tch("}")==0)..
00A600: 20 20 20 20 69 66 28 6D 61 74 63 68 28 22 29 22 if(match(")"
00A610: 29 29 20 3B 0D 0A 20 20 20 20 69 66 28 6D 61 74 )) ;.. if(mat
00A620: 63 68 28 22 28 29 22 29 29 20 3B 0D 0A 20 20 20 ch("()")) ;..
00A630: 20 69 66 28 6D 61 74 63 68 28 22 5B 22 29 29 20 if(match("["))
00A640: 7B 0D 0A 20 20 20 20 20 20 70 61 65 72 72 6F 72 {.. paerror
00A650: 28 6A 29 3B 0D 0A 20 20 20 20 20 20 77 68 69 6C (j);.. whil
00A660: 65 28 69 6E 62 79 74 65 28 29 21 3D 27 5D 27 29 e(inbyte()!=']')
00A670: 20 69 66 28 65 6E 64 73 74 28 29 29 20 62 72 65 if(endst()) bre
00A680: 61 6B 3B 09 2F 2A 20 73 6B 69 70 20 22 5B 2E 2E ak;./* skip "[..
00A690: 2E 5D 22 20 2A 2F 0D 0A 20 20 20 20 20 20 6A 3D .]" */.. j=
00A6A0: 50 4F 49 4E 54 45 52 3B 09 09 2F 2A 20 61 64 64 POINTER;../* add
00A6B0: 20 65 6E 74 72 79 20 61 73 20 70 6F 69 6E 74 65 entry as pointe
00A6C0: 72 20 2A 2F 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 r */.. }..
00A6D0: 20 20 20 69 66 28 6C 65 67 61 6C 6E 61 6D 65 29 if(legalname)
00A6E0: 20 7B 0D 0A 20 20 20 20 20 20 69 66 28 61 72 67 {.. if(arg
00A6F0: 70 74 72 3D 66 69 6E 64 6C 6F 63 28 73 73 6E 61 ptr=findloc(ssna
00A700: 6D 65 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 me)) {..
00A710: 2F 2A 20 61 64 64 20 64 65 74 61 69 6C 73 20 6F /* add details o
00A720: 66 20 74 79 70 65 20 61 6E 64 20 61 64 64 72 65 f type and addre
00A730: 73 73 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 61 ss */.. a
00A740: 72 67 70 74 72 5B 49 44 45 4E 54 5D 3D 6A 3B 0D rgptr[IDENT]=j;.
00A750: 0A 20 20 20 20 20 20 20 20 61 72 67 70 74 72 5B . argptr[
00A760: 54 59 50 45 5D 3D 74 3B 0D 0A 20 20 20 20 20 20 TYPE]=t;..
00A770: 20 20 70 75 74 69 6E 74 28 61 72 67 74 6F 70 2D putint(argtop-
00A780: 67 65 74 69 6E 74 28 61 72 67 70 74 72 2B 4F 46 getint(argptr+OF
00A790: 46 53 45 54 2C 20 4F 46 46 53 49 5A 45 29 2C 20 FSET, OFFSIZE),
00A7A0: 61 72 67 70 74 72 2B 4F 46 46 53 45 54 2C 20 4F argptr+OFFSET, O
00A7B0: 46 46 53 49 5A 45 29 3B 0D 0A 20 20 20 20 20 20 FFSIZE);..
00A7C0: 20 20 7D 0D 0A 20 20 20 20 20 20 65 6C 73 65 20 }.. else
00A7D0: 65 72 72 6F 72 28 22 6E 6F 74 20 61 6E 20 61 72 error("not an ar
00A7E0: 67 75 6D 65 6E 74 22 29 3B 0D 0A 20 20 20 20 20 gument");..
00A7F0: 20 7D 0D 0A 20 20 20 20 61 72 67 73 74 6B 3D 61 }.. argstk=a
00A800: 20 20 69 66 28 65 6F 66 29 20 7B 0D 0A 20 20 20 if(eof) {..
00A810: 20 20 20 65 72 72 6F 72 28 22 6E 6F 20 66 69 6E error("no fin
00A820: 61 6C 20 7D 22 29 3B 0D 0A 20 20 20 20 20 20 62 al }");.. b
00A830: 72 65 61 6B 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A reak;.. }..
00A840: 20 20 20 20 65 6C 73 65 20 73 74 61 74 65 6D 65 else stateme
00A850: 6E 74 28 29 3B 09 09 2F 2A 20 64 6F 20 6F 6E 65 nt();../* do one
00A860: 20 2A 2F 0D 0A 20 20 2D 2D 6E 63 6D 70 3B 09 09 */.. --ncmp;..
00A870: 09 2F 2A 20 63 6C 6F 73 65 20 63 75 72 72 65 6E ./* close curren
00A880: 74 20 6C 65 76 65 6C 20 2A 2F 0D 0A 2F 2A 35 35 t level */../*55
00A890: 2A 2F 0D 0A 23 69 66 64 65 66 20 53 54 47 4F 54 */..#ifdef STGOT
00A8A0: 4F 0D 0A 20 20 69 66 28 6C 61 73 74 73 74 20 21 O.. if(lastst !
00A8B0: 3D 20 53 54 52 45 54 55 52 4E 20 26 26 20 6C 61 = STRETURN && la
00A8C0: 73 74 73 74 20 21 3D 20 53 54 47 4F 54 4F 29 0D stst != STGOTO).
00A8D0: 0A 23 65 6C 73 65 0D 0A 20 20 69 66 28 6C 61 73 .#else.. if(las
00A8E0: 74 73 74 20 21 3D 20 53 54 52 45 54 55 52 4E 29 tst != STRETURN)
00A8F0: 0D 0A 23 65 6E 64 69 66 0D 0A 20 20 20 20 6D 6F ..#endif.. mo
00A900: 64 73 74 6B 28 73 61 76 63 73 70 2C 20 4E 4F 29 dstk(savcsp, NO)
00A910: 3B 09 09 2F 2A 20 64 65 6C 65 74 65 20 6C 6F 63 ;../* delete loc
00A920: 61 6C 20 76 61 72 69 61 62 6C 65 20 73 70 61 63 al variable spac
00A930: 65 20 2A 2F 0D 0A 20 20 63 73 70 3D 73 61 76 63 e */.. csp=savc
00A940: 73 70 3B 0D 0A 2F 2A 35 35 2A 2F 0D 0A 23 69 66 sp;../*55*/..#if
00A950: 64 65 66 20 53 54 47 4F 54 4F 0D 0A 20 20 63 70 def STGOTO.. cp
00A960: 74 72 3D 73 61 76 6C 6F 63 3B 09 09 09 2F 2A 20 tr=savloc;.../*
00A970: 72 65 74 61 69 6E 20 6C 61 62 65 6C 73 20 2A 2F retain labels */
00A980: 0D 0A 20 20 77 68 69 6C 65 28 63 70 74 72 20 3C .. while(cptr <
00A990: 20 6C 6F 63 70 74 72 29 20 7B 0D 0A 20 20 20 20 locptr) {..
00A9A0: 63 70 74 72 32 3D 6E 65 78 74 73 79 6D 28 63 70 cptr2=nextsym(cp
00A9B0: 74 72 29 3B 0D 0A 20 20 20 20 69 66 28 63 70 74 tr);.. if(cpt
00A9C0: 72 5B 49 44 45 4E 54 5D 20 3D 3D 20 4C 41 42 45 r[IDENT] == LABE
00A9D0: 4C 29 20 7B 0D 0A 20 20 20 20 20 20 77 68 69 6C L) {.. whil
00A9E0: 65 28 63 70 74 72 20 3C 20 63 70 74 72 32 29 20 e(cptr < cptr2)
00A9F0: 2A 73 61 76 6C 6F 63 2B 2B 20 3D 20 2A 63 70 74 *savloc++ = *cpt
00AA00: 72 67 73 74 6B 2D 42 50 57 3B 09 09 2F 2A 20 63 rgstk-BPW;../* c
00AA10: 6E 74 20 64 6F 77 6E 20 2A 2F 0D 0A 20 20 20 20 nt down */..
00AA20: 69 66 28 65 6E 64 73 74 28 29 29 72 65 74 75 72 if(endst())retur
00AA30: 6E 3B 0D 0A 20 20 20 20 69 66 28 6D 61 74 63 68 n;.. if(match
00AA40: 28 22 2C 22 29 3D 3D 30 29 20 65 72 72 6F 72 28 (",")==0) error(
00AA50: 22 6E 6F 20 63 6F 6D 6D 61 22 29 3B 0D 0A 20 20 "no comma");..
00AA60: 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 3E 3E 3E 20 }.. }....>>>
00AA70: 43 43 31 33 2E 43 20 36 38 32 35 0D 0A 2F 2A 0D CC13.C 6825../*.
00AA80: 0A 2A 2A 20 73 74 61 74 65 6D 65 6E 74 20 70 61 .** statement pa
00AA90: 72 73 65 72 0D 0A 2A 2A 0D 0A 2A 2A 20 63 61 6C rser..**..** cal
00AAA0: 6C 65 64 20 77 68 65 6E 65 76 65 72 20 73 79 6E led whenever syn
00AAB0: 74 61 78 20 72 65 71 75 69 72 65 73 20 61 20 73 tax requires a s
00AAC0: 74 61 74 65 6D 65 6E 74 0D 0A 2A 2A 20 20 74 68 tatement..** th
00AAD0: 69 73 20 72 6F 75 74 69 6E 65 20 70 65 72 66 6F is routine perfo
00AAE0: 72 6D 73 20 74 68 61 74 20 73 74 61 74 65 6D 65 rms that stateme
00AAF0: 6E 74 0D 0A 2A 2A 20 20 61 6E 64 20 72 65 74 75 nt..** and retu
00AB00: 72 6E 73 20 61 20 6E 75 6D 62 65 72 20 74 65 6C rns a number tel
00AB10: 6C 69 6E 67 20 77 68 69 63 68 20 6F 6E 65 0D 0A ling which one..
00AB20: 2A 2F 0D 0A 73 74 61 74 65 6D 65 6E 74 28 29 20 */..statement()
00AB30: 7B 0D 0A 20 20 69 66 20 28 28 63 68 3D 3D 30 29 {.. if ((ch==0)
00AB40: 20 26 20 28 65 6F 66 29 29 20 72 65 74 75 72 6E & (eof)) return
00AB50: 3B 0D 0A 20 20 65 6C 73 65 20 69 66 28 61 6D 61 ;.. else if(ama
00AB60: 74 63 68 28 22 63 68 61 72 22 2C 34 29 29 20 20 tch("char",4))
00AB70: 7B 64 65 63 6C 6C 6F 63 28 43 43 48 41 52 29 3B {declloc(CCHAR);
00AB80: 6E 73 28 29 3B 7D 0D 0A 20 20 65 6C 73 65 20 69 ns();}.. else i
00AB90: 66 28 61 6D 61 74 63 68 28 22 69 6E 74 22 2C 33 f(amatch("int",3
00ABA0: 29 29 20 20 20 7B 64 65 63 6C 6C 6F 63 28 43 49 )) {declloc(CI
00ABB0: 4E 54 29 3B 6E 73 28 29 3B 7D 0D 0A 20 20 65 6C NT);ns();}.. el
00ABC0: 73 65 20 7B 0D 0A 20 20 20 20 69 66 28 64 65 63 se {.. if(dec
00ABD0: 6C 61 72 65 64 20 3E 3D 20 30 29 20 7B 0D 0A 23 lared >= 0) {..#
00ABE0: 69 66 64 65 66 20 53 54 47 4F 54 4F 0D 0A 20 20 ifdef STGOTO..
00ABF0: 20 20 20 20 69 66 28 6E 63 6D 70 20 3E 20 31 29 if(ncmp > 1)
00AC00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
00AC10: 09 00 01 00 02 09 52 E5 09 00 41 02 00 00 00 02 ......R...A.....
00AC20: 09 00 46 02 00 00 00 02 09 00 42 02 00 00 00 02 ..F.......B.....
00AC30: 09 00 47 02 00 00 00 02 09 00 43 02 00 00 00 02 ..G.......C.....
00AC40: 09 00 48 02 00 00 00 02 09 00 44 02 00 00 00 02 ..H.......D.....
00AC50: 09 00 49 02 00 00 00 02 09 00 45 02 00 00 00 02 ..I.......E.....
00AC60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00AC70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00AC80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00AC90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00ACA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00ACB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00ACC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00ACD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00ACE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00ACF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00AD00: 72 2B 2B 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 r++;.. }..
00AD10: 20 20 20 65 6C 73 65 20 63 70 74 72 3D 63 70 74 else cptr=cpt
00AD20: 72 32 3B 0D 0A 20 20 20 20 7D 0D 0A 23 65 6E 64 r2;.. }..#end
00AD30: 69 66 0D 0A 20 20 6C 6F 63 70 74 72 3D 73 61 76 if.. locptr=sav
00AD40: 6C 6F 63 3B 09 09 2F 2A 20 64 65 6C 65 74 65 20 loc;../* delete
00AD50: 6C 6F 63 61 6C 20 73 79 6D 62 6F 6C 73 20 2A 2F local symbols */
00AD60: 0D 0A 20 20 64 65 63 6C 61 72 65 64 20 3D 20 2D .. declared = -
00AD70: 31 3B 09 09 2F 2A 20 6D 61 79 20 6E 6F 74 20 64 1;../* may not d
00AD80: 65 63 6C 61 72 65 20 76 61 72 69 61 62 6C 65 73 eclare variables
00AD90: 20 2A 2F 0D 0A 20 20 7D 0D 0A 0D 0A 64 6F 69 66 */.. }....doif
00ADA0: 28 29 20 20 7B 0D 0A 20 20 69 6E 74 20 66 6C 61 () {.. int fla
00ADB0: 62 31 2C 66 6C 61 62 32 3B 0D 0A 20 20 66 6C 61 b1,flab2;.. fla
00ADC0: 62 31 3D 67 65 74 6C 61 62 65 6C 28 29 3B 09 09 b1=getlabel();..
00ADD0: 2F 2A 20 67 65 74 20 6C 61 62 65 6C 20 66 6F 72 /* get label for
00ADE0: 20 66 61 6C 73 65 20 62 72 61 6E 63 68 20 2A 2F false branch */
00ADF0: 0D 0A 20 20 74 65 73 74 28 66 6C 61 62 31 2C 20 .. test(flab1,
00AE00: 59 45 53 29 3B 09 09 2F 2A 20 67 65 74 20 65 78 YES);../* get ex
00AE10: 70 72 65 73 73 69 6F 6E 2C 20 61 6E 64 20 62 72 pression, and br
00AE20: 61 6E 63 68 20 66 61 6C 73 65 20 2A 2F 0D 0A 20 anch false */..
00AE30: 20 73 74 61 74 65 6D 65 6E 74 28 29 3B 09 09 09 statement();...
00AE40: 2F 2A 20 69 66 20 74 72 75 65 2C 20 64 6F 20 61 /* if true, do a
00AE50: 20 73 74 61 74 65 6D 65 6E 74 20 2A 2F 0D 0A 20 statement */..
00AE60: 20 69 66 20 28 61 6D 61 74 63 68 28 22 65 6C 73 if (amatch("els
00AE70: 65 22 2C 34 29 3D 3D 30 29 20 7B 09 2F 2A 20 69 e",4)==0) {./* i
00AE80: 66 2E 2E 2E 65 6C 73 65 20 3F 20 2A 2F 0D 0A 20 f...else ? */..
00AE90: 20 20 20 2F 2A 20 73 69 6D 70 6C 65 20 22 69 66 /* simple "if
00AEA0: 22 2E 2E 2E 70 72 69 6E 74 20 66 61 6C 73 65 20 "...print false
00AEB0: 6C 61 62 65 6C 20 2A 2F 0D 0A 20 20 20 20 70 6F label */.. po
00AEC0: 73 74 6C 61 62 65 6C 28 66 6C 61 62 31 29 3B 0D stlabel(flab1);.
00AED0: 0A 20 20 20 20 72 65 74 75 72 6E 3B 09 09 09 2F . return;.../
00AEE0: 2A 20 61 6E 64 20 65 78 69 74 20 2A 2F 0D 0A 20 * and exit */..
00AEF0: 20 20 20 7D 0D 0A 20 20 66 6C 61 62 32 3D 67 65 }.. flab2=ge
00AF00: 2F 2A 20 63 61 73 65 73 2C 20 65 74 63 2E 20 2A /* cases, etc. *
00AF10: 2F 0D 0A 20 20 6A 75 6D 70 28 77 71 5B 57 51 45 /.. jump(wq[WQE
00AF20: 58 49 54 5D 29 3B 0D 0A 20 20 70 6F 73 74 6C 61 XIT]);.. postla
00AF30: 62 65 6C 28 65 6E 64 6C 61 62 29 3B 0D 0A 20 20 bel(endlab);..
00AF40: 73 77 28 29 3B 09 09 09 09 2F 2A 20 6D 61 74 63 sw();..../* matc
00AF50: 68 20 63 61 73 65 73 20 2A 2F 0D 0A 20 20 77 68 h cases */.. wh
00AF60: 69 6C 65 28 73 77 70 74 72 20 3C 20 73 77 6E 65 ile(swptr < swne
00AF70: 78 74 29 20 7B 0D 0A 20 20 20 20 64 65 66 73 74 xt) {.. defst
00AF80: 6F 72 61 67 65 28 43 49 4E 54 3E 3E 32 29 3B 0D orage(CINT>>2);.
00AF90: 0A 20 20 20 20 70 72 69 6E 74 6C 61 62 65 6C 28 . printlabel(
00AFA0: 2A 73 77 70 74 72 2B 2B 29 3B 09 2F 2A 20 63 61 *swptr++);./* ca
00AFB0: 73 65 20 6C 61 62 65 6C 20 2A 2F 0D 0A 20 20 20 se label */..
00AFC0: 20 6F 75 74 62 79 74 65 28 27 2C 27 29 3B 0D 0A outbyte(',');..
00AFD0: 20 20 20 20 6F 75 74 64 65 63 28 2A 73 77 70 74 outdec(*swpt
00AFE0: 72 2B 2B 29 3B 09 09 2F 2A 20 63 61 73 65 20 76 r++);../* case v
00AFF0: 61 6C 75 65 20 2A 2F 0D 0A 20 20 20 20 6E 6C 28 alue */.. nl(
00B000: 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 64 65 66 );.. }.. def
00B010: 73 74 6F 72 61 67 65 28 43 49 4E 54 3E 3E 32 29 storage(CINT>>2)
00B020: 3B 0D 0A 20 20 6F 75 74 64 65 63 28 30 29 3B 0D ;.. outdec(0);.
00B030: 0A 20 20 6E 6C 28 29 3B 0D 0A 20 20 69 66 28 73 . nl();.. if(s
00B040: 77 64 65 66 61 75 6C 74 29 20 6A 75 6D 70 28 73 wdefault) jump(s
00B050: 77 64 65 66 61 75 6C 74 29 3B 0D 0A 20 20 70 6F wdefault);.. po
00B060: 73 74 6C 61 62 65 6C 28 77 71 5B 57 51 45 58 49 stlabel(wq[WQEXI
00B070: 54 5D 29 3B 0D 0A 20 20 64 65 6C 77 68 69 6C 65 T]);.. delwhile
00B080: 28 29 3B 0D 0A 20 20 73 77 6E 65 78 74 3D 73 77 ();.. swnext=sw
00B090: 6E 65 78 3B 0D 0A 20 20 73 77 64 65 66 61 75 6C nex;.. swdefaul
00B0A0: 74 3D 73 77 64 65 66 3B 0D 0A 20 20 73 77 61 63 t=swdef;.. swac
00B0B0: 74 69 76 65 3D 73 77 61 63 74 3B 0D 0A 20 20 7D tive=swact;.. }
00B0C0: 0D 0A 0D 0A 64 6F 63 61 73 65 28 29 20 7B 0D 0A ....docase() {..
00B0D0: 20 20 69 66 28 73 77 61 63 74 69 76 65 3D 3D 30 if(swactive==0
00B0E0: 29 20 65 72 72 6F 72 28 22 6E 6F 74 20 69 6E 20 ) error("not in
00B0F0: 73 77 69 74 63 68 22 29 3B 0D 0A 20 20 69 66 28 switch");.. if(
00B100: 74 6C 61 62 65 6C 28 29 3B 0D 0A 23 69 66 64 65 tlabel();..#ifde
00B110: 66 20 53 54 47 4F 54 4F 0D 0A 20 20 69 66 28 28 f STGOTO.. if((
00B120: 6C 61 73 74 73 74 20 21 3D 20 53 54 52 45 54 55 lastst != STRETU
00B130: 52 4E 29 26 28 6C 61 73 74 73 74 20 21 3D 20 53 RN)&(lastst != S
00B140: 54 47 4F 54 4F 29 29 20 6A 75 6D 70 28 66 6C 61 TGOTO)) jump(fla
00B150: 62 32 29 3B 0D 0A 23 65 6C 73 65 0D 0A 20 20 69 b2);..#else.. i
00B160: 66 28 6C 61 73 74 73 74 20 21 3D 20 53 54 52 45 f(lastst != STRE
00B170: 54 55 52 4E 29 20 6A 75 6D 70 28 66 6C 61 62 32 TURN) jump(flab2
00B180: 29 3B 0D 0A 23 65 6E 64 69 66 0D 0A 20 20 70 6F );..#endif.. po
00B190: 73 74 6C 61 62 65 6C 28 66 6C 61 62 31 29 3B 09 stlabel(flab1);.
00B1A0: 09 2F 2A 20 70 72 69 6E 74 20 66 61 6C 73 65 20 ./* print false
00B1B0: 6C 61 62 65 6C 20 2A 2F 0D 0A 20 20 73 74 61 74 label */.. stat
00B1C0: 65 6D 65 6E 74 28 29 3B 09 09 09 2F 2A 20 61 6E ement();.../* an
00B1D0: 64 20 64 6F 20 22 65 6C 73 65 22 20 63 6C 61 75 d do "else" clau
00B1E0: 73 65 20 2A 2F 0D 0A 20 20 70 6F 73 74 6C 61 62 se */.. postlab
00B1F0: 65 6C 28 66 6C 61 62 32 29 3B 09 09 2F 2A 20 70 el(flab2);../* p
00B200: 72 69 6E 74 20 74 72 75 65 20 6C 61 62 65 6C 20 rint true label
00B210: 2A 2F 0D 0A 20 20 7D 0D 0A 0D 0A 64 6F 65 78 70 */.. }....doexp
00B220: 72 28 29 20 7B 0D 0A 20 20 69 6E 74 20 63 6F 6E r() {.. int con
00B230: 73 74 2C 20 76 61 6C 3B 0D 0A 20 20 63 68 61 72 st, val;.. char
00B240: 20 2A 62 65 66 6F 72 65 2C 20 2A 73 74 61 72 74 *before, *start
00B250: 3B 0D 0A 20 20 77 68 69 6C 65 28 31 29 20 7B 0D ;.. while(1) {.
00B260: 0A 20 20 20 20 73 65 74 73 74 61 67 65 28 26 62 . setstage(&b
00B270: 65 66 6F 72 65 2C 20 26 73 74 61 72 74 29 3B 0D efore, &start);.
00B280: 0A 20 20 20 20 65 78 70 72 65 73 73 69 6F 6E 28 . expression(
00B290: 26 63 6F 6E 73 74 2C 20 26 76 61 6C 29 3B 0D 0A &const, &val);..
00B2A0: 20 20 20 20 63 6C 65 61 72 73 74 61 67 65 28 62 clearstage(b
00B2B0: 65 66 6F 72 65 2C 20 73 74 61 72 74 29 3B 0D 0A efore, start);..
00B2C0: 20 20 20 20 69 66 28 63 68 20 21 3D 20 27 2C 27 if(ch != ','
00B2D0: 29 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 62 75 ) break;.. bu
00B2E0: 6D 70 28 31 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 mp(1);.. }..
00B2F0: 20 7D 0D 0A 0D 0A 64 6F 77 68 69 6C 65 28 29 20 }....dowhile()
00B300: 73 77 6E 65 78 74 20 3E 20 73 77 65 6E 64 29 20 swnext > swend)
00B310: 7B 0D 0A 20 20 20 20 65 72 72 6F 72 28 22 74 6F {.. error("to
00B320: 6F 20 6D 61 6E 79 20 63 61 73 65 73 22 29 3B 0D o many cases");.
00B330: 0A 20 20 20 20 72 65 74 75 72 6E 3B 0D 0A 20 20 . return;..
00B340: 20 20 7D 0D 0A 20 20 70 6F 73 74 6C 61 62 65 6C }.. postlabel
00B350: 28 2A 73 77 6E 65 78 74 2B 2B 20 3D 20 67 65 74 (*swnext++ = get
00B360: 6C 61 62 65 6C 28 29 29 3B 0D 0A 20 20 63 6F 6E label());.. con
00B370: 73 74 65 78 70 72 28 73 77 6E 65 78 74 2B 2B 29 stexpr(swnext++)
00B380: 3B 0D 0A 20 20 6E 65 65 64 74 6F 6B 65 6E 28 22 ;.. needtoken("
00B390: 3A 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 64 6F 64 :");.. }....dod
00B3A0: 65 66 61 75 6C 74 28 29 20 7B 0D 0A 20 20 69 66 efault() {.. if
00B3B0: 28 73 77 61 63 74 69 76 65 29 20 7B 0D 0A 20 20 (swactive) {..
00B3C0: 20 20 69 66 28 73 77 64 65 66 61 75 6C 74 29 20 if(swdefault)
00B3D0: 65 72 72 6F 72 28 22 6D 75 6C 74 69 70 6C 65 20 error("multiple
00B3E0: 64 65 66 61 75 6C 74 73 22 29 3B 0D 0A 20 20 20 defaults");..
00B3F0: 20 7D 0D 0A 20 20 65 6C 73 65 20 65 72 72 6F 72 }.. else error
00B400: 28 22 6E 6F 74 20 69 6E 20 73 77 69 74 63 68 22 ("not in switch"
00B410: 29 3B 0D 0A 20 20 6E 65 65 64 74 6F 6B 65 6E 28 );.. needtoken(
00B420: 22 3A 22 29 3B 0D 0A 20 20 70 6F 73 74 6C 61 62 ":");.. postlab
00B430: 65 6C 28 73 77 64 65 66 61 75 6C 74 3D 67 65 74 el(swdefault=get
00B440: 6C 61 62 65 6C 28 29 29 3B 0D 0A 20 20 7D 0D 0A label());.. }..
00B450: 23 65 6E 64 69 66 0D 0A 0D 0A 23 69 66 64 65 66 #endif....#ifdef
00B460: 20 53 54 47 4F 54 4F 0D 0A 64 6F 67 6F 74 6F 28 STGOTO..dogoto(
00B470: 29 20 7B 0D 0A 20 20 69 66 28 6E 6F 67 6F 20 3E ) {.. if(nogo >
00B480: 20 30 29 20 65 72 72 6F 72 28 22 6E 6F 74 20 61 0) error("not a
00B490: 6C 6C 6F 77 65 64 20 77 69 74 68 20 62 6C 6F 63 llowed with bloc
00B4A0: 6B 2D 6C 6F 63 61 6C 73 22 29 3B 0D 0A 20 20 65 k-locals");.. e
00B4B0: 6C 73 65 20 6E 6F 6C 6F 63 20 3D 20 31 3B 0D 0A lse noloc = 1;..
00B4C0: 20 20 69 66 28 73 79 6D 6E 61 6D 65 28 73 73 6E if(symname(ssn
00B4D0: 61 6D 65 2C 20 59 45 53 29 29 20 6A 75 6D 70 28 ame, YES)) jump(
00B4E0: 61 64 64 6C 61 62 65 6C 28 29 29 3B 0D 0A 20 20 addlabel());..
00B4F0: 65 6C 73 65 20 65 72 72 6F 72 28 22 62 61 64 20 else error("bad
00B500: 20 7B 0D 0A 20 20 69 6E 74 20 77 71 5B 34 5D 3B {.. int wq[4];
00B510: 09 09 09 2F 2A 20 61 6C 6C 6F 63 61 74 65 20 6C .../* allocate l
00B520: 6F 63 61 6C 20 71 75 65 75 65 20 2A 2F 0D 0A 20 ocal queue */..
00B530: 20 61 64 64 77 68 69 6C 65 28 77 71 29 3B 09 09 addwhile(wq);..
00B540: 09 2F 2A 20 61 64 64 20 65 6E 74 72 79 20 74 6F ./* add entry to
00B550: 20 71 75 65 75 65 20 66 6F 72 20 22 62 72 65 61 queue for "brea
00B560: 6B 22 20 2A 2F 0D 0A 20 20 70 6F 73 74 6C 61 62 k" */.. postlab
00B570: 65 6C 28 77 71 5B 57 51 4C 4F 4F 50 5D 29 3B 09 el(wq[WQLOOP]);.
00B580: 2F 2A 20 6C 6F 6F 70 20 6C 61 62 65 6C 20 2A 2F /* loop label */
00B590: 0D 0A 20 20 74 65 73 74 28 77 71 5B 57 51 45 58 .. test(wq[WQEX
00B5A0: 49 54 5D 2C 20 59 45 53 29 3B 09 2F 2A 20 73 65 IT], YES);./* se
00B5B0: 65 20 69 66 20 74 72 75 65 20 2A 2F 0D 0A 20 20 e if true */..
00B5C0: 73 74 61 74 65 6D 65 6E 74 28 29 3B 09 09 09 2F statement();.../
00B5D0: 2A 20 69 66 20 73 6F 2C 20 64 6F 20 61 20 73 74 * if so, do a st
00B5E0: 61 74 65 6D 65 6E 74 20 2A 2F 0D 0A 20 20 6A 75 atement */.. ju
00B5F0: 6D 70 28 77 71 5B 57 51 4C 4F 4F 50 5D 29 3B 09 mp(wq[WQLOOP]);.
00B600: 09 2F 2A 20 6C 6F 6F 70 20 74 6F 20 6C 61 62 65 ./* loop to labe
00B610: 6C 20 2A 2F 0D 0A 20 20 70 6F 73 74 6C 61 62 65 l */.. postlabe
00B620: 6C 28 77 71 5B 57 51 45 58 49 54 5D 29 3B 09 2F l(wq[WQEXIT]);./
00B630: 2A 20 65 78 69 74 20 6C 61 62 65 6C 20 2A 2F 0D * exit label */.
00B640: 0A 20 20 64 65 6C 77 68 69 6C 65 28 29 3B 09 09 . delwhile();..
00B650: 09 2F 2A 20 64 65 6C 65 74 65 20 71 75 65 75 65 ./* delete queue
00B660: 20 65 6E 74 72 79 20 2A 2F 0D 0A 20 20 7D 0D 0A entry */.. }..
00B670: 0D 0A 23 69 66 64 65 66 20 53 54 44 4F 0D 0A 64 ..#ifdef STDO..d
00B680: 6F 64 6F 28 29 20 7B 0D 0A 20 20 69 6E 74 20 77 odo() {.. int w
00B690: 71 5B 34 5D 2C 20 74 6F 70 3B 0D 0A 20 20 61 64 q[4], top;.. ad
00B6A0: 64 77 68 69 6C 65 28 77 71 29 3B 0D 0A 20 20 70 dwhile(wq);.. p
00B6B0: 6F 73 74 6C 61 62 65 6C 28 74 6F 70 3D 67 65 74 ostlabel(top=get
00B6C0: 6C 61 62 65 6C 28 29 29 3B 0D 0A 20 20 73 74 61 label());.. sta
00B6D0: 74 65 6D 65 6E 74 28 29 3B 0D 0A 20 20 6E 65 65 tement();.. nee
00B6E0: 64 74 6F 6B 65 6E 28 22 77 68 69 6C 65 22 29 3B dtoken("while");
00B6F0: 0D 0A 20 20 70 6F 73 74 6C 61 62 65 6C 28 77 71 .. postlabel(wq
00B700: 6C 61 62 65 6C 22 29 3B 0D 0A 20 20 6E 73 28 29 label");.. ns()
00B710: 3B 0D 0A 20 20 7D 0D 0A 0D 0A 64 6F 6C 61 62 65 ;.. }....dolabe
00B720: 6C 28 29 20 7B 0D 0A 20 20 63 68 61 72 20 2A 73 l() {.. char *s
00B730: 61 76 65 6C 70 74 72 3B 0D 0A 20 20 62 6C 61 6E avelptr;.. blan
00B740: 6B 73 28 29 3B 0D 0A 20 20 73 61 76 65 6C 70 74 ks();.. savelpt
00B750: 72 3D 6C 70 74 72 3B 0D 0A 20 20 69 66 28 73 79 r=lptr;.. if(sy
00B760: 6D 6E 61 6D 65 28 73 73 6E 61 6D 65 2C 20 59 45 mname(ssname, YE
00B770: 53 29 29 20 7B 0D 0A 20 20 20 20 69 66 28 67 63 S)) {.. if(gc
00B780: 68 28 29 3D 3D 27 3A 27 29 20 7B 0D 0A 20 20 20 h()==':') {..
00B790: 20 20 20 70 6F 73 74 6C 61 62 65 6C 28 61 64 64 postlabel(add
00B7A0: 6C 61 62 65 6C 28 29 29 3B 0D 0A 20 20 20 20 20 label());..
00B7B0: 20 72 65 74 75 72 6E 20 31 3B 0D 0A 20 20 20 20 return 1;..
00B7C0: 20 20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 62 75 }.. else bu
00B7D0: 6D 70 28 73 61 76 65 6C 70 74 72 2D 6C 70 74 72 mp(savelptr-lptr
00B7E0: 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 72 65 74 );.. }.. ret
00B7F0: 75 72 6E 20 30 3B 0D 0A 20 20 7D 0D 0A 0D 0A 61 urn 0;.. }....a
00B800: 64 64 6C 61 62 65 6C 28 29 20 20 7B 0D 0A 20 20 ddlabel() {..
00B810: 69 66 28 63 70 74 72 3D 66 69 6E 64 6C 6F 63 28 if(cptr=findloc(
00B820: 73 73 6E 61 6D 65 29 29 20 7B 0D 0A 20 20 20 20 ssname)) {..
00B830: 69 66 28 63 70 74 72 5B 49 44 45 4E 54 5D 21 3D if(cptr[IDENT]!=
00B840: 4C 41 42 45 4C 29 20 65 72 72 6F 72 28 22 6E 6F LABEL) error("no
00B850: 74 20 61 20 6C 61 62 65 6C 22 29 3B 0D 0A 20 20 t a label");..
00B860: 20 20 7D 0D 0A 20 20 65 6C 73 65 20 63 70 74 72 }.. else cptr
00B870: 3D 61 64 64 73 79 6D 28 73 73 6E 61 6D 65 2C 20 =addsym(ssname,
00B880: 4C 41 42 45 4C 2C 20 4C 41 42 45 4C 2C 20 67 65 LABEL, LABEL, ge
00B890: 74 6C 61 62 65 6C 28 29 2C 20 26 6C 6F 63 70 74 tlabel(), &locpt
00B8A0: 72 2C 20 4C 41 42 45 4C 29 3B 0D 0A 20 20 72 65 r, LABEL);.. re
00B8B0: 74 75 72 6E 20 28 67 65 74 69 6E 74 28 63 70 74 turn (getint(cpt
00B8C0: 72 2B 4F 46 46 53 45 54 2C 20 4F 46 46 53 49 5A r+OFFSET, OFFSIZ
00B8D0: 45 29 29 3B 0D 0A 20 20 7D 0D 0A 23 65 6E 64 69 E));.. }..#endi
00B8E0: 66 0D 0A 0D 0A 64 6F 72 65 74 75 72 6E 28 29 20 f....doreturn()
00B8F0: 20 7B 0D 0A 20 20 69 66 28 65 6E 64 73 74 28 29 {.. if(endst()
00B900: 5B 57 51 4C 4F 4F 50 5D 29 3B 0D 0A 20 20 74 65 [WQLOOP]);.. te
00B910: 73 74 28 77 71 5B 57 51 45 58 49 54 5D 2C 20 59 st(wq[WQEXIT], Y
00B920: 45 53 29 3B 0D 0A 20 20 6A 75 6D 70 28 74 6F 70 ES);.. jump(top
00B930: 29 3B 0D 0A 20 20 70 6F 73 74 6C 61 62 65 6C 28 );.. postlabel(
00B940: 77 71 5B 57 51 45 58 49 54 5D 29 3B 0D 0A 20 20 wq[WQEXIT]);..
00B950: 64 65 6C 77 68 69 6C 65 28 29 3B 0D 0A 20 20 6E delwhile();.. n
00B960: 73 28 29 3B 0D 0A 20 20 7D 0D 0A 23 65 6E 64 69 s();.. }..#endi
00B970: 66 0D 0A 0D 0A 23 69 66 64 65 66 20 53 54 46 4F f....#ifdef STFO
00B980: 52 0D 0A 64 6F 66 6F 72 28 29 20 7B 0D 0A 20 20 R..dofor() {..
00B990: 69 6E 74 20 77 71 5B 34 5D 2C 20 6C 61 62 31 2C int wq[4], lab1,
00B9A0: 20 6C 61 62 32 3B 0D 0A 20 20 61 64 64 77 68 69 lab2;.. addwhi
00B9B0: 6C 65 28 77 71 29 3B 0D 0A 20 20 6C 61 62 31 3D le(wq);.. lab1=
00B9C0: 67 65 74 6C 61 62 65 6C 28 29 3B 0D 0A 20 20 6C getlabel();.. l
00B9D0: 61 62 32 3D 67 65 74 6C 61 62 65 6C 28 29 3B 0D ab2=getlabel();.
00B9E0: 0A 20 20 6E 65 65 64 74 6F 6B 65 6E 28 22 28 22 . needtoken("("
00B9F0: 29 3B 0D 0A 20 20 69 66 28 6D 61 74 63 68 28 22 );.. if(match("
00BA00: 3B 22 29 3D 3D 30 29 20 7B 0D 0A 20 20 20 20 64 ;")==0) {.. d
00BA10: 6F 65 78 70 72 28 29 3B 09 09 09 2F 2A 20 65 78 oexpr();.../* ex
00BA20: 70 72 20 31 20 2A 2F 0D 0A 20 20 20 20 6E 73 28 pr 1 */.. ns(
00BA30: 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 70 6F 73 );.. }.. pos
00BA40: 74 6C 61 62 65 6C 28 6C 61 62 31 29 3B 0D 0A 20 tlabel(lab1);..
00BA50: 20 69 66 28 6D 61 74 63 68 28 22 3B 22 29 3D 3D if(match(";")==
00BA60: 30 29 20 7B 0D 0A 20 20 20 20 74 65 73 74 28 77 0) {.. test(w
00BA70: 71 5B 57 51 45 58 49 54 5D 2C 20 4E 4F 29 3B 09 q[WQEXIT], NO);.
00BA80: 2F 2A 20 65 78 70 72 20 32 20 2A 2F 0D 0A 20 20 /* expr 2 */..
00BA90: 20 20 6E 73 28 29 3B 0D 0A 20 20 20 20 7D 0D 0A ns();.. }..
00BAA0: 20 20 6A 75 6D 70 28 6C 61 62 32 29 3B 0D 0A 20 jump(lab2);..
00BAB0: 20 70 6F 73 74 6C 61 62 65 6C 28 77 71 5B 57 51 postlabel(wq[WQ
00BAC0: 4C 4F 4F 50 5D 29 3B 0D 0A 20 20 69 66 28 6D 61 LOOP]);.. if(ma
00BAD0: 74 63 68 28 22 29 22 29 3D 3D 30 29 20 7B 0D 0A tch(")")==0) {..
00BAE0: 20 20 20 20 64 6F 65 78 70 72 28 29 3B 09 09 09 doexpr();...
00BAF0: 2F 2A 20 65 78 70 72 20 33 20 2A 2F 0D 0A 20 20 /* expr 3 */..
00BB00: 3D 3D 30 29 20 7B 0D 0A 20 20 20 20 64 6F 65 78 ==0) {.. doex
00BB10: 70 72 28 29 3B 0D 0A 20 20 20 20 6D 6F 64 73 74 pr();.. modst
00BB20: 6B 28 30 2C 20 59 45 53 29 3B 0D 0A 20 20 20 20 k(0, YES);..
00BB30: 7D 0D 0A 20 20 65 6C 73 65 20 6D 6F 64 73 74 6B }.. else modstk
00BB40: 28 30 2C 20 4E 4F 29 3B 0D 0A 20 20 66 66 72 65 (0, NO);.. ffre
00BB50: 74 28 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 64 6F 62 t();.. }....dob
00BB60: 72 65 61 6B 28 29 20 20 7B 0D 0A 20 20 69 6E 74 reak() {.. int
00BB70: 20 2A 70 74 72 3B 0D 0A 20 20 69 66 20 28 28 70 *ptr;.. if ((p
00BB80: 74 72 3D 72 65 61 64 77 68 69 6C 65 28 77 71 70 tr=readwhile(wqp
00BB90: 74 72 29 29 3D 3D 30 29 20 72 65 74 75 72 6E 3B tr))==0) return;
00BBA0: 0D 0A 20 20 6D 6F 64 73 74 6B 28 28 70 74 72 5B .. modstk((ptr[
00BBB0: 57 51 53 50 5D 29 2C 20 4E 4F 29 3B 0D 0A 20 20 WQSP]), NO);..
00BBC0: 6A 75 6D 70 28 70 74 72 5B 57 51 45 58 49 54 5D jump(ptr[WQEXIT]
00BBD0: 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 64 6F 63 6F 6E );.. }....docon
00BBE0: 74 28 29 20 20 7B 0D 0A 20 20 69 6E 74 20 2A 70 t() {.. int *p
00BBF0: 74 72 3B 0D 0A 20 20 70 74 72 20 3D 20 77 71 70 tr;.. ptr = wqp
00BC00: 74 72 3B 0D 0A 20 20 77 68 69 6C 65 20 28 31 29 tr;.. while (1)
00BC10: 20 7B 0D 0A 20 20 20 20 69 66 20 28 28 70 74 72 {.. if ((ptr
00BC20: 3D 72 65 61 64 77 68 69 6C 65 28 70 74 72 29 29 =readwhile(ptr))
00BC30: 3D 3D 30 29 20 72 65 74 75 72 6E 3B 0D 0A 20 20 ==0) return;..
00BC40: 20 20 69 66 20 28 70 74 72 5B 57 51 4C 4F 4F 50 if (ptr[WQLOOP
00BC50: 5D 29 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 7D ]) break;.. }
00BC60: 0D 0A 20 20 6D 6F 64 73 74 6B 28 28 70 74 72 5B .. modstk((ptr[
00BC70: 57 51 53 50 5D 29 2C 20 4E 4F 29 3B 0D 0A 20 20 WQSP]), NO);..
00BC80: 6A 75 6D 70 28 70 74 72 5B 57 51 4C 4F 4F 50 5D jump(ptr[WQLOOP]
00BC90: 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 64 6F 61 73 6D );.. }....doasm
00BCA0: 28 29 20 20 7B 0D 0A 20 20 63 63 6F 64 65 3D 30 () {.. ccode=0
00BCB0: 3B 09 09 09 2F 2A 20 6D 61 72 6B 20 6D 6F 64 65 ;.../* mark mode
00BCC0: 20 61 73 20 22 61 73 6D 22 20 2A 2F 0D 0A 20 20 as "asm" */..
00BCD0: 77 68 69 6C 65 20 28 31 29 20 7B 0D 0A 20 20 20 while (1) {..
00BCE0: 20 69 6E 6C 69 6E 65 28 29 3B 0D 0A 20 20 20 20 inline();..
00BCF0: 69 66 20 28 6D 61 74 63 68 28 22 23 65 6E 64 61 if (match("#enda
00BD00: 20 20 6E 65 65 64 74 6F 6B 65 6E 28 22 29 22 29 needtoken(")")
00BD10: 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 6A 75 6D 70 ;.. }.. jump
00BD20: 28 6C 61 62 31 29 3B 0D 0A 20 20 70 6F 73 74 6C (lab1);.. postl
00BD30: 61 62 65 6C 28 6C 61 62 32 29 3B 0D 0A 20 20 73 abel(lab2);.. s
00BD40: 74 61 74 65 6D 65 6E 74 28 29 3B 0D 0A 20 20 6A tatement();.. j
00BD50: 75 6D 70 28 77 71 5B 57 51 4C 4F 4F 50 5D 29 3B ump(wq[WQLOOP]);
00BD60: 0D 0A 20 20 70 6F 73 74 6C 61 62 65 6C 28 77 71 .. postlabel(wq
00BD70: 5B 57 51 45 58 49 54 5D 29 3B 0D 0A 20 20 64 65 [WQEXIT]);.. de
00BD80: 6C 77 68 69 6C 65 28 29 3B 0D 0A 20 20 7D 0D 0A lwhile();.. }..
00BD90: 23 65 6E 64 69 66 0D 0A 0D 0A 23 69 66 64 65 66 #endif....#ifdef
00BDA0: 20 53 54 53 57 49 54 43 48 0D 0A 64 6F 73 77 69 STSWITCH..doswi
00BDB0: 74 63 68 28 29 20 7B 0D 0A 20 20 69 6E 74 20 77 tch() {.. int w
00BDC0: 71 5B 34 5D 2C 20 65 6E 64 6C 61 62 2C 20 73 77 q[4], endlab, sw
00BDD0: 61 63 74 2C 20 73 77 64 65 66 2C 20 2A 73 77 6E act, swdef, *swn
00BDE0: 65 78 2C 20 2A 73 77 70 74 72 3B 0D 0A 20 20 73 ex, *swptr;.. s
00BDF0: 77 61 63 74 3D 73 77 61 63 74 69 76 65 3B 0D 0A wact=swactive;..
00BE00: 20 20 73 77 64 65 66 3D 73 77 64 65 66 61 75 6C swdef=swdefaul
00BE10: 74 3B 0D 0A 20 20 73 77 6E 65 78 3D 73 77 70 74 t;.. swnex=swpt
00BE20: 72 3D 73 77 6E 65 78 74 3B 0D 0A 20 20 61 64 64 r=swnext;.. add
00BE30: 77 68 69 6C 65 28 77 71 29 3B 0D 0A 20 20 2A 28 while(wq);.. *(
00BE40: 77 71 70 74 72 20 2B 20 57 51 4C 4F 4F 50 20 2D wqptr + WQLOOP -
00BE50: 20 57 51 53 49 5A 29 20 3D 20 30 3B 0D 0A 20 20 WQSIZ) = 0;..
00BE60: 6E 65 65 64 74 6F 6B 65 6E 28 22 28 22 29 3B 0D needtoken("(");.
00BE70: 0A 20 20 64 6F 65 78 70 72 28 29 3B 09 09 09 2F . doexpr();.../
00BE80: 2A 20 65 76 61 6C 75 61 74 65 20 73 77 69 74 63 * evaluate switc
00BE90: 68 20 65 78 70 72 65 73 73 69 6F 6E 20 2A 2F 0D h expression */.
00BEA0: 0A 20 20 6E 65 65 64 74 6F 6B 65 6E 28 22 29 22 . needtoken(")"
00BEB0: 29 3B 0D 0A 20 20 73 77 64 65 66 61 75 6C 74 3D );.. swdefault=
00BEC0: 30 3B 0D 0A 20 20 73 77 61 63 74 69 76 65 3D 31 0;.. swactive=1
00BED0: 3B 0D 0A 20 20 6A 75 6D 70 28 65 6E 64 6C 61 62 ;.. jump(endlab
00BEE0: 3D 67 65 74 6C 61 62 65 6C 28 29 29 3B 0D 0A 20 =getlabel());..
00BEF0: 20 73 74 61 74 65 6D 65 6E 74 28 29 3B 09 09 09 statement();...
00BF00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
00BF10: 0A 00 01 00 02 09 52 E5 0A 00 41 02 00 00 00 02 ......R...A.....
00BF20: 0A 00 46 02 00 00 00 02 0A 00 42 02 00 00 00 02 ..F.......B.....
00BF30: 0A 00 47 02 00 00 00 02 0A 00 43 02 00 00 00 02 ..G.......C.....
00BF40: 0A 00 48 02 00 00 00 02 0A 00 44 02 00 00 00 02 ..H.......D.....
00BF50: 0A 00 49 02 00 00 00 02 0A 00 45 02 00 00 00 02 ..I.......E.....
00BF60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BF70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BF80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BF90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BFA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BFB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BFC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BFD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BFE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BFF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00C000: 73 6D 22 29 29 20 62 72 65 61 6B 3B 0D 0A 20 20 sm")) break;..
00C010: 20 20 69 66 28 65 6F 66 29 62 72 65 61 6B 3B 0D if(eof)break;.
00C020: 0A 20 20 20 20 73 6F 75 74 28 6C 69 6E 65 2C 20 . sout(line,
00C030: 6F 75 74 70 75 74 29 3B 0D 0A 20 20 20 20 7D 0D output);.. }.
00C040: 0A 20 20 6B 69 6C 6C 28 29 3B 0D 0A 20 20 63 63 . kill();.. cc
00C050: 6F 64 65 3D 31 3B 0D 0A 20 20 7D 0D 0A 0D 0A 3E ode=1;.. }....>
00C060: 3E 3E 20 43 43 32 2E 43 20 37 30 33 0D 0A 2F 2A >> CC2.C 703../*
00C070: 0D 0A 2A 2A 20 53 6D 61 6C 6C 2D 43 20 43 6F 6D ..** Small-C Com
00C080: 70 69 6C 65 72 20 50 61 72 74 20 32 0D 0A 2A 2F piler Part 2..*/
00C090: 0D 0A 23 69 6E 63 6C 75 64 65 20 3C 73 74 64 69 ..#include <stdi
00C0A0: 6F 2E 68 3E 0D 0A 23 69 6E 63 6C 75 64 65 20 22 o.h>..#include "
00C0B0: 63 63 2E 64 65 66 22 0D 0A 0D 0A 65 78 74 65 72 cc.def"....exter
00C0C0: 6E 20 63 68 61 72 0D 0A 23 69 66 64 65 66 20 44 n char..#ifdef D
00C0D0: 59 4E 41 4D 49 43 0D 0A 20 2A 73 79 6D 74 61 62 YNAMIC.. *symtab
00C0E0: 2C 0D 0A 20 2A 73 74 61 67 65 2C 0D 0A 20 2A 6D ,.. *stage,.. *m
00C0F0: 61 63 6E 2C 0D 0A 20 2A 6D 61 63 71 2C 0D 0A 20 acn,.. *macq,..
00C100: 2A 70 6C 69 6E 65 2C 0D 0A 20 2A 6D 6C 69 6E 65 *pline,.. *mline
00C110: 2C 0D 0A 23 65 6C 73 65 0D 0A 20 20 73 79 6D 74 ,..#else.. symt
00C120: 61 62 5B 53 59 4D 54 42 53 5A 5D 2C 0D 0A 20 20 ab[SYMTBSZ],..
00C130: 73 74 61 67 65 5B 53 54 41 47 45 53 49 5A 45 5D stage[STAGESIZE]
00C140: 2C 0D 0A 20 20 6D 61 63 6E 5B 4D 41 43 4E 53 49 ,.. macn[MACNSI
00C150: 5A 45 5D 2C 0D 0A 20 20 6D 61 63 71 5B 4D 41 43 ZE],.. macq[MAC
00C160: 51 53 49 5A 45 5D 2C 0D 0A 20 20 70 6C 69 6E 65 QSIZE],.. pline
00C170: 5B 4C 49 4E 45 53 49 5A 45 5D 2C 0D 0A 20 20 6D [LINESIZE],.. m
00C180: 6C 69 6E 65 5B 4C 49 4E 45 53 49 5A 45 5D 2C 0D line[LINESIZE],.
00C190: 0A 23 65 6E 64 69 66 0D 0A 23 69 66 64 65 66 20 .#endif..#ifdef
00C1A0: 4F 50 54 49 4D 49 5A 45 0D 0A 20 20 6F 70 74 69 OPTIMIZE.. opti
00C1B0: 6D 69 7A 65 2C 0D 0A 23 65 6E 64 69 66 0D 0A 20 mize,..#endif..
00C1C0: 20 61 6C 61 72 6D 2C 20 2A 67 6C 62 70 74 72 2C alarm, *glbptr,
00C1D0: 20 2A 6C 69 6E 65 2C 20 2A 6C 70 74 72 2C 20 2A *line, *lptr, *
00C1E0: 63 70 74 72 2C 20 2A 63 70 74 72 32 2C 20 20 2A cptr, *cptr2, *
00C1F0: 63 70 74 72 33 2C 0D 0A 20 2A 6C 6F 63 70 74 72 cptr3,.. *locptr
00C200: 69 6E 64 20 6C 65 6E 67 74 68 20 62 79 74 65 20 ind length byte
00C210: 2A 2F 0D 0A 20 20 72 65 74 75 72 6E 20 65 6E 74 */.. return ent
00C220: 72 79 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A ry;.. }..../*..
00C230: 2A 2A 20 67 65 74 20 69 6E 74 65 67 65 72 20 6F ** get integer o
00C240: 66 20 6C 65 6E 67 74 68 20 6C 65 6E 20 66 72 6F f length len fro
00C250: 6D 20 61 64 64 72 65 73 73 20 61 64 64 72 0D 0A m address addr..
00C260: 2A 2A 20 28 62 79 74 65 20 73 65 71 75 65 6E 63 ** (byte sequenc
00C270: 65 20 73 65 74 20 62 79 20 22 70 75 74 69 6E 74 e set by "putint
00C280: 22 29 0D 0A 2A 2F 0D 0A 67 65 74 69 6E 74 28 61 ")..*/..getint(a
00C290: 64 64 72 2C 20 6C 65 6E 29 20 63 68 61 72 20 2A ddr, len) char *
00C2A0: 61 64 64 72 3B 20 69 6E 74 20 6C 65 6E 3B 20 7B addr; int len; {
00C2B0: 0D 0A 20 20 69 6E 74 20 69 3B 0D 0A 20 20 69 20 .. int i;.. i
00C2C0: 3D 20 2A 28 61 64 64 72 20 2B 20 2D 2D 6C 65 6E = *(addr + --len
00C2D0: 29 3B 09 09 2F 2A 20 68 69 67 68 20 6F 72 64 65 );../* high orde
00C2E0: 72 20 62 79 74 65 20 73 69 67 6E 20 65 78 74 65 r byte sign exte
00C2F0: 6E 64 65 64 20 2A 2F 0D 0A 20 20 77 68 69 6C 65 nded */.. while
00C300: 28 6C 65 6E 2D 2D 29 20 69 20 3D 20 28 69 20 3C (len--) i = (i <
00C310: 3C 20 38 29 20 7C 20 2A 28 61 64 64 72 2B 6C 65 < 8) | *(addr+le
00C320: 6E 29 26 32 35 35 3B 0D 0A 20 20 72 65 74 75 72 n)&255;.. retur
00C330: 6E 20 69 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D n i;.. }..../*.
00C340: 0A 2A 2A 20 70 75 74 20 69 6E 74 65 67 65 72 20 .** put integer
00C350: 69 20 6F 66 20 6C 65 6E 67 74 68 20 6C 65 6E 20 i of length len
00C360: 69 6E 74 6F 20 61 64 64 72 65 73 73 20 61 64 64 into address add
00C370: 72 0D 0A 2A 2A 20 28 6C 6F 77 20 62 79 74 65 20 r..** (low byte
00C380: 66 69 72 73 74 29 0D 0A 2A 2F 0D 0A 70 75 74 69 first)..*/..puti
00C390: 6E 74 28 69 2C 20 61 64 64 72 2C 20 6C 65 6E 29 nt(i, addr, len)
00C3A0: 20 63 68 61 72 20 2A 61 64 64 72 3B 20 69 6E 74 char *addr; int
00C3B0: 20 69 2C 20 6C 65 6E 3B 20 7B 0D 0A 20 20 77 68 i, len; {.. wh
00C3C0: 69 6C 65 28 6C 65 6E 2D 2D 29 20 7B 0D 0A 20 20 ile(len--) {..
00C3D0: 20 20 2A 61 64 64 72 2B 2B 20 3D 20 69 3B 0D 0A *addr++ = i;..
00C3E0: 20 20 20 20 69 20 3D 20 69 3E 3E 38 3B 0D 0A 20 i = i>>8;..
00C3F0: 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D }.. }..../*.
00C400: 2C 20 6D 73 6E 61 6D 65 5B 4E 41 4D 45 53 49 5A , msname[NAMESIZ
00C410: 45 5D 2C 20 20 70 61 75 73 65 2C 20 20 71 75 6F E], pause, quo
00C420: 74 65 5B 32 5D 2C 0D 0A 20 2A 73 74 61 67 65 6C te[2],.. *stagel
00C430: 61 73 74 2C 20 2A 73 74 61 67 65 6E 65 78 74 3B ast, *stagenext;
00C440: 0D 0A 65 78 74 65 72 6E 20 69 6E 74 0D 0A 23 69 ..extern int..#i
00C450: 66 64 65 66 20 44 59 4E 41 4D 49 43 0D 0A 20 20 fdef DYNAMIC..
00C460: 2A 77 71 2C 0D 0A 23 65 6C 73 65 0D 0A 20 20 77 *wq,..#else.. w
00C470: 71 5B 57 51 54 41 42 53 5A 5D 2C 0D 0A 23 65 6E q[WQTABSZ],..#en
00C480: 64 69 66 0D 0A 20 20 63 63 6F 64 65 2C 20 20 63 dif.. ccode, c
00C490: 68 2C 20 20 63 73 70 2C 20 20 65 6F 66 2C 20 20 h, csp, eof,
00C4A0: 65 72 72 66 6C 61 67 2C 20 20 69 66 6C 65 76 65 errflag, ifleve
00C4B0: 6C 2C 0D 0A 20 20 69 6E 70 75 74 2C 20 20 69 6E l,.. input, in
00C4C0: 70 75 74 32 2C 20 20 6C 69 73 74 66 70 2C 20 20 put2, listfp,
00C4D0: 6D 61 63 70 74 72 2C 20 20 6E 63 68 2C 0D 0A 20 macptr, nch,..
00C4E0: 20 6E 78 74 6C 61 62 2C 20 20 6F 70 5B 31 36 5D nxtlab, op[16]
00C4F0: 2C 20 20 6F 70 69 6E 64 65 78 2C 20 20 6F 70 73 , opindex, ops
00C500: 69 7A 65 2C 20 20 6F 75 74 70 75 74 2C 20 20 70 ize, output, p
00C510: 70 74 72 2C 0D 0A 20 20 73 6B 69 70 6C 65 76 65 ptr,.. skipleve
00C520: 6C 2C 20 20 2A 77 71 70 74 72 3B 0D 0A 0D 0A 23 l, *wqptr;....#
00C530: 69 6E 63 6C 75 64 65 20 22 63 63 32 31 2E 63 22 include "cc21.c"
00C540: 0D 0A 23 69 6E 63 6C 75 64 65 20 22 63 63 32 32 ..#include "cc22
00C550: 2E 63 22 0D 0A 0D 0A 3E 3E 3E 20 43 43 32 31 2E .c"....>>> CC21.
00C560: 43 20 34 33 37 31 0D 0A 6A 75 6E 6B 28 29 20 7B C 4371..junk() {
00C570: 0D 0A 20 20 69 66 28 61 6E 28 69 6E 62 79 74 65 .. if(an(inbyte
00C580: 28 29 29 29 20 77 68 69 6C 65 28 61 6E 28 63 68 ())) while(an(ch
00C590: 29 29 20 67 63 68 28 29 3B 0D 0A 20 20 65 6C 73 )) gch();.. els
00C5A0: 65 20 77 68 69 6C 65 28 61 6E 28 63 68 29 3D 3D e while(an(ch)==
00C5B0: 30 29 20 7B 0D 0A 20 20 20 20 69 66 28 63 68 3D 0) {.. if(ch=
00C5C0: 3D 30 29 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 =0) break;..
00C5D0: 67 63 68 28 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 gch();.. }..
00C5E0: 20 62 6C 61 6E 6B 73 28 29 3B 0D 0A 20 20 7D 0D blanks();.. }.
00C5F0: 0A 0D 0A 65 6E 64 73 74 28 29 20 7B 0D 0A 20 20 ...endst() {..
00C600: 0A 2A 2A 20 74 65 73 74 20 69 66 20 6E 65 78 74 .** test if next
00C610: 20 69 6E 70 75 74 20 73 74 72 69 6E 67 20 69 73 input string is
00C620: 20 6C 65 67 61 6C 20 73 79 6D 62 6F 6C 20 6E 61 legal symbol na
00C630: 6D 65 0D 0A 2A 2F 0D 0A 73 79 6D 6E 61 6D 65 28 me..*/..symname(
00C640: 73 6E 61 6D 65 2C 20 75 63 61 73 65 29 20 63 68 sname, ucase) ch
00C650: 61 72 20 2A 73 6E 61 6D 65 3B 20 69 6E 74 20 75 ar *sname; int u
00C660: 63 61 73 65 3B 20 7B 0D 0A 20 20 69 6E 74 20 6B case; {.. int k
00C670: 3B 63 68 61 72 20 63 3B 0D 0A 20 20 62 6C 61 6E ;char c;.. blan
00C680: 6B 73 28 29 3B 0D 0A 20 20 69 66 28 61 6C 70 68 ks();.. if(alph
00C690: 61 28 63 68 29 3D 3D 30 29 20 72 65 74 75 72 6E a(ch)==0) return
00C6A0: 20 28 2A 73 6E 61 6D 65 3D 30 29 3B 0D 0A 20 20 (*sname=0);..
00C6B0: 6B 3D 30 3B 0D 0A 20 20 77 68 69 6C 65 28 61 6E k=0;.. while(an
00C6C0: 28 63 68 29 29 20 7B 0D 0A 23 69 66 64 65 66 20 (ch)) {..#ifdef
00C6D0: 55 50 50 45 52 0D 0A 20 20 20 20 69 66 28 75 63 UPPER.. if(uc
00C6E0: 61 73 65 29 0D 0A 20 20 20 20 20 20 73 6E 61 6D ase).. snam
00C6F0: 65 5B 6B 5D 3D 74 6F 75 70 70 65 72 28 67 63 68 e[k]=toupper(gch
00C700: 28 29 29 3B 0D 0A 20 20 20 20 65 6C 73 65 0D 0A ());.. else..
00C710: 23 65 6E 64 69 66 0D 0A 20 20 20 20 20 20 73 6E #endif.. sn
00C720: 61 6D 65 5B 6B 5D 3D 67 63 68 28 29 3B 0D 0A 20 ame[k]=gch();..
00C730: 20 20 20 69 66 28 6B 3C 4E 41 4D 45 4D 41 58 29 if(k<NAMEMAX)
00C740: 20 2B 2B 6B 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 ++k;.. }..
00C750: 73 6E 61 6D 65 5B 6B 5D 3D 30 3B 0D 0A 20 20 72 sname[k]=0;.. r
00C760: 65 74 75 72 6E 20 31 3B 0D 0A 20 20 7D 0D 0A 0D eturn 1;.. }...
00C770: 0A 2F 2A 0D 0A 2A 2A 20 72 65 74 75 72 6E 20 6E ./*..** return n
00C780: 65 78 74 20 61 76 61 69 6C 20 69 6E 74 65 72 6E ext avail intern
00C790: 61 6C 20 6C 61 62 65 6C 20 6E 75 6D 62 65 72 0D al label number.
00C7A0: 0A 2A 2F 0D 0A 67 65 74 6C 61 62 65 6C 28 29 20 .*/..getlabel()
00C7B0: 7B 0D 0A 20 20 72 65 74 75 72 6E 28 2B 2B 6E 78 {.. return(++nx
00C7C0: 74 6C 61 62 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F tlab);.. }..../
00C7D0: 2A 0D 0A 2A 2A 20 70 6F 73 74 20 61 20 6C 61 62 *..** post a lab
00C7E0: 65 6C 20 69 6E 20 74 68 65 20 70 72 6F 67 72 61 el in the progra
00C7F0: 6D 0D 0A 2A 2F 0D 0A 70 6F 73 74 6C 61 62 65 6C m..*/..postlabel
00C800: 62 6C 61 6E 6B 73 28 29 3B 0D 0A 20 20 72 65 74 blanks();.. ret
00C810: 75 72 6E 20 28 28 73 74 72 65 71 28 6C 70 74 72 urn ((streq(lptr
00C820: 2C 22 3B 22 29 7C 28 63 68 3D 3D 30 29 29 29 3B ,";")|(ch==0)));
00C830: 0D 0A 20 20 7D 0D 0A 0D 0A 69 6C 6C 6E 61 6D 65 .. }....illname
00C840: 28 29 20 7B 0D 0A 20 20 65 72 72 6F 72 28 22 69 () {.. error("i
00C850: 6C 6C 65 67 61 6C 20 73 79 6D 62 6F 6C 22 29 3B llegal symbol");
00C860: 0D 0A 20 20 6A 75 6E 6B 28 29 3B 0D 0A 20 20 7D .. junk();.. }
00C870: 0D 0A 20 20 0D 0A 6D 75 6C 74 69 64 65 66 28 73 .. ..multidef(s
00C880: 6E 61 6D 65 29 20 20 63 68 61 72 20 2A 73 6E 61 name) char *sna
00C890: 6D 65 3B 20 7B 0D 0A 20 20 65 72 72 6F 72 28 22 me; {.. error("
00C8A0: 61 6C 72 65 61 64 79 20 64 65 66 69 6E 65 64 22 already defined"
00C8B0: 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 6E 65 65 64 74 );.. }....needt
00C8C0: 6F 6B 65 6E 28 73 74 72 29 20 20 63 68 61 72 20 oken(str) char
00C8D0: 2A 73 74 72 3B 20 7B 0D 0A 20 20 69 66 20 28 6D *str; {.. if (m
00C8E0: 61 74 63 68 28 73 74 72 29 3D 3D 30 29 20 65 72 atch(str)==0) er
00C8F0: 72 6F 72 28 22 6D 69 73 73 69 6E 67 20 74 6F 6B ror("missing tok
00C900: 65 6E 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 6E 65 en");.. }....ne
00C910: 65 64 6C 76 61 6C 28 29 20 7B 0D 0A 20 20 65 72 edlval() {.. er
00C920: 72 6F 72 28 22 6D 75 73 74 20 62 65 20 6C 76 61 ror("must be lva
00C930: 6C 75 65 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 66 lue");.. }....f
00C940: 69 6E 64 67 6C 62 28 73 6E 61 6D 65 29 20 20 63 indglb(sname) c
00C950: 68 61 72 20 2A 73 6E 61 6D 65 3B 20 7B 0D 0A 20 har *sname; {..
00C960: 20 69 66 28 73 65 61 72 63 68 28 73 6E 61 6D 65 if(search(sname
00C970: 2C 20 53 54 41 52 54 47 4C 42 2C 20 53 59 4D 4D , STARTGLB, SYMM
00C980: 41 58 2C 20 45 4E 44 47 4C 42 2C 20 4E 55 4D 47 AX, ENDGLB, NUMG
00C990: 4C 42 53 2C 20 4E 41 4D 45 29 29 0D 0A 20 20 20 LBS, NAME))..
00C9A0: 20 72 65 74 75 72 6E 20 63 70 74 72 3B 0D 0A 20 return cptr;..
00C9B0: 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 7D 0D return 0;.. }.
00C9C0: 0A 0D 0A 66 69 6E 64 6C 6F 63 28 73 6E 61 6D 65 ...findloc(sname
00C9D0: 29 20 20 63 68 61 72 20 2A 73 6E 61 6D 65 3B 20 ) char *sname;
00C9E0: 20 7B 0D 0A 20 20 63 70 74 72 20 3D 20 6C 6F 63 {.. cptr = loc
00C9F0: 70 74 72 20 2D 20 31 3B 09 09 2F 2A 20 73 65 61 ptr - 1;../* sea
00CA00: 28 6C 61 62 65 6C 29 20 69 6E 74 20 6C 61 62 65 (label) int labe
00CA10: 6C 3B 20 7B 0D 0A 20 20 70 72 69 6E 74 6C 61 62 l; {.. printlab
00CA20: 65 6C 28 6C 61 62 65 6C 29 3B 0D 0A 20 20 63 6F el(label);.. co
00CA30: 6C 28 29 3B 0D 0A 20 20 6E 6C 28 29 3B 0D 0A 20 l();.. nl();..
00CA40: 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 70 72 69 }..../*..** pri
00CA50: 6E 74 20 73 70 65 63 69 66 69 65 64 20 6E 75 6D nt specified num
00CA60: 62 65 72 20 61 73 20 61 20 6C 61 62 65 6C 0D 0A ber as a label..
00CA70: 2A 2F 0D 0A 70 72 69 6E 74 6C 61 62 65 6C 28 6C */..printlabel(l
00CA80: 61 62 65 6C 29 20 20 69 6E 74 20 6C 61 62 65 6C abel) int label
00CA90: 3B 20 7B 0D 0A 20 20 6F 75 74 73 74 72 28 22 43 ; {.. outstr("C
00CAA0: 43 22 29 3B 0D 0A 20 20 6F 75 74 64 65 63 28 6C C");.. outdec(l
00CAB0: 61 62 65 6C 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F abel);.. }..../
00CAC0: 2A 0D 0A 2A 2A 20 74 65 73 74 20 69 66 20 63 20 *..** test if c
00CAD0: 69 73 20 61 6C 70 68 61 62 65 74 69 63 0D 0A 2A is alphabetic..*
00CAE0: 2F 0D 0A 61 6C 70 68 61 28 63 29 20 20 63 68 61 /..alpha(c) cha
00CAF0: 72 20 63 3B 20 7B 0D 0A 20 20 72 65 74 75 72 6E r c; {.. return
00CB00: 20 28 69 73 61 6C 70 68 61 28 63 29 20 7C 7C 20 (isalpha(c) ||
00CB10: 63 3D 3D 27 5F 27 29 3B 0D 0A 20 20 7D 0D 0A 0D c=='_');.. }...
00CB20: 0A 2F 2A 0D 0A 2A 2A 20 74 65 73 74 20 69 66 20 ./*..** test if
00CB30: 67 69 76 65 6E 20 63 68 61 72 61 63 74 65 72 20 given character
00CB40: 69 73 20 61 6C 70 68 61 6E 75 6D 65 72 69 63 0D is alphanumeric.
00CB50: 0A 2A 2F 0D 0A 61 6E 28 63 29 20 20 63 68 61 72 .*/..an(c) char
00CB60: 20 63 3B 20 7B 0D 0A 20 20 72 65 74 75 72 6E 20 c; {.. return
00CB70: 28 61 6C 70 68 61 28 63 29 20 7C 7C 20 69 73 64 (alpha(c) || isd
00CB80: 69 67 69 74 28 63 29 29 3B 0D 0A 20 20 7D 0D 0A igit(c));.. }..
00CB90: 0D 0A 61 64 64 77 68 69 6C 65 28 70 74 72 29 20 ..addwhile(ptr)
00CBA0: 20 69 6E 74 20 70 74 72 5B 5D 3B 20 7B 0D 0A 20 int ptr[]; {..
00CBB0: 20 69 6E 74 20 6B 3B 0D 0A 20 20 70 74 72 5B 57 int k;.. ptr[W
00CBC0: 51 53 50 5D 3D 63 73 70 3B 09 09 2F 2A 20 61 6E QSP]=csp;../* an
00CBD0: 64 20 73 74 6B 20 70 74 72 20 2A 2F 0D 0A 20 20 d stk ptr */..
00CBE0: 70 74 72 5B 57 51 4C 4F 4F 50 5D 3D 67 65 74 6C ptr[WQLOOP]=getl
00CBF0: 61 62 65 6C 28 29 3B 09 2F 2A 20 61 6E 64 20 6C abel();./* and l
00CC00: 72 63 68 20 62 61 63 6B 77 61 72 64 20 66 6F 72 rch backward for
00CC10: 20 62 6C 6F 63 6B 20 6C 6F 63 61 6C 73 20 2A 2F block locals */
00CC20: 0D 0A 20 20 77 68 69 6C 65 28 63 70 74 72 20 3E .. while(cptr >
00CC30: 20 53 54 41 52 54 4C 4F 43 29 20 7B 0D 0A 20 20 STARTLOC) {..
00CC40: 20 20 63 70 74 72 20 3D 20 63 70 74 72 20 2D 20 cptr = cptr -
00CC50: 2A 63 70 74 72 3B 0D 0A 20 20 20 20 69 66 28 61 *cptr;.. if(a
00CC60: 73 74 72 65 71 28 73 6E 61 6D 65 2C 20 63 70 74 streq(sname, cpt
00CC70: 72 2C 20 4E 41 4D 45 4D 41 58 29 29 20 72 65 74 r, NAMEMAX)) ret
00CC80: 75 72 6E 20 28 63 70 74 72 20 2D 20 4E 41 4D 45 urn (cptr - NAME
00CC90: 29 3B 0D 0A 20 20 20 20 63 70 74 72 20 3D 20 63 );.. cptr = c
00CCA0: 70 74 72 20 2D 20 4E 41 4D 45 20 2D 20 31 3B 0D ptr - NAME - 1;.
00CCB0: 0A 20 20 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E . }.. return
00CCC0: 20 30 3B 0D 0A 20 20 7D 0D 0A 0D 0A 61 64 64 73 0;.. }....adds
00CCD0: 79 6D 28 73 6E 61 6D 65 2C 20 69 64 2C 20 74 79 ym(sname, id, ty
00CCE0: 70 2C 20 76 61 6C 75 65 2C 20 6C 67 70 74 72 70 p, value, lgptrp
00CCF0: 74 72 2C 20 63 6C 61 73 73 29 0D 0A 20 20 63 68 tr, class).. ch
00CD00: 61 72 20 2A 73 6E 61 6D 65 2C 20 69 64 2C 20 74 ar *sname, id, t
00CD10: 79 70 3B 20 20 69 6E 74 20 76 61 6C 75 65 2C 20 yp; int value,
00CD20: 2A 6C 67 70 74 72 70 74 72 2C 20 63 6C 61 73 73 *lgptrptr, class
00CD30: 3B 20 7B 0D 0A 20 20 69 66 28 6C 67 70 74 72 70 ; {.. if(lgptrp
00CD40: 74 72 20 3D 3D 20 26 67 6C 62 70 74 72 29 20 7B tr == &glbptr) {
00CD50: 0D 0A 20 20 20 20 69 66 28 63 70 74 72 32 3D 66 .. if(cptr2=f
00CD60: 69 6E 64 67 6C 62 28 73 6E 61 6D 65 29 29 20 72 indglb(sname)) r
00CD70: 65 74 75 72 6E 20 63 70 74 72 32 3B 0D 0A 20 20 eturn cptr2;..
00CD80: 20 20 69 66 28 63 70 74 72 3D 3D 30 29 20 7B 0D if(cptr==0) {.
00CD90: 0A 20 20 20 20 20 20 65 72 72 6F 72 28 22 67 6C . error("gl
00CDA0: 6F 62 61 6C 20 73 79 6D 62 6F 6C 20 74 61 62 6C obal symbol tabl
00CDB0: 65 20 6F 76 65 72 66 6C 6F 77 22 29 3B 0D 0A 20 e overflow");..
00CDC0: 20 20 20 20 20 72 65 74 75 72 6E 20 30 3B 0D 0A return 0;..
00CDD0: 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 7D 0D 0A }.. }..
00CDE0: 20 20 65 6C 73 65 20 7B 0D 0A 20 20 20 20 69 66 else {.. if
00CDF0: 28 6C 6F 63 70 74 72 20 3E 20 28 45 4E 44 4C 4F (locptr > (ENDLO
00CE00: 6F 6F 70 69 6E 67 20 6C 61 62 65 6C 20 2A 2F 0D ooping label */.
00CE10: 0A 20 20 70 74 72 5B 57 51 45 58 49 54 5D 3D 67 . ptr[WQEXIT]=g
00CE20: 65 74 6C 61 62 65 6C 28 29 3B 09 2F 2A 20 61 6E etlabel();./* an
00CE30: 64 20 65 78 69 74 20 6C 61 62 65 6C 20 2A 2F 0D d exit label */.
00CE40: 0A 20 20 69 66 20 28 77 71 70 74 72 3D 3D 57 51 . if (wqptr==WQ
00CE50: 4D 41 58 29 20 7B 0D 0A 20 20 20 20 65 72 72 6F MAX) {.. erro
00CE60: 72 28 22 74 6F 6F 20 6D 61 6E 79 20 61 63 74 69 r("too many acti
00CE70: 76 65 20 6C 6F 6F 70 73 22 29 3B 0D 0A 20 20 20 ve loops");..
00CE80: 20 61 62 6F 72 74 28 45 52 52 43 4F 44 45 29 3B abort(ERRCODE);
00CE90: 0D 0A 20 20 20 20 7D 0D 0A 20 20 6B 3D 30 3B 0D .. }.. k=0;.
00CEA0: 0A 20 20 77 68 69 6C 65 20 28 6B 3C 57 51 53 49 . while (k<WQSI
00CEB0: 5A 29 20 2A 77 71 70 74 72 2B 2B 20 3D 20 70 74 Z) *wqptr++ = pt
00CEC0: 72 5B 6B 2B 2B 5D 3B 0D 0A 20 20 7D 0D 0A 0D 0A r[k++];.. }....
00CED0: 64 65 6C 77 68 69 6C 65 28 29 20 7B 0D 0A 20 20 delwhile() {..
00CEE0: 69 66 20 28 77 71 70 74 72 20 3E 20 77 71 29 20 if (wqptr > wq)
00CEF0: 77 71 70 74 72 3D 77 71 70 74 72 2D 57 51 53 49 wqptr=wqptr-WQSI
00CF00: 5A 3B 0D 0A 20 20 7D 0D 0A 0D 0A 72 65 61 64 77 Z;.. }....readw
00CF10: 68 69 6C 65 28 70 74 72 29 20 69 6E 74 20 2A 70 hile(ptr) int *p
00CF20: 74 72 3B 20 7B 0D 0A 20 20 69 66 20 28 70 74 72 tr; {.. if (ptr
00CF30: 20 3C 3D 20 77 71 29 20 7B 0D 0A 20 20 20 20 65 <= wq) {.. e
00CF40: 72 72 6F 72 28 22 6F 75 74 20 6F 66 20 63 6F 6E rror("out of con
00CF50: 74 65 78 74 22 29 3B 0D 0A 20 20 20 20 72 65 74 text");.. ret
00CF60: 75 72 6E 20 30 3B 0D 0A 20 20 20 20 7D 0D 0A 20 urn 0;.. }..
00CF70: 20 65 6C 73 65 20 72 65 74 75 72 6E 20 28 70 74 else return (pt
00CF80: 72 2D 57 51 53 49 5A 29 3B 0D 0A 20 7D 0D 0A 0D r-WQSIZ);.. }...
00CF90: 0A 77 68 69 74 65 28 29 20 7B 0D 0A 23 69 66 64 .white() {..#ifd
00CFA0: 65 66 20 44 59 4E 41 4D 49 43 0D 0A 20 20 2F 2A ef DYNAMIC.. /*
00CFB0: 20 74 65 73 74 20 66 6F 72 20 73 74 61 63 6B 2F test for stack/
00CFC0: 70 72 6F 67 20 6F 76 65 72 6C 61 70 20 61 74 20 prog overlap at
00CFD0: 64 65 65 70 65 73 74 20 6E 65 73 74 69 6E 67 20 deepest nesting
00CFE0: 2A 2F 0D 0A 20 20 2F 2A 20 70 72 69 6D 61 72 79 */.. /* primary
00CFF0: 20 2D 3E 20 73 79 6D 6E 61 6D 65 20 2D 3E 20 62 -> symname -> b
00D000: 43 2D 53 59 4D 4D 41 58 29 29 20 7B 0D 0A 20 20 C-SYMMAX)) {..
00D010: 20 20 20 20 65 72 72 6F 72 28 22 6C 6F 63 61 6C error("local
00D020: 20 73 79 6D 62 6F 6C 20 74 61 62 6C 65 20 6F 76 symbol table ov
00D030: 65 72 66 6C 6F 77 22 29 3B 0D 0A 20 20 20 20 20 erflow");..
00D040: 20 61 62 6F 72 74 28 45 52 52 43 4F 44 45 29 3B abort(ERRCODE);
00D050: 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 63 .. }.. c
00D060: 70 74 72 20 3D 20 2A 6C 67 70 74 72 70 74 72 3B ptr = *lgptrptr;
00D070: 0D 0A 20 20 20 20 7D 0D 0A 20 20 63 70 74 72 5B .. }.. cptr[
00D080: 49 44 45 4E 54 5D 3D 69 64 3B 0D 0A 20 20 63 70 IDENT]=id;.. cp
00D090: 74 72 5B 54 59 50 45 5D 3D 74 79 70 3B 0D 0A 20 tr[TYPE]=typ;..
00D0A0: 20 63 70 74 72 5B 43 4C 41 53 53 5D 3D 63 6C 61 cptr[CLASS]=cla
00D0B0: 73 73 3B 0D 0A 20 20 70 75 74 69 6E 74 28 76 61 ss;.. putint(va
00D0C0: 6C 75 65 2C 20 63 70 74 72 2B 4F 46 46 53 45 54 lue, cptr+OFFSET
00D0D0: 2C 20 4F 46 46 53 49 5A 45 29 3B 0D 0A 20 20 63 , OFFSIZE);.. c
00D0E0: 70 74 72 33 20 3D 20 63 70 74 72 32 20 3D 20 63 ptr3 = cptr2 = c
00D0F0: 70 74 72 20 2B 20 4E 41 4D 45 3B 0D 0A 20 20 77 ptr + NAME;.. w
00D100: 68 69 6C 65 28 61 6E 28 2A 73 6E 61 6D 65 29 29 hile(an(*sname))
00D110: 20 2A 63 70 74 72 32 2B 2B 20 3D 20 2A 73 6E 61 *cptr2++ = *sna
00D120: 6D 65 2B 2B 3B 0D 0A 20 20 69 66 28 6C 67 70 74 me++;.. if(lgpt
00D130: 72 70 74 72 20 3D 3D 20 26 6C 6F 63 70 74 72 29 rptr == &locptr)
00D140: 20 7B 0D 0A 20 20 20 20 2A 63 70 74 72 32 20 3D {.. *cptr2 =
00D150: 20 63 70 74 72 32 20 2D 20 63 70 74 72 33 3B 09 cptr2 - cptr3;.
00D160: 2F 2A 20 73 65 74 20 6C 65 6E 67 74 68 20 2A 2F /* set length */
00D170: 0D 0A 20 20 20 20 2A 6C 67 70 74 72 70 74 72 20 .. *lgptrptr
00D180: 3D 20 2B 2B 63 70 74 72 32 3B 0D 0A 20 20 20 20 = ++cptr2;..
00D190: 7D 0D 0A 20 20 72 65 74 75 72 6E 20 63 70 74 72 }.. return cptr
00D1A0: 3B 0D 0A 20 20 7D 0D 0A 0D 0A 6E 65 78 74 73 79 ;.. }....nextsy
00D1B0: 6D 28 65 6E 74 72 79 29 20 63 68 61 72 20 2A 65 m(entry) char *e
00D1C0: 6E 74 72 79 3B 20 7B 0D 0A 20 20 65 6E 74 72 79 ntry; {.. entry
00D1D0: 20 3D 20 65 6E 74 72 79 20 2B 20 4E 41 4D 45 3B = entry + NAME;
00D1E0: 0D 0A 20 20 77 68 69 6C 65 28 2A 65 6E 74 72 79 .. while(*entry
00D1F0: 2B 2B 20 3E 3D 20 27 20 27 29 3B 09 2F 2A 20 66 ++ >= ' ');./* f
00D200: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
00D210: 0B 00 01 00 02 09 52 E5 0B 00 41 02 00 00 00 02 ......R...A.....
00D220: 0B 00 46 02 00 00 00 02 0B 00 42 02 00 00 00 02 ..F.......B.....
00D230: 0B 00 47 02 00 00 00 02 0B 00 43 02 00 00 00 02 ..G.......C.....
00D240: 0B 00 48 02 00 00 00 02 0B 00 44 02 00 00 00 02 ..H.......D.....
00D250: 0B 00 49 02 00 00 00 02 0B 00 45 02 00 00 00 02 ..I.......E.....
00D260: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D270: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D280: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D290: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D2A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D2B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D2C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D2D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D2E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D2F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D300: 6C 61 6E 6B 73 20 2D 3E 20 77 68 69 74 65 20 2A lanks -> white *
00D310: 2F 0D 0A 20 20 61 76 61 69 6C 28 59 45 53 29 3B /.. avail(YES);
00D320: 09 09 2F 2A 20 61 62 6F 72 74 20 6F 6E 20 73 74 ../* abort on st
00D330: 61 63 6B 20 6F 76 65 72 66 6C 6F 77 20 2A 2F 0D ack overflow */.
00D340: 0A 23 65 6E 64 69 66 0D 0A 20 20 72 65 74 75 72 .#endif.. retur
00D350: 6E 20 28 2A 6C 70 74 72 3C 3D 20 27 20 27 20 26 n (*lptr<= ' ' &
00D360: 26 20 2A 6C 70 74 72 21 3D 4E 55 4C 4C 29 3B 0D & *lptr!=NULL);.
00D370: 0A 20 20 7D 0D 0A 0D 0A 67 63 68 28 29 20 7B 0D . }....gch() {.
00D380: 0A 20 20 69 6E 74 20 63 3B 0D 0A 20 20 69 66 28 . int c;.. if(
00D390: 63 3D 63 68 29 20 62 75 6D 70 28 31 29 3B 0D 0A c=ch) bump(1);..
00D3A0: 20 20 72 65 74 75 72 6E 20 63 3B 0D 0A 20 20 7D return c;.. }
00D3B0: 0D 0A 0D 0A 62 75 6D 70 28 6E 29 20 69 6E 74 20 ....bump(n) int
00D3C0: 6E 3B 20 7B 0D 0A 20 20 69 66 28 6E 29 20 6C 70 n; {.. if(n) lp
00D3D0: 74 72 3D 6C 70 74 72 2B 6E 3B 0D 0A 20 20 65 6C tr=lptr+n;.. el
00D3E0: 73 65 20 20 6C 70 74 72 3D 6C 69 6E 65 3B 0D 0A se lptr=line;..
00D3F0: 20 20 69 66 28 63 68 3D 6E 63 68 20 3D 20 2A 6C if(ch=nch = *l
00D400: 70 74 72 29 20 6E 63 68 20 3D 20 2A 28 6C 70 74 ptr) nch = *(lpt
00D410: 72 2B 31 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 6B 69 r+1);.. }....ki
00D420: 6C 6C 28 29 20 7B 0D 0A 20 20 2A 6C 69 6E 65 3D ll() {.. *line=
00D430: 30 3B 0D 0A 20 20 62 75 6D 70 28 30 29 3B 0D 0A 0;.. bump(0);..
00D440: 20 20 7D 0D 0A 0D 0A 69 6E 62 79 74 65 28 29 20 }....inbyte()
00D450: 20 7B 0D 0A 20 20 77 68 69 6C 65 28 63 68 3D 3D {.. while(ch==
00D460: 30 29 20 7B 0D 0A 20 20 20 20 69 66 20 28 65 6F 0) {.. if (eo
00D470: 66 29 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 f) return 0;..
00D480: 20 20 70 72 65 70 72 6F 63 65 73 73 28 29 3B 0D preprocess();.
00D490: 0A 20 20 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E . }.. return
00D4A0: 20 67 63 68 28 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A gch();.. }....
00D4B0: 69 6E 6C 69 6E 65 28 29 20 7B 09 09 09 2F 2A 20 inline() {.../*
00D4C0: 6E 75 6D 65 72 6F 75 73 20 72 65 76 69 73 69 6F numerous revisio
00D4D0: 6E 73 20 2A 2F 0D 0A 20 20 69 6E 74 20 6B 2C 75 ns */.. int k,u
00D4E0: 6E 69 74 3B 0D 0A 20 20 70 6F 6C 6C 28 31 29 3B nit;.. poll(1);
00D4F0: 09 09 09 2F 2A 20 61 6C 6C 6F 77 20 6F 70 65 72 .../* allow oper
00D500: 20 77 68 69 6C 65 28 28 63 68 21 3D 33 39 29 7C while((ch!=39)|
00D510: 28 28 2A 28 6C 70 74 72 2D 31 29 3D 3D 39 32 29 ((*(lptr-1)==92)
00D520: 26 28 2A 28 6C 70 74 72 2D 32 29 21 3D 39 32 29 &(*(lptr-2)!=92)
00D530: 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 69 66 )) {.. if
00D540: 28 63 68 3D 3D 30 29 20 7B 0D 0A 20 20 20 20 20 (ch==0) {..
00D550: 20 20 20 20 20 65 72 72 6F 72 28 22 6E 6F 20 61 error("no a
00D560: 70 6F 73 74 72 6F 70 68 65 22 29 3B 0D 0A 20 20 postrophe");..
00D570: 20 20 20 20 20 20 20 20 62 72 65 61 6B 3B 0D 0A break;..
00D580: 20 20 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 }..
00D590: 20 20 20 20 20 6B 65 65 70 63 68 28 67 63 68 28 keepch(gch(
00D5A0: 29 29 3B 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A ));.. }..
00D5B0: 20 20 20 20 20 20 67 63 68 28 29 3B 0D 0A 20 20 gch();..
00D5C0: 20 20 20 20 6B 65 65 70 63 68 28 33 39 29 3B 0D keepch(39);.
00D5D0: 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 65 6C . }.. el
00D5E0: 73 65 20 69 66 28 28 63 68 3D 3D 27 2F 27 29 26 se if((ch=='/')&
00D5F0: 28 6E 63 68 3D 3D 27 2A 27 29 29 20 7B 0D 0A 20 (nch=='*')) {..
00D600: 20 20 20 20 20 62 75 6D 70 28 32 29 3B 0D 0A 20 bump(2);..
00D610: 20 20 20 20 20 77 68 69 6C 65 28 28 28 63 68 3D while(((ch=
00D620: 3D 27 2A 27 29 26 28 6E 63 68 3D 3D 27 2F 27 29 ='*')&(nch=='/')
00D630: 29 3D 3D 30 29 20 7B 0D 0A 20 20 20 20 20 20 20 )==0) {..
00D640: 20 69 66 28 63 68 29 20 62 75 6D 70 28 31 29 3B if(ch) bump(1);
00D650: 0D 0A 20 20 20 20 20 20 20 20 65 6C 73 65 20 7B .. else {
00D660: 0D 0A 20 20 20 20 20 20 20 20 20 20 69 66 6C 69 .. ifli
00D670: 6E 65 28 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 ne();..
00D680: 20 69 66 28 65 6F 66 29 20 62 72 65 61 6B 3B 0D if(eof) break;.
00D690: 0A 20 20 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 . }..
00D6A0: 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 62 }.. b
00D6B0: 75 6D 70 28 32 29 3B 0D 0A 20 20 20 20 20 20 7D ump(2);.. }
00D6C0: 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 28 61 6E .. else if(an
00D6D0: 28 63 68 29 29 20 7B 0D 0A 20 20 20 20 20 20 6B (ch)) {.. k
00D6E0: 3D 30 3B 0D 0A 20 20 20 20 20 20 77 68 69 6C 65 =0;.. while
00D6F0: 28 28 61 6E 28 63 68 29 29 20 26 20 28 6B 3C 4E ((an(ch)) & (k<N
00D700: 61 74 6F 72 20 69 6E 74 65 72 72 75 70 74 69 6F ator interruptio
00D710: 6E 20 2A 2F 0D 0A 20 20 69 66 20 28 69 6E 70 75 n */.. if (inpu
00D720: 74 3D 3D 45 4F 46 29 20 6F 70 65 6E 66 69 6C 65 t==EOF) openfile
00D730: 28 29 3B 0D 0A 20 20 69 66 28 65 6F 66 29 20 72 ();.. if(eof) r
00D740: 65 74 75 72 6E 3B 0D 0A 20 20 69 66 28 28 75 6E eturn;.. if((un
00D750: 69 74 3D 69 6E 70 75 74 32 29 3D 3D 45 4F 46 29 it=input2)==EOF)
00D760: 20 75 6E 69 74 3D 69 6E 70 75 74 3B 0D 0A 20 20 unit=input;..
00D770: 69 66 28 66 67 65 74 73 28 6C 69 6E 65 2C 20 4C if(fgets(line, L
00D780: 49 4E 45 4D 41 58 2C 20 75 6E 69 74 29 3D 3D 4E INEMAX, unit)==N
00D790: 55 4C 4C 29 20 7B 0D 0A 20 20 20 20 66 63 6C 6F ULL) {.. fclo
00D7A0: 73 65 28 75 6E 69 74 29 3B 0D 0A 20 20 20 20 69 se(unit);.. i
00D7B0: 66 28 69 6E 70 75 74 32 21 3D 45 4F 46 29 20 69 f(input2!=EOF) i
00D7C0: 6E 70 75 74 32 3D 45 4F 46 3B 0D 0A 20 20 20 20 nput2=EOF;..
00D7D0: 65 6C 73 65 20 69 6E 70 75 74 3D 45 4F 46 3B 0D else input=EOF;.
00D7E0: 0A 20 20 20 20 2A 6C 69 6E 65 3D 4E 55 4C 4C 3B . *line=NULL;
00D7F0: 0D 0A 20 20 20 20 7D 0D 0A 20 20 65 6C 73 65 20 .. }.. else
00D800: 69 66 28 6C 69 73 74 66 70 29 20 7B 0D 0A 20 20 if(listfp) {..
00D810: 20 20 69 66 28 6C 69 73 74 66 70 3D 3D 6F 75 74 if(listfp==out
00D820: 70 75 74 29 20 63 6F 75 74 28 27 3B 27 2C 20 6F put) cout(';', o
00D830: 75 74 70 75 74 29 3B 0D 0A 20 20 20 20 73 6F 75 utput);.. sou
00D840: 74 28 6C 69 6E 65 2C 20 6C 69 73 74 66 70 29 3B t(line, listfp);
00D850: 0D 0A 20 20 20 20 7D 0D 0A 20 20 62 75 6D 70 28 .. }.. bump(
00D860: 30 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 3E 3E 3E 20 0);.. }....>>>
00D870: 43 43 32 32 2E 43 20 36 38 36 36 0D 0A 69 66 6C CC22.C 6866..ifl
00D880: 69 6E 65 28 29 20 7B 0D 0A 20 20 77 68 69 6C 65 ine() {.. while
00D890: 28 31 29 20 7B 0D 0A 20 20 20 20 69 6E 6C 69 6E (1) {.. inlin
00D8A0: 65 28 29 3B 0D 0A 20 20 20 20 69 66 28 65 6F 66 e();.. if(eof
00D8B0: 29 20 72 65 74 75 72 6E 3B 0D 0A 20 20 20 20 69 ) return;.. i
00D8C0: 66 28 6D 61 74 63 68 28 22 23 69 66 64 65 66 22 f(match("#ifdef"
00D8D0: 29 29 20 7B 0D 0A 20 20 20 20 20 20 2B 2B 69 66 )) {.. ++if
00D8E0: 6C 65 76 65 6C 3B 0D 0A 20 20 20 20 20 20 69 66 level;.. if
00D8F0: 28 73 6B 69 70 6C 65 76 65 6C 29 20 63 6F 6E 74 (skiplevel) cont
00D900: 41 4D 45 4D 41 58 29 29 20 7B 0D 0A 20 20 20 20 AMEMAX)) {..
00D910: 20 20 20 20 6D 73 6E 61 6D 65 5B 6B 2B 2B 5D 3D msname[k++]=
00D920: 63 68 3B 0D 0A 20 20 20 20 20 20 20 20 67 63 68 ch;.. gch
00D930: 28 29 3B 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A ();.. }..
00D940: 20 20 20 20 20 20 6D 73 6E 61 6D 65 5B 6B 5D 3D msname[k]=
00D950: 30 3B 0D 0A 20 20 20 20 20 20 69 66 28 73 65 61 0;.. if(sea
00D960: 72 63 68 28 6D 73 6E 61 6D 65 2C 20 6D 61 63 6E rch(msname, macn
00D970: 2C 20 4E 41 4D 45 53 49 5A 45 2B 32 2C 20 4D 41 , NAMESIZE+2, MA
00D980: 43 4E 45 4E 44 2C 20 4D 41 43 4E 42 52 2C 20 30 CNEND, MACNBR, 0
00D990: 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 6B 3D )) {.. k=
00D9A0: 67 65 74 69 6E 74 28 63 70 74 72 2B 4E 41 4D 45 getint(cptr+NAME
00D9B0: 53 49 5A 45 2C 20 32 29 3B 0D 0A 20 20 20 20 20 SIZE, 2);..
00D9C0: 20 20 20 77 68 69 6C 65 28 63 3D 6D 61 63 71 5B while(c=macq[
00D9D0: 6B 2B 2B 5D 29 20 6B 65 65 70 63 68 28 63 29 3B k++]) keepch(c);
00D9E0: 0D 0A 20 20 20 20 20 20 20 20 77 68 69 6C 65 28 .. while(
00D9F0: 61 6E 28 63 68 29 29 20 67 63 68 28 29 3B 0D 0A an(ch)) gch();..
00DA00: 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 }..
00DA10: 20 65 6C 73 65 20 7B 0D 0A 20 20 20 20 20 20 20 else {..
00DA20: 20 6B 3D 30 3B 0D 0A 20 20 20 20 20 20 20 20 77 k=0;.. w
00DA30: 68 69 6C 65 28 63 3D 6D 73 6E 61 6D 65 5B 6B 2B hile(c=msname[k+
00DA40: 2B 5D 29 20 6B 65 65 70 63 68 28 63 29 3B 0D 0A +]) keepch(c);..
00DA50: 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 }..
00DA60: 20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 6B 65 65 }.. else kee
00DA70: 70 63 68 28 67 63 68 28 29 29 3B 0D 0A 20 20 20 pch(gch());..
00DA80: 20 7D 0D 0A 20 20 69 66 28 70 70 74 72 3E 3D 4C }.. if(pptr>=L
00DA90: 49 4E 45 4D 41 58 29 20 65 72 72 6F 72 28 22 6C INEMAX) error("l
00DAA0: 69 6E 65 20 74 6F 6F 20 6C 6F 6E 67 22 29 3B 0D ine too long");.
00DAB0: 0A 20 20 6B 65 65 70 63 68 28 30 29 3B 0D 0A 20 . keepch(0);..
00DAC0: 20 6C 69 6E 65 3D 70 6C 69 6E 65 3B 0D 0A 20 20 line=pline;..
00DAD0: 62 75 6D 70 28 30 29 3B 0D 0A 20 20 7D 0D 0A 0D bump(0);.. }...
00DAE0: 0A 6E 6F 69 66 65 72 72 28 29 20 7B 0D 0A 20 20 .noiferr() {..
00DAF0: 65 72 72 6F 72 28 22 6E 6F 20 6D 61 74 63 68 69 error("no matchi
00DB00: 69 6E 75 65 3B 0D 0A 20 20 20 20 20 20 73 79 6D inue;.. sym
00DB10: 6E 61 6D 65 28 6D 73 6E 61 6D 65 2C 20 4E 4F 29 name(msname, NO)
00DB20: 3B 0D 0A 20 20 20 20 20 20 69 66 28 73 65 61 72 ;.. if(sear
00DB30: 63 68 28 6D 73 6E 61 6D 65 2C 20 6D 61 63 6E 2C ch(msname, macn,
00DB40: 20 4E 41 4D 45 53 49 5A 45 2B 32 2C 20 4D 41 43 NAMESIZE+2, MAC
00DB50: 4E 45 4E 44 2C 20 4D 41 43 4E 42 52 2C 20 30 29 NEND, MACNBR, 0)
00DB60: 3D 3D 30 29 0D 0A 20 20 20 20 20 20 20 20 73 6B ==0).. sk
00DB70: 69 70 6C 65 76 65 6C 3D 69 66 6C 65 76 65 6C 3B iplevel=iflevel;
00DB80: 0D 0A 20 20 20 20 20 20 63 6F 6E 74 69 6E 75 65 .. continue
00DB90: 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 ;.. }..
00DBA0: 69 66 28 6D 61 74 63 68 28 22 23 69 66 6E 64 65 if(match("#ifnde
00DBB0: 66 22 29 29 20 7B 0D 0A 20 20 20 20 20 20 2B 2B f")) {.. ++
00DBC0: 69 66 6C 65 76 65 6C 3B 0D 0A 20 20 20 20 20 20 iflevel;..
00DBD0: 69 66 28 73 6B 69 70 6C 65 76 65 6C 29 20 63 6F if(skiplevel) co
00DBE0: 6E 74 69 6E 75 65 3B 0D 0A 20 20 20 20 20 20 73 ntinue;.. s
00DBF0: 79 6D 6E 61 6D 65 28 6D 73 6E 61 6D 65 2C 20 4E ymname(msname, N
00DC00: 4F 29 3B 0D 0A 20 20 20 20 20 20 69 66 28 73 65 O);.. if(se
00DC10: 61 72 63 68 28 6D 73 6E 61 6D 65 2C 20 6D 61 63 arch(msname, mac
00DC20: 6E 2C 20 4E 41 4D 45 53 49 5A 45 2B 32 2C 20 4D n, NAMESIZE+2, M
00DC30: 41 43 4E 45 4E 44 2C 20 4D 41 43 4E 42 52 2C 20 ACNEND, MACNBR,
00DC40: 30 29 29 0D 0A 20 20 20 20 20 20 20 20 73 6B 69 0)).. ski
00DC50: 70 6C 65 76 65 6C 3D 69 66 6C 65 76 65 6C 3B 0D plevel=iflevel;.
00DC60: 0A 20 20 20 20 20 20 63 6F 6E 74 69 6E 75 65 3B . continue;
00DC70: 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 69 .. }.. i
00DC80: 66 28 6D 61 74 63 68 28 22 23 65 6C 73 65 22 29 f(match("#else")
00DC90: 29 20 7B 0D 0A 20 20 20 20 20 20 69 66 28 69 66 ) {.. if(if
00DCA0: 6C 65 76 65 6C 29 20 7B 0D 0A 20 20 20 20 20 20 level) {..
00DCB0: 20 20 69 66 28 73 6B 69 70 6C 65 76 65 6C 3D 3D if(skiplevel==
00DCC0: 69 66 6C 65 76 65 6C 29 20 73 6B 69 70 6C 65 76 iflevel) skiplev
00DCD0: 65 6C 3D 30 3B 0D 0A 20 20 20 20 20 20 20 20 65 el=0;.. e
00DCE0: 6C 73 65 20 69 66 28 73 6B 69 70 6C 65 76 65 6C lse if(skiplevel
00DCF0: 3D 3D 30 29 20 20 73 6B 69 70 6C 65 76 65 6C 3D ==0) skiplevel=
00DD00: 6E 67 20 23 69 66 2E 2E 2E 22 29 3B 0D 0A 20 20 ng #if...");..
00DD10: 65 72 72 66 6C 61 67 3D 30 3B 0D 0A 20 20 7D 0D errflag=0;.. }.
00DD20: 0A 0D 0A 61 64 64 6D 61 63 28 29 20 7B 0D 0A 20 ...addmac() {..
00DD30: 20 69 6E 74 20 6B 3B 0D 0A 20 20 69 66 28 73 79 int k;.. if(sy
00DD40: 6D 6E 61 6D 65 28 6D 73 6E 61 6D 65 2C 20 4E 4F mname(msname, NO
00DD50: 29 3D 3D 30 29 20 7B 0D 0A 20 20 20 20 69 6C 6C )==0) {.. ill
00DD60: 6E 61 6D 65 28 29 3B 0D 0A 20 20 20 20 6B 69 6C name();.. kil
00DD70: 6C 28 29 3B 0D 0A 20 20 20 20 72 65 74 75 72 6E l();.. return
00DD80: 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 6B 3D 30 3B ;.. }.. k=0;
00DD90: 0D 0A 20 20 69 66 28 73 65 61 72 63 68 28 6D 73 .. if(search(ms
00DDA0: 6E 61 6D 65 2C 20 6D 61 63 6E 2C 20 4E 41 4D 45 name, macn, NAME
00DDB0: 53 49 5A 45 2B 32 2C 20 4D 41 43 4E 45 4E 44 2C SIZE+2, MACNEND,
00DDC0: 20 4D 41 43 4E 42 52 2C 20 30 29 3D 3D 30 29 20 MACNBR, 0)==0)
00DDD0: 7B 0D 0A 20 20 20 20 69 66 28 63 70 74 72 32 3D {.. if(cptr2=
00DDE0: 63 70 74 72 29 20 77 68 69 6C 65 28 2A 63 70 74 cptr) while(*cpt
00DDF0: 72 32 2B 2B 20 3D 20 6D 73 6E 61 6D 65 5B 6B 2B r2++ = msname[k+
00DE00: 2B 5D 29 3B 0D 0A 20 20 20 20 65 6C 73 65 20 7B +]);.. else {
00DE10: 0D 0A 20 20 20 20 20 20 65 72 72 6F 72 28 22 6D .. error("m
00DE20: 61 63 72 6F 20 6E 61 6D 65 20 74 61 62 6C 65 20 acro name table
00DE30: 66 75 6C 6C 22 29 3B 0D 0A 20 20 20 20 20 20 72 full");.. r
00DE40: 65 74 75 72 6E 3B 0D 0A 20 20 20 20 20 20 7D 0D eturn;.. }.
00DE50: 0A 20 20 20 20 7D 0D 0A 20 20 70 75 74 69 6E 74 . }.. putint
00DE60: 28 6D 61 63 70 74 72 2C 20 63 70 74 72 2B 4E 41 (macptr, cptr+NA
00DE70: 4D 45 53 49 5A 45 2C 20 32 29 3B 0D 0A 20 20 77 MESIZE, 2);.. w
00DE80: 68 69 6C 65 28 77 68 69 74 65 28 29 29 20 67 63 hile(white()) gc
00DE90: 68 28 29 3B 0D 0A 20 20 77 68 69 6C 65 28 70 75 h();.. while(pu
00DEA0: 74 6D 61 63 28 67 63 68 28 29 29 29 3B 0D 0A 20 tmac(gch()));..
00DEB0: 20 69 66 28 6D 61 63 70 74 72 3E 3D 4D 41 43 4D if(macptr>=MACM
00DEC0: 41 58 29 20 7B 0D 0A 20 20 20 20 65 72 72 6F 72 AX) {.. error
00DED0: 28 22 6D 61 63 72 6F 20 73 74 72 69 6E 67 20 71 ("macro string q
00DEE0: 75 65 75 65 20 66 75 6C 6C 22 29 3B 20 61 62 6F ueue full"); abo
00DEF0: 72 74 28 45 52 52 43 4F 44 45 29 3B 0D 0A 20 20 rt(ERRCODE);..
00DF00: 69 66 6C 65 76 65 6C 3B 0D 0A 20 20 20 20 20 20 iflevel;..
00DF10: 20 20 7D 0D 0A 20 20 20 20 20 20 65 6C 73 65 20 }.. else
00DF20: 6E 6F 69 66 65 72 72 28 29 3B 0D 0A 20 20 20 20 noiferr();..
00DF30: 20 20 63 6F 6E 74 69 6E 75 65 3B 0D 0A 20 20 20 continue;..
00DF40: 20 20 20 7D 0D 0A 20 20 20 20 69 66 28 6D 61 74 }.. if(mat
00DF50: 63 68 28 22 23 65 6E 64 69 66 22 29 29 20 7B 0D ch("#endif")) {.
00DF60: 0A 20 20 20 20 20 20 69 66 28 69 66 6C 65 76 65 . if(ifleve
00DF70: 6C 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 69 66 l) {.. if
00DF80: 28 73 6B 69 70 6C 65 76 65 6C 3D 3D 69 66 6C 65 (skiplevel==ifle
00DF90: 76 65 6C 29 20 73 6B 69 70 6C 65 76 65 6C 3D 30 vel) skiplevel=0
00DFA0: 3B 0D 0A 20 20 20 20 20 20 20 20 2D 2D 69 66 6C ;.. --ifl
00DFB0: 65 76 65 6C 3B 0D 0A 20 20 20 20 20 20 20 20 7D evel;.. }
00DFC0: 0D 0A 20 20 20 20 20 20 65 6C 73 65 20 6E 6F 69 .. else noi
00DFD0: 66 65 72 72 28 29 3B 0D 0A 20 20 20 20 20 20 63 ferr();.. c
00DFE0: 6F 6E 74 69 6E 75 65 3B 0D 0A 20 20 20 20 20 20 ontinue;..
00DFF0: 7D 0D 0A 20 20 20 20 69 66 28 73 6B 69 70 6C 65 }.. if(skiple
00E000: 76 65 6C 29 20 63 6F 6E 74 69 6E 75 65 3B 0D 0A vel) continue;..
00E010: 20 20 20 20 69 66 28 63 68 3D 3D 30 29 20 63 6F if(ch==0) co
00E020: 6E 74 69 6E 75 65 3B 0D 0A 20 20 20 20 62 72 65 ntinue;.. bre
00E030: 61 6B 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D ak;.. }.. }.
00E040: 0A 0D 0A 6B 65 65 70 63 68 28 63 29 20 20 63 68 ...keepch(c) ch
00E050: 61 72 20 63 3B 20 7B 0D 0A 20 20 69 66 28 70 70 ar c; {.. if(pp
00E060: 74 72 3C 4C 49 4E 45 4D 41 58 29 20 70 6C 69 6E tr<LINEMAX) plin
00E070: 65 5B 2B 2B 70 70 74 72 5D 3D 63 3B 0D 0A 20 20 e[++pptr]=c;..
00E080: 7D 0D 0A 0D 0A 70 72 65 70 72 6F 63 65 73 73 28 }....preprocess(
00E090: 29 20 7B 0D 0A 20 20 69 6E 74 20 6B 3B 0D 0A 20 ) {.. int k;..
00E0A0: 20 63 68 61 72 20 63 3B 0D 0A 20 20 69 66 28 63 char c;.. if(c
00E0B0: 63 6F 64 65 29 20 7B 0D 0A 20 20 20 20 6C 69 6E code) {.. lin
00E0C0: 65 3D 6D 6C 69 6E 65 3B 0D 0A 20 20 20 20 69 66 e=mline;.. if
00E0D0: 6C 69 6E 65 28 29 3B 0D 0A 20 20 20 20 69 66 28 line();.. if(
00E0E0: 65 6F 66 29 20 72 65 74 75 72 6E 3B 0D 0A 20 20 eof) return;..
00E0F0: 20 20 7D 0D 0A 20 20 65 6C 73 65 20 7B 0D 0A 20 }.. else {..
00E100: 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 70 75 74 6D }.. }....putm
00E110: 61 63 28 63 29 20 20 63 68 61 72 20 63 3B 20 7B ac(c) char c; {
00E120: 0D 0A 20 20 6D 61 63 71 5B 6D 61 63 70 74 72 5D .. macq[macptr]
00E130: 3D 63 3B 0D 0A 20 20 69 66 28 6D 61 63 70 74 72 =c;.. if(macptr
00E140: 3C 4D 41 43 4D 41 58 29 20 2B 2B 6D 61 63 70 74 <MACMAX) ++macpt
00E150: 72 3B 0D 0A 20 20 72 65 74 75 72 6E 20 63 3B 0D r;.. return c;.
00E160: 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 73 . }..../*..** s
00E170: 65 61 72 63 68 20 66 6F 72 20 73 79 6D 62 6F 6C earch for symbol
00E180: 20 6D 61 74 63 68 0D 0A 2A 2A 20 6F 6E 20 72 65 match..** on re
00E190: 74 75 72 6E 20 63 70 74 72 20 70 6F 69 6E 74 73 turn cptr points
00E1A0: 20 74 6F 20 73 6C 6F 74 20 66 6F 75 6E 64 20 6F to slot found o
00E1B0: 72 20 65 6D 70 74 79 20 73 6C 6F 74 0D 0A 2A 2F r empty slot..*/
00E1C0: 0D 0A 73 65 61 72 63 68 28 73 6E 61 6D 65 2C 20 ..search(sname,
00E1D0: 62 75 66 2C 20 6C 65 6E 2C 20 65 6E 64 2C 20 6D buf, len, end, m
00E1E0: 61 78 2C 20 6F 66 66 29 0D 0A 20 20 63 68 61 72 ax, off).. char
00E1F0: 20 2A 73 6E 61 6D 65 2C 20 2A 62 75 66 2C 20 2A *sname, *buf, *
00E200: 65 6E 64 3B 20 20 69 6E 74 20 6C 65 6E 2C 20 6D end; int len, m
00E210: 61 78 2C 20 6F 66 66 3B 20 7B 0D 0A 20 20 63 70 ax, off; {.. cp
00E220: 74 72 3D 63 70 74 72 32 3D 62 75 66 2B 28 28 68 tr=cptr2=buf+((h
00E230: 61 73 68 28 73 6E 61 6D 65 29 25 28 6D 61 78 2D ash(sname)%(max-
00E240: 31 29 29 2A 6C 65 6E 29 3B 0D 0A 20 20 77 68 69 1))*len);.. whi
00E250: 6C 65 28 2A 63 70 74 72 20 21 3D 20 30 29 20 7B le(*cptr != 0) {
00E260: 0D 0A 20 20 20 20 69 66 28 61 73 74 72 65 71 28 .. if(astreq(
00E270: 73 6E 61 6D 65 2C 20 63 70 74 72 2B 6F 66 66 2C sname, cptr+off,
00E280: 20 4E 41 4D 45 4D 41 58 29 29 20 72 65 74 75 72 NAMEMAX)) retur
00E290: 6E 20 31 3B 0D 0A 20 20 20 20 69 66 28 28 63 70 n 1;.. if((cp
00E2A0: 74 72 3D 63 70 74 72 2B 6C 65 6E 29 20 3E 3D 20 tr=cptr+len) >=
00E2B0: 65 6E 64 29 20 63 70 74 72 3D 62 75 66 3B 0D 0A end) cptr=buf;..
00E2C0: 20 20 20 20 69 66 28 63 70 74 72 20 3D 3D 20 63 if(cptr == c
00E2D0: 70 74 72 32 29 20 72 65 74 75 72 6E 20 28 63 70 ptr2) return (cp
00E2E0: 74 72 3D 30 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 tr=0);.. }..
00E2F0: 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 7D 0D return 0;.. }.
00E300: 20 20 20 6C 69 6E 65 3D 70 6C 69 6E 65 3B 0D 0A line=pline;..
00E310: 20 20 20 20 69 6E 6C 69 6E 65 28 29 3B 0D 0A 20 inline();..
00E320: 20 20 20 72 65 74 75 72 6E 3B 0D 0A 20 20 20 20 return;..
00E330: 7D 0D 0A 20 20 70 70 74 72 20 3D 20 2D 31 3B 0D }.. pptr = -1;.
00E340: 0A 20 20 77 68 69 6C 65 28 63 68 20 21 3D 20 4E . while(ch != N
00E350: 45 57 4C 49 4E 45 20 26 26 20 63 68 29 20 7B 0D EWLINE && ch) {.
00E360: 0A 20 20 20 20 69 66 28 77 68 69 74 65 28 29 29 . if(white())
00E370: 20 7B 0D 0A 20 20 20 20 20 20 6B 65 65 70 63 68 {.. keepch
00E380: 28 27 20 27 29 3B 0D 0A 20 20 20 20 20 20 77 68 (' ');.. wh
00E390: 69 6C 65 28 77 68 69 74 65 28 29 29 20 67 63 68 ile(white()) gch
00E3A0: 28 29 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 ();.. }..
00E3B0: 20 20 65 6C 73 65 20 69 66 28 63 68 3D 3D 27 22 else if(ch=='"
00E3C0: 27 29 20 7B 0D 0A 20 20 20 20 20 20 6B 65 65 70 ') {.. keep
00E3D0: 63 68 28 63 68 29 3B 0D 0A 20 20 20 20 20 20 67 ch(ch);.. g
00E3E0: 63 68 28 29 3B 0D 0A 20 20 20 20 20 20 77 68 69 ch();.. whi
00E3F0: 6C 65 28 28 63 68 21 3D 27 22 27 29 7C 28 28 2A le((ch!='"')|((*
00E400: 28 6C 70 74 72 2D 31 29 3D 3D 39 32 29 26 28 2A (lptr-1)==92)&(*
00E410: 28 6C 70 74 72 2D 32 29 21 3D 39 32 29 29 29 20 (lptr-2)!=92)))
00E420: 7B 0D 0A 20 20 20 20 20 20 20 20 69 66 28 63 68 {.. if(ch
00E430: 3D 3D 30 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 ==0) {..
00E440: 20 20 65 72 72 6F 72 28 22 6E 6F 20 71 75 6F 74 error("no quot
00E450: 65 22 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 e");..
00E460: 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 20 20 20 break;..
00E470: 20 20 7D 0D 0A 20 20 20 20 20 20 20 20 6B 65 65 }.. kee
00E480: 70 63 68 28 67 63 68 28 29 29 3B 0D 0A 20 20 20 pch(gch());..
00E490: 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 67 63 }.. gc
00E4A0: 68 28 29 3B 0D 0A 20 20 20 20 20 20 6B 65 65 70 h();.. keep
00E4B0: 63 68 28 27 22 27 29 3B 0D 0A 20 20 20 20 20 20 ch('"');..
00E4C0: 7D 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 28 63 }.. else if(c
00E4D0: 68 3D 3D 33 39 29 20 7B 0D 0A 20 20 20 20 20 20 h==39) {..
00E4E0: 6B 65 65 70 63 68 28 33 39 29 3B 0D 0A 20 20 20 keepch(39);..
00E4F0: 20 20 20 67 63 68 28 29 3B 0D 0A 20 20 20 20 20 gch();..
00E500: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
00E510: 0C 00 01 00 02 09 52 E5 0C 00 41 02 00 00 00 02 ......R...A.....
00E520: 0C 00 46 02 00 00 00 02 0C 00 42 02 00 00 00 02 ..F.......B.....
00E530: 0C 00 47 02 00 00 00 02 0C 00 43 02 00 00 00 02 ..G.......C.....
00E540: 0C 00 48 02 00 00 00 02 0C 00 44 02 00 00 00 02 ..H.......D.....
00E550: 0C 00 49 02 00 00 00 02 0C 00 45 02 00 00 00 02 ..I.......E.....
00E560: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E570: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E590: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E5A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E5B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E5C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E5D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E5E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E5F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E600: 0A 0D 0A 68 61 73 68 28 73 6E 61 6D 65 29 20 63 ...hash(sname) c
00E610: 68 61 72 20 2A 73 6E 61 6D 65 3B 20 7B 0D 0A 20 har *sname; {..
00E620: 20 69 6E 74 20 69 2C 20 63 3B 0D 0A 20 20 69 3D int i, c;.. i=
00E630: 30 3B 0D 0A 20 20 77 68 69 6C 65 28 63 20 3D 20 0;.. while(c =
00E640: 2A 73 6E 61 6D 65 2B 2B 29 20 69 3D 28 69 3C 3C *sname++) i=(i<<
00E650: 31 29 2B 63 3B 0D 0A 20 20 72 65 74 75 72 6E 20 1)+c;.. return
00E660: 69 3B 0D 0A 20 20 7D 0D 0A 0D 0A 73 65 74 73 74 i;.. }....setst
00E670: 61 67 65 28 62 65 66 6F 72 65 2C 20 73 74 61 72 age(before, star
00E680: 74 29 20 69 6E 74 20 2A 62 65 66 6F 72 65 2C 20 t) int *before,
00E690: 2A 73 74 61 72 74 3B 20 7B 0D 0A 20 20 69 66 28 *start; {.. if(
00E6A0: 28 2A 62 65 66 6F 72 65 3D 73 74 61 67 65 6E 65 (*before=stagene
00E6B0: 78 74 29 3D 3D 30 29 20 73 74 61 67 65 6E 65 78 xt)==0) stagenex
00E6C0: 74 3D 73 74 61 67 65 3B 0D 0A 20 20 2A 73 74 61 t=stage;.. *sta
00E6D0: 72 74 3D 73 74 61 67 65 6E 65 78 74 3B 0D 0A 20 rt=stagenext;..
00E6E0: 20 7D 0D 0A 0D 0A 63 6C 65 61 72 73 74 61 67 65 }....clearstage
00E6F0: 28 62 65 66 6F 72 65 2C 20 73 74 61 72 74 29 20 (before, start)
00E700: 63 68 61 72 20 2A 62 65 66 6F 72 65 2C 20 2A 73 char *before, *s
00E710: 74 61 72 74 3B 20 7B 0D 0A 20 20 2A 73 74 61 67 tart; {.. *stag
00E720: 65 6E 65 78 74 3D 30 3B 0D 0A 20 20 69 66 28 73 enext=0;.. if(s
00E730: 74 61 67 65 6E 65 78 74 3D 62 65 66 6F 72 65 29 tagenext=before)
00E740: 20 72 65 74 75 72 6E 3B 0D 0A 20 20 69 66 28 73 return;.. if(s
00E750: 74 61 72 74 29 20 7B 0D 0A 23 69 66 64 65 66 20 tart) {..#ifdef
00E760: 4F 50 54 49 4D 49 5A 45 0D 0A 20 20 20 20 70 65 OPTIMIZE.. pe
00E770: 65 70 68 6F 6C 65 28 73 74 61 72 74 29 3B 0D 0A ephole(start);..
00E780: 23 65 6C 73 65 0D 0A 20 20 20 20 73 6F 75 74 28 #else.. sout(
00E790: 73 74 61 72 74 2C 20 6F 75 74 70 75 74 29 3B 0D start, output);.
00E7A0: 0A 23 65 6E 64 69 66 0D 0A 20 20 20 20 7D 0D 0A .#endif.. }..
00E7B0: 20 20 7D 0D 0A 0D 0A 6F 75 74 64 65 63 28 6E 75 }....outdec(nu
00E7C0: 6D 62 65 72 29 20 20 69 6E 74 20 6E 75 6D 62 65 mber) int numbe
00E7D0: 72 3B 20 7B 0D 0A 20 20 69 6E 74 20 6B 2C 7A 73 r; {.. int k,zs
00E7E0: 3B 0D 0A 20 20 63 68 61 72 20 63 2C 20 2A 71 2C ;.. char c, *q,
00E7F0: 20 2A 72 3B 0D 0A 20 20 7A 73 20 3D 20 30 3B 0D *r;.. zs = 0;.
00E800: 7D 0D 0A 20 20 69 66 20 28 61 6E 28 73 74 72 31 }.. if (an(str1
00E810: 5B 6B 5D 29 29 72 65 74 75 72 6E 20 30 3B 0D 0A [k]))return 0;..
00E820: 20 20 69 66 20 28 61 6E 28 73 74 72 32 5B 6B 5D if (an(str2[k]
00E830: 29 29 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 72 ))return 0;.. r
00E840: 65 74 75 72 6E 20 6B 3B 0D 0A 20 7D 0D 0A 0D 0A eturn k;.. }....
00E850: 6D 61 74 63 68 28 6C 69 74 29 20 20 63 68 61 72 match(lit) char
00E860: 20 2A 6C 69 74 3B 20 7B 0D 0A 20 20 69 6E 74 20 *lit; {.. int
00E870: 6B 3B 0D 0A 20 20 62 6C 61 6E 6B 73 28 29 3B 0D k;.. blanks();.
00E880: 0A 20 20 69 66 20 28 6B 3D 73 74 72 65 71 28 6C . if (k=streq(l
00E890: 70 74 72 2C 6C 69 74 29 29 20 7B 0D 0A 20 20 20 ptr,lit)) {..
00E8A0: 20 62 75 6D 70 28 6B 29 3B 0D 0A 20 20 20 20 72 bump(k);.. r
00E8B0: 65 74 75 72 6E 20 31 3B 0D 0A 20 20 20 20 7D 0D eturn 1;.. }.
00E8C0: 0A 20 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 . return 0;..
00E8D0: 7D 0D 0A 0D 0A 61 6D 61 74 63 68 28 6C 69 74 2C }....amatch(lit,
00E8E0: 6C 65 6E 29 20 20 63 68 61 72 20 2A 6C 69 74 3B len) char *lit;
00E8F0: 69 6E 74 20 6C 65 6E 3B 20 7B 0D 0A 20 20 69 6E int len; {.. in
00E900: 74 20 6B 3B 0D 0A 20 20 62 6C 61 6E 6B 73 28 29 t k;.. blanks()
00E910: 3B 0D 0A 20 20 69 66 20 28 6B 3D 61 73 74 72 65 ;.. if (k=astre
00E920: 71 28 6C 70 74 72 2C 6C 69 74 2C 6C 65 6E 29 29 q(lptr,lit,len))
00E930: 20 7B 0D 0A 20 20 20 20 62 75 6D 70 28 6B 29 3B {.. bump(k);
00E940: 0D 0A 20 20 20 20 77 68 69 6C 65 28 61 6E 28 63 .. while(an(c
00E950: 68 29 29 20 69 6E 62 79 74 65 28 29 3B 0D 0A 20 h)) inbyte();..
00E960: 20 20 20 72 65 74 75 72 6E 20 31 3B 0D 0A 20 20 return 1;..
00E970: 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E 20 30 3B }.. return 0;
00E980: 0D 0A 20 7D 0D 0A 0D 0A 6E 65 78 74 6F 70 28 6C .. }....nextop(l
00E990: 69 73 74 29 20 63 68 61 72 20 2A 6C 69 73 74 3B ist) char *list;
00E9A0: 20 7B 0D 0A 20 20 63 68 61 72 20 6F 70 5B 34 5D {.. char op[4]
00E9B0: 3B 0D 0A 20 20 6F 70 69 6E 64 65 78 3D 30 3B 0D ;.. opindex=0;.
00E9C0: 0A 20 20 62 6C 61 6E 6B 73 28 29 3B 0D 0A 20 20 . blanks();..
00E9D0: 77 68 69 6C 65 28 31 29 20 7B 0D 0A 20 20 20 20 while(1) {..
00E9E0: 6F 70 73 69 7A 65 3D 30 3B 0D 0A 20 20 20 20 77 opsize=0;.. w
00E9F0: 68 69 6C 65 28 2A 6C 69 73 74 20 3E 20 27 20 27 hile(*list > ' '
00EA00: 0A 20 20 6B 3D 31 30 30 30 30 3B 0D 0A 20 20 69 . k=10000;.. i
00EA10: 66 20 28 6E 75 6D 62 65 72 3C 30 29 20 7B 0D 0A f (number<0) {..
00EA20: 20 20 20 20 6E 75 6D 62 65 72 3D 28 2D 6E 75 6D number=(-num
00EA30: 62 65 72 29 3B 0D 0A 20 20 20 20 6F 75 74 62 79 ber);.. outby
00EA40: 74 65 28 27 2D 27 29 3B 0D 0A 20 20 20 20 7D 0D te('-');.. }.
00EA50: 0A 20 20 77 68 69 6C 65 20 28 6B 3E 3D 31 29 20 . while (k>=1)
00EA60: 7B 0D 0A 20 20 20 20 71 3D 30 3B 20 72 3D 6E 75 {.. q=0; r=nu
00EA70: 6D 62 65 72 3B 0D 0A 20 20 20 20 77 68 69 6C 65 mber;.. while
00EA80: 28 72 20 3E 3D 20 6B 29 20 7B 2B 2B 71 3B 20 72 (r >= k) {++q; r
00EA90: 20 2D 3D 20 6B 3B 7D 0D 0A 20 20 20 20 63 20 3D -= k;}.. c =
00EAA0: 20 71 20 2B 20 27 30 27 3B 0D 0A 20 20 20 20 69 q + '0';.. i
00EAB0: 66 20 28 28 63 21 3D 27 30 27 29 7C 28 6B 3D 3D f ((c!='0')|(k==
00EAC0: 31 29 7C 28 7A 73 29 29 20 7B 0D 0A 20 20 20 20 1)|(zs)) {..
00EAD0: 20 20 7A 73 3D 31 3B 0D 0A 20 20 20 20 20 20 6F zs=1;.. o
00EAE0: 75 74 62 79 74 65 28 63 29 3B 0D 0A 20 20 20 20 utbyte(c);..
00EAF0: 20 20 7D 0D 0A 20 20 20 20 6E 75 6D 62 65 72 3D }.. number=
00EB00: 72 3B 0D 0A 20 20 20 20 6B 3D 6B 2F 31 30 3B 0D r;.. k=k/10;.
00EB10: 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 6F . }.. }....o
00EB20: 6C 28 70 74 72 29 20 20 63 68 61 72 20 70 74 72 l(ptr) char ptr
00EB30: 5B 5D 3B 20 20 7B 0D 0A 20 20 6F 74 28 70 74 72 []; {.. ot(ptr
00EB40: 29 3B 0D 0A 20 20 6E 6C 28 29 3B 0D 0A 20 20 7D );.. nl();.. }
00EB50: 0D 0A 0D 0A 6F 74 28 70 74 72 29 20 63 68 61 72 ....ot(ptr) char
00EB60: 20 70 74 72 5B 5D 3B 20 7B 0D 0A 20 20 6F 75 74 ptr[]; {.. out
00EB70: 73 74 72 28 70 74 72 29 3B 0D 0A 20 20 7D 0D 0A str(ptr);.. }..
00EB80: 0D 0A 6F 75 74 73 74 72 28 70 74 72 29 20 63 68 ..outstr(ptr) ch
00EB90: 61 72 20 70 74 72 5B 5D 3B 20 7B 0D 0A 20 20 70 ar ptr[]; {.. p
00EBA0: 6F 6C 6C 28 31 29 3B 20 2F 2A 20 61 6C 6C 6F 77 oll(1); /* allow
00EBB0: 20 70 72 6F 67 72 61 6D 20 69 6E 74 65 72 72 75 program interru
00EBC0: 70 74 69 6F 6E 20 2A 2F 0D 0A 20 20 2F 2A 20 6D ption */.. /* m
00EBD0: 75 73 74 20 77 6F 72 6B 20 77 69 74 68 20 73 79 ust work with sy
00EBE0: 6D 62 6F 6C 20 74 61 62 6C 65 20 6E 61 6D 65 73 mbol table names
00EBF0: 20 74 65 72 6D 69 6E 61 74 65 64 20 62 79 20 6C terminated by l
00EC00: 29 20 6F 70 5B 6F 70 73 69 7A 65 2B 2B 5D 20 3D ) op[opsize++] =
00EC10: 20 2A 6C 69 73 74 2B 2B 3B 0D 0A 20 20 20 20 6F *list++;.. o
00EC20: 70 5B 6F 70 73 69 7A 65 5D 3D 30 3B 0D 0A 20 20 p[opsize]=0;..
00EC30: 20 20 69 66 28 6F 70 73 69 7A 65 3D 73 74 72 65 if(opsize=stre
00EC40: 71 28 6C 70 74 72 2C 20 6F 70 29 29 0D 0A 20 20 q(lptr, op))..
00EC50: 20 20 20 20 69 66 28 28 2A 28 6C 70 74 72 2B 6F if((*(lptr+o
00EC60: 70 73 69 7A 65 29 20 21 3D 20 27 3D 27 29 26 0D psize) != '=')&.
00EC70: 0A 20 20 20 20 20 20 20 20 20 28 2A 28 6C 70 74 . (*(lpt
00EC80: 72 2B 6F 70 73 69 7A 65 29 20 21 3D 20 2A 28 6C r+opsize) != *(l
00EC90: 70 74 72 2B 6F 70 73 69 7A 65 2D 31 29 29 29 0D ptr+opsize-1))).
00ECA0: 0A 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6E . return
00ECB0: 20 31 3B 0D 0A 20 20 20 20 69 66 28 2A 6C 69 73 1;.. if(*lis
00ECC0: 74 29 20 7B 0D 0A 20 20 20 20 20 20 2B 2B 6C 69 t) {.. ++li
00ECD0: 73 74 3B 0D 0A 20 20 20 20 20 20 2B 2B 6F 70 69 st;.. ++opi
00ECE0: 6E 64 65 78 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A ndex;.. }..
00ECF0: 20 20 20 20 65 6C 73 65 20 72 65 74 75 72 6E 20 else return
00ED00: 30 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0;.. }.. }..
00ED10: 0D 0A 62 6C 61 6E 6B 73 28 29 20 7B 0D 0A 20 20 ..blanks() {..
00ED20: 77 68 69 6C 65 28 31 29 20 7B 0D 0A 20 20 20 20 while(1) {..
00ED30: 77 68 69 6C 65 28 63 68 29 20 7B 0D 0A 20 20 20 while(ch) {..
00ED40: 20 20 20 69 66 28 77 68 69 74 65 28 29 29 20 67 if(white()) g
00ED50: 63 68 28 29 3B 0D 0A 20 20 20 20 20 20 65 6C 73 ch();.. els
00ED60: 65 20 72 65 74 75 72 6E 3B 0D 0A 20 20 20 20 20 e return;..
00ED70: 20 7D 0D 0A 20 20 20 20 69 66 28 6C 69 6E 65 3D }.. if(line=
00ED80: 3D 6D 6C 69 6E 65 29 20 72 65 74 75 72 6E 3B 0D =mline) return;.
00ED90: 0A 20 20 20 20 70 72 65 70 72 6F 63 65 73 73 28 . preprocess(
00EDA0: 29 3B 0D 0A 20 20 20 20 69 66 28 65 6F 66 29 62 );.. if(eof)b
00EDB0: 72 65 61 6B 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 reak;.. }..
00EDC0: 7D 0D 0A 0D 0A 3E 3E 3E 20 43 43 33 2E 43 20 33 }....>>> CC3.C 3
00EDD0: 37 33 0D 0A 2F 2A 0D 0A 2A 2A 20 53 6D 61 6C 6C 73../*..** Small
00EDE0: 2D 43 20 43 6F 6D 70 69 6C 65 72 20 50 61 72 74 -C Compiler Part
00EDF0: 20 33 0D 0A 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 3..*/..#include
00EE00: 65 6E 67 74 68 20 2A 2F 0D 0A 20 20 77 68 69 6C ength */.. whil
00EE10: 65 28 2A 70 74 72 20 3E 3D 20 27 20 27 29 20 6F e(*ptr >= ' ') o
00EE20: 75 74 62 79 74 65 28 2A 70 74 72 2B 2B 29 3B 0D utbyte(*ptr++);.
00EE30: 0A 20 20 7D 0D 0A 0D 0A 6F 75 74 62 79 74 65 28 . }....outbyte(
00EE40: 63 29 20 63 68 61 72 20 63 3B 20 7B 0D 0A 20 20 c) char c; {..
00EE50: 69 66 28 73 74 61 67 65 6E 65 78 74 29 20 7B 0D if(stagenext) {.
00EE60: 0A 20 20 20 20 69 66 28 73 74 61 67 65 6E 65 78 . if(stagenex
00EE70: 74 3D 3D 73 74 61 67 65 6C 61 73 74 29 20 7B 0D t==stagelast) {.
00EE80: 0A 20 20 20 20 20 20 65 72 72 6F 72 28 22 73 74 . error("st
00EE90: 61 67 69 6E 67 20 62 75 66 66 65 72 20 6F 76 65 aging buffer ove
00EEA0: 72 66 6C 6F 77 22 29 3B 0D 0A 20 20 20 20 20 20 rflow");..
00EEB0: 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 20 20 20 return 0;..
00EEC0: 20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 2A 73 74 }.. else *st
00EED0: 61 67 65 6E 65 78 74 2B 2B 20 3D 20 63 3B 0D 0A agenext++ = c;..
00EEE0: 20 20 20 20 7D 0D 0A 20 20 65 6C 73 65 20 63 6F }.. else co
00EEF0: 75 74 28 63 2C 6F 75 74 70 75 74 29 3B 0D 0A 20 ut(c,output);..
00EF00: 20 72 65 74 75 72 6E 20 63 3B 0D 0A 20 20 7D 0D return c;.. }.
00EF10: 0A 0D 0A 63 6F 75 74 28 63 2C 20 66 64 29 20 63 ...cout(c, fd) c
00EF20: 68 61 72 20 63 3B 20 69 6E 74 20 66 64 3B 20 7B har c; int fd; {
00EF30: 0D 0A 20 20 69 66 28 66 70 75 74 63 28 63 2C 20 .. if(fputc(c,
00EF40: 66 64 29 3D 3D 45 4F 46 29 20 78 6F 75 74 28 29 fd)==EOF) xout()
00EF50: 3B 0D 0A 20 20 7D 0D 0A 0D 0A 73 6F 75 74 28 73 ;.. }....sout(s
00EF60: 74 72 69 6E 67 2C 20 66 64 29 20 63 68 61 72 20 tring, fd) char
00EF70: 2A 73 74 72 69 6E 67 3B 20 69 6E 74 20 66 64 3B *string; int fd;
00EF80: 20 7B 0D 0A 20 20 69 66 28 66 70 75 74 73 28 73 {.. if(fputs(s
00EF90: 74 72 69 6E 67 2C 20 66 64 29 3D 3D 45 4F 46 29 tring, fd)==EOF)
00EFA0: 20 78 6F 75 74 28 29 3B 0D 0A 20 20 7D 0D 0A 0D xout();.. }...
00EFB0: 0A 6C 6F 75 74 28 6C 69 6E 65 2C 20 66 64 29 20 .lout(line, fd)
00EFC0: 63 68 61 72 20 2A 6C 69 6E 65 3B 20 69 6E 74 20 char *line; int
00EFD0: 66 64 3B 20 7B 0D 0A 20 20 73 6F 75 74 28 6C 69 fd; {.. sout(li
00EFE0: 6E 65 2C 20 66 64 29 3B 0D 0A 20 20 63 6F 75 74 ne, fd);.. cout
00EFF0: 28 4E 45 57 4C 49 4E 45 2C 20 66 64 29 3B 0D 0A (NEWLINE, fd);..
00F000: 20 3C 73 74 64 69 6F 2E 68 3E 0D 0A 23 69 6E 63 <stdio.h>..#inc
00F010: 6C 75 64 65 20 22 63 63 2E 64 65 66 22 0D 0A 0D lude "cc.def"...
00F020: 0A 65 78 74 65 72 6E 20 63 68 61 72 0D 0A 23 69 .extern char..#i
00F030: 66 64 65 66 20 44 59 4E 41 4D 49 43 0D 0A 20 2A fdef DYNAMIC.. *
00F040: 73 74 61 67 65 2C 0D 0A 20 2A 6C 69 74 71 2C 0D stage,.. *litq,.
00F050: 0A 23 65 6C 73 65 0D 0A 20 20 73 74 61 67 65 5B .#else.. stage[
00F060: 53 54 41 47 45 53 49 5A 45 5D 2C 0D 0A 20 20 6C STAGESIZE],.. l
00F070: 69 74 71 5B 4C 49 54 41 42 53 5A 5D 2C 0D 0A 23 itq[LITABSZ],..#
00F080: 65 6E 64 69 66 0D 0A 20 2A 67 6C 62 70 74 72 2C endif.. *glbptr,
00F090: 20 2A 6C 70 74 72 2C 20 20 73 73 6E 61 6D 65 5B *lptr, ssname[
00F0A0: 4E 41 4D 45 53 49 5A 45 5D 2C 20 20 71 75 6F 74 NAMESIZE], quot
00F0B0: 65 5B 32 5D 2C 20 2A 73 74 61 67 65 6E 65 78 74 e[2], *stagenext
00F0C0: 3B 0D 0A 65 78 74 65 72 6E 20 69 6E 74 0D 0A 20 ;..extern int..
00F0D0: 20 63 68 2C 20 20 63 73 70 2C 20 20 6C 69 74 6C ch, csp, litl
00F0E0: 61 62 2C 20 20 6C 69 74 70 74 72 2C 20 20 6E 63 ab, litptr, nc
00F0F0: 68 2C 20 20 6F 70 5B 31 36 5D 2C 20 20 6F 70 32 h, op[16], op2
00F100: 5B 31 36 5D 2C 0D 0A 20 20 6F 70 65 72 2C 20 20 [16],.. oper,
00F110: 6F 70 69 6E 64 65 78 2C 20 20 6F 70 73 69 7A 65 opindex, opsize
00F120: 3B 0D 0A 0D 0A 23 69 6E 63 6C 75 64 65 20 22 63 ;....#include "c
00F130: 63 33 31 2E 63 22 0D 0A 23 69 6E 63 6C 75 64 65 c31.c"..#include
00F140: 20 22 63 63 33 32 2E 63 22 0D 0A 23 69 6E 63 6C "cc32.c"..#incl
00F150: 75 64 65 20 22 63 63 33 33 2E 63 22 0D 0A 0D 0A ude "cc33.c"....
00F160: 3E 3E 3E 20 43 43 33 31 2E 43 20 36 36 38 30 0D >>> CC31.C 6680.
00F170: 0A 2F 2A 0D 0A 2A 2A 20 6C 76 61 6C 5B 30 5D 20 ./*..** lval[0]
00F180: 2D 20 73 79 6D 62 6F 6C 20 74 61 62 6C 65 20 61 - symbol table a
00F190: 64 64 72 65 73 73 2C 20 65 6C 73 65 20 30 20 66 ddress, else 0 f
00F1A0: 6F 72 20 63 6F 6E 73 74 61 6E 74 0D 0A 2A 2A 20 or constant..**
00F1B0: 6C 76 61 6C 5B 31 5D 20 2D 20 74 79 70 65 20 6F lval[1] - type o
00F1C0: 66 20 69 6E 64 69 72 65 63 74 20 6F 62 6A 20 74 f indirect obj t
00F1D0: 6F 20 66 65 74 63 68 2C 20 65 6C 73 65 20 30 20 o fetch, else 0
00F1E0: 66 6F 72 20 73 74 61 74 69 63 0D 0A 2A 2A 20 6C for static..** l
00F1F0: 76 61 6C 5B 32 5D 20 2D 20 74 79 70 65 20 6F 66 val[2] - type of
00F200: 20 20 7D 0D 0A 0D 0A 78 6F 75 74 28 29 20 7B 0D }....xout() {.
00F210: 0A 20 20 66 70 75 74 73 28 22 6F 75 74 70 75 74 . fputs("output
00F220: 20 65 72 72 6F 72 22 2C 20 73 74 64 65 72 72 29 error", stderr)
00F230: 3B 0D 0A 20 20 61 62 6F 72 74 28 45 52 52 43 4F ;.. abort(ERRCO
00F240: 44 45 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 6E 6C 28 DE);.. }....nl(
00F250: 29 20 7B 0D 0A 20 20 6F 75 74 62 79 74 65 28 4E ) {.. outbyte(N
00F260: 45 57 4C 49 4E 45 29 3B 0D 0A 20 20 7D 0D 0A 0D EWLINE);.. }...
00F270: 0A 63 6F 6C 28 29 20 7B 0D 0A 23 69 66 64 65 66 .col() {..#ifdef
00F280: 20 43 4F 4C 0D 0A 20 20 6F 75 74 62 79 74 65 28 COL.. outbyte(
00F290: 27 3A 27 29 3B 0D 0A 23 65 6E 64 69 66 0D 0A 20 ':');..#endif..
00F2A0: 20 7D 0D 0A 0D 0A 65 72 72 6F 72 28 6D 73 67 29 }....error(msg)
00F2B0: 20 63 68 61 72 20 6D 73 67 5B 5D 3B 20 7B 0D 0A char msg[]; {..
00F2C0: 20 20 69 66 28 65 72 72 66 6C 61 67 29 20 72 65 if(errflag) re
00F2D0: 74 75 72 6E 3B 20 65 6C 73 65 20 65 72 72 66 6C turn; else errfl
00F2E0: 61 67 3D 31 3B 0D 0A 20 20 6C 6F 75 74 28 6C 69 ag=1;.. lout(li
00F2F0: 6E 65 2C 20 73 74 64 65 72 72 29 3B 0D 0A 20 20 ne, stderr);..
00F300: 65 72 72 6F 75 74 28 6D 73 67 2C 20 73 74 64 65 errout(msg, stde
00F310: 72 72 29 3B 0D 0A 20 20 69 66 28 61 6C 61 72 6D rr);.. if(alarm
00F320: 29 20 66 70 75 74 63 28 37 2C 20 73 74 64 65 72 ) fputc(7, stder
00F330: 72 29 3B 0D 0A 20 20 69 66 28 70 61 75 73 65 29 r);.. if(pause)
00F340: 20 77 68 69 6C 65 28 66 67 65 74 63 28 73 74 64 while(fgetc(std
00F350: 65 72 72 29 21 3D 4E 45 57 4C 49 4E 45 29 3B 0D err)!=NEWLINE);.
00F360: 0A 20 20 69 66 28 6C 69 73 74 66 70 3E 30 29 20 . if(listfp>0)
00F370: 65 72 72 6F 75 74 28 6D 73 67 2C 20 6C 69 73 74 errout(msg, list
00F380: 66 70 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 65 72 72 fp);.. }....err
00F390: 6F 75 74 28 6D 73 67 2C 20 66 70 29 20 63 68 61 out(msg, fp) cha
00F3A0: 72 20 6D 73 67 5B 5D 3B 20 69 6E 74 20 66 70 3B r msg[]; int fp;
00F3B0: 20 7B 0D 0A 20 20 69 6E 74 20 6B 3B 20 6B 3D 6C {.. int k; k=l
00F3C0: 69 6E 65 2B 32 3B 0D 0A 20 20 77 68 69 6C 65 28 ine+2;.. while(
00F3D0: 6B 2B 2B 20 3C 3D 20 6C 70 74 72 29 20 63 6F 75 k++ <= lptr) cou
00F3E0: 74 28 27 20 27 2C 20 66 70 29 3B 0D 0A 20 20 6C t(' ', fp);.. l
00F3F0: 6F 75 74 28 22 2F 5C 5C 22 2C 20 66 70 29 3B 0D out("/\\", fp);.
00F400: 20 70 6F 69 6E 74 65 72 20 6F 72 20 61 72 72 61 pointer or arra
00F410: 79 2C 20 65 6C 73 65 20 30 20 66 6F 72 20 61 6C y, else 0 for al
00F420: 6C 20 6F 74 68 65 72 0D 0A 2A 2A 20 6C 76 61 6C l other..** lval
00F430: 5B 33 5D 20 2D 20 74 72 75 65 20 69 66 20 63 6F [3] - true if co
00F440: 6E 73 74 61 6E 74 20 65 78 70 72 65 73 73 69 6F nstant expressio
00F450: 6E 0D 0A 2A 2A 20 6C 76 61 6C 5B 34 5D 20 2D 20 n..** lval[4] -
00F460: 76 61 6C 75 65 20 6F 66 20 63 6F 6E 73 74 61 6E value of constan
00F470: 74 20 65 78 70 72 65 73 73 69 6F 6E 20 28 2B 20 t expression (+
00F480: 61 75 78 69 6C 69 61 72 79 20 75 73 65 73 29 0D auxiliary uses).
00F490: 0A 2A 2A 20 6C 76 61 6C 5B 35 5D 20 2D 20 74 72 .** lval[5] - tr
00F4A0: 75 65 20 69 66 20 73 65 63 6F 6E 64 61 72 79 20 ue if secondary
00F4B0: 72 65 67 69 73 74 65 72 20 61 6C 74 65 72 65 64 register altered
00F4C0: 0D 0A 2A 2A 20 6C 76 61 6C 5B 36 5D 20 2D 20 66 ..** lval[6] - f
00F4D0: 75 6E 63 74 69 6F 6E 20 61 64 64 72 65 73 73 20 unction address
00F4E0: 6F 66 20 68 69 67 68 65 73 74 2F 6C 61 73 74 20 of highest/last
00F4F0: 62 69 6E 61 72 79 20 6F 70 65 72 61 74 6F 72 0D binary operator.
00F500: 0A 2A 2A 20 6C 76 61 6C 5B 37 5D 20 2D 20 73 74 .** lval[7] - st
00F510: 61 67 65 20 61 64 64 72 65 73 73 20 6F 66 20 22 age address of "
00F520: 6F 70 65 72 20 30 22 20 63 6F 64 65 2C 20 65 6C oper 0" code, el
00F530: 73 65 20 30 0D 0A 2A 2F 0D 0A 0D 0A 2F 2A 0D 0A se 0..*/..../*..
00F540: 2A 2A 20 73 6B 69 6D 20 6F 76 65 72 20 74 65 72 ** skim over ter
00F550: 6D 73 20 61 64 6A 6F 69 6E 69 6E 67 20 7C 7C 20 ms adjoining ||
00F560: 61 6E 64 20 26 26 20 6F 70 65 72 61 74 6F 72 73 and && operators
00F570: 0D 0A 2A 2F 0D 0A 73 6B 69 6D 28 6F 70 73 74 72 ..*/..skim(opstr
00F580: 2C 20 74 65 73 74 66 75 6E 63 2C 20 64 72 6F 70 , testfunc, drop
00F590: 76 61 6C 2C 20 65 6E 64 76 61 6C 2C 20 68 69 65 val, endval, hie
00F5A0: 72 2C 20 6C 76 61 6C 29 0D 0A 20 20 63 68 61 72 r, lval).. char
00F5B0: 20 2A 6F 70 73 74 72 3B 0D 0A 20 20 69 6E 74 20 *opstr;.. int
00F5C0: 28 2A 74 65 73 74 66 75 6E 63 29 28 29 2C 20 64 (*testfunc)(), d
00F5D0: 72 6F 70 76 61 6C 2C 20 65 6E 64 76 61 6C 2C 20 ropval, endval,
00F5E0: 28 2A 68 69 65 72 29 28 29 2C 20 6C 76 61 6C 5B (*hier)(), lval[
00F5F0: 5D 3B 20 7B 0D 0A 20 20 69 6E 74 20 6B 2C 20 68 ]; {.. int k, h
00F600: 0A 20 20 73 6F 75 74 28 22 2A 2A 2A 2A 20 22 2C . sout("**** ",
00F610: 20 66 70 29 3B 20 6C 6F 75 74 28 6D 73 67 2C 20 fp); lout(msg,
00F620: 66 70 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 73 74 72 fp);.. }....str
00F630: 65 71 28 73 74 72 31 2C 73 74 72 32 29 20 20 63 eq(str1,str2) c
00F640: 68 61 72 20 73 74 72 31 5B 5D 2C 73 74 72 32 5B har str1[],str2[
00F650: 5D 3B 20 7B 0D 0A 20 20 69 6E 74 20 6B 3B 0D 0A ]; {.. int k;..
00F660: 20 20 6B 3D 30 3B 0D 0A 20 20 77 68 69 6C 65 20 k=0;.. while
00F670: 28 73 74 72 32 5B 6B 5D 29 20 7B 0D 0A 20 20 20 (str2[k]) {..
00F680: 20 69 66 20 28 28 73 74 72 31 5B 6B 5D 29 21 3D if ((str1[k])!=
00F690: 28 73 74 72 32 5B 6B 5D 29 29 20 72 65 74 75 72 (str2[k])) retur
00F6A0: 6E 20 30 3B 0D 0A 20 20 20 20 2B 2B 6B 3B 0D 0A n 0;.. ++k;..
00F6B0: 20 20 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E 20 }.. return
00F6C0: 6B 3B 0D 0A 20 7D 0D 0A 0D 0A 61 73 74 72 65 71 k;.. }....astreq
00F6D0: 28 73 74 72 31 2C 73 74 72 32 2C 6C 65 6E 29 20 (str1,str2,len)
00F6E0: 20 63 68 61 72 20 73 74 72 31 5B 5D 2C 73 74 72 char str1[],str
00F6F0: 32 5B 5D 3B 69 6E 74 20 6C 65 6E 3B 20 7B 0D 0A 2[];int len; {..
00F700: 20 20 69 6E 74 20 6B 3B 0D 0A 20 20 6B 3D 30 3B int k;.. k=0;
00F710: 0D 0A 20 20 77 68 69 6C 65 20 28 6B 3C 6C 65 6E .. while (k<len
00F720: 29 20 7B 0D 0A 20 20 20 20 69 66 20 28 28 73 74 ) {.. if ((st
00F730: 72 31 5B 6B 5D 29 21 3D 28 73 74 72 32 5B 6B 5D r1[k])!=(str2[k]
00F740: 29 29 62 72 65 61 6B 3B 0D 0A 20 20 20 20 2F 2A ))break;.. /*
00F750: 0D 0A 20 20 20 20 2A 2A 20 6D 75 73 74 20 64 65 .. ** must de
00F760: 74 65 63 74 20 65 6E 64 20 6F 66 20 73 79 6D 62 tect end of symb
00F770: 6F 6C 20 74 61 62 6C 65 20 6E 61 6D 65 73 20 74 ol table names t
00F780: 65 72 6D 69 6E 61 74 65 64 20 62 79 0D 0A 20 20 erminated by..
00F790: 20 20 2A 2A 20 73 79 6D 62 6F 6C 20 6C 65 6E 67 ** symbol leng
00F7A0: 74 68 20 69 6E 20 62 69 6E 61 72 79 0D 0A 20 20 th in binary..
00F7B0: 20 20 2A 2F 0D 0A 20 20 20 20 69 66 28 73 74 72 */.. if(str
00F7C0: 31 5B 6B 5D 20 3C 20 27 20 27 29 20 62 72 65 61 1[k] < ' ') brea
00F7D0: 6B 3B 0D 0A 20 20 20 20 69 66 28 73 74 72 32 5B k;.. if(str2[
00F7E0: 6B 5D 20 3C 20 27 20 27 29 20 62 72 65 61 6B 3B k] < ' ') break;
00F7F0: 0D 0A 20 20 20 20 2B 2B 6B 3B 0D 0A 20 20 20 20 .. ++k;..
00F800: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
00F810: 0D 00 01 00 02 09 52 E5 0D 00 41 02 00 00 00 02 ......R...A.....
00F820: 0D 00 46 02 00 00 00 02 0D 00 42 02 00 00 00 02 ..F.......B.....
00F830: 0D 00 47 02 00 00 00 02 0D 00 43 02 00 00 00 02 ..G.......C.....
00F840: 0D 00 48 02 00 00 00 02 0D 00 44 02 00 00 00 02 ..H.......D.....
00F850: 0D 00 49 02 00 00 00 02 0D 00 45 02 00 00 00 02 ..I.......E.....
00F860: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F870: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F880: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F890: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F8A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F8B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F8C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F8D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F8E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F8F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F900: 69 74 73 2C 20 64 72 6F 70 6C 61 62 2C 20 65 6E its, droplab, en
00F910: 64 6C 61 62 3B 0D 0A 20 20 68 69 74 73 3D 30 3B dlab;.. hits=0;
00F920: 0D 0A 20 20 77 68 69 6C 65 28 31 29 20 7B 0D 0A .. while(1) {..
00F930: 20 20 20 20 6B 3D 70 6C 6E 67 65 31 28 68 69 65 k=plnge1(hie
00F940: 72 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 20 20 69 r, lval);.. i
00F950: 66 28 6E 65 78 74 6F 70 28 6F 70 73 74 72 29 29 f(nextop(opstr))
00F960: 20 7B 0D 0A 20 20 20 20 20 20 62 75 6D 70 28 6F {.. bump(o
00F970: 70 73 69 7A 65 29 3B 0D 0A 20 20 20 20 20 20 69 psize);.. i
00F980: 66 28 68 69 74 73 3D 3D 30 29 20 7B 0D 0A 20 20 f(hits==0) {..
00F990: 20 20 20 20 20 20 68 69 74 73 3D 31 3B 0D 0A 20 hits=1;..
00F9A0: 20 20 20 20 20 20 20 64 72 6F 70 6C 61 62 3D 67 droplab=g
00F9B0: 65 74 6C 61 62 65 6C 28 29 3B 0D 0A 20 20 20 20 etlabel();..
00F9C0: 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 64 72 6F }.. dro
00F9D0: 70 6F 75 74 28 6B 2C 20 74 65 73 74 66 75 6E 63 pout(k, testfunc
00F9E0: 2C 20 64 72 6F 70 6C 61 62 2C 20 6C 76 61 6C 29 , droplab, lval)
00F9F0: 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 ;.. }..
00FA00: 65 6C 73 65 20 69 66 28 68 69 74 73 29 20 7B 0D else if(hits) {.
00FA10: 0A 20 20 20 20 20 20 64 72 6F 70 6F 75 74 28 6B . dropout(k
00FA20: 2C 20 74 65 73 74 66 75 6E 63 2C 20 64 72 6F 70 , testfunc, drop
00FA30: 6C 61 62 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 20 lab, lval);..
00FA40: 20 20 20 63 6F 6E 73 74 28 65 6E 64 76 61 6C 29 const(endval)
00FA50: 3B 0D 0A 20 20 20 20 20 20 6A 75 6D 70 28 65 6E ;.. jump(en
00FA60: 64 6C 61 62 3D 67 65 74 6C 61 62 65 6C 28 29 29 dlab=getlabel())
00FA70: 3B 0D 0A 20 20 20 20 20 20 70 6F 73 74 6C 61 62 ;.. postlab
00FA80: 65 6C 28 64 72 6F 70 6C 61 62 29 3B 0D 0A 20 20 el(droplab);..
00FA90: 20 20 20 20 63 6F 6E 73 74 28 64 72 6F 70 76 61 const(dropva
00FAA0: 6C 29 3B 0D 0A 20 20 20 20 20 20 70 6F 73 74 6C l);.. postl
00FAB0: 61 62 65 6C 28 65 6E 64 6C 61 62 29 3B 0D 0A 20 abel(endlab);..
00FAC0: 20 20 20 20 20 6C 76 61 6C 5B 31 5D 3D 6C 76 61 lval[1]=lva
00FAD0: 6C 5B 32 5D 3D 6C 76 61 6C 5B 33 5D 3D 6C 76 61 l[2]=lval[3]=lva
00FAE0: 6C 5B 34 5D 3D 6C 76 61 6C 5B 37 5D 3D 30 3B 0D l[4]=lval[7]=0;.
00FAF0: 0A 20 20 20 20 20 20 72 65 74 75 72 6E 20 30 3B . return 0;
00FB00: 20 20 20 20 20 20 73 6D 61 72 74 70 6F 70 28 6C smartpop(l
00FB10: 76 61 6C 32 2C 20 73 74 61 72 74 29 3B 0D 0A 20 val2, start);..
00FB20: 20 20 20 20 20 69 66 28 64 62 6C 74 65 73 74 28 if(dbltest(
00FB30: 6F 70 65 72 2C 20 6C 76 61 6C 2C 6C 76 61 6C 32 oper, lval,lval2
00FB40: 29 29 20 64 6F 75 62 6C 65 72 65 67 28 29 3B 0D )) doublereg();.
00FB50: 0A 20 20 20 20 20 20 69 66 28 64 62 6C 74 65 73 . if(dbltes
00FB60: 74 28 6F 70 65 72 2C 20 6C 76 61 6C 32 2C 6C 76 t(oper, lval2,lv
00FB70: 61 6C 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 al)) {..
00FB80: 73 77 61 70 28 29 3B 0D 0A 20 20 20 20 20 20 20 swap();..
00FB90: 20 64 6F 75 62 6C 65 72 65 67 28 29 3B 0D 0A 20 doublereg();..
00FBA0: 20 20 20 20 20 20 20 69 66 28 6F 70 65 72 3D 3D if(oper==
00FBB0: 66 66 73 75 62 29 20 73 77 61 70 28 29 3B 0D 0A ffsub) swap();..
00FBC0: 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 }..
00FBD0: 20 7D 0D 0A 20 20 20 20 7D 0D 0A 20 20 69 66 28 }.. }.. if(
00FBE0: 6F 70 65 72 29 20 7B 0D 0A 20 20 20 20 69 66 28 oper) {.. if(
00FBF0: 6C 76 61 6C 5B 33 5D 3D 6C 76 61 6C 5B 33 5D 26 lval[3]=lval[3]&
00FC00: 6C 76 61 6C 32 5B 33 5D 29 20 7B 0D 0A 20 20 20 lval2[3]) {..
00FC10: 20 20 20 6C 76 61 6C 5B 34 5D 3D 63 61 6C 63 28 lval[4]=calc(
00FC20: 6C 76 61 6C 5B 34 5D 2C 20 6F 70 65 72 2C 20 6C lval[4], oper, l
00FC30: 76 61 6C 32 5B 34 5D 29 3B 0D 0A 20 20 20 20 20 val2[4]);..
00FC40: 20 63 6C 65 61 72 73 74 61 67 65 28 62 65 66 6F clearstage(befo
00FC50: 72 65 2C 20 30 29 3B 20 20 0D 0A 20 20 20 20 20 re, 0); ..
00FC60: 20 6C 76 61 6C 5B 35 5D 3D 30 3B 0D 0A 20 20 20 lval[5]=0;..
00FC70: 20 20 20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 7B }.. else {
00FC80: 0D 0A 20 20 20 20 20 20 69 66 28 28 6C 76 61 6C .. if((lval
00FC90: 5B 32 5D 3D 3D 30 29 26 28 6C 76 61 6C 32 5B 32 [2]==0)&(lval2[2
00FCA0: 5D 3D 3D 30 29 29 20 7B 0D 0A 20 20 20 20 20 20 ]==0)) {..
00FCB0: 20 20 28 2A 6F 70 65 72 29 28 29 3B 0D 0A 20 20 (*oper)();..
00FCC0: 20 20 20 20 20 20 6C 76 61 6C 5B 36 5D 3D 6F 70 lval[6]=op
00FCD0: 65 72 3B 09 09 09 2F 2A 20 69 64 65 6E 74 69 66 er;.../* identif
00FCE0: 79 20 74 68 65 20 6F 70 65 72 61 74 6F 72 20 2A y the operator *
00FCF0: 2F 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 /.. }..
00FD00: 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 65 .. }.. e
00FD10: 6C 73 65 20 72 65 74 75 72 6E 20 6B 3B 0D 0A 20 lse return k;..
00FD20: 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D }.. }..../*.
00FD30: 0A 2A 2A 20 74 65 73 74 20 66 6F 72 20 65 61 72 .** test for ear
00FD40: 6C 79 20 64 72 6F 70 6F 75 74 20 66 72 6F 6D 20 ly dropout from
00FD50: 7C 7C 20 6F 72 20 26 26 20 65 76 61 6C 75 61 74 || or && evaluat
00FD60: 69 6F 6E 73 0D 0A 2A 2F 0D 0A 64 72 6F 70 6F 75 ions..*/..dropou
00FD70: 74 28 6B 2C 20 74 65 73 74 66 75 6E 63 2C 20 65 t(k, testfunc, e
00FD80: 78 69 74 31 2C 20 6C 76 61 6C 29 0D 0A 20 20 69 xit1, lval).. i
00FD90: 6E 74 20 6B 2C 20 28 2A 74 65 73 74 66 75 6E 63 nt k, (*testfunc
00FDA0: 29 28 29 2C 20 65 78 69 74 31 2C 20 6C 76 61 6C )(), exit1, lval
00FDB0: 5B 5D 3B 20 7B 0D 0A 20 20 69 66 28 6B 29 20 72 []; {.. if(k) r
00FDC0: 76 61 6C 75 65 28 6C 76 61 6C 29 3B 0D 0A 20 20 value(lval);..
00FDD0: 65 6C 73 65 20 69 66 28 6C 76 61 6C 5B 33 5D 29 else if(lval[3])
00FDE0: 20 63 6F 6E 73 74 28 6C 76 61 6C 5B 34 5D 29 3B const(lval[4]);
00FDF0: 0D 0A 20 20 28 2A 74 65 73 74 66 75 6E 63 29 28 .. (*testfunc)(
00FE00: 65 78 69 74 31 29 3B 09 09 2F 2A 20 6A 75 6D 70 exit1);../* jump
00FE10: 73 20 6F 6E 20 66 61 6C 73 65 20 2A 2F 0D 0A 20 s on false */..
00FE20: 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 70 6C 75 }..../*..** plu
00FE30: 6E 67 65 20 74 6F 20 61 20 6C 6F 77 65 72 20 6C nge to a lower l
00FE40: 65 76 65 6C 0D 0A 2A 2F 0D 0A 70 6C 6E 67 65 28 evel..*/..plnge(
00FE50: 6F 70 73 74 72 2C 20 6F 70 6F 66 66 2C 20 68 69 opstr, opoff, hi
00FE60: 65 72 2C 20 6C 76 61 6C 29 0D 0A 20 20 63 68 61 er, lval).. cha
00FE70: 72 20 2A 6F 70 73 74 72 3B 0D 0A 20 20 69 6E 74 r *opstr;.. int
00FE80: 20 6F 70 6F 66 66 2C 20 28 2A 68 69 65 72 29 28 opoff, (*hier)(
00FE90: 29 2C 20 6C 76 61 6C 5B 5D 3B 20 7B 0D 0A 20 20 ), lval[]; {..
00FEA0: 69 6E 74 20 6B 2C 20 6C 76 61 6C 32 5B 38 5D 3B int k, lval2[8];
00FEB0: 0D 0A 20 20 6B 3D 70 6C 6E 67 65 31 28 68 69 65 .. k=plnge1(hie
00FEC0: 72 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 69 66 28 r, lval);.. if(
00FED0: 6E 65 78 74 6F 70 28 6F 70 73 74 72 29 3D 3D 30 nextop(opstr)==0
00FEE0: 29 20 72 65 74 75 72 6E 20 6B 3B 0D 0A 20 20 69 ) return k;.. i
00FEF0: 66 28 6B 29 20 72 76 61 6C 75 65 28 6C 76 61 6C f(k) rvalue(lval
00FF00: 20 20 20 20 65 6C 73 65 20 7B 0D 0A 20 20 20 20 else {..
00FF10: 20 20 20 20 28 2A 6F 70 65 72 32 29 28 29 3B 0D (*oper2)();.
00FF20: 0A 20 20 20 20 20 20 20 20 6C 76 61 6C 5B 36 5D . lval[6]
00FF30: 3D 6F 70 65 72 32 3B 09 09 09 2F 2A 20 69 64 65 =oper2;.../* ide
00FF40: 6E 74 69 66 79 20 74 68 65 20 6F 70 65 72 61 74 ntify the operat
00FF50: 6F 72 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 7D or */.. }
00FF60: 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 69 .. }.. i
00FF70: 66 28 6F 70 65 72 3D 3D 66 66 73 75 62 29 20 7B f(oper==ffsub) {
00FF80: 0D 0A 20 20 20 20 20 20 69 66 28 28 6C 76 61 6C .. if((lval
00FF90: 5B 32 5D 3D 3D 43 49 4E 54 29 26 28 6C 76 61 6C [2]==CINT)&(lval
00FFA0: 32 5B 32 5D 3D 3D 43 49 4E 54 29 29 20 7B 0D 0A 2[2]==CINT)) {..
00FFB0: 20 20 20 20 20 20 20 20 73 77 61 70 28 29 3B 0D swap();.
00FFC0: 0A 20 20 20 20 20 20 20 20 63 6F 6E 73 74 28 31 . const(1
00FFD0: 29 3B 0D 0A 20 20 20 20 20 20 20 20 66 66 61 73 );.. ffas
00FFE0: 72 28 29 3B 09 09 09 2F 2A 2A 20 64 69 76 20 62 r();.../** div b
00FFF0: 79 20 32 20 2A 2A 2F 0D 0A 20 20 20 20 20 20 20 y 2 **/..
010000: 20 7D 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 }.. }..
010010: 20 69 66 28 28 6F 70 65 72 3D 3D 66 66 73 75 62 if((oper==ffsub
010020: 29 7C 28 6F 70 65 72 3D 3D 66 66 61 64 64 29 29 )|(oper==ffadd))
010030: 20 72 65 73 75 6C 74 28 6C 76 61 6C 2C 20 6C 76 result(lval, lv
010040: 61 6C 32 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 al2);.. }..
010050: 7D 0D 0A 0D 0A 63 61 6C 63 28 6C 65 66 74 2C 20 }....calc(left,
010060: 6F 70 65 72 2C 20 72 69 67 68 74 29 20 69 6E 74 oper, right) int
010070: 20 6C 65 66 74 2C 20 28 2A 6F 70 65 72 29 28 29 left, (*oper)()
010080: 2C 20 72 69 67 68 74 3B 20 7B 0D 0A 20 20 20 20 , right; {..
010090: 20 20 20 69 66 28 6F 70 65 72 20 3D 3D 20 20 66 if(oper == f
0100A0: 66 6F 72 29 20 72 65 74 75 72 6E 20 28 6C 65 66 for) return (lef
0100B0: 74 20 20 7C 20 20 72 69 67 68 74 29 3B 0D 0A 20 t | right);..
0100C0: 20 65 6C 73 65 20 69 66 28 6F 70 65 72 20 3D 3D else if(oper ==
0100D0: 20 66 66 78 6F 72 29 20 72 65 74 75 72 6E 20 28 ffxor) return (
0100E0: 6C 65 66 74 20 20 5E 20 20 72 69 67 68 74 29 3B left ^ right);
0100F0: 0D 0A 20 20 65 6C 73 65 20 69 66 28 6F 70 65 72 .. else if(oper
010100: 29 3B 0D 0A 20 20 77 68 69 6C 65 28 31 29 20 7B );.. while(1) {
010110: 0D 0A 20 20 20 20 69 66 28 6E 65 78 74 6F 70 28 .. if(nextop(
010120: 6F 70 73 74 72 29 29 20 7B 0D 0A 20 20 20 20 20 opstr)) {..
010130: 20 62 75 6D 70 28 6F 70 73 69 7A 65 29 3B 0D 0A bump(opsize);..
010140: 20 20 20 20 20 20 6F 70 69 6E 64 65 78 3D 6F 70 opindex=op
010150: 69 6E 64 65 78 2B 6F 70 6F 66 66 3B 0D 0A 20 20 index+opoff;..
010160: 20 20 20 20 70 6C 6E 67 65 32 28 6F 70 5B 6F 70 plnge2(op[op
010170: 69 6E 64 65 78 5D 2C 20 6F 70 32 5B 6F 70 69 6E index], op2[opin
010180: 64 65 78 5D 2C 20 68 69 65 72 2C 20 6C 76 61 6C dex], hier, lval
010190: 2C 20 6C 76 61 6C 32 29 3B 0D 0A 20 20 20 20 20 , lval2);..
0101A0: 20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 72 65 74 }.. else ret
0101B0: 75 72 6E 20 30 3B 0D 0A 20 20 20 20 7D 0D 0A 20 urn 0;.. }..
0101C0: 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 75 6E 61 }..../*..** una
0101D0: 72 79 20 70 6C 75 6E 67 65 20 74 6F 20 6C 6F 77 ry plunge to low
0101E0: 65 72 20 6C 65 76 65 6C 0D 0A 2A 2F 0D 0A 70 6C er level..*/..pl
0101F0: 6E 67 65 31 28 68 69 65 72 2C 20 6C 76 61 6C 29 nge1(hier, lval)
010200: 20 69 6E 74 20 28 2A 68 69 65 72 29 28 29 2C 20 int (*hier)(),
010210: 6C 76 61 6C 5B 5D 3B 20 7B 0D 0A 20 20 63 68 61 lval[]; {.. cha
010220: 72 20 2A 62 65 66 6F 72 65 2C 20 2A 73 74 61 72 r *before, *star
010230: 74 3B 0D 0A 20 20 69 6E 74 20 6B 3B 0D 0A 20 20 t;.. int k;..
010240: 73 65 74 73 74 61 67 65 28 26 62 65 66 6F 72 65 setstage(&before
010250: 2C 20 26 73 74 61 72 74 29 3B 0D 0A 20 20 6B 3D , &start);.. k=
010260: 28 2A 68 69 65 72 29 28 6C 76 61 6C 29 3B 0D 0A (*hier)(lval);..
010270: 20 20 69 66 28 6C 76 61 6C 5B 33 5D 29 20 63 6C if(lval[3]) cl
010280: 65 61 72 73 74 61 67 65 28 62 65 66 6F 72 65 2C earstage(before,
010290: 30 29 3B 09 2F 2A 20 6C 6F 61 64 20 63 6F 6E 73 0);./* load cons
0102A0: 74 61 6E 74 20 6C 61 74 65 72 20 2A 2F 0D 0A 20 tant later */..
0102B0: 20 72 65 74 75 72 6E 20 6B 3B 0D 0A 20 20 7D 0D return k;.. }.
0102C0: 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 62 69 6E 61 72 79 .../*..** binary
0102D0: 20 70 6C 75 6E 67 65 20 74 6F 20 6C 6F 77 65 72 plunge to lower
0102E0: 20 6C 65 76 65 6C 0D 0A 2A 2F 0D 0A 70 6C 6E 67 level..*/..plng
0102F0: 65 32 28 6F 70 65 72 2C 20 6F 70 65 72 32 2C 20 e2(oper, oper2,
010300: 20 3D 3D 20 66 66 61 6E 64 29 20 72 65 74 75 72 == ffand) retur
010310: 6E 20 28 6C 65 66 74 20 20 26 20 20 72 69 67 68 n (left & righ
010320: 74 29 3B 0D 0A 20 20 65 6C 73 65 20 69 66 28 6F t);.. else if(o
010330: 70 65 72 20 3D 3D 20 20 66 66 65 71 29 20 72 65 per == ffeq) re
010340: 74 75 72 6E 20 28 6C 65 66 74 20 20 3D 3D 20 72 turn (left == r
010350: 69 67 68 74 29 3B 0D 0A 20 20 65 6C 73 65 20 69 ight);.. else i
010360: 66 28 6F 70 65 72 20 3D 3D 20 20 66 66 6E 65 29 f(oper == ffne)
010370: 20 72 65 74 75 72 6E 20 28 6C 65 66 74 20 20 21 return (left !
010380: 3D 20 72 69 67 68 74 29 3B 0D 0A 20 20 65 6C 73 = right);.. els
010390: 65 20 69 66 28 6F 70 65 72 20 3D 3D 20 20 66 66 e if(oper == ff
0103A0: 6C 65 29 20 72 65 74 75 72 6E 20 28 6C 65 66 74 le) return (left
0103B0: 20 20 3C 3D 20 72 69 67 68 74 29 3B 0D 0A 20 20 <= right);..
0103C0: 65 6C 73 65 20 69 66 28 6F 70 65 72 20 3D 3D 20 else if(oper ==
0103D0: 20 66 66 67 65 29 20 72 65 74 75 72 6E 20 28 6C ffge) return (l
0103E0: 65 66 74 20 20 3E 3D 20 72 69 67 68 74 29 3B 0D eft >= right);.
0103F0: 0A 20 20 65 6C 73 65 20 69 66 28 6F 70 65 72 20 . else if(oper
010400: 3D 3D 20 20 66 66 6C 74 29 20 72 65 74 75 72 6E == fflt) return
010410: 20 28 6C 65 66 74 20 20 3C 20 20 72 69 67 68 74 (left < right
010420: 29 3B 0D 0A 20 20 65 6C 73 65 20 69 66 28 6F 70 );.. else if(op
010430: 65 72 20 3D 3D 20 20 66 66 67 74 29 20 72 65 74 er == ffgt) ret
010440: 75 72 6E 20 28 6C 65 66 74 20 20 3E 20 20 72 69 urn (left > ri
010450: 67 68 74 29 3B 0D 0A 20 20 65 6C 73 65 20 69 66 ght);.. else if
010460: 28 6F 70 65 72 20 3D 3D 20 66 66 61 73 72 29 20 (oper == ffasr)
010470: 72 65 74 75 72 6E 20 28 6C 65 66 74 20 20 3E 3E return (left >>
010480: 20 72 69 67 68 74 29 3B 0D 0A 20 20 65 6C 73 65 right);.. else
010490: 20 69 66 28 6F 70 65 72 20 3D 3D 20 66 66 61 73 if(oper == ffas
0104A0: 6C 29 20 72 65 74 75 72 6E 20 28 6C 65 66 74 20 l) return (left
0104B0: 20 3C 3C 20 72 69 67 68 74 29 3B 0D 0A 20 20 65 << right);.. e
0104C0: 6C 73 65 20 69 66 28 6F 70 65 72 20 3D 3D 20 66 lse if(oper == f
0104D0: 66 61 64 64 29 20 72 65 74 75 72 6E 20 28 6C 65 fadd) return (le
0104E0: 66 74 20 20 2B 20 20 72 69 67 68 74 29 3B 0D 0A ft + right);..
0104F0: 20 20 65 6C 73 65 20 69 66 28 6F 70 65 72 20 3D else if(oper =
010500: 68 69 65 72 2C 20 6C 76 61 6C 2C 20 6C 76 61 6C hier, lval, lval
010510: 32 29 0D 0A 20 20 69 6E 74 20 28 2A 6F 70 65 72 2).. int (*oper
010520: 29 28 29 2C 28 2A 6F 70 65 72 32 29 28 29 2C 28 )(),(*oper2)(),(
010530: 2A 68 69 65 72 29 28 29 2C 6C 76 61 6C 5B 5D 2C *hier)(),lval[],
010540: 6C 76 61 6C 32 5B 5D 3B 20 7B 0D 0A 20 20 63 68 lval2[]; {.. ch
010550: 61 72 20 2A 62 65 66 6F 72 65 2C 20 2A 73 74 61 ar *before, *sta
010560: 72 74 3B 0D 0A 20 20 73 65 74 73 74 61 67 65 28 rt;.. setstage(
010570: 26 62 65 66 6F 72 65 2C 20 26 73 74 61 72 74 29 &before, &start)
010580: 3B 0D 0A 20 20 6C 76 61 6C 5B 35 5D 3D 31 3B 09 ;.. lval[5]=1;.
010590: 09 2F 2A 20 66 6C 61 67 20 73 65 63 6F 6E 64 61 ./* flag seconda
0105A0: 72 79 20 72 65 67 69 73 74 65 72 20 75 73 65 64 ry register used
0105B0: 20 2A 2F 0D 0A 20 20 6C 76 61 6C 5B 37 5D 3D 30 */.. lval[7]=0
0105C0: 3B 09 09 2F 2A 20 66 6C 61 67 20 61 73 20 6E 6F ;../* flag as no
0105D0: 74 20 22 2E 2E 2E 20 6F 70 65 72 20 30 22 20 73 t "... oper 0" s
0105E0: 79 6E 74 61 78 20 2A 2F 0D 0A 20 20 69 66 28 6C yntax */.. if(l
0105F0: 76 61 6C 5B 33 5D 29 20 7B 09 09 2F 2A 20 63 6F val[3]) {../* co
010600: 6E 73 74 61 6E 74 20 6F 6E 20 6C 65 66 74 20 73 nstant on left s
010610: 69 64 65 20 6E 6F 74 20 79 65 74 20 6C 6F 61 64 ide not yet load
010620: 65 64 20 2A 2F 0D 0A 20 20 20 20 69 66 28 70 6C ed */.. if(pl
010630: 6E 67 65 31 28 68 69 65 72 2C 20 6C 76 61 6C 32 nge1(hier, lval2
010640: 29 29 20 72 76 61 6C 75 65 28 6C 76 61 6C 32 29 )) rvalue(lval2)
010650: 3B 0D 0A 20 20 20 20 69 66 28 6C 76 61 6C 5B 34 ;.. if(lval[4
010660: 5D 3D 3D 30 29 20 6C 76 61 6C 5B 37 5D 3D 73 74 ]==0) lval[7]=st
010670: 61 67 65 6E 65 78 74 3B 0D 0A 20 20 20 20 63 6F agenext;.. co
010680: 6E 73 74 32 28 6C 76 61 6C 5B 34 5D 3C 3C 64 62 nst2(lval[4]<<db
010690: 6C 74 65 73 74 28 6F 70 65 72 2C 20 6C 76 61 6C ltest(oper, lval
0106A0: 32 2C 20 6C 76 61 6C 29 29 3B 0D 0A 20 20 20 20 2, lval));..
0106B0: 7D 0D 0A 20 20 65 6C 73 65 20 7B 09 09 2F 2A 20 }.. else {../*
0106C0: 6E 6F 6E 2D 63 6F 6E 73 74 61 6E 74 20 6F 6E 20 non-constant on
0106D0: 6C 65 66 74 20 73 69 64 65 20 2A 2F 0D 0A 20 20 left side */..
0106E0: 20 20 70 75 73 68 28 29 3B 0D 0A 20 20 20 20 69 push();.. i
0106F0: 66 28 70 6C 6E 67 65 31 28 68 69 65 72 2C 20 6C f(plnge1(hier, l
010700: 3D 20 66 66 73 75 62 29 20 72 65 74 75 72 6E 20 = ffsub) return
010710: 28 6C 65 66 74 20 20 2D 20 20 72 69 67 68 74 29 (left - right)
010720: 3B 0D 0A 20 20 65 6C 73 65 20 69 66 28 6F 70 65 ;.. else if(ope
010730: 72 20 3D 3D 66 66 6D 75 6C 74 29 20 72 65 74 75 r ==ffmult) retu
010740: 72 6E 20 28 6C 65 66 74 20 20 2A 20 20 72 69 67 rn (left * rig
010750: 68 74 29 3B 0D 0A 20 20 65 6C 73 65 20 69 66 28 ht);.. else if(
010760: 6F 70 65 72 20 3D 3D 20 66 66 64 69 76 29 20 72 oper == ffdiv) r
010770: 65 74 75 72 6E 20 28 6C 65 66 74 20 20 2F 20 20 eturn (left /
010780: 72 69 67 68 74 29 3B 0D 0A 20 20 65 6C 73 65 20 right);.. else
010790: 69 66 28 6F 70 65 72 20 3D 3D 20 66 66 6D 6F 64 if(oper == ffmod
0107A0: 29 20 72 65 74 75 72 6E 20 28 6C 65 66 74 20 20 ) return (left
0107B0: 25 20 20 72 69 67 68 74 29 3B 0D 0A 20 20 65 6C % right);.. el
0107C0: 73 65 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 se return 0;..
0107D0: 7D 0D 0A 0D 0A 65 78 70 72 65 73 73 69 6F 6E 28 }....expression(
0107E0: 63 6F 6E 73 74 2C 20 76 61 6C 29 20 69 6E 74 20 const, val) int
0107F0: 2A 63 6F 6E 73 74 2C 20 2A 76 61 6C 3B 20 20 7B *const, *val; {
010800: 0D 0A 20 20 69 6E 74 20 6C 76 61 6C 5B 38 5D 3B .. int lval[8];
010810: 0D 0A 20 20 69 66 28 68 69 65 72 31 28 6C 76 61 .. if(hier1(lva
010820: 6C 29 29 20 72 76 61 6C 75 65 28 6C 76 61 6C 29 l)) rvalue(lval)
010830: 3B 0D 0A 20 20 69 66 28 6C 76 61 6C 5B 33 5D 29 ;.. if(lval[3])
010840: 20 7B 0D 0A 20 20 20 20 2A 63 6F 6E 73 74 3D 31 {.. *const=1
010850: 3B 0D 0A 20 20 20 20 2A 76 61 6C 3D 6C 76 61 6C ;.. *val=lval
010860: 5B 34 5D 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 65 [4];.. }.. e
010870: 6C 73 65 20 2A 63 6F 6E 73 74 3D 30 3B 0D 0A 20 lse *const=0;..
010880: 20 7D 0D 0A 0D 0A 68 69 65 72 31 28 6C 76 61 6C }....hier1(lval
010890: 29 20 20 69 6E 74 20 6C 76 61 6C 5B 5D 3B 20 20 ) int lval[];
0108A0: 7B 0D 0A 20 20 69 6E 74 20 6B 2C 6C 76 61 6C 32 {.. int k,lval2
0108B0: 5B 38 5D 2C 20 6C 76 61 6C 33 5B 32 5D 2C 20 6F [8], lval3[2], o
0108C0: 70 65 72 3B 0D 0A 20 20 6B 3D 70 6C 6E 67 65 31 per;.. k=plnge1
0108D0: 28 68 69 65 72 33 2C 20 6C 76 61 6C 29 3B 0D 0A (hier3, lval);..
0108E0: 20 20 69 66 28 6C 76 61 6C 5B 33 5D 29 20 63 6F if(lval[3]) co
0108F0: 6E 73 74 28 6C 76 61 6C 5B 34 5D 29 3B 0D 0A 20 nst(lval[4]);..
010900: 76 61 6C 32 29 29 20 72 76 61 6C 75 65 28 6C 76 val2)) rvalue(lv
010910: 61 6C 32 29 3B 0D 0A 20 20 20 20 69 66 28 6C 76 al2);.. if(lv
010920: 61 6C 32 5B 33 5D 29 20 7B 09 2F 2A 20 63 6F 6E al2[3]) {./* con
010930: 73 74 61 6E 74 20 6F 6E 20 72 69 67 68 74 20 73 stant on right s
010940: 69 64 65 20 2A 2F 0D 0A 20 20 20 20 20 20 69 66 ide */.. if
010950: 28 6C 76 61 6C 32 5B 34 5D 3D 3D 30 29 20 6C 76 (lval2[4]==0) lv
010960: 61 6C 5B 37 5D 3D 73 74 61 72 74 3B 0D 0A 20 20 al[7]=start;..
010970: 20 20 20 20 69 66 28 6F 70 65 72 3D 3D 66 66 61 if(oper==ffa
010980: 64 64 29 20 7B 09 2F 2A 20 6D 61 79 20 74 65 73 dd) {./* may tes
010990: 74 20 6F 74 68 65 72 20 63 6F 6D 6D 75 74 61 74 t other commutat
0109A0: 69 76 65 20 6F 70 65 72 61 74 6F 72 73 20 2A 2F ive operators */
0109B0: 0D 0A 20 20 20 20 20 20 20 20 63 73 70 3D 63 73 .. csp=cs
0109C0: 70 2B 32 3B 0D 0A 20 20 20 20 20 20 20 20 63 6C p+2;.. cl
0109D0: 65 61 72 73 74 61 67 65 28 62 65 66 6F 72 65 2C earstage(before,
0109E0: 20 30 29 3B 0D 0A 20 20 20 20 20 20 20 20 63 6F 0);.. co
0109F0: 6E 73 74 32 28 6C 76 61 6C 32 5B 34 5D 3C 3C 64 nst2(lval2[4]<<d
010A00: 62 6C 74 65 73 74 28 6F 70 65 72 2C 20 6C 76 61 bltest(oper, lva
010A10: 6C 2C 20 6C 76 61 6C 32 29 29 3B 0D 0A 09 09 09 l, lval2));.....
010A20: 2F 2A 20 6C 6F 61 64 20 73 65 63 6F 6E 64 61 72 /* load secondar
010A30: 79 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 7D 0D y */.. }.
010A40: 0A 20 20 20 20 20 20 65 6C 73 65 20 7B 0D 0A 20 . else {..
010A50: 20 20 20 20 20 20 20 63 6F 6E 73 74 28 6C 76 61 const(lva
010A60: 6C 32 5B 34 5D 3C 3C 64 62 6C 74 65 73 74 28 6F l2[4]<<dbltest(o
010A70: 70 65 72 2C 20 6C 76 61 6C 2C 20 6C 76 61 6C 32 per, lval, lval2
010A80: 29 29 3B 0D 0A 09 09 09 2F 2A 20 6C 6F 61 64 20 ));...../* load
010A90: 70 72 69 6D 61 72 79 20 2A 2F 0D 0A 20 20 20 20 primary */..
010AA0: 20 20 20 20 73 6D 61 72 74 70 6F 70 28 6C 76 61 smartpop(lva
010AB0: 6C 32 2C 20 73 74 61 72 74 29 3B 0D 0A 20 20 20 l2, start);..
010AC0: 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 7D 0D }.. }.
010AD0: 0A 20 20 20 20 65 6C 73 65 20 7B 09 09 2F 2A 20 . else {../*
010AE0: 6E 6F 6E 2D 63 6F 6E 73 74 61 6E 74 73 20 6F 6E non-constants on
010AF0: 20 62 6F 74 68 20 73 69 64 65 73 20 2A 2F 0D 0A both sides */..
010B00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
010B10: 0E 00 01 00 02 09 52 E5 0E 00 41 02 00 00 00 02 ......R...A.....
010B20: 0E 00 46 02 00 00 00 02 0E 00 42 02 00 00 00 02 ..F.......B.....
010B30: 0E 00 47 02 00 00 00 02 0E 00 43 02 00 00 00 02 ..G.......C.....
010B40: 0E 00 48 02 00 00 00 02 0E 00 44 02 00 00 00 02 ..H.......D.....
010B50: 0E 00 49 02 00 00 00 02 0E 00 45 02 00 00 00 02 ..I.......E.....
010B60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010B70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010B80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010B90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010BA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010BB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010BC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010BD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010BE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010BF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010C00: 20 20 20 20 20 20 69 66 28 6D 61 74 63 68 28 22 if(match("
010C10: 7C 3D 22 29 29 20 20 6F 70 65 72 3D 66 66 6F 72 |=")) oper=ffor
010C20: 3B 0D 0A 20 20 65 6C 73 65 20 69 66 28 6D 61 74 ;.. else if(mat
010C30: 63 68 28 22 5E 3D 22 29 29 20 20 6F 70 65 72 3D ch("^=")) oper=
010C40: 66 66 78 6F 72 3B 0D 0A 20 20 65 6C 73 65 20 69 ffxor;.. else i
010C50: 66 28 6D 61 74 63 68 28 22 26 3D 22 29 29 20 20 f(match("&="))
010C60: 6F 70 65 72 3D 66 66 61 6E 64 3B 0D 0A 20 20 65 oper=ffand;.. e
010C70: 6C 73 65 20 69 66 28 6D 61 74 63 68 28 22 2B 3D lse if(match("+=
010C80: 22 29 29 20 20 6F 70 65 72 3D 66 66 61 64 64 3B ")) oper=ffadd;
010C90: 0D 0A 20 20 65 6C 73 65 20 69 66 28 6D 61 74 63 .. else if(matc
010CA0: 68 28 22 2D 3D 22 29 29 20 20 6F 70 65 72 3D 66 h("-=")) oper=f
010CB0: 66 73 75 62 3B 0D 0A 20 20 65 6C 73 65 20 69 66 fsub;.. else if
010CC0: 28 6D 61 74 63 68 28 22 2A 3D 22 29 29 20 20 6F (match("*=")) o
010CD0: 70 65 72 3D 66 66 6D 75 6C 74 3B 0D 0A 20 20 65 per=ffmult;.. e
010CE0: 6C 73 65 20 69 66 28 6D 61 74 63 68 28 22 2F 3D lse if(match("/=
010CF0: 22 29 29 20 20 6F 70 65 72 3D 66 66 64 69 76 3B ")) oper=ffdiv;
010D00: 0D 0A 20 20 65 6C 73 65 20 69 66 28 6D 61 74 63 .. else if(matc
010D10: 68 28 22 25 3D 22 29 29 20 20 6F 70 65 72 3D 66 h("%=")) oper=f
010D20: 66 6D 6F 64 3B 0D 0A 20 20 65 6C 73 65 20 69 66 fmod;.. else if
010D30: 28 6D 61 74 63 68 28 22 3E 3E 3D 22 29 29 20 6F (match(">>=")) o
010D40: 70 65 72 3D 66 66 61 73 72 3B 0D 0A 20 20 65 6C per=ffasr;.. el
010D50: 73 65 20 69 66 28 6D 61 74 63 68 28 22 3C 3C 3D se if(match("<<=
010D60: 22 29 29 20 6F 70 65 72 3D 66 66 61 73 6C 3B 0D ")) oper=ffasl;.
010D70: 0A 20 20 65 6C 73 65 20 69 66 28 6D 61 74 63 68 . else if(match
010D80: 28 22 3D 22 29 29 20 20 20 6F 70 65 72 3D 30 3B ("=")) oper=0;
010D90: 0D 0A 20 20 65 6C 73 65 20 72 65 74 75 72 6E 20 .. else return
010DA0: 6B 3B 0D 0A 20 20 69 66 28 6B 3D 3D 30 29 20 7B k;.. if(k==0) {
010DB0: 0D 0A 20 20 20 20 6E 65 65 64 6C 76 61 6C 28 29 .. needlval()
010DC0: 3B 0D 0A 20 20 20 20 72 65 74 75 72 6E 20 30 3B ;.. return 0;
010DD0: 0D 0A 20 20 20 20 7D 0D 0A 20 20 6C 76 61 6C 33 .. }.. lval3
010DE0: 5B 30 5D 20 3D 20 6C 76 61 6C 5B 30 5D 3B 0D 0A [0] = lval[0];..
010DF0: 20 20 6C 76 61 6C 33 5B 31 5D 20 3D 20 6C 76 61 lval3[1] = lva
010E00: 76 61 6C 29 3B 0D 0A 20 20 20 20 69 66 28 70 74 val);.. if(pt
010E10: 72 3D 6C 76 61 6C 5B 30 5D 29 6C 76 61 6C 5B 31 r=lval[0])lval[1
010E20: 5D 3D 70 74 72 5B 54 59 50 45 5D 3B 0D 0A 20 20 ]=ptr[TYPE];..
010E30: 20 20 65 6C 73 65 20 6C 76 61 6C 5B 31 5D 3D 43 else lval[1]=C
010E40: 49 4E 54 3B 0D 0A 20 20 20 20 6C 76 61 6C 5B 32 INT;.. lval[2
010E50: 5D 3D 30 3B 09 09 2F 2A 20 66 6C 61 67 20 61 73 ]=0;../* flag as
010E60: 20 6E 6F 74 20 70 6F 69 6E 74 65 72 20 6F 72 20 not pointer or
010E70: 61 72 72 61 79 20 2A 2F 0D 0A 20 20 20 20 6C 76 array */.. lv
010E80: 61 6C 5B 33 5D 3D 30 3B 09 09 2F 2A 20 66 6C 61 al[3]=0;../* fla
010E90: 67 20 61 73 20 6E 6F 74 20 63 6F 6E 73 74 61 6E g as not constan
010EA0: 74 20 2A 2F 0D 0A 20 20 20 20 6C 76 61 6C 5B 34 t */.. lval[4
010EB0: 5D 3D 31 3B 09 09 2F 2A 20 6F 6D 69 74 20 72 76 ]=1;../* omit rv
010EC0: 61 6C 75 65 28 29 20 6F 6E 20 66 75 6E 63 20 63 alue() on func c
010ED0: 61 6C 6C 20 2A 2F 0D 0A 20 20 20 20 6C 76 61 6C all */.. lval
010EE0: 5B 37 5D 3D 30 3B 0D 0A 20 20 20 20 72 65 74 75 [7]=0;.. retu
010EF0: 72 6E 20 31 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 rn 1;.. }..
010F00: 65 6C 73 65 20 69 66 28 6D 61 74 63 68 28 22 26 else if(match("&
010F10: 22 29 29 20 7B 09 09 09 2F 2A 20 75 6E 61 72 79 ")) {.../* unary
010F20: 20 26 20 2A 2F 0D 0A 20 20 20 20 69 66 28 68 69 & */.. if(hi
010F30: 65 72 31 33 28 6C 76 61 6C 29 3D 3D 30 29 20 7B er13(lval)==0) {
010F40: 0D 0A 20 20 20 20 20 20 65 72 72 6F 72 28 22 69 .. error("i
010F50: 6C 6C 65 67 61 6C 20 61 64 64 72 65 73 73 22 29 llegal address")
010F60: 3B 0D 0A 20 20 20 20 20 20 72 65 74 75 72 6E 20 ;.. return
010F70: 30 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 0;.. }..
010F80: 20 70 74 72 3D 6C 76 61 6C 5B 30 5D 3B 0D 0A 20 ptr=lval[0];..
010F90: 20 20 20 6C 76 61 6C 5B 32 5D 3D 70 74 72 5B 54 lval[2]=ptr[T
010FA0: 59 50 45 5D 3B 0D 0A 20 20 20 20 69 66 28 6C 76 YPE];.. if(lv
010FB0: 61 6C 5B 31 5D 29 20 72 65 74 75 72 6E 20 30 3B al[1]) return 0;
010FC0: 0D 0A 09 09 09 09 09 2F 2A 20 67 6C 6F 62 61 6C ......./* global
010FD0: 20 26 20 6E 6F 6E 2D 61 72 72 61 79 20 2A 2F 0D & non-array */.
010FE0: 0A 20 20 20 20 61 64 64 72 65 73 73 28 70 74 72 . address(ptr
010FF0: 29 3B 0D 0A 20 20 20 20 6C 76 61 6C 5B 31 5D 3D );.. lval[1]=
011000: 6C 5B 31 5D 3B 0D 0A 20 20 69 66 28 6C 76 61 6C l[1];.. if(lval
011010: 5B 31 5D 29 20 7B 0D 0A 20 20 20 20 69 66 28 6F [1]) {.. if(o
011020: 70 65 72 29 20 7B 0D 0A 20 20 20 20 20 20 70 75 per) {.. pu
011030: 73 68 28 29 3B 0D 0A 20 20 20 20 20 20 72 76 61 sh();.. rva
011040: 6C 75 65 28 6C 76 61 6C 29 3B 0D 0A 20 20 20 20 lue(lval);..
011050: 20 20 7D 0D 0A 20 20 20 20 70 6C 6E 67 65 32 28 }.. plnge2(
011060: 6F 70 65 72 2C 20 6F 70 65 72 2C 20 68 69 65 72 oper, oper, hier
011070: 31 2C 20 6C 76 61 6C 2C 20 6C 76 61 6C 32 29 3B 1, lval, lval2);
011080: 0D 0A 20 20 20 20 69 66 28 6F 70 65 72 29 20 70 .. if(oper) p
011090: 6F 70 28 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 op();.. }..
0110A0: 65 6C 73 65 20 7B 0D 0A 20 20 20 20 69 66 28 6F else {.. if(o
0110B0: 70 65 72 29 20 7B 0D 0A 20 20 20 20 20 20 72 76 per) {.. rv
0110C0: 61 6C 75 65 28 6C 76 61 6C 29 3B 0D 0A 20 20 20 alue(lval);..
0110D0: 20 20 20 70 6C 6E 67 65 32 28 6F 70 65 72 2C 20 plnge2(oper,
0110E0: 6F 70 65 72 2C 20 68 69 65 72 31 2C 20 6C 76 61 oper, hier1, lva
0110F0: 6C 2C 20 6C 76 61 6C 32 29 3B 0D 0A 20 20 20 20 l, lval2);..
011100: 20 20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 7B 0D }.. else {.
011110: 0A 20 20 20 20 20 20 69 66 28 68 69 65 72 31 28 . if(hier1(
011120: 6C 76 61 6C 32 29 29 20 72 76 61 6C 75 65 28 6C lval2)) rvalue(l
011130: 76 61 6C 32 29 3B 0D 0A 20 20 20 20 20 20 6C 76 val2);.. lv
011140: 61 6C 5B 35 5D 3D 6C 76 61 6C 32 5B 35 5D 3B 0D al[5]=lval2[5];.
011150: 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 7D 0D . }.. }.
011160: 0A 20 20 73 74 6F 72 65 28 6C 76 61 6C 33 29 3B . store(lval3);
011170: 0D 0A 20 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 .. return 0;..
011180: 20 7D 0D 0A 0D 0A 68 69 65 72 33 28 6C 76 61 6C }....hier3(lval
011190: 29 20 20 69 6E 74 20 6C 76 61 6C 5B 5D 3B 20 7B ) int lval[]; {
0111A0: 0D 0A 20 20 72 65 74 75 72 6E 20 73 6B 69 6D 28 .. return skim(
0111B0: 22 7C 7C 22 2C 20 65 71 30 2C 20 31 2C 20 30 2C "||", eq0, 1, 0,
0111C0: 20 68 69 65 72 34 2C 20 6C 76 61 6C 29 3B 0D 0A hier4, lval);..
0111D0: 20 20 7D 0D 0A 0D 0A 68 69 65 72 34 28 6C 76 61 }....hier4(lva
0111E0: 6C 29 20 20 69 6E 74 20 6C 76 61 6C 5B 5D 3B 20 l) int lval[];
0111F0: 7B 0D 0A 20 20 72 65 74 75 72 6E 20 73 6B 69 6D {.. return skim
011200: 70 74 72 5B 54 59 50 45 5D 3B 0D 0A 20 20 20 20 ptr[TYPE];..
011210: 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 20 20 7D return 0;.. }
011220: 0D 0A 20 20 65 6C 73 65 20 7B 0D 0A 20 20 20 20 .. else {..
011230: 6B 3D 68 69 65 72 31 34 28 6C 76 61 6C 29 3B 0D k=hier14(lval);.
011240: 0A 20 20 20 20 69 66 28 6D 61 74 63 68 28 22 2B . if(match("+
011250: 2B 22 29 29 20 7B 09 09 09 2F 2A 20 6C 76 61 6C +")) {.../* lval
011260: 2B 2B 20 2A 2F 0D 0A 20 20 20 20 20 20 69 66 28 ++ */.. if(
011270: 6B 3D 3D 30 29 20 7B 0D 0A 20 20 20 20 20 20 20 k==0) {..
011280: 20 6E 65 65 64 6C 76 61 6C 28 29 3B 0D 0A 20 20 needlval();..
011290: 20 20 20 20 20 20 72 65 74 75 72 6E 20 30 3B 0D return 0;.
0112A0: 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 . }..
0112B0: 20 20 73 74 65 70 28 69 6E 63 2C 20 6C 76 61 6C step(inc, lval
0112C0: 29 3B 0D 0A 20 20 20 20 20 20 64 65 63 28 6C 76 );.. dec(lv
0112D0: 61 6C 5B 32 5D 3E 3E 32 29 3B 0D 0A 20 20 20 20 al[2]>>2);..
0112E0: 20 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 20 return 0;..
0112F0: 20 20 20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 69 }.. else i
011300: 66 28 6D 61 74 63 68 28 22 2D 2D 22 29 29 20 7B f(match("--")) {
011310: 09 09 2F 2A 20 6C 76 61 6C 2D 2D 20 2A 2F 0D 0A ../* lval-- */..
011320: 20 20 20 20 20 20 69 66 28 6B 3D 3D 30 29 20 7B if(k==0) {
011330: 0D 0A 20 20 20 20 20 20 20 20 6E 65 65 64 6C 76 .. needlv
011340: 61 6C 28 29 3B 0D 0A 20 20 20 20 20 20 20 20 72 al();.. r
011350: 65 74 75 72 6E 20 30 3B 0D 0A 20 20 20 20 20 20 eturn 0;..
011360: 20 20 7D 0D 0A 20 20 20 20 20 20 73 74 65 70 28 }.. step(
011370: 64 65 63 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 20 dec, lval);..
011380: 20 20 20 69 6E 63 28 6C 76 61 6C 5B 32 5D 3E 3E inc(lval[2]>>
011390: 32 29 3B 0D 0A 20 20 20 20 20 20 72 65 74 75 72 2);.. retur
0113A0: 6E 20 30 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 n 0;.. }..
0113B0: 20 20 20 65 6C 73 65 20 72 65 74 75 72 6E 20 6B else return k
0113C0: 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D ;.. }.. }...
0113D0: 0A 68 69 65 72 31 34 28 6C 76 61 6C 29 20 20 69 .hier14(lval) i
0113E0: 6E 74 20 2A 6C 76 61 6C 3B 20 7B 0D 0A 20 20 69 nt *lval; {.. i
0113F0: 6E 74 20 6B 2C 20 63 6F 6E 73 74 2C 20 76 61 6C nt k, const, val
011400: 28 22 26 26 22 2C 20 6E 65 30 2C 20 30 2C 20 31 ("&&", ne0, 0, 1
011410: 2C 20 68 69 65 72 35 2C 20 6C 76 61 6C 29 3B 0D , hier5, lval);.
011420: 0A 20 20 7D 0D 0A 0D 0A 68 69 65 72 35 28 6C 76 . }....hier5(lv
011430: 61 6C 29 20 20 69 6E 74 20 6C 76 61 6C 5B 5D 3B al) int lval[];
011440: 20 7B 0D 0A 20 20 72 65 74 75 72 6E 20 70 6C 6E {.. return pln
011450: 67 65 28 22 7C 22 2C 20 30 2C 20 68 69 65 72 36 ge("|", 0, hier6
011460: 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 7D 0D 0A 0D , lval);.. }...
011470: 0A 68 69 65 72 36 28 6C 76 61 6C 29 20 20 69 6E .hier6(lval) in
011480: 74 20 6C 76 61 6C 5B 5D 3B 20 7B 0D 0A 20 20 72 t lval[]; {.. r
011490: 65 74 75 72 6E 20 70 6C 6E 67 65 28 22 5E 22 2C eturn plnge("^",
0114A0: 20 31 2C 20 68 69 65 72 37 2C 20 6C 76 61 6C 29 1, hier7, lval)
0114B0: 3B 0D 0A 20 20 7D 0D 0A 0D 0A 68 69 65 72 37 28 ;.. }....hier7(
0114C0: 6C 76 61 6C 29 20 20 69 6E 74 20 6C 76 61 6C 5B lval) int lval[
0114D0: 5D 3B 20 7B 0D 0A 20 20 72 65 74 75 72 6E 20 70 ]; {.. return p
0114E0: 6C 6E 67 65 28 22 26 22 2C 20 32 2C 20 68 69 65 lnge("&", 2, hie
0114F0: 72 38 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 7D 0D r8, lval);.. }.
011500: 0A 0D 0A 68 69 65 72 38 28 6C 76 61 6C 29 20 20 ...hier8(lval)
011510: 69 6E 74 20 6C 76 61 6C 5B 5D 3B 20 20 7B 0D 0A int lval[]; {..
011520: 20 20 72 65 74 75 72 6E 20 70 6C 6E 67 65 28 22 return plnge("
011530: 3D 3D 20 21 3D 22 2C 20 33 2C 20 68 69 65 72 39 == !=", 3, hier9
011540: 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 7D 0D 0A 0D , lval);.. }...
011550: 0A 68 69 65 72 39 28 6C 76 61 6C 29 20 20 69 6E .hier9(lval) in
011560: 74 20 6C 76 61 6C 5B 5D 3B 20 20 7B 0D 0A 20 20 t lval[]; {..
011570: 72 65 74 75 72 6E 20 70 6C 6E 67 65 28 22 3C 3D return plnge("<=
011580: 20 3E 3D 20 3C 20 3E 22 2C 20 35 2C 20 68 69 65 >= < >", 5, hie
011590: 72 31 30 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 7D r10, lval);.. }
0115A0: 0D 0A 0D 0A 68 69 65 72 31 30 28 6C 76 61 6C 29 ....hier10(lval)
0115B0: 20 20 69 6E 74 20 6C 76 61 6C 5B 5D 3B 20 20 7B int lval[]; {
0115C0: 0D 0A 20 20 72 65 74 75 72 6E 20 70 6C 6E 67 65 .. return plnge
0115D0: 28 22 3E 3E 20 3C 3C 22 2C 20 39 2C 20 68 69 65 (">> <<", 9, hie
0115E0: 72 31 31 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 7D r11, lval);.. }
0115F0: 0D 0A 0D 0A 68 69 65 72 31 31 28 6C 76 61 6C 29 ....hier11(lval)
011600: 2C 20 6C 76 61 6C 32 5B 38 5D 3B 0D 0A 20 20 63 , lval2[8];.. c
011610: 68 61 72 20 2A 70 74 72 2C 20 2A 62 65 66 6F 72 har *ptr, *befor
011620: 65 2C 20 2A 73 74 61 72 74 3B 0D 0A 20 20 6B 3D e, *start;.. k=
011630: 70 72 69 6D 61 72 79 28 6C 76 61 6C 29 3B 0D 0A primary(lval);..
011640: 20 20 70 74 72 3D 6C 76 61 6C 5B 30 5D 3B 0D 0A ptr=lval[0];..
011650: 20 20 62 6C 61 6E 6B 73 28 29 3B 0D 0A 20 20 69 blanks();.. i
011660: 66 28 28 63 68 3D 3D 27 5B 27 29 7C 28 63 68 3D f((ch=='[')|(ch=
011670: 3D 27 28 27 29 29 20 7B 0D 0A 20 20 20 20 6C 76 ='(')) {.. lv
011680: 61 6C 5B 35 5D 3D 31 3B 09 09 09 2F 2A 20 73 65 al[5]=1;.../* se
011690: 63 6F 6E 64 61 72 79 20 72 65 67 69 73 74 65 72 condary register
0116A0: 20 77 69 6C 6C 20 62 65 20 75 73 65 64 20 2A 2F will be used */
0116B0: 0D 0A 20 20 20 20 77 68 69 6C 65 28 31 29 20 7B .. while(1) {
0116C0: 0D 0A 20 20 20 20 20 20 69 66 28 6D 61 74 63 68 .. if(match
0116D0: 28 22 5B 22 29 29 20 7B 09 09 09 2F 2A 20 5B 73 ("[")) {.../* [s
0116E0: 75 62 73 63 72 69 70 74 5D 20 2A 2F 0D 0A 20 20 ubscript] */..
0116F0: 20 20 20 20 20 20 69 66 28 70 74 72 3D 3D 30 29 if(ptr==0)
011700: 20 7B 0D 0A 20 20 20 20 20 20 20 20 20 20 65 72 {.. er
011710: 72 6F 72 28 22 63 61 6E 27 74 20 73 75 62 73 63 ror("can't subsc
011720: 72 69 70 74 22 29 3B 0D 0A 20 20 20 20 20 20 20 ript");..
011730: 20 20 20 6A 75 6E 6B 28 29 3B 0D 0A 20 20 20 20 junk();..
011740: 20 20 20 20 20 20 6E 65 65 64 74 6F 6B 65 6E 28 needtoken(
011750: 22 5D 22 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 "]");..
011760: 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 20 20 return 0;..
011770: 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 20 }..
011780: 20 65 6C 73 65 20 69 66 28 70 74 72 5B 49 44 45 else if(ptr[IDE
011790: 4E 54 5D 3D 3D 50 4F 49 4E 54 45 52 29 72 76 61 NT]==POINTER)rva
0117A0: 6C 75 65 28 6C 76 61 6C 29 3B 0D 0A 20 20 20 20 lue(lval);..
0117B0: 20 20 20 20 65 6C 73 65 20 69 66 28 70 74 72 5B else if(ptr[
0117C0: 49 44 45 4E 54 5D 21 3D 41 52 52 41 59 29 20 7B IDENT]!=ARRAY) {
0117D0: 0D 0A 20 20 20 20 20 20 20 20 20 20 65 72 72 6F .. erro
0117E0: 72 28 22 63 61 6E 27 74 20 73 75 62 73 63 72 69 r("can't subscri
0117F0: 70 74 22 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 pt");..
011800: 20 20 69 6E 74 20 6C 76 61 6C 5B 5D 3B 20 20 7B int lval[]; {
011810: 0D 0A 20 20 72 65 74 75 72 6E 20 70 6C 6E 67 65 .. return plnge
011820: 28 22 2B 20 2D 22 2C 20 31 31 2C 20 68 69 65 72 ("+ -", 11, hier
011830: 31 32 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 7D 0D 12, lval);.. }.
011840: 0A 0D 0A 68 69 65 72 31 32 28 6C 76 61 6C 29 20 ...hier12(lval)
011850: 20 69 6E 74 20 6C 76 61 6C 5B 5D 3B 20 20 7B 0D int lval[]; {.
011860: 0A 20 20 72 65 74 75 72 6E 20 70 6C 6E 67 65 28 . return plnge(
011870: 22 2A 20 2F 20 25 22 2C 20 31 33 2C 20 68 69 65 "* / %", 13, hie
011880: 72 31 33 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 7D r13, lval);.. }
011890: 0D 0A 0D 0A 3E 3E 3E 20 43 43 33 32 2E 43 20 35 ....>>> CC32.C 5
0118A0: 30 36 35 0D 0A 68 69 65 72 31 33 28 6C 76 61 6C 065..hier13(lval
0118B0: 29 20 20 69 6E 74 20 6C 76 61 6C 5B 5D 3B 20 20 ) int lval[];
0118C0: 7B 0D 0A 20 20 69 6E 74 20 6B 3B 0D 0A 20 20 63 {.. int k;.. c
0118D0: 68 61 72 20 2A 70 74 72 3B 0D 0A 20 20 69 66 28 har *ptr;.. if(
0118E0: 6D 61 74 63 68 28 22 2B 2B 22 29 29 20 7B 09 09 match("++")) {..
0118F0: 09 2F 2A 20 2B 2B 6C 76 61 6C 20 2A 2F 0D 0A 20 ./* ++lval */..
011900: 20 20 20 69 66 28 68 69 65 72 31 33 28 6C 76 61 if(hier13(lva
011910: 6C 29 3D 3D 30 29 20 7B 0D 0A 20 20 20 20 20 20 l)==0) {..
011920: 6E 65 65 64 6C 76 61 6C 28 29 3B 0D 0A 20 20 20 needlval();..
011930: 20 20 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 return 0;..
011940: 20 20 20 20 7D 0D 0A 20 20 20 20 73 74 65 70 28 }.. step(
011950: 69 6E 63 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 20 inc, lval);..
011960: 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 20 20 return 0;..
011970: 7D 0D 0A 20 20 65 6C 73 65 20 69 66 28 6D 61 74 }.. else if(mat
011980: 63 68 28 22 2D 2D 22 29 29 20 7B 09 09 2F 2A 20 ch("--")) {../*
011990: 2D 2D 6C 76 61 6C 20 2A 2F 0D 0A 20 20 20 20 69 --lval */.. i
0119A0: 66 28 68 69 65 72 31 33 28 6C 76 61 6C 29 3D 3D f(hier13(lval)==
0119B0: 30 29 20 7B 0D 0A 20 20 20 20 20 20 6E 65 65 64 0) {.. need
0119C0: 6C 76 61 6C 28 29 3B 0D 0A 20 20 20 20 20 20 72 lval();.. r
0119D0: 65 74 75 72 6E 20 30 3B 0D 0A 20 20 20 20 20 20 eturn 0;..
0119E0: 7D 0D 0A 20 20 20 20 73 74 65 70 28 64 65 63 2C }.. step(dec,
0119F0: 20 6C 76 61 6C 29 3B 0D 0A 20 20 20 20 72 65 74 lval);.. ret
011A00: 20 6B 3D 30 3B 0D 0A 20 20 20 20 20 20 20 20 20 k=0;..
011A10: 20 7D 0D 0A 20 20 20 20 20 20 20 20 73 65 74 73 }.. sets
011A20: 74 61 67 65 28 26 62 65 66 6F 72 65 2C 20 26 73 tage(&before, &s
011A30: 74 61 72 74 29 3B 0D 0A 20 20 20 20 20 20 20 20 tart);..
011A40: 6C 76 61 6C 32 5B 33 5D 3D 30 3B 0D 0A 20 20 20 lval2[3]=0;..
011A50: 20 20 20 20 20 70 6C 6E 67 65 32 28 30 2C 20 30 plnge2(0, 0
011A60: 2C 20 68 69 65 72 31 2C 20 6C 76 61 6C 32 2C 20 , hier1, lval2,
011A70: 6C 76 61 6C 32 29 3B 20 2F 2A 20 6C 76 61 6C 32 lval2); /* lval2
011A80: 20 64 65 61 64 65 6E 64 20 2A 2F 0D 0A 20 20 20 deadend */..
011A90: 20 20 20 20 20 6E 65 65 64 74 6F 6B 65 6E 28 22 needtoken("
011AA0: 5D 22 29 3B 0D 0A 20 20 20 20 20 20 20 20 69 66 ]");.. if
011AB0: 28 6C 76 61 6C 32 5B 33 5D 29 20 7B 0D 0A 20 20 (lval2[3]) {..
011AC0: 20 20 20 20 20 20 20 20 63 6C 65 61 72 73 74 61 clearsta
011AD0: 67 65 28 62 65 66 6F 72 65 2C 20 30 29 3B 0D 0A ge(before, 0);..
011AE0: 20 20 20 20 20 20 20 20 20 20 69 66 28 6C 76 61 if(lva
011AF0: 6C 32 5B 34 5D 29 20 7B 0D 0A 20 20 20 20 20 20 l2[4]) {..
011B00: 20 20 20 20 20 20 69 66 28 70 74 72 5B 54 59 50 if(ptr[TYP
011B10: 45 5D 3D 3D 43 49 4E 54 29 20 63 6F 6E 73 74 32 E]==CINT) const2
011B20: 28 6C 76 61 6C 32 5B 34 5D 3C 3C 4C 42 50 57 29 (lval2[4]<<LBPW)
011B30: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 65 ;.. e
011B40: 6C 73 65 20 20 20 20 20 20 20 20 20 20 20 20 20 lse
011B50: 20 20 20 63 6F 6E 73 74 32 28 6C 76 61 6C 32 5B const2(lval2[
011B60: 34 5D 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 4]);..
011B70: 20 20 66 66 61 64 64 28 29 3B 0D 0A 20 20 20 20 ffadd();..
011B80: 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 }..
011B90: 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 20 20 }..
011BA0: 65 6C 73 65 20 7B 0D 0A 20 20 20 20 20 20 20 20 else {..
011BB0: 20 20 69 66 28 70 74 72 5B 54 59 50 45 5D 3D 3D if(ptr[TYPE]==
011BC0: 43 49 4E 54 29 20 64 6F 75 62 6C 65 72 65 67 28 CINT) doublereg(
011BD0: 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 66 66 );.. ff
011BE0: 61 64 64 28 29 3B 0D 0A 20 20 20 20 20 20 20 20 add();..
011BF0: 20 20 7D 0D 0A 20 20 20 20 20 20 20 20 6C 76 61 }.. lva
011C00: 75 72 6E 20 30 3B 0D 0A 20 20 20 20 7D 0D 0A 20 urn 0;.. }..
011C10: 20 65 6C 73 65 20 69 66 20 28 6D 61 74 63 68 28 else if (match(
011C20: 22 7E 22 29 29 20 7B 09 09 2F 2A 20 7E 20 2A 2F "~")) {../* ~ */
011C30: 0D 0A 20 20 20 20 69 66 28 68 69 65 72 31 33 28 .. if(hier13(
011C40: 6C 76 61 6C 29 29 20 72 76 61 6C 75 65 28 6C 76 lval)) rvalue(lv
011C50: 61 6C 29 3B 0D 0A 20 20 20 20 63 6F 6D 28 29 3B al);.. com();
011C60: 0D 0A 20 20 20 20 6C 76 61 6C 5B 34 5D 20 3D 20 .. lval[4] =
011C70: 7E 6C 76 61 6C 5B 34 5D 3B 0D 0A 20 20 20 20 72 ~lval[4];.. r
011C80: 65 74 75 72 6E 20 28 6C 76 61 6C 5B 37 5D 3D 30 eturn (lval[7]=0
011C90: 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 65 6C 73 );.. }.. els
011CA0: 65 20 69 66 20 28 6D 61 74 63 68 28 22 21 22 29 e if (match("!")
011CB0: 29 20 7B 09 09 2F 2A 20 21 20 2A 2F 0D 0A 20 20 ) {../* ! */..
011CC0: 20 20 69 66 28 68 69 65 72 31 33 28 6C 76 61 6C if(hier13(lval
011CD0: 29 29 20 72 76 61 6C 75 65 28 6C 76 61 6C 29 3B )) rvalue(lval);
011CE0: 0D 0A 20 20 20 20 6C 6E 65 67 28 29 3B 0D 0A 20 .. lneg();..
011CF0: 20 20 20 6C 76 61 6C 5B 34 5D 20 3D 20 21 6C 76 lval[4] = !lv
011D00: 61 6C 5B 34 5D 3B 0D 0A 20 20 20 20 72 65 74 75 al[4];.. retu
011D10: 72 6E 20 28 6C 76 61 6C 5B 37 5D 3D 30 29 3B 0D rn (lval[7]=0);.
011D20: 0A 20 20 20 20 7D 0D 0A 20 20 65 6C 73 65 20 69 . }.. else i
011D30: 66 20 28 6D 61 74 63 68 28 22 2D 22 29 29 20 7B f (match("-")) {
011D40: 09 09 2F 2A 20 75 6E 61 72 79 20 2D 20 2A 2F 0D ../* unary - */.
011D50: 0A 20 20 20 20 69 66 28 68 69 65 72 31 33 28 6C . if(hier13(l
011D60: 76 61 6C 29 29 20 72 76 61 6C 75 65 28 6C 76 61 val)) rvalue(lva
011D70: 6C 29 3B 0D 0A 20 20 20 20 6E 65 67 28 29 3B 0D l);.. neg();.
011D80: 0A 20 20 20 20 6C 76 61 6C 5B 34 5D 20 3D 20 2D . lval[4] = -
011D90: 6C 76 61 6C 5B 34 5D 3B 0D 0A 20 20 20 20 72 65 lval[4];.. re
011DA0: 74 75 72 6E 20 28 6C 76 61 6C 5B 37 5D 3D 30 29 turn (lval[7]=0)
011DB0: 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 65 6C 73 65 ;.. }.. else
011DC0: 20 69 66 28 6D 61 74 63 68 28 22 2A 22 29 29 20 if(match("*"))
011DD0: 7B 09 09 09 2F 2A 20 75 6E 61 72 79 20 2A 20 2A {.../* unary * *
011DE0: 2F 0D 0A 20 20 20 20 69 66 28 68 69 65 72 31 33 /.. if(hier13
011DF0: 28 6C 76 61 6C 29 29 20 72 76 61 6C 75 65 28 6C (lval)) rvalue(l
011E00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
011E10: 0F 00 01 00 02 09 52 E5 0F 00 41 02 00 00 00 02 ......R...A.....
011E20: 0F 00 46 02 00 00 00 02 0F 00 42 02 00 00 00 02 ..F.......B.....
011E30: 0F 00 47 02 00 00 00 02 0F 00 43 02 00 00 00 02 ..G.......C.....
011E40: 0F 00 48 02 00 00 00 02 0F 00 44 02 00 00 00 02 ..H.......D.....
011E50: 0F 00 49 02 00 00 00 02 0F 00 45 02 00 00 00 02 ..I.......E.....
011E60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011E70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011E80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011E90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011EA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011EB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011EC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011ED0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011EE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011EF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011F00: 6C 5B 32 5D 3D 30 3B 0D 0A 20 20 20 20 20 20 20 l[2]=0;..
011F10: 20 6C 76 61 6C 5B 31 5D 3D 70 74 72 5B 54 59 50 lval[1]=ptr[TYP
011F20: 45 5D 3B 0D 0A 20 20 20 20 20 20 20 20 6B 3D 31 E];.. k=1
011F30: 3B 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 ;.. }..
011F40: 20 20 20 20 65 6C 73 65 20 69 66 28 6D 61 74 63 else if(matc
011F50: 68 28 22 28 22 29 29 20 7B 09 09 2F 2A 20 66 75 h("(")) {../* fu
011F60: 6E 63 74 69 6F 6E 28 2E 2E 2E 29 20 2A 2F 0D 0A nction(...) */..
011F70: 20 20 20 20 20 20 20 20 69 66 28 70 74 72 3D 3D if(ptr==
011F80: 30 29 20 63 61 6C 6C 66 75 6E 63 74 69 6F 6E 28 0) callfunction(
011F90: 30 29 3B 0D 0A 20 20 20 20 20 20 20 20 65 6C 73 0);.. els
011FA0: 65 20 69 66 28 70 74 72 5B 49 44 45 4E 54 5D 21 e if(ptr[IDENT]!
011FB0: 3D 46 55 4E 43 54 49 4F 4E 29 20 7B 0D 0A 20 20 =FUNCTION) {..
011FC0: 20 20 20 20 20 20 20 20 69 66 28 6B 20 26 26 20 if(k &&
011FD0: 21 6C 76 61 6C 5B 34 5D 29 20 72 76 61 6C 75 65 !lval[4]) rvalue
011FE0: 28 6C 76 61 6C 29 3B 0D 0A 20 20 20 20 20 20 20 (lval);..
011FF0: 20 20 20 63 61 6C 6C 66 75 6E 63 74 69 6F 6E 28 callfunction(
012000: 30 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 7D 0);.. }
012010: 0D 0A 20 20 20 20 20 20 20 20 65 6C 73 65 20 63 .. else c
012020: 61 6C 6C 66 75 6E 63 74 69 6F 6E 28 70 74 72 29 allfunction(ptr)
012030: 3B 0D 0A 20 20 20 20 20 20 20 20 6B 3D 6C 76 61 ;.. k=lva
012040: 6C 5B 30 5D 3D 6C 76 61 6C 5B 33 5D 3D 6C 76 61 l[0]=lval[3]=lva
012050: 6C 5B 34 5D 3D 30 3B 0D 0A 20 20 20 20 20 20 20 l[4]=0;..
012060: 20 7D 0D 0A 20 20 20 20 20 20 65 6C 73 65 20 72 }.. else r
012070: 65 74 75 72 6E 20 6B 3B 0D 0A 20 20 20 20 20 20 eturn k;..
012080: 7D 0D 0A 20 20 20 20 7D 0D 0A 20 20 69 66 28 70 }.. }.. if(p
012090: 74 72 3D 3D 30 29 20 72 65 74 75 72 6E 20 6B 3B tr==0) return k;
0120A0: 0D 0A 20 20 69 66 28 70 74 72 5B 49 44 45 4E 54 .. if(ptr[IDENT
0120B0: 5D 3D 3D 46 55 4E 43 54 49 4F 4E 29 20 7B 0D 0A ]==FUNCTION) {..
0120C0: 20 20 20 20 61 64 64 72 65 73 73 28 70 74 72 29 address(ptr)
0120D0: 3B 0D 0A 20 20 20 20 6C 76 61 6C 5B 30 5D 3D 30 ;.. lval[0]=0
0120E0: 3B 0D 0A 20 20 20 20 72 65 74 75 72 6E 20 30 3B ;.. return 0;
0120F0: 0D 0A 20 20 20 20 7D 0D 0A 20 20 72 65 74 75 72 .. }.. retur
012100: 20 26 26 20 28 6F 70 65 72 21 3D 66 66 73 75 62 && (oper!=ffsub
012110: 29 29 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 )) return 0;..
012120: 69 66 28 76 61 6C 31 5B 32 5D 21 3D 43 49 4E 54 if(val1[2]!=CINT
012130: 29 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 69 ) return 0;.. i
012140: 66 28 76 61 6C 32 5B 32 5D 29 20 72 65 74 75 72 f(val2[2]) retur
012150: 6E 20 30 3B 0D 0A 20 20 72 65 74 75 72 6E 20 31 n 0;.. return 1
012160: 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A ;.. }..../*..**
012170: 20 64 65 74 65 72 6D 69 6E 65 20 74 79 70 65 20 determine type
012180: 6F 66 20 62 69 6E 61 72 79 20 6F 70 65 72 61 74 of binary operat
012190: 69 6F 6E 0D 0A 2A 2F 0D 0A 72 65 73 75 6C 74 28 ion..*/..result(
0121A0: 6C 76 61 6C 2C 20 6C 76 61 6C 32 29 20 69 6E 74 lval, lval2) int
0121B0: 20 6C 76 61 6C 5B 5D 2C 20 6C 76 61 6C 32 5B 5D lval[], lval2[]
0121C0: 3B 20 7B 0D 0A 20 20 69 66 28 28 6C 76 61 6C 5B ; {.. if((lval[
0121D0: 32 5D 21 3D 30 29 26 28 6C 76 61 6C 32 5B 32 5D 2]!=0)&(lval2[2]
0121E0: 21 3D 30 29 29 20 7B 0D 0A 20 20 20 20 6C 76 61 !=0)) {.. lva
0121F0: 6C 5B 32 5D 3D 30 3B 0D 0A 20 20 20 20 7D 0D 0A l[2]=0;.. }..
012200: 20 20 65 6C 73 65 20 69 66 28 6C 76 61 6C 32 5B else if(lval2[
012210: 32 5D 29 20 7B 0D 0A 20 20 20 20 6C 76 61 6C 5B 2]) {.. lval[
012220: 30 5D 3D 6C 76 61 6C 32 5B 30 5D 3B 0D 0A 20 20 0]=lval2[0];..
012230: 20 20 6C 76 61 6C 5B 31 5D 3D 6C 76 61 6C 32 5B lval[1]=lval2[
012240: 31 5D 3B 0D 0A 20 20 20 20 6C 76 61 6C 5B 32 5D 1];.. lval[2]
012250: 3D 6C 76 61 6C 32 5B 32 5D 3B 0D 0A 20 20 20 20 =lval2[2];..
012260: 7D 0D 0A 20 20 7D 0D 0A 0D 0A 73 74 65 70 28 6F }.. }....step(o
012270: 70 65 72 2C 20 6C 76 61 6C 29 20 69 6E 74 20 28 per, lval) int (
012280: 2A 6F 70 65 72 29 28 29 2C 20 6C 76 61 6C 5B 5D *oper)(), lval[]
012290: 3B 20 7B 0D 0A 20 20 69 66 28 6C 76 61 6C 5B 31 ; {.. if(lval[1
0122A0: 5D 29 20 7B 0D 0A 20 20 20 20 69 66 28 6C 76 61 ]) {.. if(lva
0122B0: 6C 5B 35 5D 29 20 7B 0D 0A 20 20 20 20 20 20 70 l[5]) {.. p
0122C0: 75 73 68 28 29 3B 0D 0A 20 20 20 20 20 20 72 76 ush();.. rv
0122D0: 61 6C 75 65 28 6C 76 61 6C 29 3B 0D 0A 20 20 20 alue(lval);..
0122E0: 20 20 20 28 2A 6F 70 65 72 29 28 6C 76 61 6C 5B (*oper)(lval[
0122F0: 32 5D 3E 3E 32 29 3B 0D 0A 20 20 20 20 20 20 70 2]>>2);.. p
012300: 6E 20 6B 3B 0D 0A 20 20 7D 0D 0A 0D 0A 70 72 69 n k;.. }....pri
012310: 6D 61 72 79 28 6C 76 61 6C 29 20 20 69 6E 74 20 mary(lval) int
012320: 2A 6C 76 61 6C 3B 20 7B 0D 0A 20 20 63 68 61 72 *lval; {.. char
012330: 20 2A 70 74 72 2C 20 73 6E 61 6D 65 5B 4E 41 4D *ptr, sname[NAM
012340: 45 53 49 5A 45 5D 3B 0D 0A 20 20 69 6E 74 20 6B ESIZE];.. int k
012350: 3B 0D 0A 20 20 69 66 28 6D 61 74 63 68 28 22 28 ;.. if(match("(
012360: 22 29 29 20 7B 09 09 09 2F 2A 20 28 65 78 70 72 ")) {.../* (expr
012370: 65 73 73 69 6F 6E 2C 2E 2E 2E 29 20 2A 2F 0D 0A ession,...) */..
012380: 20 20 20 20 64 6F 20 6B 3D 68 69 65 72 31 28 6C do k=hier1(l
012390: 76 61 6C 29 3B 20 77 68 69 6C 65 28 6D 61 74 63 val); while(matc
0123A0: 68 28 22 2C 22 29 29 3B 0D 0A 20 20 20 20 6E 65 h(","));.. ne
0123B0: 65 64 74 6F 6B 65 6E 28 22 29 22 29 3B 0D 0A 20 edtoken(")");..
0123C0: 20 20 20 72 65 74 75 72 6E 20 6B 3B 0D 0A 20 20 return k;..
0123D0: 20 20 7D 0D 0A 20 20 70 75 74 69 6E 74 28 30 2C }.. putint(0,
0123E0: 20 6C 76 61 6C 2C 20 38 3C 3C 4C 42 50 57 29 3B lval, 8<<LBPW);
0123F0: 09 09 2F 2A 20 63 6C 65 61 72 20 6C 76 61 6C 20 ../* clear lval
012400: 61 72 72 61 79 20 2A 2F 0D 0A 20 20 69 66 28 73 array */.. if(s
012410: 79 6D 6E 61 6D 65 28 73 6E 61 6D 65 2C 20 59 45 ymname(sname, YE
012420: 53 29 29 20 7B 0D 0A 20 20 20 20 69 66 28 70 74 S)) {.. if(pt
012430: 72 3D 66 69 6E 64 6C 6F 63 28 73 6E 61 6D 65 29 r=findloc(sname)
012440: 29 20 7B 0D 0A 23 69 66 64 65 66 20 53 54 47 4F ) {..#ifdef STGO
012450: 54 4F 0D 0A 20 20 20 20 20 20 69 66 28 70 74 72 TO.. if(ptr
012460: 5B 49 44 45 4E 54 5D 3D 3D 4C 41 42 45 4C 29 20 [IDENT]==LABEL)
012470: 7B 0D 0A 20 20 20 20 20 20 20 20 65 78 70 65 72 {.. exper
012480: 72 28 29 3B 0D 0A 20 20 20 20 20 20 20 20 72 65 r();.. re
012490: 74 75 72 6E 20 30 3B 0D 0A 20 20 20 20 20 20 20 turn 0;..
0124A0: 20 7D 0D 0A 23 65 6E 64 69 66 0D 0A 20 20 20 20 }..#endif..
0124B0: 20 20 67 65 74 6C 6F 63 28 70 74 72 29 3B 0D 0A getloc(ptr);..
0124C0: 20 20 20 20 20 20 6C 76 61 6C 5B 30 5D 3D 70 74 lval[0]=pt
0124D0: 72 3B 0D 0A 20 20 20 20 20 20 6C 76 61 6C 5B 31 r;.. lval[1
0124E0: 5D 3D 70 74 72 5B 54 59 50 45 5D 3B 0D 0A 20 20 ]=ptr[TYPE];..
0124F0: 20 20 20 20 69 66 28 70 74 72 5B 49 44 45 4E 54 if(ptr[IDENT
012500: 6F 70 28 29 3B 0D 0A 20 20 20 20 20 20 73 74 6F op();.. sto
012510: 72 65 28 6C 76 61 6C 29 3B 0D 0A 20 20 20 20 20 re(lval);..
012520: 20 72 65 74 75 72 6E 3B 0D 0A 20 20 20 20 20 20 return;..
012530: 7D 0D 0A 20 20 20 20 65 6C 73 65 20 7B 0D 0A 20 }.. else {..
012540: 20 20 20 20 20 6D 6F 76 65 28 29 3B 0D 0A 20 20 move();..
012550: 20 20 20 20 6C 76 61 6C 5B 35 5D 3D 31 3B 0D 0A lval[5]=1;..
012560: 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 7D 0D 0A }.. }..
012570: 20 20 72 76 61 6C 75 65 28 6C 76 61 6C 29 3B 0D rvalue(lval);.
012580: 0A 20 20 28 2A 6F 70 65 72 29 28 6C 76 61 6C 5B . (*oper)(lval[
012590: 32 5D 3E 3E 32 29 3B 0D 0A 20 20 73 74 6F 72 65 2]>>2);.. store
0125A0: 28 6C 76 61 6C 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A (lval);.. }....
0125B0: 73 74 6F 72 65 28 6C 76 61 6C 29 20 20 69 6E 74 store(lval) int
0125C0: 20 6C 76 61 6C 5B 5D 3B 20 7B 0D 0A 20 20 69 66 lval[]; {.. if
0125D0: 28 6C 76 61 6C 5B 31 5D 29 20 70 75 74 73 74 6B (lval[1]) putstk
0125E0: 28 6C 76 61 6C 29 3B 0D 0A 20 20 65 6C 73 65 20 (lval);.. else
0125F0: 20 20 20 20 20 20 20 70 75 74 6D 65 6D 28 6C 76 putmem(lv
012600: 61 6C 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 72 76 61 al);.. }....rva
012610: 6C 75 65 28 6C 76 61 6C 29 20 69 6E 74 20 6C 76 lue(lval) int lv
012620: 61 6C 5B 5D 3B 20 7B 0D 0A 20 20 69 66 20 28 28 al[]; {.. if ((
012630: 6C 76 61 6C 5B 30 5D 21 3D 30 29 26 28 6C 76 61 lval[0]!=0)&(lva
012640: 6C 5B 31 5D 3D 3D 30 29 29 20 67 65 74 6D 65 6D l[1]==0)) getmem
012650: 28 6C 76 61 6C 29 3B 0D 0A 20 20 65 6C 73 65 20 (lval);.. else
012660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
012670: 20 20 20 20 20 20 20 20 69 6E 64 69 72 65 63 74 indirect
012680: 28 6C 76 61 6C 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A (lval);.. }....
012690: 74 65 73 74 28 6C 61 62 65 6C 2C 20 70 61 72 65 test(label, pare
0126A0: 6E 73 29 20 20 69 6E 74 20 6C 61 62 65 6C 2C 20 ns) int label,
0126B0: 70 61 72 65 6E 73 3B 20 20 7B 0D 0A 20 20 69 6E parens; {.. in
0126C0: 74 20 6C 76 61 6C 5B 38 5D 3B 0D 0A 20 20 63 68 t lval[8];.. ch
0126D0: 61 72 20 2A 62 65 66 6F 72 65 2C 20 2A 73 74 61 ar *before, *sta
0126E0: 72 74 3B 0D 0A 20 20 69 66 28 70 61 72 65 6E 73 rt;.. if(parens
0126F0: 29 20 6E 65 65 64 74 6F 6B 65 6E 28 22 28 22 29 ) needtoken("(")
012700: 5D 3D 3D 50 4F 49 4E 54 45 52 29 20 7B 0D 0A 20 ]==POINTER) {..
012710: 20 20 20 20 20 20 20 6C 76 61 6C 5B 31 5D 3D 43 lval[1]=C
012720: 49 4E 54 3B 0D 0A 20 20 20 20 20 20 20 20 6C 76 INT;.. lv
012730: 61 6C 5B 32 5D 3D 70 74 72 5B 54 59 50 45 5D 3B al[2]=ptr[TYPE];
012740: 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 .. }..
012750: 20 20 20 69 66 28 70 74 72 5B 49 44 45 4E 54 5D if(ptr[IDENT]
012760: 3D 3D 41 52 52 41 59 29 20 7B 0D 0A 20 20 20 20 ==ARRAY) {..
012770: 20 20 20 20 6C 76 61 6C 5B 32 5D 3D 70 74 72 5B lval[2]=ptr[
012780: 54 59 50 45 5D 3B 0D 0A 20 20 20 20 20 20 20 20 TYPE];..
012790: 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 20 20 20 return 0;..
0127A0: 20 20 20 7D 0D 0A 20 20 20 20 20 20 65 6C 73 65 }.. else
0127B0: 20 72 65 74 75 72 6E 20 31 3B 0D 0A 20 20 20 20 return 1;..
0127C0: 20 20 7D 0D 0A 20 20 20 20 69 66 28 70 74 72 3D }.. if(ptr=
0127D0: 66 69 6E 64 67 6C 62 28 73 6E 61 6D 65 29 29 0D findglb(sname)).
0127E0: 0A 20 20 20 20 20 20 69 66 28 70 74 72 5B 49 44 . if(ptr[ID
0127F0: 45 4E 54 5D 21 3D 46 55 4E 43 54 49 4F 4E 29 20 ENT]!=FUNCTION)
012800: 7B 0D 0A 20 20 20 20 20 20 20 20 6C 76 61 6C 5B {.. lval[
012810: 30 5D 3D 70 74 72 3B 0D 0A 20 20 20 20 20 20 20 0]=ptr;..
012820: 20 6C 76 61 6C 5B 31 5D 3D 30 3B 0D 0A 20 20 20 lval[1]=0;..
012830: 20 20 20 20 20 69 66 28 70 74 72 5B 49 44 45 4E if(ptr[IDEN
012840: 54 5D 21 3D 41 52 52 41 59 29 20 7B 0D 0A 20 20 T]!=ARRAY) {..
012850: 20 20 20 20 20 20 20 20 69 66 28 70 74 72 5B 49 if(ptr[I
012860: 44 45 4E 54 5D 3D 3D 50 4F 49 4E 54 45 52 29 20 DENT]==POINTER)
012870: 6C 76 61 6C 5B 32 5D 3D 70 74 72 5B 54 59 50 45 lval[2]=ptr[TYPE
012880: 5D 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 72 65 ];.. re
012890: 74 75 72 6E 20 31 3B 0D 0A 20 20 20 20 20 20 20 turn 1;..
0128A0: 20 20 20 7D 0D 0A 20 20 20 20 20 20 20 20 61 64 }.. ad
0128B0: 64 72 65 73 73 28 70 74 72 29 3B 0D 0A 20 20 20 dress(ptr);..
0128C0: 20 20 20 20 20 6C 76 61 6C 5B 31 5D 3D 6C 76 61 lval[1]=lva
0128D0: 6C 5B 32 5D 3D 70 74 72 5B 54 59 50 45 5D 3B 0D l[2]=ptr[TYPE];.
0128E0: 0A 20 20 20 20 20 20 20 20 72 65 74 75 72 6E 20 . return
0128F0: 30 3B 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 0;.. }..
012900: 3B 0D 0A 20 20 77 68 69 6C 65 28 31 29 20 7B 0D ;.. while(1) {.
012910: 0A 20 20 20 20 73 65 74 73 74 61 67 65 28 26 62 . setstage(&b
012920: 65 66 6F 72 65 2C 20 26 73 74 61 72 74 29 3B 0D efore, &start);.
012930: 0A 20 20 20 20 69 66 28 68 69 65 72 31 28 6C 76 . if(hier1(lv
012940: 61 6C 29 29 20 72 76 61 6C 75 65 28 6C 76 61 6C al)) rvalue(lval
012950: 29 3B 0D 0A 20 20 20 20 69 66 28 6D 61 74 63 68 );.. if(match
012960: 28 22 2C 22 29 29 20 63 6C 65 61 72 73 74 61 67 (",")) clearstag
012970: 65 28 62 65 66 6F 72 65 2C 20 73 74 61 72 74 29 e(before, start)
012980: 3B 0D 0A 20 20 20 20 65 6C 73 65 20 62 72 65 61 ;.. else brea
012990: 6B 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 69 66 28 k;.. }.. if(
0129A0: 70 61 72 65 6E 73 29 20 6E 65 65 64 74 6F 6B 65 parens) needtoke
0129B0: 6E 28 22 29 22 29 3B 0D 0A 20 20 69 66 28 6C 76 n(")");.. if(lv
0129C0: 61 6C 5B 33 5D 29 20 7B 09 09 09 2F 2A 20 63 6F al[3]) {.../* co
0129D0: 6E 73 74 61 6E 74 20 65 78 70 72 65 73 73 69 6F nstant expressio
0129E0: 6E 20 2A 2F 0D 0A 20 20 20 20 63 6C 65 61 72 73 n */.. clears
0129F0: 74 61 67 65 28 62 65 66 6F 72 65 2C 20 30 29 3B tage(before, 0);
012A00: 0D 0A 20 20 20 20 69 66 28 6C 76 61 6C 5B 34 5D .. if(lval[4]
012A10: 29 20 72 65 74 75 72 6E 3B 0D 0A 20 20 20 20 6A ) return;.. j
012A20: 75 6D 70 28 6C 61 62 65 6C 29 3B 0D 0A 20 20 20 ump(label);..
012A30: 20 72 65 74 75 72 6E 3B 0D 0A 20 20 20 20 7D 0D return;.. }.
012A40: 0A 20 20 69 66 28 6C 76 61 6C 5B 37 5D 29 20 7B . if(lval[7]) {
012A50: 09 09 09 2F 2A 20 73 74 61 67 65 20 61 64 64 72 .../* stage addr
012A60: 65 73 73 20 6F 66 20 22 6F 70 65 72 20 30 22 20 ess of "oper 0"
012A70: 63 6F 64 65 20 2A 2F 0D 0A 20 20 20 20 6F 70 65 code */.. ope
012A80: 72 3D 6C 76 61 6C 5B 36 5D 3B 09 09 2F 2A 20 6F r=lval[6];../* o
012A90: 70 65 72 61 74 6F 72 20 66 75 6E 63 74 69 6F 6E perator function
012AA0: 20 61 64 64 72 65 73 73 20 2A 2F 0D 0A 20 20 20 address */..
012AB0: 20 20 20 20 20 20 69 66 28 28 6F 70 65 72 3D 3D if((oper==
012AC0: 66 66 65 71 29 7C 0D 0A 20 20 20 20 20 20 20 20 ffeq)|..
012AD0: 20 20 20 20 28 6F 70 65 72 3D 3D 75 6C 65 29 29 (oper==ule))
012AE0: 20 7A 65 72 6F 6A 75 6D 70 28 65 71 30 2C 20 6C zerojump(eq0, l
012AF0: 61 62 65 6C 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 abel, lval);..
012B00: 20 20 20 70 74 72 3D 61 64 64 73 79 6D 28 73 6E ptr=addsym(sn
012B10: 61 6D 65 2C 46 55 4E 43 54 49 4F 4E 2C 43 49 4E ame,FUNCTION,CIN
012B20: 54 2C 30 2C 26 67 6C 62 70 74 72 2C 41 55 54 4F T,0,&glbptr,AUTO
012B30: 45 58 54 29 3B 0D 0A 20 20 20 20 6C 76 61 6C 5B EXT);.. lval[
012B40: 30 5D 3D 70 74 72 3B 0D 0A 20 20 20 20 6C 76 61 0]=ptr;.. lva
012B50: 6C 5B 31 5D 3D 30 3B 0D 0A 20 20 20 20 72 65 74 l[1]=0;.. ret
012B60: 75 72 6E 20 30 3B 0D 0A 20 20 20 20 7D 0D 0A 20 urn 0;.. }..
012B70: 20 69 66 28 63 6F 6E 73 74 61 6E 74 28 6C 76 61 if(constant(lva
012B80: 6C 29 3D 3D 30 29 20 65 78 70 65 72 72 28 29 3B l)==0) experr();
012B90: 0D 0A 20 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 .. return 0;..
012BA0: 20 7D 0D 0A 0D 0A 65 78 70 65 72 72 28 29 20 7B }....experr() {
012BB0: 0D 0A 20 20 65 72 72 6F 72 28 22 69 6E 76 61 6C .. error("inval
012BC0: 69 64 20 65 78 70 72 65 73 73 69 6F 6E 22 29 3B id expression");
012BD0: 0D 0A 20 20 63 6F 6E 73 74 28 30 29 3B 0D 0A 20 .. const(0);..
012BE0: 20 6A 75 6E 6B 28 29 3B 0D 0A 20 20 7D 0D 0A 20 junk();.. }..
012BF0: 0D 0A 63 61 6C 6C 66 75 6E 63 74 69 6F 6E 28 70 ..callfunction(p
012C00: 74 72 29 20 20 63 68 61 72 20 2A 70 74 72 3B 20 tr) char *ptr;
012C10: 7B 09 09 2F 2A 20 73 79 6D 62 6F 6C 20 74 61 62 {../* symbol tab
012C20: 6C 65 20 65 6E 74 72 79 20 6F 72 20 30 20 2A 2F le entry or 0 */
012C30: 0D 0A 20 20 69 6E 74 20 6E 61 72 67 73 2C 20 63 .. int nargs, c
012C40: 6F 6E 73 74 2C 20 76 61 6C 3B 0D 0A 20 20 6E 61 onst, val;.. na
012C50: 72 67 73 3D 30 3B 0D 0A 20 20 62 6C 61 6E 6B 73 rgs=0;.. blanks
012C60: 28 29 3B 09 09 09 09 2F 2A 20 61 6C 72 65 61 64 ();..../* alread
012C70: 79 20 73 61 77 20 6F 70 65 6E 20 70 61 72 65 6E y saw open paren
012C80: 20 2A 2F 0D 0A 20 20 77 68 69 6C 65 28 73 74 72 */.. while(str
012C90: 65 71 28 6C 70 74 72 2C 22 29 22 29 3D 3D 30 29 eq(lptr,")")==0)
012CA0: 20 7B 0D 0A 20 20 20 20 69 66 28 65 6E 64 73 74 {.. if(endst
012CB0: 28 29 29 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 ()) break;..
012CC0: 69 66 28 70 74 72 29 20 7B 0D 0A 20 20 20 20 20 if(ptr) {..
012CD0: 20 65 78 70 72 65 73 73 69 6F 6E 28 26 63 6F 6E expression(&con
012CE0: 73 74 2C 20 26 76 61 6C 29 3B 0D 0A 20 20 20 20 st, &val);..
012CF0: 20 20 70 75 73 68 28 29 3B 0D 0A 20 20 20 20 20 push();..
012D00: 20 20 65 6C 73 65 20 69 66 28 28 6F 70 65 72 3D else if((oper=
012D10: 3D 66 66 6E 65 29 7C 0D 0A 20 20 20 20 20 20 20 =ffne)|..
012D20: 20 20 20 20 20 28 6F 70 65 72 3D 3D 75 67 74 29 (oper==ugt)
012D30: 29 20 7A 65 72 6F 6A 75 6D 70 28 6E 65 30 2C 20 ) zerojump(ne0,
012D40: 6C 61 62 65 6C 2C 20 6C 76 61 6C 29 3B 0D 0A 20 label, lval);..
012D50: 20 20 20 65 6C 73 65 20 69 66 20 28 6F 70 65 72 else if (oper
012D60: 3D 3D 66 66 67 74 29 20 7A 65 72 6F 6A 75 6D 70 ==ffgt) zerojump
012D70: 28 67 74 30 2C 20 6C 61 62 65 6C 2C 20 6C 76 61 (gt0, label, lva
012D80: 6C 29 3B 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 l);.. else if
012D90: 20 28 6F 70 65 72 3D 3D 66 66 67 65 29 20 7A 65 (oper==ffge) ze
012DA0: 72 6F 6A 75 6D 70 28 67 65 30 2C 20 6C 61 62 65 rojump(ge0, labe
012DB0: 6C 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 20 20 65 l, lval);.. e
012DC0: 6C 73 65 20 69 66 20 28 6F 70 65 72 3D 3D 75 67 lse if (oper==ug
012DD0: 65 29 20 20 63 6C 65 61 72 73 74 61 67 65 28 6C e) clearstage(l
012DE0: 76 61 6C 5B 37 5D 2C 30 29 3B 0D 0A 20 20 20 20 val[7],0);..
012DF0: 65 6C 73 65 20 69 66 20 28 6F 70 65 72 3D 3D 66 else if (oper==f
012E00: 66 6C 74 29 20 7A 65 72 6F 6A 75 6D 70 28 6C 74 flt) zerojump(lt
012E10: 30 2C 20 6C 61 62 65 6C 2C 20 6C 76 61 6C 29 3B 0, label, lval);
012E20: 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 20 28 6F .. else if (o
012E30: 70 65 72 3D 3D 75 6C 74 29 20 20 7A 65 72 6F 6A per==ult) zeroj
012E40: 75 6D 70 28 75 6C 74 30 2C 20 6C 61 62 65 6C 2C ump(ult0, label,
012E50: 20 6C 76 61 6C 29 3B 0D 0A 20 20 20 20 65 6C 73 lval);.. els
012E60: 65 20 69 66 20 28 6F 70 65 72 3D 3D 66 66 6C 65 e if (oper==ffle
012E70: 29 20 7A 65 72 6F 6A 75 6D 70 28 6C 65 30 2C 20 ) zerojump(le0,
012E80: 6C 61 62 65 6C 2C 20 6C 76 61 6C 29 3B 0D 0A 20 label, lval);..
012E90: 20 20 20 65 6C 73 65 20 20 20 20 20 20 20 20 20 else
012EA0: 20 20 20 20 20 20 20 20 74 65 73 74 6A 75 6D 70 testjump
012EB0: 28 6C 61 62 65 6C 29 3B 0D 0A 20 20 20 20 7D 0D (label);.. }.
012EC0: 0A 20 20 65 6C 73 65 20 74 65 73 74 6A 75 6D 70 . else testjump
012ED0: 28 6C 61 62 65 6C 29 3B 0D 0A 20 20 63 6C 65 61 (label);.. clea
012EE0: 72 73 74 61 67 65 28 62 65 66 6F 72 65 2C 20 73 rstage(before, s
012EF0: 74 61 72 74 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 63 tart);.. }....c
012F00: 20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 7B 0D 0A }.. else {..
012F10: 20 20 20 20 20 20 70 75 73 68 28 29 3B 0D 0A 20 push();..
012F20: 20 20 20 20 20 65 78 70 72 65 73 73 69 6F 6E 28 expression(
012F30: 26 63 6F 6E 73 74 2C 20 26 76 61 6C 29 3B 0D 0A &const, &val);..
012F40: 20 20 20 20 20 20 73 77 61 70 73 74 6B 28 29 3B swapstk();
012F50: 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 6E .. }.. n
012F60: 61 72 67 73 3D 6E 61 72 67 73 2B 42 50 57 3B 09 args=nargs+BPW;.
012F70: 09 09 2F 2A 20 63 6F 75 6E 74 20 61 72 67 73 2A ../* count args*
012F80: 42 50 57 20 2A 2F 0D 0A 20 20 20 20 69 66 20 28 BPW */.. if (
012F90: 6D 61 74 63 68 28 22 2C 22 29 3D 3D 30 29 20 62 match(",")==0) b
012FA0: 72 65 61 6B 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 reak;.. }..
012FB0: 6E 65 65 64 74 6F 6B 65 6E 28 22 29 22 29 3B 0D needtoken(")");.
012FC0: 0A 20 20 69 66 28 73 74 72 65 71 28 70 74 72 2B . if(streq(ptr+
012FD0: 4E 41 4D 45 2C 20 22 43 43 41 52 47 43 22 29 3D NAME, "CCARGC")=
012FE0: 3D 30 29 20 6C 6F 61 64 61 72 67 63 28 6E 61 72 =0) loadargc(nar
012FF0: 67 73 3E 3E 4C 42 50 57 29 3B 0D 0A 20 20 69 66 gs>>LBPW);.. if
013000: 28 70 74 72 29 20 66 66 63 61 6C 6C 28 70 74 72 (ptr) ffcall(ptr
013010: 2B 4E 41 4D 45 29 3B 0D 0A 20 20 65 6C 73 65 20 +NAME);.. else
013020: 63 61 6C 6C 73 74 6B 28 29 3B 0D 0A 20 20 63 73 callstk();.. cs
013030: 70 3D 6D 6F 64 73 74 6B 28 63 73 70 2B 6E 61 72 p=modstk(csp+nar
013040: 67 73 2C 20 59 45 53 29 3B 0D 0A 20 20 7D 0D 0A gs, YES);.. }..
013050: 0D 0A 3E 3E 3E 20 43 43 33 33 2E 43 20 34 31 35 ..>>> CC33.C 415
013060: 32 0D 0A 2F 2A 0D 0A 2A 2A 20 74 72 75 65 20 69 2../*..** true i
013070: 66 20 76 61 6C 31 20 2D 3E 20 69 6E 74 20 70 6F f val1 -> int po
013080: 69 6E 74 65 72 20 6F 72 20 69 6E 74 20 61 72 72 inter or int arr
013090: 61 79 20 61 6E 64 20 76 61 6C 32 20 6E 6F 74 20 ay and val2 not
0130A0: 70 74 72 20 6F 72 20 61 72 72 61 79 0D 0A 2A 2F ptr or array..*/
0130B0: 0D 0A 64 62 6C 74 65 73 74 28 6F 70 65 72 2C 20 ..dbltest(oper,
0130C0: 76 61 6C 31 2C 20 76 61 6C 32 29 20 69 6E 74 20 val1, val2) int
0130D0: 28 2A 6F 70 65 72 29 28 29 2C 20 76 61 6C 31 5B (*oper)(), val1[
0130E0: 5D 2C 20 76 61 6C 32 5B 5D 3B 20 7B 0D 0A 20 20 ], val2[]; {..
0130F0: 69 66 28 28 6F 70 65 72 21 3D 66 66 61 64 64 29 if((oper!=ffadd)
013100: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
013110: 10 00 01 00 02 09 52 E5 10 00 41 02 00 00 00 02 ......R...A.....
013120: 10 00 46 02 00 00 00 02 10 00 42 02 00 00 00 02 ..F.......B.....
013130: 10 00 47 02 00 00 00 02 10 00 43 02 00 00 00 02 ..G.......C.....
013140: 10 00 48 02 00 00 00 02 10 00 44 02 00 00 00 02 ..H.......D.....
013150: 10 00 49 02 00 00 00 02 10 00 45 02 00 00 00 02 ..I.......E.....
013160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
013170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
013180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
013190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0131A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0131B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0131C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0131D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0131E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0131F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
013200: 6F 6E 73 74 65 78 70 72 28 76 61 6C 29 20 69 6E onstexpr(val) in
013210: 74 20 2A 76 61 6C 3B 20 7B 0D 0A 20 20 69 6E 74 t *val; {.. int
013220: 20 63 6F 6E 73 74 3B 0D 0A 20 20 63 68 61 72 20 const;.. char
013230: 2A 62 65 66 6F 72 65 2C 20 2A 73 74 61 72 74 3B *before, *start;
013240: 0D 0A 20 20 73 65 74 73 74 61 67 65 28 26 62 65 .. setstage(&be
013250: 66 6F 72 65 2C 20 26 73 74 61 72 74 29 3B 0D 0A fore, &start);..
013260: 20 20 65 78 70 72 65 73 73 69 6F 6E 28 26 63 6F expression(&co
013270: 6E 73 74 2C 20 76 61 6C 29 3B 0D 0A 20 20 63 6C nst, val);.. cl
013280: 65 61 72 73 74 61 67 65 28 62 65 66 6F 72 65 2C earstage(before,
013290: 20 30 29 3B 09 2F 2A 20 73 63 72 61 74 63 68 20 0);./* scratch
0132A0: 67 65 6E 65 72 61 74 65 64 20 63 6F 64 65 20 2A generated code *
0132B0: 2F 0D 0A 20 20 69 66 28 63 6F 6E 73 74 3D 3D 30 /.. if(const==0
0132C0: 29 20 65 72 72 6F 72 28 22 6D 75 73 74 20 62 65 ) error("must be
0132D0: 20 63 6F 6E 73 74 61 6E 74 20 65 78 70 72 65 73 constant expres
0132E0: 73 69 6F 6E 22 29 3B 0D 0A 20 20 72 65 74 75 72 sion");.. retur
0132F0: 6E 20 63 6F 6E 73 74 3B 0D 0A 20 20 7D 0D 0A 0D n const;.. }...
013300: 0A 63 6F 6E 73 74 28 76 61 6C 29 20 69 6E 74 20 .const(val) int
013310: 76 61 6C 3B 20 7B 0D 0A 20 20 69 6D 6D 65 64 28 val; {.. immed(
013320: 29 3B 0D 0A 20 20 6F 75 74 64 65 63 28 76 61 6C );.. outdec(val
013330: 29 3B 0D 0A 20 20 6E 6C 28 29 3B 0D 0A 20 20 7D );.. nl();.. }
013340: 0D 0A 0D 0A 63 6F 6E 73 74 32 28 76 61 6C 29 20 ....const2(val)
013350: 69 6E 74 20 76 61 6C 3B 20 7B 0D 0A 20 20 69 6D int val; {.. im
013360: 6D 65 64 32 28 29 3B 0D 0A 20 20 6F 75 74 64 65 med2();.. outde
013370: 63 28 76 61 6C 29 3B 0D 0A 20 20 6E 6C 28 29 3B c(val);.. nl();
013380: 0D 0A 20 20 7D 0D 0A 0D 0A 63 6F 6E 73 74 61 6E .. }....constan
013390: 74 28 6C 76 61 6C 29 20 20 69 6E 74 20 6C 76 61 t(lval) int lva
0133A0: 6C 5B 5D 3B 20 7B 0D 0A 20 20 6C 76 61 6C 3D 6C l[]; {.. lval=l
0133B0: 76 61 6C 2B 33 3B 0D 0A 20 20 2A 6C 76 61 6C 3D val+3;.. *lval=
0133C0: 31 3B 09 09 09 2F 2A 20 61 73 73 75 6D 65 20 69 1;.../* assume i
0133D0: 74 20 77 69 6C 6C 20 62 65 20 61 20 63 6F 6E 73 t will be a cons
0133E0: 74 61 6E 74 20 2A 2F 0D 0A 20 20 69 66 20 28 6E tant */.. if (n
0133F0: 75 6D 62 65 72 28 2B 2B 6C 76 61 6C 29 29 20 69 umber(++lval)) i
013400: 79 20 61 73 73 65 6D 62 6C 65 72 20 73 74 75 66 y assembler stuf
013410: 66 20 6E 65 65 64 65 64 20 61 74 20 74 68 65 20 f needed at the
013420: 65 6E 64 0D 0A 2A 2F 0D 0A 74 72 61 69 6C 65 72 end..*/..trailer
013430: 28 29 20 20 7B 20 20 0D 0A 23 69 66 6E 64 65 66 () { ..#ifndef
013440: 20 4C 49 4E 4B 0D 0A 20 20 69 66 28 28 62 65 67 LINK.. if((beg
013450: 6C 61 62 20 3D 3D 20 31 29 7C 28 62 65 67 6C 61 lab == 1)|(begla
013460: 62 20 3E 20 39 30 30 30 29 29 20 7B 0D 0A 20 20 b > 9000)) {..
013470: 20 20 2F 2A 20 69 6D 70 6C 65 6D 65 6E 74 61 74 /* implementat
013480: 69 6F 6E 20 64 65 70 65 6E 64 65 6E 74 20 74 72 ion dependent tr
013490: 61 69 6C 65 72 20 63 6F 64 65 20 67 6F 65 73 20 ailer code goes
0134A0: 68 65 72 65 20 2A 2F 0D 0A 20 20 20 20 7D 0D 0A here */.. }..
0134B0: 23 65 6C 73 65 0D 0A 20 20 63 68 61 72 20 2A 70 #else.. char *p
0134C0: 74 72 3B 0D 0A 20 20 63 70 74 72 3D 53 54 41 52 tr;.. cptr=STAR
0134D0: 54 47 4C 42 3B 0D 0A 20 20 77 68 69 6C 65 28 63 TGLB;.. while(c
0134E0: 70 74 72 3C 45 4E 44 47 4C 42 29 20 7B 0D 0A 20 ptr<ENDGLB) {..
0134F0: 20 20 20 69 66 28 63 70 74 72 5B 49 44 45 4E 54 if(cptr[IDENT
013500: 5D 3D 3D 46 55 4E 43 54 49 4F 4E 20 26 26 20 63 ]==FUNCTION && c
013510: 70 74 72 5B 43 4C 41 53 53 5D 3D 3D 41 55 54 4F ptr[CLASS]==AUTO
013520: 45 58 54 29 0D 0A 20 20 20 20 20 20 65 78 74 65 EXT).. exte
013530: 72 6E 61 6C 28 63 70 74 72 2B 4E 41 4D 45 29 3B rnal(cptr+NAME);
013540: 0D 0A 20 20 20 20 63 70 74 72 2B 3D 53 59 4D 4D .. cptr+=SYMM
013550: 41 58 3B 0D 0A 20 20 20 20 7D 0D 0A 23 69 66 64 AX;.. }..#ifd
013560: 65 66 20 55 50 50 45 52 0D 0A 20 20 69 66 28 28 ef UPPER.. if((
013570: 70 74 72 3D 66 69 6E 64 67 6C 62 28 22 4D 41 49 ptr=findglb("MAI
013580: 4E 22 29 29 20 26 26 20 28 70 74 72 5B 4F 46 46 N")) && (ptr[OFF
013590: 53 45 54 5D 3D 3D 46 55 4E 43 54 49 4F 4E 29 29 SET]==FUNCTION))
0135A0: 0D 0A 23 65 6C 73 65 0D 0A 20 20 69 66 28 28 70 ..#else.. if((p
0135B0: 74 72 3D 66 69 6E 64 67 6C 62 28 22 6D 61 69 6E tr=findglb("main
0135C0: 22 29 29 20 26 26 20 28 70 74 72 5B 4F 46 46 53 ")) && (ptr[OFFS
0135D0: 45 54 5D 3D 3D 46 55 4E 43 54 49 4F 4E 29 29 0D ET]==FUNCTION)).
0135E0: 0A 23 65 6E 64 69 66 0D 0A 20 20 20 20 65 78 74 .#endif.. ext
0135F0: 65 72 6E 61 6C 28 22 55 6C 69 6E 6B 22 29 3B 09 ernal("Ulink");.
013600: 6D 6D 65 64 28 29 3B 0D 0A 20 20 65 6C 73 65 20 mmed();.. else
013610: 69 66 20 28 70 73 74 72 28 6C 76 61 6C 29 29 20 if (pstr(lval))
013620: 69 6D 6D 65 64 28 29 3B 0D 0A 20 20 65 6C 73 65 immed();.. else
013630: 20 69 66 20 28 71 73 74 72 28 6C 76 61 6C 29 29 if (qstr(lval))
013640: 20 7B 0D 0A 20 20 20 20 2A 28 6C 76 61 6C 2D 31 {.. *(lval-1
013650: 29 3D 30 3B 09 09 2F 2A 20 6E 6F 70 65 2C 20 69 )=0;../* nope, i
013660: 74 27 73 20 61 20 73 74 72 69 6E 67 20 61 64 64 t's a string add
013670: 72 65 73 73 20 2A 2F 0D 0A 20 20 20 20 69 6D 6D ress */.. imm
013680: 65 64 28 29 3B 0D 0A 20 20 20 20 70 72 69 6E 74 ed();.. print
013690: 6C 61 62 65 6C 28 6C 69 74 6C 61 62 29 3B 0D 0A label(litlab);..
0136A0: 20 20 20 20 6F 75 74 62 79 74 65 28 27 2B 27 29 outbyte('+')
0136B0: 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 65 6C 73 65 ;.. }.. else
0136C0: 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 6F 75 return 0;.. ou
0136D0: 74 64 65 63 28 2A 6C 76 61 6C 29 3B 0D 0A 20 20 tdec(*lval);..
0136E0: 6E 6C 28 29 3B 0D 0A 20 20 72 65 74 75 72 6E 20 nl();.. return
0136F0: 31 3B 0D 0A 20 20 7D 0D 0A 0D 0A 6E 75 6D 62 65 1;.. }....numbe
013700: 72 28 76 61 6C 29 20 20 69 6E 74 20 76 61 6C 5B r(val) int val[
013710: 5D 3B 20 7B 0D 0A 20 20 69 6E 74 20 6B 2C 20 6D ]; {.. int k, m
013720: 69 6E 75 73 3B 0D 0A 20 20 6B 3D 6D 69 6E 75 73 inus;.. k=minus
013730: 3D 30 3B 0D 0A 20 20 77 68 69 6C 65 28 31 29 20 =0;.. while(1)
013740: 7B 0D 0A 20 20 20 20 69 66 28 6D 61 74 63 68 28 {.. if(match(
013750: 22 2B 22 29 29 20 3B 0D 0A 20 20 20 20 65 6C 73 "+")) ;.. els
013760: 65 20 69 66 28 6D 61 74 63 68 28 22 2D 22 29 29 e if(match("-"))
013770: 20 6D 69 6E 75 73 3D 31 3B 0D 0A 20 20 20 20 65 minus=1;.. e
013780: 6C 73 65 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 lse break;..
013790: 7D 0D 0A 20 20 69 66 28 69 73 64 69 67 69 74 28 }.. if(isdigit(
0137A0: 63 68 29 3D 3D 30 29 72 65 74 75 72 6E 20 30 3B ch)==0)return 0;
0137B0: 0D 0A 20 20 77 68 69 6C 65 20 28 69 73 64 69 67 .. while (isdig
0137C0: 69 74 28 63 68 29 29 20 6B 3D 6B 2A 31 30 2B 28 it(ch)) k=k*10+(
0137D0: 69 6E 62 79 74 65 28 29 2D 27 30 27 29 3B 0D 0A inbyte()-'0');..
0137E0: 20 20 69 66 20 28 6D 69 6E 75 73 29 20 6B 3D 28 if (minus) k=(
0137F0: 2D 6B 29 3B 0D 0A 20 20 76 61 6C 5B 30 5D 3D 6B -k);.. val[0]=k
013800: 2F 2A 20 6C 69 6E 6B 20 74 6F 20 6C 69 62 72 61 /* link to libra
013810: 72 79 20 66 75 6E 63 74 69 6F 6E 73 20 2A 2F 0D ry functions */.
013820: 0A 23 65 6E 64 69 66 0D 0A 20 20 6F 6C 28 22 45 .#endif.. ol("E
013830: 4E 44 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A ND");.. }..../*
013840: 0D 0A 2A 2A 20 6C 6F 61 64 20 23 20 61 72 67 73 ..** load # args
013850: 20 62 65 66 6F 72 65 20 66 75 6E 63 74 69 6F 6E before function
013860: 20 63 61 6C 6C 0D 0A 2A 2F 0D 0A 6C 6F 61 64 61 call..*/..loada
013870: 72 67 63 28 76 61 6C 29 20 69 6E 74 20 76 61 6C rgc(val) int val
013880: 3B 20 7B 0D 0A 20 20 69 66 28 73 65 61 72 63 68 ; {.. if(search
013890: 28 22 4E 4F 43 43 41 52 47 43 22 2C 20 6D 61 63 ("NOCCARGC", mac
0138A0: 6E 2C 20 4E 41 4D 45 53 49 5A 45 2B 32 2C 20 4D n, NAMESIZE+2, M
0138B0: 41 43 4E 45 4E 44 2C 20 4D 41 43 4E 42 52 2C 20 ACNEND, MACNBR,
0138C0: 30 29 3D 3D 30 29 20 7B 0D 0A 20 20 20 20 69 66 0)==0) {.. if
0138D0: 28 76 61 6C 29 20 7B 0D 0A 20 20 20 20 20 20 6F (val) {.. o
0138E0: 74 28 22 4D 56 49 20 41 2C 22 29 3B 0D 0A 20 20 t("MVI A,");..
0138F0: 20 20 20 20 6F 75 74 64 65 63 28 76 61 6C 29 3B outdec(val);
013900: 0D 0A 20 20 20 20 20 20 6E 6C 28 29 3B 0D 0A 20 .. nl();..
013910: 20 20 20 20 20 7D 0D 0A 20 20 20 20 65 6C 73 65 }.. else
013920: 20 6F 6C 28 22 58 52 41 20 41 22 29 3B 0D 0A 20 ol("XRA A");..
013930: 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D }.. }..../*.
013940: 0A 2A 2A 20 64 65 63 6C 61 72 65 20 65 6E 74 72 .** declare entr
013950: 79 20 70 6F 69 6E 74 0D 0A 2A 2F 0D 0A 65 6E 74 y point..*/..ent
013960: 72 79 28 29 20 7B 0D 0A 20 20 6F 75 74 73 74 72 ry() {.. outstr
013970: 28 73 73 6E 61 6D 65 29 3B 0D 0A 20 20 63 6F 6C (ssname);.. col
013980: 28 29 3B 0D 0A 23 69 66 64 65 66 20 4C 49 4E 4B ();..#ifdef LINK
013990: 0D 0A 20 20 63 6F 6C 28 29 3B 0D 0A 23 65 6E 64 .. col();..#end
0139A0: 69 66 0D 0A 20 20 6E 6C 28 29 3B 0D 0A 20 20 7D if.. nl();.. }
0139B0: 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 64 65 63 6C 61 ..../*..** decla
0139C0: 72 65 20 65 78 74 65 72 6E 61 6C 20 72 65 66 65 re external refe
0139D0: 72 65 6E 63 65 0D 0A 2A 2F 0D 0A 65 78 74 65 72 rence..*/..exter
0139E0: 6E 61 6C 28 6E 61 6D 65 29 20 63 68 61 72 20 2A nal(name) char *
0139F0: 6E 61 6D 65 3B 20 7B 0D 0A 23 69 66 64 65 66 20 name; {..#ifdef
013A00: 3B 0D 0A 20 20 72 65 74 75 72 6E 20 31 3B 0D 0A ;.. return 1;..
013A10: 20 20 7D 0D 0A 0D 0A 61 64 64 72 65 73 73 28 70 }....address(p
013A20: 74 72 29 20 63 68 61 72 20 2A 70 74 72 3B 20 7B tr) char *ptr; {
013A30: 0D 0A 20 20 69 6D 6D 65 64 28 29 3B 0D 0A 20 20 .. immed();..
013A40: 6F 75 74 73 74 72 28 70 74 72 2B 4E 41 4D 45 29 outstr(ptr+NAME)
013A50: 3B 0D 0A 20 20 6E 6C 28 29 3B 0D 0A 20 20 7D 0D ;.. nl();.. }.
013A60: 0A 0D 0A 70 73 74 72 28 76 61 6C 29 20 20 69 6E ...pstr(val) in
013A70: 74 20 76 61 6C 5B 5D 3B 20 7B 0D 0A 20 20 69 6E t val[]; {.. in
013A80: 74 20 6B 3B 0D 0A 20 20 6B 3D 30 3B 0D 0A 20 20 t k;.. k=0;..
013A90: 69 66 20 28 6D 61 74 63 68 28 22 27 22 29 3D 3D if (match("'")==
013AA0: 30 29 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 0) return 0;..
013AB0: 77 68 69 6C 65 28 63 68 21 3D 33 39 29 20 20 20 while(ch!=39)
013AC0: 20 6B 3D 28 6B 26 32 35 35 29 2A 32 35 36 20 2B k=(k&255)*256 +
013AD0: 20 28 6C 69 74 63 68 61 72 28 29 26 32 35 35 29 (litchar()&255)
013AE0: 3B 0D 0A 20 20 67 63 68 28 29 3B 0D 0A 20 20 76 ;.. gch();.. v
013AF0: 61 6C 5B 30 5D 3D 6B 3B 0D 0A 20 20 72 65 74 75 al[0]=k;.. retu
013B00: 72 6E 20 31 3B 0D 0A 20 20 7D 0D 0A 0D 0A 71 73 rn 1;.. }....qs
013B10: 74 72 28 76 61 6C 29 20 20 69 6E 74 20 76 61 6C tr(val) int val
013B20: 5B 5D 3B 20 7B 0D 0A 20 20 63 68 61 72 20 63 3B []; {.. char c;
013B30: 0D 0A 20 20 69 66 20 28 6D 61 74 63 68 28 71 75 .. if (match(qu
013B40: 6F 74 65 29 3D 3D 30 29 20 72 65 74 75 72 6E 20 ote)==0) return
013B50: 30 3B 0D 0A 20 20 76 61 6C 5B 30 5D 3D 6C 69 74 0;.. val[0]=lit
013B60: 70 74 72 3B 0D 0A 20 20 77 68 69 6C 65 20 28 63 ptr;.. while (c
013B70: 68 21 3D 27 22 27 29 20 7B 0D 0A 20 20 20 20 69 h!='"') {.. i
013B80: 66 28 63 68 3D 3D 30 29 20 62 72 65 61 6B 3B 0D f(ch==0) break;.
013B90: 0A 20 20 20 20 73 74 6F 77 6C 69 74 28 6C 69 74 . stowlit(lit
013BA0: 63 68 61 72 28 29 2C 20 31 29 3B 0D 0A 20 20 20 char(), 1);..
013BB0: 20 7D 0D 0A 20 20 67 63 68 28 29 3B 0D 0A 20 20 }.. gch();..
013BC0: 6C 69 74 71 5B 6C 69 74 70 74 72 2B 2B 5D 3D 30 litq[litptr++]=0
013BD0: 3B 0D 0A 20 20 72 65 74 75 72 6E 20 31 3B 0D 0A ;.. return 1;..
013BE0: 20 20 7D 0D 0A 0D 0A 73 74 6F 77 6C 69 74 28 76 }....stowlit(v
013BF0: 61 6C 75 65 2C 20 73 69 7A 65 29 20 69 6E 74 20 alue, size) int
013C00: 4C 49 4E 4B 0D 0A 20 20 6F 74 28 22 45 58 54 20 LINK.. ot("EXT
013C10: 22 29 3B 0D 0A 20 20 6F 6C 28 6E 61 6D 65 29 3B ");.. ol(name);
013C20: 0D 0A 23 65 6E 64 69 66 0D 0A 20 20 7D 0D 0A 0D ..#endif.. }...
013C30: 0A 2F 2A 0D 0A 2A 2A 20 66 65 74 63 68 20 6F 62 ./*..** fetch ob
013C40: 6A 65 63 74 20 69 6E 64 69 72 65 63 74 20 74 6F ject indirect to
013C50: 20 70 72 69 6D 61 72 79 20 72 65 67 69 73 74 65 primary registe
013C60: 72 0D 0A 2A 2F 0D 0A 69 6E 64 69 72 65 63 74 28 r..*/..indirect(
013C70: 6C 76 61 6C 29 20 69 6E 74 20 6C 76 61 6C 5B 5D lval) int lval[]
013C80: 3B 20 7B 0D 0A 20 20 69 66 28 6C 76 61 6C 5B 31 ; {.. if(lval[1
013C90: 5D 3D 3D 43 43 48 41 52 29 20 66 66 63 61 6C 6C ]==CCHAR) ffcall
013CA0: 28 22 43 43 47 43 48 41 52 23 23 22 29 3B 0D 0A ("CCGCHAR##");..
013CB0: 20 20 65 6C 73 65 20 20 20 20 20 20 20 20 20 20 else
013CC0: 20 20 20 20 20 66 66 63 61 6C 6C 28 22 43 43 47 ffcall("CCG
013CD0: 49 4E 54 23 23 22 29 3B 0D 0A 20 20 7D 0D 0A 0D INT##");.. }...
013CE0: 0A 2F 2A 0D 0A 2A 2A 20 66 65 74 63 68 20 61 20 ./*..** fetch a
013CF0: 73 74 61 74 69 63 20 6D 65 6D 6F 72 79 20 63 65 static memory ce
013D00: 6C 6C 20 69 6E 74 6F 20 70 72 69 6D 61 72 79 20 ll into primary
013D10: 72 65 67 69 73 74 65 72 0D 0A 2A 2F 0D 0A 67 65 register..*/..ge
013D20: 74 6D 65 6D 28 6C 76 61 6C 29 20 20 69 6E 74 20 tmem(lval) int
013D30: 6C 76 61 6C 5B 5D 3B 20 7B 0D 0A 20 20 63 68 61 lval[]; {.. cha
013D40: 72 20 2A 73 79 6D 3B 0D 0A 20 20 73 79 6D 3D 6C r *sym;.. sym=l
013D50: 76 61 6C 5B 30 5D 3B 0D 0A 20 20 69 66 28 28 73 val[0];.. if((s
013D60: 79 6D 5B 49 44 45 4E 54 5D 21 3D 50 4F 49 4E 54 ym[IDENT]!=POINT
013D70: 45 52 29 26 28 73 79 6D 5B 54 59 50 45 5D 3D 3D ER)&(sym[TYPE]==
013D80: 43 43 48 41 52 29 29 20 7B 0D 0A 20 20 20 20 6F CCHAR)) {.. o
013D90: 74 28 22 4C 44 41 20 22 29 3B 0D 0A 20 20 20 20 t("LDA ");..
013DA0: 6F 75 74 73 74 72 28 73 79 6D 2B 4E 41 4D 45 29 outstr(sym+NAME)
013DB0: 3B 0D 0A 20 20 20 20 6E 6C 28 29 3B 0D 0A 20 20 ;.. nl();..
013DC0: 20 20 66 66 63 61 6C 6C 28 22 43 43 53 58 54 23 ffcall("CCSXT#
013DD0: 23 22 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 65 #");.. }.. e
013DE0: 6C 73 65 20 7B 0D 0A 20 20 20 20 6F 74 28 22 4C lse {.. ot("L
013DF0: 48 4C 44 20 22 29 3B 0D 0A 20 20 20 20 6F 75 74 HLD ");.. out
013E00: 76 61 6C 75 65 2C 20 73 69 7A 65 3B 20 7B 0D 0A value, size; {..
013E10: 20 20 69 66 28 28 6C 69 74 70 74 72 2B 73 69 7A if((litptr+siz
013E20: 65 29 20 3E 3D 20 4C 49 54 4D 41 58 29 20 7B 0D e) >= LITMAX) {.
013E30: 0A 20 20 20 20 65 72 72 6F 72 28 22 6C 69 74 65 . error("lite
013E40: 72 61 6C 20 71 75 65 75 65 20 6F 76 65 72 66 6C ral queue overfl
013E50: 6F 77 22 29 3B 20 61 62 6F 72 74 28 45 52 52 43 ow"); abort(ERRC
013E60: 4F 44 45 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 ODE);.. }..
013E70: 70 75 74 69 6E 74 28 76 61 6C 75 65 2C 20 6C 69 putint(value, li
013E80: 74 71 2B 6C 69 74 70 74 72 2C 20 73 69 7A 65 29 tq+litptr, size)
013E90: 3B 0D 0A 20 20 6C 69 74 70 74 72 3D 6C 69 74 70 ;.. litptr=litp
013EA0: 74 72 2B 73 69 7A 65 3B 0D 0A 20 20 7D 0D 0A 0D tr+size;.. }...
013EB0: 0A 2F 2A 0D 0A 2A 2A 20 72 65 74 75 72 6E 20 63 ./*..** return c
013EC0: 75 72 72 65 6E 74 20 6C 69 74 65 72 61 6C 20 63 urrent literal c
013ED0: 68 61 72 20 26 20 62 75 6D 70 20 6C 70 74 72 0D har & bump lptr.
013EE0: 0A 2A 2F 0D 0A 6C 69 74 63 68 61 72 28 29 20 7B .*/..litchar() {
013EF0: 0D 0A 20 20 69 6E 74 20 69 2C 20 6F 63 74 3B 0D .. int i, oct;.
013F00: 0A 20 20 69 66 28 28 63 68 21 3D 39 32 29 7C 28 . if((ch!=92)|(
013F10: 6E 63 68 3D 3D 30 29 29 20 72 65 74 75 72 6E 20 nch==0)) return
013F20: 67 63 68 28 29 3B 0D 0A 20 20 67 63 68 28 29 3B gch();.. gch();
013F30: 0D 0A 20 20 69 66 28 63 68 3D 3D 27 6E 27 29 20 .. if(ch=='n')
013F40: 7B 67 63 68 28 29 3B 20 72 65 74 75 72 6E 20 4E {gch(); return N
013F50: 45 57 4C 49 4E 45 3B 7D 0D 0A 20 20 69 66 28 63 EWLINE;}.. if(c
013F60: 68 3D 3D 27 74 27 29 20 7B 67 63 68 28 29 3B 20 h=='t') {gch();
013F70: 72 65 74 75 72 6E 20 20 39 3B 7D 20 2F 2A 20 48 return 9;} /* H
013F80: 54 20 2A 2F 0D 0A 20 20 69 66 28 63 68 3D 3D 27 T */.. if(ch=='
013F90: 62 27 29 20 7B 67 63 68 28 29 3B 20 72 65 74 75 b') {gch(); retu
013FA0: 72 6E 20 20 38 3B 7D 20 2F 2A 20 42 53 20 2A 2F rn 8;} /* BS */
013FB0: 0D 0A 20 20 69 66 28 63 68 3D 3D 27 66 27 29 20 .. if(ch=='f')
013FC0: 7B 67 63 68 28 29 3B 20 72 65 74 75 72 6E 20 31 {gch(); return 1
013FD0: 32 3B 7D 20 2F 2A 20 46 46 20 2A 2F 0D 0A 20 20 2;} /* FF */..
013FE0: 69 3D 33 3B 20 6F 63 74 3D 30 3B 0D 0A 20 20 77 i=3; oct=0;.. w
013FF0: 68 69 6C 65 28 28 28 69 2D 2D 29 3E 30 29 26 28 hile(((i--)>0)&(
014000: 73 74 72 28 73 79 6D 2B 4E 41 4D 45 29 3B 0D 0A str(sym+NAME);..
014010: 20 20 20 20 6E 6C 28 29 3B 0D 0A 20 20 20 20 7D nl();.. }
014020: 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 .. }..../*..**
014030: 66 65 74 63 68 20 61 64 64 72 20 6F 66 20 74 68 fetch addr of th
014040: 65 20 73 70 65 63 69 66 69 65 64 20 73 79 6D 62 e specified symb
014050: 6F 6C 20 69 6E 74 6F 20 70 72 69 6D 61 72 79 20 ol into primary
014060: 72 65 67 69 73 74 65 72 0D 0A 2A 2F 0D 0A 67 65 register..*/..ge
014070: 74 6C 6F 63 28 73 79 6D 29 20 20 63 68 61 72 20 tloc(sym) char
014080: 2A 73 79 6D 3B 20 7B 0D 0A 20 20 63 6F 6E 73 74 *sym; {.. const
014090: 28 67 65 74 69 6E 74 28 73 79 6D 2B 4F 46 46 53 (getint(sym+OFFS
0140A0: 45 54 2C 20 4F 46 46 53 49 5A 45 29 2D 63 73 70 ET, OFFSIZE)-csp
0140B0: 29 3B 0D 0A 20 20 6F 6C 28 22 44 41 44 20 53 50 );.. ol("DAD SP
0140C0: 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A ");.. }..../*..
0140D0: 2A 2A 20 73 74 6F 72 65 20 70 72 69 6D 61 72 79 ** store primary
0140E0: 20 72 65 67 69 73 74 65 72 20 69 6E 74 6F 20 73 register into s
0140F0: 74 61 74 69 63 20 63 65 6C 6C 0D 0A 2A 2F 0D 0A tatic cell..*/..
014100: 70 75 74 6D 65 6D 28 6C 76 61 6C 29 20 20 69 6E putmem(lval) in
014110: 74 20 6C 76 61 6C 5B 5D 3B 20 7B 0D 0A 20 20 63 t lval[]; {.. c
014120: 68 61 72 20 2A 73 79 6D 3B 0D 0A 20 20 73 79 6D har *sym;.. sym
014130: 3D 6C 76 61 6C 5B 30 5D 3B 0D 0A 20 20 69 66 28 =lval[0];.. if(
014140: 28 73 79 6D 5B 49 44 45 4E 54 5D 21 3D 50 4F 49 (sym[IDENT]!=POI
014150: 4E 54 45 52 29 26 28 73 79 6D 5B 54 59 50 45 5D NTER)&(sym[TYPE]
014160: 3D 3D 43 43 48 41 52 29 29 20 7B 0D 0A 20 20 20 ==CCHAR)) {..
014170: 20 6F 6C 28 22 4D 4F 56 20 41 2C 4C 22 29 3B 0D ol("MOV A,L");.
014180: 0A 20 20 20 20 6F 74 28 22 53 54 41 20 22 29 3B . ot("STA ");
014190: 0D 0A 20 20 20 20 7D 0D 0A 20 20 65 6C 73 65 20 .. }.. else
0141A0: 6F 74 28 22 53 48 4C 44 20 22 29 3B 0D 0A 20 20 ot("SHLD ");..
0141B0: 6F 75 74 73 74 72 28 73 79 6D 2B 4E 41 4D 45 29 outstr(sym+NAME)
0141C0: 3B 0D 0A 20 20 6E 6C 28 29 3B 0D 0A 20 20 7D 0D ;.. nl();.. }.
0141D0: 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 70 75 74 20 6F 6E .../*..** put on
0141E0: 20 74 68 65 20 73 74 61 63 6B 20 74 68 65 20 74 the stack the t
0141F0: 79 70 65 20 6F 62 6A 65 63 74 20 69 6E 20 70 72 ype object in pr
014200: 63 68 3E 3D 27 30 27 29 26 28 63 68 3C 3D 27 37 ch>='0')&(ch<='7
014210: 27 29 29 20 6F 63 74 3D 28 6F 63 74 3C 3C 33 29 ')) oct=(oct<<3)
014220: 2B 67 63 68 28 29 2D 27 30 27 3B 0D 0A 20 20 69 +gch()-'0';.. i
014230: 66 28 69 3D 3D 32 29 20 72 65 74 75 72 6E 20 67 f(i==2) return g
014240: 63 68 28 29 3B 20 65 6C 73 65 20 72 65 74 75 72 ch(); else retur
014250: 6E 20 6F 63 74 3B 0D 0A 20 20 7D 0D 0A 0D 0A 3E n oct;.. }....>
014260: 3E 3E 20 43 43 34 2E 43 20 32 34 34 0D 0A 2F 2A >> CC4.C 244../*
014270: 0D 0A 2A 2A 20 53 6D 61 6C 6C 2D 43 20 43 6F 6D ..** Small-C Com
014280: 70 69 6C 65 72 20 50 61 72 74 20 34 0D 0A 2A 2F piler Part 4..*/
014290: 0D 0A 23 69 6E 63 6C 75 64 65 20 3C 73 74 64 69 ..#include <stdi
0142A0: 6F 2E 68 3E 0D 0A 23 69 6E 63 6C 75 64 65 20 22 o.h>..#include "
0142B0: 63 63 2E 64 65 66 22 0D 0A 0D 0A 65 78 74 65 72 cc.def"....exter
0142C0: 6E 20 63 68 61 72 0D 0A 20 2A 6D 61 63 6E 2C 0D n char.. *macn,.
0142D0: 0A 20 2A 63 70 74 72 2C 20 2A 73 79 6D 74 61 62 . *cptr, *symtab
0142E0: 2C 0D 0A 23 69 66 64 65 66 20 4F 50 54 49 4D 49 ,..#ifdef OPTIMI
0142F0: 5A 45 0D 0A 20 6F 70 74 69 6D 69 7A 65 2C 0D 0A ZE.. optimize,..
014300: 23 65 6E 64 69 66 0D 0A 20 2A 73 74 61 67 65 6E #endif.. *stagen
014310: 65 78 74 2C 20 73 73 6E 61 6D 65 5B 4E 41 4D 45 ext, ssname[NAME
014320: 53 49 5A 45 5D 3B 0D 0A 65 78 74 65 72 6E 20 69 SIZE];..extern i
014330: 6E 74 0D 0A 20 62 65 67 6C 61 62 2C 20 20 63 73 nt.. beglab, cs
014340: 70 2C 20 6F 75 74 70 75 74 3B 0D 0A 0D 0A 23 69 p, output;....#i
014350: 6E 63 6C 75 64 65 20 22 63 63 34 31 2E 63 22 0D nclude "cc41.c".
014360: 0A 23 69 6E 63 6C 75 64 65 20 22 63 63 34 32 2E .#include "cc42.
014370: 63 22 0D 0A 3E 3E 3E 20 43 43 34 31 2E 43 20 35 c"..>>> CC41.C 5
014380: 31 39 36 0D 0A 2F 2A 0D 0A 2A 2A 20 70 72 69 6E 196../*..** prin
014390: 74 20 61 6C 6C 20 61 73 73 65 6D 62 6C 65 72 20 t all assembler
0143A0: 69 6E 66 6F 20 62 65 66 6F 72 65 20 61 6E 79 20 info before any
0143B0: 63 6F 64 65 20 69 73 20 67 65 6E 65 72 61 74 65 code is generate
0143C0: 64 0D 0A 2A 2F 0D 0A 68 65 61 64 65 72 28 29 20 d..*/..header()
0143D0: 20 7B 0D 0A 20 20 62 65 67 6C 61 62 3D 67 65 74 {.. beglab=get
0143E0: 6C 61 62 65 6C 28 29 3B 0D 0A 20 20 7D 0D 0A 0D label();.. }...
0143F0: 0A 2F 2A 0D 0A 2A 2A 20 70 72 69 6E 74 20 61 6E ./*..** print an
014400: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
014410: 11 00 01 00 02 09 52 E5 11 00 41 02 00 00 00 02 ......R...A.....
014420: 11 00 46 02 00 00 00 02 11 00 42 02 00 00 00 02 ..F.......B.....
014430: 11 00 47 02 00 00 00 02 11 00 43 02 00 00 00 02 ..G.......C.....
014440: 11 00 48 02 00 00 00 02 11 00 44 02 00 00 00 02 ..H.......D.....
014450: 11 00 49 02 00 00 00 02 11 00 45 02 00 00 00 02 ..I.......E.....
014460: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
014470: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
014480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
014490: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0144A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0144B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0144C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0144D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0144E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0144F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
014500: 69 6D 61 72 79 20 72 65 67 69 73 74 65 72 0D 0A imary register..
014510: 2A 2F 0D 0A 70 75 74 73 74 6B 28 6C 76 61 6C 29 */..putstk(lval)
014520: 20 69 6E 74 20 6C 76 61 6C 5B 5D 3B 20 7B 0D 0A int lval[]; {..
014530: 20 20 69 66 28 6C 76 61 6C 5B 31 5D 3D 3D 43 43 if(lval[1]==CC
014540: 48 41 52 29 20 7B 0D 0A 20 20 20 20 6F 6C 28 22 HAR) {.. ol("
014550: 4D 4F 56 20 41 2C 4C 22 29 3B 0D 0A 20 20 20 20 MOV A,L");..
014560: 6F 6C 28 22 53 54 41 58 20 44 22 29 3B 0D 0A 20 ol("STAX D");..
014570: 20 20 20 7D 0D 0A 20 20 65 6C 73 65 20 66 66 63 }.. else ffc
014580: 61 6C 6C 28 22 43 43 50 49 4E 54 23 23 22 29 3B all("CCPINT##");
014590: 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 .. }..../*..**
0145A0: 6D 6F 76 65 20 70 72 69 6D 61 72 79 20 72 65 67 move primary reg
0145B0: 69 73 74 65 72 20 74 6F 20 73 65 63 6F 6E 64 61 ister to seconda
0145C0: 72 79 0D 0A 2A 2F 0D 0A 6D 6F 76 65 28 29 20 7B ry..*/..move() {
0145D0: 0D 0A 20 20 6F 6C 28 22 4D 4F 56 20 44 2C 48 22 .. ol("MOV D,H"
0145E0: 29 3B 0D 0A 20 20 6F 6C 28 22 4D 4F 56 20 45 2C );.. ol("MOV E,
0145F0: 4C 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D L");.. }..../*.
014600: 0A 2A 2A 20 73 77 61 70 20 70 72 69 6D 61 72 79 .** swap primary
014610: 20 61 6E 64 20 73 65 63 6F 6E 64 61 72 79 20 72 and secondary r
014620: 65 67 69 73 74 65 72 73 0D 0A 2A 2F 0D 0A 73 77 egisters..*/..sw
014630: 61 70 28 29 20 7B 0D 0A 20 20 6F 6C 28 22 58 43 ap() {.. ol("XC
014640: 48 47 3B 3B 22 29 3B 09 09 2F 2A 20 70 65 65 70 HG;;");../* peep
014650: 68 6F 6C 65 28 29 20 75 73 65 73 20 74 72 61 69 hole() uses trai
014660: 6C 69 6E 67 20 22 3B 3B 22 20 2A 2F 0D 0A 20 20 ling ";;" */..
014670: 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 70 61 72 74 }..../*..** part
014680: 69 61 6C 20 69 6E 73 74 72 75 63 74 69 6F 6E 20 ial instruction
014690: 74 6F 20 67 65 74 20 69 6D 6D 65 64 69 61 74 65 to get immediate
0146A0: 20 76 61 6C 75 65 0D 0A 2A 2A 20 69 6E 74 6F 20 value..** into
0146B0: 74 68 65 20 70 72 69 6D 61 72 79 20 72 65 67 69 the primary regi
0146C0: 73 74 65 72 0D 0A 2A 2F 0D 0A 69 6D 6D 65 64 28 ster..*/..immed(
0146D0: 29 20 7B 0D 0A 20 20 6F 74 28 22 4C 58 49 20 48 ) {.. ot("LXI H
0146E0: 2C 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D ,");.. }..../*.
0146F0: 0A 2A 2A 20 70 61 72 74 69 61 6C 20 69 6E 73 74 .** partial inst
014700: 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 .. }..../*..**
014710: 70 6F 69 6E 74 20 74 6F 20 66 6F 6C 6C 6F 77 69 point to followi
014720: 6E 67 20 6F 62 6A 65 63 74 28 73 29 0D 0A 2A 2F ng object(s)..*/
014730: 0D 0A 70 6F 69 6E 74 28 29 20 7B 0D 0A 20 20 6F ..point() {.. o
014740: 6C 28 22 44 57 20 24 2B 32 22 29 3B 0D 0A 20 20 l("DW $+2");..
014750: 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 6D 6F 64 69 }..../*..** modi
014760: 66 79 20 73 74 61 63 6B 20 70 6F 69 6E 74 65 72 fy stack pointer
014770: 20 74 6F 20 76 61 6C 75 65 20 67 69 76 65 6E 0D to value given.
014780: 0A 2A 2F 0D 0A 6D 6F 64 73 74 6B 28 6E 65 77 73 .*/..modstk(news
014790: 70 2C 20 73 61 76 65 29 20 20 69 6E 74 20 6E 65 p, save) int ne
0147A0: 77 73 70 2C 20 73 61 76 65 3B 20 7B 0D 0A 20 20 wsp, save; {..
0147B0: 69 6E 74 20 6B 3B 0D 0A 20 20 6B 3D 6E 65 77 73 int k;.. k=news
0147C0: 70 2D 63 73 70 3B 0D 0A 20 20 69 66 28 6B 3D 3D p-csp;.. if(k==
0147D0: 30 29 72 65 74 75 72 6E 20 6E 65 77 73 70 3B 0D 0)return newsp;.
0147E0: 0A 20 20 69 66 28 6B 3E 3D 30 29 20 7B 0D 0A 20 . if(k>=0) {..
0147F0: 20 20 20 69 66 28 6B 3C 37 29 20 7B 0D 0A 20 20 if(k<7) {..
014800: 20 20 20 20 69 66 28 6B 26 31 29 20 7B 0D 0A 20 if(k&1) {..
014810: 20 20 20 20 20 20 20 6F 6C 28 22 49 4E 58 20 53 ol("INX S
014820: 50 22 29 3B 0D 0A 20 20 20 20 20 20 20 20 6B 2D P");.. k-
014830: 2D 3B 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 -;.. }..
014840: 20 20 20 20 20 77 68 69 6C 65 28 6B 29 20 7B 0D while(k) {.
014850: 0A 20 20 20 20 20 20 20 20 6F 6C 28 22 50 4F 50 . ol("POP
014860: 20 42 22 29 3B 0D 0A 20 20 20 20 20 20 20 20 6B B");.. k
014870: 3D 6B 2D 42 50 57 3B 0D 0A 20 20 20 20 20 20 20 =k-BPW;..
014880: 20 7D 0D 0A 20 20 20 20 20 20 72 65 74 75 72 6E }.. return
014890: 20 6E 65 77 73 70 3B 0D 0A 20 20 20 20 20 20 7D newsp;.. }
0148A0: 0D 0A 20 20 20 20 7D 0D 0A 20 20 69 66 28 6B 3C .. }.. if(k<
0148B0: 30 29 20 7B 0D 0A 20 20 20 20 69 66 28 6B 3E 2D 0) {.. if(k>-
0148C0: 37 29 20 7B 0D 0A 20 20 20 20 20 20 69 66 28 6B 7) {.. if(k
0148D0: 26 31 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 6F &1) {.. o
0148E0: 6C 28 22 44 43 58 20 53 50 22 29 3B 0D 0A 20 20 l("DCX SP");..
0148F0: 20 20 20 20 20 20 6B 2B 2B 3B 0D 0A 20 20 20 20 k++;..
014900: 72 75 63 74 69 6F 6E 20 74 6F 20 67 65 74 20 69 ruction to get i
014910: 6D 6D 65 64 69 61 74 65 20 6F 70 65 72 61 6E 64 mmediate operand
014920: 0D 0A 2A 2A 20 69 6E 74 6F 20 73 65 63 6F 6E 64 ..** into second
014930: 61 72 79 20 72 65 67 69 73 74 65 72 0D 0A 2A 2F ary register..*/
014940: 0D 0A 69 6D 6D 65 64 32 28 29 20 7B 0D 0A 20 20 ..immed2() {..
014950: 6F 74 28 22 4C 58 49 20 44 2C 22 29 3B 0D 0A 20 ot("LXI D,");..
014960: 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 70 75 73 }..../*..** pus
014970: 68 20 70 72 69 6D 61 72 79 20 72 65 67 69 73 74 h primary regist
014980: 65 72 20 6F 6E 74 6F 20 73 74 61 63 6B 0D 0A 2A er onto stack..*
014990: 2F 0D 0A 70 75 73 68 28 29 20 7B 0D 0A 20 20 6F /..push() {.. o
0149A0: 6C 28 22 50 55 53 48 20 48 22 29 3B 0D 0A 20 20 l("PUSH H");..
0149B0: 63 73 70 3D 63 73 70 2D 42 50 57 3B 0D 0A 20 20 csp=csp-BPW;..
0149C0: 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 75 6E 70 75 }..../*..** unpu
0149D0: 73 68 20 6F 72 20 70 6F 70 20 61 73 20 72 65 71 sh or pop as req
0149E0: 75 69 72 65 64 0D 0A 2A 2F 0D 0A 73 6D 61 72 74 uired..*/..smart
0149F0: 70 6F 70 28 6C 76 61 6C 2C 20 73 74 61 72 74 29 pop(lval, start)
014A00: 20 69 6E 74 20 6C 76 61 6C 5B 5D 3B 20 63 68 61 int lval[]; cha
014A10: 72 20 2A 73 74 61 72 74 3B 20 7B 0D 0A 20 20 69 r *start; {.. i
014A20: 66 28 6C 76 61 6C 5B 35 5D 29 20 20 70 6F 70 28 f(lval[5]) pop(
014A30: 29 3B 09 09 2F 2A 20 73 65 63 6F 6E 64 61 72 79 );../* secondary
014A40: 20 77 61 73 20 75 73 65 64 20 2A 2F 0D 0A 20 20 was used */..
014A50: 65 6C 73 65 20 75 6E 70 75 73 68 28 73 74 61 72 else unpush(star
014A60: 74 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A t);.. }..../*..
014A70: 2A 2A 20 72 65 70 6C 61 63 65 20 61 20 70 75 73 ** replace a pus
014A80: 68 20 77 69 74 68 20 61 20 73 77 61 70 0D 0A 2A h with a swap..*
014A90: 2F 0D 0A 75 6E 70 75 73 68 28 64 65 73 74 29 20 /..unpush(dest)
014AA0: 63 68 61 72 20 2A 64 65 73 74 3B 20 7B 0D 0A 20 char *dest; {..
014AB0: 20 69 6E 74 20 69 3B 0D 0A 20 20 63 68 61 72 20 int i;.. char
014AC0: 2A 73 6F 75 72 3B 0D 0A 20 20 73 6F 75 72 3D 22 *sour;.. sour="
014AD0: 58 43 48 47 3B 3B 22 3B 09 09 2F 2A 20 70 65 65 XCHG;;";../* pee
014AE0: 70 68 6F 6C 65 28 29 20 75 73 65 73 20 74 72 61 phole() uses tra
014AF0: 69 6C 69 6E 67 20 22 3B 3B 22 20 2A 2F 0D 0A 20 iling ";;" */..
014B00: 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 77 68 69 }.. whi
014B10: 6C 65 28 6B 29 20 7B 0D 0A 20 20 20 20 20 20 20 le(k) {..
014B20: 20 6F 6C 28 22 50 55 53 48 20 42 22 29 3B 0D 0A ol("PUSH B");..
014B30: 20 20 20 20 20 20 20 20 6B 3D 6B 2B 42 50 57 3B k=k+BPW;
014B40: 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 .. }..
014B50: 20 20 20 72 65 74 75 72 6E 20 6E 65 77 73 70 3B return newsp;
014B60: 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 7D .. }.. }
014B70: 0D 0A 20 20 69 66 28 73 61 76 65 29 20 73 77 61 .. if(save) swa
014B80: 70 28 29 3B 0D 0A 20 20 63 6F 6E 73 74 28 6B 29 p();.. const(k)
014B90: 3B 0D 0A 20 20 6F 6C 28 22 44 41 44 20 53 50 22 ;.. ol("DAD SP"
014BA0: 29 3B 0D 0A 20 20 6F 6C 28 22 53 50 48 4C 22 29 );.. ol("SPHL")
014BB0: 3B 0D 0A 20 20 69 66 28 73 61 76 65 29 20 73 77 ;.. if(save) sw
014BC0: 61 70 28 29 3B 0D 0A 20 20 72 65 74 75 72 6E 20 ap();.. return
014BD0: 6E 65 77 73 70 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F newsp;.. }..../
014BE0: 2A 0D 0A 2A 2A 20 64 6F 75 62 6C 65 20 70 72 69 *..** double pri
014BF0: 6D 61 72 79 20 72 65 67 69 73 74 65 72 0D 0A 2A mary register..*
014C00: 2F 0D 0A 64 6F 75 62 6C 65 72 65 67 28 29 20 7B /..doublereg() {
014C10: 6F 6C 28 22 44 41 44 20 48 22 29 3B 7D 0D 0A 0D ol("DAD H");}...
014C20: 0A 3E 3E 3E 20 43 43 34 32 2E 43 20 35 36 31 35 .>>> CC42.C 5615
014C30: 0D 0A 2F 2A 0D 0A 2A 2A 20 61 64 64 20 70 72 69 ../*..** add pri
014C40: 6D 61 72 79 20 61 6E 64 20 73 65 63 6F 6E 64 61 mary and seconda
014C50: 72 79 20 72 65 67 69 73 74 65 72 73 20 28 72 65 ry registers (re
014C60: 73 75 6C 74 20 69 6E 20 70 72 69 6D 61 72 79 29 sult in primary)
014C70: 0D 0A 2A 2F 0D 0A 66 66 61 64 64 28 29 20 7B 6F ..*/..ffadd() {o
014C80: 6C 28 22 44 41 44 20 44 22 29 3B 7D 0D 0A 0D 0A l("DAD D");}....
014C90: 2F 2A 0D 0A 2A 2A 20 73 75 62 74 72 61 63 74 20 /*..** subtract
014CA0: 70 72 69 6D 61 72 79 20 66 72 6F 6D 20 73 65 63 primary from sec
014CB0: 6F 6E 64 61 72 79 20 72 65 67 69 73 74 65 72 20 ondary register
014CC0: 28 72 65 73 75 6C 74 20 69 6E 20 70 72 69 6D 61 (result in prima
014CD0: 72 79 29 0D 0A 2A 2F 0D 0A 66 66 73 75 62 28 29 ry)..*/..ffsub()
014CE0: 20 7B 66 66 63 61 6C 6C 28 22 43 43 53 55 42 23 {ffcall("CCSUB#
014CF0: 23 22 29 3B 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 #");}..../*..**
014D00: 20 77 68 69 6C 65 28 2A 73 6F 75 72 29 20 2A 64 while(*sour) *d
014D10: 65 73 74 2B 2B 20 3D 20 2A 73 6F 75 72 2B 2B 3B est++ = *sour++;
014D20: 0D 0A 20 20 73 6F 75 72 3D 73 74 61 67 65 6E 65 .. sour=stagene
014D30: 78 74 3B 0D 0A 20 20 77 68 69 6C 65 28 2D 2D 73 xt;.. while(--s
014D40: 6F 75 72 20 3E 20 64 65 73 74 29 20 7B 09 2F 2A our > dest) {./*
014D50: 20 61 64 6A 75 73 74 20 73 74 61 63 6B 20 72 65 adjust stack re
014D60: 66 65 72 65 6E 63 65 73 20 2A 2F 0D 0A 20 20 20 ferences */..
014D70: 20 69 66 28 73 74 72 65 71 28 73 6F 75 72 2C 22 if(streq(sour,"
014D80: 44 41 44 20 53 50 22 29 29 20 7B 0D 0A 20 20 20 DAD SP")) {..
014D90: 20 20 20 2D 2D 73 6F 75 72 3B 0D 0A 20 20 20 20 --sour;..
014DA0: 20 20 69 3D 42 50 57 3B 0D 0A 20 20 20 20 20 20 i=BPW;..
014DB0: 77 68 69 6C 65 28 69 73 64 69 67 69 74 28 2A 28 while(isdigit(*(
014DC0: 2D 2D 73 6F 75 72 29 29 29 20 7B 0D 0A 20 20 20 --sour))) {..
014DD0: 20 20 20 20 20 69 66 28 28 2A 73 6F 75 72 20 3D if((*sour =
014DE0: 20 2A 73 6F 75 72 2D 69 29 20 3C 20 27 30 27 29 *sour-i) < '0')
014DF0: 20 7B 0D 0A 20 20 20 20 20 20 20 20 20 20 2A 73 {.. *s
014E00: 6F 75 72 20 3D 20 2A 73 6F 75 72 2B 31 30 3B 0D our = *sour+10;.
014E10: 0A 20 20 20 20 20 20 20 20 20 20 69 3D 31 3B 0D . i=1;.
014E20: 0A 20 20 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 . }..
014E30: 20 20 20 20 20 20 65 6C 73 65 20 69 3D 30 3B 0D else i=0;.
014E40: 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 . }..
014E50: 20 20 7D 0D 0A 20 20 20 20 7D 0D 0A 20 20 63 73 }.. }.. cs
014E60: 70 3D 63 73 70 2B 42 50 57 3B 0D 0A 20 20 7D 0D p=csp+BPW;.. }.
014E70: 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 70 6F 70 20 73 74 .../*..** pop st
014E80: 61 63 6B 20 74 6F 20 74 68 65 20 73 65 63 6F 6E ack to the secon
014E90: 64 61 72 79 20 72 65 67 69 73 74 65 72 0D 0A 2A dary register..*
014EA0: 2F 0D 0A 70 6F 70 28 29 20 7B 0D 0A 20 20 6F 6C /..pop() {.. ol
014EB0: 28 22 50 4F 50 20 44 22 29 3B 0D 0A 20 20 63 73 ("POP D");.. cs
014EC0: 70 3D 63 73 70 2B 42 50 57 3B 0D 0A 20 20 7D 0D p=csp+BPW;.. }.
014ED0: 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 73 77 61 70 20 70 .../*..** swap p
014EE0: 72 69 6D 61 72 79 20 72 65 67 69 73 74 65 72 20 rimary register
014EF0: 61 6E 64 20 73 74 61 63 6B 0D 0A 2A 2F 0D 0A 73 and stack..*/..s
014F00: 6D 75 6C 74 69 70 6C 79 20 70 72 69 6D 61 72 79 multiply primary
014F10: 20 61 6E 64 20 73 65 63 6F 6E 64 61 72 79 20 72 and secondary r
014F20: 65 67 69 73 74 65 72 73 20 28 72 65 73 75 6C 74 egisters (result
014F30: 20 69 6E 20 70 72 69 6D 61 72 79 29 0D 0A 2A 2F in primary)..*/
014F40: 0D 0A 66 66 6D 75 6C 74 28 29 20 7B 66 66 63 61 ..ffmult() {ffca
014F50: 6C 6C 28 22 43 43 4D 55 4C 54 23 23 22 29 3B 7D ll("CCMULT##");}
014F60: 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 64 69 76 69 64 ..../*..** divid
014F70: 65 20 73 65 63 6F 6E 64 61 72 79 20 62 79 20 70 e secondary by p
014F80: 72 69 6D 61 72 79 20 72 65 67 69 73 74 65 72 0D rimary register.
014F90: 0A 2A 2A 20 28 71 75 6F 74 69 65 6E 74 20 69 6E .** (quotient in
014FA0: 20 70 72 69 6D 61 72 79 2C 20 72 65 6D 61 69 6E primary, remain
014FB0: 64 65 72 20 69 6E 20 73 65 63 6F 6E 64 61 72 79 der in secondary
014FC0: 29 0D 0A 2A 2F 0D 0A 66 66 64 69 76 28 29 20 7B )..*/..ffdiv() {
014FD0: 66 66 63 61 6C 6C 28 22 43 43 44 49 56 23 23 22 ffcall("CCDIV##"
014FE0: 29 3B 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 72 65 );}..../*..** re
014FF0: 6D 61 69 6E 64 65 72 20 6F 66 20 73 65 63 6F 6E mainder of secon
015000: 64 61 72 79 2F 70 72 69 6D 61 72 79 0D 0A 2A 2A dary/primary..**
015010: 20 28 72 65 6D 61 69 6E 64 65 72 20 69 6E 20 70 (remainder in p
015020: 72 69 6D 61 72 79 2C 20 71 75 6F 74 69 65 6E 74 rimary, quotient
015030: 20 69 6E 20 73 65 63 6F 6E 64 61 72 79 29 0D 0A in secondary)..
015040: 2A 2F 0D 0A 66 66 6D 6F 64 28 29 20 7B 66 66 64 */..ffmod() {ffd
015050: 69 76 28 29 3B 73 77 61 70 28 29 3B 7D 0D 0A 0D iv();swap();}...
015060: 0A 2F 2A 0D 0A 2A 2A 20 69 6E 63 6C 75 73 69 76 ./*..** inclusiv
015070: 65 20 22 6F 72 22 20 70 72 69 6D 61 72 79 20 61 e "or" primary a
015080: 6E 64 20 73 65 63 6F 6E 64 61 72 79 20 72 65 67 nd secondary reg
015090: 69 73 74 65 72 73 0D 0A 2A 2A 20 28 72 65 73 75 isters..** (resu
0150A0: 6C 74 20 69 6E 20 70 72 69 6D 61 72 79 29 0D 0A lt in primary)..
0150B0: 2A 2F 0D 0A 66 66 6F 72 28 29 20 7B 66 66 63 61 */..ffor() {ffca
0150C0: 6C 6C 28 22 43 43 4F 52 23 23 22 29 3B 7D 0D 0A ll("CCOR##");}..
0150D0: 0D 0A 2F 2A 0D 0A 2A 2A 20 65 78 63 6C 75 73 69 ../*..** exclusi
0150E0: 76 65 20 22 6F 72 22 20 74 68 65 20 70 72 69 6D ve "or" the prim
0150F0: 61 72 79 20 61 6E 64 20 73 65 63 6F 6E 64 61 72 ary and secondar
015100: 77 61 70 73 74 6B 28 29 20 7B 0D 0A 20 20 6F 6C wapstk() {.. ol
015110: 28 22 58 54 48 4C 22 29 3B 0D 0A 20 20 7D 0D 0A ("XTHL");.. }..
015120: 0D 0A 2F 2A 0D 0A 2A 2A 20 70 72 6F 63 65 73 73 ../*..** process
015130: 20 73 77 69 74 63 68 20 73 74 61 74 65 6D 65 6E switch statemen
015140: 74 0D 0A 2A 2F 0D 0A 73 77 28 29 20 7B 0D 0A 20 t..*/..sw() {..
015150: 20 66 66 63 61 6C 6C 28 22 43 43 53 57 49 54 43 ffcall("CCSWITC
015160: 48 23 23 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F H##");.. }..../
015170: 2A 0D 0A 2A 2A 20 63 61 6C 6C 20 73 70 65 63 69 *..** call speci
015180: 66 69 65 64 20 73 75 62 72 6F 75 74 69 6E 65 20 fied subroutine
015190: 6E 61 6D 65 0D 0A 2A 2F 0D 0A 66 66 63 61 6C 6C name..*/..ffcall
0151A0: 28 73 6E 61 6D 65 29 20 20 63 68 61 72 20 2A 73 (sname) char *s
0151B0: 6E 61 6D 65 3B 20 7B 0D 0A 20 20 6F 74 28 22 43 name; {.. ot("C
0151C0: 41 4C 4C 20 22 29 3B 0D 0A 20 20 6F 75 74 73 74 ALL ");.. outst
0151D0: 72 28 73 6E 61 6D 65 29 3B 0D 0A 20 20 6E 6C 28 r(sname);.. nl(
0151E0: 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A );.. }..../*..*
0151F0: 2A 20 72 65 74 75 72 6E 20 66 72 6F 6D 20 73 75 * return from su
015200: 62 72 6F 75 74 69 6E 65 0D 0A 2A 2F 0D 0A 66 66 broutine..*/..ff
015210: 72 65 74 28 29 20 7B 0D 0A 20 20 6F 6C 28 22 52 ret() {.. ol("R
015220: 45 54 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A ET");.. }..../*
015230: 0D 0A 2A 2A 20 70 65 72 66 6F 72 6D 20 73 75 62 ..** perform sub
015240: 72 6F 75 74 69 6E 65 20 63 61 6C 6C 20 74 6F 20 routine call to
015250: 76 61 6C 75 65 20 6F 6E 20 73 74 61 63 6B 0D 0A value on stack..
015260: 2A 2F 0D 0A 63 61 6C 6C 73 74 6B 28 29 20 7B 0D */..callstk() {.
015270: 0A 20 20 66 66 63 61 6C 6C 28 22 43 43 44 43 41 . ffcall("CCDCA
015280: 4C 23 23 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F L##");.. }..../
015290: 2A 0D 0A 2A 2A 20 6A 75 6D 70 20 74 6F 20 69 6E *..** jump to in
0152A0: 74 65 72 6E 61 6C 20 6C 61 62 65 6C 20 6E 75 6D ternal label num
0152B0: 62 65 72 0D 0A 2A 2F 0D 0A 6A 75 6D 70 28 6C 61 ber..*/..jump(la
0152C0: 62 65 6C 29 20 20 69 6E 74 20 6C 61 62 65 6C 3B bel) int label;
0152D0: 20 7B 0D 0A 20 20 6F 74 28 22 4A 4D 50 20 22 29 {.. ot("JMP ")
0152E0: 3B 0D 0A 20 20 70 72 69 6E 74 6C 61 62 65 6C 28 ;.. printlabel(
0152F0: 6C 61 62 65 6C 29 3B 0D 0A 20 20 6E 6C 28 29 3B label);.. nl();
015300: 79 20 72 65 67 69 73 74 65 72 73 0D 0A 2A 2A 20 y registers..**
015310: 28 72 65 73 75 6C 74 20 69 6E 20 70 72 69 6D 61 (result in prima
015320: 72 79 29 0D 0A 2A 2F 0D 0A 66 66 78 6F 72 28 29 ry)..*/..ffxor()
015330: 20 7B 66 66 63 61 6C 6C 28 22 43 43 58 4F 52 23 {ffcall("CCXOR#
015340: 23 22 29 3B 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 #");}..../*..**
015350: 22 61 6E 64 22 20 70 72 69 6D 61 72 79 20 61 6E "and" primary an
015360: 64 20 73 65 63 6F 6E 64 61 72 79 20 72 65 67 69 d secondary regi
015370: 73 74 65 72 73 0D 0A 2A 2A 20 28 72 65 73 75 6C sters..** (resul
015380: 74 20 69 6E 20 70 72 69 6D 61 72 79 29 0D 0A 2A t in primary)..*
015390: 2F 0D 0A 66 66 61 6E 64 28 29 20 7B 66 66 63 61 /..ffand() {ffca
0153A0: 6C 6C 28 22 43 43 41 4E 44 23 23 22 29 3B 7D 0D ll("CCAND##");}.
0153B0: 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 6C 6F 67 69 63 61 .../*..** logica
0153C0: 6C 20 6E 65 67 61 74 69 6F 6E 20 6F 66 20 70 72 l negation of pr
0153D0: 69 6D 61 72 79 20 72 65 67 69 73 74 65 72 0D 0A imary register..
0153E0: 2A 2F 0D 0A 6C 6E 65 67 28 29 20 7B 66 66 63 61 */..lneg() {ffca
0153F0: 6C 6C 28 22 43 43 4C 4E 45 47 23 23 22 29 3B 7D ll("CCLNEG##");}
015400: 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 61 72 69 74 68 ..../*..** arith
015410: 6D 65 74 69 63 20 73 68 69 66 74 20 72 69 67 68 metic shift righ
015420: 74 20 73 65 63 6F 6E 64 61 72 79 20 72 65 67 69 t secondary regi
015430: 73 74 65 72 0D 0A 2A 2A 20 6E 75 6D 62 65 72 20 ster..** number
015440: 6F 66 20 62 69 74 73 20 67 69 76 65 6E 20 69 6E of bits given in
015450: 20 70 72 69 6D 61 72 79 20 72 65 67 69 73 74 65 primary registe
015460: 72 0D 0A 2A 2A 20 28 72 65 73 75 6C 74 20 69 6E r..** (result in
015470: 20 70 72 69 6D 61 72 79 29 0D 0A 2A 2F 0D 0A 66 primary)..*/..f
015480: 66 61 73 72 28 29 20 7B 66 66 63 61 6C 6C 28 22 fasr() {ffcall("
015490: 43 43 41 53 52 23 23 22 29 3B 7D 0D 0A 0D 0A 2F CCASR##");}..../
0154A0: 2A 0D 0A 2A 2A 20 61 72 69 74 68 6D 65 74 69 63 *..** arithmetic
0154B0: 20 73 68 69 66 74 20 6C 65 66 74 20 73 65 63 6F shift left seco
0154C0: 6E 64 61 72 79 20 72 65 67 69 73 74 65 72 0D 0A ndary register..
0154D0: 2A 2A 20 6E 75 6D 62 65 72 20 6F 66 20 62 69 74 ** number of bit
0154E0: 73 20 67 69 76 65 6E 20 69 6E 20 70 72 69 6D 61 s given in prima
0154F0: 72 79 20 72 65 67 69 73 74 65 72 0D 0A 2A 2A 20 ry register..**
015500: 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 .. }..../*..**
015510: 74 65 73 74 20 70 72 69 6D 61 72 79 20 72 65 67 test primary reg
015520: 69 73 74 65 72 20 61 6E 64 20 6A 75 6D 70 20 69 ister and jump i
015530: 66 20 66 61 6C 73 65 0D 0A 2A 2F 0D 0A 74 65 73 f false..*/..tes
015540: 74 6A 75 6D 70 28 6C 61 62 65 6C 29 20 20 69 6E tjump(label) in
015550: 74 20 6C 61 62 65 6C 3B 20 7B 0D 0A 20 20 6F 6C t label; {.. ol
015560: 28 22 4D 4F 56 20 41 2C 48 22 29 3B 0D 0A 20 20 ("MOV A,H");..
015570: 6F 6C 28 22 4F 52 41 20 4C 22 29 3B 0D 0A 20 20 ol("ORA L");..
015580: 6F 74 28 22 4A 5A 20 22 29 3B 0D 0A 20 20 70 72 ot("JZ ");.. pr
015590: 69 6E 74 6C 61 62 65 6C 28 6C 61 62 65 6C 29 3B intlabel(label);
0155A0: 0D 0A 20 20 6E 6C 28 29 3B 0D 0A 20 20 7D 0D 0A .. nl();.. }..
0155B0: 0D 0A 2F 2A 0D 0A 2A 2A 20 74 65 73 74 20 70 72 ../*..** test pr
0155C0: 69 6D 61 72 79 20 72 65 67 69 73 74 65 72 20 61 imary register a
0155D0: 67 61 69 6E 73 74 20 7A 65 72 6F 20 61 6E 64 20 gainst zero and
0155E0: 6A 75 6D 70 20 69 66 20 66 61 6C 73 65 0D 0A 2A jump if false..*
0155F0: 2F 0D 0A 7A 65 72 6F 6A 75 6D 70 28 6F 70 65 72 /..zerojump(oper
015600: 2C 20 6C 61 62 65 6C 2C 20 6C 76 61 6C 29 20 69 , label, lval) i
015610: 6E 74 20 28 2A 6F 70 65 72 29 28 29 2C 20 6C 61 nt (*oper)(), la
015620: 62 65 6C 2C 20 6C 76 61 6C 5B 5D 3B 20 7B 0D 0A bel, lval[]; {..
015630: 20 20 63 6C 65 61 72 73 74 61 67 65 28 6C 76 61 clearstage(lva
015640: 6C 5B 37 5D 2C 20 30 29 3B 09 2F 2A 20 70 75 72 l[7], 0);./* pur
015650: 67 65 20 63 6F 6E 76 65 6E 74 69 6F 6E 61 6C 20 ge conventional
015660: 63 6F 64 65 20 2A 2F 0D 0A 20 20 28 2A 6F 70 65 code */.. (*ope
015670: 72 29 28 6C 61 62 65 6C 29 3B 0D 0A 20 20 7D 0D r)(label);.. }.
015680: 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 64 65 66 69 6E 65 .../*..** define
015690: 20 73 74 6F 72 61 67 65 20 61 63 63 6F 72 64 69 storage accordi
0156A0: 6E 67 20 74 6F 20 73 69 7A 65 0D 0A 2A 2F 0D 0A ng to size..*/..
0156B0: 64 65 66 73 74 6F 72 61 67 65 28 73 69 7A 65 29 defstorage(size)
0156C0: 20 69 6E 74 20 73 69 7A 65 3B 20 7B 0D 0A 20 20 int size; {..
0156D0: 69 66 28 73 69 7A 65 3D 3D 31 29 20 6F 74 28 22 if(size==1) ot("
0156E0: 44 42 20 22 29 3B 0D 0A 20 20 65 6C 73 65 20 20 DB ");.. else
0156F0: 20 20 20 20 20 20 6F 74 28 22 44 57 20 22 29 3B ot("DW ");
015700: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
015710: 12 00 01 00 02 09 52 E5 12 00 41 02 00 00 00 02 ......R...A.....
015720: 12 00 46 02 00 00 00 02 12 00 42 02 00 00 00 02 ..F.......B.....
015730: 12 00 47 02 00 00 00 02 12 00 43 02 00 00 00 02 ..G.......C.....
015740: 12 00 48 02 00 00 00 02 12 00 44 02 00 00 00 02 ..H.......D.....
015750: 12 00 49 02 00 00 00 02 12 00 45 02 00 00 00 02 ..I.......E.....
015760: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
015770: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
015780: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
015790: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0157A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0157B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0157C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0157D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0157E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0157F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
015800: 28 72 65 73 75 6C 74 20 69 6E 20 70 72 69 6D 61 (result in prima
015810: 72 79 29 0D 0A 2A 2F 0D 0A 66 66 61 73 6C 28 29 ry)..*/..ffasl()
015820: 20 7B 66 66 63 61 6C 6C 28 22 43 43 41 53 4C 23 {ffcall("CCASL#
015830: 23 22 29 3B 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 #");}..../*..**
015840: 74 77 6F 27 73 20 63 6F 6D 70 6C 65 6D 65 6E 74 two's complement
015850: 20 70 72 69 6D 61 72 79 20 72 65 67 69 73 74 65 primary registe
015860: 72 0D 0A 2A 2F 0D 0A 6E 65 67 28 29 20 7B 66 66 r..*/..neg() {ff
015870: 63 61 6C 6C 28 22 43 43 4E 45 47 23 23 22 29 3B call("CCNEG##");
015880: 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 6F 6E 65 27 }..../*..** one'
015890: 73 20 63 6F 6D 70 6C 65 6D 65 6E 74 20 70 72 69 s complement pri
0158A0: 6D 61 72 79 20 72 65 67 69 73 74 65 72 0D 0A 2A mary register..*
0158B0: 2F 0D 0A 63 6F 6D 28 29 20 7B 66 66 63 61 6C 6C /..com() {ffcall
0158C0: 28 22 43 43 43 4F 4D 23 23 22 29 3B 7D 0D 0A 0D ("CCCOM##");}...
0158D0: 0A 2F 2A 0D 0A 2A 2A 20 69 6E 63 72 65 6D 65 6E ./*..** incremen
0158E0: 74 20 70 72 69 6D 61 72 79 20 72 65 67 69 73 74 t primary regist
0158F0: 65 72 20 62 79 20 6F 6E 65 20 6F 62 6A 65 63 74 er by one object
015900: 20 6F 66 20 77 68 61 74 65 76 65 72 20 73 69 7A of whatever siz
015910: 65 0D 0A 2A 2F 0D 0A 69 6E 63 28 6E 29 20 69 6E e..*/..inc(n) in
015920: 74 20 6E 3B 20 7B 0D 0A 20 20 77 68 69 6C 65 28 t n; {.. while(
015930: 31 29 20 7B 0D 0A 20 20 20 20 6F 6C 28 22 49 4E 1) {.. ol("IN
015940: 58 20 48 22 29 3B 0D 0A 20 20 20 20 69 66 28 2D X H");.. if(-
015950: 2D 6E 20 3C 20 31 29 20 62 72 65 61 6B 3B 0D 0A -n < 1) break;..
015960: 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A }.. }..../*
015970: 0D 0A 2A 2A 20 64 65 63 72 65 6D 65 6E 74 20 70 ..** decrement p
015980: 72 69 6D 61 72 79 20 72 65 67 69 73 74 65 72 20 rimary register
015990: 62 79 20 6F 6E 65 20 6F 62 6A 65 63 74 20 6F 66 by one object of
0159A0: 20 77 68 61 74 65 76 65 72 20 73 69 7A 65 0D 0A whatever size..
0159B0: 2A 2F 0D 0A 64 65 63 28 6E 29 20 69 6E 74 20 6E */..dec(n) int n
0159C0: 3B 20 7B 0D 0A 20 20 77 68 69 6C 65 28 31 29 20 ; {.. while(1)
0159D0: 7B 0D 0A 20 20 20 20 6F 6C 28 22 44 43 58 20 48 {.. ol("DCX H
0159E0: 22 29 3B 0D 0A 20 20 20 20 69 66 28 2D 2D 6E 20 ");.. if(--n
0159F0: 3C 20 31 29 20 62 72 65 61 6B 3B 0D 0A 20 20 20 < 1) break;..
015A00: 20 20 20 69 66 28 73 74 72 65 71 28 70 74 72 2B if(streq(ptr+
015A10: 32 39 2C 20 22 58 43 48 47 3B 3B 22 29 29 20 7B 29, "XCHG;;")) {
015A20: 70 70 32 28 29 3B 70 74 72 3D 70 74 72 2B 33 36 pp2();ptr=ptr+36
015A30: 3B 7D 0D 0A 20 20 20 20 20 20 65 6C 73 65 20 20 ;}.. else
015A40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
015A50: 20 20 20 20 20 20 7B 70 70 31 28 29 3B 70 74 72 {pp1();ptr
015A60: 3D 70 74 72 2B 32 39 3B 7D 0D 0A 20 20 20 20 20 =ptr+29;}..
015A70: 20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 28 }.. else if(
015A80: 73 74 72 65 71 28 70 74 72 2C 22 4C 58 49 20 48 streq(ptr,"LXI H
015A90: 2C 32 5C 6E 44 41 44 20 53 50 5C 6E 43 41 4C 4C ,2\nDAD SP\nCALL
015AA0: 20 43 43 47 49 4E 54 23 23 22 29 29 20 7B 0D 0A CCGINT##")) {..
015AB0: 20 20 20 20 20 20 69 66 28 73 74 72 65 71 28 70 if(streq(p
015AC0: 74 72 2B 32 39 2C 20 22 58 43 48 47 3B 3B 22 29 tr+29, "XCHG;;")
015AD0: 29 20 7B 70 70 33 28 70 70 32 29 3B 70 74 72 3D ) {pp3(pp2);ptr=
015AE0: 70 74 72 2B 33 36 3B 7D 0D 0A 20 20 20 20 20 20 ptr+36;}..
015AF0: 65 6C 73 65 20 20 20 20 20 20 20 20 20 20 20 20 else
015B00: 20 20 20 20 20 20 20 20 20 20 20 20 7B 70 70 33 {pp3
015B10: 28 70 70 31 29 3B 70 74 72 3D 70 74 72 2B 32 39 (pp1);ptr=ptr+29
015B20: 3B 7D 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 ;}.. }..
015B30: 20 65 6C 73 65 20 69 66 28 6F 70 74 69 6D 69 7A else if(optimiz
015B40: 65 29 20 7B 0D 0A 20 20 20 20 20 20 69 66 28 73 e) {.. if(s
015B50: 74 72 65 71 28 70 74 72 2C 20 22 44 41 44 20 53 treq(ptr, "DAD S
015B60: 50 5C 6E 43 41 4C 4C 20 43 43 47 49 4E 54 23 23 P\nCALL CCGINT##
015B70: 22 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 6F ")) {.. o
015B80: 6C 28 22 43 41 4C 4C 20 43 43 44 53 47 49 23 23 l("CALL CCDSGI##
015B90: 22 29 3B 0D 0A 20 20 20 20 20 20 20 20 70 74 72 ");.. ptr
015BA0: 3D 70 74 72 2B 32 31 3B 0D 0A 20 20 20 20 20 20 =ptr+21;..
015BB0: 20 20 7D 0D 0A 20 20 20 20 20 20 65 6C 73 65 20 }.. else
015BC0: 69 66 28 73 74 72 65 71 28 70 74 72 2C 20 22 44 if(streq(ptr, "D
015BD0: 41 44 20 44 5C 6E 43 41 4C 4C 20 43 43 47 49 4E AD D\nCALL CCGIN
015BE0: 54 23 23 22 29 29 20 7B 0D 0A 20 20 20 20 20 20 T##")) {..
015BF0: 20 20 6F 6C 28 22 43 41 4C 4C 20 43 43 44 44 47 ol("CALL CCDDG
015C00: 20 7D 0D 0A 20 20 7D 0D 0A 20 0D 0A 2F 2A 0D 0A }.. }.. ../*..
015C10: 2A 2A 20 74 65 73 74 20 66 6F 72 20 65 71 75 61 ** test for equa
015C20: 6C 20 74 6F 0D 0A 2A 2F 0D 0A 66 66 65 71 28 29 l to..*/..ffeq()
015C30: 20 20 7B 66 66 63 61 6C 6C 28 22 43 43 45 51 23 {ffcall("CCEQ#
015C40: 23 22 29 3B 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 #");}..../*..**
015C50: 74 65 73 74 20 66 6F 72 20 65 71 75 61 6C 20 74 test for equal t
015C60: 6F 20 7A 65 72 6F 0D 0A 2A 2F 0D 0A 65 71 30 28 o zero..*/..eq0(
015C70: 6C 61 62 65 6C 29 20 69 6E 74 20 6C 61 62 65 6C label) int label
015C80: 3B 20 7B 0D 0A 20 20 6F 6C 28 22 4D 4F 56 20 41 ; {.. ol("MOV A
015C90: 2C 48 22 29 3B 0D 0A 20 20 6F 6C 28 22 4F 52 41 ,H");.. ol("ORA
015CA0: 20 4C 22 29 3B 0D 0A 20 20 6F 74 28 22 4A 4E 5A L");.. ot("JNZ
015CB0: 20 22 29 3B 0D 0A 20 20 70 72 69 6E 74 6C 61 62 ");.. printlab
015CC0: 65 6C 28 6C 61 62 65 6C 29 3B 0D 0A 20 20 6E 6C el(label);.. nl
015CD0: 28 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A ();.. }..../*..
015CE0: 2A 2A 20 74 65 73 74 20 66 6F 72 20 6E 6F 74 20 ** test for not
015CF0: 65 71 75 61 6C 20 74 6F 0D 0A 2A 2F 0D 0A 66 66 equal to..*/..ff
015D00: 6E 65 28 29 20 20 7B 66 66 63 61 6C 6C 28 22 43 ne() {ffcall("C
015D10: 43 4E 45 23 23 22 29 3B 7D 0D 0A 0D 0A 2F 2A 0D CNE##");}..../*.
015D20: 0A 2A 2A 20 74 65 73 74 20 66 6F 72 20 6E 6F 74 .** test for not
015D30: 20 65 71 75 61 6C 20 74 6F 20 7A 65 72 6F 0D 0A equal to zero..
015D40: 2A 2F 0D 0A 6E 65 30 28 6C 61 62 65 6C 29 20 69 */..ne0(label) i
015D50: 6E 74 20 6C 61 62 65 6C 3B 20 7B 0D 0A 20 20 6F nt label; {.. o
015D60: 6C 28 22 4D 4F 56 20 41 2C 48 22 29 3B 0D 0A 20 l("MOV A,H");..
015D70: 20 6F 6C 28 22 4F 52 41 20 4C 22 29 3B 0D 0A 20 ol("ORA L");..
015D80: 20 6F 74 28 22 4A 5A 20 22 29 3B 0D 0A 20 20 70 ot("JZ ");.. p
015D90: 72 69 6E 74 6C 61 62 65 6C 28 6C 61 62 65 6C 29 rintlabel(label)
015DA0: 3B 0D 0A 20 20 6E 6C 28 29 3B 0D 0A 20 20 7D 0D ;.. nl();.. }.
015DB0: 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 74 65 73 74 20 66 .../*..** test f
015DC0: 6F 72 20 6C 65 73 73 20 74 68 61 6E 20 28 73 69 or less than (si
015DD0: 67 6E 65 64 29 0D 0A 2A 2F 0D 0A 66 66 6C 74 28 gned)..*/..fflt(
015DE0: 29 20 20 7B 66 66 63 61 6C 6C 28 22 43 43 4C 54 ) {ffcall("CCLT
015DF0: 23 23 22 29 3B 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A ##");}..../*..**
015E00: 49 23 23 22 29 3B 0D 0A 20 20 20 20 20 20 20 20 I##");..
015E10: 70 74 72 3D 70 74 72 2B 32 30 3B 0D 0A 20 20 20 ptr=ptr+20;..
015E20: 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 65 6C }.. el
015E30: 73 65 20 69 66 28 73 74 72 65 71 28 70 74 72 2C se if(streq(ptr,
015E40: 20 22 44 41 44 20 53 50 5C 6E 43 41 4C 4C 20 43 "DAD SP\nCALL C
015E50: 43 47 43 48 41 52 23 23 22 29 29 20 7B 0D 0A 20 CGCHAR##")) {..
015E60: 20 20 20 20 20 20 20 6F 6C 28 22 43 41 4C 4C 20 ol("CALL
015E70: 43 43 44 53 47 43 23 23 22 29 3B 0D 0A 20 20 20 CCDSGC##");..
015E80: 20 20 20 20 20 70 74 72 3D 70 74 72 2B 32 32 3B ptr=ptr+22;
015E90: 0D 0A 20 20 20 20 20 20 20 20 20 20 7D 0D 0A 20 .. }..
015EA0: 20 20 20 20 20 65 6C 73 65 20 69 66 28 73 74 72 else if(str
015EB0: 65 71 28 70 74 72 2C 20 22 44 41 44 20 44 5C 6E eq(ptr, "DAD D\n
015EC0: 43 41 4C 4C 20 43 43 47 43 48 41 52 23 23 22 29 CALL CCGCHAR##")
015ED0: 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 6F 6C 28 ) {.. ol(
015EE0: 22 43 41 4C 4C 20 43 43 44 44 47 43 23 23 22 29 "CALL CCDDGC##")
015EF0: 3B 0D 0A 20 20 20 20 20 20 20 20 70 74 72 3D 70 ;.. ptr=p
015F00: 74 72 2B 32 31 3B 0D 0A 20 20 20 20 20 20 20 20 tr+21;..
015F10: 7D 0D 0A 20 20 20 20 20 20 65 6C 73 65 20 69 66 }.. else if
015F20: 28 73 74 72 65 71 28 70 74 72 2C 0D 0A 20 20 20 (streq(ptr,..
015F30: 20 20 20 20 20 22 44 41 44 20 53 50 5C 6E 4D 4F "DAD SP\nMO
015F40: 56 20 44 2C 48 5C 6E 4D 4F 56 20 45 2C 4C 5C 6E V D,H\nMOV E,L\n
015F50: 43 41 4C 4C 20 43 43 47 49 4E 54 23 23 5C 6E 49 CALL CCGINT##\nI
015F60: 4E 58 20 48 5C 6E 43 41 4C 4C 20 43 43 50 49 4E NX H\nCALL CCPIN
015F70: 54 23 23 22 29 29 20 7B 0D 0A 20 20 20 20 20 20 T##")) {..
015F80: 20 20 6F 6C 28 22 43 41 4C 4C 20 43 43 49 4E 43 ol("CALL CCINC
015F90: 49 23 23 22 29 3B 0D 0A 20 20 20 20 20 20 20 20 I##");..
015FA0: 70 74 72 3D 70 74 72 2B 35 37 3B 0D 0A 20 20 20 ptr=ptr+57;..
015FB0: 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 65 6C }.. el
015FC0: 73 65 20 69 66 28 73 74 72 65 71 28 70 74 72 2C se if(streq(ptr,
015FD0: 0D 0A 20 20 20 20 20 20 20 20 22 44 41 44 20 53 .. "DAD S
015FE0: 50 5C 6E 4D 4F 56 20 44 2C 48 5C 6E 4D 4F 56 20 P\nMOV D,H\nMOV
015FF0: 45 2C 4C 5C 6E 43 41 4C 4C 20 43 43 47 49 4E 54 E,L\nCALL CCGINT
016000: 20 74 65 73 74 20 66 6F 72 20 6C 65 73 73 20 74 test for less t
016010: 68 61 6E 20 74 6F 20 7A 65 72 6F 0D 0A 2A 2F 0D han to zero..*/.
016020: 0A 6C 74 30 28 6C 61 62 65 6C 29 20 69 6E 74 20 .lt0(label) int
016030: 6C 61 62 65 6C 3B 20 7B 0D 0A 20 20 6F 6C 28 22 label; {.. ol("
016040: 58 52 41 20 41 22 29 3B 0D 0A 20 20 6F 6C 28 22 XRA A");.. ol("
016050: 4F 52 41 20 48 22 29 3B 0D 0A 20 20 6F 74 28 22 ORA H");.. ot("
016060: 4A 50 20 22 29 3B 0D 0A 20 20 70 72 69 6E 74 6C JP ");.. printl
016070: 61 62 65 6C 28 6C 61 62 65 6C 29 3B 0D 0A 20 20 abel(label);..
016080: 6E 6C 28 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A nl();.. }..../*
016090: 0D 0A 2A 2A 20 74 65 73 74 20 66 6F 72 20 6C 65 ..** test for le
0160A0: 73 73 20 74 68 61 6E 20 6F 72 20 65 71 75 61 6C ss than or equal
0160B0: 20 74 6F 20 28 73 69 67 6E 65 64 29 0D 0A 2A 2F to (signed)..*/
0160C0: 0D 0A 66 66 6C 65 28 29 20 20 7B 66 66 63 61 6C ..ffle() {ffcal
0160D0: 6C 28 22 43 43 4C 45 23 23 22 29 3B 7D 0D 0A 0D l("CCLE##");}...
0160E0: 0A 2F 2A 0D 0A 2A 2A 20 74 65 73 74 20 66 6F 72 ./*..** test for
0160F0: 20 6C 65 73 73 20 74 68 61 6E 20 6F 72 20 65 71 less than or eq
016100: 75 61 6C 20 74 6F 20 7A 65 72 6F 0D 0A 2A 2F 0D ual to zero..*/.
016110: 0A 6C 65 30 28 6C 61 62 65 6C 29 20 69 6E 74 20 .le0(label) int
016120: 6C 61 62 65 6C 3B 20 7B 0D 0A 20 20 6F 6C 28 22 label; {.. ol("
016130: 4D 4F 56 20 41 2C 48 22 29 3B 0D 0A 20 20 6F 6C MOV A,H");.. ol
016140: 28 22 4F 52 41 20 4C 22 29 3B 0D 0A 20 20 6F 6C ("ORA L");.. ol
016150: 28 22 4A 5A 20 24 2B 38 22 29 3B 0D 0A 20 20 6F ("JZ $+8");.. o
016160: 6C 28 22 58 52 41 20 41 22 29 3B 0D 0A 20 20 6F l("XRA A");.. o
016170: 6C 28 22 4F 52 41 20 48 22 29 3B 0D 0A 20 20 6F l("ORA H");.. o
016180: 74 28 22 4A 50 20 22 29 3B 0D 0A 20 20 70 72 69 t("JP ");.. pri
016190: 6E 74 6C 61 62 65 6C 28 6C 61 62 65 6C 29 3B 0D ntlabel(label);.
0161A0: 0A 20 20 6E 6C 28 29 3B 0D 0A 20 20 7D 0D 0A 0D . nl();.. }...
0161B0: 0A 2F 2A 0D 0A 2A 2A 20 74 65 73 74 20 66 6F 72 ./*..** test for
0161C0: 20 67 72 65 61 74 65 72 20 74 68 61 6E 20 28 73 greater than (s
0161D0: 69 67 6E 65 64 29 0D 0A 2A 2F 0D 0A 66 66 67 74 igned)..*/..ffgt
0161E0: 28 29 20 20 7B 66 66 63 61 6C 6C 28 22 43 43 47 () {ffcall("CCG
0161F0: 54 23 23 22 29 3B 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A T##");}..../*..*
016200: 23 23 5C 6E 44 43 58 20 48 5C 6E 43 41 4C 4C 20 ##\nDCX H\nCALL
016210: 43 43 50 49 4E 54 23 23 22 29 29 20 7B 0D 0A 20 CCPINT##")) {..
016220: 20 20 20 20 20 20 20 6F 6C 28 22 43 41 4C 4C 20 ol("CALL
016230: 43 43 44 45 43 49 23 23 22 29 3B 0D 0A 20 20 20 CCDECI##");..
016240: 20 20 20 20 20 70 74 72 3D 70 74 72 2B 35 37 3B ptr=ptr+57;
016250: 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 .. }..
016260: 20 20 20 65 6C 73 65 20 69 66 28 73 74 72 65 71 else if(streq
016270: 28 70 74 72 2C 0D 0A 20 20 20 20 20 20 20 20 22 (ptr,.. "
016280: 44 41 44 20 53 50 5C 6E 4D 4F 56 20 44 2C 48 5C DAD SP\nMOV D,H\
016290: 6E 4D 4F 56 20 45 2C 4C 5C 6E 43 41 4C 4C 20 43 nMOV E,L\nCALL C
0162A0: 43 47 43 48 41 52 23 23 5C 6E 49 4E 58 20 48 5C CGCHAR##\nINX H\
0162B0: 6E 4D 4F 56 20 41 2C 4C 5C 6E 53 54 41 58 20 44 nMOV A,L\nSTAX D
0162C0: 22 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 6F ")) {.. o
0162D0: 6C 28 22 43 41 4C 4C 20 43 43 49 4E 43 43 23 23 l("CALL CCINCC##
0162E0: 22 29 3B 0D 0A 20 20 20 20 20 20 20 20 70 74 72 ");.. ptr
0162F0: 3D 70 74 72 2B 35 39 3B 0D 0A 20 20 20 20 20 20 =ptr+59;..
016300: 20 20 7D 0D 0A 20 20 20 20 20 20 65 6C 73 65 20 }.. else
016310: 69 66 28 73 74 72 65 71 28 70 74 72 2C 0D 0A 20 if(streq(ptr,..
016320: 20 20 20 20 20 20 20 22 44 41 44 20 53 50 5C 6E "DAD SP\n
016330: 4D 4F 56 20 44 2C 48 5C 6E 4D 4F 56 20 45 2C 4C MOV D,H\nMOV E,L
016340: 5C 6E 43 41 4C 4C 20 43 43 47 43 48 41 52 23 23 \nCALL CCGCHAR##
016350: 5C 6E 44 43 58 20 48 5C 6E 4D 4F 56 20 41 2C 4C \nDCX H\nMOV A,L
016360: 5C 6E 53 54 41 58 20 44 22 29 29 20 7B 0D 0A 20 \nSTAX D")) {..
016370: 20 20 20 20 20 20 20 6F 6C 28 22 43 41 4C 4C 20 ol("CALL
016380: 43 43 44 45 43 43 23 23 22 29 3B 0D 0A 20 20 20 CCDECC##");..
016390: 20 20 20 20 20 70 74 72 3D 70 74 72 2B 35 39 3B ptr=ptr+59;
0163A0: 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 .. }..
0163B0: 20 20 20 65 6C 73 65 20 69 66 28 73 74 72 65 71 else if(streq
0163C0: 28 70 74 72 2C 20 22 44 41 44 20 44 5C 6E 50 4F (ptr, "DAD D\nPO
0163D0: 50 20 44 5C 6E 43 41 4C 4C 20 43 43 50 49 4E 54 P D\nCALL CCPINT
0163E0: 23 23 22 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 ##")) {..
0163F0: 20 6F 6C 28 22 43 41 4C 4C 20 43 44 50 44 50 49 ol("CALL CDPDPI
016400: 2A 20 74 65 73 74 20 66 6F 72 20 67 72 65 61 74 * test for great
016410: 65 72 20 74 68 61 6E 20 74 6F 20 7A 65 72 6F 0D er than to zero.
016420: 0A 2A 2F 0D 0A 67 74 30 28 6C 61 62 65 6C 29 20 .*/..gt0(label)
016430: 69 6E 74 20 6C 61 62 65 6C 3B 20 7B 0D 0A 20 20 int label; {..
016440: 6F 6C 28 22 58 52 41 20 41 22 29 3B 0D 0A 20 20 ol("XRA A");..
016450: 6F 6C 28 22 4F 52 41 20 48 22 29 3B 0D 0A 20 20 ol("ORA H");..
016460: 6F 74 28 22 4A 4D 20 22 29 3B 0D 0A 20 20 70 72 ot("JM ");.. pr
016470: 69 6E 74 6C 61 62 65 6C 28 6C 61 62 65 6C 29 3B intlabel(label);
016480: 0D 0A 20 20 6E 6C 28 29 3B 0D 0A 20 20 6F 6C 28 .. nl();.. ol(
016490: 22 4F 52 41 20 4C 22 29 3B 0D 0A 20 20 6F 74 28 "ORA L");.. ot(
0164A0: 22 4A 5A 20 22 29 3B 0D 0A 20 20 70 72 69 6E 74 "JZ ");.. print
0164B0: 6C 61 62 65 6C 28 6C 61 62 65 6C 29 3B 0D 0A 20 label(label);..
0164C0: 20 6E 6C 28 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F nl();.. }..../
0164D0: 2A 0D 0A 2A 2A 20 74 65 73 74 20 66 6F 72 20 67 *..** test for g
0164E0: 72 65 61 74 65 72 20 74 68 61 6E 20 6F 72 20 65 reater than or e
0164F0: 71 75 61 6C 20 74 6F 20 28 73 69 67 6E 65 64 29 qual to (signed)
016500: 0D 0A 2A 2F 0D 0A 66 66 67 65 28 29 20 20 7B 66 ..*/..ffge() {f
016510: 66 63 61 6C 6C 28 22 43 43 47 45 23 23 22 29 3B fcall("CCGE##");
016520: 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 74 65 73 74 }..../*..** test
016530: 20 66 6F 72 20 67 74 65 61 74 65 72 20 74 68 61 for gteater tha
016540: 6E 20 6F 72 20 65 71 75 61 6C 20 74 6F 20 7A 65 n or equal to ze
016550: 72 6F 0D 0A 2A 2F 0D 0A 67 65 30 28 6C 61 62 65 ro..*/..ge0(labe
016560: 6C 29 20 69 6E 74 20 6C 61 62 65 6C 3B 20 7B 0D l) int label; {.
016570: 0A 20 20 6F 6C 28 22 58 52 41 20 41 22 29 3B 0D . ol("XRA A");.
016580: 0A 20 20 6F 6C 28 22 4F 52 41 20 48 22 29 3B 0D . ol("ORA H");.
016590: 0A 20 20 6F 74 28 22 4A 4D 20 22 29 3B 0D 0A 20 . ot("JM ");..
0165A0: 20 70 72 69 6E 74 6C 61 62 65 6C 28 6C 61 62 65 printlabel(labe
0165B0: 6C 29 3B 0D 0A 20 20 6E 6C 28 29 3B 0D 0A 20 20 l);.. nl();..
0165C0: 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 74 65 73 74 }..../*..** test
0165D0: 20 66 6F 72 20 6C 65 73 73 20 74 68 61 6E 20 28 for less than (
0165E0: 75 6E 73 69 67 6E 65 64 29 0D 0A 2A 2F 0D 0A 75 unsigned)..*/..u
0165F0: 6C 74 28 29 20 20 7B 66 66 63 61 6C 6C 28 22 43 lt() {ffcall("C
016600: 23 23 22 29 3B 0D 0A 20 20 20 20 20 20 20 20 70 ##");.. p
016610: 74 72 3D 70 74 72 2B 32 36 3B 0D 0A 20 20 20 20 tr=ptr+26;..
016620: 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 65 6C 73 }.. els
016630: 65 20 69 66 28 73 74 72 65 71 28 70 74 72 2C 20 e if(streq(ptr,
016640: 22 44 41 44 20 44 5C 6E 50 4F 50 20 44 5C 6E 4D "DAD D\nPOP D\nM
016650: 4F 56 20 41 2C 4C 5C 6E 53 54 41 58 20 44 22 29 OV A,L\nSTAX D")
016660: 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 6F 6C 28 ) {.. ol(
016670: 22 43 41 4C 4C 20 43 44 50 44 50 43 23 23 22 29 "CALL CDPDPC##")
016680: 3B 0D 0A 20 20 20 20 20 20 20 20 70 74 72 3D 70 ;.. ptr=p
016690: 74 72 2B 32 37 3B 0D 0A 20 20 20 20 20 20 20 20 tr+27;..
0166A0: 7D 0D 0A 20 20 20 20 20 20 65 6C 73 65 20 69 66 }.. else if
0166B0: 28 73 74 72 65 71 28 70 74 72 2C 20 22 50 4F 50 (streq(ptr, "POP
0166C0: 20 44 5C 6E 43 41 4C 4C 20 43 43 50 49 4E 54 23 D\nCALL CCPINT#
0166D0: 23 22 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 #")) {..
0166E0: 6F 6C 28 22 43 41 4C 4C 20 43 43 50 44 50 49 23 ol("CALL CCPDPI#
0166F0: 23 22 29 3B 0D 0A 20 20 20 20 20 20 20 20 70 74 #");.. pt
016700: 72 3D 70 74 72 2B 32 30 3B 0D 0A 20 20 20 20 20 r=ptr+20;..
016710: 20 20 20 7D 0D 0A 20 20 20 20 20 20 2F 2A 20 61 }.. /* a
016720: 64 64 69 74 69 6F 6E 61 6C 20 6F 70 74 69 6D 69 dditional optimi
016730: 7A 69 6E 67 20 6C 6F 67 69 63 20 67 6F 65 73 20 zing logic goes
016740: 68 65 72 65 20 2A 2F 0D 0A 20 20 20 20 20 20 65 here */.. e
016750: 6C 73 65 20 63 6F 75 74 28 2A 70 74 72 2B 2B 2C lse cout(*ptr++,
016760: 20 6F 75 74 70 75 74 29 3B 0D 0A 20 20 20 20 20 output);..
016770: 20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 63 6F 75 }.. else cou
016780: 74 28 2A 70 74 72 2B 2B 2C 20 6F 75 74 70 75 74 t(*ptr++, output
016790: 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A );.. }.. }..
0167A0: 0D 0A 70 70 31 28 29 20 7B 0D 0A 20 20 6F 6C 28 ..pp1() {.. ol(
0167B0: 22 50 4F 50 20 48 22 29 3B 0D 0A 20 20 6F 6C 28 "POP H");.. ol(
0167C0: 22 50 55 53 48 20 48 22 29 3B 0D 0A 20 20 7D 0D "PUSH H");.. }.
0167D0: 0A 0D 0A 70 70 32 28 29 20 7B 0D 0A 20 20 6F 6C ...pp2() {.. ol
0167E0: 28 22 50 4F 50 20 44 22 29 3B 0D 0A 20 20 6F 6C ("POP D");.. ol
0167F0: 28 22 50 55 53 48 20 44 22 29 3B 0D 0A 20 20 7D ("PUSH D");.. }
016800: 43 55 4C 54 23 23 22 29 3B 7D 0D 0A 0D 0A 2F 2A CULT##");}..../*
016810: 0D 0A 2A 2A 20 74 65 73 74 20 66 6F 72 20 6C 65 ..** test for le
016820: 73 73 20 74 68 61 6E 20 74 6F 20 7A 65 72 6F 20 ss than to zero
016830: 28 75 6E 73 69 67 6E 65 64 29 0D 0A 2A 2F 0D 0A (unsigned)..*/..
016840: 75 6C 74 30 28 6C 61 62 65 6C 29 20 69 6E 74 20 ult0(label) int
016850: 6C 61 62 65 6C 3B 20 7B 0D 0A 20 20 6F 74 28 22 label; {.. ot("
016860: 4A 4D 50 20 22 29 3B 0D 0A 20 20 70 72 69 6E 74 JMP ");.. print
016870: 6C 61 62 65 6C 28 6C 61 62 65 6C 29 3B 0D 0A 20 label(label);..
016880: 20 6E 6C 28 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F nl();.. }..../
016890: 2A 0D 0A 2A 2A 20 74 65 73 74 20 66 6F 72 20 6C *..** test for l
0168A0: 65 73 73 20 74 68 61 6E 20 6F 72 20 65 71 75 61 ess than or equa
0168B0: 6C 20 74 6F 20 28 75 6E 73 69 67 6E 65 64 29 0D l to (unsigned).
0168C0: 0A 2A 2F 0D 0A 75 6C 65 28 29 20 20 7B 66 66 63 .*/..ule() {ffc
0168D0: 61 6C 6C 28 22 43 43 55 4C 45 23 23 22 29 3B 7D all("CCULE##");}
0168E0: 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 74 65 73 74 20 ..../*..** test
0168F0: 66 6F 72 20 67 72 65 61 74 65 72 20 74 68 61 6E for greater than
016900: 20 28 75 6E 73 69 67 6E 65 64 29 0D 0A 2A 2F 0D (unsigned)..*/.
016910: 0A 75 67 74 28 29 20 20 7B 66 66 63 61 6C 6C 28 .ugt() {ffcall(
016920: 22 43 43 55 47 54 23 23 22 29 3B 7D 0D 0A 0D 0A "CCUGT##");}....
016930: 2F 2A 0D 0A 2A 2A 20 74 65 73 74 20 66 6F 72 20 /*..** test for
016940: 67 72 65 61 74 65 72 20 74 68 61 6E 20 6F 72 20 greater than or
016950: 65 71 75 61 6C 20 74 6F 20 28 75 6E 73 69 67 6E equal to (unsign
016960: 65 64 29 0D 0A 2A 2F 0D 0A 75 67 65 28 29 20 20 ed)..*/..uge()
016970: 7B 66 66 63 61 6C 6C 28 22 43 43 55 47 45 23 23 {ffcall("CCUGE##
016980: 22 29 3B 7D 0D 0A 0D 0A 23 69 66 64 65 66 20 4F ");}....#ifdef O
016990: 50 54 49 4D 49 5A 45 0D 0A 70 65 65 70 68 6F 6C PTIMIZE..peephol
0169A0: 65 28 70 74 72 29 20 63 68 61 72 20 2A 70 74 72 e(ptr) char *ptr
0169B0: 3B 20 7B 0D 0A 20 20 77 68 69 6C 65 28 2A 70 74 ; {.. while(*pt
0169C0: 72 29 20 7B 0D 0A 20 20 20 20 69 66 28 73 74 72 r) {.. if(str
0169D0: 65 71 28 70 74 72 2C 22 4C 58 49 20 48 2C 30 5C eq(ptr,"LXI H,0\
0169E0: 6E 44 41 44 20 53 50 5C 6E 43 41 4C 4C 20 43 43 nDAD SP\nCALL CC
0169F0: 47 49 4E 54 23 23 22 29 29 20 7B 0D 0A 20 20 20 GINT##")) {..
016A00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
016A10: 13 00 01 00 02 09 52 E5 13 00 41 02 00 00 00 02 ......R...A.....
016A20: 13 00 46 02 00 00 00 02 13 00 42 02 00 00 00 02 ..F.......B.....
016A30: 13 00 47 02 00 00 00 02 13 00 43 02 00 00 00 02 ..G.......C.....
016A40: 13 00 48 02 00 00 00 02 13 00 44 02 00 00 00 02 ..H.......D.....
016A50: 13 00 49 02 00 00 00 02 13 00 45 02 00 00 00 02 ..I.......E.....
016A60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016A70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016A80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016A90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016AA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016AB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016AC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016AD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016AE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016AF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016B00: 0D 0A 0D 0A 70 70 33 28 70 70 29 20 69 6E 74 20 ....pp3(pp) int
016B10: 28 2A 70 70 29 28 29 3B 20 7B 0D 0A 20 20 6F 6C (*pp)(); {.. ol
016B20: 28 22 50 4F 50 20 42 22 29 3B 0D 0A 20 20 28 2A ("POP B");.. (*
016B30: 70 70 29 28 29 3B 0D 0A 20 20 6F 6C 28 22 50 55 pp)();.. ol("PU
016B40: 53 48 20 42 22 29 3B 0D 0A 20 20 7D 0D 0A 23 65 SH B");.. }..#e
016B50: 6E 64 69 66 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ndif............
016B60: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
016B70: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
016B80: 3B 0D 0A 20 20 20 20 20 20 20 20 70 74 72 3D 70 ;.. ptr=p
016B90: 74 72 2B 32 37 3B 0D 0A 20 20 20 20 20 20 20 20 tr+27;..
016BA0: 7D 0D 0A 20 20 20 20 20 20 65 6C 73 65 20 69 66 }.. else if
016BB0: 28 73 74 72 65 71 28 70 74 72 2C 20 22 50 4F 50 (streq(ptr, "POP
016BC0: 20 44 5C 6E 43 41 4C 4C 20 43 43 50 49 4E 54 23 D\nCALL CCPINT#
016BD0: 23 22 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 #")) {..
016BE0: 6F 6C 28 22 43 41 4C 4C 20 43 43 50 44 50 49 23 ol("CALL CCPDPI#
016BF0: 23 22 29 3B 0D 0A 20 20 20 20 20 20 20 20 70 74 #");.. pt
016C00: 72 3D 70 74 72 2B 32 30 3B 0D 0A 20 20 20 20 20 r=ptr+20;..
016C10: 20 20 20 7D 0D 0A 20 20 20 20 20 20 2F 2A 20 61 }.. /* a
016C20: 64 64 69 74 69 6F 6E 61 6C 20 6F 70 74 69 6D 69 dditional optimi
016C30: 7A 69 6E 67 20 6C 6F 67 69 63 20 67 6F 65 73 20 zing logic goes
016C40: 68 65 72 65 20 2A 2F 0D 0A 20 20 20 20 20 20 65 here */.. e
016C50: 6C 73 65 20 63 6F 75 74 28 2A 70 74 72 2B 2B 2C lse cout(*ptr++,
016C60: 20 6F 75 74 70 75 74 29 3B 0D 0A 20 20 20 20 20 output);..
016C70: 20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 63 6F 75 }.. else cou
016C80: 74 28 2A 70 74 72 2B 2B 2C 20 6F 75 74 70 75 74 t(*ptr++, output
016C90: 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A );.. }.. }..
016CA0: 0D 0A 70 70 31 28 29 20 7B 0D 0A 20 20 6F 6C 28 ..pp1() {.. ol(
016CB0: 22 50 4F 50 20 48 22 29 3B 0D 0A 20 20 6F 6C 28 "POP H");.. ol(
016CC0: 22 50 55 53 48 20 48 22 29 3B 0D 0A 20 20 7D 0D "PUSH H");.. }.
016CD0: 0A 0D 0A 70 70 32 28 29 20 7B 0D 0A 20 20 6F 6C ...pp2() {.. ol
016CE0: 28 22 50 4F 50 20 44 22 29 3B 0D 0A 20 20 6F 6C ("POP D");.. ol
016CF0: 28 22 50 55 53 48 20 44 22 29 3B 0D 0A 20 20 7D ("PUSH D");.. }
016D00: 3B 20 20 20 2F 2A 20 74 72 75 65 20 69 66 20 63 ; /* true if c
016D10: 75 72 72 65 6E 74 20 62 75 66 66 65 72 20 65 6E urrent buffer en
016D20: 64 73 20 66 69 6C 65 20 2A 2F 0D 0A 2F 2A 0D 0A ds file */../*..
016D30: 2A 2A 20 61 75 78 62 75 66 20 2D 2D 20 61 6C 6C ** auxbuf -- all
016D40: 6F 63 61 74 65 20 61 6E 20 61 75 78 69 6C 69 61 ocate an auxilia
016D50: 72 79 20 69 6E 70 75 74 20 62 75 66 66 65 72 20 ry input buffer
016D60: 66 6F 72 20 66 64 0D 0A 2A 2A 20 20 20 66 64 20 for fd..** fd
016D70: 3D 20 66 69 6C 65 20 64 65 73 63 72 69 70 74 6F = file descripto
016D80: 72 20 6F 66 20 61 6E 20 6F 70 65 6E 20 66 69 6C r of an open fil
016D90: 65 0D 0A 2A 2A 20 73 69 7A 65 20 3D 20 73 69 7A e..** size = siz
016DA0: 65 20 6F 66 20 62 75 66 66 65 72 20 74 6F 20 62 e of buffer to b
016DB0: 65 20 61 6C 6C 6F 63 61 74 65 64 0D 0A 2A 2A 20 e allocated..**
016DC0: 52 65 74 75 72 6E 73 20 4E 55 4C 4C 20 6F 6E 20 Returns NULL on
016DD0: 73 75 63 63 65 73 73 2C 20 65 6C 73 65 20 45 52 success, else ER
016DE0: 52 2E 0D 0A 2A 2A 20 4E 6F 74 65 3A 20 55 6E 67 R...** Note: Ung
016DF0: 65 74 63 28 29 20 73 74 69 6C 6C 20 77 6F 72 6B etc() still work
016E00: 73 2E 0D 0A 2A 2A 20 20 20 20 20 20 20 41 20 32 s...** A 2
016E10: 6E 64 20 63 61 6C 6C 20 72 65 74 75 72 6E 73 20 nd call returns
016E20: 45 52 52 2C 20 62 75 74 20 68 61 73 20 6E 6F 20 ERR, but has no
016E30: 65 66 66 65 63 74 2E 0D 0A 2A 2A 20 20 20 20 20 effect...**
016E40: 20 20 49 66 20 66 64 20 69 73 20 61 20 64 65 76 If fd is a dev
016E50: 69 63 65 2C 20 62 75 66 66 65 72 20 69 73 20 61 ice, buffer is a
016E60: 6C 6C 6F 63 61 74 65 64 20 62 75 74 20 69 67 6E llocated but ign
016E70: 6F 72 65 64 2E 0D 0A 2A 2A 20 20 20 20 20 20 20 ored...**
016E80: 42 75 66 66 65 72 20 73 74 61 79 73 20 61 6C 6C Buffer stays all
016E90: 6F 63 61 74 65 64 20 77 68 65 6E 20 66 64 20 69 ocated when fd i
016EA0: 73 20 63 6C 6F 73 65 64 2E 0D 0A 2A 2A 20 20 20 s closed...**
016EB0: 20 20 20 20 44 6F 20 6E 6F 74 20 6D 69 78 20 72 Do not mix r
016EC0: 65 61 64 73 20 61 6E 64 20 77 72 69 74 65 73 20 eads and writes
016ED0: 6F 72 20 70 65 72 66 6F 72 6D 20 73 65 65 6B 73 or perform seeks
016EE0: 20 6F 6E 20 66 64 2E 0D 0A 2A 2F 0D 0A 61 75 78 on fd...*/..aux
016EF0: 62 75 66 28 66 64 2C 20 73 69 7A 65 29 20 69 6E buf(fd, size) in
016F00: 3E 3E 3E 20 41 42 53 2E 43 20 31 31 36 0D 0A 2F >>> ABS.C 116../
016F10: 2A 0D 0A 2A 2A 20 61 62 73 20 2D 2D 20 72 65 74 *..** abs -- ret
016F20: 75 72 6E 73 20 61 62 73 6F 6C 75 74 65 20 76 61 urns absolute va
016F30: 6C 75 65 20 6F 66 20 6E 62 72 0D 0A 2A 2F 0D 0A lue of nbr..*/..
016F40: 61 62 73 28 6E 62 72 29 20 20 69 6E 74 20 6E 62 abs(nbr) int nb
016F50: 72 3B 20 7B 0D 0A 20 20 69 66 28 6E 62 72 20 3C r; {.. if(nbr <
016F60: 20 30 29 20 72 65 74 75 72 6E 20 28 2D 6E 62 72 0) return (-nbr
016F70: 29 3B 0D 0A 20 20 72 65 74 75 72 6E 20 28 6E 62 );.. return (nb
016F80: 72 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 41 54 r);.. }..>>> AT
016F90: 4F 49 2E 43 20 33 30 38 0D 0A 23 64 65 66 69 6E OI.C 308..#defin
016FA0: 65 20 4E 4F 43 43 41 52 47 43 20 20 2F 2A 20 6E e NOCCARGC /* n
016FB0: 6F 20 61 72 67 75 6D 65 6E 74 20 63 6F 75 6E 74 o argument count
016FC0: 20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A 2F 2A 0D passing */../*.
016FD0: 0A 2A 2A 20 61 74 6F 69 28 73 29 20 2D 20 63 6F .** atoi(s) - co
016FE0: 6E 76 65 72 74 20 73 20 74 6F 20 69 6E 74 65 67 nvert s to integ
016FF0: 65 72 2E 0D 0A 2A 2F 0D 0A 61 74 6F 69 28 73 29 er...*/..atoi(s)
017000: 20 63 68 61 72 20 2A 73 3B 20 7B 0D 0A 20 20 69 char *s; {.. i
017010: 6E 74 20 73 69 67 6E 2C 20 6E 3B 0D 0A 20 20 77 nt sign, n;.. w
017020: 68 69 6C 65 28 69 73 73 70 61 63 65 28 2A 73 29 hile(isspace(*s)
017030: 29 20 2B 2B 73 3B 0D 0A 20 20 73 69 67 6E 20 3D ) ++s;.. sign =
017040: 20 31 3B 0D 0A 20 20 73 77 69 74 63 68 28 2A 73 1;.. switch(*s
017050: 29 20 7B 0D 0A 20 20 20 20 63 61 73 65 20 27 2D ) {.. case '-
017060: 27 3A 20 73 69 67 6E 20 3D 20 2D 31 3B 0D 0A 20 ': sign = -1;..
017070: 20 20 20 63 61 73 65 20 27 2B 27 3A 20 2B 2B 73 case '+': ++s
017080: 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 6E 20 3D 20 ;.. }.. n =
017090: 30 3B 0D 0A 20 20 77 68 69 6C 65 28 69 73 64 69 0;.. while(isdi
0170A0: 67 69 74 28 2A 73 29 29 20 6E 20 3D 20 31 30 20 git(*s)) n = 10
0170B0: 2A 20 6E 20 2B 20 2A 73 2B 2B 20 2D 20 27 30 27 * n + *s++ - '0'
0170C0: 3B 0D 0A 20 20 72 65 74 75 72 6E 20 28 73 69 67 ;.. return (sig
0170D0: 6E 20 2A 20 6E 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E n * n);.. }..>>
0170E0: 3E 20 41 54 4F 49 42 2E 43 20 34 38 34 0D 0A 23 > ATOIB.C 484..#
0170F0: 64 65 66 69 6E 65 20 4E 4F 43 43 41 52 47 43 20 define NOCCARGC
017100: 74 20 66 64 3B 20 63 68 61 72 20 2A 73 69 7A 65 t fd; char *size
017110: 3B 20 7B 20 20 20 2F 2A 20 66 61 6B 65 20 75 6E ; { /* fake un
017120: 73 69 67 6E 65 64 20 2A 2F 0D 0A 20 20 69 66 28 signed */.. if(
017130: 21 55 6D 6F 64 65 28 66 64 29 20 7C 7C 20 21 73 !Umode(fd) || !s
017140: 69 7A 65 20 7C 7C 20 61 76 61 69 6C 28 4E 4F 29 ize || avail(NO)
017150: 20 3C 20 73 69 7A 65 20 20 20 7C 7C 20 55 78 73 < size || Uxs
017160: 69 7A 65 5B 66 64 5D 29 0D 0A 20 20 20 20 72 65 ize[fd]).. re
017170: 74 75 72 6E 20 28 45 52 52 29 3B 0D 0A 20 20 55 turn (ERR);.. U
017180: 78 61 64 64 72 5B 66 64 5D 20 3D 20 6D 61 6C 6C xaddr[fd] = mall
017190: 6F 63 28 73 69 7A 65 29 3B 20 55 78 69 6E 69 74 oc(size); Uxinit
0171A0: 28 66 64 29 3B 0D 0A 20 20 55 61 75 78 69 6E 20 (fd);.. Uauxin
0171B0: 3D 20 55 78 69 6E 69 74 3B 20 20 20 20 2F 2A 20 = Uxinit; /*
0171C0: 74 65 6C 6C 20 55 6F 70 65 6E 28 29 20 77 68 65 tell Uopen() whe
0171D0: 72 65 20 55 78 69 6E 69 74 28 29 20 69 73 20 2A re Uxinit() is *
0171E0: 2F 0D 0A 20 20 55 61 75 78 72 64 20 3D 20 55 78 /.. Uauxrd = Ux
0171F0: 72 65 61 64 3B 20 20 20 20 2F 2A 20 74 65 6C 6C read; /* tell
017200: 20 55 72 65 61 64 28 29 20 77 68 65 72 65 20 55 Uread() where U
017210: 78 72 65 61 64 28 29 20 69 73 20 2A 2F 0D 0A 20 xread() is */..
017220: 20 55 61 75 78 77 74 20 3D 20 55 78 77 72 69 74 Uauxwt = Uxwrit
017230: 65 3B 20 20 20 2F 2A 20 74 65 6C 6C 20 55 77 72 e; /* tell Uwr
017240: 69 74 65 28 29 20 77 68 65 72 65 20 55 78 77 72 ite() where Uxwr
017250: 69 74 65 28 29 20 69 73 20 2A 2F 0D 0A 20 20 55 ite() is */.. U
017260: 61 75 78 73 7A 20 3D 20 55 78 73 69 7A 65 3B 20 auxsz = Uxsize;
017270: 20 20 20 2F 2A 20 74 65 6C 6C 20 62 6F 74 68 20 /* tell both
017280: 77 68 65 72 65 20 55 78 73 69 7A 65 5B 5D 20 69 where Uxsize[] i
017290: 73 20 2A 2F 0D 0A 20 20 55 61 75 78 66 6C 20 3D s */.. Uauxfl =
0172A0: 20 55 78 66 6C 75 73 68 3B 20 20 20 2F 2A 20 74 Uxflush; /* t
0172B0: 65 6C 6C 20 66 66 6C 75 73 68 28 29 20 77 68 65 ell fflush() whe
0172C0: 72 65 20 55 78 66 6C 75 73 68 28 29 20 69 73 20 re Uxflush() is
0172D0: 2A 2F 0D 0A 20 20 55 78 73 69 7A 65 5B 66 64 5D */.. Uxsize[fd]
0172E0: 20 3D 20 73 69 7A 65 3B 20 20 2F 2A 20 74 65 6C = size; /* tel
0172F0: 6C 20 55 72 65 61 64 28 29 20 74 68 61 74 20 66 l Uread() that f
017300: 20 2F 2A 20 6E 6F 20 61 72 67 75 6D 65 6E 74 20 /* no argument
017310: 63 6F 75 6E 74 20 70 61 73 73 69 6E 67 20 2A 2F count passing */
017320: 0D 0A 2F 2A 0D 0A 2A 2A 20 61 74 6F 69 62 28 73 ../*..** atoib(s
017330: 2C 62 29 20 2D 20 43 6F 6E 76 65 72 74 20 73 20 ,b) - Convert s
017340: 74 6F 20 22 75 6E 73 69 67 6E 65 64 22 20 69 6E to "unsigned" in
017350: 74 65 67 65 72 20 69 6E 20 62 61 73 65 20 62 2E teger in base b.
017360: 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 20 20 20 ..**
017370: 20 20 4E 4F 54 45 3A 20 54 68 69 73 20 69 73 20 NOTE: This is
017380: 61 20 6E 6F 6E 2D 73 74 61 6E 64 61 72 64 20 66 a non-standard f
017390: 75 6E 63 74 69 6F 6E 2E 0D 0A 2A 2F 0D 0A 61 74 unction...*/..at
0173A0: 6F 69 62 28 73 2C 20 62 29 20 63 68 61 72 20 2A oib(s, b) char *
0173B0: 73 3B 20 69 6E 74 20 62 3B 20 7B 0D 0A 20 20 69 s; int b; {.. i
0173C0: 6E 74 20 6E 2C 20 64 69 67 69 74 3B 0D 0A 20 20 nt n, digit;..
0173D0: 6E 20 3D 20 30 3B 0D 0A 20 20 77 68 69 6C 65 28 n = 0;.. while(
0173E0: 69 73 73 70 61 63 65 28 2A 73 29 29 20 2B 2B 73 isspace(*s)) ++s
0173F0: 3B 0D 0A 20 20 77 68 69 6C 65 28 28 64 69 67 69 ;.. while((digi
017400: 74 20 3D 20 28 31 32 37 20 26 20 2A 73 2B 2B 29 t = (127 & *s++)
017410: 29 20 3E 3D 20 27 30 27 29 20 7B 0D 0A 20 20 20 ) >= '0') {..
017420: 20 69 66 28 64 69 67 69 74 20 3E 3D 20 27 61 27 if(digit >= 'a'
017430: 29 20 20 20 20 20 20 64 69 67 69 74 20 2D 3D 20 ) digit -=
017440: 38 37 3B 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 87;.. else if
017450: 28 64 69 67 69 74 20 3E 3D 20 27 41 27 29 20 64 (digit >= 'A') d
017460: 69 67 69 74 20 2D 3D 20 35 35 3B 0D 0A 20 20 20 igit -= 55;..
017470: 20 65 6C 73 65 20 20 20 20 20 20 20 20 20 20 20 else
017480: 20 20 20 20 20 20 20 64 69 67 69 74 20 2D 3D 20 digit -=
017490: 27 30 27 3B 0D 0A 20 20 20 20 69 66 28 64 69 67 '0';.. if(dig
0174A0: 69 74 20 3E 3D 20 62 29 20 62 72 65 61 6B 3B 0D it >= b) break;.
0174B0: 0A 20 20 20 20 6E 20 3D 20 62 20 2A 20 6E 20 2B . n = b * n +
0174C0: 20 64 69 67 69 74 3B 0D 0A 20 20 20 20 7D 0D 0A digit;.. }..
0174D0: 20 20 72 65 74 75 72 6E 20 28 6E 29 3B 0D 0A 20 return (n);..
0174E0: 20 7D 0D 0A 0D 0A 3E 3E 3E 20 41 55 58 42 55 46 }....>>> AUXBUF
0174F0: 2E 43 20 33 32 30 34 0D 0A 23 64 65 66 69 6E 65 .C 3204..#define
017500: 64 20 68 61 73 20 61 75 78 20 62 75 66 20 2A 2F d has aux buf */
017510: 0D 0A 20 20 72 65 74 75 72 6E 20 28 4E 55 4C 4C .. return (NULL
017520: 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A );.. }..../*..*
017530: 2A 20 49 6E 69 74 69 61 6C 69 7A 65 20 61 75 78 * Initialize aux
017540: 20 62 75 66 66 65 72 20 63 6F 6E 74 72 6F 6C 73 buffer controls
017550: 0D 0A 2A 2F 0D 0A 55 78 69 6E 69 74 28 66 64 29 ..*/..Uxinit(fd)
017560: 20 69 6E 74 20 66 64 3B 20 7B 0D 0A 20 20 55 78 int fd; {.. Ux
017570: 6E 65 78 74 5B 66 64 5D 20 3D 20 55 78 65 6E 64 next[fd] = Uxend
017580: 5B 66 64 5D 20 3D 20 55 78 61 64 64 72 5B 66 64 [fd] = Uxaddr[fd
017590: 5D 3B 0D 0A 20 20 55 78 65 6F 66 5B 66 64 5D 20 ];.. Uxeof[fd]
0175A0: 3D 20 4E 4F 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A = NO;.. }..../*
0175B0: 0D 0A 2A 2A 20 46 69 6C 6C 20 62 75 66 66 65 72 ..** Fill buffer
0175C0: 20 69 66 20 6E 65 63 65 73 73 61 72 79 2C 20 61 if necessary, a
0175D0: 6E 64 20 72 65 74 75 72 6E 20 6E 65 78 74 20 62 nd return next b
0175E0: 79 74 65 2E 0D 0A 2A 2F 0D 0A 55 78 72 65 61 64 yte...*/..Uxread
0175F0: 28 66 64 29 20 69 6E 74 20 66 64 3B 20 7B 0D 0A (fd) int fd; {..
017600: 20 20 63 68 61 72 20 2A 70 74 72 3B 0D 0A 20 20 char *ptr;..
017610: 77 68 69 6C 65 28 59 45 53 29 20 7B 0D 0A 20 20 while(YES) {..
017620: 20 20 70 74 72 20 3D 20 55 78 6E 65 78 74 5B 66 ptr = Uxnext[f
017630: 64 5D 3B 0D 0A 20 20 20 20 69 66 28 70 74 72 20 d];.. if(ptr
017640: 3C 20 55 78 65 6E 64 5B 66 64 5D 29 20 7B 2B 2B < Uxend[fd]) {++
017650: 55 78 6E 65 78 74 5B 66 64 5D 3B 20 72 65 74 75 Uxnext[fd]; retu
017660: 72 6E 20 28 2A 70 74 72 29 3B 7D 0D 0A 20 20 20 rn (*ptr);}..
017670: 20 69 66 28 55 78 65 6F 66 5B 66 64 5D 29 20 7B if(Uxeof[fd]) {
017680: 55 73 65 74 65 6F 66 28 66 64 29 3B 20 72 65 74 Useteof(fd); ret
017690: 75 72 6E 20 28 45 4F 46 29 3B 7D 0D 0A 20 20 20 urn (EOF);}..
0176A0: 20 55 61 75 78 73 7A 20 3D 20 4E 55 4C 4C 3B 20 Uauxsz = NULL;
0176B0: 20 20 20 20 20 20 20 20 20 2F 2A 20 61 76 6F 69 /* avoi
0176C0: 64 20 72 65 63 75 72 73 69 76 65 20 6C 6F 6F 70 d recursive loop
0176D0: 20 2A 2F 0D 0A 20 20 20 20 55 78 65 6E 64 5B 66 */.. Uxend[f
0176E0: 64 5D 20 3D 20 55 78 61 64 64 72 5B 66 64 5D 0D d] = Uxaddr[fd].
0176F0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2B . +
017700: 20 4E 4F 43 43 41 52 47 43 20 20 2F 2A 20 6E 6F NOCCARGC /* no
017710: 20 61 72 67 75 6D 65 6E 74 20 63 6F 75 6E 74 20 argument count
017720: 70 61 73 73 69 6E 67 20 2A 2F 0D 0A 23 69 6E 63 passing */..#inc
017730: 6C 75 64 65 20 73 74 64 69 6F 2E 68 0D 0A 23 69 lude stdio.h..#i
017740: 6E 63 6C 75 64 65 20 63 6C 69 62 2E 64 65 66 0D nclude clib.def.
017750: 0A 65 78 74 65 72 6E 20 69 6E 74 20 2A 55 61 75 .extern int *Uau
017760: 78 73 7A 2C 20 55 61 75 78 69 6E 2C 20 55 61 75 xsz, Uauxin, Uau
017770: 78 72 64 2C 20 55 61 75 78 77 74 2C 20 55 61 75 xrd, Uauxwt, Uau
017780: 78 66 6C 2C 20 55 73 74 61 74 75 73 5B 5D 3B 0D xfl, Ustatus[];.
017790: 0A 2F 2A 0D 0A 2A 2A 20 54 68 69 73 20 6D 6F 64 ./*..** This mod
0177A0: 75 6C 65 20 69 73 20 6C 6F 61 64 65 64 20 77 69 ule is loaded wi
0177B0: 74 68 20 61 20 70 72 6F 67 72 61 6D 20 6F 6E 6C th a program onl
0177C0: 79 20 69 66 20 61 75 78 62 75 66 28 29 0D 0A 2A y if auxbuf()..*
0177D0: 2A 20 69 73 20 63 61 6C 6C 65 64 2E 20 20 49 74 * is called. It
0177E0: 20 6C 69 6E 6B 73 20 74 6F 20 55 6F 70 65 6E 28 links to Uopen(
0177F0: 29 2C 20 55 72 65 61 64 28 29 2C 20 55 77 72 69 ), Uread(), Uwri
017800: 74 65 28 29 2C 20 61 6E 64 0D 0A 2A 2A 20 66 66 te(), and..** ff
017810: 6C 75 73 68 28 29 20 74 68 72 6F 75 67 68 20 55 lush() through U
017820: 61 75 78 73 7A 2C 20 55 61 75 78 69 6E 2C 20 55 auxsz, Uauxin, U
017830: 61 75 78 72 64 2C 20 55 61 75 78 77 74 2C 20 61 auxrd, Uauxwt, a
017840: 6E 64 20 55 61 75 78 66 6C 0D 0A 2A 2A 20 69 6E nd Uauxfl..** in
017850: 20 43 53 59 53 4C 49 42 2E 20 20 54 68 69 73 20 CSYSLIB. This
017860: 74 65 63 68 6E 69 71 75 65 20 72 65 64 75 63 65 technique reduce
017870: 73 20 74 68 65 20 6F 76 65 72 68 65 61 64 20 66 s the overhead f
017880: 6F 72 0D 0A 2A 2A 20 70 72 6F 67 72 61 6D 73 20 or..** programs
017890: 77 68 69 63 68 20 64 6F 6E 27 74 20 75 73 65 20 which don't use
0178A0: 61 75 78 69 6C 69 61 72 79 20 62 75 66 66 65 72 auxiliary buffer
0178B0: 69 6E 67 2E 20 20 50 72 65 73 75 6D 61 62 6C 79 ing. Presumably
0178C0: 2C 0D 0A 2A 2A 20 69 66 20 74 68 65 72 65 20 69 ,..** if there i
0178D0: 73 20 65 6E 6F 75 67 68 20 6D 65 6D 6F 72 79 20 s enough memory
0178E0: 66 6F 72 20 65 78 74 72 61 20 62 75 66 66 65 72 for extra buffer
0178F0: 69 6E 67 2C 20 74 68 65 72 65 20 69 73 0D 0A 2A ing, there is..*
017900: 20 72 65 61 64 28 66 64 2C 20 55 78 6E 65 78 74 read(fd, Uxnext
017910: 5B 66 64 5D 3D 55 78 61 64 64 72 5B 66 64 5D 2C [fd]=Uxaddr[fd],
017920: 20 55 78 73 69 7A 65 5B 66 64 5D 29 3B 0D 0A 20 Uxsize[fd]);..
017930: 20 20 20 55 61 75 78 73 7A 20 3D 20 55 78 73 69 Uauxsz = Uxsi
017940: 7A 65 3B 20 20 20 20 20 20 20 20 2F 2A 20 72 65 ze; /* re
017950: 73 74 6F 72 65 20 55 61 75 78 73 7A 20 2A 2F 0D store Uauxsz */.
017960: 0A 20 20 20 20 69 66 28 66 65 6F 66 28 66 64 29 . if(feof(fd)
017970: 29 20 7B 55 78 65 6F 66 5B 66 64 5D 20 3D 20 59 ) {Uxeof[fd] = Y
017980: 45 53 3B 20 55 63 6C 72 65 6F 66 28 66 64 29 3B ES; Uclreof(fd);
017990: 7D 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D }.. }.. }...
0179A0: 0A 2F 2A 0D 0A 2A 2A 20 45 6D 70 74 79 20 62 75 ./*..** Empty bu
0179B0: 66 66 65 72 20 69 66 20 6E 65 63 65 73 73 61 72 ffer if necessar
0179C0: 79 2C 20 61 6E 64 20 73 74 6F 72 65 20 63 68 20 y, and store ch
0179D0: 69 6E 20 62 75 66 66 65 72 2E 0D 0A 2A 2F 0D 0A in buffer...*/..
0179E0: 55 78 77 72 69 74 65 28 63 68 2C 20 66 64 29 20 Uxwrite(ch, fd)
0179F0: 69 6E 74 20 63 68 2C 20 66 64 3B 20 7B 0D 0A 20 int ch, fd; {..
017A00: 20 63 68 61 72 20 2A 70 74 72 3B 0D 0A 20 20 77 char *ptr;.. w
017A10: 68 69 6C 65 28 59 45 53 29 20 7B 0D 0A 20 20 20 hile(YES) {..
017A20: 20 70 74 72 20 3D 20 55 78 6E 65 78 74 5B 66 64 ptr = Uxnext[fd
017A30: 5D 3B 0D 0A 20 20 20 20 69 66 28 70 74 72 20 3C ];.. if(ptr <
017A40: 20 28 55 78 61 64 64 72 5B 66 64 5D 20 2B 20 55 (Uxaddr[fd] + U
017A50: 78 73 69 7A 65 5B 66 64 5D 29 29 0D 0A 20 20 20 xsize[fd]))..
017A60: 20 20 20 7B 2A 70 74 72 20 3D 20 63 68 3B 20 2B {*ptr = ch; +
017A70: 2B 55 78 6E 65 78 74 5B 66 64 5D 3B 20 72 65 74 +Uxnext[fd]; ret
017A80: 75 72 6E 20 28 63 68 29 3B 7D 0D 0A 20 20 20 20 urn (ch);}..
017A90: 69 66 28 55 78 66 6C 75 73 68 28 66 64 29 29 20 if(Uxflush(fd))
017AA0: 72 65 74 75 72 6E 20 28 45 4F 46 29 3B 0D 0A 20 return (EOF);..
017AB0: 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D }.. }..../*.
017AC0: 0A 2A 2A 20 46 6C 75 73 68 20 61 75 78 20 62 75 .** Flush aux bu
017AD0: 66 66 65 72 20 74 6F 20 66 69 6C 65 2E 0D 0A 2A ffer to file...*
017AE0: 2F 0D 0A 55 78 66 6C 75 73 68 28 66 64 29 20 69 /..Uxflush(fd) i
017AF0: 6E 74 20 66 64 3B 20 7B 0D 0A 20 20 69 6E 74 20 nt fd; {.. int
017B00: 2A 20 72 6F 6F 6D 20 74 6F 20 73 70 61 72 65 20 * room to spare
017B10: 66 6F 72 20 74 68 69 73 20 6F 76 65 72 68 65 61 for this overhea
017B20: 64 20 74 6F 6F 2E 20 20 41 20 62 75 67 20 69 6E d too. A bug in
017B30: 20 73 6F 6D 65 0D 0A 2A 2A 20 76 65 72 73 69 6F some..** versio
017B40: 6E 73 20 6F 66 20 53 6D 61 6C 6C 2D 43 20 62 65 ns of Small-C be
017B50: 74 77 65 65 6E 20 32 2E 30 20 61 6E 64 20 32 2E tween 2.0 and 2.
017B60: 31 20 6D 61 79 20 63 61 75 73 65 20 74 68 65 20 1 may cause the
017B70: 63 61 6C 6C 73 0D 0A 2A 2A 20 74 6F 20 55 61 75 calls..** to Uau
017B80: 78 72 64 2C 20 55 61 75 78 77 74 2C 20 61 6E 64 xrd, Uauxwt, and
017B90: 20 55 61 75 78 66 6C 20 69 6E 20 55 72 65 61 64 Uauxfl in Uread
017BA0: 28 29 2C 20 55 77 72 69 74 65 28 29 2C 20 61 6E (), Uwrite(), an
017BB0: 64 0D 0A 2A 2A 20 66 66 6C 75 73 68 28 29 2C 20 d..** fflush(),
017BC0: 72 65 73 70 65 63 74 69 76 65 6C 79 2C 20 74 6F respectively, to
017BD0: 20 70 72 6F 64 75 63 65 20 62 61 64 20 63 6F 64 produce bad cod
017BE0: 65 2E 20 20 54 68 65 20 63 75 72 72 65 6E 74 0D e. The current.
017BF0: 0A 2A 2A 20 63 6F 6D 70 69 6C 65 72 20 63 6F 72 .** compiler cor
017C00: 72 65 63 74 73 20 74 68 65 20 70 72 6F 62 6C 65 rects the proble
017C10: 6D 2E 0D 0A 2A 2F 0D 0A 69 6E 74 0D 0A 20 20 55 m...*/..int.. U
017C20: 78 73 69 7A 65 5B 4D 41 58 46 49 4C 45 53 5D 2C xsize[MAXFILES],
017C30: 20 20 2F 2A 20 73 69 7A 65 20 6F 66 20 62 75 66 /* size of buf
017C40: 66 65 72 20 2A 2F 0D 0A 20 20 55 78 61 64 64 72 fer */.. Uxaddr
017C50: 5B 4D 41 58 46 49 4C 45 53 5D 2C 20 20 2F 2A 20 [MAXFILES], /*
017C60: 61 75 78 20 62 75 66 66 65 72 20 61 64 64 72 65 aux buffer addre
017C70: 73 73 20 2A 2F 0D 0A 20 20 55 78 6E 65 78 74 5B ss */.. Uxnext[
017C80: 4D 41 58 46 49 4C 45 53 5D 2C 20 20 2F 2A 20 61 MAXFILES], /* a
017C90: 64 64 72 65 73 73 20 6F 66 20 6E 65 78 74 20 62 ddress of next b
017CA0: 79 74 65 20 69 6E 20 62 75 66 66 65 72 20 2A 2F yte in buffer */
017CB0: 0D 0A 20 20 55 78 65 6E 64 5B 4D 41 58 46 49 4C .. Uxend[MAXFIL
017CC0: 45 53 5D 2C 20 20 20 2F 2A 20 61 64 64 72 65 73 ES], /* addres
017CD0: 73 20 6F 66 20 65 6E 64 2D 6F 66 2D 64 61 74 61 s of end-of-data
017CE0: 20 69 6E 20 62 75 66 66 65 72 20 2A 2F 0D 0A 20 in buffer */..
017CF0: 20 55 78 65 6F 66 5B 4D 41 58 46 49 4C 45 53 5D Uxeof[MAXFILES]
017D00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
017D10: 14 00 01 00 02 09 52 E5 14 00 41 02 00 00 00 02 ......R...A.....
017D20: 14 00 46 02 00 00 00 02 14 00 42 02 00 00 00 02 ..F.......B.....
017D30: 14 00 47 02 00 00 00 02 14 00 43 02 00 00 00 02 ..G.......C.....
017D40: 14 00 48 02 00 00 00 02 14 00 44 02 00 00 00 02 ..H.......D.....
017D50: 14 00 49 02 00 00 00 02 14 00 45 02 00 00 00 02 ..I.......E.....
017D60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017D70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017D80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017D90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017DA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017DB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017DC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017DD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017DE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017DF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017E00: 69 2C 20 6A 3B 0D 0A 20 20 69 20 3D 20 55 78 6E i, j;.. i = Uxn
017E10: 65 78 74 5B 66 64 5D 20 2D 20 55 78 61 64 64 72 ext[fd] - Uxaddr
017E20: 5B 66 64 5D 3B 0D 0A 20 20 55 61 75 78 73 7A 20 [fd];.. Uauxsz
017E30: 3D 20 4E 55 4C 4C 3B 20 20 20 2F 2A 20 61 76 6F = NULL; /* avo
017E40: 69 64 20 72 65 63 75 72 73 69 76 65 20 6C 6F 6F id recursive loo
017E50: 70 20 2A 2F 0D 0A 20 20 6A 20 3D 20 77 72 69 74 p */.. j = writ
017E60: 65 28 66 64 2C 20 55 78 6E 65 78 74 5B 66 64 5D e(fd, Uxnext[fd]
017E70: 3D 55 78 61 64 64 72 5B 66 64 5D 2C 20 69 29 3B =Uxaddr[fd], i);
017E80: 0D 0A 20 20 55 61 75 78 73 7A 20 3D 20 55 78 73 .. Uauxsz = Uxs
017E90: 69 7A 65 3B 20 2F 2A 20 72 65 73 74 6F 72 65 20 ize; /* restore
017EA0: 55 61 75 78 73 7A 20 2A 2F 0D 0A 20 20 69 66 28 Uauxsz */.. if(
017EB0: 69 20 21 3D 20 6A 29 20 72 65 74 75 72 6E 20 28 i != j) return (
017EC0: 45 4F 46 29 3B 0D 0A 20 20 72 65 74 75 72 6E 20 EOF);.. return
017ED0: 28 4E 55 4C 4C 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E (NULL);.. }..>>
017EE0: 3E 20 41 56 41 49 4C 2E 43 20 33 39 39 0D 0A 23 > AVAIL.C 399..#
017EF0: 64 65 66 69 6E 65 20 4E 4F 43 43 41 52 47 43 20 define NOCCARGC
017F00: 20 2F 2A 20 6E 6F 20 61 72 67 75 6D 65 6E 74 20 /* no argument
017F10: 63 6F 75 6E 74 20 70 61 73 73 69 6E 67 20 2A 2F count passing */
017F20: 0D 0A 65 78 74 65 72 6E 20 63 68 61 72 20 2A 55 ..extern char *U
017F30: 6D 65 6D 70 74 72 3B 0D 0A 2F 2A 0D 0A 2A 2A 20 memptr;../*..**
017F40: 52 65 74 75 72 6E 20 74 68 65 20 6E 75 6D 62 65 Return the numbe
017F50: 72 20 6F 66 20 62 79 74 65 73 20 6F 66 20 61 76 r of bytes of av
017F60: 61 69 6C 61 62 6C 65 20 6D 65 6D 6F 72 79 2E 0D ailable memory..
017F70: 0A 2A 2A 20 49 6E 20 63 61 73 65 20 6F 66 20 61 .** In case of a
017F80: 20 73 74 61 63 6B 20 6F 76 65 72 66 6C 6F 77 20 stack overflow
017F90: 63 6F 6E 64 69 74 69 6F 6E 2C 20 69 66 20 27 61 condition, if 'a
017FA0: 62 6F 72 74 27 0D 0A 2A 2A 20 69 73 20 6E 6F 6E bort'..** is non
017FB0: 2D 7A 65 72 6F 20 74 68 65 20 70 72 6F 67 72 61 -zero the progra
017FC0: 6D 20 61 62 6F 72 74 73 20 77 69 74 68 20 61 6E m aborts with an
017FD0: 20 27 53 27 20 63 6C 75 65 2C 0D 0A 2A 2A 20 6F 'S' clue,..** o
017FE0: 74 68 65 72 77 69 73 65 20 7A 65 72 6F 20 69 73 therwise zero is
017FF0: 20 72 65 74 75 72 6E 65 64 2E 0D 0A 2A 2F 0D 0A returned...*/..
018000: 20 20 20 42 0D 0A 3B 0D 0A 3B 53 54 4F 52 45 20 B..;..;STORE
018010: 41 20 31 36 2D 42 49 54 20 49 4E 54 45 47 45 52 A 16-BIT INTEGER
018020: 20 49 4E 20 48 4C 20 41 54 20 54 48 45 20 41 44 IN HL AT THE AD
018030: 44 52 45 53 53 20 49 4E 20 44 45 0D 0A 43 43 50 DRESS IN DE..CCP
018040: 49 4E 54 3A 3A 0D 0A 50 49 4E 54 3A 20 20 20 4D INT::..PINT: M
018050: 4F 56 20 20 20 20 20 41 2C 4C 0D 0A 20 20 20 20 OV A,L..
018060: 20 20 20 20 53 54 41 58 20 20 20 20 44 0D 0A 20 STAX D..
018070: 20 20 20 20 20 20 20 49 4E 58 20 20 20 20 20 44 INX D
018080: 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 .. MOV
018090: 20 20 41 2C 48 0D 0A 20 20 20 20 20 20 20 20 53 A,H.. S
0180A0: 54 41 58 20 20 20 20 44 0D 0A 20 20 20 20 20 20 TAX D..
0180B0: 20 20 52 45 54 0D 0A 3B 0D 0A 3B 49 4E 43 4C 55 RET..;..;INCLU
0180C0: 53 49 56 45 20 22 4F 52 22 20 48 4C 20 41 4E 44 SIVE "OR" HL AND
0180D0: 20 44 45 20 49 4E 54 4F 20 48 4C 0D 0A 43 43 4F DE INTO HL..CCO
0180E0: 52 3A 3A 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 R::.. MOV
0180F0: 20 20 20 20 20 41 2C 4C 0D 0A 20 20 20 20 20 20 A,L..
018100: 20 20 4F 52 41 20 20 20 20 20 45 0D 0A 20 20 20 ORA E..
018110: 20 20 20 20 20 4D 4F 56 20 20 20 20 20 4C 2C 41 MOV L,A
018120: 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 .. MOV
018130: 20 20 41 2C 48 0D 0A 20 20 20 20 20 20 20 20 4F A,H.. O
018140: 52 41 20 20 20 20 20 44 0D 0A 20 20 20 20 20 20 RA D..
018150: 20 20 4D 4F 56 20 20 20 20 20 48 2C 41 0D 0A 20 MOV H,A..
018160: 20 20 20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B RET..;..;
018170: 45 58 43 4C 55 53 49 56 45 20 22 4F 52 22 20 48 EXCLUSIVE "OR" H
018180: 4C 20 41 4E 44 20 44 45 20 49 4E 54 4F 20 48 4C L AND DE INTO HL
018190: 0D 0A 43 43 58 4F 52 3A 3A 0D 0A 20 20 20 20 20 ..CCXOR::..
0181A0: 20 20 20 4D 4F 56 20 20 20 20 20 41 2C 4C 0D 0A MOV A,L..
0181B0: 20 20 20 20 20 20 20 20 58 52 41 20 20 20 20 20 XRA
0181C0: 45 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 E.. MOV
0181D0: 20 20 20 4C 2C 41 0D 0A 20 20 20 20 20 20 20 20 L,A..
0181E0: 4D 4F 56 20 20 20 20 20 41 2C 48 0D 0A 20 20 20 MOV A,H..
0181F0: 20 20 20 20 20 58 52 41 20 20 20 20 20 44 0D 0A XRA D..
018200: 61 76 61 69 6C 28 61 62 6F 72 74 29 20 69 6E 74 avail(abort) int
018210: 20 61 62 6F 72 74 3B 20 7B 0D 0A 20 20 63 68 61 abort; {.. cha
018220: 72 20 78 3B 0D 0A 20 20 69 66 28 26 78 20 3C 20 r x;.. if(&x <
018230: 55 6D 65 6D 70 74 72 29 20 7B 0D 0A 20 20 20 20 Umemptr) {..
018240: 69 66 28 61 62 6F 72 74 29 20 65 78 69 74 28 27 if(abort) exit('
018250: 4D 27 29 3B 0D 0A 20 20 20 20 72 65 74 75 72 6E M');.. return
018260: 20 28 30 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 (0);.. }..
018270: 72 65 74 75 72 6E 20 28 26 78 20 2D 20 55 6D 65 return (&x - Ume
018280: 6D 70 74 72 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 3E mptr);.. }....>
018290: 3E 3E 20 43 41 4C 4C 2E 4D 41 43 20 38 34 38 37 >> CALL.MAC 8487
0182A0: 0D 0A 3B 0D 0A 3B 2D 2D 2D 2D 2D 20 43 41 4C 4C ..;..;----- CALL
0182B0: 3A 20 53 6D 61 6C 6C 2D 43 20 61 72 69 74 68 6D : Small-C arithm
0182C0: 65 74 69 63 20 61 6E 64 20 6C 6F 67 69 63 61 6C etic and logical
0182D0: 20 6C 69 62 72 61 72 79 0D 0A 3B 0D 0A 43 43 44 library..;..CCD
0182E0: 43 41 4C 3A 3A 0D 0A 20 20 20 20 20 20 20 20 50 CAL::.. P
0182F0: 43 48 4C 0D 0A 3B 0D 0A 43 43 44 44 47 43 3A 3A CHL..;..CCDDGC::
018300: 0D 0A 20 20 20 20 20 20 20 20 44 41 44 20 20 20 .. DAD
018310: 20 20 44 0D 0A 20 20 20 20 20 20 20 20 4A 4D 50 D.. JMP
018320: 20 20 20 20 20 43 43 47 43 48 41 52 0D 0A 3B 0D CCGCHAR..;.
018330: 0A 43 43 44 53 47 43 3A 3A 0D 0A 20 20 20 20 20 .CCDSGC::..
018340: 20 20 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 20 INX H..
018350: 20 20 20 20 20 20 49 4E 58 20 20 20 20 20 48 0D INX H.
018360: 0A 20 20 20 20 20 20 20 20 44 41 44 20 20 20 20 . DAD
018370: 20 53 50 0D 0A 3B 0D 0A 3B 46 45 54 43 48 20 41 SP..;..;FETCH A
018380: 20 53 49 4E 47 4C 45 20 42 59 54 45 20 46 52 4F SINGLE BYTE FRO
018390: 4D 20 54 48 45 20 41 44 44 52 45 53 53 20 49 4E M THE ADDRESS IN
0183A0: 20 48 4C 20 41 4E 44 20 53 49 47 4E 20 49 4E 54 HL AND SIGN INT
0183B0: 4F 20 48 4C 0D 0A 43 43 47 43 48 41 52 3A 3A 0D O HL..CCGCHAR::.
0183C0: 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 . MOV
0183D0: 20 41 2C 4D 0D 0A 3B 0D 0A 3B 50 55 54 20 54 48 A,M..;..;PUT TH
0183E0: 45 20 41 43 43 55 4D 20 49 4E 54 4F 20 48 4C 20 E ACCUM INTO HL
0183F0: 41 4E 44 20 53 49 47 4E 20 45 58 54 45 4E 44 20 AND SIGN EXTEND
018400: 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 MOV
018410: 48 2C 41 0D 0A 20 20 20 20 20 20 20 20 52 45 54 H,A.. RET
018420: 0D 0A 3B 0D 0A 3B 22 41 4E 44 22 20 48 4C 20 41 ..;..;"AND" HL A
018430: 4E 44 20 44 45 20 49 4E 54 4F 20 48 4C 0D 0A 43 ND DE INTO HL..C
018440: 43 41 4E 44 3A 3A 0D 0A 20 20 20 20 20 20 20 20 CAND::..
018450: 4D 4F 56 20 20 20 20 20 41 2C 4C 0D 0A 20 20 20 MOV A,L..
018460: 20 20 20 20 20 41 4E 41 20 20 20 20 20 45 0D 0A ANA E..
018470: 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 MOV
018480: 4C 2C 41 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 L,A.. MOV
018490: 20 20 20 20 20 41 2C 48 0D 0A 20 20 20 20 20 20 A,H..
0184A0: 20 20 41 4E 41 20 20 20 20 20 44 0D 0A 20 20 20 ANA D..
0184B0: 20 20 20 20 20 4D 4F 56 20 20 20 20 20 48 2C 41 MOV H,A
0184C0: 0D 0A 20 20 20 20 20 20 20 20 52 45 54 0D 0A 3B .. RET..;
0184D0: 0D 0A 3B 49 4E 20 41 4C 4C 20 54 48 45 20 46 4F ..;IN ALL THE FO
0184E0: 4C 4C 4F 57 49 4E 47 20 43 4F 4D 50 41 52 45 20 LLOWING COMPARE
0184F0: 52 4F 55 54 49 4E 45 53 2C 20 48 4C 20 49 53 20 ROUTINES, HL IS
018500: 53 45 54 20 54 4F 20 31 20 49 46 20 54 48 45 0D SET TO 1 IF THE.
018510: 0A 3B 20 20 43 4F 4E 44 49 54 49 4F 4E 20 49 53 .; CONDITION IS
018520: 20 54 52 55 45 2C 20 4F 54 48 45 52 57 49 53 45 TRUE, OTHERWISE
018530: 20 49 54 20 49 53 20 53 45 54 20 54 4F 20 30 20 IT IS SET TO 0
018540: 28 5A 45 52 4F 29 2E 0D 0A 3B 0D 0A 3B 54 45 53 (ZERO)...;..;TES
018550: 54 20 49 46 20 48 4C 20 3D 20 44 45 0D 0A 3B 0D T IF HL = DE..;.
018560: 0A 43 43 45 51 3A 3A 0D 0A 20 20 20 20 20 20 20 .CCEQ::..
018570: 20 43 41 4C 4C 20 20 20 20 43 43 43 4D 50 0D 0A CALL CCCMP..
018580: 20 20 20 20 20 20 20 20 52 5A 0D 0A 20 20 20 20 RZ..
018590: 20 20 20 20 44 43 58 20 20 20 20 20 48 0D 0A 20 DCX H..
0185A0: 20 20 20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B RET..;..;
0185B0: 54 45 53 54 20 49 46 20 44 45 20 21 3D 20 48 4C TEST IF DE != HL
0185C0: 0D 0A 43 43 4E 45 3A 3A 0D 0A 20 20 20 20 20 20 ..CCNE::..
0185D0: 20 20 43 41 4C 4C 20 20 20 20 43 43 43 4D 50 0D CALL CCCMP.
0185E0: 0A 20 20 20 20 20 20 20 20 52 4E 5A 0D 0A 20 20 . RNZ..
0185F0: 20 20 20 20 20 20 44 43 58 20 20 20 20 20 48 0D DCX H.
018600: 54 48 52 4F 55 47 48 20 48 2E 0D 0A 43 43 41 52 THROUGH H...CCAR
018610: 47 43 3A 3A 0D 0A 43 43 53 58 54 3A 3A 0D 0A 20 GC::..CCSXT::..
018620: 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 4C MOV L
018630: 2C 41 0D 0A 20 20 20 20 20 20 20 20 52 4C 43 0D ,A.. RLC.
018640: 0A 20 20 20 20 20 20 20 20 53 42 42 20 20 20 20 . SBB
018650: 20 41 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 A.. MOV
018660: 20 20 20 20 48 2C 41 0D 0A 20 20 20 20 20 20 20 H,A..
018670: 20 52 45 54 0D 0A 3B 0D 0A 43 43 44 44 47 49 3A RET..;..CCDDGI:
018680: 3A 0D 0A 20 20 20 20 20 20 20 20 44 41 44 20 20 :.. DAD
018690: 20 20 20 44 0D 0A 20 20 20 20 20 20 20 20 4A 4D D.. JM
0186A0: 50 20 20 20 20 20 43 43 47 49 4E 54 0D 0A 3B 0D P CCGINT..;.
0186B0: 0A 43 43 44 53 47 49 3A 3A 0D 0A 20 20 20 20 20 .CCDSGI::..
0186C0: 20 20 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 20 INX H..
0186D0: 20 20 20 20 20 20 49 4E 58 20 20 20 20 20 48 0D INX H.
0186E0: 0A 20 20 20 20 20 20 20 20 44 41 44 20 20 20 20 . DAD
0186F0: 20 53 50 0D 0A 3B 0D 0A 3B 46 45 54 43 48 20 41 SP..;..;FETCH A
018700: 20 46 55 4C 4C 20 31 36 2D 42 49 54 20 49 4E 54 FULL 16-BIT INT
018710: 45 47 45 52 20 46 52 4F 4D 20 54 48 45 20 41 44 EGER FROM THE AD
018720: 44 52 45 53 53 20 49 4E 20 48 4C 20 49 4E 54 4F DRESS IN HL INTO
018730: 20 48 4C 0D 0A 43 43 47 49 4E 54 3A 3A 0D 0A 20 HL..CCGINT::..
018740: 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 41 MOV A
018750: 2C 4D 0D 0A 20 20 20 20 20 20 20 20 49 4E 58 20 ,M.. INX
018760: 20 20 20 20 48 0D 0A 20 20 20 20 20 20 20 20 4D H.. M
018770: 4F 56 20 20 20 20 20 48 2C 4D 0D 0A 20 20 20 20 OV H,M..
018780: 20 20 20 20 4D 4F 56 20 20 20 20 20 4C 2C 41 0D MOV L,A.
018790: 0A 20 20 20 20 20 20 20 20 52 45 54 0D 0A 3B 0D . RET..;.
0187A0: 0A 43 43 44 45 43 43 3A 3A 0D 0A 20 20 20 20 20 .CCDECC::..
0187B0: 20 20 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 20 INX H..
0187C0: 20 20 20 20 20 20 49 4E 58 20 20 20 20 20 48 0D INX H.
0187D0: 0A 20 20 20 20 20 20 20 20 44 41 44 20 20 20 20 . DAD
0187E0: 20 53 50 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 SP.. MOV
0187F0: 20 20 20 20 20 44 2C 48 0D 0A 20 20 20 20 20 20 D,H..
018800: 0A 20 20 20 20 20 20 20 20 52 45 54 0D 0A 3B 0D . RET..;.
018810: 0A 3B 54 45 53 54 20 49 46 20 44 45 20 3E 20 48 .;TEST IF DE > H
018820: 4C 20 28 53 49 47 4E 45 44 29 0D 0A 43 43 47 54 L (SIGNED)..CCGT
018830: 3A 3A 0D 0A 20 20 20 20 20 20 20 20 58 43 48 47 ::.. XCHG
018840: 0D 0A 20 20 20 20 20 20 20 20 43 41 4C 4C 20 20 .. CALL
018850: 20 20 43 43 43 4D 50 0D 0A 20 20 20 20 20 20 20 CCCMP..
018860: 20 52 43 0D 0A 20 20 20 20 20 20 20 20 44 43 58 RC.. DCX
018870: 20 20 20 20 20 48 0D 0A 20 20 20 20 20 20 20 20 H..
018880: 52 45 54 0D 0A 3B 0D 0A 3B 54 45 53 54 20 49 46 RET..;..;TEST IF
018890: 20 44 45 20 3C 3D 20 48 4C 20 28 53 49 47 4E 45 DE <= HL (SIGNE
0188A0: 44 29 0D 0A 43 43 4C 45 3A 3A 0D 0A 20 20 20 20 D)..CCLE::..
0188B0: 20 20 20 20 43 41 4C 4C 20 20 20 20 43 43 43 4D CALL CCCM
0188C0: 50 0D 0A 20 20 20 20 20 20 20 20 52 5A 0D 0A 20 P.. RZ..
0188D0: 20 20 20 20 20 20 20 52 43 0D 0A 20 20 20 20 20 RC..
0188E0: 20 20 20 44 43 58 20 20 20 20 20 48 0D 0A 20 20 DCX H..
0188F0: 20 20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 54 RET..;..;T
018900: 45 53 54 20 49 46 20 44 45 20 3E 3D 20 48 4C 20 EST IF DE >= HL
018910: 28 53 49 47 4E 45 44 29 0D 0A 43 43 47 45 3A 3A (SIGNED)..CCGE::
018920: 0D 0A 20 20 20 20 20 20 20 20 43 41 4C 4C 20 20 .. CALL
018930: 20 20 43 43 43 4D 50 0D 0A 20 20 20 20 20 20 20 CCCMP..
018940: 20 52 4E 43 0D 0A 20 20 20 20 20 20 20 20 44 43 RNC.. DC
018950: 58 20 20 20 20 20 48 0D 0A 20 20 20 20 20 20 20 X H..
018960: 20 52 45 54 0D 0A 3B 0D 0A 3B 54 45 53 54 20 49 RET..;..;TEST I
018970: 46 20 44 45 20 3C 20 48 4C 20 28 53 49 47 4E 45 F DE < HL (SIGNE
018980: 44 29 0D 0A 43 43 4C 54 3A 3A 0D 0A 20 20 20 20 D)..CCLT::..
018990: 20 20 20 20 43 41 4C 4C 20 20 20 20 43 43 43 4D CALL CCCM
0189A0: 50 0D 0A 20 20 20 20 20 20 20 20 52 43 0D 0A 20 P.. RC..
0189B0: 20 20 20 20 20 20 20 44 43 58 20 20 20 20 20 48 DCX H
0189C0: 0D 0A 20 20 20 20 20 20 20 20 52 45 54 0D 0A 3B .. RET..;
0189D0: 0D 0A 3B 43 4F 4D 4D 4F 4E 20 52 4F 55 54 49 4E ..;COMMON ROUTIN
0189E0: 45 20 54 4F 20 50 45 52 46 4F 52 4D 20 41 20 53 E TO PERFORM A S
0189F0: 49 47 4E 45 44 20 43 4F 4D 50 41 52 45 20 4F 46 IGNED COMPARE OF
018A00: 20 20 4D 4F 56 20 20 20 20 20 45 2C 4C 0D 0A 20 MOV E,L..
018A10: 20 20 20 20 20 20 20 43 41 4C 4C 20 20 20 20 43 CALL C
018A20: 43 47 43 48 41 52 0D 0A 20 20 20 20 20 20 20 20 CGCHAR..
018A30: 44 43 58 20 20 20 20 20 48 0D 0A 20 20 20 20 20 DCX H..
018A40: 20 20 20 4D 4F 56 20 20 20 20 20 41 2C 4C 0D 0A MOV A,L..
018A50: 20 20 20 20 20 20 20 20 53 54 41 58 20 20 20 20 STAX
018A60: 44 0D 0A 20 20 20 20 20 20 20 20 52 45 54 0D 0A D.. RET..
018A70: 3B 0D 0A 43 43 49 4E 43 43 3A 3A 0D 0A 20 20 20 ;..CCINCC::..
018A80: 20 20 20 20 20 49 4E 58 20 20 20 20 20 48 0D 0A INX H..
018A90: 20 20 20 20 20 20 20 20 49 4E 58 20 20 20 20 20 INX
018AA0: 48 0D 0A 20 20 20 20 20 20 20 20 44 41 44 20 20 H.. DAD
018AB0: 20 20 20 53 50 0D 0A 20 20 20 20 20 20 20 20 4D SP.. M
018AC0: 4F 56 20 20 20 20 20 44 2C 48 0D 0A 20 20 20 20 OV D,H..
018AD0: 20 20 20 20 4D 4F 56 20 20 20 20 20 45 2C 4C 0D MOV E,L.
018AE0: 0A 20 20 20 20 20 20 20 20 43 41 4C 4C 20 20 20 . CALL
018AF0: 20 43 43 47 43 48 41 52 0D 0A 20 20 20 20 20 20 CCGCHAR..
018B00: 20 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 20 20 INX H..
018B10: 20 20 20 20 20 4D 4F 56 20 20 20 20 20 41 2C 4C MOV A,L
018B20: 0D 0A 20 20 20 20 20 20 20 20 53 54 41 58 20 20 .. STAX
018B30: 20 20 44 0D 0A 20 20 20 20 20 20 20 20 52 45 54 D.. RET
018B40: 0D 0A 3B 0D 0A 43 44 50 44 50 43 3A 3A 0D 0A 20 ..;..CDPDPC::..
018B50: 20 20 20 20 20 20 20 44 41 44 20 20 20 20 20 44 DAD D
018B60: 0D 0A 43 43 50 44 50 43 3A 3A 0D 0A 20 20 20 20 ..CCPDPC::..
018B70: 20 20 20 20 50 4F 50 20 20 20 20 20 42 20 20 20 POP B
018B80: 20 20 20 20 3B 52 45 54 20 41 44 44 52 0D 0A 20 ;RET ADDR..
018B90: 20 20 20 20 20 20 20 50 4F 50 20 20 20 20 20 44 POP D
018BA0: 0D 0A 20 20 20 20 20 20 20 20 50 55 53 48 20 20 .. PUSH
018BB0: 20 20 42 0D 0A 3B 0D 0A 3B 53 54 4F 52 45 20 41 B..;..;STORE A
018BC0: 20 53 49 4E 47 4C 45 20 42 59 54 45 20 46 52 4F SINGLE BYTE FRO
018BD0: 4D 20 48 4C 20 41 54 20 54 48 45 20 41 44 44 52 M HL AT THE ADDR
018BE0: 45 53 53 20 49 4E 20 44 45 0D 0A 43 43 50 43 48 ESS IN DE..CCPCH
018BF0: 41 52 3A 3A 0D 0A 50 43 48 41 52 3A 20 20 4D 4F AR::..PCHAR: MO
018C00: 20 44 45 20 41 4E 44 20 48 4C 0D 0A 3B 20 54 48 DE AND HL..; TH
018C10: 49 53 20 52 4F 55 54 49 4E 45 20 50 45 52 46 4F IS ROUTINE PERFO
018C20: 52 4D 53 20 44 45 20 2D 20 48 4C 20 41 4E 44 20 RMS DE - HL AND
018C30: 53 45 54 53 20 54 48 45 20 43 4F 4E 44 49 54 49 SETS THE CONDITI
018C40: 4F 4E 53 3A 0D 0A 3B 20 43 41 52 52 59 20 52 45 ONS:..; CARRY RE
018C50: 46 4C 45 43 54 53 20 53 49 47 4E 20 4F 46 20 44 FLECTS SIGN OF D
018C60: 49 46 46 45 52 45 4E 43 45 20 28 53 45 54 20 4D IFFERENCE (SET M
018C70: 45 41 4E 53 20 44 45 20 3C 20 48 4C 29 0D 0A 3B EANS DE < HL)..;
018C80: 20 5A 45 52 4F 2F 4E 4F 4E 2D 5A 45 52 4F 20 53 ZERO/NON-ZERO S
018C90: 45 54 20 41 43 43 4F 52 44 49 4E 47 20 54 4F 20 ET ACCORDING TO
018CA0: 45 51 55 41 4C 49 54 59 2E 0D 0A 43 43 43 4D 50 EQUALITY...CCCMP
018CB0: 3A 3A 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 ::.. MOV
018CC0: 20 20 20 20 41 2C 48 20 20 20 20 20 3B 49 4E 56 A,H ;INV
018CD0: 45 52 54 20 53 49 47 4E 20 4F 46 20 48 4C 0D 0A ERT SIGN OF HL..
018CE0: 20 20 20 20 20 20 20 20 58 52 49 20 20 20 20 20 XRI
018CF0: 38 30 48 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 80H.. MOV
018D00: 20 20 20 20 20 48 2C 41 0D 0A 20 20 20 20 20 20 H,A..
018D10: 20 20 4D 4F 56 20 20 20 20 20 41 2C 44 20 20 20 MOV A,D
018D20: 20 20 3B 49 4E 56 45 52 54 20 53 49 47 4E 20 4F ;INVERT SIGN O
018D30: 46 20 44 45 0D 0A 20 20 20 20 20 20 20 20 58 52 F DE.. XR
018D40: 49 20 20 20 20 20 38 30 48 0D 0A 20 20 20 20 20 I 80H..
018D50: 20 20 20 43 4D 50 20 20 20 20 20 48 20 20 20 20 CMP H
018D60: 20 20 20 3B 43 4F 4D 50 41 52 45 20 4D 53 42 53 ;COMPARE MSBS
018D70: 0D 0A 20 20 20 20 20 20 20 20 4A 4E 5A 20 20 20 .. JNZ
018D80: 20 20 43 43 43 4D 50 31 20 20 3B 44 4F 4E 45 20 CCCMP1 ;DONE
018D90: 49 46 20 4E 45 51 0D 0A 20 20 20 20 20 20 20 20 IF NEQ..
018DA0: 4D 4F 56 20 20 20 20 20 41 2C 45 20 20 20 20 20 MOV A,E
018DB0: 3B 43 4F 4D 50 41 52 45 20 4C 53 42 53 0D 0A 20 ;COMPARE LSBS..
018DC0: 20 20 20 20 20 20 20 43 4D 50 20 20 20 20 20 4C CMP L
018DD0: 0D 0A 43 43 43 4D 50 31 3A 20 4C 58 49 20 48 2C ..CCCMP1: LXI H,
018DE0: 31 20 20 20 20 20 20 20 20 20 3B 50 52 45 53 45 1 ;PRESE
018DF0: 54 20 54 52 55 45 20 43 4F 4E 44 0D 0A 20 20 20 T TRUE COND..
018E00: 56 20 20 20 20 20 41 2C 4C 0D 0A 20 20 20 20 20 V A,L..
018E10: 20 20 20 53 54 41 58 20 20 20 20 44 0D 0A 20 20 STAX D..
018E20: 20 20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 43 43 RET..;..CC
018E30: 44 45 43 49 3A 3A 0D 0A 20 20 20 20 20 20 20 20 DECI::..
018E40: 49 4E 58 20 20 20 20 20 48 0D 0A 20 20 20 20 20 INX H..
018E50: 20 20 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 20 INX H..
018E60: 20 20 20 20 20 20 44 41 44 20 20 20 20 20 53 50 DAD SP
018E70: 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 .. MOV
018E80: 20 20 44 2C 48 0D 0A 20 20 20 20 20 20 20 20 4D D,H.. M
018E90: 4F 56 20 20 20 20 20 45 2C 4C 0D 0A 20 20 20 20 OV E,L..
018EA0: 20 20 20 20 43 41 4C 4C 20 20 20 20 43 43 47 49 CALL CCGI
018EB0: 4E 54 0D 0A 20 20 20 20 20 20 20 20 44 43 58 20 NT.. DCX
018EC0: 20 20 20 20 48 0D 0A 20 20 20 20 20 20 20 20 4A H.. J
018ED0: 4D 50 20 20 20 20 20 43 43 50 49 4E 54 0D 0A 3B MP CCPINT..;
018EE0: 0D 0A 43 43 49 4E 43 49 3A 3A 0D 0A 20 20 20 20 ..CCINCI::..
018EF0: 20 20 20 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 INX H..
018F00: 20 20 20 20 20 20 20 49 4E 58 20 20 20 20 20 48 INX H
018F10: 0D 0A 20 20 20 20 20 20 20 20 44 41 44 20 20 20 .. DAD
018F20: 20 20 53 50 0D 0A 20 20 20 20 20 20 20 20 4D 4F SP.. MO
018F30: 56 20 20 20 20 20 44 2C 48 0D 0A 20 20 20 20 20 V D,H..
018F40: 20 20 20 4D 4F 56 20 20 20 20 20 45 2C 4C 0D 0A MOV E,L..
018F50: 20 20 20 20 20 20 20 20 43 41 4C 4C 20 20 20 20 CALL
018F60: 43 43 47 49 4E 54 0D 0A 20 20 20 20 20 20 20 20 CCGINT..
018F70: 49 4E 58 20 20 20 20 20 48 0D 0A 20 20 20 20 20 INX H..
018F80: 20 20 20 4A 4D 50 20 20 20 20 20 43 43 50 49 4E JMP CCPIN
018F90: 54 0D 0A 3B 0D 0A 43 44 50 44 50 49 3A 3A 0D 0A T..;..CDPDPI::..
018FA0: 20 20 20 20 20 20 20 20 44 41 44 20 20 20 20 20 DAD
018FB0: 44 0D 0A 43 43 50 44 50 49 3A 3A 0D 0A 20 20 20 D..CCPDPI::..
018FC0: 20 20 20 20 20 50 4F 50 20 20 20 20 20 42 20 20 POP B
018FD0: 20 20 20 20 20 3B 52 45 54 20 41 44 44 52 0D 0A ;RET ADDR..
018FE0: 20 20 20 20 20 20 20 20 50 4F 50 20 20 20 20 20 POP
018FF0: 44 0D 0A 20 20 20 20 20 20 20 20 50 55 53 48 20 D.. PUSH
019000: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
019010: 15 00 01 00 02 09 52 E5 15 00 41 02 00 00 00 02 ......R...A.....
019020: 15 00 46 02 00 00 00 02 15 00 42 02 00 00 00 02 ..F.......B.....
019030: 15 00 47 02 00 00 00 02 15 00 43 02 00 00 00 02 ..G.......C.....
019040: 15 00 48 02 00 00 00 02 15 00 44 02 00 00 00 02 ..H.......D.....
019050: 15 00 49 02 00 00 00 02 15 00 45 02 00 00 00 02 ..I.......E.....
019060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
019070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
019080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
019090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0190A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0190B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0190C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0190D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0190E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0190F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
019100: 20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 54 45 RET..;..;TE
019110: 53 54 20 49 46 20 44 45 20 3E 3D 20 48 4C 20 28 ST IF DE >= HL (
019120: 55 4E 53 49 47 4E 45 44 29 0D 0A 43 43 55 47 45 UNSIGNED)..CCUGE
019130: 3A 3A 0D 0A 20 20 20 20 20 20 20 20 43 41 4C 4C ::.. CALL
019140: 20 20 20 20 43 43 55 43 4D 50 0D 0A 20 20 20 20 CCUCMP..
019150: 20 20 20 20 52 4E 43 0D 0A 20 20 20 20 20 20 20 RNC..
019160: 20 44 43 58 20 20 20 20 20 48 0D 0A 20 20 20 20 DCX H..
019170: 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 54 45 53 RET..;..;TES
019180: 54 20 49 46 20 44 45 20 3C 20 48 4C 20 28 55 4E T IF DE < HL (UN
019190: 53 49 47 4E 45 44 29 0D 0A 43 43 55 4C 54 3A 3A SIGNED)..CCULT::
0191A0: 0D 0A 20 20 20 20 20 20 20 20 43 41 4C 4C 20 20 .. CALL
0191B0: 20 20 43 43 55 43 4D 50 0D 0A 20 20 20 20 20 20 CCUCMP..
0191C0: 20 20 52 43 0D 0A 20 20 20 20 20 20 20 20 44 43 RC.. DC
0191D0: 58 20 20 20 20 20 48 0D 0A 20 20 20 20 20 20 20 X H..
0191E0: 20 52 45 54 0D 0A 3B 0D 0A 3B 54 45 53 54 20 49 RET..;..;TEST I
0191F0: 46 20 44 45 20 3E 20 48 4C 20 28 55 4E 53 49 47 F DE > HL (UNSIG
019200: 4E 45 44 29 0D 0A 43 43 55 47 54 3A 3A 0D 0A 20 NED)..CCUGT::..
019210: 20 20 20 20 20 20 20 58 43 48 47 0D 0A 20 20 20 XCHG..
019220: 20 20 20 20 20 43 41 4C 4C 20 20 20 20 43 43 55 CALL CCU
019230: 43 4D 50 0D 0A 20 20 20 20 20 20 20 20 52 43 0D CMP.. RC.
019240: 0A 20 20 20 20 20 20 20 20 44 43 58 20 20 20 20 . DCX
019250: 20 48 0D 0A 20 20 20 20 20 20 20 20 52 45 54 0D H.. RET.
019260: 0A 3B 0D 0A 3B 54 45 53 54 20 49 46 20 44 45 20 .;..;TEST IF DE
019270: 3C 3D 20 48 4C 20 28 55 4E 53 49 47 4E 45 44 29 <= HL (UNSIGNED)
019280: 0D 0A 43 43 55 4C 45 3A 3A 0D 0A 20 20 20 20 20 ..CCULE::..
019290: 20 20 20 43 41 4C 4C 20 20 20 20 43 43 55 43 4D CALL CCUCM
0192A0: 50 0D 0A 20 20 20 20 20 20 20 20 52 5A 0D 0A 20 P.. RZ..
0192B0: 20 20 20 20 20 20 20 52 43 0D 0A 20 20 20 20 20 RC..
0192C0: 20 20 20 44 43 58 20 20 20 20 20 48 0D 0A 20 20 DCX H..
0192D0: 20 20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 43 RET..;..;C
0192E0: 4F 4D 4D 4F 4E 20 52 4F 55 54 49 4E 45 20 54 4F OMMON ROUTINE TO
0192F0: 20 50 45 52 46 4F 52 4D 20 55 4E 53 49 47 4E 45 PERFORM UNSIGNE
019300: 2C 30 0D 0A 43 43 44 49 56 31 3A 20 44 41 44 20 ,0..CCDIV1: DAD
019310: 20 20 20 20 48 0D 0A 20 20 20 20 20 20 20 20 43 H.. C
019320: 41 4C 4C 20 20 20 20 43 43 52 44 45 4C 0D 0A 20 ALL CCRDEL..
019330: 20 20 20 20 20 20 20 4A 5A 20 20 20 20 20 20 43 JZ C
019340: 43 44 49 56 32 0D 0A 20 20 20 20 20 20 20 20 43 CDIV2.. C
019350: 41 4C 4C 20 20 20 20 43 43 43 4D 50 42 43 44 45 ALL CCCMPBCDE
019360: 0D 0A 20 20 20 20 20 20 20 20 4A 4D 20 20 20 20 .. JM
019370: 20 20 43 43 44 49 56 32 0D 0A 20 20 20 20 20 20 CCDIV2..
019380: 20 20 4D 4F 56 20 20 20 20 20 41 2C 4C 0D 0A 20 MOV A,L..
019390: 20 20 20 20 20 20 20 4F 52 49 20 20 20 20 20 31 ORI 1
0193A0: 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 .. MOV
0193B0: 20 20 4C 2C 41 0D 0A 20 20 20 20 20 20 20 20 4D L,A.. M
0193C0: 4F 56 20 20 20 20 20 41 2C 45 0D 0A 20 20 20 20 OV A,E..
0193D0: 20 20 20 20 53 55 42 20 20 20 20 20 43 0D 0A 20 SUB C..
0193E0: 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 45 MOV E
0193F0: 2C 41 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 ,A.. MOV
019400: 20 20 20 20 41 2C 44 0D 0A 20 20 20 20 20 20 20 A,D..
019410: 20 53 42 42 20 20 20 20 20 42 0D 0A 20 20 20 20 SBB B..
019420: 20 20 20 20 4D 4F 56 20 20 20 20 20 44 2C 41 0D MOV D,A.
019430: 0A 43 43 44 49 56 32 3A 20 50 4F 50 20 20 20 20 .CCDIV2: POP
019440: 20 50 53 57 0D 0A 20 20 20 20 20 20 20 20 44 43 PSW.. DC
019450: 52 20 20 20 20 20 41 0D 0A 20 20 20 20 20 20 20 R A..
019460: 20 4A 5A 20 20 20 20 20 20 43 43 44 49 56 33 0D JZ CCDIV3.
019470: 0A 20 20 20 20 20 20 20 20 50 55 53 48 20 20 20 . PUSH
019480: 20 50 53 57 0D 0A 20 20 20 20 20 20 20 20 4A 4D PSW.. JM
019490: 50 20 20 20 20 20 43 43 44 49 56 31 0D 0A 43 43 P CCDIV1..CC
0194A0: 44 49 56 33 3A 20 50 4F 50 20 20 20 20 20 50 53 DIV3: POP PS
0194B0: 57 0D 0A 20 20 20 20 20 20 20 20 52 50 0D 0A 20 W.. RP..
0194C0: 20 20 20 20 20 20 20 43 41 4C 4C 20 20 20 20 43 CALL C
0194D0: 43 44 45 4E 45 47 0D 0A 20 20 20 20 20 20 20 20 CDENEG..
0194E0: 58 43 48 47 0D 0A 20 20 20 20 20 20 20 20 43 41 XCHG.. CA
0194F0: 4C 4C 20 20 20 20 43 43 44 45 4E 45 47 0D 0A 20 LL CCDENEG..
019500: 44 20 43 4F 4D 50 41 52 45 0D 0A 3B 20 43 41 52 D COMPARE..; CAR
019510: 52 59 20 53 45 54 20 49 46 20 44 45 20 3C 20 48 RY SET IF DE < H
019520: 4C 0D 0A 3B 20 5A 45 52 4F 2F 4E 4F 4E 5A 45 52 L..; ZERO/NONZER
019530: 4F 20 53 45 54 20 41 43 43 4F 52 44 49 4E 47 4C O SET ACCORDINGL
019540: 59 0D 0A 43 43 55 43 4D 50 3A 3A 0D 0A 20 20 20 Y..CCUCMP::..
019550: 20 20 20 20 20 4D 4F 56 20 20 20 20 20 41 2C 44 MOV A,D
019560: 0D 0A 20 20 20 20 20 20 20 20 43 4D 50 20 20 20 .. CMP
019570: 20 20 48 0D 0A 20 20 20 20 20 20 20 20 4A 4E 5A H.. JNZ
019580: 20 20 20 20 20 55 43 4D 50 31 0D 0A 20 20 20 20 UCMP1..
019590: 20 20 20 20 4D 4F 56 20 20 20 20 20 41 2C 45 0D MOV A,E.
0195A0: 0A 20 20 20 20 20 20 20 20 43 4D 50 20 20 20 20 . CMP
0195B0: 20 4C 0D 0A 55 43 4D 50 31 3A 20 20 4C 58 49 20 L..UCMP1: LXI
0195C0: 20 20 20 20 48 2C 31 0D 0A 20 20 20 20 20 20 20 H,1..
0195D0: 20 52 45 54 0D 0A 3B 0D 0A 3B 53 48 49 46 54 20 RET..;..;SHIFT
0195E0: 44 45 20 41 52 49 54 48 4D 45 54 49 43 41 4C 4C DE ARITHMETICALL
0195F0: 59 20 52 49 47 48 54 20 42 59 20 48 4C 20 41 4E Y RIGHT BY HL AN
019600: 44 20 52 45 54 55 52 4E 20 49 4E 20 48 4C 0D 0A D RETURN IN HL..
019610: 43 43 41 53 52 3A 3A 0D 0A 20 20 20 20 20 20 20 CCASR::..
019620: 20 58 43 48 47 0D 0A 20 20 20 20 20 20 20 20 44 XCHG.. D
019630: 43 52 20 20 20 20 20 45 0D 0A 20 20 20 20 20 20 CR E..
019640: 20 20 52 4D 0D 0A 20 20 20 20 20 20 20 20 4D 4F RM.. MO
019650: 56 20 20 20 20 20 41 2C 48 0D 0A 20 20 20 20 20 V A,H..
019660: 20 20 20 52 41 4C 0D 0A 20 20 20 20 20 20 20 20 RAL..
019670: 4D 4F 56 20 20 20 20 20 41 2C 48 0D 0A 20 20 20 MOV A,H..
019680: 20 20 20 20 20 52 41 52 0D 0A 20 20 20 20 20 20 RAR..
019690: 20 20 4D 4F 56 20 20 20 20 20 48 2C 41 0D 0A 20 MOV H,A..
0196A0: 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 41 MOV A
0196B0: 2C 4C 0D 0A 20 20 20 20 20 20 20 20 52 41 52 0D ,L.. RAR.
0196C0: 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 . MOV
0196D0: 20 4C 2C 41 0D 0A 20 20 20 20 20 20 20 20 4A 4D L,A.. JM
0196E0: 50 20 20 20 20 20 43 43 41 53 52 2B 31 0D 0A 3B P CCASR+1..;
0196F0: 0D 0A 3B 53 48 49 46 54 20 44 45 20 41 52 49 54 ..;SHIFT DE ARIT
019700: 20 20 20 20 20 20 20 58 43 48 47 0D 0A 20 20 20 XCHG..
019710: 20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 4E 45 RET..;..;NE
019720: 47 41 54 45 20 54 48 45 20 49 4E 54 45 47 45 52 GATE THE INTEGER
019730: 20 49 4E 20 44 45 20 28 49 4E 54 45 52 4E 41 4C IN DE (INTERNAL
019740: 20 52 4F 55 54 49 4E 45 29 0D 0A 43 43 44 45 4E ROUTINE)..CCDEN
019750: 45 47 3A 20 4D 4F 56 20 20 20 20 41 2C 44 0D 0A EG: MOV A,D..
019760: 20 20 20 20 20 20 20 20 43 4D 41 0D 0A 20 20 20 CMA..
019770: 20 20 20 20 20 4D 4F 56 20 20 20 20 20 44 2C 41 MOV D,A
019780: 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 .. MOV
019790: 20 20 41 2C 45 0D 0A 20 20 20 20 20 20 20 20 43 A,E.. C
0197A0: 4D 41 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 MA.. MOV
0197B0: 20 20 20 20 45 2C 41 0D 0A 20 20 20 20 20 20 20 E,A..
0197C0: 20 49 4E 58 20 20 20 20 20 44 0D 0A 20 20 20 20 INX D..
0197D0: 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 4E 45 47 RET..;..;NEG
0197E0: 41 54 45 20 54 48 45 20 49 4E 54 45 47 45 52 20 ATE THE INTEGER
0197F0: 49 4E 20 42 43 20 28 49 4E 54 45 52 4E 41 4C 20 IN BC (INTERNAL
019800: 52 4F 55 54 49 4E 45 29 0D 0A 43 43 42 43 4E 45 ROUTINE)..CCBCNE
019810: 47 3A 20 4D 4F 56 20 20 20 20 41 2C 42 0D 0A 20 G: MOV A,B..
019820: 20 20 20 20 20 20 20 43 4D 41 0D 0A 20 20 20 20 CMA..
019830: 20 20 20 20 4D 4F 56 20 20 20 20 20 42 2C 41 0D MOV B,A.
019840: 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 . MOV
019850: 20 41 2C 43 0D 0A 20 20 20 20 20 20 20 20 43 4D A,C.. CM
019860: 41 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 A.. MOV
019870: 20 20 20 43 2C 41 0D 0A 20 20 20 20 20 20 20 20 C,A..
019880: 49 4E 58 20 20 20 20 20 42 0D 0A 20 20 20 20 20 INX B..
019890: 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 52 4F 54 41 RET..;..;ROTA
0198A0: 54 45 20 44 45 20 4C 45 46 54 20 4F 4E 45 20 42 TE DE LEFT ONE B
0198B0: 49 54 20 28 49 4E 54 45 52 4E 41 4C 20 52 4F 55 IT (INTERNAL ROU
0198C0: 54 49 4E 45 29 0D 0A 43 43 52 44 45 4C 3A 20 4D TINE)..CCRDEL: M
0198D0: 4F 56 20 20 20 20 20 41 2C 45 0D 0A 20 20 20 20 OV A,E..
0198E0: 20 20 20 20 52 41 4C 0D 0A 20 20 20 20 20 20 20 RAL..
0198F0: 20 4D 4F 56 20 20 20 20 20 45 2C 41 0D 0A 20 20 MOV E,A..
019900: 48 4D 45 54 49 43 41 4C 4C 59 20 4C 45 46 54 20 HMETICALLY LEFT
019910: 42 59 20 48 4C 20 41 4E 44 20 52 45 54 55 52 4E BY HL AND RETURN
019920: 20 49 4E 20 48 4C 0D 0A 43 43 41 53 4C 3A 3A 0D IN HL..CCASL::.
019930: 0A 20 20 20 20 20 20 20 20 58 43 48 47 0D 0A 20 . XCHG..
019940: 20 20 20 20 20 20 20 44 43 52 20 20 20 20 20 45 DCR E
019950: 0D 0A 20 20 20 20 20 20 20 20 52 4D 0D 0A 20 20 .. RM..
019960: 20 20 20 20 20 20 44 41 44 20 20 20 20 20 48 0D DAD H.
019970: 0A 20 20 20 20 20 20 20 20 4A 4D 50 20 20 20 20 . JMP
019980: 20 43 43 41 53 4C 2B 31 0D 0A 3B 0D 0A 3B 53 55 CCASL+1..;..;SU
019990: 42 54 52 41 43 54 20 48 4C 20 46 52 4F 4D 20 44 BTRACT HL FROM D
0199A0: 45 20 41 4E 44 20 52 45 54 55 52 4E 20 49 4E 20 E AND RETURN IN
0199B0: 48 4C 0D 0A 43 43 53 55 42 3A 3A 0D 0A 20 20 20 HL..CCSUB::..
0199C0: 20 20 20 20 20 4D 4F 56 20 20 20 20 20 41 2C 45 MOV A,E
0199D0: 0D 0A 20 20 20 20 20 20 20 20 53 55 42 20 20 20 .. SUB
0199E0: 20 20 4C 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 L.. MOV
0199F0: 20 20 20 20 20 4C 2C 41 0D 0A 20 20 20 20 20 20 L,A..
019A00: 20 20 4D 4F 56 20 20 20 20 20 41 2C 44 0D 0A 20 MOV A,D..
019A10: 20 20 20 20 20 20 20 53 42 42 20 20 20 20 20 48 SBB H
019A20: 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 .. MOV
019A30: 20 20 48 2C 41 0D 0A 20 20 20 20 20 20 20 20 52 H,A.. R
019A40: 45 54 0D 0A 3B 0D 0A 3B 46 4F 52 4D 20 54 48 45 ET..;..;FORM THE
019A50: 20 54 57 4F 27 53 20 43 4F 4D 50 4C 45 4D 45 4E TWO'S COMPLEMEN
019A60: 54 20 4F 46 20 48 4C 0D 0A 43 43 4E 45 47 3A 3A T OF HL..CCNEG::
019A70: 0D 0A 20 20 20 20 20 20 20 20 43 41 4C 4C 20 20 .. CALL
019A80: 20 20 43 43 43 4F 4D 0D 0A 20 20 20 20 20 20 20 CCCOM..
019A90: 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 20 20 20 INX H..
019AA0: 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 46 4F 52 RET..;..;FOR
019AB0: 4D 20 54 48 45 20 4F 4E 45 27 53 20 43 4F 4D 50 M THE ONE'S COMP
019AC0: 4C 45 4D 45 4E 54 20 4F 46 20 48 4C 0D 0A 43 43 LEMENT OF HL..CC
019AD0: 43 4F 4D 3A 3A 0D 0A 20 20 20 20 20 20 20 20 4D COM::.. M
019AE0: 4F 56 20 20 20 20 20 41 2C 48 0D 0A 20 20 20 20 OV A,H..
019AF0: 20 20 20 20 43 4D 41 0D 0A 20 20 20 20 20 20 20 CMA..
019B00: 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 41 2C MOV A,
019B10: 44 0D 0A 20 20 20 20 20 20 20 20 52 41 4C 0D 0A D.. RAL..
019B20: 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 MOV
019B30: 44 2C 41 0D 0A 20 20 20 20 20 20 20 20 4F 52 41 D,A.. ORA
019B40: 20 20 20 20 20 45 0D 0A 20 20 20 20 20 20 20 20 E..
019B50: 52 45 54 0D 0A 3B 0D 0A 3B 43 4F 4D 50 41 52 45 RET..;..;COMPARE
019B60: 20 42 43 20 54 4F 20 44 45 20 28 49 4E 54 45 52 BC TO DE (INTER
019B70: 4E 41 4C 20 52 4F 55 54 49 4E 45 29 0D 0A 43 43 NAL ROUTINE)..CC
019B80: 43 4D 50 42 43 44 45 3A 20 4D 4F 56 20 20 41 2C CMPBCDE: MOV A,
019B90: 45 0D 0A 20 20 20 20 20 20 20 20 53 55 42 20 20 E.. SUB
019BA0: 20 20 20 43 0D 0A 20 20 20 20 20 20 20 20 4D 4F C.. MO
019BB0: 56 20 20 20 20 20 41 2C 44 0D 0A 20 20 20 20 20 V A,D..
019BC0: 20 20 20 53 42 42 20 20 20 20 20 42 0D 0A 20 20 SBB B..
019BD0: 20 20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 4C RET..;..;L
019BE0: 4F 47 49 43 41 4C 20 4E 45 47 41 54 49 4F 4E 0D OGICAL NEGATION.
019BF0: 0A 43 43 4C 4E 45 47 3A 3A 0D 0A 20 20 20 20 20 .CCLNEG::..
019C00: 20 20 20 4D 4F 56 20 20 20 20 20 41 2C 48 0D 0A MOV A,H..
019C10: 20 20 20 20 20 20 20 20 4F 52 41 20 20 20 20 20 ORA
019C20: 4C 0D 0A 20 20 20 20 20 20 20 20 4A 4E 5A 20 20 L.. JNZ
019C30: 20 20 20 24 2B 36 0D 0A 20 20 20 20 20 20 20 20 $+6..
019C40: 4D 56 49 20 20 20 20 20 4C 2C 31 0D 0A 20 20 20 MVI L,1..
019C50: 20 20 20 20 20 52 45 54 0D 0A 20 20 20 20 20 20 RET..
019C60: 20 20 4C 58 49 20 20 20 20 20 48 2C 30 0D 0A 20 LXI H,0..
019C70: 20 20 20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B RET..;..;
019C80: 20 45 58 45 43 55 54 45 20 22 53 57 49 54 43 48 EXECUTE "SWITCH
019C90: 22 20 53 54 41 54 45 4D 45 4E 54 0D 0A 3B 0D 0A " STATEMENT..;..
019CA0: 3B 20 20 48 4C 20 20 3D 20 20 53 57 49 54 43 48 ; HL = SWITCH
019CB0: 20 56 41 4C 55 45 0D 0A 3B 20 28 53 50 29 20 2D VALUE..; (SP) -
019CC0: 3E 20 53 57 49 54 43 48 20 54 41 42 4C 45 0D 0A > SWITCH TABLE..
019CD0: 3B 20 20 20 20 20 20 20 20 20 44 57 20 41 44 44 ; DW ADD
019CE0: 52 31 2C 20 56 41 4C 55 45 31 0D 0A 3B 20 20 20 R1, VALUE1..;
019CF0: 20 20 20 20 20 20 44 57 20 41 44 44 52 32 2C 20 DW ADDR2,
019D00: 20 4D 4F 56 20 20 20 20 20 48 2C 41 0D 0A 20 20 MOV H,A..
019D10: 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 41 2C MOV A,
019D20: 4C 0D 0A 20 20 20 20 20 20 20 20 43 4D 41 0D 0A L.. CMA..
019D30: 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 MOV
019D40: 4C 2C 41 0D 0A 20 20 20 20 20 20 20 20 52 45 54 L,A.. RET
019D50: 0D 0A 3B 0D 0A 3B 4D 55 4C 54 49 50 4C 59 20 44 ..;..;MULTIPLY D
019D60: 45 20 42 59 20 48 4C 20 41 4E 44 20 52 45 54 55 E BY HL AND RETU
019D70: 52 4E 20 49 4E 20 48 4C 20 28 53 49 47 4E 45 44 RN IN HL (SIGNED
019D80: 20 4D 55 4C 54 49 50 4C 59 29 0D 0A 43 43 4D 55 MULTIPLY)..CCMU
019D90: 4C 54 3A 3A 0D 0A 4D 55 4C 54 3A 20 20 20 4D 4F LT::..MULT: MO
019DA0: 56 20 20 20 20 20 42 2C 48 0D 0A 20 20 20 20 20 V B,H..
019DB0: 20 20 20 4D 4F 56 20 20 20 20 20 43 2C 4C 0D 0A MOV C,L..
019DC0: 20 20 20 20 20 20 20 20 4C 58 49 20 20 20 20 20 LXI
019DD0: 48 2C 30 0D 0A 4D 55 4C 54 31 3A 20 20 4D 4F 56 H,0..MULT1: MOV
019DE0: 20 20 20 20 20 41 2C 43 0D 0A 20 20 20 20 20 20 A,C..
019DF0: 20 20 52 52 43 0D 0A 20 20 20 20 20 20 20 20 4A RRC.. J
019E00: 4E 43 20 20 20 20 20 4D 55 4C 54 32 0D 0A 20 20 NC MULT2..
019E10: 20 20 20 20 20 20 44 41 44 20 20 20 20 20 44 0D DAD D.
019E20: 0A 4D 55 4C 54 32 3A 20 20 58 52 41 20 41 0D 0A .MULT2: XRA A..
019E30: 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 MOV
019E40: 41 2C 42 0D 0A 20 20 20 20 20 20 20 20 52 41 52 A,B.. RAR
019E50: 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 .. MOV
019E60: 20 20 42 2C 41 0D 0A 20 20 20 20 20 20 20 20 4D B,A.. M
019E70: 4F 56 20 20 20 20 20 41 2C 43 0D 0A 20 20 20 20 OV A,C..
019E80: 20 20 20 20 52 41 52 0D 0A 20 20 20 20 20 20 20 RAR..
019E90: 20 4D 4F 56 20 20 20 20 20 43 2C 41 0D 0A 20 20 MOV C,A..
019EA0: 20 20 20 20 20 20 4F 52 41 20 20 20 20 20 42 0D ORA B.
019EB0: 0A 20 20 20 20 20 20 20 20 52 5A 0D 0A 20 20 20 . RZ..
019EC0: 20 20 20 20 20 58 52 41 20 20 20 20 20 41 0D 0A XRA A..
019ED0: 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 MOV
019EE0: 41 2C 45 0D 0A 20 20 20 20 20 20 20 20 52 41 4C A,E.. RAL
019EF0: 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 .. MOV
019F00: 56 41 4C 55 45 32 0D 0A 3B 20 20 20 20 20 20 20 VALUE2..;
019F10: 20 20 2E 2E 2E 0D 0A 3B 20 20 20 20 20 20 20 20 .....;
019F20: 20 44 57 20 30 0D 0A 3B 20 20 20 20 20 20 20 20 DW 0..;
019F30: 5B 4A 4D 50 20 64 65 66 61 75 6C 74 5D 0D 0A 3B [JMP default]..;
019F40: 20 20 20 20 20 20 20 20 20 63 6F 6E 74 69 6E 75 continu
019F50: 61 74 69 6F 6E 0D 0A 3B 0D 0A 43 43 53 57 49 54 ation..;..CCSWIT
019F60: 43 48 3A 3A 0D 0A 20 20 20 20 20 20 20 20 58 43 CH::.. XC
019F70: 48 47 20 20 20 20 20 20 20 20 20 20 20 20 3B 44 HG ;D
019F80: 45 20 3D 20 20 53 57 49 54 43 48 20 56 41 4C 55 E = SWITCH VALU
019F90: 45 0D 0A 20 20 20 20 20 20 20 20 50 4F 50 20 20 E.. POP
019FA0: 20 20 20 48 20 20 20 20 20 20 20 3B 48 4C 20 2D H ;HL -
019FB0: 3E 20 53 57 49 54 43 48 20 54 41 42 4C 45 0D 0A > SWITCH TABLE..
019FC0: 53 57 4C 4F 4F 50 3A 20 4D 4F 56 20 20 20 20 20 SWLOOP: MOV
019FD0: 43 2C 4D 0D 0A 20 20 20 20 20 20 20 20 49 4E 58 C,M.. INX
019FE0: 20 20 20 20 20 48 0D 0A 20 20 20 20 20 20 20 20 H..
019FF0: 4D 4F 56 20 20 20 20 20 42 2C 4D 20 20 20 20 20 MOV B,M
01A000: 3B 42 43 20 2D 3E 20 43 41 53 45 20 41 44 44 52 ;BC -> CASE ADDR
01A010: 2C 20 45 4C 53 45 20 30 0D 0A 20 20 20 20 20 20 , ELSE 0..
01A020: 20 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 20 20 INX H..
01A030: 20 20 20 20 20 4D 4F 56 20 20 20 20 20 41 2C 42 MOV A,B
01A040: 0D 0A 20 20 20 20 20 20 20 20 4F 52 41 20 20 20 .. ORA
01A050: 20 20 43 0D 0A 20 20 20 20 20 20 20 20 4A 5A 20 C.. JZ
01A060: 20 20 20 20 20 53 57 45 4E 44 20 20 20 3B 44 45 SWEND ;DE
01A070: 46 41 55 4C 54 20 4F 52 20 43 4F 4E 54 49 4E 55 FAULT OR CONTINU
01A080: 41 54 49 4F 4E 20 43 4F 44 45 0D 0A 20 20 20 20 ATION CODE..
01A090: 20 20 20 20 4D 4F 56 20 20 20 20 20 41 2C 4D 0D MOV A,M.
01A0A0: 0A 20 20 20 20 20 20 20 20 49 4E 58 20 20 20 20 . INX
01A0B0: 20 48 0D 0A 20 20 20 20 20 20 20 20 43 4D 50 20 H.. CMP
01A0C0: 20 20 20 20 45 0D 0A 20 20 20 20 20 20 20 20 4D E.. M
01A0D0: 4F 56 20 20 20 20 20 41 2C 4D 0D 0A 20 20 20 20 OV A,M..
01A0E0: 20 20 20 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 INX H..
01A0F0: 20 20 20 20 20 20 20 4A 4E 5A 20 20 20 20 20 53 JNZ S
01A100: 20 20 45 2C 41 0D 0A 20 20 20 20 20 20 20 20 4D E,A.. M
01A110: 4F 56 20 20 20 20 20 41 2C 44 0D 0A 20 20 20 20 OV A,D..
01A120: 20 20 20 20 52 41 4C 0D 0A 20 20 20 20 20 20 20 RAL..
01A130: 20 4D 4F 56 20 20 20 20 20 44 2C 41 0D 0A 20 20 MOV D,A..
01A140: 20 20 20 20 20 20 4F 52 41 20 20 20 20 20 45 0D ORA E.
01A150: 0A 20 20 20 20 20 20 20 20 52 5A 0D 0A 20 20 20 . RZ..
01A160: 20 20 20 20 20 4A 4D 50 20 20 20 20 20 4D 55 4C JMP MUL
01A170: 54 31 0D 0A 3B 0D 0A 3B 44 49 56 49 44 45 20 44 T1..;..;DIVIDE D
01A180: 45 20 42 59 20 48 4C 20 41 4E 44 20 52 45 54 55 E BY HL AND RETU
01A190: 52 4E 20 51 55 4F 54 49 45 4E 54 20 49 4E 20 48 RN QUOTIENT IN H
01A1A0: 4C 2C 20 52 45 4D 41 49 4E 44 45 52 20 49 4E 20 L, REMAINDER IN
01A1B0: 44 45 20 28 53 49 47 4E 45 44 20 44 49 56 49 44 DE (SIGNED DIVID
01A1C0: 45 29 0D 0A 43 43 44 49 56 3A 3A 0D 0A 44 49 56 E)..CCDIV::..DIV
01A1D0: 3A 20 20 20 20 4D 4F 56 20 20 20 20 20 42 2C 48 : MOV B,H
01A1E0: 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 .. MOV
01A1F0: 20 20 43 2C 4C 0D 0A 20 20 20 20 20 20 20 20 4D C,L.. M
01A200: 4F 56 20 20 20 20 20 41 2C 44 0D 0A 20 20 20 20 OV A,D..
01A210: 20 20 20 20 58 52 41 20 20 20 20 20 42 0D 0A 20 XRA B..
01A220: 20 20 20 20 20 20 20 50 55 53 48 20 20 20 20 50 PUSH P
01A230: 53 57 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 SW.. MOV
01A240: 20 20 20 20 41 2C 44 0D 0A 20 20 20 20 20 20 20 A,D..
01A250: 20 4F 52 41 20 20 20 20 20 41 0D 0A 20 20 20 20 ORA A..
01A260: 20 20 20 20 43 4D 20 20 20 20 20 20 43 43 44 45 CM CCDE
01A270: 4E 45 47 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 NEG.. MOV
01A280: 20 20 20 20 20 41 2C 42 0D 0A 20 20 20 20 20 20 A,B..
01A290: 20 20 4F 52 41 20 20 20 20 20 41 0D 0A 20 20 20 ORA A..
01A2A0: 20 20 20 20 20 43 4D 20 20 20 20 20 20 43 43 42 CM CCB
01A2B0: 43 4E 45 47 0D 0A 20 20 20 20 20 20 20 20 4D 56 CNEG.. MV
01A2C0: 49 20 20 20 20 20 41 2C 31 36 0D 0A 20 20 20 20 I A,16..
01A2D0: 20 20 20 20 50 55 53 48 20 20 20 20 50 53 57 0D PUSH PSW.
01A2E0: 0A 20 20 20 20 20 20 20 20 58 43 48 47 0D 0A 20 . XCHG..
01A2F0: 20 20 20 20 20 20 20 4C 58 49 20 20 20 20 20 44 LXI D
01A300: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
01A310: 16 00 01 00 02 09 52 E5 16 00 41 02 00 00 00 02 ......R...A.....
01A320: 16 00 46 02 00 00 00 02 16 00 42 02 00 00 00 02 ..F.......B.....
01A330: 16 00 47 02 00 00 00 02 16 00 43 02 00 00 00 02 ..G.......C.....
01A340: 16 00 48 02 00 00 00 02 16 00 44 02 00 00 00 02 ..H.......D.....
01A350: 16 00 49 02 00 00 00 02 16 00 45 02 00 00 00 02 ..I.......E.....
01A360: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A370: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A390: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A3A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A3B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A3C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A3D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A3E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A3F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A400: 57 4C 4F 4F 50 0D 0A 20 20 20 20 20 20 20 20 43 WLOOP.. C
01A410: 4D 50 20 20 20 20 20 44 0D 0A 20 20 20 20 20 20 MP D..
01A420: 20 20 4A 4E 5A 20 20 20 20 20 53 57 4C 4F 4F 50 JNZ SWLOOP
01A430: 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 .. MOV
01A440: 20 20 48 2C 42 20 20 20 20 20 3B 43 41 53 45 20 H,B ;CASE
01A450: 4D 41 54 43 48 45 44 0D 0A 20 20 20 20 20 20 20 MATCHED..
01A460: 20 4D 4F 56 20 20 20 20 20 4C 2C 43 0D 0A 53 57 MOV L,C..SW
01A470: 45 4E 44 3A 20 20 50 43 48 4C 0D 0A 3B 0D 0A 55 END: PCHL..;..U
01A480: 65 6E 64 3A 20 6C 68 6C 64 20 20 36 20 20 20 20 end: lhld 6
01A490: 20 20 20 20 20 20 20 3B 67 65 74 20 62 64 6F 73 ;get bdos
01A4A0: 20 61 64 64 72 65 73 73 0D 0A 20 20 20 20 20 20 address..
01A4B0: 73 70 68 6C 20 20 20 20 20 20 20 20 20 20 20 20 sphl
01A4C0: 20 20 3B 75 73 65 20 66 6F 72 20 62 61 73 65 20 ;use for base
01A4D0: 6F 66 20 73 74 61 63 6B 0D 0A 20 20 20 20 20 20 of stack..
01A4E0: 6C 78 69 20 20 20 68 2C 55 65 6E 64 20 20 20 20 lxi h,Uend
01A4F0: 20 20 3B 67 65 74 20 73 74 61 72 74 20 6F 66 20 ;get start of
01A500: 66 72 65 65 20 6D 65 6D 6F 72 79 0D 0A 20 20 20 free memory..
01A510: 20 20 20 73 68 6C 64 20 20 55 6D 65 6D 70 74 72 shld Umemptr
01A520: 23 23 20 20 20 3B 75 73 65 20 66 6F 72 20 6D 65 ## ;use for me
01A530: 6D 6F 72 79 20 61 6C 6C 6F 63 61 74 69 6F 6E 0D mory allocation.
01A540: 0A 20 20 20 20 20 20 6A 6D 70 20 20 20 55 6D 61 . jmp Uma
01A550: 69 6E 23 23 20 20 20 20 20 3B 70 61 72 73 65 20 in## ;parse
01A560: 63 6F 6D 6D 61 6E 64 20 6C 69 6E 65 2C 20 65 78 command line, ex
01A570: 65 63 75 74 65 20 70 72 6F 67 72 61 6D 0D 0A 20 ecute program..
01A580: 20 20 20 20 20 65 6E 64 20 20 20 55 65 6E 64 20 end Uend
01A590: 20 20 20 20 20 20 0D 0A 3E 3E 3E 20 43 41 4C 4C ..>>> CALL
01A5A0: 4F 43 2E 43 20 33 36 30 0D 0A 23 64 65 66 69 6E OC.C 360..#defin
01A5B0: 65 20 4E 4F 43 43 41 52 47 43 20 20 2F 2A 20 6E e NOCCARGC /* n
01A5C0: 6F 20 61 72 67 75 6D 65 6E 74 20 63 6F 75 6E 74 o argument count
01A5D0: 20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A 23 69 6E passing */..#in
01A5E0: 63 6C 75 64 65 20 73 74 64 69 6F 2E 68 0D 0A 2F clude stdio.h../
01A5F0: 2A 0D 0A 2A 2A 20 43 6C 65 61 72 65 64 2D 6D 65 *..** Cleared-me
01A600: 23 64 65 66 69 6E 65 20 47 45 54 50 4F 53 20 20 #define GETPOS
01A610: 20 33 36 20 20 2F 2A 20 67 65 74 20 6E 75 6D 62 36 /* get numb
01A620: 65 72 20 6F 66 20 63 75 72 72 65 6E 74 20 73 65 er of current se
01A630: 63 74 6F 72 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 ctor */..#define
01A640: 20 57 52 54 52 4E 44 20 20 20 34 30 20 20 2F 2A WRTRND 40 /*
01A650: 20 77 72 69 74 65 20 73 65 63 74 6F 72 20 72 61 write sector ra
01A660: 6E 64 6F 6D 6C 79 20 2A 2F 0D 0A 2F 2A 0D 0A 2A ndomly */../*..*
01A670: 2A 20 44 65 76 69 63 65 20 63 6F 64 65 73 0D 0A * Device codes..
01A680: 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 43 50 4D 43 */..#define CPMC
01A690: 4F 4E 20 44 43 4F 4E 49 4F 20 2F 2A 20 63 6F 6E ON DCONIO /* con
01A6A0: 73 6F 6C 65 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 sole */..#define
01A6B0: 20 43 50 4D 52 44 52 20 52 44 52 49 4E 50 20 2F CPMRDR RDRINP /
01A6C0: 2A 20 72 65 61 64 65 72 20 20 2A 2F 0D 0A 23 64 * reader */..#d
01A6D0: 65 66 69 6E 65 20 43 50 4D 50 55 4E 20 50 55 4E efine CPMPUN PUN
01A6E0: 4F 55 54 20 2F 2A 20 70 75 6E 63 68 20 20 20 2A OUT /* punch *
01A6F0: 2F 0D 0A 23 64 65 66 69 6E 65 20 43 50 4D 4C 53 /..#define CPMLS
01A700: 54 20 4C 53 54 4F 55 54 20 2F 2A 20 6C 69 73 74 T LSTOUT /* list
01A710: 20 20 20 20 2A 2F 0D 0A 2F 2A 0D 0A 2A 2A 20 46 */../*..** F
01A720: 69 6C 65 20 73 74 61 74 75 73 20 62 69 74 73 0D ile status bits.
01A730: 0A 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 52 44 42 .*/..#define RDB
01A740: 49 54 20 20 20 20 20 20 31 20 20 2F 2A 20 6F 70 IT 1 /* op
01A750: 65 6E 20 66 6F 72 20 72 65 61 64 20 2A 2F 0D 0A en for read */..
01A760: 23 64 65 66 69 6E 65 20 57 52 54 42 49 54 20 20 #define WRTBIT
01A770: 20 20 20 32 20 20 2F 2A 20 6F 70 65 6E 20 66 6F 2 /* open fo
01A780: 72 20 77 72 69 74 65 20 2A 2F 0D 0A 23 64 65 66 r write */..#def
01A790: 69 6E 65 20 45 4F 46 42 49 54 20 20 20 20 20 34 ine EOFBIT 4
01A7A0: 20 20 2F 2A 20 65 6F 66 20 63 6F 6E 64 69 74 69 /* eof conditi
01A7B0: 6F 6E 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 45 on */..#define E
01A7C0: 52 52 42 49 54 20 20 20 20 20 38 20 20 2F 2A 20 RRBIT 8 /*
01A7D0: 65 72 72 6F 72 20 63 6F 6E 64 69 74 69 6F 6E 20 error condition
01A7E0: 2A 2F 0D 0A 2F 2A 0D 0A 2A 2A 20 41 53 43 49 49 */../*..** ASCII
01A7F0: 20 63 68 61 72 61 63 74 65 72 73 0D 0A 2A 2F 0D characters..*/.
01A800: 6D 6F 72 79 20 61 6C 6C 6F 63 61 74 69 6F 6E 20 mory allocation
01A810: 6F 66 20 6E 20 69 74 65 6D 73 20 6F 66 20 73 69 of n items of si
01A820: 7A 65 20 62 79 74 65 73 2E 0D 0A 2A 2A 20 6E 20 ze bytes...** n
01A830: 20 20 20 20 3D 20 4E 75 6D 62 65 72 20 6F 66 20 = Number of
01A840: 69 74 65 6D 73 20 74 6F 20 61 6C 6C 6F 63 61 74 items to allocat
01A850: 65 20 73 70 61 63 65 20 66 6F 72 2E 0D 0A 2A 2A e space for...**
01A860: 20 73 69 7A 65 20 20 3D 20 53 69 7A 65 20 6F 66 size = Size of
01A870: 20 74 68 65 20 69 74 65 6D 73 20 69 6E 20 62 79 the items in by
01A880: 74 65 73 2E 0D 0A 2A 2A 20 52 65 74 75 72 6E 73 tes...** Returns
01A890: 20 74 68 65 20 61 64 64 72 65 73 73 20 6F 66 20 the address of
01A8A0: 74 68 65 20 61 6C 6C 6F 63 61 74 65 64 20 62 6C the allocated bl
01A8B0: 6F 63 6B 2C 0D 0A 2A 2A 20 65 6C 73 65 20 4E 55 ock,..** else NU
01A8C0: 4C 4C 20 66 6F 72 20 66 61 69 6C 75 72 65 2E 0D LL for failure..
01A8D0: 0A 2A 2F 0D 0A 63 61 6C 6C 6F 63 28 6E 2C 20 73 .*/..calloc(n, s
01A8E0: 69 7A 65 29 20 63 68 61 72 20 2A 6E 2C 20 2A 73 ize) char *n, *s
01A8F0: 69 7A 65 3B 20 7B 0D 0A 20 20 72 65 74 75 72 6E ize; {.. return
01A900: 20 28 55 61 6C 6C 6F 63 28 6E 2A 73 69 7A 65 2C (Ualloc(n*size,
01A910: 20 59 45 53 29 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E YES));.. }..>>
01A920: 3E 20 43 4C 45 41 52 45 52 52 2E 43 20 32 30 36 > CLEARERR.C 206
01A930: 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43 43 41 52 ..#define NOCCAR
01A940: 47 43 20 20 2F 2A 20 6E 6F 20 61 72 67 20 63 6F GC /* no arg co
01A950: 75 6E 74 20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A unt passing */..
01A960: 23 69 6E 63 6C 75 64 65 20 73 74 64 69 6F 2E 68 #include stdio.h
01A970: 0D 0A 23 69 6E 63 6C 75 64 65 20 63 6C 69 62 2E ..#include clib.
01A980: 64 65 66 0D 0A 65 78 74 65 72 6E 20 69 6E 74 20 def..extern int
01A990: 55 73 74 61 74 75 73 5B 5D 3B 0D 0A 2F 2A 0D 0A Ustatus[];../*..
01A9A0: 2A 2A 20 43 6C 65 61 72 20 65 72 72 6F 72 20 73 ** Clear error s
01A9B0: 74 61 74 75 73 20 66 6F 72 20 66 64 2E 0D 0A 2A tatus for fd...*
01A9C0: 2F 0D 0A 63 6C 65 61 72 65 72 72 28 66 64 29 20 /..clearerr(fd)
01A9D0: 69 6E 74 20 66 64 3B 20 7B 0D 0A 20 20 69 66 28 int fd; {.. if(
01A9E0: 55 6D 6F 64 65 28 66 64 29 29 20 55 73 74 61 74 Umode(fd)) Ustat
01A9F0: 75 73 5B 66 64 5D 20 26 3D 20 7E 45 52 52 42 49 us[fd] &= ~ERRBI
01AA00: 0A 23 64 65 66 69 6E 65 20 41 42 4F 52 54 20 20 .#define ABORT
01AA10: 20 20 33 0D 0A 23 64 65 66 69 6E 65 20 52 55 42 3..#define RUB
01AA20: 20 20 20 20 20 20 38 0D 0A 23 64 65 66 69 6E 65 8..#define
01AA30: 20 50 41 55 53 45 20 20 20 31 39 0D 0A 23 64 65 PAUSE 19..#de
01AA40: 66 69 6E 65 20 57 49 50 45 20 20 20 20 32 34 0D fine WIPE 24.
01AA50: 0A 23 64 65 66 69 6E 65 20 44 45 4C 20 20 20 20 .#define DEL
01AA60: 31 32 37 0D 0A 3E 3E 3E 20 43 53 45 45 4B 2E 43 127..>>> CSEEK.C
01AA70: 20 39 30 38 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 908..#define NO
01AA80: 43 43 41 52 47 43 20 20 2F 2A 20 6E 6F 20 61 72 CCARGC /* no ar
01AA90: 67 75 6D 65 6E 74 20 63 6F 75 6E 74 20 70 61 73 gument count pas
01AAA0: 73 69 6E 67 20 2A 2F 0D 0A 23 69 6E 63 6C 75 64 sing */..#includ
01AAB0: 65 20 73 74 64 69 6F 2E 68 0D 0A 23 69 6E 63 6C e stdio.h..#incl
01AAC0: 75 64 65 20 63 6C 69 62 2E 64 65 66 0D 0A 65 78 ude clib.def..ex
01AAD0: 74 65 72 6E 20 69 6E 74 20 55 66 63 62 70 74 72 tern int Ufcbptr
01AAE0: 5B 5D 2C 20 55 63 68 72 70 6F 73 5B 5D 2C 20 55 [], Uchrpos[], U
01AAF0: 6E 65 78 74 63 5B 5D 3B 0D 0A 2F 2A 0D 0A 2A 2A nextc[];../*..**
01AB00: 20 50 6F 73 69 74 69 6F 6E 20 66 64 20 74 6F 20 Position fd to
01AB10: 74 68 65 20 31 32 38 2D 62 79 74 65 20 72 65 63 the 128-byte rec
01AB20: 6F 72 64 20 69 6E 64 69 63 61 74 65 64 20 62 79 ord indicated by
01AB30: 0D 0A 2A 2A 20 22 6F 66 66 73 65 74 22 20 72 65 ..** "offset" re
01AB40: 6C 61 74 69 76 65 20 74 6F 20 74 68 65 20 70 6F lative to the po
01AB50: 69 6E 74 20 69 6E 64 69 63 61 74 65 64 20 62 79 int indicated by
01AB60: 20 22 62 61 73 65 2E 22 0D 0A 2A 2A 20 0D 0A 2A "base."..** ..*
01AB70: 2A 20 20 20 20 20 42 41 53 45 20 20 20 20 20 4F * BASE O
01AB80: 46 46 53 45 54 2D 52 45 4C 41 54 49 56 45 2D 54 FFSET-RELATIVE-T
01AB90: 4F 0D 0A 2A 2A 20 20 20 20 20 20 20 30 20 20 20 O..** 0
01ABA0: 20 20 20 66 69 72 73 74 20 72 65 63 6F 72 64 0D first record.
01ABB0: 0A 2A 2A 20 20 20 20 20 20 20 31 20 20 20 20 20 .** 1
01ABC0: 20 63 75 72 72 65 6E 74 20 72 65 63 6F 72 64 0D current record.
01ABD0: 0A 2A 2A 20 20 20 20 20 20 20 32 20 20 20 20 20 .** 2
01ABE0: 20 65 6E 64 20 6F 66 20 66 69 6C 65 20 28 6C 61 end of file (la
01ABF0: 73 74 20 72 65 63 6F 72 64 20 2B 20 31 29 0D 0A st record + 1)..
01AC00: 54 3B 0D 0A 20 20 7D 0D 0A 0D 0A 3E 3E 3E 20 43 T;.. }....>>> C
01AC10: 4C 49 42 2E 44 45 46 20 32 30 35 36 0D 0A 2F 2A LIB.DEF 2056../*
01AC20: 0D 0A 2A 2A 20 43 4C 49 42 2E 44 45 46 20 2D 2D ..** CLIB.DEF --
01AC30: 20 44 65 66 69 6E 69 74 69 6F 6E 73 20 66 6F 72 Definitions for
01AC40: 20 53 6D 61 6C 6C 2D 43 20 6C 69 62 72 61 72 79 Small-C library
01AC50: 20 66 75 6E 63 74 69 6F 6E 73 2E 0D 0A 2A 2A 0D functions...**.
01AC60: 0A 2A 2A 20 43 6F 70 79 72 69 67 68 74 20 31 39 .** Copyright 19
01AC70: 38 33 20 20 4C 2E 20 45 2E 20 50 61 79 6E 65 20 83 L. E. Payne
01AC80: 61 6E 64 20 4A 2E 20 45 2E 20 48 65 6E 64 72 69 and J. E. Hendri
01AC90: 78 0D 0A 2A 2F 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 x..*/..../*..**
01ACA0: 44 65 66 69 6E 69 74 69 6F 6E 20 6F 66 20 43 50 Definition of CP
01ACB0: 2F 4D 20 46 43 42 20 61 6E 64 20 61 64 64 69 74 /M FCB and addit
01ACC0: 69 6F 6E 61 6C 20 70 61 72 61 6D 65 74 65 72 73 ional parameters
01ACD0: 0D 0A 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 46 43 ..*/..#define FC
01ACE0: 42 53 49 5A 45 20 20 20 33 36 20 20 2F 2A 20 73 BSIZE 36 /* s
01ACF0: 69 7A 65 20 6F 66 20 66 69 6C 65 20 63 6F 6E 74 ize of file cont
01AD00: 72 6F 6C 20 62 6C 6F 63 6B 20 2A 2F 0D 0A 23 64 rol block */..#d
01AD10: 65 66 69 6E 65 20 44 52 49 56 45 20 20 20 20 20 efine DRIVE
01AD20: 20 30 20 20 2F 2A 20 43 50 2F 4D 20 64 72 69 76 0 /* CP/M driv
01AD30: 65 20 64 65 73 69 67 6E 61 74 6F 72 20 6F 66 66 e designator off
01AD40: 73 65 74 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 set */..#define
01AD50: 4E 41 4D 45 4F 46 46 20 20 20 20 31 20 20 2F 2A NAMEOFF 1 /*
01AD60: 20 43 50 2F 4D 20 66 69 6C 65 20 6E 61 6D 65 20 CP/M file name
01AD70: 6F 66 66 73 65 74 20 2A 2F 0D 0A 23 64 65 66 69 offset */..#defi
01AD80: 6E 65 20 4E 41 4D 45 4F 46 46 32 20 20 31 36 20 ne NAMEOFF2 16
01AD90: 20 2F 2A 20 43 50 2F 4D 20 32 6E 64 20 66 69 6C /* CP/M 2nd fil
01ADA0: 65 20 6E 61 6D 65 20 6F 66 66 73 65 74 20 2A 2F e name offset */
01ADB0: 0D 0A 23 64 65 66 69 6E 65 20 4E 41 4D 45 53 49 ..#define NAMESI
01ADC0: 5A 45 20 20 20 38 20 20 2F 2A 20 43 50 2F 4D 20 ZE 8 /* CP/M
01ADD0: 66 69 6C 65 20 6E 61 6D 65 20 73 69 7A 65 20 2A file name size *
01ADE0: 2F 0D 0A 23 64 65 66 69 6E 65 20 54 59 50 45 4F /..#define TYPEO
01ADF0: 46 46 20 20 20 20 39 20 20 2F 2A 20 43 50 2F 4D FF 9 /* CP/M
01AE00: 2A 2A 0D 0A 2A 2A 20 52 65 74 75 72 6E 73 20 4E **..** Returns N
01AE10: 55 4C 4C 20 6F 6E 20 73 75 63 63 65 73 73 2C 20 ULL on success,
01AE20: 65 6C 73 65 20 45 4F 46 2E 0D 0A 2A 2F 0D 0A 63 else EOF...*/..c
01AE30: 73 65 65 6B 28 66 64 2C 20 6F 66 66 73 65 74 2C seek(fd, offset,
01AE40: 20 62 61 73 65 29 20 69 6E 74 20 66 64 2C 20 6F base) int fd, o
01AE50: 66 66 73 65 74 2C 20 62 61 73 65 3B 20 7B 0D 0A ffset, base; {..
01AE60: 20 20 69 6E 74 20 6F 6C 64 72 72 6E 2C 20 2A 72 int oldrrn, *r
01AE70: 72 6E 3B 0D 0A 20 20 69 66 28 21 55 6D 6F 64 65 rn;.. if(!Umode
01AE80: 28 66 64 29 20 7C 7C 20 69 73 61 74 74 79 28 66 (fd) || isatty(f
01AE90: 64 29 20 7C 7C 20 66 66 6C 75 73 68 28 66 64 29 d) || fflush(fd)
01AEA0: 29 20 72 65 74 75 72 6E 20 28 45 4F 46 29 3B 0D ) return (EOF);.
01AEB0: 0A 20 20 72 72 6E 20 3D 20 55 66 63 62 70 74 72 . rrn = Ufcbptr
01AEC0: 5B 66 64 5D 20 2B 20 52 52 4E 4F 46 46 3B 0D 0A [fd] + RRNOFF;..
01AED0: 20 20 6F 6C 64 72 72 6E 20 3D 20 2A 72 72 6E 3B oldrrn = *rrn;
01AEE0: 0D 0A 20 20 73 77 69 74 63 68 20 28 62 61 73 65 .. switch (base
01AEF0: 29 20 7B 0D 0A 20 20 20 20 63 61 73 65 20 32 3A ) {.. case 2:
01AF00: 20 55 62 64 6F 73 28 50 4F 53 45 4E 44 2C 20 55 Ubdos(POSEND, U
01AF10: 66 63 62 70 74 72 5B 66 64 5D 29 3B 0D 0A 20 20 fcbptr[fd]);..
01AF20: 20 20 63 61 73 65 20 31 3A 20 2A 72 72 6E 20 2B case 1: *rrn +
01AF30: 3D 20 6F 66 66 73 65 74 3B 20 62 72 65 61 6B 3B = offset; break;
01AF40: 0D 0A 20 20 20 20 63 61 73 65 20 30 3A 20 2A 72 .. case 0: *r
01AF50: 72 6E 20 3D 20 6F 66 66 73 65 74 3B 20 20 62 72 rn = offset; br
01AF60: 65 61 6B 3B 0D 0A 20 20 20 20 64 65 66 61 75 6C eak;.. defaul
01AF70: 74 3A 20 72 65 74 75 72 6E 20 28 45 4F 46 29 3B t: return (EOF);
01AF80: 0D 0A 20 20 20 20 7D 0D 0A 20 20 69 66 28 55 73 .. }.. if(Us
01AF90: 65 63 74 6F 72 28 66 64 2C 20 20 52 44 52 4E 44 ector(fd, RDRND
01AFA0: 29 29 20 7B 0D 0A 20 20 20 20 2A 72 72 6E 20 3D )) {.. *rrn =
01AFB0: 20 6F 6C 64 72 72 6E 3B 0D 0A 20 20 20 20 72 65 oldrrn;.. re
01AFC0: 74 75 72 6E 20 28 45 4F 46 29 3B 0D 0A 20 20 20 turn (EOF);..
01AFD0: 20 7D 0D 0A 20 20 55 63 68 72 70 6F 73 5B 66 64 }.. Uchrpos[fd
01AFE0: 5D 20 3D 20 30 3B 0D 0A 20 20 55 6E 65 78 74 63 ] = 0;.. Unextc
01AFF0: 5B 66 64 5D 20 3D 20 45 4F 46 3B 0D 0A 20 20 55 [fd] = EOF;.. U
01B000: 20 66 69 6C 65 20 74 79 70 65 20 6F 66 66 73 65 file type offse
01B010: 74 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 54 59 t */..#define TY
01B020: 50 45 53 49 5A 45 20 20 20 33 20 20 2F 2A 20 43 PESIZE 3 /* C
01B030: 50 2F 4D 20 66 69 6C 65 20 74 79 70 65 20 73 69 P/M file type si
01B040: 7A 65 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 4E ze */..#define N
01B050: 54 53 49 5A 45 20 20 20 20 31 31 20 20 2F 2A 20 TSIZE 11 /*
01B060: 43 50 2F 4D 20 66 69 6C 65 20 6E 61 6D 65 20 26 CP/M file name &
01B070: 20 74 79 70 65 20 73 69 7A 65 20 2A 2F 0D 0A 23 type size */..#
01B080: 64 65 66 69 6E 65 20 52 52 4E 4F 46 46 20 20 20 define RRNOFF
01B090: 20 33 33 20 20 2F 2A 20 43 50 2F 4D 20 72 61 6E 33 /* CP/M ran
01B0A0: 64 6F 6D 20 72 65 63 6F 72 64 20 6E 75 6D 62 65 dom record numbe
01B0B0: 72 20 6F 66 66 73 65 74 20 2A 2F 0D 0A 23 64 65 r offset */..#de
01B0C0: 66 69 6E 65 20 43 50 4D 45 4F 46 20 20 20 20 32 fine CPMEOF 2
01B0D0: 36 20 20 2F 2A 20 43 50 2F 4D 20 65 6E 64 2D 6F 6 /* CP/M end-o
01B0E0: 66 2D 66 69 6C 65 20 62 79 74 65 20 2A 2F 0D 0A f-file byte */..
01B0F0: 23 64 65 66 69 6E 65 20 42 55 46 53 49 5A 45 20 #define BUFSIZE
01B100: 20 31 32 38 20 20 2F 2A 20 73 69 7A 65 20 6F 66 128 /* size of
01B110: 20 49 2F 4F 20 62 75 66 66 65 72 20 2A 2F 0D 0A I/O buffer */..
01B120: 23 64 65 66 69 6E 65 20 4D 41 58 46 49 4C 45 53 #define MAXFILES
01B130: 20 20 31 30 20 20 2F 2A 20 6D 61 78 69 6D 75 6D 10 /* maximum
01B140: 20 6F 70 65 6E 20 66 69 6C 65 73 20 2A 2F 0D 0A open files */..
01B150: 2F 2A 0D 0A 2A 2A 20 43 50 2F 4D 20 66 75 6E 63 /*..** CP/M func
01B160: 74 69 6F 6E 20 63 61 6C 6C 73 0D 0A 2A 2F 0D 0A tion calls..*/..
01B170: 23 64 65 66 69 6E 65 20 47 4F 43 50 4D 20 20 20 #define GOCPM
01B180: 20 20 30 20 20 2F 2A 20 67 6F 20 74 6F 20 43 50 0 /* go to CP
01B190: 2F 4D 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 52 /M */..#define R
01B1A0: 44 52 49 4E 50 20 20 20 20 33 20 20 2F 2A 20 72 DRINP 3 /* r
01B1B0: 65 61 64 65 72 20 69 6E 70 75 74 20 2A 2F 0D 0A eader input */..
01B1C0: 23 64 65 66 69 6E 65 20 50 55 4E 4F 55 54 20 20 #define PUNOUT
01B1D0: 20 20 34 20 20 2F 2A 20 70 75 6E 63 68 20 6F 75 4 /* punch ou
01B1E0: 74 70 75 74 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 tput */..#define
01B1F0: 20 4C 53 54 4F 55 54 20 20 20 20 35 20 20 2F 2A LSTOUT 5 /*
01B200: 63 6C 72 65 6F 66 28 66 64 29 3B 0D 0A 20 20 72 clreof(fd);.. r
01B210: 65 74 75 72 6E 20 28 4E 55 4C 4C 29 3B 0D 0A 20 eturn (NULL);..
01B220: 20 7D 0D 0A 0D 0A 3E 3E 3E 20 43 53 59 53 4C 49 }....>>> CSYSLI
01B230: 42 2E 43 20 31 30 32 31 36 0D 0A 0D 0A 2F 2A 0D B.C 10216..../*.
01B240: 0A 2A 2A 20 43 53 59 53 4C 49 42 20 2D 2D 20 53 .** CSYSLIB -- S
01B250: 79 73 74 65 6D 2D 4C 65 76 65 6C 20 4C 69 62 72 ystem-Level Libr
01B260: 61 72 79 20 46 75 6E 63 74 69 6F 6E 73 0D 0A 2A ary Functions..*
01B270: 2F 0D 0A 0D 0A 23 69 6E 63 6C 75 64 65 20 73 74 /....#include st
01B280: 64 69 6F 2E 68 0D 0A 23 69 6E 63 6C 75 64 65 20 dio.h..#include
01B290: 63 6C 69 62 2E 64 65 66 0D 0A 23 64 65 66 69 6E clib.def..#defin
01B2A0: 65 20 4E 4F 43 43 41 52 47 43 20 20 20 20 2F 2A e NOCCARGC /*
01B2B0: 20 6E 6F 20 61 72 67 75 6D 65 6E 74 20 63 6F 75 no argument cou
01B2C0: 6E 74 20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A 23 nt passing */..#
01B2D0: 64 65 66 69 6E 65 20 44 49 52 20 20 20 20 20 20 define DIR
01B2E0: 20 20 20 2F 2A 20 63 6F 6D 70 69 6C 65 20 64 69 /* compile di
01B2F0: 72 65 63 74 6F 72 79 20 6F 70 74 69 6F 6E 20 2A rectory option *
01B300: 2F 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 2A 2A 2A 2A 2A /..../*..*******
01B310: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 20 53 79 73 74 *********** Syst
01B320: 65 6D 20 56 61 72 69 61 62 6C 65 73 20 2A 2A 2A em Variables ***
01B330: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A ****************
01B340: 2A 0D 0A 2A 2F 0D 0A 0D 0A 69 6E 74 0D 0A 20 2A *..*/....int.. *
01B350: 55 61 75 78 73 7A 2C 20 20 20 20 20 20 20 20 20 Uauxsz,
01B360: 20 20 20 2F 2A 20 61 64 64 72 20 6F 66 20 55 78 /* addr of Ux
01B370: 73 69 7A 65 5B 5D 20 69 6E 20 41 55 58 42 55 46 size[] in AUXBUF
01B380: 20 2A 2F 0D 0A 20 20 55 61 75 78 69 6E 2C 20 20 */.. Uauxin,
01B390: 20 20 20 20 20 20 20 20 20 20 2F 2A 20 61 64 64 /* add
01B3A0: 72 20 6F 66 20 55 78 69 6E 69 74 28 29 20 69 6E r of Uxinit() in
01B3B0: 20 41 55 58 42 55 46 20 2A 2F 0D 0A 20 20 55 61 AUXBUF */.. Ua
01B3C0: 75 78 72 64 2C 20 20 20 20 20 20 20 20 20 20 20 uxrd,
01B3D0: 20 2F 2A 20 61 64 64 72 20 6F 66 20 55 78 72 65 /* addr of Uxre
01B3E0: 61 64 28 29 20 69 6E 20 41 55 58 42 55 46 20 2A ad() in AUXBUF *
01B3F0: 2F 0D 0A 20 20 55 61 75 78 77 74 2C 20 20 20 20 /.. Uauxwt,
01B400: 20 6C 69 73 74 20 6F 75 74 70 75 74 20 2A 2F 0D list output */.
01B410: 0A 23 64 65 66 69 6E 65 20 44 43 4F 4E 49 4F 20 .#define DCONIO
01B420: 20 20 20 36 20 20 2F 2A 20 64 69 72 65 63 74 20 6 /* direct
01B430: 63 6F 6E 73 6F 6C 65 20 69 2F 6F 20 2A 2F 0D 0A console i/o */..
01B440: 23 64 65 66 69 6E 65 20 4F 50 4E 46 49 4C 20 20 #define OPNFIL
01B450: 20 31 35 20 20 2F 2A 20 6F 70 65 6E 20 66 69 6C 15 /* open fil
01B460: 65 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 43 4C e */..#define CL
01B470: 4F 46 49 4C 20 20 20 31 36 20 20 2F 2A 20 63 6C OFIL 16 /* cl
01B480: 6F 73 65 20 66 69 6C 65 20 2A 2F 0D 0A 23 64 65 ose file */..#de
01B490: 66 69 6E 65 20 46 4E 44 46 49 4C 20 20 20 31 37 fine FNDFIL 17
01B4A0: 20 20 2F 2A 20 66 69 6E 64 20 66 69 72 73 74 20 /* find first
01B4B0: 6F 63 63 75 72 72 65 6E 63 65 20 6F 66 20 61 20 occurrence of a
01B4C0: 66 69 6C 65 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 file */..#define
01B4D0: 20 46 4E 44 4E 58 54 20 20 20 31 38 20 20 2F 2A FNDNXT 18 /*
01B4E0: 20 66 69 6E 64 20 6E 65 78 74 20 6F 63 63 75 72 find next occur
01B4F0: 72 65 6E 63 65 20 6F 66 20 61 20 66 69 6C 65 20 rence of a file
01B500: 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 44 45 4C 46 */..#define DELF
01B510: 49 4C 20 20 20 31 39 20 20 2F 2A 20 64 65 6C 65 IL 19 /* dele
01B520: 74 65 20 66 69 6C 65 20 2A 2F 0D 0A 23 64 65 66 te file */..#def
01B530: 69 6E 65 20 4D 41 4B 46 49 4C 20 20 20 32 32 20 ine MAKFIL 22
01B540: 20 2F 2A 20 6D 61 6B 65 20 66 69 6C 65 20 2A 2F /* make file */
01B550: 0D 0A 23 64 65 66 69 6E 65 20 52 45 4E 41 4D 45 ..#define RENAME
01B560: 20 20 20 32 33 20 20 2F 2A 20 72 65 6E 61 6D 65 23 /* rename
01B570: 20 66 69 6C 65 20 2A 2F 0D 0A 23 64 65 66 69 6E file */..#defin
01B580: 65 20 53 45 54 44 4D 41 20 20 20 32 36 20 20 2F e SETDMA 26 /
01B590: 2A 20 73 65 74 20 64 6D 61 20 2A 2F 0D 0A 23 64 * set dma */..#d
01B5A0: 65 66 69 6E 65 20 52 44 52 4E 44 20 20 20 20 33 efine RDRND 3
01B5B0: 33 20 20 2F 2A 20 72 65 61 64 20 73 65 63 74 6F 3 /* read secto
01B5C0: 72 20 72 61 6E 64 6F 6D 6C 79 20 2A 2F 0D 0A 23 r randomly */..#
01B5D0: 64 65 66 69 6E 65 20 50 4F 53 45 4E 44 20 20 20 define POSEND
01B5E0: 33 35 20 20 2F 2A 20 70 6F 73 69 74 69 6F 6E 20 35 /* position
01B5F0: 66 69 6C 65 20 74 6F 20 65 6E 64 20 2A 2F 0D 0A file to end */..
01B600: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
01B610: 17 00 01 00 02 09 52 E5 17 00 41 02 00 00 00 02 ......R...A.....
01B620: 17 00 46 02 00 00 00 02 17 00 42 02 00 00 00 02 ..F.......B.....
01B630: 17 00 47 02 00 00 00 02 17 00 43 02 00 00 00 02 ..G.......C.....
01B640: 17 00 48 02 00 00 00 02 17 00 44 02 00 00 00 02 ..H.......D.....
01B650: 17 00 49 02 00 00 00 02 17 00 45 02 00 00 00 02 ..I.......E.....
01B660: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B670: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B680: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B690: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B6A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B6B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B6C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B6D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B6E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B6F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B700: 20 20 20 20 20 20 20 20 2F 2A 20 61 64 64 72 20 /* addr
01B710: 6F 66 20 55 78 77 72 69 74 65 28 29 20 69 6E 20 of Uxwrite() in
01B720: 41 55 58 42 55 46 20 2A 2F 0D 0A 20 20 55 61 75 AUXBUF */.. Uau
01B730: 78 66 6C 2C 20 20 20 20 20 20 20 20 20 20 20 20 xfl,
01B740: 2F 2A 20 61 64 64 72 20 6F 66 20 55 78 66 6C 75 /* addr of Uxflu
01B750: 73 68 28 29 20 69 6E 20 41 55 58 42 55 46 20 2A sh() in AUXBUF *
01B760: 2F 0D 0A 0D 0A 20 20 55 63 6E 74 3D 31 2C 20 20 /.... Ucnt=1,
01B770: 20 20 20 20 20 20 20 20 20 20 2F 2A 20 61 72 67 /* arg
01B780: 20 63 6F 75 6E 74 20 66 6F 72 20 6D 61 69 6E 20 count for main
01B790: 2A 2F 0D 0A 20 20 55 76 65 63 5B 32 30 5D 2C 20 */.. Uvec[20],
01B7A0: 20 20 20 20 20 20 20 20 20 2F 2A 20 61 72 67 20 /* arg
01B7B0: 76 65 63 74 6F 72 73 20 66 6F 72 20 6D 61 69 6E vectors for main
01B7C0: 20 2A 2F 0D 0A 0D 0A 20 20 55 73 74 61 74 75 73 */.... Ustatus
01B7D0: 5B 4D 41 58 46 49 4C 45 53 5D 20 3D 20 7B 52 44 [MAXFILES] = {RD
01B7E0: 42 49 54 2C 20 57 52 54 42 49 54 2C 20 52 44 42 BIT, WRTBIT, RDB
01B7F0: 49 54 7C 57 52 54 42 49 54 7D 2C 0D 0A 20 20 20 IT|WRTBIT},..
01B800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01B810: 20 20 2F 2A 20 73 74 61 74 75 73 20 6F 66 20 72 /* status of r
01B820: 65 73 70 65 63 74 69 76 65 20 66 69 6C 65 20 2A espective file *
01B830: 2F 0D 0A 20 20 55 64 65 76 69 63 65 5B 4D 41 58 /.. Udevice[MAX
01B840: 46 49 4C 45 53 5D 20 3D 20 7B 43 50 4D 43 4F 4E FILES] = {CPMCON
01B850: 2C 20 43 50 4D 43 4F 4E 2C 20 43 50 4D 43 4F 4E , CPMCON, CPMCON
01B860: 7D 2C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 },..
01B870: 20 20 20 20 20 20 20 20 20 2F 2A 20 6E 6F 6E 2D /* non-
01B880: 64 69 73 6B 20 64 65 76 69 63 65 20 61 73 73 69 disk device assi
01B890: 67 6E 6D 65 6E 74 73 20 2A 2F 0D 0A 20 20 55 6E gnments */.. Un
01B8A0: 65 78 74 63 5B 4D 41 58 46 49 4C 45 53 5D 20 20 extc[MAXFILES]
01B8B0: 3D 20 7B 45 4F 46 2C 20 45 4F 46 2C 20 45 4F 46 = {EOF, EOF, EOF
01B8C0: 7D 2C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 },..
01B8D0: 20 20 20 20 20 20 20 20 20 2F 2A 20 70 69 67 65 /* pige
01B8E0: 6F 6E 68 6F 6C 65 20 66 6F 72 20 75 6E 67 65 74 onhole for unget
01B8F0: 63 20 62 79 74 65 73 20 2A 2F 0D 0A 20 20 55 66 c bytes */.. Uf
01B900: 64 5D 3D 52 44 42 49 54 3B 20 20 72 65 74 75 72 d]=RDBIT; retur
01B910: 6E 20 28 66 64 29 3B 0D 0A 20 20 20 20 7D 0D 0A n (fd);.. }..
01B920: 20 20 69 66 28 73 74 72 63 6D 70 28 66 6E 2C 22 if(strcmp(fn,"
01B930: 50 55 4E 3A 22 29 3D 3D 30 29 20 7B 0D 0A 20 20 PUN:")==0) {..
01B940: 20 20 55 64 65 76 69 63 65 5B 66 64 5D 3D 43 50 Udevice[fd]=CP
01B950: 4D 50 55 4E 3B 20 55 73 74 61 74 75 73 5B 66 64 MPUN; Ustatus[fd
01B960: 5D 3D 57 52 54 42 49 54 3B 20 72 65 74 75 72 6E ]=WRTBIT; return
01B970: 20 28 66 64 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 (fd);.. }..
01B980: 20 69 66 28 73 74 72 63 6D 70 28 66 6E 2C 22 4C if(strcmp(fn,"L
01B990: 53 54 3A 22 29 3D 3D 30 29 20 7B 0D 0A 20 20 20 ST:")==0) {..
01B9A0: 20 55 64 65 76 69 63 65 5B 66 64 5D 3D 43 50 4D Udevice[fd]=CPM
01B9B0: 4C 53 54 3B 20 55 73 74 61 74 75 73 5B 66 64 5D LST; Ustatus[fd]
01B9C0: 3D 57 52 54 42 49 54 3B 20 72 65 74 75 72 6E 20 =WRTBIT; return
01B9D0: 28 66 64 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 (fd);.. }..
01B9E0: 69 66 28 66 63 62 20 3D 20 55 66 63 62 70 74 72 if(fcb = Ufcbptr
01B9F0: 5B 66 64 5D 29 20 70 61 64 28 66 63 62 2C 20 4E [fd]) pad(fcb, N
01BA00: 55 4C 4C 2C 20 46 43 42 53 49 5A 45 29 3B 0D 0A ULL, FCBSIZE);..
01BA10: 20 20 65 6C 73 65 20 7B 0D 0A 20 20 20 20 69 66 else {.. if
01BA20: 28 28 66 63 62 20 3D 20 55 66 63 62 70 74 72 5B ((fcb = Ufcbptr[
01BA30: 66 64 5D 20 3D 20 55 61 6C 6C 6F 63 28 46 43 42 fd] = Ualloc(FCB
01BA40: 53 49 5A 45 2C 20 59 45 53 29 29 20 3D 3D 20 4E SIZE, YES)) == N
01BA50: 55 4C 4C 0D 0A 20 20 20 20 20 20 20 20 20 20 7C ULL.. |
01BA60: 7C 20 28 55 62 75 66 70 74 72 5B 66 64 5D 20 3D | (Ubufptr[fd] =
01BA70: 20 55 61 6C 6C 6F 63 28 42 55 46 53 49 5A 45 2C Ualloc(BUFSIZE,
01BA80: 20 59 45 53 29 29 20 3D 3D 20 4E 55 4C 4C 29 0D YES)) == NULL).
01BA90: 0A 20 20 20 20 20 20 20 20 72 65 74 75 72 6E 20 . return
01BAA0: 28 45 52 52 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 (ERR);.. }..
01BAB0: 20 70 61 64 28 55 62 75 66 70 74 72 5B 66 64 5D pad(Ubufptr[fd]
01BAC0: 2C 20 43 50 4D 45 4F 46 2C 20 42 55 46 53 49 5A , CPMEOF, BUFSIZ
01BAD0: 45 29 3B 0D 0A 20 20 55 64 69 72 74 79 5B 66 64 E);.. Udirty[fd
01BAE0: 5D 20 3D 20 55 64 65 76 69 63 65 5B 66 64 5D 20 ] = Udevice[fd]
01BAF0: 3D 20 55 63 68 72 70 6F 73 5B 66 64 5D 20 3D 20 = Uchrpos[fd] =
01BB00: 63 62 70 74 72 5B 4D 41 58 46 49 4C 45 53 5D 2C cbptr[MAXFILES],
01BB10: 20 2F 2A 20 46 43 42 20 70 6F 69 6E 74 65 72 73 /* FCB pointers
01BB20: 20 66 6F 72 20 6F 70 65 6E 20 66 69 6C 65 73 20 for open files
01BB30: 2A 2F 0D 0A 20 20 55 62 75 66 70 74 72 5B 4D 41 */.. Ubufptr[MA
01BB40: 58 46 49 4C 45 53 5D 2C 20 2F 2A 20 62 75 66 66 XFILES], /* buff
01BB50: 65 72 20 70 6F 69 6E 74 65 72 73 20 66 6F 72 20 er pointers for
01BB60: 66 69 6C 65 73 20 2A 2F 0D 0A 20 20 55 63 68 72 files */.. Uchr
01BB70: 70 6F 73 5B 4D 41 58 46 49 4C 45 53 5D 2C 20 2F pos[MAXFILES], /
01BB80: 2A 20 63 68 61 72 61 63 74 65 72 20 70 6F 73 69 * character posi
01BB90: 74 69 6F 6E 20 69 6E 20 62 75 66 66 65 72 20 2A tion in buffer *
01BBA0: 2F 0D 0A 20 20 55 64 69 72 74 79 5B 4D 41 58 46 /.. Udirty[MAXF
01BBB0: 49 4C 45 53 5D 3B 20 20 2F 2A 20 22 74 72 75 65 ILES]; /* "true
01BBC0: 22 20 69 66 20 63 68 61 6E 67 65 64 20 62 75 66 " if changed buf
01BBD0: 66 65 72 20 2A 2F 0D 0A 0D 0A 63 68 61 72 0D 0A fer */....char..
01BBE0: 20 2A 55 6D 65 6D 70 74 72 2C 20 20 20 20 20 20 *Umemptr,
01BBF0: 20 20 20 20 20 2F 2A 20 70 6F 69 6E 74 65 72 20 /* pointer
01BC00: 74 6F 20 66 72 65 65 20 6D 65 6D 6F 72 79 2E 20 to free memory.
01BC10: 2A 2F 0D 0A 20 20 55 61 72 67 31 5B 5D 3D 22 2A */.. Uarg1[]="*
01BC20: 22 3B 20 20 20 20 20 20 20 2F 2A 20 66 69 72 73 "; /* firs
01BC30: 74 20 61 72 67 20 66 6F 72 20 6D 61 69 6E 20 2A t arg for main *
01BC40: 2F 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 2A 2A 2A 2A 2A /..../*..*******
01BC50: 2A 2A 2A 2A 2A 2A 2A 2A 20 53 79 73 74 65 6D 2D ******** System-
01BC60: 4C 65 76 65 6C 20 46 75 6E 63 74 69 6F 6E 73 20 Level Functions
01BC70: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A ****************
01BC80: 2A 0D 0A 2A 2F 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 *..*/..../*..**
01BC90: 2D 2D 20 50 72 6F 63 65 73 73 20 43 6F 6D 6D 61 -- Process Comma
01BCA0: 6E 64 20 4C 69 6E 65 2C 20 45 78 65 63 75 74 65 nd Line, Execute
01BCB0: 20 6D 61 69 6E 28 29 2C 20 61 6E 64 20 45 78 69 main(), and Exi
01BCC0: 74 20 74 6F 20 43 50 2F 4D 0D 0A 2A 2F 0D 0A 55 t to CP/M..*/..U
01BCD0: 6D 61 69 6E 28 29 20 7B 0D 0A 20 20 55 70 61 72 main() {.. Upar
01BCE0: 73 65 28 29 3B 0D 0A 20 20 6D 61 69 6E 28 55 63 se();.. main(Uc
01BCF0: 6E 74 2C 55 76 65 63 29 3B 0D 0A 20 20 65 78 69 nt,Uvec);.. exi
01BD00: 30 3B 0D 0A 23 69 66 64 65 66 20 44 49 52 0D 0A 0;..#ifdef DIR..
01BD10: 20 20 69 66 28 66 6E 5B 31 5D 20 3D 3D 20 27 3A if(fn[1] == ':
01BD20: 27 20 26 26 20 66 6E 5B 32 5D 20 3D 3D 20 4E 55 ' && fn[2] == NU
01BD30: 4C 4C 29 20 7B 20 20 2F 2A 20 64 69 72 65 63 74 LL) { /* direct
01BD40: 6F 72 79 20 66 69 6C 65 20 2A 2F 0D 0A 20 20 20 ory file */..
01BD50: 20 70 61 64 28 66 63 62 2C 20 4E 55 4C 4C 2C 20 pad(fcb, NULL,
01BD60: 46 43 42 53 49 5A 45 29 3B 0D 0A 20 20 20 20 70 FCBSIZE);.. p
01BD70: 61 64 28 66 63 62 2B 4E 41 4D 45 4F 46 46 2C 20 ad(fcb+NAMEOFF,
01BD80: 27 3F 27 2C 20 4E 54 53 49 5A 45 29 3B 0D 0A 20 '?', NTSIZE);..
01BD90: 20 20 20 69 66 28 74 6F 75 70 70 65 72 28 66 6E if(toupper(fn
01BDA0: 5B 30 5D 29 20 21 3D 20 27 58 27 29 20 2A 66 63 [0]) != 'X') *fc
01BDB0: 62 20 3D 20 74 6F 75 70 70 65 72 28 66 6E 5B 30 b = toupper(fn[0
01BDC0: 5D 29 20 2D 20 36 34 3B 0D 0A 20 20 20 20 55 63 ]) - 64;.. Uc
01BDD0: 68 72 70 6F 73 5B 66 64 5D 20 3D 20 42 55 46 53 hrpos[fd] = BUFS
01BDE0: 49 5A 45 3B 0D 0A 20 20 20 20 55 64 65 76 69 63 IZE;.. Udevic
01BDF0: 65 5B 66 64 5D 20 3D 20 46 4E 44 46 49 4C 3B 0D e[fd] = FNDFIL;.
01BE00: 0A 20 20 20 20 55 73 74 61 74 75 73 5B 66 64 5D . Ustatus[fd]
01BE10: 20 3D 20 52 44 42 49 54 3B 0D 0A 20 20 20 20 72 = RDBIT;.. r
01BE20: 65 74 75 72 6E 20 28 66 64 29 3B 0D 0A 20 20 20 eturn (fd);..
01BE30: 20 7D 0D 0A 23 65 6E 64 69 66 0D 0A 20 20 69 66 }..#endif.. if
01BE40: 28 21 55 6E 65 77 66 63 62 28 66 6E 2C 66 63 62 (!Unewfcb(fn,fcb
01BE50: 29 29 20 72 65 74 75 72 6E 20 28 45 52 52 29 3B )) return (ERR);
01BE60: 0D 0A 20 20 73 77 69 74 63 68 28 2A 6D 6F 64 65 .. switch(*mode
01BE70: 29 20 7B 0D 0A 20 20 20 20 63 61 73 65 20 27 72 ) {.. case 'r
01BE80: 27 3A 20 7B 0D 0A 20 20 20 20 20 20 69 66 28 55 ': {.. if(U
01BE90: 62 64 6F 73 28 4F 50 4E 46 49 4C 2C 66 63 62 29 bdos(OPNFIL,fcb)
01BEA0: 3D 3D 32 35 35 29 20 72 65 74 75 72 6E 20 28 45 ==255) return (E
01BEB0: 52 52 29 3B 0D 0A 20 20 20 20 20 20 55 73 74 61 RR);.. Usta
01BEC0: 74 75 73 5B 66 64 5D 20 3D 20 20 52 44 42 49 54 tus[fd] = RDBIT
01BED0: 3B 0D 0A 20 20 20 20 20 20 69 66 28 55 73 65 63 ;.. if(Usec
01BEE0: 74 6F 72 28 66 64 2C 20 20 52 44 52 4E 44 29 29 tor(fd, RDRND))
01BEF0: 20 55 73 65 74 65 6F 66 28 66 64 29 3B 0D 0A 20 Useteof(fd);..
01BF00: 74 28 30 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A t(0);.. }..../*
01BF10: 0D 0A 2A 2A 20 50 61 72 73 65 20 63 6F 6D 6D 61 ..** Parse comma
01BF20: 6E 64 20 6C 69 6E 65 20 61 6E 64 20 73 65 74 75 nd line and setu
01BF30: 70 20 61 72 67 63 20 61 6E 64 20 61 72 67 76 2E p argc and argv.
01BF40: 0D 0A 2A 2F 0D 0A 55 70 61 72 73 65 28 29 20 7B ..*/..Uparse() {
01BF50: 0D 0A 20 20 63 68 61 72 20 2A 63 6F 75 6E 74 2C .. char *count,
01BF60: 20 2A 70 74 72 3B 0D 0A 20 20 63 6F 75 6E 74 20 *ptr;.. count
01BF70: 3D 20 31 32 38 3B 20 20 2F 2A 20 43 50 2F 4D 20 = 128; /* CP/M
01BF80: 63 6F 6D 6D 61 6E 64 20 62 75 66 66 65 72 20 61 command buffer a
01BF90: 64 64 72 65 73 73 20 2A 2F 0D 0A 20 20 70 74 72 ddress */.. ptr
01BFA0: 20 3D 20 55 61 6C 6C 6F 63 28 28 63 6F 75 6E 74 = Ualloc((count
01BFB0: 20 3D 20 2A 63 6F 75 6E 74 26 32 35 35 29 2B 31 = *count&255)+1
01BFC0: 2C 20 59 45 53 29 3B 0D 0A 20 20 73 74 72 6E 63 , YES);.. strnc
01BFD0: 70 79 28 70 74 72 2C 20 31 32 39 2C 20 63 6F 75 py(ptr, 129, cou
01BFE0: 6E 74 29 3B 0D 0A 20 20 55 76 65 63 5B 30 5D 3D nt);.. Uvec[0]=
01BFF0: 55 61 72 67 31 3B 09 09 09 09 2F 2A 20 66 69 72 Uarg1;..../* fir
01C000: 73 74 20 61 72 67 20 3D 20 22 2A 22 20 2A 2F 0D st arg = "*" */.
01C010: 0A 20 20 77 68 69 6C 65 20 28 2A 70 74 72 29 20 . while (*ptr)
01C020: 7B 0D 0A 20 20 20 20 69 66 28 69 73 73 70 61 63 {.. if(isspac
01C030: 65 28 2A 70 74 72 29 29 20 7B 2B 2B 70 74 72 3B e(*ptr)) {++ptr;
01C040: 20 63 6F 6E 74 69 6E 75 65 3B 7D 0D 0A 20 20 20 continue;}..
01C050: 20 73 77 69 74 63 68 28 2A 70 74 72 29 20 7B 0D switch(*ptr) {.
01C060: 0A 20 20 20 20 20 20 63 61 73 65 20 27 3C 27 3A . case '<':
01C070: 20 70 74 72 20 3D 20 55 72 65 64 69 72 65 63 74 ptr = Uredirect
01C080: 28 70 74 72 2C 20 22 72 22 2C 20 73 74 64 69 6E (ptr, "r", stdin
01C090: 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 );..
01C0A0: 20 20 20 20 63 6F 6E 74 69 6E 75 65 3B 0D 0A 20 continue;..
01C0B0: 20 20 20 20 20 63 61 73 65 20 27 3E 27 3A 20 69 case '>': i
01C0C0: 66 28 2A 28 70 74 72 2B 31 29 20 3D 3D 20 27 3E f(*(ptr+1) == '>
01C0D0: 27 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 ')..
01C0E0: 20 20 20 20 20 20 20 20 20 70 74 72 20 3D 20 55 ptr = U
01C0F0: 72 65 64 69 72 65 63 74 28 70 74 72 2B 31 2C 20 redirect(ptr+1,
01C100: 20 20 20 20 20 62 72 65 61 6B 3B 0D 0A 20 20 20 break;..
01C110: 20 20 20 7D 0D 0A 20 20 20 20 63 61 73 65 20 27 }.. case '
01C120: 77 27 3A 20 7B 0D 0A 20 20 20 20 20 20 69 66 28 w': {.. if(
01C130: 55 62 64 6F 73 28 46 4E 44 46 49 4C 2C 66 63 62 Ubdos(FNDFIL,fcb
01C140: 29 21 3D 32 35 35 29 20 55 62 64 6F 73 28 44 45 )!=255) Ubdos(DE
01C150: 4C 46 49 4C 2C 66 63 62 29 3B 0D 0A 20 20 20 20 LFIL,fcb);..
01C160: 63 72 65 61 74 65 3A 0D 0A 20 20 20 20 20 20 69 create:.. i
01C170: 66 28 55 62 64 6F 73 28 4D 41 4B 46 49 4C 2C 66 f(Ubdos(MAKFIL,f
01C180: 63 62 29 3D 3D 32 35 35 29 20 72 65 74 75 72 6E cb)==255) return
01C190: 20 28 45 52 52 29 3B 0D 0A 20 20 20 20 20 20 55 (ERR);.. U
01C1A0: 73 74 61 74 75 73 5B 66 64 5D 20 3D 20 45 4F 46 status[fd] = EOF
01C1B0: 42 49 54 7C 57 52 54 42 49 54 3B 0D 0A 20 20 20 BIT|WRTBIT;..
01C1C0: 20 20 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 break;..
01C1D0: 20 7D 0D 0A 20 20 20 20 64 65 66 61 75 6C 74 3A }.. default:
01C1E0: 20 7B 20 20 20 20 20 20 2F 2A 20 61 70 70 65 6E { /* appen
01C1F0: 64 20 6D 6F 64 65 20 2A 2F 0D 0A 20 20 20 20 20 d mode */..
01C200: 20 69 66 28 55 62 64 6F 73 28 4F 50 4E 46 49 4C if(Ubdos(OPNFIL
01C210: 2C 66 63 62 29 3D 3D 32 35 35 29 20 67 6F 74 6F ,fcb)==255) goto
01C220: 20 63 72 65 61 74 65 3B 0D 0A 20 20 20 20 20 20 create;..
01C230: 55 73 74 61 74 75 73 5B 66 64 5D 20 3D 20 52 44 Ustatus[fd] = RD
01C240: 42 49 54 3B 0D 0A 20 20 20 20 20 20 63 73 65 65 BIT;.. csee
01C250: 6B 28 66 64 2C 20 2D 31 2C 20 32 29 3B 0D 0A 20 k(fd, -1, 2);..
01C260: 20 20 20 20 20 77 68 69 6C 65 28 66 67 65 74 63 while(fgetc
01C270: 28 66 64 29 21 3D 45 4F 46 29 20 3B 0D 0A 20 20 (fd)!=EOF) ;..
01C280: 20 20 20 20 55 73 74 61 74 75 73 5B 66 64 5D 20 Ustatus[fd]
01C290: 3D 20 45 4F 46 42 49 54 7C 57 52 54 42 49 54 3B = EOFBIT|WRTBIT;
01C2A0: 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 7D .. }.. }
01C2B0: 0D 0A 20 20 69 66 28 2A 28 6D 6F 64 65 2B 31 29 .. if(*(mode+1)
01C2C0: 3D 3D 27 2B 27 29 20 55 73 74 61 74 75 73 5B 66 =='+') Ustatus[f
01C2D0: 64 5D 20 7C 3D 20 52 44 42 49 54 7C 57 52 54 42 d] |= RDBIT|WRTB
01C2E0: 49 54 3B 0D 0A 20 20 72 65 74 75 72 6E 20 28 66 IT;.. return (f
01C2F0: 64 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A d);.. }..../*..
01C300: 22 61 22 2C 20 73 74 64 6F 75 74 29 3B 0D 0A 20 "a", stdout);..
01C310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 e
01C320: 6C 73 65 20 70 74 72 20 3D 20 55 72 65 64 69 72 lse ptr = Uredir
01C330: 65 63 74 28 70 74 72 2C 20 20 20 22 77 22 2C 20 ect(ptr, "w",
01C340: 73 74 64 6F 75 74 29 3B 0D 0A 20 20 20 20 20 20 stdout);..
01C350: 20 20 20 20 20 20 20 20 20 20 63 6F 6E 74 69 6E contin
01C360: 75 65 3B 0D 0A 20 20 20 20 20 20 64 65 66 61 75 ue;.. defau
01C370: 6C 74 3A 20 20 69 66 28 55 63 6E 74 20 3C 20 32 lt: if(Ucnt < 2
01C380: 30 29 20 55 76 65 63 5B 55 63 6E 74 2B 2B 5D 20 0) Uvec[Ucnt++]
01C390: 3D 20 70 74 72 3B 0D 0A 20 20 20 20 20 20 20 20 = ptr;..
01C3A0: 20 20 20 20 20 20 20 20 70 74 72 20 3D 20 55 66 ptr = Uf
01C3B0: 69 65 6C 64 28 70 74 72 29 3B 0D 0A 20 20 20 20 ield(ptr);..
01C3C0: 20 20 7D 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D }.. }.. }.
01C3D0: 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 49 73 6F 6C 61 74 .../*..** Isolat
01C3E0: 65 20 6E 65 78 74 20 63 6F 6D 6D 61 6E 64 2D 6C e next command-l
01C3F0: 69 6E 65 20 66 69 65 6C 64 2E 0D 0A 2A 2F 0D 0A ine field...*/..
01C400: 55 66 69 65 6C 64 28 70 74 72 29 20 63 68 61 72 Ufield(ptr) char
01C410: 20 2A 70 74 72 3B 20 7B 0D 0A 20 20 77 68 69 6C *ptr; {.. whil
01C420: 65 28 2A 70 74 72 29 20 7B 0D 0A 20 20 20 20 69 e(*ptr) {.. i
01C430: 66 28 69 73 73 70 61 63 65 28 2A 70 74 72 29 29 f(isspace(*ptr))
01C440: 20 7B 0D 0A 20 20 20 20 20 20 2A 70 74 72 20 3D {.. *ptr =
01C450: 20 4E 55 4C 4C 3B 0D 0A 20 20 20 20 20 20 72 65 NULL;.. re
01C460: 74 75 72 6E 20 28 2B 2B 70 74 72 29 3B 0D 0A 20 turn (++ptr);..
01C470: 20 20 20 20 20 7D 0D 0A 20 20 20 20 2B 2B 70 74 }.. ++pt
01C480: 72 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 72 65 74 r;.. }.. ret
01C490: 75 72 6E 20 28 70 74 72 29 3B 0D 0A 20 20 7D 0D urn (ptr);.. }.
01C4A0: 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 52 65 64 69 72 65 .../*..** Redire
01C4B0: 63 74 20 73 74 64 69 6E 20 6F 72 20 73 74 64 6F ct stdin or stdo
01C4C0: 75 74 2E 0D 0A 2A 2F 0D 0A 55 72 65 64 69 72 65 ut...*/..Uredire
01C4D0: 63 74 28 70 74 72 2C 20 6D 6F 64 65 2C 20 73 74 ct(ptr, mode, st
01C4E0: 64 29 20 20 63 68 61 72 20 2A 70 74 72 2C 20 2A d) char *ptr, *
01C4F0: 6D 6F 64 65 3B 20 69 6E 74 20 73 74 64 3B 20 7B mode; int std; {
01C500: 2A 2A 20 43 72 65 61 74 65 20 43 50 2F 4D 20 66 ** Create CP/M f
01C510: 69 6C 65 20 63 6F 6E 74 72 6F 6C 20 62 6C 6F 63 ile control bloc
01C520: 6B 20 66 72 6F 6D 20 66 69 6C 65 20 6E 61 6D 65 k from file name
01C530: 2E 20 0D 0A 2A 2A 20 45 6E 74 72 79 3A 20 66 6E . ..** Entry: fn
01C540: 20 20 3D 20 4C 65 67 61 6C 20 43 50 2F 4D 20 66 = Legal CP/M f
01C550: 69 6C 65 20 6E 61 6D 65 20 28 6E 75 6C 6C 20 74 ile name (null t
01C560: 65 72 6D 69 6E 61 74 65 64 29 0D 0A 2A 2A 20 20 erminated)..**
01C570: 20 20 20 20 20 20 20 20 20 20 20 20 4D 61 79 20 May
01C580: 62 65 20 70 72 65 66 69 78 65 64 20 62 79 20 6C be prefixed by l
01C590: 65 74 74 65 72 20 6F 66 20 64 72 69 76 65 2E 0D etter of drive..
01C5A0: 0A 2A 2A 20 20 20 20 20 20 20 20 66 63 62 20 3D .** fcb =
01C5B0: 20 50 6F 69 6E 74 65 72 20 74 6F 20 6D 65 6D 6F Pointer to memo
01C5C0: 72 79 20 73 70 61 63 65 20 66 6F 72 20 43 50 2F ry space for CP/
01C5D0: 4D 20 66 63 62 2E 0D 0A 2A 2A 20 52 65 74 75 72 M fcb...** Retur
01C5E0: 6E 73 20 74 68 65 20 70 6F 69 6E 74 65 72 20 74 ns the pointer t
01C5F0: 6F 20 74 68 65 20 66 63 62 2E 0D 0A 2A 2F 0D 0A o the fcb...*/..
01C600: 55 6E 65 77 66 63 62 28 66 6E 2C 20 66 63 62 29 Unewfcb(fn, fcb)
01C610: 20 63 68 61 72 20 2A 66 6E 2C 20 2A 66 63 62 3B char *fn, *fcb;
01C620: 20 7B 0D 0A 20 20 63 68 61 72 20 2A 66 6E 70 74 {.. char *fnpt
01C630: 72 3B 0D 0A 20 20 70 61 64 28 66 63 62 2B 31 2C r;.. pad(fcb+1,
01C640: 20 53 50 41 43 45 2C 20 4E 54 53 49 5A 45 29 3B SPACE, NTSIZE);
01C650: 0D 0A 20 20 69 66 28 2A 28 66 6E 20 2B 20 31 29 .. if(*(fn + 1)
01C660: 20 3D 3D 20 27 3A 27 29 20 7B 0D 0A 20 20 20 20 == ':') {..
01C670: 2A 66 63 62 20 3D 20 74 6F 75 70 70 65 72 28 2A *fcb = toupper(*
01C680: 66 6E 29 20 2D 20 36 34 3B 0D 0A 20 20 20 20 66 fn) - 64;.. f
01C690: 6E 70 74 72 20 3D 20 66 6E 20 2B 20 32 3B 0D 0A nptr = fn + 2;..
01C6A0: 20 20 20 20 7D 0D 0A 20 20 65 6C 73 65 20 66 6E }.. else fn
01C6B0: 70 74 72 20 3D 20 66 6E 3B 0D 0A 20 20 69 66 28 ptr = fn;.. if(
01C6C0: 2A 66 6E 70 74 72 20 3D 3D 20 4E 55 4C 4C 29 20 *fnptr == NULL)
01C6D0: 72 65 74 75 72 6E 20 28 4E 4F 29 3B 0D 0A 20 20 return (NO);..
01C6E0: 66 6E 70 74 72 20 3D 20 55 6C 6F 61 64 66 6E 28 fnptr = Uloadfn(
01C6F0: 66 63 62 20 2B 20 4E 41 4D 45 4F 46 46 2C 20 66 fcb + NAMEOFF, f
01C700: 0D 0A 20 20 63 68 61 72 20 2A 66 6E 3B 0D 0A 20 .. char *fn;..
01C710: 20 66 6E 20 3D 20 2B 2B 70 74 72 3B 0D 0A 20 20 fn = ++ptr;..
01C720: 70 74 72 20 3D 20 55 66 69 65 6C 64 28 70 74 72 ptr = Ufield(ptr
01C730: 29 3B 0D 0A 20 20 69 66 28 55 6F 70 65 6E 28 66 );.. if(Uopen(f
01C740: 6E 2C 20 6D 6F 64 65 2C 20 73 74 64 29 3D 3D 45 n, mode, std)==E
01C750: 52 52 29 20 65 78 69 74 28 27 52 27 29 3B 0D 0A RR) exit('R');..
01C760: 20 20 72 65 74 75 72 6E 20 28 70 74 72 29 3B 0D return (ptr);.
01C770: 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 2D . }..../*..** -
01C780: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 46 69 6C 65 ----------- File
01C790: 20 4F 70 65 6E 0D 0A 2A 2F 0D 0A 0D 0A 2F 2A 0D Open..*/..../*.
01C7A0: 0A 2A 2A 20 4F 70 65 6E 20 66 69 6C 65 20 6F 6E .** Open file on
01C7B0: 20 73 70 65 63 69 66 69 65 64 20 66 64 2E 0D 0A specified fd...
01C7C0: 2A 2F 0D 0A 55 6F 70 65 6E 28 66 6E 2C 20 6D 6F */..Uopen(fn, mo
01C7D0: 64 65 2C 20 66 64 29 20 63 68 61 72 20 2A 66 6E de, fd) char *fn
01C7E0: 2C 20 2A 6D 6F 64 65 3B 20 69 6E 74 20 66 64 3B , *mode; int fd;
01C7F0: 20 7B 0D 0A 20 20 63 68 61 72 20 2A 66 63 62 3B {.. char *fcb;
01C800: 0D 0A 20 20 69 66 28 21 73 74 72 63 68 72 28 22 .. if(!strchr("
01C810: 72 77 61 22 2C 20 2A 6D 6F 64 65 29 29 20 72 65 rwa", *mode)) re
01C820: 74 75 72 6E 20 28 45 52 52 29 3B 0D 0A 20 20 55 turn (ERR);.. U
01C830: 6E 65 78 74 63 5B 66 64 5D 20 3D 20 45 4F 46 3B nextc[fd] = EOF;
01C840: 0D 0A 20 20 69 66 28 55 61 75 78 69 6E 29 20 55 .. if(Uauxin) U
01C850: 61 75 78 69 6E 28 66 64 29 3B 0D 0A 20 20 69 66 auxin(fd);.. if
01C860: 28 73 74 72 63 6D 70 28 66 6E 2C 22 43 4F 4E 3A (strcmp(fn,"CON:
01C870: 22 29 3D 3D 30 29 20 7B 0D 0A 20 20 20 20 55 64 ")==0) {.. Ud
01C880: 65 76 69 63 65 5B 66 64 5D 3D 43 50 4D 43 4F 4E evice[fd]=CPMCON
01C890: 3B 20 55 73 74 61 74 75 73 5B 66 64 5D 3D 52 44 ; Ustatus[fd]=RD
01C8A0: 42 49 54 7C 57 52 54 42 49 54 3B 20 72 65 74 75 BIT|WRTBIT; retu
01C8B0: 72 6E 20 28 66 64 29 3B 0D 0A 20 20 20 20 7D 0D rn (fd);.. }.
01C8C0: 0A 20 20 69 66 28 73 74 72 63 6D 70 28 66 6E 2C . if(strcmp(fn,
01C8D0: 22 52 44 52 3A 22 29 3D 3D 30 29 20 7B 0D 0A 20 "RDR:")==0) {..
01C8E0: 20 20 20 55 64 65 76 69 63 65 5B 66 64 5D 3D 43 Udevice[fd]=C
01C8F0: 50 4D 52 44 52 3B 20 55 73 74 61 74 75 73 5B 66 PMRDR; Ustatus[f
01C900: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
01C910: 18 00 01 00 02 09 52 E5 18 00 41 02 00 00 00 02 ......R...A.....
01C920: 18 00 46 02 00 00 00 02 18 00 42 02 00 00 00 02 ..F.......B.....
01C930: 18 00 47 02 00 00 00 02 18 00 43 02 00 00 00 02 ..G.......C.....
01C940: 18 00 48 02 00 00 00 02 18 00 44 02 00 00 00 02 ..H.......D.....
01C950: 18 00 49 02 00 00 00 02 18 00 45 02 00 00 00 02 ..I.......E.....
01C960: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C970: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C980: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C990: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C9A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C9B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C9C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C9D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C9E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C9F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01CA00: 6E 70 74 72 2C 20 4E 41 4D 45 53 49 5A 45 29 3B nptr, NAMESIZE);
01CA10: 0D 0A 20 20 69 66 28 2A 66 6E 70 74 72 20 3D 3D .. if(*fnptr ==
01CA20: 20 27 2E 27 29 20 2B 2B 66 6E 70 74 72 3B 0D 0A '.') ++fnptr;..
01CA30: 20 20 65 6C 73 65 20 69 66 28 2A 66 6E 70 74 72 else if(*fnptr
01CA40: 29 20 72 65 74 75 72 6E 20 28 4E 4F 29 3B 0D 0A ) return (NO);..
01CA50: 20 20 66 6E 70 74 72 20 3D 20 55 6C 6F 61 64 66 fnptr = Uloadf
01CA60: 6E 28 66 63 62 20 2B 20 54 59 50 45 4F 46 46 2C n(fcb + TYPEOFF,
01CA70: 20 66 6E 70 74 72 2C 20 54 59 50 45 53 49 5A 45 fnptr, TYPESIZE
01CA80: 29 3B 0D 0A 20 20 69 66 28 2A 66 6E 70 74 72 29 );.. if(*fnptr)
01CA90: 20 72 65 74 75 72 6E 20 28 4E 4F 29 3B 0D 0A 20 return (NO);..
01CAA0: 20 72 65 74 75 72 6E 20 28 59 45 53 29 3B 0D 0A return (YES);..
01CAB0: 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 4C 6F }..../*..** Lo
01CAC0: 61 64 20 69 6E 74 6F 20 66 63 62 20 61 6E 64 20 ad into fcb and
01CAD0: 76 61 6C 69 64 61 74 65 20 66 69 6C 65 20 6E 61 validate file na
01CAE0: 6D 65 2E 0D 0A 2A 2F 0D 0A 55 6C 6F 61 64 66 6E me...*/..Uloadfn
01CAF0: 28 64 65 73 74 2C 20 73 6F 75 72 2C 20 6D 61 78 (dest, sour, max
01CB00: 29 20 63 68 61 72 20 2A 64 65 73 74 2C 20 2A 73 ) char *dest, *s
01CB10: 6F 75 72 3B 20 69 6E 74 20 6D 61 78 3B 20 7B 0D our; int max; {.
01CB20: 0A 20 20 77 68 69 6C 65 28 2A 73 6F 75 72 20 26 . while(*sour &
01CB30: 26 20 21 73 74 72 63 68 72 28 22 3C 3E 2E 2C 3B & !strchr("<>.,;
01CB40: 3A 3D 3F 2A 5B 5D 22 2C 20 2A 73 6F 75 72 29 29 :=?*[]", *sour))
01CB50: 20 7B 0D 0A 20 20 20 20 69 66 28 6D 61 78 2D 2D {.. if(max--
01CB60: 29 20 2A 64 65 73 74 2B 2B 20 3D 20 74 6F 75 70 ) *dest++ = toup
01CB70: 70 65 72 28 2A 73 6F 75 72 2B 2B 29 3B 0D 0A 20 per(*sour++);..
01CB80: 20 20 20 65 6C 73 65 20 62 72 65 61 6B 3B 0D 0A else break;..
01CB90: 20 20 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E 20 }.. return
01CBA0: 28 73 6F 75 72 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A (sour);.. }....
01CBB0: 2F 2A 0D 0A 2A 2A 20 2D 2D 2D 2D 2D 2D 2D 2D 2D /*..** ---------
01CBC0: 2D 2D 2D 20 46 69 6C 65 20 49 6E 70 75 74 0D 0A --- File Input..
01CBD0: 2A 2F 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 42 69 6E */..../*..** Bin
01CBE0: 61 72 79 2D 73 74 72 65 61 6D 20 69 6E 70 75 74 ary-stream input
01CBF0: 20 6F 66 20 6F 6E 65 20 62 79 74 65 20 66 72 6F of one byte fro
01CC00: 20 2A 62 75 66 6C 6F 63 3B 0D 0A 20 20 73 77 69 *bufloc;.. swi
01CC10: 74 63 68 20 28 55 6D 6F 64 65 28 66 64 29 29 20 tch (Umode(fd))
01CC20: 7B 0D 0A 20 20 20 20 64 65 66 61 75 6C 74 3A 20 {.. default:
01CC30: 55 73 65 74 65 72 72 28 66 64 29 3B 20 72 65 74 Useterr(fd); ret
01CC40: 75 72 6E 20 28 45 4F 46 29 3B 0D 0A 20 20 20 20 urn (EOF);..
01CC50: 63 61 73 65 20 57 52 54 42 49 54 3A 0D 0A 20 20 case WRTBIT:..
01CC60: 20 20 63 61 73 65 20 57 52 54 42 49 54 7C 52 44 case WRTBIT|RD
01CC70: 42 49 54 3A 0D 0A 20 20 20 20 63 61 73 65 20 57 BIT:.. case W
01CC80: 52 54 42 49 54 7C 45 4F 46 42 49 54 3A 0D 0A 20 RTBIT|EOFBIT:..
01CC90: 20 20 20 63 61 73 65 20 57 52 54 42 49 54 7C 45 case WRTBIT|E
01CCA0: 4F 46 42 49 54 7C 52 44 42 49 54 3A 0D 0A 20 20 OFBIT|RDBIT:..
01CCB0: 20 20 7D 0D 0A 20 20 73 77 69 74 63 68 28 55 64 }.. switch(Ud
01CCC0: 65 76 69 63 65 5B 66 64 5D 29 20 7B 0D 0A 20 20 evice[fd]) {..
01CCD0: 20 20 2F 2A 20 52 44 52 20 63 61 6E 27 74 20 6F /* RDR can't o
01CCE0: 63 63 75 72 20 73 69 6E 63 65 20 69 74 20 69 73 ccur since it is
01CCF0: 20 72 65 61 64 20 6D 6F 64 65 20 2A 2F 0D 0A 20 read mode */..
01CD00: 20 20 20 63 61 73 65 20 43 50 4D 43 4F 4E 3A 20 case CPMCON:
01CD10: 72 65 74 75 72 6E 20 28 55 63 6F 6E 6F 75 74 28 return (Uconout(
01CD20: 63 68 29 29 3B 0D 0A 20 20 20 20 63 61 73 65 20 ch));.. case
01CD30: 43 50 4D 50 55 4E 3A 0D 0A 20 20 20 20 63 61 73 CPMPUN:.. cas
01CD40: 65 20 43 50 4D 4C 53 54 3A 20 55 62 64 6F 73 28 e CPMLST: Ubdos(
01CD50: 55 64 65 76 69 63 65 5B 66 64 5D 2C 20 63 68 29 Udevice[fd], ch)
01CD60: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
01CD70: 20 20 20 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 break;..
01CD80: 64 65 66 61 75 6C 74 3A 0D 0A 20 20 20 20 20 20 default:..
01CD90: 69 66 28 55 61 75 78 73 7A 20 26 26 20 55 61 75 if(Uauxsz && Uau
01CDA0: 78 73 7A 5B 66 64 5D 29 20 72 65 74 75 72 6E 20 xsz[fd]) return
01CDB0: 28 55 61 75 78 77 74 28 63 68 2C 20 66 64 29 29 (Uauxwt(ch, fd))
01CDC0: 3B 0D 0A 20 20 20 20 20 20 69 66 28 55 63 68 72 ;.. if(Uchr
01CDD0: 70 6F 73 5B 66 64 5D 3E 3D 42 55 46 53 49 5A 45 pos[fd]>=BUFSIZE
01CDE0: 20 26 26 20 21 55 70 75 74 73 65 63 28 66 64 29 && !Uputsec(fd)
01CDF0: 29 20 72 65 74 75 72 6E 20 28 45 4F 46 29 3B 0D ) return (EOF);.
01CE00: 6D 20 66 64 2E 0D 0A 2A 2F 0D 0A 55 72 65 61 64 m fd...*/..Uread
01CE10: 28 66 64 29 20 69 6E 74 20 66 64 3B 20 7B 0D 0A (fd) int fd; {..
01CE20: 20 20 63 68 61 72 20 2A 62 75 66 6C 6F 63 3B 0D char *bufloc;.
01CE30: 0A 20 20 69 6E 74 20 63 68 3B 0D 0A 20 20 73 77 . int ch;.. sw
01CE40: 69 74 63 68 20 28 55 6D 6F 64 65 28 66 64 29 29 itch (Umode(fd))
01CE50: 20 7B 0D 0A 20 20 20 20 64 65 66 61 75 6C 74 3A {.. default:
01CE60: 20 55 73 65 74 65 72 72 28 66 64 29 3B 20 72 65 Useterr(fd); re
01CE70: 74 75 72 6E 20 28 45 4F 46 29 3B 0D 0A 20 20 20 turn (EOF);..
01CE80: 20 63 61 73 65 20 52 44 42 49 54 3A 0D 0A 20 20 case RDBIT:..
01CE90: 20 20 63 61 73 65 20 52 44 42 49 54 7C 57 52 54 case RDBIT|WRT
01CEA0: 42 49 54 3A 0D 0A 20 20 20 20 7D 0D 0A 20 20 69 BIT:.. }.. i
01CEB0: 66 28 28 63 68 20 3D 20 55 6E 65 78 74 63 5B 66 f((ch = Unextc[f
01CEC0: 64 5D 29 20 21 3D 20 45 4F 46 29 20 7B 0D 0A 20 d]) != EOF) {..
01CED0: 20 20 20 55 6E 65 78 74 63 5B 66 64 5D 20 3D 20 Unextc[fd] =
01CEE0: 45 4F 46 3B 0D 0A 20 20 20 20 72 65 74 75 72 6E EOF;.. return
01CEF0: 20 28 63 68 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 (ch);.. }..
01CF00: 20 73 77 69 74 63 68 28 55 64 65 76 69 63 65 5B switch(Udevice[
01CF10: 66 64 5D 29 20 7B 0D 0A 20 20 20 20 2F 2A 20 50 fd]) {.. /* P
01CF20: 55 4E 20 26 20 4C 53 54 20 63 61 6E 27 74 20 6F UN & LST can't o
01CF30: 63 63 75 72 20 73 69 6E 63 65 20 74 68 65 79 20 ccur since they
01CF40: 61 72 65 20 77 72 69 74 65 20 6D 6F 64 65 20 2A are write mode *
01CF50: 2F 0D 0A 20 20 20 20 63 61 73 65 20 43 50 4D 43 /.. case CPMC
01CF60: 4F 4E 3A 20 72 65 74 75 72 6E 20 28 55 63 6F 6E ON: return (Ucon
01CF70: 69 6E 28 29 29 3B 0D 0A 20 20 20 20 63 61 73 65 in());.. case
01CF80: 20 43 50 4D 52 44 52 3A 20 72 65 74 75 72 6E 20 CPMRDR: return
01CF90: 28 55 62 64 6F 73 28 52 44 52 49 4E 50 2C 4E 55 (Ubdos(RDRINP,NU
01CFA0: 4C 4C 29 29 3B 0D 0A 20 20 20 20 64 65 66 61 75 LL));.. defau
01CFB0: 6C 74 3A 0D 0A 20 20 20 20 20 20 20 20 20 69 66 lt:.. if
01CFC0: 28 55 61 75 78 73 7A 20 26 26 20 55 61 75 78 73 (Uauxsz && Uauxs
01CFD0: 7A 5B 66 64 5D 29 20 72 65 74 75 72 6E 20 28 55 z[fd]) return (U
01CFE0: 61 75 78 72 64 28 66 64 29 29 3B 0D 0A 20 20 20 auxrd(fd));..
01CFF0: 20 20 20 20 20 20 69 66 28 55 63 68 72 70 6F 73 if(Uchrpos
01D000: 0A 20 20 20 20 20 20 62 75 66 6C 6F 63 20 3D 20 . bufloc =
01D010: 55 62 75 66 70 74 72 5B 66 64 5D 20 2B 20 55 63 Ubufptr[fd] + Uc
01D020: 68 72 70 6F 73 5B 66 64 5D 2B 2B 3B 0D 0A 20 20 hrpos[fd]++;..
01D030: 20 20 20 20 2A 62 75 66 6C 6F 63 20 3D 20 63 68 *bufloc = ch
01D040: 3B 0D 0A 20 20 20 20 20 20 55 64 69 72 74 79 5B ;.. Udirty[
01D050: 66 64 5D 20 3D 20 59 45 53 3B 0D 0A 20 20 20 20 fd] = YES;..
01D060: 7D 0D 0A 20 20 72 65 74 75 72 6E 20 28 63 68 29 }.. return (ch)
01D070: 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A ;.. }..../*..**
01D080: 20 43 6F 6E 73 6F 6C 65 20 63 68 61 72 61 63 74 Console charact
01D090: 65 72 20 6F 75 74 70 75 74 2E 0D 0A 2A 2F 0D 0A er output...*/..
01D0A0: 55 63 6F 6E 6F 75 74 28 63 68 29 20 69 6E 74 20 Uconout(ch) int
01D0B0: 63 68 3B 20 7B 0D 0A 20 20 55 62 64 6F 73 28 44 ch; {.. Ubdos(D
01D0C0: 43 4F 4E 49 4F 2C 20 63 68 29 3B 0D 0A 20 20 72 CONIO, ch);.. r
01D0D0: 65 74 75 72 6E 20 28 63 68 29 3B 0D 0A 20 20 7D eturn (ch);.. }
01D0E0: 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 57 72 69 74 65 ..../*..** Write
01D0F0: 20 6F 6E 65 20 73 65 63 74 6F 72 20 74 6F 20 66 one sector to f
01D100: 64 2E 20 0D 0A 2A 2F 0D 0A 55 70 75 74 73 65 63 d. ..*/..Uputsec
01D110: 28 66 64 29 20 69 6E 74 20 66 64 3B 20 7B 0D 0A (fd) int fd; {..
01D120: 20 20 69 66 28 66 66 6C 75 73 68 28 66 64 29 29 if(fflush(fd))
01D130: 20 72 65 74 75 72 6E 20 28 4E 4F 29 3B 0D 0A 20 return (NO);..
01D140: 20 55 61 64 76 61 6E 63 65 28 66 64 29 3B 0D 0A Uadvance(fd);..
01D150: 20 20 69 66 28 55 73 74 61 74 75 73 5B 66 64 5D if(Ustatus[fd]
01D160: 26 45 4F 46 42 49 54 20 7C 7C 20 55 73 65 63 74 &EOFBIT || Usect
01D170: 6F 72 28 66 64 2C 20 52 44 52 4E 44 29 29 0D 0A or(fd, RDRND))..
01D180: 20 20 20 20 70 61 64 28 55 62 75 66 70 74 72 5B pad(Ubufptr[
01D190: 66 64 5D 2C 20 43 50 4D 45 4F 46 2C 20 42 55 46 fd], CPMEOF, BUF
01D1A0: 53 49 5A 45 29 3B 0D 0A 20 20 72 65 74 75 72 6E SIZE);.. return
01D1B0: 20 28 59 45 53 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A (YES);.. }....
01D1C0: 2F 2A 0D 0A 2A 2A 20 2D 2D 2D 2D 2D 2D 2D 2D 2D /*..** ---------
01D1D0: 2D 2D 2D 20 42 75 66 66 65 72 20 53 65 72 76 69 --- Buffer Servi
01D1E0: 63 65 0D 0A 2A 2F 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A ce..*/..../*..**
01D1F0: 20 41 64 76 61 6E 63 65 20 74 6F 20 6E 65 78 74 Advance to next
01D200: 5B 66 64 5D 3E 3D 42 55 46 53 49 5A 45 20 26 26 [fd]>=BUFSIZE &&
01D210: 20 21 55 67 65 74 73 65 63 28 66 64 29 29 0D 0A !Ugetsec(fd))..
01D220: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
01D230: 6E 20 28 45 4F 46 29 3B 0D 0A 20 20 20 20 20 20 n (EOF);..
01D240: 20 20 20 62 75 66 6C 6F 63 20 3D 20 55 62 75 66 bufloc = Ubuf
01D250: 70 74 72 5B 66 64 5D 20 2B 20 55 63 68 72 70 6F ptr[fd] + Uchrpo
01D260: 73 5B 66 64 5D 2B 2B 3B 0D 0A 20 20 20 20 20 20 s[fd]++;..
01D270: 20 20 20 72 65 74 75 72 6E 20 28 2A 62 75 66 6C return (*bufl
01D280: 6F 63 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D oc);.. }.. }
01D290: 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 43 6F 6E 73 6F ..../*..** Conso
01D2A0: 6C 65 20 63 68 61 72 61 63 74 65 72 20 69 6E 70 le character inp
01D2B0: 75 74 2E 0D 0A 2A 2F 0D 0A 55 63 6F 6E 69 6E 28 ut...*/..Uconin(
01D2C0: 29 20 7B 0D 0A 20 20 69 6E 74 20 63 68 3B 0D 0A ) {.. int ch;..
01D2D0: 20 20 77 68 69 6C 65 28 21 28 63 68 20 3D 20 55 while(!(ch = U
01D2E0: 62 64 6F 73 28 44 43 4F 4E 49 4F 2C 20 32 35 35 bdos(DCONIO, 255
01D2F0: 29 29 29 20 3B 0D 0A 20 20 73 77 69 74 63 68 28 ))) ;.. switch(
01D300: 63 68 29 20 7B 0D 0A 20 20 20 20 63 61 73 65 20 ch) {.. case
01D310: 41 42 4F 52 54 3A 20 65 78 69 74 28 30 29 3B 0D ABORT: exit(0);.
01D320: 0A 20 20 20 20 63 61 73 65 20 20 20 20 4C 46 3A . case LF:
01D330: 0D 0A 20 20 20 20 63 61 73 65 20 20 20 20 43 52 .. case CR
01D340: 3A 20 55 63 6F 6E 6F 75 74 28 4C 46 29 3B 20 72 : Uconout(LF); r
01D350: 65 74 75 72 6E 20 28 55 63 6F 6E 6F 75 74 28 43 eturn (Uconout(C
01D360: 52 29 29 3B 0D 0A 20 20 20 20 63 61 73 65 20 20 R));.. case
01D370: 20 44 45 4C 3A 20 63 68 20 3D 20 52 55 42 3B 0D DEL: ch = RUB;.
01D380: 0A 20 20 20 20 20 20 20 64 65 66 61 75 6C 74 3A . default:
01D390: 20 69 66 28 63 68 20 3C 20 33 32 29 20 7B 20 55 if(ch < 32) { U
01D3A0: 63 6F 6E 6F 75 74 28 27 5E 27 29 3B 20 55 63 6F conout('^'); Uco
01D3B0: 6E 6F 75 74 28 63 68 2B 36 34 29 3B 7D 0D 0A 20 nout(ch+64);}..
01D3C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 e
01D3D0: 6C 73 65 20 55 63 6F 6E 6F 75 74 28 63 68 29 3B lse Uconout(ch);
01D3E0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
01D3F0: 20 20 72 65 74 75 72 6E 20 28 63 68 29 3B 0D 0A return (ch);..
01D400: 20 73 65 63 74 6F 72 2E 0D 0A 2A 2F 0D 0A 55 61 sector...*/..Ua
01D410: 64 76 61 6E 63 65 28 66 64 29 20 69 6E 74 20 66 dvance(fd) int f
01D420: 64 3B 20 7B 0D 0A 20 20 69 6E 74 20 2A 72 72 6E d; {.. int *rrn
01D430: 3B 0D 0A 20 20 72 72 6E 20 3D 20 55 66 63 62 70 ;.. rrn = Ufcbp
01D440: 74 72 5B 66 64 5D 20 2B 20 52 52 4E 4F 46 46 3B tr[fd] + RRNOFF;
01D450: 0D 0A 20 20 2B 2B 28 2A 72 72 6E 29 3B 0D 0A 20 .. ++(*rrn);..
01D460: 20 55 63 68 72 70 6F 73 5B 66 64 5D 20 3D 20 30 Uchrpos[fd] = 0
01D470: 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A ;.. }..../*..**
01D480: 20 53 65 63 74 6F 72 20 49 2F 4F 2E 0D 0A 2A 2F Sector I/O...*/
01D490: 0D 0A 55 73 65 63 74 6F 72 28 66 64 2C 20 66 75 ..Usector(fd, fu
01D4A0: 6E 63 29 20 69 6E 74 20 66 64 2C 20 66 75 6E 63 nc) int fd, func
01D4B0: 3B 20 7B 0D 0A 20 20 69 6E 74 20 65 72 72 6F 72 ; {.. int error
01D4C0: 3B 0D 0A 20 20 55 62 64 6F 73 28 53 45 54 44 4D ;.. Ubdos(SETDM
01D4D0: 41 2C 20 55 62 75 66 70 74 72 5B 66 64 5D 29 3B A, Ubufptr[fd]);
01D4E0: 0D 0A 20 20 65 72 72 6F 72 20 3D 20 55 62 64 6F .. error = Ubdo
01D4F0: 73 28 66 75 6E 63 2C 20 55 66 63 62 70 74 72 5B s(func, Ufcbptr[
01D500: 66 64 5D 29 3B 0D 0A 20 20 55 62 64 6F 73 28 53 fd]);.. Ubdos(S
01D510: 45 54 44 4D 41 2C 20 31 32 38 29 3B 0D 0A 20 20 ETDMA, 128);..
01D520: 55 64 69 72 74 79 5B 66 64 5D 20 3D 20 4E 4F 3B Udirty[fd] = NO;
01D530: 0D 0A 20 20 72 65 74 75 72 6E 20 28 65 72 72 6F .. return (erro
01D540: 72 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A r);.. }..../*..
01D550: 2A 2A 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 ** ------------
01D560: 46 69 6C 65 20 53 74 61 74 75 73 0D 0A 2A 2F 0D File Status..*/.
01D570: 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 52 65 74 75 72 6E .../*..** Return
01D580: 20 66 64 27 73 20 6F 70 65 6E 20 6D 6F 64 65 2C fd's open mode,
01D590: 20 65 6C 73 65 20 4E 55 4C 4C 2E 0D 0A 2A 2F 0D else NULL...*/.
01D5A0: 0A 55 6D 6F 64 65 28 66 64 29 20 63 68 61 72 20 .Umode(fd) char
01D5B0: 2A 66 64 3B 20 7B 0D 0A 20 20 69 66 28 66 64 20 *fd; {.. if(fd
01D5C0: 3C 20 4D 41 58 46 49 4C 45 53 29 20 72 65 74 75 < MAXFILES) retu
01D5D0: 72 6E 20 28 55 73 74 61 74 75 73 5B 66 64 5D 29 rn (Ustatus[fd])
01D5E0: 3B 0D 0A 20 20 72 65 74 75 72 6E 20 28 4E 55 4C ;.. return (NUL
01D5F0: 4C 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A L);.. }..../*..
01D600: 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A }.. }..../*
01D610: 0D 0A 2A 2A 20 52 65 61 64 20 6F 6E 65 20 73 65 ..** Read one se
01D620: 63 74 6F 72 20 66 72 6F 6D 20 66 64 2E 0D 0A 2A ctor from fd...*
01D630: 2F 0D 0A 55 67 65 74 73 65 63 28 66 64 29 20 69 /..Ugetsec(fd) i
01D640: 6E 74 20 66 64 3B 20 7B 0D 0A 23 69 66 64 65 66 nt fd; {..#ifdef
01D650: 20 44 49 52 0D 0A 20 20 69 66 28 55 64 65 76 69 DIR.. if(Udevi
01D660: 63 65 5B 66 64 5D 29 20 7B 20 20 20 20 20 20 20 ce[fd]) {
01D670: 20 2F 2A 20 64 69 72 65 63 74 6F 72 79 20 66 69 /* directory fi
01D680: 6C 65 20 2A 2F 0D 0A 20 20 20 20 63 68 61 72 20 le */.. char
01D690: 2A 62 70 2C 20 2A 6E 61 6D 65 2C 20 2A 74 79 70 *bp, *name, *typ
01D6A0: 65 2C 20 2A 65 6E 64 3B 0D 0A 20 20 20 20 55 62 e, *end;.. Ub
01D6B0: 64 6F 73 28 53 45 54 44 4D 41 2C 20 31 32 38 29 dos(SETDMA, 128)
01D6C0: 3B 0D 0A 20 20 20 20 69 66 28 28 6E 61 6D 65 20 ;.. if((name
01D6D0: 3D 20 55 62 64 6F 73 28 55 64 65 76 69 63 65 5B = Ubdos(Udevice[
01D6E0: 66 64 5D 2C 20 55 66 63 62 70 74 72 5B 66 64 5D fd], Ufcbptr[fd]
01D6F0: 29 29 20 3D 3D 20 32 35 35 29 20 7B 0D 0A 20 20 )) == 255) {..
01D700: 20 20 20 20 55 73 65 74 65 6F 66 28 66 64 29 3B Useteof(fd);
01D710: 0D 0A 20 20 20 20 20 20 72 65 74 75 72 6E 20 28 .. return (
01D720: 4E 4F 29 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 NO);.. }..
01D730: 20 20 20 55 64 65 76 69 63 65 5B 66 64 5D 20 3D Udevice[fd] =
01D740: 20 46 4E 44 4E 58 54 3B 0D 0A 20 20 20 20 6E 61 FNDNXT;.. na
01D750: 6D 65 20 3D 20 28 6E 61 6D 65 20 3C 3C 20 35 29 me = (name << 5)
01D760: 20 2B 20 28 31 32 38 20 2B 20 4E 41 4D 45 4F 46 + (128 + NAMEOF
01D770: 46 29 3B 0D 0A 20 20 20 20 74 79 70 65 20 3D 20 F);.. type =
01D780: 6E 61 6D 65 20 2B 20 4E 41 4D 45 53 49 5A 45 3B name + NAMESIZE;
01D790: 0D 0A 20 20 20 20 65 6E 64 20 3D 20 6E 61 6D 65 .. end = name
01D7A0: 20 2B 20 4E 54 53 49 5A 45 3B 0D 0A 20 20 20 20 + NTSIZE;..
01D7B0: 62 70 20 3D 20 55 62 75 66 70 74 72 5B 66 64 5D bp = Ubufptr[fd]
01D7C0: 20 2B 20 42 55 46 53 49 5A 45 3B 0D 0A 20 20 20 + BUFSIZE;..
01D7D0: 20 2A 2D 2D 62 70 20 3D 20 43 52 3B 0D 0A 20 20 *--bp = CR;..
01D7E0: 20 20 77 68 69 6C 65 28 2D 2D 65 6E 64 20 3E 3D while(--end >=
01D7F0: 20 6E 61 6D 65 29 20 7B 20 2F 2A 20 70 75 74 20 name) { /* put
01D800: 2A 2A 20 53 65 74 20 65 6F 66 20 73 74 61 74 75 ** Set eof statu
01D810: 73 20 66 6F 72 20 66 64 20 61 6E 64 0D 0A 2A 2A s for fd and..**
01D820: 20 64 69 73 61 62 6C 65 20 66 75 74 75 72 65 20 disable future
01D830: 69 2F 6F 20 75 6E 6C 65 73 73 20 77 72 69 74 69 i/o unless writi
01D840: 6E 67 20 69 73 20 61 6C 6C 6F 77 65 64 2E 0D 0A ng is allowed...
01D850: 2A 2F 0D 0A 55 73 65 74 65 6F 66 28 66 64 29 20 */..Useteof(fd)
01D860: 69 6E 74 20 66 64 3B 20 7B 0D 0A 20 20 55 73 74 int fd; {.. Ust
01D870: 61 74 75 73 5B 66 64 5D 20 7C 3D 20 45 4F 46 42 atus[fd] |= EOFB
01D880: 49 54 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A IT;.. }..../*..
01D890: 2A 2A 20 43 6C 65 61 72 20 65 6F 66 20 73 74 61 ** Clear eof sta
01D8A0: 74 75 73 20 66 6F 72 20 66 64 2E 0D 0A 2A 2F 0D tus for fd...*/.
01D8B0: 0A 55 63 6C 72 65 6F 66 28 66 64 29 20 69 6E 74 .Uclreof(fd) int
01D8C0: 20 66 64 3B 20 7B 0D 0A 20 20 55 73 74 61 74 75 fd; {.. Ustatu
01D8D0: 73 5B 66 64 5D 20 26 3D 20 7E 45 4F 46 42 49 54 s[fd] &= ~EOFBIT
01D8E0: 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A ;.. }..../*..**
01D8F0: 20 53 65 74 20 65 72 72 6F 72 20 73 74 61 74 75 Set error statu
01D900: 73 20 66 6F 72 20 66 64 2E 0D 0A 2A 2F 0D 0A 55 s for fd...*/..U
01D910: 73 65 74 65 72 72 28 66 64 29 20 69 6E 74 20 66 seterr(fd) int f
01D920: 64 3B 20 7B 0D 0A 20 20 55 73 74 61 74 75 73 5B d; {.. Ustatus[
01D930: 66 64 5D 20 7C 3D 20 45 52 52 42 49 54 3B 0D 0A fd] |= ERRBIT;..
01D940: 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 2D 2D }..../*..** --
01D950: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 4D 65 6D 6F 72 ---------- Memor
01D960: 79 20 41 6C 6C 6F 63 61 74 69 6F 6E 0D 0A 2A 2F y Allocation..*/
01D970: 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 41 6C 6C 6F 63 ..../*..** Alloc
01D980: 61 74 65 20 6E 20 62 79 74 65 73 20 6F 66 20 28 ate n bytes of (
01D990: 70 6F 73 73 69 62 6C 79 20 7A 65 72 6F 65 64 29 possibly zeroed)
01D9A0: 20 6D 65 6D 6F 72 79 2E 0D 0A 2A 2A 20 45 6E 74 memory...** Ent
01D9B0: 72 79 3A 20 6E 20 3D 20 53 69 7A 65 20 6F 66 20 ry: n = Size of
01D9C0: 74 68 65 20 69 74 65 6D 73 20 69 6E 20 62 79 74 the items in byt
01D9D0: 65 73 2E 0D 0A 2A 2A 20 20 20 20 63 6C 65 61 72 es...** clear
01D9E0: 20 3D 20 22 74 72 75 65 22 20 69 66 20 63 6C 65 = "true" if cle
01D9F0: 61 72 69 6E 67 20 69 73 20 64 65 73 69 72 65 64 aring is desired
01DA00: 66 69 6C 65 6E 61 6D 65 20 61 74 20 65 6E 64 20 filename at end
01DA10: 6F 66 20 62 75 66 66 65 72 20 2A 2F 0D 0A 20 20 of buffer */..
01DA20: 20 20 20 20 69 66 28 2A 65 6E 64 20 3D 3D 20 53 if(*end == S
01DA30: 50 41 43 45 29 20 63 6F 6E 74 69 6E 75 65 3B 0D PACE) continue;.
01DA40: 0A 20 20 20 20 20 20 2A 2D 2D 62 70 20 3D 20 2A . *--bp = *
01DA50: 65 6E 64 3B 0D 0A 20 20 20 20 20 20 69 66 28 65 end;.. if(e
01DA60: 6E 64 20 3D 3D 20 74 79 70 65 29 20 2A 2D 2D 62 nd == type) *--b
01DA70: 70 20 3D 20 27 2E 27 3B 0D 0A 20 20 20 20 20 20 p = '.';..
01DA80: 7D 0D 0A 20 20 20 20 55 63 68 72 70 6F 73 5B 66 }.. Uchrpos[f
01DA90: 64 5D 20 3D 20 62 70 20 2D 20 55 62 75 66 70 74 d] = bp - Ubufpt
01DAA0: 72 5B 66 64 5D 3B 0D 0A 20 20 20 20 72 65 74 75 r[fd];.. retu
01DAB0: 72 6E 20 28 59 45 53 29 3B 0D 0A 20 20 20 20 7D rn (YES);.. }
01DAC0: 0D 0A 23 65 6E 64 69 66 0D 0A 20 20 69 66 28 66 ..#endif.. if(f
01DAD0: 66 6C 75 73 68 28 66 64 29 29 20 72 65 74 75 72 flush(fd)) retur
01DAE0: 6E 20 28 4E 4F 29 3B 0D 0A 20 20 55 61 64 76 61 n (NO);.. Uadva
01DAF0: 6E 63 65 28 66 64 29 3B 0D 0A 20 20 69 66 28 55 nce(fd);.. if(U
01DB00: 73 65 63 74 6F 72 28 66 64 2C 20 52 44 52 4E 44 sector(fd, RDRND
01DB10: 29 29 20 7B 0D 0A 20 20 20 20 70 61 64 28 55 62 )) {.. pad(Ub
01DB20: 75 66 70 74 72 5B 66 64 5D 2C 20 43 50 4D 45 4F ufptr[fd], CPMEO
01DB30: 46 2C 20 42 55 46 53 49 5A 45 29 3B 0D 0A 20 20 F, BUFSIZE);..
01DB40: 20 20 55 73 65 74 65 6F 66 28 66 64 29 3B 0D 0A Useteof(fd);..
01DB50: 20 20 20 20 72 65 74 75 72 6E 20 28 4E 4F 29 3B return (NO);
01DB60: 0D 0A 20 20 20 20 7D 0D 0A 20 20 72 65 74 75 72 .. }.. retur
01DB70: 6E 20 28 59 45 53 29 3B 0D 0A 20 20 7D 0D 0A 0D n (YES);.. }...
01DB80: 0A 2F 2A 0D 0A 2A 2A 20 2D 2D 2D 2D 2D 2D 2D 2D ./*..** --------
01DB90: 2D 2D 2D 2D 20 46 69 6C 65 20 4F 75 74 70 75 74 ---- File Output
01DBA0: 0D 0A 2A 2F 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 42 ..*/..../*..** B
01DBB0: 69 6E 61 72 79 2D 53 74 72 65 61 6D 20 6F 75 74 inary-Stream out
01DBC0: 70 75 74 20 6F 66 20 6F 6E 65 20 62 79 74 65 20 put of one byte
01DBD0: 74 6F 20 66 64 2E 0D 0A 2A 2F 0D 0A 55 77 72 69 to fd...*/..Uwri
01DBE0: 74 65 28 63 68 2C 20 66 64 29 20 69 6E 74 20 63 te(ch, fd) int c
01DBF0: 68 2C 20 66 64 3B 20 7B 0D 0A 20 20 63 68 61 72 h, fd; {.. char
01DC00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
01DC10: 19 00 01 00 02 09 52 E5 19 00 41 02 00 00 00 02 ......R...A.....
01DC20: 19 00 46 02 00 00 00 02 19 00 42 02 00 00 00 02 ..F.......B.....
01DC30: 19 00 47 02 00 00 00 02 19 00 43 02 00 00 00 02 ..G.......C.....
01DC40: 19 00 48 02 00 00 00 02 19 00 44 02 00 00 00 02 ..H.......D.....
01DC50: 19 00 49 02 00 00 00 02 19 00 45 02 00 00 00 02 ..I.......E.....
01DC60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DC70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DC80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DC90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DCA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DCB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DCC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DCD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DCE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DCF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DD00: 2E 0D 0A 2A 2A 20 52 65 74 75 72 6E 73 20 74 68 ...** Returns th
01DD10: 65 20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65 e address of the
01DD20: 20 61 6C 6C 6F 63 61 74 65 64 20 62 6C 6F 63 6B allocated block
01DD30: 20 6F 66 20 6D 65 6D 6F 72 79 0D 0A 2A 2A 20 6F of memory..** o
01DD40: 72 20 4E 55 4C 4C 20 69 66 20 74 68 65 20 72 65 r NULL if the re
01DD50: 71 75 65 73 74 65 64 20 61 6D 6F 75 6E 74 20 6F quested amount o
01DD60: 66 20 73 70 61 63 65 20 69 73 20 6E 6F 74 20 61 f space is not a
01DD70: 76 61 69 6C 61 62 6C 65 2E 0D 0A 2A 2F 0D 0A 55 vailable...*/..U
01DD80: 61 6C 6C 6F 63 28 6E 2C 20 63 6C 65 61 72 29 20 alloc(n, clear)
01DD90: 63 68 61 72 20 2A 6E 3B 20 69 6E 74 20 63 6C 65 char *n; int cle
01DDA0: 61 72 3B 20 7B 0D 0A 20 20 63 68 61 72 20 2A 6F ar; {.. char *o
01DDB0: 6C 64 70 74 72 3B 0D 0A 20 20 69 66 28 6E 20 3C ldptr;.. if(n <
01DDC0: 20 61 76 61 69 6C 28 59 45 53 29 29 20 7B 0D 0A avail(YES)) {..
01DDD0: 20 20 20 20 69 66 28 63 6C 65 61 72 29 20 70 61 if(clear) pa
01DDE0: 64 28 55 6D 65 6D 70 74 72 2C 20 4E 55 4C 4C 2C d(Umemptr, NULL,
01DDF0: 20 6E 29 3B 0D 0A 20 20 20 20 6F 6C 64 70 74 72 n);.. oldptr
01DE00: 20 3D 20 55 6D 65 6D 70 74 72 3B 0D 0A 20 20 20 = Umemptr;..
01DE10: 20 55 6D 65 6D 70 74 72 20 2B 3D 20 6E 3B 0D 0A Umemptr += n;..
01DE20: 20 20 20 20 72 65 74 75 72 6E 20 28 6F 6C 64 70 return (oldp
01DE30: 74 72 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 72 tr);.. }.. r
01DE40: 65 74 75 72 6E 20 28 4E 55 4C 4C 29 3B 0D 0A 20 eturn (NULL);..
01DE50: 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 2D 2D 2D }..../*..** ---
01DE60: 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 43 50 2F 4D 20 49 --------- CP/M I
01DE70: 6E 74 65 72 66 61 63 65 0D 0A 2A 2F 0D 0A 0D 0A nterface..*/....
01DE80: 2F 2A 0D 0A 2A 2A 20 49 73 73 75 65 20 43 50 2F /*..** Issue CP/
01DE90: 4D 20 66 75 6E 63 74 69 6F 6E 20 61 6E 64 20 72 M function and r
01DEA0: 65 74 75 72 6E 20 72 65 73 75 6C 74 2E 20 0D 0A eturn result. ..
01DEB0: 2A 2A 20 45 6E 74 72 79 3A 20 63 20 20 3D 20 43 ** Entry: c = C
01DEC0: 50 2F 4D 20 66 75 6E 63 74 69 6F 6E 20 63 6F 64 P/M function cod
01DED0: 65 20 28 72 65 67 69 73 74 65 72 20 43 29 0D 0A e (register C)..
01DEE0: 2A 2A 20 20 20 20 20 20 20 20 64 65 20 3D 20 43 ** de = C
01DEF0: 50 2F 4D 20 70 61 72 61 6D 65 74 65 72 20 28 72 P/M parameter (r
01DF00: 72 6E 20 69 6E 74 20 55 66 63 62 70 74 72 5B 5D rn int Ufcbptr[]
01DF10: 2C 20 55 73 74 61 74 75 73 5B 5D 2C 20 55 64 65 , Ustatus[], Ude
01DF20: 76 69 63 65 5B 5D 3B 0D 0A 66 63 6C 6F 73 65 28 vice[];..fclose(
01DF30: 66 64 29 20 69 6E 74 20 66 64 3B 20 7B 0D 0A 20 fd) int fd; {..
01DF40: 20 69 66 28 21 55 6D 6F 64 65 28 66 64 29 29 20 if(!Umode(fd))
01DF50: 72 65 74 75 72 6E 20 28 45 52 52 29 3B 0D 0A 20 return (ERR);..
01DF60: 20 69 66 28 21 69 73 61 74 74 79 28 66 64 29 29 if(!isatty(fd))
01DF70: 20 7B 0D 0A 20 20 20 20 69 66 28 66 66 6C 75 73 {.. if(fflus
01DF80: 68 28 66 64 29 20 7C 7C 20 55 62 64 6F 73 28 43 h(fd) || Ubdos(C
01DF90: 4C 4F 46 49 4C 2C 55 66 63 62 70 74 72 5B 66 64 LOFIL,Ufcbptr[fd
01DFA0: 5D 29 3D 3D 32 35 35 29 0D 0A 20 20 20 20 20 20 ])==255)..
01DFB0: 72 65 74 75 72 6E 20 28 45 52 52 29 3B 0D 0A 20 return (ERR);..
01DFC0: 20 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E 20 28 }.. return (
01DFD0: 55 73 74 61 74 75 73 5B 66 64 5D 3D 55 64 65 76 Ustatus[fd]=Udev
01DFE0: 69 63 65 5B 66 64 5D 3D 4E 55 4C 4C 29 3B 0D 0A ice[fd]=NULL);..
01DFF0: 20 20 7D 0D 0A 0D 0A 3E 3E 3E 20 46 45 4F 46 2E }....>>> FEOF.
01E000: 43 20 32 36 34 0D 0A 23 64 65 66 69 6E 65 20 4E C 264..#define N
01E010: 4F 43 43 41 52 47 43 20 20 2F 2A 20 6E 6F 20 61 OCCARGC /* no a
01E020: 72 67 75 6D 65 6E 74 20 63 6F 75 6E 74 20 70 61 rgument count pa
01E030: 73 73 69 6E 67 20 2A 2F 0D 0A 23 69 6E 63 6C 75 ssing */..#inclu
01E040: 64 65 20 63 6C 69 62 2E 64 65 66 0D 0A 65 78 74 de clib.def..ext
01E050: 65 72 6E 20 69 6E 74 20 55 73 74 61 74 75 73 5B ern int Ustatus[
01E060: 5D 3B 0D 0A 2F 2A 0D 0A 2A 2A 20 54 65 73 74 20 ];../*..** Test
01E070: 66 6F 72 20 65 6E 64 2D 6F 66 2D 66 69 6C 65 20 for end-of-file
01E080: 73 74 61 74 75 73 2E 0D 0A 2A 2A 20 45 6E 74 72 status...** Entr
01E090: 79 3A 20 66 64 20 3D 20 66 69 6C 65 20 64 65 73 y: fd = file des
01E0A0: 63 72 69 70 74 6F 72 0D 0A 2A 2A 20 52 65 74 75 criptor..** Retu
01E0B0: 72 6E 73 20 6E 6F 6E 2D 7A 65 72 6F 20 69 66 20 rns non-zero if
01E0C0: 66 64 20 69 73 20 61 74 20 65 6F 66 2C 20 65 6C fd is at eof, el
01E0D0: 73 65 20 7A 65 72 6F 2E 0D 0A 2A 2F 0D 0A 66 65 se zero...*/..fe
01E0E0: 6F 66 28 66 64 29 20 69 6E 74 20 66 64 3B 20 7B of(fd) int fd; {
01E0F0: 0D 0A 20 20 72 65 74 75 72 6E 20 28 55 73 74 61 .. return (Usta
01E100: 65 67 69 73 74 65 72 20 44 45 20 6F 72 20 45 29 egister DE or E)
01E110: 0D 0A 2A 2A 20 52 65 74 75 72 6E 73 20 74 68 65 ..** Returns the
01E120: 20 43 50 2F 4D 20 72 65 74 75 72 6E 20 63 6F 64 CP/M return cod
01E130: 65 20 28 72 65 67 69 73 74 65 72 20 41 29 0D 0A e (register A)..
01E140: 2A 2F 0D 0A 55 62 64 6F 73 28 63 2C 64 65 29 20 */..Ubdos(c,de)
01E150: 69 6E 74 20 63 2C 64 65 3B 20 7B 0D 0A 23 61 73 int c,de; {..#as
01E160: 6D 0D 0A 20 20 20 20 20 20 20 20 70 6F 70 20 20 m.. pop
01E170: 20 20 20 68 20 20 20 20 20 20 20 3B 68 6F 6C 64 h ;hold
01E180: 20 72 65 74 75 72 6E 20 61 64 64 72 65 73 73 0D return address.
01E190: 0A 20 20 20 20 20 20 20 20 70 6F 70 20 20 20 20 . pop
01E1A0: 20 64 20 20 20 20 20 20 20 3B 6C 6F 61 64 20 43 d ;load C
01E1B0: 50 2F 4D 20 66 75 6E 63 74 69 6F 6E 20 70 61 72 P/M function par
01E1C0: 61 6D 65 74 65 72 0D 0A 20 20 20 20 20 20 20 20 ameter..
01E1D0: 70 6F 70 20 20 20 20 20 62 20 20 20 20 20 20 20 pop b
01E1E0: 3B 6C 6F 61 64 20 43 50 2F 4D 20 66 75 6E 63 74 ;load CP/M funct
01E1F0: 69 6F 6E 20 6E 75 6D 62 65 72 0D 0A 20 20 20 20 ion number..
01E200: 20 20 20 20 70 75 73 68 20 20 20 20 62 20 20 20 push b
01E210: 20 20 20 20 3B 72 65 73 74 6F 72 65 0D 0A 20 20 ;restore..
01E220: 20 20 20 20 20 20 70 75 73 68 20 20 20 20 64 20 push d
01E230: 20 20 20 20 20 20 3B 20 20 74 68 65 0D 0A 20 20 ; the..
01E240: 20 20 20 20 20 20 70 75 73 68 20 20 20 20 68 20 push h
01E250: 20 20 20 20 20 20 3B 20 20 20 20 20 73 74 61 63 ; stac
01E260: 6B 0D 0A 20 20 20 20 20 20 20 20 63 61 6C 6C 20 k.. call
01E270: 20 20 20 35 20 20 20 20 20 20 20 3B 63 61 6C 6C 5 ;call
01E280: 20 62 64 6F 73 0D 0A 20 20 20 20 20 20 20 20 6D bdos.. m
01E290: 76 69 20 20 20 20 20 68 2C 30 20 20 20 20 20 3B vi h,0 ;
01E2A0: 0D 0A 20 20 20 20 20 20 20 20 6D 6F 76 20 20 20 .. mov
01E2B0: 20 20 6C 2C 61 20 20 20 20 20 3B 72 65 74 75 72 l,a ;retur
01E2C0: 6E 20 74 68 65 20 43 50 2F 4D 20 72 65 73 70 6F n the CP/M respo
01E2D0: 6E 73 65 0D 0A 23 65 6E 64 61 73 6D 0D 0A 20 20 nse..#endasm..
01E2E0: 7D 0D 0A 3E 3E 3E 20 43 54 45 4C 4C 2E 43 20 33 }..>>> CTELL.C 3
01E2F0: 39 37 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43 43 97..#define NOCC
01E300: 74 75 73 5B 66 64 5D 20 26 20 45 4F 46 42 49 54 tus[fd] & EOFBIT
01E310: 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 3E 3E 3E 20 46 );.. }....>>> F
01E320: 45 52 52 4F 52 2E 43 20 31 39 34 0D 0A 23 64 65 ERROR.C 194..#de
01E330: 66 69 6E 65 20 4E 4F 43 43 41 52 47 43 20 20 2F fine NOCCARGC /
01E340: 2A 20 6E 6F 20 61 72 67 20 63 6F 75 6E 74 20 70 * no arg count p
01E350: 61 73 73 69 6E 67 20 2A 2F 0D 0A 23 69 6E 63 6C assing */..#incl
01E360: 75 64 65 20 73 74 64 69 6F 2E 68 0D 0A 23 69 6E ude stdio.h..#in
01E370: 63 6C 75 64 65 20 63 6C 69 62 2E 64 65 66 0D 0A clude clib.def..
01E380: 65 78 74 65 72 6E 20 55 73 74 61 74 75 73 5B 5D extern Ustatus[]
01E390: 3B 0D 0A 2F 2A 0D 0A 2A 2A 20 54 65 73 74 20 66 ;../*..** Test f
01E3A0: 6F 72 20 65 72 72 6F 72 20 73 74 61 74 75 73 20 or error status
01E3B0: 6F 6E 20 66 64 2E 0D 0A 2A 2F 0D 0A 66 65 72 72 on fd...*/..ferr
01E3C0: 6F 72 28 66 64 29 20 69 6E 74 20 66 64 3B 20 7B or(fd) int fd; {
01E3D0: 0D 0A 20 20 72 65 74 75 72 6E 20 28 55 73 74 61 .. return (Usta
01E3E0: 74 75 73 5B 66 64 5D 20 26 20 45 52 52 42 49 54 tus[fd] & ERRBIT
01E3F0: 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 46 46 4C );.. }..>>> FFL
01E400: 55 53 48 2E 43 20 35 38 34 0D 0A 23 64 65 66 69 USH.C 584..#defi
01E410: 6E 65 20 4E 4F 43 43 41 52 47 43 20 20 2F 2A 20 ne NOCCARGC /*
01E420: 6E 6F 20 61 72 67 75 6D 65 6E 74 20 63 6F 75 6E no argument coun
01E430: 74 20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A 23 69 t passing */..#i
01E440: 6E 63 6C 75 64 65 20 73 74 64 69 6F 2E 68 0D 0A nclude stdio.h..
01E450: 23 69 6E 63 6C 75 64 65 20 63 6C 69 62 2E 64 65 #include clib.de
01E460: 66 0D 0A 65 78 74 65 72 6E 20 69 6E 74 20 55 64 f..extern int Ud
01E470: 69 72 74 79 5B 5D 2C 20 2A 55 61 75 78 73 7A 2C irty[], *Uauxsz,
01E480: 20 55 61 75 78 66 6C 3B 0D 0A 2F 2A 0D 0A 2A 2A Uauxfl;../*..**
01E490: 20 57 72 69 74 65 20 62 75 66 66 65 72 20 66 6F Write buffer fo
01E4A0: 72 20 66 64 20 69 66 20 69 74 20 68 61 73 20 63 r fd if it has c
01E4B0: 68 61 6E 67 65 73 2E 0D 0A 2A 2A 20 45 6E 74 72 hanges...** Entr
01E4C0: 79 3A 20 66 64 20 3D 20 46 69 6C 65 20 64 65 73 y: fd = File des
01E4D0: 63 72 69 70 74 6F 72 20 6F 66 20 70 65 72 74 69 criptor of perti
01E4E0: 6E 65 6E 74 20 66 69 6C 65 2E 0D 0A 2A 2A 20 52 nent file...** R
01E4F0: 65 74 75 72 6E 73 20 4E 55 4C 4C 20 6F 6E 20 73 eturns NULL on s
01E500: 41 52 47 43 20 20 2F 2A 20 6E 6F 20 61 72 67 20 ARGC /* no arg
01E510: 63 6F 75 6E 74 20 70 61 73 73 69 6E 67 20 2A 2F count passing */
01E520: 0D 0A 23 69 6E 63 6C 75 64 65 20 73 74 64 69 6F ..#include stdio
01E530: 2E 68 0D 0A 23 69 6E 63 6C 75 64 65 20 63 6C 69 .h..#include cli
01E540: 62 2E 64 65 66 0D 0A 65 78 74 65 72 6E 20 69 6E b.def..extern in
01E550: 74 20 55 66 63 62 70 74 72 5B 5D 2C 20 55 63 68 t Ufcbptr[], Uch
01E560: 72 70 6F 73 5B 5D 3B 0D 0A 2F 2A 0D 0A 2A 2A 20 rpos[];../*..**
01E570: 52 65 74 75 72 6E 20 6F 66 66 73 65 74 20 74 6F Return offset to
01E580: 20 63 75 72 72 65 6E 74 20 31 32 38 2D 62 79 74 current 128-byt
01E590: 65 20 72 65 63 6F 72 64 2E 0D 0A 2A 2F 0D 0A 63 e record...*/..c
01E5A0: 74 65 6C 6C 28 66 64 29 20 69 6E 74 20 66 64 3B tell(fd) int fd;
01E5B0: 20 7B 0D 0A 20 20 69 6E 74 20 2A 72 72 6E 3B 0D {.. int *rrn;.
01E5C0: 0A 20 20 69 66 28 21 55 6D 6F 64 65 28 66 64 29 . if(!Umode(fd)
01E5D0: 20 7C 7C 20 69 73 61 74 74 79 28 66 64 29 29 20 || isatty(fd))
01E5E0: 72 65 74 75 72 6E 20 28 2D 31 29 3B 0D 0A 20 20 return (-1);..
01E5F0: 72 72 6E 3D 55 66 63 62 70 74 72 5B 66 64 5D 2B rrn=Ufcbptr[fd]+
01E600: 52 52 4E 4F 46 46 3B 0D 0A 20 20 72 65 74 75 72 RRNOFF;.. retur
01E610: 6E 20 28 2A 72 72 6E 29 3B 0D 0A 20 20 7D 0D 0A n (*rrn);.. }..
01E620: 2F 2A 0D 0A 2A 2A 20 52 65 74 75 72 6E 20 6F 66 /*..** Return of
01E630: 66 73 65 74 20 74 6F 20 6E 65 78 74 20 63 68 61 fset to next cha
01E640: 72 61 63 74 65 72 20 69 6E 20 63 75 72 72 65 6E racter in curren
01E650: 74 20 62 75 66 66 65 72 2E 0D 0A 2A 2F 0D 0A 63 t buffer...*/..c
01E660: 74 65 6C 6C 63 28 66 64 29 20 69 6E 74 20 66 64 tellc(fd) int fd
01E670: 3B 20 7B 0D 0A 20 20 72 65 74 75 72 6E 20 28 55 ; {.. return (U
01E680: 63 68 72 70 6F 73 5B 66 64 5D 29 3B 0D 0A 20 20 chrpos[fd]);..
01E690: 7D 0D 0A 0D 0A 3E 3E 3E 20 44 54 4F 49 2E 43 20 }....>>> DTOI.C
01E6A0: 34 31 37 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43 417..#define NOC
01E6B0: 43 41 52 47 43 20 20 2F 2A 20 6E 6F 20 61 72 67 CARGC /* no arg
01E6C0: 75 6D 65 6E 74 20 63 6F 75 6E 74 20 70 61 73 73 ument count pass
01E6D0: 69 6E 67 20 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 ing */..#include
01E6E0: 20 73 74 64 69 6F 2E 68 0D 0A 2F 2A 0D 0A 2A 2A stdio.h../*..**
01E6F0: 20 64 74 6F 69 20 2D 2D 20 63 6F 6E 76 65 72 74 dtoi -- convert
01E700: 75 63 63 65 73 73 2C 20 6F 74 68 65 72 77 69 73 uccess, otherwis
01E710: 65 20 45 4F 46 2E 0D 0A 2A 2A 20 52 65 74 75 72 e EOF...** Retur
01E720: 6E 73 20 4E 55 4C 4C 20 69 66 20 66 69 6C 65 20 ns NULL if file
01E730: 69 73 20 6F 70 65 6E 65 64 20 66 6F 72 20 69 6E is opened for in
01E740: 70 75 74 20 6F 6E 6C 79 0D 0A 2A 2A 20 20 20 20 put only..**
01E750: 20 20 20 20 20 6F 72 20 69 66 20 69 74 20 69 73 or if it is
01E760: 20 6E 6F 74 20 61 20 64 69 73 6B 20 66 69 6C 65 not a disk file
01E770: 2E 0D 0A 2A 2F 0D 0A 66 66 6C 75 73 68 28 66 64 ...*/..fflush(fd
01E780: 29 20 69 6E 74 20 66 64 3B 20 7B 0D 0A 20 20 69 ) int fd; {.. i
01E790: 66 28 55 6D 6F 64 65 28 66 64 29 20 26 20 57 52 f(Umode(fd) & WR
01E7A0: 54 42 49 54 29 20 7B 0D 0A 20 20 20 20 69 66 28 TBIT) {.. if(
01E7B0: 28 55 61 75 78 73 7A 20 26 26 20 55 61 75 78 73 (Uauxsz && Uauxs
01E7C0: 7A 5B 66 64 5D 20 26 26 20 55 61 75 78 66 6C 28 z[fd] && Uauxfl(
01E7D0: 66 64 29 29 20 7C 7C 0D 0A 20 20 20 20 20 20 20 fd)) ||..
01E7E0: 28 21 69 73 61 74 74 79 28 66 64 29 20 26 26 20 (!isatty(fd) &&
01E7F0: 55 64 69 72 74 79 5B 66 64 5D 20 26 26 20 55 73 Udirty[fd] && Us
01E800: 65 63 74 6F 72 28 66 64 2C 20 57 52 54 52 4E 44 ector(fd, WRTRND
01E810: 29 29 29 20 7B 0D 0A 20 20 20 20 20 20 55 73 65 ))) {.. Use
01E820: 74 65 72 72 28 66 64 29 3B 0D 0A 20 20 20 20 20 terr(fd);..
01E830: 20 72 65 74 75 72 6E 20 28 45 52 52 29 3B 0D 0A return (ERR);..
01E840: 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 7D 0D 0A }.. }..
01E850: 20 20 72 65 74 75 72 6E 20 28 4E 55 4C 4C 29 3B return (NULL);
01E860: 0D 0A 20 20 7D 0D 0A 0D 0A 3E 3E 3E 20 46 47 45 .. }....>>> FGE
01E870: 54 43 2E 43 20 37 36 31 0D 0A 23 64 65 66 69 6E TC.C 761..#defin
01E880: 65 20 4E 4F 43 43 41 52 47 43 20 20 2F 2A 20 6E e NOCCARGC /* n
01E890: 6F 20 61 72 67 75 6D 65 6E 74 20 63 6F 75 6E 74 o argument count
01E8A0: 20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A 23 69 6E passing */..#in
01E8B0: 63 6C 75 64 65 20 73 74 64 69 6F 2E 68 0D 0A 23 clude stdio.h..#
01E8C0: 69 6E 63 6C 75 64 65 20 63 6C 69 62 2E 64 65 66 include clib.def
01E8D0: 0D 0A 65 78 74 65 72 6E 20 69 6E 74 20 55 63 68 ..extern int Uch
01E8E0: 72 70 6F 73 5B 5D 3B 0D 0A 2F 2A 0D 0A 2A 2A 20 rpos[];../*..**
01E8F0: 43 68 61 72 61 63 74 65 72 2D 73 74 72 65 61 6D Character-stream
01E900: 20 73 69 67 6E 65 64 20 64 65 63 69 6D 61 6C 20 signed decimal
01E910: 73 74 72 69 6E 67 20 74 6F 20 69 6E 74 65 67 65 string to intege
01E920: 72 20 6E 62 72 0D 0A 2A 2A 20 20 20 20 20 20 20 r nbr..**
01E930: 20 20 72 65 74 75 72 6E 73 20 66 69 65 6C 64 20 returns field
01E940: 6C 65 6E 67 74 68 2C 20 65 6C 73 65 20 45 52 52 length, else ERR
01E950: 20 6F 6E 20 65 72 72 6F 72 0D 0A 2A 2F 0D 0A 64 on error..*/..d
01E960: 74 6F 69 28 64 65 63 73 74 72 2C 20 6E 62 72 29 toi(decstr, nbr)
01E970: 20 20 63 68 61 72 20 2A 64 65 63 73 74 72 3B 20 char *decstr;
01E980: 20 69 6E 74 20 2A 6E 62 72 3B 20 20 7B 0D 0A 20 int *nbr; {..
01E990: 20 69 6E 74 20 6C 65 6E 2C 20 73 3B 0D 0A 20 20 int len, s;..
01E9A0: 69 66 28 28 2A 64 65 63 73 74 72 29 3D 3D 27 2D if((*decstr)=='-
01E9B0: 27 29 20 7B 73 3D 31 3B 20 2B 2B 64 65 63 73 74 ') {s=1; ++decst
01E9C0: 72 3B 7D 20 65 6C 73 65 20 73 3D 30 3B 0D 0A 20 r;} else s=0;..
01E9D0: 20 69 66 28 28 6C 65 6E 3D 75 74 6F 69 28 64 65 if((len=utoi(de
01E9E0: 63 73 74 72 2C 20 6E 62 72 29 29 3C 30 29 20 72 cstr, nbr))<0) r
01E9F0: 65 74 75 72 6E 20 45 52 52 3B 0D 0A 20 20 69 66 eturn ERR;.. if
01EA00: 28 2A 6E 62 72 3C 30 29 20 72 65 74 75 72 6E 20 (*nbr<0) return
01EA10: 45 52 52 3B 0D 0A 20 20 69 66 28 73 29 20 7B 2A ERR;.. if(s) {*
01EA20: 6E 62 72 20 3D 20 2D 2A 6E 62 72 3B 20 72 65 74 nbr = -*nbr; ret
01EA30: 75 72 6E 20 2B 2B 6C 65 6E 3B 7D 20 65 6C 73 65 urn ++len;} else
01EA40: 20 72 65 74 75 72 6E 20 6C 65 6E 3B 0D 0A 20 20 return len;..
01EA50: 7D 0D 0A 3E 3E 3E 20 45 58 49 54 2E 43 20 34 32 }..>>> EXIT.C 42
01EA60: 30 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43 43 41 0..#define NOCCA
01EA70: 52 47 43 20 20 2F 2A 20 6E 6F 20 61 72 67 75 6D RGC /* no argum
01EA80: 65 6E 74 20 63 6F 75 6E 74 20 70 61 73 73 69 6E ent count passin
01EA90: 67 20 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 20 73 g */..#include s
01EAA0: 74 64 69 6F 2E 68 0D 0A 23 69 6E 63 6C 75 64 65 tdio.h..#include
01EAB0: 20 63 6C 69 62 2E 64 65 66 0D 0A 2F 2A 0D 0A 2A clib.def../*..*
01EAC0: 2A 20 43 6C 6F 73 65 20 61 6C 6C 20 6F 70 65 6E * Close all open
01EAD0: 20 66 69 6C 65 73 20 61 6E 64 20 65 78 69 74 20 files and exit
01EAE0: 74 6F 20 43 50 2F 4D 2E 20 0D 0A 2A 2A 20 45 6E to CP/M. ..** En
01EAF0: 74 72 79 3A 20 65 72 72 63 6F 64 65 20 3D 20 43 try: errcode = C
01EB00: 20 69 6E 70 75 74 20 6F 66 20 6F 6E 65 20 63 68 input of one ch
01EB10: 61 72 61 63 74 65 72 20 66 72 6F 6D 20 66 64 2E aracter from fd.
01EB20: 0D 0A 2A 2A 20 45 6E 74 72 79 3A 20 66 64 20 3D ..** Entry: fd =
01EB30: 20 46 69 6C 65 20 64 65 73 63 72 69 70 74 6F 72 File descriptor
01EB40: 20 6F 66 20 70 65 72 74 69 6E 65 6E 74 20 66 69 of pertinent fi
01EB50: 6C 65 2E 0D 0A 2A 2A 20 52 65 74 75 72 6E 73 20 le...** Returns
01EB60: 74 68 65 20 6E 65 78 74 20 63 68 61 72 61 63 74 the next charact
01EB70: 65 72 20 6F 6E 20 73 75 63 63 65 73 73 2C 20 65 er on success, e
01EB80: 6C 73 65 20 45 4F 46 2E 0D 0A 2A 2F 0D 0A 66 67 lse EOF...*/..fg
01EB90: 65 74 63 28 66 64 29 20 69 6E 74 20 66 64 3B 20 etc(fd) int fd;
01EBA0: 7B 0D 0A 20 20 69 6E 74 20 63 68 3B 0D 0A 20 20 {.. int ch;..
01EBB0: 77 68 69 6C 65 28 31 29 20 7B 0D 0A 20 20 20 20 while(1) {..
01EBC0: 73 77 69 74 63 68 28 63 68 20 3D 20 55 72 65 61 switch(ch = Urea
01EBD0: 64 28 66 64 29 29 20 7B 0D 0A 20 20 20 20 20 20 d(fd)) {..
01EBE0: 64 65 66 61 75 6C 74 3A 20 20 20 20 20 72 65 74 default: ret
01EBF0: 75 72 6E 20 28 63 68 29 3B 0D 0A 20 20 20 20 20 urn (ch);..
01EC00: 20 63 61 73 65 20 43 50 4D 45 4F 46 3A 20 73 77 case CPMEOF: sw
01EC10: 69 74 63 68 28 55 63 68 72 70 6F 73 5B 66 64 5D itch(Uchrpos[fd]
01EC20: 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ) {..
01EC30: 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6C defaul
01EC40: 74 3A 20 2D 2D 55 63 68 72 70 6F 73 5B 66 64 5D t: --Uchrpos[fd]
01EC50: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
01EC60: 20 20 20 20 20 20 20 20 63 61 73 65 20 30 3A 0D case 0:.
01EC70: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
01EC80: 20 20 20 20 20 20 63 61 73 65 20 42 55 46 53 49 case BUFSI
01EC90: 5A 45 3A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ZE:..
01ECA0: 20 20 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 }..
01ECB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01ECC0: 55 73 65 74 65 6F 66 28 66 64 29 3B 0D 0A 20 20 Useteof(fd);..
01ECD0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01ECE0: 20 72 65 74 75 72 6E 20 28 45 4F 46 29 3B 0D 0A return (EOF);..
01ECF0: 20 20 20 20 20 20 63 61 73 65 20 43 52 3A 20 20 case CR:
01ED00: 68 61 72 61 63 74 65 72 20 74 6F 20 62 65 20 73 haracter to be s
01ED10: 65 6E 74 20 74 6F 20 73 74 64 65 72 72 2E 0D 0A ent to stderr...
01ED20: 2A 2A 20 52 65 74 75 72 6E 73 20 74 6F 20 43 50 ** Returns to CP
01ED30: 2F 4D 20 72 61 74 68 65 72 20 74 68 61 6E 20 74 /M rather than t
01ED40: 68 65 20 63 61 6C 6C 65 72 2E 0D 0A 2A 2F 0D 0A he caller...*/..
01ED50: 65 78 69 74 28 65 72 72 63 6F 64 65 29 20 63 68 exit(errcode) ch
01ED60: 61 72 20 65 72 72 63 6F 64 65 3B 20 7B 0D 0A 20 ar errcode; {..
01ED70: 20 69 6E 74 20 66 64 3B 0D 0A 20 20 69 66 28 65 int fd;.. if(e
01ED80: 72 72 63 6F 64 65 29 20 55 63 6F 6E 6F 75 74 28 rrcode) Uconout(
01ED90: 65 72 72 63 6F 64 65 29 3B 0D 0A 20 20 66 6F 72 errcode);.. for
01EDA0: 28 66 64 3D 30 3B 20 66 64 20 3C 20 4D 41 58 46 (fd=0; fd < MAXF
01EDB0: 49 4C 45 53 3B 20 66 63 6C 6F 73 65 28 66 64 2B ILES; fclose(fd+
01EDC0: 2B 29 29 3B 0D 0A 20 20 55 62 64 6F 73 28 47 4F +));.. Ubdos(GO
01EDD0: 43 50 4D 2C 4E 55 4C 4C 29 3B 0D 0A 20 20 7D 0D CPM,NULL);.. }.
01EDE0: 0A 23 61 73 6D 0D 0A 61 62 6F 72 74 20 20 65 71 .#asm..abort eq
01EDF0: 75 20 20 20 20 65 78 69 74 0D 0A 20 20 20 20 20 u exit..
01EE00: 20 20 65 6E 74 72 79 20 20 61 62 6F 72 74 0D 0A entry abort..
01EE10: 23 65 6E 64 61 73 6D 0D 0A 3E 3E 3E 20 46 43 4C #endasm..>>> FCL
01EE20: 4F 53 45 2E 43 20 34 34 32 0D 0A 23 64 65 66 69 OSE.C 442..#defi
01EE30: 6E 65 20 4E 4F 43 43 41 52 47 43 20 20 2F 2A 20 ne NOCCARGC /*
01EE40: 6E 6F 20 61 72 67 75 6D 65 6E 74 20 63 6F 75 6E no argument coun
01EE50: 74 20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A 23 69 t passing */..#i
01EE60: 6E 63 6C 75 64 65 20 73 74 64 69 6F 2E 68 0D 0A nclude stdio.h..
01EE70: 23 69 6E 63 6C 75 64 65 20 63 6C 69 62 2E 64 65 #include clib.de
01EE80: 66 0D 0A 2F 2A 0D 0A 2A 2A 20 43 6C 6F 73 65 20 f../*..** Close
01EE90: 66 64 20 0D 0A 2A 2A 20 45 6E 74 72 79 3A 20 66 fd ..** Entry: f
01EEA0: 64 20 3D 20 46 69 6C 65 20 64 65 73 63 72 69 70 d = File descrip
01EEB0: 74 6F 72 20 66 6F 72 20 66 69 6C 65 20 74 6F 20 tor for file to
01EEC0: 62 65 20 63 6C 6F 73 65 64 2E 0D 0A 2A 2A 20 52 be closed...** R
01EED0: 65 74 75 72 6E 73 20 4E 55 4C 4C 20 66 6F 72 20 eturns NULL for
01EEE0: 73 75 63 63 65 73 73 2C 20 6F 74 68 65 72 77 69 success, otherwi
01EEF0: 73 65 20 45 52 52 0D 0A 2A 2F 0D 0A 65 78 74 65 se ERR..*/..exte
01EF00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
01EF10: 1A 00 01 00 02 09 52 E5 1A 00 41 02 00 00 00 02 ......R...A.....
01EF20: 1A 00 46 02 00 00 00 02 1A 00 42 02 00 00 00 02 ..F.......B.....
01EF30: 1A 00 47 02 00 00 00 02 1A 00 43 02 00 00 00 02 ..G.......C.....
01EF40: 1A 00 48 02 00 00 00 02 1A 00 44 02 00 00 00 02 ..H.......D.....
01EF50: 1A 00 49 02 00 00 00 02 1A 00 45 02 00 00 00 02 ..I.......E.....
01EF60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EF70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EF80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EF90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EFA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EFB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EFC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EFD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EFE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EFF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01F000: 20 20 20 72 65 74 75 72 6E 20 28 27 5C 6E 27 29 return ('\n')
01F010: 3B 0D 0A 20 20 20 20 20 20 63 61 73 65 20 4C 46 ;.. case LF
01F020: 3A 20 20 20 20 2F 2A 20 4E 4F 54 45 3A 20 55 63 : /* NOTE: Uc
01F030: 6F 6E 69 6E 28 29 20 6D 61 70 73 20 4C 46 20 2D onin() maps LF -
01F040: 3E 20 43 52 20 2A 2F 0D 0A 20 20 20 20 20 20 7D > CR */.. }
01F050: 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A 23 61 .. }.. }..#a
01F060: 73 6D 0D 0A 67 65 74 63 20 65 71 75 20 20 20 66 sm..getc equ f
01F070: 67 65 74 63 0D 0A 20 20 20 20 20 65 6E 74 72 79 getc.. entry
01F080: 20 67 65 74 63 0D 0A 23 65 6E 64 61 73 6D 0D 0A getc..#endasm..
01F090: 0D 0A 3E 3E 3E 20 46 47 45 54 53 2E 43 20 31 38 ..>>> FGETS.C 18
01F0A0: 31 33 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43 43 13..#define NOCC
01F0B0: 41 52 47 43 20 20 2F 2A 20 6E 6F 20 61 72 67 20 ARGC /* no arg
01F0C0: 63 6F 75 6E 74 20 70 61 73 73 69 6E 67 20 2A 2F count passing */
01F0D0: 0D 0A 23 69 6E 63 6C 75 64 65 20 73 74 64 69 6F ..#include stdio
01F0E0: 2E 68 0D 0A 23 69 6E 63 6C 75 64 65 20 63 6C 69 .h..#include cli
01F0F0: 62 2E 64 65 66 0D 0A 2F 2A 0D 0A 2A 2A 20 47 65 b.def../*..** Ge
01F100: 74 73 20 61 6E 20 65 6E 74 69 72 65 20 73 74 72 ts an entire str
01F110: 69 6E 67 20 28 69 6E 63 6C 75 64 69 6E 67 20 69 ing (including i
01F120: 74 73 20 6E 65 77 6C 69 6E 65 0D 0A 2A 2A 20 74 ts newline..** t
01F130: 65 72 6D 69 6E 61 74 6F 72 29 20 6F 72 20 73 69 erminator) or si
01F140: 7A 65 2D 31 20 63 68 61 72 61 63 74 65 72 73 2C ze-1 characters,
01F150: 20 77 68 69 63 68 65 76 65 72 20 63 6F 6D 65 73 whichever comes
01F160: 0D 0A 2A 2A 20 66 69 72 73 74 2E 20 54 68 65 20 ..** first. The
01F170: 69 6E 70 75 74 20 69 73 20 74 65 72 6D 69 6E 61 input is termina
01F180: 74 65 64 20 62 79 20 61 20 6E 75 6C 6C 20 63 68 ted by a null ch
01F190: 61 72 61 63 74 65 72 2E 0D 0A 2A 2A 20 45 6E 74 aracter...** Ent
01F1A0: 72 79 3A 20 73 74 72 20 20 3D 20 50 6F 69 6E 74 ry: str = Point
01F1B0: 65 72 20 74 6F 20 64 65 73 74 69 6E 61 74 69 6F er to destinatio
01F1C0: 6E 20 62 75 66 66 65 72 2E 0D 0A 2A 2A 20 20 20 n buffer...**
01F1D0: 20 20 20 20 20 73 69 7A 65 20 3D 20 53 69 7A 65 size = Size
01F1E0: 20 6F 66 20 74 68 65 20 64 65 73 74 69 6E 61 74 of the destinat
01F1F0: 69 6F 6E 20 62 75 66 66 65 72 2E 0D 0A 2A 2A 20 ion buffer...**
01F200: 20 64 65 73 63 72 69 70 74 6F 72 20 6F 6E 20 73 descriptor on s
01F210: 75 63 63 65 73 73 2C 20 65 6C 73 65 20 4E 55 4C uccess, else NUL
01F220: 4C 2E 0D 0A 2A 2F 0D 0A 66 6F 70 65 6E 28 66 6E L...*/..fopen(fn
01F230: 2C 20 6D 6F 64 65 29 20 63 68 61 72 20 2A 66 6E , mode) char *fn
01F240: 2C 20 2A 6D 6F 64 65 3B 20 7B 0D 0A 20 20 69 6E , *mode; {.. in
01F250: 74 20 66 64 3B 0D 0A 20 20 66 64 20 3D 20 30 3B t fd;.. fd = 0;
01F260: 20 2F 2A 20 73 6B 69 70 20 73 74 64 69 6E 20 28 /* skip stdin (
01F270: 3D 20 65 72 72 6F 72 20 72 65 74 75 72 6E 29 20 = error return)
01F280: 2A 2F 0D 0A 20 20 77 68 69 6C 65 28 2B 2B 66 64 */.. while(++fd
01F290: 20 3C 20 4D 41 58 46 49 4C 45 53 29 20 7B 0D 0A < MAXFILES) {..
01F2A0: 20 20 20 20 69 66 28 55 6D 6F 64 65 28 66 64 29 if(Umode(fd)
01F2B0: 20 3D 3D 20 4E 55 4C 4C 29 20 7B 0D 0A 20 20 20 == NULL) {..
01F2C0: 20 20 20 69 66 28 55 6F 70 65 6E 28 66 6E 2C 20 if(Uopen(fn,
01F2D0: 6D 6F 64 65 2C 20 66 64 29 21 3D 45 52 52 29 20 mode, fd)!=ERR)
01F2E0: 72 65 74 75 72 6E 20 28 66 64 29 3B 0D 0A 20 20 return (fd);..
01F2F0: 20 20 20 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 break;..
01F300: 20 20 7D 0D 0A 20 20 20 20 7D 0D 0A 20 20 72 65 }.. }.. re
01F310: 74 75 72 6E 20 28 4E 55 4C 4C 29 3B 0D 0A 20 20 turn (NULL);..
01F320: 7D 0D 0A 0D 0A 3E 3E 3E 20 46 50 52 49 4E 54 46 }....>>> FPRINTF
01F330: 2E 43 20 32 32 37 35 0D 0A 23 64 65 66 69 6E 65 .C 2275..#define
01F340: 20 4E 4F 43 43 41 52 47 43 20 0D 0A 2F 2A 0D 0A NOCCARGC ../*..
01F350: 2A 2A 20 59 65 73 2C 20 74 68 61 74 20 69 73 20 ** Yes, that is
01F360: 63 6F 72 72 65 63 74 2E 20 20 41 6C 74 68 6F 75 correct. Althou
01F370: 67 68 20 74 68 65 73 65 20 66 75 6E 63 74 69 6F gh these functio
01F380: 6E 73 20 75 73 65 20 61 6E 0D 0A 2A 2A 20 61 72 ns use an..** ar
01F390: 67 75 6D 65 6E 74 20 63 6F 75 6E 74 2C 20 74 68 gument count, th
01F3A0: 65 79 20 64 6F 20 6E 6F 74 20 63 61 6C 6C 20 66 ey do not call f
01F3B0: 75 6E 63 74 69 6F 6E 73 20 77 68 69 63 68 20 6E unctions which n
01F3C0: 65 65 64 20 6F 6E 65 2E 0D 0A 2A 2F 0D 0A 23 69 eed one...*/..#i
01F3D0: 6E 63 6C 75 64 65 20 73 74 64 69 6F 2E 68 0D 0A nclude stdio.h..
01F3E0: 2F 2A 0D 0A 2A 2A 20 66 70 72 69 6E 74 66 28 66 /*..** fprintf(f
01F3F0: 64 2C 20 63 74 6C 73 74 72 69 6E 67 2C 20 61 72 d, ctlstring, ar
01F400: 20 20 20 20 20 20 20 66 64 20 20 20 3D 20 46 69 fd = Fi
01F410: 6C 65 20 64 65 73 63 72 69 70 74 6F 72 20 6F 66 le descriptor of
01F420: 20 70 65 72 74 69 6E 65 6E 74 20 66 69 6C 65 2E pertinent file.
01F430: 0D 0A 2A 2A 20 52 65 74 75 72 6E 73 20 73 74 72 ..** Returns str
01F440: 20 6F 6E 20 73 75 63 63 65 73 73 2C 20 65 6C 73 on success, els
01F450: 65 20 4E 55 4C 4C 2E 0D 0A 2A 2F 0D 0A 66 67 65 e NULL...*/..fge
01F460: 74 73 28 73 74 72 2C 20 73 69 7A 65 2C 20 66 64 ts(str, size, fd
01F470: 29 20 63 68 61 72 20 2A 73 74 72 3B 20 69 6E 74 ) char *str; int
01F480: 20 73 69 7A 65 2C 20 66 64 3B 20 7B 0D 0A 20 20 size, fd; {..
01F490: 72 65 74 75 72 6E 20 28 55 67 65 74 73 28 73 74 return (Ugets(st
01F4A0: 72 2C 20 73 69 7A 65 2C 20 66 64 2C 20 31 29 29 r, size, fd, 1))
01F4B0: 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A ;.. }..../*..**
01F4C0: 20 47 65 74 73 20 61 6E 20 65 6E 74 69 72 65 20 Gets an entire
01F4D0: 73 74 72 69 6E 67 20 66 72 6F 6D 20 73 74 64 69 string from stdi
01F4E0: 6E 20 28 65 78 63 6C 75 64 69 6E 67 20 69 74 73 n (excluding its
01F4F0: 20 6E 65 77 6C 69 6E 65 0D 0A 2A 2A 20 74 65 72 newline..** ter
01F500: 6D 69 6E 61 74 6F 72 29 20 6F 72 20 73 69 7A 65 minator) or size
01F510: 2D 31 20 63 68 61 72 61 63 74 65 72 73 2C 20 77 -1 characters, w
01F520: 68 69 63 68 65 76 65 72 20 63 6F 6D 65 73 0D 0A hichever comes..
01F530: 2A 2A 20 66 69 72 73 74 2E 20 54 68 65 20 69 6E ** first. The in
01F540: 70 75 74 20 69 73 20 74 65 72 6D 69 6E 61 74 65 put is terminate
01F550: 64 20 62 79 20 61 20 6E 75 6C 6C 20 63 68 61 72 d by a null char
01F560: 61 63 74 65 72 2E 0D 0A 2A 2A 20 54 68 65 20 75 acter...** The u
01F570: 73 65 72 20 62 75 66 66 65 72 20 6D 75 73 74 20 ser buffer must
01F580: 62 65 20 6C 61 72 67 65 20 65 6E 6F 75 67 68 20 be large enough
01F590: 74 6F 20 68 6F 6C 64 20 74 68 65 20 64 61 74 61 to hold the data
01F5A0: 2E 0D 0A 2A 2A 20 45 6E 74 72 79 3A 20 73 74 72 ...** Entry: str
01F5B0: 20 20 3D 20 50 6F 69 6E 74 65 72 20 74 6F 20 64 = Pointer to d
01F5C0: 65 73 74 69 6E 61 74 69 6F 6E 20 62 75 66 66 65 estination buffe
01F5D0: 72 2E 0D 0A 2A 2A 20 52 65 74 75 72 6E 73 20 73 r...** Returns s
01F5E0: 74 72 20 6F 6E 20 73 75 63 63 65 73 73 2C 20 65 tr on success, e
01F5F0: 6C 73 65 20 4E 55 4C 4C 2E 0D 0A 2A 2F 0D 0A 67 lse NULL...*/..g
01F600: 67 2C 20 61 72 67 2C 20 2E 2E 2E 29 20 2D 20 46 g, arg, ...) - F
01F610: 6F 72 6D 61 74 74 65 64 20 70 72 69 6E 74 2E 0D ormatted print..
01F620: 0A 2A 2A 20 4F 70 65 72 61 74 65 73 20 61 73 20 .** Operates as
01F630: 64 65 73 63 72 69 62 65 64 20 62 79 20 4B 65 72 described by Ker
01F640: 6E 69 67 68 61 6E 20 26 20 52 69 74 63 68 69 65 nighan & Ritchie
01F650: 2E 0D 0A 2A 2A 20 62 2C 20 63 2C 20 64 2C 20 6F ...** b, c, d, o
01F660: 2C 20 73 2C 20 75 2C 20 61 6E 64 20 78 20 73 70 , s, u, and x sp
01F670: 65 63 69 66 69 63 61 74 69 6F 6E 73 20 61 72 65 ecifications are
01F680: 20 73 75 70 70 6F 72 74 65 64 2E 0D 0A 2A 2A 20 supported...**
01F690: 4E 6F 74 65 3A 20 62 20 28 62 69 6E 61 72 79 29 Note: b (binary)
01F6A0: 20 69 73 20 61 20 6E 6F 6E 2D 73 74 61 6E 64 61 is a non-standa
01F6B0: 72 64 20 65 78 74 65 6E 73 69 6F 6E 2E 0D 0A 2A rd extension...*
01F6C0: 2F 0D 0A 66 70 72 69 6E 74 66 28 61 72 67 63 29 /..fprintf(argc)
01F6D0: 20 69 6E 74 20 61 72 67 63 3B 20 7B 0D 0A 20 20 int argc; {..
01F6E0: 69 6E 74 20 2A 6E 78 74 61 72 67 3B 0D 0A 20 20 int *nxtarg;..
01F6F0: 6E 78 74 61 72 67 20 3D 20 43 43 41 52 47 43 28 nxtarg = CCARGC(
01F700: 29 20 2B 20 26 61 72 67 63 3B 0D 0A 20 20 72 65 ) + &argc;.. re
01F710: 74 75 72 6E 28 55 70 72 69 6E 74 28 2A 28 2D 2D turn(Uprint(*(--
01F720: 6E 78 74 61 72 67 29 2C 20 2D 2D 6E 78 74 61 72 nxtarg), --nxtar
01F730: 67 29 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D g));.. }..../*.
01F740: 0A 2A 2A 20 70 72 69 6E 74 66 28 63 74 6C 73 74 .** printf(ctlst
01F750: 72 69 6E 67 2C 20 61 72 67 2C 20 61 72 67 2C 20 ring, arg, arg,
01F760: 2E 2E 2E 29 20 2D 20 46 6F 72 6D 61 74 74 65 64 ...) - Formatted
01F770: 20 70 72 69 6E 74 2E 0D 0A 2A 2A 20 4F 70 65 72 print...** Oper
01F780: 61 74 65 73 20 61 73 20 64 65 73 63 72 69 62 65 ates as describe
01F790: 64 20 62 79 20 4B 65 72 6E 69 67 68 61 6E 20 26 d by Kernighan &
01F7A0: 20 52 69 74 63 68 69 65 2E 0D 0A 2A 2A 20 62 2C Ritchie...** b,
01F7B0: 20 63 2C 20 64 2C 20 6F 2C 20 73 2C 20 75 2C 20 c, d, o, s, u,
01F7C0: 61 6E 64 20 78 20 73 70 65 63 69 66 69 63 61 74 and x specificat
01F7D0: 69 6F 6E 73 20 61 72 65 20 73 75 70 70 6F 72 74 ions are support
01F7E0: 65 64 2E 0D 0A 2A 2A 20 4E 6F 74 65 3A 20 62 20 ed...** Note: b
01F7F0: 28 62 69 6E 61 72 79 29 20 69 73 20 61 20 6E 6F (binary) is a no
01F800: 65 74 73 28 73 74 72 29 20 63 68 61 72 20 2A 73 ets(str) char *s
01F810: 74 72 3B 20 7B 0D 0A 20 20 72 65 74 75 72 6E 20 tr; {.. return
01F820: 28 55 67 65 74 73 28 73 74 72 2C 20 33 32 37 36 (Ugets(str, 3276
01F830: 37 2C 20 73 74 64 69 6E 2C 20 30 29 29 3B 0D 0A 7, stdin, 0));..
01F840: 20 20 7D 0D 0A 0D 0A 55 67 65 74 73 28 73 74 72 }....Ugets(str
01F850: 2C 20 73 69 7A 65 2C 20 66 64 2C 20 6E 6C 29 20 , size, fd, nl)
01F860: 63 68 61 72 20 2A 73 74 72 3B 20 69 6E 74 20 73 char *str; int s
01F870: 69 7A 65 2C 20 66 64 2C 20 6E 6C 3B 20 7B 0D 0A ize, fd, nl; {..
01F880: 20 20 69 6E 74 20 62 61 63 6B 75 70 3B 0D 0A 20 int backup;..
01F890: 20 63 68 61 72 20 2A 6E 65 78 74 3B 0D 0A 20 20 char *next;..
01F8A0: 6E 65 78 74 20 3D 20 73 74 72 3B 0D 0A 20 20 77 next = str;.. w
01F8B0: 68 69 6C 65 28 2D 2D 73 69 7A 65 20 3E 20 30 29 hile(--size > 0)
01F8C0: 20 7B 0D 0A 20 20 20 20 73 77 69 74 63 68 20 28 {.. switch (
01F8D0: 2A 6E 65 78 74 20 3D 20 66 67 65 74 63 28 66 64 *next = fgetc(fd
01F8E0: 29 29 20 7B 0D 0A 20 20 20 20 20 20 63 61 73 65 )) {.. case
01F8F0: 20 20 45 4F 46 3A 20 2A 6E 65 78 74 20 3D 20 4E EOF: *next = N
01F900: 55 4C 4C 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 ULL;..
01F910: 20 20 20 20 20 20 20 69 66 28 6E 65 78 74 20 3D if(next =
01F920: 3D 20 73 74 72 29 20 72 65 74 75 72 6E 20 28 4E = str) return (N
01F930: 55 4C 4C 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 ULL);..
01F940: 20 20 20 20 20 20 20 20 72 65 74 75 72 6E 20 28 return (
01F950: 73 74 72 29 3B 0D 0A 20 20 20 20 20 20 63 61 73 str);.. cas
01F960: 65 20 27 5C 6E 27 3A 20 2A 28 6E 65 78 74 20 2B e '\n': *(next +
01F970: 20 6E 6C 29 20 3D 20 4E 55 4C 4C 3B 0D 0A 20 20 nl) = NULL;..
01F980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r
01F990: 65 74 75 72 6E 20 28 73 74 72 29 3B 0D 0A 20 20 eturn (str);..
01F9A0: 20 20 20 20 63 61 73 65 20 20 52 55 42 3A 20 69 case RUB: i
01F9B0: 66 28 6E 65 78 74 20 3E 20 73 74 72 29 20 62 61 f(next > str) ba
01F9C0: 63 6B 75 70 20 3D 20 31 3B 20 65 6C 73 65 20 62 ckup = 1; else b
01F9D0: 61 63 6B 75 70 20 3D 20 30 3B 0D 0A 20 20 20 20 ackup = 0;..
01F9E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 67 6F 74 got
01F9F0: 6F 20 62 61 63 6B 6F 75 74 3B 0D 0A 20 20 20 20 o backout;..
01FA00: 6E 2D 73 74 61 6E 64 61 72 64 20 65 78 74 65 6E n-standard exten
01FA10: 73 69 6F 6E 2E 0D 0A 2A 2F 0D 0A 70 72 69 6E 74 sion...*/..print
01FA20: 66 28 61 72 67 63 29 20 69 6E 74 20 61 72 67 63 f(argc) int argc
01FA30: 3B 20 7B 0D 0A 20 20 72 65 74 75 72 6E 28 55 70 ; {.. return(Up
01FA40: 72 69 6E 74 28 73 74 64 6F 75 74 2C 20 43 43 41 rint(stdout, CCA
01FA50: 52 47 43 28 29 20 2B 20 26 61 72 67 63 20 2D 20 RGC() + &argc -
01FA60: 31 29 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 1));.. }..../*.
01FA70: 0A 2A 2A 20 55 70 72 69 6E 74 28 66 64 2C 20 63 .** Uprint(fd, c
01FA80: 74 6C 73 74 72 69 6E 67 2C 20 61 72 67 2C 20 61 tlstring, arg, a
01FA90: 72 67 2C 20 2E 2E 2E 29 0D 0A 2A 2A 20 43 61 6C rg, ...)..** Cal
01FAA0: 6C 65 64 20 62 79 20 66 70 72 69 6E 74 66 28 29 led by fprintf()
01FAB0: 20 61 6E 64 20 70 72 69 6E 74 66 28 29 2E 0D 0A and printf()...
01FAC0: 2A 2F 0D 0A 55 70 72 69 6E 74 28 66 64 2C 20 6E */..Uprint(fd, n
01FAD0: 78 74 61 72 67 29 20 69 6E 74 20 66 64 2C 20 2A xtarg) int fd, *
01FAE0: 6E 78 74 61 72 67 3B 20 7B 0D 0A 20 20 69 6E 74 nxtarg; {.. int
01FAF0: 20 20 61 72 67 2C 20 6C 65 66 74 2C 20 70 61 64 arg, left, pad
01FB00: 2C 20 63 63 2C 20 6C 65 6E 2C 20 6D 61 78 63 68 , cc, len, maxch
01FB10: 72 2C 20 77 69 64 74 68 3B 0D 0A 20 20 63 68 61 r, width;.. cha
01FB20: 72 20 2A 63 74 6C 2C 20 2A 73 70 74 72 2C 20 73 r *ctl, *sptr, s
01FB30: 74 72 5B 31 37 5D 3B 0D 0A 20 20 63 63 20 3D 20 tr[17];.. cc =
01FB40: 30 3B 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0;
01FB50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01FB60: 20 20 20 20 20 20 20 20 20 20 20 0D 0A 20 20 63 .. c
01FB70: 74 6C 20 3D 20 2A 6E 78 74 61 72 67 2D 2D 3B 20 tl = *nxtarg--;
01FB80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01FB90: 20 20 20 20 20 20 20 20 20 0D 0A 20 20 77 68 69 .. whi
01FBA0: 6C 65 28 2A 63 74 6C 29 20 7B 0D 0A 20 20 20 20 le(*ctl) {..
01FBB0: 69 66 28 2A 63 74 6C 21 3D 27 25 27 29 20 7B 66 if(*ctl!='%') {f
01FBC0: 70 75 74 63 28 2A 63 74 6C 2B 2B 2C 20 66 64 29 putc(*ctl++, fd)
01FBD0: 3B 20 2B 2B 63 63 3B 20 63 6F 6E 74 69 6E 75 65 ; ++cc; continue
01FBE0: 3B 7D 0D 0A 20 20 20 20 65 6C 73 65 20 2B 2B 63 ;}.. else ++c
01FBF0: 74 6C 3B 0D 0A 20 20 20 20 69 66 28 2A 63 74 6C tl;.. if(*ctl
01FC00: 20 20 63 61 73 65 20 57 49 50 45 3A 20 62 61 63 case WIPE: bac
01FC10: 6B 75 70 20 3D 20 6E 65 78 74 20 2D 20 73 74 72 kup = next - str
01FC20: 3B 0D 0A 20 20 20 20 20 20 20 20 62 61 63 6B 6F ;.. backo
01FC30: 75 74 3A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ut:..
01FC40: 20 20 20 20 20 20 69 66 28 69 73 63 6F 6E 73 28 if(iscons(
01FC50: 66 64 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 fd)) {..
01FC60: 20 20 20 20 20 20 20 20 20 20 20 66 70 75 74 73 fputs
01FC70: 28 22 5C 62 20 5C 62 5C 62 20 5C 62 22 2C 20 73 ("\b \b\b \b", s
01FC80: 74 64 65 72 72 29 3B 0D 0A 20 20 20 20 20 20 20 tderr);..
01FC90: 20 20 20 20 20 20 20 20 20 20 20 20 2B 2B 73 69 ++si
01FCA0: 7A 65 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ze;..
01FCB0: 20 20 20 20 20 20 20 20 77 68 69 6C 65 28 62 61 while(ba
01FCC0: 63 6B 75 70 2D 2D 29 20 7B 0D 0A 20 20 20 20 20 ckup--) {..
01FCD0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01FCE0: 66 70 75 74 73 28 22 5C 62 20 5C 62 22 2C 20 73 fputs("\b \b", s
01FCF0: 74 64 65 72 72 29 3B 0D 0A 20 20 20 20 20 20 20 tderr);..
01FD00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
01FD10: 28 2A 2D 2D 6E 65 78 74 20 3C 20 33 32 29 20 66 (*--next < 32) f
01FD20: 70 75 74 73 28 22 5C 62 20 5C 62 22 2C 20 73 74 puts("\b \b", st
01FD30: 64 65 72 72 29 3B 0D 0A 20 20 20 20 20 20 20 20 derr);..
01FD40: 20 20 20 20 20 20 20 20 20 20 20 20 20 2B 2B 73 ++s
01FD50: 69 7A 65 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 ize;..
01FD60: 20 20 20 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 }..
01FD70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01FD80: 20 63 6F 6E 74 69 6E 75 65 3B 0D 0A 20 20 20 20 continue;..
01FD90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7D }
01FDA0: 0D 0A 20 20 20 20 20 20 20 20 64 65 66 61 75 6C .. defaul
01FDB0: 74 3A 20 2B 2B 6E 65 78 74 3B 0D 0A 20 20 20 20 t: ++next;..
01FDC0: 20 20 7D 0D 0A 20 20 20 20 7D 0D 0A 20 20 2A 6E }.. }.. *n
01FDD0: 65 78 74 20 3D 20 4E 55 4C 4C 3B 0D 0A 20 20 72 ext = NULL;.. r
01FDE0: 65 74 75 72 6E 20 28 73 74 72 29 3B 0D 0A 20 20 eturn (str);..
01FDF0: 7D 0D 0A 0D 0A 3E 3E 3E 20 46 4F 50 45 4E 2E 43 }....>>> FOPEN.C
01FE00: 3D 3D 27 25 27 29 20 7B 66 70 75 74 63 28 2A 63 =='%') {fputc(*c
01FE10: 74 6C 2B 2B 2C 20 66 64 29 3B 20 2B 2B 63 63 3B tl++, fd); ++cc;
01FE20: 20 63 6F 6E 74 69 6E 75 65 3B 7D 0D 0A 20 20 20 continue;}..
01FE30: 20 69 66 28 2A 63 74 6C 3D 3D 27 2D 27 29 20 7B if(*ctl=='-') {
01FE40: 6C 65 66 74 20 3D 20 31 3B 20 2B 2B 63 74 6C 3B left = 1; ++ctl;
01FE50: 7D 20 65 6C 73 65 20 6C 65 66 74 20 3D 20 30 3B } else left = 0;
01FE60: 20 20 20 20 20 20 20 0D 0A 20 20 20 20 69 66 28 .. if(
01FE70: 2A 63 74 6C 3D 3D 27 30 27 29 20 70 61 64 20 3D *ctl=='0') pad =
01FE80: 20 27 30 27 3B 20 65 6C 73 65 20 70 61 64 20 3D '0'; else pad =
01FE90: 20 27 20 27 3B 20 20 20 20 20 20 20 20 20 20 20 ' ';
01FEA0: 0D 0A 20 20 20 20 69 66 28 69 73 64 69 67 69 74 .. if(isdigit
01FEB0: 28 2A 63 74 6C 29 29 20 7B 0D 0A 20 20 20 20 20 (*ctl)) {..
01FEC0: 20 77 69 64 74 68 20 3D 20 61 74 6F 69 28 63 74 width = atoi(ct
01FED0: 6C 2B 2B 29 3B 0D 0A 20 20 20 20 20 20 77 68 69 l++);.. whi
01FEE0: 6C 65 28 69 73 64 69 67 69 74 28 2A 63 74 6C 29 le(isdigit(*ctl)
01FEF0: 29 20 2B 2B 63 74 6C 3B 0D 0A 20 20 20 20 20 20 ) ++ctl;..
01FF00: 7D 0D 0A 20 20 20 20 65 6C 73 65 20 77 69 64 74 }.. else widt
01FF10: 68 20 3D 20 30 3B 0D 0A 20 20 20 20 69 66 28 2A h = 0;.. if(*
01FF20: 63 74 6C 3D 3D 27 2E 27 29 20 7B 20 20 20 20 20 ctl=='.') {
01FF30: 20 20 20 20 20 20 20 0D 0A 20 20 20 20 20 20 6D .. m
01FF40: 61 78 63 68 72 20 3D 20 61 74 6F 69 28 2B 2B 63 axchr = atoi(++c
01FF50: 74 6C 29 3B 0D 0A 20 20 20 20 20 20 77 68 69 6C tl);.. whil
01FF60: 65 28 69 73 64 69 67 69 74 28 2A 63 74 6C 29 29 e(isdigit(*ctl))
01FF70: 20 2B 2B 63 74 6C 3B 0D 0A 20 20 20 20 20 20 7D ++ctl;.. }
01FF80: 0D 0A 20 20 20 20 65 6C 73 65 20 6D 61 78 63 68 .. else maxch
01FF90: 72 20 3D 20 30 3B 0D 0A 20 20 20 20 61 72 67 20 r = 0;.. arg
01FFA0: 3D 20 2A 6E 78 74 61 72 67 2D 2D 3B 0D 0A 20 20 = *nxtarg--;..
01FFB0: 20 20 73 70 74 72 20 3D 20 73 74 72 3B 0D 0A 20 sptr = str;..
01FFC0: 20 20 20 73 77 69 74 63 68 28 2A 63 74 6C 2B 2B switch(*ctl++
01FFD0: 29 20 7B 0D 0A 20 20 20 20 20 20 63 61 73 65 20 ) {.. case
01FFE0: 27 63 27 3A 20 73 74 72 5B 30 5D 20 3D 20 61 72 'c': str[0] = ar
01FFF0: 67 3B 20 73 74 72 5B 31 5D 20 3D 20 4E 55 4C 4C g; str[1] = NULL
020000: 20 37 37 31 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 771..#define NO
020010: 43 43 41 52 47 43 20 20 2F 2A 20 6E 6F 20 61 72 CCARGC /* no ar
020020: 67 20 63 6F 75 6E 74 20 70 61 73 73 69 6E 67 20 g count passing
020030: 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 20 73 74 64 */..#include std
020040: 69 6F 2E 68 0D 0A 23 69 6E 63 6C 75 64 65 20 63 io.h..#include c
020050: 6C 69 62 2E 64 65 66 0D 0A 2F 2A 0D 0A 2A 2A 20 lib.def../*..**
020060: 4F 70 65 6E 20 66 69 6C 65 20 69 6E 64 69 63 61 Open file indica
020070: 74 65 64 20 62 79 20 66 6E 2E 0D 0A 2A 2A 20 45 ted by fn...** E
020080: 6E 74 72 79 3A 20 66 6E 20 20 20 3D 20 4E 75 6C ntry: fn = Nul
020090: 6C 2D 74 65 72 6D 69 6E 61 74 65 64 20 43 50 2F l-terminated CP/
0200A0: 4D 20 66 69 6C 65 20 6E 61 6D 65 2E 0D 0A 2A 2A M file name...**
0200B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4D M
0200C0: 61 79 20 62 65 20 70 72 65 66 69 78 65 64 20 62 ay be prefixed b
0200D0: 79 20 6C 65 74 74 65 72 20 6F 66 20 64 69 72 76 y letter of dirv
0200E0: 65 2E 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 20 e...**
0200F0: 20 20 20 20 20 4D 61 79 20 62 65 20 6A 75 73 74 May be just
020100: 20 43 4F 4E 3A 2C 20 52 44 52 3A 2C 20 50 55 4E CON:, RDR:, PUN
020110: 3A 2C 20 6F 72 20 4C 53 54 3A 2E 0D 0A 2A 2A 20 :, or LST:...**
020120: 20 20 20 20 20 20 20 6D 6F 64 65 20 3D 20 22 61 mode = "a
020130: 22 20 20 2D 20 61 70 70 65 6E 64 0D 0A 2A 2A 20 " - append..**
020140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 72 "r
020150: 22 20 20 2D 20 72 65 61 64 0D 0A 2A 2A 20 20 20 " - read..**
020160: 20 20 20 20 20 20 20 20 20 20 20 20 22 77 22 20 "w"
020170: 20 2D 20 77 72 69 74 65 0D 0A 2A 2A 20 20 20 20 - write..**
020180: 20 20 20 20 20 20 20 20 20 20 20 22 61 2B 22 20 "a+"
020190: 2D 20 61 70 70 65 6E 64 20 75 70 64 61 74 65 0D - append update.
0201A0: 0A 2A 2A 20 20 20 20 20 20 20 20 20 20 20 20 20 .**
0201B0: 20 20 22 72 2B 22 20 2D 20 72 65 61 64 20 20 20 "r+" - read
0201C0: 75 70 64 61 74 65 0D 0A 2A 2A 20 20 20 20 20 20 update..**
0201D0: 20 20 20 20 20 20 20 20 20 22 77 2B 22 20 2D 20 "w+" -
0201E0: 77 72 69 74 65 20 20 75 70 64 61 74 65 0D 0A 2A write update..*
0201F0: 2A 20 52 65 74 75 72 6E 73 20 61 20 66 69 6C 65 * Returns a file
020200: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
020210: 1B 00 01 00 02 09 52 E5 1B 00 41 02 00 00 00 02 ......R...A.....
020220: 1B 00 46 02 00 00 00 02 1B 00 42 02 00 00 00 02 ..F.......B.....
020230: 1B 00 47 02 00 00 00 02 1B 00 43 02 00 00 00 02 ..G.......C.....
020240: 1B 00 48 02 00 00 00 02 1B 00 44 02 00 00 00 02 ..H.......D.....
020250: 1B 00 49 02 00 00 00 02 1B 00 45 02 00 00 00 02 ..I.......E.....
020260: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
020270: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
020280: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
020290: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0202A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0202B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0202C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0202D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0202E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0202F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
020300: 3B 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 20 ; break;..
020310: 63 61 73 65 20 27 73 27 3A 20 73 70 74 72 20 3D case 's': sptr =
020320: 20 61 72 67 3B 20 20 20 20 20 20 20 20 62 72 65 arg; bre
020330: 61 6B 3B 0D 0A 20 20 20 20 20 20 63 61 73 65 20 ak;.. case
020340: 27 64 27 3A 20 69 74 6F 61 28 61 72 67 2C 73 74 'd': itoa(arg,st
020350: 72 29 3B 20 20 20 20 20 62 72 65 61 6B 3B 0D 0A r); break;..
020360: 20 20 20 20 20 20 63 61 73 65 20 27 62 27 3A 20 case 'b':
020370: 69 74 6F 61 62 28 61 72 67 2C 73 74 72 2C 32 29 itoab(arg,str,2)
020380: 3B 20 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 ; break;..
020390: 20 63 61 73 65 20 27 6F 27 3A 20 69 74 6F 61 62 case 'o': itoab
0203A0: 28 61 72 67 2C 73 74 72 2C 38 29 3B 20 20 62 72 (arg,str,8); br
0203B0: 65 61 6B 3B 0D 0A 20 20 20 20 20 20 63 61 73 65 eak;.. case
0203C0: 20 27 75 27 3A 20 69 74 6F 61 62 28 61 72 67 2C 'u': itoab(arg,
0203D0: 73 74 72 2C 31 30 29 3B 20 62 72 65 61 6B 3B 0D str,10); break;.
0203E0: 0A 20 20 20 20 20 20 63 61 73 65 20 27 78 27 3A . case 'x':
0203F0: 20 69 74 6F 61 62 28 61 72 67 2C 73 74 72 2C 31 itoab(arg,str,1
020400: 36 29 3B 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 6); break;..
020410: 20 20 64 65 66 61 75 6C 74 3A 20 20 72 65 74 75 default: retu
020420: 72 6E 20 28 63 63 29 3B 0D 0A 20 20 20 20 20 20 rn (cc);..
020430: 7D 0D 0A 20 20 20 20 6C 65 6E 20 3D 20 73 74 72 }.. len = str
020440: 6C 65 6E 28 73 70 74 72 29 3B 0D 0A 20 20 20 20 len(sptr);..
020450: 69 66 28 6D 61 78 63 68 72 20 26 26 20 6D 61 78 if(maxchr && max
020460: 63 68 72 3C 6C 65 6E 29 20 6C 65 6E 20 3D 20 6D chr<len) len = m
020470: 61 78 63 68 72 3B 0D 0A 20 20 20 20 69 66 28 77 axchr;.. if(w
020480: 69 64 74 68 3E 6C 65 6E 29 20 77 69 64 74 68 20 idth>len) width
020490: 3D 20 77 69 64 74 68 20 2D 20 6C 65 6E 3B 20 65 = width - len; e
0204A0: 6C 73 65 20 77 69 64 74 68 20 3D 20 30 3B 20 0D lse width = 0; .
0204B0: 0A 20 20 20 20 69 66 28 21 6C 65 66 74 29 20 77 . if(!left) w
0204C0: 68 69 6C 65 28 77 69 64 74 68 2D 2D 29 20 7B 66 hile(width--) {f
0204D0: 70 75 74 63 28 70 61 64 2C 66 64 29 3B 20 2B 2B putc(pad,fd); ++
0204E0: 63 63 3B 7D 0D 0A 20 20 20 20 77 68 69 6C 65 28 cc;}.. while(
0204F0: 6C 65 6E 2D 2D 29 20 7B 66 70 75 74 63 28 2A 73 len--) {fputc(*s
020500: 66 69 6E 65 20 4E 4F 43 43 41 52 47 43 20 20 2F fine NOCCARGC /
020510: 2A 20 6E 6F 20 61 72 67 75 6D 65 6E 74 20 63 6F * no argument co
020520: 75 6E 74 20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A unt passing */..
020530: 65 78 74 65 72 6E 20 63 68 61 72 20 2A 55 6D 65 extern char *Ume
020540: 6D 70 74 72 3B 0D 0A 2F 2A 0D 0A 2A 2A 20 66 72 mptr;../*..** fr
020550: 65 65 28 70 74 72 29 20 2D 20 46 72 65 65 20 70 ee(ptr) - Free p
020560: 72 65 76 69 6F 75 73 6C 79 20 61 6C 6C 6F 63 61 reviously alloca
020570: 74 65 64 20 6D 65 6D 6F 72 79 20 62 6C 6F 63 6B ted memory block
020580: 2E 0D 0A 2A 2A 20 4D 65 6D 6F 72 79 20 6D 75 73 ...** Memory mus
020590: 74 20 62 65 20 66 72 65 65 64 20 69 6E 20 74 68 t be freed in th
0205A0: 65 20 72 65 76 65 72 73 65 20 6F 72 64 65 72 20 e reverse order
0205B0: 66 72 6F 6D 20 77 68 69 63 68 0D 0A 2A 2A 20 69 from which..** i
0205C0: 74 20 77 61 73 20 61 6C 6C 6F 63 61 74 65 64 2E t was allocated.
0205D0: 0D 0A 2A 2A 20 70 74 72 20 20 20 20 3D 20 56 61 ..** ptr = Va
0205E0: 6C 75 65 20 72 65 74 75 72 6E 65 64 20 62 79 20 lue returned by
0205F0: 63 61 6C 6C 6F 63 28 29 20 6F 72 20 6D 61 6C 6C calloc() or mall
020600: 6F 63 28 29 2E 0D 0A 2A 2A 20 52 65 74 75 72 6E oc()...** Return
020610: 73 20 70 74 72 20 69 66 20 73 75 63 63 65 73 73 s ptr if success
020620: 66 75 6C 20 6F 72 20 4E 55 4C 4C 20 6F 74 68 65 ful or NULL othe
020630: 72 77 69 73 65 2E 0D 0A 2A 2F 0D 0A 66 72 65 65 rwise...*/..free
020640: 28 70 74 72 29 20 63 68 61 72 20 2A 70 74 72 3B (ptr) char *ptr;
020650: 20 7B 0D 0A 20 20 20 72 65 74 75 72 6E 20 28 55 {.. return (U
020660: 6D 65 6D 70 74 72 20 3D 20 70 74 72 29 3B 0D 0A memptr = ptr);..
020670: 20 20 20 7D 0D 0A 23 61 73 6D 0D 0A 63 66 72 65 }..#asm..cfre
020680: 65 20 20 65 71 75 20 20 20 20 66 72 65 65 0D 0A e equ free..
020690: 20 20 20 20 20 20 20 65 6E 74 72 79 20 20 63 66 entry cf
0206A0: 72 65 65 0D 0A 23 65 6E 64 61 73 6D 0D 0A 3E 3E ree..#endasm..>>
0206B0: 3E 20 46 52 45 4F 50 45 4E 2E 43 20 37 32 39 0D > FREOPEN.C 729.
0206C0: 0A 23 64 65 66 69 6E 65 20 4E 4F 43 43 41 52 47 .#define NOCCARG
0206D0: 43 20 20 2F 2A 20 6E 6F 20 61 72 67 75 6D 65 6E C /* no argumen
0206E0: 74 20 63 6F 75 6E 74 20 70 61 73 73 69 6E 67 20 t count passing
0206F0: 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 20 73 74 64 */..#include std
020700: 70 74 72 2B 2B 2C 66 64 29 3B 20 2B 2B 63 63 3B ptr++,fd); ++cc;
020710: 20 7D 0D 0A 20 20 20 20 69 66 28 6C 65 66 74 29 }.. if(left)
020720: 20 77 68 69 6C 65 28 77 69 64 74 68 2D 2D 29 20 while(width--)
020730: 7B 66 70 75 74 63 28 70 61 64 2C 66 64 29 3B 20 {fputc(pad,fd);
020740: 2B 2B 63 63 3B 7D 20 20 0D 0A 20 20 20 20 7D 0D ++cc;} .. }.
020750: 0A 20 20 72 65 74 75 72 6E 28 63 63 29 3B 0D 0A . return(cc);..
020760: 20 20 7D 0D 0A 0D 0A 3E 3E 3E 20 46 50 55 54 43 }....>>> FPUTC
020770: 2E 43 20 35 37 34 0D 0A 23 64 65 66 69 6E 65 20 .C 574..#define
020780: 4E 4F 43 43 41 52 47 43 20 20 2F 2A 20 6E 6F 20 NOCCARGC /* no
020790: 61 72 67 20 63 6F 75 6E 74 20 70 61 73 73 69 6E arg count passin
0207A0: 67 20 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 20 73 g */..#include s
0207B0: 74 64 69 6F 2E 68 0D 0A 23 69 6E 63 6C 75 64 65 tdio.h..#include
0207C0: 20 63 6C 69 62 2E 64 65 66 0D 0A 65 78 74 65 72 clib.def..exter
0207D0: 6E 20 69 6E 74 20 55 73 74 61 74 75 73 5B 5D 3B n int Ustatus[];
0207E0: 0D 0A 2F 2A 0D 0A 2A 2A 20 43 68 61 72 61 63 74 ../*..** Charact
0207F0: 65 72 2D 73 74 72 65 61 6D 20 6F 75 74 70 75 74 er-stream output
020800: 20 6F 66 20 61 20 63 68 61 72 61 63 74 65 72 20 of a character
020810: 74 6F 20 66 64 2E 0D 0A 2A 2A 20 45 6E 74 72 79 to fd...** Entry
020820: 3A 20 63 68 20 3D 20 43 68 61 72 61 63 74 65 72 : ch = Character
020830: 20 74 6F 20 77 72 69 74 65 2E 0D 0A 2A 2A 20 20 to write...**
020840: 20 20 20 20 20 20 66 64 20 3D 20 46 69 6C 65 20 fd = File
020850: 64 65 73 63 72 69 70 74 6F 72 20 6F 66 20 70 65 descriptor of pe
020860: 72 69 6E 65 6E 74 20 66 69 6C 65 2E 0D 0A 2A 2A rinent file...**
020870: 20 52 65 74 75 72 6E 73 20 63 68 61 72 61 63 74 Returns charact
020880: 65 72 20 77 72 69 74 74 65 6E 20 6F 6E 20 73 75 er written on su
020890: 63 63 65 73 73 2C 20 65 6C 73 65 20 45 4F 46 2E ccess, else EOF.
0208A0: 0D 0A 2A 2F 0D 0A 66 70 75 74 63 28 63 68 2C 20 ..*/..fputc(ch,
0208B0: 66 64 29 20 69 6E 74 20 63 68 2C 20 66 64 3B 20 fd) int ch, fd;
0208C0: 7B 0D 0A 20 20 73 77 69 74 63 68 28 63 68 29 20 {.. switch(ch)
0208D0: 7B 0D 0A 20 20 20 20 63 61 73 65 20 45 4F 46 3A {.. case EOF:
0208E0: 20 20 55 77 72 69 74 65 28 43 50 4D 45 4F 46 2C Uwrite(CPMEOF,
0208F0: 20 66 64 29 3B 20 62 72 65 61 6B 3B 0D 0A 20 20 fd); break;..
020900: 69 6F 2E 68 0D 0A 2F 2A 0D 0A 2A 2A 20 43 6C 6F io.h../*..** Clo
020910: 73 65 20 70 72 65 76 69 6F 75 73 6C 79 20 6F 70 se previously op
020920: 65 6E 65 64 20 66 64 20 61 6E 64 20 72 65 6F 70 ened fd and reop
020930: 65 6E 20 69 74 2E 20 0D 0A 2A 2A 20 45 6E 74 72 en it. ..** Entr
020940: 79 3A 20 66 6E 20 20 20 3D 20 4E 75 6C 6C 2D 74 y: fn = Null-t
020950: 65 72 6D 69 6E 61 74 65 64 20 43 50 2F 4D 20 66 erminated CP/M f
020960: 69 6C 65 20 6E 61 6D 65 2E 0D 0A 2A 2A 20 20 20 ile name...**
020970: 20 20 20 20 20 20 20 20 20 20 20 20 4D 61 79 20 May
020980: 62 65 20 70 72 65 66 69 78 65 64 20 62 79 20 6C be prefixed by l
020990: 65 74 74 65 72 20 6F 66 20 64 72 69 76 65 2E 0D etter of drive..
0209A0: 0A 2A 2A 20 20 20 20 20 20 20 20 20 20 20 20 20 .**
0209B0: 20 20 4D 61 79 20 62 65 20 6A 75 73 74 20 43 4F May be just CO
0209C0: 4E 3A 2C 20 52 44 52 3A 2C 20 50 55 4E 3A 2C 20 N:, RDR:, PUN:,
0209D0: 6F 72 20 4C 53 54 3A 2E 0D 0A 2A 2A 20 20 20 20 or LST:...**
0209E0: 20 20 20 20 6D 6F 64 65 20 3D 20 22 61 22 20 20 mode = "a"
0209F0: 2D 20 61 70 70 65 6E 64 0D 0A 2A 2A 20 20 20 20 - append..**
020A00: 20 20 20 20 20 20 20 20 20 20 20 22 72 22 20 20 "r"
020A10: 2D 20 72 65 61 64 0D 0A 2A 2A 20 20 20 20 20 20 - read..**
020A20: 20 20 20 20 20 20 20 20 20 22 77 22 20 20 2D 20 "w" -
020A30: 77 72 69 74 65 0D 0A 2A 2A 20 20 20 20 20 20 20 write..**
020A40: 20 20 20 20 20 20 20 20 22 61 2B 22 20 2D 20 61 "a+" - a
020A50: 70 70 65 6E 64 20 75 70 64 61 74 65 0D 0A 2A 2A ppend update..**
020A60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 "
020A70: 72 2B 22 20 2D 20 72 65 61 64 20 20 20 75 70 64 r+" - read upd
020A80: 61 74 65 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 ate..**
020A90: 20 20 20 20 20 20 22 77 2B 22 20 2D 20 77 72 69 "w+" - wri
020AA0: 74 65 20 20 75 70 64 61 74 65 0D 0A 2A 2A 20 20 te update..**
020AB0: 20 20 20 20 20 20 66 64 20 20 20 3D 20 46 69 6C fd = Fil
020AC0: 65 20 64 65 73 63 72 69 70 74 6F 72 20 6F 66 20 e descriptor of
020AD0: 70 65 72 74 69 6E 65 6E 74 20 66 69 6C 65 2E 0D pertinent file..
020AE0: 0A 2A 2A 20 52 65 74 75 72 6E 73 20 74 68 65 20 .** Returns the
020AF0: 6F 72 69 67 69 6E 61 6C 20 66 64 20 6F 6E 20 73 original fd on s
020B00: 20 20 63 61 73 65 20 27 5C 6E 27 3A 20 55 77 72 case '\n': Uwr
020B10: 69 74 65 28 43 52 2C 20 66 64 29 3B 20 55 77 72 ite(CR, fd); Uwr
020B20: 69 74 65 28 4C 46 2C 20 66 64 29 3B 20 62 72 65 ite(LF, fd); bre
020B30: 61 6B 3B 0D 0A 20 20 20 20 64 65 66 61 75 6C 74 ak;.. default
020B40: 3A 20 20 20 55 77 72 69 74 65 28 63 68 2C 20 66 : Uwrite(ch, f
020B50: 64 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 69 66 d);.. }.. if
020B60: 28 55 73 74 61 74 75 73 5B 66 64 5D 20 26 20 45 (Ustatus[fd] & E
020B70: 52 52 42 49 54 29 20 72 65 74 75 72 6E 20 28 45 RRBIT) return (E
020B80: 4F 46 29 3B 0D 0A 20 20 72 65 74 75 72 6E 20 28 OF);.. return (
020B90: 63 68 29 3B 0D 0A 20 20 7D 0D 0A 23 61 73 6D 0D ch);.. }..#asm.
020BA0: 0A 70 75 74 63 20 65 71 75 20 20 20 66 70 75 74 .putc equ fput
020BB0: 63 0D 0A 20 20 20 20 20 65 6E 74 72 79 20 70 75 c.. entry pu
020BC0: 74 63 0D 0A 23 65 6E 64 61 73 6D 0D 0A 3E 3E 3E tc..#endasm..>>>
020BD0: 20 46 50 55 54 53 2E 43 20 33 30 36 0D 0A 23 64 FPUTS.C 306..#d
020BE0: 65 66 69 6E 65 20 4E 4F 43 43 41 52 47 43 20 20 efine NOCCARGC
020BF0: 2F 2A 20 6E 6F 20 61 72 67 20 63 6F 75 6E 74 20 /* no arg count
020C00: 70 61 73 73 69 6E 67 20 2A 2F 0D 0A 23 69 6E 63 passing */..#inc
020C10: 6C 75 64 65 20 73 74 64 69 6F 2E 68 0D 0A 23 69 lude stdio.h..#i
020C20: 6E 63 6C 75 64 65 20 63 6C 69 62 2E 64 65 66 0D nclude clib.def.
020C30: 0A 2F 2A 0D 0A 2A 2A 20 57 72 69 74 65 20 61 20 ./*..** Write a
020C40: 73 74 72 69 6E 67 20 74 6F 20 66 64 2E 20 0D 0A string to fd. ..
020C50: 2A 2A 20 45 6E 74 72 79 3A 20 73 74 72 69 6E 67 ** Entry: string
020C60: 20 3D 20 50 6F 69 6E 74 65 72 20 74 6F 20 6E 75 = Pointer to nu
020C70: 6C 6C 2D 74 65 72 6D 69 6E 61 74 65 64 20 73 74 ll-terminated st
020C80: 72 69 6E 67 2E 0D 0A 2A 2A 20 20 20 20 20 20 20 ring...**
020C90: 20 66 64 20 20 20 20 20 3D 20 46 69 6C 65 20 64 fd = File d
020CA0: 65 73 63 72 69 70 74 6F 72 20 6F 66 20 70 65 72 escriptor of per
020CB0: 74 69 6E 65 6E 74 20 66 69 6C 65 2E 0D 0A 2A 2F tinent file...*/
020CC0: 0D 0A 66 70 75 74 73 28 73 74 72 69 6E 67 2C 66 ..fputs(string,f
020CD0: 64 29 20 63 68 61 72 20 2A 73 74 72 69 6E 67 3B d) char *string;
020CE0: 20 69 6E 74 20 66 64 3B 20 7B 0D 0A 20 20 77 68 int fd; {.. wh
020CF0: 69 6C 65 28 2A 73 74 72 69 6E 67 29 20 66 70 75 ile(*string) fpu
020D00: 75 63 63 65 73 73 2C 20 65 6C 73 65 20 4E 55 4C uccess, else NUL
020D10: 4C 2E 0D 0A 2A 2F 0D 0A 66 72 65 6F 70 65 6E 28 L...*/..freopen(
020D20: 66 6E 2C 20 6D 6F 64 65 2C 20 66 64 29 20 63 68 fn, mode, fd) ch
020D30: 61 72 20 2A 66 6E 2C 20 2A 6D 6F 64 65 3B 20 69 ar *fn, *mode; i
020D40: 6E 74 20 66 64 3B 20 7B 0D 0A 20 20 69 66 28 66 nt fd; {.. if(f
020D50: 63 6C 6F 73 65 28 66 64 29 29 20 72 65 74 75 72 close(fd)) retur
020D60: 6E 20 28 4E 55 4C 4C 29 3B 0D 0A 20 20 69 66 28 n (NULL);.. if(
020D70: 55 6F 70 65 6E 28 66 6E 2C 20 6D 6F 64 65 2C 20 Uopen(fn, mode,
020D80: 66 64 29 3D 3D 45 52 52 29 20 72 65 74 75 72 6E fd)==ERR) return
020D90: 20 28 4E 55 4C 4C 29 3B 0D 0A 20 20 72 65 74 75 (NULL);.. retu
020DA0: 72 6E 20 28 66 64 29 3B 0D 0A 20 20 7D 0D 0A 3E rn (fd);.. }..>
020DB0: 3E 3E 20 46 53 43 41 4E 46 2E 43 20 32 36 38 35 >> FSCANF.C 2685
020DC0: 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43 43 41 52 ..#define NOCCAR
020DD0: 47 43 20 20 2F 2A 20 6E 6F 20 61 72 67 75 6D 65 GC /* no argume
020DE0: 6E 74 20 63 6F 75 6E 74 20 70 61 73 73 69 6E 67 nt count passing
020DF0: 20 2A 2F 0D 0A 2F 2A 0D 0A 2A 2A 20 59 65 73 2C */../*..** Yes,
020E00: 20 74 68 61 74 20 69 73 20 63 6F 72 72 65 63 74 that is correct
020E10: 2E 20 20 41 6C 74 68 6F 75 67 68 20 74 68 65 73 . Although thes
020E20: 65 20 66 75 6E 63 74 69 6F 6E 73 20 75 73 65 20 e functions use
020E30: 61 6E 0D 0A 2A 2A 20 61 72 67 75 6D 65 6E 74 20 an..** argument
020E40: 63 6F 75 6E 74 2C 20 74 68 65 79 20 64 6F 20 6E count, they do n
020E50: 6F 74 20 63 61 6C 6C 20 66 75 6E 63 74 69 6F 6E ot call function
020E60: 73 20 77 68 69 63 68 20 6E 65 65 64 20 6F 6E 65 s which need one
020E70: 2E 0D 0A 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 20 ...*/..#include
020E80: 73 74 64 69 6F 2E 68 0D 0A 2F 2A 0D 0A 2A 2A 20 stdio.h../*..**
020E90: 66 73 63 61 6E 66 28 66 64 2C 20 63 74 6C 73 74 fscanf(fd, ctlst
020EA0: 72 69 6E 67 2C 20 61 72 67 2C 20 61 72 67 2C 20 ring, arg, arg,
020EB0: 2E 2E 2E 29 20 2D 20 46 6F 72 6D 61 74 74 65 64 ...) - Formatted
020EC0: 20 72 65 61 64 2E 0D 0A 2A 2A 20 4F 70 65 72 61 read...** Opera
020ED0: 74 65 73 20 61 73 20 64 65 73 63 72 69 62 65 64 tes as described
020EE0: 20 62 79 20 4B 65 72 6E 69 67 68 61 6E 20 26 20 by Kernighan &
020EF0: 52 69 74 63 68 69 65 2E 0D 0A 2A 2A 20 62 2C 20 Ritchie...** b,
020F00: 74 63 28 2A 73 74 72 69 6E 67 2B 2B 2C 20 66 64 tc(*string++, fd
020F10: 29 20 3B 0D 0A 20 20 7D 0D 0A 0D 0A 3E 3E 3E 20 ) ;.. }....>>>
020F20: 46 52 45 41 44 2E 43 20 39 32 36 0D 0A 23 64 65 FREAD.C 926..#de
020F30: 66 69 6E 65 20 4E 4F 43 43 41 52 47 43 20 20 2F fine NOCCARGC /
020F40: 2A 20 6E 6F 20 61 72 67 75 6D 65 6E 74 20 63 6F * no argument co
020F50: 75 6E 74 20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A unt passing */..
020F60: 23 69 6E 63 6C 75 64 65 20 63 6C 69 62 2E 64 65 #include clib.de
020F70: 66 0D 0A 65 78 74 65 72 6E 20 69 6E 74 20 55 73 f..extern int Us
020F80: 74 61 74 75 73 5B 5D 3B 0D 0A 2F 2A 0D 0A 2A 2A tatus[];../*..**
020F90: 20 49 74 65 6D 2D 73 74 72 65 61 6D 20 72 65 61 Item-stream rea
020FA0: 64 20 66 72 6F 6D 20 66 64 2E 0D 0A 2A 2A 20 45 d from fd...** E
020FB0: 6E 74 72 79 3A 20 62 75 66 20 3D 20 61 64 64 72 ntry: buf = addr
020FC0: 65 73 73 20 6F 66 20 74 61 72 67 65 74 20 62 75 ess of target bu
020FD0: 66 66 65 72 0D 0A 2A 2A 20 20 20 20 20 20 20 20 ffer..**
020FE0: 20 73 7A 20 3D 20 73 69 7A 65 20 6F 66 20 69 74 sz = size of it
020FF0: 65 6D 73 20 69 6E 20 62 79 74 65 73 0D 0A 2A 2A ems in bytes..**
021000: 20 20 20 20 20 20 20 20 20 20 6E 20 3D 20 6E 75 n = nu
021010: 6D 62 65 72 20 6F 66 20 69 74 65 6D 73 20 74 6F mber of items to
021020: 20 72 65 61 64 0D 0A 2A 2A 20 20 20 20 20 20 20 read..**
021030: 20 20 66 64 20 3D 20 66 69 6C 65 20 64 65 73 63 fd = file desc
021040: 72 69 70 74 6F 72 0D 0A 2A 2A 20 52 65 74 75 72 riptor..** Retur
021050: 6E 73 20 61 20 63 6F 75 6E 74 20 6F 66 20 74 68 ns a count of th
021060: 65 20 69 74 65 6D 73 20 61 63 74 75 61 6C 6C 79 e items actually
021070: 20 72 65 61 64 2E 0D 0A 2A 2A 20 55 73 65 20 66 read...** Use f
021080: 65 6F 66 28 29 20 61 6E 64 20 66 65 72 72 6F 72 eof() and ferror
021090: 28 29 20 74 6F 20 64 65 74 65 72 6D 69 6E 65 20 () to determine
0210A0: 66 69 6C 65 20 73 74 61 74 75 73 2E 0D 0A 2A 2F file status...*/
0210B0: 0D 0A 66 72 65 61 64 28 62 75 66 2C 20 73 7A 2C ..fread(buf, sz,
0210C0: 20 6E 2C 20 66 64 29 20 63 68 61 72 20 2A 62 75 n, fd) char *bu
0210D0: 66 3B 20 69 6E 74 20 73 7A 2C 20 6E 2C 20 66 64 f; int sz, n, fd
0210E0: 3B 20 7B 0D 0A 20 20 72 65 74 75 72 6E 20 28 72 ; {.. return (r
0210F0: 65 61 64 28 66 64 2C 20 62 75 66 2C 20 6E 2A 73 ead(fd, buf, n*s
021100: 63 2C 20 64 2C 20 6F 2C 20 73 2C 20 75 2C 20 61 c, d, o, s, u, a
021110: 6E 64 20 78 20 73 70 65 63 69 66 69 63 61 74 69 nd x specificati
021120: 6F 6E 73 20 61 72 65 20 73 75 70 70 6F 72 74 65 ons are supporte
021130: 64 2E 0D 0A 2A 2A 20 4E 6F 74 65 3A 20 62 20 28 d...** Note: b (
021140: 62 69 6E 61 72 79 29 20 69 73 20 61 20 6E 6F 6E binary) is a non
021150: 2D 73 74 61 6E 64 61 72 64 20 65 78 74 65 6E 73 -standard extens
021160: 69 6F 6E 2E 0D 0A 2A 2F 0D 0A 66 73 63 61 6E 66 ion...*/..fscanf
021170: 28 61 72 67 63 29 20 69 6E 74 20 61 72 67 63 3B (argc) int argc;
021180: 20 7B 0D 0A 20 20 69 6E 74 20 2A 6E 78 74 61 72 {.. int *nxtar
021190: 67 3B 0D 0A 20 20 6E 78 74 61 72 67 20 3D 20 43 g;.. nxtarg = C
0211A0: 43 41 52 47 43 28 29 20 2B 20 26 61 72 67 63 3B CARGC() + &argc;
0211B0: 0D 0A 20 20 72 65 74 75 72 6E 20 28 55 73 63 61 .. return (Usca
0211C0: 6E 28 2A 28 2D 2D 6E 78 74 61 72 67 29 2C 20 2D n(*(--nxtarg), -
0211D0: 2D 6E 78 74 61 72 67 29 29 3B 0D 0A 20 20 7D 0D -nxtarg));.. }.
0211E0: 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 73 63 61 6E 66 28 .../*..** scanf(
0211F0: 63 74 6C 73 74 72 69 6E 67 2C 20 61 72 67 2C 20 ctlstring, arg,
021200: 61 72 67 2C 20 2E 2E 2E 29 20 2D 20 46 6F 72 6D arg, ...) - Form
021210: 61 74 74 65 64 20 72 65 61 64 2E 0D 0A 2A 2A 20 atted read...**
021220: 4F 70 65 72 61 74 65 73 20 61 73 20 64 65 73 63 Operates as desc
021230: 72 69 62 65 64 20 62 79 20 4B 65 72 6E 69 67 68 ribed by Kernigh
021240: 61 6E 20 26 20 52 69 74 63 68 69 65 2E 0D 0A 2A an & Ritchie...*
021250: 2A 20 62 2C 20 63 2C 20 64 2C 20 6F 2C 20 73 2C * b, c, d, o, s,
021260: 20 75 2C 20 61 6E 64 20 78 20 73 70 65 63 69 66 u, and x specif
021270: 69 63 61 74 69 6F 6E 73 20 61 72 65 20 73 75 70 ications are sup
021280: 70 6F 72 74 65 64 2E 0D 0A 2A 2A 20 4E 6F 74 65 ported...** Note
021290: 3A 20 62 20 28 62 69 6E 61 72 79 29 20 69 73 20 : b (binary) is
0212A0: 61 20 6E 6F 6E 2D 73 74 61 6E 64 61 72 64 20 65 a non-standard e
0212B0: 78 74 65 6E 73 69 6F 6E 2E 0D 0A 2A 2F 0D 0A 73 xtension...*/..s
0212C0: 63 61 6E 66 28 61 72 67 63 29 20 69 6E 74 20 61 canf(argc) int a
0212D0: 72 67 63 3B 20 7B 0D 0A 20 20 72 65 74 75 72 6E rgc; {.. return
0212E0: 20 28 55 73 63 61 6E 28 73 74 64 69 6E 2C 20 43 (Uscan(stdin, C
0212F0: 43 41 52 47 43 28 29 20 2B 20 26 61 72 67 63 20 CARGC() + &argc
021300: 7A 29 2F 73 7A 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A z)/sz);.. }....
021310: 2F 2A 0D 0A 2A 2A 20 42 69 6E 61 72 79 2D 73 74 /*..** Binary-st
021320: 72 65 61 6D 20 72 65 61 64 20 66 72 6F 6D 20 66 ream read from f
021330: 64 2E 0D 0A 2A 2A 20 45 6E 74 72 79 3A 20 20 66 d...** Entry: f
021340: 64 20 3D 20 66 69 6C 65 20 64 65 73 63 72 69 70 d = file descrip
021350: 74 6F 72 0D 0A 2A 2A 20 20 20 20 20 20 20 20 62 tor..** b
021360: 75 66 20 3D 20 61 64 64 72 65 73 73 20 6F 66 20 uf = address of
021370: 74 61 72 67 65 74 20 62 75 66 66 65 72 0D 0A 2A target buffer..*
021380: 2A 20 20 20 20 20 20 20 20 20 20 6E 20 3D 20 6E * n = n
021390: 75 6D 62 65 72 20 6F 66 20 62 79 74 65 73 20 74 umber of bytes t
0213A0: 6F 20 72 65 61 64 0D 0A 2A 2A 20 52 65 74 75 72 o read..** Retur
0213B0: 6E 73 20 61 20 63 6F 75 6E 74 20 6F 66 20 74 68 ns a count of th
0213C0: 65 20 62 79 74 65 73 20 61 63 74 75 61 6C 6C 79 e bytes actually
0213D0: 20 72 65 61 64 2E 0D 0A 2A 2A 20 55 73 65 20 66 read...** Use f
0213E0: 65 6F 66 28 29 20 61 6E 64 20 66 65 72 72 6F 72 eof() and ferror
0213F0: 28 29 20 74 6F 20 64 65 74 65 72 6D 69 6E 65 20 () to determine
021400: 66 69 6C 65 20 73 74 61 74 75 73 2E 0D 0A 2A 2F file status...*/
021410: 0D 0A 72 65 61 64 28 66 64 2C 20 62 75 66 2C 20 ..read(fd, buf,
021420: 6E 29 20 69 6E 74 20 66 64 2C 20 6E 3B 20 63 68 n) int fd, n; ch
021430: 61 72 20 2A 62 75 66 3B 20 7B 0D 0A 20 20 63 68 ar *buf; {.. ch
021440: 61 72 20 2A 63 6E 74 3B 20 20 2F 2A 20 66 61 6B ar *cnt; /* fak
021450: 65 20 75 6E 73 69 67 6E 65 64 20 2A 2F 0D 0A 20 e unsigned */..
021460: 20 63 6E 74 20 3D 20 30 3B 0D 0A 20 20 77 68 69 cnt = 0;.. whi
021470: 6C 65 28 6E 2D 2D 29 20 7B 0D 0A 20 20 20 20 2A le(n--) {.. *
021480: 62 75 66 2B 2B 20 3D 20 55 72 65 61 64 28 66 64 buf++ = Uread(fd
021490: 29 3B 0D 0A 20 20 20 20 69 66 28 55 73 74 61 74 );.. if(Ustat
0214A0: 75 73 5B 66 64 5D 20 26 20 28 45 52 52 42 49 54 us[fd] & (ERRBIT
0214B0: 20 7C 20 45 4F 46 42 49 54 29 29 20 62 72 65 61 | EOFBIT)) brea
0214C0: 6B 3B 0D 0A 20 20 20 20 2B 2B 63 6E 74 3B 0D 0A k;.. ++cnt;..
0214D0: 20 20 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E 20 }.. return
0214E0: 28 63 6E 74 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E (cnt);.. }..>>>
0214F0: 20 46 52 45 45 2E 43 20 34 31 37 0D 0A 23 64 65 FREE.C 417..#de
021500: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
021510: 1C 00 01 00 02 09 52 E5 1C 00 41 02 00 00 00 02 ......R...A.....
021520: 1C 00 46 02 00 00 00 02 1C 00 42 02 00 00 00 02 ..F.......B.....
021530: 1C 00 47 02 00 00 00 02 1C 00 43 02 00 00 00 02 ..G.......C.....
021540: 1C 00 48 02 00 00 00 02 1C 00 44 02 00 00 00 02 ..H.......D.....
021550: 1C 00 49 02 00 00 00 02 1C 00 45 02 00 00 00 02 ..I.......E.....
021560: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
021570: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
021580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
021590: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0215A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0215B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0215C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0215D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0215E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0215F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
021600: 2D 20 31 29 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F - 1));.. }..../
021610: 2A 0D 0A 2A 2A 20 55 73 63 61 6E 28 66 64 2C 20 *..** Uscan(fd,
021620: 63 74 6C 73 74 72 69 6E 67 2C 20 61 72 67 2C 20 ctlstring, arg,
021630: 61 72 67 2C 20 2E 2E 2E 29 20 2D 20 46 6F 72 6D arg, ...) - Form
021640: 61 74 74 65 64 20 72 65 61 64 2E 0D 0A 2A 2A 20 atted read...**
021650: 43 61 6C 6C 65 64 20 62 79 20 66 73 63 61 6E 66 Called by fscanf
021660: 28 29 20 61 6E 64 20 73 63 61 6E 66 28 29 2E 0D () and scanf()..
021670: 0A 2A 2F 0D 0A 55 73 63 61 6E 28 66 64 2C 6E 78 .*/..Uscan(fd,nx
021680: 74 61 72 67 29 20 69 6E 74 20 66 64 2C 20 2A 6E targ) int fd, *n
021690: 78 74 61 72 67 3B 20 7B 0D 0A 20 20 63 68 61 72 xtarg; {.. char
0216A0: 20 2A 63 61 72 67 2C 20 2A 63 74 6C 2C 20 2A 75 *carg, *ctl, *u
0216B0: 6E 73 69 67 6E 65 64 3B 0D 0A 20 20 69 6E 74 20 nsigned;.. int
0216C0: 20 2A 6E 61 72 67 2C 20 77 61 73 74 2C 20 61 63 *narg, wast, ac
0216D0: 2C 20 77 69 64 74 68 2C 20 63 68 2C 20 63 6E 76 , width, ch, cnv
0216E0: 2C 20 62 61 73 65 2C 20 6F 76 66 6C 2C 20 73 69 , base, ovfl, si
0216F0: 67 6E 3B 0D 0A 20 20 61 63 20 3D 20 30 3B 0D 0A gn;.. ac = 0;..
021700: 20 20 63 74 6C 20 3D 20 2A 6E 78 74 61 72 67 2D ctl = *nxtarg-
021710: 2D 3B 0D 0A 20 20 77 68 69 6C 65 28 2A 63 74 6C -;.. while(*ctl
021720: 29 20 7B 0D 0A 20 20 20 20 69 66 28 69 73 73 70 ) {.. if(issp
021730: 61 63 65 28 2A 63 74 6C 29 29 20 7B 2B 2B 63 74 ace(*ctl)) {++ct
021740: 6C 3B 20 63 6F 6E 74 69 6E 75 65 3B 7D 0D 0A 20 l; continue;}..
021750: 20 20 20 69 66 28 2A 63 74 6C 2B 2B 20 21 3D 20 if(*ctl++ !=
021760: 27 25 27 29 20 63 6F 6E 74 69 6E 75 65 3B 0D 0A '%') continue;..
021770: 20 20 20 20 69 66 28 2A 63 74 6C 20 3D 3D 20 27 if(*ctl == '
021780: 2A 27 29 20 7B 6E 61 72 67 20 3D 20 63 61 72 67 *') {narg = carg
021790: 20 3D 20 26 77 61 73 74 3B 20 2B 2B 63 74 6C 3B = &wast; ++ctl;
0217A0: 7D 0D 0A 20 20 20 20 65 6C 73 65 20 20 20 20 20 }.. else
0217B0: 20 20 20 20 20 20 20 20 6E 61 72 67 20 3D 20 63 narg = c
0217C0: 61 72 67 20 3D 20 2A 6E 78 74 61 72 67 2D 2D 3B arg = *nxtarg--;
0217D0: 0D 0A 20 20 20 20 63 74 6C 20 2B 3D 20 75 74 6F .. ctl += uto
0217E0: 69 28 63 74 6C 2C 20 26 77 69 64 74 68 29 3B 0D i(ctl, &width);.
0217F0: 0A 20 20 20 20 69 66 28 21 77 69 64 74 68 29 20 . if(!width)
021800: 65 73 63 72 69 70 74 6F 72 0D 0A 2A 2A 20 20 20 escriptor..**
021810: 20 20 20 20 20 62 75 66 20 3D 20 61 64 64 72 65 buf = addre
021820: 73 73 20 6F 66 20 73 6F 75 72 63 65 20 62 75 66 ss of source buf
021830: 66 65 72 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 fer..**
021840: 20 6E 20 3D 20 6E 75 6D 62 65 72 20 6F 66 20 62 n = number of b
021850: 79 74 65 73 20 74 6F 20 77 72 69 74 65 0D 0A 2A ytes to write..*
021860: 2A 20 52 65 74 75 72 6E 73 20 61 20 63 6F 75 6E * Returns a coun
021870: 74 20 6F 66 20 74 68 65 20 62 79 74 65 73 20 61 t of the bytes a
021880: 63 74 75 61 6C 6C 79 20 77 72 69 74 74 65 6E 20 ctually written
021890: 6F 72 0D 0A 2A 2A 20 2D 31 20 69 66 20 61 6E 20 or..** -1 if an
0218A0: 65 72 72 6F 72 20 6F 63 63 75 72 72 65 64 2E 0D error occurred..
0218B0: 0A 2A 2A 20 4D 61 79 20 75 73 65 20 66 65 72 72 .** May use ferr
0218C0: 6F 72 28 29 2C 20 61 73 20 61 6C 77 61 79 73 2C or(), as always,
0218D0: 20 74 6F 20 64 65 74 65 63 74 20 65 72 72 6F 72 to detect error
0218E0: 73 2E 0D 0A 2A 2F 0D 0A 77 72 69 74 65 28 66 64 s...*/..write(fd
0218F0: 2C 20 62 75 66 2C 20 6E 29 20 69 6E 74 20 66 64 , buf, n) int fd
021900: 2C 20 6E 3B 20 63 68 61 72 20 2A 62 75 66 3B 20 , n; char *buf;
021910: 7B 0D 0A 20 20 63 68 61 72 20 2A 63 6E 74 3B 20 {.. char *cnt;
021920: 20 2F 2A 20 66 61 6B 65 20 75 6E 73 69 67 6E 65 /* fake unsigne
021930: 64 20 2A 2F 0D 0A 20 20 63 6E 74 20 3D 20 6E 3B d */.. cnt = n;
021940: 0D 0A 20 20 77 68 69 6C 65 28 63 6E 74 2D 2D 29 .. while(cnt--)
021950: 20 7B 0D 0A 20 20 20 20 55 77 72 69 74 65 28 2A {.. Uwrite(*
021960: 62 75 66 2B 2B 2C 20 66 64 29 3B 0D 0A 20 20 20 buf++, fd);..
021970: 20 69 66 28 55 73 74 61 74 75 73 5B 66 64 5D 20 if(Ustatus[fd]
021980: 26 20 45 52 52 42 49 54 29 20 72 65 74 75 72 6E & ERRBIT) return
021990: 20 28 2D 31 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 (-1);.. }..
0219A0: 20 72 65 74 75 72 6E 20 28 6E 29 3B 0D 0A 20 20 return (n);..
0219B0: 7D 0D 0A 3E 3E 3E 20 47 45 54 41 52 47 2E 43 20 }..>>> GETARG.C
0219C0: 36 36 39 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43 669..#define NOC
0219D0: 43 41 52 47 43 20 20 2F 2A 20 6E 6F 20 61 72 67 CARGC /* no arg
0219E0: 75 6D 65 6E 74 20 63 6F 75 6E 74 20 70 61 73 73 ument count pass
0219F0: 69 6E 67 20 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 ing */..#include
021A00: 77 69 64 74 68 20 3D 20 33 32 37 36 37 3B 0D 0A width = 32767;..
021A10: 20 20 20 20 69 66 28 21 28 63 6E 76 20 3D 20 2A if(!(cnv = *
021A20: 63 74 6C 2B 2B 29 29 20 62 72 65 61 6B 3B 0D 0A ctl++)) break;..
021A30: 20 20 20 20 77 68 69 6C 65 28 69 73 73 70 61 63 while(isspac
021A40: 65 28 63 68 20 3D 20 66 67 65 74 63 28 66 64 29 e(ch = fgetc(fd)
021A50: 29 29 20 3B 0D 0A 20 20 20 20 69 66 28 63 68 20 )) ;.. if(ch
021A60: 3D 3D 20 45 4F 46 29 20 7B 69 66 28 61 63 29 20 == EOF) {if(ac)
021A70: 62 72 65 61 6B 3B 20 65 6C 73 65 20 72 65 74 75 break; else retu
021A80: 72 6E 28 45 4F 46 29 3B 7D 0D 0A 20 20 20 20 75 rn(EOF);}.. u
021A90: 6E 67 65 74 63 28 63 68 2C 66 64 29 3B 0D 0A 20 ngetc(ch,fd);..
021AA0: 20 20 20 73 77 69 74 63 68 28 63 6E 76 29 20 7B switch(cnv) {
021AB0: 0D 0A 20 20 20 20 20 20 63 61 73 65 20 27 63 27 .. case 'c'
021AC0: 3A 0D 0A 20 20 20 20 20 20 20 20 2A 63 61 72 67 :.. *carg
021AD0: 20 3D 20 66 67 65 74 63 28 66 64 29 3B 0D 0A 20 = fgetc(fd);..
021AE0: 20 20 20 20 20 20 20 62 72 65 61 6B 3B 0D 0A 20 break;..
021AF0: 20 20 20 20 20 63 61 73 65 20 27 73 27 3A 0D 0A case 's':..
021B00: 20 20 20 20 20 20 20 20 77 68 69 6C 65 28 77 69 while(wi
021B10: 64 74 68 2D 2D 29 20 7B 0D 0A 20 20 20 20 20 20 dth--) {..
021B20: 20 20 20 20 69 66 28 28 2A 63 61 72 67 20 3D 20 if((*carg =
021B30: 66 67 65 74 63 28 66 64 29 29 20 3D 3D 20 45 4F fgetc(fd)) == EO
021B40: 46 29 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 F) break;..
021B50: 20 20 20 20 20 69 66 28 69 73 73 70 61 63 65 28 if(isspace(
021B60: 2A 63 61 72 67 29 29 20 62 72 65 61 6B 3B 0D 0A *carg)) break;..
021B70: 20 20 20 20 20 20 20 20 20 20 69 66 28 63 61 72 if(car
021B80: 67 20 21 3D 20 26 77 61 73 74 29 20 2B 2B 63 61 g != &wast) ++ca
021B90: 72 67 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 7D rg;.. }
021BA0: 0D 0A 20 20 20 20 20 20 20 20 2A 63 61 72 67 20 .. *carg
021BB0: 3D 20 30 3B 0D 0A 20 20 20 20 20 20 20 20 62 72 = 0;.. br
021BC0: 65 61 6B 3B 0D 0A 20 20 20 20 20 20 64 65 66 61 eak;.. defa
021BD0: 75 6C 74 3A 0D 0A 20 20 20 20 20 20 20 20 73 77 ult:.. sw
021BE0: 69 74 63 68 28 63 6E 76 29 20 7B 0D 0A 20 20 20 itch(cnv) {..
021BF0: 20 20 20 20 20 20 20 63 61 73 65 20 27 62 27 3A case 'b':
021C00: 20 73 74 64 69 6F 2E 68 0D 0A 2F 2A 0D 0A 2A 2A stdio.h../*..**
021C10: 20 47 65 74 20 63 6F 6D 6D 61 6E 64 20 6C 69 6E Get command lin
021C20: 65 20 61 72 67 75 6D 65 6E 74 2E 20 0D 0A 2A 2A e argument. ..**
021C30: 20 45 6E 74 72 79 3A 20 6E 20 20 20 20 3D 20 4E Entry: n = N
021C40: 75 6D 62 65 72 20 6F 66 20 74 68 65 20 61 72 67 umber of the arg
021C50: 75 6D 65 6E 74 2E 0D 0A 2A 2A 20 20 20 20 20 20 ument...**
021C60: 20 20 73 20 20 20 20 3D 20 44 65 73 74 69 6E 61 s = Destina
021C70: 74 69 6F 6E 20 73 74 72 69 6E 67 20 70 6F 69 6E tion string poin
021C80: 74 65 72 2E 0D 0A 2A 2A 20 20 20 20 20 20 20 20 ter...**
021C90: 73 69 7A 65 20 3D 20 53 69 7A 65 20 6F 66 20 64 size = Size of d
021CA0: 65 73 74 69 6E 61 74 69 6F 6E 20 73 74 72 69 6E estination strin
021CB0: 67 2E 0D 0A 2A 2A 20 20 20 20 20 20 20 20 61 72 g...** ar
021CC0: 67 63 20 3D 20 41 72 67 75 6D 65 6E 74 20 63 6F gc = Argument co
021CD0: 75 6E 74 20 66 72 6F 6D 20 6D 61 69 6E 28 29 2E unt from main().
021CE0: 0D 0A 2A 2A 20 20 20 20 20 20 20 20 61 72 67 76 ..** argv
021CF0: 20 3D 20 41 72 67 75 6D 65 6E 74 20 76 65 63 74 = Argument vect
021D00: 6F 72 28 73 29 20 66 72 6F 6D 20 6D 61 69 6E 28 or(s) from main(
021D10: 29 2E 0D 0A 2A 2A 20 52 65 74 75 72 6E 73 20 6E )...** Returns n
021D20: 75 6D 62 65 72 20 6F 66 20 63 68 61 72 61 63 74 umber of charact
021D30: 65 72 73 20 6D 6F 76 65 64 20 6F 6E 20 73 75 63 ers moved on suc
021D40: 63 65 73 73 2C 0D 0A 2A 2A 20 65 6C 73 65 20 45 cess,..** else E
021D50: 4F 46 2E 0D 0A 2A 2F 0D 0A 67 65 74 61 72 67 28 OF...*/..getarg(
021D60: 6E 2C 73 2C 73 69 7A 65 2C 61 72 67 63 2C 61 72 n,s,size,argc,ar
021D70: 67 76 29 0D 0A 20 20 69 6E 74 20 6E 3B 20 63 68 gv).. int n; ch
021D80: 61 72 20 2A 73 3B 20 69 6E 74 20 73 69 7A 65 2C ar *s; int size,
021D90: 20 61 72 67 63 2C 20 61 72 67 76 5B 5D 3B 20 7B argc, argv[]; {
021DA0: 0D 0A 20 20 63 68 61 72 20 2A 73 74 72 3B 0D 0A .. char *str;..
021DB0: 20 20 69 6E 74 20 69 3B 0D 0A 20 20 69 66 28 6E int i;.. if(n
021DC0: 20 3C 20 30 20 7C 20 6E 20 3E 3D 20 61 72 67 63 < 0 | n >= argc
021DD0: 29 20 7B 0D 0A 20 20 20 20 2A 73 20 3D 20 4E 55 ) {.. *s = NU
021DE0: 4C 4C 3B 0D 0A 20 20 20 20 72 65 74 75 72 6E 20 LL;.. return
021DF0: 45 4F 46 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 69 EOF;.. }.. i
021E00: 20 62 61 73 65 20 3D 20 20 32 3B 20 73 69 67 6E base = 2; sign
021E10: 20 3D 20 31 3B 20 6F 76 66 6C 20 3D 20 33 32 37 = 1; ovfl = 327
021E20: 36 37 3B 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 67; break;..
021E30: 20 20 20 20 20 20 63 61 73 65 20 27 64 27 3A 20 case 'd':
021E40: 62 61 73 65 20 3D 20 31 30 3B 20 73 69 67 6E 20 base = 10; sign
021E50: 3D 20 30 3B 20 6F 76 66 6C 20 3D 20 20 33 32 37 = 0; ovfl = 327
021E60: 36 3B 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 6; break;..
021E70: 20 20 20 20 20 63 61 73 65 20 27 6F 27 3A 20 62 case 'o': b
021E80: 61 73 65 20 3D 20 20 38 3B 20 73 69 67 6E 20 3D ase = 8; sign =
021E90: 20 31 3B 20 6F 76 66 6C 20 3D 20 20 38 31 39 31 1; ovfl = 8191
021EA0: 3B 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 20 ; break;..
021EB0: 20 20 20 20 63 61 73 65 20 27 75 27 3A 20 62 61 case 'u': ba
021EC0: 73 65 20 3D 20 31 30 3B 20 73 69 67 6E 20 3D 20 se = 10; sign =
021ED0: 31 3B 20 6F 76 66 6C 20 3D 20 20 36 35 35 33 3B 1; ovfl = 6553;
021EE0: 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 20 20 break;..
021EF0: 20 20 20 63 61 73 65 20 27 78 27 3A 20 62 61 73 case 'x': bas
021F00: 65 20 3D 20 31 36 3B 20 73 69 67 6E 20 3D 20 31 e = 16; sign = 1
021F10: 3B 20 6F 76 66 6C 20 3D 20 20 34 30 39 35 3B 20 ; ovfl = 4095;
021F20: 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 20 20 20 break;..
021F30: 20 20 64 65 66 61 75 6C 74 3A 20 20 72 65 74 75 default: retu
021F40: 72 6E 20 28 61 63 29 3B 0D 0A 20 20 20 20 20 20 rn (ac);..
021F50: 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 20 20 2A }.. *
021F60: 6E 61 72 67 20 3D 20 75 6E 73 69 67 6E 65 64 20 narg = unsigned
021F70: 3D 20 30 3B 0D 0A 20 20 20 20 20 20 20 20 77 68 = 0;.. wh
021F80: 69 6C 65 28 77 69 64 74 68 2D 2D 20 26 26 20 21 ile(width-- && !
021F90: 69 73 73 70 61 63 65 28 63 68 3D 66 67 65 74 63 isspace(ch=fgetc
021FA0: 28 66 64 29 29 20 26 26 20 63 68 21 3D 45 4F 46 (fd)) && ch!=EOF
021FB0: 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 20 20 69 ) {.. i
021FC0: 66 28 21 73 69 67 6E 29 0D 0A 20 20 20 20 20 20 f(!sign)..
021FD0: 20 20 20 20 20 20 69 66 28 63 68 20 3D 3D 20 27 if(ch == '
021FE0: 2D 27 29 20 7B 73 69 67 6E 20 3D 20 2D 31 3B 20 -') {sign = -1;
021FF0: 63 6F 6E 74 69 6E 75 65 3B 7D 0D 0A 20 20 20 20 continue;}..
022000: 20 3D 20 30 3B 0D 0A 20 20 73 74 72 3D 61 72 67 = 0;.. str=arg
022010: 76 5B 6E 5D 3B 0D 0A 20 20 77 68 69 6C 65 28 69 v[n];.. while(i
022020: 3C 73 69 7A 65 29 20 7B 0D 0A 20 20 20 20 69 66 <size) {.. if
022030: 28 28 73 5B 69 5D 3D 73 74 72 5B 69 5D 29 3D 3D ((s[i]=str[i])==
022040: 4E 55 4C 4C 29 20 62 72 65 61 6B 3B 0D 0A 20 20 NULL) break;..
022050: 20 20 2B 2B 69 3B 0D 0A 20 20 20 20 7D 0D 0A 20 ++i;.. }..
022060: 20 73 5B 69 5D 3D 4E 55 4C 4C 3B 0D 0A 20 20 72 s[i]=NULL;.. r
022070: 65 74 75 72 6E 20 69 3B 0D 0A 20 20 7D 0D 0A 3E eturn i;.. }..>
022080: 3E 3E 20 47 45 54 43 48 41 52 2E 43 20 31 35 38 >> GETCHAR.C 158
022090: 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43 43 41 52 ..#define NOCCAR
0220A0: 47 43 20 20 2F 2A 20 6E 6F 20 61 72 67 75 6D 65 GC /* no argume
0220B0: 6E 74 20 63 6F 75 6E 74 20 70 61 73 73 69 6E 67 nt count passing
0220C0: 20 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 20 73 74 */..#include st
0220D0: 64 69 6F 2E 68 0D 0A 2F 2A 0D 0A 2A 2A 20 47 65 dio.h../*..** Ge
0220E0: 74 20 6E 65 78 74 20 63 68 61 72 61 63 74 65 72 t next character
0220F0: 20 66 72 6F 6D 20 73 74 61 6E 64 61 72 64 20 69 from standard i
022100: 6E 70 75 74 2E 20 0D 0A 2A 2F 0D 0A 67 65 74 63 nput. ..*/..getc
022110: 68 61 72 28 29 20 7B 0D 0A 20 20 72 65 74 75 72 har() {.. retur
022120: 6E 20 28 66 67 65 74 63 28 73 74 64 69 6E 29 29 n (fgetc(stdin))
022130: 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 49 53 41 4C ;.. }..>>> ISAL
022140: 4E 55 4D 2E 43 20 31 36 33 0D 0A 2F 2A 0D 0A 2A NUM.C 163../*..*
022150: 2A 20 72 65 74 75 72 6E 20 27 74 72 75 65 27 20 * return 'true'
022160: 69 66 20 63 20 69 73 20 61 6C 70 68 61 6E 75 6D if c is alphanum
022170: 65 72 69 63 0D 0A 2A 2F 0D 0A 69 73 61 6C 6E 75 eric..*/..isalnu
022180: 6D 28 63 29 20 69 6E 74 20 63 3B 20 7B 0D 0A 20 m(c) int c; {..
022190: 20 72 65 74 75 72 6E 20 28 28 63 3C 3D 27 7A 27 return ((c<='z'
0221A0: 20 26 26 20 63 3E 3D 27 61 27 29 20 7C 7C 0D 0A && c>='a') ||..
0221B0: 20 20 20 20 20 20 20 20 20 20 28 63 3C 3D 27 5A (c<='Z
0221C0: 27 20 26 26 20 63 3E 3D 27 41 27 29 20 7C 7C 0D ' && c>='A') ||.
0221D0: 0A 20 20 20 20 20 20 20 20 20 20 28 63 3C 3D 27 . (c<='
0221E0: 39 27 20 26 26 20 63 3E 3D 27 30 27 29 29 3B 0D 9' && c>='0'));.
0221F0: 0A 20 20 7D 0D 0A 3E 3E 3E 20 49 53 41 4C 50 48 . }..>>> ISALPH
022200: 20 20 20 20 20 20 20 20 65 6C 73 65 20 73 69 67 else sig
022210: 6E 20 3D 20 31 3B 0D 0A 20 20 20 20 20 20 20 20 n = 1;..
022220: 20 20 69 66 28 63 68 20 3C 20 27 30 27 29 20 72 if(ch < '0') r
022230: 65 74 75 72 6E 20 28 61 63 29 3B 0D 0A 20 20 20 eturn (ac);..
022240: 20 20 20 20 20 20 20 69 66 28 63 68 20 3E 3D 20 if(ch >=
022250: 27 61 27 29 20 20 20 20 20 20 63 68 20 2D 3D 20 'a') ch -=
022260: 38 37 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 65 87;.. e
022270: 6C 73 65 20 69 66 28 63 68 20 3E 3D 20 27 41 27 lse if(ch >= 'A'
022280: 29 20 63 68 20 2D 3D 20 35 35 3B 0D 0A 20 20 20 ) ch -= 55;..
022290: 20 20 20 20 20 20 20 65 6C 73 65 20 20 20 20 20 else
0222A0: 20 20 20 20 20 20 20 20 20 20 63 68 20 2D 3D 20 ch -=
0222B0: 27 30 27 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 '0';..
0222C0: 69 66 28 63 68 20 3E 3D 20 62 61 73 65 20 7C 7C if(ch >= base ||
0222D0: 20 75 6E 73 69 67 6E 65 64 20 3E 20 6F 76 66 6C unsigned > ovfl
0222E0: 29 20 72 65 74 75 72 6E 20 28 61 63 29 3B 0D 0A ) return (ac);..
0222F0: 20 20 20 20 20 20 20 20 20 20 75 6E 73 69 67 6E unsign
022300: 65 64 20 3D 20 75 6E 73 69 67 6E 65 64 20 2A 20 ed = unsigned *
022310: 62 61 73 65 20 2B 20 63 68 3B 0D 0A 20 20 20 20 base + ch;..
022320: 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 20 }..
022330: 20 2A 6E 61 72 67 20 3D 20 73 69 67 6E 20 2A 20 *narg = sign *
022340: 75 6E 73 69 67 6E 65 64 3B 0D 0A 20 20 20 20 20 unsigned;..
022350: 20 7D 0D 0A 20 20 20 20 2B 2B 61 63 3B 20 20 20 }.. ++ac;
022360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
022370: 20 20 20 20 20 20 20 0D 0A 20 20 20 20 7D 0D 0A .. }..
022380: 20 20 72 65 74 75 72 6E 20 28 61 63 29 3B 0D 0A return (ac);..
022390: 20 20 7D 0D 0A 0D 0A 3E 3E 3E 20 46 57 52 49 54 }....>>> FWRIT
0223A0: 45 2E 43 20 39 39 38 0D 0A 23 64 65 66 69 6E 65 E.C 998..#define
0223B0: 20 4E 4F 43 43 41 52 47 43 20 20 2F 2A 20 6E 6F NOCCARGC /* no
0223C0: 20 61 72 67 75 6D 65 6E 74 20 63 6F 75 6E 74 20 argument count
0223D0: 70 61 73 73 69 6E 67 20 2A 2F 0D 0A 23 69 6E 63 passing */..#inc
0223E0: 6C 75 64 65 20 63 6C 69 62 2E 64 65 66 0D 0A 65 lude clib.def..e
0223F0: 78 74 65 72 6E 20 69 6E 74 20 55 73 74 61 74 75 xtern int Ustatu
022400: 41 2E 43 20 31 31 39 0D 0A 2F 2A 0D 0A 2A 2A 20 A.C 119../*..**
022410: 72 65 74 75 72 6E 20 27 74 72 75 65 27 20 69 66 return 'true' if
022420: 20 63 20 69 73 20 61 6C 70 68 61 62 65 74 69 63 c is alphabetic
022430: 0D 0A 2A 2F 0D 0A 69 73 61 6C 70 68 61 28 63 29 ..*/..isalpha(c)
022440: 20 69 6E 74 20 63 3B 20 7B 0D 0A 20 20 72 65 74 int c; {.. ret
022450: 75 72 6E 20 28 28 63 3C 3D 27 7A 27 20 26 26 20 urn ((c<='z' &&
022460: 63 3E 3D 27 61 27 29 20 7C 7C 20 28 63 3C 3D 27 c>='a') || (c<='
022470: 5A 27 20 26 26 20 63 3E 3D 27 41 27 29 29 3B 0D Z' && c>='A'));.
022480: 0A 20 20 7D 0D 0A 3E 3E 3E 20 49 53 41 53 43 49 . }..>>> ISASCI
022490: 49 2E 43 20 31 34 37 0D 0A 2F 2A 0D 0A 2A 2A 20 I.C 147../*..**
0224A0: 72 65 74 75 72 6E 20 27 74 72 75 65 27 20 69 66 return 'true' if
0224B0: 20 63 20 69 73 20 61 6E 20 41 53 43 49 49 20 63 c is an ASCII c
0224C0: 68 61 72 61 63 74 65 72 20 28 30 2D 31 32 37 29 haracter (0-127)
0224D0: 0D 0A 2A 2F 0D 0A 69 73 61 73 63 69 69 28 63 29 ..*/..isascii(c)
0224E0: 20 63 68 61 72 20 2A 63 3B 20 7B 0D 0A 20 20 2F char *c; {.. /
0224F0: 2A 20 63 20 69 73 20 61 20 73 69 6D 75 6C 61 74 * c is a simulat
022500: 65 64 20 75 6E 73 69 67 6E 65 64 20 69 6E 74 65 ed unsigned inte
022510: 67 65 72 20 2A 2F 0D 0A 20 20 72 65 74 75 72 6E ger */.. return
022520: 20 28 63 20 3C 3D 20 31 32 37 29 3B 0D 0A 20 20 (c <= 127);..
022530: 7D 0D 0A 3E 3E 3E 20 49 53 41 54 54 59 2E 43 20 }..>>> ISATTY.C
022540: 31 32 36 0D 0A 65 78 74 65 72 6E 20 69 6E 74 20 126..extern int
022550: 55 64 65 76 69 63 65 5B 5D 3B 0D 0A 2F 2A 0D 0A Udevice[];../*..
022560: 2A 2A 20 52 65 74 75 72 6E 20 22 74 72 75 65 22 ** Return "true"
022570: 20 69 66 20 66 64 20 69 73 20 61 20 64 65 76 69 if fd is a devi
022580: 63 65 2C 20 65 6C 73 65 20 22 66 61 6C 73 65 22 ce, else "false"
022590: 0D 0A 2A 2F 0D 0A 69 73 61 74 74 79 28 66 64 29 ..*/..isatty(fd)
0225A0: 20 69 6E 74 20 66 64 3B 20 7B 0D 0A 20 20 72 65 int fd; {.. re
0225B0: 74 75 72 6E 20 28 55 64 65 76 69 63 65 5B 66 64 turn (Udevice[fd
0225C0: 5D 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 49 53 ]);.. }..>>> IS
0225D0: 43 4E 54 52 4C 2E 43 20 31 37 32 0D 0A 2F 2A 0D CNTRL.C 172../*.
0225E0: 0A 2A 2A 20 72 65 74 75 72 6E 20 27 74 72 75 65 .** return 'true
0225F0: 27 20 69 66 20 63 20 69 73 20 61 20 63 6F 6E 74 ' if c is a cont
022600: 73 5B 5D 3B 0D 0A 2F 2A 0D 0A 2A 2A 20 49 74 65 s[];../*..** Ite
022610: 6D 2D 73 74 72 65 61 6D 20 77 72 69 74 65 20 74 m-stream write t
022620: 6F 20 66 64 2E 0D 0A 2A 2A 20 45 6E 74 72 79 3A o fd...** Entry:
022630: 20 62 75 66 20 3D 20 61 64 64 72 65 73 73 20 6F buf = address o
022640: 66 20 73 6F 75 72 63 65 20 62 75 66 66 65 72 0D f source buffer.
022650: 0A 2A 2A 20 20 20 20 20 20 20 20 20 73 7A 20 3D .** sz =
022660: 20 73 69 7A 65 20 6F 66 20 69 74 65 6D 73 20 69 size of items i
022670: 6E 20 62 79 74 65 73 0D 0A 2A 2A 20 20 20 20 20 n bytes..**
022680: 20 20 20 20 20 6E 20 3D 20 6E 75 6D 62 65 72 20 n = number
022690: 6F 66 20 69 74 65 6D 73 20 74 6F 20 77 72 69 74 of items to writ
0226A0: 65 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 66 64 e..** fd
0226B0: 20 3D 20 66 69 6C 65 20 64 65 73 63 72 69 70 74 = file descript
0226C0: 6F 72 0D 0A 2A 2A 20 52 65 74 75 72 6E 73 20 61 or..** Returns a
0226D0: 20 63 6F 75 6E 74 20 6F 66 20 74 68 65 20 69 74 count of the it
0226E0: 65 6D 73 20 61 63 74 75 61 6C 6C 79 20 77 72 69 ems actually wri
0226F0: 74 74 65 6E 20 6F 72 0D 0A 2A 2A 20 7A 65 72 6F tten or..** zero
022700: 20 69 66 20 61 6E 20 65 72 72 6F 72 20 6F 63 63 if an error occ
022710: 75 72 72 65 64 2E 0D 0A 2A 2A 20 4D 61 79 20 75 urred...** May u
022720: 73 65 20 66 65 72 72 6F 72 28 29 2C 20 61 73 20 se ferror(), as
022730: 61 6C 77 61 79 73 2C 20 74 6F 20 64 65 74 65 63 always, to detec
022740: 74 20 65 72 72 6F 72 73 2E 0D 0A 2A 2F 0D 0A 66 t errors...*/..f
022750: 77 72 69 74 65 28 62 75 66 2C 20 73 7A 2C 20 6E write(buf, sz, n
022760: 2C 20 66 64 29 20 63 68 61 72 20 2A 62 75 66 3B , fd) char *buf;
022770: 20 69 6E 74 20 73 7A 2C 20 6E 2C 20 66 64 3B 20 int sz, n, fd;
022780: 7B 0D 0A 20 20 69 66 28 77 72 69 74 65 28 66 64 {.. if(write(fd
022790: 2C 20 62 75 66 2C 20 6E 2A 73 7A 29 20 3D 3D 20 , buf, n*sz) ==
0227A0: 2D 31 29 20 72 65 74 75 72 6E 20 28 30 29 3B 0D -1) return (0);.
0227B0: 0A 20 20 72 65 74 75 72 6E 20 28 6E 29 3B 0D 0A . return (n);..
0227C0: 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 42 69 }..../*..** Bi
0227D0: 6E 61 72 79 2D 73 74 72 65 61 6D 20 77 72 69 74 nary-stream writ
0227E0: 65 20 74 6F 20 66 64 2E 0D 0A 2A 2A 20 45 6E 74 e to fd...** Ent
0227F0: 72 79 3A 20 20 66 64 20 3D 20 66 69 6C 65 20 64 ry: fd = file d
022800: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
022810: 1D 00 01 00 02 09 52 E5 1D 00 41 02 00 00 00 02 ......R...A.....
022820: 1D 00 46 02 00 00 00 02 1D 00 42 02 00 00 00 02 ..F.......B.....
022830: 1D 00 47 02 00 00 00 02 1D 00 43 02 00 00 00 02 ..G.......C.....
022840: 1D 00 48 02 00 00 00 02 1D 00 44 02 00 00 00 02 ..H.......D.....
022850: 1D 00 49 02 00 00 00 02 1D 00 45 02 00 00 00 02 ..I.......E.....
022860: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022870: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022880: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022890: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0228A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0228B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0228C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0228D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0228E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0228F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022900: 72 6F 6C 20 63 68 61 72 61 63 74 65 72 0D 0A 2A rol character..*
022910: 2A 20 28 30 2D 33 31 20 6F 72 20 31 32 37 29 0D * (0-31 or 127).
022920: 0A 2A 2F 0D 0A 69 73 63 6E 74 72 6C 28 63 29 20 .*/..iscntrl(c)
022930: 63 68 61 72 20 2A 63 3B 20 7B 0D 0A 20 20 2F 2A char *c; {.. /*
022940: 20 63 20 69 73 20 61 20 73 69 6D 75 6C 61 74 65 c is a simulate
022950: 64 20 75 6E 73 69 67 6E 65 64 20 69 6E 74 65 67 d unsigned integ
022960: 65 72 20 2A 2F 0D 0A 20 20 72 65 74 75 72 6E 20 er */.. return
022970: 28 28 63 20 3C 3D 20 33 31 29 20 7C 7C 20 28 63 ((c <= 31) || (c
022980: 20 3D 3D 20 31 32 37 29 29 3B 0D 0A 20 20 7D 0D == 127));.. }.
022990: 0A 3E 3E 3E 20 49 53 43 4F 4E 53 2E 43 20 31 35 .>>> ISCONS.C 15
0229A0: 37 0D 0A 23 69 6E 63 6C 75 64 65 20 73 74 64 69 7..#include stdi
0229B0: 6F 2E 68 0D 0A 23 69 6E 63 6C 75 64 65 20 63 6C o.h..#include cl
0229C0: 69 62 2E 64 65 66 0D 0A 65 78 74 65 72 6E 20 69 ib.def..extern i
0229D0: 6E 74 20 55 64 65 76 69 63 65 5B 5D 3B 0D 0A 2F nt Udevice[];../
0229E0: 2A 0D 0A 2A 2A 20 44 65 74 65 72 6D 69 6E 65 20 *..** Determine
0229F0: 69 66 20 66 64 20 69 73 20 74 68 65 20 63 6F 6E if fd is the con
022A00: 73 6F 6C 65 2E 0D 0A 2A 2F 0D 0A 69 73 63 6F 6E sole...*/..iscon
022A10: 73 28 66 64 29 20 69 6E 74 20 66 64 3B 20 7B 0D s(fd) int fd; {.
022A20: 0A 20 20 72 65 74 75 72 6E 20 28 55 64 65 76 69 . return (Udevi
022A30: 63 65 5B 66 64 5D 20 3D 3D 20 43 50 4D 43 4F 4E ce[fd] == CPMCON
022A40: 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 49 53 44 );.. }..>>> ISD
022A50: 49 47 49 54 2E 43 20 31 30 30 0D 0A 2F 2A 0D 0A IGIT.C 100../*..
022A60: 2A 2A 20 72 65 74 75 72 6E 20 27 74 72 75 65 27 ** return 'true'
022A70: 20 69 66 20 63 20 69 73 20 61 20 64 65 63 69 6D if c is a decim
022A80: 61 6C 20 64 69 67 69 74 0D 0A 2A 2F 0D 0A 69 73 al digit..*/..is
022A90: 64 69 67 69 74 28 63 29 20 69 6E 74 20 63 3B 20 digit(c) int c;
022AA0: 7B 0D 0A 20 20 72 65 74 75 72 6E 20 28 63 3C 3D {.. return (c<=
022AB0: 27 39 27 20 26 26 20 63 3E 3D 27 30 27 29 3B 0D '9' && c>='0');.
022AC0: 0A 20 20 7D 0D 0A 3E 3E 3E 20 49 53 47 52 41 50 . }..>>> ISGRAP
022AD0: 48 2E 43 20 31 31 35 0D 0A 2F 2A 0D 0A 2A 2A 20 H.C 115../*..**
022AE0: 72 65 74 75 72 6E 20 27 74 72 75 65 27 20 69 66 return 'true' if
022AF0: 20 63 20 69 73 20 61 20 67 72 61 70 68 69 63 20 c is a graphic
022B00: 20 20 69 66 28 2A 70 74 72 20 3C 20 31 30 29 20 if(*ptr < 10)
022B10: 2A 70 74 72 20 2B 3D 20 27 30 27 3B 20 65 6C 73 *ptr += '0'; els
022B20: 65 20 2A 70 74 72 20 2B 3D 20 35 35 3B 0D 0A 20 e *ptr += 55;..
022B30: 20 20 20 2B 2B 70 74 72 3B 0D 0A 20 20 20 20 7D ++ptr;.. }
022B40: 20 77 68 69 6C 65 28 6E 20 2F 3D 20 62 29 3B 0D while(n /= b);.
022B50: 0A 20 20 2A 70 74 72 20 3D 20 30 3B 0D 0A 20 20 . *ptr = 0;..
022B60: 72 65 76 65 72 73 65 20 28 73 29 3B 0D 0A 20 20 reverse (s);..
022B70: 7D 0D 0A 0D 0A 3E 3E 3E 20 49 54 4F 44 2E 43 20 }....>>> ITOD.C
022B80: 36 32 30 0D 0A 23 69 6E 63 6C 75 64 65 20 73 74 620..#include st
022B90: 64 69 6F 2E 68 0D 0A 2F 2A 0D 0A 2A 2A 20 69 74 dio.h../*..** it
022BA0: 6F 64 20 2D 2D 20 63 6F 6E 76 65 72 74 20 6E 62 od -- convert nb
022BB0: 72 20 74 6F 20 73 69 67 6E 65 64 20 64 65 63 69 r to signed deci
022BC0: 6D 61 6C 20 73 74 72 69 6E 67 20 6F 66 20 77 69 mal string of wi
022BD0: 64 74 68 20 73 7A 0D 0A 2A 2A 20 20 20 20 20 20 dth sz..**
022BE0: 20 20 20 72 69 67 68 74 20 61 64 6A 75 73 74 65 right adjuste
022BF0: 64 2C 20 62 6C 61 6E 6B 20 66 69 6C 6C 65 64 3B d, blank filled;
022C00: 20 72 65 74 75 72 6E 73 20 73 74 72 0D 0A 2A 2A returns str..**
022C10: 0D 0A 2A 2A 20 20 20 20 20 20 20 20 69 66 20 73 ..** if s
022C20: 7A 20 3E 20 30 20 74 65 72 6D 69 6E 61 74 65 20 z > 0 terminate
022C30: 77 69 74 68 20 6E 75 6C 6C 20 62 79 74 65 0D 0A with null byte..
022C40: 2A 2A 20 20 20 20 20 20 20 20 69 66 20 73 7A 20 ** if sz
022C50: 3D 20 30 20 66 69 6E 64 20 65 6E 64 20 6F 66 20 = 0 find end of
022C60: 73 74 72 69 6E 67 0D 0A 2A 2A 20 20 20 20 20 20 string..**
022C70: 20 20 69 66 20 73 7A 20 3C 20 30 20 75 73 65 20 if sz < 0 use
022C80: 6C 61 73 74 20 62 79 74 65 20 66 6F 72 20 64 61 last byte for da
022C90: 74 61 0D 0A 2A 2F 0D 0A 69 74 6F 64 28 6E 62 72 ta..*/..itod(nbr
022CA0: 2C 20 73 74 72 2C 20 73 7A 29 20 20 69 6E 74 20 , str, sz) int
022CB0: 6E 62 72 3B 20 20 63 68 61 72 20 73 74 72 5B 5D nbr; char str[]
022CC0: 3B 20 20 69 6E 74 20 73 7A 3B 20 20 7B 0D 0A 20 ; int sz; {..
022CD0: 20 63 68 61 72 20 73 67 6E 3B 0D 0A 20 20 69 66 char sgn;.. if
022CE0: 28 6E 62 72 3C 30 29 20 7B 6E 62 72 20 3D 20 2D (nbr<0) {nbr = -
022CF0: 6E 62 72 3B 20 73 67 6E 3D 27 2D 27 3B 7D 0D 0A nbr; sgn='-';}..
022D00: 63 68 61 72 61 63 74 65 72 0D 0A 2A 2A 20 28 33 character..** (3
022D10: 33 2D 31 32 36 29 0D 0A 2A 2F 0D 0A 69 73 67 72 3-126)..*/..isgr
022D20: 61 70 68 28 63 29 20 69 6E 74 20 63 3B 20 7B 0D aph(c) int c; {.
022D30: 0A 20 20 72 65 74 75 72 6E 20 28 63 3E 3D 33 33 . return (c>=33
022D40: 20 26 26 20 63 3C 3D 31 32 36 29 3B 0D 0A 20 20 && c<=126);..
022D50: 7D 0D 0A 3E 3E 3E 20 49 53 4C 4F 57 45 52 2E 43 }..>>> ISLOWER.C
022D60: 20 31 30 36 0D 0A 2F 2A 0D 0A 2A 2A 20 72 65 74 106../*..** ret
022D70: 75 72 6E 20 27 74 72 75 65 27 20 69 66 20 63 20 urn 'true' if c
022D80: 69 73 20 6C 6F 77 65 72 2D 63 61 73 65 20 61 6C is lower-case al
022D90: 70 68 61 62 65 74 69 63 0D 0A 2A 2F 0D 0A 69 73 phabetic..*/..is
022DA0: 6C 6F 77 65 72 28 63 29 20 69 6E 74 20 63 3B 20 lower(c) int c;
022DB0: 7B 0D 0A 20 20 72 65 74 75 72 6E 20 28 63 3C 3D {.. return (c<=
022DC0: 27 7A 27 20 26 26 20 63 3E 3D 27 61 27 29 3B 0D 'z' && c>='a');.
022DD0: 0A 20 20 7D 0D 0A 3E 3E 3E 20 49 53 50 52 49 4E . }..>>> ISPRIN
022DE0: 54 2E 43 20 31 31 37 0D 0A 2F 2A 0D 0A 2A 2A 20 T.C 117../*..**
022DF0: 72 65 74 75 72 6E 20 27 74 72 75 65 27 20 69 66 return 'true' if
022E00: 20 63 20 69 73 20 61 20 70 72 69 6E 74 61 62 6C c is a printabl
022E10: 65 20 63 68 61 72 61 63 74 65 72 0D 0A 2A 2A 20 e character..**
022E20: 28 33 32 2D 31 32 36 29 0D 0A 2A 2F 0D 0A 69 73 (32-126)..*/..is
022E30: 70 72 69 6E 74 28 63 29 20 69 6E 74 20 63 3B 20 print(c) int c;
022E40: 7B 0D 0A 20 20 72 65 74 75 72 6E 20 28 63 3E 3D {.. return (c>=
022E50: 33 32 20 26 26 20 63 3C 3D 31 32 36 29 3B 0D 0A 32 && c<=126);..
022E60: 20 20 7D 0D 0A 3E 3E 3E 20 49 53 50 55 4E 43 54 }..>>> ISPUNCT
022E70: 2E 43 20 32 30 36 0D 0A 23 64 65 66 69 6E 65 20 .C 206..#define
022E80: 4E 4F 43 43 41 52 47 43 20 20 2F 2A 20 6E 6F 20 NOCCARGC /* no
022E90: 61 72 67 75 6D 65 6E 74 20 63 6F 75 6E 74 20 70 argument count p
022EA0: 61 73 73 69 6E 67 20 2A 2F 0D 0A 2F 2A 0D 0A 2A assing */../*..*
022EB0: 2A 20 72 65 74 75 72 6E 20 27 74 72 75 65 27 20 * return 'true'
022EC0: 69 66 20 63 20 69 73 20 61 20 70 75 6E 63 74 75 if c is a punctu
022ED0: 61 74 69 6F 6E 20 63 68 61 72 61 63 74 65 72 0D ation character.
022EE0: 0A 2A 2A 20 28 61 6C 6C 20 62 75 74 20 63 6F 6E .** (all but con
022EF0: 74 72 6F 6C 20 61 6E 64 20 61 6C 70 68 61 6E 75 trol and alphanu
022F00: 20 20 65 6C 73 65 20 73 67 6E 3D 27 20 27 3B 0D else sgn=' ';.
022F10: 0A 20 20 69 66 28 73 7A 3E 30 29 20 73 74 72 5B . if(sz>0) str[
022F20: 2D 2D 73 7A 5D 3D 4E 55 4C 4C 3B 0D 0A 20 20 65 --sz]=NULL;.. e
022F30: 6C 73 65 20 69 66 28 73 7A 3C 30 29 20 73 7A 20 lse if(sz<0) sz
022F40: 3D 20 2D 73 7A 3B 0D 0A 20 20 65 6C 73 65 20 77 = -sz;.. else w
022F50: 68 69 6C 65 28 73 74 72 5B 73 7A 5D 21 3D 4E 55 hile(str[sz]!=NU
022F60: 4C 4C 29 20 2B 2B 73 7A 3B 0D 0A 20 20 77 68 69 LL) ++sz;.. whi
022F70: 6C 65 28 73 7A 29 20 7B 0D 0A 20 20 20 20 73 74 le(sz) {.. st
022F80: 72 5B 2D 2D 73 7A 5D 3D 28 6E 62 72 25 31 30 2B r[--sz]=(nbr%10+
022F90: 27 30 27 29 3B 0D 0A 20 20 20 20 69 66 28 28 6E '0');.. if((n
022FA0: 62 72 3D 6E 62 72 2F 31 30 29 3D 3D 30 29 20 62 br=nbr/10)==0) b
022FB0: 72 65 61 6B 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 reak;.. }..
022FC0: 69 66 28 73 7A 29 20 73 74 72 5B 2D 2D 73 7A 5D if(sz) str[--sz]
022FD0: 3D 73 67 6E 3B 0D 0A 20 20 77 68 69 6C 65 28 73 =sgn;.. while(s
022FE0: 7A 3E 30 29 20 73 74 72 5B 2D 2D 73 7A 5D 3D 27 z>0) str[--sz]='
022FF0: 20 27 3B 0D 0A 20 20 72 65 74 75 72 6E 20 73 74 ';.. return st
023000: 72 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 49 54 4F r;.. }..>>> ITO
023010: 4F 2E 43 20 35 34 30 0D 0A 2F 2A 0D 0A 2A 2A 20 O.C 540../*..**
023020: 69 74 6F 6F 20 2D 2D 20 63 6F 6E 76 65 72 74 73 itoo -- converts
023030: 20 6E 62 72 20 74 6F 20 6F 63 74 61 6C 20 73 74 nbr to octal st
023040: 72 69 6E 67 20 6F 66 20 6C 65 6E 67 74 68 20 73 ring of length s
023050: 7A 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 72 69 z..** ri
023060: 67 68 74 20 61 64 6A 75 73 74 65 64 20 61 6E 64 ght adjusted and
023070: 20 62 6C 61 6E 6B 20 66 69 6C 6C 65 64 2C 20 72 blank filled, r
023080: 65 74 75 72 6E 73 20 73 74 72 0D 0A 2A 2A 0D 0A eturns str..**..
023090: 2A 2A 20 20 20 20 20 20 20 20 69 66 20 73 7A 20 ** if sz
0230A0: 3E 20 30 20 74 65 72 6D 69 6E 61 74 65 20 77 69 > 0 terminate wi
0230B0: 74 68 20 6E 75 6C 6C 20 62 79 74 65 0D 0A 2A 2A th null byte..**
0230C0: 20 20 20 20 20 20 20 20 69 66 20 73 7A 20 3D 20 if sz =
0230D0: 30 20 66 69 6E 64 20 65 6E 64 20 6F 66 20 73 74 0 find end of st
0230E0: 72 69 6E 67 0D 0A 2A 2A 20 20 20 20 20 20 20 20 ring..**
0230F0: 69 66 20 73 7A 20 3C 20 30 20 75 73 65 20 6C 61 if sz < 0 use la
023100: 6D 65 72 69 63 29 0D 0A 2A 2F 0D 0A 69 73 70 75 meric)..*/..ispu
023110: 6E 63 74 28 63 29 20 69 6E 74 20 63 3B 20 7B 0D nct(c) int c; {.
023120: 0A 20 20 72 65 74 75 72 6E 20 28 21 69 73 61 6C . return (!isal
023130: 6E 75 6D 28 63 29 20 26 26 20 21 69 73 63 6E 74 num(c) && !iscnt
023140: 72 6C 28 63 29 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E rl(c));.. }..>>
023150: 3E 20 49 53 53 50 41 43 45 2E 43 20 31 38 30 0D > ISSPACE.C 180.
023160: 0A 2F 2A 0D 0A 2A 2A 20 72 65 74 75 72 6E 20 27 ./*..** return '
023170: 74 72 75 65 27 20 69 66 20 63 20 69 73 20 61 20 true' if c is a
023180: 77 68 69 74 65 2D 73 70 61 63 65 20 63 68 61 72 white-space char
023190: 61 63 74 65 72 0D 0A 2A 2F 0D 0A 69 73 73 70 61 acter..*/..isspa
0231A0: 63 65 28 63 29 20 69 6E 74 20 63 3B 20 7B 0D 0A ce(c) int c; {..
0231B0: 20 20 2F 2A 20 66 69 72 73 74 20 63 68 65 63 6B /* first check
0231C0: 20 67 69 76 65 73 20 71 75 69 63 6B 20 65 78 69 gives quick exi
0231D0: 74 20 69 6E 20 6D 6F 73 74 20 63 61 73 65 73 20 t in most cases
0231E0: 2A 2F 0D 0A 20 20 72 65 74 75 72 6E 28 63 3C 3D */.. return(c<=
0231F0: 27 20 27 20 26 26 20 28 63 3D 3D 27 20 27 20 7C ' ' && (c==' ' |
023200: 7C 20 28 63 3C 3D 31 33 20 26 26 20 63 3E 3D 39 | (c<=13 && c>=9
023210: 29 29 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 3E 3E 3E )));.. }....>>>
023220: 20 49 53 55 50 50 45 52 2E 43 20 31 30 36 0D 0A ISUPPER.C 106..
023230: 2F 2A 0D 0A 2A 2A 20 72 65 74 75 72 6E 20 27 74 /*..** return 't
023240: 72 75 65 27 20 69 66 20 63 20 69 73 20 75 70 70 rue' if c is upp
023250: 65 72 2D 63 61 73 65 20 61 6C 70 68 61 62 65 74 er-case alphabet
023260: 69 63 0D 0A 2A 2F 0D 0A 69 73 75 70 70 65 72 28 ic..*/..isupper(
023270: 63 29 20 69 6E 74 20 63 3B 20 7B 0D 0A 20 20 72 c) int c; {.. r
023280: 65 74 75 72 6E 20 28 63 3C 3D 27 5A 27 20 26 26 eturn (c<='Z' &&
023290: 20 63 3E 3D 27 41 27 29 3B 0D 0A 20 20 7D 0D 0A c>='A');.. }..
0232A0: 3E 3E 3E 20 49 53 58 44 49 47 49 54 2E 43 20 31 >>> ISXDIGIT.C 1
0232B0: 39 33 0D 0A 2F 2A 0D 0A 2A 2A 20 72 65 74 75 72 93../*..** retur
0232C0: 6E 20 27 74 72 75 65 27 20 69 66 20 63 20 69 73 n 'true' if c is
0232D0: 20 61 20 68 65 78 61 64 65 63 69 6D 61 6C 20 64 a hexadecimal d
0232E0: 69 67 69 74 0D 0A 2A 2A 20 28 30 2D 39 2C 20 41 igit..** (0-9, A
0232F0: 2D 46 2C 20 6F 72 20 61 2D 66 29 0D 0A 2A 2F 0D -F, or a-f)..*/.
023300: 73 74 20 62 79 74 65 20 66 6F 72 20 64 61 74 61 st byte for data
023310: 0D 0A 2A 2F 0D 0A 69 74 6F 6F 28 6E 62 72 2C 20 ..*/..itoo(nbr,
023320: 73 74 72 2C 20 73 7A 29 20 20 69 6E 74 20 6E 62 str, sz) int nb
023330: 72 3B 20 20 63 68 61 72 20 73 74 72 5B 5D 3B 20 r; char str[];
023340: 20 69 6E 74 20 73 7A 3B 20 20 7B 0D 0A 20 20 69 int sz; {.. i
023350: 6E 74 20 64 69 67 69 74 3B 0D 0A 20 20 69 66 28 nt digit;.. if(
023360: 73 7A 3E 30 29 20 73 74 72 5B 2D 2D 73 7A 5D 3D sz>0) str[--sz]=
023370: 30 3B 0D 0A 20 20 65 6C 73 65 20 69 66 28 73 7A 0;.. else if(sz
023380: 3C 30 29 20 73 7A 20 3D 20 2D 73 7A 3B 0D 0A 20 <0) sz = -sz;..
023390: 20 65 6C 73 65 20 77 68 69 6C 65 28 73 74 72 5B else while(str[
0233A0: 73 7A 5D 21 3D 30 29 20 2B 2B 73 7A 3B 0D 0A 20 sz]!=0) ++sz;..
0233B0: 20 77 68 69 6C 65 28 73 7A 29 20 7B 0D 0A 20 20 while(sz) {..
0233C0: 20 20 64 69 67 69 74 3D 6E 62 72 26 37 3B 20 6E digit=nbr&7; n
0233D0: 62 72 3D 28 6E 62 72 3E 3E 33 29 26 38 31 39 31 br=(nbr>>3)&8191
0233E0: 3B 0D 0A 20 20 20 20 73 74 72 5B 2D 2D 73 7A 5D ;.. str[--sz]
0233F0: 3D 64 69 67 69 74 2B 34 38 3B 0D 0A 20 20 20 20 =digit+48;..
023400: 69 66 28 6E 62 72 3D 3D 30 29 20 62 72 65 61 6B if(nbr==0) break
023410: 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 77 68 69 6C ;.. }.. whil
023420: 65 28 73 7A 29 20 73 74 72 5B 2D 2D 73 7A 5D 3D e(sz) str[--sz]=
023430: 27 20 27 3B 0D 0A 20 20 72 65 74 75 72 6E 20 73 ' ';.. return s
023440: 74 72 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 49 54 tr;.. }..>>> IT
023450: 4F 55 2E 43 20 36 31 38 0D 0A 23 69 6E 63 6C 75 OU.C 618..#inclu
023460: 64 65 20 73 74 64 69 6F 2E 68 0D 0A 2F 2A 0D 0A de stdio.h../*..
023470: 2A 2A 20 69 74 6F 75 20 2D 2D 20 63 6F 6E 76 65 ** itou -- conve
023480: 72 74 20 6E 62 72 20 74 6F 20 75 6E 73 69 67 6E rt nbr to unsign
023490: 65 64 20 64 65 63 69 6D 61 6C 20 73 74 72 69 6E ed decimal strin
0234A0: 67 20 6F 66 20 77 69 64 74 68 20 73 7A 0D 0A 2A g of width sz..*
0234B0: 2A 20 20 20 20 20 20 20 20 20 72 69 67 68 74 20 * right
0234C0: 61 64 6A 75 73 74 65 64 2C 20 62 6C 61 6E 6B 20 adjusted, blank
0234D0: 66 69 6C 6C 65 64 3B 20 72 65 74 75 72 6E 73 20 filled; returns
0234E0: 73 74 72 0D 0A 2A 2A 0D 0A 2A 2A 20 20 20 20 20 str..**..**
0234F0: 20 20 20 69 66 20 73 7A 20 3E 20 30 20 74 65 72 if sz > 0 ter
023500: 0A 69 73 78 64 69 67 69 74 28 63 29 20 69 6E 74 .isxdigit(c) int
023510: 20 63 3B 20 7B 0D 0A 20 20 72 65 74 75 72 6E 20 c; {.. return
023520: 28 28 63 3C 3D 27 66 27 20 26 26 20 63 3E 3D 27 ((c<='f' && c>='
023530: 61 27 29 20 7C 7C 0D 0A 20 20 20 20 20 20 20 20 a') ||..
023540: 20 20 28 63 3C 3D 27 46 27 20 26 26 20 63 3E 3D (c<='F' && c>=
023550: 27 41 27 29 20 7C 7C 0D 0A 20 20 20 20 20 20 20 'A') ||..
023560: 20 20 20 28 63 3C 3D 27 39 27 20 26 26 20 63 3E (c<='9' && c>
023570: 3D 27 30 27 29 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E ='0'));.. }..>>
023580: 3E 20 49 54 4F 41 2E 43 20 34 36 39 0D 0A 23 64 > ITOA.C 469..#d
023590: 65 66 69 6E 65 20 4E 4F 43 43 41 52 47 43 20 20 efine NOCCARGC
0235A0: 2F 2A 20 6E 6F 20 61 72 67 75 6D 65 6E 74 20 63 /* no argument c
0235B0: 6F 75 6E 74 20 70 61 73 73 69 6E 67 20 2A 2F 0D ount passing */.
0235C0: 0A 2F 2A 0D 0A 2A 2A 20 69 74 6F 61 28 6E 2C 73 ./*..** itoa(n,s
0235D0: 29 20 2D 20 43 6F 6E 76 65 72 74 20 6E 20 74 6F ) - Convert n to
0235E0: 20 63 68 61 72 61 63 74 65 72 73 20 69 6E 20 73 characters in s
0235F0: 20 0D 0A 2A 2F 0D 0A 69 74 6F 61 28 6E 2C 20 73 ..*/..itoa(n, s
023600: 29 20 63 68 61 72 20 2A 73 3B 20 69 6E 74 20 6E ) char *s; int n
023610: 3B 20 7B 0D 0A 20 20 69 6E 74 20 73 69 67 6E 3B ; {.. int sign;
023620: 0D 0A 20 20 63 68 61 72 20 2A 70 74 72 3B 0D 0A .. char *ptr;..
023630: 20 20 70 74 72 20 3D 20 73 3B 0D 0A 20 20 69 66 ptr = s;.. if
023640: 20 28 28 73 69 67 6E 20 3D 20 6E 29 20 3C 20 30 ((sign = n) < 0
023650: 29 20 2F 2A 20 72 65 63 6F 72 64 20 73 69 67 6E ) /* record sign
023660: 20 2A 2F 0D 0A 20 20 20 20 6E 20 3D 20 2D 6E 3B */.. n = -n;
023670: 20 20 20 20 20 2F 2A 20 6D 61 6B 65 20 6E 20 70 /* make n p
023680: 6F 73 69 74 69 76 65 20 2A 2F 0D 0A 20 20 64 6F ositive */.. do
023690: 20 7B 20 20 20 20 20 20 20 20 20 20 2F 2A 20 67 { /* g
0236A0: 65 6E 65 72 61 74 65 20 64 69 67 69 74 73 20 69 enerate digits i
0236B0: 6E 20 72 65 76 65 72 73 65 20 6F 72 64 65 72 20 n reverse order
0236C0: 2A 2F 0D 0A 20 20 20 20 2A 70 74 72 2B 2B 20 3D */.. *ptr++ =
0236D0: 20 6E 20 25 20 31 30 20 2B 20 27 30 27 3B 20 20 n % 10 + '0';
0236E0: 20 20 20 20 20 20 20 2F 2A 20 67 65 74 20 6E 65 /* get ne
0236F0: 78 74 20 64 69 67 69 74 20 2A 2F 0D 0A 20 20 20 xt digit */..
023700: 6D 69 6E 61 74 65 20 77 69 74 68 20 6E 75 6C 6C minate with null
023710: 20 62 79 74 65 0D 0A 2A 2A 20 20 20 20 20 20 20 byte..**
023720: 20 69 66 20 73 7A 20 3D 20 30 20 66 69 6E 64 20 if sz = 0 find
023730: 65 6E 64 20 6F 66 20 73 74 72 69 6E 67 0D 0A 2A end of string..*
023740: 2A 20 20 20 20 20 20 20 20 69 66 20 73 7A 20 3C * if sz <
023750: 20 30 20 75 73 65 20 6C 61 73 74 20 62 79 74 65 0 use last byte
023760: 20 66 6F 72 20 64 61 74 61 0D 0A 2A 2F 0D 0A 69 for data..*/..i
023770: 74 6F 75 28 6E 62 72 2C 20 73 74 72 2C 20 73 7A tou(nbr, str, sz
023780: 29 20 20 69 6E 74 20 6E 62 72 3B 20 20 63 68 61 ) int nbr; cha
023790: 72 20 73 74 72 5B 5D 3B 20 20 69 6E 74 20 73 7A r str[]; int sz
0237A0: 3B 20 20 7B 0D 0A 20 20 69 6E 74 20 6C 6F 77 62 ; {.. int lowb
0237B0: 69 74 3B 0D 0A 20 20 69 66 28 73 7A 3E 30 29 20 it;.. if(sz>0)
0237C0: 73 74 72 5B 2D 2D 73 7A 5D 3D 4E 55 4C 4C 3B 0D str[--sz]=NULL;.
0237D0: 0A 20 20 65 6C 73 65 20 69 66 28 73 7A 3C 30 29 . else if(sz<0)
0237E0: 20 73 7A 20 3D 20 2D 73 7A 3B 0D 0A 20 20 65 6C sz = -sz;.. el
0237F0: 73 65 20 77 68 69 6C 65 28 73 74 72 5B 73 7A 5D se while(str[sz]
023800: 21 3D 4E 55 4C 4C 29 20 2B 2B 73 7A 3B 0D 0A 20 !=NULL) ++sz;..
023810: 20 77 68 69 6C 65 28 73 7A 29 20 7B 0D 0A 20 20 while(sz) {..
023820: 20 20 6C 6F 77 62 69 74 3D 6E 62 72 26 31 3B 0D lowbit=nbr&1;.
023830: 0A 20 20 20 20 6E 62 72 3D 28 6E 62 72 3E 3E 31 . nbr=(nbr>>1
023840: 29 26 33 32 37 36 37 3B 20 20 2F 2A 20 64 69 76 )&32767; /* div
023850: 69 64 65 20 62 79 20 32 20 2A 2F 0D 0A 20 20 20 ide by 2 */..
023860: 20 73 74 72 5B 2D 2D 73 7A 5D 3D 28 28 6E 62 72 str[--sz]=((nbr
023870: 25 35 29 3C 3C 31 29 2B 6C 6F 77 62 69 74 2B 27 %5)<<1)+lowbit+'
023880: 30 27 3B 0D 0A 20 20 20 20 69 66 28 28 6E 62 72 0';.. if((nbr
023890: 3D 6E 62 72 2F 35 29 3D 3D 30 29 20 62 72 65 61 =nbr/5)==0) brea
0238A0: 6B 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 77 68 69 k;.. }.. whi
0238B0: 6C 65 28 73 7A 29 20 73 74 72 5B 2D 2D 73 7A 5D le(sz) str[--sz]
0238C0: 3D 27 20 27 3B 0D 0A 20 20 72 65 74 75 72 6E 20 =' ';.. return
0238D0: 73 74 72 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 49 str;.. }..>>> I
0238E0: 54 4F 58 2E 43 20 35 39 35 0D 0A 2F 2A 0D 0A 2A TOX.C 595../*..*
0238F0: 2A 20 69 74 6F 78 20 2D 2D 20 63 6F 6E 76 65 72 * itox -- conver
023900: 20 7D 20 77 68 69 6C 65 20 28 28 6E 20 3D 20 6E } while ((n = n
023910: 20 2F 20 31 30 29 20 3E 20 30 29 3B 20 20 20 20 / 10) > 0);
023920: 2F 2A 20 64 65 6C 65 74 65 20 69 74 20 2A 2F 0D /* delete it */.
023930: 0A 20 20 69 66 20 28 73 69 67 6E 20 3C 20 30 29 . if (sign < 0)
023940: 20 2A 70 74 72 2B 2B 20 3D 20 27 2D 27 3B 0D 0A *ptr++ = '-';..
023950: 20 20 2A 70 74 72 20 3D 20 27 5C 30 27 3B 0D 0A *ptr = '\0';..
023960: 20 20 72 65 76 65 72 73 65 28 73 29 3B 0D 0A 20 reverse(s);..
023970: 20 7D 0D 0A 3E 3E 3E 20 49 54 4F 41 42 2E 43 20 }..>>> ITOAB.C
023980: 34 37 35 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43 475..#define NOC
023990: 43 41 52 47 43 20 20 2F 2A 20 6E 6F 20 61 72 67 CARGC /* no arg
0239A0: 75 6D 65 6E 74 20 63 6F 75 6E 74 20 70 61 73 73 ument count pass
0239B0: 69 6E 67 20 2A 2F 0D 0A 2F 2A 0D 0A 2A 2A 20 69 ing */../*..** i
0239C0: 74 6F 61 62 28 6E 2C 73 2C 62 29 20 2D 20 43 6F toab(n,s,b) - Co
0239D0: 6E 76 65 72 74 20 22 75 6E 73 69 67 6E 65 64 22 nvert "unsigned"
0239E0: 20 6E 20 74 6F 20 63 68 61 72 61 63 74 65 72 73 n to characters
0239F0: 20 69 6E 20 73 20 75 73 69 6E 67 20 62 61 73 65 in s using base
023A00: 20 62 2E 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 b...**
023A10: 20 20 20 20 20 20 20 4E 4F 54 45 3A 20 54 68 69 NOTE: Thi
023A20: 73 20 69 73 20 61 20 6E 6F 6E 2D 73 74 61 6E 64 s is a non-stand
023A30: 61 72 64 20 66 75 6E 63 74 69 6F 6E 2E 0D 0A 2A ard function...*
023A40: 2F 0D 0A 69 74 6F 61 62 28 6E 2C 20 73 2C 20 62 /..itoab(n, s, b
023A50: 29 20 69 6E 74 20 6E 3B 20 63 68 61 72 20 2A 73 ) int n; char *s
023A60: 3B 20 69 6E 74 20 62 3B 20 7B 0D 0A 20 20 63 68 ; int b; {.. ch
023A70: 61 72 20 2A 70 74 72 3B 0D 0A 20 20 69 6E 74 20 ar *ptr;.. int
023A80: 6C 6F 77 62 69 74 3B 0D 0A 20 20 70 74 72 20 3D lowbit;.. ptr =
023A90: 20 73 3B 0D 0A 20 20 62 20 3E 3E 3D 20 31 3B 0D s;.. b >>= 1;.
023AA0: 0A 20 20 64 6F 20 7B 0D 0A 20 20 20 20 6C 6F 77 . do {.. low
023AB0: 62 69 74 20 3D 20 6E 20 26 20 31 3B 0D 0A 20 20 bit = n & 1;..
023AC0: 20 20 6E 20 3D 20 28 6E 20 3E 3E 20 31 29 20 26 n = (n >> 1) &
023AD0: 20 33 32 37 36 37 3B 0D 0A 20 20 20 20 2A 70 74 32767;.. *pt
023AE0: 72 20 3D 20 28 28 6E 20 25 20 62 29 20 3C 3C 20 r = ((n % b) <<
023AF0: 31 29 20 2B 20 6C 6F 77 62 69 74 3B 0D 0A 20 20 1) + lowbit;..
023B00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
023B10: 1E 00 01 00 02 09 52 E5 1E 00 41 02 00 00 00 02 ......R...A.....
023B20: 1E 00 46 02 00 00 00 02 1E 00 42 02 00 00 00 02 ..F.......B.....
023B30: 1E 00 47 02 00 00 00 02 1E 00 43 02 00 00 00 02 ..G.......C.....
023B40: 1E 00 48 02 00 00 00 02 1E 00 44 02 00 00 00 02 ..H.......D.....
023B50: 1E 00 49 02 00 00 00 02 1E 00 45 02 00 00 00 02 ..I.......E.....
023B60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023B70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023B80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023B90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023BA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023BB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023BC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023BD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023BE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023BF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023C00: 74 73 20 6E 62 72 20 74 6F 20 68 65 78 20 73 74 ts nbr to hex st
023C10: 72 69 6E 67 20 6F 66 20 6C 65 6E 67 74 68 20 73 ring of length s
023C20: 7A 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 72 69 z..** ri
023C30: 67 68 74 20 61 64 6A 75 73 74 65 64 20 61 6E 64 ght adjusted and
023C40: 20 62 6C 61 6E 6B 20 66 69 6C 6C 65 64 2C 20 72 blank filled, r
023C50: 65 74 75 72 6E 73 20 73 74 72 0D 0A 2A 2A 0D 0A eturns str..**..
023C60: 2A 2A 20 20 20 20 20 20 20 20 69 66 20 73 7A 20 ** if sz
023C70: 3E 20 30 20 74 65 72 6D 69 6E 61 74 65 20 77 69 > 0 terminate wi
023C80: 74 68 20 6E 75 6C 6C 20 62 79 74 65 0D 0A 2A 2A th null byte..**
023C90: 20 20 20 20 20 20 20 20 69 66 20 73 7A 20 3D 20 if sz =
023CA0: 30 20 66 69 6E 64 20 65 6E 64 20 6F 66 20 73 74 0 find end of st
023CB0: 72 69 6E 67 0D 0A 2A 2A 20 20 20 20 20 20 20 20 ring..**
023CC0: 69 66 20 73 7A 20 3C 20 30 20 75 73 65 20 6C 61 if sz < 0 use la
023CD0: 73 74 20 62 79 74 65 20 66 6F 72 20 64 61 74 61 st byte for data
023CE0: 0D 0A 2A 2F 0D 0A 69 74 6F 78 28 6E 62 72 2C 20 ..*/..itox(nbr,
023CF0: 73 74 72 2C 20 73 7A 29 20 20 69 6E 74 20 6E 62 str, sz) int nb
023D00: 72 3B 20 20 63 68 61 72 20 73 74 72 5B 5D 3B 20 r; char str[];
023D10: 20 69 6E 74 20 73 7A 3B 20 20 7B 0D 0A 20 20 69 int sz; {.. i
023D20: 6E 74 20 64 69 67 69 74 2C 20 6F 66 66 73 65 74 nt digit, offset
023D30: 3B 0D 0A 20 20 69 66 28 73 7A 3E 30 29 20 73 74 ;.. if(sz>0) st
023D40: 72 5B 2D 2D 73 7A 5D 3D 30 3B 0D 0A 20 20 65 6C r[--sz]=0;.. el
023D50: 73 65 20 69 66 28 73 7A 3C 30 29 20 73 7A 20 3D se if(sz<0) sz =
023D60: 20 2D 73 7A 3B 0D 0A 20 20 65 6C 73 65 20 77 68 -sz;.. else wh
023D70: 69 6C 65 28 73 74 72 5B 73 7A 5D 21 3D 30 29 20 ile(str[sz]!=0)
023D80: 2B 2B 73 7A 3B 0D 0A 20 20 77 68 69 6C 65 28 73 ++sz;.. while(s
023D90: 7A 29 20 7B 0D 0A 20 20 20 20 64 69 67 69 74 3D z) {.. digit=
023DA0: 6E 62 72 26 31 35 3B 20 6E 62 72 3D 28 6E 62 72 nbr&15; nbr=(nbr
023DB0: 3E 3E 34 29 26 34 30 39 35 3B 0D 0A 20 20 20 20 >>4)&4095;..
023DC0: 69 66 28 64 69 67 69 74 3C 31 30 29 20 6F 66 66 if(digit<10) off
023DD0: 73 65 74 3D 34 38 3B 20 65 6C 73 65 20 6F 66 66 set=48; else off
023DE0: 73 65 74 3D 35 35 3B 0D 0A 20 20 20 20 73 74 72 set=55;.. str
023DF0: 5B 2D 2D 73 7A 5D 3D 64 69 67 69 74 2B 6F 66 66 [--sz]=digit+off
023E00: 65 2C 20 4E 4F 29 29 3B 0D 0A 20 20 7D 0D 0A 3E e, NO));.. }..>
023E10: 3E 3E 20 4F 54 4F 49 2E 43 20 33 36 35 0D 0A 23 >> OTOI.C 365..#
023E20: 69 6E 63 6C 75 64 65 20 73 74 64 69 6F 2E 68 0D include stdio.h.
023E30: 0A 2F 2A 0D 0A 2A 2A 20 6F 74 6F 69 20 2D 2D 20 ./*..** otoi --
023E40: 63 6F 6E 76 65 72 74 20 75 6E 73 69 67 6E 65 64 convert unsigned
023E50: 20 6F 63 74 61 6C 20 73 74 72 69 6E 67 20 74 6F octal string to
023E60: 20 69 6E 74 65 67 65 72 20 6E 62 72 0D 0A 2A 2A integer nbr..**
023E70: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6E return
023E80: 73 20 66 69 65 6C 64 20 73 69 7A 65 2C 20 65 6C s field size, el
023E90: 73 65 20 45 52 52 20 6F 6E 20 65 72 72 6F 72 0D se ERR on error.
023EA0: 0A 2A 2F 0D 0A 6F 74 6F 69 28 6F 63 74 73 74 72 .*/..otoi(octstr
023EB0: 2C 20 6E 62 72 29 20 20 63 68 61 72 20 2A 6F 63 , nbr) char *oc
023EC0: 74 73 74 72 3B 20 20 69 6E 74 20 2A 6E 62 72 3B tstr; int *nbr;
023ED0: 20 20 7B 0D 0A 20 20 69 6E 74 20 64 2C 74 3B 20 {.. int d,t;
023EE0: 64 3D 30 3B 0D 0A 20 20 2A 6E 62 72 3D 30 3B 0D d=0;.. *nbr=0;.
023EF0: 0A 20 20 77 68 69 6C 65 28 28 2A 6F 63 74 73 74 . while((*octst
023F00: 72 3E 3D 27 30 27 29 26 28 2A 6F 63 74 73 74 72 r>='0')&(*octstr
023F10: 3C 3D 27 37 27 29 29 20 7B 0D 0A 20 20 20 20 74 <='7')) {.. t
023F20: 3D 2A 6E 62 72 3B 0D 0A 20 20 20 20 74 3D 28 74 =*nbr;.. t=(t
023F30: 3C 3C 33 29 20 2B 20 28 2A 6F 63 74 73 74 72 2B <<3) + (*octstr+
023F40: 2B 20 2D 20 27 30 27 29 3B 0D 0A 20 20 20 20 69 + - '0');.. i
023F50: 66 20 28 28 74 3E 3D 30 29 26 28 2A 6E 62 72 3C f ((t>=0)&(*nbr<
023F60: 30 29 29 20 72 65 74 75 72 6E 20 45 52 52 3B 0D 0)) return ERR;.
023F70: 0A 20 20 20 20 64 2B 2B 3B 20 2A 6E 62 72 3D 74 . d++; *nbr=t
023F80: 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 72 65 74 75 ;.. }.. retu
023F90: 72 6E 20 64 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 rn d;.. }..>>>
023FA0: 50 41 44 2E 43 20 32 30 35 0D 0A 23 64 65 66 69 PAD.C 205..#defi
023FB0: 6E 65 20 4E 4F 43 43 41 52 47 43 20 20 2F 2A 20 ne NOCCARGC /*
023FC0: 6E 6F 20 61 72 67 75 6D 65 6E 74 20 63 6F 75 6E no argument coun
023FD0: 74 20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A 2F 2A t passing */../*
023FE0: 0D 0A 2A 2A 20 50 6C 61 63 65 20 6E 20 6F 63 63 ..** Place n occ
023FF0: 75 72 72 65 6E 63 65 73 20 6F 66 20 63 68 20 61 urrences of ch a
024000: 73 65 74 3B 0D 0A 20 20 20 20 69 66 28 6E 62 72 set;.. if(nbr
024010: 3D 3D 30 29 20 62 72 65 61 6B 3B 0D 0A 20 20 20 ==0) break;..
024020: 20 7D 0D 0A 20 20 77 68 69 6C 65 28 73 7A 29 20 }.. while(sz)
024030: 73 74 72 5B 2D 2D 73 7A 5D 3D 27 20 27 3B 0D 0A str[--sz]=' ';..
024040: 20 20 72 65 74 75 72 6E 20 73 74 72 3B 0D 0A 20 return str;..
024050: 20 7D 0D 0A 3E 3E 3E 20 4C 45 46 54 2E 43 20 31 }..>>> LEFT.C 1
024060: 36 35 0D 0A 2F 2A 0D 0A 2A 2A 20 6C 65 66 74 20 65../*..** left
024070: 2D 2D 20 6C 65 66 74 20 61 64 6A 75 73 74 20 61 -- left adjust a
024080: 6E 64 20 6E 75 6C 6C 20 74 65 72 6D 69 6E 61 74 nd null terminat
024090: 65 20 61 20 73 74 72 69 6E 67 0D 0A 2A 2F 0D 0A e a string..*/..
0240A0: 6C 65 66 74 28 73 74 72 29 20 63 68 61 72 20 2A left(str) char *
0240B0: 73 74 72 3B 20 7B 0D 0A 20 20 63 68 61 72 20 2A str; {.. char *
0240C0: 73 74 72 32 3B 0D 0A 20 20 73 74 72 32 3D 73 74 str2;.. str2=st
0240D0: 72 3B 0D 0A 20 20 77 68 69 6C 65 28 2A 73 74 72 r;.. while(*str
0240E0: 32 3D 3D 27 20 27 29 20 2B 2B 73 74 72 32 3B 0D 2==' ') ++str2;.
0240F0: 0A 20 20 77 68 69 6C 65 28 2A 73 74 72 2B 2B 20 . while(*str++
024100: 3D 20 2A 73 74 72 32 2B 2B 29 3B 0D 0A 20 20 7D = *str2++);.. }
024110: 0D 0A 3E 3E 3E 20 4C 45 58 43 4D 50 2E 43 20 31 ..>>> LEXCMP.C 1
024120: 33 36 32 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43 362..#define NOC
024130: 43 41 52 47 43 20 20 2F 2A 20 6E 6F 20 61 72 67 CARGC /* no arg
024140: 75 6D 65 6E 74 20 63 6F 75 6E 74 20 70 61 73 73 ument count pass
024150: 69 6E 67 20 2A 2F 0D 0A 2F 2A 0D 0A 2A 2A 20 6C ing */../*..** l
024160: 65 78 63 6D 70 28 73 2C 20 74 29 20 2D 20 52 65 excmp(s, t) - Re
024170: 74 75 72 6E 20 61 20 6E 75 6D 62 65 72 20 3C 30 turn a number <0
024180: 2C 20 30 2C 20 6F 72 3E 30 20 0D 0A 2A 2A 20 20 , 0, or>0 ..**
024190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 73 as
0241A0: 20 73 20 69 73 20 3C 2C 20 3D 2C 20 6F 72 20 3E s is <, =, or >
0241B0: 20 74 2E 0D 0A 2A 2F 0D 0A 6C 65 78 63 6D 70 28 t...*/..lexcmp(
0241C0: 73 2C 20 74 29 20 63 68 61 72 20 2A 73 2C 20 2A s, t) char *s, *
0241D0: 74 3B 20 7B 0D 0A 20 20 77 68 69 6C 65 28 6C 65 t; {.. while(le
0241E0: 78 6F 72 64 65 72 28 2A 73 2C 20 2A 74 29 20 3D xorder(*s, *t) =
0241F0: 3D 20 30 29 0D 0A 20 20 20 20 69 66 28 2A 73 2B = 0).. if(*s+
024200: 74 20 64 65 73 74 2E 0D 0A 2A 2F 0D 0A 70 61 64 t dest...*/..pad
024210: 28 64 65 73 74 2C 20 63 68 2C 20 6E 29 20 63 68 (dest, ch, n) ch
024220: 61 72 20 2A 64 65 73 74 2C 20 2A 6E 3B 20 69 6E ar *dest, *n; in
024230: 74 20 63 68 3B 20 7B 0D 0A 20 20 2F 2A 20 6E 20 t ch; {.. /* n
024240: 69 73 20 61 20 66 61 6B 65 20 75 6E 73 69 67 6E is a fake unsign
024250: 65 64 20 69 6E 74 65 67 65 72 20 2A 2F 0D 0A 20 ed integer */..
024260: 20 77 68 69 6C 65 28 6E 2D 2D 29 20 2A 64 65 73 while(n--) *des
024270: 74 2B 2B 20 3D 20 63 68 3B 0D 0A 20 20 7D 0D 0A t++ = ch;.. }..
024280: 3E 3E 3E 20 50 4F 4C 4C 2E 43 20 33 37 37 0D 0A >>> POLL.C 377..
024290: 23 64 65 66 69 6E 65 20 4E 4F 43 43 41 52 47 43 #define NOCCARGC
0242A0: 20 20 2F 2A 20 6E 6F 20 61 72 67 75 6D 65 6E 74 /* no argument
0242B0: 20 63 6F 75 6E 74 20 70 61 73 73 69 6E 67 20 2A count passing *
0242C0: 2F 0D 0A 23 69 6E 63 6C 75 64 65 20 73 74 64 69 /..#include stdi
0242D0: 6F 2E 68 0D 0A 23 69 6E 63 6C 75 64 65 20 63 6C o.h..#include cl
0242E0: 69 62 2E 64 65 66 0D 0A 2F 2A 0D 0A 2A 2A 20 50 ib.def../*..** P
0242F0: 6F 6C 6C 20 66 6F 72 20 63 6F 6E 73 6F 6C 65 20 oll for console
024300: 69 6E 70 75 74 20 6F 72 20 69 6E 74 65 72 72 75 input or interru
024310: 70 74 69 6F 6E 0D 0A 2A 2F 0D 0A 70 6F 6C 6C 28 ption..*/..poll(
024320: 70 61 75 73 65 29 20 69 6E 74 20 70 61 75 73 65 pause) int pause
024330: 3B 20 7B 0D 0A 20 20 69 6E 74 20 69 3B 0D 0A 20 ; {.. int i;..
024340: 20 69 20 3D 20 55 62 64 6F 73 28 44 43 4F 4E 49 i = Ubdos(DCONI
024350: 4F 2C 20 32 35 35 29 3B 0D 0A 20 20 69 66 28 70 O, 255);.. if(p
024360: 61 75 73 65 29 20 7B 0D 0A 20 20 20 20 69 66 28 ause) {.. if(
024370: 69 20 3D 3D 20 50 41 55 53 45 29 20 7B 0D 0A 20 i == PAUSE) {..
024380: 20 20 20 20 20 77 68 69 6C 65 28 21 28 69 20 3D while(!(i =
024390: 20 55 62 64 6F 73 28 44 43 4F 4E 49 4F 2C 20 32 Ubdos(DCONIO, 2
0243A0: 35 35 29 29 29 20 3B 0D 0A 20 20 20 20 20 20 69 55))) ;.. i
0243B0: 66 28 69 20 3D 3D 20 41 42 4F 52 54 29 20 65 78 f(i == ABORT) ex
0243C0: 69 74 28 30 29 3B 0D 0A 20 20 20 20 20 20 72 65 it(0);.. re
0243D0: 74 75 72 6E 20 28 30 29 3B 0D 0A 20 20 20 20 20 turn (0);..
0243E0: 20 7D 0D 0A 20 20 20 20 69 66 28 69 20 3D 3D 20 }.. if(i ==
0243F0: 41 42 4F 52 54 29 20 65 78 69 74 28 30 29 3B 0D ABORT) exit(0);.
024400: 2B 29 20 2B 2B 74 3B 0D 0A 20 20 20 20 65 6C 73 +) ++t;.. els
024410: 65 20 72 65 74 75 72 6E 20 28 30 29 3B 0D 0A 20 e return (0);..
024420: 20 72 65 74 75 72 6E 20 28 6C 65 78 6F 72 64 65 return (lexorde
024430: 72 28 2A 73 2C 20 2A 74 29 29 3B 0D 0A 20 20 7D r(*s, *t));.. }
024440: 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 6C 65 78 6F 72 ..../*..** lexor
024450: 64 65 72 28 63 31 2C 20 63 32 29 0D 0A 2A 2A 0D der(c1, c2)..**.
024460: 0A 2A 2A 20 52 65 74 75 72 6E 20 61 20 6E 65 67 .** Return a neg
024470: 61 74 69 76 65 2C 20 7A 65 72 6F 2C 20 6F 72 20 ative, zero, or
024480: 70 6F 73 69 74 69 76 65 20 6E 75 6D 62 65 72 20 positive number
024490: 69 66 0D 0A 2A 2A 20 63 31 20 69 73 20 6C 65 73 if..** c1 is les
0244A0: 73 20 74 68 61 6E 2C 20 65 71 75 61 6C 20 74 6F s than, equal to
0244B0: 2C 20 6F 72 20 67 72 65 61 74 65 72 20 74 68 61 , or greater tha
0244C0: 6E 20 63 32 2C 0D 0A 2A 2A 20 62 61 73 65 64 20 n c2,..** based
0244D0: 6F 6E 20 61 20 6C 65 78 69 63 6F 67 72 61 70 68 on a lexicograph
0244E0: 69 63 61 6C 20 28 64 69 63 74 69 6F 6E 61 72 79 ical (dictionary
0244F0: 20 6F 72 64 65 72 29 0D 0A 2A 2A 20 63 6F 6C 61 order)..** cola
024500: 74 69 6E 67 20 73 65 71 75 65 6E 63 65 2E 0D 0A ting sequence...
024510: 2A 2A 0D 0A 2A 2F 0D 0A 63 68 61 72 20 55 6C 65 **..*/..char Ule
024520: 78 5B 31 32 38 5D 20 3D 20 7B 0D 0A 20 20 20 20 x[128] = {..
024530: 20 2F 2A 2A 2A 2A 20 4E 55 4C 20 2D 20 2F 20 2A /**** NUL - / *
024540: 2A 2A 2A 2F 0D 0A 20 20 20 20 20 20 20 30 2C 20 ***/.. 0,
024550: 20 31 2C 20 20 32 2C 20 20 33 2C 20 20 34 2C 20 1, 2, 3, 4,
024560: 20 35 2C 20 20 36 2C 20 20 37 2C 20 20 38 2C 20 5, 6, 7, 8,
024570: 20 39 2C 0D 0A 20 20 20 20 20 20 31 30 2C 20 31 9,.. 10, 1
024580: 31 2C 20 31 32 2C 20 31 33 2C 20 31 34 2C 20 31 1, 12, 13, 14, 1
024590: 35 2C 20 31 36 2C 20 31 37 2C 20 31 38 2C 20 31 5, 16, 17, 18, 1
0245A0: 39 2C 0D 0A 20 20 20 20 20 20 32 30 2C 20 32 31 9,.. 20, 21
0245B0: 2C 20 32 32 2C 20 32 33 2C 20 32 34 2C 20 32 35 , 22, 23, 24, 25
0245C0: 2C 20 32 36 2C 20 32 37 2C 20 32 38 2C 20 32 39 , 26, 27, 28, 29
0245D0: 2C 0D 0A 20 20 20 20 20 20 33 30 2C 20 33 31 2C ,.. 30, 31,
0245E0: 20 33 32 2C 20 33 33 2C 20 33 34 2C 20 33 35 2C 32, 33, 34, 35,
0245F0: 20 33 36 2C 20 33 37 2C 20 33 38 2C 20 33 39 2C 36, 37, 38, 39,
024600: 0A 20 20 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E . }.. return
024610: 20 28 69 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 (i);.. }..>>>
024620: 50 55 54 43 48 41 52 2E 43 20 31 36 39 0D 0A 23 PUTCHAR.C 169..#
024630: 64 65 66 69 6E 65 20 4E 4F 43 43 41 52 47 43 20 define NOCCARGC
024640: 20 2F 2A 20 6E 6F 20 61 72 67 75 6D 65 6E 74 20 /* no argument
024650: 63 6F 75 6E 74 20 70 61 73 73 69 6E 67 20 2A 2F count passing */
024660: 0D 0A 23 69 6E 63 6C 75 64 65 20 73 74 64 69 6F ..#include stdio
024670: 2E 68 0D 0A 2F 2A 0D 0A 2A 2A 20 57 72 69 74 65 .h../*..** Write
024680: 20 63 68 61 72 61 63 74 65 72 20 74 6F 20 73 74 character to st
024690: 61 6E 64 61 72 64 20 6F 75 74 70 75 74 2E 20 0D andard output. .
0246A0: 0A 2A 2F 0D 0A 70 75 74 63 68 61 72 28 63 68 29 .*/..putchar(ch)
0246B0: 20 69 6E 74 20 63 68 3B 20 7B 0D 0A 20 20 72 65 int ch; {.. re
0246C0: 74 75 72 6E 20 28 66 70 75 74 63 28 63 68 2C 20 turn (fputc(ch,
0246D0: 73 74 64 6F 75 74 29 29 3B 0D 0A 20 20 7D 0D 0A stdout));.. }..
0246E0: 3E 3E 3E 20 50 55 54 53 2E 43 20 31 39 31 0D 0A >>> PUTS.C 191..
0246F0: 23 64 65 66 69 6E 65 20 4E 4F 43 43 41 52 47 43 #define NOCCARGC
024700: 20 20 2F 2A 20 6E 6F 20 61 72 67 75 6D 65 6E 74 /* no argument
024710: 20 63 6F 75 6E 74 20 70 61 73 73 69 6E 67 20 2A count passing *
024720: 2F 0D 0A 23 69 6E 63 6C 75 64 65 20 73 74 64 69 /..#include stdi
024730: 6F 2E 68 0D 0A 2F 2A 0D 0A 2A 2A 20 57 72 69 74 o.h../*..** Writ
024740: 65 20 73 74 72 69 6E 67 20 74 6F 20 73 74 61 6E e string to stan
024750: 64 61 72 64 20 6F 75 74 70 75 74 2E 20 0D 0A 2A dard output. ..*
024760: 2F 0D 0A 70 75 74 73 28 73 74 72 69 6E 67 29 20 /..puts(string)
024770: 63 68 61 72 20 2A 73 74 72 69 6E 67 3B 20 7B 0D char *string; {.
024780: 0A 20 20 66 70 75 74 73 28 73 74 72 69 6E 67 2C . fputs(string,
024790: 20 73 74 64 6F 75 74 29 3B 0D 0A 20 20 66 70 75 stdout);.. fpu
0247A0: 74 63 28 27 5C 6E 27 2C 20 73 74 64 6F 75 74 29 tc('\n', stdout)
0247B0: 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 52 45 4E 41 ;.. }..>>> RENA
0247C0: 4D 45 2E 43 20 35 33 39 0D 0A 23 64 65 66 69 6E ME.C 539..#defin
0247D0: 65 20 4E 4F 43 43 41 52 47 43 20 20 2F 2A 20 6E e NOCCARGC /* n
0247E0: 6F 20 61 72 67 75 6D 65 6E 74 20 63 6F 75 6E 74 o argument count
0247F0: 20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A 23 69 6E passing */..#in
024800: 0D 0A 20 20 20 20 20 20 34 30 2C 20 34 31 2C 20 .. 40, 41,
024810: 34 32 2C 20 34 33 2C 20 34 34 2C 20 34 35 2C 20 42, 43, 44, 45,
024820: 34 36 2C 20 34 37 2C 0D 0A 20 20 20 20 20 2F 2A 46, 47,.. /*
024830: 2A 2A 2A 20 30 2D 39 20 2A 2A 2A 2A 2F 0D 0A 20 *** 0-9 ****/..
024840: 20 20 20 20 20 36 35 2C 20 36 36 2C 20 36 37 2C 65, 66, 67,
024850: 20 36 38 2C 20 36 39 2C 20 37 30 2C 20 37 31 2C 68, 69, 70, 71,
024860: 20 37 32 2C 20 37 33 2C 20 37 34 2C 0D 0A 20 20 72, 73, 74,..
024870: 20 20 20 2F 2A 2A 2A 2A 20 3A 20 3B 20 3C 20 3D /**** : ; < =
024880: 20 3E 20 3F 20 40 20 2A 2A 2A 2A 2F 0D 0A 20 20 > ? @ ****/..
024890: 20 20 20 20 34 38 2C 20 34 39 2C 20 35 30 2C 20 48, 49, 50,
0248A0: 35 31 2C 20 35 32 2C 20 35 33 2C 20 35 34 2C 0D 51, 52, 53, 54,.
0248B0: 0A 20 20 20 20 20 2F 2A 2A 2A 2A 20 41 2D 5A 20 . /**** A-Z
0248C0: 2A 2A 2A 2A 2F 0D 0A 20 20 20 20 20 20 37 35 2C ****/.. 75,
0248D0: 20 37 36 2C 20 37 37 2C 20 37 38 2C 20 37 39 2C 76, 77, 78, 79,
0248E0: 20 38 30 2C 20 38 31 2C 20 38 32 2C 20 38 33 2C 80, 81, 82, 83,
0248F0: 20 38 34 2C 20 38 35 2C 20 38 36 2C 20 38 37 2C 84, 85, 86, 87,
024900: 0D 0A 20 20 20 20 20 20 38 38 2C 20 38 39 2C 20 .. 88, 89,
024910: 39 30 2C 20 39 31 2C 20 39 32 2C 20 39 33 2C 20 90, 91, 92, 93,
024920: 39 34 2C 20 39 35 2C 20 39 36 2C 20 39 37 2C 20 94, 95, 96, 97,
024930: 39 38 2C 20 39 39 2C 31 30 30 2C 0D 0A 20 20 20 98, 99,100,..
024940: 20 20 2F 2A 2A 2A 2A 20 5B 20 5C 20 5D 20 5E 20 /**** [ \ ] ^
024950: 55 20 60 20 2A 2A 2A 2A 2F 0D 0A 20 20 20 20 20 U ` ****/..
024960: 20 35 35 2C 20 35 36 2C 20 35 37 2C 20 35 38 2C 55, 56, 57, 58,
024970: 20 35 39 2C 20 36 30 2C 0D 0A 20 20 20 20 20 2F 59, 60,.. /
024980: 2A 2A 2A 2A 20 61 2D 7A 20 2A 2A 2A 2A 2F 0D 0A **** a-z ****/..
024990: 20 20 20 20 20 20 37 35 2C 20 37 36 2C 20 37 37 75, 76, 77
0249A0: 2C 20 37 38 2C 20 37 39 2C 20 38 30 2C 20 38 31 , 78, 79, 80, 81
0249B0: 2C 20 38 32 2C 20 38 33 2C 20 38 34 2C 20 38 35 , 82, 83, 84, 85
0249C0: 2C 20 38 36 2C 20 38 37 2C 0D 0A 20 20 20 20 20 , 86, 87,..
0249D0: 20 38 38 2C 20 38 39 2C 20 39 30 2C 20 39 31 2C 88, 89, 90, 91,
0249E0: 20 39 32 2C 20 39 33 2C 20 39 34 2C 20 39 35 2C 92, 93, 94, 95,
0249F0: 20 39 36 2C 20 39 37 2C 20 39 38 2C 20 39 39 2C 96, 97, 98, 99,
024A00: 63 6C 75 64 65 20 73 74 64 69 6F 2E 68 0D 0A 23 clude stdio.h..#
024A10: 69 6E 63 6C 75 64 65 20 63 6C 69 62 2E 64 65 66 include clib.def
024A20: 0D 0A 2F 2A 0D 0A 2A 2A 20 52 65 6E 61 6D 65 20 ../*..** Rename
024A30: 61 20 66 69 6C 65 2E 0D 0A 2A 2A 20 20 66 72 6F a file...** fro
024A40: 6D 20 3D 20 61 64 64 72 65 73 73 20 6F 66 20 6F m = address of o
024A50: 6C 64 20 66 69 6C 65 6E 61 6D 65 2E 0D 0A 2A 2A ld filename...**
024A60: 20 20 20 20 74 6F 20 3D 20 61 64 64 72 65 73 73 to = address
024A70: 20 6F 66 20 6E 65 77 20 66 69 6C 65 6E 61 6D 65 of new filename
024A80: 2E 0D 0A 2A 2A 20 20 52 65 74 75 72 6E 73 20 4E ...** Returns N
024A90: 55 4C 4C 20 6F 6E 20 73 75 63 63 65 73 73 2C 20 ULL on success,
024AA0: 65 6C 73 65 20 45 52 52 2E 0D 0A 2A 2F 0D 0A 72 else ERR...*/..r
024AB0: 65 6E 61 6D 65 28 66 72 6F 6D 2C 20 74 6F 29 20 ename(from, to)
024AC0: 63 68 61 72 20 2A 66 72 6F 6D 2C 20 2A 74 6F 3B char *from, *to;
024AD0: 20 7B 0D 0A 20 20 63 68 61 72 20 66 63 62 5B 46 {.. char fcb[F
024AE0: 43 42 53 49 5A 45 5D 3B 0D 0A 20 20 70 61 64 28 CBSIZE];.. pad(
024AF0: 66 63 62 2C 20 4E 55 4C 4C 2C 20 46 43 42 53 49 fcb, NULL, FCBSI
024B00: 5A 45 29 3B 0D 0A 20 20 69 66 28 21 55 6E 65 77 ZE);.. if(!Unew
024B10: 66 63 62 28 74 6F 2C 20 66 63 62 29 20 7C 7C 20 fcb(to, fcb) ||
024B20: 55 62 64 6F 73 28 4F 50 4E 46 49 4C 2C 20 66 63 Ubdos(OPNFIL, fc
024B30: 62 29 20 21 3D 20 32 35 35 29 20 7B 0D 0A 20 20 b) != 255) {..
024B40: 20 20 55 62 64 6F 73 28 43 4C 4F 46 49 4C 2C 20 Ubdos(CLOFIL,
024B50: 66 63 62 29 3B 0D 0A 20 20 20 20 72 65 74 75 72 fcb);.. retur
024B60: 6E 20 28 45 52 52 29 3B 0D 0A 20 20 20 20 7D 0D n (ERR);.. }.
024B70: 0A 20 20 69 66 28 55 6E 65 77 66 63 62 28 66 72 . if(Unewfcb(fr
024B80: 6F 6D 2C 20 66 63 62 29 20 26 26 0D 0A 20 20 20 om, fcb) &&..
024B90: 20 20 55 6E 65 77 66 63 62 28 74 6F 2C 20 66 63 Unewfcb(to, fc
024BA0: 62 2B 4E 41 4D 45 4F 46 46 32 29 20 26 26 0D 0A b+NAMEOFF2) &&..
024BB0: 20 20 20 20 20 55 62 64 6F 73 28 52 45 4E 41 4D Ubdos(RENAM
024BC0: 45 2C 20 66 63 62 29 20 21 3D 20 32 35 35 29 0D E, fcb) != 255).
024BD0: 0A 20 20 20 20 72 65 74 75 72 6E 20 28 4E 55 4C . return (NUL
024BE0: 4C 29 3B 0D 0A 20 20 72 65 74 75 72 6E 20 28 45 L);.. return (E
024BF0: 52 52 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 52 RR);.. }..>>> R
024C00: 31 30 30 2C 0D 0A 20 20 20 20 20 2F 2A 2A 2A 2A 100,.. /****
024C10: 20 7B 20 7C 20 7D 20 7E 20 2A 2A 2A 2A 2F 0D 0A { | } ~ ****/..
024C20: 20 20 20 20 20 20 36 31 2C 20 36 32 2C 20 36 33 61, 62, 63
024C30: 2C 20 36 34 2C 0D 0A 20 20 20 20 20 2F 2A 2A 2A , 64,.. /***
024C40: 2A 20 44 45 4C 20 2A 2A 2A 2A 2F 0D 0A 20 20 20 * DEL ****/..
024C50: 20 20 31 30 31 0D 0A 20 20 20 20 20 7D 3B 0D 0A 101.. };..
024C60: 0D 0A 6C 65 78 6F 72 64 65 72 28 63 31 2C 20 63 ..lexorder(c1, c
024C70: 32 29 20 63 68 61 72 20 63 31 2C 20 63 32 3B 20 2) char c1, c2;
024C80: 7B 0D 0A 20 20 72 65 74 75 72 6E 28 55 6C 65 78 {.. return(Ulex
024C90: 5B 63 31 5D 20 2D 20 55 6C 65 78 5B 63 32 5D 29 [c1] - Ulex[c2])
024CA0: 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 4C 49 4E 4B ;.. }..>>> LINK
024CB0: 2E 4D 41 43 20 33 30 0D 0A 55 6C 69 6E 6B 3A 3A .MAC 30..Ulink::
024CC0: 20 65 78 74 20 55 6D 61 69 6E 0D 0A 20 20 20 20 ext Umain..
024CD0: 20 20 20 20 65 6E 64 0D 0A 3E 3E 3E 20 4D 41 4C end..>>> MAL
024CE0: 4C 4F 43 2E 43 20 32 38 31 0D 0A 23 64 65 66 69 LOC.C 281..#defi
024CF0: 6E 65 20 4E 4F 43 43 41 52 47 43 20 20 2F 2A 20 ne NOCCARGC /*
024D00: 6E 6F 20 61 72 67 75 6D 65 6E 74 20 63 6F 75 6E no argument coun
024D10: 74 20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A 23 69 t passing */..#i
024D20: 6E 63 6C 75 64 65 20 73 74 64 69 6F 2E 68 0D 0A nclude stdio.h..
024D30: 2F 2A 0D 0A 2A 2A 20 4D 65 6D 6F 72 79 20 61 6C /*..** Memory al
024D40: 6C 6F 63 61 74 69 6F 6E 20 6F 66 20 73 69 7A 65 location of size
024D50: 20 62 79 74 65 73 2E 0D 0A 2A 2A 20 73 69 7A 65 bytes...** size
024D60: 20 20 3D 20 53 69 7A 65 20 6F 66 20 74 68 65 20 = Size of the
024D70: 62 6C 6F 63 6B 20 69 6E 20 62 79 74 65 73 2E 0D block in bytes..
024D80: 0A 2A 2A 20 52 65 74 75 72 6E 73 20 74 68 65 20 .** Returns the
024D90: 61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20 61 address of the a
024DA0: 6C 6C 6F 63 61 74 65 64 20 62 6C 6F 63 6B 2C 0D llocated block,.
024DB0: 0A 2A 2A 20 65 6C 73 65 20 4E 55 4C 4C 20 66 6F .** else NULL fo
024DC0: 72 20 66 61 69 6C 75 72 65 2E 0D 0A 2A 2F 0D 0A r failure...*/..
024DD0: 6D 61 6C 6C 6F 63 28 73 69 7A 65 29 20 63 68 61 malloc(size) cha
024DE0: 72 20 2A 73 69 7A 65 3B 20 7B 0D 0A 20 20 72 65 r *size; {.. re
024DF0: 74 75 72 6E 20 28 55 61 6C 6C 6F 63 28 73 69 7A turn (Ualloc(siz
024E00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
024E10: 1F 00 01 00 02 09 52 E5 1F 00 41 02 00 00 00 02 ......R...A.....
024E20: 1F 00 46 02 00 00 00 02 1F 00 42 02 00 00 00 02 ..F.......B.....
024E30: 1F 00 47 02 00 00 00 02 1F 00 43 02 00 00 00 02 ..G.......C.....
024E40: 1F 00 48 02 00 00 00 02 1F 00 44 02 00 00 00 02 ..H.......D.....
024E50: 1F 00 49 02 00 00 00 02 1F 00 45 02 00 00 00 02 ..I.......E.....
024E60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024E70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024E80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024E90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024EA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024EB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024EC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024ED0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024EE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024EF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024F00: 45 56 45 52 53 45 2E 43 20 32 32 30 0D 0A 23 64 EVERSE.C 220..#d
024F10: 65 66 69 6E 65 20 4E 4F 43 43 41 52 47 43 20 20 efine NOCCARGC
024F20: 2F 2A 20 6E 6F 20 61 72 67 75 6D 65 6E 74 20 63 /* no argument c
024F30: 6F 75 6E 74 20 70 61 73 73 69 6E 67 20 2A 2F 0D ount passing */.
024F40: 0A 2F 2A 0D 0A 2A 2A 20 72 65 76 65 72 73 65 20 ./*..** reverse
024F50: 73 74 72 69 6E 67 20 69 6E 20 70 6C 61 63 65 20 string in place
024F60: 0D 0A 2A 2F 0D 0A 72 65 76 65 72 73 65 28 73 29 ..*/..reverse(s)
024F70: 20 63 68 61 72 20 2A 73 3B 20 7B 0D 0A 20 20 63 char *s; {.. c
024F80: 68 61 72 20 2A 6A 3B 0D 0A 20 20 69 6E 74 20 63 har *j;.. int c
024F90: 3B 0D 0A 20 20 6A 20 3D 20 73 20 2B 20 73 74 72 ;.. j = s + str
024FA0: 6C 65 6E 28 73 29 20 2D 20 31 3B 0D 0A 20 20 77 len(s) - 1;.. w
024FB0: 68 69 6C 65 28 73 20 3C 20 6A 29 20 7B 0D 0A 20 hile(s < j) {..
024FC0: 20 20 20 63 20 3D 20 2A 73 3B 0D 0A 20 20 20 20 c = *s;..
024FD0: 2A 73 2B 2B 20 3D 20 2A 6A 3B 0D 0A 20 20 20 20 *s++ = *j;..
024FE0: 2A 6A 2D 2D 20 3D 20 63 3B 0D 0A 20 20 20 20 7D *j-- = c;.. }
024FF0: 0D 0A 20 20 7D 0D 0A 0D 0A 3E 3E 3E 20 52 45 57 .. }....>>> REW
025000: 49 4E 44 2E 43 20 31 33 38 0D 0A 23 64 65 66 69 IND.C 138..#defi
025010: 6E 65 20 4E 4F 43 43 41 52 47 43 20 20 2F 2A 20 ne NOCCARGC /*
025020: 6E 6F 20 61 72 67 75 6D 65 6E 74 20 63 6F 75 6E no argument coun
025030: 74 20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A 2F 2A t passing */../*
025040: 0D 0A 2A 2A 20 52 65 77 69 6E 64 20 66 69 6C 65 ..** Rewind file
025050: 20 74 6F 20 62 65 67 69 6E 6E 69 6E 67 2E 20 0D to beginning. .
025060: 0A 2A 2F 0D 0A 72 65 77 69 6E 64 28 66 64 29 20 .*/..rewind(fd)
025070: 69 6E 74 20 66 64 3B 20 7B 0D 0A 20 20 72 65 74 int fd; {.. ret
025080: 75 72 6E 28 63 73 65 65 6B 28 66 64 2C 20 30 2C urn(cseek(fd, 0,
025090: 20 30 29 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 0));.. }..>>>
0250A0: 53 49 47 4E 2E 43 20 31 34 38 0D 0A 2F 2A 0D 0A SIGN.C 148../*..
0250B0: 2A 2A 20 73 69 67 6E 20 2D 2D 20 72 65 74 75 72 ** sign -- retur
0250C0: 6E 20 2D 31 2C 20 30 2C 20 2B 31 20 64 65 70 65 n -1, 0, +1 depe
0250D0: 6E 64 69 6E 67 20 6F 6E 20 74 68 65 20 73 69 67 nding on the sig
0250E0: 6E 20 6F 66 20 6E 62 72 0D 0A 2A 2F 0D 0A 73 69 n of nbr..*/..si
0250F0: 67 6E 28 6E 62 72 29 20 20 69 6E 74 20 6E 62 72 gn(nbr) int nbr
025100: 73 74 2C 20 73 6F 75 72 2C 20 6E 29 20 63 68 61 st, sour, n) cha
025110: 72 20 2A 64 65 73 74 2C 20 2A 73 6F 75 72 3B 20 r *dest, *sour;
025120: 69 6E 74 20 6E 3B 20 7B 0D 0A 20 20 63 68 61 72 int n; {.. char
025130: 20 2A 64 3B 0D 0A 20 20 64 20 3D 20 64 65 73 74 *d;.. d = dest
025140: 3B 0D 0A 20 20 77 68 69 6C 65 28 6E 2D 2D 20 3E ;.. while(n-- >
025150: 20 30 29 20 7B 0D 0A 20 20 20 20 69 66 28 2A 64 0) {.. if(*d
025160: 2B 2B 20 3D 20 2A 73 6F 75 72 2B 2B 29 20 63 6F ++ = *sour++) co
025170: 6E 74 69 6E 75 65 3B 0D 0A 20 20 20 20 77 68 69 ntinue;.. whi
025180: 6C 65 28 6E 2D 2D 20 3E 20 30 29 20 2A 64 2B 2B le(n-- > 0) *d++
025190: 20 3D 20 30 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 = 0;.. }..
0251A0: 2A 64 20 3D 20 30 3B 0D 0A 20 20 72 65 74 75 72 *d = 0;.. retur
0251B0: 6E 20 28 64 65 73 74 29 3B 0D 0A 20 20 7D 0D 0A n (dest);.. }..
0251C0: 3E 3E 3E 20 53 54 52 52 43 48 52 2E 43 20 33 31 >>> STRRCHR.C 31
0251D0: 34 0D 0A 2F 2A 0D 0A 2A 2A 20 73 74 72 72 63 68 4../*..** strrch
0251E0: 72 28 73 2C 63 29 20 2D 20 53 65 61 72 63 68 20 r(s,c) - Search
0251F0: 73 20 66 6F 72 20 72 69 67 68 74 6D 6F 73 74 20 s for rightmost
025200: 6F 63 63 75 72 72 61 6E 63 65 20 6F 66 20 63 2E occurrance of c.
025210: 0D 0A 2A 2A 20 73 20 20 20 20 20 20 3D 20 50 6F ..** s = Po
025220: 69 6E 74 65 72 20 74 6F 20 73 74 72 69 6E 67 20 inter to string
025230: 74 6F 20 62 65 20 73 65 61 72 63 68 65 64 2E 0D to be searched..
025240: 0A 2A 2A 20 63 20 20 20 20 20 20 3D 20 43 68 61 .** c = Cha
025250: 72 61 63 74 65 72 20 74 6F 20 73 65 61 72 63 68 racter to search
025260: 20 66 6F 72 2E 0D 0A 2A 2A 20 52 65 74 75 72 6E for...** Return
025270: 73 20 70 6F 69 6E 74 65 72 20 74 6F 20 72 69 67 s pointer to rig
025280: 68 74 6D 6F 73 74 20 63 20 6F 72 20 4E 55 4C 4C htmost c or NULL
025290: 2E 0D 0A 2A 2F 0D 0A 73 74 72 72 63 68 72 28 73 ...*/..strrchr(s
0252A0: 2C 20 63 29 20 63 68 61 72 20 2A 73 2C 20 63 3B , c) char *s, c;
0252B0: 20 7B 0D 0A 20 20 63 68 61 72 20 2A 70 74 72 3B {.. char *ptr;
0252C0: 0D 0A 20 20 70 74 72 20 3D 20 30 3B 0D 0A 20 20 .. ptr = 0;..
0252D0: 77 68 69 6C 65 28 2A 73 29 20 7B 0D 0A 20 20 20 while(*s) {..
0252E0: 20 69 66 28 2A 73 3D 3D 63 29 20 70 74 72 20 3D if(*s==c) ptr =
0252F0: 20 73 3B 0D 0A 20 20 20 20 2B 2B 73 3B 0D 0A 20 s;.. ++s;..
025300: 3B 20 20 7B 0D 0A 20 20 69 66 28 6E 62 72 3E 30 ; {.. if(nbr>0
025310: 29 20 72 65 74 75 72 6E 20 31 3B 0D 0A 20 20 69 ) return 1;.. i
025320: 66 28 6E 62 72 3D 3D 30 29 20 72 65 74 75 72 6E f(nbr==0) return
025330: 20 30 3B 0D 0A 20 20 72 65 74 75 72 6E 20 2D 31 0;.. return -1
025340: 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 53 54 44 49 ;.. }..>>> STDI
025350: 4F 2E 48 20 32 39 36 0D 0A 2F 2A 0D 0A 2A 2A 20 O.H 296../*..**
025360: 53 54 44 49 4F 2E 48 20 2D 2D 20 53 74 61 6E 64 STDIO.H -- Stand
025370: 61 72 64 20 53 6D 61 6C 6C 2D 43 20 44 65 66 69 ard Small-C Defi
025380: 6E 69 74 69 6F 6E 73 0D 0A 2A 2F 0D 0A 23 64 65 nitions..*/..#de
025390: 66 69 6E 65 20 73 74 64 69 6E 20 20 20 20 30 0D fine stdin 0.
0253A0: 0A 23 64 65 66 69 6E 65 20 73 74 64 6F 75 74 20 .#define stdout
0253B0: 20 20 31 0D 0A 23 64 65 66 69 6E 65 20 73 74 64 1..#define std
0253C0: 65 72 72 20 20 20 32 0D 0A 23 64 65 66 69 6E 65 err 2..#define
0253D0: 20 45 52 52 20 20 20 28 2D 32 29 0D 0A 23 64 65 ERR (-2)..#de
0253E0: 66 69 6E 65 20 45 4F 46 20 20 20 28 2D 31 29 0D fine EOF (-1).
0253F0: 0A 23 64 65 66 69 6E 65 20 59 45 53 20 20 20 20 .#define YES
025400: 20 20 31 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 20 1..#define NO
025410: 20 20 20 20 20 20 30 0D 0A 23 64 65 66 69 6E 65 0..#define
025420: 20 4E 55 4C 4C 20 20 20 20 20 30 0D 0A 23 64 65 NULL 0..#de
025430: 66 69 6E 65 20 43 52 20 20 20 20 20 20 31 33 0D fine CR 13.
025440: 0A 23 64 65 66 69 6E 65 20 4C 46 20 20 20 20 20 .#define LF
025450: 20 31 30 0D 0A 23 64 65 66 69 6E 65 20 42 45 4C 10..#define BEL
025460: 4C 20 20 20 20 20 37 0D 0A 23 64 65 66 69 6E 65 L 7..#define
025470: 20 53 50 41 43 45 20 20 27 20 27 0D 0A 23 64 65 SPACE ' '..#de
025480: 66 69 6E 65 20 4E 45 57 4C 49 4E 45 20 4C 46 0D fine NEWLINE LF.
025490: 0A 3E 3E 3E 20 53 54 52 43 41 54 2E 43 20 31 37 .>>> STRCAT.C 17
0254A0: 35 0D 0A 2F 2A 0D 0A 2A 2A 20 63 6F 6E 63 61 74 5../*..** concat
0254B0: 65 6E 61 74 65 20 74 20 74 6F 20 65 6E 64 20 6F enate t to end o
0254C0: 66 20 73 20 0D 0A 2A 2A 20 73 20 6D 75 73 74 20 f s ..** s must
0254D0: 62 65 20 6C 61 72 67 65 20 65 6E 6F 75 67 68 0D be large enough.
0254E0: 0A 2A 2F 0D 0A 73 74 72 63 61 74 28 73 2C 20 74 .*/..strcat(s, t
0254F0: 29 20 63 68 61 72 20 2A 73 2C 20 2A 74 3B 20 7B ) char *s, *t; {
025500: 20 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E 20 28 }.. return (
025510: 70 74 72 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 ptr);.. }..>>>
025520: 54 4F 41 53 43 49 49 2E 43 20 37 36 0D 0A 2F 2A TOASCII.C 76../*
025530: 0D 0A 2A 2A 20 72 65 74 75 72 6E 20 41 53 43 49 ..** return ASCI
025540: 49 20 65 71 75 69 76 61 6C 65 6E 74 20 6F 66 20 I equivalent of
025550: 63 0D 0A 2A 2F 0D 0A 74 6F 61 73 63 69 69 28 63 c..*/..toascii(c
025560: 29 20 69 6E 74 20 63 3B 20 7B 0D 0A 20 20 72 65 ) int c; {.. re
025570: 74 75 72 6E 20 28 63 29 3B 0D 0A 20 20 7D 0D 0A turn (c);.. }..
025580: 3E 3E 3E 20 54 4F 4C 4F 57 45 52 2E 43 20 31 33 >>> TOLOWER.C 13
025590: 30 0D 0A 2F 2A 0D 0A 2A 2A 20 72 65 74 75 72 6E 0../*..** return
0255A0: 20 6C 6F 77 65 72 2D 63 61 73 65 20 6F 66 20 63 lower-case of c
0255B0: 20 69 66 20 75 70 70 65 72 2D 63 61 73 65 2C 20 if upper-case,
0255C0: 65 6C 73 65 20 63 0D 0A 2A 2F 0D 0A 74 6F 6C 6F else c..*/..tolo
0255D0: 77 65 72 28 63 29 20 69 6E 74 20 63 3B 20 7B 0D wer(c) int c; {.
0255E0: 0A 20 20 69 66 28 63 3C 3D 27 5A 27 20 26 26 20 . if(c<='Z' &&
0255F0: 63 3E 3D 27 41 27 29 20 72 65 74 75 72 6E 20 28 c>='A') return (
025600: 63 2B 33 32 29 3B 0D 0A 20 20 72 65 74 75 72 6E c+32);.. return
025610: 20 28 63 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 (c);.. }..>>>
025620: 54 4F 55 50 50 45 52 2E 43 20 31 33 36 0D 0A 2F TOUPPER.C 136../
025630: 2A 0D 0A 2A 2A 20 72 65 74 75 72 6E 20 75 70 70 *..** return upp
025640: 65 72 2D 63 61 73 65 20 6F 66 20 63 20 69 66 20 er-case of c if
025650: 69 74 20 69 73 20 6C 6F 77 65 72 2D 63 61 73 65 it is lower-case
025660: 2C 20 65 6C 73 65 20 63 0D 0A 2A 2F 0D 0A 74 6F , else c..*/..to
025670: 75 70 70 65 72 28 63 29 20 69 6E 74 20 63 3B 20 upper(c) int c;
025680: 7B 0D 0A 20 20 69 66 28 63 3C 3D 27 7A 27 20 26 {.. if(c<='z' &
025690: 26 20 63 3E 3D 27 61 27 29 20 72 65 74 75 72 6E & c>='a') return
0256A0: 20 28 63 2D 33 32 29 3B 0D 0A 20 20 72 65 74 75 (c-32);.. retu
0256B0: 72 6E 20 28 63 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E rn (c);.. }..>>
0256C0: 3E 20 55 4E 47 45 54 43 2E 43 20 33 34 32 0D 0A > UNGETC.C 342..
0256D0: 23 64 65 66 69 6E 65 20 4E 4F 43 43 41 52 47 43 #define NOCCARGC
0256E0: 20 20 2F 2A 20 6E 6F 20 61 72 67 75 6D 65 6E 74 /* no argument
0256F0: 20 63 6F 75 6E 74 20 70 61 73 73 69 6E 67 20 2A count passing *
025700: 0D 0A 20 20 63 68 61 72 20 2A 64 3B 0D 0A 20 20 .. char *d;..
025710: 64 20 3D 20 73 3B 0D 0A 20 20 2D 2D 73 3B 0D 0A d = s;.. --s;..
025720: 20 20 77 68 69 6C 65 20 28 2A 2B 2B 73 29 20 3B while (*++s) ;
025730: 0D 0A 20 20 77 68 69 6C 65 20 28 2A 73 2B 2B 20 .. while (*s++
025740: 3D 20 2A 74 2B 2B 29 20 3B 0D 0A 20 20 72 65 74 = *t++) ;.. ret
025750: 75 72 6E 28 64 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E urn(d);.. }..>>
025760: 3E 20 53 54 52 43 48 52 2E 43 20 31 37 36 0D 0A > STRCHR.C 176..
025770: 2F 2A 0D 0A 2A 2A 20 72 65 74 75 72 6E 20 70 6F /*..** return po
025780: 69 6E 74 65 72 20 74 6F 20 31 73 74 20 6F 63 63 inter to 1st occ
025790: 75 72 72 65 6E 63 65 20 6F 66 20 63 20 69 6E 20 urrence of c in
0257A0: 73 74 72 2C 20 65 6C 73 65 20 30 0D 0A 2A 2F 0D str, else 0..*/.
0257B0: 0A 73 74 72 63 68 72 28 73 74 72 2C 20 63 29 20 .strchr(str, c)
0257C0: 63 68 61 72 20 2A 73 74 72 2C 20 63 3B 20 7B 0D char *str, c; {.
0257D0: 0A 20 20 77 68 69 6C 65 28 2A 73 74 72 29 20 7B . while(*str) {
0257E0: 0D 0A 20 20 20 20 69 66 28 2A 73 74 72 20 3D 3D .. if(*str ==
0257F0: 20 63 29 20 72 65 74 75 72 6E 20 28 73 74 72 29 c) return (str)
025800: 3B 0D 0A 20 20 20 20 2B 2B 73 74 72 3B 0D 0A 20 ;.. ++str;..
025810: 20 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E 20 28 }.. return (
025820: 30 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 53 54 0);.. }..>>> ST
025830: 52 43 4D 50 2E 43 20 31 38 35 0D 0A 2F 2A 0D 0A RCMP.C 185../*..
025840: 2A 2A 20 72 65 74 75 72 6E 20 3C 30 2C 20 20 20 ** return <0,
025850: 30 2C 20 20 3E 30 20 61 55 6F 72 64 69 6E 67 20 0, >0 aUording
025860: 74 6F 0D 0A 2A 2A 20 20 20 20 20 20 20 73 3C 74 to..** s<t
025870: 2C 20 73 3D 74 2C 20 73 3E 74 0D 0A 2A 2F 0D 0A , s=t, s>t..*/..
025880: 73 74 72 63 6D 70 28 73 2C 20 74 29 20 63 68 61 strcmp(s, t) cha
025890: 72 20 2A 73 2C 20 2A 74 3B 20 7B 0D 0A 20 20 77 r *s, *t; {.. w
0258A0: 68 69 6C 65 28 2A 73 20 3D 3D 20 2A 74 29 20 7B hile(*s == *t) {
0258B0: 0D 0A 20 20 20 20 69 66 28 2A 73 20 3D 3D 20 30 .. if(*s == 0
0258C0: 29 20 72 65 74 75 72 6E 20 28 30 29 3B 0D 0A 20 ) return (0);..
0258D0: 20 20 20 2B 2B 73 3B 20 2B 2B 74 3B 0D 0A 20 20 ++s; ++t;..
0258E0: 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E 20 28 2A }.. return (*
0258F0: 73 20 2D 20 2A 74 29 3B 0D 0A 20 20 7D 0D 0A 0D s - *t);.. }...
025900: 2F 0D 0A 23 69 6E 63 6C 75 64 65 20 73 74 64 69 /..#include stdi
025910: 6F 2E 68 0D 0A 65 78 74 65 72 6E 20 55 6E 65 78 o.h..extern Unex
025920: 74 63 5B 5D 3B 0D 0A 2F 2A 0D 0A 2A 2A 20 50 75 tc[];../*..** Pu
025930: 74 20 63 20 62 61 63 6B 20 69 6E 74 6F 20 66 69 t c back into fi
025940: 6C 65 20 66 64 2E 0D 0A 2A 2A 20 45 6E 74 72 79 le fd...** Entry
025950: 3A 20 20 63 20 3D 20 63 68 61 72 61 63 74 65 72 : c = character
025960: 20 74 6F 20 70 75 74 20 62 61 63 6B 0D 0A 2A 2A to put back..**
025970: 20 20 20 20 20 20 20 20 66 64 20 3D 20 66 69 6C fd = fil
025980: 65 20 64 65 73 63 72 69 70 74 6F 72 0D 0A 2A 2A e descriptor..**
025990: 20 52 65 74 75 72 6E 73 20 63 20 69 66 20 73 75 Returns c if su
0259A0: 63 63 65 73 73 66 75 6C 2C 20 65 6C 73 65 20 45 ccessful, else E
0259B0: 4F 46 2E 0D 0A 2A 2F 0D 0A 75 6E 67 65 74 63 28 OF...*/..ungetc(
0259C0: 63 2C 20 66 64 29 20 69 6E 74 20 63 2C 20 66 64 c, fd) int c, fd
0259D0: 3B 20 7B 0D 0A 20 20 69 66 28 21 55 6D 6F 64 65 ; {.. if(!Umode
0259E0: 28 66 64 29 20 7C 7C 20 55 6E 65 78 74 63 5B 66 (fd) || Unextc[f
0259F0: 64 5D 21 3D 45 4F 46 20 7C 7C 20 63 3D 3D 45 4F d]!=EOF || c==EO
025A00: 46 29 20 72 65 74 75 72 6E 20 28 45 4F 46 29 3B F) return (EOF);
025A10: 0D 0A 20 20 72 65 74 75 72 6E 20 28 55 6E 65 78 .. return (Unex
025A20: 74 63 5B 66 64 5D 20 3D 20 63 29 3B 0D 0A 20 20 tc[fd] = c);..
025A30: 7D 0D 0A 3E 3E 3E 20 55 4E 4C 49 4E 4B 2E 43 20 }..>>> UNLINK.C
025A40: 34 37 37 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43 477..#define NOC
025A50: 43 41 52 47 43 20 20 2F 2A 20 6E 6F 20 61 72 67 CARGC /* no arg
025A60: 20 63 6F 75 6E 74 20 70 61 73 73 69 6E 67 20 2A count passing *
025A70: 2F 0D 0A 23 69 6E 63 6C 75 64 65 20 73 74 64 69 /..#include stdi
025A80: 6F 2E 68 0D 0A 23 69 6E 63 6C 75 64 65 20 63 6C o.h..#include cl
025A90: 69 62 2E 64 65 66 0D 0A 2F 2A 0D 0A 2A 2A 20 55 ib.def../*..** U
025AA0: 6E 6C 69 6E 6B 20 28 64 65 6C 65 74 65 29 20 74 nlink (delete) t
025AB0: 68 65 20 6E 61 6D 65 64 20 66 69 6C 65 2E 20 0D he named file. .
025AC0: 0A 2A 2A 20 45 6E 74 72 79 3A 20 66 6E 20 3D 20 .** Entry: fn =
025AD0: 4E 75 6C 6C 2D 74 65 72 6D 69 6E 61 74 65 64 20 Null-terminated
025AE0: 43 50 2F 4D 20 66 69 6C 65 20 6E 61 6D 65 2E 0D CP/M file name..
025AF0: 0A 2A 2A 20 20 20 20 20 20 20 20 20 20 20 20 20 .**
025B00: 0A 3E 3E 3E 20 53 54 52 43 50 59 2E 43 20 31 31 .>>> STRCPY.C 11
025B10: 31 0D 0A 2F 2A 0D 0A 2A 2A 20 63 6F 70 79 20 74 1../*..** copy t
025B20: 20 74 6F 20 73 20 0D 0A 2A 2F 0D 0A 73 74 72 63 to s ..*/..strc
025B30: 70 79 28 73 2C 20 74 29 20 63 68 61 72 20 2A 73 py(s, t) char *s
025B40: 2C 20 2A 74 3B 20 7B 0D 0A 20 20 63 68 61 72 20 , *t; {.. char
025B50: 2A 64 3B 0D 0A 20 20 64 20 3D 20 73 3B 0D 0A 20 *d;.. d = s;..
025B60: 20 77 68 69 6C 65 20 28 2A 73 2B 2B 20 3D 20 2A while (*s++ = *
025B70: 74 2B 2B 29 20 3B 0D 0A 20 20 72 65 74 75 72 6E t++) ;.. return
025B80: 28 64 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 53 (d);.. }..>>> S
025B90: 54 52 4C 45 4E 2E 43 20 31 31 33 0D 0A 2F 2A 0D TRLEN.C 113../*.
025BA0: 0A 2A 2A 20 72 65 74 75 72 6E 20 6C 65 6E 67 74 .** return lengt
025BB0: 68 20 6F 66 20 73 20 0D 0A 2A 2F 0D 0A 73 74 72 h of s ..*/..str
025BC0: 6C 65 6E 28 73 29 20 63 68 61 72 20 2A 73 3B 20 len(s) char *s;
025BD0: 7B 0D 0A 20 20 63 68 61 72 20 2A 74 3B 0D 0A 20 {.. char *t;..
025BE0: 20 74 20 3D 20 73 20 2D 20 31 3B 0D 0A 20 20 77 t = s - 1;.. w
025BF0: 68 69 6C 65 20 28 2A 2B 2B 74 29 20 3B 0D 0A 20 hile (*++t) ;..
025C00: 20 72 65 74 75 72 6E 20 28 74 20 2D 20 73 29 3B return (t - s);
025C10: 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 53 54 52 4E 43 .. }..>>> STRNC
025C20: 41 54 2E 43 20 32 35 34 0D 0A 2F 2A 0D 0A 2A 2A AT.C 254../*..**
025C30: 20 63 6F 6E 63 61 74 65 6E 61 74 65 20 6E 20 62 concatenate n b
025C40: 79 74 65 73 20 6D 61 78 20 66 72 6F 6D 20 74 20 ytes max from t
025C50: 74 6F 20 65 6E 64 20 6F 66 20 73 20 0D 0A 2A 2A to end of s ..**
025C60: 20 73 20 6D 75 73 74 20 62 65 20 6C 61 72 67 65 s must be large
025C70: 20 65 6E 6F 75 67 68 0D 0A 2A 2F 0D 0A 73 74 72 enough..*/..str
025C80: 6E 63 61 74 28 73 2C 20 74 2C 20 6E 29 20 63 68 ncat(s, t, n) ch
025C90: 61 72 20 2A 73 2C 20 2A 74 3B 20 69 6E 74 20 6E ar *s, *t; int n
025CA0: 3B 20 7B 0D 0A 20 20 63 68 61 72 20 2A 64 3B 0D ; {.. char *d;.
025CB0: 0A 20 20 64 20 3D 20 73 3B 0D 0A 20 20 2D 2D 73 . d = s;.. --s
025CC0: 3B 0D 0A 20 20 77 68 69 6C 65 28 2A 2B 2B 73 29 ;.. while(*++s)
025CD0: 20 3B 0D 0A 20 20 77 68 69 6C 65 28 6E 2D 2D 29 ;.. while(n--)
025CE0: 20 7B 0D 0A 20 20 20 20 69 66 28 2A 73 2B 2B 20 {.. if(*s++
025CF0: 3D 20 2A 74 2B 2B 29 20 63 6F 6E 74 69 6E 75 65 = *t++) continue
025D00: 4D 61 79 20 62 65 20 70 72 65 66 69 78 65 64 20 May be prefixed
025D10: 62 79 20 6C 65 74 74 65 72 20 6F 66 20 64 72 69 by letter of dri
025D20: 76 65 2E 0D 0A 2A 2A 20 52 65 74 75 72 6E 73 20 ve...** Returns
025D30: 4E 55 4C 4C 20 6F 6E 20 73 75 63 63 65 73 73 2C NULL on success,
025D40: 20 65 6C 73 65 20 45 52 52 2E 0D 0A 2A 2F 0D 0A else ERR...*/..
025D50: 75 6E 6C 69 6E 6B 28 66 6E 29 20 63 68 61 72 20 unlink(fn) char
025D60: 2A 66 6E 3B 20 7B 0D 0A 20 20 63 68 61 72 20 66 *fn; {.. char f
025D70: 63 62 5B 46 43 42 53 49 5A 45 5D 3B 0D 0A 20 20 cb[FCBSIZE];..
025D80: 70 61 64 28 66 63 62 2C 20 4E 55 4C 4C 2C 20 46 pad(fcb, NULL, F
025D90: 43 42 53 49 5A 45 29 3B 0D 0A 20 20 69 66 28 55 CBSIZE);.. if(U
025DA0: 6E 65 77 66 63 62 28 66 6E 2C 20 66 63 62 29 20 newfcb(fn, fcb)
025DB0: 26 26 20 55 62 64 6F 73 28 44 45 4C 46 49 4C 2C && Ubdos(DELFIL,
025DC0: 20 66 63 62 29 20 21 3D 20 32 35 35 29 0D 0A 20 fcb) != 255)..
025DD0: 20 20 20 72 65 74 75 72 6E 20 28 4E 55 4C 4C 29 return (NULL)
025DE0: 3B 0D 0A 20 20 72 65 74 75 72 6E 20 28 45 52 52 ;.. return (ERR
025DF0: 29 3B 0D 0A 20 20 7D 0D 0A 23 61 73 6D 0D 0A 64 );.. }..#asm..d
025E00: 65 6C 65 74 65 20 20 65 71 75 20 20 20 20 75 6E elete equ un
025E10: 6C 69 6E 6B 0D 0A 20 20 20 20 20 20 20 20 65 6E link.. en
025E20: 74 72 79 20 20 64 65 6C 65 74 65 0D 0A 23 65 6E try delete..#en
025E30: 64 61 73 6D 0D 0A 3E 3E 3E 20 55 54 4F 49 2E 43 dasm..>>> UTOI.C
025E40: 20 33 36 32 0D 0A 23 69 6E 63 6C 75 64 65 20 73 362..#include s
025E50: 74 64 69 6F 2E 68 0D 0A 2F 2A 0D 0A 2A 2A 20 75 tdio.h../*..** u
025E60: 74 6F 69 20 2D 2D 20 63 6F 6E 76 65 72 74 20 75 toi -- convert u
025E70: 6E 73 69 67 6E 65 64 20 64 65 63 69 6D 61 6C 20 nsigned decimal
025E80: 73 74 72 69 6E 67 20 74 6F 20 69 6E 74 65 67 65 string to intege
025E90: 72 20 6E 62 72 0D 0A 2A 2A 20 20 20 20 20 20 20 r nbr..**
025EA0: 20 20 20 72 65 74 75 72 6E 73 20 66 69 65 6C 64 returns field
025EB0: 20 73 69 7A 65 2C 20 65 6C 73 65 20 45 52 52 20 size, else ERR
025EC0: 6F 6E 20 65 72 72 6F 72 0D 0A 2A 2F 0D 0A 75 74 on error..*/..ut
025ED0: 6F 69 28 64 65 63 73 74 72 2C 20 6E 62 72 29 20 oi(decstr, nbr)
025EE0: 20 63 68 61 72 20 2A 64 65 63 73 74 72 3B 20 20 char *decstr;
025EF0: 69 6E 74 20 2A 6E 62 72 3B 20 20 7B 0D 0A 20 20 int *nbr; {..
025F00: 3B 0D 0A 20 20 20 20 72 65 74 75 72 6E 28 64 29 ;.. return(d)
025F10: 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 2A 73 20 3D ;.. }.. *s =
025F20: 20 30 3B 0D 0A 20 20 72 65 74 75 72 6E 28 64 29 0;.. return(d)
025F30: 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 53 54 52 4E ;.. }..>>> STRN
025F40: 43 4D 50 2E 43 20 33 33 32 0D 0A 2F 2A 0D 0A 2A CMP.C 332../*..*
025F50: 2A 20 73 74 72 6E 63 6D 70 28 73 2C 74 2C 6E 29 * strncmp(s,t,n)
025F60: 20 2D 20 43 6F 6D 70 61 72 65 73 20 74 77 6F 20 - Compares two
025F70: 73 74 72 69 6E 67 73 20 66 6F 72 20 61 74 20 6D strings for at m
025F80: 6F 73 74 20 6E 0D 0A 2A 2A 20 20 20 20 20 20 20 ost n..**
025F90: 20 20 20 20 20 20 20 20 20 20 20 63 68 61 72 61 chara
025FA0: 63 74 65 72 73 20 61 6E 64 20 72 65 74 75 72 6E cters and return
025FB0: 73 20 61 6E 20 69 6E 74 65 67 65 72 0D 0A 2A 2A s an integer..**
025FC0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
025FD0: 20 20 3E 30 2C 20 3D 30 2C 20 6F 72 20 3C 30 20 >0, =0, or <0
025FE0: 61 73 20 73 20 69 73 20 3E 74 2C 20 3D 74 2C 20 as s is >t, =t,
025FF0: 6F 72 20 3C 74 2E 0D 0A 2A 2F 0D 0A 73 74 72 6E or <t...*/..strn
026000: 63 6D 70 28 73 2C 20 74 2C 20 6E 29 20 63 68 61 cmp(s, t, n) cha
026010: 72 20 2A 73 2C 20 2A 74 3B 20 69 6E 74 20 6E 3B r *s, *t; int n;
026020: 20 7B 0D 0A 20 20 77 68 69 6C 65 28 6E 20 26 26 {.. while(n &&
026030: 20 2A 73 3D 3D 2A 74 29 20 7B 0D 0A 20 20 20 20 *s==*t) {..
026040: 69 66 20 28 2A 73 20 3D 3D 20 30 29 20 72 65 74 if (*s == 0) ret
026050: 75 72 6E 20 28 30 29 3B 0D 0A 20 20 20 20 2B 2B urn (0);.. ++
026060: 73 3B 20 2B 2B 74 3B 20 2D 2D 6E 3B 0D 0A 20 20 s; ++t; --n;..
026070: 20 20 7D 0D 0A 20 20 69 66 28 6E 29 20 72 65 74 }.. if(n) ret
026080: 75 72 6E 20 28 2A 73 20 2D 20 2A 74 29 3B 0D 0A urn (*s - *t);..
026090: 20 20 72 65 74 75 72 6E 20 28 30 29 3B 0D 0A 20 return (0);..
0260A0: 20 7D 0D 0A 3E 3E 3E 20 53 54 52 4E 43 50 59 2E }..>>> STRNCPY.
0260B0: 43 20 32 35 32 0D 0A 2F 2A 0D 0A 2A 2A 20 63 6F C 252../*..** co
0260C0: 70 79 20 6E 20 63 68 61 72 61 63 74 65 72 73 20 py n characters
0260D0: 66 72 6F 6D 20 73 6F 75 72 20 74 6F 20 64 65 73 from sour to des
0260E0: 74 20 28 6E 75 6C 6C 20 70 61 64 64 69 6E 67 29 t (null padding)
0260F0: 0D 0A 2A 2F 0D 0A 73 74 72 6E 63 70 79 28 64 65 ..*/..strncpy(de
026100: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
026110: 20 00 01 00 02 09 52 E5 20 00 41 02 00 00 00 02 .....R. .A.....
026120: 20 00 46 02 00 00 00 02 20 00 42 02 00 00 00 02 .F..... .B.....
026130: 20 00 47 02 00 00 00 02 20 00 43 02 00 00 00 02 .G..... .C.....
026140: 20 00 48 02 00 00 00 02 20 00 44 02 00 00 00 02 .H..... .D.....
026150: 20 00 49 02 00 00 00 02 20 00 45 02 00 00 00 02 .I..... .E.....
026160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0261A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0261B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0261C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0261D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0261E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0261F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026200: 69 6E 74 20 64 2C 74 3B 20 64 3D 30 3B 0D 0A 20 int d,t; d=0;..
026210: 20 2A 6E 62 72 3D 30 3B 0D 0A 20 20 77 68 69 6C *nbr=0;.. whil
026220: 65 28 28 2A 64 65 63 73 74 72 3E 3D 27 30 27 29 e((*decstr>='0')
026230: 26 28 2A 64 65 63 73 74 72 3C 3D 27 39 27 29 29 &(*decstr<='9'))
026240: 20 7B 0D 0A 20 20 20 20 74 3D 2A 6E 62 72 3B 74 {.. t=*nbr;t
026250: 3D 28 31 30 2A 74 29 20 2B 20 28 2A 64 65 63 73 =(10*t) + (*decs
026260: 74 72 2B 2B 20 2D 20 27 30 27 29 3B 0D 0A 20 20 tr++ - '0');..
026270: 20 20 69 66 20 28 28 74 3E 3D 30 29 26 28 2A 6E if ((t>=0)&(*n
026280: 62 72 3C 30 29 29 20 72 65 74 75 72 6E 20 45 52 br<0)) return ER
026290: 52 3B 0D 0A 20 20 20 20 64 2B 2B 3B 20 2A 6E 62 R;.. d++; *nb
0262A0: 72 3D 74 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 72 r=t;.. }.. r
0262B0: 65 74 75 72 6E 20 64 3B 0D 0A 20 20 7D 0D 0A 3E eturn d;.. }..>
0262C0: 3E 3E 20 58 54 4F 49 2E 43 20 37 32 39 0D 0A 23 >> XTOI.C 729..#
0262D0: 69 6E 63 6C 75 64 65 20 73 74 64 69 6F 2E 68 0D include stdio.h.
0262E0: 0A 2F 2A 0D 0A 2A 2A 20 78 74 6F 69 20 2D 2D 20 ./*..** xtoi --
0262F0: 63 6F 6E 76 65 72 74 20 68 65 78 20 73 74 72 69 convert hex stri
026300: 6E 67 20 74 6F 20 69 6E 74 65 67 65 72 20 6E 62 ng to integer nb
026310: 72 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 72 65 r..** re
026320: 74 75 72 6E 73 20 66 69 65 6C 64 20 73 69 7A 65 turns field size
026330: 2C 20 65 6C 73 65 20 45 52 52 20 6F 6E 20 65 72 , else ERR on er
026340: 72 6F 72 0D 0A 2A 2F 0D 0A 78 74 6F 69 28 68 65 ror..*/..xtoi(he
026350: 78 73 74 72 2C 20 6E 62 72 29 20 63 68 61 72 20 xstr, nbr) char
026360: 2A 68 65 78 73 74 72 3B 20 69 6E 74 20 2A 6E 62 *hexstr; int *nb
026370: 72 3B 20 7B 0D 0A 20 20 69 6E 74 20 64 2C 20 62 r; {.. int d, b
026380: 3B 20 20 63 68 61 72 20 2A 63 70 3B 0D 0A 20 20 ; char *cp;..
026390: 64 20 3D 20 2A 6E 62 72 20 3D 20 30 3B 20 63 70 d = *nbr = 0; cp
0263A0: 20 3D 20 68 65 78 73 74 72 3B 0D 0A 20 20 77 68 = hexstr;.. wh
0263B0: 69 6C 65 28 2A 63 70 20 3D 3D 20 27 30 27 29 20 ile(*cp == '0')
0263C0: 2B 2B 63 70 3B 0D 0A 20 20 77 68 69 6C 65 28 31 ++cp;.. while(1
0263D0: 29 20 7B 0D 0A 20 20 20 20 73 77 69 74 63 68 28 ) {.. switch(
0263E0: 2A 63 70 29 20 7B 0D 0A 20 20 20 20 20 20 63 61 *cp) {.. ca
0263F0: 73 65 20 27 30 27 3A 20 63 61 73 65 20 27 31 27 se '0': case '1'
026400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026410: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026430: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0264A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0264B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0264C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0264D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0264E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0264F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026500: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026510: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026520: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026530: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026540: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026550: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026560: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026570: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026580: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026590: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0265A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0265B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0265C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0265D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0265E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0265F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026600: 3A 20 63 61 73 65 20 27 32 27 3A 0D 0A 20 20 20 : case '2':..
026610: 20 20 20 63 61 73 65 20 27 33 27 3A 20 63 61 73 case '3': cas
026620: 65 20 27 34 27 3A 20 63 61 73 65 20 27 35 27 3A e '4': case '5':
026630: 0D 0A 20 20 20 20 20 20 63 61 73 65 20 27 36 27 .. case '6'
026640: 3A 20 63 61 73 65 20 27 37 27 3A 20 63 61 73 65 : case '7': case
026650: 20 27 38 27 3A 0D 0A 20 20 20 20 20 20 63 61 73 '8':.. cas
026660: 65 20 27 39 27 3A 20 20 20 20 20 20 20 20 20 20 e '9':
026670: 20 20 20 20 20 20 20 20 20 20 20 62 3D 34 38 3B b=48;
026680: 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 20 63 break;.. c
026690: 61 73 65 20 27 41 27 3A 20 63 61 73 65 20 27 42 ase 'A': case 'B
0266A0: 27 3A 20 63 61 73 65 20 27 43 27 3A 0D 0A 20 20 ': case 'C':..
0266B0: 20 20 20 20 63 61 73 65 20 27 44 27 3A 20 63 61 case 'D': ca
0266C0: 73 65 20 27 45 27 3A 20 63 61 73 65 20 27 46 27 se 'E': case 'F'
0266D0: 3A 20 62 3D 35 35 3B 20 62 72 65 61 6B 3B 0D 0A : b=55; break;..
0266E0: 20 20 20 20 20 20 63 61 73 65 20 27 61 27 3A 20 case 'a':
0266F0: 63 61 73 65 20 27 62 27 3A 20 63 61 73 65 20 27 case 'b': case '
026700: 63 27 3A 0D 0A 20 20 20 20 20 20 63 61 73 65 20 c':.. case
026710: 27 64 27 3A 20 63 61 73 65 20 27 65 27 3A 20 63 'd': case 'e': c
026720: 61 73 65 20 27 66 27 3A 20 62 3D 38 37 3B 20 62 ase 'f': b=87; b
026730: 72 65 61 6B 3B 0D 0A 20 20 20 20 20 20 20 64 65 reak;.. de
026740: 66 61 75 6C 74 3A 20 72 65 74 75 72 6E 20 28 63 fault: return (c
026750: 70 20 2D 20 68 65 78 73 74 72 29 3B 0D 0A 20 20 p - hexstr);..
026760: 20 20 20 20 7D 0D 0A 20 20 20 20 69 66 28 64 20 }.. if(d
026770: 3C 20 34 29 20 2B 2B 64 3B 20 65 6C 73 65 20 72 < 4) ++d; else r
026780: 65 74 75 72 6E 20 28 45 52 52 29 3B 0D 0A 20 20 eturn (ERR);..
026790: 20 20 2A 6E 62 72 20 3D 20 28 2A 6E 62 72 20 3C *nbr = (*nbr <
0267A0: 3C 20 34 29 20 2B 20 28 2A 63 70 2B 2B 20 2D 20 < 4) + (*cp++ -
0267B0: 62 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D b);.. }.. }.
0267C0: 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0267D0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0267E0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0267F0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
026800: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026810: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026820: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026830: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026840: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026850: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026860: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026870: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026880: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026890: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0268A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0268B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0268C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0268D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0268E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0268F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026900: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026910: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026920: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026930: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026940: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026950: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026960: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026970: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026980: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026990: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0269A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0269B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0269C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0269D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0269E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0269F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026A00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026A10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026A20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026A30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026A40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026A50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026A60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026A70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026A80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026A90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026AA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026AB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026AC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026AD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026AE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026AF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026B00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026B10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026B20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026B30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026B40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026B50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026B60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026B70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026B80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026B90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026BA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026BB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026BC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026BD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026BE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026BF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026C00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026C10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026C20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026C30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026C40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026C50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026C60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026C70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026C80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026C90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026CA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026CB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026CC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026CD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026CE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026CF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026D00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026D10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026D20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026D30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026D40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026D50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026D60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026D70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026D80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026D90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026DA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026DB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026DC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026DD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026DE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026DF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026E00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026E10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026E20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026E30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026E40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026E50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026E60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026E70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026E80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026E90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026EA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026EB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026EC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026ED0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026EE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026EF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026F00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026F10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026F20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026F30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026F40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026F50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026F60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026F70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026F80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026F90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026FA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026FB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026FC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026FD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026FE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026FF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0270A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0270B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0270C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0270D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0270E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0270F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0271A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0271B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0271C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0271D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0271E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0271F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027200: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027210: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027220: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027230: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027240: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027250: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027260: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027270: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027280: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027290: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0272A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0272B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0272C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0272D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0272E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0272F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027300: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027310: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027320: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027330: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027340: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027350: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027360: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027370: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027380: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027390: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0273A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0273B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0273C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0273D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0273E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0273F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027400: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
027410: 21 00 01 00 02 09 52 E5 21 00 41 02 00 00 00 02 !.....R.!.A.....
027420: 21 00 46 02 00 00 00 02 21 00 42 02 00 00 00 02 !.F.....!.B.....
027430: 21 00 47 02 00 00 00 02 21 00 43 02 00 00 00 02 !.G.....!.C.....
027440: 21 00 48 02 00 00 00 02 21 00 44 02 00 00 00 02 !.H.....!.D.....
027450: 21 00 49 02 00 00 00 02 21 00 45 02 00 00 00 02 !.I.....!.E.....
027460: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027470: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027490: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0274A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0274B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0274C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0274D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0274E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0274F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027500: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027510: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027520: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027530: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027540: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027550: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027560: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027570: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027580: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027590: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0275A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0275B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0275C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0275D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0275E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0275F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027600: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027610: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027620: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027630: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027640: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027650: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027660: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027670: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027680: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027690: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0276A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0276B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0276C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0276D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0276E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0276F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027700: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027710: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027720: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027730: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027740: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027750: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027760: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027770: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027780: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027790: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0277A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0277B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0277C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0277D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0277E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0277F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027800: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027810: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027820: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027830: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027840: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027850: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027860: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027870: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027880: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027890: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0278A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0278B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0278C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0278D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0278E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0278F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027900: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027910: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027920: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027930: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027940: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027950: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027960: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027970: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027980: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027990: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0279A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0279B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0279C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0279D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0279E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0279F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027A00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027A10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027A20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027A30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027A40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027A50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027A60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027A70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027A80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027A90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027AA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027AB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027AC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027AD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027AE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027AF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027B00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027B10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027B20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027B30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027B40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027B50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027B60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027B70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027B80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027B90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027BA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027BB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027BC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027BD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027BE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027BF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027C00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027C10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027C20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027C30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027C40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027C50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027C60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027C70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027C80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027C90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027CA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027CB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027CC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027CD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027CE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027CF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027D00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027D10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027D20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027D30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027D40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027D50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027D60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027D70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027D80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027D90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027DA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027DB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027DC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027DD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027DE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027DF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027E00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027E10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027E20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027E30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027E40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027E50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027E60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027E70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027E80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027E90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027EA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027EB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027EC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027ED0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027EE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027EF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027F00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027F10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027F20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027F30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027F40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027F50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027F60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027F70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027F80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027F90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027FA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027FB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027FC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027FD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027FE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
027FF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0280A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0280B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0280C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0280D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0280E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0280F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0281A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0281B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0281C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0281D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0281E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0281F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028200: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028210: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028220: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028230: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028240: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028250: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028260: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028270: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028280: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028290: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0282A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0282B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0282C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0282D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0282E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0282F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028300: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028310: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028320: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028330: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028340: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028350: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028360: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028370: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028380: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028390: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0283A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0283B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0283C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0283D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0283E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0283F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028410: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028430: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0284A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0284B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0284C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0284D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0284E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0284F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028500: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028510: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028520: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028530: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028540: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028550: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028560: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028570: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028580: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028590: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0285A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0285B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0285C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0285D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0285E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0285F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028600: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028610: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028620: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028630: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028640: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028650: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028660: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028670: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028680: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028690: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0286A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0286B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0286C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0286D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0286E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0286F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028700: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
028710: 22 00 01 00 02 09 52 E5 22 00 41 02 00 00 00 02 ".....R.".A.....
028720: 22 00 46 02 00 00 00 02 22 00 42 02 00 00 00 02 ".F.....".B.....
028730: 22 00 47 02 00 00 00 02 22 00 43 02 00 00 00 02 ".G.....".C.....
028740: 22 00 48 02 00 00 00 02 22 00 44 02 00 00 00 02 ".H.....".D.....
028750: 22 00 49 02 00 00 00 02 22 00 45 02 00 00 00 02 ".I.....".E.....
028760: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
028770: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
028780: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
028790: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0287A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0287B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0287C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0287D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0287E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0287F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
028800: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028810: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028820: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028830: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028840: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028850: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028860: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028870: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028880: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028890: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0288A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0288B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0288C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0288D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0288E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0288F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028900: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028910: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028920: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028930: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028940: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028950: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028960: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028970: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028980: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028990: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0289A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0289B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0289C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0289D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0289E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0289F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028A00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028A10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028A20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028A30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028A40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028A50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028A60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028A70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028A80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028A90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028AA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028AB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028AC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028AD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028AE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028AF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028B00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028B10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028B20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028B30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028B40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028B50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028B60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028B70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028B80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028B90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028BA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028BB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028BC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028BD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028BE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028BF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028C00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028C10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028C20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028C30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028C40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028C50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028C60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028C70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028C80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028C90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028CA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028CB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028CC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028CD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028CE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028CF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028D00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028D10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028D20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028D30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028D40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028D50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028D60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028D70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028D80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028D90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028DA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028DB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028DC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028DD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028DE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028DF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028E00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028E10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028E20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028E30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028E40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028E50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028E60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028E70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028E80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028E90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028EA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028EB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028EC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028ED0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028EE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028EF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028F00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028F10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028F20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028F30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028F40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028F50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028F60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028F70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028F80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028F90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028FA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028FB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028FC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028FD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028FE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028FF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0290A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0290B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0290C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0290D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0290E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0290F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0291A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0291B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0291C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0291D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0291E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0291F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029200: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029210: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029220: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029230: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029240: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029250: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029260: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029270: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029280: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029290: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0292A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0292B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0292C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0292D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0292E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0292F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029300: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029310: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029320: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029330: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029340: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029350: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029360: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029370: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029380: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029390: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0293A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0293B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0293C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0293D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0293E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0293F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029410: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029430: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0294A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0294B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0294C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0294D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0294E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0294F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029500: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029510: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029520: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029530: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029540: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029550: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029560: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029570: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029580: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029590: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0295A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0295B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0295C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0295D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0295E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0295F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029600: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029610: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029620: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029630: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029640: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029650: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029660: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029670: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029680: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029690: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0296A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0296B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0296C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0296D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0296E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0296F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029700: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029710: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029720: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029730: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029740: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029750: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029760: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029770: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029780: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029790: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0297A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0297B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0297C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0297D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0297E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0297F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029800: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029810: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029820: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029830: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029840: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029850: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029860: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029870: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029880: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029890: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0298A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0298B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0298C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0298D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0298E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0298F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029900: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029910: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029920: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029930: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029940: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029950: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029960: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029970: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029980: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029990: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0299A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0299B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0299C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0299D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0299E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0299F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029A00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
029A10: 23 00 01 00 02 09 52 E5 23 00 41 02 00 00 00 02 #.....R.#.A.....
029A20: 23 00 46 02 00 00 00 02 23 00 42 02 00 00 00 02 #.F.....#.B.....
029A30: 23 00 47 02 00 00 00 02 23 00 43 02 00 00 00 02 #.G.....#.C.....
029A40: 23 00 48 02 00 00 00 02 23 00 44 02 00 00 00 02 #.H.....#.D.....
029A50: 23 00 49 02 00 00 00 02 23 00 45 02 00 00 00 02 #.I.....#.E.....
029A60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029A70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029A80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029A90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029AA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029AB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029AC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029AD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029AE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029AF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029B00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029B10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029B20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029B30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029B40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029B50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029B60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029B70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029B80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029B90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029BA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029BB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029BC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029BD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029BE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029BF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029C00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029C10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029C20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029C30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029C40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029C50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029C60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029C70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029C80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029C90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029CA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029CB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029CC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029CD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029CE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029CF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029D00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029D10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029D20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029D30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029D40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029D50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029D60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029D70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029D80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029D90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029DA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029DB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029DC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029DD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029DE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029DF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029E00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029E10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029E20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029E30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029E40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029E50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029E60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029E70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029E80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029E90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029EA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029EB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029EC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029ED0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029EE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029EF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029F00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029F10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029F20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029F30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029F40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029F50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029F60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029F70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029F80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029F90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029FA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029FB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029FC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029FD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029FE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029FF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A0A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A0B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A0C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A0D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A0E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A0F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A1A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A1B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A1C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A1D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A1E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A1F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A200: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A210: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A220: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A230: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A240: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A250: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A260: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A270: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A280: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A290: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A2A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A2B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A2C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A2D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A2E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A2F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A300: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A310: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A320: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A330: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A340: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A350: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A360: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A370: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A380: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A390: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A3A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A3B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A3C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A3D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A3E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A3F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A410: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A430: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A4A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A4B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A4C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A4D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A4E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A4F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A500: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A510: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A520: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A530: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A540: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A550: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A560: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A570: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A580: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A590: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A5A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A5B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A5C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A5D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A5E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A5F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A600: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A610: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A620: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A630: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A640: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A650: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A660: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A670: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A680: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A690: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A6A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A6B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A6C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A6D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A6E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A6F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A700: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A710: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A720: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A730: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A740: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A750: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A760: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A770: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A780: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A790: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A7A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A7B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A7C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A7D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A7E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A7F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A800: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A810: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A820: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A830: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A840: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A850: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A860: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A870: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A880: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A890: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A8A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A8B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A8C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A8D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A8E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A8F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A900: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A910: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A920: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A930: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A940: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A950: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A960: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A970: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A980: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A990: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A9A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A9B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A9C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A9D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A9E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A9F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AA00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AA10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AA20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AA30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AA40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AA50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AA60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AA70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AA80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AA90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AAA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AAB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AAC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AAD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AAE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AAF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AB00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AB10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AB20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AB30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AB40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AB50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AB60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AB70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AB80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AB90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ABA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ABB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ABC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ABD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ABE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ABF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AC00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AC10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AC20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AC30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AC40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AC50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AC60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AC70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AC80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AC90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ACA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ACB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ACC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ACD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ACE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ACF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AD00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
02AD10: 24 00 01 00 02 09 52 E5 24 00 41 02 00 00 00 02 $.....R.$.A.....
02AD20: 24 00 46 02 00 00 00 02 24 00 42 02 00 00 00 02 $.F.....$.B.....
02AD30: 24 00 47 02 00 00 00 02 24 00 43 02 00 00 00 02 $.G.....$.C.....
02AD40: 24 00 48 02 00 00 00 02 24 00 44 02 00 00 00 02 $.H.....$.D.....
02AD50: 24 00 49 02 00 00 00 02 24 00 45 02 00 00 00 02 $.I.....$.E.....
02AD60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AD70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AD80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AD90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02ADA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02ADB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02ADC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02ADD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02ADE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02ADF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AE00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AE10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AE20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AE30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AE40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AE50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AE60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AE70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AE80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AE90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AEA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AEB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AEC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AED0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AEE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AEF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AF00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AF10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AF20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AF30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AF40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AF50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AF60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AF70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AF80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AF90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AFA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AFB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AFC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AFD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AFE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02AFF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B0A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B0B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B0C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B0D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B0E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B0F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B1A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B1B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B1C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B1D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B1E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B1F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B200: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B210: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B220: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B230: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B240: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B250: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B260: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B270: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B280: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B290: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B2A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B2B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B2C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B2D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B2E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B2F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B300: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B310: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B320: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B330: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B340: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B350: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B360: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B370: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B380: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B390: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B3A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B3B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B3C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B3D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B3E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B3F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B410: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B430: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B4A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B4B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B4C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B4D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B4E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B4F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B500: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B510: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B520: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B530: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B540: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B550: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B560: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B570: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B580: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B590: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B5A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B5B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B5C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B5D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B5E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B5F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B600: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B610: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B620: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B630: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B640: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B650: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B660: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B670: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B680: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B690: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B6A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B6B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B6C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B6D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B6E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B6F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B700: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B710: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B720: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B730: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B740: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B750: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B760: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B770: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B780: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B790: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B7A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B7B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B7C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B7D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B7E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B7F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B800: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B810: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B820: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B830: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B840: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B850: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B860: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B870: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B880: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B890: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B8A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B8B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B8C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B8D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B8E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B8F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B900: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B910: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B920: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B930: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B940: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B950: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B960: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B970: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B980: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B990: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B9A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B9B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B9C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B9D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B9E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02B9F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BA00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BA10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BA20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BA30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BA40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BA50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BA60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BA70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BA80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BA90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BAA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BAB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BAC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BAD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BAE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BAF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BB00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BB10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BB20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BB30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BB40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BB50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BB60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BB70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BB80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BB90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BBA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BBB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BBC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BBD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BBE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BBF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BC00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BC10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BC20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BC30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BC40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BC50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BC60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BC70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BC80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BC90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BCA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BCB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BCC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BCD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BCE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BCF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BD00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BD10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BD20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BD30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BD40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BD50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BD60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BD70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BD80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BD90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BDA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BDB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BDC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BDD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BDE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BDF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BE00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BE10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BE20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BE30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BE40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BE50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BE60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BE70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BE80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BE90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BEA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BEB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BEC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BED0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BEE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BEF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BF00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BF10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BF20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BF30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BF40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BF50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BF60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BF70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BF80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BF90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BFA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BFB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BFC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BFD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BFE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BFF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C000: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
02C010: 25 00 01 00 02 09 52 E5 25 00 41 02 00 00 00 02 %.....R.%.A.....
02C020: 25 00 46 02 00 00 00 02 25 00 42 02 00 00 00 02 %.F.....%.B.....
02C030: 25 00 47 02 00 00 00 02 25 00 43 02 00 00 00 02 %.G.....%.C.....
02C040: 25 00 48 02 00 00 00 02 25 00 44 02 00 00 00 02 %.H.....%.D.....
02C050: 25 00 49 02 00 00 00 02 25 00 45 02 00 00 00 02 %.I.....%.E.....
02C060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C0A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C0B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C0C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C0D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C0E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C0F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C1A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C1B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C1C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C1D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C1E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C1F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C200: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C210: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C220: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C230: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C240: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C250: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C260: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C270: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C280: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C290: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C2A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C2B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C2C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C2D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C2E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C2F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C300: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C310: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C320: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C330: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C340: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C350: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C360: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C370: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C380: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C390: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C3A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C3B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C3C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C3D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C3E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C3F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C410: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C430: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C4A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C4B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C4C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C4D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C4E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C4F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C500: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C510: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C520: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C530: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C540: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C550: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C560: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C570: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C580: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C590: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C5A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C5B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C5C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C5D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C5E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C5F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C600: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C610: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C620: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C630: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C640: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C650: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C660: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C670: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C680: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C690: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C6A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C6B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C6C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C6D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C6E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C6F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C700: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C710: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C720: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C730: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C740: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C750: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C760: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C770: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C780: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C790: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C7A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C7B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C7C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C7D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C7E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C7F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C800: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C810: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C820: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C830: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C840: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C850: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C860: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C870: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C880: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C890: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C8A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C8B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C8C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C8D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C8E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C8F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C900: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C910: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C920: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C930: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C940: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C950: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C960: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C970: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C980: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C990: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C9A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C9B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C9C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C9D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C9E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C9F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CA00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CA10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CA20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CA30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CA40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CA50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CA60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CA70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CA80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CA90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CAA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CAB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CAC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CAD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CAE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CAF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CB00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CB10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CB20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CB30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CB40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CB50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CB60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CB70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CB80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CB90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CBA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CBB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CBC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CBD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CBE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CBF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CC00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CC10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CC20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CC30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CC40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CC50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CC60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CC70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CC80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CC90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CCA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CCB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CCC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CCD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CCE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CCF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CD00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CD10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CD20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CD30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CD40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CD50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CD60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CD70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CD80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CD90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CDA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CDB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CDC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CDD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CDE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CDF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CE00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CE10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CE20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CE30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CE40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CE50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CE60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CE70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CE80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CE90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CEA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CEB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CEC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CED0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CEE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CEF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CF00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CF10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CF20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CF30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CF40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CF50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CF60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CF70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CF80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CF90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CFA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CFB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CFC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CFD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CFE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CFF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D0A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D0B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D0C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D0D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D0E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D0F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D1A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D1B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D1C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D1D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D1E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D1F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D200: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D210: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D220: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D230: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D240: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D250: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D260: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D270: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D280: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D290: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D2A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D2B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D2C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D2D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D2E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D2F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D300: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
02D310: 26 00 01 00 02 09 52 E5 26 00 41 02 00 00 00 02 &.....R.&.A.....
02D320: 26 00 46 02 00 00 00 02 26 00 42 02 00 00 00 02 &.F.....&.B.....
02D330: 26 00 47 02 00 00 00 02 26 00 43 02 00 00 00 02 &.G.....&.C.....
02D340: 26 00 48 02 00 00 00 02 26 00 44 02 00 00 00 02 &.H.....&.D.....
02D350: 26 00 49 02 00 00 00 02 26 00 45 02 00 00 00 02 &.I.....&.E.....
02D360: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D370: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D390: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D3A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D3B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D3C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D3D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D3E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D3F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D410: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D430: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D4A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D4B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D4C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D4D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D4E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D4F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D500: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D510: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D520: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D530: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D540: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D550: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D560: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D570: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D580: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D590: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D5A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D5B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D5C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D5D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D5E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D5F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D600: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D610: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D620: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D630: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D640: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D650: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D660: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D670: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D680: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D690: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D6A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D6B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D6C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D6D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D6E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D6F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D700: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D710: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D720: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D730: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D740: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D750: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D760: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D770: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D780: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D790: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D7A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D7B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D7C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D7D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D7E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D7F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D800: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D810: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D820: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D830: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D840: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D850: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D860: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D870: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D880: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D890: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D8A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D8B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D8C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D8D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D8E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D8F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D900: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D910: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D920: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D930: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D940: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D950: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D960: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D970: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D980: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D990: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D9A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D9B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D9C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D9D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D9E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D9F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DAA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DAB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DAC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DAD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DAE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DAF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DBA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DBB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DBC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DBD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DBE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DBF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DC00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DC10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DC20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DC30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DC40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DC50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DC60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DC70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DC80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DC90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DCA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DCB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DCC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DCD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DCE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DCF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DD00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DD10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DD20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DD30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DD40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DD50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DD60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DD70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DD80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DD90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DDA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DDB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DDC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DDD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DDE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DDF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DE00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DE10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DE20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DE30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DE40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DE50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DE60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DE70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DE80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DE90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DEA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DEB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DEC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DED0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DEE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DEF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DF00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DF10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DF20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DF30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DF40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DF50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DF60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DF70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DF80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DF90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DFA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DFB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DFC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DFD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DFE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DFF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E0A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E0B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E0C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E0D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E0E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E0F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E1A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E1B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E1C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E1D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E1E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E1F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E200: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E210: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E220: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E230: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E240: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E250: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E260: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E270: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E280: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E290: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E2A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E2B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E2C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E2D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E2E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E2F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E300: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E310: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E320: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E330: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E340: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E350: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E360: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E370: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E380: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E390: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E3A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E3B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E3C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E3D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E3E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E3F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E410: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E430: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E4A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E4B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E4C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E4D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E4E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E4F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E500: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E510: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E520: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E530: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E540: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E550: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E560: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E570: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E580: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E590: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E5A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E5B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E5C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E5D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E5E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E5F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E600: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
02E610: 27 00 01 00 02 09 52 E5 27 00 41 02 00 00 00 02 '.....R.'.A.....
02E620: 27 00 46 02 00 00 00 02 27 00 42 02 00 00 00 02 '.F.....'.B.....
02E630: 27 00 47 02 00 00 00 02 27 00 43 02 00 00 00 02 '.G.....'.C.....
02E640: 27 00 48 02 00 00 00 02 27 00 44 02 00 00 00 02 '.H.....'.D.....
02E650: 27 00 49 02 00 00 00 02 27 00 45 02 00 00 00 02 '.I.....'.E.....
02E660: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E670: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E680: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E690: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E6A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E6B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E6C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E6D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E6E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E6F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E700: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E710: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E720: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E730: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E740: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E750: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E760: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E770: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E780: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E790: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E7A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E7B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E7C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E7D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E7E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E7F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E800: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E810: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E820: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E830: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E840: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E850: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E860: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E870: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E880: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E890: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E8A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E8B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E8C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E8D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E8E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E8F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E900: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E910: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E920: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E930: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E940: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E950: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E960: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E970: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E980: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E990: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E9A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E9B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E9C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E9D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E9E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E9F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EAA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EAB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EAC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EAD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EAE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EAF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EBA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EBB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EBC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EBD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EBE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EBF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ECA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ECB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ECC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ECD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ECE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ECF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EDA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EDB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EDC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EDD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EDE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EDF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EEA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EEB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EEC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EED0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EEE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EEF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EFA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EFB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EFC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EFD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EFE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EFF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F0A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F0B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F0C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F0D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F0E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F0F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F1A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F1B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F1C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F1D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F1E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F1F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F200: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F210: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F220: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F230: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F240: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F250: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F260: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F270: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F280: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F290: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F2A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F2B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F2C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F2D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F2E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F2F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F300: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F310: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F320: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F330: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F340: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F350: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F360: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F370: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F380: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F390: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F3A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F3B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F3C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F3D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F3E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F3F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F410: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F430: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F4A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F4B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F4C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F4D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F4E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F4F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F500: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F510: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F520: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F530: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F540: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F550: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F560: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F570: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F580: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F590: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F5A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F5B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F5C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F5D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F5E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F5F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F600: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F610: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F620: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F630: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F640: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F650: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F660: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F670: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F680: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F690: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F6A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F6B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F6C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F6D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F6E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F6F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F700: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F710: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F720: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F730: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F740: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F750: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F760: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F770: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F780: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F790: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F7A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F7B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F7C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F7D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F7E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F7F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F800: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F810: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F820: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F830: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F840: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F850: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F860: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F870: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F880: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F890: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F8A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F8B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F8C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F8D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F8E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F8F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F900: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
02F910: 28 00 01 01 00 01 52 E5 28 00 01 00 20 20 80 00 (.....R.(... ..
02F920: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02F930: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02F940: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02F950: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02F960: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02F970: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02F980: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02F990: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02F9A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02F9B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02F9C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02F9D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02F9E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02F9F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02FA00: 01 02 03 04 05 00 03 00 30 80 00 00 10 00 88 04 ........0.......
02FA10: 09 17 48 02 00 01 00 35 32 33 2D 30 33 37 43 20 ..H....523-037C
02FA20: 20 20 20 20 20 20 20 53 43 48 4E 45 49 44 45 52 SCHNEIDER
02FA30: 20 44 55 50 20 33 22 2D 31 30 30 2F 34 30 20 32 DUP 3"-100/40 2
02FA40: 53 20 44 44 20 53 53 00 00 20 20 20 20 20 20 20 S DD SS..
02FA50: 20 20 20 20 20 20 20 00 00 00 00 37 30 32 39 32 ....70292
02FA60: 2D 30 30 77 00 04 00 77 00 8E 01 00 00 00 00 00 -00w...w........
02FA70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02FA80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02FA90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02FAA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02FAB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02FAC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02FAD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02FAE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02FAF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
RESULT OF SEARCH :
PRO=20 CHEA=0 COD=35 MUSI=0 COP=7 GRA=12 WRIT=42 198=3 199=0 STARTER=0 KBI=0 CAAV=0 L.TOURNIER=0
EXTENDED CPC DSK File SAMdisk150708* RAFBGCHDIEi33!"!5G2$!DM!'#(DMi3B!0PY F
ailed to load the configuration sector $Y$*(&Y Illegal configuration sector
$*"*"2C!2! !d#(GN#!'F!-F!3F#(PWF#N#8Y Expansion buffer full or illegal token s
pecified $ OGl #$O1 #V!Kx("py2$SKC!'K8*R"(8 K!! &#(V#s#r#z y2!C#V#!5 ) R(0+"
o&"MDGG KC2O!*"$'! #7 0#O$OSC.SYS wurde nicht gefunden. BASICirgendeine Taste
druecken BASI$OSC SYS52DjDj $wwCP/M 2.2 - Amstrad Consumer Electronics plc
$ BO BO 11111111111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111f222222222222222222222222222222222222222222222222222222
22222222222222222222222222222222222222222222222233333333333333333333333333334£ H
!62 !6/H!6 !/HH!w20E!S!W6£ z!6cm!c6z!6l , HH 2£E£12v!q!*8!*6!q !p+q.* !q*&!p+q*
2i3B!0PY Failed to load the configuration sector $Y$*(&Y Illegal configurati
on sector $*"*"2C!2! !d#(GN#!'F!-F!3F#(PWF#N#8Y Expansion buffer full or ille
gal token specified $ OGl #$OX COPYRIGHT (C) 1979, DIGITAL RES
EARCH # 22 !22a2!B!6#5! )!F#x0ww!"!6(!#* ""# . Oo$!Y2*O"Gwx2p0#*6w0#6 .0#*6w
0#6 #6"# xDIR ERA TYPESAVEREN USER!yO# Ty#O321y2y21A92.!#fow!v"!READ ERRORNO FIL
E RAFBGCHDIE! 3#0 WxxG # 3x#B!Y2!!T! 6#O KAxK K xBR9!5#Y#"TALL (Y/N)T!6!w4!Yt
fT2o&)+!"**#" 2yWyOxOxG*V5dw N N#Fy*#u*#DM*6#x**s#r*6#6A#$2Ek/GyO2!q*C"*JOyx s-N
-# S2E!wTD6k-PYy5*zBK5dy!NO SPACETy!B*Os#"sG!Ypsp2mfFILE EXISTS 2) T!k!qqf!222!
!B! #0O#Cx21)fzBAD LOADCOMf !$$$ SUB *COT*CwD-'-*C Ox!N!Fwyx*Cw#+w#w+2E22i*C
w# # w2!E5T*C!"C"C!w# F! wx2*CwG!4$Zx22!Z2Ew"C2!"E9"1A22!ty)K!G#V*CE ,&-AGMS!!!!
Bdos Err On $Bad Sector$Select$File R/O$BA2!6O EB2 b* y!4 5yy5 6yHOyH H #H!
H H H $O2*CN# 22T*CGwn2ODMH"*CddslOs#rEy*Ww#*"*G#"!w4!iwZ!E262*C!!#OG#n,-.! w!y
G!x.E!q!pQE.$.Ei62ExN!OGG!G*C!r#r#ry#x#x2 p&+72H! w!5Nkx#Nx !2 ! 5#wOxp Hy!qMD#2
E!#V w#PBO#V#"##"##"##"!O*!O*!66*w#w*w#w'*!J*""!N#F*#V*#foyx*zW+*s+p+q-*C !!q#p#
w*BOYG*MD"£!Bw!2*C2uB22wEA*Cw"!""2B!"!rQQQrQ*"CQ-QQQrQ$Q*)B"*)*)Q*"EA2AQQQ*C//*W
£*"£og"*C6w2E**EDQ2yx#*DM*s#r*s#ryOxG*0MD!!N EGO S*Cqn&#VO"**)"Oo"*C*C!222Oww go
*# )BO!yoxg*BO!N#F"*#*s#r!J! J*o$*Ci6iw**#zr+sozg****,w!!N#F$**O!#! RAFBGCHDIE
PIP COMCC ARC CC ARC !"#$%&'()CC ARC*+,-./0123456789CC
ARCABCDEFGHICC ARCJKLCLIB ARCMNOPQRSTUVWXYZCLIB ARCabcdefghijklCLIB
ARCmnopqrstuvwxyzCLIB ARCXABORTED$BAD PARAMETER$INVALID USER NUMBER$RECORD
TOO LONG$INVALID DIGIT$END OF FILE, CTL-Z$CHECKSUM ERROR$CORRECT ERROR, TYPE RET
URN OR CTL-Z$INVALID FORMAT$HEX$$$$NO DIRECTORY SPACE$NO FILE$COM$START NOT FOUN
D$QUIT NOT FOUND$CANNOT CLOSE DESTINATION FILE$DESTINATION IS R/O, DELETE (Y/N)$
**NOT DELETED**$$$$$$$NOT FOUND$COPYING -$REQUIRES CP/M 2.0 OR NEWER FOR OPERATI
ON.$UNRECOGNIZED DESTINATION$CANNOT WRITE$INVALID PIP FORMAT$CANNOT READ$INVALID
SEPARATOR$1 2L M92212!o6+6+6!6#6!6#6G*o.!N6*M!K6!6!6+6' $2K x'! '! $ $!N6' !Cw!
6c!6/!/H2£ H!62 !6/H!6 !/HH!w20E!S!W6£ z!6cm!c6z!6l , HH 2£E£12v!q!*8!*6!q !p+q
.* !q*&!p+q*2!p+q*2!p+q*22!p+q*!p+q*!p+q*!p+q*2!p+q*!p+q* !q*& *M*M!p+q*!!p+q*"!
p+q*$!6 !kp+q*j!qp+q/*pDM9 M2rN!r!r*r&N!r4!6 .!ws+p+q+p+qw2wN *s*u w*s#"s*u#"u'
!"*M7!x6!x **DM2y y *"*62x *"!x4d !"/!j2 !"*KM'!z6!z1*(INP/OUTSPACE)(INP/OUTSPAC
E)(INP/OUTSPACE)(INP/OUTSPACE)(INP/OUTSPACE)(INP/OUTSPACE)(INP/OUTSPACE)(INP/OUT
SPACE)(INP/OUTSPACE)(INP/OUTSPACE)(INP/OUTSPACE)(INP/OUTSPACE)(INP/OUTSPACE)(INP
/OUTSPACE)(INP/OUTSPACE) COPYRIGHT (C) 1979, DIGITAL RESEARCH, PIP VERS 1.5$$
$ SUB ., INPIRDPTRUR1UR2RDROUTLPTUL1PRNLSTPTPUP1UP2PUNTTYCRTUC1CONNULEOFDISK
READ ERROR$DISK WRITE ERROR$VERIFY ERROR$NOT A CHARACTER SINK$READER STOPPING
$NOT A CHARACTER SOURCE$ RAFBGCHDIE"*DM' *"!z4 e!"!z6!z'2*H#"H!6!*&4 2!4m*"!z4I
'2!"!q !4!SS!2*£M!#V *w*#" *M !6q !6q !6q *& !6 !6 !60 *& !6 !6 !6 *& .147FPf
qSQHIN22 H"2202Oc!6202O*&O*&!sc*&Pw!22!6!£6'!£E!£4!p+q*0 !r+s+p+q*$7**H&*#"*#" 2
R!6!62!6H9!6-e!622-"2!!52!2!q" *Mn c4 *Mn 2!cQ !c2 !cw!n !5 Y !6!q!lw 0O !q
O O !62lo'2on'2nm'2m*mM£ *nM£ *oM£ *2D" ** *&"!qUYY2!62!!6 ! !6Q£H!6*M !6!q
a/z!-!p+q,!6*DM9!6z 2W!6D*&Lw2Ov*20O0AOA H!wOidV2O2!X!6!O!LNE!4 E E/.*&L6$L9k9.X
*KM020 020121''!G6!"!"7*Mn/a/H!6!&6/H2!qA/Z!/H8 2OmW!QHmd9!62*M!E#VO **2*#"m2m2m
!6m!6m!6m2mm!62m!62m!62m!62m'22T£2!£6*ME2£22 2i2d*M2*"!b!!0!qE24J!46*a!44EJ *KM'
!36'n0f9OY#9.3'.020'''7 6'!jA+!s!"1!"**"n"Dn""!Q2X!W*MEO2Mc!6#6!)*&P"HH*M!(2% !F
!5+N!2!42T!b*bMzb2!b62!*M!6!6 (!q!wO!2*&w!!4!6N2N! *N&N2 !p+q!6!6+6 !6 SM!6g8N2M
*M8p!6!6!6!*&P6!4z!6!6#6#6!6*M8*g2,A2OHH"!6!4jYO jM*"S*" 3bl*M1!""7*M!"H*#"/9.*#
"!' !'6!36' 1/!aE*#"zC9I.!6!*&'2 y.*M!4Q!22!2K2K!!K !p+q**M8)!N5!65!6#6!!62O/!O!
T*MHK!6!N522!44!6.2O8*g !N5!6%2*6 *6!q!6 !d*&I!4A2O*w!6!q!6!g!q*&*!622 HA2O 2 R
AFBGCHDIEDM! H-N2Oogozg#V)))ozg#V) d#Vgo nozgOozgiN#Fogo&ogH ' !'6!36' 1/!aE*#"
zC9I.!6!*&'2 y.*M!4Q!22!2K2K!!K !p+q*YMTBSZ 3050 /* NUMLOCS*SYMAVG + NUMGLBS*
SYMMAX */ /* ** System wide name size (for symbols) */ #define NAMESIZE 9
#define NAMEMAX 8 /* ** possible entries for "IDENT" */ #define LABEL
0 #define VARIABLE 1 #define ARRAY 2 #define POINTER 3 #define FUNCTI
ON 4 /* ** possible entries for "TYPE" ** low order 2 bits make type un
ique within length ** high order bits give length of object */ /* LAB
EL 0 */ #define CCHAR (12) #define CINT (BPW2) /* ** possible entr
ies for "CLASS" */ /* LABEL 0 */ #define STATIC 1 #define AUTOMA
TIC 2 #define EXTERNAL 3 #define AUTOEXT 4 /* ** "switch" table */ #d
efine SWSIZ (2*BPW) #define SWTABSZ (60*SWSIZ) /* ** "while" statement q
ueue */ #define WQTABSZ 30 #define WQSIZ 3 #define WQMAX (wq+WQTABSZ-
WQSIZ) /* ** entry offsets in while queue */ #define WQSP 0 #define W
QLOOP 1 #define WQEXIT 2 /* ** literal pool */ #define LITABSZ 800 #d
efine LITMAX (LI STDIO.H 296 /* ** STDIO.H -- Standard Small-C Definitions *
/ #define stdin 0 #define stdout 1 #define stderr 2 #define ERR (-2
) #define EOF (-1) #define YES 1 #define NO 0 #define NULL
0 #define CR 13 #define LF 10 #define BELL 7 #define SPACE '
' #define NEWLINE LF NOTICE.H 99 #define VERSION "Version 2.1 (Rev. 67)n" #
define CRIGHT1 "Copyright 1982, 1983 J. E. Hendrixnn" CC.DEF 2770 /* ** Smal
l-C Compiler Symbol Definitions */ TABSZ-1) /* ** input line */ #define
LINEMAX 127 #define LINESIZE 128 /* ** output staging buffer size */ #d
efine STAGESIZE 800 #define STAGELIMIT (STAGESIZE-1) /* ** macro (defin
e) pool */ #define MACNBR 130 #define MACNSIZE (MACNBR*(NAMESIZE+2)) #defi
ne MACNEND (macn+MACNSIZE) #define MACQSIZE (MACNBR*7) #define MACMAX (MACQ
SIZE-1) /* ** statement types */ #define STIF 1 #define STWHILE 2
#define STRETURN 3 #define STBREAK 4 #define STCONT 5 #def /* ** co
mpile options */ #define NOCCARGC/* no argument counts */ #define SEPARATE/*
compile separately */ #define OPTIMIZE/* compile output optimizer */ #define D
YNAMIC /* allocate memory dynamically */ #define COL/* terminate labels with a
colon */ /* #define UPPER/* force symbols to upper case */ #define LINK/* will
use with linking loader */ /* ** machine dependent parameters */ #define
BPW 2/* bytes per word */ #define LBPW 1/* log2(BPW) */ #define SBPC
1/* stacine STASM 6 #define STEXPR 7 #define STDO 8/* compile "do
" logic */ #define STFOR 9/* compile "for" logic */ #define STSWITCH 10/*
compile "switch/case/default" logic */ #define STCASE 11 #define STDEF 12
#define STGOTO 13/* compile "goto" logic */ #define STLABEL 14 CC1.C 329
9 /* ** Small-C Compiler Part 1 */ #include stdio.h #include "notice.h" #i
nclude "cc.def" /* ** miscellaneous storage */ char #ifdef OPTIMIZE op
timize,/* optimize output of stk bytes per character */ #define ERRCODE 7/* op
sys return code */ /* ** symbol table format */ #define IDENT 0 #defi
ne TYPE 1 #define CLASS 2 #define OFFSET 3 #define NAME 5 #defi
ne OFFSIZE (NAME-OFFSET) #define SYMAVG 10 #define SYMMAX 14 /* ** symbo
l table parameters */ #define NUMLOCS 25 #define STARTLOC symtab #define
ENDLOC (symtab+(NUMLOCS*SYMAVG)) #define NUMGLBS 200 #define STARTGLB END
LOC #define ENDGLB (ENDLOC+((NUMGLBS-1)*SYMMAX)) #define S RAFBGCHDIEaging
buffer */ #endif alarm,/* audible alarm on errors */ monitor,/* monitor f
unction headers */ pause,/* pause for operator on errors */ #ifdef DYNAMIC
*stage,/* output staging buffer */ *symtab,/* symbol table */ *litq,/* lite
ral pool */ *macn,/* macro name buffer */ *macq,/* macro string buffer */
*pline,/* parsing buffer */ *mline,/* macro buffer */ #else stageSTAGESIZE
, symtabSYMTBSZ, litqLITABSZ, macnMACNSIZE, macqMACQSIZE, plineL,
/* fd # for output file */ files,/* non-zero if file list specified on cmd li
ne */ filearg,/* cur file arg index */ glbflag,/* non-zero if internal glo
bals */ ctext,/* non-zero to intermix c-source */ ccode,/* non-zero while
parsing c-code */ /* zero when passing assembly code */ listfp,/* file point
er to list device */ lastst,/* last executed statement type */ *iptr/* work
ptr to any int buffer */ #include "cc11.c" #include "cc12.c" #include "cc1
3.c" #ifndef SEINESIZE, mlineLINESIZE, swqSWTABSZ, #endif *line,/* p
oints to pline or mline */ *lptr,/* ptr to either */ *glbptr,/* ptrs to next
entries */ *locptr,/* ptr to next local symbol */ *stagenext,/* next addr i
n stage */ *stagelast,/* last addr in stage */ quote2,/* literal string for
'"' */ *cptr,/* work ptrs to any char buffer */ *cptr2, *cptr3, msname
NAMESIZE,/* macro symbol name array */ ssnameNAMESIZE/* static symbol name ar
ray */ int #ifdef STGOTPARATE #include "cc21.c" #include "cc22.c" #include
"cc31.c" #include "cc32.c" #include "cc33.c" #include "cc41.c" #include "cc4
2.c" #endif CC11.C 5409 /* ** execution begins here */ main(argc, argv) i
nt argc, *argv argcsargc argvsargv fputs("Small-C Compiler, ", stderr)
fputs(VERSION, stderr) fputs(CRIGHT1, stderr) #ifdef DYNAMIC swnextcallo
c(SWTABSZ, 1) swendswnext+((SWTABSZ-SWSIZ)1) stagecalloc(STAGESIZE, 1)
stagelaststage+STAGELIMIT wqcalO nogo,/* 0 disables goto statements */
noloc,/* 0 disables block locals */ #endif op16,/* function addresses of b
inary operators */ op216,/* same for unsigned operators */ opindex,/* inde
x to matched operator */ opsize,/* size of operator in bytes */ swactive,/
* true inside a switch */ swdefault,/* default label #, else 0 */ *swnext,/
* address of next entry */ *swend,/* address of last table entry */ #ifdef DY
NAMIC *wq,/* while queue */ #else wqWQTAloc(WQTABSZ, BPW) litqcalloc(LI
TABSZ, 1) macncalloc(MACNSIZE, 1) macqcalloc(MACQSIZE, 1) plinecalloc(L
INESIZE, 1) mlinecalloc(LINESIZE, 1) #else swend(swnextswq)+SWTABSZ-SWSIZ
stagelaststage+STAGELIMIT #endif swactive/* not in switch */ stagenex
t/* direct output mode */ iflevel/* #if... nesting level 0 */ skiplevel/*
#if... not encountered */ macptr/* clear the macro pool */ csp/* stack pt
r (relative) */ errflag/* not skippiBSZ, #endif argcs,/* static argc */
*argvs,/* static argv */ *wqptr,/* ptr to next entry */ litptr,/* ptr to n
ext entry */ macptr,/* macro buffer index */ pptr,/* ptr to parsing buffer
*/ oper,/* address of binary operator function */ ch,/* current character
of line being scanned */ nch,/* next character of line being scanned */ d
eclared,/* # of local bytes declared, else -1 when done */ iflevel,/* #if...
nest level */ skiplevel,/* level at which #if... skng errors till "" */ eo
f/* not eof yet */ ncmp/* not in compound statement */ files filearg
quote10 func1/* first function */ ccode1/* enable preprocessing */ wqp
trwq/* clear while queue */ quote0'"'/* fake a quote literal */ inputinput
2EOF ask()/* get user options */ openfile()/* and initial input file */
preprocess()/* fetch first line */ #ifdef DYNAMIC symtabcalloc((NUMLOCS*SYM
AVG + NUMGLBS*SYMMAX), 1) #endif locipping started */ func1,/* true for f
irst function */ nxtlab,/* next avail label # */ litlab,/* label # assigne
d to literal pool */ beglab,/* beginning label -- first function */ csp,/*
compiler relative stk ptr */ argstk,/* function arg sp */ argtop, ncmp
,/* # open compound statements */ errflag,/* non-zero after 1st error in stat
ement */ eof,/* set non-zero on final input eof */ input,/* fd # for input
file */ input2,/* fd # for "include" file */ output RAFBGCHDIEptrSTARTLO
C glbptrSTARTGLB glbflag1 ctext0 header()/* intro code */ setops(
)/* set values in op arrays */ parse()/* process ALL input */ outside()/*
verify outside any function */ trailer()/* follow-up code */ fclose(output
) /* ** process all input text ** ** At this level, only static declar
ations, ** defines, includes and function ** definitions are legal..
. */ parse() while (eof0) if(amatch("extern", 6)) dodeclareef OPTI
MIZE sout(" -o", stderr) #endif #ifndef LINK sout(" -b#", stderr) #
endif sout(NEWLINE, stderr) abort(ERRCODE) /* ** input a
nd output file opens */ openfile() /* entire function revised */ char outfn
15 int i, j, ext inputEOF while(getarg(++filearg, pline, LINESIZE, argc
s, argvs)!EOF) if(pline0'-') continue ext NO i -1 j 0
while(pline++i) if(plinei '.') ext YES break (EXTERNAL) els
e if(dodeclare(STATIC)) else if(match("#asm")) doasm() else if(matc
h("#include"))doinclude() else if(match("#define")) addmac() else
newfunc() blanks()/* force eof if pending */
/* ** dump the literal pool */ dumplits(size) int size int j, k k0
while (klitptr) poll(1)/* allow program interruption */ defstorage(si
ze) j10 while(j--) outdec(getint(litq+k, size)) if(j 10)
outfnj++ plinei if(!ext) strcpy(pline + i, ".C")
input mustopen(pline, "r") if(!files && isatty(stdout)) strcp
y(outfn + j, ".MAC") output mustopen(outfn, "w") filesYES
kill() return if(files++) eofYES else inputstdin kill()
/* ** open a file with error checking */ mustopen(fn, mode) char *fn,
*mode int fd if(fd fopen(fn, mode)) return fd sout("op kk+size
if ((j0)(klitptr)) nl() break outbyte(',') /*
** dump zeroes for default initial values */ dumpzero(size, count) int size,
count int j while (count 0) poll(1)/* allow program interruption *
/ defstorage(size) j30 while(j--) outdec(0) if ((-
-count 0)(j0)) nl() break outbyte(',') /* ** verif
y compile ends outside any function */ outside() en error on ", stderr)
lout(fn, stderr) abort(ERRCODE) setops() op2 0 op 0 ffor/* h
eir5 */ op2 1 op 1 ffxor/* heir6 */ op2 2 op 2 ffand/* heir7 */
op2 3 op 3 ffeq/* heir8 */ op2 4 op 4 ffne op2 5ule op 5 ffle/
* heir9 */ op2 6uge op 6 ffge op2 7ult op 7 fflt op2 8ugt op 8 ffgt
op2 9 op 9 ffasr/* heir10 */ op210 op10 ffasl op211 if (ncmp) e
rror("no closing bracket") /* ** get run options */ ask() int i
ilistfpnxtlab0 outputstdout #ifdef OPTIMIZE optimize #endif alarmmon
itorpauseNO linemline while(getarg(++i, line, LINESIZE, argcs, argvs)!EOF)
if(line0!'-') continue if((toupper(line1)'L')&(isdigit(line2))&(line
3' ')) listfpline2-'0' continue if(line2' ')
if(toupper(line1)'A') alarmYES op11 ffadd/* heir11 */ o
p212 op12 ffsub op213 op13ffmult/* heir12 */ op214 op14 ffdiv
op215 op15 ffmod CC12.C 6788 /* ** open an include file */ do
include() char *cp blanks()/* skip over to name */ switch (*lptr)
case '"' case '' cp ++lptr while(*cp) switch(*cp) case '"' case
'' *cpNULL ++cp if((input2fopen(lptr,"r"))NULL) i
nput2EOF continue if(toupper(line1)'M') monitorYES
continue #ifdef OPTIMIZE if(toupper(line1)'O')
optimizeYES continue #endif if(toupper(line1)'P'
) pauseYES continue #ifndef LINK if(t
oupper(line1)'B') bump(0) bump(2) if(number(&nxtlab)) continue
#endif sout("usage cc file... -m -a -p -l#", stderr) #ifd RAFBGCHD
IE error("open failure on include file") kill()/* clear rest of lin
e */ /* so next read will come from */ /* new file (if open) */ /* **
test for global declarations */ dodeclare(class) int class if(amatch("char
",4)) declglb(CCHAR, class) ns() return 1 else if((amat
ch("int",3))(classEXTERNAL)) declglb(CINT, class) ns() return 1
return 0 /* ** delcare a static variable */ declglb(type, cla
ss else init(size, ident, &dim) if((dim -1)&(dimsavedim))
stowlit(0, sizeBPW) identPOINTER dumplits(size) dumpzero(siz
e, dim) return ident /* ** evaluate one initializer */ init(size, i
dent, dim) int size, ident, *dim int value if(qstr(&value)) if((ide
ntVARIABLE)(size!1)) error("must assign to char pointer or array") *
dim *dim - (litptr - value) if(identPOINTER) point() else if(cons
te) int type, class int k, j while(1) if(endst()) return/* do line
*/ if(match("(*")match("*")) jPOINTER k0 else
jVARIABLE k1 if (symname(ssname, YES)0) illname()
if(findglb(ssname)) multidef(ssname) if(match(")")) if(match("()")
) jFUNCTION else if (match("")) paerror(j) kneedsub()/* get
size */ jARRAY/* !0array */ if(classEXTERNAL) exxpr(&value))
if(identPOINTER) error("cannot assign to pointer") stowlit(value, si
ze) *dim *dim - 1 /* ** get required array size */ needsub
() int val if(match("")) return 0/* null size */ if (constexpr(&val)0
) val1 if (val0) error("negative size illegal") val -val
needtoken("")/* force single dimension */ return val/* and return size */
/* ** begin a function ** ** called from "parse" and tries ternal(ssname
) else if(j!FUNCTION) jinitials(type2, j, k) addsym(ssname, j, type, k
, &glbptr, class) if (match(",")0) return/* more */ /* ** dec
lare local variables */ declloc(typ) int typ int k,j if(swactive) err
or("not allowed in switch") #ifdef STGOTO if(noloc) error("not allowed with
goto") #endif if(declared 0) error("must declare first in block") while(
1) while(1) if(endst()) return if(match("*")) jPOINTto make
a function ** out of the following text ** */ newfunc() char *ptr #if
def STGOTO nogo /* enable goto statements */ noloc 0/* enable block-loca
l declarations */ #endif lastst/* no statement yet */ litptr0/* clear lit
pool */ litlabgetlabel()/* label next lit pool */ locptrSTARTLOC/* clear
local variables */ if(monitor) lout(line, stderr) if (symname(ssname, YES)
0) error("illegal function or declaration") kill()/* invaER el
se jVARIABLE if (symname(ssname, YES)0) illname() /* no
multidef check, block-locals are together */ kBPW if (match(""))
paerror(j) if(kneedsub()) jARRAY if(typ
CINT)kkLBPW else jPOINTER kBPW else if((ty
pCCHAR)&(jVARIABLE)) kSBPC declared declared + k addsym(ssname, j
, typ, csp - declared, &locptr, AUTOMATIC) break lidate line */
return if(func1) postlabel(beglab) func10 if(ptrfi
ndglb(ssname)) /* already in symbol table */ if(ptrIDENT!FUNCTION) m
ultidef(ssname) else if(ptrOFFSETFUNCTION) multidef(ssname) else
/* earlier assumed to be a function */ ptrOFFSETFUNCTION ptrCLA
SSSTATIC else addsym(ssname, FUNCTION, CINT, FUNCTION, &gl
bptr, STATIC) if(match("(")0) error("no open paren") if (match(",")
0) return /* ** test for pointer array (unsupported) */ paerror(
j) int j if(jPOINTER) error("no pointer arrays") /* ** initialize gl
obal objects */ initials(size, ident, dim) int size, ident, dim int savedi
m litptr0 if(dim0) dim -1 savedimdim entry() if(match(""))
if(match("")) while(dim) init(size, ident, &dim) if(
match(",")0) break needtoken("") RAFBGCHDIE entry() lo
cptrSTARTLOC argstk0/* init arg count */ while(match(")")0) /* then count
args */ /* any legal name bumps arg count */ if(symname(ssname, YES))
if(findloc(ssname)) multidef(ssname) else addsym(ssname
, 0, 0, argstk, &locptr, AUTOMATIC) argstkargstk+BPW
else error("illegal argument name")junk() blanks() /* if not clos
ing paren, should be comma */ if(streq(lptr,")")0) if(mat nogodecla
red/* disable goto if any */ #endif cspmodstk(csp - declared, NO)
declared -1 if(match("")) compound() else if(
amatch("if",2)) doif()laststSTIF else if(amatch("while",5)) dowhil
e()laststSTWHILE #ifdef STDO else if(amatch("do",2)) dodo()laststSTD
O #endif #ifdef STFOR else if(amatch("for",3)) dofor()laststSTFOR #endi
f #ifdef STSWITCH else if(amatch("switch",6)) doswitchch(",")0) error("no
comma") if(endst()) break csp0/* preset stack ptr */ a
rgtopargstk while(argstk) /* now let user declare what types of things
*/ /* those arguments were */ if(amatch("char",4)) doargs(CCH
AR)ns() else if(amatch("int",3)) doargs(CINT)ns() else error("wrong nu
mber of arguments")break statement() #ifdef STGOTO if(lastst ! STRE
TURN && lastst ! STGOTO) ffret() #else if(lastst ! STRETU()laststSTSWITCH
else if(amatch("case",4)) docase()laststSTCASE else if(amatch("default"
,7)) dodefault()laststSTDEF #endif #ifdef STGOTO else if(amatch("goto",
4)) dogoto()laststSTGOTO else if(dolabel())laststSTLABEL #endif else
if(amatch("return",6)) doreturn()ns()laststSTRETURN else if(amatch("break
",5)) dobreak()ns()laststSTBREAK else if(amatch("continue",8)) docont()ns(
)laststSTCONT else if(match("RN) ffret() #endif if(litptr) printl
abel(litlab) col() dumplits(1)/* dump literals */ /* **
declare argument types ** ** called from "newfunc" this routine adds an entry
in the ** local symbol table for each named argument */ doargs(t) int t i
nt j, legalname char c, *argptr while(1) if(argstk0) return/* no arg
uments */ if(match("(*")match("*")) jPOINTER else jVARIABLE if((legal
namesymname(ssname, YES))0) illname() ")) errflag0 else if(match("#asm"))
doasm()laststSTASM else doexpr()ns()laststSTEXPR return lastst
/* ** semicolon enforcer ** ** called whenever syntax requires a semic
olon */ ns() if(match("")0) error("no semicolon") else errflag0
compound() int savcsp char *savloc savcspcsp savloclocptr decl
ared0/* may now declare local variables */ ++ncmp/* new level open */ whil
e (match("")0) if(match(")")) if(match("()")) if(match(""))
paerror(j) while(inbyte()!'') if(endst()) break/* skip "..." */
jPOINTER/* add entry as pointer */ if(legalname) if(ar
gptrfindloc(ssname)) /* add details of type and address */ ar
gptrIDENTj argptrTYPEt putint(argtop-getint(argptr+OFFSET, OFF
SIZE), argptr+OFFSET, OFFSIZE) else error("not an argument")
argstka if(eof) error("no final ") break
else statement()/* do one */ --ncmp/* close current level */ /*55*/ #ifdef
STGOTO if(lastst ! STRETURN && lastst ! STGOTO) #else if(lastst ! STRETU
RN) #endif modstk(savcsp, NO)/* delete local variable space */ cspsavcs
p /*55*/ #ifdef STGOTO cptrsavloc/* retain labels */ while(cptr locptr)
cptr2nextsym(cptr) if(cptrIDENT LABEL) while(cptr cptr2) *
savloc++ *cptrgstk-BPW/* cnt down */ if(endst())return if(match(",")0
) error("no comma") CC13.C 6825 /* ** statement parser ** ** c
alled whenever syntax requires a statement ** this routine performs that state
ment ** and returns a number telling which one */ statement() if ((ch0)
& (eof)) return else if(amatch("char",4)) declloc(CCHAR)ns() else if(amat
ch("int",3)) declloc(CINT)ns() else if(declared 0) #ifdef STGOTO
if(ncmp 1) RAFBGCHDIEr++ else cptrcptr2 #endif lo
cptrsavloc/* delete local symbols */ declared -1/* may not declare variables
*/ doif() int flab1,flab2 flab1getlabel()/* get label for false
branch */ test(flab1, YES)/* get expression, and branch false */ statement
()/* if true, do a statement */ if (amatch("else",4)0) /* if...else */
/* simple "if"...print false label */ postlabel(flab1) return/* and ex
it */ flab2ge/* cases, etc. */ jump(wqWQEXIT) postlabel(endlab)
sw()/* match cases */ while(swptr swnext) defstorage(CINT2) pri
ntlabel(*swptr++)/* case label */ outbyte(',') outdec(*swptr++)/* case
value */ nl() defstorage(CINT2) outdec(0) nl() if(swdefa
ult) jump(swdefault) postlabel(wqWQEXIT) delwhile() swnextswnex swde
faultswdef swactiveswact docase() if(swactive0) error("not in swit
ch") if(tlabel() #ifdef STGOTO if((lastst ! STRETURN)&(lastst ! STGOTO))
jump(flab2) #else if(lastst ! STRETURN) jump(flab2) #endif postlabel(fla
b1)/* print false label */ statement()/* and do "else" clause */ postlabel
(flab2)/* print true label */ doexpr() int const, val char *before
, *start while(1) setstage(&before, &start) expression(&const, &va
l) clearstage(before, start) if(ch ! ',') break bump(1)
dowhile() swnext swend) error("too many cases") return
postlabel(*swnext++ getlabel()) constexpr(swnext++) needtoken("")
dodefault() if(swactive) if(swdefault) error("multiple defaults")
else error("not in switch") needtoken("") postlabel(swdefaultgetlabel
()) #endif #ifdef STGOTO dogoto() if(nogo 0) error("not allowed wi
th block-locals") else noloc 1 if(symname(ssname, YES)) jump(addlabel())
else error("bad int wq4/* allocate local queue */ addwhile(wq)/* add
entry to queue for "break" */ postlabel(wqWQLOOP)/* loop label */ test(wqW
QEXIT, YES)/* see if true */ statement()/* if so, do a statement */ jump(w
qWQLOOP)/* loop to label */ postlabel(wqWQEXIT)/* exit label */ delwhile()
/* delete queue entry */ #ifdef STDO dodo() int wq4, top addwhile
(wq) postlabel(topgetlabel()) statement() needtoken("while") postlab
el(wqlabel") ns() dolabel() char *savelptr blanks() savelptr
lptr if(symname(ssname, YES)) if(gch()'') postlabel(addlabel())
return 1 else bump(savelptr-lptr) return 0
addlabel() if(cptrfindloc(ssname)) if(cptrIDENT!LABEL) error("not a l
abel") else cptraddsym(ssname, LABEL, LABEL, getlabel(), &locptr, LABEL
) return (getint(cptr+OFFSET, OFFSIZE)) #endif doreturn() if(end
st()WQLOOP) test(wqWQEXIT, YES) jump(top) postlabel(wqWQEXIT) delwhi
le() ns() #endif #ifdef STFOR dofor() int wq4, lab1, lab2 add
while(wq) lab1getlabel() lab2getlabel() needtoken("(") if(match("")0
) doexpr()/* expr 1 */ ns() postlabel(lab1) if(match("")0
) test(wqWQEXIT, NO)/* expr 2 */ ns() jump(lab2) postlabe
l(wqWQLOOP) if(match(")")0) doexpr()/* expr 3 */ 0) doexpr()
modstk(0, YES) else modstk(0, NO) ffret() dobreak()
int *ptr if ((ptrreadwhile(wqptr))0) return modstk((ptrWQSP), NO) jump(
ptrWQEXIT) docont() int *ptr ptr wqptr while (1) if ((p
trreadwhile(ptr))0) return if (ptrWQLOOP) break modstk((ptrWQSP),
NO) jump(ptrWQLOOP) doasm() ccode0/* mark mode as "asm" */ whi
le (1) inline() if (match("#enda needtoken(")") jump(lab1)
postlabel(lab2) statement() jump(wqWQLOOP) postlabel(wqWQEXIT) de
lwhile() #endif #ifdef STSWITCH doswitch() int wq4, endlab, swact,
swdef, *swnex, *swptr swactswactive swdefswdefault swnexswptrswnext
addwhile(wq) *(wqptr + WQLOOP - WQSIZ) 0 needtoken("(") doexpr()/* eva
luate switch expression */ needtoken(")") swdefault0 swactive1 jump(
endlabgetlabel()) statement() R A F B G C H D I Esm")) break if(eof)br
eak sout(line, output) kill() ccode1 CC2.C 703 /* **
Small-C Compiler Part 2 */ #include stdio.h #include "cc.def" extern char
#ifdef DYNAMIC *symtab, *stage, *macn, *macq, *pline, *mline, #els
e symtabSYMTBSZ, stageSTAGESIZE, macnMACNSIZE, macqMACQSIZE, plin
eLINESIZE, mlineLINESIZE, #endif #ifdef OPTIMIZE optimize, #endif al
arm, *glbptr, *line, *lptr, *cptr, *cptr2, *cptr3, *locptrind length byte */
return entry /* ** get integer of length len from address addr ** (b
yte sequence set by "putint") */ getint(addr, len) char *addr int len int
i i *(addr + --len)/* high order byte sign extended */ while(len--) i (i
8) *(addr+len)&255 return i /* ** put integer i of length len into
address addr ** (low byte first) */ putint(i, addr, len) char *addr int i, l
en while(len--) *addr++ i i i8 /* , msnameNAMESIZE
, pause, quote2, *stagelast, *stagenext extern int #ifdef DYNAMIC *wq,
#else wqWQTABSZ, #endif ccode, ch, csp, eof, errflag, iflevel, i
nput, input2, listfp, macptr, nch, nxtlab, op16, opindex, opsize, out
put, pptr, skiplevel, *wqptr #include "cc21.c" #include "cc22.c" CC
21.C 4371 junk() if(an(inbyte())) while(an(ch)) gch() else while(an(ch)0
) if(ch0) break gch() blanks() endst() ** test i
f next input string is legal symbol name */ symname(sname, ucase) char *sname
int ucase int kchar c blanks() if(alpha(ch)0) return (*sname0) k0
while(an(ch)) #ifdef UPPER if(ucase) snamektoupper(gch()) e
lse #endif snamekgch() if(kNAMEMAX) ++k snamek0 return
1 /* ** return next avail internal label number */ getlabel() retu
rn(++nxtlab) /* ** post a label in the program */ postlabelblanks()
return ((streq(lptr,"")(ch0))) illname() error("illegal symbol")
junk() multidef(sname) char *sname error("already defined")
needtoken(str) char *str if (match(str)0) error("missing token") ne
edlval() error("must be lvalue") findglb(sname) char *sname if(s
earch(sname, STARTGLB, SYMMAX, ENDGLB, NUMGLBS, NAME)) return cptr retur
n 0 findloc(sname) char *sname cptr locptr - 1/* sea(label) int la
bel printlabel(label) col() nl() /* ** print specified number
as a label */ printlabel(label) int label outstr("CC") outdec(label)
/* ** test if c is alphabetic */ alpha(c) char c return (isalpha(c
) c'') /* ** test if given character is alphanumeric */ an(c) char c
return (alpha(c) isdigit(c)) addwhile(ptr) int ptr int k pt
rWQSPcsp/* and stk ptr */ ptrWQLOOPgetlabel()/* and lrch backward for block l
ocals */ while(cptr STARTLOC) cptr cptr - *cptr if(astreq(sname,
cptr, NAMEMAX)) return (cptr - NAME) cptr cptr - NAME - 1 return
0 addsym(sname, id, typ, value, lgptrptr, class) char *sname, id, typ
int value, *lgptrptr, class if(lgptrptr &glbptr) if(cptr2findglb(sn
ame)) return cptr2 if(cptr0) error("global symbol table overflow")
return 0 else if(locptr (ENDLOooping label */
ptrWQEXITgetlabel()/* and exit label */ if (wqptrWQMAX) error("too many
active loops") abort(ERRCODE) k0 while (kWQSIZ) *wqptr++ ptrk
++ delwhile() if (wqptr wq) wqptrwqptr-WQSIZ readwhile(ptr) i
nt *ptr if (ptr wq) error("out of context") return 0 el
se return (ptr-WQSIZ) white() #ifdef DYNAMIC /* test for stack/prog o
verlap at deepest nesting */ /* primary - symname - bC-SYMMAX)) error
("local symbol table overflow") abort(ERRCODE) cptr *lgptrp
tr cptrIDENTid cptrTYPEtyp cptrCLASSclass putint(value, cptr+O
FFSET, OFFSIZE) cptr3 cptr2 cptr + NAME while(an(*sname)) *cptr2++ *sna
me++ if(lgptrptr &locptr) *cptr2 cptr2 - cptr3/* set length */ *
lgptrptr ++cptr2 return cptr nextsym(entry) char *entry ent
ry entry + NAME while(*entry++ ' ')/* f RAFBGCHDIElanks - white */ avai
l(YES)/* abort on stack overflow */ #endif return (*lptr ' ' && *lptr!NULL)
gch() int c if(cch) bump(1) return c bump(n) int n i
f(n) lptrlptr+n else lptrline if(chnch *lptr) nch *(lptr+1) kill
() *line0 bump(0) inbyte() while(ch0) if (eof) return 0
preprocess() return gch() inline() /* numerous revisions *
/ int k,unit poll(1)/* allow oper while((ch!39)((*(lptr-1)92)&(*(lptr-2)!9
2))) if(ch0) error("no apostrophe") break
keepch(gch()) gch() keepch(39)
else if((ch'/')&(nch'*')) bump(2) while(((ch'*')&(nch'/'))0)
if(ch) bump(1) else ifline() if(eof) b
reak bump(2) else if(an(ch)) k
0 while((an(ch)) & (kNator interruption */ if (inputEOF) openfile()
if(eof) return if((unitinput2)EOF) unitinput if(fgets(line, LINEMAX, unit
)NULL) fclose(unit) if(input2!EOF) input2EOF else inputEOF
*lineNULL else if(listfp) if(listfpoutput) cout('', output)
sout(line, listfp) bump(0) CC22.C 6866 ifline() while(1)
inline() if(eof) return if(match("#ifdef")) ++iflevel
if(skiplevel) contAMEMAX)) msnamek++ch gch()
msnamek0 if(search(msname, macn, NAMESIZE+2, MACNEND, MACNBR, 0))
kgetint(cptr+NAMESIZE, 2) while(cmacqk++) keepch(c) wh
ile(an(ch)) gch() else k0 while(cmsnamek++)
keepch(c) else keepch(gch()) if(pptrLINEMAX) err
or("line too long") keepch(0) linepline bump(0) noiferr() er
ror("no matchiinue symname(msname, NO) if(search(msname, macn, NAM
ESIZE+2, MACNEND, MACNBR, 0)0) skipleveliflevel continue
if(match("#ifndef")) ++iflevel if(skiplevel) continue
symname(msname, NO) if(search(msname, macn, NAMESIZE+2, MACNEND, MACNBR
, 0)) skipleveliflevel continue if(match("#else"))
if(iflevel) if(skipleveliflevel) skiplevel0 else if(s
kiplevel0) skiplevelng #if...") errflag0 addmac() int k if(sym
name(msname, NO)0) illname() kill() return k0 if(sea
rch(msname, macn, NAMESIZE+2, MACNEND, MACNBR, 0)0) if(cptr2cptr) while(*c
ptr2++ msnamek++) else error("macro name table full") retur
n putint(macptr, cptr+NAMESIZE, 2) while(white()) gch() w
hile(putmac(gch())) if(macptrMACMAX) error("macro string queue full") a
bort(ERRCODE) iflevel else noiferr() continue
if(match("#endif")) if(iflevel) if(skipleveliflevel) ski
plevel0 --iflevel else noiferr() continue
if(skiplevel) continue if(ch0) continue break kee
pch(c) char c if(pptrLINEMAX) pline++pptrc preprocess() int k
char c if(ccode) linemline ifline() if(eof) return
else putmac(c) char c macqmacptrc if(macptrMACMAX) ++macptr
return c /* ** search for symbol match ** on return cptr points to
slot found or empty slot */ search(sname, buf, len, end, max, off) char *sn
ame, *buf, *end int len, max, off cptrcptr2buf+((hash(sname)%(max-1))*len)
while(*cptr ! 0) if(astreq(sname, cptr+off, NAMEMAX)) return 1 if(
(cptrcptr+len) end) cptrbuf if(cptr cptr2) return (cptr0) return
0 linepline inline() return pptr -1 while(ch ! NE
WLINE && ch) if(white()) keepch(' ') while(white()) gch()
else if(ch'"') keepch(ch) gch() while((ch!'"')
((*(lptr-1)92)&(*(lptr-2)!92))) if(ch0) error("no quote")
break keepch(gch()) gch()
keepch('"') else if(ch39) keepch(39) gch()
RAFBGCHDIE hash(sname) char *sname int i, c i0 while(c *sname++) i
(i1)+c return i setstage(before, start) int *before, *start if((*b
eforestagenext)0) stagenextstage *startstagenext clearstage(before, st
art) char *before, *start *stagenext0 if(stagenextbefore) return if(st
art) #ifdef OPTIMIZE peephole(start) #else sout(start, output) #en
dif outdec(number) int number int k,zs char c, *q, *r zs
0 if (an(str1k))return 0 if (an(str2k))return 0 return k match
(lit) char *lit int k blanks() if (kstreq(lptr,lit)) bump(k)
return 1 return 0 amatch(lit,len) char *litint len int k
blanks() if (kastreq(lptr,lit,len)) bump(k) while(an(ch)) inby
te() return 1 return 0 nextop(list) char *list char op4
opindex0 blanks() while(1) opsize0 while(*list ' ' k10000
if (number0) number(-number) outbyte('-') while (k1)
q0 rnumber while(r k) ++q r - k c q + '0' if ((c!'0')(k1)(zs
)) zs1 outbyte(c) numberr kk/10 ol
(ptr) char ptr ot(ptr) nl() ot(ptr) char ptr outstr(ptr)
outstr(ptr) char ptr poll(1) /* allow program interruption */ /* must
work with symbol table names terminated by l) opopsize++ *list++ opopsize
0 if(opsizestreq(lptr, op)) if((*(lptr+opsize) ! '')& (*(l
ptr+opsize) ! *(lptr+opsize-1))) return 1 if(*list) ++lis
t ++opindex else return 0 blanks() while(1)
while(ch) if(white()) gch() else return if(li
nemline) return preprocess() if(eof)break CC3.C 373 /*
** Small-C Compiler Part 3 */ #includeength */ while(*ptr ' ') outbyte(*p
tr++) outbyte(c) char c if(stagenext) if(stagenextstagelast)
error("staging buffer overflow") return 0 else *stagen
ext++ c else cout(c,output) return c cout(c, fd) char c int
fd if(fputc(c, fd)EOF) xout() sout(string, fd) char *string int fd
if(fputs(string, fd)EOF) xout() lout(line, fd) char *line int fd so
ut(line, fd) cout(NEWLINE, fd) stdio.h #include "cc.def" extern char #
ifdef DYNAMIC *stage, *litq, #else stageSTAGESIZE, litqLITABSZ, #end
if *glbptr, *lptr, ssnameNAMESIZE, quote2, *stagenext extern int ch, cs
p, litlab, litptr, nch, op16, op216, oper, opindex, opsize #include
"cc31.c" #include "cc32.c" #include "cc33.c" CC31.C 6680 /* ** lval0 -
symbol table address, else 0 for constant ** lval1 - type of indirect obj to fe
tch, else 0 for static ** lval2 - type of xout() fputs("output error",
stderr) abort(ERRCODE) nl() outbyte(NEWLINE) col() #ifde
f COL outbyte('') #endif error(msg) char msg if(errflag) return e
lse errflag1 lout(line, stderr) errout(msg, stderr) if(alarm) fputc(7,
stderr) if(pause) while(fgetc(stderr)!NEWLINE) if(listfp0) errout(msg, lis
tfp) errout(msg, fp) char msg int fp int k kline+2 while(k++ lptr
) cout(' ', fp) lout("/", fp) pointer or array, else 0 for all other ** lva
l3 - true if constant expression ** lval4 - value of constant expression (+ aux
iliary uses) ** lval5 - true if secondary register altered ** lval6 - function
address of highest/last binary operator ** lval7 - stage address of "oper 0" c
ode, else 0 */ /* ** skim over terms adjoining and && operators */ skim(
opstr, testfunc, dropval, endval, hier, lval) char *opstr int (*testfunc)(
), dropval, endval, (*hier)(), lval int k, h sout("**** ", fp) lout(msg, f
p) streq(str1,str2) char str1,str2 int k k0 while (str2k)
if ((str1k)!(str2k)) return 0 ++k return k astreq(str1,str
2,len) char str1,str2int len int k k0 while (klen) if ((str1k)!
(str2k))break /* ** must detect end of symbol table names terminated b
y ** symbol length in binary */ if(str1k ' ') break if(str2
k ' ') break ++k R A F B G C H D I Eits, droplab, endlab hits0
while(1) kplnge1(hier, lval) if(nextop(opstr)) bump(opsize
) if(hits0) hits1 droplabgetlabel() d
ropout(k, testfunc, droplab, lval) else if(hits) dropout(k,
testfunc, droplab, lval) const(endval) jump(endlabgetlabel())
postlabel(droplab) const(dropval) postlabel(endlab) lva
l1lval2lval3lval4lval70 return 0 smartpop(lval2, start) if(db
ltest(oper, lval,lval2)) doublereg() if(dbltest(oper, lval2,lval))
swap() doublereg() if(operffsub) swap()
if(oper) if(lval3lval3&lval23) lval4calc(lval4, oper, lva
l24) clearstage(before, 0) lval50 else if((
lval20)&(lval220)) (*oper)() lval6oper/* identify the operato
r */ else return k /* ** test for early
dropout from or && evaluations */ dropout(k, testfunc, exit1, lval) int k
, (*testfunc)(), exit1, lval if(k) rvalue(lval) else if(lval3) const(lval
4) (*testfunc)(exit1)/* jumps on false */ /* ** plunge to a lower lev
el */ plnge(opstr, opoff, hier, lval) char *opstr int opoff, (*hier)(),
lval int k, lval28 kplnge1(hier, lval) if(nextop(opstr)0) return k
if(k) rvalue(lval else (*oper2)() lval6oper2/* identify th
e operator */ if(operffsub) if((lval2CINT)&(lval2
2CINT)) swap() const(1) ffasr()/** div by 2 **/
if((operffsub)(operffadd)) result(lval, lval2) c
alc(left, oper, right) int left, (*oper)(), right if(oper ffor) retur
n (left right) else if(oper ffxor) return (left right) else if(oper
) while(1) if(nextop(opstr)) bump(opsize) opindexopindex
+opoff plnge2(opopindex, op2opindex, hier, lval, lval2) else
return 0 /* ** unary plunge to lower level */ plnge1(hier, lval
) int (*hier)(), lval char *before, *start int k setstage(&before, &st
art) k(*hier)(lval) if(lval3) clearstage(before,0)/* load constant later *
/ return k /* ** binary plunge to lower level */ plnge2(oper, oper2
, ffand) return (left & right) else if(oper ffeq) return (left right)
else if(oper ffne) return (left ! right) else if(oper ffle) return (
left right) else if(oper ffge) return (left right) else if(oper ff
lt) return (left right) else if(oper ffgt) return (left right) els
e if(oper ffasr) return (left right) else if(oper ffasl) return (left r
ight) else if(oper ffadd) return (left + right) else if(oper hier, lval
, lval2) int (*oper)(),(*oper2)(),(*hier)(),lval,lval2 char *before, *sta
rt setstage(&before, &start) lval51/* flag secondary register used */ l
val70/* flag as not "... oper 0" syntax */ if(lval3) /* constant on left side
not yet loaded */ if(plnge1(hier, lval2)) rvalue(lval2) if(lval40) lv
al7stagenext const2(lval4dbltest(oper, lval2, lval)) else /* non-c
onstant on left side */ push() if(plnge1(hier, l ffsub) return (left
- right) else if(oper ffmult) return (left * right) else if(oper ffdiv
) return (left / right) else if(oper ffmod) return (left % right) els
e return 0 expression(const, val) int *const, *val int lval8 if(h
ier1(lval)) rvalue(lval) if(lval3) *const1 *vallval4 else
*const0 hier1(lval) int lval int k,lval28, lval32, oper kplnge1
(hier3, lval) if(lval3) const(lval4) val2)) rvalue(lval2) if(lval23) /
* constant on right side */ if(lval240) lval7start if(operffadd) /
* may test other commutative operators */ cspcsp+2 clearstage(
before, 0) const2(lval24dbltest(oper, lval, lval2)) /* load secondary
*/ else const(lval24dbltest(oper, lval, lval2)) /* l
oad primary */ smartpop(lval2, start) else /* no
n-constants on both sides */ RAFBGCHDIE if(match("")) operffor else
if(match("")) operffxor else if(match("&")) operffand else if(match("+")
) operffadd else if(match("-")) operffsub else if(match("*")) operffmul
t else if(match("/")) operffdiv else if(match("%")) operffmod else if
(match("")) operffasr else if(match("")) operffasl else if(match("")) op
er0 else return k if(k0) needlval() return 0 lval30 l
val0 lval31 lvaval) if(ptrlval0)lval1ptrTYPE else lval1CINT l
val20/* flag as not pointer or array */ lval30/* flag as not constant */
lval41/* omit rvalue() on func call */ lval70 return 1 els
e if(match("&")) /* unary & */ if(hier13(lval)0) error("illegal add
ress") return 0 ptrlval0 lval2ptrTYPE if(lval1) re
turn 0 /* global & non-array */ address(ptr) lval1l1 if(lval1)
if(oper) push() rvalue(lval) plnge2(oper, oper, h
ier1, lval, lval2) if(oper) pop() else if(oper) rval
ue(lval) plnge2(oper, oper, hier1, lval, lval2) else
if(hier1(lval2)) rvalue(lval2) lval5lval25 store(lval3)
return 0 hier3(lval) int lval return skim("", eq0, 1, 0, hier4,
lval) hier4(lval) int lval return skimptrTYPE return 0
else khier14(lval) if(match("++")) /* lval++ */ if(k0)
needlval() return 0 step(inc, lval) dec(lva
l22) return 0 else if(match("--")) /* lval-- */ if(k0
) needlval() return 0 step(dec, lval)
inc(lval22) return 0 else return k hier14(lval
) int *lval int k, const, val("&&", ne0, 0, 1, hier5, lval) hier5(lv
al) int lval return plnge("", 0, hier6, lval) hier6(lval) int lval
return plnge("", 1, hier7, lval) hier7(lval) int lval return pln
ge("&", 2, hier8, lval) hier8(lval) int lval return plnge(" !", 3,
hier9, lval) hier9(lval) int lval return plnge(" ", 5, hier10, lv
al) hier10(lval) int lval return plnge(" ", 9, hier11, lval)
hier11(lval), lval28 char *ptr, *before, *start kprimary(lval) ptrlval
0 blanks() if((ch'')(ch'(')) lval51/* secondary register will be use
d */ while(1) if(match("")) /* subscript */ if(ptr0)
error("can't subscript") junk() needtoken("")
return 0 else if(ptrIDENTPOINTER)rvalue(lval)
else if(ptrIDENT!ARRAY) error("can't subscript") int l
val return plnge("+ -", 11, hier12, lval) hier12(lval) int lval
return plnge("* / %", 13, hier13, lval) CC32.C 5065 hier13(lval) int
lval int k char *ptr if(match("++")) /* ++lval */ if(hier13(lva
l)0) needlval() return 0 step(inc, lval) return
0 else if(match("--")) /* --lval */ if(hier13(lval)0) nee
dlval() return 0 step(dec, lval) ret k0
setstage(&before, &start) lval230 plnge2(0, 0, hier1, lv
al2, lval2) /* lval2 deadend */ needtoken("") if(lval23)
clearstage(before, 0) if(lval24) if(ptrTYPECINT)
const2(lval24LBPW) else const2(lval24)
ffadd() else if(ptrTYPECINT) dou
blereg() ffadd() lvaurn 0 else if (matc
h("")) /* */ if(hier13(lval)) rvalue(lval) com() lval4 lval4
return (lval70) else if (match("!")) /* ! */ if(hier13(lval)) r
value(lval) lneg() lval4 !lval4 return (lval70) else if
(match("-")) /* unary - */ if(hier13(lval)) rvalue(lval) neg() l
val4 -lval4 return (lval70) else if(match("*")) /* unary * */
if(hier13(lval)) rvalue(l RAFBGCHDIEl20 lval1ptrTYPE k1
else if(match("(")) /* function(...) */ if(ptr0) callfunc
tion(0) else if(ptrIDENT!FUNCTION) if(k && !lval4) rvalue(l
val) callfunction(0) else callfunction(ptr)
klval0lval3lval40 else return k if(ptr0)
return k if(ptrIDENTFUNCTION) address(ptr) lval00 return 0
retur && (oper!ffsub)) return 0 if(val12!CINT) return 0 if(val22) r
eturn 0 return 1 /* ** determine type of binary operation */ result
(lval, lval2) int lval, lval2 if((lval2!0)&(lval22!0)) lval20
else if(lval22) lval0lval20 lval1lval21 lval2lval22
step(oper, lval) int (*oper)(), lval if(lval1) if(lval5) pus
h() rvalue(lval) (*oper)(lval22) pn k primary(lval)
int *lval char *ptr, snameNAMESIZE int k if(match("(")) /* (expressio
n,...) */ do khier1(lval) while(match(",")) needtoken(")") return
k putint(0, lval, 8LBPW)/* clear lval array */ if(symname(sname, YE
S)) if(ptrfindloc(sname)) #ifdef STGOTO if(ptrIDENTLABEL)
experr() return 0 #endif getloc(ptr) lval0p
tr lval1ptrTYPE if(ptrIDENTop() store(lval) return
else move() lval51 rvalue(lval) (
*oper)(lval22) store(lval) store(lval) int lval if(lval1) putstk(
lval) else putmem(lval) rvalue(lval) int lval if ((lval0!0)
&(lval10)) getmem(lval) else indirect(lval) te
st(label, parens) int label, parens int lval8 char *before, *start i
f(parens) needtoken("(")POINTER) lval1CINT lval2ptrTYPE
if(ptrIDENTARRAY) lval2ptrTYPE return 0
else return 1 if(ptrfindglb(sname)) if(ptrIDENT!FUNC
TION) lval0ptr lval10 if(ptrIDENT!ARRAY)
if(ptrIDENTPOINTER) lval2ptrTYPE return 1 addre
ss(ptr) lval1lval2ptrTYPE return 0 while(1)
setstage(&before, &start) if(hier1(lval)) rvalue(lval) if(match(",
")) clearstage(before, start) else break if(parens) needtoken(")")
if(lval3) /* constant expression */ clearstage(before, 0) if(lval4
) return jump(label) return if(lval7) /* stage address of "op
er 0" code */ operlval6/* operator function address */ if((operff
eq) (operule)) zerojump(eq0, label, lval) ptraddsym(sname,FUN
CTION,CINT,0,&glbptr,AUTOEXT) lval0ptr lval10 return 0 i
f(constant(lval)0) experr() return 0 experr() error("invalid expre
ssion") const(0) junk() callfunction(ptr) char *ptr /* symbol tab
le entry or 0 */ int nargs, const, val nargs0 blanks()/* already saw op
en paren */ while(streq(lptr,")")0) if(endst()) break if(ptr)
expression(&const, &val) push() else if((operffne)
(operugt)) zerojump(ne0, label, lval) else if (operffgt) zerojump(gt0, l
abel, lval) else if (operffge) zerojump(ge0, label, lval) else if (ope
ruge) clearstage(lval7,0) else if (operfflt) zerojump(lt0, label, lval)
else if (operult) zerojump(ult0, label, lval) else if (operffle) zeroju
mp(le0, label, lval) else testjump(label) else tes
tjump(label) clearstage(before, start) c else push()
expression(&const, &val) swapstk() nargsnargs+BPW/* coun
t args*BPW */ if (match(",")0) break needtoken(")") if(streq(pt
r+NAME, "CCARGC")0) loadargc(nargsLBPW) if(ptr) ffcall(ptr+NAME) else call
stk() cspmodstk(csp+nargs, YES) CC33.C 4152 /* ** true if val1 - in
t pointer or int array and val2 not ptr or array */ dbltest(oper, val1, val2)
int (*oper)(), val1, val2 if((oper!ffadd) RAFBGCHDIEonstexpr(val) int *val
int const char *before, *start setstage(&before, &start) expression
(&const, val) clearstage(before, 0)/* scratch generated code */ if(const0)
error("must be constant expression") return const const(val) int val
immed() outdec(val) nl() const2(val) int val immed2() ou
tdec(val) nl() constant(lval) int lval lvallval+3 *lval1/* ass
ume it will be a constant */ if (number(++lval)) iy assembler stuff needed at
the end */ trailer() #ifndef LINK if((beglab 1)(beglab 9000))
/* implementation dependent trailer code goes here */ #else char *ptr
cptrSTARTGLB while(cptrENDGLB) if(cptrIDENTFUNCTION && cptrCLASSAUT
OEXT) external(cptr+NAME) cptr+SYMMAX #ifdef UPPER if((ptr
findglb("MAIN")) && (ptrOFFSETFUNCTION)) #else if((ptrfindglb("main")) && (p
trOFFSETFUNCTION)) #endif external("Ulink")mmed() else if (pstr(lval))
immed() else if (qstr(lval)) *(lval-1)0/* nope, it's a string address *
/ immed() printlabel(litlab) outbyte('+') else return 0
outdec(*lval) nl() return 1 number(val) int val int k, minu
s kminus0 while(1) if(match("+")) else if(match("-")) minus1
else break if(isdigit(ch)0)return 0 while (isdigit(ch)) kk*10+(i
nbyte()-'0') if (minus) k(-k) val0k/* link to library functions */ #endif
ol("END") /* ** load # args before function call */ loadargc(val)
int val if(search("NOCCARGC", macn, NAMESIZE+2, MACNEND, MACNBR, 0)0)
if(val) ot("MVI A,") outdec(val) nl() else ol
("XRA A") /* ** declare entry point */ entry() outstr(ssname
) col() #ifdef LINK col() #endif nl() /* ** declare external
reference */ external(name) char *name #ifdef return 1 address(pt
r) char *ptr immed() outstr(ptr+NAME) nl() pstr(val) int val
int k k0 if (match("'")0) return 0 while(ch!39) k(k&255)*256 + (l
itchar()&255) gch() val0k return 1 qstr(val) int val char c
if (match(quote)0) return 0 val0litptr while (ch!'"') if(ch0) br
eak stowlit(litchar(), 1) gch() litqlitptr++0 return 1
stowlit(value, size) int LINK ot("EXT ") ol(name) #endif /* **
fetch object indirect to primary register */ indirect(lval) int lval if(lv
al1CCHAR) ffcall("CCGCHAR##") else ffcall("CCGINT##") /*
** fetch a static memory cell into primary register */ getmem(lval) int lva
l char *sym symlval0 if((symIDENT!POINTER)&(symTYPECCHAR)) ot("L
DA ") outstr(sym+NAME) nl() ffcall("CCSXT##") else
ot("LHLD ") outvalue, size if((litptr+size) LITMAX) error("lite
ral queue overflow") abort(ERRCODE) putint(value, litq+litptr, size)
litptrlitptr+size /* ** return current literal char & bump lptr */ li
tchar() int i, oct if((ch!92)(nch0)) return gch() gch() if(ch'n') g
ch() return NEWLINE if(ch't') gch() return 9 /* HT */ if(ch'b') gch() ret
urn 8 /* BS */ if(ch'f') gch() return 12 /* FF */ i3 oct0 while(((i--)
0)&(str(sym+NAME) nl() /* ** fetch addr of the specified symb
ol into primary register */ getloc(sym) char *sym const(getint(sym+OFFSET
, OFFSIZE)-csp) ol("DAD SP") /* ** store primary register into static
cell */ putmem(lval) int lval char *sym symlval0 if((symIDENT!POIN
TER)&(symTYPECCHAR)) ol("MOV A,L") ot("STA ") else ot("SHLD
") outstr(sym+NAME) nl() /* ** put on the stack the type object in
prch'0')&(ch'7')) oct(oct3)+gch()-'0' if(i2) return gch() else return oct
CC4.C 244 /* ** Small-C Compiler Part 4 */ #include stdio.h #include
"cc.def" extern char *macn, *cptr, *symtab, #ifdef OPTIMIZE optimize,
#endif *stagenext, ssnameNAMESIZE extern int beglab, csp, output #incl
ude "cc41.c" #include "cc42.c" CC41.C 5196 /* ** print all assembler info b
efore any code is generated */ header() beglabgetlabel() /* ** pr
int an RAFBGCHDIEimary register */ putstk(lval) int lval if(lval1CCHAR)
ol("MOV A,L") ol("STAX D") else ffcall("CCPINT##") /*
** move primary register to secondary */ move() ol("MOV D,H") ol("MOV
E,L") /* ** swap primary and secondary registers */ swap() ol("XCH
G")/* peephole() uses trailing "" */ /* ** partial instruction to get im
mediate value ** into the primary register */ immed() ot("LXI H,")
/* ** partial inst /* ** point to following object(s) */ point()
ol("DW $+2") /* ** modify stack pointer to value given */ modstk(news
p, save) int newsp, save int k knewsp-csp if(k0)return newsp if(k0
) if(k7) if(k&1) ol("INX SP") k--
while(k) ol("POP B") kk-BPW return newsp
if(k0) if(k-7) if(k&1) ol("DCX SP")
k++ ruction to get immediate operand ** into secondary register */
immed2() ot("LXI D,") /* ** push primary register onto stack */
push() ol("PUSH H") cspcsp-BPW /* ** unpush or pop as required *
/ smartpop(lval, start) int lval char *start if(lval5) pop()/* secondary w
as used */ else unpush(start) /* ** replace a push with a swap */ u
npush(dest) char *dest int i char *sour sour"XCHG"/* peephole() uses t
railing "" */ while(k) ol("PUSH B") kk+BPW
return newsp if(save) swap() const(k) ol("DA
D SP") ol("SPHL") if(save) swap() return newsp /* ** double pri
mary register */ doublereg() ol("DAD H") CC42.C 5615 /* ** add primary a
nd secondary registers (result in primary) */ ffadd() ol("DAD D") /* ** su
btract primary from secondary register (result in primary) */ ffsub() ffcall("
CCSUB##") /* ** while(*sour) *dest++ *sour++ sourstagenext while(--s
our dest) /* adjust stack references */ if(streq(sour,"DAD SP")) -
-sour iBPW while(isdigit(*(--sour))) if((*sour *sour-i)
'0') *sour *sour+10 i1 else i0
cspcsp+BPW /* ** pop stack to the secondary reg
ister */ pop() ol("POP D") cspcsp+BPW /* ** swap primary regist
er and stack */ smultiply primary and secondary registers (result in primary)
*/ ffmult() ffcall("CCMULT##") /* ** divide secondary by primary register
** (quotient in primary, remainder in secondary) */ ffdiv() ffcall("CCDIV##")
/* ** remainder of secondary/primary ** (remainder in primary, quotient in
secondary) */ ffmod() ffdiv()swap() /* ** inclusive "or" primary and seco
ndary registers ** (result in primary) */ ffor() ffcall("CCOR##") /* ** e
xclusive "or" the primary and secondarwapstk() ol("XTHL") /* ** proc
ess switch statement */ sw() ffcall("CCSWITCH##") /* ** call speci
fied subroutine name */ ffcall(sname) char *sname ot("CALL ") outstr(s
name) nl() /* ** return from subroutine */ ffret() ol("RET")
/* ** perform subroutine call to value on stack */ callstk() ffcall(
"CCDCAL##") /* ** jump to internal label number */ jump(label) int la
bel ot("JMP ") printlabel(label) nl()y registers ** (result in primar
y) */ ffxor() ffcall("CCXOR##") /* ** "and" primary and secondary register
s ** (result in primary) */ ffand() ffcall("CCAND##") /* ** logical negat
ion of primary register */ lneg() ffcall("CCLNEG##") /* ** arithmetic shif
t right secondary register ** number of bits given in primary register ** (res
ult in primary) */ ffasr() ffcall("CCASR##") /* ** arithmetic shift left s
econdary register ** number of bits given in primary register ** /* *
* test primary register and jump if false */ testjump(label) int label ol
("MOV A,H") ol("ORA L") ot("JZ ") printlabel(label) nl() /*
** test primary register against zero and jump if false */ zerojump(oper, labe
l, lval) int (*oper)(), label, lval clearstage(lval7, 0)/* purge conventiona
l code */ (*oper)(label) /* ** define storage according to size */
defstorage(size) int size if(size1) ot("DB ") else ot("DW ") RAFB
GCHDIE(result in primary) */ ffasl() ffcall("CCASL##") /* ** two's complem
ent primary register */ neg() ffcall("CCNEG##") /* ** one's complement pri
mary register */ com() ffcall("CCCOM##") /* ** increment primary register
by one object of whatever size */ inc(n) int n while(1) ol("INX H")
if(--n 1) break /* ** decrement primary register by one obje
ct of whatever size */ dec(n) int n while(1) ol("DCX H") if(--n
1) break if(streq(ptr+29, "XCHG")) pp2()ptrptr+36 else
pp1()ptrptr+29 else if(streq(ptr,"LXI H,2nDAD SPnCALL
CCGINT##")) if(streq(ptr+29, "XCHG")) pp3(pp2)ptrptr+36 else
pp3(pp1)ptrptr+29 else if(optimize) if(
streq(ptr, "DAD SPnCALL CCGINT##")) ol("CALL CCDSGI##") ptrpt
r+21 else if(streq(ptr, "DAD DnCALL CCGINT##")) ol("C
ALL CCDDG /* ** test for equal to */ ffeq() ffcall("CCEQ##") /*
** test for equal to zero */ eq0(label) int label ol("MOV A,H") ol("OR
A L") ot("JNZ ") printlabel(label) nl() /* ** test for not equa
l to */ ffne() ffcall("CCNE##") /* ** test for not equal to zero */ ne0
(label) int label ol("MOV A,H") ol("ORA L") ot("JZ ") printlabel(la
bel) nl() /* ** test for less than (signed) */ fflt() ffcall("CCLT
##") /* **I##") ptrptr+20 else if(streq(ptr, "DAD
SPnCALL CCGCHAR##")) ol("CALL CCDSGC##") ptrptr+22
else if(streq(ptr, "DAD DnCALL CCGCHAR##")) ol("CALL CCDDGC##
") ptrptr+21 else if(streq(ptr, "DAD SPnMOV D
,HnMOV E,LnCALL CCGINT##nINX HnCALL CCPINT##")) ol("CALL CCINCI##")
ptrptr+57 else if(streq(ptr, "DAD SPnMOV D,HnMO
V E,LnCALL CCGINT test for less than to zero */ lt0(label) int label ol("X
RA A") ol("ORA H") ot("JP ") printlabel(label) nl() /* ** te
st for less than or equal to (signed) */ ffle() ffcall("CCLE##") /* ** te
st for less than or equal to zero */ le0(label) int label ol("MOV A,H")
ol("ORA L") ol("JZ $+8") ol("XRA A") ol("ORA H") ot("JP ") print
label(label) nl() /* ** test for greater than (signed) */ ffgt() f
fcall("CCGT##") /* *##nDCX HnCALL CCPINT##")) ol("CALL CCDECI##")
ptrptr+57 else if(streq(ptr, "DAD SPnMOV D,Hn
MOV E,LnCALL CCGCHAR##nINX HnMOV A,LnSTAX D")) ol("CALL CCINCC##")
ptrptr+59 else if(streq(ptr, "DAD SPnMOV D,HnMOV
E,LnCALL CCGCHAR##nDCX HnMOV A,LnSTAX D")) ol("CALL CCDECC##")
ptrptr+59 else if(streq(ptr, "DAD DnPOP DnCALL CCPINT##"))
ol("CALL CDPDPI* test for greater than to zero */ gt0(label) int labe
l ol("XRA A") ol("ORA H") ot("JM ") printlabel(label) nl() ol
("ORA L") ot("JZ ") printlabel(label) nl() /* ** test for great
er than or equal to (signed) */ ffge() ffcall("CCGE##") /* ** test for gt
eater than or equal to zero */ ge0(label) int label ol("XRA A") ol("ORA
H") ot("JM ") printlabel(label) nl() /* ** test for less than
(unsigned) */ ult() ffcall("C##") ptrptr+26 else if
(streq(ptr, "DAD DnPOP DnMOV A,LnSTAX D")) ol("CALL CDPDPC##")
ptrptr+27 else if(streq(ptr, "POP DnCALL CCPINT##"))
ol("CALL CCPDPI##") ptrptr+20 /* additional optimizi
ng logic goes here */ else cout(*ptr++, output) else cout(*p
tr++, output) pp1() ol("POP H") ol("PUSH H") pp2()
ol("POP D") ol("PUSH D") CULT##") /* ** test for less than to zero (
unsigned) */ ult0(label) int label ot("JMP ") printlabel(label) nl()
/* ** test for less than or equal to (unsigned) */ ule() ffcall("CCU
LE##") /* ** test for greater than (unsigned) */ ugt() ffcall("CCUGT##")
/* ** test for greater than or equal to (unsigned) */ uge() ffcall("CCUGE
##") #ifdef OPTIMIZE peephole(ptr) char *ptr while(*ptr) if(streq(
ptr,"LXI H,0nDAD SPnCALL CCGINT##")) RAFBGCHDIE pp3(pp) int (*pp)()
ol("POP B") (*pp)() ol("PUSH B") #endif ptrptr+27
else if(streq(ptr, "POP DnCALL CCPINT##")) ol("CALL CCPDPI#
#") ptrptr+20 /* additional optimizing logic goes here
*/ else cout(*ptr++, output) else cout(*ptr++, output)
pp1() ol("POP H") ol("PUSH H") pp2() ol("POP D") o
l("PUSH D") /* true if current buffer ends file */ /* ** auxbuf -- alloc
ate an auxiliary input buffer for fd ** fd file descriptor of an open file
** size size of buffer to be allocated ** Returns NULL on success, else ERR.
** Note Ungetc() still works. ** A 2nd call returns ERR, but has no effec
t. ** If fd is a device, buffer is allocated but ignored. ** Buffe
r stays allocated when fd is closed. ** Do not mix reads and writes or pe
rform seeks on fd. */ auxbuf(fd, size) in ABS.C 116 /* ** abs -- returns abs
olute value of nbr */ abs(nbr) int nbr if(nbr 0) return (-nbr) return
(nbr) ATOI.C 308 #define NOCCARGC /* no argument count passing */ /*
** atoi(s) - convert s to integer. */ atoi(s) char *s int sign, n while
(isspace(*s)) ++s sign 1 switch(*s) case '-' sign -1 case '+'
++s n 0 while(isdigit(*s)) n 10 * n + *s++ - '0' return (sign
* n) ATOIB.C 484 #define NOCCARGC t fd char *size /* fake unsigned */
if(!Umode(fd) !size avail(NO) size Uxsizefd) return (ERR) Uxadd
rfd malloc(size) Uxinit(fd) Uauxin Uxinit /* tell Uopen() where Uxinit()
is */ Uauxrd Uxread /* tell Uread() where Uxread() is */ Uauxwt Uxwr
ite /* tell Uwrite() where Uxwrite() is */ Uauxsz Uxsize /* tell both w
here Uxsize is */ Uauxfl Uxflush /* tell fflush() where Uxflush() is */
Uxsizefd size /* tell Uread() that f /* no argument count passing */ /* **
atoib(s,b) - Convert s to "unsigned" integer in base b. ** NOTE Th
is is a non-standard function. */ atoib(s, b) char *s int b int n, digit
n 0 while(isspace(*s)) ++s while((digit (127 & *s++)) '0') if(d
igit 'a') digit - 87 else if(digit 'A') digit - 55 else
digit - '0' if(digit b) break n b * n + digit ret
urn (n) AUXBUF.C 3204 #defined has aux buf */ return (NULL) /
* ** Initialize aux buffer controls */ Uxinit(fd) int fd Uxnextfd Uxendf
d Uxaddrfd Uxeoffd NO /* ** Fill buffer if necessary, and return ne
xt byte. */ Uxread(fd) int fd char *ptr while(YES) ptr Uxnextfd
if(ptr Uxendfd) ++Uxnextfd return (*ptr) if(Uxeoffd) Useteof(fd) retu
rn (EOF) Uauxsz NULL /* avoid recursive loop */ Uxendfd Uxa
ddrfd + NOCCARGC /* no argument count passing */ #include stdio
.h #include clib.def extern int *Uauxsz, Uauxin, Uauxrd, Uauxwt, Uauxfl, Ustat
us /* ** This module is loaded with a program only if auxbuf() ** is called.
It links to Uopen(), Uread(), Uwrite(), and ** fflush() through Uauxsz, Uauxin
, Uauxrd, Uauxwt, and Uauxfl ** in CSYSLIB. This technique reduces the overhea
d for ** programs which don't use auxiliary buffering. Presumably, ** if ther
e is enough memory for extra buffering, there is * read(fd, UxnextfdUxaddrfd, U
xsizefd) Uauxsz Uxsize /* restore Uauxsz */ if(feof(fd)) Uxeof
fd YES Uclreof(fd) /* ** Empty buffer if necessary, and store ch
in buffer. */ Uxwrite(ch, fd) int ch, fd char *ptr while(YES) ptr
Uxnextfd if(ptr (Uxaddrfd + Uxsizefd)) *ptr ch ++Uxnextfd return
(ch) if(Uxflush(fd)) return (EOF) /* ** Flush aux buffer to
file. */ Uxflush(fd) int fd int * room to spare for this overhead too. A
bug in some ** versions of Small-C between 2.0 and 2.1 may cause the calls **
to Uauxrd, Uauxwt, and Uauxfl in Uread(), Uwrite(), and ** fflush(), respective
ly, to produce bad code. The current ** compiler corrects the problem. */ in
t UxsizeMAXFILES, /* size of buffer */ UxaddrMAXFILES, /* aux buffer add
ress */ UxnextMAXFILES, /* address of next byte in buffer */ UxendMAXFILE
S, /* address of end-of-data in buffer */ UxeofMAXFILES RAFBGCHDIEi, j
i Uxnextfd - Uxaddrfd Uauxsz NULL /* avoid recursive loop */ j write(
fd, UxnextfdUxaddrfd, i) Uauxsz Uxsize /* restore Uauxsz */ if(i ! j) ret
urn (EOF) return (NULL) AVAIL.C 399 #define NOCCARGC /* no argument c
ount passing */ extern char *Umemptr /* ** Return the number of bytes of avai
lable memory. ** In case of a stack overflow condition, if 'abort' ** is non-z
ero the program aborts with an 'S' clue, ** otherwise zero is returned. */
B STORE A 16-BIT INTEGER IN HL AT THE ADDRESS IN DE CCPINT PINT MOV
A,L STAX D INX D MOV A,H STAX
D RET INCLUSIVE "OR" HL AND DE INTO HL CCOR MOV A,L
ORA E MOV L,A MOV A,H ORA D
MOV H,A RET EXCLUSIVE "OR" HL AND DE INTO HL CCXOR
MOV A,L XRA E MOV L,A MOV A,H
XRA D avail(abort) int abort char x if(&x Umemptr) if(a
bort) exit('M') return (0) return (&x - Umemptr) CALL.MAC
8487 ----- CALL Small-C arithmetic and logical library CCDCAL PCH
L CCDDGC DAD D JMP CCGCHAR CCDSGC INX
H INX H DAD SP FETCH A SINGLE BYTE FROM THE ADDR
ESS IN HL AND SIGN INTO HL CCGCHAR MOV A,M PUT THE ACCUM INTO H
L AND SIGN EXTEND MOV H,A RET "AND" HL AND DE INTO HL C
CAND MOV A,L ANA E MOV L,A MOV
A,H ANA D MOV H,A RET IN ALL THE FOLLOW
ING COMPARE ROUTINES, HL IS SET TO 1 IF THE CONDITION IS TRUE, OTHERWISE IT I
S SET TO 0 (ZERO). TEST IF HL DE CCEQ CALL CCCMP RZ
DCX H RET TEST IF DE ! HL CCNE CALL CCCMP
RNZ DCX H THROUGH H. CCARGC CCSXT MOV L,A
RLC SBB A MOV H,A RET CCDDGI
DAD D JMP CCGINT CCDSGI INX H INX
H DAD SP FETCH A FULL 16-BIT INTEGER FROM THE ADDRESS IN HL
INTO HL CCGINT MOV A,M INX H MOV H,M
MOV L,A RET CCDECC INX H INX H
DAD SP MOV D,H RET TEST IF DE HL (S
IGNED) CCGT XCHG CALL CCCMP RC DCX H
RET TEST IF DE HL (SIGNED) CCLE CALL CCCMP R
Z RC DCX H RET TEST IF DE HL (SIGNED) CCGE
CALL CCCMP RNC DCX H RET TEST IF DE
HL (SIGNED) CCLT CALL CCCMP RC DCX H
RET COMMON ROUTINE TO PERFORM A SIGNED COMPARE OF MOV E,L CA
LL CCGCHAR DCX H MOV A,L STAX D
RET CCINCC INX H INX H DAD SP
MOV D,H MOV E,L CALL CCGCHAR INX H
MOV A,L STAX D RET CDPDPC DAD
D CCPDPC POP B RET ADDR POP D PUSH
B STORE A SINGLE BYTE FROM HL AT THE ADDRESS IN DE CCPCHAR PCHAR MO DE AND
HL THIS ROUTINE PERFORMS DE - HL AND SETS THE CONDITIONS CARRY REFLECTS SIG
N OF DIFFERENCE (SET MEANS DE HL) ZERO/NON-ZERO SET ACCORDING TO EQUALITY. C
CCMP MOV A,H INVERT SIGN OF HL XRI 80H MO
V H,A MOV A,D INVERT SIGN OF DE XRI 80H
CMP H COMPARE MSBS JNZ CCCMP1 DONE IF NEQ MO
V A,E COMPARE LSBS CMP L CCCMP1 LXI H,1 PRESET TRU
E COND V A,L STAX D RET CCDECI INX
H INX H DAD SP MOV D,H MOV E
,L CALL CCGINT DCX H JMP CCPINT CCINCI
INX H INX H DAD SP MOV D,H
MOV E,L CALL CCGINT INX H JMP
CCPINT CDPDPI DAD D CCPDPI POP B RET ADDR
POP D PUSH RAFBGCHDIE RET TEST IF DE HL (UNSIGNED)
CCUGE CALL CCUCMP RNC DCX H RET
TEST IF DE HL (UNSIGNED) CCULT CALL CCUCMP RC DC
X H RET TEST IF DE HL (UNSIGNED) CCUGT XCHG
CALL CCUCMP RC DCX H RET TEST IF DE HL (UN
SIGNED) CCULE CALL CCUCMP RZ RC DCX
H RET COMMON ROUTINE TO PERFORM UNSIGNE,0 CCDIV1 DAD H
CALL CCRDEL JZ CCDIV2 CALL CCCMPBCDE JM
CCDIV2 MOV A,L ORI 1 MOV L,A
MOV A,E SUB C MOV E,A MOV A,D
SBB B MOV D,A CCDIV2 POP PSW DCR A
JZ CCDIV3 PUSH PSW JMP CCDIV1 CCDIV3 POP PS
W RP CALL CCDENEG XCHG CALL CCDENEG
D COMPARE CARRY SET IF DE HL ZERO/NONZERO SET ACCORDINGLY CCUCMP
MOV A,D CMP H JNZ UCMP1 MOV A,E
CMP L UCMP1 LXI H,1 RET SHIFT DE ARITHMETICALLY RIGHT
BY HL AND RETURN IN HL CCASR XCHG DCR E RM
MOV A,H RAL MOV A,H RAR MOV
H,A MOV A,L RAR MOV L,A JMP CCAS
R+1 SHIFT DE ARIT XCHG RET NEGATE THE INTEGER IN DE (INTERN
AL ROUTINE) CCDENEG MOV A,D CMA MOV D,A MOV
A,E CMA MOV E,A INX D RET NEGA
TE THE INTEGER IN BC (INTERNAL ROUTINE) CCBCNEG MOV A,B CMA
MOV B,A MOV A,C CMA MOV C,A IN
X B RET ROTATE DE LEFT ONE BIT (INTERNAL ROUTINE) CCRDEL MOV
A,E RAL MOV E,A HMETICALLY LEFT BY HL AND RETURN IN H
L CCASL XCHG DCR E RM DAD H
JMP CCASL+1 SUBTRACT HL FROM DE AND RETURN IN HL CCSUB MOV
A,E SUB L MOV L,A MOV A,D SBB
H MOV H,A RET FORM THE TWO'S COMPLEMENT OF HL CCNE
G CALL CCCOM INX H RET FORM THE ONE'S COMPL
EMENT OF HL CCCOM MOV A,H CMA MOV A,D
RAL MOV D,A ORA E RET COMPARE BC T
O DE (INTERNAL ROUTINE) CCCMPBCDE MOV A,E SUB C MOV
A,D SBB B RET LOGICAL NEGATION CCLNEG MOV
A,H ORA L JNZ $+6 MVI L,1 RET
LXI H,0 RET EXECUTE "SWITCH" STATEMENT HL SWITC
H VALUE (SP) - SWITCH TABLE DW ADDR1, VALUE1 DW ADDR2, MO
V H,A MOV A,L CMA MOV L,A RET
MULTIPLY DE BY HL AND RETURN IN HL (SIGNED MULTIPLY) CCMULT MULT MOV B,
H MOV C,L LXI H,0 MULT1 MOV A,C RRC
JNC MULT2 DAD D MULT2 XRA A MOV A,B
RAR MOV B,A MOV A,C RAR MOV C
,A ORA B RZ XRA A MOV A,E
RAL MOV VALUE2 ... DW 0 JMP default
continuation CCSWITCH XCHG DE SWITCH VALUE
POP H HL - SWITCH TABLE SWLOOP MOV C,M INX H
MOV B,M BC - CASE ADDR, ELSE 0 INX H MOV
A,B ORA C JZ SWEND DEFAULT OR CONTINUATION CODE
MOV A,M INX H CMP E MOV A,M
INX H JNZ S E,A MOV A,D RAL
MOV D,A ORA E RZ JMP MULT1 DIVID
E DE BY HL AND RETURN QUOTIENT IN HL, REMAINDER IN DE (SIGNED DIVIDE) CCDIV DI
V MOV B,H MOV C,L MOV A,D XRA B
PUSH PSW MOV A,D ORA A CM CCDE
NEG MOV A,B ORA A CM CCBCNEG MV
I A,16 PUSH PSW XCHG LXI D RAFBGCHDIEWLOO
P CMP D JNZ SWLOOP MOV H,B CASE MATCH
ED MOV L,C SWEND PCHL Uend lhld 6 get bdos address
sphl use for base of stack lxi h,Uend get star
t of free memory shld Umemptr## use for memory allocation jmp
Umain## parse command line, execute program end Uend CALL
OC.C 360 #define NOCCARGC /* no argument count passing */ #include stdio.h /
* ** Cleared-me#define GETPOS 36 /* get number of current sector */ #define
WRTRND 40 /* write sector randomly */ /* ** Device codes */ #define CPMC
ON DCONIO /* console */ #define CPMRDR RDRINP /* reader */ #define CPMPUN PUN
OUT /* punch */ #define CPMLST LSTOUT /* list */ /* ** File status bits
*/ #define RDBIT 1 /* open for read */ #define WRTBIT 2 /* open fo
r write */ #define EOFBIT 4 /* eof condition */ #define ERRBIT 8 /*
error condition */ /* ** ASCII characters */ mory allocation of n items of si
ze bytes. ** n Number of items to allocate space for. ** size Size of t
he items in bytes. ** Returns the address of the allocated block, ** else NULL
for failure. */ calloc(n, size) char *n, *size return (Ualloc(n*size, YES
)) CLEARERR.C 206 #define NOCCARGC /* no arg count passing */ #include
stdio.h #include clib.def extern int Ustatus /* ** Clear error status for fd
. */ clearerr(fd) int fd if(Umode(fd)) Ustatusfd & ERRBI #define ABORT
3 #define RUB 8 #define PAUSE 19 #define WIPE 24 #define DEL 12
7 CSEEK.C 908 #define NOCCARGC /* no argument count passing */ #include std
io.h #include clib.def extern int Ufcbptr, Uchrpos, Unextc /* ** Position fd
to the 128-byte record indicated by ** "offset" relative to the point indicate
d by "base." ** ** BASE OFFSET-RELATIVE-TO ** 0 first rec
ord ** 1 current record ** 2 end of file (last record +
1) T CLIB.DEF 2056 /* ** CLIB.DEF -- Definitions for Small-C library
functions. ** ** Copyright 1983 L. E. Payne and J. E. Hendrix */ /* ** D
efinition of CP/M FCB and additional parameters */ #define FCBSIZE 36 /* si
ze of file control block */ #define DRIVE 0 /* CP/M drive designator offs
et */ #define NAMEOFF 1 /* CP/M file name offset */ #define NAMEOFF2 16
/* CP/M 2nd file name offset */ #define NAMESIZE 8 /* CP/M file name size */
#define TYPEOFF 9 /* CP/M** ** Returns NULL on success, else EOF. */ cs
eek(fd, offset, base) int fd, offset, base int oldrrn, *rrn if(!Umode(fd)
isatty(fd) fflush(fd)) return (EOF) rrn Ufcbptrfd + RRNOFF oldrrn *rr
n switch (base) case 2 Ubdos(POSEND, Ufcbptrfd) case 1 *rrn + offs
et break case 0 *rrn offset break default return (EOF) if(U
sector(fd, RDRND)) *rrn oldrrn return (EOF) Uchrposfd 0
Unextcfd EOF U file type offset */ #define TYPESIZE 3 /* CP/M file typ
e size */ #define NTSIZE 11 /* CP/M file name & type size */ #define RRNOF
F 33 /* CP/M random record number offset */ #define CPMEOF 26 /* CP/M e
nd-of-file byte */ #define BUFSIZE 128 /* size of I/O buffer */ #define MAXF
ILES 10 /* maximum open files */ /* ** CP/M function calls */ #define GOCP
M 0 /* go to CP/M */ #define RDRINP 3 /* reader input */ #define PUNO
UT 4 /* punch output */ #define LSTOUT 5 /*clreof(fd) return (NULL)
CSYSLIB.C 10216 /* ** CSYSLIB -- System-Level Library Functions */
#include stdio.h #include clib.def #define NOCCARGC /* no argument count
passing */ #define DIR /* compile directory option */ /* *********
********* System Variables ******************** */ int *Uauxsz,
/* addr of Uxsize in AUXBUF */ Uauxin, /* addr of Uxinit() in AUX
BUF */ Uauxrd, /* addr of Uxread() in AUXBUF */ Uauxwt, lis
t output */ #define DCONIO 6 /* direct console i/o */ #define OPNFIL 15
/* open file */ #define CLOFIL 16 /* close file */ #define FNDFIL 17 /*
find first occurrence of a file */ #define FNDNXT 18 /* find next occurrenc
e of a file */ #define DELFIL 19 /* delete file */ #define MAKFIL 22 /*
make file */ #define RENAME 23 /* rename file */ #define SETDMA 26 /* se
t dma */ #define RDRND 33 /* read sector randomly */ #define POSEND 35
/* position file to end */ RAFBGCHDIE /* addr of Uxwrite() in AUXBUF *
/ Uauxfl, /* addr of Uxflush() in AUXBUF */ Ucnt1,
/* arg count for main */ Uvec20, /* arg vectors for main */ Us
tatusMAXFILES RDBIT, WRTBIT, RDBITWRTBIT, /* status of re
spective file */ UdeviceMAXFILES CPMCON, CPMCON, CPMCON,
/* non-disk device assignments */ UnextcMAXFILES EOF, EOF, EOF,
/* pigeonhole for ungetc bytes */ UfdRDBIT return (fd)
if(strcmp(fn,"PUN")0) UdevicefdCPMPUN UstatusfdWRTBIT return (fd)
if(strcmp(fn,"LST")0) UdevicefdCPMLST UstatusfdWRTBIT return (fd)
if(fcb Ufcbptrfd) pad(fcb, NULL, FCBSIZE) else if((fcb Ufcbptrfd
Ualloc(FCBSIZE, YES)) NULL (Ubufptrfd Ualloc(BUFSIZE, YES)) NULL
) return (ERR) pad(Ubufptrfd, CPMEOF, BUFSIZE) Udirtyfd Ud
evicefd Uchrposfd cbptrMAXFILES, /* FCB pointers for open files */ UbufptrM
AXFILES, /* buffer pointers for files */ UchrposMAXFILES, /* character positi
on in buffer */ UdirtyMAXFILES /* "true" if changed buffer */ char *Ume
mptr, /* pointer to free memory. */ Uarg1"*" /* first arg for
main */ /* *************** System-Level Functions ***************** */
/* ** -- Process Command Line, Execute main(), and Exit to CP/M */ Umain()
Uparse() main(Ucnt,Uvec) exi0 #ifdef DIR if(fn1 '' && fn2 NULL)
/* directory file */ pad(fcb, NULL, FCBSIZE) pad(fcb+NAMEOFF, '', NTSI
ZE) if(toupper(fn0) ! 'X') *fcb toupper(fn0) - 64 Uchrposfd BUFSIZE
Udevicefd FNDFIL Ustatusfd RDBIT return (fd) #endif i
f(!Unewfcb(fn,fcb)) return (ERR) switch(*mode) case 'r' if(Ubdo
s(OPNFIL,fcb)255) return (ERR) Ustatusfd RDBIT if(Usector(fd, R
DRND)) Useteof(fd) t(0) /* ** Parse command line and setup argc and ar
gv. */ Uparse() char *count, *ptr count 128 /* CP/M command buffer ad
dress */ ptr Ualloc((count *count&255)+1, YES) strncpy(ptr, 129, count)
Uvec0Uarg1/* first arg "*" */ while (*ptr) if(isspace(*ptr)) ++ptr
continue switch(*ptr) case '' ptr Uredirect(ptr, "r", stdin)
continue case '' if(*(ptr+1) '') ptr
Uredirect(ptr+1, break case 'w' if(Ubdos(FNDFIL,fcb)!2
55) Ubdos(DELFIL,fcb) create if(Ubdos(MAKFIL,fcb)255) return (ERR)
Ustatusfd EOFBITWRTBIT break default /* append
mode */ if(Ubdos(OPNFIL,fcb)255) goto create Ustatusfd RDBIT
cseek(fd, -1, 2) while(fgetc(fd)!EOF) Ustatusfd EOFBITWRTBIT
if(*(mode+1)'+') Ustatusfd RDBITWRTBIT return (fd) /
* "a", stdout) else ptr Uredirect(ptr, "w", stdout)
continue default if(Ucnt 20) UvecUcnt++ ptr
ptr Ufield(ptr) /* ** Isolate next command-line field.
*/ Ufield(ptr) char *ptr while(*ptr) if(isspace(*ptr)) *ptr
NULL return (++ptr) ++ptr return (ptr) /* *
* Redirect stdin or stdout. */ Uredirect(ptr, mode, std) char *ptr, *mode int
std ** Create CP/M file control block from file name. ** Entry fn Legal CP/
M file name (null terminated) ** May be prefixed by letter of driv
e. ** fcb Pointer to memory space for CP/M fcb. ** Returns the pointer
to the fcb. */ Unewfcb(fn, fcb) char *fn, *fcb char *fnptr pad(fcb+1,
SPACE, NTSIZE) if(*(fn + 1) '') *fcb toupper(*fn) - 64 fnptr fn
+ 2 else fnptr fn if(*fnptr NULL) return (NO) fnptr Uloadfn(f
cb + NAMEOFF, f char *fn fn ++ptr ptr Ufield(ptr) if(Uopen(fn, mod
e, std)ERR) exit('R') return (ptr) /* ** ------------ File Open */
/* ** Open file on specified fd. */ Uopen(fn, mode, fd) char *fn, *mode int
fd char *fcb if(!strchr("rwa", *mode)) return (ERR) Unextcfd EOF
if(Uauxin) Uauxin(fd) if(strcmp(fn,"CON")0) UdevicefdCPMCON UstatusfdRD
BITWRTBIT return (fd) if(strcmp(fn,"RDR")0) UdevicefdCPMRDR Ustat
usf RAFBGCHDIEnptr, NAMESIZE) if(*fnptr '.') ++fnptr else if(*fnptr) ret
urn (NO) fnptr Uloadfn(fcb + TYPEOFF, fnptr, TYPESIZE) if(*fnptr) return
(NO) return (YES) /* ** Load into fcb and validate file name. */ Ul
oadfn(dest, sour, max) char *dest, *sour int max while(*sour && !strchr(".,*
", *sour)) if(max--) *dest++ toupper(*sour++) else break re
turn (sour) /* ** ------------ File Input */ /* ** Binary-stream in
put of one byte fro *bufloc switch (Umode(fd)) default Useterr(fd) retu
rn (EOF) case WRTBIT case WRTBITRDBIT case WRTBITEOFBIT case
WRTBITEOFBITRDBIT switch(Udevicefd) /* RDR can't occur since it
is read mode */ case CPMCON return (Uconout(ch)) case CPMPUN case
CPMLST Ubdos(Udevicefd, ch) break default if(Uaux
sz && Uauxszfd) return (Uauxwt(ch, fd)) if(UchrposfdBUFSIZE && !Uputsec(f
d)) return (EOF) m fd. */ Uread(fd) int fd char *bufloc int ch switc
h (Umode(fd)) default Useterr(fd) return (EOF) case RDBIT case R
DBITWRTBIT if((ch Unextcfd) ! EOF) Unextcfd EOF return (ch
) switch(Udevicefd) /* PUN & LST can't occur since they are write
mode */ case CPMCON return (Uconin()) case CPMRDR return (Ubdos(RDRIN
P,NULL)) default if(Uauxsz && Uauxszfd) return (Uauxrd(fd))
if(Uchrpos bufloc Ubufptrfd + Uchrposfd++ *bufloc ch
Udirtyfd YES return (ch) /* ** Console character output. */
Uconout(ch) int ch Ubdos(DCONIO, ch) return (ch) /* ** Write one
sector to fd. */ Uputsec(fd) int fd if(fflush(fd)) return (NO) Uadvanc
e(fd) if(Ustatusfd&EOFBIT Usector(fd, RDRND)) pad(Ubufptrfd, CPMEOF, BU
FSIZE) return (YES) /* ** ------------ Buffer Service */ /* ** A
dvance to nextfdBUFSIZE && !Ugetsec(fd)) return (EOF) bufl
oc Ubufptrfd + Uchrposfd++ return (*bufloc) /* ** Conso
le character input. */ Uconin() int ch while(!(ch Ubdos(DCONIO, 255)))
switch(ch) case ABORT exit(0) case LF case CR Uconout
(LF) return (Uconout(CR)) case DEL ch RUB default if(ch 32) Uc
onout('') Uconout(ch+64) else Uconout(ch) retu
rn (ch) sector. */ Uadvance(fd) int fd int *rrn rrn Ufcbptrfd + RRNO
FF ++(*rrn) Uchrposfd 0 /* ** Sector I/O. */ Usector(fd, func)
int fd, func int error Ubdos(SETDMA, Ubufptrfd) error Ubdos(func, Ufc
bptrfd) Ubdos(SETDMA, 128) Udirtyfd NO return (error) /* ** --
---------- File Status */ /* ** Return fd's open mode, else NULL. */ Umod
e(fd) char *fd if(fd MAXFILES) return (Ustatusfd) return (NULL) /
* /* ** Read one sector from fd. */ Ugetsec(fd) int fd #ifdef
DIR if(Udevicefd) /* directory file */ char *bp, *name, *type, *
end Ubdos(SETDMA, 128) if((name Ubdos(Udevicefd, Ufcbptrfd)) 255)
Useteof(fd) return (NO) Udevicefd FNDNXT name (
name 5) + (128 + NAMEOFF) type name + NAMESIZE end name + NTSIZE
bp Ubufptrfd + BUFSIZE *--bp CR while(--end name) /* put ** Set
eof status for fd and ** disable future i/o unless writing is allowed. */ Us
eteof(fd) int fd Ustatusfd EOFBIT /* ** Clear eof status for fd. *
/ Uclreof(fd) int fd Ustatusfd & EOFBIT /* ** Set error status for
fd. */ Useterr(fd) int fd Ustatusfd ERRBIT /* ** ------------ Mem
ory Allocation */ /* ** Allocate n bytes of (possibly zeroed) memory. ** E
ntry n Size of the items in bytes. ** clear "true" if clearing is desiredf
ilename at end of buffer */ if(*end SPACE) continue *--bp *end
if(end type) *--bp '.' Uchrposfd bp - Ubufptrfd retur
n (YES) #endif if(fflush(fd)) return (NO) Uadvance(fd) if(Usecto
r(fd, RDRND)) pad(Ubufptrfd, CPMEOF, BUFSIZE) Useteof(fd) return
(NO) return (YES) /* ** ------------ File Output */ /* **
Binary-Stream output of one byte to fd. */ Uwrite(ch, fd) int ch, fd char
RAFBGCHDIE. ** Returns the address of the allocated block of memory ** or NU
LL if the requested amount of space is not available. */ Ualloc(n, clear) char
*n int clear char *oldptr if(n avail(YES)) if(clear) pad(Umemptr,
NULL, n) oldptr Umemptr Umemptr + n return (oldptr) re
turn (NULL) /* ** ------------ CP/M Interface */ /* ** Issue CP/M f
unction and return result. ** Entry c CP/M function code (register C) **
de CP/M parameter (rrn int Ufcbptr, Ustatus, Udevice fclose(fd) int fd
if(!Umode(fd)) return (ERR) if(!isatty(fd)) if(fflush(fd) Ubdos(CLOF
IL,Ufcbptrfd)255) return (ERR) return (UstatusfdUdevicefdNULL)
FEOF.C 264 #define NOCCARGC /* no argument count passing */ #include c
lib.def extern int Ustatus /* ** Test for end-of-file status. ** Entry fd f
ile descriptor ** Returns non-zero if fd is at eof, else zero. */ feof(fd) in
t fd return (Ustaegister DE or E) ** Returns the CP/M return code (register
A) */ Ubdos(c,de) int c,de #asm pop h hold return addres
s pop d load CP/M function parameter pop b
load CP/M function number push b restore push d
the push h stack call 5 call bdo
s mvi h,0 mov l,a return the CP/M response #
endasm CTELL.C 397 #define NOCCtusfd & EOFBIT) FERROR.C 194 #def
ine NOCCARGC /* no arg count passing */ #include stdio.h #include clib.def e
xtern Ustatus /* ** Test for error status on fd. */ ferror(fd) int fd re
turn (Ustatusfd & ERRBIT) FFLUSH.C 584 #define NOCCARGC /* no argument c
ount passing */ #include stdio.h #include clib.def extern int Udirty, *Uauxsz
, Uauxfl /* ** Write buffer for fd if it has changes. ** Entry fd File descr
iptor of pertinent file. ** Returns NULL on sARGC /* no arg count passing */
#include stdio.h #include clib.def extern int Ufcbptr, Uchrpos /* ** Return
offset to current 128-byte record. */ ctell(fd) int fd int *rrn if(!Umo
de(fd) isatty(fd)) return (-1) rrnUfcbptrfd+RRNOFF return (*rrn) /*
** Return offset to next character in current buffer. */ ctellc(fd) int fd
return (Uchrposfd) DTOI.C 417 #define NOCCARGC /* no argument count
passing */ #include stdio.h /* ** dtoi -- convertuccess, otherwise EOF. ** R
eturns NULL if file is opened for input only ** or if it is not a disk
file. */ fflush(fd) int fd if(Umode(fd) & WRTBIT) if((Uauxsz && Uaux
szfd && Uauxfl(fd)) (!isatty(fd) && Udirtyfd && Usector(fd, WRTRND)))
Useterr(fd) return (ERR) return (NULL) FG
ETC.C 761 #define NOCCARGC /* no argument count passing */ #include stdio.h
#include clib.def extern int Uchrpos /* ** Character-stream signed decimal st
ring to integer nbr ** returns field length, else ERR on error */ dto
i(decstr, nbr) char *decstr int *nbr int len, s if((*decstr)'-') s1 ++
decstr else s0 if((lenutoi(decstr, nbr))0) return ERR if(*nbr0) return ERR
if(s) *nbr -*nbr return ++len else return len EXIT.C 420 #define NOC
CARGC /* no argument count passing */ #include stdio.h #include clib.def /*
** Close all open files and exit to CP/M. ** Entry errcode C input of one ch
aracter from fd. ** Entry fd File descriptor of pertinent file. ** Returns th
e next character on success, else EOF. */ fgetc(fd) int fd int ch while
(1) switch(ch Uread(fd)) default return (ch) case CPME
OF switch(Uchrposfd) default --Uchrposfd
case 0 case BUFSIZE
Useteof(fd) return (EOF) case CR haracter
to be sent to stderr. ** Returns to CP/M rather than the caller. */ exit(err
code) char errcode int fd if(errcode) Uconout(errcode) for(fd0 fd MAX
FILES fclose(fd++)) Ubdos(GOCPM,NULL) #asm abort equ exit e
ntry abort #endasm FCLOSE.C 442 #define NOCCARGC /* no argument count pass
ing */ #include stdio.h #include clib.def /* ** Close fd ** Entry fd File
descriptor for file to be closed. ** Returns NULL for success, otherwise ERR
*/ exte RAFBGCHDIE return ('n') case LF /* NOTE Uconin() maps LF -
CR */ #asm getc equ fgetc entry getc #endasm F
GETS.C 1813 #define NOCCARGC /* no arg count passing */ #include stdio.h #in
clude clib.def /* ** Gets an entire string (including its newline ** terminat
or) or size-1 characters, whichever comes ** first. The input is terminated by
a null character. ** Entry str Pointer to destination buffer. ** size
Size of the destination buffer. ** descriptor on success, else NULL. */ fo
pen(fn, mode) char *fn, *mode int fd fd 0 /* skip stdin ( error return)
*/ while(++fd MAXFILES) if(Umode(fd) NULL) if(Uopen(fn, mode,
fd)!ERR) return (fd) break return (NULL) FPRINT
F.C 2275 #define NOCCARGC /* ** Yes, that is correct. Although these functi
ons use an ** argument count, they do not call functions which need one. */ #
include stdio.h /* ** fprintf(fd, ctlstring, ar fd File descriptor of
pertinent file. ** Returns str on success, else NULL. */ fgets(str, size, fd
) char *str int size, fd return (Ugets(str, size, fd, 1)) /* ** Gets
an entire string from stdin (excluding its newline ** terminator) or size-1 ch
aracters, whichever comes ** first. The input is terminated by a null character
. ** The user buffer must be large enough to hold the data. ** Entry str Poi
nter to destination buffer. ** Returns str on success, else NULL. */ gg, arg,
...) - Formatted print. ** Operates as described by Kernighan & Ritchie. ** b
, c, d, o, s, u, and x specifications are supported. ** Note b (binary) is a no
n-standard extension. */ fprintf(argc) int argc int *nxtarg nxtarg CCA
RGC() + &argc return(Uprint(*(--nxtarg), --nxtarg)) /* ** printf(ctls
tring, arg, arg, ...) - Formatted print. ** Operates as described by Kernighan
& Ritchie. ** b, c, d, o, s, u, and x specifications are supported. ** Note b
(binary) is a noets(str) char *str return (Ugets(str, 32767, stdin, 0))
Ugets(str, size, fd, nl) char *str int size, fd, nl int backup char *n
ext next str while(--size 0) switch (*next fgetc(fd)) cas
e EOF *next NULL if(next str) return (NULL)
return (str) case 'n' *(next + nl) NULL return (str
) case RUB if(next str) backup 1 else backup 0 goto
backout n-standard extension. */ printf(argc) int argc return(Uprint
(stdout, CCARGC() + &argc - 1)) /* ** Uprint(fd, ctlstring, arg, arg, ..
.) ** Called by fprintf() and printf(). */ Uprint(fd, nxtarg) int fd, *nxtarg
int arg, left, pad, cc, len, maxchr, width char *ctl, *sptr, str17 c
c 0 ctl *nxtarg--
while(*ctl) if(*ctl!'%') fputc(*ctl++, fd) ++cc continue
else ++ctl if(*ctl case WIPE backup next - str backout
if(iscons(fd)) fputs("b bb b", stderr)
++size while(backup--) fput
s("b b", stderr) if(*--next 32) fputs("b b", stderr)
++size continue
default ++next *next NULL return
(str) FOPEN.C'%') fputc(*ctl++, fd) ++cc continue if(*ctl'-') left
1 ++ctl else left 0 if(*ctl'0') pad '0' else pad ' '
if(isdigit(*ctl)) width atoi(ctl++) while(isdigit(*ctl)) +
+ctl else width 0 if(*ctl'.') maxchr ato
i(++ctl) while(isdigit(*ctl)) ++ctl else maxchr 0 arg
*nxtarg-- sptr str switch(*ctl++) case 'c' str0 arg str1 N
ULL 771 #define NOCCARGC /* no arg count passing */ #include stdio.h #includ
e clib.def /* ** Open file indicated by fn. ** Entry fn Null-terminated CP
/M file name. ** May be prefixed by letter of dirve. **
May be just CON, RDR, PUN, or LST. ** mode "a" - append **
"r" - read ** "w" - write ** "a+" - ap
pend update ** "r+" - read update ** "w+" - writ
e update ** Returns a file RAFBGCHDIE break case 's' sptr arg
break case 'd' itoa(arg,str) break case 'b' itoab(arg,str,2)
break case 'o' itoab(arg,str,8) break case 'u' itoab(arg,str,10)
break case 'x' itoab(arg,str,16) break default return (cc)
len strlen(sptr) if(maxchr && maxchrlen) len maxchr if(widthl
en) width width - len else width 0 if(!left) while(width--) fputc(pad,fd
) ++cc while(len--) fputc(*sfine NOCCARGC /* no argument count passing */
extern char *Umemptr /* ** free(ptr) - Free previously allocated memory block
. ** Memory must be freed in the reverse order from which ** it was allocated.
** ptr Value returned by calloc() or malloc(). ** Returns ptr if successf
ul or NULL otherwise. */ free(ptr) char *ptr return (Umemptr ptr)
#asm cfree equ free entry cfree #endasm FREOPEN.C 729 #define
NOCCARGC /* no argument count passing */ #include stdptr++,fd) ++cc if(l
eft) while(width--) fputc(pad,fd) ++cc return(cc) FPUTC.C 574
#define NOCCARGC /* no arg count passing */ #include stdio.h #include clib.
def extern int Ustatus /* ** Character-stream output of a character to fd. *
* Entry ch Character to write. ** fd File descriptor of perinent file.
** Returns character written on success, else EOF. */ fputc(ch, fd) int ch,
fd switch(ch) case EOF Uwrite(CPMEOF, fd) break io.h /* ** Close
previously opened fd and reopen it. ** Entry fn Null-terminated CP/M file
name. ** May be prefixed by letter of drive. ** Ma
y be just CON, RDR, PUN, or LST. ** mode "a" - append **
"r" - read ** "w" - write ** "a+" - append upd
ate ** "r+" - read update ** "w+" - write updat
e ** fd File descriptor of pertinent file. ** Returns the original f
d on s case 'n' Uwrite(CR, fd) Uwrite(LF, fd) break default Uwrite(ch, f
d) if(Ustatusfd & ERRBIT) return (EOF) return (ch) #asm putc e
qu fputc entry putc #endasm FPUTS.C 306 #define NOCCARGC /* no arg
count passing */ #include stdio.h #include clib.def /* ** Write a string to
fd. ** Entry string Pointer to null-terminated string. ** fd Fil
e descriptor of pertinent file. */ fputs(string,fd) char *string int fd wh
ile(*string) fpuuccess, else NULL. */ freopen(fn, mode, fd) char *fn, *mode in
t fd if(fclose(fd)) return (NULL) if(Uopen(fn, mode, fd)ERR) return (NULL
) return (fd) FSCANF.C 2685 #define NOCCARGC /* no argument count pas
sing */ /* ** Yes, that is correct. Although these functions use an ** argum
ent count, they do not call functions which need one. */ #include stdio.h /*
** fscanf(fd, ctlstring, arg, arg, ...) - Formatted read. ** Operates as descr
ibed by Kernighan & Ritchie. ** b, tc(*string++, fd) FREAD.C 926 #def
ine NOCCARGC /* no argument count passing */ #include clib.def extern int Ust
atus /* ** Item-stream read from fd. ** Entry buf address of target buffer
** sz size of items in bytes ** n number of items to read *
* fd file descriptor ** Returns a count of the items actually read. *
* Use feof() and ferror() to determine file status. */ fread(buf, sz, n, fd) c
har *buf int sz, n, fd return (read(fd, buf, n*sc, d, o, s, u, and x specifi
cations are supported. ** Note b (binary) is a non-standard extension. */ fsc
anf(argc) int argc int *nxtarg nxtarg CCARGC() + &argc return (Uscan(
*(--nxtarg), --nxtarg)) /* ** scanf(ctlstring, arg, arg, ...) - Formatte
d read. ** Operates as described by Kernighan & Ritchie. ** b, c, d, o, s, u,
and x specifications are supported. ** Note b (binary) is a non-standard extens
ion. */ scanf(argc) int argc return (Uscan(stdin, CCARGC() + &argc z)/sz)
/* ** Binary-stream read from fd. ** Entry fd file descriptor **
buf address of target buffer ** n number of bytes to read ** Re
turns a count of the bytes actually read. ** Use feof() and ferror() to determi
ne file status. */ read(fd, buf, n) int fd, n char *buf char *cnt /* fake
unsigned */ cnt 0 while(n--) *buf++ Uread(fd) if(Ustatusfd &
(ERRBIT EOFBIT)) break ++cnt return (cnt) FREE.C 417 #de
RAFBGCHDIE- 1)) /* ** Uscan(fd, ctlstring, arg, arg, ...) - Formatted r
ead. ** Called by fscanf() and scanf(). */ Uscan(fd,nxtarg) int fd, *nxtarg
char *carg, *ctl, *unsigned int *narg, wast, ac, width, ch, cnv, base, ov
fl, sign ac 0 ctl *nxtarg-- while(*ctl) if(isspace(*ctl)) ++ctl
continue if(*ctl++ ! '%') continue if(*ctl '*') narg carg &wast ++
ctl else narg carg *nxtarg-- ctl + utoi(ctl, &width)
if(!width) escriptor ** buf address of source buffer ** n
number of bytes to write ** Returns a count of the bytes actually written or *
* -1 if an error occurred. ** May use ferror(), as always, to detect errors. *
/ write(fd, buf, n) int fd, n char *buf char *cnt /* fake unsigned */ c
nt n while(cnt--) Uwrite(*buf++, fd) if(Ustatusfd & ERRBIT) retur
n (-1) return (n) GETARG.C 669 #define NOCCARGC /* no argument
count passing */ #includewidth 32767 if(!(cnv *ctl++)) break while(
isspace(ch fgetc(fd))) if(ch EOF) if(ac) break else return(EOF) ung
etc(ch,fd) switch(cnv) case 'c' *carg fgetc(fd)
break case 's' while(width--) if((*carg fgetc(fd))
EOF) break if(isspace(*carg)) break if(carg ! &wast) ++ca
rg *carg 0 break default switch(c
nv) case 'b' stdio.h /* ** Get command line argument. ** Entry n
Number of the argument. ** s Destination string pointer. **
size Size of destination string. ** argc Argument count from main
(). ** argv Argument vector(s) from main(). ** Returns number of chara
cters moved on success, ** else EOF. */ getarg(n,s,size,argc,argv) int n c
har *s int size, argc, argv char *str int i if(n 0 n argc) *s
NULL return EOF i base 2 sign 1 ovfl 32767 break
case 'd' base 10 sign 0 ovfl 3276 break case 'o' base 8 sign 1
ovfl 8191 break case 'u' base 10 sign 1 ovfl 6553 break
case 'x' base 16 sign 1 ovfl 4095 break default return (ac)
*narg unsigned 0 while(width-- && !isspace(chfg
etc(fd)) && ch!EOF) if(!sign) if(ch '-') sign -1 cont
inue 0 strargvn while(isize) if((sistri)NULL) break ++i
siNULL return i GETCHAR.C 158 #define NOCCARGC /* no argumen
t count passing */ #include stdio.h /* ** Get next character from standard in
put. */ getchar() return (fgetc(stdin)) ISALNUM.C 163 /* ** retur
n 'true' if c is alphanumeric */ isalnum(c) int c return ((c'z' && c'a')
(c'Z' && c'A') (c'9' && c'0')) ISALPH else s
ign 1 if(ch '0') return (ac) if(ch 'a') ch - 87
else if(ch 'A') ch - 55 else ch - '0'
if(ch base unsigned ovfl) return (ac) unsigned unsigned * bas
e + ch *narg sign * unsigned ++ac
return (ac) FWRITE.C 998 #define NOCCARGC /* n
o argument count passing */ #include clib.def extern int UstatuA.C 119 /* **
return 'true' if c is alphabetic */ isalpha(c) int c return ((c'z' && c'a
') (c'Z' && c'A')) ISASCII.C 147 /* ** return 'true' if c is an ASCII c
haracter (0-127) */ isascii(c) char *c /* c is a simulated unsigned intege
r */ return (c 127) ISATTY.C 126 extern int Udevice /* ** Return "t
rue" if fd is a device, else "false" */ isatty(fd) int fd return (Udevicef
d) ISCNTRL.C 172 /* ** return 'true' if c is a conts /* ** Item-stream
write to fd. ** Entry buf address of source buffer ** sz size of it
ems in bytes ** n number of items to write ** fd file descr
iptor ** Returns a count of the items actually written or ** zero if an error
occurred. ** May use ferror(), as always, to detect errors. */ fwrite(buf, sz
, n, fd) char *buf int sz, n, fd if(write(fd, buf, n*sz) -1) return (0)
return (n) /* ** Binary-stream write to fd. ** Entry fd file d RAFBG
CHDIErol character ** (0-31 or 127) */ iscntrl(c) char *c /* c is a simul
ated unsigned integer */ return ((c 31) (c 127)) ISCONS.C 157 #incl
ude stdio.h #include clib.def extern int Udevice /* ** Determine if fd is th
e console. */ iscons(fd) int fd return (Udevicefd CPMCON) ISDIGIT.C
100 /* ** return 'true' if c is a decimal digit */ isdigit(c) int c ret
urn (c'9' && c'0') ISGRAPH.C 115 /* ** return 'true' if c is a graphic
if(*ptr 10) *ptr + '0' else *ptr + 55 ++ptr while(n / b) *ptr 0
reverse (s) ITOD.C 620 #include stdio.h /* ** itod -- convert nbr
to signed decimal string of width sz ** right adjusted, blank filled r
eturns str ** ** if sz 0 terminate with null byte ** if sz 0
find end of string ** if sz 0 use last byte for data */ itod(nbr, str
, sz) int nbr char str int sz char sgn if(nbr0) nbr -nbr sgn'-' cha
racter ** (33-126) */ isgraph(c) int c return (c33 && c126) ISLOWER
.C 106 /* ** return 'true' if c is lower-case alphabetic */ islower(c) int c
return (c'z' && c'a') ISPRINT.C 117 /* ** return 'true' if c is a p
rintable character ** (32-126) */ isprint(c) int c return (c32 && c126)
ISPUNCT.C 206 #define NOCCARGC /* no argument count passing */ /* ** re
turn 'true' if c is a punctuation character ** (all but control and alphanu el
se sgn' ' if(sz0) str--szNULL else if(sz0) sz -sz else while(strsz!NUL
L) ++sz while(sz) str--sz(nbr%10+'0') if((nbrnbr/10)0) break
if(sz) str--szsgn while(sz0) str--sz' ' return str ITOO.C 540 /
* ** itoo -- converts nbr to octal string of length sz ** right adjust
ed and blank filled, returns str ** ** if sz 0 terminate with null byt
e ** if sz 0 find end of string ** if sz 0 use lameric) */ i
spunct(c) int c return (!isalnum(c) && !iscntrl(c)) ISSPACE.C 180 /*
** return 'true' if c is a white-space character */ isspace(c) int c /* f
irst check gives quick exit in most cases */ return(c' ' && (c' ' (c13 && c9
))) ISUPPER.C 106 /* ** return 'true' if c is upper-case alphabetic *
/ isupper(c) int c return (c'Z' && c'A') ISXDIGIT.C 193 /* ** retur
n 'true' if c is a hexadecimal digit ** (0-9, A-F, or a-f) */ st byte for data
*/ itoo(nbr, str, sz) int nbr char str int sz int digit if(sz0) st
r--sz0 else if(sz0) sz -sz else while(strsz!0) ++sz while(sz) di
gitnbr&7 nbr(nbr3)&8191 str--szdigit+48 if(nbr0) break while(
sz) str--sz' ' return str ITOU.C 618 #include stdio.h /* ** itou --
convert nbr to unsigned decimal string of width sz ** right adjusted, b
lank filled returns str ** ** if sz 0 ter isxdigit(c) int c return
((c'f' && c'a') (c'F' && c'A') (c'9' && c'0')) IT
OA.C 469 #define NOCCARGC /* no argument count passing */ /* ** itoa(n,s) -
Convert n to characters in s */ itoa(n, s) char *s int n int sign char
*ptr ptr s if ((sign n) 0) /* record sign */ n -n /* make n
positive */ do /* generate digits in reverse order */ *ptr++
n % 10 + '0' /* get next digit */ minate with null byte ** i
f sz 0 find end of string ** if sz 0 use last byte for data */ itou(
nbr, str, sz) int nbr char str int sz int lowbit if(sz0) str--szNULL
else if(sz0) sz -sz else while(strsz!NULL) ++sz while(sz) lowbit
nbr&1 nbr(nbr1)&32767 /* divide by 2 */ str--sz((nbr%5)1)+lowbit+'0'
if((nbrnbr/5)0) break while(sz) str--sz' ' return str ITO
X.C 595 /* ** itox -- conver while ((n n / 10) 0) /* delete it */ if
(sign 0) *ptr++ '-' *ptr '0' reverse(s) ITOAB.C 475 #define NOCC
ARGC /* no argument count passing */ /* ** itoab(n,s,b) - Convert "unsigned"
n to characters in s using base b. ** NOTE This is a non-standar
d function. */ itoab(n, s, b) int n char *s int b char *ptr int lowbit
ptr s b 1 do lowbit n & 1 n (n 1) & 32767 *ptr ((
n % b) 1) + lowbit RAFBGCHDIEts nbr to hex string of length sz **
right adjusted and blank filled, returns str ** ** if sz 0 terminate
with null byte ** if sz 0 find end of string ** if sz 0 use la
st byte for data */ itox(nbr, str, sz) int nbr char str int sz int dig
it, offset if(sz0) str--sz0 else if(sz0) sz -sz else while(strsz!0) ++
sz while(sz) digitnbr&15 nbr(nbr4)&4095 if(digit10) offset48 else
offset55 str--szdigit+offe, NO)) OTOI.C 365 #include stdio.h /* **
otoi -- convert unsigned octal string to integer nbr ** returns field
size, else ERR on error */ otoi(octstr, nbr) char *octstr int *nbr int
d,t d0 *nbr0 while((*octstr'0')&(*octstr'7')) t*nbr t(t3) + (*
octstr++ - '0') if ((t0)&(*nbr0)) return ERR d++ *nbrt return
d PAD.C 205 #define NOCCARGC /* no argument count passing */ /* ** Pl
ace n occurrences of ch aset if(nbr0) break while(sz) str--sz' '
return str LEFT.C 165 /* ** left -- left adjust and null terminate a s
tring */ left(str) char *str char *str2 str2str while(*str2' ') ++st
r2 while(*str++ *str2++) LEXCMP.C 1362 #define NOCCARGC /* no argume
nt count passing */ /* ** lexcmp(s, t) - Return a number 0, 0, or0 **
as s is , , or t. */ lexcmp(s, t) char *s, *t while(lexorder(*s,
*t) 0) if(*s+t dest. */ pad(dest, ch, n) char *dest, *n int ch /* n
is a fake unsigned integer */ while(n--) *dest++ ch POLL.C 377 #defi
ne NOCCARGC /* no argument count passing */ #include stdio.h #include clib.de
f /* ** Poll for console input or interruption */ poll(pause) int pause
int i i Ubdos(DCONIO, 255) if(pause) if(i PAUSE) while(!(i
Ubdos(DCONIO, 255))) if(i ABORT) exit(0) return (0)
if(i ABORT) exit(0) +) ++t else return (0) return (lexorder(*s, *t))
/* ** lexorder(c1, c2) ** ** Return a negative, zero, or positive num
ber if ** c1 is less than, equal to, or greater than c2, ** based on a lexicog
raphical (dictionary order) ** colating sequence. ** */ char Ulex128
/**** NUL - / ****/ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1
1, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29
, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, return (i) PUTCHA
R.C 169 #define NOCCARGC /* no argument count passing */ #include stdio.h /*
** Write character to standard output. */ putchar(ch) int ch return (fp
utc(ch, stdout)) PUTS.C 191 #define NOCCARGC /* no argument count passin
g */ #include stdio.h /* ** Write string to standard output. */ puts(strin
g) char *string fputs(string, stdout) fputc('n', stdout) RENAME.C 5
39 #define NOCCARGC /* no argument count passing */ #in 40, 41, 42, 43
, 44, 45, 46, 47, /**** 0-9 ****/ 65, 66, 67, 68, 69, 70, 71, 72, 7
3, 74, /**** ****/ 48, 49, 50, 51, 52, 53, 54, /**** A
-Z ****/ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 8
9, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,100, /**** U ****/ 5
5, 56, 57, 58, 59, 60, /**** a-z ****/ 75, 76, 77, 78, 79, 80, 81,
82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,cl
ude stdio.h #include clib.def /* ** Rename a file. ** from address of old
filename. ** to address of new filename. ** Returns NULL on success, else
ERR. */ rename(from, to) char *from, *to char fcbFCBSIZE pad(fcb, NULL
, FCBSIZE) if(!Unewfcb(to, fcb) Ubdos(OPNFIL, fcb) ! 255) Ubdos(CLOFIL
, fcb) return (ERR) if(Unewfcb(from, fcb) && Unewfcb(to, fcb
+NAMEOFF2) && Ubdos(RENAME, fcb) ! 255) return (NULL) return (ERR)
R100, /**** ****/ 61, 62, 63, 64, /**** DEL ****/
101 lexorder(c1, c2) char c1, c2 return(Ulexc1 - Ulexc2)
LINK.MAC 30 Ulink ext Umain end MALLOC.C 281 #define NOCCARGC /
* no argument count passing */ #include stdio.h /* ** Memory allocation of si
ze bytes. ** size Size of the block in bytes. ** Returns the address of the
allocated block, ** else NULL for failure. */ malloc(size) char *size ret
urn (Ualloc(siz RAFBGCHDIEEVERSE.C 220 #define NOCCARGC /* no argument count
passing */ /* ** reverse string in place */ reverse(s) char *s char *j
int c j s + strlen(s) - 1 while(s j) c *s *s++ *j *
j-- c REWIND.C 138 #define NOCCARGC /* no argument count passin
g */ /* ** Rewind file to beginning. */ rewind(fd) int fd return(cseek(
fd, 0, 0)) SIGN.C 148 /* ** sign -- return -1, 0, +1 depending on the si
gn of nbr */ sign(nbr) int nbrst, sour, n) char *dest, *sour int n char *
d d dest while(n-- 0) if(*d++ *sour++) continue while(n-- 0
) *d++ 0 *d 0 return (dest) STRRCHR.C 314 /* ** strrchr(s,
c) - Search s for rightmost occurrance of c. ** s Pointer to string to be
searched. ** c Character to search for. ** Returns pointer to rightmost
c or NULL. */ strrchr(s, c) char *s, c char *ptr ptr 0 while(*s)
if(*sc) ptr s ++s if(nbr0) return 1 if(nbr0) return 0 r
eturn -1 STDIO.H 296 /* ** STDIO.H -- Standard Small-C Definitions */
#define stdin 0 #define stdout 1 #define stderr 2 #define ERR (-2)
#define EOF (-1) #define YES 1 #define NO 0 #define NULL 0
#define CR 13 #define LF 10 #define BELL 7 #define SPACE ' '
#define NEWLINE LF STRCAT.C 175 /* ** concatenate t to end of s ** s must
be large enough */ strcat(s, t) char *s, *t return (ptr) TOASCII.
C 76 /* ** return ASCII equivalent of c */ toascii(c) int c return (c)
TOLOWER.C 130 /* ** return lower-case of c if upper-case, else c */ tol
ower(c) int c if(c'Z' && c'A') return (c+32) return (c) TOUPPER.C 1
36 /* ** return upper-case of c if it is lower-case, else c */ toupper(c) in
t c if(c'z' && c'a') return (c-32) return (c) UNGETC.C 342 #define
NOCCARGC /* no argument count passing * char *d d s --s while (*+
+s) while (*s++ *t++) return(d) STRCHR.C 176 /* ** return point
er to 1st occurrence of c in str, else 0 */ strchr(str, c) char *str, c wh
ile(*str) if(*str c) return (str) ++str return (0) ST
RCMP.C 185 /* ** return 0, 0, 0 aUording to ** st, st, st */ strcm
p(s, t) char *s, *t while(*s *t) if(*s 0) return (0) ++s ++t
return (*s - *t) / #include stdio.h extern Unextc /* ** Put c b
ack into file fd. ** Entry c character to put back ** fd file descri
ptor ** Returns c if successful, else EOF. */ ungetc(c, fd) int c, fd if(
!Umode(fd) Unextcfd!EOF cEOF) return (EOF) return (Unextcfd c) UNLIN
K.C 477 #define NOCCARGC /* no arg count passing */ #include stdio.h #includ
e clib.def /* ** Unlink (delete) the named file. ** Entry fn Null-terminate
d CP/M file name. ** STRCPY.C 111 /* ** copy t to s */ strcp
y(s, t) char *s, *t char *d d s while (*s++ *t++) return(d)
STRLEN.C 113 /* ** return length of s */ strlen(s) char *s char *t
t s - 1 while (*++t) return (t - s) STRNCAT.C 254 /* ** concate
nate n bytes max from t to end of s ** s must be large enough */ strncat(s,
t, n) char *s, *t int n char *d d s --s while(*++s) while(n--)
if(*s++ *t++) continueMay be prefixed by letter of drive. ** Returns NU
LL on success, else ERR. */ unlink(fn) char *fn char fcbFCBSIZE pad(fcb
, NULL, FCBSIZE) if(Unewfcb(fn, fcb) && Ubdos(DELFIL, fcb) ! 255) return
(NULL) return (ERR) #asm delete equ unlink entry delete
#endasm UTOI.C 362 #include stdio.h /* ** utoi -- convert unsigned decimal
string to integer nbr ** returns field size, else ERR on error */ u
toi(decstr, nbr) char *decstr int *nbr return(d) *s 0
return(d) STRNCMP.C 332 /* ** strncmp(s,t,n) - Compares two strings for
at most n ** characters and returns an integer **
0, 0, or 0 as s is t, t, or t. */ strncmp(s, t, n) char *s, *t int n
while(n && *s*t) if (*s 0) return (0) ++s ++t --n if(n) re
turn (*s - *t) return (0) STRNCPY.C 252 /* ** copy n characters from
sour to dest (null padding) */ strncpy(de R A F B G C H D I Eint d,t d0 *
nbr0 while((*decstr'0')&(*decstr'9')) t*nbrt(10*t) + (*decstr++ - '0')
if ((t0)&(*nbr0)) return ERR d++ *nbrt return d XTOI.C
729 #include stdio.h /* ** xtoi -- convert hex string to integer nbr **
returns field size, else ERR on error */ xtoi(hexstr, nbr) char *hexstr in
t *nbr int d, b char *cp d *nbr 0 cp hexstr while(*cp '0') ++cp
while(1) switch(*cp) case '0' case '1' case '2' case '3'
case '4' case '5' case '6' case '7' case '8' case '9'
b48 break case 'A' case 'B' case 'C' case 'D' case 'E' cas
e 'F' b55 break case 'a' case 'b' case 'c' case 'd' case 'e' case
'f' b87 break default return (cp - hexstr) if(d 4) ++d els
e return (ERR) *nbr (*nbr 4) + (*cp++ - b) !R!A!F!B!G!C!H!D!
I!E "R"A"F"B"G"C"H"D"I"E #R#A#F#B#G#C#H#D#I#E $R$A$F$B$G$C$H$D$I$E %R%A%F%B%
G%C%H%D%I%E &R&A&F&B&G&C&H&D&I&E 'R'A'F'B'G'C'H'D'I'E (R( 0H523-037C
SCHNEIDER DUP 3"-100/40 2S DD SS 70292-00ww